{"version":3,"sources":["bootstrap/helper/constant.tsx","bootstrap/config/app.tsx","app/App.routing.tsx","reportWebVitals.js","bootstrap/router/components/route/Route.tsx","bootstrap/router/RouterOutlet.tsx","app/assets/locales/index.ts","app/App.tsx","bootstrap/core/App.tsx","index.tsx"],"names":["CONFIG_PATH","concat","appConfigs","AppConfig","_classCallCheck","_createClass","key","value","_loader","_asyncToGenerator","_regeneratorRuntime","mark","_callee","result","configs","prop","_prop","message","wrap","_context","prev","next","fetch","CONSTANTS","sent","json","t0","Error","stop","apply","arguments","ROUTES","NOT_FOUND","ABOUT_US","CENTRE","CENTRE_DETAILS","DISCLAIMER","FORM","FORM_CAR","FORM_SERVICE","FORM_BOOKING","FORM_PERSONAL","FORM_CONFIRMATION","FORM_SUCCESS","AMEND_FORM","AMEND_FORM_VERIFY","AMEND_FORM_SELECT","AMEND_FORM_PREVIEW","AMEND_FORM_CAR","AMEND_FORM_SERVICE","AMEND_FORM_BOOKING","AMEND_FORM_PERSONAL","AMEND_FORM_CANCEL","HOME","NEWS","NEWS_DETAILS","PRIVACY","TNC","INTERNAL_NOT_FOUND","INTERNAL_HOME","INTERNAL","INTERNAL_CUSTOMER","INTERNAL_RESOURCES","INTERNAL_ORDER","INTERNAL_PREVIEW","INTERNAL_ACCOUNT","INTERNAL_DASHBOARD","routes","path","exact","component","lazy","reportWebVitals","onPerfEntry","Function","then","_ref","getCLS","getFID","getFCP","getLCP","getTTFB","Route","props","title","meta","canActivates","Component","metaData","every","guard","canActivate","_jsx","RouteDom","render","_jsxs","_Fragment","children","Helmet","find","metaItem","name","toLowerCase","content","map","_objectSpread","RouterOutlet","basename","Switch","route","index","redirect","Redirect","to","process","replace","langResources","translation","App","useEffect","i18n","use","initReactI18next","init","resources","fallbackLng","localStorage","getItem","navigator","cookieEnabled","document","write","TagManager","initialize","gtmId","className","AppRoot","_useState","useState","_useState2","_slicedToArray","isLoaded","setIsLoaded","loader","Suspense","fallback","HelmetProvider","BrowserRouter","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.decbeb4c.chunk.js","sourcesContent":["export const CONFIG_PATH = `${process.env.PUBLIC_URL || ''}/config.json`;\n","import { CONSTANTS } from '@bootstrap/helper';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const appConfigs: any = {};\n\nexport class AppConfig {\n public async loader(): Promise {\n try {\n const result = await fetch(CONSTANTS.CONFIG_PATH);\n const configs = await result.json();\n\n for (const prop in appConfigs) {\n delete appConfigs[prop];\n }\n\n for (const prop in configs) {\n appConfigs[prop] = configs[prop];\n }\n } catch ({ message }) {\n throw new Error(message + '');\n }\n }\n}\n","import { lazy } from 'react';\nimport { Routes } from '@bootstrap/router';\n\nexport const ROUTES = {\n NOT_FOUND: '*',\n ABOUT_US: '/about-us',\n CENTRE: '/service-centres',\n CENTRE_DETAILS: '/service-centres/',\n DISCLAIMER: '/disclaimer',\n FORM: '/booking',\n FORM_CAR: '/booking/car',\n FORM_SERVICE: '/booking/service',\n FORM_BOOKING: '/booking/booking-detail',\n FORM_PERSONAL: '/booking/personal-inforrmation',\n FORM_CONFIRMATION: '/booking/confirmation',\n FORM_SUCCESS: '/booking/success',\n AMEND_FORM: '/amend-form',\n AMEND_FORM_VERIFY: '/amend-form/verification',\n AMEND_FORM_SELECT: '/amend-form/select',\n AMEND_FORM_PREVIEW: '/amend-form/preview',\n AMEND_FORM_CAR: '/amend-form/car',\n AMEND_FORM_SERVICE: '/amend-form/service',\n AMEND_FORM_BOOKING: '/amend-form/booking-detail',\n AMEND_FORM_PERSONAL: '/amend-form/personal-inforrmation',\n AMEND_FORM_CANCEL: '/amend-form/cancel',\n HOME: '/',\n NEWS: '/news',\n NEWS_DETAILS: '/news/',\n PRIVACY: '/privacy',\n TNC: '/tnc',\n INTERNAL_NOT_FOUND: '/internal/*',\n INTERNAL_HOME: '/internal-booking',\n INTERNAL: '/internal/booking',\n INTERNAL_CUSTOMER: '/internal/booking/customer-vehicle-information',\n INTERNAL_RESOURCES: '/internal/booking/resources-timeslot',\n INTERNAL_ORDER: '/internal/booking/customer-order-request',\n INTERNAL_PREVIEW: '/internal/booking/order-previews-confirmation',\n INTERNAL_ACCOUNT: '/internal/account',\n INTERNAL_DASHBOARD: '/internal/dashboard'\n};\n\nexport const routes: Routes = [\n // Basic case\n {\n path: ROUTES.HOME,\n exact: true,\n component: lazy(() => import('./views/home/Home')),\n },\n {\n path: ROUTES.FORM,\n exact: false,\n component: lazy(() => import('./views/form/Form')),\n },\n {\n path: ROUTES.AMEND_FORM,\n exact: false,\n component: lazy(() => import('./views/amend-form/AmendForm')),\n },\n {\n path: ROUTES.ABOUT_US,\n exact: true,\n component: lazy(() => import('./views/about-us/AboutUs')),\n },\n {\n path: ROUTES.CENTRE,\n exact: true,\n component: lazy(() => import('./views/centre/Centre')),\n },\n {\n path: ROUTES.CENTRE_DETAILS,\n exact: false,\n component: lazy(() => import('./views/centre/CentreDetail')),\n },\n {\n path: ROUTES.DISCLAIMER,\n exact: true,\n component: lazy(() => import('./views/disclaimer/Disclaimer')),\n },\n {\n path: ROUTES.NEWS,\n exact: true,\n component: lazy(() => import('./views/news/News')),\n },\n {\n path: ROUTES.NEWS_DETAILS,\n exact: false,\n component: lazy(() => import('./views/news/NewsDetails')),\n },\n {\n path: ROUTES.PRIVACY,\n exact: true,\n component: lazy(() => import('./views/privacy/Privacy')),\n },\n {\n path: ROUTES.TNC,\n exact: true,\n component: lazy(() => import('./views/tnc/TnC')),\n },\n {\n path: ROUTES.INTERNAL_HOME,\n exact: true,\n component: lazy(() => import('./views/internal/InternalHome')),\n },\n {\n path: ROUTES.INTERNAL,\n exact: false,\n component: lazy(() => import('./views/internal/Internal')),\n },\n {\n path: ROUTES.INTERNAL_ACCOUNT,\n exact: true,\n component: lazy(() => import('./views/internal/InternalAccount')),\n },\n {\n path: ROUTES.INTERNAL_DASHBOARD,\n exact: true,\n component: lazy(() => import('./views/internal/InternalDashboard')),\n },\n // {\n // path: ROUTES.INTERNAL_NOT_FOUND,\n // exact: true,\n // component: lazy(() => import('./views/internal/InternalNotFound')),\n // },\n {\n path: ROUTES.NOT_FOUND,\n exact: true,\n component: lazy(() => import('./views/not-found/NotFound')),\n }\n];\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import { appConfigs } from '../../../config';\nimport { FunctionComponent } from 'react';\nimport { RouteComponentProps, Route as RouteDom } from 'react-router-dom';\nimport { Helmet } from 'react-helmet-async';\nimport { RouteProps } from '../route/Route.props';\n\nexport const Route: FunctionComponent = (props: RouteProps) => {\n const { path, component, title, meta, exact, canActivates } = props;\n const Component = component as FunctionComponent;\n const metaData = meta || [];\n\n if (!canActivates || canActivates?.every((guard) => new guard().canActivate() == true)) {\n return (\n {\n return (\n <>\n \n {title || appConfigs['APP_NAME']}\n\n {!metaData.find((metaItem) => metaItem.name.toLowerCase() === 'description') && (\n \n )}\n\n {metaData.map(({ name, content }) => (\n \n ))}\n \n\n \n \n );\n }}\n />\n );\n }\n\n return null;\n};\n","import { FunctionComponent } from 'react';\nimport { Redirect, Switch } from 'react-router-dom';\nimport { RouterOutletProps } from './RouterOutlet.props';\nimport { RouteProps, Route } from './components/route';\n\nexport const RouterOutlet: FunctionComponent = (props: RouterOutletProps) => {\n const { routes, basename } = props;\n\n return (\n \n {routes.map((route: RouteProps, index: number) => {\n const { path, redirect } = route;\n\n return redirect ? (\n \n ) : (\n \n );\n })}\n \n );\n};\n","import zh from './zh.json';\nimport en from './en.json';\n\nexport const langResources = {\n 'zh': {\n translation: zh,\n },\n 'en': {\n translation: en,\n },\n};\n","import 'bootstrap';\nimport { useEffect } from 'react';\nimport i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport { appConfigs } from '../bootstrap//config';\n\n// Components\nimport { routes } from '@app/App.routing';\nimport { RouterOutlet } from '@bootstrap/router';\n//import { SpriteIcon } from './components';\n\n//Styling\nimport './App.scss';\n\n// Setup localization\nimport { langResources } from '@app/assets/locales';\n\nimport TagManager from 'react-gtm-module';\n\nexport const App = (): JSX.Element => {\n useEffect(() => {\n i18n.use(initReactI18next).init({\n resources: langResources,\n fallbackLng: localStorage.getItem('lang') || appConfigs['APP_DEFAULT_LOCALE'],\n });\n }, []);\n\n function showCookieFail() {\n if (!navigator.cookieEnabled) {\n document.write(`

請接受cookie以繼續瀏覽本網站

`);\n }\n }\n showCookieFail();\n\n const tagManagerArgs = {\n gtmId: process.env.REACT_APP_GTM_TRACKING_ID || '',\n // dataLayer: {\n // userId: '001',\n // userProject: 'project'\n // }\n }\n \n TagManager.initialize(tagManagerArgs)\n\n return (\n
\n \n
\n );\n};\n","import { FunctionComponent, useEffect, useState, Suspense } from 'react';\nimport { App } from '@app/index';\nimport { AppConfig } from '@bootstrap/config';\nimport { BrowserRouter} from 'react-router-dom';\nimport { HelmetProvider } from 'react-helmet-async';\n\nexport const AppRoot: FunctionComponent = () => {\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n // Load runtime config\n new AppConfig().loader().then(() => setIsLoaded(true));\n }, []);\n\n return isLoaded ? (\n \n \n \n \n \n \n \n ) : null;\n};\n","import { StrictMode } from 'react';\nimport { render } from 'react-dom';\nimport reportWebVitals from './reportWebVitals';\n\nimport { AppRoot } from '@bootstrap/core';\n\nimport './styles.scss';\n\nrender(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n\n"],"sourceRoot":""}