{"version":3,"sources":["webpack:///./src/module/no-tracking.ts","webpack:///./src/module/google-analytics.ts","webpack:///./src/app-config.ts","webpack:///./Web/Shared/Component/ContactForm/contact-form.ts","webpack:///./src/module/form.ts","webpack:///./Web/Shared/layout.ts","webpack:///./src/module/facebook-pixel.ts","webpack:///./Web/Product/product.ts"],"names":["__webpack_require__","d","__webpack_exports__","hasNoTrackingCookies","COOKIES_KEY","document","cookie","match","setupGA","setEvent","setAdsConversion","_no_tracking__WEBPACK_IMPORTED_MODULE_0__","_googleAdsConfig","undefined","googleAnalyticsId","googleAdsConfig","Object","script","createElement","type","async","src","getElementsByTagName","appendChild","script2","textContent","Id","setTimeout","gtag","scrolled","querySelectorAll","forEach","elem","trackEventName","dataset","addEventListener","trackConversionName","eventName","eventCategory","eventLabel","event_category","event_label","value","conversionName","send_to","convertor","appConfig","__assign","JSON","parse","getElementById","googleMapSetting","apiKey","locations","position","lat","lng","url","zoom","center","styles","setupContactForm","elementId","config","processing","combineToFormData","error","beforeSend","success","e","preventDefault","formElement","target","xhr","XMLHttpRequest","readyState","status","responseText","console","finally","onprogress","event","Math","round","loaded","total","toFixed","open","action","formData","FormData","length","log","obj","keys","key","append","send","ajaxForm","querySelector","style","display","errorText","reset","google_analytics","setupLayout","facebookPixelId","no_tracking","fbq","setupPixel","app_config","googleAdsId","hpLink","whatsApp","mapLink","emailLink","contactForm","contact_form","jquery","ready","prev","each","classList","toggle","x","remove","add","animate","scrollTop","window","onscroll","pageYOffset","r","_Shared_layout__WEBPACK_IMPORTED_MODULE_1__"],"mappings":"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","file":"5.f4a4557ceb55117b0ce4.bundle.js","sourcesContent":["const COOKIES_KEY = 'noTracking';\r\n\r\nexport function setNoTrackingCookies() {\r\n document.cookie = `${COOKIES_KEY}expires=${new Date(\"2025-01-01\").toString()}`;\r\n console.log('No Tracking Cookies Settle!')\r\n}\r\n\r\nexport function hasNoTrackingCookies():boolean {\r\n return !!document.cookie.match(COOKIES_KEY);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { hasNoTrackingCookies } from './no-tracking';\r\n\r\ndeclare global {\r\n let gtag: (...args: any[]) => void\r\n}\r\ninterface GoogleAdsConfig {\r\n Id : string,\r\n convertor : {\r\n [name : string] : string,\r\n }\r\n}\r\n\r\nlet _googleAdsConfig : GoogleAdsConfig | undefined = undefined;\r\nexport function setupGA(googleAnalyticsId: string, googleAdsConfig?: GoogleAdsConfig ) {\r\n if(hasNoTrackingCookies()) return;\r\n let script = document.createElement('script') as HTMLScriptElement;\r\n script.type = 'text/javascript';\r\n script.async = true;\r\n script.src = `https://www.googletagmanager.com/gtag/js?id=${googleAnalyticsId}`;\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n \r\n // 因为它需要定义全局变量,所以不能再 ts 里面写. \r\n let script2 = document.createElement('script') as HTMLScriptElement;\r\n script2.type = 'text/javascript';\r\n script2.textContent = `\r\n window.dataLayer = window.dataLayer || [];\r\n function gtag(){dataLayer.push(arguments);}\r\n gtag('js', new Date()); \r\n gtag('config', '${ googleAnalyticsId }', {\r\n 'custom_map': {\r\n 'dimension1': 'scrolled'\r\n }\r\n });\r\n ${googleAdsConfig ? `gtag('config', '${googleAdsConfig.Id}');` : ''}\r\n `;\r\n document.getElementsByTagName('head')[0].appendChild(script2);\r\n\r\n setTimeout(()=>{\r\n gtag('event', 'scrolled_dimension', {\r\n 'scrolled': 'true'\r\n });\r\n },15000);\r\n \r\n document.querySelectorAll('.googleAnalyticsTracking').forEach(elem => {\r\n const trackEventName = elem.dataset['googleAnalyticsEvent'];\r\n elem.addEventListener('click', () => { \r\n setEvent(trackEventName);\r\n });\r\n }); \r\n if(googleAdsConfig){\r\n _googleAdsConfig = googleAdsConfig;\r\n document.querySelectorAll('.googleAdsTracking').forEach(elem => {\r\n const trackConversionName = elem.dataset['googleAdsConversion'];\r\n elem.addEventListener('click', () => { \r\n setAdsConversion(trackConversionName);\r\n });\r\n }); \r\n }\r\n}\r\n\r\nexport function setEvent(eventName:string, eventCategory?:string, eventLabel?:string ){\r\n if(hasNoTrackingCookies()) return;\r\n eventCategory = eventCategory || eventName;\r\n eventLabel = eventLabel || eventName;\r\n gtag('event', `event_${eventName}`, {\r\n 'event_category': `event_${eventCategory}`,\r\n 'event_label': `event_${eventLabel}`,\r\n 'value': 1\r\n });\r\n}\r\n\r\nexport function setAdsConversion(conversionName:string){\r\n if(hasNoTrackingCookies()) return;\r\n gtag('event', 'conversion', { 'send_to': `${_googleAdsConfig.Id}/${_googleAdsConfig.convertor[conversionName]}` });\r\n}\r\n\r\nexport function trySetAdsConversion(conversionName:string){\r\n if(_googleAdsConfig){\r\n setAdsConversion(conversionName);\r\n }\r\n}\r\n\r\n\r\n","export const appConfig = {\r\n ...JSON.parse((document.getElementById('inputHiddenForAppConfig') as HTMLInputElement).value),\r\n ...{\r\n \"googleMapSetting\": {\r\n \"apiKey\": \"AIzaSyDVpWKo8BfojulFDsVvgiz469YoSuOHFP0\",\r\n \"locations\": [\r\n {\r\n \"position\": {\r\n \"lat\": 1.3637087,\r\n \"lng\": 103.8545555\r\n },\r\n \"url\": \"https://www.google.com/maps/place/443+Ang+Mo+Kio+Ave+10,+06%E6%96%B0%E5%8A%A0%E5%9D%A1+560443/@1.3637087,103.8545555,17z/data=!4m5!1m2!2m1!1sBlk+443,+Ang+Mo+Kio+Ave+10,+%2306-1225+Singapore.!3m1!1s0x31da16e2dee7ce01:0xbca7ca3d572cef0\"\r\n }\r\n ],\r\n \"zoom\": 18,\r\n \"center\": {\r\n \"lat\": 1.3637087,\r\n \"lng\": 103.8545555\r\n },\r\n \"styles\": [\r\n \r\n ]\r\n }\r\n }\r\n\r\n}\r\n\r\n","import { ajaxForm } from \"../../../../src/module/form\";\r\nimport { setEvent, setAdsConversion } from \"../../../../src/module/google-analytics\";\r\n\r\nexport function setupContactForm(elementId : string){\r\n ajaxForm({\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 },\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 setEvent('contactForm');\r\n setAdsConversion('contactForm');\r\n },\r\n finally: () => {\r\n //finish all job\r\n }\r\n });\r\n}\r\n\r\n\r\n\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","import { setupPixel } from '../../src/module/facebook-pixel';\r\nimport { setupGA } from '../../src/module/google-analytics';\r\nimport { slideToggle } from '../../src/module/dom';\r\nimport { setupExtension } from '../../src/module/extensions';\r\nimport { appConfig } from '../../src/app-config';\r\nimport { setupGoogleMap } from '../../src/module/google-map';\r\nimport * as $ from \"jquery\";\r\nimport { setupContactForm } from './Component/ContactForm/contact-form';\r\n\r\nexport function setupLayout() {\r\n setupPixel(appConfig.facebookPixelId);\r\n setupGA(appConfig.googleAnalyticsId, {\r\n Id: appConfig.googleAdsId,\r\n convertor: {\r\n 'hpLink': 'HnbnCNei-aQBENbKl9sC',\r\n 'whatsApp': 'JQGvCMr_3KUBENbKl9sC',\r\n 'mapLink': '_iySCL280aUBENbKl9sC',\r\n 'emailLink': 'cTE6CMfI_aQBENbKl9sC',\r\n 'contactForm': 'f-abCM_N_aQBENbKl9sC',\r\n //'liveChat': '_txPCI--0aUBENbKl9sC'\r\n }\r\n });\r\n setupContactForm('footerForm');\r\n\r\n $(document).ready(function () {\r\n var prev: HTMLElement = null;\r\n\r\n document.querySelectorAll(\".drop\").forEach(each => {\r\n each.addEventListener(\"click\", () => {\r\n if (prev == each) {\r\n each.classList.toggle(\"active\");\r\n } else {\r\n for (let x = 0; x < document.querySelectorAll(\".drop\").length; x++) {\r\n document.querySelectorAll(\".drop\")[x].classList.remove(\"active\");\r\n }\r\n\r\n each.classList.add(\"active\");\r\n }\r\n prev = each as HTMLElement;\r\n });\r\n });\r\n\r\n document.querySelector(\".toTop\").addEventListener(\"click\", function () {\r\n $(\"html, body\").animate({ scrollTop: 0 }, 800);\r\n return false;\r\n });\r\n\r\n window.onscroll = function () {\r\n let offset = window.pageYOffset;\r\n if (offset >= 50) {\r\n document.querySelector(\"header\").classList.add(\"active\");\r\n document.querySelector(\".toTop\").classList.add(\"active\");\r\n } else {\r\n document.querySelector(\"header\").classList.remove(\"active\");\r\n document.querySelector(\".toTop\").classList.remove(\"active\");\r\n }\r\n }\r\n\r\n document.querySelectorAll(\".mobileMenuBar\").forEach(each => {\r\n each.addEventListener(\"click\", () => {\r\n each.classList.toggle(\"active\");\r\n })\r\n });\r\n });\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { hasNoTrackingCookies } from \"./no-tracking\";\r\n\r\ndeclare let fbq : (...args: any[]) => void\r\n\r\nexport function setupPixel(facebookPixelId : string) {\r\n if(hasNoTrackingCookies()) return;\r\n let script = document.createElement('script') as HTMLScriptElement;\r\n script.type = 'text/javascript'; \r\n script.textContent = `\r\n !function (f, b, e, v, n, t, s) {\r\n if (f.fbq) return; n = f.fbq = function () {\r\n n.callMethod ?\r\n n.callMethod.apply(n, arguments) : n.queue.push(arguments)\r\n };\r\n if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0';\r\n n.queue = []; t = b.createElement(e); t.async = !0;\r\n t.src = v; s = b.getElementsByTagName(e)[0];\r\n s.parentNode.insertBefore(t, s)\r\n }(window, document, 'script','https://connect.facebook.net/en_US/fbevents.js');\r\n `;\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n fbq('init', facebookPixelId);\r\n fbq('track', 'PageView');\r\n\r\n document.querySelectorAll('.facebookPixelTracking').forEach(elem => {\r\n let trackEventName = elem.dataset['facebookPixelEvent'];\r\n elem.addEventListener('click', () => { \r\n fbq('track', trackEventName);\r\n });\r\n }); \r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import './product.scss';\r\nimport { setupLayout } from '../Shared/layout';\r\n\r\nsetupLayout();\r\n"],"sourceRoot":""}