{"version":3,"sources":["../node_modules/react-semantic-ui-datepickers/dist/locales sync /^/.//.*/.json$","components/visitor-registration-form/visitor-registration-form.tsx","components/qr-code-module/verfied-message.tsx","components/qr-code-module/qr-code-module.tsx","pages/home/home-page.tsx","router.tsx","App.tsx","serviceWorker.ts","index.tsx","assets/mtr-logo-medium.png"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","Root","styled","Container","HeaderContainer","ConfidentialTag","Label","ErrorMessage","Message","ConfirmDeclaration","Form","Field","ConfirmDeclarationLabel","p","ConfirmDeclarationLabelText","LocationDropDown","Dropdown","StyledSemanticDatepicker","SemanticDatepicker","VisitorRegistrationForm","setValue","setReferenceNumber","locations","useParams","executeRecaptcha","useGoogleReCaptcha","useState","locationFilter","setLocationFilter","locationTypeOptions","useMemo","it","name","value","text","displayName","flat","locationOptions","filter","list","location","availableLocationCode","category","locationOtherStatePlaceholder","customText","companyName","purposeOfVisit","dateOfVisiting","visitingStaffName","numberOfVisitors","visitors","contactNumber","formValue","setFormValue","informationDeclared","setInformationDeclaration","isSubmitting","setIsSubmitting","locationState","setLocationState","locationOtherState","setLocationOtherState","isLocationEmpty","setIsLocationEmpty","maxVisitingDaysDiff","setMaxVisitingDaysDiff","hasOtherPurpose","setHasOtherPurpose","locationString","length","create","baseURL","process","api","errorMessage","setErrorMessage","submitForm","useCallback","window","scrollTo","top","behavior","a","status","data","recaptchaToken","convertedNumberOfVisitors","Number","isInteger","alert","zh","incorrectNumberOfVisitor","en","locationCode","contact_number","formObject","name_of_company","purpose_of_visit","date_of_visit","location_code","name_of_visiting_staff","number_of_registered_visitors","recaptcha","post","response","ok","responseObject","referenceNumber","reference_number","undefined","postingForm","locationDropdownOnChange","event","locationTypeDropdownOnChange","useEffect","GettingDiff","get","day","SetDefaultLocation","locationKey","find","locationFiterValue","place","Image","src","mtrLogo","floated","size","basic","color","confidential","Header","textAlign","Content","formTitle","onSubmit","Grid","Column","mobile","computer","required","Group","Radio","label","purposeOfVisitOptions","checked","onChange","Input","enterPurpose","placeholder","target","companyNameRemarks","cloneVisitors","numberOfVisitor","defaultLocation","options","search","selection","fluid","selectOnBlur","stationsAndOthers","negative","locationInputWarningMessage","disabled","locationWarningMessage","type","datePickerOnly","moment","toDate","format","filterDate","date","isSame","todayWeekday","adjustedVisitingDay","isSameOrBefore","add","isSameOrAfter","Checkbox","declaration","onClick","props","confirmDeclaration","Button","loading","icon","content","submit","Dimmer","active","onClickOutside","page","error","warning","header","forbidTitle","submissionFailed","forbidMessage","submissionFailedDetail","VerifiedMessage","memo","Icon","instruction","ReferenceNumberTitle","ReferenceNumber","QRCodeModule","clearReferenceNumber","recordRejected","is_permitted","title","reject_remark","className","animated","visible","back","hidden","HomePage","formReferenceNumber","setFormReferenceNumber","displayFormValue","setDisplayFormValue","whitelistId","setWhitelistId","setLocations","language","navigator","includes","responseData","getLocationsList","useQuery","Promise","axios","retry","isLoading","isNotPermitted","is_enabled","isExpired","is_effective","Placeholder","Line","Paragraph","expired","expiredMessage","replace","effective_start_date","effective_end_date","AppRouter","path","component","queryConfig","queries","refetchOnWindowFocus","App","config","reCaptchaKey","Boolean","hostname","match","ReactDOM","render","StrictMode","document","getElementById","serviceWorker","ready","then","registration","unregister","catch","console","message"],"mappings":"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","file":"static/js/main.803ec0bf.chunk.js","sourcesContent":["var map = {\n\t\"./bg-BG.json\": 792,\n\t\"./ca-ES.json\": 793,\n\t\"./cs-CZ.json\": 794,\n\t\"./de-DE.json\": 795,\n\t\"./el-GR.json\": 796,\n\t\"./en-US.json\": 358,\n\t\"./es-ES.json\": 797,\n\t\"./et-EE.json\": 798,\n\t\"./fi-FI.json\": 799,\n\t\"./fr-FR.json\": 800,\n\t\"./he-IL.json\": 801,\n\t\"./it-IT.json\": 802,\n\t\"./ja-JP.json\": 803,\n\t\"./ko-KR.json\": 804,\n\t\"./nb-NO.json\": 805,\n\t\"./nl-NL.json\": 806,\n\t\"./nn-NO.json\": 807,\n\t\"./pl-PL.json\": 808,\n\t\"./pt-BR.json\": 809,\n\t\"./ro-RO.json\": 810,\n\t\"./ru-RU.json\": 811,\n\t\"./sk-SK.json\": 812,\n\t\"./sv-SE.json\": 813,\n\t\"./tr-TR.json\": 814,\n\t\"./zh-CN.json\": 815\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 791;","/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable jsx-a11y/label-has-associated-control */\nimport { create } from 'apisauce'\nimport moment from 'moment'\nimport React, { useCallback, useState, useMemo, useEffect } from 'react'\nimport {\n Button,\n Checkbox,\n Container,\n Dimmer,\n Form,\n Grid,\n Header,\n Image,\n Label,\n Message,\n} from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport { useGoogleReCaptcha } from 'react-google-recaptcha-v3'\nimport SemanticDatepicker from 'react-semantic-ui-datepickers'\nimport { useParams } from 'react-router-dom'\nimport { LocationsType } from '../../pages/home/home-page'\nimport mtrLogo from '../../assets/mtr-logo-medium.png'\nimport { FormObjectType, VisitorObjectType } from './api-object.types'\nimport en from './form-constant-en.json'\nimport zh from './form-constant-zh.json'\nimport './visitor-registration-form.scss'\nimport 'react-semantic-ui-datepickers/dist/react-semantic-ui-datepickers.css'\n\ninterface ReferenceNumberProps {\n setValue: (formValue: FormObjectType) => void\n setReferenceNumber: (referenceNumber: string) => void\n locations: LocationsType[]\n}\n\ntype FormObject = FormObjectType & {\n visitors: VisitorObjectType[]\n}\n\nconst locationOtherString = 'others'\n\nconst Root = styled(Container)`\n margin-top: 2rem !important;\n margin-bottom: 2rem !important;\n width: 100wh;\n`\nconst HeaderContainer = styled(Container)`\n height: 35px;\n`\nconst ConfidentialTag = styled(Label)`\n float: left;\n`\n\nconst ErrorMessage = styled(Message)`\n text-align: left;\n`\n\nconst ConfirmDeclaration = styled(Form.Field)`\n padding-top: 26px;\n`\n\nconst ConfirmDeclarationLabel = styled.p`\n margin-left: 26px;\n`\n\nconst ConfirmDeclarationLabelText = styled.p`\n margin-bottom: 0px;\n`\n\nconst LocationDropDown = styled(Form.Dropdown)`\n @media only screen and (min-width: 992px) {\n padding-top: 20px;\n }\n`\n\nconst StyledSemanticDatepicker = styled(SemanticDatepicker)`\n width: 100%;\n`\n\ntype FormValue = {\n companyName: string\n purposeOfVisit: string\n dateOfVisiting: string | null\n location: string\n visitingStaffName: string\n numberOfVisitors: string\n visitors: {\n name: string\n contactNumber: string\n }[]\n}\n\nexport const VisitorRegistrationForm: React.FC = ({\n setValue,\n setReferenceNumber,\n locations,\n}) => {\n const { id } = useParams<{ id: string | undefined }>()\n\n const { executeRecaptcha } = useGoogleReCaptcha()\n const [locationFilter, setLocationFilter] = useState('')\n\n const locationTypeOptions = useMemo(\n () =>\n locations\n .map((it) => ({\n name: it.code,\n value: it.code,\n text: it.displayName,\n }))\n .flat(),\n [locations],\n )\n\n const locationOptions = useMemo(\n () =>\n locationFilter !== ''\n ? locations\n .filter((it) =>\n locationFilter != null && locationFilter !== ''\n ? it.code === locationFilter && it?.list != null\n : it.list != null,\n )\n .map((it) =>\n it.list.map((location) => ({\n name: location.code,\n value: location.displayName,\n text: location.displayName,\n })),\n )\n .flat()\n : [],\n [locationFilter, locations],\n )\n\n const availableLocationCode = useMemo(\n () =>\n locations\n .map((category) =>\n category.list.map((it) => ({ name: it.code, value: it.displayName })),\n )\n .flat(),\n [locations],\n )\n\n const locationOtherStatePlaceholder = useMemo(() => {\n const otherLocation = locations.filter((it) => it.customText != null)\n return otherLocation[0].customText\n }, [locations])\n\n const [formValue, setFormValue] = useState({\n companyName: '',\n purposeOfVisit: '',\n dateOfVisiting: null,\n location: '',\n visitingStaffName: '',\n numberOfVisitors: '1',\n visitors: [\n {\n name: '',\n contactNumber: '',\n },\n ],\n })\n const [informationDeclared, setInformationDeclaration] = useState(false)\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [locationState, setLocationState] = useState('')\n const [locationOtherState, setLocationOtherState] = useState('')\n const [isLocationEmpty, setIsLocationEmpty] = useState(false)\n const [maxVisitingDaysDiff, setMaxVisitingDaysDiff] = useState(0)\n const [hasOtherPurpose, setHasOtherPurpose] = useState(false)\n\n const locationString = useMemo(\n () =>\n locationFilter === locationOtherString && locationOtherState.length > 0\n ? locationOtherState\n : locationState,\n [locationState, locationFilter, locationOtherState],\n )\n\n const [api] = useState(\n create({\n baseURL: process.env.REACT_APP_API_BASE_URL,\n }),\n )\n\n const [errorMessage, setErrorMessage] = useState<{\n status: number\n data: string\n }>()\n\n const submitForm = useCallback(() => {\n setIsSubmitting(true)\n\n if (locationString === '') {\n setIsLocationEmpty(true)\n setIsSubmitting(false)\n window.scrollTo({ top: 0, behavior: 'smooth' })\n return\n }\n\n const postingForm = async (): Promise => {\n if (executeRecaptcha == null) {\n setErrorMessage({\n status: -3,\n data: 'ReCAPTCHA unavailable',\n })\n setIsSubmitting(false)\n return\n }\n\n let recaptchaToken: string | undefined\n\n try {\n recaptchaToken = await executeRecaptcha()\n } catch (error) {\n setErrorMessage({\n status: -2,\n data: 'ReCAPTCHA failed',\n })\n setIsSubmitting(false)\n return\n }\n\n if (recaptchaToken == null) {\n setErrorMessage({\n status: -1,\n data: 'ReCAPTCHA empty',\n })\n setIsSubmitting(false)\n return\n }\n\n const convertedNumberOfVisitors = Number(formValue.numberOfVisitors)\n\n if (\n !Number.isInteger(convertedNumberOfVisitors) ||\n convertedNumberOfVisitors < 1\n ) {\n // eslint-disable-next-line no-alert\n alert(`${zh.incorrectNumberOfVisitor} ${en.incorrectNumberOfVisitor}`)\n setIsSubmitting(false)\n return\n }\n\n const locationCode =\n locationOptions.filter((it) => it.value === locationString)[0]?.name ??\n availableLocationCode.filter((it) => it.value === locationString)[0]\n ?.name ??\n locationOtherString\n\n const visitors: VisitorObjectType[] = formValue.visitors.map((it) => ({\n name: it.name,\n contact_number: it.contactNumber,\n }))\n\n const formObject = {\n name_of_company: formValue.companyName,\n purpose_of_visit: formValue.purposeOfVisit,\n date_of_visit: formValue.dateOfVisiting,\n location: locationString,\n location_code: locationCode,\n name_of_visiting_staff: formValue.visitingStaffName,\n number_of_registered_visitors: convertedNumberOfVisitors,\n recaptcha: recaptchaToken,\n visitors,\n } as FormObject\n\n const response = await api.post('/visitor-form-records', {\n ...formObject,\n })\n if (response.ok) {\n const responseObject = response.data as FormObjectType\n const referenceNumber = responseObject.reference_number\n if (referenceNumber == null) {\n setErrorMessage({\n status: -30,\n data: 'Ref null',\n })\n } else {\n setReferenceNumber(referenceNumber ?? '')\n setValue(formObject ?? undefined)\n }\n } else {\n setErrorMessage({\n status: response.status ?? 0,\n data: response.data as string,\n })\n }\n setIsSubmitting(false)\n }\n\n postingForm()\n }, [\n locationString,\n executeRecaptcha,\n locationOptions,\n availableLocationCode,\n formValue.visitors,\n formValue.companyName,\n formValue.purposeOfVisit,\n formValue.dateOfVisiting,\n formValue.visitingStaffName,\n formValue.numberOfVisitors,\n api,\n setReferenceNumber,\n setValue,\n ])\n\n const locationDropdownOnChange = useCallback((event, { value }): void => {\n setLocationState(value)\n setIsLocationEmpty(false)\n }, [])\n\n const locationTypeDropdownOnChange = useCallback((event, { value }): void => {\n setLocationState('')\n setLocationFilter(value)\n }, [])\n\n useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n const GettingDiff = async () => {\n const response = await api.get(\n '/visitor-form-records/max-visit-days-diff',\n )\n if (response.ok) {\n const day = response.data as number\n setMaxVisitingDaysDiff(day)\n } else {\n setMaxVisitingDaysDiff(0)\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n const SetDefaultLocation = async () => {\n if (id == null) return\n const locationKey = availableLocationCode.find((it) => it.name === id)\n ?.value\n if (locationKey == null) return\n\n const locationFiterValue = locations.find(\n (it) =>\n it.list.find((place) => place.displayName === locationKey) != null,\n )?.code\n\n if (locationFiterValue == null) return\n\n setLocationFilter(locationFiterValue)\n setLocationState(locationKey)\n setIsLocationEmpty(false)\n }\n GettingDiff()\n SetDefaultLocation()\n }, [api, availableLocationCode, id, locations])\n\n return (\n \n \n \n \n {en.confidential}\n \n \n
\n \n {zh.formTitle}\n
\n {en.formTitle}\n
\n
\n\n
\n \n \n \n \n \n \n \n {\n setHasOtherPurpose(false)\n setFormValue({\n ...formValue,\n purposeOfVisit: 'meeting',\n })\n }}\n />\n \n \n {\n setHasOtherPurpose(false)\n setFormValue({\n ...formValue,\n purposeOfVisit: 'visit',\n })\n }}\n />\n \n \n {\n setHasOtherPurpose(false)\n setFormValue({\n ...formValue,\n purposeOfVisit: 'teaching',\n })\n }}\n />\n \n \n {\n setHasOtherPurpose(false)\n setFormValue({\n ...formValue,\n purposeOfVisit: 'interview',\n })\n }}\n />\n \n \n {\n setFormValue({\n ...formValue,\n purposeOfVisit: '',\n })\n setHasOtherPurpose(true)\n }}\n />\n \n \n \n {hasOtherPurpose && (\n \n \n \n setFormValue({\n ...formValue,\n purposeOfVisit: event.target.value,\n })\n }\n required\n />\n \n \n )}\n \n \n \n \n setFormValue({\n ...formValue,\n companyName: event.target.value,\n })\n }\n required\n />\n \n \n \n \n {\n const cloneVisitors = [...formValue.visitors]\n cloneVisitors[0].name = event.target.value\n setFormValue({\n ...formValue,\n visitors: cloneVisitors,\n })\n }}\n required\n />\n \n \n {\n const cloneVisitors = [...formValue.visitors]\n cloneVisitors[0].contactNumber = event.target.value\n setFormValue({\n ...formValue,\n visitors: cloneVisitors,\n })\n }}\n required\n />\n \n \n\n \n \n {\n setFormValue({\n ...formValue,\n numberOfVisitors: event.target.value,\n })\n }}\n required\n />\n \n \n\n \n \n \n setFormValue({\n ...formValue,\n visitingStaffName: event.target.value,\n })\n }\n required\n />\n \n\n \n \n \n {locationFilter === locationOtherString ? (\n \n \n setLocationOtherState(event.target.value)\n }\n />\n {isLocationEmpty && locationString === '' && (\n \n {zh.locationInputWarningMessage}\n {en.locationInputWarningMessage}\n \n )}\n \n ) : (\n \n \n {isLocationEmpty && locationString === '' && (\n \n {zh.locationWarningMessage} {en.locationWarningMessage}\n \n )}\n \n )}\n\n \n {\n setFormValue({\n ...formValue,\n dateOfVisiting:\n data.value == null\n ? null\n : moment(data.value as Date).format('YYYY-MM-DD'),\n })\n }}\n required\n filterDate={(date): boolean => {\n if (moment(date).isSame(moment(), 'day')) {\n return true\n }\n\n // if Sat / Sun\n if (moment(date).day() === 0 || moment(date).day() === 6) {\n return false\n }\n\n const todayWeekday = moment().day()\n // adding extra 2 day since Thu and Fri skipped Say / Sun\n const adjustedVisitingDay =\n todayWeekday === 4 || todayWeekday === 5\n ? maxVisitingDaysDiff + 2\n : todayWeekday === 6\n ? maxVisitingDaysDiff + 1\n : maxVisitingDaysDiff\n\n return (\n moment().isSameOrBefore(moment(date), 'd') &&\n moment()\n .add(adjustedVisitingDay, 'd')\n .isSameOrAfter(moment(date), 'd')\n )\n }}\n />\n \n \n\n \n \n setInformationDeclaration(props.checked ?? false)\n }\n required\n />\n \n {zh.confirmDeclaration}\n \n \n \n {en.declaration}\n \n \n {en.confirmDeclaration}\n \n \n \n\n \n \n setErrorMessage(undefined)}\n page\n >\n \n {zh.forbidMessage}\n
\n {en.forbidMessage}\n
\n \n ) : (\n <>\n {zh.submissionFailedDetail}\n
\n {en.submissionFailedDetail}\n
\n {`(Error = ${errorMessage?.status})`}\n \n )\n }\n />\n \n
\n )\n}\n","import React, { memo } from 'react'\nimport { Header, Message, Icon } from 'semantic-ui-react'\nimport zh from './qr-code-module-zh.json'\nimport en from './qr-code-module-en.json'\n\ntype VerifiedMessageProps = {}\n\nexport const VerifiedMessage = memo(() => {\n return (\n \n
\n \n
\n {zh.instruction}\n
\n {en.instruction}\n
\n )\n})\n","import React, { useMemo } from 'react'\nimport QRCode from 'qrcode.react'\nimport styled from 'styled-components'\nimport {\n Container,\n Button,\n Message,\n Header,\n Image,\n Icon,\n} from 'semantic-ui-react'\nimport mtrLogo from '../../assets/mtr-logo-medium.png'\nimport zh from './qr-code-module-zh.json'\nimport en from './qr-code-module-en.json'\nimport './qr-code-module.scss'\nimport { FormObjectType } from '../visitor-registration-form/api-object.types'\nimport { VerifiedMessage } from './verfied-message'\n\nconst Root = styled(Container)`\n margin-top: 2rem !important;\n margin-bottom: 2rem !important;\n width: 100wh;\n`\n\nconst ReferenceNumberTitle = styled.p``\n\nconst ReferenceNumber = styled.p`\n font-size: 1.75em;\n font-weight: bold;\n`\n\ninterface QrcodeModuleProps {\n formValue?: FormObjectType\n referenceNumber: string\n clearReferenceNumber: () => void\n}\n\nexport const QRCodeModule: React.FC = ({\n formValue,\n referenceNumber,\n clearReferenceNumber,\n}) => {\n const recordRejected = useMemo(() => formValue?.is_permitted !== true, [\n formValue,\n ])\n\n return (\n \n \n
\n \n {zh.title}\n
\n {en.title}\n
\n
\n\n {formValue != null && }\n\n {recordRejected && formValue?.reject_remark?.length && (\n {formValue.reject_remark}\n )}\n\n \n \n \n\n \n {`${zh.referenceNumber} ${en.referenceNumber}`}\n {referenceNumber}\n \n\n \n \n \n
\n )\n}\n","import axios from 'axios'\nimport moment from 'moment'\nimport React, { useEffect, useState } from 'react'\nimport { useQuery } from 'react-query'\nimport { useParams } from 'react-router-dom'\nimport {\n Container,\n Header,\n Image,\n Message,\n Placeholder,\n} from 'semantic-ui-react'\nimport styled from 'styled-components'\nimport { create } from 'apisauce'\nimport mtrLogo from '../../assets/mtr-logo-medium.png'\nimport { VisitorRegistrationForm } from '../../components/visitor-registration-form'\nimport { FormObjectType } from '../../components/visitor-registration-form/api-object.types'\nimport en from '../../components/visitor-registration-form/form-constant-en.json'\nimport zh from '../../components/visitor-registration-form/form-constant-zh.json'\nimport { QRCodeModule } from '../../components/qr-code-module'\n\nexport interface LocationsType {\n code: string\n displayName: string\n list: Location[]\n customText?: string\n}\ninterface Location {\n code: string\n displayName: string\n}\n\nconst Root = styled(Container)`\n padding-top: 2rem !important;\n padding-bottom: 2rem !important;\n width: 100wh;\n`\n\nexport const HomePage: React.FC = () => {\n const [formReferenceNumber, setFormReferenceNumber] = useState('')\n const [displayFormValue, setDisplayFormValue] = useState()\n const { id } = useParams()\n const [whitelistId, setWhitelistId] = useState(undefined)\n\n useEffect(() => {\n if (id == null) return\n if (id.length === 36) {\n setWhitelistId(id)\n }\n }, [id])\n\n const [locations, setLocations] = useState()\n\n const [api] = useState(\n create({\n baseURL: process.env.REACT_APP_API_BASE_URL,\n }),\n )\n\n useEffect(() => {\n const getLocationsList = async () => {\n const language = window.navigator.language.includes('zh') ? 'chi' : 'eng'\n const response = await api.get(\n `/visitor-form-records/locations/${language}`,\n )\n\n if (response.ok) {\n const responseData = response.data as LocationsType[]\n setLocations(responseData)\n }\n }\n getLocationsList()\n }, [api])\n\n const { data, isLoading, error } = useQuery(\n whitelistId,\n async (): Promise => {\n if (whitelistId == null) return Promise.resolve()\n\n return axios.get<{\n is_enabled: boolean\n is_effective: boolean\n effective_start_date: string\n effective_end_date: string\n }>(`${process.env.REACT_APP_API_BASE_URL}/whitelists/${whitelistId}`)\n },\n { retry: 0 },\n )\n\n const isNotPermitted =\n (data && !data?.data.is_enabled) ||\n // @ts-ignore\n error?.response?.status === 404\n\n const isExpired = !(data?.data.is_effective ?? false) && data != null\n\n if (isLoading) {\n return (\n \n \n
\n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n )\n }\n\n if (error || isNotPermitted || isExpired) {\n return (\n \n \n \n {zh.expiredMessage\n .replace(\n '{{start}}',\n moment(data?.data.effective_start_date).format(\n 'D MMM yyyy',\n ),\n )\n .replace(\n '{{end}}',\n moment(data?.data.effective_end_date).format('D MMM yyyy'),\n )}\n
\n {en.expiredMessage\n .replace(\n '{{start}}',\n moment(data?.data.effective_start_date).format(\n 'D MMM yyyy',\n ),\n )\n .replace(\n '{{end}}',\n moment(data?.data.effective_end_date).format('D MMM yyyy'),\n )}\n \n ) : isNotPermitted ? (\n <>\n {zh.forbidMessage}\n
\n {en.forbidMessage}\n \n ) : (\n <>\n {zh.submissionFailedDetail}\n
\n {en.submissionFailedDetail}\n
\n {`(${error})`}\n \n )\n }\n />\n
\n )\n }\n\n const clearAll = () => {\n setFormReferenceNumber('')\n setDisplayFormValue(undefined)\n }\n return formReferenceNumber === '' &&\n displayFormValue == null &&\n locations != null ? (\n \n ) : (\n \n )\n}\n","import React, { ReactElement } from 'react'\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom'\nimport { HomePage } from './pages/home'\n\nconst AppRouter = (): ReactElement => {\n return (\n \n \n \n \n \n \n )\n}\n\nexport default AppRouter\n","import React, { FunctionComponent } from 'react'\nimport { GoogleReCaptchaProvider } from 'react-google-recaptcha-v3'\nimport 'semantic-ui-css/semantic.min.css'\nimport { ReactQueryConfigProvider } from 'react-query'\nimport AppRouter from './router'\n\nconst queryConfig = { queries: { refetchOnWindowFocus: false } }\n\nconst App: FunctionComponent = () => (\n \n \n \n \n \n)\n\nexport default App\n","/* eslint-disable */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n)\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void\n onUpdate?: (registration: ServiceWorkerRegistration) => void\n}\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config)\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n )\n })\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n if (installingWorker == null) {\n return\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n )\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration)\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.')\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration)\n }\n }\n }\n }\n }\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type')\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config)\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.',\n )\n })\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister()\n })\n .catch((error) => {\n console.error(error.message)\n })\n }\n}\n","import 'react-app-polyfill/ie11'\nimport 'react-app-polyfill/stable'\n\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport './index.css'\nimport App from './App'\nimport * as serviceWorker from './serviceWorker'\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n)\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister()\n","module.exports = __webpack_public_path__ + \"static/media/mtr-logo-medium.464cd389.png\";"],"sourceRoot":""}