{"version":3,"file":"ym.min.js","sources":["https:\/\/slmetrics.ru\/theme\/simple\/amd\/src\/ym.js"],"sourcesContent":["\"use strict\";\n\n\/**\n* \u041c\u043e\u0434\u0443\u043b\u044c \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0446\u0435\u043b\u0435\u0439 YM\n*\n* @module theme_simple\/ym\n*\/\n\nimport * as FormEvents from 'core_form\/events';\n\nlet initialyzed = false;\nconst SELECTORS = {\n actions: {\n frontpageSignup: '[data-region=\"usermenu\"] [data-action=\"signup\"]',\n loginSignup: '[data-region=\"loginform\"] [data-action=\"signup\"]',\n footerEmail: '#page-footer_simple [data-action=\"contact-email\"]',\n footerTel: '#page-footer_simple [data-action=\"contact-tel\"]',\n addCourseToCart: '[data-action=\"local_course_store\/action:addToCart\"]'\n },\n regions: {\n request_form: '[data-region=\"local_vendor\/requestinfo\/create_form\/form\"]'\n }\n \/\/ \u0423\u0441\u043f\u0435\u0448\u043d\u0430\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f JS <-- \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u044b\u0437\u043e\u0432\n \/\/ PAGE->requires->js_call_amd('theme_simple\/ym', 'signupSuccess') \u0432 theme_simple_post_signup_requests\n \/\/ \u0417\u0430\u043f\u043e\u043b\u043d\u0438\u043b \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b \u0444\u043e\u0440\u043c\u0443 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u044f\u0432\u043a\u0443\n \/\/ JS <-- \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 js \u043c\u043e\u0434\u0443\u043b\u044c \u0444\u043e\u0440\u043c\u044b \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0437\u0430\u044f\u0432\u043a\u0438\n \/\/ \u041e\u043f\u043b\u0430\u0442\u0430 \u044d\u043a\u0437\u0430\u043c\u0435\u043d\u0430 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0430 JS <-- \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 js \u043c\u043e\u0434\u0443\u043b\u044c \u0432\u0438\u0434\u0436\u0435\u0442\u0430 yoo money \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u043e\u043f\u043b\u0430\u0442\u044b\n\n};\nconst counterId = 97077195;\nconst methodYm = 'reachGoal';\n\nconst targetsSetup = {\n frontpageSignup: [counterId, methodYm, 'reg_button_click'],\n loginSignup: [counterId, methodYm, 'reg_button_click'],\n footerEmail: [counterId, methodYm, 'mailto_info_eor_edu_ru_click'],\n footerTel: [counterId, methodYm, 'click_num_phone'],\n addCourseToCart: [counterId, methodYm, 'added_to_cart'],\n cstoreOrderIsPaid: [counterId, methodYm, 'button_buy_completed'],\n regButtonCompleted: [counterId, methodYm, 'reg_button_completed'],\n\n contactMeRequestSent: [counterId, methodYm, 'all_button_request_sent'],\n};\n\nconst callYM = (targetType) => {\n if (!window.ym) {\n window.console.error('\u043d\u0435 \u043c\u043e\u0433\u0443 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0446\u0435\u043b\u0438. \u041d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u042f\u043d\u0434\u0435\u043a\u0441 \u043c\u0435\u0442\u0440\u0438\u043a\u0430', {targetType});\n return;\n }\n const ymArgs = targetsSetup[targetType];\n if (!ymArgs) {\n window.console.error('\u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u0446\u0435\u043b\u0438', {targetType});\n return;\n }\n window.console.debug('theme_simple\/ym: callYM', {targetType});\n window.ym(...ymArgs);\n};\n\n\/**\n *\n *\/\nfunction addEventlisteners() {\n const targets = [\n 'frontpageSignup',\n 'loginSignup',\n 'footerEmail',\n 'footerTel',\n 'addCourseToCart'\n ];\n document.addEventListener('click', function(event) {\n let targetType = null;\n for (const targetName of targets) {\n if (!SELECTORS.actions[targetName]) {\n continue;\n }\n const targetEl = event.target.closest(SELECTORS.actions[targetName]);\n if (targetEl) {\n targetType = targetName;\n break;\n }\n }\n\n if (targetType) {\n try {\n callYM(targetType);\n } catch (err) {\n window.console.error('ymTarget error', {err});\n }\n }\n });\n\n document.addEventListener('YOOKASSA_PAYMENT_SUCCES', () => callYM('cstoreOrderIsPaid'));\n\n document.addEventListener(FormEvents.eventTypes.formSubmittedByJavascript, (event) => {\n\n const targetEl = event.target.closest(SELECTORS.regions.request_form);\n if (targetEl) {\n callYM('contactMeRequestSent');\n }\n });\n}\n\nexport class StickyUtmTags {\n\n #utmparams = [\n 'utm_source',\n 'utm_medium',\n 'utm_campaign',\n 'utm_term',\n 'utm_content'\n ];\n\n \/**\n *\n * @returns {URL}\n *\/\n getWindowURL() {\n return new URL(window.location);\n }\n \/**\n * https:\/\/slmetrics.ru\/course\/index.php?categoryid=3&utm_source=newsletter&utm_medium=mail&utm_campaign=alcna_17_0824\n *\n * @param {URL} url\n * @returns {bool}\n *\/\n hasUtmTags(url) {\n const hasTags = this.#utmparams.reduce(\n (result, paramName) => (result ||= url.searchParams.has(paramName)), false\n );\n\n return hasTags;\n }\n\n \/**\n * @returns {Boolean}\n *\/\n windowLocationHasUtmTags() {\n return this.hasUtmTags(this.getWindowURL());\n }\n\n \/**\n * @returns {Map}\n *\/\n getWindowLocationUtmTags() {\n const utmTags = new Map();\n\n this.#utmparams.forEach((utmTagName) => {\n if (this.getWindowURL().searchParams.has(utmTagName)) {\n utmTags.set(utmTagName, this.getWindowURL().searchParams.getAll(utmTagName));\n }\n });\n\n return utmTags;\n }\n\n \/**\n * @returns {Array}\n *\/\n getAllPageLinks() {\n return document.querySelectorAll('a');\n }\n\n \/**\n *\n * @param {URL} url\n * @param {Map} utmTagsMap\n * @returns {URL}\n *\/\n appendUtmTags(url, utmTagsMap) {\n for (const [tagName, mapTags] of utmTagsMap) {\n let tagsToAdd = utmTagsMap.get(tagName);\n\n \/\/ \u0415\u0441\u043b\u0438 \u0432 \u0441\u0441\u044b\u043b\u043a\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c utm \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c tagName\n if (url.searchParams.has(tagName)) {\n const urlTags = url.searchParams.getAll(tagName);\n const isSame = mapTags.reduce((result, t) => result && urlTags.includes(t), true);\n \/\/ \u0415\u0441\u043b\u0438 \u0432\u0441\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f tagName \u0443\u0436\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u0441\u0441\u044b\u043b\u043a\u0435 url\n if (isSame) {\n \/\/ \u0422\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u044d\u0442\u043e\u0442 tagName\n continue;\n }\n tagsToAdd = mapTags.filter(t => !urlTags.includes(t));\n }\n for (const tagToAdd of tagsToAdd) {\n url.searchParams.append(tagName, tagToAdd);\n }\n }\n\n return url;\n }\n\n}\n\nexport const init = () => {\n if (true === initialyzed) {\n return;\n }\n addEventlisteners();\n\n try {\n const stickyUtmTags = new StickyUtmTags();\n if (stickyUtmTags.windowLocationHasUtmTags()) {\n const utmTags = stickyUtmTags.getWindowLocationUtmTags();\n stickyUtmTags.getAllPageLinks().forEach((a) => {\n let newUrl;\n if (!a.href) {\n return;\n }\n try {\n newUrl = new URL(a.href);\n } catch (err) {\n \/\/ window.console.error('theme_simple\/ym: \u043d\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 url ', {err});\n return;\n }\n newUrl = stickyUtmTags.appendUtmTags(newUrl, utmTags);\n if (newUrl) {\n a.href = newUrl.toString();\n }\n });\n }\n } catch (err) {\n window.console.error('theme_simple\/ym: \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f utm \u043c\u0435\u0442\u043e\u043a \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430', {err});\n }\n\n window.console.log('theme_simple\/ym \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d');\n initialyzed = true;\n};\n\nexport const regCompletedGoalReached = () => {\n callYM('regButtonCompleted');\n};\n"],"names":["initialyzed","SELECTORS","actions","frontpageSignup","loginSignup","footerEmail","footerTel","addCourseToCart","regions","request_form","methodYm","targetsSetup","cstoreOrderIsPaid","regButtonCompleted","contactMeRequestSent","callYM","targetType","window","ym","console","error","ymArgs","debug","StickyUtmTags","getWindowURL","URL","location","hasUtmTags","url","_classPrivateFieldGet","reduce","result","paramName","searchParams","has","windowLocationHasUtmTags","this","getWindowLocationUtmTags","utmTags","Map","forEach","utmTagName","set","getAll","getAllPageLinks","document","querySelectorAll","appendUtmTags","utmTagsMap","tagName","mapTags","tagsToAdd","get","urlTags","t","includes","filter","tagToAdd","append","targets","addEventListener","event","targetName","target","closest","err","FormEvents","eventTypes","formSubmittedByJavascript","addEventlisteners","stickyUtmTags","a","newUrl","href","toString","log"],"mappings":"yyDAUIA,aAAc,QACZC,UAAY,CACdC,QAAS,CACLC,gBAAiB,kDACjBC,YAAa,mDACbC,YAAa,oDACbC,UAAW,kDACXC,gBAAiB,uDAErBC,QAAS,CACLC,aAAc,8DAUhBC,SAAW,YAEXC,aAAe,CACjBR,gBAAiB,CAJH,SAIeO,SAAU,oBACvCN,YAAa,CALC,SAKWM,SAAU,oBACnCL,YAAa,CANC,SAMWK,SAAU,gCACnCJ,UAAW,CAPG,SAOSI,SAAU,mBACjCH,gBAAiB,CARH,SAQeG,SAAU,iBACvCE,kBAAmB,CATL,SASiBF,SAAU,wBACzCG,mBAAoB,CAVN,SAUkBH,SAAU,wBAE1CI,qBAAsB,CAZR,SAYoBJ,SAAU,4BAG1CK,OAAUC,iBACPC,OAAOC,eACRD,OAAOE,QAAQC,MAAM,8DAA+D,CAACJ,WAAAA,mBAGnFK,OAASV,aAAaK,YACvBK,QAILJ,OAAOE,QAAQG,MAAM,0BAA2B,CAACN,WAAAA,aACjDC,OAAOC,MAAMG,SAJTJ,OAAOE,QAAQC,MAAM,2CAA4C,CAACJ,WAAAA,+CAmD7DO,0FAEI,CACT,aACA,aACA,eACA,WACA,iBAOJC,sBACW,IAAIC,IAAIR,OAAOS,UAQ1BC,WAAWC,YACSC,uCAAgBC,QAC5B,CAACC,OAAQC,YAAeD,QAAWH,IAAIK,aAAaC,IAAIF,aAAa,GAS7EG,kCACWC,KAAKT,WAAWS,KAAKZ,gBAMhCa,iCACUC,QAAU,IAAIC,kDAEJC,SAASC,aACjBL,KAAKZ,eAAeS,aAAaC,IAAIO,aACrCH,QAAQI,IAAID,WAAYL,KAAKZ,eAAeS,aAAaU,OAAOF,gBAIjEH,QAMXM,yBACWC,SAASC,iBAAiB,KASrCC,cAAcnB,IAAKoB,gBACV,MAAOC,QAASC,WAAYF,WAAY,KACrCG,UAAYH,WAAWI,IAAIH,YAG3BrB,IAAIK,aAAaC,IAAIe,SAAU,OACzBI,QAAUzB,IAAIK,aAAaU,OAAOM,YACzBC,QAAQpB,QAAO,CAACC,OAAQuB,IAAMvB,QAAUsB,QAAQE,SAASD,KAAI,YAM5EH,UAAYD,QAAQM,QAAOF,IAAMD,QAAQE,SAASD,SAEjD,MAAMG,YAAYN,UACnBvB,IAAIK,aAAayB,OAAOT,QAASQ,iBAIlC7B,wDAKK,SACZ,IAAS5B,+BApIP2D,QAAU,CACZ,kBACA,cACA,cACA,YACA,mBAEJd,SAASe,iBAAiB,SAAS,SAASC,WACpC7C,WAAa,SACZ,MAAM8C,cAAcH,WAChB1D,UAAUC,QAAQ4D,aAGND,MAAME,OAAOC,QAAQ\/D,UAAUC,QAAQ4D,aAC1C,CACV9C,WAAa8C,oBAKjB9C,eAEID,OAAOC,YACT,MAAOiD,KACLhD,OAAOE,QAAQC,MAAM,iBAAkB,CAAC6C,IAAAA,UAKpDpB,SAASe,iBAAiB,2BAA2B,IAAM7C,OAAO,uBAElE8B,SAASe,iBAAiBM,WAAWC,WAAWC,2BAA4BP,QAEvDA,MAAME,OAAOC,QAAQ\/D,UAAUO,QAAQC,eAEpDM,OAAO,2BAoGfsD,aAGUC,cAAgB,IAAI\/C,iBACtB+C,cAAcnC,2BAA4B,OACpCG,QAAUgC,cAAcjC,2BAC9BiC,cAAc1B,kBAAkBJ,SAAS+B,QACjCC,UACCD,EAAEE,UAIHD,OAAS,IAAI\/C,IAAI8C,EAAEE,MACrB,MAAOR,YAITO,OAASF,cAAcvB,cAAcyB,OAAQlC,SACzCkC,SACAD,EAAEE,KAAOD,OAAOE,iBAI9B,MAAOT,KACLhD,OAAOE,QAAQC,MAAM,iEAAkE,CAAC6C,IAAAA,MAG5FhD,OAAOE,QAAQwD,IAAI,mCACnB3E,aAAc,qCAGqB,KACnCe,OAAO"}