{"version":3,"sources":["webpack:///./app/assets/javascripts/lib/layoutUtils.ts","webpack:///./app/assets/javascripts/components/header-categories.ts","webpack:///./app/assets/javascripts/components/charge.js","webpack:///./app/assets/javascripts/reactjs/app.js","webpack:///./app/javascript/packs/application.js"],"names":["layoutDisableScroll","disableScroll","oWrapper","document","getElementById","err","Error","name","classList","add","remove","navbar","headerCategories","dropdownTrigger","dropdownTriggerIcon","querySelector","dropdown","dropdownBackdrop","mobileDropdownBackdrop","modifyDropdownPosition","style","top","getBoundingClientRect","bottom","hidden","addEventListener","e","stopPropagation","setHidden","window","innerWidth","contains","_hidden","className","initHeaderDropdownCategories","chargeButtons","querySelectorAll","beforeUnloadCallback","event","unloadMessage","preventDefault","returnValue","setAllChargeButtonsDisable","disabled","forEach","chargeButton","textContent","setAttribute","charge","orderId","fetch","method","credentials","headers","getAuthToken","target","dataset","response","ok","removeEventListener","json","charge_url","location","assign","errors","triggerAlertDialog","children","positiveButtonText","captureException","renderCustomerChat","ReactOnRails","register","BrowserDetector","noHydrate","Message","lazyHydrate","CouponBanner","CategoryBanner","CategoryProducts","OrderInfo","BannerSlider","BrowsingHistorySlider","Cool3CBrowsingHistorySlider","TopSellersSlider","JustBoughtSlider","MightLikeSlider","ujs","start"],"mappings":"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","file":"js/application-c80df6cb11f7c0819499.chunk.js","sourcesContent":["export function layoutDisableScroll(disableScroll: boolean = true) {\n const oWrapper = document.getElementById('o-wrapper');\n\n if (!oWrapper) {\n const err = new Error('Call layoutDisableScroll without o-wrapper in DOM');\n err.name = 'LayoutUtilsError';\n throw err;\n }\n\n if (disableScroll) oWrapper.classList.add('disable-scroll');\n else oWrapper.classList.remove('disable-scroll');\n}\n","import { layoutDisableScroll } from '../lib/layoutUtils';\n\nconst navbar = document.getElementById('global-navbar');\nconst headerCategories = document.getElementById('header-categories');\nconst dropdownTrigger = document.getElementById('dropdown-categories-trigger');\nconst dropdownTriggerIcon = dropdownTrigger?.querySelector('i');\nconst dropdown = document.getElementById('dropdown-categories');\nconst dropdownBackdrop = document.getElementById(\n 'dropdown-categories-backdrop'\n);\nconst mobileDropdownBackdrop = document.getElementById(\n 'mobile-dropdown-categories-backdrop'\n);\n\nfunction modifyDropdownPosition() {\n dropdownBackdrop!.style.top = `${\n headerCategories!.getBoundingClientRect().bottom\n }px`;\n\n mobileDropdownBackdrop!.style.top = `${\n navbar!.getBoundingClientRect().bottom\n }px`;\n}\n\nfunction initHeaderDropdownCategories() {\n if (\n !headerCategories ||\n !dropdownTrigger ||\n !dropdownTriggerIcon ||\n !dropdown ||\n !dropdownBackdrop ||\n !mobileDropdownBackdrop\n )\n return;\n\n let hidden = true;\n\n function updateState() {\n if (hidden) {\n dropdownTriggerIcon!.className = 'icon-chevron-down-regular';\n\n dropdownBackdrop!.classList.add('hidden');\n mobileDropdownBackdrop!.classList.add('hidden');\n\n layoutDisableScroll(false);\n } else {\n layoutDisableScroll(true);\n\n dropdownTriggerIcon!.className = 'icon-chevron-up-regular';\n\n modifyDropdownPosition();\n\n if (window.innerWidth < 768) {\n mobileDropdownBackdrop!.classList.remove('hidden');\n } else {\n dropdownBackdrop!.classList.remove('hidden');\n }\n }\n }\n\n function setHidden(_hidden: boolean) {\n hidden = _hidden;\n updateState();\n }\n\n dropdown.addEventListener('click', (e) => {\n e.stopPropagation();\n });\n\n dropdownTrigger.addEventListener('click', () => {\n setHidden(!hidden);\n });\n\n dropdownBackdrop.addEventListener('click', () => {\n setHidden(true);\n });\n\n mobileDropdownBackdrop.addEventListener('click', () => {\n setHidden(true);\n });\n\n window.addEventListener(\n 'resize',\n () => {\n if (\n window.innerWidth < 768 &&\n !dropdownBackdrop.classList.contains('hidden')\n ) {\n dropdownBackdrop.classList.add('hidden');\n mobileDropdownBackdrop.classList.remove('hidden');\n } else if (\n window.innerWidth >= 768 &&\n window.innerWidth < 992 &&\n !mobileDropdownBackdrop.classList.contains('hidden')\n ) {\n mobileDropdownBackdrop.classList.add('hidden');\n dropdownBackdrop.classList.remove('hidden');\n } else if (\n window.innerWidth >= 992 &&\n !dropdownBackdrop.classList.contains('hidden')\n ) {\n setHidden(!hidden);\n }\n\n modifyDropdownPosition();\n },\n true\n );\n}\n\ninitHeaderDropdownCategories();\n\nexport {};\n","import { triggerAlertDialog } from '@polydice/ui/dist/Dialog';\nimport { captureException } from '@sentry/browser';\nimport { getAuthToken } from 'reactjs/components/utility';\n\nconst chargeButtonSelector = '.js-order-go-charge';\nconst chargeButtons = document.querySelectorAll(chargeButtonSelector);\n\nconst beforeUnloadCallback = (event) => {\n const unloadMessage = '付款程序進行中,請稍候';\n event.preventDefault();\n event.returnValue = unloadMessage; // eslint-disable-line no-param-reassign\n return unloadMessage;\n};\n\nconst setAllChargeButtonsDisable = (disabled) => {\n chargeButtons.forEach((chargeButton) => {\n if (disabled) {\n chargeButton.textContent = '請稍候...';\n chargeButton.setAttribute('disabled', true);\n chargeButton.classList.add('payment-status_phase__link--disable');\n } else {\n chargeButton.textContent = '選擇付款方式';\n chargeButton.setAttribute('disabled', false);\n chargeButton.classList.remove('payment-status_phase__link--disable');\n }\n });\n};\n\nconst beforeCharge = () => {\n setAllChargeButtonsDisable(true);\n window.addEventListener('beforeUnload', beforeUnloadCallback);\n};\n\nconst afterCharge = () => {\n setAllChargeButtonsDisable(false);\n window.removeEventListener('beforeunload', beforeUnloadCallback);\n};\n\nconst charge = (orderId) =>\n fetch(`/orders/${orderId}/charge`, {\n method: 'POST',\n credentials: 'include',\n headers: {\n 'X-CSRF-Token': getAuthToken()\n }\n });\n\nchargeButtons.forEach((chargeButton) => {\n chargeButton.addEventListener('click', async (event) => {\n beforeCharge();\n\n try {\n const response = await charge(event.target.dataset.orderId);\n\n if (response.ok) {\n afterCharge();\n const { charge_url } = await response.json();\n window.location.assign(charge_url);\n } else {\n const { errors } = await response.json();\n triggerAlertDialog({\n children: errors[0],\n positiveButtonText: '確定'\n });\n }\n } catch (error) {\n captureException(error);\n }\n });\n});\n\nexport default charge;\n","import { renderCustomerChat } from './components/CustomerChat';\nrenderCustomerChat();\n\nimport ReactOnRails from 'react-on-rails';\nimport { lazyHydrate, noHydrate } from './utils/hydrate';\n\nReactOnRails.register({\n BrowserDetector: noHydrate,\n Message: lazyHydrate(() =>\n import(/* webpackChunkName: \"Message\" */ './components/Message')\n ),\n CouponBanner: lazyHydrate(() =>\n import(/* webpackChunkName: \"CouponBanner\" */ './components/CouponBanner')\n ),\n CategoryBanner: lazyHydrate(() =>\n import(\n /* webpackChunkName: \"CategoryBanner\" */ './components/Category/CategoryBanner'\n )\n ),\n CategoryProducts: lazyHydrate(() =>\n import(\n /* webpackChunkName: \"CategoryProducts\" */ './components/Category/CategoryProducts'\n )\n ),\n OrderInfo: lazyHydrate(() =>\n import(/* webpackChunkName: \"OrderInfo\" */ './components/Order/OrderInfo')\n ),\n BannerSlider: lazyHydrate(() =>\n import(\n /* webpackChunkName: \"BannerSlider\" */ './components/Home/BannerSlider'\n )\n ),\n BrowsingHistorySlider: lazyHydrate(() =>\n import(\n /* webpackChunkName: \"BrowsingHistorySlider\" */ './components/Home/BrowsingHistorySlider'\n )\n ),\n Cool3CBrowsingHistorySlider: lazyHydrate(() =>\n import(\n /* webpackChunkName: \"Cool3CBrowsingHistorySlider\" */ './components/Home/Cool3CBrowsingHistorySlider'\n )\n ),\n TopSellersSlider: lazyHydrate(() =>\n import(\n /* webpackChunkName: \"TopSellersSlider\" */ './components/Home/TopSellersSlider'\n )\n ),\n JustBoughtSlider: lazyHydrate(() =>\n import(\n /* webpackChunkName: \"JustBoughtSlider\" */ './components/Home/JustBoughtSlider'\n )\n ),\n MightLikeSlider: lazyHydrate(() =>\n import(\n /* webpackChunkName: \"MightLikeSlider\" */ './components/Home/MightLikeSlider'\n )\n )\n});\n","import 'stylesheets/application-webpack.scss';\n\nimport '../../assets/javascripts/adUnifiedId';\nimport '../../assets/javascripts/components/sentry';\nimport '../../assets/javascripts/components/facebook';\nimport '../../assets/javascripts/components/header-categories';\n\nimport ujs from '@rails/ujs';\nujs.start();\n\nimport '@polydice/icook-navbar';\nimport '../../assets/javascripts/components/categoriesNav';\nimport '../../assets/javascripts/components/webviewTrack';\n\nimport '../../assets/javascripts/components/charge';\nimport '../../assets/javascripts/reactjs/app';\n"],"sourceRoot":""}