datakeen-session-react 1.1.140-rc.47 → 1.1.140-rc.49

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.
Files changed (49) hide show
  1. package/dist/cjs/_virtual/_commonjsHelpers.js +8 -0
  2. package/dist/cjs/_virtual/_commonjsHelpers.js.map +1 -0
  3. package/dist/cjs/_virtual/heic2any.js +12 -0
  4. package/dist/cjs/_virtual/heic2any.js.map +1 -0
  5. package/dist/cjs/_virtual/heic2any2.js +6 -0
  6. package/dist/cjs/_virtual/heic2any2.js.map +1 -0
  7. package/dist/cjs/components/selfie/selfie-flow/SelfieRecorder.js +1 -1
  8. package/dist/cjs/components/selfie/selfie-flow/SelfieRecorder.js.map +1 -1
  9. package/dist/cjs/components/session/UserInputForm/AddressFields.js +2 -10
  10. package/dist/cjs/components/session/UserInputForm/AddressFields.js.map +1 -1
  11. package/dist/cjs/components/session/UserInputForm/NationalityField.js +2 -11
  12. package/dist/cjs/components/session/UserInputForm/NationalityField.js.map +1 -1
  13. package/dist/cjs/components/start-flow/CGU.js +1 -1
  14. package/dist/cjs/components/start-flow/Start.js +1 -1
  15. package/dist/cjs/constants/userInputForm.js +0 -25
  16. package/dist/cjs/constants/userInputForm.js.map +1 -1
  17. package/dist/cjs/hooks/useCountryOptions.js +20 -0
  18. package/dist/cjs/hooks/useCountryOptions.js.map +1 -0
  19. package/dist/cjs/i18n/country/country.iso2.fr.json.js +2 -2
  20. package/dist/cjs/node_modules/heic2any/dist/heic2any.js +291 -0
  21. package/dist/cjs/node_modules/heic2any/dist/heic2any.js.map +1 -0
  22. package/dist/cjs/utils/fileConverter.js +2 -2
  23. package/dist/cjs/utils/fileConverter.js.map +1 -1
  24. package/dist/esm/_virtual/_commonjsHelpers.js +6 -0
  25. package/dist/esm/_virtual/_commonjsHelpers.js.map +1 -0
  26. package/dist/esm/_virtual/heic2any.js +8 -0
  27. package/dist/esm/_virtual/heic2any.js.map +1 -0
  28. package/dist/esm/_virtual/heic2any2.js +4 -0
  29. package/dist/esm/_virtual/heic2any2.js.map +1 -0
  30. package/dist/esm/components/selfie/selfie-flow/SelfieRecorder.js +1 -1
  31. package/dist/esm/components/selfie/selfie-flow/SelfieRecorder.js.map +1 -1
  32. package/dist/esm/components/session/UserInputForm/AddressFields.js +2 -10
  33. package/dist/esm/components/session/UserInputForm/AddressFields.js.map +1 -1
  34. package/dist/esm/components/session/UserInputForm/NationalityField.js +3 -12
  35. package/dist/esm/components/session/UserInputForm/NationalityField.js.map +1 -1
  36. package/dist/esm/components/start-flow/CGU.js +1 -1
  37. package/dist/esm/components/start-flow/Start.js +1 -1
  38. package/dist/esm/constants/userInputForm.js +1 -25
  39. package/dist/esm/constants/userInputForm.js.map +1 -1
  40. package/dist/esm/hooks/useCountryOptions.js +18 -0
  41. package/dist/esm/hooks/useCountryOptions.js.map +1 -0
  42. package/dist/esm/i18n/country/country.iso2.fr.json.js +2 -2
  43. package/dist/esm/i18n/index.js +2 -2
  44. package/dist/esm/i18n/index.js.map +1 -1
  45. package/dist/esm/node_modules/heic2any/dist/heic2any.js +289 -0
  46. package/dist/esm/node_modules/heic2any/dist/heic2any.js.map +1 -0
  47. package/dist/esm/utils/fileConverter.js +1 -1
  48. package/jest.config.js +1 -0
  49. package/package.json +1 -1
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ function getDefaultExportFromCjs (x) {
4
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
5
+ }
6
+
7
+ exports.getDefaultExportFromCjs = getDefaultExportFromCjs;
8
+ //# sourceMappingURL=_commonjsHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_commonjsHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _commonjsHelpers = require('./_commonjsHelpers.js');
6
+ var heic2any$1 = require('../node_modules/heic2any/dist/heic2any.js');
7
+
8
+ var heic2anyExports = heic2any$1.__require();
9
+ var heic2any = /*@__PURE__*/_commonjsHelpers.getDefaultExportFromCjs(heic2anyExports);
10
+
11
+ exports.default = heic2any;
12
+ //# sourceMappingURL=heic2any.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heic2any.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var heic2any = {exports: {}};
4
+
5
+ exports.__module = heic2any;
6
+ //# sourceMappingURL=heic2any2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heic2any2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -171,7 +171,7 @@ var SelfieRecorder = function (_a) {
171
171
  _b.zIndex = isMobile ? 50 : "auto",
172
172
  _b.height = "100%",
173
173
  _b.width = "100%",
174
- _b), children: [jsxRuntime.jsxs("div", { className: "p-4 text-center bg-white shrink-0", children: [jsxRuntime.jsx(Title.default, { className: "text-lg md:text-xl mb-1", children: t("selfie.recorder.title") }), jsxRuntime.jsx(Subtitle.default, { className: "text-xs text-gray-600 md:text-sm", children: t("selfie.recorder.subtitle") })] }), jsxRuntime.jsx("div", { className: "video-container flex-1 relative overflow-hidden", children: jsxRuntime.jsx(sdkReact.VideoRecorder, tslib_es6.__assign({ ref: recorderRef, preset: sdkReact.AcquisitionPreset.SELFIE_OPTIMIZED, hideCaptureBtn: true, faceChecker: "enabled", disableDebugMode: true, onRecordCompleted: handleRecordCompleted, onRecord: recordStarting, style: { width: "100%", height: "100%" }, className: "video-recorder-no-radius w-full h-full" }, (selfieCaptureUtils.isIOS() && {
174
+ _b), children: [jsxRuntime.jsxs("div", { className: "p-4 text-center bg-white shrink-0", children: [jsxRuntime.jsx(Title.default, { className: "text-lg md:text-xl mb-1", children: t("selfie.recorder.title") }), jsxRuntime.jsx(Subtitle.default, { className: "text-xs text-gray-600 md:text-sm", children: t("selfie.recorder.subtitle") })] }), jsxRuntime.jsx("div", { className: "video-container flex-1 relative overflow-hidden", children: jsxRuntime.jsx(sdkReact.VideoRecorder, tslib_es6.__assign({ ref: recorderRef, preset: sdkReact.AcquisitionPreset.SELFIE_OPTIMIZED, hideCaptureBtn: true, faceChecker: (typeof window !== 'undefined' && window.__E2E_DISABLE_FACE_CHECKER__) ? 'disabled' : 'enabled', disableDebugMode: true, onRecordCompleted: handleRecordCompleted, onRecord: recordStarting, style: { width: "100%", height: "100%" }, className: "video-recorder-no-radius w-full h-full" }, (selfieCaptureUtils.isIOS() && {
175
175
  "data-playsinline": "true",
176
176
  "data-autoplay": "true",
177
177
  "data-muted": "true"
@@ -1 +1 @@
1
- {"version":3,"file":"SelfieRecorder.js","sources":["../../../../../../src/components/selfie/selfie-flow/SelfieRecorder.tsx"],"sourcesContent":["import { useRef, useState, useEffect } from \"react\";\nimport { AcquisitionPreset, VideoRecorder } from \"@unissey-web/sdk-react\";\nimport Button from \"../../ui/Button\";\nimport Title from \"../../ui/Title\";\nimport Subtitle from \"../../ui/Subtitle\";\nimport useVideoRecorderStyles from \"../hooks/useVideoRecorderStyles\";\nimport { setupVideoElementsObserver } from \"../utils/videoElementStyles\";\nimport { delay, isIOS, waitForVideoFrame, getRecorderVideoElement } from \"../utils/selfieCaptureUtils\";\nimport { useLiveFrameCapture } from \"../hooks/useLiveFrameCapture\";\nimport { useI18n } from \"../../../hooks/useI18n\";\nimport useIsMobile from \"../../../hooks/useIsMobile\";\nimport { getUnisseyStrings } from \"../utils/unisseyStrings\";\n\ninterface SelfieRecorderProps {\n handleSelfie: (e: Event) => void;\n onBeginCapture?: () => void;\n isCapturing?: boolean;\n btnBg?: string;\n btnText?: string;\n}\n\ninterface VideoRecorderRef extends HTMLElement {\n capture: () => void;\n}\n\nconst SelfieRecorder = ({\n handleSelfie,\n onBeginCapture = () => { },\n isCapturing = false,\n btnBg,\n btnText,\n}: SelfieRecorderProps) => {\n const { t } = useI18n();\n const isMobile = useIsMobile(768);\n const recorderRef = useRef<VideoRecorderRef | null>(null);\n const [disableButton, setDisableButton] = useState(false);\n const [recorderReady, setRecorderReady] = useState(false);\n const [recordingState, setRecordingState] = useState<\n \"idle\" | \"preparing\" | \"recording\" | \"processing\"\n >(\"idle\");\n const capturedThumbnailRef = useRef<string | null>(null);\n const { captureFrame, cleanup } = useLiveFrameCapture();\n\n useVideoRecorderStyles(btnBg, btnText);\n\n useEffect(() => {\n document.body.classList.add(\"recording-selfie\");\n const cleanupObserver = setupVideoElementsObserver();\n\n // iOS-specific fix: Add required attributes to video elements after mount\n if (isIOS()) {\n const addIOSVideoAttributes = () => {\n const videoRecorders = document.querySelectorAll(\"uni-video-recorder\");\n videoRecorders.forEach((recorder) => {\n // Try to access shadow DOM and video elements\n try {\n const shadowRoot = (recorder as any).shadowRoot;\n if (shadowRoot) {\n const videoElements = shadowRoot.querySelectorAll(\"video\");\n videoElements.forEach((video: HTMLVideoElement) => {\n video.setAttribute(\"playsinline\", \"true\");\n video.setAttribute(\"autoplay\", \"true\");\n video.setAttribute(\"muted\", \"true\");\n // Ensure video plays inline and autoplays\n video.playsInline = true;\n video.autoplay = true;\n video.muted = true;\n });\n }\n } catch (error) {\n console.log(\"Could not access shadow DOM:\", error);\n }\n\n // Also set attributes on the component itself\n recorder.setAttribute(\"playsinline\", \"true\");\n recorder.setAttribute(\"autoplay\", \"true\");\n recorder.setAttribute(\"muted\", \"true\");\n });\n };\n\n // Apply immediately and also after a delay to catch dynamically created elements\n addIOSVideoAttributes();\n const iosTimeout = setTimeout(addIOSVideoAttributes, 500);\n const iosInterval = setInterval(addIOSVideoAttributes, 1000);\n\n return () => {\n document.body.classList.remove(\"recording-selfie\");\n cleanupObserver();\n cleanup();\n clearTimeout(iosTimeout);\n clearInterval(iosInterval);\n };\n }\n\n return () => {\n document.body.classList.remove(\"recording-selfie\");\n cleanupObserver();\n cleanup();\n };\n }, [cleanup]);\n\n const recordStarting = () => {\n if (!recorderReady || recordingState !== \"idle\") return;\n onBeginCapture();\n setRecordingState(\"preparing\");\n setDisableButton(true);\n\n const triggerCapture = async () => {\n try {\n await waitForVideoFrame(recorderRef.current);\n await delay(200);\n setRecordingState(\"recording\");\n\n // Capture a frame from the live video during recording (after a short delay)\n setTimeout(() => {\n const videoElement = getRecorderVideoElement(recorderRef.current);\n if (videoElement) {\n const thumbnail = captureFrame(videoElement);\n capturedThumbnailRef.current = thumbnail;\n }\n }, 1000); // Capture frame 1 second into recording\n\n recorderRef.current?.capture();\n } catch (error) {\n console.error(\"SelfieRecorder: failed to capture frame\", error);\n setRecordingState(\"idle\");\n setDisableButton(false);\n }\n };\n\n void triggerCapture();\n };\n\n useEffect(() => {\n const interval = setInterval(() => {\n const status = (recorderRef.current as any)?.sdkJsStatus;\n const isReady = status === \"ready\" || status === \"running\";\n setRecorderReady((prev) => (prev !== isReady ? isReady : prev));\n }, 500);\n return () => clearInterval(interval);\n }, []);\n\n const handleRecordCompleted = (e: Event) => {\n const customEvent = e as CustomEvent<{ media?: Blob; metadata?: string }>;\n if (!customEvent.detail?.media || customEvent.detail.media.size === 0) {\n console.error(\"❌ No valid media captured\");\n\n // iOS-specific debugging\n if (isIOS()) {\n console.log(\"🍎 iOS detected - checking video elements for proper attributes\");\n const videoRecorders = document.querySelectorAll(\"uni-video-recorder\");\n videoRecorders.forEach((recorder, index) => {\n console.log(`VideoRecorder ${index}:`, {\n playsinline: recorder.getAttribute(\"playsinline\"),\n autoplay: recorder.getAttribute(\"autoplay\"),\n muted: recorder.getAttribute(\"muted\")\n });\n });\n }\n\n setRecordingState(\"idle\");\n setDisableButton(false);\n return;\n }\n\n // Attach the captured thumbnail to the event\n const enhancedEvent = new CustomEvent('record-completed', {\n detail: {\n media: customEvent.detail.media,\n metadata: customEvent.detail.metadata || '',\n thumbnail: capturedThumbnailRef.current || undefined,\n }\n });\n\n setRecordingState(\"processing\");\n handleSelfie(enhancedEvent);\n };\n\n return (\n <div\n className=\"selfie selfie-recorder-root flex flex-col\"\n style={{\n [\"--dk-btn-bg\" as string]: btnBg ?? \"#11E5C5\",\n [\"--dk-btn-text\" as string]: btnText ?? \"#3C3C40\",\n position: isMobile ? \"fixed\" : \"relative\",\n inset: isMobile ? 0 : \"auto\",\n zIndex: isMobile ? 50 : \"auto\",\n height: \"100%\",\n width: \"100%\",\n }}\n >\n <div className=\"p-4 text-center bg-white shrink-0\">\n <Title className=\"text-lg md:text-xl mb-1\">{t(\"selfie.recorder.title\")}</Title>\n <Subtitle className=\"text-xs text-gray-600 md:text-sm\">{t(\"selfie.recorder.subtitle\")}</Subtitle>\n </div>\n\n <div className=\"video-container flex-1 relative overflow-hidden\">\n <VideoRecorder\n ref={recorderRef as any}\n preset={AcquisitionPreset.SELFIE_OPTIMIZED}\n hideCaptureBtn\n faceChecker=\"enabled\"\n disableDebugMode\n onRecordCompleted={handleRecordCompleted}\n onRecord={recordStarting}\n style={{ width: \"100%\", height: \"100%\" }}\n className=\"video-recorder-no-radius w-full h-full\"\n {...(isIOS() && {\n \"data-playsinline\": \"true\",\n \"data-autoplay\": \"true\",\n \"data-muted\": \"true\"\n })}\n strings={getUnisseyStrings(t)}\n />\n </div>\n\n <div className=\"shrink-0 bg-white border-t border-gray-200 p-4 md:p-6 relative\" style={{ zIndex: 9999 }}>\n <div className=\"max-w-md mx-auto\">\n <div className=\"text-center text-xs text-gray-400 mt-3\">\n {t(\"selfie.recorder.note\")}\n </div>\n\n <Button\n onClick={recordStarting}\n className=\"w-full py-3 md:py-4 relative selfie-button\"\n disabled={disableButton || !recorderReady}\n style={{ backgroundColor: btnBg ?? \"#11E5C5\", color: btnText ?? \"#3C3C40\" }}\n >\n {recordingState === \"idle\" && t(\"selfie.recorder.start\")}\n {recordingState === \"preparing\" && t(\"selfie.recorder.preparing\")}\n {recordingState === \"recording\" && (\n <span className=\"flex items-center justify-center\">\n <span className=\"mr-2\">{t(\"selfie.recorder.recording_label\")}</span>\n <span className=\"flex space-x-1 loading-dots\">\n <span className=\"h-1 w-1 bg-white rounded-full\"></span>\n <span className=\"h-1 w-1 bg-white rounded-full\"></span>\n <span className=\"h-1 w-1 bg-white rounded-full\"></span>\n </span>\n </span>\n )}\n {recordingState === \"processing\" && t(\"selfie.recorder.processing\")}\n </Button>\n </div>\n </div>\n </div>\n );\n};\n\nexport default SelfieRecorder;\n"],"names":["useI18n","useIsMobile","useRef","useState","useLiveFrameCapture","useVideoRecorderStyles","useEffect","setupVideoElementsObserver","isIOS","__awaiter","waitForVideoFrame","delay","getRecorderVideoElement","_jsxs","_jsx","Title","Subtitle","VideoRecorder","__assign","AcquisitionPreset","getUnisseyStrings","Button"],"mappings":"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"}
1
+ {"version":3,"file":"SelfieRecorder.js","sources":["../../../../../../src/components/selfie/selfie-flow/SelfieRecorder.tsx"],"sourcesContent":["import { useRef, useState, useEffect } from \"react\";\nimport { AcquisitionPreset, VideoRecorder } from \"@unissey-web/sdk-react\";\nimport Button from \"../../ui/Button\";\nimport Title from \"../../ui/Title\";\nimport Subtitle from \"../../ui/Subtitle\";\nimport useVideoRecorderStyles from \"../hooks/useVideoRecorderStyles\";\nimport { setupVideoElementsObserver } from \"../utils/videoElementStyles\";\nimport { delay, isIOS, waitForVideoFrame, getRecorderVideoElement } from \"../utils/selfieCaptureUtils\";\nimport { useLiveFrameCapture } from \"../hooks/useLiveFrameCapture\";\nimport { useI18n } from \"../../../hooks/useI18n\";\nimport useIsMobile from \"../../../hooks/useIsMobile\";\nimport { getUnisseyStrings } from \"../utils/unisseyStrings\";\n\ninterface SelfieRecorderProps {\n handleSelfie: (e: Event) => void;\n onBeginCapture?: () => void;\n isCapturing?: boolean;\n btnBg?: string;\n btnText?: string;\n}\n\ninterface VideoRecorderRef extends HTMLElement {\n capture: () => void;\n}\n\nconst SelfieRecorder = ({\n handleSelfie,\n onBeginCapture = () => { },\n isCapturing = false,\n btnBg,\n btnText,\n}: SelfieRecorderProps) => {\n const { t } = useI18n();\n const isMobile = useIsMobile(768);\n const recorderRef = useRef<VideoRecorderRef | null>(null);\n const [disableButton, setDisableButton] = useState(false);\n const [recorderReady, setRecorderReady] = useState(false);\n const [recordingState, setRecordingState] = useState<\n \"idle\" | \"preparing\" | \"recording\" | \"processing\"\n >(\"idle\");\n const capturedThumbnailRef = useRef<string | null>(null);\n const { captureFrame, cleanup } = useLiveFrameCapture();\n\n useVideoRecorderStyles(btnBg, btnText);\n\n useEffect(() => {\n document.body.classList.add(\"recording-selfie\");\n const cleanupObserver = setupVideoElementsObserver();\n\n // iOS-specific fix: Add required attributes to video elements after mount\n if (isIOS()) {\n const addIOSVideoAttributes = () => {\n const videoRecorders = document.querySelectorAll(\"uni-video-recorder\");\n videoRecorders.forEach((recorder) => {\n // Try to access shadow DOM and video elements\n try {\n const shadowRoot = (recorder as any).shadowRoot;\n if (shadowRoot) {\n const videoElements = shadowRoot.querySelectorAll(\"video\");\n videoElements.forEach((video: HTMLVideoElement) => {\n video.setAttribute(\"playsinline\", \"true\");\n video.setAttribute(\"autoplay\", \"true\");\n video.setAttribute(\"muted\", \"true\");\n // Ensure video plays inline and autoplays\n video.playsInline = true;\n video.autoplay = true;\n video.muted = true;\n });\n }\n } catch (error) {\n console.log(\"Could not access shadow DOM:\", error);\n }\n\n // Also set attributes on the component itself\n recorder.setAttribute(\"playsinline\", \"true\");\n recorder.setAttribute(\"autoplay\", \"true\");\n recorder.setAttribute(\"muted\", \"true\");\n });\n };\n\n // Apply immediately and also after a delay to catch dynamically created elements\n addIOSVideoAttributes();\n const iosTimeout = setTimeout(addIOSVideoAttributes, 500);\n const iosInterval = setInterval(addIOSVideoAttributes, 1000);\n\n return () => {\n document.body.classList.remove(\"recording-selfie\");\n cleanupObserver();\n cleanup();\n clearTimeout(iosTimeout);\n clearInterval(iosInterval);\n };\n }\n\n return () => {\n document.body.classList.remove(\"recording-selfie\");\n cleanupObserver();\n cleanup();\n };\n }, [cleanup]);\n\n const recordStarting = () => {\n if (!recorderReady || recordingState !== \"idle\") return;\n onBeginCapture();\n setRecordingState(\"preparing\");\n setDisableButton(true);\n\n const triggerCapture = async () => {\n try {\n await waitForVideoFrame(recorderRef.current);\n await delay(200);\n setRecordingState(\"recording\");\n\n // Capture a frame from the live video during recording (after a short delay)\n setTimeout(() => {\n const videoElement = getRecorderVideoElement(recorderRef.current);\n if (videoElement) {\n const thumbnail = captureFrame(videoElement);\n capturedThumbnailRef.current = thumbnail;\n }\n }, 1000); // Capture frame 1 second into recording\n\n recorderRef.current?.capture();\n } catch (error) {\n console.error(\"SelfieRecorder: failed to capture frame\", error);\n setRecordingState(\"idle\");\n setDisableButton(false);\n }\n };\n\n void triggerCapture();\n };\n\n useEffect(() => {\n const interval = setInterval(() => {\n const status = (recorderRef.current as any)?.sdkJsStatus;\n const isReady = status === \"ready\" || status === \"running\";\n setRecorderReady((prev) => (prev !== isReady ? isReady : prev));\n }, 500);\n return () => clearInterval(interval);\n }, []);\n\n const handleRecordCompleted = (e: Event) => {\n const customEvent = e as CustomEvent<{ media?: Blob; metadata?: string }>;\n if (!customEvent.detail?.media || customEvent.detail.media.size === 0) {\n console.error(\"❌ No valid media captured\");\n\n // iOS-specific debugging\n if (isIOS()) {\n console.log(\"🍎 iOS detected - checking video elements for proper attributes\");\n const videoRecorders = document.querySelectorAll(\"uni-video-recorder\");\n videoRecorders.forEach((recorder, index) => {\n console.log(`VideoRecorder ${index}:`, {\n playsinline: recorder.getAttribute(\"playsinline\"),\n autoplay: recorder.getAttribute(\"autoplay\"),\n muted: recorder.getAttribute(\"muted\")\n });\n });\n }\n\n setRecordingState(\"idle\");\n setDisableButton(false);\n return;\n }\n\n // Attach the captured thumbnail to the event\n const enhancedEvent = new CustomEvent('record-completed', {\n detail: {\n media: customEvent.detail.media,\n metadata: customEvent.detail.metadata || '',\n thumbnail: capturedThumbnailRef.current || undefined,\n }\n });\n\n setRecordingState(\"processing\");\n handleSelfie(enhancedEvent);\n };\n\n return (\n <div\n className=\"selfie selfie-recorder-root flex flex-col\"\n style={{\n [\"--dk-btn-bg\" as string]: btnBg ?? \"#11E5C5\",\n [\"--dk-btn-text\" as string]: btnText ?? \"#3C3C40\",\n position: isMobile ? \"fixed\" : \"relative\",\n inset: isMobile ? 0 : \"auto\",\n zIndex: isMobile ? 50 : \"auto\",\n height: \"100%\",\n width: \"100%\",\n }}\n >\n <div className=\"p-4 text-center bg-white shrink-0\">\n <Title className=\"text-lg md:text-xl mb-1\">{t(\"selfie.recorder.title\")}</Title>\n <Subtitle className=\"text-xs text-gray-600 md:text-sm\">{t(\"selfie.recorder.subtitle\")}</Subtitle>\n </div>\n\n <div className=\"video-container flex-1 relative overflow-hidden\">\n <VideoRecorder\n ref={recorderRef as any}\n preset={AcquisitionPreset.SELFIE_OPTIMIZED}\n hideCaptureBtn\n faceChecker={(typeof window !== 'undefined' && (window as any).__E2E_DISABLE_FACE_CHECKER__) ? 'disabled' : 'enabled'}\n disableDebugMode\n onRecordCompleted={handleRecordCompleted}\n onRecord={recordStarting}\n style={{ width: \"100%\", height: \"100%\" }}\n className=\"video-recorder-no-radius w-full h-full\"\n {...(isIOS() && {\n \"data-playsinline\": \"true\",\n \"data-autoplay\": \"true\",\n \"data-muted\": \"true\"\n })}\n strings={getUnisseyStrings(t)}\n />\n </div>\n\n <div className=\"shrink-0 bg-white border-t border-gray-200 p-4 md:p-6 relative\" style={{ zIndex: 9999 }}>\n <div className=\"max-w-md mx-auto\">\n <div className=\"text-center text-xs text-gray-400 mt-3\">\n {t(\"selfie.recorder.note\")}\n </div>\n\n <Button\n onClick={recordStarting}\n className=\"w-full py-3 md:py-4 relative selfie-button\"\n disabled={disableButton || !recorderReady}\n style={{ backgroundColor: btnBg ?? \"#11E5C5\", color: btnText ?? \"#3C3C40\" }}\n >\n {recordingState === \"idle\" && t(\"selfie.recorder.start\")}\n {recordingState === \"preparing\" && t(\"selfie.recorder.preparing\")}\n {recordingState === \"recording\" && (\n <span className=\"flex items-center justify-center\">\n <span className=\"mr-2\">{t(\"selfie.recorder.recording_label\")}</span>\n <span className=\"flex space-x-1 loading-dots\">\n <span className=\"h-1 w-1 bg-white rounded-full\"></span>\n <span className=\"h-1 w-1 bg-white rounded-full\"></span>\n <span className=\"h-1 w-1 bg-white rounded-full\"></span>\n </span>\n </span>\n )}\n {recordingState === \"processing\" && t(\"selfie.recorder.processing\")}\n </Button>\n </div>\n </div>\n </div>\n );\n};\n\nexport default SelfieRecorder;\n"],"names":["useI18n","useIsMobile","useRef","useState","useLiveFrameCapture","useVideoRecorderStyles","useEffect","setupVideoElementsObserver","isIOS","__awaiter","waitForVideoFrame","delay","getRecorderVideoElement","_jsxs","_jsx","Title","Subtitle","VideoRecorder","__assign","AcquisitionPreset","getUnisseyStrings","Button"],"mappings":"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"}
@@ -2,14 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var tslib_es6 = require('../../../node_modules/tslib/tslib.es6.js');
6
5
  var jsxRuntime = require('react/jsx-runtime');
7
- var React = require('react');
8
6
  var Label = require('@radix-ui/react-label');
9
7
  var clsx = require('clsx');
10
8
  var SelectComponent = require('../../ui/SelectComponent.js');
11
- var userInputForm = require('../../../constants/userInputForm.js');
12
9
  var useI18n = require('../../../hooks/useI18n.js');
10
+ var useCountryOptions = require('../../../hooks/useCountryOptions.js');
13
11
 
14
12
  function _interopNamespaceDefault(e) {
15
13
  var n = Object.create(null);
@@ -33,13 +31,7 @@ var Label__namespace = /*#__PURE__*/_interopNamespaceDefault(Label);
33
31
  var AddressFields = function (_a) {
34
32
  var form = _a.form, errors = _a.errors, requestedFields = _a.requestedFields, addressSuggestions = _a.addressSuggestions, showSuggestions = _a.showSuggestions, onFieldChange = _a.onFieldChange, onAddressChange = _a.onAddressChange, onAddressFocus = _a.onAddressFocus, onAddressBlur = _a.onAddressBlur, onApplySuggestion = _a.onApplySuggestion;
35
33
  var t = useI18n.useI18n().t;
36
- var countryOptions = React.useMemo(function () {
37
- if (userInputForm.COUNTRY_OPTIONS.length === 0) {
38
- return userInputForm.COUNTRY_OPTIONS;
39
- }
40
- var first = userInputForm.COUNTRY_OPTIONS[0], rest = userInputForm.COUNTRY_OPTIONS.slice(1);
41
- return tslib_es6.__spreadArray([tslib_es6.__assign(tslib_es6.__assign({}, first), { label: t("user_input_form.select.country") })], rest, true);
42
- }, [t]);
34
+ var countryOptions = useCountryOptions.useCountryOptions("user_input_form.select.country");
43
35
  if (!requestedFields.has("adresse")) {
44
36
  return null;
45
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AddressFields.js","sources":["../../../../../../src/components/session/UserInputForm/AddressFields.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport { COUNTRY_OPTIONS } from \"../../../constants/userInputForm\";\nimport type {\n AddressSuggestion,\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\n\ninterface AddressFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n addressSuggestions: AddressSuggestion[];\n showSuggestions: boolean;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n onAddressChange: (value: string) => void;\n onAddressFocus: () => void;\n onAddressBlur: () => void;\n onApplySuggestion: (suggestion: AddressSuggestion) => void;\n}\n\nconst AddressFields = ({\n form,\n errors,\n requestedFields,\n addressSuggestions,\n showSuggestions,\n onFieldChange,\n onAddressChange,\n onAddressFocus,\n onAddressBlur,\n onApplySuggestion,\n}: AddressFieldsProps) => {\n const { t } = useI18n();\n\n const countryOptions = useMemo(() => {\n if (COUNTRY_OPTIONS.length === 0) {\n return COUNTRY_OPTIONS;\n }\n\n const [first, ...rest] = COUNTRY_OPTIONS;\n return [{ ...first, label: t(\"user_input_form.select.country\") }, ...rest];\n }, [t]);\n\n if (!requestedFields.has(\"adresse\")) {\n return null;\n }\n\n return (\n <>\n <div className=\"relative space-y-2\">\n <Label.Root\n htmlFor=\"addressLine1\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line1\")}\n </Label.Root>\n <input\n id=\"addressLine1\"\n type=\"text\"\n value={form.addressLine1 || \"\"}\n onChange={(event) => onAddressChange(event.target.value)}\n onFocus={onAddressFocus}\n onBlur={onAddressBlur}\n placeholder={t(\"user_input_form.placeholders.address_line1\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.addressLine1\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\"\n )}\n autoComplete=\"street-address\"\n />\n {showSuggestions && addressSuggestions.length > 0 && (\n <div className=\"absolute z-20 mt-1 max-h-48 w-full overflow-auto rounded-lg border border-gray-200 bg-white shadow-lg\">\n {addressSuggestions.map((suggestion) => (\n <button\n key={suggestion.id}\n type=\"button\"\n className=\"w-full px-3 py-2 text-left text-sm hover:bg-gray-100\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => onApplySuggestion(suggestion)}\n >\n <div className=\"flex flex-col\">\n <span className=\"text-sm text-gray-900\">\n {suggestion.label}\n </span>\n {(suggestion.city ||\n suggestion.postalCode ||\n suggestion.country ||\n suggestion.countryCode) && (\n <span className=\"text-xs text-gray-500\">\n {[\n [suggestion.postalCode, suggestion.city]\n .filter(Boolean)\n .join(\" \"),\n suggestion.country ||\n suggestion.countryCode?.toUpperCase(),\n ]\n .filter(Boolean)\n .join(\", \")}\n </span>\n )}\n </div>\n </button>\n ))}\n </div>\n )}\n {errors.addressLine1 && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.address_line1_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"addressLine2\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line2\")}\n </Label.Root>\n <input\n id=\"addressLine2\"\n type=\"text\"\n value={form.addressLine2 || \"\"}\n onChange={(event) =>\n onFieldChange(\"addressLine2\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.address_line2\")}\n className=\"w-full rounded-lg border border-gray-300 px-3 py-3 text-base transition-colors hover:border-gray-400 focus:border-transparent focus:outline-none focus:ring-2 focus:ring-[#11E5C5]\"\n autoComplete=\"address-line2\"\n />\n </div>\n\n <div className=\"grid grid-cols-[140px_minmax(0,1fr)] gap-3 md:grid-cols-[160px_minmax(0,1fr)]\">\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"postalCode\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.postal_code\")}\n </Label.Root>\n <input\n id=\"postalCode\"\n type=\"text\"\n value={form.postalCode || \"\"}\n onChange={(event) =>\n onFieldChange(\"postalCode\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.postal_code\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.postalCode\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"postal-code\"\n />\n {errors.postalCode && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.postal_code_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"city\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.city\")}\n </Label.Root>\n <input\n id=\"city\"\n type=\"text\"\n value={form.city || \"\"}\n onChange={(event) => onFieldChange(\"city\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.city\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.city\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"address-level2\"\n />\n {errors.city && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.city_required\")}\n </p>\n )}\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"country\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.country\")}\n </Label.Root>\n <Select\n options={countryOptions}\n value={form.countryCode || \"\"}\n onValueChange={(value) => onFieldChange(\"countryCode\", value)}\n placeholder={t(\"user_input_form.select.country\")}\n error={Boolean(errors.country)}\n />\n {errors.country && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.country_required\")}\n </p>\n )}\n </div>\n </>\n );\n};\n\nexport default AddressFields;\n"],"names":["useI18n","useMemo","COUNTRY_OPTIONS","__spreadArray","__assign","_jsxs","_Fragment","_jsx","Label","Select"],"mappings":"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"}
1
+ {"version":3,"file":"AddressFields.js","sources":["../../../../../../src/components/session/UserInputForm/AddressFields.tsx"],"sourcesContent":["import * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport type {\n AddressSuggestion,\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\nimport { useCountryOptions } from \"../../../hooks/useCountryOptions\";\n\ninterface AddressFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n addressSuggestions: AddressSuggestion[];\n showSuggestions: boolean;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n onAddressChange: (value: string) => void;\n onAddressFocus: () => void;\n onAddressBlur: () => void;\n onApplySuggestion: (suggestion: AddressSuggestion) => void;\n}\n\nconst AddressFields = ({\n form,\n errors,\n requestedFields,\n addressSuggestions,\n showSuggestions,\n onFieldChange,\n onAddressChange,\n onAddressFocus,\n onAddressBlur,\n onApplySuggestion,\n}: AddressFieldsProps) => {\n const { t } = useI18n();\n const countryOptions = useCountryOptions(\"user_input_form.select.country\");\n\n if (!requestedFields.has(\"adresse\")) {\n return null;\n }\n\n return (\n <>\n <div className=\"relative space-y-2\">\n <Label.Root\n htmlFor=\"addressLine1\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line1\")}\n </Label.Root>\n <input\n id=\"addressLine1\"\n type=\"text\"\n value={form.addressLine1 || \"\"}\n onChange={(event) => onAddressChange(event.target.value)}\n onFocus={onAddressFocus}\n onBlur={onAddressBlur}\n placeholder={t(\"user_input_form.placeholders.address_line1\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.addressLine1\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\"\n )}\n autoComplete=\"street-address\"\n />\n {showSuggestions && addressSuggestions.length > 0 && (\n <div className=\"absolute z-20 mt-1 max-h-48 w-full overflow-auto rounded-lg border border-gray-200 bg-white shadow-lg\">\n {addressSuggestions.map((suggestion) => (\n <button\n key={suggestion.id}\n type=\"button\"\n className=\"w-full px-3 py-2 text-left text-sm hover:bg-gray-100\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => onApplySuggestion(suggestion)}\n >\n <div className=\"flex flex-col\">\n <span className=\"text-sm text-gray-900\">\n {suggestion.label}\n </span>\n {(suggestion.city ||\n suggestion.postalCode ||\n suggestion.country ||\n suggestion.countryCode) && (\n <span className=\"text-xs text-gray-500\">\n {[\n [suggestion.postalCode, suggestion.city]\n .filter(Boolean)\n .join(\" \"),\n suggestion.country ||\n suggestion.countryCode?.toUpperCase(),\n ]\n .filter(Boolean)\n .join(\", \")}\n </span>\n )}\n </div>\n </button>\n ))}\n </div>\n )}\n {errors.addressLine1 && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.address_line1_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"addressLine2\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line2\")}\n </Label.Root>\n <input\n id=\"addressLine2\"\n type=\"text\"\n value={form.addressLine2 || \"\"}\n onChange={(event) =>\n onFieldChange(\"addressLine2\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.address_line2\")}\n className=\"w-full rounded-lg border border-gray-300 px-3 py-3 text-base transition-colors hover:border-gray-400 focus:border-transparent focus:outline-none focus:ring-2 focus:ring-[#11E5C5]\"\n autoComplete=\"address-line2\"\n />\n </div>\n\n <div className=\"grid grid-cols-[140px_minmax(0,1fr)] gap-3 md:grid-cols-[160px_minmax(0,1fr)]\">\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"postalCode\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.postal_code\")}\n </Label.Root>\n <input\n id=\"postalCode\"\n type=\"text\"\n value={form.postalCode || \"\"}\n onChange={(event) =>\n onFieldChange(\"postalCode\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.postal_code\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.postalCode\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"postal-code\"\n />\n {errors.postalCode && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.postal_code_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"city\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.city\")}\n </Label.Root>\n <input\n id=\"city\"\n type=\"text\"\n value={form.city || \"\"}\n onChange={(event) => onFieldChange(\"city\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.city\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.city\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"address-level2\"\n />\n {errors.city && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.city_required\")}\n </p>\n )}\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"country\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.country\")}\n </Label.Root>\n <Select\n options={countryOptions}\n value={form.countryCode || \"\"}\n onValueChange={(value) => onFieldChange(\"countryCode\", value)}\n placeholder={t(\"user_input_form.select.country\")}\n error={Boolean(errors.country)}\n />\n {errors.country && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.country_required\")}\n </p>\n )}\n </div>\n </>\n );\n};\n\nexport default AddressFields;\n"],"names":["useI18n","useCountryOptions","_jsxs","_Fragment","_jsx","Label","Select"],"mappings":"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"}
@@ -2,13 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var tslib_es6 = require('../../../node_modules/tslib/tslib.es6.js');
6
5
  var jsxRuntime = require('react/jsx-runtime');
7
- var React = require('react');
8
6
  var Label = require('@radix-ui/react-label');
9
7
  var SelectComponent = require('../../ui/SelectComponent.js');
10
8
  var userInputForm = require('../../../constants/userInputForm.js');
11
9
  var useI18n = require('../../../hooks/useI18n.js');
10
+ var useCountryOptions = require('../../../hooks/useCountryOptions.js');
12
11
 
13
12
  function _interopNamespaceDefault(e) {
14
13
  var n = Object.create(null);
@@ -32,15 +31,7 @@ var Label__namespace = /*#__PURE__*/_interopNamespaceDefault(Label);
32
31
  var NationalityField = function (_a) {
33
32
  var form = _a.form, errors = _a.errors, requestedFields = _a.requestedFields, onFieldChange = _a.onFieldChange;
34
33
  var t = useI18n.useI18n().t;
35
- var countryOptions = React.useMemo(function () {
36
- if (userInputForm.COUNTRY_OPTIONS.length === 0) {
37
- return userInputForm.COUNTRY_OPTIONS;
38
- }
39
- var first = userInputForm.COUNTRY_OPTIONS[0], rest = userInputForm.COUNTRY_OPTIONS.slice(1);
40
- return tslib_es6.__spreadArray([
41
- tslib_es6.__assign(tslib_es6.__assign({}, first), { label: t("user_input_form.select.nationality") })
42
- ], rest, true);
43
- }, [t]);
34
+ var countryOptions = useCountryOptions.useCountryOptions("user_input_form.select.nationality");
44
35
  if (!requestedFields.has("nationalite")) {
45
36
  return null;
46
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NationalityField.js","sources":["../../../../../../src/components/session/UserInputForm/NationalityField.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport * as Label from \"@radix-ui/react-label\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport { COUNTRY_OPTIONS, FIELD_LABELS } from \"../../../constants/userInputForm\";\nimport type {\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\n\ninterface NationalityFieldProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n}\n\nconst NationalityField = ({\n form,\n errors,\n requestedFields,\n onFieldChange,\n}: NationalityFieldProps) => {\n const { t } = useI18n();\n\n const countryOptions = useMemo(() => {\n if (COUNTRY_OPTIONS.length === 0) {\n return COUNTRY_OPTIONS;\n }\n\n const [first, ...rest] = COUNTRY_OPTIONS;\n return [\n { ...first, label: t(\"user_input_form.select.nationality\") },\n ...rest,\n ];\n }, [t]);\n\n if (!requestedFields.has(\"nationalite\")) {\n return null;\n }\n\n return (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"nationality\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.nationalite)}\n </Label.Root>\n <Select\n options={countryOptions}\n value={form.nationality || \"\"}\n onValueChange={(value) => onFieldChange(\"nationality\", value)}\n placeholder={t(\"user_input_form.select.nationality\")}\n error={Boolean(errors.nationality)}\n />\n {errors.nationality && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.nationality_required\")}\n </p>\n )}\n </div>\n );\n};\n\nexport default NationalityField;\n"],"names":["useI18n","useMemo","COUNTRY_OPTIONS","__spreadArray","__assign","_jsxs","_jsx","Label","FIELD_LABELS","Select"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAM,gBAAgB,GAAG,UAAC,EAKF,EAAA;QAJtB,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,aAAa,GAAA,EAAA,CAAA,aAAA;AAEL,IAAA,IAAA,CAAC,GAAKA,eAAO,EAAE,EAAd;IAET,IAAM,cAAc,GAAGC,aAAO,CAAC,YAAA;AAC7B,QAAA,IAAIC,6BAAe,CAAC,MAAM,KAAK,CAAC,EAAE;AAChC,YAAA,OAAOA,6BAAe;QACxB;QAEO,IAAA,KAAK,GAAaA,6BAAe,CAAA,CAAA,CAA5B,EAAK,IAAI,GAAIA,6BAAe,CAAA,KAAA,CAAA,CAAA,CAAnB;AACrB,QAAA,OAAAC,uBAAA,CAAA;AACO,YAAAC,kBAAA,CAAAA,kBAAA,CAAA,EAAA,EAAA,KAAK,KAAE,KAAK,EAAE,CAAC,CAAC,oCAAoC,CAAC,EAAA;AACvD,SAAA,EAAA,IAAI,EAAA,IAAA,CAAA;AAEX,IAAA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEP,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;AACvC,QAAA,OAAO,IAAI;IACb;IAEA,QACEC,yBAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,cAAA,CAACC,gBAAK,CAAC,IAAI,IACT,OAAO,EAAC,aAAa,EACrB,SAAS,EAAC,wDAAwD,EAAA,QAAA,EAEjE,CAAC,CAACC,0BAAY,CAAC,WAAW,CAAC,EAAA,CACjB,EACbF,cAAA,CAACG,sBAAM,IACL,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAC7B,aAAa,EAAE,UAAC,KAAK,EAAA,EAAK,OAAA,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA,CAAnC,CAAmC,EAC7D,WAAW,EAAE,CAAC,CAAC,oCAAoC,CAAC,EACpD,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAA,CAClC,EACD,MAAM,CAAC,WAAW,KACjBJ,eAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CACzDC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAS,EACtC,CAAC,CAAC,6CAA6C,CAAC,CAAA,EAAA,CAC/C,CACL,CAAA,EAAA,CACG;AAEV;;;;"}
1
+ {"version":3,"file":"NationalityField.js","sources":["../../../../../../src/components/session/UserInputForm/NationalityField.tsx"],"sourcesContent":["import * as Label from \"@radix-ui/react-label\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport { FIELD_LABELS } from \"../../../constants/userInputForm\";\nimport type {\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\nimport { useCountryOptions } from \"../../../hooks/useCountryOptions\";\n\ninterface NationalityFieldProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n}\n\nconst NationalityField = ({\n form,\n errors,\n requestedFields,\n onFieldChange,\n}: NationalityFieldProps) => {\n const { t } = useI18n();\n const countryOptions = useCountryOptions(\"user_input_form.select.nationality\");\n\n if (!requestedFields.has(\"nationalite\")) {\n return null;\n }\n\n return (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"nationality\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.nationalite)}\n </Label.Root>\n <Select\n options={countryOptions}\n value={form.nationality || \"\"}\n onValueChange={(value) => onFieldChange(\"nationality\", value)}\n placeholder={t(\"user_input_form.select.nationality\")}\n error={Boolean(errors.nationality)}\n />\n {errors.nationality && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.nationality_required\")}\n </p>\n )}\n </div>\n );\n};\n\nexport default NationalityField;\n"],"names":["useI18n","useCountryOptions","_jsxs","_jsx","Label","FIELD_LABELS","Select"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAM,gBAAgB,GAAG,UAAC,EAKF,EAAA;QAJtB,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,aAAa,GAAA,EAAA,CAAA,aAAA;AAEL,IAAA,IAAA,CAAC,GAAKA,eAAO,EAAE,EAAd;AACT,IAAA,IAAM,cAAc,GAAGC,mCAAiB,CAAC,oCAAoC,CAAC;IAE9E,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;AACvC,QAAA,OAAO,IAAI;IACb;IAEA,QACEC,yBAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,cAAA,CAACC,gBAAK,CAAC,IAAI,IACT,OAAO,EAAC,aAAa,EACrB,SAAS,EAAC,wDAAwD,EAAA,QAAA,EAEjE,CAAC,CAACC,0BAAY,CAAC,WAAW,CAAC,EAAA,CACjB,EACbF,cAAA,CAACG,sBAAM,IACL,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAC7B,aAAa,EAAE,UAAC,KAAK,EAAA,EAAK,OAAA,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA,CAAnC,CAAmC,EAC7D,WAAW,EAAE,CAAC,CAAC,oCAAoC,CAAC,EACpD,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAA,CAClC,EACD,MAAM,CAAC,WAAW,KACjBJ,eAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CACzDC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAS,EACtC,CAAC,CAAC,6CAA6C,CAAC,CAAA,EAAA,CAC/C,CACL,CAAA,EAAA,CACG;AAEV;;;;"}
@@ -30,7 +30,7 @@ require('@unissey-web/sdk-react');
30
30
  require('../ui/SelectComponent.js');
31
31
  require('clsx');
32
32
  require('tailwind-merge');
33
- require('heic2any');
33
+ require('../../_virtual/heic2any.js');
34
34
  require('../jdi/JDIProcessing.js');
35
35
  require('../../services/cameraService.js');
36
36
  require('../../services/documentDetectionService.js');
@@ -30,7 +30,7 @@ require('@unissey-web/sdk-react');
30
30
  require('../ui/SelectComponent.js');
31
31
  require('clsx');
32
32
  require('tailwind-merge');
33
- require('heic2any');
33
+ require('../../_virtual/heic2any.js');
34
34
  require('../jdi/JDIProcessing.js');
35
35
  require('../../services/cameraService.js');
36
36
  require('../../services/documentDetectionService.js');
@@ -29,30 +29,6 @@ var YEAR_OPTIONS = years.map(function (value) { return ({
29
29
  value: String(value),
30
30
  label: String(value),
31
31
  }); });
32
- var COUNTRY_OPTIONS = [
33
- { value: "", label: "Sélectionnez un pays" },
34
- { value: "FR", label: "France" },
35
- { value: "BE", label: "Belgique" },
36
- { value: "CH", label: "Suisse" },
37
- { value: "DE", label: "Allemagne" },
38
- { value: "ES", label: "Espagne" },
39
- { value: "IT", label: "Italie" },
40
- { value: "PT", label: "Portugal" },
41
- { value: "GB", label: "Royaume-Uni" },
42
- { value: "IE", label: "Irlande" },
43
- { value: "NL", label: "Pays-Bas" },
44
- { value: "US", label: "États-Unis" },
45
- { value: "CA", label: "Canada" },
46
- { value: "MX", label: "Mexique" },
47
- { value: "AU", label: "Australie" },
48
- { value: "BR", label: "Brésil" },
49
- { value: "MA", label: "Maroc" },
50
- { value: "DZ", label: "Algérie" },
51
- { value: "TN", label: "Tunisie" },
52
- { value: "JP", label: "Japon" },
53
- { value: "CN", label: "Chine" },
54
- { value: "IN", label: "Inde" },
55
- ];
56
32
  var ADDRESS_SUGGESTIONS = [
57
33
  "10 Rue de Rivoli, 75001 Paris, France",
58
34
  "221B Baker Street, NW1 6XE Londres, Royaume-Uni",
@@ -93,7 +69,6 @@ var FALLBACK_ADDRESS_SUGGESTIONS = ADDRESS_SUGGESTIONS.map(function (label, inde
93
69
  }); });
94
70
 
95
71
  exports.ADDRESS_SUGGESTIONS = ADDRESS_SUGGESTIONS;
96
- exports.COUNTRY_OPTIONS = COUNTRY_OPTIONS;
97
72
  exports.DAY_OPTIONS = DAY_OPTIONS;
98
73
  exports.DEFAULT_FIELDS = DEFAULT_FIELDS;
99
74
  exports.FALLBACK_ADDRESS_SUGGESTIONS = FALLBACK_ADDRESS_SUGGESTIONS;
@@ -1 +1 @@
1
- {"version":3,"file":"userInputForm.js","sources":["../../../../src/constants/userInputForm.ts"],"sourcesContent":["import type {\n AddressSuggestion,\n InformationType,\n RequestedFieldKey,\n SelectOption,\n} from \"../types/userInputForm\";\n\nconst days = Array.from({ length: 31 }, (_, index) => index + 1);\nconst currentYear = new Date().getFullYear();\nconst years = Array.from({ length: 120 }, (_, index) => currentYear - index);\n\nconst monthLabels = [\n \"Janvier\",\n \"Février\",\n \"Mars\",\n \"Avril\",\n \"Mai\",\n \"Juin\",\n \"Juillet\",\n \"Août\",\n \"Septembre\",\n \"Octobre\",\n \"Novembre\",\n \"Décembre\",\n];\n\nexport const DAY_OPTIONS: SelectOption[] = days.map((value) => ({\n value: String(value).padStart(2, \"0\"),\n label: String(value).padStart(2, \"0\"),\n}));\n\nexport const MONTH_OPTIONS: SelectOption[] = monthLabels.map(\n (label, index) => ({\n value: String(index + 1).padStart(2, \"0\"),\n label,\n })\n);\n\nexport const YEAR_OPTIONS: SelectOption[] = years.map((value) => ({\n value: String(value),\n label: String(value),\n}));\n\nexport const COUNTRY_OPTIONS: SelectOption[] = [\n { value: \"\", label: \"Sélectionnez un pays\" },\n { value: \"FR\", label: \"France\" },\n { value: \"BE\", label: \"Belgique\" },\n { value: \"CH\", label: \"Suisse\" },\n { value: \"DE\", label: \"Allemagne\" },\n { value: \"ES\", label: \"Espagne\" },\n { value: \"IT\", label: \"Italie\" },\n { value: \"PT\", label: \"Portugal\" },\n { value: \"GB\", label: \"Royaume-Uni\" },\n { value: \"IE\", label: \"Irlande\" },\n { value: \"NL\", label: \"Pays-Bas\" },\n { value: \"US\", label: \"États-Unis\" },\n { value: \"CA\", label: \"Canada\" },\n { value: \"MX\", label: \"Mexique\" },\n { value: \"AU\", label: \"Australie\" },\n { value: \"BR\", label: \"Brésil\" },\n { value: \"MA\", label: \"Maroc\" },\n { value: \"DZ\", label: \"Algérie\" },\n { value: \"TN\", label: \"Tunisie\" },\n { value: \"JP\", label: \"Japon\" },\n { value: \"CN\", label: \"Chine\" },\n { value: \"IN\", label: \"Inde\" },\n];\n\nexport const ADDRESS_SUGGESTIONS: string[] = [\n \"10 Rue de Rivoli, 75001 Paris, France\",\n \"221B Baker Street, NW1 6XE Londres, Royaume-Uni\",\n \"1600 Amphitheatre Parkway, 94043 Mountain View, États-Unis\",\n \"55 Rue du Faubourg Saint-Honoré, 75008 Paris, France\",\n \"1 Place du Commerce, 44000 Nantes, France\",\n \"Piazza del Colosseo 1, 00184 Rome, Italie\",\n \"Av. Paulista 1578, 01310-200 São Paulo, Brésil\",\n];\n\nexport const DEFAULT_FIELDS: Record<InformationType, RequestedFieldKey[]> = {\n identity: [\"nom\", \"prenom\", \"date_naissance\"],\n \"identity-legal\": [\"nom\", \"siret\", \"tva\", \"adresse\"],\n contact: [\"email\", \"sms\"],\n address: [\"adresse\"],\n nationality: [\"nationalite\"],\n custom: [], // Custom forms use customFields instead\n};\n\nexport const FIELD_LABELS: Record<RequestedFieldKey, string> = {\n nom: \"user_input_form.fields.last_name\",\n prenom: \"user_input_form.fields.first_name\",\n date_naissance: \"user_input_form.fields.birth_date\",\n email: \"user_input_form.fields.email\",\n sms: \"user_input_form.fields.phone\",\n adresse: \"user_input_form.fields.address_line1\",\n nationalite: \"user_input_form.fields.nationality\",\n company: \"user_input_form.fields.company_name\",\n siret: \"user_input_form.fields.siret\",\n tva: \"user_input_form.fields.vat_number\",\n};\n\n// Backend endpoint pour l'autocomplétion d'adresses (sécurisé)\nexport const GEOCODING_AUTOCOMPLETE_ENDPOINT = \"/geocoding/autocomplete\";\n\nexport const FALLBACK_ADDRESS_SUGGESTIONS: AddressSuggestion[] =\n ADDRESS_SUGGESTIONS.map((label, index) => ({\n id: `fallback-${index}`,\n label,\n addressLine1: label,\n postalCode: \"\",\n city: \"\",\n country: \"\",\n }));\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"userInputForm.js","sources":["../../../../src/constants/userInputForm.ts"],"sourcesContent":["import type {\n AddressSuggestion,\n InformationType,\n RequestedFieldKey,\n SelectOption,\n} from \"../types/userInputForm\";\n\nconst days = Array.from({ length: 31 }, (_, index) => index + 1);\nconst currentYear = new Date().getFullYear();\nconst years = Array.from({ length: 120 }, (_, index) => currentYear - index);\n\nconst monthLabels = [\n \"Janvier\",\n \"Février\",\n \"Mars\",\n \"Avril\",\n \"Mai\",\n \"Juin\",\n \"Juillet\",\n \"Août\",\n \"Septembre\",\n \"Octobre\",\n \"Novembre\",\n \"Décembre\",\n];\n\nexport const DAY_OPTIONS: SelectOption[] = days.map((value) => ({\n value: String(value).padStart(2, \"0\"),\n label: String(value).padStart(2, \"0\"),\n}));\n\nexport const MONTH_OPTIONS: SelectOption[] = monthLabels.map(\n (label, index) => ({\n value: String(index + 1).padStart(2, \"0\"),\n label,\n })\n);\n\nexport const YEAR_OPTIONS: SelectOption[] = years.map((value) => ({\n value: String(value),\n label: String(value),\n}));\n\n\nexport const ADDRESS_SUGGESTIONS: string[] = [\n \"10 Rue de Rivoli, 75001 Paris, France\",\n \"221B Baker Street, NW1 6XE Londres, Royaume-Uni\",\n \"1600 Amphitheatre Parkway, 94043 Mountain View, États-Unis\",\n \"55 Rue du Faubourg Saint-Honoré, 75008 Paris, France\",\n \"1 Place du Commerce, 44000 Nantes, France\",\n \"Piazza del Colosseo 1, 00184 Rome, Italie\",\n \"Av. Paulista 1578, 01310-200 São Paulo, Brésil\",\n];\n\nexport const DEFAULT_FIELDS: Record<InformationType, RequestedFieldKey[]> = {\n identity: [\"nom\", \"prenom\", \"date_naissance\"],\n \"identity-legal\": [\"nom\", \"siret\", \"tva\", \"adresse\"],\n contact: [\"email\", \"sms\"],\n address: [\"adresse\"],\n nationality: [\"nationalite\"],\n custom: [], // Custom forms use customFields instead\n};\n\nexport const FIELD_LABELS: Record<RequestedFieldKey, string> = {\n nom: \"user_input_form.fields.last_name\",\n prenom: \"user_input_form.fields.first_name\",\n date_naissance: \"user_input_form.fields.birth_date\",\n email: \"user_input_form.fields.email\",\n sms: \"user_input_form.fields.phone\",\n adresse: \"user_input_form.fields.address_line1\",\n nationalite: \"user_input_form.fields.nationality\",\n company: \"user_input_form.fields.company_name\",\n siret: \"user_input_form.fields.siret\",\n tva: \"user_input_form.fields.vat_number\",\n};\n\n// Backend endpoint pour l'autocomplétion d'adresses (sécurisé)\nexport const GEOCODING_AUTOCOMPLETE_ENDPOINT = \"/geocoding/autocomplete\";\n\nexport const FALLBACK_ADDRESS_SUGGESTIONS: AddressSuggestion[] =\n ADDRESS_SUGGESTIONS.map((label, index) => ({\n id: `fallback-${index}`,\n label,\n addressLine1: label,\n postalCode: \"\",\n city: \"\",\n country: \"\",\n }));\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var tslib_es6 = require('../node_modules/tslib/tslib.es6.js');
4
+ var React = require('react');
5
+ var country_iso2_fr = require('../i18n/country/country.iso2.fr.json.js');
6
+ var useI18n = require('./useI18n.js');
7
+
8
+ var ISO_CODES = Object.keys(country_iso2_fr.default);
9
+ var useCountryOptions = function (placeholderKey) {
10
+ var _a = useI18n.useI18n(), t = _a.t, currentLanguage = _a.currentLanguage;
11
+ return React.useMemo(function () {
12
+ var countries = ISO_CODES.filter(function (code) { return code !== "EU"; })
13
+ .map(function (code) { return ({ value: code, label: t(code) }); })
14
+ .sort(function (a, b) { return a.label.localeCompare(b.label, currentLanguage); });
15
+ return tslib_es6.__spreadArray([{ value: "", label: t(placeholderKey) }], countries, true);
16
+ }, [t, currentLanguage, placeholderKey]);
17
+ };
18
+
19
+ exports.useCountryOptions = useCountryOptions;
20
+ //# sourceMappingURL=useCountryOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCountryOptions.js","sources":["../../../../src/hooks/useCountryOptions.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport countryISO from \"../i18n/country/country.iso2.fr.json\";\nimport { useI18n } from \"./useI18n\";\nimport type { SelectOption } from \"../types/userInputForm\";\n\nconst ISO_CODES = Object.keys(countryISO);\n\nexport const useCountryOptions = (placeholderKey: string): SelectOption[] => {\n const { t, currentLanguage } = useI18n();\n\n return useMemo(() => {\n const countries = ISO_CODES.filter((code) => code !== \"EU\")\n .map((code) => ({ value: code, label: t(code) }))\n .sort((a, b) => a.label.localeCompare(b.label, currentLanguage));\n\n return [{ value: \"\", label: t(placeholderKey) }, ...countries];\n }, [t, currentLanguage, placeholderKey]);\n};\n"],"names":["countryISO","useI18n","useMemo","__spreadArray"],"mappings":";;;;;;;AAKA,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAACA,uBAAU,CAAC;AAElC,IAAM,iBAAiB,GAAG,UAAC,cAAsB,EAAA;IAChD,IAAA,EAAA,GAAyBC,eAAO,EAAE,EAAhC,CAAC,GAAA,EAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,eAAc;AAExC,IAAA,OAAOC,aAAO,CAAC,YAAA;AACb,QAAA,IAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAC,IAAI,EAAA,EAAK,OAAA,IAAI,KAAK,IAAI,CAAA,CAAb,CAAa;aACvD,GAAG,CAAC,UAAC,IAAI,EAAA,EAAK,QAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAC,CAAjC,CAAiC;aAC/C,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA,CAA/C,CAA+C,CAAC;AAElE,QAAA,OAAAC,uBAAA,CAAA,CAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,CAAA,EAAK,SAAS,EAAA,IAAA,CAAA;IAC/D,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;AAC1C;;;;"}
@@ -178,7 +178,7 @@ var YE = "Yémen";
178
178
  var ZM = "Zambie";
179
179
  var ZW = "Zimbabwe";
180
180
  var EU = "Europe (UE)";
181
- var countryISOFr = {
181
+ var countryISO = {
182
182
  AF: AF,
183
183
  ZA: ZA,
184
184
  AL: AL,
@@ -533,5 +533,5 @@ exports.YE = YE;
533
533
  exports.ZA = ZA;
534
534
  exports.ZM = ZM;
535
535
  exports.ZW = ZW;
536
- exports.default = countryISOFr;
536
+ exports.default = countryISO;
537
537
  //# sourceMappingURL=country.iso2.fr.json.js.map