web-push-notifications 3.50.6 → 3.51.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-inbox.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/Inbox/constants.ts","webpack://web-push-notifications/./src/widgets/Inbox/helpers.ts","webpack://web-push-notifications/./src/widgets/Inbox/widgetTemplates.ts","webpack://web-push-notifications/./src/widgets/Inbox/InboxWidget.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};","import { type IConfigStyles, type IInboxWidgetConfig } from './inbox_widget.types';\n\nexport const MILLISECONDS_IN_DAY = 60 * 60 * 24 * 1000;\nexport const MILLISECONDS_IN_HOUR = 60 * 60 * 1000;\nexport const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];\n\nexport const CONFIG_STYLES: Array<IConfigStyles> = [\n { name: 'widgetWidth', type: 'size' },\n { name: 'borderRadius', type: 'size' },\n { name: 'zIndex', type: 'number' },\n { name: 'fontFamily', type: 'string' },\n { name: 'bgColor', type: 'color' },\n { name: 'textColor', type: 'color' },\n { name: 'arrowBorderColor', type: 'color' },\n { name: 'borderColor', type: 'color' },\n { name: 'badgeBgColor', type: 'color' },\n { name: 'badgeTextColor', type: 'color' },\n { name: 'timeTextColor', type: 'color' },\n { name: 'messageTitleColor', type: 'color' },\n { name: 'emptyInboxTitleColor', type: 'color' },\n { name: 'emptyInboxTextColor', type: 'color' },\n];\n\nexport const DEFAULT_CONFIG: IInboxWidgetConfig = {\n enable: false,\n triggerId: 'pwInbox',\n position: 'bottom',\n appendTo: 'body',\n title: 'Inbox',\n bgColor: '#ffffff',\n textColor: '#333333',\n fontFamily: 'inherit',\n borderRadius: 4,\n borderColor: 'transparent',\n badgeBgColor: '#ff4c00',\n badgeTextColor: '#ffffff',\n widgetWidth: 350,\n zIndex: 100,\n messageTitleColor: '#7a7a7a',\n timeTextColor: '#c4c4c4',\n emptyInboxTitle: 'You\\'re all caught up',\n emptyInboxTitleColor: '#333333',\n emptyInboxText: 'There are no new messages. Stay tuned!',\n emptyInboxTextColor: '#7a7a7a',\n emptyInboxIconUrl: 'https://pushon.pushwoosh.com/static/icon-empty-inbox.png',\n arrowBorderColor: 'rgba(0,0,0,.1)',\n};\n\nexport const COLOR_TEST_REGEXP = /^(#([\\da-f]{3}){1,2}$|(rgb|hsl)a\\((\\d{1,3}%?,\\s?){3}(1|0?\\.\\d+)\\)$|(rgb|hsl)\\(\\d{1,3}%?(,\\s?\\d{1,3}%?){2}\\)$)/;\n","import {\n MILLISECONDS_IN_HOUR,\n MILLISECONDS_IN_DAY,\n MONTHS,\n COLOR_TEST_REGEXP,\n} from './constants';\n\nexport function isElementFixed(element: HTMLElement): boolean {\n let isFixed = window.getComputedStyle(element).position === 'fixed';\n if (!isFixed && element.parentElement) {\n isFixed = isElementFixed(element.parentElement);\n }\n return isFixed;\n}\n\nexport function getMessageTime(date: string): string {\n const localDate = new Date(date);\n const localTime = localDate.getHours() + (localDate.getTimezoneOffset() / 60);\n localDate.setHours(localTime);\n const now = new Date();\n\n const gap = (now.getTime() - localDate.getTime());\n\n if (gap <= 60 * 1000) {\n return `Just now`;\n } else if (gap < MILLISECONDS_IN_HOUR && gap > 0) {\n const minutesAgo = Math.floor(gap / (60 * 1000));\n return `${minutesAgo} minutes ago`;\n } else if (gap < MILLISECONDS_IN_DAY && gap > 0) {\n const hoursAgo = Math.floor(gap / (60 * 60 * 1000));\n return `${hoursAgo} hours ago`;\n }\n\n const day = localDate.getDate();\n const month = MONTHS[localDate.getMonth()];\n const year = localDate.getFullYear();\n const hours = localDate.getHours();\n const minutes = `0${localDate.getMinutes().toString()}`.slice(-2); // padStart(2, 0)\n\n return `${day} ${month} ${year}, ${hours}:${minutes}`;\n}\n\nexport function getValidColor(color: string): string {\n if (color === 'transparent') {\n return color;\n }\n\n return COLOR_TEST_REGEXP.test(color)\n ? color\n : '#333';\n}\n\nexport function compareBySendDate(dateOne: string, dateTwo: string): number {\n const localDateOne = new Date(dateOne);\n const localTimeOne = localDateOne.getHours() + (localDateOne.getTimezoneOffset() / 60);\n const localDateTwo = new Date(dateTwo);\n const localTimeTwo = localDateTwo.getHours() + (localDateTwo.getTimezoneOffset() / 60);\n\n localDateOne.setHours(localTimeOne);\n localDateTwo.setHours(localTimeTwo);\n\n return localDateTwo.getTime() - localDateOne.getTime();\n}\n","import { getMessageTime } from './helpers';\nimport { type IInboxMessagePublic } from '../../models/InboxMessages.types';\n\nexport const widgetTemplate = (title: string): string => `\n<div class=\"pw-inbox__arrow\"></div>\n<div class=\"pw-inbox_inner\">\n <div class=\"pw-inbox_title\">\n ${title}\n </div>\n <ul class=\"pw-inbox_list\">\n\n </ul>\n</div>`;\n\nexport const widgetTemplateEmpty = (\n emptyInboxIconUrl: string,\n emptyInboxTitle: string,\n emptyInboxText: string,\n) => `\n<div class=\"pw-inbox__arrow\"></div>\n<div class=\"pw-inbox_list--empty\">\n <div class=\"pw-inbox_list-icon\">\n <img src=\"${emptyInboxIconUrl}\" alt=\"${emptyInboxTitle}\">\n </div>\n <div class=\"pw-inbox_list-title\">\n ${emptyInboxTitle}\n </div>\n <div class=\"ipw-inbox_list-body\">\n ${emptyInboxText}\n </div>\n</div>`;\n\nexport const messageTemplate = ({\n imageUrl,\n title,\n message,\n sendDate,\n}: IInboxMessagePublic) => `\n<div class=\"pw-inbox_item-inner\">\n <div class=\"pw-inbox_icon\">\n <img src=\"${imageUrl}\" alt=\"${title || message}\" class=\"pw-inbox_message-image\">\n </div>\n <div class=\"pw-inbox_content\">\n ${title ? `<div class=\"pw-inbox_item-title\">\n ${title}\n </div>` : null}\n <div class=\"pw-inbox_item-body\">\n ${message}\n </div>\n <div class=\"pw-inbox_item-time\">\n ${getMessageTime(sendDate)}\n </div>\n </div>\n</div>\n<span class=\"pw-inbox_item-remove\"></span>`;\n","import {\n CONFIG_STYLES,\n DEFAULT_CONFIG,\n} from './constants';\nimport inboxWidgetStyleCss from './css/inboxWidgetStyle.css';\nimport {\n getValidColor,\n isElementFixed,\n compareBySendDate,\n} from './helpers';\nimport { type IConfigStyles, type IInboxWidgetConfig, type TMessagesElementsType } from './inbox_widget.types';\nimport {\n messageTemplate,\n widgetTemplate,\n widgetTemplateEmpty,\n} from './widgetTemplates';\nimport { type Pushwoosh } from '../../core/Pushwoosh';\nimport { type IInboxMessagePublic } from '../../models/InboxMessages.types';\n\nexport class PWInboxWidget {\n pw: Pushwoosh;\n widget: HTMLElement;\n trigger: HTMLElement;\n list: HTMLElement;\n widgetParent: HTMLElement;\n count: number;\n messages: Array<IInboxMessagePublic>;\n messagesElements: TMessagesElementsType;\n readItems: Array<string>;\n isOpened: boolean;\n config: IInboxWidgetConfig;\n defaultMargin: number;\n isFixed: boolean;\n\n constructor(pw: Pushwoosh) {\n // Set Pushwoosh object\n this.pw = pw;\n\n const inboxWidgetConfig = this.pw.initParams.inboxWidget!;\n\n this.config = {\n ...DEFAULT_CONFIG,\n arrowBorderColor: inboxWidgetConfig.borderColor && inboxWidgetConfig.borderColor !== 'transparent'\n ? inboxWidgetConfig.borderColor\n : 'rgba(0,0,0,.1)',\n ...this.pw.initParams.inboxWidget,\n };\n\n this.updateInbox = this.updateInbox.bind(this);\n this.markVisibleItemsAsRead = this.markVisibleItemsAsRead.bind(this);\n this.onWidgetClickHandler = this.onWidgetClickHandler.bind(this);\n this.onTriggerClickHandler = this.onTriggerClickHandler.bind(this);\n this.onWindowScrollHandler = this.onWindowScrollHandler.bind(this);\n this.toggle = this.toggle.bind(this);\n }\n\n public async run() {\n this.initTrigger();\n this.updateInbox();\n this.addListeners();\n }\n\n public toggle(isOpened?: boolean) {\n const openWidget = typeof isOpened === 'undefined'\n ? !this.isOpened\n : isOpened;\n\n if (openWidget) {\n this.openWidget();\n } else {\n this.closeWidget();\n }\n }\n\n // set inbox widget to trigger element on page\n private initTrigger() {\n if (!this.pw.pwinbox) {\n throw new Error('Web inbox is not allowed.');\n }\n\n const trigger = document.getElementById(this.config.triggerId);\n\n if (!trigger) {\n throw new Error('Inbox trigger element doesn\\'t exist. You must set triggerId in inboxWidget config. See the documentation.');\n }\n\n this.trigger = trigger;\n this.trigger.classList.add('pw-inbox-trigger');\n\n this.defaultMargin = 12;\n this.messagesElements = {};\n this.messages = [];\n this.readItems = [];\n this.updateCounter(0);\n this.isOpened = false;\n\n this.renderWidget();\n\n this.isFixed = isElementFixed(this.trigger);\n }\n\n private renderWidget() {\n this.widget = document.createElement('div');\n this.widget.id = 'pwInboxWidget';\n this.widget.className = 'pw-inbox-widget';\n this.widget.classList.toggle('pw-open', this.isOpened);\n\n this.widgetParent = document.querySelector(this.config.appendTo) || document.body;\n\n this.widgetParent.appendChild(this.widget);\n this.widgetParent.appendChild(this.getStyle());\n this.renderWidgetInner();\n }\n\n private getStyle(): HTMLStyleElement {\n const styleNode = document.createElement('style');\n styleNode.innerHTML = this.configureStyle(inboxWidgetStyleCss);\n return styleNode;\n }\n\n private configureStyle(styles: string): string {\n let resultStyles = styles.toString();\n CONFIG_STYLES.forEach((style: IConfigStyles) => {\n const template = new RegExp(`var\\\\(--${style.name}\\\\)`, 'ig');\n const result = this.getStyleFormatter(style);\n\n resultStyles = resultStyles.replace(template, result);\n });\n return resultStyles;\n }\n\n private getStyleFormatter(style: IConfigStyles): string {\n switch (style.type) {\n case 'size':\n return `${this.config[style.name] || 0}px`;\n case 'number':\n return parseFloat(this.config[style.name].toString()).toString();\n case 'string':\n return this.config[style.name].toString();\n case 'color':\n return getValidColor(this.config[style.name].toString());\n default:\n return 'none';\n }\n }\n\n private renderWidgetInner() {\n if (this.messages.length > 0) {\n this.widget.classList.remove('pw-inbox-widget--empty');\n this.widget.innerHTML = widgetTemplate(this.config.title);\n this.renderMessages();\n } else {\n this.widget.classList.add('pw-inbox-widget--empty');\n const {\n emptyInboxTitle,\n emptyInboxText,\n emptyInboxIconUrl,\n } = this.config;\n this.widget.innerHTML = widgetTemplateEmpty(emptyInboxIconUrl, emptyInboxTitle, emptyInboxText);\n }\n }\n\n private renderMessages() {\n this.list = this.widget.querySelector('.pw-inbox_list') || document.createElement('ul');\n this.messages.forEach((message: IInboxMessagePublic) => {\n const messageElement = document.createElement('li');\n messageElement.className = 'pw-inbox_item';\n messageElement.classList.toggle('pw-new', !message.isRead);\n messageElement.classList.toggle('pw-unread', !message.isActionPerformed);\n messageElement.setAttribute('data-pw-inbox-message-id', message.code);\n messageElement.innerHTML = messageTemplate(message);\n\n this.list.appendChild(messageElement);\n this.messagesElements[message.code] = messageElement;\n });\n }\n\n private updateCounter(count: number) {\n this.count = count;\n this.trigger.setAttribute('data-pw-count', `${this.count}`);\n this.trigger.classList.toggle('pw-empty', this.count === 0);\n }\n\n private updateInboxMessages(messages: Array<IInboxMessagePublic>) {\n this.messages = messages.sort(({ sendDate: sendDateOne }, { sendDate: sendDateTwo }) => compareBySendDate(sendDateOne, sendDateTwo));\n this.renderWidgetInner();\n }\n\n openWidget() {\n this.isOpened = true;\n this.widget.classList.add('pw-open');\n document.addEventListener('click', this.onWidgetClickHandler);\n window.addEventListener('scroll', this.onWindowScrollHandler);\n window.addEventListener('resize', this.onWindowScrollHandler);\n this.markVisibleItemsAsRead();\n if (this.messages.length > 0) {\n this.list.addEventListener('scroll', this.markVisibleItemsAsRead);\n }\n this.positionWidget();\n }\n\n closeWidget() {\n this.isOpened = false;\n document.removeEventListener('click', this.onWidgetClickHandler);\n document.removeEventListener('click', this.onWindowScrollHandler);\n window.removeEventListener('resize', this.onWindowScrollHandler);\n this.updateReadStatus();\n if (this.messages.length > 0) {\n this.list.removeEventListener('scroll', this.markVisibleItemsAsRead);\n }\n this.widget.classList.remove('pw-open', 'pw-top', 'pw-bottom', 'pw-right', 'pw-left');\n this.widget.removeAttribute('style');\n }\n\n private positionWidget() {\n if (!this.isOpened) {\n return;\n }\n if (this.widgetParent === document.body) {\n this.defaultPlaceWidget();\n } else {\n this.customPlaceWidget();\n }\n }\n\n private customPlaceWidget() {\n const { position } = this.config;\n this.widgetParent.style.position = 'relative';\n this.widget.classList.add('pw-inbox-widget--inset');\n this.widget.classList.add(`pw-${position}`);\n }\n\n private defaultPlaceWidget() {\n const position = this.pw.initParams.inboxWidget!.position ? this.config.position : this.getDefaultPosition();\n\n const widgetRect = this.widget.getBoundingClientRect();\n if (!document.documentElement) {\n return;\n }\n const windowWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n const windowHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n\n if (widgetRect.width + (this.defaultMargin * 2) > windowWidth) {\n this.widget.style.width = `${windowWidth - (this.defaultMargin * 2)}px`;\n }\n if (widgetRect.height + 24 > windowHeight) {\n this.widget.style.height = `${windowHeight - (this.defaultMargin * 2)}px`;\n }\n\n switch (position) {\n case 'top': {\n this.alignWidgetTop();\n break;\n }\n case 'right': {\n this.alignWidgetRight();\n break;\n }\n case 'left': {\n this.alignWidgetLeft();\n break;\n }\n case 'bottom': {\n this.alignWidgetBottom();\n break;\n }\n }\n }\n\n private alignWidgetTop() {\n const triggerRect = this.trigger.getBoundingClientRect();\n const widgetRect = this.widget.getBoundingClientRect();\n if (!document.documentElement) {\n return;\n }\n const windowWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n const arrow: HTMLElement = this.widget.querySelector('.pw-inbox__arrow') || document.createElement('div');\n\n this.widget.classList.add('pw-top');\n\n let left = pageXOffset + triggerRect.left + Math.floor(triggerRect.width / 2) - Math.floor(widgetRect.width / 2);\n\n const isUnderLeft = left < pageXOffset;\n const isUnderRight = left + widgetRect.width > pageXOffset + windowWidth;\n\n if (isUnderLeft) {\n left = pageXOffset + this.defaultMargin;\n }\n if (isUnderRight) {\n left = pageXOffset + windowWidth - widgetRect.width - this.defaultMargin;\n }\n\n const top = pageYOffset + triggerRect.top - widgetRect.height;\n\n this.alignWidgetElement(left, top);\n arrow.style.left = `${triggerRect.left + Math.floor(triggerRect.width / 2) - left}px`;\n\n const topMargin = this.widget.getBoundingClientRect().top;\n const isUnderTop = topMargin < 0;\n if (isUnderTop) {\n const newHeight = this.widget.getBoundingClientRect().height + topMargin - this.defaultMargin;\n const newTop = this.widget.getBoundingClientRect().top - topMargin + this.defaultMargin;\n this.widget.style.height = `${newHeight}px`;\n this.widget.style.top = `${newTop}px`;\n }\n }\n\n private alignWidgetRight() {\n const triggerRect = this.trigger.getBoundingClientRect();\n const widgetRect = this.widget.getBoundingClientRect();\n if (!document.documentElement) {\n return;\n }\n const windowWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n const windowHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n const arrow: HTMLElement = this.widget.querySelector('.pw-inbox__arrow') || document.createElement('div');\n\n this.widget.classList.add('pw-right');\n\n let top = pageYOffset + triggerRect.top + Math.floor(triggerRect.height / 2) - Math.floor(widgetRect.height / 2);\n\n const isUnderTop = top < pageYOffset;\n const isUnderBottom = pageYOffset + windowHeight < top + widgetRect.height;\n\n if (isUnderTop) {\n top = pageYOffset + this.defaultMargin;\n }\n\n if (isUnderBottom) {\n top = pageYOffset + windowHeight - widgetRect.height - this.defaultMargin;\n }\n\n const left = pageXOffset + triggerRect.left + triggerRect.width;\n\n this.alignWidgetElement(left, top);\n arrow.style.top = `${triggerRect.top + Math.floor(triggerRect.height / 2) - top}px`;\n\n const rightMargin = windowWidth - this.widget.getBoundingClientRect().right;\n const isUnderRight = rightMargin < this.defaultMargin;\n if (isUnderRight) {\n const newWidth = this.widget.getBoundingClientRect().width + rightMargin - this.defaultMargin;\n this.widget.style.width = `${newWidth}px`;\n }\n }\n\n private alignWidgetLeft() {\n const triggerRect = this.trigger.getBoundingClientRect();\n const widgetRect = this.widget.getBoundingClientRect();\n if (!document.documentElement) {\n return;\n }\n const windowHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n const arrow: HTMLElement = this.widget.querySelector('.pw-inbox__arrow') || document.createElement('div');\n\n this.widget.classList.add('pw-left');\n\n let top = pageYOffset + triggerRect.top + Math.floor(triggerRect.height / 2) - Math.floor(widgetRect.height / 2);\n\n const isUnderTop = top < pageYOffset;\n const isUnderBottom = pageYOffset + windowHeight < top + widgetRect.height;\n\n if (isUnderTop) {\n top = pageYOffset + this.defaultMargin;\n }\n\n if (isUnderBottom) {\n top = pageYOffset + windowHeight - widgetRect.height - this.defaultMargin;\n }\n\n const left = pageXOffset + triggerRect.left - widgetRect.width;\n\n this.alignWidgetElement(left, top);\n arrow.style.top = `${triggerRect.top + Math.floor(triggerRect.height / 2) - top}px`;\n\n const leftMargin = this.widget.getBoundingClientRect().left;\n const isUnderLeft = leftMargin < 0;\n if (isUnderLeft) {\n const newWidth = this.widget.getBoundingClientRect().width + leftMargin - this.defaultMargin;\n const newLeft = this.widget.getBoundingClientRect().left - leftMargin;\n this.widget.style.width = `${newWidth}px`;\n this.widget.style.left = `${newLeft}px`;\n }\n }\n\n private alignWidgetBottom() {\n const triggerRect = this.trigger.getBoundingClientRect();\n const widgetRect = this.widget.getBoundingClientRect();\n if (!document.documentElement) {\n return;\n }\n const windowWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n const windowHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n const arrow: HTMLElement = this.widget.querySelector('.pw-inbox__arrow') || document.createElement('div');\n\n this.widget.classList.add('pw-bottom');\n\n let left = pageXOffset + triggerRect.left + Math.floor(triggerRect.width / 2) - Math.floor(widgetRect.width / 2);\n\n const isUnderLeft = left < pageXOffset;\n const isUnderRight = left + widgetRect.width > pageXOffset + windowWidth;\n\n if (isUnderLeft) {\n left = pageXOffset + this.defaultMargin;\n }\n if (isUnderRight) {\n left = pageXOffset + windowWidth - widgetRect.width - 12;\n }\n\n const top = pageYOffset + triggerRect.top + triggerRect.height;\n\n this.alignWidgetElement(left, top);\n arrow.style.left = `${triggerRect.left + Math.floor(triggerRect.width / 2) - left}px`;\n\n const bottomRange = windowHeight - this.widget.getBoundingClientRect().bottom;\n const isUnderBottom = bottomRange < this.defaultMargin;\n if (isUnderBottom) {\n const newHeight = this.widget.getBoundingClientRect().height + bottomRange - this.defaultMargin;\n this.widget.style.height = `${newHeight}px`;\n }\n }\n\n private alignWidgetElement(left: number, top: number) {\n this.widget.style.left = `${left}px`;\n this.widget.style.top = `${top}px`;\n }\n\n private getDefaultPosition(): string {\n const { left, top, width, height } = this.trigger.getBoundingClientRect();\n if (!document.documentElement) {\n return '';\n }\n const windowWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n const windowHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n\n const antiMargins: { [key: string]: number } = {\n right: left,\n bottom: top,\n left: windowWidth - (left + width),\n top: windowHeight - (top + height),\n };\n\n const leastMargin = Math.min(left, top, antiMargins.left, antiMargins.top);\n\n let position = 'bottom';\n\n Object.keys(antiMargins).forEach((key) => {\n if (antiMargins[key] === leastMargin) {\n position = key;\n }\n });\n\n return position;\n }\n\n private addListeners() {\n this.trigger.addEventListener('click', this.onTriggerClickHandler);\n\n this.pw.push(['onPutNewMessageToInboxStore', () => {\n this.updateInbox();\n }]);\n this.pw.push(['onUpdateInboxMessages', () => {\n this.updateInbox();\n }]);\n }\n\n private markVisibleItemsAsRead() {\n if (this.messages.length === 0) {\n return;\n }\n const scrollTop = (this.list.clientHeight + this.list.scrollTop) - 50;\n Object.keys(this.messagesElements).forEach((code: string) => {\n // check message exists and user saw the message in viewport\n if (!this.messagesElements[code] || this.messagesElements[code].offsetTop > scrollTop) {\n return;\n }\n\n const message = this.messages.find((message: IInboxMessagePublic): boolean => message.code === code);\n\n // mark messages as read\n if (!!message && !message.isRead && !(this.readItems.indexOf(code) + 1)) {\n this.readItems.push(code);\n }\n });\n }\n\n private updateReadStatus() {\n this.pw.pwinbox.readMessagesWithCodes(this.readItems).then(this.updateInbox);\n }\n\n private updateInbox() {\n this.pw.pwinbox.loadMessages().then((messages: Array<IInboxMessagePublic>) => {\n this.updateInboxMessages(messages);\n });\n this.pw.pwinbox.unreadMessagesCount().then((count: number) => {\n this.updateCounter(count);\n });\n }\n\n private performMessageAction(code: string) {\n this.pw.pwinbox.performActionForMessageWithCode(code)\n .then(() => {\n this.updateInbox();\n });\n }\n\n private removeMessages(messages: Array<string>) {\n messages.forEach((code: string) => {\n this.readItems = this.readItems.slice(this.readItems.indexOf(code), 1);\n });\n this.pw.pwinbox.deleteMessagesWithCodes(messages)\n .then(() => {\n this.updateInbox();\n });\n }\n\n // handlers\n\n private onTriggerClickHandler(event: MouseEvent) {\n event.stopPropagation();\n if (!event.target) {\n return;\n }\n\n this.toggle();\n }\n\n private onWidgetClickHandler(event: MouseEvent) {\n if (!event.target) {\n return;\n }\n\n const itemElement = (<HTMLElement>event.target).closest('.pw-inbox_item');\n\n if (!itemElement) {\n this.toggle();\n return;\n }\n\n const messageCode = itemElement.getAttribute('data-pw-inbox-message-id');\n\n if (!messageCode) {\n return;\n }\n\n const removeIconClick = (<HTMLElement>event.target).closest('.pw-inbox_item-remove');\n\n if (removeIconClick) {\n this.removeMessages([messageCode]);\n return;\n }\n\n this.performMessageAction(messageCode);\n }\n\n private onWindowScrollHandler() {\n if (this.isFixed && this.isOpened) {\n this.toggle();\n return;\n }\n this.positionWidget();\n }\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","MONTHS","CONFIG_STYLES","name","type","DEFAULT_CONFIG","enable","triggerId","position","appendTo","title","bgColor","textColor","fontFamily","borderRadius","borderColor","badgeBgColor","badgeTextColor","widgetWidth","zIndex","messageTitleColor","timeTextColor","emptyInboxTitle","emptyInboxTitleColor","emptyInboxText","emptyInboxTextColor","emptyInboxIconUrl","arrowBorderColor","COLOR_TEST_REGEXP","isElementFixed","element","isFixed","window","getComputedStyle","parentElement","messageTemplate","imageUrl","message","sendDate","date","localDate","Date","localTime","getHours","getTimezoneOffset","setHours","gap","getTime","Math","floor","getDate","getMonth","getFullYear","getMinutes","toString","slice","getMessageTime","PWInboxWidget","constructor","pw","inboxWidgetConfig","initParams","inboxWidget","config","updateInbox","bind","markVisibleItemsAsRead","onWidgetClickHandler","onTriggerClickHandler","onWindowScrollHandler","toggle","run","initTrigger","addListeners","isOpened","openWidget","closeWidget","pwinbox","Error","trigger","document","getElementById","classList","add","defaultMargin","messagesElements","messages","readItems","updateCounter","renderWidget","widget","createElement","id","className","widgetParent","querySelector","body","appendChild","getStyle","renderWidgetInner","styleNode","innerHTML","configureStyle","styles","resultStyles","forEach","style","template","RegExp","result","getStyleFormatter","replace","parseFloat","color","test","length","remove","renderMessages","widgetTemplateEmpty","list","messageElement","isRead","isActionPerformed","setAttribute","code","count","updateInboxMessages","sort","sendDateOne","sendDateTwo","dateOne","dateTwo","localDateOne","localTimeOne","localDateTwo","localTimeTwo","compareBySendDate","addEventListener","positionWidget","removeEventListener","updateReadStatus","removeAttribute","defaultPlaceWidget","customPlaceWidget","getDefaultPosition","widgetRect","getBoundingClientRect","documentElement","windowWidth","max","clientWidth","innerWidth","windowHeight","clientHeight","innerHeight","width","height","alignWidgetTop","alignWidgetRight","alignWidgetLeft","alignWidgetBottom","triggerRect","arrow","left","pageXOffset","isUnderLeft","isUnderRight","top","pageYOffset","alignWidgetElement","topMargin","newHeight","newTop","isUnderTop","isUnderBottom","rightMargin","right","newWidth","leftMargin","newLeft","bottomRange","bottom","antiMargins","leastMargin","min","keys","push","scrollTop","offsetTop","find","indexOf","readMessagesWithCodes","then","loadMessages","unreadMessagesCount","performMessageAction","performActionForMessageWithCode","removeMessages","deleteMessagesWithCodes","event","stopPropagation","target","itemElement","closest","messageCode","getAttribute"],"sourceRoot":""}
1
+ {"version":3,"file":"widget-inbox.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/Inbox/constants.ts","webpack://web-push-notifications/./src/widgets/Inbox/helpers.ts","webpack://web-push-notifications/./src/widgets/Inbox/widgetTemplates.ts","webpack://web-push-notifications/./src/widgets/Inbox/InboxWidget.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};","import { type IConfigStyles, type IInboxWidgetConfig } from './inbox_widget.types';\n\nexport const MILLISECONDS_IN_DAY = 60 * 60 * 24 * 1000;\nexport const MILLISECONDS_IN_HOUR = 60 * 60 * 1000;\nexport const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];\n\nexport const CONFIG_STYLES: Array<IConfigStyles> = [\n { name: 'widgetWidth', type: 'size' },\n { name: 'borderRadius', type: 'size' },\n { name: 'zIndex', type: 'number' },\n { name: 'fontFamily', type: 'string' },\n { name: 'bgColor', type: 'color' },\n { name: 'textColor', type: 'color' },\n { name: 'arrowBorderColor', type: 'color' },\n { name: 'borderColor', type: 'color' },\n { name: 'badgeBgColor', type: 'color' },\n { name: 'badgeTextColor', type: 'color' },\n { name: 'timeTextColor', type: 'color' },\n { name: 'messageTitleColor', type: 'color' },\n { name: 'emptyInboxTitleColor', type: 'color' },\n { name: 'emptyInboxTextColor', type: 'color' },\n];\n\nexport const DEFAULT_CONFIG: IInboxWidgetConfig = {\n enable: false,\n triggerId: 'pwInbox',\n position: 'bottom',\n appendTo: 'body',\n title: 'Inbox',\n bgColor: '#ffffff',\n textColor: '#333333',\n fontFamily: 'inherit',\n borderRadius: 4,\n borderColor: 'transparent',\n badgeBgColor: '#ff4c00',\n badgeTextColor: '#ffffff',\n widgetWidth: 350,\n zIndex: 100,\n messageTitleColor: '#7a7a7a',\n timeTextColor: '#c4c4c4',\n emptyInboxTitle: 'You\\'re all caught up',\n emptyInboxTitleColor: '#333333',\n emptyInboxText: 'There are no new messages. Stay tuned!',\n emptyInboxTextColor: '#7a7a7a',\n emptyInboxIconUrl: 'https://pushon.pushwoosh.com/static/icon-empty-inbox.png',\n arrowBorderColor: 'rgba(0,0,0,.1)',\n};\n\nexport const COLOR_TEST_REGEXP = /^(#([\\da-f]{3}){1,2}$|(rgb|hsl)a\\((\\d{1,3}%?,\\s?){3}(1|0?\\.\\d+)\\)$|(rgb|hsl)\\(\\d{1,3}%?(,\\s?\\d{1,3}%?){2}\\)$)/;\n","import {\n MILLISECONDS_IN_HOUR,\n MILLISECONDS_IN_DAY,\n MONTHS,\n COLOR_TEST_REGEXP,\n} from './constants';\n\nexport function isElementFixed(element: HTMLElement): boolean {\n let isFixed = window.getComputedStyle(element).position === 'fixed';\n if (!isFixed && element.parentElement) {\n isFixed = isElementFixed(element.parentElement);\n }\n return isFixed;\n}\n\nexport function getMessageTime(date: string): string {\n const localDate = new Date(date);\n const localTime = localDate.getHours() + (localDate.getTimezoneOffset() / 60);\n localDate.setHours(localTime);\n const now = new Date();\n\n const gap = (now.getTime() - localDate.getTime());\n\n if (gap <= 60 * 1000) {\n return `Just now`;\n } else if (gap < MILLISECONDS_IN_HOUR && gap > 0) {\n const minutesAgo = Math.floor(gap / (60 * 1000));\n return `${minutesAgo} minutes ago`;\n } else if (gap < MILLISECONDS_IN_DAY && gap > 0) {\n const hoursAgo = Math.floor(gap / (60 * 60 * 1000));\n return `${hoursAgo} hours ago`;\n }\n\n const day = localDate.getDate();\n const month = MONTHS[localDate.getMonth()];\n const year = localDate.getFullYear();\n const hours = localDate.getHours();\n const minutes = `0${localDate.getMinutes().toString()}`.slice(-2); // padStart(2, 0)\n\n return `${day} ${month} ${year}, ${hours}:${minutes}`;\n}\n\nexport function getValidColor(color: string): string {\n if (color === 'transparent') {\n return color;\n }\n\n return COLOR_TEST_REGEXP.test(color)\n ? color\n : '#333';\n}\n\nexport function compareBySendDate(dateOne: string, dateTwo: string): number {\n const localDateOne = new Date(dateOne);\n const localTimeOne = localDateOne.getHours() + (localDateOne.getTimezoneOffset() / 60);\n const localDateTwo = new Date(dateTwo);\n const localTimeTwo = localDateTwo.getHours() + (localDateTwo.getTimezoneOffset() / 60);\n\n localDateOne.setHours(localTimeOne);\n localDateTwo.setHours(localTimeTwo);\n\n return localDateTwo.getTime() - localDateOne.getTime();\n}\n","import { getMessageTime } from './helpers';\nimport { type IInboxMessagePublic } from '../../models/InboxMessages.types';\n\nexport const widgetTemplate = (title: string): string => `\n<div class=\"pw-inbox__arrow\"></div>\n<div class=\"pw-inbox_inner\">\n <div class=\"pw-inbox_title\">\n ${title}\n </div>\n <ul class=\"pw-inbox_list\">\n\n </ul>\n</div>`;\n\nexport const widgetTemplateEmpty = (\n emptyInboxIconUrl: string,\n emptyInboxTitle: string,\n emptyInboxText: string,\n) => `\n<div class=\"pw-inbox__arrow\"></div>\n<div class=\"pw-inbox_list--empty\">\n <div class=\"pw-inbox_list-icon\">\n <img src=\"${emptyInboxIconUrl}\" alt=\"${emptyInboxTitle}\">\n </div>\n <div class=\"pw-inbox_list-title\">\n ${emptyInboxTitle}\n </div>\n <div class=\"ipw-inbox_list-body\">\n ${emptyInboxText}\n </div>\n</div>`;\n\nexport const messageTemplate = ({\n imageUrl,\n title,\n message,\n sendDate,\n}: IInboxMessagePublic) => `\n<div class=\"pw-inbox_item-inner\">\n <div class=\"pw-inbox_icon\">\n <img src=\"${imageUrl}\" alt=\"${title || message}\" class=\"pw-inbox_message-image\">\n </div>\n <div class=\"pw-inbox_content\">\n ${title ? `<div class=\"pw-inbox_item-title\">\n ${title}\n </div>` : null}\n <div class=\"pw-inbox_item-body\">\n ${message}\n </div>\n <div class=\"pw-inbox_item-time\">\n ${getMessageTime(sendDate)}\n </div>\n </div>\n</div>\n<span class=\"pw-inbox_item-remove\"></span>`;\n","import {\n CONFIG_STYLES,\n DEFAULT_CONFIG,\n} from './constants';\nimport inboxWidgetStyleCss from './css/inboxWidgetStyle.css';\nimport {\n getValidColor,\n isElementFixed,\n compareBySendDate,\n} from './helpers';\nimport { type IConfigStyles, type IInboxWidgetConfig, type TMessagesElementsType } from './inbox_widget.types';\nimport {\n messageTemplate,\n widgetTemplate,\n widgetTemplateEmpty,\n} from './widgetTemplates';\nimport { type Pushwoosh } from '../../core/Pushwoosh';\nimport { type IInboxMessagePublic } from '../../models/InboxMessages.types';\n\nexport class PWInboxWidget {\n pw: Pushwoosh;\n widget: HTMLElement;\n trigger: HTMLElement;\n list: HTMLElement;\n widgetParent: HTMLElement;\n count: number;\n messages: Array<IInboxMessagePublic>;\n messagesElements: TMessagesElementsType;\n readItems: Array<string>;\n isOpened: boolean;\n config: IInboxWidgetConfig;\n defaultMargin: number;\n isFixed: boolean;\n\n constructor(pw: Pushwoosh) {\n // Set Pushwoosh object\n this.pw = pw;\n\n const inboxWidgetConfig = this.pw.initParams.inboxWidget!;\n\n this.config = {\n ...DEFAULT_CONFIG,\n arrowBorderColor: inboxWidgetConfig.borderColor && inboxWidgetConfig.borderColor !== 'transparent'\n ? inboxWidgetConfig.borderColor\n : 'rgba(0,0,0,.1)',\n ...this.pw.initParams.inboxWidget,\n };\n\n this.updateInbox = this.updateInbox.bind(this);\n this.markVisibleItemsAsRead = this.markVisibleItemsAsRead.bind(this);\n this.onWidgetClickHandler = this.onWidgetClickHandler.bind(this);\n this.onTriggerClickHandler = this.onTriggerClickHandler.bind(this);\n this.onWindowScrollHandler = this.onWindowScrollHandler.bind(this);\n this.toggle = this.toggle.bind(this);\n }\n\n public async run() {\n this.initTrigger();\n this.updateInbox();\n this.addListeners();\n }\n\n public toggle(isOpened?: boolean) {\n const openWidget = typeof isOpened === 'undefined'\n ? !this.isOpened\n : isOpened;\n\n if (openWidget) {\n this.openWidget();\n } else {\n this.closeWidget();\n }\n }\n\n // set inbox widget to trigger element on page\n private initTrigger() {\n if (!this.pw.pwinbox) {\n throw new Error('Web inbox is not allowed.');\n }\n\n const trigger = document.getElementById(this.config.triggerId);\n\n if (!trigger) {\n throw new Error('Inbox trigger element doesn\\'t exist. You must set triggerId in inboxWidget config. See the documentation.');\n }\n\n this.trigger = trigger;\n this.trigger.classList.add('pw-inbox-trigger');\n\n this.defaultMargin = 12;\n this.messagesElements = {};\n this.messages = [];\n this.readItems = [];\n this.updateCounter(0);\n this.isOpened = false;\n\n this.renderWidget();\n\n this.isFixed = isElementFixed(this.trigger);\n }\n\n private renderWidget() {\n this.widget = document.createElement('div');\n this.widget.id = 'pwInboxWidget';\n this.widget.className = 'pw-inbox-widget';\n this.widget.classList.toggle('pw-open', this.isOpened);\n\n this.widgetParent = document.querySelector(this.config.appendTo) || document.body;\n\n this.widgetParent.appendChild(this.widget);\n this.widgetParent.appendChild(this.getStyle());\n this.renderWidgetInner();\n }\n\n private getStyle(): HTMLStyleElement {\n const styleNode = document.createElement('style');\n styleNode.innerHTML = this.configureStyle(inboxWidgetStyleCss);\n return styleNode;\n }\n\n private configureStyle(styles: string): string {\n let resultStyles = styles.toString();\n CONFIG_STYLES.forEach((style: IConfigStyles) => {\n const template = new RegExp(`var\\\\(--${style.name}\\\\)`, 'ig');\n const result = this.getStyleFormatter(style);\n\n resultStyles = resultStyles.replace(template, result);\n });\n return resultStyles;\n }\n\n private getStyleFormatter(style: IConfigStyles): string {\n switch (style.type) {\n case 'size':\n return `${this.config[style.name] || 0}px`;\n case 'number':\n return parseFloat(this.config[style.name].toString()).toString();\n case 'string':\n return this.config[style.name].toString();\n case 'color':\n return getValidColor(this.config[style.name].toString());\n default:\n return 'none';\n }\n }\n\n private renderWidgetInner() {\n if (this.messages.length > 0) {\n this.widget.classList.remove('pw-inbox-widget--empty');\n this.widget.innerHTML = widgetTemplate(this.config.title);\n this.renderMessages();\n } else {\n this.widget.classList.add('pw-inbox-widget--empty');\n const {\n emptyInboxTitle,\n emptyInboxText,\n emptyInboxIconUrl,\n } = this.config;\n this.widget.innerHTML = widgetTemplateEmpty(emptyInboxIconUrl, emptyInboxTitle, emptyInboxText);\n }\n }\n\n private renderMessages() {\n this.list = this.widget.querySelector('.pw-inbox_list') || document.createElement('ul');\n this.messages.forEach((message: IInboxMessagePublic) => {\n const messageElement = document.createElement('li');\n messageElement.className = 'pw-inbox_item';\n messageElement.classList.toggle('pw-new', !message.isRead);\n messageElement.classList.toggle('pw-unread', !message.isActionPerformed);\n messageElement.setAttribute('data-pw-inbox-message-id', message.code);\n messageElement.innerHTML = messageTemplate(message);\n\n this.list.appendChild(messageElement);\n this.messagesElements[message.code] = messageElement;\n });\n }\n\n private updateCounter(count: number) {\n this.count = count;\n this.trigger.setAttribute('data-pw-count', `${this.count}`);\n this.trigger.classList.toggle('pw-empty', this.count === 0);\n }\n\n private updateInboxMessages(messages: Array<IInboxMessagePublic>) {\n this.messages = messages.sort(({ sendDate: sendDateOne }, { sendDate: sendDateTwo }) => compareBySendDate(sendDateOne, sendDateTwo));\n this.renderWidgetInner();\n }\n\n openWidget() {\n this.isOpened = true;\n this.widget.classList.add('pw-open');\n document.addEventListener('click', this.onWidgetClickHandler);\n window.addEventListener('scroll', this.onWindowScrollHandler);\n window.addEventListener('resize', this.onWindowScrollHandler);\n this.markVisibleItemsAsRead();\n if (this.messages.length > 0) {\n this.list.addEventListener('scroll', this.markVisibleItemsAsRead);\n }\n this.positionWidget();\n }\n\n closeWidget() {\n this.isOpened = false;\n document.removeEventListener('click', this.onWidgetClickHandler);\n document.removeEventListener('click', this.onWindowScrollHandler);\n window.removeEventListener('resize', this.onWindowScrollHandler);\n this.updateReadStatus();\n if (this.messages.length > 0) {\n this.list.removeEventListener('scroll', this.markVisibleItemsAsRead);\n }\n this.widget.classList.remove('pw-open', 'pw-top', 'pw-bottom', 'pw-right', 'pw-left');\n this.widget.removeAttribute('style');\n }\n\n private positionWidget() {\n if (!this.isOpened) {\n return;\n }\n if (this.widgetParent === document.body) {\n this.defaultPlaceWidget();\n } else {\n this.customPlaceWidget();\n }\n }\n\n private customPlaceWidget() {\n const { position } = this.config;\n this.widgetParent.style.position = 'relative';\n this.widget.classList.add('pw-inbox-widget--inset');\n this.widget.classList.add(`pw-${position}`);\n }\n\n private defaultPlaceWidget() {\n const position = this.pw.initParams.inboxWidget!.position ? this.config.position : this.getDefaultPosition();\n\n const widgetRect = this.widget.getBoundingClientRect();\n if (!document.documentElement) {\n return;\n }\n const windowWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n const windowHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n\n if (widgetRect.width + (this.defaultMargin * 2) > windowWidth) {\n this.widget.style.width = `${windowWidth - (this.defaultMargin * 2)}px`;\n }\n if (widgetRect.height + 24 > windowHeight) {\n this.widget.style.height = `${windowHeight - (this.defaultMargin * 2)}px`;\n }\n\n switch (position) {\n case 'top': {\n this.alignWidgetTop();\n break;\n }\n case 'right': {\n this.alignWidgetRight();\n break;\n }\n case 'left': {\n this.alignWidgetLeft();\n break;\n }\n case 'bottom': {\n this.alignWidgetBottom();\n break;\n }\n }\n }\n\n private alignWidgetTop() {\n const triggerRect = this.trigger.getBoundingClientRect();\n const widgetRect = this.widget.getBoundingClientRect();\n if (!document.documentElement) {\n return;\n }\n const windowWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n const arrow: HTMLElement = this.widget.querySelector('.pw-inbox__arrow') || document.createElement('div');\n\n this.widget.classList.add('pw-top');\n\n let left = pageXOffset + triggerRect.left + Math.floor(triggerRect.width / 2) - Math.floor(widgetRect.width / 2);\n\n const isUnderLeft = left < pageXOffset;\n const isUnderRight = left + widgetRect.width > pageXOffset + windowWidth;\n\n if (isUnderLeft) {\n left = pageXOffset + this.defaultMargin;\n }\n if (isUnderRight) {\n left = pageXOffset + windowWidth - widgetRect.width - this.defaultMargin;\n }\n\n const top = pageYOffset + triggerRect.top - widgetRect.height;\n\n this.alignWidgetElement(left, top);\n arrow.style.left = `${triggerRect.left + Math.floor(triggerRect.width / 2) - left}px`;\n\n const topMargin = this.widget.getBoundingClientRect().top;\n const isUnderTop = topMargin < 0;\n if (isUnderTop) {\n const newHeight = this.widget.getBoundingClientRect().height + topMargin - this.defaultMargin;\n const newTop = this.widget.getBoundingClientRect().top - topMargin + this.defaultMargin;\n this.widget.style.height = `${newHeight}px`;\n this.widget.style.top = `${newTop}px`;\n }\n }\n\n private alignWidgetRight() {\n const triggerRect = this.trigger.getBoundingClientRect();\n const widgetRect = this.widget.getBoundingClientRect();\n if (!document.documentElement) {\n return;\n }\n const windowWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n const windowHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n const arrow: HTMLElement = this.widget.querySelector('.pw-inbox__arrow') || document.createElement('div');\n\n this.widget.classList.add('pw-right');\n\n let top = pageYOffset + triggerRect.top + Math.floor(triggerRect.height / 2) - Math.floor(widgetRect.height / 2);\n\n const isUnderTop = top < pageYOffset;\n const isUnderBottom = pageYOffset + windowHeight < top + widgetRect.height;\n\n if (isUnderTop) {\n top = pageYOffset + this.defaultMargin;\n }\n\n if (isUnderBottom) {\n top = pageYOffset + windowHeight - widgetRect.height - this.defaultMargin;\n }\n\n const left = pageXOffset + triggerRect.left + triggerRect.width;\n\n this.alignWidgetElement(left, top);\n arrow.style.top = `${triggerRect.top + Math.floor(triggerRect.height / 2) - top}px`;\n\n const rightMargin = windowWidth - this.widget.getBoundingClientRect().right;\n const isUnderRight = rightMargin < this.defaultMargin;\n if (isUnderRight) {\n const newWidth = this.widget.getBoundingClientRect().width + rightMargin - this.defaultMargin;\n this.widget.style.width = `${newWidth}px`;\n }\n }\n\n private alignWidgetLeft() {\n const triggerRect = this.trigger.getBoundingClientRect();\n const widgetRect = this.widget.getBoundingClientRect();\n if (!document.documentElement) {\n return;\n }\n const windowHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n const arrow: HTMLElement = this.widget.querySelector('.pw-inbox__arrow') || document.createElement('div');\n\n this.widget.classList.add('pw-left');\n\n let top = pageYOffset + triggerRect.top + Math.floor(triggerRect.height / 2) - Math.floor(widgetRect.height / 2);\n\n const isUnderTop = top < pageYOffset;\n const isUnderBottom = pageYOffset + windowHeight < top + widgetRect.height;\n\n if (isUnderTop) {\n top = pageYOffset + this.defaultMargin;\n }\n\n if (isUnderBottom) {\n top = pageYOffset + windowHeight - widgetRect.height - this.defaultMargin;\n }\n\n const left = pageXOffset + triggerRect.left - widgetRect.width;\n\n this.alignWidgetElement(left, top);\n arrow.style.top = `${triggerRect.top + Math.floor(triggerRect.height / 2) - top}px`;\n\n const leftMargin = this.widget.getBoundingClientRect().left;\n const isUnderLeft = leftMargin < 0;\n if (isUnderLeft) {\n const newWidth = this.widget.getBoundingClientRect().width + leftMargin - this.defaultMargin;\n const newLeft = this.widget.getBoundingClientRect().left - leftMargin;\n this.widget.style.width = `${newWidth}px`;\n this.widget.style.left = `${newLeft}px`;\n }\n }\n\n private alignWidgetBottom() {\n const triggerRect = this.trigger.getBoundingClientRect();\n const widgetRect = this.widget.getBoundingClientRect();\n if (!document.documentElement) {\n return;\n }\n const windowWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n const windowHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n const arrow: HTMLElement = this.widget.querySelector('.pw-inbox__arrow') || document.createElement('div');\n\n this.widget.classList.add('pw-bottom');\n\n let left = pageXOffset + triggerRect.left + Math.floor(triggerRect.width / 2) - Math.floor(widgetRect.width / 2);\n\n const isUnderLeft = left < pageXOffset;\n const isUnderRight = left + widgetRect.width > pageXOffset + windowWidth;\n\n if (isUnderLeft) {\n left = pageXOffset + this.defaultMargin;\n }\n if (isUnderRight) {\n left = pageXOffset + windowWidth - widgetRect.width - 12;\n }\n\n const top = pageYOffset + triggerRect.top + triggerRect.height;\n\n this.alignWidgetElement(left, top);\n arrow.style.left = `${triggerRect.left + Math.floor(triggerRect.width / 2) - left}px`;\n\n const bottomRange = windowHeight - this.widget.getBoundingClientRect().bottom;\n const isUnderBottom = bottomRange < this.defaultMargin;\n if (isUnderBottom) {\n const newHeight = this.widget.getBoundingClientRect().height + bottomRange - this.defaultMargin;\n this.widget.style.height = `${newHeight}px`;\n }\n }\n\n private alignWidgetElement(left: number, top: number) {\n this.widget.style.left = `${left}px`;\n this.widget.style.top = `${top}px`;\n }\n\n private getDefaultPosition(): string {\n const { left, top, width, height } = this.trigger.getBoundingClientRect();\n if (!document.documentElement) {\n return '';\n }\n const windowWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n const windowHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n\n const antiMargins: { [key: string]: number } = {\n right: left,\n bottom: top,\n left: windowWidth - (left + width),\n top: windowHeight - (top + height),\n };\n\n const leastMargin = Math.min(left, top, antiMargins.left, antiMargins.top);\n\n let position = 'bottom';\n\n Object.keys(antiMargins).forEach((key) => {\n if (antiMargins[key] === leastMargin) {\n position = key;\n }\n });\n\n return position;\n }\n\n private addListeners() {\n this.trigger.addEventListener('click', this.onTriggerClickHandler);\n\n this.pw.push(['onPutNewMessageToInboxStore', () => {\n this.updateInbox();\n }]);\n this.pw.push(['onUpdateInboxMessages', () => {\n this.updateInbox();\n }]);\n }\n\n private markVisibleItemsAsRead() {\n if (this.messages.length === 0) {\n return;\n }\n const scrollTop = (this.list.clientHeight + this.list.scrollTop) - 50;\n Object.keys(this.messagesElements).forEach((code: string) => {\n // check message exists and user saw the message in viewport\n if (!this.messagesElements[code] || this.messagesElements[code].offsetTop > scrollTop) {\n return;\n }\n\n const message = this.messages.find((message: IInboxMessagePublic): boolean => message.code === code);\n\n // mark messages as read\n if (!!message && !message.isRead && !(this.readItems.indexOf(code) + 1)) {\n this.readItems.push(code);\n }\n });\n }\n\n private updateReadStatus() {\n this.pw.pwinbox.readMessagesWithCodes(this.readItems).then(this.updateInbox);\n }\n\n private updateInbox() {\n this.pw.pwinbox.loadMessages().then((messages: Array<IInboxMessagePublic>) => {\n this.updateInboxMessages(messages);\n });\n this.pw.pwinbox.unreadMessagesCount().then((count: number) => {\n this.updateCounter(count);\n });\n }\n\n private performMessageAction(code: string) {\n this.pw.pwinbox.performActionForMessageWithCode(code)\n .then(() => {\n this.updateInbox();\n });\n }\n\n private removeMessages(messages: Array<string>) {\n messages.forEach((code: string) => {\n this.readItems = this.readItems.slice(this.readItems.indexOf(code), 1);\n });\n this.pw.pwinbox.deleteMessagesWithCodes(messages)\n .then(() => {\n this.updateInbox();\n });\n }\n\n // handlers\n\n private onTriggerClickHandler(event: MouseEvent) {\n event.stopPropagation();\n if (!event.target) {\n return;\n }\n\n this.toggle();\n }\n\n private onWidgetClickHandler(event: MouseEvent) {\n if (!event.target) {\n return;\n }\n\n const itemElement = (<HTMLElement>event.target).closest('.pw-inbox_item');\n\n if (!itemElement) {\n this.toggle();\n return;\n }\n\n const messageCode = itemElement.getAttribute('data-pw-inbox-message-id');\n\n if (!messageCode) {\n return;\n }\n\n const removeIconClick = (<HTMLElement>event.target).closest('.pw-inbox_item-remove');\n\n if (removeIconClick) {\n this.removeMessages([messageCode]);\n return;\n }\n\n this.performMessageAction(messageCode);\n }\n\n private onWindowScrollHandler() {\n if (this.isFixed && this.isOpened) {\n this.toggle();\n return;\n }\n this.positionWidget();\n }\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","MONTHS","CONFIG_STYLES","name","type","DEFAULT_CONFIG","enable","triggerId","position","appendTo","title","bgColor","textColor","fontFamily","borderRadius","borderColor","badgeBgColor","badgeTextColor","widgetWidth","zIndex","messageTitleColor","timeTextColor","emptyInboxTitle","emptyInboxTitleColor","emptyInboxText","emptyInboxTextColor","emptyInboxIconUrl","arrowBorderColor","COLOR_TEST_REGEXP","isElementFixed","element","isFixed","window","getComputedStyle","parentElement","messageTemplate","imageUrl","message","sendDate","date","localDate","Date","localTime","getHours","getTimezoneOffset","setHours","gap","getTime","Math","floor","getDate","getMonth","getFullYear","getMinutes","toString","slice","getMessageTime","PWInboxWidget","constructor","pw","inboxWidgetConfig","initParams","inboxWidget","config","updateInbox","bind","markVisibleItemsAsRead","onWidgetClickHandler","onTriggerClickHandler","onWindowScrollHandler","toggle","run","initTrigger","addListeners","isOpened","openWidget","closeWidget","pwinbox","Error","trigger","document","getElementById","classList","add","defaultMargin","messagesElements","messages","readItems","updateCounter","renderWidget","widget","createElement","id","className","widgetParent","querySelector","body","appendChild","getStyle","renderWidgetInner","styleNode","innerHTML","configureStyle","styles","resultStyles","forEach","style","template","RegExp","result","getStyleFormatter","replace","parseFloat","color","test","length","remove","renderMessages","widgetTemplateEmpty","list","messageElement","isRead","isActionPerformed","setAttribute","code","count","updateInboxMessages","sort","sendDateOne","sendDateTwo","dateOne","dateTwo","localDateOne","localTimeOne","localDateTwo","localTimeTwo","compareBySendDate","addEventListener","positionWidget","removeEventListener","updateReadStatus","removeAttribute","defaultPlaceWidget","customPlaceWidget","getDefaultPosition","widgetRect","getBoundingClientRect","documentElement","windowWidth","max","clientWidth","innerWidth","windowHeight","clientHeight","innerHeight","width","height","alignWidgetTop","alignWidgetRight","alignWidgetLeft","alignWidgetBottom","triggerRect","arrow","left","pageXOffset","isUnderLeft","isUnderRight","top","pageYOffset","alignWidgetElement","topMargin","newHeight","newTop","isUnderTop","isUnderBottom","rightMargin","right","newWidth","leftMargin","newLeft","bottomRange","bottom","antiMargins","leastMargin","min","keys","push","scrollTop","offsetTop","find","indexOf","readMessagesWithCodes","then","loadMessages","unreadMessagesCount","performMessageAction","performActionForMessageWithCode","removeMessages","deleteMessagesWithCodes","event","stopPropagation","target","itemElement","closest","messageCode","getAttribute"],"ignoreList":[],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"widget-subscribe-popup.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/SubscribePopup/constants.ts","webpack://web-push-notifications/./src/widgets/SubscribePopup/SubscribePopup.ts","webpack://web-push-notifications/./src/widgets/SubscribePopup/popupTemplates.ts","webpack://web-push-notifications/./src/widgets/SubscribePopup/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};","import { type ISubscribePopupConfig, type ISubscribePopupConfigStyles } from './types/subscribe-popup';\n\nexport const DEFAULT_CONFIG: ISubscribePopupConfig = {\n enable: true,\n text: 'Don’t miss out on our news and updates! Enable push notifications',\n askLaterButtonText: 'Not now',\n confirmSubscriptionButtonText: 'Subscribe',\n delay: 5,\n retryOffset: 60 * 60 * 24 * 7,\n overlay: false,\n position: 'top',\n mobileViewMargin: '0',\n\n bgColor: '#fff',\n borderColor: 'transparent',\n boxShadow: '0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23)',\n\n textColor: '#000',\n textSize: 'inherit',\n textWeight: 'normal',\n fontFamily: 'inherit',\n\n subscribeBtnBgColor: '#4285f4',\n subscribeBtnTextColor: '#fff',\n subscribeBtnTextWeight: 'normal',\n subscribeBtnBorderColor: 'transparent',\n subscribeBtnBorderRadius: '2px',\n\n askLaterBtnBgColor: 'transparent',\n askLaterBtnTextColor: '#000',\n askLaterBtnTextWeight: 'normal',\n askLaterBtnBorderColor: 'transparent',\n askLaterBtnBorderRadius: '2px',\n\n theme: 'material',\n viewport: 'html',\n};\n\nexport const COLOR_TEST_REGEXP = /^(#([\\da-f]{3}){1,2}$|(rgb|hsl)a\\((\\d{1,3}%?,\\s?){3}(1|0?\\.\\d+)\\)$|(rgb|hsl)\\(\\d{1,3}%?(,\\s?\\d{1,3}%?){2}\\)$)/i;\n\n// Permissions\nexport const PERMISSION_DENIED = 'denied';\nexport const PERMISSION_GRANTED = 'granted';\n\nexport const CONFIG_STYLES: Array<ISubscribePopupConfigStyles> = [\n { name: 'mobileViewMargin', type: 'string' },\n { name: 'mobileViewPosition', type: 'string' },\n { name: 'mobileViewTransition', type: 'string' },\n { name: 'bgColor', type: 'color' },\n { name: 'borderColor', type: 'color' },\n { name: 'boxShadow', type: 'string' },\n { name: 'textColor', type: 'color' },\n { name: 'textSize', type: 'string' },\n { name: 'textWeight', type: 'string' },\n { name: 'fontFamily', type: 'string' },\n { name: 'subscribeBtnBgColor', type: 'color' },\n { name: 'subscribeBtnTextColor', type: 'color' },\n { name: 'subscribeBtnTextWeight', type: 'string' },\n { name: 'subscribeBtnBorderColor', type: 'color' },\n { name: 'subscribeBtnBorderRadius', type: 'string' },\n { name: 'askLaterBtnBgColor', type: 'color' },\n { name: 'askLaterBtnTextColor', type: 'color' },\n { name: 'askLaterBtnTextWeight', type: 'string' },\n { name: 'askLaterBtnBorderColor', type: 'color' },\n { name: 'askLaterBtnBorderRadius', type: 'string' },\n];\n","import {\n DEFAULT_CONFIG,\n CONFIG_STYLES,\n\n PERMISSION_DENIED,\n PERMISSION_GRANTED,\n} from './constants';\nimport { getValidColor } from './helpers';\nimport { innerTemplate } from './popupTemplates';\nimport popupCss from './styles/popup.css';\nimport {\n type ISubscribePopupConfig,\n type ISubscribePopupConfigStyles,\n type ISubscribePopupVariables,\n} from './types/subscribe-popup';\nimport { type Pushwoosh } from '../../core/Pushwoosh';\n\nexport class PWSubscribePopupWidget {\n pw: Pushwoosh;\n config: ISubscribePopupVariables;\n popup: HTMLElement;\n isShown: boolean;\n\n constructor(pw: Pushwoosh) {\n this.pw = pw;\n\n const { mobileViewMargin = '' } = pw.initParams.subscribePopup || ({} as ISubscribePopupConfig);\n\n this.config = {\n ...DEFAULT_CONFIG,\n ...pw.initParams.subscribePopup,\n mobileViewTransition: mobileViewMargin ? 'none' : 'bottom .4s ease-out',\n mobileViewPosition: mobileViewMargin ? 'auto!important' : 'auto',\n };\n\n this.onAskLaterClick = this.onAskLaterClick.bind(this);\n this.onSubscribeClick = this.onSubscribeClick.bind(this);\n }\n\n async run() {\n const { manualToggle } = this.config;\n const [isSubscribed, isManualUnsubscribed] = await Promise.all([\n this.pw.isSubscribed(),\n this.pw.data.getStatusManualUnsubscribed(),\n ]);\n if (isSubscribed || (!manualToggle && isManualUnsubscribed)) {\n return;\n }\n\n const permission = this.pw.driver.getPermission();\n if (permission === PERMISSION_GRANTED || permission === PERMISSION_DENIED) {\n return;\n }\n\n this.renderPopup();\n this.appendStyles();\n\n this.pw.moduleRegistry.subscribePopup = this;\n this.pw.dispatchEvent('subscribe-popup-ready', {});\n\n if (manualToggle) {\n return;\n }\n\n const lastPopupOpen = localStorage.getItem('LAST_OPEN_SUBSCRIPTION_POPUP');\n const lastPopupOpenTime = lastPopupOpen ? parseInt(lastPopupOpen) : 0;\n const now = new Date().getTime();\n\n if (lastPopupOpenTime + (this.config.retryOffset * 1000) < now) {\n setTimeout(() => {\n this.toggle(true);\n }, this.config.delay * 1000);\n }\n }\n\n toggle(isShown?: boolean) {\n const isPopupShown = typeof isShown === 'undefined' ? !this.isShown : !!isShown;\n if (isPopupShown !== this.isShown) {\n if (isPopupShown) {\n this.show();\n } else {\n this.hide();\n }\n }\n }\n\n async show() {\n if (await this.pw.isSubscribed()) {\n return;\n }\n this.isShown = true;\n this.popup.classList.add('pw-show');\n document.body.classList.add('pw-popup-opened');\n\n const event = new CustomEvent('showPopup', {\n bubbles: false,\n cancelable: false,\n detail: {\n popup: this.popup,\n },\n });\n this.popup.dispatchEvent(event);\n\n const screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n if (screenWidth < 541) {\n // mobile screen doesn't support themes\n return;\n }\n const {\n theme,\n viewport,\n position,\n } = this.config;\n if (theme === 'topbar' && position === 'top') {\n const viewportElement: HTMLElement = document.querySelector(viewport) || document.createElement('div');\n const currentMarginTop = window.getComputedStyle(viewportElement).marginTop || '0';\n viewportElement.style.transition = 'margin-top .3s ease-out';\n viewportElement.style.marginTop = `${parseInt(currentMarginTop) + this.popup.getBoundingClientRect().height}px`;\n }\n\n this.pw.dispatchEvent('subscribe-popup-show', {});\n }\n\n hide() {\n this.isShown = false;\n this.popup.classList.remove('pw-show');\n document.body.classList.remove('pw-popup-opened');\n\n const event = new CustomEvent('hidePopup', {\n bubbles: false,\n cancelable: false,\n detail: {\n popup: this.popup,\n },\n });\n this.popup.dispatchEvent(event);\n\n const now = new Date().getTime().toString();\n\n localStorage.setItem('LAST_OPEN_SUBSCRIPTION_POPUP', now);\n\n const screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n if (screenWidth < 541) {\n // mobile screen doesn't support themes\n return;\n }\n const {\n theme,\n viewport,\n position,\n } = this.config;\n if (theme === 'topbar' && position === 'top') {\n const viewportElement: HTMLElement = document.querySelector(viewport) || document.createElement('div');\n const currentMarginTop = window.getComputedStyle(viewportElement).marginTop || '0';\n viewportElement.style.marginTop = `${parseInt(currentMarginTop) - this.popup.getBoundingClientRect().height}px`;\n }\n\n this.pw.dispatchEvent('subscribe-popup-hide', {});\n }\n\n renderPopup() {\n this.popup = document.createElement('div');\n this.popup.id = 'pwSubscribePopup';\n const {\n text,\n askLaterButtonText,\n confirmSubscriptionButtonText,\n iconUrl,\n iconAlt,\n position,\n overlay,\n theme,\n } = this.config;\n this.popup.className = `pw-subscribe-popup pw-position-${position} pw-subscribe-popup-${theme}`;\n this.popup.classList.toggle('pw-subscribe-popup__overlay', overlay);\n this.popup.innerHTML = innerTemplate({\n text,\n askLaterButtonText,\n confirmSubscriptionButtonText,\n iconUrl,\n iconAlt,\n });\n document.body.appendChild(this.popup);\n this.addListeners();\n }\n\n appendStyles() {\n const style = document.createElement('style');\n style.innerHTML = this.configureStyle(popupCss);\n document.body.appendChild(style);\n }\n\n private getStyleFormatter(style: ISubscribePopupConfigStyles): string {\n switch (style.type) {\n case 'size':\n return `${this.config[style.name] || 0}px`;\n case 'number':\n return parseFloat(this.config[style.name].toString()).toString();\n case 'string':\n return this.config[style.name].toString();\n case 'color':\n return getValidColor(this.config[style.name].toString());\n default:\n return 'none';\n }\n }\n\n configureStyle(styles: string): string {\n let resultStyles = styles.toString();\n\n CONFIG_STYLES.forEach((style: ISubscribePopupConfigStyles) => {\n const template = new RegExp(`var\\\\(--${style.name}\\\\)`, 'ig');\n const result = this.getStyleFormatter(style);\n\n resultStyles = resultStyles.replace(template, result);\n });\n\n return resultStyles;\n }\n\n addListeners() {\n const askLaterButton = this.popup.querySelector('button[name=\"pwAskLater\"]')\n || document.createElement('button');\n const subscribeButton = this.popup.querySelector('button[name=\"pwSubscribe\"]')\n || document.createElement('button');\n\n askLaterButton.addEventListener('click', this.onAskLaterClick);\n subscribeButton.addEventListener('click', this.onSubscribeClick);\n }\n\n onAskLaterClick() {\n this.toggle(false);\n this.pw.dispatchEvent('subscribe-popup-decline', {});\n }\n\n onSubscribeClick() {\n this.toggle(false);\n this.pw.dispatchEvent('subscribe-popup-accept', {});\n this.pw.subscribe();\n }\n}\n","interface IInnerTemplate {\n iconUrl?: string;\n iconAlt?: string;\n text: string;\n askLaterButtonText: string;\n confirmSubscriptionButtonText: string;\n}\n\nexport const innerTemplate = ({ iconUrl, iconAlt, text, askLaterButtonText, confirmSubscriptionButtonText }: IInnerTemplate): string => {\n return `<div class=\"pw-subscription-popup-inner\">\n <div class=\"pw-subscription-popup-content\">\n ${iconUrl\n ? `<div class=\"pw-subscription-popup-icon\"><img src=\"${iconUrl}\" alt=\"${iconAlt || 'Subscribe'}\"></div>`\n : ''}\n <div class=\"pw-subscription-popup-text\">\n ${text}\n </div>\n </div>\n <div class=\"pw-subscription-popup-controls\">\n <button name=\"pwAskLater\" class=\"pw-subscribe-popup-button\">${askLaterButtonText}</button>\n <button name=\"pwSubscribe\" class=\"pw-subscribe-popup-button pw-subscribe-popup-button-active\">${confirmSubscriptionButtonText}</button>\n </div>\n </div>`;\n};\n","import { COLOR_TEST_REGEXP } from './constants';\n\nexport function getValidColor(color: string): string {\n if (color === 'transparent') {\n return color;\n }\n\n return COLOR_TEST_REGEXP.test(color)\n ? color\n : '#333';\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","DEFAULT_CONFIG","enable","text","askLaterButtonText","confirmSubscriptionButtonText","delay","retryOffset","overlay","position","mobileViewMargin","bgColor","borderColor","boxShadow","textColor","textSize","textWeight","fontFamily","subscribeBtnBgColor","subscribeBtnTextColor","subscribeBtnTextWeight","subscribeBtnBorderColor","subscribeBtnBorderRadius","askLaterBtnBgColor","askLaterBtnTextColor","askLaterBtnTextWeight","askLaterBtnBorderColor","askLaterBtnBorderRadius","theme","viewport","COLOR_TEST_REGEXP","CONFIG_STYLES","name","type","PWSubscribePopupWidget","constructor","pw","initParams","subscribePopup","config","mobileViewTransition","mobileViewPosition","onAskLaterClick","bind","onSubscribeClick","run","manualToggle","isSubscribed","isManualUnsubscribed","Promise","all","data","getStatusManualUnsubscribed","permission","driver","getPermission","renderPopup","appendStyles","moduleRegistry","dispatchEvent","lastPopupOpen","localStorage","getItem","lastPopupOpenTime","parseInt","now","Date","getTime","setTimeout","toggle","isShown","isPopupShown","show","hide","popup","classList","add","document","body","event","CustomEvent","bubbles","cancelable","detail","Math","max","documentElement","clientWidth","window","innerWidth","viewportElement","querySelector","createElement","currentMarginTop","getComputedStyle","marginTop","style","transition","getBoundingClientRect","height","remove","toString","setItem","id","iconUrl","iconAlt","className","innerHTML","innerTemplate","appendChild","addListeners","configureStyle","getStyleFormatter","parseFloat","color","test","styles","resultStyles","forEach","template","RegExp","result","replace","askLaterButton","subscribeButton","addEventListener","subscribe"],"sourceRoot":""}
1
+ {"version":3,"file":"widget-subscribe-popup.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/SubscribePopup/constants.ts","webpack://web-push-notifications/./src/widgets/SubscribePopup/SubscribePopup.ts","webpack://web-push-notifications/./src/widgets/SubscribePopup/popupTemplates.ts","webpack://web-push-notifications/./src/widgets/SubscribePopup/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};","import { type ISubscribePopupConfig, type ISubscribePopupConfigStyles } from './types/subscribe-popup';\n\nexport const DEFAULT_CONFIG: ISubscribePopupConfig = {\n enable: true,\n text: 'Don’t miss out on our news and updates! Enable push notifications',\n askLaterButtonText: 'Not now',\n confirmSubscriptionButtonText: 'Subscribe',\n delay: 5,\n retryOffset: 60 * 60 * 24 * 7,\n overlay: false,\n position: 'top',\n mobileViewMargin: '0',\n\n bgColor: '#fff',\n borderColor: 'transparent',\n boxShadow: '0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23)',\n\n textColor: '#000',\n textSize: 'inherit',\n textWeight: 'normal',\n fontFamily: 'inherit',\n\n subscribeBtnBgColor: '#4285f4',\n subscribeBtnTextColor: '#fff',\n subscribeBtnTextWeight: 'normal',\n subscribeBtnBorderColor: 'transparent',\n subscribeBtnBorderRadius: '2px',\n\n askLaterBtnBgColor: 'transparent',\n askLaterBtnTextColor: '#000',\n askLaterBtnTextWeight: 'normal',\n askLaterBtnBorderColor: 'transparent',\n askLaterBtnBorderRadius: '2px',\n\n theme: 'material',\n viewport: 'html',\n};\n\nexport const COLOR_TEST_REGEXP = /^(#([\\da-f]{3}){1,2}$|(rgb|hsl)a\\((\\d{1,3}%?,\\s?){3}(1|0?\\.\\d+)\\)$|(rgb|hsl)\\(\\d{1,3}%?(,\\s?\\d{1,3}%?){2}\\)$)/i;\n\n// Permissions\nexport const PERMISSION_DENIED = 'denied';\nexport const PERMISSION_GRANTED = 'granted';\n\nexport const CONFIG_STYLES: Array<ISubscribePopupConfigStyles> = [\n { name: 'mobileViewMargin', type: 'string' },\n { name: 'mobileViewPosition', type: 'string' },\n { name: 'mobileViewTransition', type: 'string' },\n { name: 'bgColor', type: 'color' },\n { name: 'borderColor', type: 'color' },\n { name: 'boxShadow', type: 'string' },\n { name: 'textColor', type: 'color' },\n { name: 'textSize', type: 'string' },\n { name: 'textWeight', type: 'string' },\n { name: 'fontFamily', type: 'string' },\n { name: 'subscribeBtnBgColor', type: 'color' },\n { name: 'subscribeBtnTextColor', type: 'color' },\n { name: 'subscribeBtnTextWeight', type: 'string' },\n { name: 'subscribeBtnBorderColor', type: 'color' },\n { name: 'subscribeBtnBorderRadius', type: 'string' },\n { name: 'askLaterBtnBgColor', type: 'color' },\n { name: 'askLaterBtnTextColor', type: 'color' },\n { name: 'askLaterBtnTextWeight', type: 'string' },\n { name: 'askLaterBtnBorderColor', type: 'color' },\n { name: 'askLaterBtnBorderRadius', type: 'string' },\n];\n","import {\n DEFAULT_CONFIG,\n CONFIG_STYLES,\n\n PERMISSION_DENIED,\n PERMISSION_GRANTED,\n} from './constants';\nimport { getValidColor } from './helpers';\nimport { innerTemplate } from './popupTemplates';\nimport popupCss from './styles/popup.css';\nimport {\n type ISubscribePopupConfig,\n type ISubscribePopupConfigStyles,\n type ISubscribePopupVariables,\n} from './types/subscribe-popup';\nimport { type Pushwoosh } from '../../core/Pushwoosh';\n\nexport class PWSubscribePopupWidget {\n pw: Pushwoosh;\n config: ISubscribePopupVariables;\n popup: HTMLElement;\n isShown: boolean;\n\n constructor(pw: Pushwoosh) {\n this.pw = pw;\n\n const { mobileViewMargin = '' } = pw.initParams.subscribePopup || ({} as ISubscribePopupConfig);\n\n this.config = {\n ...DEFAULT_CONFIG,\n ...pw.initParams.subscribePopup,\n mobileViewTransition: mobileViewMargin ? 'none' : 'bottom .4s ease-out',\n mobileViewPosition: mobileViewMargin ? 'auto!important' : 'auto',\n };\n\n this.onAskLaterClick = this.onAskLaterClick.bind(this);\n this.onSubscribeClick = this.onSubscribeClick.bind(this);\n }\n\n async run() {\n const { manualToggle } = this.config;\n const [isSubscribed, isManualUnsubscribed] = await Promise.all([\n this.pw.isSubscribed(),\n this.pw.data.getStatusManualUnsubscribed(),\n ]);\n if (isSubscribed || (!manualToggle && isManualUnsubscribed)) {\n return;\n }\n\n const permission = this.pw.driver.getPermission();\n if (permission === PERMISSION_GRANTED || permission === PERMISSION_DENIED) {\n return;\n }\n\n this.renderPopup();\n this.appendStyles();\n\n this.pw.moduleRegistry.subscribePopup = this;\n this.pw.dispatchEvent('subscribe-popup-ready', {});\n\n if (manualToggle) {\n return;\n }\n\n const lastPopupOpen = localStorage.getItem('LAST_OPEN_SUBSCRIPTION_POPUP');\n const lastPopupOpenTime = lastPopupOpen ? parseInt(lastPopupOpen) : 0;\n const now = new Date().getTime();\n\n if (lastPopupOpenTime + (this.config.retryOffset * 1000) < now) {\n setTimeout(() => {\n this.toggle(true);\n }, this.config.delay * 1000);\n }\n }\n\n toggle(isShown?: boolean) {\n const isPopupShown = typeof isShown === 'undefined' ? !this.isShown : !!isShown;\n if (isPopupShown !== this.isShown) {\n if (isPopupShown) {\n this.show();\n } else {\n this.hide();\n }\n }\n }\n\n async show() {\n if (await this.pw.isSubscribed()) {\n return;\n }\n this.isShown = true;\n this.popup.classList.add('pw-show');\n document.body.classList.add('pw-popup-opened');\n\n const event = new CustomEvent('showPopup', {\n bubbles: false,\n cancelable: false,\n detail: {\n popup: this.popup,\n },\n });\n this.popup.dispatchEvent(event);\n\n const screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n if (screenWidth < 541) {\n // mobile screen doesn't support themes\n return;\n }\n const {\n theme,\n viewport,\n position,\n } = this.config;\n if (theme === 'topbar' && position === 'top') {\n const viewportElement: HTMLElement = document.querySelector(viewport) || document.createElement('div');\n const currentMarginTop = window.getComputedStyle(viewportElement).marginTop || '0';\n viewportElement.style.transition = 'margin-top .3s ease-out';\n viewportElement.style.marginTop = `${parseInt(currentMarginTop) + this.popup.getBoundingClientRect().height}px`;\n }\n\n this.pw.dispatchEvent('subscribe-popup-show', {});\n }\n\n hide() {\n this.isShown = false;\n this.popup.classList.remove('pw-show');\n document.body.classList.remove('pw-popup-opened');\n\n const event = new CustomEvent('hidePopup', {\n bubbles: false,\n cancelable: false,\n detail: {\n popup: this.popup,\n },\n });\n this.popup.dispatchEvent(event);\n\n const now = new Date().getTime().toString();\n\n localStorage.setItem('LAST_OPEN_SUBSCRIPTION_POPUP', now);\n\n const screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n if (screenWidth < 541) {\n // mobile screen doesn't support themes\n return;\n }\n const {\n theme,\n viewport,\n position,\n } = this.config;\n if (theme === 'topbar' && position === 'top') {\n const viewportElement: HTMLElement = document.querySelector(viewport) || document.createElement('div');\n const currentMarginTop = window.getComputedStyle(viewportElement).marginTop || '0';\n viewportElement.style.marginTop = `${parseInt(currentMarginTop) - this.popup.getBoundingClientRect().height}px`;\n }\n\n this.pw.dispatchEvent('subscribe-popup-hide', {});\n }\n\n renderPopup() {\n this.popup = document.createElement('div');\n this.popup.id = 'pwSubscribePopup';\n const {\n text,\n askLaterButtonText,\n confirmSubscriptionButtonText,\n iconUrl,\n iconAlt,\n position,\n overlay,\n theme,\n } = this.config;\n this.popup.className = `pw-subscribe-popup pw-position-${position} pw-subscribe-popup-${theme}`;\n this.popup.classList.toggle('pw-subscribe-popup__overlay', overlay);\n this.popup.innerHTML = innerTemplate({\n text,\n askLaterButtonText,\n confirmSubscriptionButtonText,\n iconUrl,\n iconAlt,\n });\n document.body.appendChild(this.popup);\n this.addListeners();\n }\n\n appendStyles() {\n const style = document.createElement('style');\n style.innerHTML = this.configureStyle(popupCss);\n document.body.appendChild(style);\n }\n\n private getStyleFormatter(style: ISubscribePopupConfigStyles): string {\n switch (style.type) {\n case 'size':\n return `${this.config[style.name] || 0}px`;\n case 'number':\n return parseFloat(this.config[style.name].toString()).toString();\n case 'string':\n return this.config[style.name].toString();\n case 'color':\n return getValidColor(this.config[style.name].toString());\n default:\n return 'none';\n }\n }\n\n configureStyle(styles: string): string {\n let resultStyles = styles.toString();\n\n CONFIG_STYLES.forEach((style: ISubscribePopupConfigStyles) => {\n const template = new RegExp(`var\\\\(--${style.name}\\\\)`, 'ig');\n const result = this.getStyleFormatter(style);\n\n resultStyles = resultStyles.replace(template, result);\n });\n\n return resultStyles;\n }\n\n addListeners() {\n const askLaterButton = this.popup.querySelector('button[name=\"pwAskLater\"]')\n || document.createElement('button');\n const subscribeButton = this.popup.querySelector('button[name=\"pwSubscribe\"]')\n || document.createElement('button');\n\n askLaterButton.addEventListener('click', this.onAskLaterClick);\n subscribeButton.addEventListener('click', this.onSubscribeClick);\n }\n\n onAskLaterClick() {\n this.toggle(false);\n this.pw.dispatchEvent('subscribe-popup-decline', {});\n }\n\n onSubscribeClick() {\n this.toggle(false);\n this.pw.dispatchEvent('subscribe-popup-accept', {});\n this.pw.subscribe();\n }\n}\n","interface IInnerTemplate {\n iconUrl?: string;\n iconAlt?: string;\n text: string;\n askLaterButtonText: string;\n confirmSubscriptionButtonText: string;\n}\n\nexport const innerTemplate = ({ iconUrl, iconAlt, text, askLaterButtonText, confirmSubscriptionButtonText }: IInnerTemplate): string => {\n return `<div class=\"pw-subscription-popup-inner\">\n <div class=\"pw-subscription-popup-content\">\n ${iconUrl\n ? `<div class=\"pw-subscription-popup-icon\"><img src=\"${iconUrl}\" alt=\"${iconAlt || 'Subscribe'}\"></div>`\n : ''}\n <div class=\"pw-subscription-popup-text\">\n ${text}\n </div>\n </div>\n <div class=\"pw-subscription-popup-controls\">\n <button name=\"pwAskLater\" class=\"pw-subscribe-popup-button\">${askLaterButtonText}</button>\n <button name=\"pwSubscribe\" class=\"pw-subscribe-popup-button pw-subscribe-popup-button-active\">${confirmSubscriptionButtonText}</button>\n </div>\n </div>`;\n};\n","import { COLOR_TEST_REGEXP } from './constants';\n\nexport function getValidColor(color: string): string {\n if (color === 'transparent') {\n return color;\n }\n\n return COLOR_TEST_REGEXP.test(color)\n ? color\n : '#333';\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","DEFAULT_CONFIG","enable","text","askLaterButtonText","confirmSubscriptionButtonText","delay","retryOffset","overlay","position","mobileViewMargin","bgColor","borderColor","boxShadow","textColor","textSize","textWeight","fontFamily","subscribeBtnBgColor","subscribeBtnTextColor","subscribeBtnTextWeight","subscribeBtnBorderColor","subscribeBtnBorderRadius","askLaterBtnBgColor","askLaterBtnTextColor","askLaterBtnTextWeight","askLaterBtnBorderColor","askLaterBtnBorderRadius","theme","viewport","COLOR_TEST_REGEXP","CONFIG_STYLES","name","type","PWSubscribePopupWidget","constructor","pw","initParams","subscribePopup","config","mobileViewTransition","mobileViewPosition","onAskLaterClick","bind","onSubscribeClick","run","manualToggle","isSubscribed","isManualUnsubscribed","Promise","all","data","getStatusManualUnsubscribed","permission","driver","getPermission","renderPopup","appendStyles","moduleRegistry","dispatchEvent","lastPopupOpen","localStorage","getItem","lastPopupOpenTime","parseInt","now","Date","getTime","setTimeout","toggle","isShown","isPopupShown","show","hide","popup","classList","add","document","body","event","CustomEvent","bubbles","cancelable","detail","Math","max","documentElement","clientWidth","window","innerWidth","viewportElement","querySelector","createElement","currentMarginTop","getComputedStyle","marginTop","style","transition","getBoundingClientRect","height","remove","toString","setItem","id","iconUrl","iconAlt","className","innerHTML","innerTemplate","appendChild","addListeners","configureStyle","getStyleFormatter","parseFloat","color","test","styles","resultStyles","forEach","template","RegExp","result","replace","askLaterButton","subscribeButton","addEventListener","subscribe"],"ignoreList":[],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"widget-subscription-button.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/core/constants.ts","webpack://web-push-notifications/./src/widgets/SubscriptionButton/constants.ts","webpack://web-push-notifications/./src/widgets/SubscriptionButton/positioning.ts","webpack://web-push-notifications/./src/widgets/SubscriptionButton/index.ts","webpack://web-push-notifications/./src/widgets/SubscriptionButton/bell.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 DEFAULT_SERVICE_WORKER_URL = '/pushwoosh-service-worker.js';\nexport const DEFAULT_API_URL = 'https://cp.pushwoosh.com/json/1.3/';\n\nexport const PERIOD_SEND_APP_OPEN = 3600000;\nexport const PERIOD_GOAL_EVENT = 86400000;\n\nexport const DEFAULT_NOTIFICATION_TITLE = 'Pushwoosh notification';\nexport const DEFAULT_NOTIFICATION_IMAGE = 'https://cp.pushwoosh.com/img/logo-medium.png';\n\n// Keys\nexport const KEY_SHOW_SUBSCRIBE_WIDGET = 'WIDGET_SHOWED';\nexport const KEY_CLICK_SUBSCRIBE_WIDGET = 'WIDGET_CLICKED';\n\n// Local storage keys\nexport const KEY_DEVICE_REGISTRATION_STATUS: string = 'deviceRegistrationStatus';\nexport const KEY_SAFARI_PREVIOUS_PERMISSION = 'safariPreviousPermission';\nexport const MANUAL_SET_LOGGER_LEVEL = 'PW_SET_LOGGER_LEVEL';\n\n// Device registration status\nexport const DEVICE_REGISTRATION_STATUS_REGISTERED: string = 'registered';\nexport const DEVICE_REGISTRATION_STATUS_UNREGISTERED: string = 'unregistered';\n\n// Permissions\nexport const PERMISSION_DENIED = 'denied';\nexport const PERMISSION_GRANTED = 'granted';\nexport const PERMISSION_PROMPT = 'default';\n\n// Events\nexport const LEGACY_EVENT_ON_LOAD = 'onLoad';\nexport const LEGACY_EVENT_ON_READY = 'onReady';\nexport const LEGACY_EVENT_ON_SUBSCRIBE = 'onSubscribe';\nexport const LEGACY_EVENT_ON_UNSUBSCRIBE = 'onUnsubscribe';\nexport const LEGACY_EVENT_ON_REGISTER = 'onRegister';\nexport const LEGACY_EVENT_ON_PERMISSION_PROMPT = 'onPermissionPrompt';\nexport const LEGACY_EVENT_ON_PERMISSION_DENIED = 'onPermissionDenied';\nexport const LEGACY_EVENT_ON_PERMISSION_GRANTED = 'onPermissionGranted';\nexport const LEGACY_EVENT_ON_SW_INIT_ERROR = 'onSWInitError';\nexport const LEGACY_EVENT_ON_PUSH_DELIVERY = 'onPushDelivery';\nexport const LEGACY_EVENT_ON_NOTIFICATION_CLICK = 'onNotificationClick';\nexport const LEGACY_EVENT_ON_NOTIFICATION_CLOSE = 'onNotificationClose';\nexport const LEGACY_EVENT_ON_CHANGE_COMMUNICATION_ENABLED = 'onChangeCommunicationEnabled';\nexport const LEGACY_EVENT_ON_PUT_NEW_MESSAGE_TO_INBOX_STORE = 'onPutNewMessageToInboxStore';\nexport const LEGACY_EVENT_ON_UPDATE_INBOX_MESSAGES = 'onUpdateInboxMessages';\nexport const LEGACY_EVENT_ON_SHOW_NOTIFICATION_PERMISSION_DIALOG = 'onShowNotificationPermissionDialog';\nexport const LEGACY_EVENT_ON_HIDE_NOTIFICATION_PERMISSION_DIALOG = 'onHideNotificationPermissionDialog';\n\nexport const LEGACY_EVENT_ON_SHOW_SUBSCRIPTION_WIDGET = 'onShowSubscriptionWidget';\nexport const LEGACY_EVENT_ON_HIDE_SUBSCRIPTION_WIDGET = 'onHideSubscriptionWidget';\n\n// Post Events\nexport const EVENT_SHOW_SUBSCRIBE_BUTTON = 'showSubscribeButton';\nexport const EVENT_CLICK_SUBSCRIBE_BUTTON = 'clickSubscribeButton';\nexport const EVENT_GDPR_CONSENT = 'GDPRConsent';\nexport const EVENT_GDPR_DELETE = 'GDPRDelete';\nexport const EVENT_PW_SITE_OPENED = 'PW_SiteOpened'; // for default events\n\n// Page visited\nexport const PAGE_VISITED_URL = 'PAGE_VISITED_URL';\n","// Bell\nimport { type TBellConfig } from './subscribe_widget.types';\n\nexport const BELL_POSITION_BOTTOM_RIGHT = 'bottomRight';\nexport const BELL_POSITION_BOTTOM_LEFT = 'bottomLeft';\nexport const BELL_POSITION_TOP_RIGHT = 'topRight';\nexport const BELL_POSITION_TOP_LEFT = 'topLeft';\n\n// Common\nexport const WIDGET_CONTAINER_ID = 'pushwooshBellWidget';\n\nexport const SUBSCRIBE_WIDGET_DEFAULT_CONFIG: TBellConfig = {\n position: BELL_POSITION_BOTTOM_LEFT,\n bgColor: '#12AE7E',\n bellColor: 'white',\n bellStrokeColor: '#08754f',\n bellButtonBorder: '1px solid #379676',\n shadow: '0px 0px 6px rgba(0, 0, 0, 0.75)',\n size: '48px',\n indent: '20px',\n zIndex: '999999',\n tooltipText: {\n successSubscribe: 'You are successfully subscribed!',\n needSubscribe: 'Get notifications about important news!',\n blockSubscribe: 'Click to see how to get notifications',\n alreadySubscribed: 'You are already subscribed',\n },\n};\n","import {\n BELL_POSITION_TOP_RIGHT,\n BELL_POSITION_TOP_LEFT,\n BELL_POSITION_BOTTOM_LEFT,\n BELL_POSITION_BOTTOM_RIGHT,\n} from './constants';\nimport { type TBellPosition, type TPositionStyles } from './subscribe_widget.types';\n\nexport default class Positioning {\n public static getBellPosition(position: TBellPosition, indent: string): TPositionStyles {\n let positionStyles: TPositionStyles;\n\n switch (position) {\n case BELL_POSITION_BOTTOM_RIGHT:\n positionStyles = {\n top: 'auto',\n left: 'auto',\n bottom: indent,\n right: indent,\n };\n break;\n case BELL_POSITION_BOTTOM_LEFT:\n positionStyles = {\n top: 'auto',\n left: indent,\n bottom: indent,\n right: 'auto',\n };\n break;\n case BELL_POSITION_TOP_LEFT:\n positionStyles = {\n top: indent,\n left: indent,\n bottom: 'auto',\n right: 'auto',\n };\n break;\n case BELL_POSITION_TOP_RIGHT:\n positionStyles = {\n top: indent,\n left: 'auto',\n bottom: 'auto',\n right: indent,\n };\n break;\n default:\n positionStyles = {\n top: 'auto',\n left: 'auto',\n bottom: indent,\n right: indent,\n };\n }\n\n return positionStyles;\n }\n\n public static getTooltipPosition(bellPosition: TBellPosition, bellSize: string): [{ left: string } | { right: string }, string] {\n let positionStyles;\n let tooltipModification;\n const increaseIndent = (parseInt(bellSize) + 12) + 'px';\n\n switch (bellPosition) {\n case BELL_POSITION_BOTTOM_RIGHT:\n positionStyles = { right: increaseIndent };\n tooltipModification = 'right';\n break;\n case BELL_POSITION_BOTTOM_LEFT:\n positionStyles = { left: increaseIndent };\n tooltipModification = 'left';\n break;\n case BELL_POSITION_TOP_LEFT:\n positionStyles = { left: increaseIndent };\n tooltipModification = 'left';\n break;\n case BELL_POSITION_TOP_RIGHT:\n positionStyles = { right: increaseIndent };\n tooltipModification = 'right';\n break;\n default:\n positionStyles = { right: increaseIndent };\n tooltipModification = 'right';\n }\n\n return [positionStyles, tooltipModification];\n }\n\n public static getPopoverPosition(bellPosition: TBellPosition, bellSize: string): [TPositionStyles, string] {\n let positionStyles;\n let popoverModification;\n const increaseIndent = (parseInt(bellSize) + 15) + 'px';\n\n switch (bellPosition) {\n case BELL_POSITION_BOTTOM_RIGHT:\n positionStyles = {\n bottom: increaseIndent,\n right: '0',\n left: 'auto',\n top: 'auto',\n };\n popoverModification = 'bottom';\n break;\n case BELL_POSITION_BOTTOM_LEFT:\n positionStyles = {\n bottom: increaseIndent,\n left: '0',\n right: 'auto',\n top: 'auto',\n };\n popoverModification = 'bottom';\n break;\n case BELL_POSITION_TOP_LEFT:\n positionStyles = {\n top: increaseIndent,\n left: '0',\n right: 'auto',\n bottom: 'auto',\n };\n popoverModification = 'top';\n break;\n case BELL_POSITION_TOP_RIGHT:\n positionStyles = {\n top: increaseIndent,\n right: '0',\n left: 'auto',\n bottom: 'auto',\n };\n popoverModification = 'top';\n break;\n default:\n positionStyles = {\n bottom: increaseIndent,\n right: '0',\n left: 'auto',\n top: 'auto',\n };\n popoverModification = 'bottom';\n }\n\n return [positionStyles, popoverModification];\n }\n\n public static getPopoverArrowPosition(bellPosition: TBellPosition, bellSize: string) {\n let arrowAdditionalStyles;\n\n switch (bellPosition) {\n case BELL_POSITION_BOTTOM_RIGHT:\n arrowAdditionalStyles = `\\n.pushwoosh-subscribe-widget__popover__bottom:after {left: auto; right: ${(parseInt(bellSize) / 2 - 4) + 'px'}`;\n break;\n case BELL_POSITION_BOTTOM_LEFT:\n arrowAdditionalStyles = `\\n.pushwoosh-subscribe-widget__popover__bottom:after {right: auto; left: ${(parseInt(bellSize) / 2 - 12) + 'px'}`;\n break;\n case BELL_POSITION_TOP_LEFT:\n arrowAdditionalStyles = `\\n.pushwoosh-subscribe-widget__popover__top:after {right: auto; left: ${(parseInt(bellSize) / 2 - 12) + 'px'}`;\n break;\n case BELL_POSITION_TOP_RIGHT:\n arrowAdditionalStyles = `\\n.pushwoosh-subscribe-widget__popover__top:after {left: auto; right: ${(parseInt(bellSize) / 2 - 4) + 'px'}`;\n break;\n default:\n arrowAdditionalStyles = `\\n.pushwoosh-subscribe-widget__popover__bottom:after {left: auto; right: ${(parseInt(bellSize) / 2 - 4) + 'px'}`;\n }\n\n return arrowAdditionalStyles;\n }\n}\n","import {\n PERMISSION_GRANTED,\n PERMISSION_DENIED,\n PERMISSION_PROMPT,\n} from '../../core/constants';\nimport mainCss from './assets/css/main.css';\nimport bellSVG from './bell';\nimport {\n SUBSCRIBE_WIDGET_DEFAULT_CONFIG,\n WIDGET_CONTAINER_ID,\n} from './constants';\nimport Positioning from './positioning';\nimport { type TBellConfig, type TCSSStylesObject, type TStyleKeys } from './subscribe_widget.types';\nimport { type Pushwoosh } from '../../core/Pushwoosh';\nimport {\n type TPlatformChrome,\n type TPlatformEdge,\n type TPlatformFirefox,\n type TPlatformSafari,\n} from '../../modules/PlatformChecker/PlatformChecker.types';\n\nexport class PWSubscriptionButtonWidget {\n widget: HTMLElement;\n tooltip: HTMLElement;\n popover: HTMLElement;\n style: HTMLElement;\n pw: Pushwoosh;\n config: TBellConfig;\n\n constructor(pw: Pushwoosh) {\n // Set Pushwoosh object\n this.pw = pw;\n if (!pw.platformChecker.isAvailableNotifications) {\n console.warn('Browser does not support push notifications');\n return;\n }\n\n // Bindings\n this.clickBell = this.clickBell.bind(this);\n this.onSubscribeEvent = this.onSubscribeEvent.bind(this);\n this.onUnsubscribeEvent = this.onUnsubscribeEvent.bind(this);\n this.onPermissionDeniedEvent = this.onPermissionDeniedEvent.bind(this);\n this.clickOutOfPopover = this.clickOutOfPopover.bind(this);\n\n // Config\n const tooltipText = Object.assign(SUBSCRIBE_WIDGET_DEFAULT_CONFIG.tooltipText, pw.initParams.subscribeWidget!.tooltipText);\n this.config = Object.assign({}, SUBSCRIBE_WIDGET_DEFAULT_CONFIG, pw.initParams.subscribeWidget);\n this.config.tooltipText = tooltipText;\n }\n\n public async run() {\n const isSubscribed = await this.pw.isSubscribed();\n if (!isSubscribed) {\n await this.render();\n }\n }\n\n /**\n * Apply styles to element\n * @param styles\n * @param {HTMLElement} element\n */\n private addStylesToElement(styles: TCSSStylesObject, element: HTMLElement) {\n Object.keys(styles).forEach((st: TStyleKeys) => {\n element.style[st] = styles[st];\n });\n }\n\n /**\n * Create container element\n * @returns {HTMLElement}\n */\n private createContainer(): HTMLElement {\n const container = document.createElement('div');\n container.id = WIDGET_CONTAINER_ID;\n container.className = 'pushwoosh-subscribe-widget';\n const position = Positioning.getBellPosition(this.config.position, this.config.indent);\n const styles = Object.assign({\n zIndex: this.config.zIndex,\n }, position);\n this.addStylesToElement(styles, container);\n return container;\n }\n\n /**\n * Create styles element\n * @returns {HTMLElement}\n */\n private createStyle(): HTMLElement {\n const styleNode = document.createElement('style');\n styleNode.innerHTML = mainCss;\n return styleNode;\n }\n\n /**\n * Create cell button element\n * @returns {HTMLElement}\n */\n private createBell(): HTMLElement {\n const { config } = this;\n let bell;\n if (config.buttonImage) {\n bell = document.createElement('img') as HTMLImageElement;\n bell.src = config.buttonImage;\n } else {\n bell = document.createElement('div');\n this.addStylesToElement({\n backgroundColor: config.bgColor,\n boxShadow: config.shadow,\n lineHeight: config.size,\n border: config.bellButtonBorder,\n }, bell);\n\n bell.innerHTML = bellSVG(config.bellColor, config.bellStrokeColor);\n }\n this.addStylesToElement({\n width: config.size,\n height: config.size,\n }, bell);\n bell.className = 'pushwoosh-subscribe-widget__bell-button';\n return bell;\n }\n\n /**\n * Create tooltip element\n * @returns {Promise<HTMLElement>}\n */\n private async createTooltip(): Promise<HTMLElement> {\n const tooltip = document.createElement('div');\n const [position, modification] = Positioning.getTooltipPosition(this.config.position, this.config.size);\n tooltip.className = `pushwoosh-subscribe-widget__tooltip pushwoosh-subscribe-widget__tooltip__${modification}`;\n this.addStylesToElement(position, tooltip);\n\n tooltip.appendChild(await this.createTooltipContent());\n return tooltip;\n }\n\n /**\n * Create tooltip content element\n * @returns {Promise<HTMLElement>}\n */\n private async createTooltipContent(): Promise<HTMLElement> {\n const tooltipContent = document.createElement('div');\n tooltipContent.innerText = await this.tooltipTextFactory();\n tooltipContent.className = 'pushwoosh-subscribe-widget__tooltip-content';\n return tooltipContent;\n }\n\n /**\n * Tooltip text content depending of the permissions\n * @returns {Promise<string>}\n */\n private async tooltipTextFactory(): Promise<string> {\n const permission = this.pw.driver.getPermission();\n const { tooltipText } = this.config;\n const isManuallyUnsubscribed = await this.pw.data.getStatusManualUnsubscribed();\n\n switch (permission) {\n case PERMISSION_GRANTED:\n return isManuallyUnsubscribed ? tooltipText.needSubscribe : tooltipText.alreadySubscribed;\n case PERMISSION_PROMPT:\n return tooltipText.needSubscribe;\n case PERMISSION_DENIED:\n return tooltipText.blockSubscribe;\n default:\n return tooltipText.needSubscribe;\n }\n }\n\n /**\n * Create permission denied popover element\n * @returns {HTMLElement}\n */\n private createPopover(): HTMLElement {\n const popoverContentWrapper = document.createElement('div');\n const popover = document.createElement('div');\n const [position, modification] = Positioning.getPopoverPosition(this.config.position, this.config.size);\n popover.className = `pushwoosh-subscribe-widget__popover pushwoosh-subscribe-widget__popover__${modification}`;\n popoverContentWrapper.className = 'pushwoosh-subscribe-widget__popover-content-wrapper';\n\n this.style.innerHTML += Positioning.getPopoverArrowPosition(this.config.position, this.config.size);\n\n const styles = Object.assign({\n maxWidth: `calc(100vw - ${this.config.indent} - ${this.config.indent})`,\n }, position);\n this.addStylesToElement(styles, popover);\n\n popoverContentWrapper.appendChild(this.createPopoverContent());\n popover.appendChild(popoverContentWrapper);\n return popover;\n }\n\n private getBrowserName() {\n const platformChecker = this.pw.platformChecker;\n let browser;\n if (platformChecker.isOpera) {\n browser = 'opera';\n } else if (<TPlatformChrome>platformChecker.platform === 11 && navigator.userAgent.match(/Android/i)) {\n browser = 'mobileChrome';\n } else if (<TPlatformFirefox>platformChecker.platform === 12) {\n browser = 'firefox';\n } else if (<TPlatformSafari>platformChecker.platform === 10) {\n browser = 'safari';\n } else if (<TPlatformEdge>platformChecker.platform === 150) {\n browser = 'edge';\n } else {\n browser = 'chrome';\n }\n return browser;\n }\n\n /**\n * Create permission denied popover content element\n * @returns {HTMLElement}\n */\n private createPopoverContent(): HTMLElement {\n const { config } = this;\n const popoverContent = document.createElement('div');\n popoverContent.className = 'pushwoosh-subscribe-widget__popover-content';\n\n const browser = this.getBrowserName();\n\n const userImageSrc = config.contentImages && config.contentImages[browser];\n if (userImageSrc) {\n const image = document.createElement('img') as HTMLImageElement;\n image.src = userImageSrc;\n popoverContent.appendChild(image);\n } else {\n const standardImagesMap: Record<string, string> = {\n opera: 'opera',\n mobileChrome: 'mobile_chrome',\n firefox: 'FF',\n safari: 'safari',\n };\n const standardImage = standardImagesMap[browser] || 'chrome';\n [{\n src: this.getImageSrc(standardImage),\n width: 500,\n height: 130,\n }, {\n src: this.getImageSrc(`${standardImage}_unlock`),\n width: 500,\n height: 230,\n }].forEach((imageAttrs) => {\n const image = document.createElement('img');\n Object.assign(image, imageAttrs);\n popoverContent.appendChild(image);\n });\n }\n\n return popoverContent;\n }\n\n /**\n * Return source of help images depending of the browser\n * @returns {string}\n */\n getImageSrc(img: string): string {\n return `https://cdn.pushwoosh.com/webpush/img/${img}.jpg`;\n }\n\n private async render() {\n this.widget = this.createContainer();\n this.style = this.createStyle();\n const bell = this.createBell();\n this.tooltip = await this.createTooltip();\n this.popover = await this.createPopover();\n\n this.widget.appendChild(this.style);\n this.widget.appendChild(bell);\n this.widget.appendChild(this.tooltip);\n this.widget.appendChild(this.popover);\n\n document.body.appendChild(this.widget);\n\n this.pw.push(['onSubscribe', this.onSubscribeEvent]);\n this.pw.push(['onUnsubscribe', this.onUnsubscribeEvent]);\n this.pw.push(['onPermissionDenied', this.onPermissionDeniedEvent]);\n\n this.addEventListeners();\n }\n\n addEventListeners() {\n this.widget.addEventListener('click', this.clickBell);\n window.addEventListener('click', this.clickOutOfPopover);\n }\n\n /**\n * Toggle visibility of popover\n */\n toggleHelpPopover() {\n this.popover.classList.toggle('pushwoosh-subscribe-widget__popover__visible');\n }\n\n /**\n * Click bell button event callback\n * @returns {Promise<void>}\n */\n private async clickBell() {\n const permission = this.pw.driver.getPermission();\n\n switch (permission) {\n case PERMISSION_GRANTED:\n await this.pw.subscribe();\n\n break;\n case PERMISSION_PROMPT:\n await this.pw.subscribe();\n\n break;\n case PERMISSION_DENIED:\n this.toggleHelpPopover();\n\n break;\n default:\n console.warn('Unknown browser notification permission');\n }\n }\n\n /**\n * On subscribe event callback\n * @returns {Promise<void>}\n */\n private async onSubscribeEvent() {\n const tooltipContent = this.tooltip.querySelector('div');\n\n if (tooltipContent === null) {\n return;\n }\n\n tooltipContent.innerText = this.config.tooltipText.successSubscribe;\n this.tooltip.classList.add('pushwoosh-subscribe-widget__tooltip__visible');\n\n setTimeout(async () => {\n this.tooltip.classList.remove('pushwoosh-subscribe-widget__tooltip__visible');\n tooltipContent.innerText = await this.tooltipTextFactory();\n\n this.widget.classList.add('pushwoosh-subscribe-widget__subscribed');\n }, 2000);\n }\n\n /**\n * On permission denied event\n * @returns {Promise<void>}\n */\n private async onPermissionDeniedEvent(): Promise<void> {\n this.addEventListeners();\n\n const tooltipContent = this.tooltip.querySelector('div');\n if (tooltipContent === null) return;\n tooltipContent.innerText = await this.tooltipTextFactory();\n }\n\n /**\n * Out of popover click event\n * @param {MessageEvent} ev\n */\n clickOutOfPopover(ev: MessageEvent) {\n const closeRule = this.popover.classList.contains('pushwoosh-subscribe-widget__popover__visible')\n && !(ev.target as any).classList.contains('pushwoosh-subscribe-widget__popover')\n && (ev.target as any).closest('.pushwoosh-subscribe-widget__popover') === null\n && !(ev.target as any).classList.contains('pushwoosh-subscribe-widget__bell-button')\n && (ev.target as any).closest('.pushwoosh-subscribe-widget__bell-button') === null;\n\n if (closeRule) this.popover.classList.remove('pushwoosh-subscribe-widget__popover__visible');\n }\n\n private async onUnsubscribeEvent() {\n const tooltipContent = this.tooltip.querySelector('div');\n\n if (tooltipContent === null) {\n return;\n }\n\n tooltipContent.innerText = await this.tooltipTextFactory();\n }\n}\n","export default (fillColor: string, strokeColor: string) => {\n return '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\\n'\n + '<svg\\n'\n + ' xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\\n'\n + ' xmlns:cc=\"http://creativecommons.org/ns#\"\\n'\n + ' xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\\n'\n + ' xmlns:svg=\"http://www.w3.org/2000/svg\"\\n'\n + ' xmlns=\"http://www.w3.org/2000/svg\"\\n'\n + ' xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\"\\n'\n + ' xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\"\\n'\n + ' version=\"1.1\"\\n'\n + ' id=\"Capa_1\"\\n'\n + ' x=\"0px\"\\n'\n + ' y=\"0px\"\\n'\n + ' viewBox=\"0 0 346.013 346.013\"\\n'\n + ' style=\"enable-background:new 0 0 346.013 346.013;width: 80%; height: auto; vertical-align: middle;\"\\n'\n + ' xml:space=\"preserve\"\\n'\n + ' inkscape:version=\"0.91 r13725\"\\n'\n + ' sodipodi:docname=\"alarm_white.svg\"><metadata\\n'\n + ' id=\"metadata51\"><rdf:RDF><cc:Work\\n'\n + ' rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type\\n'\n + ' rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs\\n'\n + ' id=\"defs49\" /><sodipodi:namedview\\n'\n + ' borderopacity=\"1\"\\n'\n + ' objecttolerance=\"10\"\\n'\n + ' gridtolerance=\"10\"\\n'\n + ' guidetolerance=\"10\"\\n'\n + ' inkscape:pageopacity=\"0\"\\n'\n + ' inkscape:pageshadow=\"2\"\\n'\n + ' inkscape:window-width=\"1618\"\\n'\n + ' inkscape:window-height=\"828\"\\n'\n + ' id=\"namedview47\"\\n'\n + ' showgrid=\"false\"\\n'\n + ' inkscape:zoom=\"0.6820553\"\\n'\n + ' inkscape:cx=\"173.0065\"\\n'\n + ' inkscape:cy=\"173.0065\"\\n'\n + ' inkscape:window-x=\"0\"\\n'\n + ' inkscape:window-y=\"0\"\\n'\n + ' inkscape:window-maximized=\"0\"\\n'\n + ' inkscape:current-layer=\"g3\" /><g\\n'\n + ' id=\"g3\"><path\\n'\n + ' d=\"m 256.76227,220.19006 c -1.77513,-2.69766 -3.45154,-5.24564 -3.98966,-7.46382 -0.042,-0.17861 -0.0911,-0.36128 -0.16237,-0.61436 -2.28354,-7.67647 0.69147,-24.43921 2.46886,-34.45124 0.26788,-1.50394 0.52274,-2.94197 0.75286,-4.29035 0.0232,-0.13675 0.044,-0.27211 0.0724,-0.48006 1.95582,-15.28051 2.58811,-37.91956 -5.51044,-58.99147 -5.6032,-14.57978 -14.45978,-25.82612 -26.3559,-33.48393 1.26598,-9.812938 -4.85967,-19.343691 -14.66682,-22.0511 -9.80715,-2.70741 -19.95724,2.33226 -23.90298,11.405413 -14.1382,0.467533 -27.51111,5.577097 -39.80114,15.219267 -17.76129,13.9298 -28.83431,33.68757 -34.99389,47.80757 l -0.0479,0.11335 c -0.0512,0.12175 -0.0998,0.24114 -0.13249,0.32962 -0.49733,1.28292 -1.01552,2.64514 -1.55689,4.07255 -3.61311,9.51043 -9.66004,25.42824 -15.611995,30.89342 -0.106524,0.10027 -0.208228,0.20187 -0.362362,0.35435 -1.636243,1.66563 -4.382941,2.99463 -7.288979,4.40101 -7.145531,3.45301 -22.013613,10.64166 -17.206389,31.67844 0.929154,4.07105 4.008437,7.29057 8.033861,8.40185 l 167.570804,46.2604 c 4.02253,1.11048 8.31521,-0.0729 11.2052,-3.08958 14.91617,-15.58874 5.84693,-29.38668 1.48625,-36.02133 z\"\\n'\n + ' id=\"path5\"\\n'\n + ' inkscape:connector-curvature=\"0\"\\n'\n + ' vector-effect=\"non-scaling-stroke\"\\n'\n + ` style=\"fill:${fillColor}; stroke: ${strokeColor}; stroke-width: 1; \" /><path\\n`\n + ' vector-effect=\"non-scaling-stroke\"\\n'\n + ' d=\"m 174.26737,259.72378 -38.76399,-10.70137 c -1.59243,-0.43962 -3.28183,-0.15596 -4.63548,0.7754 -2.53909,1.7494 -2.84182,4.93159 -3.02304,6.83188 l -0.0151,0.15247 c -1.22819,12.67106 6.79854,24.33046 19.08688,27.72284 12.51583,3.45518 25.8324,-2.91586 30.9681,-14.80385 l 0.0935,-0.19205 c 0.52305,-1.06418 1.74613,-3.55554 0.50882,-6.31116 -0.44302,-0.98439 -1.5794,-2.74529 -4.21964,-3.47416 z\"\\n'\n + ' id=\"path7\"\\n'\n + ' inkscape:connector-curvature=\"0\"\\n'\n + ` style=\"fill:${fillColor}; stroke: ${strokeColor}; stroke-width: 1;\" /></g><g\\n`\n + ' id=\"g17\" /><g\\n'\n + ' id=\"g19\" /><g\\n'\n + ' id=\"g21\" /><g\\n'\n + ' id=\"g23\" /><g\\n'\n + ' id=\"g25\" /><g\\n'\n + ' id=\"g27\" /><g\\n'\n + ' id=\"g29\" /><g\\n'\n + ' id=\"g31\" /><g\\n'\n + ' id=\"g33\" /><g\\n'\n + ' id=\"g35\" /><g\\n'\n + ' id=\"g37\" /><g\\n'\n + ' id=\"g39\" /><g\\n'\n + ' id=\"g41\" /><g\\n'\n + ' id=\"g43\" /><g\\n'\n + ' id=\"g45\" /></svg>';\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","PERMISSION_DENIED","PERMISSION_GRANTED","PERMISSION_PROMPT","BELL_POSITION_BOTTOM_RIGHT","BELL_POSITION_BOTTOM_LEFT","BELL_POSITION_TOP_RIGHT","BELL_POSITION_TOP_LEFT","SUBSCRIBE_WIDGET_DEFAULT_CONFIG","position","bgColor","bellColor","bellStrokeColor","bellButtonBorder","shadow","size","indent","zIndex","tooltipText","successSubscribe","needSubscribe","blockSubscribe","alreadySubscribed","Positioning","getBellPosition","positionStyles","top","left","bottom","right","getTooltipPosition","bellPosition","bellSize","tooltipModification","increaseIndent","parseInt","getPopoverPosition","popoverModification","getPopoverArrowPosition","arrowAdditionalStyles","PWSubscriptionButtonWidget","constructor","pw","platformChecker","isAvailableNotifications","console","warn","clickBell","bind","onSubscribeEvent","onUnsubscribeEvent","onPermissionDeniedEvent","clickOutOfPopover","assign","initParams","subscribeWidget","config","run","isSubscribed","render","addStylesToElement","styles","element","keys","forEach","st","style","createContainer","container","document","createElement","id","className","createStyle","styleNode","innerHTML","createBell","bell","fillColor","strokeColor","buttonImage","src","backgroundColor","boxShadow","lineHeight","border","width","height","createTooltip","tooltip","modification","appendChild","createTooltipContent","tooltipContent","innerText","tooltipTextFactory","permission","driver","getPermission","isManuallyUnsubscribed","data","getStatusManualUnsubscribed","createPopover","popoverContentWrapper","popover","maxWidth","createPopoverContent","getBrowserName","browser","isOpera","platform","navigator","userAgent","match","popoverContent","userImageSrc","contentImages","image","standardImage","opera","mobileChrome","firefox","safari","getImageSrc","imageAttrs","img","widget","body","push","addEventListeners","addEventListener","window","toggleHelpPopover","classList","toggle","subscribe","querySelector","add","setTimeout","async","remove","ev","contains","target","closest"],"sourceRoot":""}
1
+ {"version":3,"file":"widget-subscription-button.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/core/constants.ts","webpack://web-push-notifications/./src/widgets/SubscriptionButton/constants.ts","webpack://web-push-notifications/./src/widgets/SubscriptionButton/positioning.ts","webpack://web-push-notifications/./src/widgets/SubscriptionButton/index.ts","webpack://web-push-notifications/./src/widgets/SubscriptionButton/bell.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 DEFAULT_SERVICE_WORKER_URL = '/pushwoosh-service-worker.js';\nexport const DEFAULT_API_URL = 'https://cp.pushwoosh.com/json/1.3/';\n\nexport const PERIOD_SEND_APP_OPEN = 3600000;\nexport const PERIOD_GOAL_EVENT = 86400000;\n\nexport const DEFAULT_NOTIFICATION_TITLE = 'Pushwoosh notification';\nexport const DEFAULT_NOTIFICATION_IMAGE = 'https://cp.pushwoosh.com/img/logo-medium.png';\n\n// Keys\nexport const KEY_SHOW_SUBSCRIBE_WIDGET = 'WIDGET_SHOWED';\nexport const KEY_CLICK_SUBSCRIBE_WIDGET = 'WIDGET_CLICKED';\n\n// Local storage keys\nexport const KEY_DEVICE_REGISTRATION_STATUS: string = 'deviceRegistrationStatus';\nexport const KEY_SAFARI_PREVIOUS_PERMISSION = 'safariPreviousPermission';\nexport const MANUAL_SET_LOGGER_LEVEL = 'PW_SET_LOGGER_LEVEL';\n\n// Device registration status\nexport const DEVICE_REGISTRATION_STATUS_REGISTERED: string = 'registered';\nexport const DEVICE_REGISTRATION_STATUS_UNREGISTERED: string = 'unregistered';\n\n// Permissions\nexport const PERMISSION_DENIED = 'denied';\nexport const PERMISSION_GRANTED = 'granted';\nexport const PERMISSION_PROMPT = 'default';\n\n// Events\nexport const LEGACY_EVENT_ON_LOAD = 'onLoad';\nexport const LEGACY_EVENT_ON_READY = 'onReady';\nexport const LEGACY_EVENT_ON_SUBSCRIBE = 'onSubscribe';\nexport const LEGACY_EVENT_ON_UNSUBSCRIBE = 'onUnsubscribe';\nexport const LEGACY_EVENT_ON_REGISTER = 'onRegister';\nexport const LEGACY_EVENT_ON_PERMISSION_PROMPT = 'onPermissionPrompt';\nexport const LEGACY_EVENT_ON_PERMISSION_DENIED = 'onPermissionDenied';\nexport const LEGACY_EVENT_ON_PERMISSION_GRANTED = 'onPermissionGranted';\nexport const LEGACY_EVENT_ON_SW_INIT_ERROR = 'onSWInitError';\nexport const LEGACY_EVENT_ON_PUSH_DELIVERY = 'onPushDelivery';\nexport const LEGACY_EVENT_ON_NOTIFICATION_CLICK = 'onNotificationClick';\nexport const LEGACY_EVENT_ON_NOTIFICATION_CLOSE = 'onNotificationClose';\nexport const LEGACY_EVENT_ON_CHANGE_COMMUNICATION_ENABLED = 'onChangeCommunicationEnabled';\nexport const LEGACY_EVENT_ON_PUT_NEW_MESSAGE_TO_INBOX_STORE = 'onPutNewMessageToInboxStore';\nexport const LEGACY_EVENT_ON_UPDATE_INBOX_MESSAGES = 'onUpdateInboxMessages';\nexport const LEGACY_EVENT_ON_SHOW_NOTIFICATION_PERMISSION_DIALOG = 'onShowNotificationPermissionDialog';\nexport const LEGACY_EVENT_ON_HIDE_NOTIFICATION_PERMISSION_DIALOG = 'onHideNotificationPermissionDialog';\n\nexport const LEGACY_EVENT_ON_SHOW_SUBSCRIPTION_WIDGET = 'onShowSubscriptionWidget';\nexport const LEGACY_EVENT_ON_HIDE_SUBSCRIPTION_WIDGET = 'onHideSubscriptionWidget';\n\n// Post Events\nexport const EVENT_SHOW_SUBSCRIBE_BUTTON = 'showSubscribeButton';\nexport const EVENT_CLICK_SUBSCRIBE_BUTTON = 'clickSubscribeButton';\nexport const EVENT_GDPR_CONSENT = 'GDPRConsent';\nexport const EVENT_GDPR_DELETE = 'GDPRDelete';\nexport const EVENT_PW_SITE_OPENED = 'PW_SiteOpened'; // for default events\n\n// Page visited\nexport const PAGE_VISITED_URL = 'PAGE_VISITED_URL';\n","// Bell\nimport { type TBellConfig } from './subscribe_widget.types';\n\nexport const BELL_POSITION_BOTTOM_RIGHT = 'bottomRight';\nexport const BELL_POSITION_BOTTOM_LEFT = 'bottomLeft';\nexport const BELL_POSITION_TOP_RIGHT = 'topRight';\nexport const BELL_POSITION_TOP_LEFT = 'topLeft';\n\n// Common\nexport const WIDGET_CONTAINER_ID = 'pushwooshBellWidget';\n\nexport const SUBSCRIBE_WIDGET_DEFAULT_CONFIG: TBellConfig = {\n position: BELL_POSITION_BOTTOM_LEFT,\n bgColor: '#12AE7E',\n bellColor: 'white',\n bellStrokeColor: '#08754f',\n bellButtonBorder: '1px solid #379676',\n shadow: '0px 0px 6px rgba(0, 0, 0, 0.75)',\n size: '48px',\n indent: '20px',\n zIndex: '999999',\n tooltipText: {\n successSubscribe: 'You are successfully subscribed!',\n needSubscribe: 'Get notifications about important news!',\n blockSubscribe: 'Click to see how to get notifications',\n alreadySubscribed: 'You are already subscribed',\n },\n};\n","import {\n BELL_POSITION_TOP_RIGHT,\n BELL_POSITION_TOP_LEFT,\n BELL_POSITION_BOTTOM_LEFT,\n BELL_POSITION_BOTTOM_RIGHT,\n} from './constants';\nimport { type TBellPosition, type TPositionStyles } from './subscribe_widget.types';\n\nexport default class Positioning {\n public static getBellPosition(position: TBellPosition, indent: string): TPositionStyles {\n let positionStyles: TPositionStyles;\n\n switch (position) {\n case BELL_POSITION_BOTTOM_RIGHT:\n positionStyles = {\n top: 'auto',\n left: 'auto',\n bottom: indent,\n right: indent,\n };\n break;\n case BELL_POSITION_BOTTOM_LEFT:\n positionStyles = {\n top: 'auto',\n left: indent,\n bottom: indent,\n right: 'auto',\n };\n break;\n case BELL_POSITION_TOP_LEFT:\n positionStyles = {\n top: indent,\n left: indent,\n bottom: 'auto',\n right: 'auto',\n };\n break;\n case BELL_POSITION_TOP_RIGHT:\n positionStyles = {\n top: indent,\n left: 'auto',\n bottom: 'auto',\n right: indent,\n };\n break;\n default:\n positionStyles = {\n top: 'auto',\n left: 'auto',\n bottom: indent,\n right: indent,\n };\n }\n\n return positionStyles;\n }\n\n public static getTooltipPosition(bellPosition: TBellPosition, bellSize: string): [{ left: string } | { right: string }, string] {\n let positionStyles;\n let tooltipModification;\n const increaseIndent = (parseInt(bellSize) + 12) + 'px';\n\n switch (bellPosition) {\n case BELL_POSITION_BOTTOM_RIGHT:\n positionStyles = { right: increaseIndent };\n tooltipModification = 'right';\n break;\n case BELL_POSITION_BOTTOM_LEFT:\n positionStyles = { left: increaseIndent };\n tooltipModification = 'left';\n break;\n case BELL_POSITION_TOP_LEFT:\n positionStyles = { left: increaseIndent };\n tooltipModification = 'left';\n break;\n case BELL_POSITION_TOP_RIGHT:\n positionStyles = { right: increaseIndent };\n tooltipModification = 'right';\n break;\n default:\n positionStyles = { right: increaseIndent };\n tooltipModification = 'right';\n }\n\n return [positionStyles, tooltipModification];\n }\n\n public static getPopoverPosition(bellPosition: TBellPosition, bellSize: string): [TPositionStyles, string] {\n let positionStyles;\n let popoverModification;\n const increaseIndent = (parseInt(bellSize) + 15) + 'px';\n\n switch (bellPosition) {\n case BELL_POSITION_BOTTOM_RIGHT:\n positionStyles = {\n bottom: increaseIndent,\n right: '0',\n left: 'auto',\n top: 'auto',\n };\n popoverModification = 'bottom';\n break;\n case BELL_POSITION_BOTTOM_LEFT:\n positionStyles = {\n bottom: increaseIndent,\n left: '0',\n right: 'auto',\n top: 'auto',\n };\n popoverModification = 'bottom';\n break;\n case BELL_POSITION_TOP_LEFT:\n positionStyles = {\n top: increaseIndent,\n left: '0',\n right: 'auto',\n bottom: 'auto',\n };\n popoverModification = 'top';\n break;\n case BELL_POSITION_TOP_RIGHT:\n positionStyles = {\n top: increaseIndent,\n right: '0',\n left: 'auto',\n bottom: 'auto',\n };\n popoverModification = 'top';\n break;\n default:\n positionStyles = {\n bottom: increaseIndent,\n right: '0',\n left: 'auto',\n top: 'auto',\n };\n popoverModification = 'bottom';\n }\n\n return [positionStyles, popoverModification];\n }\n\n public static getPopoverArrowPosition(bellPosition: TBellPosition, bellSize: string) {\n let arrowAdditionalStyles;\n\n switch (bellPosition) {\n case BELL_POSITION_BOTTOM_RIGHT:\n arrowAdditionalStyles = `\\n.pushwoosh-subscribe-widget__popover__bottom:after {left: auto; right: ${(parseInt(bellSize) / 2 - 4) + 'px'}`;\n break;\n case BELL_POSITION_BOTTOM_LEFT:\n arrowAdditionalStyles = `\\n.pushwoosh-subscribe-widget__popover__bottom:after {right: auto; left: ${(parseInt(bellSize) / 2 - 12) + 'px'}`;\n break;\n case BELL_POSITION_TOP_LEFT:\n arrowAdditionalStyles = `\\n.pushwoosh-subscribe-widget__popover__top:after {right: auto; left: ${(parseInt(bellSize) / 2 - 12) + 'px'}`;\n break;\n case BELL_POSITION_TOP_RIGHT:\n arrowAdditionalStyles = `\\n.pushwoosh-subscribe-widget__popover__top:after {left: auto; right: ${(parseInt(bellSize) / 2 - 4) + 'px'}`;\n break;\n default:\n arrowAdditionalStyles = `\\n.pushwoosh-subscribe-widget__popover__bottom:after {left: auto; right: ${(parseInt(bellSize) / 2 - 4) + 'px'}`;\n }\n\n return arrowAdditionalStyles;\n }\n}\n","import {\n PERMISSION_GRANTED,\n PERMISSION_DENIED,\n PERMISSION_PROMPT,\n} from '../../core/constants';\nimport mainCss from './assets/css/main.css';\nimport bellSVG from './bell';\nimport {\n SUBSCRIBE_WIDGET_DEFAULT_CONFIG,\n WIDGET_CONTAINER_ID,\n} from './constants';\nimport Positioning from './positioning';\nimport { type TBellConfig, type TCSSStylesObject, type TStyleKeys } from './subscribe_widget.types';\nimport { type Pushwoosh } from '../../core/Pushwoosh';\nimport {\n type TPlatformChrome,\n type TPlatformEdge,\n type TPlatformFirefox,\n type TPlatformSafari,\n} from '../../modules/PlatformChecker/PlatformChecker.types';\n\nexport class PWSubscriptionButtonWidget {\n widget: HTMLElement;\n tooltip: HTMLElement;\n popover: HTMLElement;\n style: HTMLElement;\n pw: Pushwoosh;\n config: TBellConfig;\n\n constructor(pw: Pushwoosh) {\n // Set Pushwoosh object\n this.pw = pw;\n if (!pw.platformChecker.isAvailableNotifications) {\n console.warn('Browser does not support push notifications');\n return;\n }\n\n // Bindings\n this.clickBell = this.clickBell.bind(this);\n this.onSubscribeEvent = this.onSubscribeEvent.bind(this);\n this.onUnsubscribeEvent = this.onUnsubscribeEvent.bind(this);\n this.onPermissionDeniedEvent = this.onPermissionDeniedEvent.bind(this);\n this.clickOutOfPopover = this.clickOutOfPopover.bind(this);\n\n // Config\n const tooltipText = Object.assign(SUBSCRIBE_WIDGET_DEFAULT_CONFIG.tooltipText, pw.initParams.subscribeWidget!.tooltipText);\n this.config = Object.assign({}, SUBSCRIBE_WIDGET_DEFAULT_CONFIG, pw.initParams.subscribeWidget);\n this.config.tooltipText = tooltipText;\n }\n\n public async run() {\n const isSubscribed = await this.pw.isSubscribed();\n if (!isSubscribed) {\n await this.render();\n }\n }\n\n /**\n * Apply styles to element\n * @param styles\n * @param {HTMLElement} element\n */\n private addStylesToElement(styles: TCSSStylesObject, element: HTMLElement) {\n Object.keys(styles).forEach((st: TStyleKeys) => {\n element.style[st] = styles[st];\n });\n }\n\n /**\n * Create container element\n * @returns {HTMLElement}\n */\n private createContainer(): HTMLElement {\n const container = document.createElement('div');\n container.id = WIDGET_CONTAINER_ID;\n container.className = 'pushwoosh-subscribe-widget';\n const position = Positioning.getBellPosition(this.config.position, this.config.indent);\n const styles = Object.assign({\n zIndex: this.config.zIndex,\n }, position);\n this.addStylesToElement(styles, container);\n return container;\n }\n\n /**\n * Create styles element\n * @returns {HTMLElement}\n */\n private createStyle(): HTMLElement {\n const styleNode = document.createElement('style');\n styleNode.innerHTML = mainCss;\n return styleNode;\n }\n\n /**\n * Create cell button element\n * @returns {HTMLElement}\n */\n private createBell(): HTMLElement {\n const { config } = this;\n let bell;\n if (config.buttonImage) {\n bell = document.createElement('img') as HTMLImageElement;\n bell.src = config.buttonImage;\n } else {\n bell = document.createElement('div');\n this.addStylesToElement({\n backgroundColor: config.bgColor,\n boxShadow: config.shadow,\n lineHeight: config.size,\n border: config.bellButtonBorder,\n }, bell);\n\n bell.innerHTML = bellSVG(config.bellColor, config.bellStrokeColor);\n }\n this.addStylesToElement({\n width: config.size,\n height: config.size,\n }, bell);\n bell.className = 'pushwoosh-subscribe-widget__bell-button';\n return bell;\n }\n\n /**\n * Create tooltip element\n * @returns {Promise<HTMLElement>}\n */\n private async createTooltip(): Promise<HTMLElement> {\n const tooltip = document.createElement('div');\n const [position, modification] = Positioning.getTooltipPosition(this.config.position, this.config.size);\n tooltip.className = `pushwoosh-subscribe-widget__tooltip pushwoosh-subscribe-widget__tooltip__${modification}`;\n this.addStylesToElement(position, tooltip);\n\n tooltip.appendChild(await this.createTooltipContent());\n return tooltip;\n }\n\n /**\n * Create tooltip content element\n * @returns {Promise<HTMLElement>}\n */\n private async createTooltipContent(): Promise<HTMLElement> {\n const tooltipContent = document.createElement('div');\n tooltipContent.innerText = await this.tooltipTextFactory();\n tooltipContent.className = 'pushwoosh-subscribe-widget__tooltip-content';\n return tooltipContent;\n }\n\n /**\n * Tooltip text content depending of the permissions\n * @returns {Promise<string>}\n */\n private async tooltipTextFactory(): Promise<string> {\n const permission = this.pw.driver.getPermission();\n const { tooltipText } = this.config;\n const isManuallyUnsubscribed = await this.pw.data.getStatusManualUnsubscribed();\n\n switch (permission) {\n case PERMISSION_GRANTED:\n return isManuallyUnsubscribed ? tooltipText.needSubscribe : tooltipText.alreadySubscribed;\n case PERMISSION_PROMPT:\n return tooltipText.needSubscribe;\n case PERMISSION_DENIED:\n return tooltipText.blockSubscribe;\n default:\n return tooltipText.needSubscribe;\n }\n }\n\n /**\n * Create permission denied popover element\n * @returns {HTMLElement}\n */\n private createPopover(): HTMLElement {\n const popoverContentWrapper = document.createElement('div');\n const popover = document.createElement('div');\n const [position, modification] = Positioning.getPopoverPosition(this.config.position, this.config.size);\n popover.className = `pushwoosh-subscribe-widget__popover pushwoosh-subscribe-widget__popover__${modification}`;\n popoverContentWrapper.className = 'pushwoosh-subscribe-widget__popover-content-wrapper';\n\n this.style.innerHTML += Positioning.getPopoverArrowPosition(this.config.position, this.config.size);\n\n const styles = Object.assign({\n maxWidth: `calc(100vw - ${this.config.indent} - ${this.config.indent})`,\n }, position);\n this.addStylesToElement(styles, popover);\n\n popoverContentWrapper.appendChild(this.createPopoverContent());\n popover.appendChild(popoverContentWrapper);\n return popover;\n }\n\n private getBrowserName() {\n const platformChecker = this.pw.platformChecker;\n let browser;\n if (platformChecker.isOpera) {\n browser = 'opera';\n } else if (<TPlatformChrome>platformChecker.platform === 11 && navigator.userAgent.match(/Android/i)) {\n browser = 'mobileChrome';\n } else if (<TPlatformFirefox>platformChecker.platform === 12) {\n browser = 'firefox';\n } else if (<TPlatformSafari>platformChecker.platform === 10) {\n browser = 'safari';\n } else if (<TPlatformEdge>platformChecker.platform === 150) {\n browser = 'edge';\n } else {\n browser = 'chrome';\n }\n return browser;\n }\n\n /**\n * Create permission denied popover content element\n * @returns {HTMLElement}\n */\n private createPopoverContent(): HTMLElement {\n const { config } = this;\n const popoverContent = document.createElement('div');\n popoverContent.className = 'pushwoosh-subscribe-widget__popover-content';\n\n const browser = this.getBrowserName();\n\n const userImageSrc = config.contentImages && config.contentImages[browser];\n if (userImageSrc) {\n const image = document.createElement('img') as HTMLImageElement;\n image.src = userImageSrc;\n popoverContent.appendChild(image);\n } else {\n const standardImagesMap: Record<string, string> = {\n opera: 'opera',\n mobileChrome: 'mobile_chrome',\n firefox: 'FF',\n safari: 'safari',\n };\n const standardImage = standardImagesMap[browser] || 'chrome';\n [{\n src: this.getImageSrc(standardImage),\n width: 500,\n height: 130,\n }, {\n src: this.getImageSrc(`${standardImage}_unlock`),\n width: 500,\n height: 230,\n }].forEach((imageAttrs) => {\n const image = document.createElement('img');\n Object.assign(image, imageAttrs);\n popoverContent.appendChild(image);\n });\n }\n\n return popoverContent;\n }\n\n /**\n * Return source of help images depending of the browser\n * @returns {string}\n */\n getImageSrc(img: string): string {\n return `https://cdn.pushwoosh.com/webpush/img/${img}.jpg`;\n }\n\n private async render() {\n this.widget = this.createContainer();\n this.style = this.createStyle();\n const bell = this.createBell();\n this.tooltip = await this.createTooltip();\n this.popover = await this.createPopover();\n\n this.widget.appendChild(this.style);\n this.widget.appendChild(bell);\n this.widget.appendChild(this.tooltip);\n this.widget.appendChild(this.popover);\n\n document.body.appendChild(this.widget);\n\n this.pw.push(['onSubscribe', this.onSubscribeEvent]);\n this.pw.push(['onUnsubscribe', this.onUnsubscribeEvent]);\n this.pw.push(['onPermissionDenied', this.onPermissionDeniedEvent]);\n\n this.addEventListeners();\n }\n\n addEventListeners() {\n this.widget.addEventListener('click', this.clickBell);\n window.addEventListener('click', this.clickOutOfPopover);\n }\n\n /**\n * Toggle visibility of popover\n */\n toggleHelpPopover() {\n this.popover.classList.toggle('pushwoosh-subscribe-widget__popover__visible');\n }\n\n /**\n * Click bell button event callback\n * @returns {Promise<void>}\n */\n private async clickBell() {\n const permission = this.pw.driver.getPermission();\n\n switch (permission) {\n case PERMISSION_GRANTED:\n await this.pw.subscribe();\n\n break;\n case PERMISSION_PROMPT:\n await this.pw.subscribe();\n\n break;\n case PERMISSION_DENIED:\n this.toggleHelpPopover();\n\n break;\n default:\n console.warn('Unknown browser notification permission');\n }\n }\n\n /**\n * On subscribe event callback\n * @returns {Promise<void>}\n */\n private async onSubscribeEvent() {\n const tooltipContent = this.tooltip.querySelector('div');\n\n if (tooltipContent === null) {\n return;\n }\n\n tooltipContent.innerText = this.config.tooltipText.successSubscribe;\n this.tooltip.classList.add('pushwoosh-subscribe-widget__tooltip__visible');\n\n setTimeout(async () => {\n this.tooltip.classList.remove('pushwoosh-subscribe-widget__tooltip__visible');\n tooltipContent.innerText = await this.tooltipTextFactory();\n\n this.widget.classList.add('pushwoosh-subscribe-widget__subscribed');\n }, 2000);\n }\n\n /**\n * On permission denied event\n * @returns {Promise<void>}\n */\n private async onPermissionDeniedEvent(): Promise<void> {\n this.addEventListeners();\n\n const tooltipContent = this.tooltip.querySelector('div');\n if (tooltipContent === null) return;\n tooltipContent.innerText = await this.tooltipTextFactory();\n }\n\n /**\n * Out of popover click event\n * @param {MessageEvent} ev\n */\n clickOutOfPopover(ev: MessageEvent) {\n const closeRule = this.popover.classList.contains('pushwoosh-subscribe-widget__popover__visible')\n && !(ev.target as any).classList.contains('pushwoosh-subscribe-widget__popover')\n && (ev.target as any).closest('.pushwoosh-subscribe-widget__popover') === null\n && !(ev.target as any).classList.contains('pushwoosh-subscribe-widget__bell-button')\n && (ev.target as any).closest('.pushwoosh-subscribe-widget__bell-button') === null;\n\n if (closeRule) this.popover.classList.remove('pushwoosh-subscribe-widget__popover__visible');\n }\n\n private async onUnsubscribeEvent() {\n const tooltipContent = this.tooltip.querySelector('div');\n\n if (tooltipContent === null) {\n return;\n }\n\n tooltipContent.innerText = await this.tooltipTextFactory();\n }\n}\n","export default (fillColor: string, strokeColor: string) => {\n return '<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\\n'\n + '<svg\\n'\n + ' xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\\n'\n + ' xmlns:cc=\"http://creativecommons.org/ns#\"\\n'\n + ' xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\\n'\n + ' xmlns:svg=\"http://www.w3.org/2000/svg\"\\n'\n + ' xmlns=\"http://www.w3.org/2000/svg\"\\n'\n + ' xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\"\\n'\n + ' xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\"\\n'\n + ' version=\"1.1\"\\n'\n + ' id=\"Capa_1\"\\n'\n + ' x=\"0px\"\\n'\n + ' y=\"0px\"\\n'\n + ' viewBox=\"0 0 346.013 346.013\"\\n'\n + ' style=\"enable-background:new 0 0 346.013 346.013;width: 80%; height: auto; vertical-align: middle;\"\\n'\n + ' xml:space=\"preserve\"\\n'\n + ' inkscape:version=\"0.91 r13725\"\\n'\n + ' sodipodi:docname=\"alarm_white.svg\"><metadata\\n'\n + ' id=\"metadata51\"><rdf:RDF><cc:Work\\n'\n + ' rdf:about=\"\"><dc:format>image/svg+xml</dc:format><dc:type\\n'\n + ' rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs\\n'\n + ' id=\"defs49\" /><sodipodi:namedview\\n'\n + ' borderopacity=\"1\"\\n'\n + ' objecttolerance=\"10\"\\n'\n + ' gridtolerance=\"10\"\\n'\n + ' guidetolerance=\"10\"\\n'\n + ' inkscape:pageopacity=\"0\"\\n'\n + ' inkscape:pageshadow=\"2\"\\n'\n + ' inkscape:window-width=\"1618\"\\n'\n + ' inkscape:window-height=\"828\"\\n'\n + ' id=\"namedview47\"\\n'\n + ' showgrid=\"false\"\\n'\n + ' inkscape:zoom=\"0.6820553\"\\n'\n + ' inkscape:cx=\"173.0065\"\\n'\n + ' inkscape:cy=\"173.0065\"\\n'\n + ' inkscape:window-x=\"0\"\\n'\n + ' inkscape:window-y=\"0\"\\n'\n + ' inkscape:window-maximized=\"0\"\\n'\n + ' inkscape:current-layer=\"g3\" /><g\\n'\n + ' id=\"g3\"><path\\n'\n + ' d=\"m 256.76227,220.19006 c -1.77513,-2.69766 -3.45154,-5.24564 -3.98966,-7.46382 -0.042,-0.17861 -0.0911,-0.36128 -0.16237,-0.61436 -2.28354,-7.67647 0.69147,-24.43921 2.46886,-34.45124 0.26788,-1.50394 0.52274,-2.94197 0.75286,-4.29035 0.0232,-0.13675 0.044,-0.27211 0.0724,-0.48006 1.95582,-15.28051 2.58811,-37.91956 -5.51044,-58.99147 -5.6032,-14.57978 -14.45978,-25.82612 -26.3559,-33.48393 1.26598,-9.812938 -4.85967,-19.343691 -14.66682,-22.0511 -9.80715,-2.70741 -19.95724,2.33226 -23.90298,11.405413 -14.1382,0.467533 -27.51111,5.577097 -39.80114,15.219267 -17.76129,13.9298 -28.83431,33.68757 -34.99389,47.80757 l -0.0479,0.11335 c -0.0512,0.12175 -0.0998,0.24114 -0.13249,0.32962 -0.49733,1.28292 -1.01552,2.64514 -1.55689,4.07255 -3.61311,9.51043 -9.66004,25.42824 -15.611995,30.89342 -0.106524,0.10027 -0.208228,0.20187 -0.362362,0.35435 -1.636243,1.66563 -4.382941,2.99463 -7.288979,4.40101 -7.145531,3.45301 -22.013613,10.64166 -17.206389,31.67844 0.929154,4.07105 4.008437,7.29057 8.033861,8.40185 l 167.570804,46.2604 c 4.02253,1.11048 8.31521,-0.0729 11.2052,-3.08958 14.91617,-15.58874 5.84693,-29.38668 1.48625,-36.02133 z\"\\n'\n + ' id=\"path5\"\\n'\n + ' inkscape:connector-curvature=\"0\"\\n'\n + ' vector-effect=\"non-scaling-stroke\"\\n'\n + ` style=\"fill:${fillColor}; stroke: ${strokeColor}; stroke-width: 1; \" /><path\\n`\n + ' vector-effect=\"non-scaling-stroke\"\\n'\n + ' d=\"m 174.26737,259.72378 -38.76399,-10.70137 c -1.59243,-0.43962 -3.28183,-0.15596 -4.63548,0.7754 -2.53909,1.7494 -2.84182,4.93159 -3.02304,6.83188 l -0.0151,0.15247 c -1.22819,12.67106 6.79854,24.33046 19.08688,27.72284 12.51583,3.45518 25.8324,-2.91586 30.9681,-14.80385 l 0.0935,-0.19205 c 0.52305,-1.06418 1.74613,-3.55554 0.50882,-6.31116 -0.44302,-0.98439 -1.5794,-2.74529 -4.21964,-3.47416 z\"\\n'\n + ' id=\"path7\"\\n'\n + ' inkscape:connector-curvature=\"0\"\\n'\n + ` style=\"fill:${fillColor}; stroke: ${strokeColor}; stroke-width: 1;\" /></g><g\\n`\n + ' id=\"g17\" /><g\\n'\n + ' id=\"g19\" /><g\\n'\n + ' id=\"g21\" /><g\\n'\n + ' id=\"g23\" /><g\\n'\n + ' id=\"g25\" /><g\\n'\n + ' id=\"g27\" /><g\\n'\n + ' id=\"g29\" /><g\\n'\n + ' id=\"g31\" /><g\\n'\n + ' id=\"g33\" /><g\\n'\n + ' id=\"g35\" /><g\\n'\n + ' id=\"g37\" /><g\\n'\n + ' id=\"g39\" /><g\\n'\n + ' id=\"g41\" /><g\\n'\n + ' id=\"g43\" /><g\\n'\n + ' id=\"g45\" /></svg>';\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","PERMISSION_DENIED","PERMISSION_GRANTED","PERMISSION_PROMPT","BELL_POSITION_BOTTOM_RIGHT","BELL_POSITION_BOTTOM_LEFT","BELL_POSITION_TOP_RIGHT","BELL_POSITION_TOP_LEFT","SUBSCRIBE_WIDGET_DEFAULT_CONFIG","position","bgColor","bellColor","bellStrokeColor","bellButtonBorder","shadow","size","indent","zIndex","tooltipText","successSubscribe","needSubscribe","blockSubscribe","alreadySubscribed","Positioning","getBellPosition","positionStyles","top","left","bottom","right","getTooltipPosition","bellPosition","bellSize","tooltipModification","increaseIndent","parseInt","getPopoverPosition","popoverModification","getPopoverArrowPosition","arrowAdditionalStyles","PWSubscriptionButtonWidget","constructor","pw","platformChecker","isAvailableNotifications","console","warn","clickBell","bind","onSubscribeEvent","onUnsubscribeEvent","onPermissionDeniedEvent","clickOutOfPopover","assign","initParams","subscribeWidget","config","run","isSubscribed","render","addStylesToElement","styles","element","keys","forEach","st","style","createContainer","container","document","createElement","id","className","createStyle","styleNode","innerHTML","createBell","bell","fillColor","strokeColor","buttonImage","src","backgroundColor","boxShadow","lineHeight","border","width","height","createTooltip","tooltip","modification","appendChild","createTooltipContent","tooltipContent","innerText","tooltipTextFactory","permission","driver","getPermission","isManuallyUnsubscribed","data","getStatusManualUnsubscribed","createPopover","popoverContentWrapper","popover","maxWidth","createPopoverContent","getBrowserName","browser","isOpera","platform","navigator","userAgent","match","popoverContent","userImageSrc","contentImages","image","standardImage","opera","mobileChrome","firefox","safari","getImageSrc","imageAttrs","img","widget","body","push","addEventListeners","addEventListener","window","toggleHelpPopover","classList","toggle","subscribe","querySelector","add","setTimeout","async","remove","ev","contains","target","closest"],"ignoreList":[],"sourceRoot":""}