web-push-notifications 3.50.6 → 3.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"widget-subscription-prompt.js","mappings":"CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,EACvE,CACA,CATD,CASGC,KAAM,I,mBCRT,IAAIC,EAAsB,CCA1BA,EAAwB,CAACP,EAASQ,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAEV,EAASS,IAC5EE,OAAOC,eAAeZ,EAASS,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3EF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFT,EAAyBP,IACH,oBAAXoB,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeZ,EAASoB,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeZ,EAAS,aAAc,CAAEsB,OAAO,M,sDCLhD,MAGMC,EAA4C,CACvDC,WAAY,wBACZC,gBAAiB,UACjBC,cAAe,iDACfC,mBAAoB,UACpBC,iBAAkB,QAClBC,sBAAuB,UACvBC,kBAAmB,MACnBC,4BAA6B,UAC7BC,wBAAyB,UACzBC,iBAAkB,OAClBC,sBAAuB,UACvBC,kBAAmB,MACnBC,4BAA6B,UAC7BC,wBAAyB,UACzBC,aAAc,EACdC,aAAc,MACdC,gBAAiB,WCpBNC,EAAuC,gCCO7C,MAAMC,EAGX,WAAAC,CAAYC,GACVtC,KAAKsC,GAAKA,CACZ,CAEO,SAAMC,GACX,MAAM,GAAED,GAAOtC,KAETwC,QAAiBF,EAAGG,KAAKC,cACzBC,ECdqB,CAACH,IAE9B,MAAMI,EAAgBJ,EAAqC,4BAAKA,EAAqC,2BAAEK,OAGjGC,EAA4D,CAChEd,aAAcf,EAA0Ce,aACxDC,aAAchB,EAA0CgB,gBACrDW,GAIL,OAAOA,EACHE,EACA7B,GDAmB8B,CAAgBP,GAC/BQ,OCE2BC,OAAON,EAA+CL,KACzF,MAAMY,GAAc,IAAIC,MAAOC,UACzBC,QAAqBf,EAAGG,KAAKa,wBAC7BC,QAAqBjB,EAAGG,KAAKe,wBAG7BR,EAAmBL,EAAaX,aAAeqB,EAG/CI,EAAoBP,EAAcK,EAAeZ,EAAaV,aAEpE,OAAOe,GAAoBS,GDbMC,CAAsBf,EAAcL,GACnE,IAAKU,EACH,OAGF,MAAMW,EAAuBnB,EAA8B,qBAAc,SAGnEoB,EF1B0C,YE0BvBD,EACnBE,EF5B0C,YE4BxBF,GAAiErB,EAAGwB,WAAWC,eAGnGH,GAAoBC,KACtB7D,KAAKgE,KAAKrB,GACV3C,KAAKiE,OACL3B,EAAG4B,eAAeC,mBAAqBnE,UCCViD,OAAOX,IACxC,MAAMe,QAAqBf,EAAGG,KAAKa,wBAC7BJ,GAAc,IAAIC,MAAOC,gBAEzBd,EAAGG,KAAK2B,sBAAsBf,EAAe,SAC7Cf,EAAGG,KAAK4B,sBAAsBnB,IDL1BoB,CAAoBhC,GAE9B,CAEO,IAAA0B,CAAKnB,GAKV,IAJoB7C,KAAKuE,iBAIP,CAChB,MAAMC,EE1CW,CAAC3B,GACf,gBACIV,kBAAqDA,wBAChDA,gCACEA,wBACVU,EAAO3B,+CAEGiB,6BACVU,EAAOzB,kDAEGe,oDACgBA,qBAAwDA,cAAiDA,mCACjIU,EAAOlB,0EAEiBQ,oBAAuDA,cAAiDA,kCAChIU,EAAOvB,8EF2BAmD,CAAQ5B,GACf6B,EEpBa,CAAC7B,IACxB,MAAM6B,EAASC,SAASC,cAAc,SAiFtC,OA/EAF,EAAOG,UAAY,UACd1C,mEAIAA,sNAYAA,sDAIAA,2DAEmBU,EAAOX,gBAAkBW,EAAOX,gBAAkB,2KAMrEC,6BACQU,EAAO1B,0FAKfgB,kCACQU,EAAOxB,oHAMfc,mEAIAA,+IAOAA,iOAUAA,sCACQU,EAAOjB,mDACIiB,EAAOf,sDACVe,EAAOhB,2CACRgB,EAAOd,+CAGtBI,qCACQU,EAAOtB,mDACIsB,EAAOpB,sDACVoB,EAAOrB,2CACRqB,EAAOnB,iEAKpBgD,GF9DYI,CAAUjC,GAGzB8B,SAASI,KAAKC,mBAAmB,YAAaR,GAG9CG,SAASM,KAAKC,YAAYR,EAC5B,CAEA1E,KAAKmF,mBACP,CAEO,IAAAlB,GACL,MAAMmB,EAAcpF,KAAKqF,+BACzBrF,KAAKsC,GAAGgD,cAAc,2BAA4B,CAAC,GAEnDF,EAAYG,UAAUC,IAAI,GAAGrD,SAC/B,CAEO,IAAAsD,GACL,MAAML,EAAcpF,KAAKqF,+BAErBD,EAAYG,UAAUG,SAAS,GAAGvD,YACpCnC,KAAKsC,GAAGgD,cAAc,2BAA4B,CAAC,GACnDF,EAAYG,UAAUI,OAAO,GAAGxD,UAEpC,CAEQ,cAAAoC,GACN,OAAOI,SAASiB,eAAe,GAAGzD,SACpC,CAEQ,4BAAAkD,GACN,MAAMQ,EAAU7F,KAAKuE,iBAErB,IAAKsB,EACH,MAAM,IAAIC,MAAM,6BAA6B3D,0CAG/C,OAAO0D,CACT,CAEQ,8BAAAE,GACN,MAAMF,EAAUlB,SAASiB,eAAe,GAAGzD,aAE3C,IAAK0D,EACH,MAAM,IAAIC,MAAM,6BAA6B3D,6CAG/C,OAAO0D,CACT,CAEQ,6BAAAG,GACN,MAAMH,EAAUlB,SAASiB,eAAe,GAAGzD,YAE3C,IAAK0D,EACH,MAAM,IAAIC,MAAM,6BAA6B3D,4CAG/C,OAAO0D,CACT,CAEQ,iBAAAV,GACN,MAAMC,EAAcpF,KAAKqF,+BACnBY,EAAiBjG,KAAK+F,iCACtBG,EAAgBlG,KAAKgG,gCAE3BrB,SAASwB,iBAAiB,QAAUC,IAC7BhB,EAAYM,SAAUU,EAAMC,SAC/BrG,KAAKyF,SAITQ,EAAeE,iBAAiB,QAAS,KACvCnG,KAAKyF,SAGPS,EAAcC,iBAAiB,QAAS,KACtCnG,KAAKyF,OACLzF,KAAKsC,GAAGgE,aAEZ,E","sources":["webpack://web-push-notifications/webpack/universalModuleDefinition","webpack://web-push-notifications/webpack/bootstrap","webpack://web-push-notifications/webpack/runtime/define property getters","webpack://web-push-notifications/webpack/runtime/hasOwnProperty shorthand","webpack://web-push-notifications/webpack/runtime/make namespace object","webpack://web-push-notifications/./src/widgets/SubscriptionPrompt/constants.ts","webpack://web-push-notifications/./src/widgets/SubscriptionPrompt/SubscriptionPromptWidget.constants.ts","webpack://web-push-notifications/./src/widgets/SubscriptionPrompt/SubscriptionPromptWidget.ts","webpack://web-push-notifications/./src/widgets/SubscriptionPrompt/helpers.ts","webpack://web-push-notifications/./src/widgets/SubscriptionPrompt/SubscriptionPromptWidget.helpers.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export const SUBSCRIPTION_WIDGET_USE_CASE_NOT_SET = 'not-set';\nexport const SUBSCRIPTION_WIDGET_USE_CASE_DEFAULT = 'default';\n\nexport const SUBSCRIPTION_PROMPT_WIDGET_DEFAULT_CONFIG = {\n headerText: 'Subscribe to our news',\n headerTextColor: '#000000',\n subheaderText: 'Don\\'t miss out on the latest news and updates!',\n subheaderTextColor: '#000000',\n buttonAcceptText: 'Agree',\n buttonAcceptTextColor: '#1A72E8',\n buttonAcceptRound: '4px',\n buttonAcceptBackgroundColor: '#FFFFFF',\n buttonAcceptBorderColor: '#E3E4E8',\n buttonCancelText: 'Deny',\n buttonCancelTextColor: '#1A72E8',\n buttonCancelRound: '4px',\n buttonCancelBackgroundColor: '#FFFFFF',\n buttonCancelBorderColor: '#E3E4E8',\n cappingCount: 3,\n cappingDelay: 1000 * 60 * 60 * 4, // time in ms\n backgroundColor: '#FFFFFF',\n};\n","export const SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE = 'pushwoosh-subscription-widget';\n","import { SUBSCRIPTION_WIDGET_USE_CASE_DEFAULT, SUBSCRIPTION_WIDGET_USE_CASE_NOT_SET } from './constants';\nimport { checkCanShowByCapping, getWidgetConfig, updateCappingParams } from './helpers';\nimport { SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE } from './SubscriptionPromptWidget.constants';\nimport { getHTML, getStyles } from './SubscriptionPromptWidget.helpers';\nimport { type ISubscriptionPromptWidgetParams } from './SubscriptionPromptWidget.types';\nimport { type Pushwoosh } from '../../core/Pushwoosh';\n\nexport class PWSubscriptionPromptWidget {\n private readonly pw: Pushwoosh;\n\n constructor(pw: Pushwoosh) {\n this.pw = pw;\n };\n\n public async run(): Promise<void> {\n const { pw } = this;\n\n const features = await pw.data.getFeatures();\n const widgetConfig = getWidgetConfig(features);\n const canShowByCapping = await checkCanShowByCapping(widgetConfig, pw);\n if (!canShowByCapping) {\n return;\n }\n\n const currentPromptUseCase = features['subscription_prompt']?.['use_case'];\n\n // show subscription prompt widget\n const isDefaultUseCase = currentPromptUseCase === SUBSCRIPTION_WIDGET_USE_CASE_DEFAULT;\n const isNotSetUseCase = currentPromptUseCase === SUBSCRIPTION_WIDGET_USE_CASE_NOT_SET && pw.initParams.autoSubscribe;\n\n // show subscription prompt widget\n if (isDefaultUseCase || isNotSetUseCase) {\n this.init(widgetConfig);\n this.show();\n pw.moduleRegistry.subscriptionPrompt = this;\n await updateCappingParams(pw);\n }\n }\n\n public init(params: ISubscriptionPromptWidgetParams): void {\n const rootElement = this.getRootElement();\n\n // if root element not exist\n // create widget\n if (!rootElement) {\n const html = getHTML(params);\n const styles = getStyles(params);\n\n // append popup to body\n document.body.insertAdjacentHTML('beforeend', html);\n\n // append styles to head\n document.head.appendChild(styles);\n }\n\n this.addEventListeners();\n }\n\n public show(): void {\n const rootElement = this.getRootElementWithCheckExist();\n this.pw.dispatchEvent('show-subscription-widget', {});\n\n rootElement.classList.add(`${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}_show`);\n }\n\n public hide(): void {\n const rootElement = this.getRootElementWithCheckExist();\n\n if (rootElement.classList.contains(`${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}_show`)) {\n this.pw.dispatchEvent('hide-subscription-widget', {});\n rootElement.classList.remove(`${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}_show`);\n }\n }\n\n private getRootElement(): HTMLElement | null {\n return document.getElementById(`${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-root`);\n }\n\n private getRootElementWithCheckExist(): HTMLElement {\n const element = this.getRootElement();\n\n if (!element) {\n throw new Error(`Can't find element by id \"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-root\", please use method init first.`);\n }\n\n return element;\n }\n\n private getDeclineButtonWithCheckExist(): HTMLButtonElement {\n const element = document.getElementById(`${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-decline`) as HTMLButtonElement;\n\n if (!element) {\n throw new Error(`Can't find element by id \"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-decline\", please use method init first.`);\n }\n\n return element;\n }\n\n private getAcceptButtonWithCheckExist(): HTMLButtonElement {\n const element = document.getElementById(`${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-accept`) as HTMLButtonElement;\n\n if (!element) {\n throw new Error(`Can't find element by id \"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-accept\", please use method init first.`);\n }\n\n return element;\n }\n\n private addEventListeners(): void {\n const rootElement = this.getRootElementWithCheckExist();\n const declineElement = this.getDeclineButtonWithCheckExist();\n const acceptElement = this.getAcceptButtonWithCheckExist();\n\n document.addEventListener('click', (event) => {\n if (!rootElement.contains((event.target as HTMLElement))) {\n this.hide();\n }\n });\n\n declineElement.addEventListener('click', () => {\n this.hide();\n });\n\n acceptElement.addEventListener('click', () => {\n this.hide();\n this.pw.subscribe();\n });\n }\n}\n","import { SUBSCRIPTION_PROMPT_WIDGET_DEFAULT_CONFIG } from './constants';\nimport type { ISubscriptionPromptWidgetParams } from './SubscriptionPromptWidget.types';\nimport type { Pushwoosh } from '../../core/Pushwoosh';\n\nexport const getWidgetConfig = (features: any): ISubscriptionPromptWidgetParams => {\n // get config by features from get config method\n const currentConfig = features['subscription_prompt_widget'] && features['subscription_prompt_widget'].params;\n\n // merge current config with capping defaults\n const configWithDefaultCapping: ISubscriptionPromptWidgetParams = {\n cappingCount: SUBSCRIPTION_PROMPT_WIDGET_DEFAULT_CONFIG.cappingCount,\n cappingDelay: SUBSCRIPTION_PROMPT_WIDGET_DEFAULT_CONFIG.cappingDelay,\n ...currentConfig,\n };\n\n // if current config is not exist show with default values\n return currentConfig\n ? configWithDefaultCapping\n : SUBSCRIPTION_PROMPT_WIDGET_DEFAULT_CONFIG;\n};\n\nexport const checkCanShowByCapping = async (widgetConfig: ISubscriptionPromptWidgetParams, pw: Pushwoosh): Promise<boolean> => {\n const currentTime = new Date().getTime();\n const displayCount = await pw.data.getPromptDisplayCount();\n const lastSeenTime = await pw.data.getPromptLastSeenTime();\n\n // can show by max display count\n const canShowByCapping = widgetConfig.cappingCount > displayCount;\n\n // can show last seen time\n const canShowByLastTime = currentTime - lastSeenTime > widgetConfig.cappingDelay;\n\n return canShowByCapping && canShowByLastTime;\n};\n\nexport const updateCappingParams = async (pw: Pushwoosh): Promise<void> => {\n const displayCount = await pw.data.getPromptDisplayCount();\n const currentTime = new Date().getTime();\n\n await pw.data.setPromptDisplayCount(displayCount + 1);\n await pw.data.setPromptLastSeenTime(currentTime);\n};\n","import { SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE } from './SubscriptionPromptWidget.constants';\nimport { type ISubscriptionPromptWidgetParams } from './SubscriptionPromptWidget.types';\n\nexport const getHTML = (params: ISubscriptionPromptWidgetParams): string => {\n return `\n <div id=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-root\" class=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}\">\n <div class=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__body\">\n <div class=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__header\">\n ${params.headerText}\n </div>\n <div class=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__description\">\n ${params.subheaderText}\n </div>\n <div class=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__controls\">\n <button type=\"button\" id=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-decline\" class=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__control ${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__control_decline\">\n ${params.buttonCancelText}\n </button>\n <button type=\"button\" id=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-accept\" class=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__control ${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__control_accept\">\n ${params.buttonAcceptText}\n </button>\n </div>\n </div>\n </div>\n `;\n};\n\nexport const getStyles = (params: ISubscriptionPromptWidgetParams) => {\n const styles = document.createElement('style');\n\n styles.innerHTML = `\n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE} * {\n box-sizing: border-box!important;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE} {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n margin: 0 auto;\n width: 320px;\n display: none;\n z-index: 2147483648;\n opacity: 0.99;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}_show {\n display: block;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__body {\n width: 320px;\n background-color: ${params.backgroundColor ? params.backgroundColor : '#FFFFFF'};\n box-shadow: 0 9px 15px rgba(0, 0, 0, 0.1), 0 0 6px rgba(0, 0, 0, 0.06);\n border-radius: 4px;\n padding: 20px 20px 12px;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__header {\n color: ${params.headerTextColor};\n font-size: 18px;\n font-weight: bold; \n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__description {\n color: ${params.subheaderTextColor};\n font-size: 14px;\n line-height: 1.5;\n margin-top: 14px;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__description:empty {\n display: none;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__controls {\n display: flex;\n flex-wrap: nowrap;\n justify-content: flex-end;\n margin: 20px 0 0;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__control {\n -webkit-appearance: none;\n border: 1px solid transparent;\n font-size: 12px;\n font-weight: bold;\n padding: 0 20px;\n height: 32px;\n cursor: pointer;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__control_decline {\n color: ${params.buttonCancelTextColor};\n background-color: ${params.buttonCancelBackgroundColor};\n border-radius: ${params.buttonCancelRound};\n border-color: ${params.buttonCancelBorderColor};\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__control_accept {\n color: ${params.buttonAcceptTextColor};\n background-color: ${params.buttonAcceptBackgroundColor};\n border-radius: ${params.buttonAcceptRound};\n border-color: ${params.buttonAcceptBorderColor};\n margin: 0 0 0 12px;\n }\n `;\n\n return styles;\n};\n"],"names":["root","factory","exports","module","define","amd","a","i","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","SUBSCRIPTION_PROMPT_WIDGET_DEFAULT_CONFIG","headerText","headerTextColor","subheaderText","subheaderTextColor","buttonAcceptText","buttonAcceptTextColor","buttonAcceptRound","buttonAcceptBackgroundColor","buttonAcceptBorderColor","buttonCancelText","buttonCancelTextColor","buttonCancelRound","buttonCancelBackgroundColor","buttonCancelBorderColor","cappingCount","cappingDelay","backgroundColor","SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE","PWSubscriptionPromptWidget","constructor","pw","run","features","data","getFeatures","widgetConfig","currentConfig","params","configWithDefaultCapping","getWidgetConfig","canShowByCapping","async","currentTime","Date","getTime","displayCount","getPromptDisplayCount","lastSeenTime","getPromptLastSeenTime","canShowByLastTime","checkCanShowByCapping","currentPromptUseCase","isDefaultUseCase","isNotSetUseCase","initParams","autoSubscribe","init","show","moduleRegistry","subscriptionPrompt","setPromptDisplayCount","setPromptLastSeenTime","updateCappingParams","getRootElement","html","getHTML","styles","document","createElement","innerHTML","getStyles","body","insertAdjacentHTML","head","appendChild","addEventListeners","rootElement","getRootElementWithCheckExist","dispatchEvent","classList","add","hide","contains","remove","getElementById","element","Error","getDeclineButtonWithCheckExist","getAcceptButtonWithCheckExist","declineElement","acceptElement","addEventListener","event","target","subscribe"],"sourceRoot":""}
1
+ {"version":3,"file":"widget-subscription-prompt.js","mappings":"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","sources":["webpack://web-push-notifications/webpack/universalModuleDefinition","webpack://web-push-notifications/webpack/bootstrap","webpack://web-push-notifications/webpack/runtime/define property getters","webpack://web-push-notifications/webpack/runtime/hasOwnProperty shorthand","webpack://web-push-notifications/webpack/runtime/make namespace object","webpack://web-push-notifications/./src/widgets/SubscriptionPrompt/constants.ts","webpack://web-push-notifications/./src/widgets/SubscriptionPrompt/SubscriptionPromptWidget.constants.ts","webpack://web-push-notifications/./src/widgets/SubscriptionPrompt/SubscriptionPromptWidget.ts","webpack://web-push-notifications/./src/widgets/SubscriptionPrompt/helpers.ts","webpack://web-push-notifications/./src/widgets/SubscriptionPrompt/SubscriptionPromptWidget.helpers.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export const SUBSCRIPTION_WIDGET_USE_CASE_NOT_SET = 'not-set';\nexport const SUBSCRIPTION_WIDGET_USE_CASE_DEFAULT = 'default';\n\nexport const SUBSCRIPTION_PROMPT_WIDGET_DEFAULT_CONFIG = {\n headerText: 'Subscribe to our news',\n headerTextColor: '#000000',\n subheaderText: 'Don\\'t miss out on the latest news and updates!',\n subheaderTextColor: '#000000',\n buttonAcceptText: 'Agree',\n buttonAcceptTextColor: '#1A72E8',\n buttonAcceptRound: '4px',\n buttonAcceptBackgroundColor: '#FFFFFF',\n buttonAcceptBorderColor: '#E3E4E8',\n buttonCancelText: 'Deny',\n buttonCancelTextColor: '#1A72E8',\n buttonCancelRound: '4px',\n buttonCancelBackgroundColor: '#FFFFFF',\n buttonCancelBorderColor: '#E3E4E8',\n cappingCount: 3,\n cappingDelay: 1000 * 60 * 60 * 4, // time in ms\n backgroundColor: '#FFFFFF',\n};\n","export const SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE = 'pushwoosh-subscription-widget';\n","import { SUBSCRIPTION_WIDGET_USE_CASE_DEFAULT, SUBSCRIPTION_WIDGET_USE_CASE_NOT_SET } from './constants';\nimport { checkCanShowByCapping, getWidgetConfig, updateCappingParams } from './helpers';\nimport { SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE } from './SubscriptionPromptWidget.constants';\nimport { getHTML, getStyles } from './SubscriptionPromptWidget.helpers';\nimport { type ISubscriptionPromptWidgetParams } from './SubscriptionPromptWidget.types';\nimport { type Pushwoosh } from '../../core/Pushwoosh';\n\nexport class PWSubscriptionPromptWidget {\n private readonly pw: Pushwoosh;\n\n constructor(pw: Pushwoosh) {\n this.pw = pw;\n };\n\n public async run(): Promise<void> {\n const { pw } = this;\n\n const features = await pw.data.getFeatures();\n const widgetConfig = getWidgetConfig(features);\n const canShowByCapping = await checkCanShowByCapping(widgetConfig, pw);\n if (!canShowByCapping) {\n return;\n }\n\n const currentPromptUseCase = features['subscription_prompt']?.['use_case'];\n\n // show subscription prompt widget\n const isDefaultUseCase = currentPromptUseCase === SUBSCRIPTION_WIDGET_USE_CASE_DEFAULT;\n const isNotSetUseCase = currentPromptUseCase === SUBSCRIPTION_WIDGET_USE_CASE_NOT_SET && pw.initParams.autoSubscribe;\n\n // show subscription prompt widget\n if (isDefaultUseCase || isNotSetUseCase) {\n this.init(widgetConfig);\n this.show();\n pw.moduleRegistry.subscriptionPrompt = this;\n await updateCappingParams(pw);\n }\n }\n\n public init(params: ISubscriptionPromptWidgetParams): void {\n const rootElement = this.getRootElement();\n\n // if root element not exist\n // create widget\n if (!rootElement) {\n const html = getHTML(params);\n const styles = getStyles(params);\n\n // append popup to body\n document.body.insertAdjacentHTML('beforeend', html);\n\n // append styles to head\n document.head.appendChild(styles);\n }\n\n this.addEventListeners();\n }\n\n public show(): void {\n const rootElement = this.getRootElementWithCheckExist();\n this.pw.dispatchEvent('show-subscription-widget', {});\n\n rootElement.classList.add(`${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}_show`);\n }\n\n public hide(): void {\n const rootElement = this.getRootElementWithCheckExist();\n\n if (rootElement.classList.contains(`${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}_show`)) {\n this.pw.dispatchEvent('hide-subscription-widget', {});\n rootElement.classList.remove(`${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}_show`);\n }\n }\n\n private getRootElement(): HTMLElement | null {\n return document.getElementById(`${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-root`);\n }\n\n private getRootElementWithCheckExist(): HTMLElement {\n const element = this.getRootElement();\n\n if (!element) {\n throw new Error(`Can't find element by id \"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-root\", please use method init first.`);\n }\n\n return element;\n }\n\n private getDeclineButtonWithCheckExist(): HTMLButtonElement {\n const element = document.getElementById(`${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-decline`) as HTMLButtonElement;\n\n if (!element) {\n throw new Error(`Can't find element by id \"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-decline\", please use method init first.`);\n }\n\n return element;\n }\n\n private getAcceptButtonWithCheckExist(): HTMLButtonElement {\n const element = document.getElementById(`${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-accept`) as HTMLButtonElement;\n\n if (!element) {\n throw new Error(`Can't find element by id \"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-accept\", please use method init first.`);\n }\n\n return element;\n }\n\n private addEventListeners(): void {\n const rootElement = this.getRootElementWithCheckExist();\n const declineElement = this.getDeclineButtonWithCheckExist();\n const acceptElement = this.getAcceptButtonWithCheckExist();\n\n document.addEventListener('click', (event) => {\n if (!rootElement.contains((event.target as HTMLElement))) {\n this.hide();\n }\n });\n\n declineElement.addEventListener('click', () => {\n this.hide();\n });\n\n acceptElement.addEventListener('click', () => {\n this.hide();\n this.pw.subscribe();\n });\n }\n}\n","import { SUBSCRIPTION_PROMPT_WIDGET_DEFAULT_CONFIG } from './constants';\nimport type { ISubscriptionPromptWidgetParams } from './SubscriptionPromptWidget.types';\nimport type { Pushwoosh } from '../../core/Pushwoosh';\n\nexport const getWidgetConfig = (features: any): ISubscriptionPromptWidgetParams => {\n // get config by features from get config method\n const currentConfig = features['subscription_prompt_widget'] && features['subscription_prompt_widget'].params;\n\n // merge current config with capping defaults\n const configWithDefaultCapping: ISubscriptionPromptWidgetParams = {\n cappingCount: SUBSCRIPTION_PROMPT_WIDGET_DEFAULT_CONFIG.cappingCount,\n cappingDelay: SUBSCRIPTION_PROMPT_WIDGET_DEFAULT_CONFIG.cappingDelay,\n ...currentConfig,\n };\n\n // if current config is not exist show with default values\n return currentConfig\n ? configWithDefaultCapping\n : SUBSCRIPTION_PROMPT_WIDGET_DEFAULT_CONFIG;\n};\n\nexport const checkCanShowByCapping = async (widgetConfig: ISubscriptionPromptWidgetParams, pw: Pushwoosh): Promise<boolean> => {\n const currentTime = new Date().getTime();\n const displayCount = await pw.data.getPromptDisplayCount();\n const lastSeenTime = await pw.data.getPromptLastSeenTime();\n\n // can show by max display count\n const canShowByCapping = widgetConfig.cappingCount > displayCount;\n\n // can show last seen time\n const canShowByLastTime = currentTime - lastSeenTime > widgetConfig.cappingDelay;\n\n return canShowByCapping && canShowByLastTime;\n};\n\nexport const updateCappingParams = async (pw: Pushwoosh): Promise<void> => {\n const displayCount = await pw.data.getPromptDisplayCount();\n const currentTime = new Date().getTime();\n\n await pw.data.setPromptDisplayCount(displayCount + 1);\n await pw.data.setPromptLastSeenTime(currentTime);\n};\n","import { SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE } from './SubscriptionPromptWidget.constants';\nimport { type ISubscriptionPromptWidgetParams } from './SubscriptionPromptWidget.types';\n\nexport const getHTML = (params: ISubscriptionPromptWidgetParams): string => {\n return `\n <div id=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-root\" class=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}\">\n <div class=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__body\">\n <div class=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__header\">\n ${params.headerText}\n </div>\n <div class=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__description\">\n ${params.subheaderText}\n </div>\n <div class=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__controls\">\n <button type=\"button\" id=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-decline\" class=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__control ${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__control_decline\">\n ${params.buttonCancelText}\n </button>\n <button type=\"button\" id=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}-accept\" class=\"${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__control ${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__control_accept\">\n ${params.buttonAcceptText}\n </button>\n </div>\n </div>\n </div>\n `;\n};\n\nexport const getStyles = (params: ISubscriptionPromptWidgetParams) => {\n const styles = document.createElement('style');\n\n styles.innerHTML = `\n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE} * {\n box-sizing: border-box!important;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE} {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n margin: 0 auto;\n width: 320px;\n display: none;\n z-index: 2147483648;\n opacity: 0.99;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}_show {\n display: block;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__body {\n width: 320px;\n background-color: ${params.backgroundColor ? params.backgroundColor : '#FFFFFF'};\n box-shadow: 0 9px 15px rgba(0, 0, 0, 0.1), 0 0 6px rgba(0, 0, 0, 0.06);\n border-radius: 4px;\n padding: 20px 20px 12px;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__header {\n color: ${params.headerTextColor};\n font-size: 18px;\n font-weight: bold; \n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__description {\n color: ${params.subheaderTextColor};\n font-size: 14px;\n line-height: 1.5;\n margin-top: 14px;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__description:empty {\n display: none;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__controls {\n display: flex;\n flex-wrap: nowrap;\n justify-content: flex-end;\n margin: 20px 0 0;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__control {\n -webkit-appearance: none;\n border: 1px solid transparent;\n font-size: 12px;\n font-weight: bold;\n padding: 0 20px;\n height: 32px;\n cursor: pointer;\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__control_decline {\n color: ${params.buttonCancelTextColor};\n background-color: ${params.buttonCancelBackgroundColor};\n border-radius: ${params.buttonCancelRound};\n border-color: ${params.buttonCancelBorderColor};\n }\n \n .${SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE}__control_accept {\n color: ${params.buttonAcceptTextColor};\n background-color: ${params.buttonAcceptBackgroundColor};\n border-radius: ${params.buttonAcceptRound};\n border-color: ${params.buttonAcceptBorderColor};\n margin: 0 0 0 12px;\n }\n `;\n\n return styles;\n};\n"],"names":["root","factory","exports","module","define","amd","a","i","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","SUBSCRIPTION_PROMPT_WIDGET_DEFAULT_CONFIG","headerText","headerTextColor","subheaderText","subheaderTextColor","buttonAcceptText","buttonAcceptTextColor","buttonAcceptRound","buttonAcceptBackgroundColor","buttonAcceptBorderColor","buttonCancelText","buttonCancelTextColor","buttonCancelRound","buttonCancelBackgroundColor","buttonCancelBorderColor","cappingCount","cappingDelay","backgroundColor","SUBSCRIPTION_PROMPT_WIDGET_NAMESPACE","PWSubscriptionPromptWidget","constructor","pw","run","features","data","getFeatures","widgetConfig","currentConfig","params","configWithDefaultCapping","getWidgetConfig","canShowByCapping","async","currentTime","Date","getTime","displayCount","getPromptDisplayCount","lastSeenTime","getPromptLastSeenTime","canShowByLastTime","checkCanShowByCapping","currentPromptUseCase","isDefaultUseCase","isNotSetUseCase","initParams","autoSubscribe","init","show","moduleRegistry","subscriptionPrompt","setPromptDisplayCount","setPromptLastSeenTime","updateCappingParams","getRootElement","html","getHTML","styles","document","createElement","innerHTML","getStyles","body","insertAdjacentHTML","head","appendChild","addEventListeners","rootElement","getRootElementWithCheckExist","dispatchEvent","classList","add","hide","contains","remove","getElementById","element","Error","getDeclineButtonWithCheckExist","getAcceptButtonWithCheckExist","declineElement","acceptElement","addEventListener","event","target","subscribe"],"ignoreList":[],"sourceRoot":""}