@swan-admin/swan-web-component 1.0.86 → 1.0.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BodyScan-BFsORhP7.js +2 -0
- package/dist/BodyScan-BFsORhP7.js.map +1 -0
- package/dist/BodyScan-CzJg5DWX.js +2 -0
- package/dist/BodyScan-CzJg5DWX.js.map +1 -0
- package/dist/FaceScan-CjsWAQWD.js +2 -0
- package/dist/FaceScan-CjsWAQWD.js.map +1 -0
- package/dist/FaceScan-DJ3JKavP.js +2 -0
- package/dist/FaceScan-DJ3JKavP.js.map +1 -0
- package/dist/{LoadingScreen-DgDeiI0O.js → LoadingScreen-DCHEgS3u.js} +2 -2
- package/dist/LoadingScreen-DCHEgS3u.js.map +1 -0
- package/dist/{LoadingScreen-C__KGOn0.js → LoadingScreen-vewtx75y.js} +2 -2
- package/dist/LoadingScreen-vewtx75y.js.map +1 -0
- package/dist/bodyScan.d.ts +2 -2
- package/dist/bodyScan.js +1 -1
- package/dist/bodyScan.mjs +1 -1
- package/dist/faceScan.d.ts +2 -2
- package/dist/faceScan.js +1 -1
- package/dist/faceScan.mjs +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/{interfaces-K-OZcTWn.d.ts → interfaces-DUnjeJHY.d.ts} +1 -2
- package/package.json +1 -1
- package/dist/BodyScan-CD4TAtOe.js +0 -2
- package/dist/BodyScan-CD4TAtOe.js.map +0 -1
- package/dist/BodyScan-C_rKR94B.js +0 -2
- package/dist/BodyScan-C_rKR94B.js.map +0 -1
- package/dist/FaceScan-CMbTqaDD.js +0 -2
- package/dist/FaceScan-CMbTqaDD.js.map +0 -1
- package/dist/FaceScan-nLKzJkWU.js +0 -2
- package/dist/FaceScan-nLKzJkWU.js.map +0 -1
- package/dist/LoadingScreen-C__KGOn0.js.map +0 -1
- package/dist/LoadingScreen-DgDeiI0O.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FaceScan-nLKzJkWU.js","sources":["../src/components/faceScan/FaceScanGuide.tsx","../src/components/faceScan/FaceScanErrorScreen.tsx","../src/customHooks/useFaceScan.ts","../src/components/faceScan/FaceScan.tsx"],"sourcesContent":["import { FaceScanGuideProps } from \"../../types/interfaces\";\nimport Header from \"../Header\";\nimport { GenderType } from \"../../utils/enums\";\nimport { directionMessages, FACE_SCAN_HEADSHOT, glassesOffVideo, maleGlassesOffVideo } from \"../../utils/constants\";\nimport { LanguageContext } from \"../../utils/context/languageContext\";\nimport { useContext } from \"react\";\nimport SpecificButton from \"../../atoms/specificButton/SpecificButton\";\nimport { LanguageKeys } from \"../../utils/languageKeys\";\n\nfunction FaceScanGuide({ stage, videoLoading, setVideoLoading, videoError, setVideoError, gender, config, btnConfig }: FaceScanGuideProps) {\n\tconst { translate } = useContext(LanguageContext) || {};\n\n\n\n\tif (stage === -1) {\n\t\treturn (\n\t\t\t<div className=\"text-center p-[16px] w-full h-full\" style={{ background: config?.style?.base?.backgroundColor }}>\n\t\t\t\t<div className=\"w-full\">\n\t\t\t\t\t<Header noTitle resolvedConfig={config} />\n\t\t\t\t\t<h2\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tfontFamily: config?.style?.heading?.headingFontFamily || \"SeriouslyNostalgic Fn\",\n\t\t\t\t\t\t\tfontSize: config?.style?.heading?.headingFontSize || \"32px\",\n\t\t\t\t\t\t\tcolor: config?.style?.heading?.headingColor || \"#000\",\n\t\t\t\t\t\t\tfontWeight: config?.style?.heading?.headingFontWeight || \"normal\",\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{translate?.(LanguageKeys.faceVisible)}\n\t\t\t\t\t</h2>\n\t\t\t\t\t{videoLoading && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"mb-4 flex items-center justify-center\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tfontFamily: config?.style?.subheading?.subheadingFontFamily || \"'Inter', sans-serif\",\n\t\t\t\t\t\t\t\tfontSize: config?.style?.subheading?.subheadingFontSize || \"14px\",\n\t\t\t\t\t\t\t\tcolor: config?.style?.subheading?.subheadingColor || \"#4b5563\",\n\t\t\t\t\t\t\t\tfontWeight: config?.style?.subheading?.subheadingFontWeight || \"normal\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{translate?.(LanguageKeys.loadingVideo)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{videoError && (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"mb-4 text-red-600\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tfontFamily: config?.style?.subheading?.subheadingFontFamily || \"'Inter', sans-serif\",\n\t\t\t\t\t\t\t\tfontSize: config?.style?.subheading?.subheadingFontSize || \"14px\",\n\t\t\t\t\t\t\t\tcolor: \"#ff0000\",\n\t\t\t\t\t\t\t\tfontWeight: config?.style?.subheading?.subheadingFontWeight || \"normal\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{translate?.(LanguageKeys.videoLoadFailed)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{!videoError && (\n\t\t\t\t\t\t<div className={` w-[100px] mx-auto`}>\n\t\t\t\t\t\t\t<video\n\t\t\t\t\t\t\t\tsrc={gender === GenderType.Male ? maleGlassesOffVideo : glassesOffVideo}\n\t\t\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\t\t\tloop\n\t\t\t\t\t\t\t\tcontrols={false}\n\t\t\t\t\t\t\t\tmuted\n\t\t\t\t\t\t\t\tplaysInline\n\t\t\t\t\t\t\t\tclassName=\"h-full w-full object-contain border-none\"\n\t\t\t\t\t\t\t\tonCanPlay={() => setVideoLoading(false)}\n\t\t\t\t\t\t\t\tonLoadStart={() => setVideoLoading(true)}\n\t\t\t\t\t\t\t\tonError={() => setVideoError(true)}\n\t\t\t\t\t\t\t\taria-label=\"Instructional video: Please remove your glasses before starting the scan.\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"flex justify-center w-full p-[1rem]\">\n\t\t\t\t\t<SpecificButton\n\t\t\t\t\t\tdisabled={btnConfig.isDisabled}\n\t\t\t\t\t\tclassName=\"!w-[60px] !h-[35px] !py-0 !px-0\"\n\t\t\t\t\t\tbuttonText={translate?.(btnConfig.label)}\n\t\t\t\t\t\tpostfixIcon={btnConfig?.icon}\n\t\t\t\t\t\tbuttonFunc={btnConfig.onClick}\n\t\t\t\t\t\tresolvedConfig={config}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className=\"text-center p-[16px] w-full h-full\" style={{ background: config?.style?.base?.backgroundColor }}>\n\t\t\t<div className=\"w-full\">\n\t\t\t\t<Header noTitle resolvedConfig={config} />\n\t\t\t\t<h3\n\t\t\t\t\tclassName=\"mb-[0.5rem]\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontFamily: config?.style?.heading?.headingFontFamily || \"SeriouslyNostalgic Fn\",\n\t\t\t\t\t\tfontSize: config?.style?.heading?.headingFontSize || \"32px\",\n\t\t\t\t\t\tcolor: config?.style?.heading?.headingColor || \"#000\",\n\t\t\t\t\t\tfontWeight: config?.style?.heading?.headingFontWeight || \"normal\",\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{translate?.(directionMessages[stage])}\n\t\t\t\t</h3>\n\t\t\t\t{/* <p>We'll guide you to take 6 selfies </p> */}\n\t\t\t\t<div className=\"max-w-[400px] justify-center gap-1 mx-auto flex items-center\">\n\t\t\t\t\t<div className={` w-[120px] overflow-hidden ${stage === 0 ? \"opacity-100\" : \"opacity-0 hidden\"} `}>\n\t\t\t\t\t\t<video className=\"h-full w-full object-contain border-none\" muted loop autoPlay playsInline>\n\t\t\t\t\t\t\t<source src={gender === GenderType.Male ? FACE_SCAN_HEADSHOT.male.forward : FACE_SCAN_HEADSHOT.female.forward} type=\"video/mp4\" />\n\t\t\t\t\t\t</video>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={` w-[120px] overflow-hidden ${stage === 1 ? \"opacity-100\" : \"opacity-0 hidden\"} `}>\n\t\t\t\t\t\t<video className=\"h-full w-full object-contain border-none\" muted loop autoPlay playsInline>\n\t\t\t\t\t\t\t<source src={gender === GenderType.Male ? FACE_SCAN_HEADSHOT.male.left : FACE_SCAN_HEADSHOT.female.left} type=\"video/mp4\" />\n\t\t\t\t\t\t</video>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={` w-[120px] overflow-hidden ${stage === 2 ? \"opacity-100\" : \"opacity-0 hidden\"} `}>\n\t\t\t\t\t\t<video className=\"h-full w-full object-contain border-none\" muted loop autoPlay playsInline>\n\t\t\t\t\t\t\t<source src={gender === GenderType.Male ? FACE_SCAN_HEADSHOT.male.right : FACE_SCAN_HEADSHOT.female.right} type=\"video/mp4\" />\n\t\t\t\t\t\t</video>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={` w-[120px] overflow-hidden ${stage === 3 ? \"opacity-100\" : \"opacity-0 hidden\"} `}>\n\t\t\t\t\t\t<video className=\"h-full w-full object-contain border-none\" muted loop autoPlay playsInline>\n\t\t\t\t\t\t\t<source src={gender === GenderType.Male ? FACE_SCAN_HEADSHOT.male.smile : FACE_SCAN_HEADSHOT.female.smile} type=\"video/mp4\" />\n\t\t\t\t\t\t</video>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default FaceScanGuide;\n","import { ArrowRight } from \"lucide-react\";\nimport Header from \"../Header\";\nimport SpecificButton from \"../../atoms/specificButton/SpecificButton\";\nimport { useContext } from \"react\";\nimport { LanguageKeys } from \"../../utils/languageKeys\";\nimport { LanguageContext } from \"../../utils/context/languageContext\";\nimport { Config } from \"../../types/interfaces\";\n\nfunction FaceScanErrorScreen({ resetScanState, loading, config }: { resetScanState?: () => void; loading?: boolean; config?: Config }) {\n\tconst { translate,preferredLanguage } = useContext(LanguageContext) || {};\nconsole.log(preferredLanguage,\"preferredLanguage\");\n\nconsole.log(translate?.(LanguageKeys.scanFailed),\"translate\");\n\n\n\treturn (\n\t\t<div className=\"fixed top-[0] left-[0] z-[999] flex justify-center items-center w-full h-full\" style={{ background: config?.style?.base?.backgroundColor }}>\n\t\t\t<div className=\"flex flex-col w-full items-center p-[1rem] rounded-lg \">\n\t\t\t\t<Header noTitle resolvedConfig={config} />\n\t\t\t\t<div className=\"flex flex-col items-center w-full\">\n\t\t\t\t\t<h2\n\t\t\t\t\t\tclassName=\"text-xl font-semibold text-gray-800 \"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tfontFamily: config?.style?.heading?.headingFontFamily || \"SeriouslyNostalgic Fn\",\n\t\t\t\t\t\t\tfontSize: config?.style?.heading?.headingFontSize || \"32px\",\n\t\t\t\t\t\t\tcolor: config?.style?.heading?.headingColor || \"#000\",\n\t\t\t\t\t\t\tfontWeight: config?.style?.heading?.headingFontWeight || \"normal\",\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{translate?.(LanguageKeys.scanFailed)}\n\t\t\t\t\t</h2>\n\t\t\t\t\t<p\n\t\t\t\t\t\tclassName=\"mb-[1.5rem]\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tfontFamily: config?.style?.subheading?.subheadingFontFamily || \"'Inter', sans-serif\",\n\t\t\t\t\t\t\tfontSize: config?.style?.subheading?.subheadingFontSize || \"14px\",\n\t\t\t\t\t\t\tcolor: config?.style?.subheading?.subheadingColor || \"#4b5563\",\n\t\t\t\t\t\t\tfontWeight: config?.style?.subheading?.subheadingFontWeight || \"normal\",\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{translate?.(LanguageKeys.clickToResetScan)}\n\t\t\t\t\t</p>\n\t\t\t\t\t<SpecificButton\n\t\t\t\t\t\tdisabled={loading}\n\t\t\t\t\t\tclassName=\"w-full h-[45px] shadow-[0px_1px_2px_0px_#00000040] text-[16px]\"\n\t\t\t\t\t\tbuttonText={translate?.(LanguageKeys.resetScan)}\n\t\t\t\t\t\tpostfixIcon={<ArrowRight />}\n\t\t\t\t\t\tbuttonFunc={() => resetScanState?.()}\n\t\t\t\t\t\tresolvedConfig={config}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default FaceScanErrorScreen;\n","import {\n useState,\n useRef,\n useEffect,\n useCallback,\n useMemo,\n RefObject,\n} from \"react\";\n// 1. Use TYPE-ONLY imports. These are erased at build time and won't crash SSR.\nimport type { PoseDetector } from \"@tensorflow-models/pose-detection\";\nimport type * as tf from \"@tensorflow/tfjs\";\n\nimport { posthog } from \"posthog-js\";\nimport speechService from \"../utils/service/speechService\";\nimport { videoConstraints, voiceOverAssetsPath } from \"../utils/constants\";\n\n/**\n * useFaceScan Hook with PostHog Analytics\n * Refactored for Zero-Config SSR/CSR Compatibility\n */\n\n// Debounce utility\nfunction debounce(fn: (...args: any) => void, delay: number) {\n let timer: number | NodeJS.Timeout;\n return (...args: any) => {\n if (timer) clearTimeout(timer);\n timer = setTimeout(() => fn(...args), delay);\n };\n}\n\n// Global Singleton Cache (Preserves state across re-renders)\nlet preloadedDetector: PoseDetector | null = null;\nlet isPreloading = false;\n\n// 2. Async Preloader with Dynamic Imports\nexport const preloadDetector = async (): Promise<PoseDetector | null> => {\n // Guard: Never run on server\n if (typeof window === \"undefined\") return null;\n if (preloadedDetector) return preloadedDetector;\n if (isPreloading) {\n // Simple wait mechanism if already loading\n while (isPreloading) {\n await new Promise(r => setTimeout(r, 100));\n if (preloadedDetector) return preloadedDetector;\n }\n }\n\n isPreloading = true;\n\n try {\n // DYNAMIC IMPORTS: Only fetch these heavy bundles in the browser\n const [tf, poseDetection] = await Promise.all([\n import(\"@tensorflow/tfjs\"),\n import(\"@tensorflow-models/pose-detection\")\n ]);\n\n // Initialize Backend\n await tf.setBackend(\"webgl\");\n await tf.ready();\n\n const detector = await poseDetection.createDetector(\n poseDetection.SupportedModels.BlazePose,\n {\n runtime: \"tfjs\",\n modelType: \"full\",\n }\n );\n\n // Dummy video warmup (Performance Optimization)\n // This runs the model once on a blank canvas to \"wake up\" the GPU\n // so the first user frame detects instantly.\n const dummyCanvas = document.createElement(\"canvas\");\n dummyCanvas.width = videoConstraints.width;\n dummyCanvas.height = videoConstraints.height;\n const ctx = dummyCanvas.getContext(\"2d\");\n if (ctx) {\n ctx.fillStyle = \"black\";\n ctx.fillRect(0, 0, dummyCanvas.width, dummyCanvas.height);\n try {\n await detector.estimatePoses(dummyCanvas);\n } catch (e) {\n console.warn(\"Warmup frame failed (non-fatal):\", e);\n }\n }\n\n preloadedDetector = detector;\n return detector;\n } catch (err) {\n console.error(\"Failed to preload detector:\", err);\n return null;\n } finally {\n isPreloading = false;\n }\n};\n\ntype Point = [number, number, number];\n\nfunction useFaceScan({\n faceScanId,\n onValidPose,\n onScanComplete,\n onModelReady,\n onStartRecording,\n shopDomain,\n}: {\n faceScanId: string;\n onValidPose?: () => void;\n onScanComplete?: () => void;\n onModelReady?: () => void;\n onStartRecording: () => void;\n shopDomain: string;\n}) {\n const detectorRef = useRef<PoseDetector | null>(null);\n const [scanStage, setScanStage] = useState(0);\n const [consecutiveValid, setConsecutiveValid] = useState(0);\n const [isModelLoaded, setIsModelLoaded] = useState(false);\n const [isScanningActive, setIsScanningActive] = useState(false);\n \n const utteranceRef = useRef<SpeechSynthesisUtterance | null>(null);\n const scanStageRef = useRef(scanStage);\n const consecutiveValidRef = useRef(consecutiveValid);\n const validityBufferRef = useRef<boolean[]>([]);\n const lastSpokenMessageRef = useRef(\"\");\n const lastSpokenTimeRef = useRef(0);\n const voiceEnabledRef = useRef(false);\n \n const VALIDITY_BUFFER_LENGTH = 10;\n const CONSECUTIVE_VALID_LENGTH = 2;\n const TOTAL_STAGES = 4;\n const POSE_TRACKING_INTERVAL = 4000;\n const lastPoseTrackingTimeRef = useRef(0);\n\n // Safe iOS detection (SSR safe)\n const isIOS = typeof navigator !== 'undefined' && (\n /iPad|iPhone|iPod/.test(navigator.userAgent) ||\n (navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1)\n );\n\n const directionMessages = useMemo(\n () => [\n \"Face front\",\n \"Turn head fully left\",\n \"Turn head fully right\",\n \"Smile facing front\",\n ],\n []\n );\n\n const debouncedTrackPoseDetection = useMemo(\n () =>\n debounce((payload) => {\n posthog.capture(`${shopDomain}/face_scan_pose_detection`, payload);\n }, 4000),\n [shopDomain]\n );\n\n const trackPoseDetection = useCallback(\n (\n faceKeypoints: Point[],\n bodyKeypoints: Point[],\n stage: number,\n headValid: boolean,\n bodyInvalid: boolean,\n consecutiveValidCount: number\n ) => {\n const now = Date.now();\n if (now - lastPoseTrackingTimeRef.current < POSE_TRACKING_INTERVAL) {\n return;\n }\n\n lastPoseTrackingTimeRef.current = now;\n\n try {\n const nose = faceKeypoints[0] || [0, 0, 0];\n const leftEye = faceKeypoints[2] || [0, 0, 0];\n const rightEye = faceKeypoints[5] || [0, 0, 0];\n const leftMouth = faceKeypoints[9] || [0, 0, 0];\n const rightMouth = faceKeypoints[10] || [0, 0, 0];\n\n const faceKeypointScores = faceKeypoints\n .map((kp: Point) => kp[2])\n .filter((score: number) => score > 0);\n const avgFaceScore =\n faceKeypointScores.length > 0\n ? faceKeypointScores.reduce((a, b) => a + b, 0) /\n faceKeypointScores.length\n : 0;\n\n const bodyKeypointScores = bodyKeypoints\n .map((kp: Point) => kp[2])\n .filter((score: number) => score > 0);\n const avgBodyScore =\n bodyKeypointScores.length > 0\n ? bodyKeypointScores.reduce((a: number, b: number) => a + b, 0) /\n bodyKeypointScores.length\n : 0;\n\n const eyeDistance = Math.abs(leftEye[0] - rightEye[0]);\n const noseToRight = nose[0] - rightEye[0];\n const noseToLeft = leftEye[0] - nose[0];\n\n let expectedPosition = \"frontal\";\n if (stage === 1) expectedPosition = \"left\";\n else if (stage === 2) expectedPosition = \"right\";\n else if (stage === 3) expectedPosition = \"frontal_smile\";\n\n const payload = {\n faceScanId,\n stage,\n timestamp: new Date().toISOString(),\n data: JSON.stringify({\n headValid,\n bodyInvalid,\n consecutiveValid: consecutiveValidCount,\n avgFaceScore: parseFloat(avgFaceScore.toFixed(3)),\n avgBodyScore: parseFloat(avgBodyScore.toFixed(3)),\n faceKeypointsDetected: faceKeypointScores.length,\n bodyKeypointsDetected: bodyKeypointScores.length,\n eyeDistance: parseFloat(eyeDistance.toFixed(2)),\n noseToRightRatio: parseFloat((noseToRight / eyeDistance).toFixed(3)),\n noseToLeftRatio: parseFloat((noseToLeft / eyeDistance).toFixed(3)),\n noseScore: parseFloat(nose[2].toFixed(3)),\n leftEyeScore: parseFloat(leftEye[2].toFixed(3)),\n rightEyeScore: parseFloat(rightEye[2].toFixed(3)),\n leftMouthScore: parseFloat(leftMouth[2].toFixed(3)),\n rightMouthScore: parseFloat(rightMouth[2].toFixed(3)),\n expectedPosition,\n }),\n };\n debouncedTrackPoseDetection(payload);\n } catch (error) {\n console.warn(\"Failed to track pose detection:\", error);\n }\n },\n [faceScanId, debouncedTrackPoseDetection]\n );\n\n const enableVoiceCommands = () => {\n voiceEnabledRef.current = true;\n if (typeof window !== 'undefined' && isIOS && \"speechSynthesis\" in window) {\n const silentUtterance = new SpeechSynthesisUtterance(\"\");\n silentUtterance.volume = 0;\n speechSynthesis.speak(silentUtterance);\n }\n };\n\n const startScanSequence = () => {\n posthog.capture(`${shopDomain}/face_scan_detection_started`, {\n faceScanId,\n stage: scanStageRef.current,\n timestamp: new Date().toISOString(),\n stageName: directionMessages[scanStageRef.current],\n });\n\n setTimeout(() => {\n setIsScanningActive(true);\n }, 1500);\n };\n\n const isHeadInPosition = (stage: number, keypoints: Point[]) => {\n // ... logic unchanged ...\n const nose = 0;\n const leftEye = 2;\n const rightEye = 5;\n const leftMouth = 9;\n const rightMouth = 10;\n\n const minScore = 0.2;\n if (\n !keypoints[nose] || !keypoints[leftEye] || !keypoints[rightEye] ||\n keypoints[nose][2] < minScore ||\n keypoints[leftEye][2] < minScore ||\n keypoints[rightEye][2] < minScore\n ) {\n return false;\n }\n\n const eyesToMouthVerticalDistance =\n 0.5 * (keypoints[rightMouth][1] + keypoints[leftMouth][1]) -\n 0.5 * (keypoints[rightEye][1] + keypoints[leftEye][1]);\n\n const faceTiltedness =\n (0.5 * (keypoints[rightMouth][1] + keypoints[leftMouth][1]) -\n keypoints[nose][1]) /\n eyesToMouthVerticalDistance;\n\n const faceIsTilted = faceTiltedness > 0.7 || faceTiltedness < 0.3;\n\n const faceIsVertical =\n Math.abs(keypoints[leftEye][1] - keypoints[rightEye][1]) <\n 0.5 * eyesToMouthVerticalDistance &&\n Math.abs(keypoints[leftMouth][1] - keypoints[rightMouth][1]) <\n 0.5 * eyesToMouthVerticalDistance;\n\n const eyeDistance = keypoints[leftEye][0] - keypoints[rightEye][0];\n const noseToRight = keypoints[nose][0] - keypoints[rightEye][0];\n const noseToLeft = keypoints[leftEye][0] - keypoints[nose][0];\n\n const frontalFace =\n noseToRight > 0.4 * eyeDistance && noseToRight < 0.6 * eyeDistance;\n const fullLeft = noseToRight > 0.85 * eyeDistance;\n const fullRight = noseToLeft > 0.85 * eyeDistance;\n\n switch (stage) {\n case 0:\n return !faceIsTilted && faceIsVertical && frontalFace;\n case 1:\n return !faceIsTilted && faceIsVertical && fullLeft;\n case 2:\n return !faceIsTilted && faceIsVertical && fullRight;\n case 3:\n return !faceIsTilted && faceIsVertical && frontalFace;\n default:\n return false;\n }\n };\n\n const faceScanDetector = async (\n webcamRef: RefObject<HTMLVideoElement | null>,\n canvasRef: RefObject<HTMLCanvasElement | null>\n ) => {\n if (\n !detectorRef.current ||\n !webcamRef.current ||\n !isModelLoaded ||\n !isScanningActive\n )\n return;\n\n // Safety: ensure video is actually playing with data\n if (webcamRef.current.readyState < 2) return;\n\n try {\n const poses = await detectorRef.current.estimatePoses(webcamRef.current);\n if (poses.length > 0) {\n const faceKeypoints: Point[] = [];\n const bodyKeypoints: Point[] = [];\n poses[0].keypoints.forEach((landmark, idx) => {\n const score = landmark.score ?? 0;\n const point: Point = [landmark.x ?? -1, landmark.y ?? -1, score];\n if (idx <= 10) faceKeypoints.push(point);\n else bodyKeypoints.push(point);\n });\n\n // Optional drawing\n if (canvasRef?.current) {\n const ctx = canvasRef.current.getContext(\"2d\");\n const { width, height } = canvasRef.current;\n if (ctx) {\n ctx.clearRect(0, 0, width, height);\n\n const progress = Math.min(\n consecutiveValidRef.current / CONSECUTIVE_VALID_LENGTH,\n 1\n );\n const radius = height * 0.35;\n ctx.beginPath();\n ctx.strokeStyle = \"#00ff00\";\n ctx.lineWidth = 6;\n ctx.arc(\n width / 2,\n height / 2,\n radius + 10,\n -Math.PI / 2,\n -Math.PI / 2 + progress * 2 * Math.PI\n );\n ctx.stroke();\n }\n }\n\n const headValid = isHeadInPosition(scanStageRef.current, faceKeypoints);\n const bodyInvalid =\n bodyKeypoints.slice(2).filter((p) => p[2] > 0.7).length <= 2;\n\n validityBufferRef.current.push(headValid && bodyInvalid);\n if (validityBufferRef.current.length > VALIDITY_BUFFER_LENGTH) {\n validityBufferRef.current.shift();\n }\n\n const validCount = validityBufferRef.current.filter(Boolean).length;\n if (validCount >= 2) {\n const nextValid = consecutiveValidRef.current + 1;\n setConsecutiveValid(nextValid);\n } else {\n setConsecutiveValid(Math.max(0, consecutiveValidRef.current - 1));\n }\n\n if (consecutiveValidRef.current >= CONSECUTIVE_VALID_LENGTH) {\n onValidPose?.();\n\n const nextStage = scanStageRef.current + 1;\n setConsecutiveValid(0);\n validityBufferRef.current = [];\n setScanStage(nextStage);\n setIsScanningActive(false);\n\n (async () => {\n await speechService.playAudio(\n `${voiceOverAssetsPath}face-scan-vos/Sound-effect.mp3`\n );\n posthog.capture(\n `${shopDomain}/face_scan_detection_stage_completed`,\n {\n faceScanId,\n completedStage: scanStageRef.current,\n nextStage,\n timestamp: new Date().toISOString(),\n totalStages: TOTAL_STAGES,\n stageName: directionMessages[scanStageRef.current],\n }\n );\n \n if (nextStage === 1 && onStartRecording) {\n onStartRecording();\n }\n if (nextStage >= TOTAL_STAGES) {\n onScanComplete?.();\n } else {\n let nextSound = null;\n switch (nextStage) {\n case 1: nextSound = \"Left.mp3\"; break;\n case 2: nextSound = \"Right.mp3\"; break;\n case 3: nextSound = \"Smile.mp3\"; break;\n }\n if (nextSound) {\n await speechService.playAudio(\n `${voiceOverAssetsPath}face-scan-vos/${nextSound}`\n );\n }\n startScanSequence();\n }\n })();\n }\n\n trackPoseDetection(\n faceKeypoints,\n bodyKeypoints,\n scanStageRef.current,\n headValid,\n bodyInvalid,\n consecutiveValidRef.current\n );\n }\n } catch (err) {\n console.error(\"Pose detection error:\", err);\n }\n };\n\n const initializeModels = async () => {\n // 3. Browser Guard\n if (typeof window === 'undefined') return;\n\n try {\n console.log(\"Initializing Face Scan...\");\n // Calls our safe, dynamic preloader\n const detector = await preloadDetector();\n \n if (detector) {\n detectorRef.current = detector;\n console.log(\"Face scan model loaded successfully\");\n setIsModelLoaded(true);\n onModelReady?.();\n }\n } catch (err) {\n console.error(\"Error initializing face scan:\", err);\n }\n };\n\n const disposeModelAndTf = async () => {\n // Optional: We might NOT want to dispose if we want to keep the cache \n // for re-mounting. But if you must dispose:\n try {\n setIsModelLoaded(false);\n // NOTE: We generally don't dispose the detector if we want to reuse it \n // via the 'preloadedDetector' global variable.\n // If you dispose here, make sure to set 'preloadedDetector = null' too.\n /* if (detectorRef.current) {\n await detectorRef.current.dispose();\n detectorRef.current = null;\n preloadedDetector = null; // Clear global cache if disposing\n }\n */\n } catch (err) {\n console.error(\"Error disposing resources:\", err);\n } finally {\n // Reset state\n setScanStage(0);\n setConsecutiveValid(0);\n scanStageRef.current = 0;\n consecutiveValidRef.current = 0;\n validityBufferRef.current = [];\n }\n };\n\n const resetScan = () => {\n posthog.capture(`${shopDomain}/face_scan_reset`, {\n faceScanId,\n stage: scanStageRef.current,\n timestamp: new Date().toISOString(),\n stageName: directionMessages[scanStageRef.current],\n consecutiveValid: consecutiveValidRef.current,\n });\n\n setScanStage(0);\n setConsecutiveValid(0);\n setIsScanningActive(false);\n scanStageRef.current = 0;\n consecutiveValidRef.current = 0;\n validityBufferRef.current = [];\n lastSpokenMessageRef.current = \"\";\n lastSpokenTimeRef.current = 0;\n voiceEnabledRef.current = false;\n if (utteranceRef.current) {\n speechSynthesis.cancel();\n utteranceRef.current = null;\n }\n };\n\n useEffect(() => {\n initializeModels();\n return () => {\n disposeModelAndTf();\n };\n }, []);\n\n useEffect(() => {\n scanStageRef.current = scanStage;\n }, [scanStage]);\n\n useEffect(() => {\n consecutiveValidRef.current = consecutiveValid;\n }, [consecutiveValid]);\n\n return {\n faceScanDetector,\n scanStage,\n setScanStage,\n consecutiveValid,\n isModelLoaded,\n resetScan,\n enableVoiceCommands,\n startScanSequence,\n isScanningActive,\n };\n}\n\nexport default useFaceScan;","\"use client\";\nimport { useEffect, useRef, useState, useCallback, useContext } from \"react\";\nimport { ArrowRight } from \"lucide-react\";\nimport { Drawer } from \"@mui/material\";\nimport FaceScanGuide from \"./FaceScanGuide\";\nimport FaceScanErrorScreen from \"./FaceScanErrorScreen\";\nimport posthog from \"posthog-js\";\nimport { FaceScanProps } from \"../../types/interfaces\";\nimport { generateUuid, handleScanTimeCapture, handleWebSocketCapture } from \"../../utils/utils\";\nimport { useLocalConfig } from \"../../config/useLocalConfig\";\nimport { posthogPublicHost, posthogPublicKey, videoConstraints, videoTypes, voiceOverAssetsPath } from \"../../utils/constants\";\nimport swan from \"../../utils/service/swanService\";\nimport speechService from \"../../utils/service/speechService\";\nimport useFaceScan from \"../../customHooks/useFaceScan\";\nimport LoadingScreen from \"../LoadingScreen\";\nimport { LanguageKeys } from \"../../utils/languageKeys\";\nimport LanguageContextProvider, { LanguageContext } from \"../../utils/context/languageContext\";\n\nexport const FaceScan: React.FC<FaceScanProps> = ({ userDetails, onComplete, onScanError, onRetry, config, isError, isSuccess }) => {\n\tconsole.log(config?.language,\"config\");\n\t\n\tconst webcamRef = useRef<HTMLVideoElement | null>(null);\n\tconst canvasRef = useRef<HTMLCanvasElement | null>(null);\n\tconst mediaRecorderRef = useRef<MediaRecorder | null>(null);\n\tconst recordedBlobsRef = useRef<Blob[] | null>([]);\n\tconst streamRef = useRef<MediaStream | null>(null);\n\tconst [showLoader, setShowLoader] = useState(false);\n\tconst [modelReady, setModelReady] = useState(false);\n\tconst [isScanning, setIsScanning] = useState(false);\n\tconst [showGuideCard, setShowGuideCard] = useState(true);\n\tconst [videoLoading, setVideoLoading] = useState(false);\n\tconst [videoError, setVideoError] = useState(false);\n\tconst [hasError, setHasError] = useState(false);\n\tconst [faceScanId, setFaceScanId] = useState(generateUuid());\n\tconst resolvedConfig = useLocalConfig(config);\n\tconst { email, gender, deviceFocalLength, shopDomain, callbackUrl } = userDetails;\n\tconst [supportedTypes, setSupportedTypes] = useState<string[]>([]);\n\t// const supportedTypes = useMemo(() => videoTypes.filter((type) => MediaRecorder.isTypeSupported(type)), []);\n\tconst { setPreferredLanguage } = useContext(LanguageContext) || {};\n\tconst stopRecording = useCallback(() => {\n\t\tconsole.log(\"Stopping recording...\");\n\t\tif (mediaRecorderRef.current && mediaRecorderRef.current.state === \"recording\") {\n\t\t\tmediaRecorderRef.current.stop();\n\t\t}\n\t\tmediaRecorderRef.current = null;\n\t}, []);\n\n\tconst uploadFinalVideo = async () => {\n\t\tsetShowLoader(true);\n\t\tconsole.log(\"upload final video\");\n\t\tif (recordedBlobsRef.current) {\n\t\t\tif (recordedBlobsRef.current.length === 0) {\n\t\t\t\tconsole.error(\"No video data recorded\");\n\t\t\t\tsetHasError(true);\n\t\t\t\tsetShowLoader(false);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst videoFile = new File(recordedBlobsRef.current, `${faceScanId}.webm`, {\n\t\t\t\ttype: \"video/webm\",\n\t\t\t});\n\t\t\tconst fileSize = videoFile.size;\n\t\t\tconst fileSizeMB = (fileSize / (1024 * 1024)).toFixed(2);\n\t\t\tconst estimatedDuration = Math.round(fileSize / 10000);\n\t\t\tconst videoData = {\n\t\t\t\tvideo_size_mb: parseFloat(fileSizeMB),\n\t\t\t\tvideo_size_bytes: fileSize,\n\t\t\t\tblob_count: recordedBlobsRef.current.length,\n\t\t\t\testimated_duration_seconds: estimatedDuration,\n\t\t\t};\n\n\t\t\tconst metaData = [\n\t\t\t\t{ gender: gender },\n\t\t\t\t{ face_scan_id: faceScanId },\n\t\t\t\t{\n\t\t\t\t\tfocal_length: `${deviceFocalLength}`,\n\t\t\t\t},\n\t\t\t\t{ customer_store_url: shopDomain },\n\t\t\t\t{ scan_type: \"face_scan\" },\n\t\t\t\t{ callback_url: callbackUrl },\n\t\t\t];\n\t\t\thandleScanTimeCapture({\n\t\t\t\teventName: `${shopDomain}/face_scan_meta_data`,\n\t\t\t\tfaceScanId,\n\t\t\t\temail,\n\t\t\t\tdata: JSON.stringify({ metaData, videoData }),\n\t\t\t});\n\n\t\t\tconst uploadStartTime = Date.now();\n\t\t\thandleScanTimeCapture({\n\t\t\t\teventName: `${shopDomain}/face_scan_upload_start`,\n\t\t\t\tfaceScanId,\n\t\t\t\temail,\n\t\t\t\tstartTime: uploadStartTime,\n\t\t\t});\n\n\t\t\ttry {\n\t\t\t\tconst res = await swan.fileUpload.faceScanFileUploader({\n\t\t\t\t\tfile: videoFile,\n\t\t\t\t\tobjectKey: faceScanId,\n\t\t\t\t\temail,\n\t\t\t\t\tarrayMetaData: metaData,\n\t\t\t\t\tcontentType: videoFile.type,\n\t\t\t\t});\n\n\t\t\t\tconst uploadEndTime = Date.now();\n\t\t\t\tconst uploadDuration = uploadEndTime - uploadStartTime;\n\n\t\t\t\thandleScanTimeCapture({\n\t\t\t\t\teventName: `${shopDomain}/face_scan_upload_complete`,\n\t\t\t\t\tfaceScanId,\n\t\t\t\t\temail,\n\t\t\t\t\tcompletionTime: uploadEndTime,\n\t\t\t\t\tuploadDuration,\n\t\t\t\t});\n\n\t\t\t\tconsole.log(\"✅ Upload successful\", res);\n\t\t\t\tswan.measurement.handlFaceScaneSocket({\n\t\t\t\t\tfaceScanId,\n\t\t\t\t\tonOpen: () => {\n\t\t\t\t\t\thandleWebSocketCapture({\n\t\t\t\t\t\t\teventName: `${shopDomain}/webSocket`,\n\t\t\t\t\t\t\tfaceScanID: faceScanId,\n\t\t\t\t\t\t\tconnection: \"open\",\n\t\t\t\t\t\t\ttype: \"faceScan_recommendation\",\n\t\t\t\t\t\t\temail,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconsole.log(\"websocket connect open\");\n\t\t\t\t\t},\n\t\t\t\t\tonError: (err) => {\n\t\t\t\t\t\thandleWebSocketCapture({\n\t\t\t\t\t\t\teventName: `${shopDomain}/webSocket`,\n\t\t\t\t\t\t\tfaceScanID: faceScanId,\n\t\t\t\t\t\t\tconnection: \"error\",\n\t\t\t\t\t\t\ttype: \"faceScan_recommendation\",\n\t\t\t\t\t\t\temail,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tonError(err);\n\t\t\t\t\t},\n\t\t\t\t\tonSuccess: (data) => {\n\t\t\t\t\t\thandleWebSocketCapture({\n\t\t\t\t\t\t\teventName: `${shopDomain}/webSocket`,\n\t\t\t\t\t\t\tfaceScanID: faceScanId,\n\t\t\t\t\t\t\tconnection: \"success\",\n\t\t\t\t\t\t\ttype: \"faceScan_recommendation\",\n\t\t\t\t\t\t\temail,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tonSuccess(data);\n\t\t\t\t\t},\n\t\t\t\t\tonClose: () => {\n\t\t\t\t\t\tconsole.log(\"websocket connect close\");\n\t\t\t\t\t\thandleWebSocketCapture({\n\t\t\t\t\t\t\teventName: `${shopDomain}/webSocket`,\n\t\t\t\t\t\t\tfaceScanID: faceScanId,\n\t\t\t\t\t\t\tconnection: \"close\",\n\t\t\t\t\t\t\ttype: \"faceScan_recommendation\",\n\t\t\t\t\t\t\temail,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tonError(error);\n\t\t\t}\n\t\t}\n\t};\n\n\tconst startRecording = useCallback(() => {\n\t\tconsole.log(\"Starting recording for stages 1-3...\");\n\t\tconst stream = webcamRef.current?.srcObject as MediaStream | null;\n\t\tif (!stream) return;\n\n\t\t// Create a canvas to normalize orientation\n\t\tconst videoTrack = stream.getVideoTracks()[0];\n\t\tconst settings = videoTrack.getSettings();\n\t\tconst { width = videoConstraints.width, height = videoConstraints.height } = settings;\n\n\t\tconst canvas = document.createElement(\"canvas\");\n\t\tconst ctx = canvas.getContext(\"2d\");\n\n\t\t// Always force portrait (swap width/height if landscape)\n\t\tif (width > height) {\n\t\t\tcanvas.width = height;\n\t\t\tcanvas.height = width;\n\t\t} else {\n\t\t\tcanvas.width = width;\n\t\t\tcanvas.height = height;\n\t\t}\n\n\t\tconst videoEl = document.createElement(\"video\");\n\t\tvideoEl.srcObject = stream;\n\t\tvideoEl.muted = true;\n\t\tvideoEl.playsInline = true;\n\t\tvideoEl.play();\n\n\t\t// Draw video frames onto canvas\n\t\tconst drawFrame = () => {\n\t\t\t// Rotate if camera gives landscape frames\n\t\t\tif (width > height) {\n\t\t\t\tctx?.save();\n\t\t\t\tctx?.translate(canvas.width, 0);\n\t\t\t\tctx?.rotate(Math.PI / 2);\n\t\t\t\tctx?.drawImage(videoEl, 0, 0, height, width);\n\t\t\t\tctx?.restore();\n\t\t\t} else {\n\t\t\t\tctx?.drawImage(videoEl, 0, 0, width, height);\n\t\t\t}\n\t\t\trequestAnimationFrame(drawFrame);\n\t\t};\n\t\tdrawFrame();\n\n\t\tconst canvasStream = canvas.captureStream(30); // 30fps\n\t\tconst mediaRecorderOptions = supportedTypes.length > 0 ? { mimeType: supportedTypes[0] } : {};\n\t\tlet mediaRecorder;\n\n\t\ttry {\n\t\t\tmediaRecorder = new MediaRecorder(canvasStream, mediaRecorderOptions);\n\t\t} catch (e) {\n\t\t\tconsole.error(\"MediaRecorder init failed:\", e);\n\t\t\tsetHasError(true);\n\t\t\tsetShowLoader(false);\n\t\t\treturn;\n\t\t}\n\n\t\trecordedBlobsRef.current = [];\n\t\tmediaRecorder.ondataavailable = (event) => {\n\t\t\tif (event?.data && event.data.size > 0 && recordedBlobsRef.current) {\n\t\t\t\trecordedBlobsRef.current.push(event.data);\n\t\t\t}\n\t\t};\n\t\tmediaRecorder.onstop = () => {\n\t\t\tconsole.log(\"Recording stopped, total blobs:\", recordedBlobsRef?.current?.length);\n\t\t\tuploadFinalVideo();\n\t\t};\n\n\t\tmediaRecorder.start(100); // 100ms chunks\n\t\tmediaRecorderRef.current = mediaRecorder;\n\t\tconsole.log(\"Recording started successfully (portrait normalized)\");\n\t}, [supportedTypes, uploadFinalVideo]);\n\n\tconst { faceScanDetector, scanStage, setScanStage, resetScan, isModelLoaded, startScanSequence } = useFaceScan({\n\t\tfaceScanId,\n\t\tshopDomain,\n\t\tonScanComplete: () => {\n\t\t\tstopRecording();\n\t\t},\n\t\tonModelReady: () => {\n\t\t\tsetModelReady(true);\n\t\t},\n\t\tonStartRecording: () => {\n\t\t\tconsole.log(\"Stage 0 completed - starting recording for stages 1-3\");\n\t\t\tstartRecording();\n\t\t},\n\t});\n\n\tconst startScan = useCallback(() => {\n\t\tif (!isModelLoaded) return;\n\t\tsetScanStage(0);\n\t\tspeechService.playAudio(`${voiceOverAssetsPath}face-scan-vos/Face-forward.mp3`);\n\t\tsetTimeout(() => {\n\t\t\tsetIsScanning(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tstartScanSequence();\n\t\t\t}, 200);\n\t\t}, 200);\n\t}, [setScanStage, setIsScanning, startScanSequence, isModelLoaded]);\n\n\tconst resetScanState = useCallback(() => {\n\t\tsetIsScanning(false);\n\t\tsetShowGuideCard(true);\n\t\tstopRecording();\n\t\tresetScan();\n\t\tonRetry?.();\n\t\trecordedBlobsRef.current = [];\n\t\tif (mediaRecorderRef.current) {\n\t\t\tmediaRecorderRef.current = null;\n\t\t}\n\t\tsetHasError(false);\n\t\tsetScanStage(-1);\n\t\tsetFaceScanId(generateUuid());\n\t\tif (webcamRef.current && streamRef.current) {\n\t\t\twebcamRef.current.srcObject = streamRef.current;\n\t\t\tconsole.log(\"Camera stream restored after reset\");\n\t\t}\n\t}, [setScanStage, setIsScanning, setShowGuideCard, stopRecording, resetScan, setFaceScanId]);\n\n\tconst onError = (data: any) => {\n\t\tconsole.log(data, \"ws error\");\n\t\tonScanError?.(data);\n\t\tsetHasError(true);\n\t\tsetShowLoader(false);\n\t\tsetShowGuideCard(false);\n\t\thandleScanTimeCapture({\n\t\t\teventName: `${shopDomain}/faceScan`,\n\t\t\tfaceScanId,\n\t\t\tstatus: \"failed\",\n\t\t\temail,\n\t\t\tdata: JSON.stringify(data),\n\t\t});\n\t};\n\n\tconst onSuccess = (data: any) => {\n\t\tconsole.log(data, \"ws success\");\n\t\tif (data && data?.resultType === \"intermediate\") {\n\t\t\thandleScanTimeCapture({\n\t\t\t\teventName: `${shopDomain}/faceScan_success/intermediate`,\n\t\t\t\tfaceScanId,\n\t\t\t\tstatus: \"success\",\n\t\t\t\temail,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t});\n\t\t}\n\t\tonComplete?.(data);\n\t};\n\n\tuseEffect(() => {\n\t\tif (isError || isSuccess) return;\n\t\tif (navigator.mediaDevices.getUserMedia) {\n\t\t\tnavigator.mediaDevices\n\t\t\t\t.getUserMedia({ video: videoConstraints })\n\t\t\t\t.then((stream) => {\n\t\t\t\t\tstreamRef.current = stream;\n\t\t\t\t\tif (webcamRef.current) {\n\t\t\t\t\t\twebcamRef.current.srcObject = stream;\n\t\t\t\t\t\tconsole.log(\"Webcam initialized\");\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((err) => console.error(\"Error accessing webcam:\", err));\n\t\t}\n\t\treturn () => {\n\t\t\tif (streamRef.current) {\n\t\t\t\tstreamRef.current.getTracks().forEach((track) => track.stop());\n\t\t\t}\n\t\t};\n\t}, [isError, isSuccess]);\n\n\t// Face detection interval - only run when scanning is active\n\tuseEffect(() => {\n\t\tif (!modelReady || !isScanning) return;\n\t\tconst intervalId = setInterval(() => {\n\t\t\tfaceScanDetector(webcamRef, canvasRef);\n\t\t}, 500);\n\n\t\t// eslint-disable-next-line consistent-return\n\t\treturn () => clearInterval(intervalId);\n\t}, [faceScanDetector, modelReady, isScanning]);\n\n\tconst getButtonText = () => {\n\t\tif (isScanning) return LanguageKeys.reset;\n\t\tif (!isModelLoaded) return LanguageKeys.loading;\n\t\treturn LanguageKeys.start;\n\t};\n\n\tconsole.log(\"Model ready:\", modelReady, \"Has error:\", hasError, \"Is scanning:\", isScanning, \"showLoader\", showLoader);\n\tuseEffect(() => {\n\t\tif (typeof MediaRecorder !== \"undefined\") {\n\t\t\tconst supported = videoTypes.filter((type) => MediaRecorder.isTypeSupported(type));\n\t\t\tsetSupportedTypes(supported);\n\t\t}\n\t}, []);\n\tuseEffect(() => {\n\t\tsetScanStage(-1);\n\t\tif (isError || isSuccess) return;\n\t}, [isError, isSuccess]);\n\tuseEffect(() => {\n\t\tconsole.log(resolvedConfig?.language,\"resolvedConfig?.language\");\n\t\t\n\t\tsetPreferredLanguage?.(resolvedConfig?.language);\n\t}, [resolvedConfig]);\n\tuseEffect(() => {\n\t\tposthog.init(posthogPublicKey, { api_host: posthogPublicHost });\n\t\tposthog.capture(\"$pageview\");\n\t}, []);\n\n\tif (isError) {\n\t\treturn <LanguageContextProvider><FaceScanErrorScreen config={resolvedConfig} /></LanguageContextProvider>;\n\t}\n\tif (isSuccess) {\n\t\treturn (\n\t\t\t<div className=\"fixed z-[9] w-full h-full\" style={{ background: resolvedConfig?.style?.base?.backgroundColor }}>\n\t\t\t\t{/* <Asset genderType={gender} /> */}\n\t\t\t\t<LoadingScreen url={resolvedConfig?.loader} loaderType=\"black\" />\n\t\t\t</div>\n\n\t\t);\n\t}\n\n\treturn (\n\t\t<LanguageContextProvider>\n\t\t\t<audio id=\"audioElement\" crossOrigin=\"anonymous\" preload=\"auto\" style={{ position: \"absolute\", zIndex: -99999 }} src=\"\" />\n\n\t\t\t{/* Error overlay */}\n\t\t\t{!showLoader && hasError && <FaceScanErrorScreen loading={showLoader} resetScanState={resetScanState} config={resolvedConfig} />}\n\n\t\t\t{/* Always show camera view */}\n\t\t\t<div className=\"h-full flex-col relative w-full flex justify-center items-center text-center rounded-t-[20px]\" style={{ background: resolvedConfig?.style?.base?.backgroundColor }}>\n\t\t\t\t<div className=\"flex-1 w-full max-w-md overflow-hidden\">\n\t\t\t\t\t<div className=\"w-full h-full\">\n\t\t\t\t\t\t<video\n\t\t\t\t\t\t\tref={webcamRef}\n\t\t\t\t\t\t\tautoPlay\n\t\t\t\t\t\t\tplaysInline\n\t\t\t\t\t\t\tmuted\n\t\t\t\t\t\t\twidth={videoConstraints.width}\n\t\t\t\t\t\t\theight={videoConstraints.height}\n\t\t\t\t\t\t\tclassName=\"w-full h-full object-cover fixed left-0 top-0 z-0\"\n\t\t\t\t\t\t\tstyle={{ transform: \"scaleX(-1)\" }}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<canvas ref={canvasRef} width={videoConstraints.width} height={videoConstraints.height} style={{ transform: \"scaleX(-1)\", opacity: \"0\" }} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Error overlay */}\n\t\t\t{!showLoader && hasError && <FaceScanErrorScreen loading={showLoader} resetScanState={resetScanState} config={resolvedConfig} />}\n\n\t\t\t{/* Scan guide drawer - only show when scanning */}\n\t\t\t{showGuideCard && !hasError && !showLoader && (\n\t\t\t\t<Drawer\n\t\t\t\t\topen\n\t\t\t\t\tclassName=\"face-scan-small camera-draw\"\n\t\t\t\t\tanchor=\"bottom\"\n\t\t\t\t\tonClose={(event, reason) => {\n\t\t\t\t\t\tif (reason === \"backdropClick\") {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\thideBackdrop\n\t\t\t\t>\n\t\t\t\t\t<FaceScanGuide\n\t\t\t\t\t\tstage={scanStage}\n\t\t\t\t\t\tvideoLoading={videoLoading}\n\t\t\t\t\t\tsetVideoLoading={setVideoLoading}\n\t\t\t\t\t\tvideoError={videoError}\n\t\t\t\t\t\tsetVideoError={setVideoError}\n\t\t\t\t\t\tgender={gender}\n\t\t\t\t\t\tconfig={resolvedConfig}\n\t\t\t\t\t\tbtnConfig={{\n\t\t\t\t\t\t\tlabel: getButtonText(),\n\t\t\t\t\t\t\tonClick: isScanning ? resetScanState : startScan,\n\t\t\t\t\t\t\tisDisabled: showLoader || !isModelLoaded,\n\t\t\t\t\t\t\ticon: isScanning ? <ArrowRight /> : <></>,\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</Drawer>\n\t\t\t)}\n\t\t</LanguageContextProvider>\n\t);\n};\n"],"names":["FaceScanGuide","stage","videoLoading","setVideoLoading","videoError","setVideoError","gender","config","btnConfig","translate","useContext","LanguageContext","_jsxs","className","style","background","base","backgroundColor","children","_jsx","Header","noTitle","resolvedConfig","fontFamily","heading","headingFontFamily","fontSize","headingFontSize","color","headingColor","fontWeight","headingFontWeight","LanguageKeys","faceVisible","subheading","subheadingFontFamily","subheadingFontSize","subheadingColor","subheadingFontWeight","loadingVideo","videoLoadFailed","src","GenderType","Male","maleGlassesOffVideo","glassesOffVideo","autoPlay","loop","controls","muted","playsInline","onCanPlay","onLoadStart","onError","SpecificButton","disabled","isDisabled","buttonText","label","postfixIcon","icon","buttonFunc","onClick","directionMessages","FACE_SCAN_HEADSHOT","male","forward","female","type","left","right","smile","FaceScanErrorScreen","resetScanState","loading","preferredLanguage","console","log","scanFailed","clickToResetScan","resetScan","ArrowRight","preloadedDetector","isPreloading","useFaceScan","faceScanId","onValidPose","onScanComplete","onModelReady","onStartRecording","shopDomain","detectorRef","useRef","scanStage","setScanStage","useState","consecutiveValid","setConsecutiveValid","isModelLoaded","setIsModelLoaded","isScanningActive","setIsScanningActive","utteranceRef","scanStageRef","consecutiveValidRef","validityBufferRef","lastSpokenMessageRef","lastSpokenTimeRef","voiceEnabledRef","lastPoseTrackingTimeRef","isIOS","navigator","test","userAgent","platform","maxTouchPoints","useMemo","debouncedTrackPoseDetection","fn","delay","timer","args","clearTimeout","setTimeout","debounce","payload","posthog","capture","trackPoseDetection","useCallback","faceKeypoints","bodyKeypoints","headValid","bodyInvalid","consecutiveValidCount","now","Date","current","nose","leftEye","rightEye","leftMouth","rightMouth","faceKeypointScores","map","kp","filter","score","avgFaceScore","length","reduce","a","b","bodyKeypointScores","avgBodyScore","eyeDistance","Math","abs","noseToRight","noseToLeft","expectedPosition","timestamp","toISOString","data","JSON","stringify","parseFloat","toFixed","faceKeypointsDetected","bodyKeypointsDetected","noseToRightRatio","noseToLeftRatio","noseScore","leftEyeScore","rightEyeScore","leftMouthScore","rightMouthScore","error","warn","startScanSequence","stageName","initializeModels","async","window","detector","Promise","r","tf","poseDetection","all","import","setBackend","ready","createDetector","SupportedModels","BlazePose","runtime","modelType","dummyCanvas","document","createElement","width","videoConstraints","height","ctx","getContext","fillStyle","fillRect","estimatePoses","e","err","preloadDetector","useEffect","disposeModelAndTf","faceScanDetector","webcamRef","canvasRef","readyState","poses","keypoints","forEach","landmark","idx","point","x","y","push","clearRect","progress","min","radius","beginPath","strokeStyle","lineWidth","arc","PI","stroke","eyesToMouthVerticalDistance","faceTiltedness","faceIsTilted","faceIsVertical","frontalFace","fullLeft","fullRight","isHeadInPosition","slice","p","shift","Boolean","nextValid","max","nextStage","speechService","playAudio","voiceOverAssetsPath","completedStage","totalStages","nextSound","speechSynthesis","cancel","enableVoiceCommands","silentUtterance","SpeechSynthesisUtterance","volume","speak","userDetails","onComplete","onScanError","onRetry","isError","isSuccess","language","mediaRecorderRef","recordedBlobsRef","streamRef","showLoader","setShowLoader","modelReady","setModelReady","isScanning","setIsScanning","showGuideCard","setShowGuideCard","hasError","setHasError","setFaceScanId","generateUuid","useLocalConfig","email","deviceFocalLength","callbackUrl","supportedTypes","setSupportedTypes","setPreferredLanguage","stopRecording","state","stop","uploadFinalVideo","videoFile","File","fileSize","size","fileSizeMB","estimatedDuration","round","videoData","video_size_mb","video_size_bytes","blob_count","estimated_duration_seconds","metaData","face_scan_id","focal_length","customer_store_url","scan_type","callback_url","handleScanTimeCapture","eventName","uploadStartTime","startTime","res","swan","fileUpload","faceScanFileUploader","file","objectKey","arrayMetaData","contentType","uploadEndTime","uploadDuration","completionTime","measurement","handlFaceScaneSocket","onOpen","handleWebSocketCapture","faceScanID","connection","onSuccess","onClose","startRecording","stream","srcObject","settings","getVideoTracks","getSettings","canvas","videoEl","play","drawFrame","save","rotate","drawImage","restore","requestAnimationFrame","canvasStream","captureStream","mediaRecorderOptions","mimeType","mediaRecorder","MediaRecorder","ondataavailable","event","onstop","start","startScan","status","resultType","mediaDevices","getUserMedia","video","then","catch","getTracks","track","intervalId","setInterval","clearInterval","supported","videoTypes","isTypeSupported","init","posthogPublicKey","api_host","posthogPublicHost","LanguageContextProvider","LoadingScreen","url","loader","loaderType","id","crossOrigin","preload","position","zIndex","ref","transform","opacity","Drawer","open","anchor","reason","hideBackdrop","reset","_Fragment"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingScreen-C__KGOn0.js","sources":["../node_modules/bowser/es5.js","../node_modules/mic-check/lib/requestMediaPermissions.js","../src/utils/enums.ts","../src/utils/context/languageContext.tsx","../src/atoms/specificButton/SpecificButton.tsx","../src/utils/languageKeys.ts","../src/utils/constants.ts","../src/utils/service/swanService.ts","../src/utils/service/speechService.ts","../src/components/Header.tsx","../src/components/LoadingScreen.tsx","../src/utils/utils.ts","../src/config/useLocalConfig.ts"],"sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.bowser=t():e.bowser=t()}(this,(function(){return function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var n in e)r.d(i,n,function(t){return e[t]}.bind(null,n));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=90)}({17:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var i=r(18),n=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||\"\"},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||\"\"},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return}},e.getMacOSVersionName=function(e){var t=e.split(\".\").splice(0,2).map((function(e){return parseInt(e,10)||0}));t.push(0);var r=t[0],i=t[1];if(10===r)switch(i){case 5:return\"Leopard\";case 6:return\"Snow Leopard\";case 7:return\"Lion\";case 8:return\"Mountain Lion\";case 9:return\"Mavericks\";case 10:return\"Yosemite\";case 11:return\"El Capitan\";case 12:return\"Sierra\";case 13:return\"High Sierra\";case 14:return\"Mojave\";case 15:return\"Catalina\";default:return}switch(r){case 11:return\"Big Sur\";case 12:return\"Monterey\";case 13:return\"Ventura\";case 14:return\"Sonoma\";case 15:return\"Sequoia\";default:return}},e.getAndroidVersionName=function(e){var t=e.split(\".\").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?\"Cupcake\":1===t[0]&&t[1]>=6?\"Donut\":2===t[0]&&t[1]<2?\"Eclair\":2===t[0]&&2===t[1]?\"Froyo\":2===t[0]&&t[1]>2?\"Gingerbread\":3===t[0]?\"Honeycomb\":4===t[0]&&t[1]<1?\"Ice Cream Sandwich\":4===t[0]&&t[1]<4?\"Jelly Bean\":4===t[0]&&t[1]>=4?\"KitKat\":5===t[0]?\"Lollipop\":6===t[0]?\"Marshmallow\":7===t[0]?\"Nougat\":8===t[0]?\"Oreo\":9===t[0]?\"Pie\":void 0},e.getVersionPrecision=function(e){return e.split(\".\").length},e.compareVersions=function(t,r,i){void 0===i&&(i=!1);var n=e.getVersionPrecision(t),a=e.getVersionPrecision(r),o=Math.max(n,a),s=0,u=e.map([t,r],(function(t){var r=o-e.getVersionPrecision(t),i=t+new Array(r+1).join(\".0\");return e.map(i.split(\".\"),(function(e){return new Array(20-e.length).join(\"0\")+e})).reverse()}));for(i&&(s=o-Math.min(n,a)),o-=1;o>=s;){if(u[0][o]>u[1][o])return 1;if(u[0][o]===u[1][o]){if(o===s)return 0;o-=1}else if(u[0][o]<u[1][o])return-1}},e.map=function(e,t){var r,i=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)i.push(t(e[r]));return i},e.find=function(e,t){var r,i;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,i=e.length;r<i;r+=1){var n=e[r];if(t(n,r))return n}},e.assign=function(e){for(var t,r,i=e,n=arguments.length,a=new Array(n>1?n-1:0),o=1;o<n;o++)a[o-1]=arguments[o];if(Object.assign)return Object.assign.apply(Object,[e].concat(a));var s=function(){var e=a[t];\"object\"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){i[t]=e[t]}))};for(t=0,r=a.length;t<r;t+=1)s();return e},e.getBrowserAlias=function(e){return i.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return i.BROWSER_MAP[e]||\"\"},e}();t.default=n,e.exports=t.default},18:function(e,t,r){\"use strict\";t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0;t.BROWSER_ALIASES_MAP={AmazonBot:\"amazonbot\",\"Amazon Silk\":\"amazon_silk\",\"Android Browser\":\"android\",BaiduSpider:\"baiduspider\",Bada:\"bada\",BingCrawler:\"bingcrawler\",BlackBerry:\"blackberry\",\"ChatGPT-User\":\"chatgpt_user\",Chrome:\"chrome\",ClaudeBot:\"claudebot\",Chromium:\"chromium\",Diffbot:\"diffbot\",DuckDuckBot:\"duckduckbot\",Electron:\"electron\",Epiphany:\"epiphany\",FacebookExternalHit:\"facebookexternalhit\",Firefox:\"firefox\",Focus:\"focus\",Generic:\"generic\",\"Google Search\":\"google_search\",Googlebot:\"googlebot\",GPTBot:\"gptbot\",\"Internet Explorer\":\"ie\",InternetArchiveCrawler:\"internetarchivecrawler\",\"K-Meleon\":\"k_meleon\",LibreWolf:\"librewolf\",Maxthon:\"maxthon\",\"Meta-ExternalAds\":\"meta_externalads\",\"Meta-ExternalAgent\":\"meta_externalagent\",\"Meta-ExternalFetcher\":\"meta_externalfetcher\",\"Meta-WebIndexer\":\"meta_webindexer\",\"Microsoft Edge\":\"edge\",\"MZ Browser\":\"mz\",\"NAVER Whale Browser\":\"naver\",\"OAI-SearchBot\":\"oai_searchbot\",Omgilibot:\"omgilibot\",Opera:\"opera\",\"Opera Coast\":\"opera_coast\",\"Pale Moon\":\"pale_moon\",PerplexityBot:\"perplexitybot\",\"Perplexity-User\":\"perplexity_user\",PhantomJS:\"phantomjs\",PingdomBot:\"pingdombot\",Puffin:\"puffin\",QQ:\"qq\",QQLite:\"qqlite\",QupZilla:\"qupzilla\",Roku:\"roku\",Safari:\"safari\",Sailfish:\"sailfish\",\"Samsung Internet for Android\":\"samsung_internet\",SeaMonkey:\"seamonkey\",Sleipnir:\"sleipnir\",\"Sogou Browser\":\"sogou\",Swing:\"swing\",Tizen:\"tizen\",\"UC Browser\":\"uc\",Vivaldi:\"vivaldi\",\"WebOS Browser\":\"webos\",WeChat:\"wechat\",YahooSlurp:\"yahooslurp\",\"Yandex Browser\":\"yandex\",YandexBot:\"yandexbot\",YouBot:\"youbot\"};t.BROWSER_MAP={amazonbot:\"AmazonBot\",amazon_silk:\"Amazon Silk\",android:\"Android Browser\",baiduspider:\"BaiduSpider\",bada:\"Bada\",bingcrawler:\"BingCrawler\",blackberry:\"BlackBerry\",chatgpt_user:\"ChatGPT-User\",chrome:\"Chrome\",claudebot:\"ClaudeBot\",chromium:\"Chromium\",diffbot:\"Diffbot\",duckduckbot:\"DuckDuckBot\",edge:\"Microsoft Edge\",electron:\"Electron\",epiphany:\"Epiphany\",facebookexternalhit:\"FacebookExternalHit\",firefox:\"Firefox\",focus:\"Focus\",generic:\"Generic\",google_search:\"Google Search\",googlebot:\"Googlebot\",gptbot:\"GPTBot\",ie:\"Internet Explorer\",internetarchivecrawler:\"InternetArchiveCrawler\",k_meleon:\"K-Meleon\",librewolf:\"LibreWolf\",maxthon:\"Maxthon\",meta_externalads:\"Meta-ExternalAds\",meta_externalagent:\"Meta-ExternalAgent\",meta_externalfetcher:\"Meta-ExternalFetcher\",meta_webindexer:\"Meta-WebIndexer\",mz:\"MZ Browser\",naver:\"NAVER Whale Browser\",oai_searchbot:\"OAI-SearchBot\",omgilibot:\"Omgilibot\",opera:\"Opera\",opera_coast:\"Opera Coast\",pale_moon:\"Pale Moon\",perplexitybot:\"PerplexityBot\",perplexity_user:\"Perplexity-User\",phantomjs:\"PhantomJS\",pingdombot:\"PingdomBot\",puffin:\"Puffin\",qq:\"QQ Browser\",qqlite:\"QQ Browser Lite\",qupzilla:\"QupZilla\",roku:\"Roku\",safari:\"Safari\",sailfish:\"Sailfish\",samsung_internet:\"Samsung Internet for Android\",seamonkey:\"SeaMonkey\",sleipnir:\"Sleipnir\",sogou:\"Sogou Browser\",swing:\"Swing\",tizen:\"Tizen\",uc:\"UC Browser\",vivaldi:\"Vivaldi\",webos:\"WebOS Browser\",wechat:\"WeChat\",yahooslurp:\"YahooSlurp\",yandex:\"Yandex Browser\",yandexbot:\"YandexBot\",youbot:\"YouBot\"};t.PLATFORMS_MAP={bot:\"bot\",desktop:\"desktop\",mobile:\"mobile\",tablet:\"tablet\",tv:\"tv\"};t.OS_MAP={Android:\"Android\",Bada:\"Bada\",BlackBerry:\"BlackBerry\",ChromeOS:\"Chrome OS\",HarmonyOS:\"HarmonyOS\",iOS:\"iOS\",Linux:\"Linux\",MacOS:\"macOS\",PlayStation4:\"PlayStation 4\",Roku:\"Roku\",Tizen:\"Tizen\",WebOS:\"WebOS\",Windows:\"Windows\",WindowsPhone:\"Windows Phone\"};t.ENGINE_MAP={Blink:\"Blink\",EdgeHTML:\"EdgeHTML\",Gecko:\"Gecko\",Presto:\"Presto\",Trident:\"Trident\",WebKit:\"WebKit\"}},90:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var i,n=(i=r(91))&&i.__esModule?i:{default:i},a=r(18);function o(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var s=function(){function e(){}var t,r,i;return e.getParser=function(e,t){if(void 0===t&&(t=!1),\"string\"!=typeof e)throw new Error(\"UserAgent should be a string\");return new n.default(e,t)},e.parse=function(e){return new n.default(e).getResult()},t=e,i=[{key:\"BROWSER_MAP\",get:function(){return a.BROWSER_MAP}},{key:\"ENGINE_MAP\",get:function(){return a.ENGINE_MAP}},{key:\"OS_MAP\",get:function(){return a.OS_MAP}},{key:\"PLATFORMS_MAP\",get:function(){return a.PLATFORMS_MAP}}],(r=null)&&o(t.prototype,r),i&&o(t,i),e}();t.default=s,e.exports=t.default},91:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var i=u(r(92)),n=u(r(93)),a=u(r(94)),o=u(r(95)),s=u(r(17));function u(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||\"\"===e)throw new Error(\"UserAgent parameter can't be empty\");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=s.default.find(i.default,(function(t){if(\"function\"==typeof t.test)return t.test(e);if(Array.isArray(t.test))return t.test.some((function(t){return e.test(t)}));throw new Error(\"Browser's test function is not valid\")}));return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||\"\":this.getBrowser().name||\"\"},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=s.default.find(n.default,(function(t){if(\"function\"==typeof t.test)return t.test(e);if(Array.isArray(t.test))return t.test.some((function(t){return e.test(t)}));throw new Error(\"Browser's test function is not valid\")}));return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||\"\":t||\"\"},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||\"\":t||\"\"},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=s.default.find(a.default,(function(t){if(\"function\"==typeof t.test)return t.test(e);if(Array.isArray(t.test))return t.test.some((function(t){return e.test(t)}));throw new Error(\"Browser's test function is not valid\")}));return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||\"\":this.getEngine().name||\"\"},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=s.default.find(o.default,(function(t){if(\"function\"==typeof t.test)return t.test(e);if(Array.isArray(t.test))return t.test.some((function(t){return e.test(t)}));throw new Error(\"Browser's test function is not valid\")}));return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return s.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,r={},i=0,n={},a=0;if(Object.keys(e).forEach((function(t){var o=e[t];\"string\"==typeof o?(n[t]=o,a+=1):\"object\"==typeof o&&(r[t]=o,i+=1)})),i>0){var o=Object.keys(r),u=s.default.find(o,(function(e){return t.isOS(e)}));if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var c=s.default.find(o,(function(e){return t.isPlatform(e)}));if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f}}if(a>0){var l=Object.keys(n),b=s.default.find(l,(function(e){return t.isBrowser(e,!0)}));if(void 0!==b)return this.compareVersion(n[b])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),i=e.toLowerCase(),n=s.default.getBrowserTypeByAlias(i);return t&&n&&(i=n.toLowerCase()),i===r},t.compareVersion=function(e){var t=[0],r=e,i=!1,n=this.getBrowserVersion();if(\"string\"==typeof n)return\">\"===e[0]||\"<\"===e[0]?(r=e.substr(1),\"=\"===e[1]?(i=!0,r=e.substr(2)):t=[],\">\"===e[0]?t.push(1):t.push(-1)):\"=\"===e[0]?r=e.substr(1):\"~\"===e[0]&&(i=!0,r=e.substr(1)),t.indexOf(s.default.compareVersions(n,r,i))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default},92:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i};var a=/version\\/(\\d+(\\.?_?\\d+)+)/i,o=[{test:[/gptbot/i],describe:function(e){var t={name:\"GPTBot\"},r=n.default.getFirstMatch(/gptbot\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/chatgpt-user/i],describe:function(e){var t={name:\"ChatGPT-User\"},r=n.default.getFirstMatch(/chatgpt-user\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/oai-searchbot/i],describe:function(e){var t={name:\"OAI-SearchBot\"},r=n.default.getFirstMatch(/oai-searchbot\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/claudebot/i,/claude-web/i,/claude-user/i,/claude-searchbot/i],describe:function(e){var t={name:\"ClaudeBot\"},r=n.default.getFirstMatch(/(?:claudebot|claude-web|claude-user|claude-searchbot)\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(e){var t={name:\"Omgilibot\"},r=n.default.getFirstMatch(/(?:omgilibot|webzio-extended)\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/diffbot/i],describe:function(e){var t={name:\"Diffbot\"},r=n.default.getFirstMatch(/diffbot\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/perplexitybot/i],describe:function(e){var t={name:\"PerplexityBot\"},r=n.default.getFirstMatch(/perplexitybot\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/perplexity-user/i],describe:function(e){var t={name:\"Perplexity-User\"},r=n.default.getFirstMatch(/perplexity-user\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/youbot/i],describe:function(e){var t={name:\"YouBot\"},r=n.default.getFirstMatch(/youbot\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/meta-webindexer/i],describe:function(e){var t={name:\"Meta-WebIndexer\"},r=n.default.getFirstMatch(/meta-webindexer\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/meta-externalads/i],describe:function(e){var t={name:\"Meta-ExternalAds\"},r=n.default.getFirstMatch(/meta-externalads\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/meta-externalagent/i],describe:function(e){var t={name:\"Meta-ExternalAgent\"},r=n.default.getFirstMatch(/meta-externalagent\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/meta-externalfetcher/i],describe:function(e){var t={name:\"Meta-ExternalFetcher\"},r=n.default.getFirstMatch(/meta-externalfetcher\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/googlebot/i],describe:function(e){var t={name:\"Googlebot\"},r=n.default.getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/amazonbot/i],describe:function(e){var t={name:\"AmazonBot\"},r=n.default.getFirstMatch(/amazonbot\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/bingbot/i],describe:function(e){var t={name:\"BingCrawler\"},r=n.default.getFirstMatch(/bingbot\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/baiduspider/i],describe:function(e){var t={name:\"BaiduSpider\"},r=n.default.getFirstMatch(/baiduspider\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/duckduckbot/i],describe:function(e){var t={name:\"DuckDuckBot\"},r=n.default.getFirstMatch(/duckduckbot\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/ia_archiver/i],describe:function(e){var t={name:\"InternetArchiveCrawler\"},r=n.default.getFirstMatch(/ia_archiver\\/(\\d+(\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/facebookexternalhit/i,/facebookcatalog/i],describe:function(){return{name:\"FacebookExternalHit\"}}},{test:[/yahoo!?[\\s/]*slurp/i],describe:function(){return{name:\"YahooSlurp\"}}},{test:[/yandexbot/i,/yandexmobilebot/i],describe:function(){return{name:\"YandexBot\"}}},{test:[/pingdom/i],describe:function(){return{name:\"PingdomBot\"}}},{test:[/opera/i],describe:function(e){var t={name:\"Opera\"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:opera)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\\/|opios/i],describe:function(e){var t={name:\"Opera\"},r=n.default.getFirstMatch(/(?:opr|opios)[\\s/](\\S+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:\"Samsung Internet for Android\"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:SamsungBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:\"NAVER Whale Browser\"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:whale)[\\s/](\\d+(?:\\.\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/PaleMoon/i],describe:function(e){var t={name:\"Pale Moon\"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:PaleMoon)[\\s/](\\d+(?:\\.\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:\"MZ Browser\"},r=n.default.getFirstMatch(/(?:MZBrowser)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:\"Focus\"},r=n.default.getFirstMatch(/(?:focus)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:\"Swing\"},r=n.default.getFirstMatch(/(?:swing)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:\"Opera Coast\"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:coast)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\\/\\d+(?:.?_?\\d+)+/i],describe:function(e){var t={name:\"Opera Touch\"},r=n.default.getFirstMatch(/(?:opt)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:\"Yandex Browser\"},r=n.default.getFirstMatch(/(?:yabrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:\"UC Browser\"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:ucbrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:\"Maxthon\"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:Maxthon|mxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:\"Epiphany\"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:epiphany)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:\"Puffin\"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:puffin)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:\"Sleipnir\"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:sleipnir)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:\"K-Meleon\"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:k-meleon)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:\"WeChat\"},r=n.default.getFirstMatch(/(?:micromessenger)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?\"QQ Browser Lite\":\"QQ Browser\"},r=n.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\\d+(\\.?_?\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:\"Internet Explorer\"},r=n.default.getFirstMatch(/(?:msie |rv:)(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\\sedg\\//i],describe:function(e){var t={name:\"Microsoft Edge\"},r=n.default.getFirstMatch(/\\sedg\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:\"Microsoft Edge\"},r=n.default.getSecondMatch(/edg([ea]|ios)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:\"Vivaldi\"},r=n.default.getFirstMatch(/vivaldi\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:\"SeaMonkey\"},r=n.default.getFirstMatch(/seamonkey\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:\"Sailfish\"},r=n.default.getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:\"Amazon Silk\"},r=n.default.getFirstMatch(/silk\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:\"PhantomJS\"},r=n.default.getFirstMatch(/phantomjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:\"SlimerJS\"},r=n.default.getFirstMatch(/slimerjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe:function(e){var t={name:\"BlackBerry\"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:\"WebOS Browser\"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:\"Bada\"},r=n.default.getFirstMatch(/dolfin\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:\"Tizen\"},r=n.default.getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.?_?\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:\"QupZilla\"},r=n.default.getFirstMatch(/(?:qupzilla)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/librewolf/i],describe:function(e){var t={name:\"LibreWolf\"},r=n.default.getFirstMatch(/(?:librewolf)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:\"Firefox\"},r=n.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:\"Electron\"},r=n.default.getFirstMatch(/(?:electron)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sogoumobilebrowser/i,/metasr/i,/se 2\\.[x]/i],describe:function(e){var t={name:\"Sogou Browser\"},r=n.default.getFirstMatch(/(?:sogoumobilebrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e),i=n.default.getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i,e),a=n.default.getFirstMatch(/se ([\\d.]+)x/i,e),o=r||i||a;return o&&(t.version=o),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:\"Miui\"},r=n.default.getFirstMatch(/(?:MiuiBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:\"Chromium\"},r=n.default.getFirstMatch(/(?:chromium)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:\"Chrome\"},r=n.default.getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:\"Google Search\"},r=n.default.getFirstMatch(/(?:GSA)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:\"Android Browser\"},r=n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:\"PlayStation 4\"},r=n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:\"Safari\"},r=n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search(\"\\\\(\")?/^(.*)\\/(.*)[ \\t]\\((.*)/:/^(.*)\\/(.*) /;return{name:n.default.getFirstMatch(t,e),version:n.default.getSecondMatch(t,e)}}}];t.default=o,e.exports=t.default},93:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},a=r(18);var o=[{test:[/Roku\\/DVP/],describe:function(e){var t=n.default.getFirstMatch(/Roku\\/DVP-(\\d+\\.\\d+)/i,e);return{name:a.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=n.default.getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i,e);return{name:a.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=n.default.getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i,e),r=n.default.getWindowsVersionName(t);return{name:a.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:function(e){var t={name:a.OS_MAP.iOS},r=n.default.getSecondMatch(/(Version\\/)(\\d[\\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=n.default.getFirstMatch(/mac os x (\\d+(\\.?_?\\d+)+)/i,e).replace(/[_\\s]/g,\".\"),r=n.default.getMacOSVersionName(t),i={name:a.OS_MAP.MacOS,version:t};return r&&(i.versionName=r),i}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=n.default.getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i,e).replace(/[_\\s]/g,\".\");return{name:a.OS_MAP.iOS,version:t}}},{test:[/OpenHarmony/i],describe:function(e){var t=n.default.getFirstMatch(/OpenHarmony\\s+(\\d+(\\.\\d+)*)/i,e);return{name:a.OS_MAP.HarmonyOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=n.default.getFirstMatch(/android[\\s/-](\\d+(\\.\\d+)*)/i,e),r=n.default.getAndroidVersionName(t),i={name:a.OS_MAP.Android,version:t};return r&&(i.versionName=r),i}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=n.default.getFirstMatch(/(?:web|hpw)[o0]s\\/(\\d+(\\.\\d+)*)/i,e),r={name:a.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe:function(e){var t=n.default.getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i,e)||n.default.getFirstMatch(/blackberry\\d+\\/(\\d+([_\\s]\\d+)*)/i,e)||n.default.getFirstMatch(/\\bbb(\\d+)/i,e);return{name:a.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=n.default.getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i,e);return{name:a.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=n.default.getFirstMatch(/tizen[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:a.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:a.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:a.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=n.default.getFirstMatch(/PlayStation 4[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:a.OS_MAP.PlayStation4,version:t}}}];t.default=o,e.exports=t.default},94:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},a=r(18);var o=[{test:[/googlebot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Google\"}}},{test:[/amazonbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Amazon\"}}},{test:[/gptbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"OpenAI\"}}},{test:[/chatgpt-user/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"OpenAI\"}}},{test:[/oai-searchbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"OpenAI\"}}},{test:[/baiduspider/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Baidu\"}}},{test:[/bingbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Bing\"}}},{test:[/duckduckbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"DuckDuckGo\"}}},{test:[/claudebot/i,/claude-web/i,/claude-user/i,/claude-searchbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Anthropic\"}}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Webz.io\"}}},{test:[/diffbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Diffbot\"}}},{test:[/perplexitybot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Perplexity AI\"}}},{test:[/perplexity-user/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Perplexity AI\"}}},{test:[/youbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"You.com\"}}},{test:[/ia_archiver/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Internet Archive\"}}},{test:[/meta-webindexer/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Meta\"}}},{test:[/meta-externalads/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Meta\"}}},{test:[/meta-externalagent/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Meta\"}}},{test:[/meta-externalfetcher/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Meta\"}}},{test:[/facebookexternalhit/i,/facebookcatalog/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Meta\"}}},{test:[/yahoo/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Yahoo\"}}},{test:[/yandexbot/i,/yandexmobilebot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Yandex\"}}},{test:[/pingdom/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:\"Pingdom\"}}},{test:[/huawei/i],describe:function(e){var t=n.default.getFirstMatch(/(can-l01)/i,e)&&\"Nova\",r={type:a.PLATFORMS_MAP.mobile,vendor:\"Huawei\"};return t&&(r.model=t),r}},{test:[/nexus\\s*(?:7|8|9|10).*/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:\"Nexus\"}}},{test:[/ipad/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:\"Apple\",model:\"iPad\"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:\"Apple\",model:\"iPad\"}}},{test:[/kftt build/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:\"Amazon\",model:\"Kindle Fire HD 7\"}}},{test:[/silk/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:\"Amazon\"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=n.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:a.PLATFORMS_MAP.mobile,vendor:\"Apple\",model:t}}},{test:[/nexus\\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:\"Nexus\"}}},{test:[/Nokia/i],describe:function(e){var t=n.default.getFirstMatch(/Nokia\\s+([0-9]+(\\.[0-9]+)?)/i,e),r={type:a.PLATFORMS_MAP.mobile,vendor:\"Nokia\"};return t&&(r.model=t),r}},{test:[/[^-]mobi/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return\"blackberry\"===e.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:\"BlackBerry\"}}},{test:function(e){return\"bada\"===e.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return\"windows phone\"===e.getBrowserName()},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:\"Microsoft\"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(\".\")[0]);return\"android\"===e.getOSName(!0)&&t>=3},describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){return\"android\"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return\"macos\"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop,vendor:\"Apple\"}}},{test:function(e){return\"windows\"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return\"linux\"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return\"playstation 4\"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(e){return\"roku\"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}}];t.default=o,e.exports=t.default},95:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},a=r(18);var o=[{test:function(e){return\"microsoft edge\"===e.getBrowserName(!0)},describe:function(e){if(/\\sedg\\//i.test(e))return{name:a.ENGINE_MAP.Blink};var t=n.default.getFirstMatch(/edge\\/(\\d+(\\.?_?\\d+)+)/i,e);return{name:a.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:a.ENGINE_MAP.Trident},r=n.default.getFirstMatch(/trident\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:a.ENGINE_MAP.Presto},r=n.default.getFirstMatch(/presto\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:a.ENGINE_MAP.Gecko},r=n.default.getFirstMatch(/gecko\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\\/537\\.36/i],describe:function(){return{name:a.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:a.ENGINE_MAP.WebKit},r=n.default.getFirstMatch(/webkit\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=o,e.exports=t.default}})}));","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.requestVideoPermissions = exports.requestAudioPermissions = exports.requestMediaPermissions = exports.MediaPermissionsErrorType = void 0;\nconst bowser_1 = __importDefault(require(\"bowser\"));\nvar MediaPermissionsErrorType;\n(function (MediaPermissionsErrorType) {\n /** (macOS) browser does not have permission to access cam/mic */\n MediaPermissionsErrorType[\"SystemPermissionDenied\"] = \"SystemPermissionDenied\";\n /** user denied permission for site to access cam/mic */\n MediaPermissionsErrorType[\"UserPermissionDenied\"] = \"UserPermissionDenied\";\n /** (Windows) browser does not have permission to access cam/mic OR camera is in use by another application or browser tab */\n MediaPermissionsErrorType[\"CouldNotStartVideoSource\"] = \"CouldNotStartVideoSource\";\n /** all other errors */\n MediaPermissionsErrorType[\"Generic\"] = \"Generic\";\n})(MediaPermissionsErrorType = exports.MediaPermissionsErrorType || (exports.MediaPermissionsErrorType = {}));\n/**\n * Request camera and mic permissions from the browser.\n * @returns\n */\nconst requestMediaPermissions = (constraints) => {\n return new Promise((resolve, reject) => {\n navigator.mediaDevices\n .getUserMedia(constraints !== null && constraints !== void 0 ? constraints : { audio: true, video: true })\n .then((stream) => {\n stream.getTracks().forEach((t) => {\n t.stop();\n });\n resolve(true);\n })\n .catch((err) => {\n const browser = bowser_1.default.getParser(window.navigator.userAgent);\n const browserName = browser.getBrowserName();\n const errName = err.name;\n const errMessage = err.message;\n let errorType = MediaPermissionsErrorType.Generic;\n if (browserName === 'Chrome') {\n if (errName === 'NotAllowedError') {\n if (errMessage === 'Permission denied by system') {\n errorType =\n MediaPermissionsErrorType.SystemPermissionDenied;\n }\n else if (errMessage === 'Permission denied') {\n errorType =\n MediaPermissionsErrorType.UserPermissionDenied;\n }\n }\n else if (errName === 'NotReadableError') {\n errorType =\n MediaPermissionsErrorType.CouldNotStartVideoSource;\n }\n }\n else if (browserName === 'Safari') {\n if (errName === 'NotAllowedError') {\n errorType =\n MediaPermissionsErrorType.UserPermissionDenied;\n }\n }\n else if (browserName === 'Microsoft Edge') {\n if (errName === 'NotAllowedError') {\n errorType =\n MediaPermissionsErrorType.UserPermissionDenied;\n }\n else if (errName === 'NotReadableError') {\n errorType =\n MediaPermissionsErrorType.CouldNotStartVideoSource;\n }\n }\n else if (browserName === 'Firefox') {\n // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia#exceptions\n if (errName === 'NotFoundError') {\n errorType =\n MediaPermissionsErrorType.SystemPermissionDenied;\n }\n else if (errName === 'NotReadableError') {\n errorType =\n MediaPermissionsErrorType.SystemPermissionDenied;\n }\n else if (errName === 'NotAllowedError') {\n errorType =\n MediaPermissionsErrorType.UserPermissionDenied;\n }\n else if (errName === 'AbortError') {\n errorType =\n MediaPermissionsErrorType.CouldNotStartVideoSource;\n }\n }\n reject({\n type: errorType,\n name: err.name,\n message: err.message,\n });\n // Brave cannot be detected by the bowser library because they removed Brave from the User Agent to reduce fingerprinting\n // https://github.com/brave/browser-laptop/blob/master/CHANGELOG.md#090\n });\n });\n};\nexports.requestMediaPermissions = requestMediaPermissions;\nconst requestAudioPermissions = () => (0, exports.requestMediaPermissions)({ audio: true, video: false });\nexports.requestAudioPermissions = requestAudioPermissions;\nconst requestVideoPermissions = () => (0, exports.requestMediaPermissions)({ audio: false, video: true });\nexports.requestVideoPermissions = requestVideoPermissions;\n","export enum GenderType {\n Male = \"male\",\n Female = \"female\",\n}\nexport enum OnboardingStep {\n Name = \"name\",\n Email = \"email\",\n Height = \"height\",\n Gender = \"gender\",\n}\n\nexport enum MuseScreenStep {\n Body = \"body\",\n Face = \"face\",\n SizeFit = \"sizeFit\",\n Ready = \"ready\",\n}\n\nexport enum MuseAnimationType {\n BodyScan = \"bodyScan\",\n FaceScan = \"faceScan\",\n SizeFit = \"sizeFit\",\n}\n\nexport enum SectionType {\n Full = \"full\",\n Body = \"body\",\n Face = \"face\",\n}\n\nexport enum PreferredLanguage {\n English = \"English\",\n Hindi = \"Hindi\",\n German = \"German\",\n French = \"French\",\n Spanish = \"Spanish\",\n Arabic = \"Arabic\",\n Italian = \"Italian\",\n}\n","\"use client\"\nimport {\n createContext,\n Dispatch,\n ReactNode,\n SetStateAction,\n useMemo,\n useState,\n} from \"react\";\nimport { PreferredLanguage } from \"../enums\";\nimport English from \"../dictionary/EnglishLanguage.json\";\nimport Hindi from \"../dictionary/HindiLanguage.json\";\nimport French from \"../dictionary/FrenchLanguage.json\";\nimport German from \"../dictionary/GermanLanguage.json\";\nimport Spanish from \"../dictionary/SpanishLanguage.json\";\nimport Arabic from \"../dictionary/ArabicLanguage.json\";\nimport Italian from \"../dictionary/ItalianLanguage.json\";\nimport { PreferredLanguageType } from \"../../types/interfaces\";\n\ntype Dictionary = Record<string, string>;\n\nconst dictionaries: Record<PreferredLanguage, Dictionary> = {\n [PreferredLanguage.English]: English as Dictionary,\n [PreferredLanguage.Hindi]: Hindi as Dictionary,\n [PreferredLanguage.French]: French as Dictionary,\n [PreferredLanguage.German]: German as Dictionary,\n [PreferredLanguage.Spanish]: Spanish as Dictionary,\n [PreferredLanguage.Arabic]: Arabic as Dictionary,\n [PreferredLanguage.Italian]: Italian as Dictionary,\n};\n\ninterface ILanguageContext {\n preferredLanguage: PreferredLanguageType;\n setPreferredLanguage: Dispatch<SetStateAction<PreferredLanguageType>>;\n translate: (text: string) => string;\n}\n\nexport const LanguageContext = createContext<ILanguageContext | undefined>(\n undefined\n);\n\nexport default function LanguageContextProvider({\n children,\n}: {\n children: ReactNode;\n}) {\n const [preferredLanguage, setPreferredLanguage] =\n useState<PreferredLanguageType>(PreferredLanguage.English);\n\n const translate = (text: string): string => {\n console.log(text, \"helo\",preferredLanguage);\n return dictionaries?.[preferredLanguage]?.[text] ?? text;\n };\n\n const value = useMemo(\n () => ({\n preferredLanguage,\n setPreferredLanguage,\n translate,\n }),\n [preferredLanguage]\n );\n\n return (\n <LanguageContext.Provider value={value}>\n {children}\n </LanguageContext.Provider>\n );\n}\n","/* eslint-disable react/button-has-type */\nimport React from \"react\";\n\ninterface SpecificButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n buttonFunc?: React.MouseEventHandler<HTMLButtonElement>;\n prefix?: string;\n postfixIcon?: React.ReactNode;\n className?: string;\n buttonText?: string;\n btnSecondary?: boolean;\n loading?: boolean;\n disabled?: boolean;\n type?: \"button\" | \"submit\" | \"reset\";\n id?: string;\n resolvedConfig?: any;\n}\n\nconst SpecificButton: React.FC<SpecificButtonProps> = ({\n buttonFunc,\n prefix,\n postfixIcon,\n className = \"\",\n buttonText,\n btnSecondary,\n loading = false,\n disabled = false,\n type = \"button\",\n id = \"button\",\n resolvedConfig,\n ...props\n}) => {\n\n return (\n <button\n {...props}\n id={id}\n type={type}\n disabled={disabled}\n onClick={buttonFunc}\n className={`${className} ${\"flex min-h-[33px] gap-[5px] border-none cursor-pointer items-center shadow-[0_1px_1px_rgba(0,0,0,0.251)] justify-center [&_svg]:size-[16px] [&_svg]:shrink-0 rounded-[9999px] min-w-[120px] text-[14px] px-6 disabled:shadow-none py-[6px]\"\n }`}\n style={{\n fontFamily: resolvedConfig?.style?.button?.buttonFontFamily || 'Inter, sans-serif',\n fontSize: resolvedConfig?.style?.button?.buttonFontSize || '14px',\n background:disabled?(resolvedConfig?.style?.button?.buttonDisabledBackground) :(btnSecondary? resolvedConfig?.style?.base?.brandColor :resolvedConfig?.style?.button?.buttonBackground) || '#000',\n color:disabled?resolvedConfig?.style?.button?.buttonDisabledTextColor : resolvedConfig?.style?.button?.buttonTextColor || '#fff',\n fontWeight: resolvedConfig?.style?.button?.headingFontWeight || 'normal',\n pointerEvents: disabled ? 'none' : 'auto',\n borderRadius: resolvedConfig?.style?.button?.buttonBorderRadius || '9999px',\n }}\n >\n {prefix && <img className=\"w-[20px] h-[20px]\" src={prefix} alt=\"icon\" />}\n {buttonText}\n {postfixIcon && postfixIcon}\n {/* {loading && disabled && <CircularProgress size={15} />} */}\n </button>\n );\n};\n\nexport default SpecificButton;\n","export const LanguageKeys = {\n onboarding: {\n email: \"emailStep\",\n name: \"nameStep\",\n height: \"heightStep\",\n gender: \"genderStep\",\n heading: \"onboarding\",\n },\n noValidSteps: \"noValidSteps\",\n unsupportedStep: \"unsupportedStep\",\n enterEmail: \"enterEmail\",\n next: \"next\",\n validEmail: \"validEmail\",\n emailRequired: \"emailRequired\",\n nameRequired: \"nameRequired\",\n enterName: \"enterName\",\n mens: \"mens\",\n womens: \"womens\",\n height: \"height\",\n heightInInch: \"heightInInch\",\n heightInFt: \"heightInFt\",\n heightError: \"heightError\",\n cmMeasurementUnit: \"cmMeasurementUnit\",\n ftMeasurementUnit: \"ftMeasurementUnit\",\n bodyScan: \"bodyScan\",\n bodyScanDescription: \"bodyScanDescription\",\n faceScan: \"faceScan\",\n faceScanDescription: \"faceScanDescription\",\n sizeFit: \"sizeFit\",\n readyToStart: \"readyToStart\",\n readyToStartDescription: \"readyToStartDescription\",\n turnUpVolume: \"turnUpVolume\",\n continue: \"continue\",\n phonePlacement: \"phonePlacement\",\n phonePlacementDescription: \"phonePlacementDescription\",\n welcome: \"welcome\",\n phoneModel: \"phoneModel\",\n selectPhoneBrand: \"selectPhoneBrand\",\n selectPhoneModel: \"selectPhoneModel\",\n reset: \"reset\",\n loading: \"loading\",\n start: \"start\",\n faceVisible: \"faceVisible\",\n loadingVideo: \"loadingVideo\",\n videoLoadFailed: \"videoLoadFailed\",\n scanFailed: \"scanFailed\",\n resetScan: \"resetScan\",\n clickToResetScan: \"clickToResetScan\",\n faceFront: \"faceFront\",\n faceLeft: \"faceLeft\",\n faceRight: \"faceRight\",\n faceSmile: \"faceSmile\",\n setting: \"setting\",\n scanStatus: \"scanStatus\",\n startScan: \"Start_Scan\",\n cameraAlreadyInUse: \"cameraAlreadyInUse\",\n tryClosingBrowser: \"tryClosingBrowser\",\n checkCameraSettings: \"checkCameraSettings\",\n enableCameraPermissions: \"enableCameraPermissions\",\n pause: \"pause\",\n restart: \"restart\",\n startLevelCheck: \"startLevelCheck\",\n placePhoneUpright: \"placePhoneUpright\",\n leavePhone: \"leavePhone\",\n measurementsBeingTaken: \"measurementsBeingTaken\",\n serverAtCapacity: \"serverAtCapacity\",\n serverAtCapacityDescription: \"serverAtCapacityDescription\",\n issueWithScan: \"issueWithScan\",\n reason: \"reason\",\n scanAgain: \"scanAgain\",\n Custom_Scan: \"Custom_Scan\",\n Find_your_perfect_fit: \"Find_your_perfect_fit\",\n One_time_setup_in_2_min_or_less: \"One_time_setup_in_2_min_or_less\",\n PRIVACY: \"PRIVACY\",\n Swan_encrypts_your_data_with_Ever_vault_and_ensures_your_video_is_not_seen_by_anyone:\n \"Swan_encrypts_your_data_with_Ever_vault_and_ensures_your_video_is_not_seen_by_anyone\",\n By_ticking_this_box_you_are_agreeing_to_our:\n \"By_ticking_this_box_you_are_agreeing_to_our\",\n privacy_policy: \"privacy_policy\",\n Get_Measured: \"Get_Measured\",\n Login: \"Login\",\n Where_do_you_shop: \"Where_do_you_shop\",\n Men_s: \"Men_s\",\n Women_s: \"Women_s\",\n Next: \"Next\",\n Preferred_language: \"Preferred_language\",\n Hindi: \"Hindi\",\n English: \"English\",\n French: \"French\",\n Spanish: \"Spanish\",\n German: \"German\",\n Italian: \"Italian\",\n Arabic: \"Arabic\",\n Phone_Model: \"Phone_Model\",\n Select_phone_brand: \"Select_phone_brand\",\n Select_phone_model: \"Select_phone_model\",\n Measurement_tips: \"Measurement_tips\",\n Tips_for_your_scan: \"Tips_for_your_scan\",\n Watch_this_video_to_know_how_to_scan: \"Watch_this_video_to_know_how_to_scan\",\n How_to_use_Swan: \"How_to_use_Swan\",\n Watch_this_short_video_to_know_how_to_use:\n \"Watch_this_short_video_to_know_how_to_use\",\n Shop: \"Shop\",\n Skip: \"Skip\",\n Form_fitting_clothing: \"Form_fitting_clothing\",\n How_form_is_fitting_your_outfit: \"How_form_is_fitting_your_outfit\",\n For_accurate_scan_please_wear_tight_clothing_Here_s_an_example:\n \"For_accurate_scan_please_wear_tight_clothing_Here_s_an_example\",\n Scan_with_form_fitting: \"Scan_with_form_fitting\",\n Scan_with_form_loose_fit: \"Scan_with_form_loose_fit\",\n Turn_up_your_volume: \"Turn_up_your_volume\",\n For_smart_voice_guide: \"For_smart_voice_guide\",\n Place_your_phone_on_a_table_at: \"Place_your_phone_on_a_table_at\",\n a_hip_height: \"a_hip_height\",\n Scan: \"Scan\",\n Height: \"Height\",\n Height_in_ft: \"Height_in_ft\",\n Height_in_inch: \"Height_in_inch\",\n How_tall_are_you: \"How_tall_are_you\",\n We_are_sorry_we_currently_do_not_support_this_heights_outside_of_5_ft_and_7_ft_We_are_working_on_new_models_that_do:\n \"We_are_sorry_we_currently_do_not_support_this_heights_outside_of_5_ft_and_7_ft_We_are_working_on_new_models_that_do\",\n Confirm: \"Confirm\",\n To_start_your_measurement: \"To_start_your_measurement\",\n Scan_this_QR_code_with_your_phone: \"Scan_this_QR_code_with_your_phone\",\n You_can_continue_from_here_after_your_scan:\n \"You_can_continue_from_here_after_your_scan\",\n Failed_to_get_measurements: \"Failed_to_get_measurements\",\n No_data_found_Go_back_to: \"No_data_found_Go_back_to\",\n back: \"back\",\n Profile: \"Profile\",\n shopify: \"shopify\",\n fit_view_result: \"fit_view_result\",\n Nest: \"Nest\",\n Scan_again: \"Scan_again\",\n Provide_feedback: \"Provide_feedback\",\n Add_to_cart: \"Add_to_cart\",\n Back_to_product: \"Back_to_product\",\n Fit_Notes: \"Fit_Notes\",\n Fitted: \"Fitted\",\n Ideal_fit: \"Ideal_fit\",\n Relaxed: \"Relaxed\",\n Wrong_email_format: \"Wrong_email_format\",\n Something_went_wrong: \"Something_went_wrong\",\n Email_is_required: \"Email_is_required\",\n Scan_status: \"Scan_status\",\n Uploading: \"Uploading\",\n Processing: \"Processing\",\n Finishing: \"Finishing\",\n Complete: \"Complete\",\n You_re_logged_in: \"You_re_logged_in\",\n Swan_will_load_on_every_supported_page:\n \"Swan_will_load_on_every_supported_page\",\n Happy_Shopping: \"Happy_Shopping\",\n Email_verification_failed: \"Email_verification_failed\",\n Email_Confirmed: \"Email_Confirmed\",\n Measurements_saved: \"Measurements_saved\",\n Login_anywhere_you_see_the_Swan_logo_to_load_your_measurements:\n \"Login_anywhere_you_see_the_Swan_logo_to_load_your_measurements\",\n Check_your_email: \"Check_your_email\",\n Tap_on_the_verification_link_sent_to: \"Tap_on_the_verification_link_sent_to\",\n Email_Confirmation: \"Email_Confirmation\",\n Save_your_scan: \"Save_your_scan\",\n Confirm_with_a_single_tap_from_your_email_inbox:\n \"Confirm_with_a_single_tap_from_your_email_inbox\",\n Saving_your_scan_means_you_can_load_your_measurements_anywhere_you_see_the_Swan_logo:\n \"Saving_your_scan_means_you_can_load_your_measurements_anywhere_you_see_the_Swan_logo\",\n Passwordless_Just_one_tap_via_email: \"Passwordless_Just_one_tap_via_email\",\n Join_2000_shoppers: \"Join_2000_shoppers\",\n Your_measurements_will_be_shared_only_once_your_email_is_confirmed:\n \"Your_measurements_will_be_shared_only_once_your_email_is_confirmed\",\n Enter_your_email: \"Enter_your_email\",\n Send_confirmation_email: \"Send_confirmation_email\",\n No_thanks: \"No_thanks\",\n We_are_sorry: \"We're_sorry\",\n Video_tips_for_scanning: \"Video_tips_for_scanning\",\n Please_make_sure_to: \"Please_make_sure_to\",\n one_Complete_a_full_spin_Starting_and_finishing_with_your_feet_facing_your_phone:\n \"one_Complete_a_full_spin_Starting_and_finishing_with_your_feet_facing_your_phone\",\n two_Rotate_slowly_throughout_your_spin:\n \"two_Rotate_slowly_throughout_your_spin\",\n three_Make_sure_your_full_body_including_feet_and_hands_are_visible_in_frame:\n \"three_Make_sure_your_full_body_including_feet_and_hands_are_visible_in_frame\",\n Scan_s: \"Scan_s\",\n vision_model: \"vision_model\",\n is_at_capacity: \"is_at_capacity\",\n We_are_sorry_about_this_We_are_working_hard_to_add_capacity_Please_try_again_soon:\n \"We_are_sorry_about_this_We_are_working_hard_to_add_capacity_Please_try_again_soon\",\n Oops: \"Oops\",\n Looks_like_this_QR_code_is_not_valid: \"Looks_like_this_QR_code_is_not_valid\",\n Reload_your_desktop_tab_to_generate_a_new_code:\n \"Reload_your_desktop_tab_to_generate_a_new_code\",\n Magic_link: \"Magic_link\",\n We_have_sent_you_a_magic_link_via_email:\n \"We_have_sent_you_a_magic_link_via_email\",\n Please_confirm_your_email_load_your_measurements_on_any_partner_brand:\n \"Please_confirm_your_email_load_your_measurements_on_any_partner_brand\",\n Welcome_back: \"Welcome_back\",\n Load_my_account: \"Load_my_account\",\n Back_to_home: \"Back_to_home\",\n Enter_a_valid_email: \"Enter_a_valid_email\",\n No_measurement_found_for_this_email: \"No_measurement_found_for_this_email\",\n Reset: \"Reset\",\n Resume: \"Resume\",\n Start_Scan: \"Start_Scan\",\n Scanning: \"Scanning\",\n Detecting_Body: \"Detecting_Body\",\n Stop: \"Stop\",\n Generating_Measurements: \"Generating_Measurements\",\n Help: \"Help\",\n Scan_tips: \"Scan_tips\",\n Watch_instructions_video: \"Watch_instructions_video\",\n Wear_form_fitting_clothing_for_the_most_accurate_results:\n \"Wear_form_fitting_clothing_for_the_most_accurate_results\",\n Position_yourself_in_a_brightly_lit_room:\n \"Position_yourself_in_a_brightly_lit_room\",\n Tie_up_long_hair_and_slip_off_your_shoes:\n \"Tie_up_long_hair_and_slip_off_your_shoes\",\n Back: \"Back\",\n Swan: \"Swan\",\n Please_check_your_setting_for_camera_permission:\n \"Please_check_your_setting_for_camera_permission\",\n Settings: \"Settings\",\n Enable_the_camera_permissions: \"Enable_the_camera_permissions\",\n Go_Back: \"Go_Back\",\n Measurements_have_been_shared: \"Measurements_have_been_shared\",\n For_helping_in_getting: \"For_helping_in_getting\",\n Thank_You: \"Thank_You\",\n live: \"live\",\n Your: \"Your\",\n Check_back_soon_to_use_Swan: \"Check_back_soon_to_use_Swan\",\n custom_for_your_next_order: \"custom_for_your_next_order\",\n sevenTillEight: \"7till8\",\n Rhodes_and_Beckett: \"Rhodes_and_Beckett\",\n Send_invite: \"Send_invite\",\n Your_Nest: \"Your_Nest\",\n Share_your_measurements_to_shop_and_gift_for_those_close_to_you:\n \"Share_your_measurements_to_shop_and_gift_for_those_close_to_you\",\n Invite_to_Swan: \"Invite_to_Swan\",\n Name: \"Name\",\n Enter_their_name: \"Enter_their_name\",\n Enter_their_email: \"Enter_their_email\",\n Message: \"Message\",\n Join_Swan: \"Join_Swan\",\n Email: \"Email\",\n Invite: \"Invite\",\n Your_Login: \"Your_Login\",\n Your_Scans: \"Your_Scans\",\n Talk_with_the_CEO: \"Talk_with_the_CEO\",\n Send_me_an_email: \"Send_me_an_email\",\n At_Swan_we_are_here_to_make_shopping_about_you_I_would_love_to_hear_what_you_think_of_Swan_and_what_you_want_to_see_next_I_am_excited_to_hear_your_feedback:\n \"At_Swan_we_are_here_to_make_shopping_about_you_I_would_love_to_hear_what_you_think_of_Swan_and_what_you_want_to_see_next_I_am_excited_to_hear_your_feedback\",\n Eoin: \"Eoin\",\n You_can_close_this_tab_and_return_to_the_original_to_get_your_sizing_suggestion:\n \"You_can_close_this_tab_and_return_to_the_original_to_get_your_sizing_suggestion\",\n Try_On: \"Try_On\",\n Invite_friends: \"Invite_friends\",\n Pending: \"Pending\",\n Decline: \"Decline\",\n gifting_simple: \"gifting_simple\",\n Invite_friends_and_make: \"Invite_friends_and_make\",\n Nest_will_be_able_to_see_and_size_clothes_on_you:\n \"Nest_will_be_able_to_see_and_size_clothes_on_you\",\n By_sharing_your_Swan_profile_those_in_your:\n \"By_sharing_your_Swan_profile_those_in_your\",\n Enter_your_name: \"Enter_your_name\",\n Failed_to_get_tryon: \"Failed_to_get_tryon\",\n In_Progress: \"In_Progress\",\n Go_back_to: \"Go_back_to\",\n};\n","import { StepType } from \"../types/interfaces\";\nimport { LanguageKeys } from \"./languageKeys\";\n\nexport const STEPS: Record<StepType, string> = {\n email: \"What is your email?\",\n name: \"What is your name?\",\n height: \"How tall are you?\",\n gender: \"Where do you shop?\",\n};\n\nexport const OUTFIT_IMAGES = [\n \"https://scan.syze.ai/publicAssets/outfit-1.png\",\n \"https://scan.syze.ai/publicAssets/outfit-2.png\",\n \"https://scan.syze.ai/publicAssets/outfit-3.png\",\n \"https://scan.syze.ai/publicAssets/outfit-4.png\",\n \"https://scan.syze.ai/publicAssets/outfit-5.png\",\n];\nexport const voiceOverAssetsPath =\n \"https://scan.syze.ai/publicAssets/new-voices-over/\";\nexport const maleScanVideo =\n \"https://scan.syze.ai/publicAssets/male-scan-mesh.mp4\";\nexport const femaleScanVideo =\n \"https://scan.syze.ai/publicAssets/scan-mesh.mp4\";\nexport const faceScanVideo =\n \"https://scan.syze.ai/publicAssets/face-scan-zoom.mp4\";\nexport const maleFaceScanVideo =\n \"https://scan.syze.ai/publicAssets/male-face-scan-zoom.mp4\";\nexport const bodyScanPerson =\n \"https://scan.syze.ai/publicAssets/body-scan-person.png\";\nexport const faceScanPerson =\n \"https://scan.syze.ai/publicAssets/face-scan-person.png\";\nexport const fittingGuide =\n \"https://scan.syze.ai/publicAssets/form-fitting-guide.png\";\nexport const leSableDress =\n \"https://scan.syze.ai/publicAssets/le-sable-dress-new.png\";\nexport const sizeSuggestions =\n \"https://scan.syze.ai/publicAssets/sizing-suggestions.mp4\";\nexport const maleSizeSuggestions =\n \"https://scan.syze.ai/publicAssets/male-sizing-suggestions.mp4\";\nexport const maleFormFittingGuide =\n \"https://scan.syze.ai/publicAssets/male-form-fitting.mp4\";\nexport const formFittingGuide =\n \"https://scan.syze.ai/publicAssets/form-fitting.mp4\";\nexport const fullText =\n \"Based on your bust measurement of 85.0 cm and waist measurement of 68.7 cm, a size S is suggested for the Le Sable Dress. This size corresponds to a bust of 86 cm and a waist of 67 cm, closely matching your measurements. The Le Sable Dress is designed for a slim fit & features a slightly stretchy fabric.\";\nexport const setupVideo =\n \"https://scan.syze.ai/publicAssets/phone-on-table.mp4\";\nexport const maleSetupVideo =\n \"https://scan.syze.ai/publicAssets/male-phone-on-table.mp4\";\nexport const pauseIcon = \"https://scan.syze.ai/publicAssets/pause-icon.svg\";\nexport const loaderGif = \"https://scan.syze.ai/publicAssets/loader.gif\";\nexport const loaderBlackGif =\n \"https://scan.syze.ai/publicAssets/loader-black.gif\";\nexport const qrError = \"https://scan.syze.ai/publicAssets/qrError.svg\";\nexport const videoPoster = \"https://scan.syze.ai/publicAssets/video-poster.jpg\";\nexport const measurementProgress =\n \"https://scan.syze.ai/publicAssets/measurement-progress.mp4\";\nexport const maleMeasurementProgress =\n \"https://scan.syze.ai/publicAssets/male-measurement-progress.mp4\";\nconst maleVideoPoster =\n \"https://scan.syze.ai/publicAssets/male-video-poster.png\";\nconst femaleVideoPoster =\n \"https://scan.syze.ai/publicAssets/female-video-poster.png\";\n\nexport const videoTypes = [\"video/webm\", \"video/mp4\", \"video/mpeg\"];\n\nexport const CLOTHING_CUSTOM_FIT_SCAN = \"clothing_custom_fit_scan\";\nexport const CLOTHING_SCAN_WITH_TRY_ON = \"clothing_scan_with_try_on\";\nexport const CLOTHING_SCAN_ONLY = \"clothing_scan_only\";\nexport const CLOTHING_CUSTOM_SCAN = \"clothing_custom_scan\";\nexport const CLOTHING_TRY_ON_SCAN = \"clothing_try_on_scan\";\nexport const CLOTHING_SCAN = \"clothing_scan\";\nexport const CLOTHING_BANNER_SCAN = \"clothing_banner_scan\";\nexport const CLOTHING_TRYON_CONSUMER_SCAN = \"clothing_tryon_consumer_scan\";\n\nexport const TENSORFLOW_SOLUTION_PATH =\n \"https://cdn.jsdelivr.net/npm/@mediapipe/pose\";\n\nexport const posthogPublicKey =\n \"phc_S1Z71u2vBqoH9LhrpckEJoroobYhvHzM1fnjIqse41A\";\nexport const posthogPublicHost = \"https://app.posthog.com\";\n\n\n\nexport const videoConstraints = {\n width: 1280,\n height: 720,\n facingMode: \"user\",\n};\n\nexport const GENDER = {\n male: {\n PRE_LINK:\n \"https://swan-video-assets.getswan.co/SWAN_AI_Video_02_PRESCAN_MALE_V02/SWAN_AI_Video_02_PRESCAN_MALE_V02-output.m3u8\",\n POST_LINK:\n \"https://swan-video-assets.getswan.co/SWAN_AI_Video_03_POSTS0CAN_MALE_V02/SWAN_AI_Video_03_POSTS0CAN_MALE_V02-output.m3u8\",\n },\n female: {\n PRE_LINK:\n \"https://swan-video-assets.getswan.co/SWAN_AI_Video_02_PRESCAN_V02/SWAN_AI_Video_02_PRESCAN_V02-output.m3u8\",\n POST_LINK:\n \"https://swan-video-assets.getswan.co/SWAN_AI_Video_03_POSTS0CAN_V02/SWAN_AI_Video_03_POSTS0CAN_V02-output.m3u8\",\n },\n};\n\nexport const VIDEO_POSTER_GENDER_BASED = {\n male: maleVideoPoster,\n female: femaleVideoPoster,\n};\n\nexport const FACE_SCAN_HEADSHOT = {\n male: {\n forward: \"https://scan.syze.ai/publicAssets/male-face-forward.mp4\",\n left: \"https://scan.syze.ai/publicAssets/male-face-left.mp4\",\n right: \"https://scan.syze.ai/publicAssets/male-face-right.mp4\",\n smile: \"https://scan.syze.ai/publicAssets/male-face-smile.mp4\",\n },\n female: {\n forward: \"https://scan.syze.ai/publicAssets/face-forward.mp4\",\n left: \"https://scan.syze.ai/publicAssets/face-left.mp4\",\n right: \"https://scan.syze.ai/publicAssets/face-right.mp4\",\n smile: \"https://scan.syze.ai/publicAssets/face-smile.mp4\",\n },\n};\n\nexport const glassesOffVideo =\n \"https://scan.syze.ai/publicAssets/glasses-off.mp4\";\nexport const maleGlassesOffVideo =\n \"https://scan.syze.ai/publicAssets/male-glasses-off.mp4\";\n\nexport const heroMaleModel = \"https://scan.syze.ai/publicAssets/hero-male.glb\";\nexport const heroFemaleModel =\n \"https://scan.syze.ai/publicAssets/hero-female.glb\";\n\nexport const directionMessages = [\n LanguageKeys.faceFront,\n LanguageKeys.faceRight,\n LanguageKeys.faceRight,\n LanguageKeys.faceSmile,\n];\n","/* eslint-disable import/no-extraneous-dependencies */\nimport Swan from \"@swan-admin/swan-ai-measurements\";\n\nenum URLType {\n DEV = \"dev\",\n STAGING = \"staging\",\n PROD = \"prod\",\n}\n\nconst REACT_APP_ACCESS_KEY = \"8e35dfd4-010c-40ca-ad79-fc72dc307efb\";\n\nconst swan = new Swan(REACT_APP_ACCESS_KEY, URLType.STAGING);\n\nexport default swan;\n","const speechService = {\n playAudio: (url: string): Promise<void> =>\n new Promise((resolve) => {\n const audio = document.querySelector<HTMLAudioElement>(\"#audioElement\");\n if (!audio) {\n resolve();\n return;\n }\n audio.src = url;\n const onEnded = () => {\n audio.removeEventListener(\"ended\", onEnded);\n resolve();\n };\n audio.addEventListener(\"ended\", onEnded);\n audio.play().catch((e) => {\n audio.removeEventListener(\"ended\", onEnded);\n resolve(); // resolve anyway to avoid blocking\n console.error(e);\n });\n }),\n stopAudio: async () => {\n const audio = document.querySelector<HTMLAudioElement>(\"#audioElement\");\n try {\n if (audio) {\n audio.pause();\n audio.src = \"\";\n audio.currentTime = 0;\n }\n } catch (e) {\n console.error(e);\n }\n },\n};\n\nexport default speechService;\n","import React, { useContext } from \"react\";\nimport { LanguageContext } from \"../utils/context/languageContext\";\nimport { LanguageKeys } from \"../utils/languageKeys\";\n\ninterface HeaderProps {\n\ttitle?: string;\n\tsubtitle?: string;\n\tresolvedConfig?: any;\n\tnoTitle?: boolean;\n}\n\nconst Header: React.FC<HeaderProps> = ({ title, subtitle, resolvedConfig, noTitle }) => {\n\tconst { translate } = useContext(LanguageContext) || {};\n\treturn (\n\t\t<>\n\t\t\t{resolvedConfig?.logo && (\n\t\t\t\t<div className=\"flex justify-start w-full\">\n\t\t\t\t\t<img\n\t\t\t\t\t\tsrc={resolvedConfig.logo}\n\t\t\t\t\t\talt=\"logo\"\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\theight: resolvedConfig?.style?.logo?.logoHeight,\n\t\t\t\t\t\t\twidth: resolvedConfig?.style?.logo?.logoWidth,\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!noTitle && (\n\t\t\t\t<h1\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontFamily: resolvedConfig?.style?.heading?.headingFontFamily || \"SeriouslyNostalgic Fn\",\n\t\t\t\t\t\tfontSize: resolvedConfig?.style?.heading?.headingFontSize || \"32px\",\n\t\t\t\t\t\tcolor: resolvedConfig?.style?.heading?.headingColor || \"#000\",\n\t\t\t\t\t\tfontWeight: resolvedConfig?.style?.heading?.headingFontWeight || \"normal\",\n\t\t\t\t\t}}\n\t\t\t\t\tclassName=\"text-center\"\n\t\t\t\t>\n\t\t\t\t\t{title ? title : translate?.(LanguageKeys.welcome)}\n\t\t\t\t</h1>\n\t\t\t)}\n\t\t\t{subtitle && (\n\t\t\t\t<p\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tfontFamily: resolvedConfig?.style?.subheading?.subheadingFontFamily || \"'Inter', sans-serif\",\n\t\t\t\t\t\tfontSize: resolvedConfig?.style?.subheading?.subheadingFontSize || \"14px\",\n\t\t\t\t\t\tcolor: resolvedConfig?.style?.subheading?.subheadingColor || \"#4b5563\",\n\t\t\t\t\t\tfontWeight: resolvedConfig?.style?.subheading?.subheadingFontWeight || \"normal\",\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{subtitle}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t</>\n\t);\n};\n\nexport default Header;\n","import { loaderBlackGif, loaderGif } from \"../utils/constants\";\n\nfunction LoadingScreen({ size = 60, loaderType = \"default\", url }: { size?: number; loaderType?: string; url?: string }) {\n\treturn (\n\t\t<div className=\"flex items-center justify-center h-full w-full\">\n\t\t\t<img src={url ? url: (loaderType === \"black\" ? loaderBlackGif : loaderGif)} alt=\"Swan logo\" className={`w-[${size}px]`} width={size} />\n\t\t</div>\n\t);\n}\n\nexport default LoadingScreen;\n","import { twMerge } from \"tailwind-merge\";\nimport clsx from \"clsx\";\nimport { Gender, Step } from \"../types/interfaces\";\nimport { posthog } from \"posthog-js\";\nimport { MediaPermissionsErrorType, MediaPermissionsError } from \"mic-check\";\nimport { requestVideoPermissions } from \"mic-check/lib/requestMediaPermissions.js\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { BodyScanObjMetaData } from \"@swan-admin/swan-ai-measurements/dist/constants\";\n\nexport const resolveSteps = (steps: Step[]): Step[] => {\n if (!steps.length) {\n throw new Error(\"❌ Onboarding requires at least one step.\");\n }\n\n // Required types\n const required = [\"email\", \"name\", \"gender\", \"height\"];\n const missing = required.filter((r) => !steps.some((s) => s.type === r));\n if (missing.length > 0) {\n throw new Error(`❌ Missing required steps: ${missing.join(\", \")}`);\n }\n\n // Filter by visibility (default: true)\n const visible = steps.filter((s) => s.isVisible !== false);\n\n // Separate ordered + unordered\n const ordered = visible.filter((s) => typeof s.order === \"number\");\n const unordered = visible.filter((s) => typeof s.order !== \"number\");\n\n // Sort ONLY the ordered ones (by order asc)\n const sortedOrdered = [...ordered].sort((a, b) => a.order! - b.order!);\n\n // 🔥 Keep unordered steps in EXACT same sequence as passed in original `steps`\n const sortedUnordered = steps.filter(\n (s) => s.isVisible !== false && typeof s.order !== \"number\"\n );\n\n // Final resolve:\n return [...sortedOrdered, ...sortedUnordered];\n};\n\nexport const isValidEmail = (email: string) => {\n const checkEmailValidation =\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return checkEmailValidation.test(email);\n};\nexport function cn(...inputs: string[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function convertToCentimeters(feet: number, inches: number) {\n const feetToCentimeters = (feet && +feet * 30.48) ?? 0;\n const inchesToCentimeters = (inches && +inches * 2.54) ?? 0;\n const totalCentimeters = feetToCentimeters + inchesToCentimeters;\n return totalCentimeters;\n}\nexport const handleErrorMessage = (error: any) =>\n error?.response?.data?.error ??\n error?.response?.data?.message ??\n error?.response?.data?.details?.[0]?.message ??\n error?.message ??\n error?.error ??\n \"Something went wrong\";\n\nexport const getBrowserName = () => {\n const browserInfo = navigator.userAgent;\n let browser;\n if (browserInfo.includes(\"Opera\") || browserInfo.includes(\"Opr\")) {\n browser = \"Opera\";\n } else if (browserInfo.includes(\"Edg\")) {\n browser = \"Edge\";\n } else if (\n browserInfo.includes(\"Chrome\") ||\n navigator.vendor.toLowerCase().includes(\"google\")\n ) {\n browser = \"Chrome\";\n } else if (browserInfo.includes(\"Safari\")) {\n browser = \"Safari\";\n } else if (browserInfo.includes(\"Firefox\")) {\n browser = \"Firefox\";\n } else {\n browser = \"Browser\";\n }\n return browser;\n};\n\nexport const handleWebSocketCapture = ({\n eventName,\n scanID,\n connection,\n type,\n email,\n faceScanID,\n}: {\n eventName: string;\n email: string;\n faceScanID?: string;\n scanID?: string;\n type: string;\n connection: string;\n}) => {\n const timestamp = new Date().toISOString();\n const payload: Record<string, string> = {\n connection,\n ...(scanID ? { scanID } : {}),\n timestamp,\n type,\n ...(faceScanID ? { faceScanID } : {}),\n };\n if (email) {\n payload.email = email;\n }\n posthog.capture(eventName, payload);\n};\n\nexport const handleScanTimeCapture = ({\n eventName,\n scanID,\n status,\n email,\n completionTime = 0,\n message = \"\",\n data,\n faceScanId,\n startTime,\n uploadDuration,\n}: {\n eventName: string;\n scanID?: string;\n status?: string;\n completionTime?: number;\n email: string;\n message?: string;\n data?: string;\n faceScanId?: string;\n startTime?: number;\n uploadDuration?: number;\n}) => {\n const timestamp = new Date().toISOString();\n\n const payload = Object.fromEntries(\n Object.entries({\n timestamp,\n status,\n scanID,\n faceScanId,\n email,\n completionTime,\n message,\n data,\n startTime,\n uploadDuration,\n }).filter(([, value]) => value !== undefined && value !== \"\" && value !== 0)\n );\n\n posthog.capture(eventName, payload);\n};\n\nexport const checkCameraPermission = async () => {\n try {\n await requestVideoPermissions();\n\n return { disabled: false, message: \"\" };\n } catch (err) {\n if (typeof err === \"object\" && err !== null && \"type\" in err) {\n const { type } = err as MediaPermissionsError;\n\n if (\n type === MediaPermissionsErrorType.Generic ||\n type === MediaPermissionsErrorType.CouldNotStartVideoSource\n ) {\n return { disabled: true, message: \"Could not start video source\" };\n }\n\n if (\n type === MediaPermissionsErrorType.SystemPermissionDenied ||\n type === MediaPermissionsErrorType.UserPermissionDenied\n ) {\n return { disabled: true, message: \"Permission denied\" };\n }\n }\n\n return { disabled: true, message: \"An unknown error occurred\" };\n }\n};\n\nexport const generateUuid = () => {\n return uuidv4();\n};\n\nexport const getCurrentTimeInSeconds = () => Math.round(Date.now() / 1000);\n\n\nexport const createObjectMetadataArray = ({\n clothes_fit,\n gender,\n email,\n focal_length,\n scan_type,\n customer_store_url,\n height,\n callback_url,\n}: Partial<BodyScanObjMetaData>) => {\n const objectMetadataArray: Partial<BodyScanObjMetaData>[] = [{ clothes_fit }];\n if (email) {\n objectMetadataArray.push({ email });\n }\n if (focal_length) {\n objectMetadataArray.push({ focal_length: `${focal_length}` });\n }\n if (height) {\n objectMetadataArray.push({ height: `${height}` });\n }\n if (customer_store_url) {\n objectMetadataArray.push({ customer_store_url });\n }\n if (gender) {\n objectMetadataArray.push({ gender: gender.toLowerCase() });\n }\n if (scan_type) {\n objectMetadataArray.push({ scan_type });\n }\n if (callback_url) {\n objectMetadataArray.push({ callback_url });\n }\n return objectMetadataArray;\n};\n\nexport const rescanSupportCaptureEvent = ({\n eventName,\n scanID,\n status = false,\n gender,\n email,\n height,\n}: {\n eventName: string;\n scanID: string;\n status: boolean;\n gender: Gender;\n email: string;\n height: number;\n}) => {\n const timestamp = new Date().toISOString();\n const prop = { scanID, timestamp, email, height, gender, status };\n posthog.capture(eventName, prop);\n};\n\n","import { useMemo } from \"react\";\nimport { Config } from \"../types/interfaces\";\nimport { PreferredLanguage } from \"../utils/enums\";\n\n\n/**\n * Ensures default style values are available even when config or nested properties are missing.\n * Merges deeply and memoizes the result for consistent performance.\n */\nexport const useLocalConfig = (config?: Config): Required<Config> => {\n const defaultConfig: Required<Config> = {\n logo: \"https://staging.scan.swanvision.ai/static/media/logo-icon-black.18f18f6cf0f9cd829f66d9b1d3a6e2f9.svg\",\n loader: \"../loader-black.gif\",\n style: {\n base:{\n brandColor: \"#5932F3\",\n backgroundColor: \"#FFFFFF\",\n primaryColor: \"#000000\",\n secondaryColor: \"#D9D9D9\",\n baseTextColor: \"#1E1E1E\",\n baseFontSize: \"16px\",\n baseFontFamily: \"'Inter', sans-serif\",\n },\n logo:{\n logoWidth: \"30px\",\n logoHeight: \"30px\",\n },\n heading:{\n headingColor: \"#000000\",\n headingFontSize: \"32px\",\n headingFontWeight: \"normal\",\n headingFontFamily: \"'SeriouslyNostalgic Fn', serif\",\n },\n subheading:{\n subheadingColor: \"#4b5563\",\n subheadingFontSize: \"14px\",\n subheadingFontWeight: \"normal\",\n subheadingFontFamily: \"'Inter', sans-serif\",\n },\n button:{\n buttonBackground: \"#220B12\",\n buttonFontSize: \"14px\",\n buttonFontFamily: \"'Inter', sans-serif\",\n buttonDisabledBackground: \"#D9D9D9\",\n buttonDisabledTextColor: \"#000000\",\n buttonTextColor: \"#FFFFFF\",\n buttonBorderRadius: \"9999px\",\n },\n input:{\n inputBackgroundColor: \"#F9FAFC\",\n inputTextColor: \"#000000\",\n inputPlaceholderColor: \"#000000\",\n inputBorderColor: \"#F9FAFC\",\n inputFontSize: \"14px\",\n inputFontWeight: \"500\",\n inputBorderRadius: \"8px\",\n inputErrorColor: \"#000000\",\n inputErrorFontSize:\"14px\"\n },\n angleDetector:{\n successAngleBackground: \"#4f46e5\",\n successAngleLowBackground: \"#ffffff\",\n successAngleTextLightColor: \"#FFFFFF\",\n successAngleTextDarkColor: \"#000000\",\n \n },\n },\n language: config?.language || PreferredLanguage.English,\n };\n\n return useMemo(() => ({\n logo: config?.logo ?? defaultConfig?.logo,\n loader: config?.loader||\"\",\n style: {\n ...defaultConfig.style,\n ...(config?.style || {}),\n },\n language: defaultConfig?.language\n }), [config]);\n};\n"],"names":["exports","e","t","r","i","n","l","call","m","c","d","o","Object","defineProperty","enumerable","get","Symbol","toStringTag","value","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","getFirstMatch","match","length","getSecondMatch","matchAndReturnConst","test","getWindowsVersionName","getMacOSVersionName","split","splice","map","parseInt","push","getAndroidVersionName","getVersionPrecision","compareVersions","a","Math","max","u","Array","join","reverse","min","find","assign","arguments","apply","concat","keys","forEach","getBrowserAlias","BROWSER_ALIASES_MAP","getBrowserTypeByAlias","BROWSER_MAP","ENGINE_MAP","OS_MAP","PLATFORMS_MAP","AmazonBot","BaiduSpider","Bada","BingCrawler","BlackBerry","Chrome","ClaudeBot","Chromium","Diffbot","DuckDuckBot","Electron","Epiphany","FacebookExternalHit","Firefox","Focus","Generic","Googlebot","GPTBot","InternetArchiveCrawler","LibreWolf","Maxthon","Omgilibot","Opera","PerplexityBot","PhantomJS","PingdomBot","Puffin","QQ","QQLite","QupZilla","Roku","Safari","Sailfish","SeaMonkey","Sleipnir","Swing","Tizen","Vivaldi","WeChat","YahooSlurp","YandexBot","YouBot","amazonbot","amazon_silk","android","baiduspider","bada","bingcrawler","blackberry","chatgpt_user","chrome","claudebot","chromium","diffbot","duckduckbot","edge","electron","epiphany","facebookexternalhit","firefox","focus","generic","google_search","googlebot","gptbot","ie","internetarchivecrawler","k_meleon","librewolf","maxthon","meta_externalads","meta_externalagent","meta_externalfetcher","meta_webindexer","mz","naver","oai_searchbot","omgilibot","opera","opera_coast","pale_moon","perplexitybot","perplexity_user","phantomjs","pingdombot","puffin","qq","qqlite","qupzilla","roku","safari","sailfish","samsung_internet","seamonkey","sleipnir","sogou","swing","tizen","uc","vivaldi","webos","wechat","yahooslurp","yandex","yandexbot","youbot","bot","desktop","mobile","tablet","tv","Android","ChromeOS","HarmonyOS","iOS","Linux","MacOS","PlayStation4","WebOS","Windows","WindowsPhone","Blink","EdgeHTML","Gecko","Presto","Trident","WebKit","configurable","writable","key","getParser","Error","parse","getResult","this","_ua","parsedResult","getUA","parseBrowser","browser","isArray","some","describe","getBrowser","getBrowserName","String","name","toLowerCase","getBrowserVersion","version","getOS","os","parseOS","getOSName","getOSVersion","getPlatform","platform","parsePlatform","getPlatformType","type","getEngine","engine","parseEngine","getEngineName","satisfies","isOS","isPlatform","f","b","isBrowser","compareVersion","substr","indexOf","isEngine","is","search","versionName","replace","vendor","model","Number","__importDefault","mod","requestVideoPermissions","requestAudioPermissions","requestMediaPermissions","MediaPermissionsErrorType","bowser_1","require$$0","constraints","Promise","resolve","reject","navigator","mediaDevices","getUserMedia","audio","video","then","stream","getTracks","stop","catch","err","browserName","window","userAgent","errName","errMessage","message","errorType","SystemPermissionDenied","UserPermissionDenied","CouldNotStartVideoSource","GenderType","OnboardingStep","MuseScreenStep","MuseAnimationType","SectionType","PreferredLanguage","dictionaries","English","Hindi","French","German","Spanish","Arabic","Italian","LanguageContext","createContext","undefined","LanguageKeys","onboarding","email","height","gender","heading","noValidSteps","unsupportedStep","enterEmail","next","validEmail","emailRequired","nameRequired","enterName","mens","womens","heightInInch","heightInFt","heightError","cmMeasurementUnit","ftMeasurementUnit","bodyScan","bodyScanDescription","faceScan","faceScanDescription","sizeFit","readyToStart","readyToStartDescription","turnUpVolume","continue","phonePlacement","phonePlacementDescription","welcome","phoneModel","selectPhoneBrand","selectPhoneModel","reset","loading","start","faceVisible","loadingVideo","videoLoadFailed","scanFailed","resetScan","clickToResetScan","faceFront","faceLeft","faceRight","faceSmile","setting","scanStatus","startScan","cameraAlreadyInUse","tryClosingBrowser","checkCameraSettings","enableCameraPermissions","pause","restart","startLevelCheck","placePhoneUpright","leavePhone","measurementsBeingTaken","serverAtCapacity","serverAtCapacityDescription","issueWithScan","reason","scanAgain","Custom_Scan","Find_your_perfect_fit","One_time_setup_in_2_min_or_less","PRIVACY","Swan_encrypts_your_data_with_Ever_vault_and_ensures_your_video_is_not_seen_by_anyone","By_ticking_this_box_you_are_agreeing_to_our","privacy_policy","Get_Measured","Login","Where_do_you_shop","Men_s","Women_s","Next","Preferred_language","Phone_Model","Select_phone_brand","Select_phone_model","Measurement_tips","Tips_for_your_scan","Watch_this_video_to_know_how_to_scan","How_to_use_Swan","Watch_this_short_video_to_know_how_to_use","Shop","Skip","Form_fitting_clothing","How_form_is_fitting_your_outfit","For_accurate_scan_please_wear_tight_clothing_Here_s_an_example","Scan_with_form_fitting","Scan_with_form_loose_fit","Turn_up_your_volume","For_smart_voice_guide","Place_your_phone_on_a_table_at","a_hip_height","Scan","Height","Height_in_ft","Height_in_inch","How_tall_are_you","We_are_sorry_we_currently_do_not_support_this_heights_outside_of_5_ft_and_7_ft_We_are_working_on_new_models_that_do","Confirm","To_start_your_measurement","Scan_this_QR_code_with_your_phone","You_can_continue_from_here_after_your_scan","Failed_to_get_measurements","No_data_found_Go_back_to","back","Profile","shopify","fit_view_result","Nest","Scan_again","Provide_feedback","Add_to_cart","Back_to_product","Fit_Notes","Fitted","Ideal_fit","Relaxed","Wrong_email_format","Something_went_wrong","Email_is_required","Scan_status","Uploading","Processing","Finishing","Complete","You_re_logged_in","Swan_will_load_on_every_supported_page","Happy_Shopping","Email_verification_failed","Email_Confirmed","Measurements_saved","Login_anywhere_you_see_the_Swan_logo_to_load_your_measurements","Check_your_email","Tap_on_the_verification_link_sent_to","Email_Confirmation","Save_your_scan","Confirm_with_a_single_tap_from_your_email_inbox","Saving_your_scan_means_you_can_load_your_measurements_anywhere_you_see_the_Swan_logo","Passwordless_Just_one_tap_via_email","Join_2000_shoppers","Your_measurements_will_be_shared_only_once_your_email_is_confirmed","Enter_your_email","Send_confirmation_email","No_thanks","We_are_sorry","Video_tips_for_scanning","Please_make_sure_to","one_Complete_a_full_spin_Starting_and_finishing_with_your_feet_facing_your_phone","two_Rotate_slowly_throughout_your_spin","three_Make_sure_your_full_body_including_feet_and_hands_are_visible_in_frame","Scan_s","vision_model","is_at_capacity","We_are_sorry_about_this_We_are_working_hard_to_add_capacity_Please_try_again_soon","Oops","Looks_like_this_QR_code_is_not_valid","Reload_your_desktop_tab_to_generate_a_new_code","Magic_link","We_have_sent_you_a_magic_link_via_email","Please_confirm_your_email_load_your_measurements_on_any_partner_brand","Welcome_back","Load_my_account","Back_to_home","Enter_a_valid_email","No_measurement_found_for_this_email","Reset","Resume","Start_Scan","Scanning","Detecting_Body","Stop","Generating_Measurements","Help","Scan_tips","Watch_instructions_video","Wear_form_fitting_clothing_for_the_most_accurate_results","Position_yourself_in_a_brightly_lit_room","Tie_up_long_hair_and_slip_off_your_shoes","Back","Swan","Please_check_your_setting_for_camera_permission","Settings","Enable_the_camera_permissions","Go_Back","Measurements_have_been_shared","For_helping_in_getting","Thank_You","live","Your","Check_back_soon_to_use_Swan","custom_for_your_next_order","sevenTillEight","Rhodes_and_Beckett","Send_invite","Your_Nest","Share_your_measurements_to_shop_and_gift_for_those_close_to_you","Invite_to_Swan","Name","Enter_their_name","Enter_their_email","Message","Join_Swan","Email","Invite","Your_Login","Your_Scans","Talk_with_the_CEO","Send_me_an_email","At_Swan_we_are_here_to_make_shopping_about_you_I_would_love_to_hear_what_you_think_of_Swan_and_what_you_want_to_see_next_I_am_excited_to_hear_your_feedback","Eoin","You_can_close_this_tab_and_return_to_the_original_to_get_your_sizing_suggestion","Try_On","Invite_friends","Pending","Decline","gifting_simple","Invite_friends_and_make","Nest_will_be_able_to_see_and_size_clothes_on_you","By_sharing_your_Swan_profile_those_in_your","Enter_your_name","Failed_to_get_tryon","In_Progress","Go_back_to","VIDEO_POSTER_GENDER_BASED","male","female","directionMessages","URLType","swan","STAGING","speechService","playAudio","url","document","querySelector","src","onEnded","removeEventListener","addEventListener","play","console","error","stopAudio","async","currentTime","forward","left","right","smile","PRE_LINK","POST_LINK","title","subtitle","resolvedConfig","noTitle","translate","useContext","_jsxs","_Fragment","children","logo","_jsx","className","alt","style","logoHeight","width","logoWidth","fontFamily","headingFontFamily","fontSize","headingFontSize","color","headingColor","fontWeight","headingFontWeight","subheading","subheadingFontFamily","subheadingFontSize","subheadingColor","subheadingFontWeight","preferredLanguage","setPreferredLanguage","useState","text","log","useMemo","Provider","size","loaderType","buttonFunc","prefix","postfixIcon","buttonText","btnSecondary","disabled","id","props","onClick","button","buttonFontFamily","buttonFontSize","background","buttonDisabledBackground","base","brandColor","buttonBackground","buttonDisabledTextColor","buttonTextColor","pointerEvents","borderRadius","buttonBorderRadius","feet","inches","clothes_fit","focal_length","scan_type","customer_store_url","callback_url","objectMetadataArray","uuidv4","browserInfo","includes","round","Date","now","response","data","details","eventName","scanID","status","completionTime","faceScanId","startTime","uploadDuration","timestamp","toISOString","payload","fromEntries","entries","filter","posthog","capture","connection","faceScanID","prop","steps","missing","visible","isVisible","ordered","order","sort","config","defaultConfig","backgroundColor","primaryColor","secondaryColor","baseTextColor","baseFontSize","baseFontFamily","input","inputBackgroundColor","inputTextColor","inputPlaceholderColor","inputBorderColor","inputFontSize","inputFontWeight","inputBorderRadius","inputErrorColor","inputErrorFontSize","angleDetector","successAngleBackground","successAngleLowBackground","successAngleTextLightColor","successAngleTextDarkColor","language","loader","facingMode"],"mappings":"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","x_google_ignoreList":[0,1]}
|