{"version":3,"sources":["../webpack/universalModuleDefinition","../webpack/bootstrap","../webpack-src:/clarity/index.ts","../webpack-src:/clarity/src/index.ts","../../../../../../../../external/underscore","../../../../components/packages/qualtrics/src/utils.js"],"names":["factory","self","__WEBPACK_EXTERNAL_MODULE__7__","installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_index","projectId","tags","userId","sessionId","pageId","window","document","a","q","push","arguments","createElement","async","src","concat","y","getElementsByTagName","parentNode","insertBefore","all","initialize","setClarityTag","clarity","_underscore","default","each","keys","tagValue","isString","JSON","stringify","_PreferenceService","_AppActivity","logSurvey","message","options","surveyId","trace","error","console","log","createDate","date","Date","getMonthAgo","month","now","setTime","getSurveyPreference","surveyPreference","findByNameAtUserLevel","Name","Data","Type","Version","getSurveyDataWithSurveyId","surveyPre","surveyData","_","chain","result","surveyIsNotShowedOrExpired","expiredDate","show","stringifySync","type","data","shouldShowSurvey","_window$qualtrics","qualtrics","CurrentAccountCreatedDate","hasCampaign","oneMonthAgo","accountCreatedDate","e","updateGlobalQualtricsData","serverContext","CurrentUser","CurrentCustomer","CurrentAccount","Identity","Omniture","CurrentLocale","Language","toLowerCase","indexOf","aid","Id","cid","AdvertiserCustomerID","uid","CustomerName","AccountMode","UserName","Email","SessionId","events","isLoaded","IsInternal","CreatedDate","messageHandler","origin","_e$data","event","_objectSpread","toISOString","setAtUserLevel","setSurveyShowed","setupQualtricsWithData","length","undefined","PreferenceService","enableIframeCommunication","appActivity","addEventListener"],"mappings":"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","file":"static/js/application.support.71ce9d12.chunk.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"underscore\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"underscore\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"underscore\")) : factory(root[\"underscore\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__7__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","export { setupClarity, setClarityTag } from './src/index';\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\n\r\ndeclare global {\r\n interface Window {\r\n clarity?: (method: string, ...args: any[]) => void;\r\n }\r\n}\r\n\r\nexport interface ClarityTags {\r\n [key: string]: string | number | boolean | object;\r\n}\r\n\r\nfunction initialize(projectId: string): void {\r\n try {\r\n (function (c: Window & typeof globalThis, l: Document, a: string, r: string, i: string, t?: HTMLScriptElement, y?: Node) {\r\n c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); };\r\n t = l.createElement(r) as HTMLScriptElement; t.async = true; t.src = `https://www.clarity.ms/tag/${i}`;\r\n y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y);\r\n }(window, document, 'clarity', 'script', projectId));\r\n } catch (all) { }\r\n}\r\n\r\nexport function setClarityTag(tags: ClarityTags): void {\r\n if (window.clarity) {\r\n _.each(_.keys(tags), (key) => {\r\n const tagValue = tags[key];\r\n if (tagValue) {\r\n window.clarity('set', key, _.isString(tagValue) ? tagValue : JSON.stringify(tagValue));\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport function setupClarity(projectId: string, tags: ClarityTags = {}, userId?: string, sessionId?: string, pageId?: string): void {\r\n initialize(projectId);\r\n\r\n setClarityTag(tags);\r\n\r\n if (userId || sessionId || pageId) {\r\n window.clarity('identify', userId, sessionId, pageId);\r\n }\r\n}","module.exports = __WEBPACK_EXTERNAL_MODULE__7__;","/* eslint-disable no-underscore-dangle */\r\nimport _ from 'underscore';\r\nimport { stringifySync } from '@bingads-webui/safe-json';\r\nimport { setupQualtrics } from './setup';\r\n\r\nlet _PreferenceService;\r\nlet _AppActivity;\r\n\r\nconst logSurvey = (message, options) => {\r\n if (_AppActivity) {\r\n try {\r\n if (options != null && options.surveyId) {\r\n const {\r\n surveyId,\r\n } = options;\r\n _AppActivity.trace(`${surveyId}_${message}`, 'survey-logs');\r\n } else {\r\n _AppActivity.trace(message, 'survey-logs');\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n};\r\n\r\nconst updateQuatricsEvents = (eventName) => {\r\n window.qualtrics = {\r\n ...window.qualtrics,\r\n isLoaded: true,\r\n events: {\r\n // we replace all previous events, because we only want 1 event\r\n // based prompt to show at any given time\r\n [eventName]: true,\r\n },\r\n };\r\n};\r\n\r\nconst retriggerQSI = () => {\r\n if (window.QSI && window.QSI.API) {\r\n // re-run qualtrics to show dynamic popups\r\n const { API } = window.QSI;\r\n API.unload();\r\n API.load();\r\n API.run();\r\n\r\n logSurvey('QualtricsReInitialized');\r\n return true;\r\n }\r\n logSurvey('QualtricsNotReInitialized');\r\n return false;\r\n};\r\n\r\nexport const setQualtricsHasCampaign = () => {\r\n // don't trigger event if qualtrics isn't setup\r\n if (!window.qualtrics) {\r\n logSurvey('QualtricsIsNotInitialized');\r\n return false;\r\n }\r\n\r\n if (window.qualtrics.hasCampaign) {\r\n logSurvey('HasTriggeredHasCampaign');\r\n return true;\r\n }\r\n\r\n if (window.QSI && window.QSI.API) {\r\n window.qualtrics.hasCampaign = true;\r\n logSurvey('FirstTriggeredHasCampaign');\r\n return retriggerQSI();\r\n }\r\n logSurvey('QSICheckFailedTriggeredHasCampaign');\r\n return false;\r\n};\r\n\r\nexport const triggerQualtricsEvent = (eventName) => {\r\n // don't trigger event if qualtrics isn't setup\r\n if (!window.qualtrics) { return false; }\r\n\r\n // Always push the event to qualtrics, so they can track how many times\r\n // it fires.\r\n window._qsie = window._qsie || [];\r\n window._qsie.push(eventName);\r\n\r\n // Only update qualtrics if the event wasn't previously set\r\n if (!window.qualtrics.events[eventName]) {\r\n updateQuatricsEvents(eventName);\r\n\r\n return retriggerQSI();\r\n }\r\n return false;\r\n};\r\n\r\nfunction createDate(date) {\r\n return date ? new Date(date) : new Date();\r\n}\r\n\r\nfunction getMonthAgo(month) {\r\n const now = new Date();\r\n now.setTime(Date.now() - (86400000 * (30 * month)));\r\n return now;\r\n}\r\n\r\nfunction getSurveyPreference() {\r\n if (_PreferenceService == null) {\r\n return {};\r\n }\r\n\r\n const surveyPreference = _PreferenceService.findByNameAtUserLevel('SurveyPreference');\r\n if (surveyPreference == null || surveyPreference.Name == null) {\r\n return ({\r\n Name: 'SurveyPreference',\r\n Data: {\r\n },\r\n Type: 'string',\r\n Version: 1,\r\n });\r\n }\r\n return surveyPreference;\r\n}\r\n\r\nfunction getSurveyDataWithSurveyId(surveyId, surveyPre) {\r\n if (_PreferenceService == null) {\r\n return {};\r\n }\r\n\r\n const surveyPreference = surveyPre || getSurveyPreference();\r\n const surveyData = _.chain(surveyPreference)\r\n .result('Data')\r\n .result(surveyId)\r\n .value();\r\n\r\n if (surveyData == null) {\r\n return {};\r\n }\r\n return surveyData;\r\n}\r\n\r\nexport function setSurveyShowed(surveyId) {\r\n try {\r\n if (_PreferenceService == null) {\r\n logSurvey('Set_NoPreference', { surveyId });\r\n return;\r\n }\r\n\r\n const surveyPreference = getSurveyPreference();\r\n const surveyData = getSurveyDataWithSurveyId(surveyId, surveyPreference);\r\n surveyPreference.Data[surveyId] = {\r\n ...surveyData,\r\n show: {\r\n date: new Date().toISOString(),\r\n },\r\n };\r\n logSurvey(stringifySync({\r\n type: `${surveyId}_SurveyPreference`,\r\n data: surveyPreference.Data[surveyId],\r\n }));\r\n _PreferenceService.setAtUserLevel(surveyPreference);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n}\r\n\r\nfunction surveyIsNotShowedOrExpired(surveyId, month) {\r\n if (_PreferenceService == null) {\r\n logSurvey('Check_NoPreference', { surveyId });\r\n return false;\r\n }\r\n\r\n const expiredDate = getMonthAgo(month);\r\n const surveyData = getSurveyDataWithSurveyId(surveyId);\r\n const show = _.chain(surveyData)\r\n .result('show')\r\n .value();\r\n\r\n logSurvey(stringifySync({\r\n type: `${surveyId}_ShowDependency2`,\r\n data: {\r\n expiredDate,\r\n show,\r\n },\r\n }));\r\n if (show == null) {\r\n logSurvey('SurveyNotShowed', { surveyId });\r\n return true;\r\n }\r\n const showedDate = createDate(show.date);\r\n if (showedDate <= expiredDate) {\r\n logSurvey('SurveyExpired', { surveyId });\r\n return true;\r\n }\r\n logSurvey('SurveyShowed', { surveyId });\r\n return false;\r\n}\r\n\r\nexport function shouldShowSurvey(surveyId) {\r\n logSurvey('ShouldShowSurveyStart', { surveyId });\r\n try {\r\n const {\r\n CurrentAccountCreatedDate,\r\n hasCampaign,\r\n } = window.qualtrics;\r\n const oneMonthAgo = getMonthAgo(1);\r\n const accountCreatedDate = createDate(CurrentAccountCreatedDate);\r\n\r\n logSurvey(stringifySync({\r\n type: `${surveyId}_ShowDependency1`,\r\n data: {\r\n CurrentAccountCreatedDate,\r\n hasCampaign,\r\n oneMonthAgo,\r\n accountCreatedDate,\r\n },\r\n }));\r\n switch (surveyId) {\r\n case 'ESCWebUISurvey':\r\n if (hasCampaign && accountCreatedDate <= oneMonthAgo) {\r\n return surveyIsNotShowedOrExpired(surveyId, 6);\r\n }\r\n logSurvey('ShouldNotShowWebUISurvey', { surveyId });\r\n return false;\r\n case 'WebUISurvey':\r\n if (accountCreatedDate <= oneMonthAgo) {\r\n return surveyIsNotShowedOrExpired(surveyId, 6);\r\n }\r\n logSurvey('ShouldNotShowWebUISurvey', { surveyId });\r\n return false;\r\n default:\r\n logSurvey('ShouldNotShowSurvey', { surveyId });\r\n return false;\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n logSurvey('ShouldShowSurveyEnd', { surveyId });\r\n return false;\r\n}\r\n\r\nexport const updateGlobalQualtricsData = (serverContext) => {\r\n let {\r\n CurrentUser,\r\n CurrentCustomer,\r\n CurrentAccount,\r\n Identity,\r\n Omniture,\r\n CurrentLocale,\r\n } = serverContext;\r\n\r\n CurrentUser = CurrentUser || {};\r\n CurrentCustomer = CurrentCustomer || {};\r\n CurrentAccount = CurrentAccount || {};\r\n Identity = Identity || {};\r\n Omniture = Omniture || {};\r\n CurrentLocale = CurrentLocale || '';\r\n\r\n let { Language } = CurrentUser;\r\n // if CurrentUser doesn't exist yet (e.g. signup), fallback on CurrentLocale\r\n if (!Language && CurrentLocale.toLowerCase().indexOf('en') === 0) {\r\n Language = 'EN';\r\n }\r\n\r\n window.qualtrics = {\r\n aid: CurrentAccount.Id,\r\n cid: CurrentAccount.AdvertiserCustomerID,\r\n uid: CurrentUser.Id,\r\n CustomerName: CurrentCustomer.Name,\r\n AccountMode: CurrentAccount.AccountMode,\r\n UserName: CurrentUser.Name || Identity.UserName,\r\n Email: CurrentUser.Email || Identity.Email,\r\n SessionId: Omniture.SessionId,\r\n events: {},\r\n isLoaded: false,\r\n Language,\r\n IsInternal: CurrentUser.IsInternal,\r\n hasCampaign: false,\r\n CurrentAccountCreatedDate: CurrentAccount.CreatedDate,\r\n shouldShowSurvey,\r\n };\r\n};\r\n\r\nexport function messageHandler(e) {\r\n if ((e.origin === 'https://microsoft.qualtrics.com' || e.origin === 'https://ui.ads.microsoft.com') && e.data) {\r\n const {\r\n surveyId,\r\n event,\r\n message,\r\n } = e.data;\r\n if (event === 'show') {\r\n setSurveyShowed(surveyId);\r\n } else if (event === 'log' && _AppActivity) {\r\n try {\r\n _AppActivity.trace(message, 'survey-logs');\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction setupIframeCommunication() {\r\n window.addEventListener('message', messageHandler);\r\n}\r\n\r\nexport function setupQualtricsWithData(serverContext, options = {}) {\r\n const {\r\n PreferenceService,\r\n enableIframeCommunication,\r\n appActivity,\r\n } = options;\r\n updateGlobalQualtricsData(serverContext);\r\n if (enableIframeCommunication) {\r\n _PreferenceService = PreferenceService;\r\n _AppActivity = appActivity;\r\n setupIframeCommunication();\r\n // log all the information at start-up;\r\n logSurvey(stringifySync(window.qualtrics));\r\n }\r\n setupQualtrics();\r\n}\r\n"],"sourceRoot":""}