{"version":3,"file":"index-D6oKBdrG.js","sources":["../../../node_modules/react-countdown/dist/index.es.js","../../../app/javascript/src/shoppe/compositions/Megaphone/index.tsx"],"sourcesContent":["import { cloneElement, Component, createRef, createElement } from 'react';\nimport { number, element, func, oneOfType, instanceOf, string, bool } from 'prop-types';\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction zeroPad(value) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n var strValue = String(value);\n if (length === 0) return strValue;\n var match = strValue.match(/(.*?)([0-9]+)(.*)/);\n var prefix = match ? match[1] : '';\n var suffix = match ? match[3] : '';\n var strNo = match ? match[2] : strValue;\n var paddedNo = strNo.length >= length ? strNo : (_toConsumableArray(Array(length)).map(function () {\n return '0';\n }).join('') + strNo).slice(length * -1);\n return \"\".concat(prefix).concat(paddedNo).concat(suffix);\n}\nvar timeDeltaFormatOptionsDefaults = {\n daysInHours: false,\n zeroPadTime: 2\n};\nfunction calcTimeDelta(date) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$now = options.now,\n now = _options$now === void 0 ? Date.now : _options$now,\n _options$precision = options.precision,\n precision = _options$precision === void 0 ? 0 : _options$precision,\n controlled = options.controlled,\n _options$offsetTime = options.offsetTime,\n offsetTime = _options$offsetTime === void 0 ? 0 : _options$offsetTime,\n overtime = options.overtime;\n var startTimestamp;\n\n if (typeof date === 'string') {\n startTimestamp = new Date(date).getTime();\n } else if (date instanceof Date) {\n startTimestamp = date.getTime();\n } else {\n startTimestamp = date;\n }\n\n if (!controlled) {\n startTimestamp += offsetTime;\n }\n\n var timeLeft = controlled ? startTimestamp : startTimestamp - now();\n var clampedPrecision = Math.min(20, Math.max(0, precision));\n var total = Math.round(parseFloat(((overtime ? timeLeft : Math.max(0, timeLeft)) / 1000).toFixed(clampedPrecision)) * 1000);\n var seconds = Math.abs(total) / 1000;\n return {\n total: total,\n days: Math.floor(seconds / (3600 * 24)),\n hours: Math.floor(seconds / 3600 % 24),\n minutes: Math.floor(seconds / 60 % 60),\n seconds: Math.floor(seconds % 60),\n milliseconds: Number((seconds % 1 * 1000).toFixed()),\n completed: total <= 0\n };\n}\nfunction formatTimeDelta(timeDelta, options) {\n var days = timeDelta.days,\n hours = timeDelta.hours,\n minutes = timeDelta.minutes,\n seconds = timeDelta.seconds;\n\n var _Object$assign = Object.assign(Object.assign({}, timeDeltaFormatOptionsDefaults), options),\n daysInHours = _Object$assign.daysInHours,\n zeroPadTime = _Object$assign.zeroPadTime,\n _Object$assign$zeroPa = _Object$assign.zeroPadDays,\n zeroPadDays = _Object$assign$zeroPa === void 0 ? zeroPadTime : _Object$assign$zeroPa;\n\n var zeroPadTimeLength = Math.min(2, zeroPadTime);\n var formattedHours = daysInHours ? zeroPad(hours + days * 24, zeroPadTime) : zeroPad(hours, zeroPadTimeLength);\n return {\n days: daysInHours ? '' : zeroPad(days, zeroPadDays),\n hours: formattedHours,\n minutes: zeroPad(minutes, zeroPadTimeLength),\n seconds: zeroPad(seconds, zeroPadTimeLength)\n };\n}\n\nvar Countdown = function (_React$Component) {\n _inherits(Countdown, _React$Component);\n\n var _super = _createSuper(Countdown);\n\n function Countdown() {\n var _this;\n\n _classCallCheck(this, Countdown);\n\n _this = _super.apply(this, arguments);\n _this.state = {\n count: _this.props.count || 3\n };\n\n _this.startCountdown = function () {\n _this.interval = window.setInterval(function () {\n var count = _this.state.count - 1;\n\n if (count === 0) {\n _this.stopCountdown();\n\n _this.props.onComplete && _this.props.onComplete();\n } else {\n _this.setState(function (prevState) {\n return {\n count: prevState.count - 1\n };\n });\n }\n }, 1000);\n };\n\n _this.stopCountdown = function () {\n clearInterval(_this.interval);\n };\n\n _this.addTime = function (seconds) {\n _this.stopCountdown();\n\n _this.setState(function (prevState) {\n return {\n count: prevState.count + seconds\n };\n }, _this.startCountdown);\n };\n\n return _this;\n }\n\n _createClass(Countdown, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.startCountdown();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n clearInterval(this.interval);\n }\n }, {\n key: \"render\",\n value: function render() {\n return this.props.children ? cloneElement(this.props.children, {\n count: this.state.count\n }) : null;\n }\n }]);\n\n return Countdown;\n}(Component);\nCountdown.propTypes = {\n count: number,\n children: element,\n onComplete: func\n};\n\nvar Countdown$1 = function (_React$Component) {\n _inherits(Countdown$1, _React$Component);\n\n var _super = _createSuper(Countdown$1);\n\n function Countdown$1(props) {\n var _this;\n\n _classCallCheck(this, Countdown$1);\n\n _this = _super.call(this, props);\n _this.mounted = false;\n _this.initialTimestamp = _this.calcOffsetStartTimestamp();\n _this.offsetStartTimestamp = _this.props.autoStart ? 0 : _this.initialTimestamp;\n _this.offsetTime = 0;\n _this.legacyMode = false;\n _this.legacyCountdownRef = createRef();\n\n _this.tick = function () {\n var timeDelta = _this.calcTimeDelta();\n\n var callback = timeDelta.completed && !_this.props.overtime ? undefined : _this.props.onTick;\n\n _this.setTimeDeltaState(timeDelta, undefined, callback);\n };\n\n _this.start = function () {\n if (_this.isStarted()) return;\n var prevOffsetStartTimestamp = _this.offsetStartTimestamp;\n _this.offsetStartTimestamp = 0;\n _this.offsetTime += prevOffsetStartTimestamp ? _this.calcOffsetStartTimestamp() - prevOffsetStartTimestamp : 0;\n\n var timeDelta = _this.calcTimeDelta();\n\n _this.setTimeDeltaState(timeDelta, \"STARTED\", _this.props.onStart);\n\n if (!_this.props.controlled && (!timeDelta.completed || _this.props.overtime)) {\n _this.clearTimer();\n\n _this.interval = window.setInterval(_this.tick, _this.props.intervalDelay);\n }\n };\n\n _this.pause = function () {\n if (_this.isPaused()) return;\n\n _this.clearTimer();\n\n _this.offsetStartTimestamp = _this.calcOffsetStartTimestamp();\n\n _this.setTimeDeltaState(_this.state.timeDelta, \"PAUSED\", _this.props.onPause);\n };\n\n _this.stop = function () {\n if (_this.isStopped()) return;\n\n _this.clearTimer();\n\n _this.offsetStartTimestamp = _this.calcOffsetStartTimestamp();\n _this.offsetTime = _this.offsetStartTimestamp - _this.initialTimestamp;\n\n _this.setTimeDeltaState(_this.calcTimeDelta(), \"STOPPED\", _this.props.onStop);\n };\n\n _this.isStarted = function () {\n return _this.isStatus(\"STARTED\");\n };\n\n _this.isPaused = function () {\n return _this.isStatus(\"PAUSED\");\n };\n\n _this.isStopped = function () {\n return _this.isStatus(\"STOPPED\");\n };\n\n _this.isCompleted = function () {\n return _this.isStatus(\"COMPLETED\");\n };\n\n if (props.date) {\n var timeDelta = _this.calcTimeDelta();\n\n _this.state = {\n timeDelta: timeDelta,\n status: timeDelta.completed ? \"COMPLETED\" : \"STOPPED\"\n };\n } else {\n _this.legacyMode = true;\n }\n\n return _this;\n }\n\n _createClass(Countdown$1, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.legacyMode) {\n return;\n }\n\n this.mounted = true;\n if (this.props.onMount) this.props.onMount(this.calcTimeDelta());\n if (this.props.autoStart) this.start();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n if (this.legacyMode) {\n return;\n }\n\n if (this.props.date !== prevProps.date) {\n this.initialTimestamp = this.calcOffsetStartTimestamp();\n this.offsetStartTimestamp = this.initialTimestamp;\n this.offsetTime = 0;\n this.setTimeDeltaState(this.calcTimeDelta());\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.legacyMode) {\n return;\n }\n\n this.mounted = false;\n this.clearTimer();\n }\n }, {\n key: \"calcTimeDelta\",\n value: function calcTimeDelta$1() {\n var _this$props = this.props,\n date = _this$props.date,\n now = _this$props.now,\n precision = _this$props.precision,\n controlled = _this$props.controlled,\n overtime = _this$props.overtime;\n return calcTimeDelta(date, {\n now: now,\n precision: precision,\n controlled: controlled,\n offsetTime: this.offsetTime,\n overtime: overtime\n });\n }\n }, {\n key: \"calcOffsetStartTimestamp\",\n value: function calcOffsetStartTimestamp() {\n return Date.now();\n }\n }, {\n key: \"addTime\",\n value: function addTime(seconds) {\n this.legacyCountdownRef.current.addTime(seconds);\n }\n }, {\n key: \"clearTimer\",\n value: function clearTimer() {\n window.clearInterval(this.interval);\n }\n }, {\n key: \"isStatus\",\n value: function isStatus(status) {\n return this.state.status === status;\n }\n }, {\n key: \"setTimeDeltaState\",\n value: function setTimeDeltaState(timeDelta, status, callback) {\n var _this2 = this;\n\n if (!this.mounted) return;\n var completing = timeDelta.completed && !this.state.timeDelta.completed;\n var completedOnStart = timeDelta.completed && status === \"STARTED\";\n\n if (completing && !this.props.overtime) {\n this.clearTimer();\n }\n\n var onDone = function onDone() {\n if (callback) callback(_this2.state.timeDelta);\n\n if (_this2.props.onComplete && (completing || completedOnStart)) {\n _this2.props.onComplete(timeDelta, completedOnStart);\n }\n };\n\n return this.setState(function (prevState) {\n var newStatus = status || prevState.status;\n\n if (timeDelta.completed && !_this2.props.overtime) {\n newStatus = \"COMPLETED\";\n } else if (!status && newStatus === \"COMPLETED\") {\n newStatus = \"STOPPED\";\n }\n\n return {\n timeDelta: timeDelta,\n status: newStatus\n };\n }, onDone);\n }\n }, {\n key: \"getApi\",\n value: function getApi() {\n return this.api = this.api || {\n start: this.start,\n pause: this.pause,\n stop: this.stop,\n isStarted: this.isStarted,\n isPaused: this.isPaused,\n isStopped: this.isStopped,\n isCompleted: this.isCompleted\n };\n }\n }, {\n key: \"getRenderProps\",\n value: function getRenderProps() {\n var _this$props2 = this.props,\n daysInHours = _this$props2.daysInHours,\n zeroPadTime = _this$props2.zeroPadTime,\n zeroPadDays = _this$props2.zeroPadDays;\n var timeDelta = this.state.timeDelta;\n return Object.assign(Object.assign({}, timeDelta), {\n api: this.getApi(),\n props: this.props,\n formatted: formatTimeDelta(timeDelta, {\n daysInHours: daysInHours,\n zeroPadTime: zeroPadTime,\n zeroPadDays: zeroPadDays\n })\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n if (this.legacyMode) {\n var _this$props3 = this.props,\n count = _this$props3.count,\n _children = _this$props3.children,\n onComplete = _this$props3.onComplete;\n return createElement(Countdown, {\n ref: this.legacyCountdownRef,\n count: count,\n onComplete: onComplete\n }, _children);\n }\n\n var _this$props4 = this.props,\n className = _this$props4.className,\n overtime = _this$props4.overtime,\n children = _this$props4.children,\n renderer = _this$props4.renderer;\n var renderProps = this.getRenderProps();\n\n if (renderer) {\n return renderer(renderProps);\n }\n\n if (children && this.state.timeDelta.completed && !overtime) {\n return cloneElement(children, {\n countdown: renderProps\n });\n }\n\n var _renderProps$formatte = renderProps.formatted,\n days = _renderProps$formatte.days,\n hours = _renderProps$formatte.hours,\n minutes = _renderProps$formatte.minutes,\n seconds = _renderProps$formatte.seconds;\n return createElement(\"span\", {\n className: className\n }, renderProps.total < 0 ? '-' : '', days, days ? ':' : '', hours, \":\", minutes, \":\", seconds);\n }\n }]);\n\n return Countdown$1;\n}(Component);\nCountdown$1.defaultProps = Object.assign(Object.assign({}, timeDeltaFormatOptionsDefaults), {\n controlled: false,\n intervalDelay: 1000,\n precision: 0,\n autoStart: true\n});\nCountdown$1.propTypes = {\n date: oneOfType([instanceOf(Date), string, number]),\n daysInHours: bool,\n zeroPadTime: number,\n zeroPadDays: number,\n controlled: bool,\n intervalDelay: number,\n precision: number,\n autoStart: bool,\n overtime: bool,\n className: string,\n children: element,\n renderer: func,\n now: func,\n onMount: func,\n onStart: func,\n onPause: func,\n onStop: func,\n onTick: func,\n onComplete: func\n};\n\nexport default Countdown$1;\nexport { calcTimeDelta, formatTimeDelta, zeroPad };\n","/* eslint-disable no-restricted-syntax */\nimport React from 'react';\nimport cls from 'classnames';\n\nimport { useApiObject } from 'src/explore/hooks/useApiObject';\nimport { useShopConfig } from 'src/explore/hooks/useShopConfig';\nimport { IMegaphone } from 'src/explore/types/shoppe';\nimport { Markdown } from 'src/explore/elements/Markdown';\nimport { isNativeMobileApp } from 'src/explore/services/mobile';\nimport Countdown from 'react-countdown';\n\nimport moment from 'moment-timezone';\nimport styles from './index.module.sass';\n\nconst hex = ( color: string | null ) => {\n if ( !color ) return undefined;\n\n return color.replace( /(^[^#])/, '#$1' );\n};\n\nconst parseCountdown = ( description: string, expiresAt: string ) => {\n if ( !description.match( /\\{COUNTDOWN.*}/ )) return null;\n\n const countDown = description.match( /\\{COUNTDOWN_[0-2][0-9]}/ ); // Do we still want the old approach?\n if ( countDown !== null ) {\n const countDownTime = countDown[0].match( /[0-2][0-9]/ );\n const countDownDate = moment()\n .tz( 'America/New_York' )\n .startOf( 'day' )\n .hours( parseInt( countDownTime[0], 10 ));\n if ( moment().diff( countDownDate ) > 0 ) {\n countDownDate.add( 1, 'day' );\n }\n return countDownDate;\n }\n if ( !expiresAt ) return null;\n return moment( expiresAt );\n};\n\nexport const Megaphone = () => {\n const config = useShopConfig();\n\n const [ activeMessage, setActiveMessage ] = React.useState<IMegaphone | null>( null );\n\n const { data } = useApiObject<{ data: IMegaphone[] }>( '/megaphone_messages', {\n apiPathOverride: '/api/v4/',\n camelCaseKeys: true,\n });\n\n // Find the first megaphone for this page\n // megaphones are already sorted by priority on the backend\n // app/controllers/explore/api/megaphone_messages_controller.rb\n React.useEffect(() => {\n let current: IMegaphone = null;\n\n if ( data?.data ) {\n for ( const message of data.data ) {\n for ( const regex of message.regexes ) {\n if ( window.location.pathname.match( regex )) {\n current = message;\n break;\n }\n }\n if ( current ) {\n break;\n }\n }\n }\n\n if ( current ) {\n setActiveMessage({\n ...current,\n backgroundColor: hex( current.backgroundColor ),\n textColor: hex( current.textColor ),\n });\n }\n }, [ data ]);\n\n if ( !activeMessage || isNativeMobileApp()) return null;\n\n const { backgroundColor, description, expiresAt, icon, title, megaphoneType, textColor } =\n activeMessage;\n const descriptionWithoutCountdown = description.replace( /\\{COUNTDOWN.*}/, '' );\n const countDownDate = parseCountdown( description, expiresAt );\n\n return (\n <div className=\"bs4\">\n <div\n className={cls( styles.wrapper, styles[megaphoneType], {\n [styles.whitelabel]: config.isWhitelabel,\n [styles[config.merchantPermalink]]: !!config.merchantPermalink,\n [styles.withCountdown]: countDownDate !== null,\n })}\n style={{ backgroundColor, color: textColor }}\n >\n <div\n className={cls(\n styles.container,\n 'd-flex flex-column align-items-center justify-content-center mx-auto'\n )}\n >\n {icon && <div className=\"fs-9 mx-2\">{icon}</div>}\n {title && (\n <div className={cls( styles.title, 'font-weight-bold' )}>\n {title.trim()}\n <span className={styles.titleSpace}> </span>\n </div>\n )}\n <div className={cls( styles.descriptionContainer )}>\n {descriptionWithoutCountdown && (\n <Markdown\n className={cls(\n styles.markdown,\n { 'fs-3': megaphoneType === 'marketing' },\n styles.description\n )}\n >\n {descriptionWithoutCountdown}\n </Markdown>\n )}\n {countDownDate !== null && (\n <Countdown className={styles.countdown} daysInHours date={countDownDate.format( '' )} />\n )}\n </div>\n </div>\n </div>\n </div>\n );\n};\n"],"names":["_classCallCheck","instance","Constructor","_defineProperties","target","props","i","descriptor","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","o","p","_isNativeReflectConstruct","_assertThisInitialized","self","_possibleConstructorReturn","call","_createSuper","Derived","hasNativeReflectConstruct","Super","result","NewTarget","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","iter","minLen","n","len","arr2","zeroPad","value","length","strValue","match","prefix","suffix","strNo","paddedNo","timeDeltaFormatOptionsDefaults","calcTimeDelta","date","options","_options$now","now","_options$precision","precision","controlled","_options$offsetTime","offsetTime","overtime","startTimestamp","timeLeft","clampedPrecision","total","seconds","formatTimeDelta","timeDelta","days","hours","minutes","_Object$assign","daysInHours","zeroPadTime","_Object$assign$zeroPa","zeroPadDays","zeroPadTimeLength","formattedHours","Countdown","_React$Component","_super","_this","count","prevState","cloneElement","Component","number","element","func","Countdown$1","createRef","callback","prevOffsetStartTimestamp","prevProps","_this$props","status","_this2","completing","completedOnStart","onDone","newStatus","_this$props2","_this$props3","_children","onComplete","createElement","_this$props4","className","children","renderer","renderProps","_renderProps$formatte","oneOfType","instanceOf","string","bool","hex","color","parseCountdown","description","expiresAt","countDown","countDownTime","countDownDate","moment","Megaphone","config","useShopConfig","activeMessage","setActiveMessage","React","data","useApiObject","current","message","regex","isNativeMobileApp","backgroundColor","icon","title","megaphoneType","textColor","descriptionWithoutCountdown","cls","styles","Markdown"],"mappings":"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","x_google_ignoreList":[0]}