{"version":3,"sources":["webpack:///./src/appConfig.ts","webpack:///./src/module/dom.ts","webpack:///./Web/Shared/layout.ts","webpack:///./Web/Shared/Component/SocialMedia/social-media.ts","webpack:///./src/module/facebook-page-and-messager.ts","webpack:///./Web/CareerOpportunity/career-opportunity.ts","webpack:///./src/module/form.ts"],"names":["appConfig","JSON","parse","document","getElementById","value","slideDown","element","style","overflow","display","animate","height","offsetHeight","duration","easing","addEventListener","removeProperty","slideToggle","window","getComputedStyle","slideUp","setupLayout","querySelector","gtag","send_to","googleAnalyticsId","event_category","googleAnalytics4Id","fbq","facebookAppId","fbAsyncInit","FB","init","appId","autoLogAppEvents","xfbml","version","Event","subscribe","script","createElement","type","src","crossOrigin","getElementsByTagName","appendChild","setupFacebookPageAndMessager","location","host","startsWith","querySelectorAll","forEach","elem","innerWidth","classList","contains","nextElementSibling","el","event_label","branch","toggle","elementId","beforeSend","error","errorText","console","log","processing","success","reset","finally","ajaxForm","config","combineToFormData","e","preventDefault","formElement","target","xhr","XMLHttpRequest","readyState","status","responseText","onprogress","event","Math","round","loaded","total","toFixed","open","action","formData","FormData","length","obj","Object","keys","key","append","send"],"mappings":"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","file":"17.c55575794f0244492ee9.bundle.js","sourcesContent":["export const appConfig: {\r\n facebookAppId: string;\r\n facebookPixelId: string;\r\n googleAnalyticsId: string;\r\n googleAnalytics4Id: string;\r\n sessionRecordId: string;\r\n googleAdsId: string;\r\n googleMapApiKey: string;\r\n googleMapStyles: any[];\r\n addThisId: string;\r\n} = {\r\n ...JSON.parse((document.getElementById('inputHiddenForAppConfig') as HTMLInputElement).value)\r\n}\r\n\r\n","export function scrollToTop() {\r\n const c = document.documentElement.scrollTop || document.body.scrollTop;\r\n if (c > 0) {\r\n window.requestAnimationFrame(scrollToTop);\r\n window.scrollTo(0, c - c / 8);\r\n }\r\n}\r\n\r\nexport function slideUp(element: HTMLElement) {\r\n element.style.overflow = 'hidden';\r\n\r\n const elemAnimation = element.animate([\r\n { height: `${element.offsetHeight}px` },\r\n { height: 0 }\r\n ], {\r\n duration: 500,\r\n easing: 'ease'\r\n });\r\n\r\n elemAnimation.addEventListener('finish', () => {\r\n element.style.display = 'none';\r\n element.style.removeProperty('overflow');\r\n });\r\n}\r\n\r\nexport function slideDown(element: HTMLElement) {\r\n element.style.overflow = 'hidden';\r\n element.style.display = 'block';\r\n\r\n const elemAnimation = element.animate([\r\n { height: 0 },\r\n { height: `${element.offsetHeight}px` }\r\n ], {\r\n duration: 500,\r\n easing: 'ease'\r\n });\r\n\r\n elemAnimation.addEventListener('finish', () => {\r\n element.style.removeProperty('overflow');\r\n });\r\n}\r\n\r\nexport function slideToggle(element: HTMLElement) {\r\n window.getComputedStyle(element).display === 'none' ? slideDown(element) : slideUp(element);\r\n}\r\n\r\n","//import { setupGA } from '../../src/module/google-analytics';\r\nimport { appConfig } from '../../src/appConfig';\r\nimport { setupFacebookPageAndMessager } from '../../src/module/facebook-page-and-messager';\r\n//import { setupPixel } from '../../src/module/facebook-pixel';\r\nimport { setTimeout } from 'timers';\r\nimport { slideToggle, slideDown } from '../../src/module/dom';\r\nimport './Component/SocialMedia/social-media';\r\n//import { setupSessionRecord } from '../../src/module/session-record';\r\nimport { setupSocialMedia } from './Component/SocialMedia/social-media';\r\n\r\ndeclare global {\r\n let fbq: (...args: any[]) => void\r\n}\r\n\r\nexport function setupLayout() {\r\n\r\n setupSocialMedia();\r\n\r\n //setupGA(appConfig.googleAnalyticsId, {\r\n // Id: appConfig.googleAdsId,\r\n // convertor: {\r\n // 'phoneLink': 'ffOKCPeL7tIBEKWb9voC',\r\n // 'whatsAppLink': '1n0yCMyN7tIBEKWb9voC',\r\n // 'mapLink': 'Ss2cCMzojtMBEKWb9voC',\r\n // 'emailLink': 'UaQfCM3w_tIBEKWb9voC',\r\n // 'liveChat': 'LBmQCMvqjtMBEKWb9voC',\r\n // 'careerOpportunityApplicationForm': 'W9csCNbn_tIBEKWb9voC',\r\n // 'generalEnquiry': 't1rSCJGHj9MBEKWb9voC', \r\n // 'courseEnquiry': 'KeGoCO2l7tIBEKWb9voC',\r\n // 'franchiseEnquiry': 'n2InCLe4htQBEKWb9voC',\r\n // 'campEnquiry': 'JbyxCPHJ0tQBEKWb9voC'\r\n // }\r\n //});\r\n //setupPixel(appConfig.facebookPixelId);\r\n\r\n // delay facebook page due to google speed score \r\n setTimeout(() => {\r\n setupFacebookPageAndMessager(appConfig.facebookAppId);\r\n }, 2000);\r\n\r\n if (location.host.startsWith('192.168') || location.host.startsWith('localhost')) {\r\n // skip\r\n }\r\n else {\r\n // setupSessionRecord(appConfig.sessionRecordId);\r\n }\r\n\r\n document.addEventListener(\"DOMContentLoaded\", () => {\r\n document.querySelectorAll('.parentNav').forEach(elem => {\r\n if (window.innerWidth <= 1024) {\r\n if (elem.classList.contains('active')) {\r\n slideDown(elem.nextElementSibling as HTMLElement)\r\n }\r\n }\r\n elem.addEventListener('click', () => {\r\n if (window.innerWidth <= 1024) {\r\n slideToggle(elem.nextElementSibling as HTMLElement);\r\n }\r\n });\r\n });\r\n });\r\n\r\n document.getElementById('js-menuButton').addEventListener('click', () => {\r\n slideToggle(document.getElementById('js-navList'));\r\n });\r\n\r\n document.querySelectorAll('#js-headerPhoneLink, #js-footerPhoneLink').forEach(el => {\r\n el.addEventListener('click', () => {\r\n gtag('event', 'call', {\r\n send_to: appConfig.googleAnalyticsId,\r\n event_category: 'engagement',\r\n event_label: 'Taman Molek'\r\n });\r\n gtag('event', 'generate_lead', {\r\n send_to: appConfig.googleAnalytics4Id\r\n });\r\n gtag('event', 'call', {\r\n send_to: appConfig.googleAnalytics4Id,\r\n branch: 'Taman Molek'\r\n });\r\n fbq('track', 'Contact');\r\n });\r\n });\r\n\r\n document.querySelectorAll('#js-headerEmailLink, #js-footerEmailLink').forEach(el => {\r\n el.addEventListener('click', () => {\r\n gtag('event', 'email', {\r\n send_to: appConfig.googleAnalyticsId,\r\n event_category: 'engagement'\r\n });\r\n gtag('event', 'generate_lead', {\r\n send_to: appConfig.googleAnalytics4Id\r\n });\r\n gtag('event', 'email', {\r\n send_to: appConfig.googleAnalytics4Id\r\n });\r\n fbq('track', 'Contact');\r\n });\r\n });\r\n document.querySelector('#js-footerLocationLink').addEventListener('click', () => {\r\n gtag('event', 'find_location', {\r\n send_to: appConfig.googleAnalyticsId,\r\n event_category: 'engagement',\r\n event_label: 'Taman Molek'\r\n });\r\n gtag('event', 'generate_lead', {\r\n send_to: appConfig.googleAnalytics4Id\r\n });\r\n gtag('event', 'find_location', {\r\n send_to: appConfig.googleAnalytics4Id,\r\n branch: 'Taman Molek'\r\n });\r\n fbq('track', 'FindLocation');\r\n });\r\n\r\n \r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import '@fancyapps/fancybox';\r\nimport { appConfig } from '../../../../src/appConfig';\r\n\r\nexport function setupSocialMedia() {\r\n document.querySelector('#js-whatsAppLink').addEventListener('click', () => {\r\n gtag('event', 'whatsapp', {\r\n send_to: appConfig.googleAnalyticsId,\r\n event_category: 'engagement'\r\n });\r\n gtag('event', 'generate_lead', {\r\n send_to: appConfig.googleAnalytics4Id\r\n });\r\n gtag('event', 'whatsapp', {\r\n send_to: appConfig.googleAnalytics4Id\r\n });\r\n fbq('track', 'Contact');\r\n });\r\n}\r\n\r\n\r\n","\r\ndeclare global {\r\n interface Window {\r\n fbAsyncInit: any\r\n }\r\n}\r\ndeclare let FB: any;\r\n\r\nexport function setupFacebookPageAndMessager(facebookAppId : string) {\r\n window.fbAsyncInit = () => {\r\n FB.init({\r\n appId: facebookAppId,\r\n autoLogAppEvents: true,\r\n xfbml: true,\r\n version: 'v7.0'\r\n });\r\n // TODO now: \r\n // Ŀǰÿһ�δ򿪶��ᴥ��, ��Ӱ�� tracking, ֮�� fixed\r\n FB.Event.subscribe('customerchat.dialogShow', () => {\r\n // tracking\r\n gtag('event', 'live_chat', {\r\n event_category: 'engagement'\r\n });\r\n fbq('track', 'Contact');\r\n });\r\n };\r\n\r\n let script = document.createElement('script') as HTMLScriptElement;\r\n script.type = 'text/javascript'; \r\n script.src = 'https://connect.facebook.net/en_US/sdk/xfbml.customerchat.js';\r\n script.crossOrigin = 'anonymous'; \r\n document.getElementsByTagName('body')[0].appendChild(script);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import './career-opportunity.scss';\r\nimport { setupLayout } from '../Shared/layout';\r\nimport { slideToggle } from '../../src/module/dom';\r\nimport { ajaxForm } from '../../src/module/form';\r\nimport { appConfig } from '../../src/appConfig';\r\n\r\nsetupLayout();\r\n\r\ndocument.querySelectorAll('.header').forEach(elem => {\r\n elem.addEventListener('click', () => {\r\n elem.classList.toggle('header-active');\r\n slideToggle(elem.nextElementSibling as HTMLElement);\r\n });\r\n});\r\n\r\nconst elementId = 'careerOpportunityApplicationForm';\r\ndeclare let fbq: (...args: any[]) => void\r\n\r\najaxForm({\r\n elementId: elementId,\r\n beforeSend: () => {\r\n document.querySelector(`#${elementId} .buttonSubmit`).style.display = 'none';\r\n document.querySelector(`#${elementId} .buttonLoading`).style.display = 'block';\r\n document.querySelector(`#${elementId} .buttonError`).style.display = 'none';\r\n },\r\n error: (errorText) => {\r\n document.querySelector(`#${elementId} .buttonSubmit`).style.display = 'none';\r\n document.querySelector(`#${elementId} .buttonLoading`).style.display = 'none';\r\n document.querySelector(`#${elementId} .buttonError`).style.display = 'block';\r\n console.log(errorText);\r\n },\r\n processing: () => {\r\n //upload percentage\r\n },\r\n success: () => {\r\n document.querySelector(`#${elementId} .buttonSubmit`).style.display = 'none';\r\n document.querySelector(`#${elementId} .buttonLoading`).style.display = 'none';\r\n document.querySelector(`#${elementId} .buttonError`).style.display = 'none';\r\n document.querySelector(`#${elementId} .buttonSuccess`).style.display = 'block';\r\n (document.getElementById(elementId) as HTMLFormElement).reset();\r\n gtag('event', 'apply_job', {\r\n send_to: appConfig.googleAnalyticsId,\r\n event_category: 'engagement'\r\n });\r\n gtag('event', 'apply_job', {\r\n send_to: appConfig.googleAnalytics4Id\r\n });\r\n fbq('trackCustom', 'ApplyJob');\r\n },\r\n finally: () => {\r\n //finish all job\r\n }\r\n});\r\n","\r\n// note : 不支持 input file 哦\r\nexport function localStorageForm(config: {\r\n elementId: string,\r\n localStorageKey: string,\r\n redirectUrl: string\r\n}): void {\r\n const { elementId, localStorageKey, redirectUrl } = config;\r\n const form = document.getElementById(elementId);\r\n form.addEventListener('submit', (e: Event) => {\r\n e.preventDefault();\r\n const formElement = e.target as HTMLFormElement;\r\n const formData = new FormData(formElement)\r\n let store: any = {};\r\n formData.forEach((value, key) => {\r\n store[key] = value;\r\n });\r\n localStorage.setItem(localStorageKey, JSON.stringify(store));\r\n location.href = redirectUrl;\r\n });\r\n}\r\n\r\nexport function formDataToObject(formElement: HTMLFormElement): any {\r\n const formData = new FormData(formElement);\r\n let result: any = {};\r\n formData.forEach((value, key) => {\r\n result[key] = value;\r\n });\r\n return result;\r\n}\r\n\r\n\r\nexport function ajaxForm(config: {\r\n elementId: string\r\n beforeSend: () => void\r\n success: (responseText: string) => void\r\n error: (responseText: string) => void\r\n finally: () => void\r\n processing?: (percent: number) => void\r\n combineToFormData?: { [propName : string] : any }[]\r\n}): void {\r\n config.processing = config.processing || function () { };\r\n config.combineToFormData = config.combineToFormData || [];\r\n const { elementId, error, beforeSend, success, processing, combineToFormData } = config;\r\n const form = document.getElementById(elementId);\r\n form.addEventListener('submit', (e: Event) => {\r\n e.preventDefault();\r\n const formElement = e.target as HTMLFormElement;\r\n beforeSend();\r\n var xhr = new XMLHttpRequest();\r\n xhr.addEventListener('readystatechange', () => {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n success(xhr.responseText);\r\n }\r\n else {\r\n console.error({\r\n status: xhr.status,\r\n responseText: xhr.responseText\r\n });\r\n error(xhr.responseText);\r\n }\r\n config.finally();\r\n }\r\n });\r\n xhr.onprogress = function (event) {\r\n processing(+Math.round(event.loaded / event.total * 100).toFixed(0));\r\n };\r\n xhr.open(\"POST\", formElement.action, true);\r\n let formData = new FormData(formElement);\r\n if (combineToFormData.length > 0) {\r\n console.log(combineToFormData)\r\n combineToFormData.forEach(obj => {\r\n Object.keys(obj).forEach(key => {\r\n formData.append(key, obj[key]);\r\n });\r\n });\r\n }\r\n formData.forEach((value, key) => {\r\n console.log(key, value);\r\n });\r\n xhr.send(formData);\r\n });\r\n}\r\n"],"sourceRoot":""}