{"version":3,"file":"static/chunks/864-a4b6523bfae43f4d.js","mappings":"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","sources":["webpack://_N_E/./src/components/Icon/IconCheckCircle.tsx","webpack://_N_E/./src/lib/cloudflareImageResize.ts","webpack://_N_E/./src/components/Image/Image.tsx","webpack://_N_E/./src/lib/gtag.ts","webpack://_N_E/./src/modules/Home/popupStore.ts"],"sourcesContent":["import React from \"react\";\n\ntype Props = {\n size?: number;\n isSameHeight?: boolean;\n height?: number;\n color?: string;\n};\n\nexport const IconCheckCircle: React.FC = ({\n size = 49,\n isSameHeight = false,\n height,\n color = \"#46CA6B\",\n}) => {\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","// import Const from \"../helpers/const\"\n\nimport { CONST } from \"./const\";\n\nexport type CloudflareOptions = {\n width?: number;\n height?: number;\n quality?: number;\n // more options\n //https://developers.cloudflare.com/images/image-resizing/url-format/#options\n};\n\nexport const isImageResizable = (sourceImage: string) => {\n const imageUrl = new URL(sourceImage);\n const imageHosts = CONST.IMAGE_HOSTS.split(\",\");\n\n return imageHosts.includes(imageUrl.host);\n};\n\nexport const resizeImageUrl = (\n sourceImage: string,\n options: CloudflareOptions\n) => {\n try {\n const imageUrl = new URL(sourceImage);\n\n if (isImageResizable(sourceImage)) {\n const pathname = imageUrl.pathname + imageUrl.search;\n\n const { width, height, quality } = options;\n\n let optionsText = width ? `width=${width}` : \"\";\n if (height) {\n optionsText += `,height=${height}`;\n }\n if (quality) {\n optionsText += `,quality=${quality}`;\n } else {\n optionsText += `,quality=75`;\n }\n if (width && height) {\n optionsText += `,fit=cover`;\n }\n if (width || height) {\n optionsText += `,format=auto`;\n }\n return `${imageUrl.origin}/cdn-cgi/image/${optionsText}${pathname}`;\n } else {\n return sourceImage;\n }\n } catch {\n return sourceImage;\n }\n};\n","import {\n CloudflareOptions,\n isImageResizable,\n resizeImageUrl,\n} from \"lib/cloudflareImageResize\";\n\nexport const Image: React.FC<\n CloudflareOptions & React.HTMLProps\n> = (props) => {\n const srcSet =\n props.src && isImageResizable(props.src)\n ? [1, 2, 3]\n .map(\n (i) =>\n `${resizeImageUrl(props.src, {\n width: props.width * i,\n height: props.height * i,\n })} ${i}x`\n )\n .join(\", \")\n : null;\n if (!props.src) return
;\n\n return (\n // @ts-ignore\n \n );\n};\n","import { CONST } from \"lib/const\";\nimport type { Route } from \"nextjs-routes\";\nimport { isBrowser } from \"./ssr\";\n\nconst gaId = CONST.GA_ID;\nconst gtmId = CONST.GTM_ID;\n\n// https://morganfeeney.com/how-to/integrate-google-tag-manager-with-next-js\nexport const pushEvent = (stateLogin: string, currUser: any, rest: any) => {\n let dataPush = {\n user_id: rest.user_id ?? null,\n referral_code: rest?.referral_code ?? null,\n event: rest?.event ?? \"user_identity\",\n ...rest,\n };\n\n if (stateLogin == \"LOGIN\") {\n dataPush.user_id = currUser?.id;\n dataPush.referral_code =\n currUser?.referral !== \"\" ? currUser?.referral : null;\n } else {\n dataPush.referral_code = null;\n dataPush.user_id = null;\n dataPush.event = \"user_identity\";\n }\n\n if (typeof window !== \"undefined\") {\n console.log(\"push to GA ~~\", {\n ...dataPush,\n ...rest,\n });\n\n // @ts-ignore\n window.dataLayer.push({\n ...dataPush,\n ...rest,\n });\n }\n};\n\n// https://developers.google.com/analytics/devguides/collection/gtagjs/pages\nexport const pageview = (url: Route): void => {\n //@ts-ignore\n window.gtag(\"config\", gaId, {\n page_path: url,\n });\n};\n\nexport const pushDataLayer = ({ ...rest }) => {\n if (isBrowser()) {\n //@ts-ignore\n return window.dataLayer.push({\n ...rest,\n });\n }\n};\n","import createStore from \"zustand\";\n\nexport type PopupStore = {\n // state\n isShow: boolean | false;\n currentCtaEvent: string;\n isShowYoutubeModal: boolean;\n\n // actions\n showPopupFormSales: (event: string) => void;\n closePopupFormSales: () => void;\n showPopupYoutube: () => void;\n closePopupYoutube: () =>void;\n};\n\nexport const usePopupStoreFormSales = createStore((set) => ({\n // state\n isShow: false,\n currentCtaEvent: '',\n isShowYoutubeModal: false,\n\n // actions\n showPopupFormSales(event) {\n set({ isShow: true, currentCtaEvent: event });\n },\n closePopupFormSales() {\n set({ isShow: false });\n },\n showPopupYoutube() {\n set({ isShowYoutubeModal: true });\n },\n closePopupYoutube(){\n set({ isShowYoutubeModal: false });\n }\n}));\n"],"names":["IconCheckCircle","size","isSameHeight","height","color","svg","width","viewBox","fill","xmlns","g","filter","rect","x","y","rx","path","fillRule","clipRule","d","defs","id","filterUnits","colorInterpolationFilters","feFlood","floodOpacity","result","feColorMatrix","in","type","values","feOffset","dy","feGaussianBlur","stdDeviation","feBlend","mode","in2","isImageResizable","sourceImage","imageUrl","URL","CONST","includes","host","resizeImageUrl","options","pathname","search","quality","optionsText","origin","Image","props","srcSet","src","map","i","join","img","loading","div","pushDataLayer","rest","isBrowser","window","dataLayer","push","usePopupStoreFormSales","createStore","set","isShow","currentCtaEvent","isShowYoutubeModal","showPopupFormSales","event","closePopupFormSales","showPopupYoutube","closePopupYoutube"],"sourceRoot":""}