@smileid/web-components 11.4.0 → 11.4.2
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/esm/DocumentCaptureScreens-zEVFc_Kr.js +4147 -0
- package/dist/esm/DocumentCaptureScreens-zEVFc_Kr.js.map +1 -0
- package/dist/esm/{EndUserConsent-BGO3oZ-m.js → EndUserConsent-BXvS7t8z.js} +4 -4
- package/dist/esm/{EndUserConsent-BGO3oZ-m.js.map → EndUserConsent-BXvS7t8z.js.map} +1 -1
- package/dist/esm/Navigation-BRFmg7s1.js +138 -0
- package/dist/esm/Navigation-BRFmg7s1.js.map +1 -0
- package/dist/esm/{SelfieCaptureScreens-bmwnmeS9.js → SelfieCaptureScreens-DsFp21uW.js} +2520 -2906
- package/dist/esm/SelfieCaptureScreens-DsFp21uW.js.map +1 -0
- package/dist/esm/{TotpConsent-V3_Ip2Kw.js → TotpConsent-Cn2DkVza.js} +2 -2
- package/dist/esm/{TotpConsent-V3_Ip2Kw.js.map → TotpConsent-Cn2DkVza.js.map} +1 -1
- package/dist/esm/combobox.js +14 -16
- package/dist/esm/combobox.js.map +1 -1
- package/dist/esm/document.js +1 -1
- package/dist/esm/end-user-consent.js +1 -1
- package/dist/esm/{index-Dnpp-kwk.js → index-DBUdxnp9.js} +57 -57
- package/dist/esm/{index-Dnpp-kwk.js.map → index-DBUdxnp9.js.map} +1 -1
- package/dist/esm/localisation.js +1 -1
- package/dist/esm/main.js +6 -6
- package/dist/esm/navigation.js +1 -1
- package/dist/esm/package-Do9oHVnx.js +565 -0
- package/dist/esm/package-Do9oHVnx.js.map +1 -0
- package/dist/esm/selfie.js +1 -1
- package/dist/esm/smart-camera-web.js +16 -11
- package/dist/esm/smart-camera-web.js.map +1 -1
- package/dist/esm/{styles-BOEZtbuc.js → styles-BTEClL7R.js} +2 -2
- package/dist/esm/{styles-BOEZtbuc.js.map → styles-BTEClL7R.js.map} +1 -1
- package/dist/esm/totp-consent.js +1 -1
- package/dist/smart-camera-web.js +445 -178
- package/dist/smart-camera-web.js.map +1 -1
- package/dist/types/main.d.ts +186 -33
- package/lib/components/combobox/src/Combobox.js +14 -12
- package/lib/components/document/src/DocumentCaptureScreens.js +15 -5
- package/lib/components/document/src/assets/icons/guidelines/greenbook/good.svg +77 -0
- package/lib/components/document/src/assets/icons/guidelines/greenbook/not-blurry.svg +84 -0
- package/lib/components/document/src/assets/icons/guidelines/greenbook/not-cropped.svg +83 -0
- package/lib/components/document/src/assets/icons/guidelines/greenbook/not-reflective.svg +89 -0
- package/lib/components/document/src/assets/icons/guidelines/id-card/good.svg +87 -0
- package/lib/components/document/src/assets/icons/guidelines/id-card/not-blurry.svg +100 -0
- package/lib/components/document/src/assets/icons/guidelines/id-card/not-cropped.svg +93 -0
- package/lib/components/document/src/assets/icons/guidelines/id-card/not-reflective.svg +98 -0
- package/lib/components/document/src/assets/icons/guidelines/passport/good.svg +91 -0
- package/lib/components/document/src/assets/icons/guidelines/passport/not-blurry.svg +109 -0
- package/lib/components/document/src/assets/icons/guidelines/passport/not-cropped.svg +102 -0
- package/lib/components/document/src/assets/icons/guidelines/passport/not-reflective.svg +207 -0
- package/lib/components/document/src/assets/lottie/taking photo of ID FLIP 2D.lottie +0 -0
- package/lib/components/document/src/assets/lottie/taking photo of ID.lottie +0 -0
- package/lib/components/document/src/assets/lottie/taking photo of green book passport.lottie +0 -0
- package/lib/components/document/src/assets/lottie/taking photo of passport 2.lottie +0 -0
- package/lib/components/document/src/document-capture-instructions/DocumentCaptureInstructions.stories.js +123 -12
- package/lib/components/document/src/document-capture-instructions/DocumentCaptureInstructions.tsx +808 -0
- package/lib/components/document/src/document-capture-instructions/index.js +1 -0
- package/lib/components/navigation/src/Navigation.js +57 -56
- package/lib/components/navigation/src/Navigation.stories.js +7 -0
- package/lib/components/selfie/src/selfie-capture-wrapper/SelfieCaptureWrapper.tsx +113 -8
- package/lib/components/selfie/src/smartselfie-capture/utils/mediapipeManager.ts +65 -0
- package/lib/components/signature-pad/package-lock.json +11 -9
- package/lib/components/signature-pad/package.json +2 -2
- package/lib/components/smart-camera-web/src/SmartCameraWeb.js +7 -1
- package/lib/styles/src/styles.js +1 -1
- package/package.json +4 -3
- package/dist/README.md +0 -15
- package/dist/components/README.md +0 -14
- package/dist/components/document/src/README.md +0 -111
- package/dist/components/document/src/document-capture/README.md +0 -90
- package/dist/components/document/src/document-capture-instructions/README.md +0 -56
- package/dist/components/document/src/document-capture-review/README.md +0 -79
- package/dist/components/selfie/README.md +0 -225
- package/dist/components/smart-camera-web/src/README.md +0 -206
- package/dist/domain/camera/src/README.md +0 -38
- package/dist/domain/file-upload/README.md +0 -35
- package/dist/esm/DocumentCaptureScreens-DbU8ZxMx.js +0 -1580
- package/dist/esm/DocumentCaptureScreens-DbU8ZxMx.js.map +0 -1
- package/dist/esm/Navigation-DH44dkMT.js +0 -144
- package/dist/esm/Navigation-DH44dkMT.js.map +0 -1
- package/dist/esm/SelfieCaptureScreens-bmwnmeS9.js.map +0 -1
- package/dist/esm/package-7J5h4EOW.js +0 -90
- package/dist/esm/package-7J5h4EOW.js.map +0 -1
- package/dist/package-lock.json +0 -4948
- package/dist/package.json +0 -59
- package/dist/smart-camera-web.js.gz +0 -0
- package/dist/src/components/combobox/src/index.js +0 -425
- package/dist/src/components/combobox/src/index.js.map +0 -7
- package/dist/src/components/document/src/index.js +0 -1423
- package/dist/src/components/document/src/index.js.map +0 -7
- package/dist/src/components/end-user-consent/src/index.js +0 -1586
- package/dist/src/components/end-user-consent/src/index.js.map +0 -7
- package/dist/src/components/selfie/src/index.js +0 -1221
- package/dist/src/components/selfie/src/index.js.map +0 -7
- package/dist/src/components/signature-pad/src/index.js +0 -796
- package/dist/src/components/signature-pad/src/index.js.map +0 -7
- package/dist/src/components/smart-camera-web/src/SmartCameraWeb.js +0 -2754
- package/dist/src/components/smart-camera-web/src/SmartCameraWeb.js.map +0 -7
- package/dist/src/components/totp-consent/src/index.js +0 -1305
- package/dist/src/components/totp-consent/src/index.js.map +0 -7
- package/dist/src/index.js.map +0 -7
- package/dist/styles/README.md +0 -3
- package/dist/types/document-auto-capture.d.ts +0 -34
- package/dist/types/locale.d.ts +0 -19
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/styles/src/typography.js", "../../../../../src/styles/src/styles.js", "../../../../../src/domain/camera/src/SmartCamera.js", "../../../../../src/domain/constants/src/Constants.js", "../../../../../src/components/navigation/src/Navigation.js", "../../../../../src/components/document/src/document-capture/DocumentCapture.js", "../../../../../src/components/document/src/document-capture-review/DocumentCaptureReview.js", "../../../../../src/domain/file-upload/src/SmartFileUpload.js", "../../../../../src/components/document/src/document-capture-instructions/DocumentCaptureInstructions.js", "../../../../../package.json", "../../../../../src/components/document/src/DocumentCaptureScreens.js", "../../../../../src/components/selfie/src/selfie-capture/SelfieCapture.js", "../../../../../src/components/selfie/src/selfie-capture-instructions/SelfieCaptureInstructions.js", "../../../../../src/components/selfie/src/selfie-capture-review/SelfieCaptureReview.js", "../../../../../src/components/selfie/src/SelfieCaptureScreens.js", "../../../../../src/components/attribution/PoweredBySmileId.js", "../../../../../src/components/camera-permission/CameraPermission.js", "../../../../../src/components/smart-camera-web/src/SmartCameraWeb.js"],
|
|
4
|
-
"sourcesContent": ["const typography = `\n .text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n }\n .text-sm {\n font-size: 0.875rem;\n line-height: 1.125rem;\n }\n .text-base {\n font-size: 1rem;\n line-height: 1rem;\n }\n .text-lg {\n font-size: 1.125rem;\n line-height: 1.75rem;\n }\n .text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n }\n .text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n }\n .text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n }\n .text-4xl {\n font-size: 2rem;\n line-height: 2.5rem;\n }\n .text-5xl {\n font-size: 2.25rem;\n line-height: 2.5rem;\n }\n .font-bold {\n font-weight: 700;\n }\n .font-semibold {\n font-weight: 600;\n }\n .font-medium {\n font-weight: 500;\n }\n .font-normal {\n font-weight: 400;\n }\n`;\n\nexport default typography;\n", "import typography from './typography';\n\nconst styles = (\n themeColor,\n) => `<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" />\n<link\n href=\"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap\"\n rel=\"stylesheet\"\n as=\"style\"\n/>\n<style>\n${typography}\n:host {\n --theme-color: ${themeColor || '#001096'};\n --color-active: #001096;\n --color-default: #2d2b2a;\n --color-disabled: #848282;\n --web-digital-blue: #001096;\n }\n\n * {\n font-family: \"DM Sans\", sans-serif;\n }\n\n [hidden] {\n display: none !important;\n }\n\n [disabled] {\n cursor: not-allowed !important;\n filter: grayscale(75%);\n }\n\n .visually-hidden {\n border: 0;\n clip: rect(1px 1px 1px 1px);\n clip: rect(1px, 1px, 1px, 1px);\n height: auto;\n margin: 0;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n }\n\n img {\n height: auto;\n max-width: 100%;\n }\n\n video {\n background-color: black;\n }\n\n a {\n color: currentColor;\n text-decoration: none;\n }\n\n svg {\n max-width: 100%;\n }\n\n .color-gray {\n color: #797979;\n }\n\n .color-red {\n color: red;\n }\n\n .color-richblue {\n color: #4e6577;\n }\n\n .color-richblue-shade {\n color: #0e1b42;\n }\n\n .color-digital-blue {\n color: var(--web-digital-blue) !important;\n }\n\n .color-deep-blue {\n color: #001096;\n }\n\n .title-color {\n color: ${themeColor || '#001096'};\n }\n \n .theme-color {\n color: ${themeColor || '#001096'};\n }\n\n .center {\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n }\n\n .font-size-small {\n font-size: 0.75rem;\n }\n\n .font-size-large {\n font-size: 1.5rem;\n }\n\n .text-transform-uppercase {\n text-transform: uppercase;\n }\n\n [id*=-\"screen\"] {\n min-block-size: 100%;\n }\n\n [data-variant~=\"full-width\"] {\n inline-size: 100%;\n }\n\n .flow > * + * {\n margin-top: var(--flow-space, 1rem);\n }\n\n .button {\n --button-color: ${themeColor || 'var(--active-color)'};\n -webkit-appearance: none;\n appearance: none;\n border-radius: 2.5rem;\n border: 0;\n background-color: transparent;\n color: #fff;\n cursor: pointer;\n display: block;\n font-size: 18px;\n font-weight: 600;\n padding: 0.75rem 1.5rem;\n text-align: center;\n }\n\n .button:hover,\n .button:focus,\n .button:active {\n --button-color: var(--color-default);\n }\n\n .button:disabled {\n --button-color: var(--color-disabled);\n }\n\n .button[data-variant~=\"solid\"] {\n background-color: var(--button-color);\n border: 2px solid var(--button-color);\n }\n\n .button[data-variant~=\"outline\"] {\n color: var(--button-color);\n border: 2px solid var(--button-color);\n }\n\n .button[data-variant~=\"ghost\"] {\n padding: 0px;\n color: var(--button-color);\n background-color: transparent;\n }\n\n .icon-btn {\n appearance: none;\n background: none;\n border: none;\n color: hsl(0deg 0% 94%);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px 8px;\n }\n .justify-right {\n justify-content: end !important;\n }\n .nav {\n display: flex;\n justify-content: space-between;\n }\n\n .back-wrapper {\n display: flex;\n align-items: center;\n }\n\n .back-button-text {\n font-size: 11px;\n line-height: 11px;\n color: rgb(21, 31, 114);\n }\n\n\n .selfie-capture-review-image {\n overflow: hidden;\n aspect-ratio: 1/1;\n }\n\n #review-image {\n scale: 1.75;\n }\n\n @media (max-aspect-ratio: 1/1) {\n #review-image {\n transform: scaleX(-1) translateY(-10%);\n }\n }\n\n .tips,\n .powered-by {\n align-items: center;\n border-radius: 0.25rem;\n color: #4e6577;\n display: flex;\n justify-content: center;\n letter-spacing: 0.075em;\n }\n\n .powered-by {\n box-shadow: 0px 2.57415px 2.57415px rgba(0, 0, 0, 0.06);\n display: inline-flex;\n font-size: 0.5rem;\n }\n\n .tips {\n margin-left: auto;\n margin-right: auto;\n max-width: 17rem;\n }\n\n .tips > * + *,\n .powered-by > * + * {\n display: inline-block;\n margin-left: 0.5em;\n }\n\n .powered-by .company {\n color: #18406d;\n font-weight: 700;\n letter-spacing: 0.15rem;\n }\n\n .logo-mark {\n background-color: #004071;\n display: inline-block;\n padding: 0.25em 0.5em;\n }\n\n .logo-mark svg {\n height: auto;\n justify-self: center;\n width: 0.75em;\n }\n\n #document-capture-instructions-screen,\n #back-of-document-capture-instructions-screen {\n padding-block: 2rem;\n display: flex;\n flex-direction: column;\n max-block-size: 100%;\n max-inline-size: 40ch;\n justify-content: space-between;\n }\n\n #document-capture-instructions-screen header p {\n margin-block: 0 !important;\n }\n\n .description {\n color: var(--neutral-off-black, #2D2B2A);\n text-align: center;\n\n /* p */\n font-family: DM Sans;\n font-size: 0.875rem;\n font-style: normal;\n font-weight: 400;\n line-height: 18px;\n }\n\n .padding-bottom-2 {\n padding-bottom: 2rem;\n }\n\n .instructions-wrapper {\n display: inline-flex;\n flex-direction: column;\n gap: 1.5rem;\n margin-block-start: 2rem;\n margin-block-end: 2rem;\n }\n .instructions {\n display: flex;\n align-items: center;\n text-align: initial;\n }\n\n .instructions svg {\n flex-shrink: 0;\n margin-inline-end: 2rem;\n }\n\n .instructions p {\n margin-block: 0;\n }\n\n .instruction {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n }\n\n .instruction-body {\n font-size: 0.75rem;\n }\n\n .instruction-header {\n color: ${themeColor};\n }\n\n .flex-column {\n display: flex;\n flex-direction: column;\n }\n\n @keyframes spin {\n 0% {\n transform: translate3d(-50%, -50%, 0) rotate(0deg);\n }\n 100% {\n transform: translate3d(-50%, -50%, 0) rotate(360deg);\n }\n}\n\n.spinner {\n animation: 1.5s linear infinite spin;\n animation-play-state: inherit;\n border: solid 5px #cfd0d1;\n border-bottom-color: var(--color-active);\n border-radius: 50%;\n content: \"\";\n display: block;\n height: 25px;\n width: 25px;\n will-change: transform;\n position: relative;\n top: .675rem;\n left: 1.25rem;\n }\n\n</style>`;\n\nexport default styles;\n", "class SmartCamera {\n static stream = null;\n\n static async getMedia(constraints) {\n SmartCamera.stream = await navigator.mediaDevices.getUserMedia(constraints);\n return SmartCamera.stream;\n }\n\n static environmentOptions = {\n facingMode: 'environment',\n height: {\n ideal: 1080,\n max: 1440,\n min: 720,\n },\n width: {\n ideal: 1920,\n max: 2560,\n min: 1280,\n },\n // NOTE: Special case for multi-camera Samsung devices (learnt from Acuant)\n // \"We found out that some triple camera Samsung devices (S10, S20, Note 20, etc) capture images blurry at edges.\n // Zooming to 2X, matching the telephoto lens, doesn't solve it completely but mitigates it.\"\n zoom: SmartCamera.isSamsungMultiCameraDevice() ? 2.0 : 1.0,\n };\n\n static stopMedia() {\n if (SmartCamera.stream) {\n SmartCamera.stream.getTracks().forEach((track) => track.stop());\n SmartCamera.stream = null;\n }\n }\n\n static async supportsAgentMode() {\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n const videoDevices = devices.filter(\n (device) => device.kind === 'videoinput',\n );\n\n let hasBackCamera = false;\n\n videoDevices.forEach((device) => {\n // Check if the device label or device ID indicates a back camera\n if (\n device.label.toLowerCase().includes('back') ||\n device.label.toLowerCase().includes('rear')\n ) {\n hasBackCamera = true;\n return true;\n }\n return false;\n });\n\n return hasBackCamera;\n } catch (error) {\n console.warn('Error accessing media devices: ', error);\n return false;\n }\n }\n\n static isSamsungMultiCameraDevice() {\n const matchedModelNumber = navigator.userAgent.match(/SM-[N|G]\\d{3}/);\n if (!matchedModelNumber) {\n return false;\n }\n\n const modelNumber = parseInt(matchedModelNumber[0].match(/\\d{3}/)[0], 10);\n const smallerModelNumber = 970; // S10e\n return !Number.isNaN(modelNumber) && modelNumber >= smallerModelNumber;\n }\n\n static handleCameraError(e) {\n switch (e.name) {\n case 'NotAllowedError':\n case 'SecurityError':\n return `\n Looks like camera access was not granted, or was blocked by a browser\n level setting / extension. Please follow the prompt from the URL bar,\n or extensions, and enable access.\n You may need to refresh to start all over again\n `;\n case 'AbortError':\n return `\n Oops! Something happened, and we lost access to your stream.\n Please refresh to start all over again\n `;\n case 'NotReadableError':\n return `\n There seems to be a problem with your device's camera, or its connection.\n Please check this, and when resolved, try again. Or try another device.\n `;\n case 'NotFoundError':\n return `\n We are unable to find a video stream.\n You may need to refresh to start all over again\n `;\n case 'TypeError':\n return `\n This site is insecure, and as such cannot have access to your camera.\n Try to navigate to a secure version of this page, or contact the owner.\n `;\n default:\n return e.message;\n }\n }\n}\n\nexport default SmartCamera;\n", "/**\n * The type of image submitted in the job request\n * @readonly\n * @enum {number}\n */\nexport const IMAGE_TYPE = {\n /** ID_CARD_BACK_IMAGE_BASE64 Base64 encoded back of ID card image (.jpg or .png) */\n ID_CARD_BACK_IMAGE_BASE64: 7,\n /** ID_CARD_BACK_IMAGE_FILE Back of ID card image in .png or .jpg file format */\n ID_CARD_BACK_IMAGE_FILE: 5,\n /** ID_CARD_IMAGE_BASE64 Base64 encoded ID card image (.png or .jpg) */\n ID_CARD_IMAGE_BASE64: 3,\n /** ID_CARD_IMAGE_FILE ID card image in .png or .jpg file format */\n ID_CARD_IMAGE_FILE: 1,\n /** LIVENESS_IMAGE_BASE64 Base64 encoded liveness image (.jpg or .png) */\n LIVENESS_IMAGE_BASE64: 6,\n /** LIVENESS_IMAGE_FILE Liveness image in .png or .jpg file format */\n LIVENESS_IMAGE_FILE: 4,\n /** SELFIE_IMAGE_BASE64 Base64 encoded selfie image (.png or .jpg) */\n SELFIE_IMAGE_BASE64: 2,\n /** SELFIE_IMAGE_FILE Selfie image in .png or .jpg file format */\n SELFIE_IMAGE_FILE: 0,\n};\n\nexport const DEFAULT_NO_OF_LIVENESS_FRAMES = 8;\nexport const PORTRAIT_ID_PREVIEW_WIDTH = 396;\nexport const PORTRAIT_ID_PREVIEW_HEIGHT = 527;\n", "class Navigation extends HTMLElement {\n connectedCallback() {\n const shadow = this.attachShadow({ mode: 'open' });\n\n const style = document.createElement('style');\n style.textContent = `\n:host {\n display: flex;\n max-inline-size: 100%;\n justify-content: ${this.showBackButton ? 'space-between' : 'flex-end'};\n}\n\nbutton {\n --button-color: var(--color-default);\n --flow-space: 3rem;\n -webkit-appearance: none;\n -moz-appearance: none;\n align-items: center;\n appearance: none;\n background-color: transparent;\n border-radius: 2.5rem;\n border: none;\n color: #ffffff;\n cursor: pointer;\n display: inline-flex;\n font-size: 20px;\n font-weight: 500;\n inline-size: 100%;\n justify-content: center;\n letter-spacing: 0.05ch;\n line-height: 1;\n padding: 1rem 2.5rem;\n text-align: center;\n text-decoration: none;\n}\n\nbutton[data-type=\"icon\"] {\n align-items: center;\n background-color: transparent;\n border: 0;\n cursor: pointer;\n display: flex;\n padding: 0;\n width: auto;\n}\n\n:host::part(back-button) {\n display: flex;\n align-items: center;\n}\n\n:host::part(back-button-text) {\n line-height: 1;\n color: ${this.hasThemeColor ? this.themeColor : 'rgb(21, 31, 114)'} !important;\n}\n\n:host::part(close-button) {\n}\n\n.visually-hidden {\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n block-size: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n inline-size: 1px;\n}\n `;\n\n const backButton = document.createElement('button');\n backButton.setAttribute('class', 'back-button');\n backButton.setAttribute('data-type', 'icon');\n backButton.setAttribute('part', 'back-button');\n backButton.setAttribute('type', 'button');\n backButton.innerHTML = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n fill=\"#DBDBC4\"\n d=\"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10Z\"\n opacity=\".4\"\n />\n <path\n fill=\"${this.themeColor}\"\n d=\"M15.5 11.25h-5.19l1.72-1.72c.29-.29.29-.77 0-1.06a.754.754 0 0 0-1.06 0l-3 3c-.29.29-.29.77 0 1.06l3 3c.15.15.34.22.53.22s.38-.07.53-.22c.29-.29.29-.77 0-1.06l-1.72-1.72h5.19c.41 0 .75-.34.75-.75s-.34-.75-.75-.75Z\"\n />\n </svg>\n <span part=\"back-button-text\">Back</span>\n `;\n\n const closeButton = document.createElement('button');\n closeButton.setAttribute('class', 'close-button');\n closeButton.setAttribute('data-type', 'icon');\n closeButton.setAttribute('part', 'close-button');\n closeButton.setAttribute('type', 'button');\n closeButton.innerHTML = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"40\"\n height=\"40\"\n fill=\"none\"\n >\n <path\n fill=\"#DBDBC4\"\n d=\"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10Z\"\n opacity=\".4\"\n />\n <path\n fill=\"#91190F\"\n d=\"m13.06 12 2.3-2.3c.29-.29.29-.77 0-1.06a.754.754 0 0 0-1.06 0l-2.3 2.3-2.3-2.3a.754.754 0 0 0-1.06 0c-.29.29-.29.77 0 1.06l2.3 2.3-2.3 2.3c-.29.29-.29.77 0 1.06.15.15.34.22.53.22s.38-.07.53-.22l2.3-2.3 2.3 2.3c.15.15.34.22.53.22s.38-.07.53-.22c.29-.29.29-.77 0-1.06l-2.3-2.3Z\"\n />\n </svg>\n <span class=\"visually-hidden\"\n >Close SmileIdentity Verification frame</span\n >\n `;\n\n shadow.appendChild(style);\n if (this.showBackButton) shadow.appendChild(backButton);\n shadow.appendChild(closeButton);\n\n // Back Button Controls\n this.backButton = backButton;\n this.backButton.addEventListener('click', () => this.handleBack());\n\n // Close Button Controls\n this.closeButton = closeButton;\n this.closeButton.addEventListener('click', () => this.handleClose());\n }\n\n disconnectedCallback() {\n this.backButton.removeEventListener('click', () => this.handleBack());\n this.closeButton.removeEventListener('click', () => this.handleClose());\n }\n\n handleBack() {\n this.dispatchEvent(new CustomEvent('navigation.back'));\n }\n\n handleClose() {\n this.dispatchEvent(new CustomEvent('navigation.close'));\n }\n\n get showBackButton() {\n return !this.hasAttribute('hide-back');\n }\n\n get themeColor() {\n return this.getAttribute('theme-color') || '#001096';\n }\n\n get hasThemeColor() {\n return this.getAttribute('theme-color')?.trim();\n }\n}\n\nif (\n 'customElements' in window &&\n !window.customElements.get('smileid-navigation')\n) {\n window.customElements.define('smileid-navigation', Navigation);\n}\n\nexport default Navigation;\n", "import SmartCamera from '../../../../domain/camera/src/SmartCamera';\nimport styles from '../../../../styles/src/styles';\nimport '../../../navigation/src';\n\nfunction hasMoreThanNColors(data, n = 16) {\n const colors = new Set();\n for (let i = 0; i < Math.min(data.length, 10000); i += 4) {\n // eslint-disable-next-line no-bitwise\n colors.add((data[i] << 16) | (data[i + 1] << 8) | data[i + 2]);\n if (colors.size > n) {\n return true;\n }\n }\n return false;\n}\n\nfunction templateString() {\n return `\n <style>\n .visually-hidden {\n border: 0;\n clip: rect(1px 1px 1px 1px);\n clip: rect(1px, 1px, 1px, 1px);\n height: auto;\n margin: 0;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n }\n\n .mobile-camera-screen video {\n display: block;\n object-fit: cover;\n object-position: center;\n width: 100%;\n }\n\n .id-video.mobile-camera-screen {\n display: flex;\n align-items: stretch;\n justify-content: center;\n max-height: 300px;\n height: 15rem;\n width: 100%;\n overflow: visible;\n margin: 0 auto;\n }\n \n @media (max-width: 600px) {\n .section {\n width: 99%;\n height: 100vh;\n justify-content: center;\n }\n }\n\n\n\n #document-capture-screen,\n #back-of-document-capture-screen {\n block-size: 45rem;\n padding-block: 2rem;\n display: flex;\n flex-direction: column;\n max-block-size: 100%;\n max-inline-size: 40ch;\n }\n\n #document-capture-screen header p {\n margin-block: 0 !important;\n }\n\n .padding-bottom-2 {\n padding-bottom: 2rem;\n }\n @media (min-width: 600px) {\n video {\n object-fit: contain;\n -webkit-tap-highlight-color: transparent;\n content: normal;\n }\n \n .id-video {\n width: 99%;\n text-align: center;\n position: relative;\n overflow: hidden;\n }\n\n .id-video-container {\n margin: auto;\n padding: 0px;\n }\n }\n .id-video-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n .id-video {\n width: 100%;\n text-align: center;\n position: relative;\n background: white;\n }\n .video-overlay {\n position: absolute;\n border-style: solid;\n border-color: rgba(0, 0, 0, 0.48);\n box-sizing: border-box;\n inset: 0px;\n }\n \n .video-overlay .inner-border {\n position: absolute;\n border-width: 0.25rem;\n border-color: #9394ab;\n border-style: solid;\n border-radius: 0.25rem;\n inset: -1px;\n }\n canvas {\n border-width: 0.25rem;\n border-color: #9394ab;\n border-style: solid;\n border-radius: 0.25rem;\n }\n \n .description {\n align-self: center;\n padding-bottom: 1.75rem;\n }\n .reset-margin-block {\n margin-block: 0;\n }\n .align-items-center {\n align-items: center;\n }\n .id-side {\n padding-bottom: 0.5rem;\n }\n \n .circle-progress {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 10rem;\n }\n\n .portrait .sticky {\n position: -webkit-sticky; /* Safari */\n position: sticky;\n bottom: 0;\n }\n .video-footer {\n background-color: rgba(255, 255, 255, 0.17);\n padding-top: 10px;\n }\n </style>\n ${styles(this.themeColor)}\n <div id='document-capture-screen' class='flow center flex-column'>\n <smileid-navigation theme-color='${this.themeColor}' ${this.showNavigation ? 'show-navigation' : ''} ${this.hideBack ? 'hide-back' : ''}></smileid-navigation>\n <h2 class='text-base font-bold title-color'>${this.documentName}</h2>\n <div class=\"circle-progress\" id=\"loader\">\n ${this.cameraError ? '' : '<p class=\"spinner\"></p>'}\n ${this.cameraError ? `<p style=\"--flow-space: 4rem\" class='color-red | center'>${this.cameraError}</p>` : '<p style=\"--flow-space: 4rem\">Checking permissions</p>'}\n </div>\n <div class='section | flow ${this.isPortraitCaptureView ? 'portrait' : 'landscape'}' ${this.cameraError ? 'hidden' : ''}>\n <div class='id-video-container'>\n <div class='id-video ${this.isPortraitCaptureView ? 'portrait' : 'landscape'}' hidden>\n </div>\n <div class='video-footer sticky'>\n <h2 class='text-base font-bold title-color reset-margin-block id-side'>${this.title}</h2>\n <h4 class='text-base font-normal title-color description reset-margin-block'>Make sure all corners are visible and there is no glare.</h4>\n <div class='actions' hidden>\n <button id='capture-id-image' class='button icon-btn | center' type='button'>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"70\" height=\"70\" viewBox=\"0 0 70 70\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M35 70C54.33 70 70 54.33 70 35C70 15.67 54.33 0 35 0C15.67 0 0 15.67 0 35C0 54.33 15.67 70 35 70ZM61 35C61 49.3594 49.3594 61 35 61C20.6406 61 9 49.3594 9 35C9 20.6406 20.6406 9 35 9C49.3594 9 61 20.6406 61 35ZM65 35C65 51.5685 51.5685 65 35 65C18.4315 65 5 51.5685 5 35C5 18.4315 18.4315 5 35 5C51.5685 5 65 18.4315 65 35Z\" fill=\"${this.themeColor}\"/>\n </svg>\n <span class='visually-hidden'>Capture Document</span>\n </button>\n </div>\n ${this.hideAttribution ? '' : '<powered-by-smile-id></powered-by-smile-id>'}\n </div>\n </div>\n </div>\n </div>\n `;\n}\n\nconst documentCaptureScale = 0.6;\n\nclass DocumentCapture extends HTMLElement {\n constructor() {\n super();\n this.templateString = templateString.bind(this);\n this.render = () => this.templateString();\n\n this.attachShadow({ mode: 'open' });\n this.IdSides = {\n back: 'Back',\n front: 'Front',\n };\n }\n\n connectedCallback() {\n const template = document.createElement('template');\n template.innerHTML = this.render();\n this.shadowRoot.innerHTML = '';\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n this.setUpEventListeners();\n }\n\n async getUserMedia() {\n if (SmartCamera.stream) {\n return;\n }\n if (!this.hasAttribute('data-camera-error')) return;\n\n try {\n await SmartCamera.getMedia({\n audio: false,\n video: {\n ...SmartCamera.environmentOptions,\n aspectRatio: { ideal: 16 / 9 },\n },\n });\n } catch (error) {\n console.error(error.constraint);\n console.error(error.message);\n }\n\n this.handleIDStream(SmartCamera.stream);\n }\n\n _captureIDImage() {\n const imageDetails = this._drawIDImage();\n this._stopIDVideoStream();\n\n this.dispatchEvent(\n new CustomEvent('document-capture.publish', {\n detail: {\n ...imageDetails,\n },\n }),\n );\n }\n\n _drawIDImage(video = this._IDVideo) {\n const canvas = document.createElement('canvas');\n if (this.isPortraitCaptureView) {\n canvas.width = video.videoWidth;\n canvas.height = (canvas.width * 16) / 9;\n\n const previewCanvas = document.createElement('canvas');\n previewCanvas.width = canvas.width;\n previewCanvas.height = canvas.height;\n\n this.updatePortraitId(canvas, video, 1, 1);\n this.updatePortraitId(previewCanvas, video);\n const image = canvas.toDataURL('image/jpeg');\n const previewImage = previewCanvas.toDataURL('image/jpeg');\n return {\n image,\n originalHeight: canvas.height,\n originalWidth: canvas.width,\n previewImage,\n ...this.idCardRegion,\n };\n }\n\n canvas.width = 2240;\n canvas.height = 1260;\n\n const height = canvas.width / (video.videoWidth / video.videoHeight);\n canvas.height = height;\n\n const previewCanvas = document.createElement('canvas');\n previewCanvas.height = canvas.height;\n previewCanvas.width = canvas.width;\n const isPortrait = video.videoWidth < video.videoHeight;\n if (isPortrait) {\n const intermediateCanvas = document.createElement('canvas');\n previewCanvas.height = canvas.width / 1.75;\n canvas.width = 2240;\n canvas.height = canvas.width / 1.77;\n this._capturePortraitToLandscapeImage(intermediateCanvas, video);\n this._drawLandscapeImageFromCanvas(canvas, intermediateCanvas, 1, 1);\n this._drawLandscapeImageFromCanvas(previewCanvas, intermediateCanvas);\n } else {\n this._drawLandscapeImage(canvas, video, 1, 1);\n this._drawLandscapeImage(previewCanvas, video);\n }\n const image = canvas.toDataURL('image/jpeg');\n\n const previewImage = previewCanvas.toDataURL('image/jpeg');\n return {\n image,\n originalHeight: canvas.height,\n originalWidth: canvas.width,\n previewImage,\n ...this.idCardRegion,\n };\n }\n\n _drawImage(canvas, enableImageTests = true, video = SmartCamera.stream) {\n this.resetErrorMessage();\n const context = canvas.getContext('2d');\n\n context.drawImage(\n video,\n 0,\n 0,\n video.videoWidth,\n video.videoHeight,\n 0,\n 0,\n canvas.width,\n canvas.height,\n );\n\n if (enableImageTests) {\n const imageData = context.getImageData(0, 0, canvas.width, canvas.height);\n\n const hasEnoughColors = hasMoreThanNColors(imageData.data);\n\n if (hasEnoughColors) {\n return context;\n }\n throw new Error(\n 'Unable to capture webcam images - Please try another device',\n );\n } else {\n return context;\n }\n }\n\n handleIDStream(stream) {\n try {\n const videoExists = this.shadowRoot.querySelector('canvas');\n if (videoExists) {\n // remove canvas\n videoExists.remove();\n }\n let video = null;\n let canvas = null;\n video = document.createElement('video');\n canvas = document.createElement('canvas');\n const videoContainer = this.shadowRoot.querySelector(\n '.id-video-container',\n );\n\n video.muted = true;\n video.setAttribute('muted', 'true');\n\n video.autoplay = true;\n video.playsInline = true;\n if ('srcObject' in video) {\n video.srcObject = stream;\n } else {\n video.src = window.URL.createObjectURL(stream);\n }\n\n canvas.width = videoContainer.clientWidth;\n canvas.height = (videoContainer.clientWidth * 9) / 16;\n if (this.isPortraitCaptureView) {\n canvas.height = (videoContainer.clientWidth * 16) / 9;\n }\n\n video.onloadedmetadata = () => {\n video.play();\n\n this.shadowRoot.querySelector('#loader').hidden = true;\n this.shadowRoot.querySelector('.id-video').hidden = false;\n this.shadowRoot.querySelector('.actions').hidden = false;\n if (!videoExists) {\n videoContainer.prepend(canvas);\n }\n };\n\n const onVideoStart = () => {\n if (video.paused || video.ended) return;\n video.removeEventListener('playing', onVideoStart);\n const aspectRatio = video.videoWidth / video.videoHeight;\n const portrait = aspectRatio < 1;\n if (this.isPortraitCaptureView) {\n this.updatePortraitId(canvas, video);\n requestAnimationFrame(onVideoStart);\n return;\n }\n\n if (portrait) {\n videoContainer.classList.add('mobile-camera-screen');\n const intermediateCanvas = document.createElement('canvas');\n this._capturePortraitToLandscapeImage(intermediateCanvas, video);\n this._drawLandscapeImageFromCanvas(canvas, intermediateCanvas);\n } else {\n this._drawLandscapeImage(canvas, video);\n }\n requestAnimationFrame(onVideoStart);\n };\n\n video.addEventListener('playing', onVideoStart);\n\n this._IDStream = stream;\n this._IDVideo = video;\n } catch (error) {\n this.setAttribute(\n 'data-camera-error',\n SmartCamera.handleCameraError(error),\n );\n if (error.name !== 'AbortError') {\n console.error(error);\n }\n SmartCamera.stopMedia();\n }\n }\n\n _drawLandscapeImage(\n canvas,\n video = this._IDVideo,\n scaleHeight = documentCaptureScale,\n scaleWidth = documentCaptureScale,\n ) {\n const heightScaleFactor = this.height\n ? this.height / video.videoHeight\n : scaleHeight;\n const widthScaleFactor = this.width\n ? this.width / video.videoWidth\n : scaleWidth;\n const scaleHeightOffset = (1 - scaleHeight) / 2;\n const scaleWidthOffset = (1 - scaleWidth) / 2;\n const width = video.videoWidth * widthScaleFactor;\n const height = video.videoHeight * heightScaleFactor;\n const startX = video.videoWidth * scaleWidthOffset;\n const startY = video.videoHeight * scaleHeightOffset;\n\n canvas\n .getContext('2d')\n .drawImage(\n video,\n startX,\n startY,\n width,\n height,\n 0,\n 0,\n canvas.width,\n canvas.height,\n );\n }\n\n _capturePortraitToLandscapeImage(canvas, video = this._IDVideo) {\n const { videoHeight, videoWidth } = video;\n const cropWidth = videoWidth;\n const cropHeight = (videoWidth * 9) / 16; // convert to landscape aspect ratio\n const startX = 0;\n const startY = (videoHeight - cropHeight) / 2;\n\n canvas.width = cropWidth;\n canvas.height = cropHeight;\n\n canvas\n .getContext('2d')\n .drawImage(\n video,\n startX,\n startY,\n cropWidth,\n cropHeight,\n 0,\n 0,\n canvas.width,\n canvas.height,\n );\n }\n\n _drawLandscapeImageFromCanvas(\n canvas,\n sourceCanvas,\n scaleHeight = documentCaptureScale,\n scaleWidth = documentCaptureScale,\n ) {\n const heightScaleFactor = this.height\n ? this.height / sourceCanvas.height\n : scaleHeight;\n const widthScaleFactor = this.width\n ? this.width / sourceCanvas.width\n : scaleWidth;\n const scaleHeightOffset = (1 - scaleHeight) / 2;\n const scaleWidthOffset = (1 - scaleWidth) / 2;\n const width = sourceCanvas.width * widthScaleFactor;\n const height = sourceCanvas.height * heightScaleFactor;\n const startX = sourceCanvas.width * scaleWidthOffset;\n const startY = sourceCanvas.height * scaleHeightOffset;\n\n canvas\n .getContext('2d')\n .drawImage(\n sourceCanvas,\n startX,\n startY,\n width,\n height,\n 0,\n 0,\n canvas.width,\n canvas.height,\n );\n }\n\n _drawPortraitToLandscapeImage(canvas, video = this._IDVideo) {\n const { videoHeight, videoWidth } = video;\n const cropWidth = 600;\n const cropHeight = 400;\n\n canvas.width = cropWidth;\n canvas.height = cropHeight;\n\n const startX = (videoWidth - cropWidth) / 2;\n const startY = (videoHeight - cropHeight) / 2;\n\n canvas\n .getContext('2d')\n .drawImage(\n video,\n startX,\n startY,\n cropWidth,\n cropHeight,\n 0,\n 0,\n canvas.width,\n canvas.height,\n );\n }\n\n updatePortraitId(\n destinationCanvas,\n video = this._IDVideo,\n scaleHeight = documentCaptureScale,\n scaleWidth = documentCaptureScale,\n ) {\n const { videoWidth, videoHeight } = video;\n\n if (videoWidth && videoHeight) {\n const intermediateCanvas = document.createElement('canvas');\n const aspectRatio = 9 / 16;\n let cropWidth;\n let cropHeight;\n let offsetX;\n let offsetY;\n\n if (videoWidth / videoHeight > aspectRatio) {\n // we scale the canvas to portrait aspect ratio\n cropHeight = videoHeight;\n cropWidth = cropHeight * aspectRatio;\n offsetX = (videoWidth - cropWidth) / 2;\n offsetY = 0;\n } else {\n // video already has portrait aspect ratio\n cropWidth = videoWidth;\n cropHeight = cropWidth;\n offsetX = 0;\n offsetY = 0;\n }\n\n intermediateCanvas.height = cropHeight;\n intermediateCanvas.width = cropWidth;\n // draw the video frame onto the intermediate canvas\n intermediateCanvas\n .getContext('2d')\n .drawImage(\n video,\n offsetX,\n offsetY,\n cropWidth,\n cropHeight,\n 0,\n 0,\n intermediateCanvas.width,\n intermediateCanvas.height,\n );\n\n // draw the intermediate canvas onto the destination canvas\n // we scale image based on the scaleHeight and scaleWidth\n const heightScaleFactor = this.height\n ? this.height / cropWidth\n : scaleHeight;\n const widthScaleFactor = this.width\n ? this.width / cropHeight\n : scaleWidth;\n const scaleHeightOffset = (1 - scaleHeight) / 2;\n const scaleWidthOffset = (1 - scaleWidth) / 2;\n const width = cropWidth * widthScaleFactor;\n const height = cropHeight * heightScaleFactor;\n const startX = cropWidth * scaleWidthOffset;\n const startY = cropHeight * scaleHeightOffset;\n destinationCanvas\n .getContext('2d')\n .drawImage(\n intermediateCanvas,\n startX,\n startY,\n width,\n height,\n 0,\n 0,\n destinationCanvas.width,\n destinationCanvas.height,\n );\n }\n }\n\n _stopIDVideoStream(stream = this._IDStream) {\n stream.getTracks().forEach((track) => track.stop());\n }\n\n setUpEventListeners() {\n this.captureIDImage = this.shadowRoot.querySelector('#capture-id-image');\n this.navigation = this.shadowRoot.querySelector('smileid-navigation');\n\n if (SmartCamera.stream) {\n this.handleIDStream(SmartCamera.stream);\n }\n\n this.navigation.addEventListener('navigation.back', () => {\n this.handleBackEvents();\n });\n\n this.navigation.addEventListener('navigation.close', () => {\n this.handleCloseEvents();\n });\n\n this.captureIDImage.addEventListener('click', () => {\n this._captureIDImage();\n });\n\n this.getUserMedia();\n }\n\n get hideBack() {\n return this.hasAttribute('hide-back-to-host');\n }\n\n get showNavigation() {\n return this.hasAttribute('show-navigation');\n }\n\n get themeColor() {\n return this.getAttribute('theme-color') || '#001096';\n }\n\n get hideAttribution() {\n return this.hasAttribute('hide-attribution');\n }\n\n get documentCaptureModes() {\n return this.getAttribute('document-capture-modes') || 'camera';\n }\n\n get supportBothCaptureModes() {\n const value = this.documentCaptureModes;\n return value.includes('camera') && value.includes('upload');\n }\n\n get title() {\n return (\n this.getAttribute('title') ||\n `${this.IdSides[this.sideOfId]} of ${this.documentName}`\n );\n }\n\n get height() {\n return this.getAttribute('height');\n }\n\n get width() {\n return this.getAttribute('width');\n }\n\n get hidden() {\n return this.getAttribute('hidden');\n }\n\n get sideOfId() {\n return (this.getAttribute('side-of-id') || 'front').toLowerCase();\n }\n\n get isFrontOfId() {\n return this.sideOfId === 'front';\n }\n\n get isBackOfId() {\n return !this.isFrontOfId;\n }\n\n get documentType() {\n return this.getAttribute('document-type') || '';\n }\n\n get documentName() {\n return this.getAttribute('document-name') || 'Document';\n }\n\n get isPortraitCaptureView() {\n return this.getAttribute('document-type') === 'GREEN_BOOK';\n }\n\n get cameraError() {\n return this.getAttribute('data-camera-error');\n }\n\n static get observedAttributes() {\n return [\n 'data-camera-error',\n 'data-camera-ready',\n 'document-name',\n 'document-type',\n 'hidden',\n 'hide-back-to-host',\n 'show-navigation',\n 'title',\n ];\n }\n\n attributeChangedCallback(name) {\n switch (name) {\n case 'data-camera-error':\n case 'data-camera-ready':\n case 'document-name':\n case 'document-type':\n case 'hidden':\n case 'title':\n this.connectedCallback();\n break;\n default:\n break;\n }\n }\n\n handleBackEvents() {\n this.dispatchEvent(new CustomEvent('document-capture.cancelled'));\n SmartCamera.stopMedia();\n }\n\n handleCloseEvents() {\n this.dispatchEvent(new CustomEvent('document-capture.close'));\n SmartCamera.stopMedia();\n }\n}\n\nif ('customElements' in window && !customElements.get('document-capture')) {\n window.customElements.define('document-capture', DocumentCapture);\n}\n\nexport default DocumentCapture;\n", "import styles from '../../../../styles/src/styles';\nimport '../../../navigation/src';\n\nfunction templateString() {\n return `\n <style>\n .retake-photo.button[data-variant~=\"ghost\"] {\n color: #FF5805;\n }\n\n\n @media (max-width: 600px) {\n .id-camera-screen {\n width: 100%;\n height: 100vh;\n }\n \n .section {\n width: 100%;\n height: 100vh;\n justify-content: center;\n }\n }\n \n .id-image-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1.75rem;\n }\n\n .id-image {\n width: 100%;\n text-align: center;\n position: relative;\n background: white;\n }\n img {\n height: 100%;\n min-height: 100px;\n width: 98%;\n }\n\n .action-buttons {\n width: 80%;\n }\n\n\n .icon-btn {\n appearance: none;\n background: none;\n border: none;\n color: hsl(0deg 0% 94%);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px 8px;\n }\n .justify-right {\n justify-content: end !important;\n }\n .nav {\n display: flex;\n justify-content: space-between;\n }\n\n .back-wrapper {\n display: flex;\n align-items: center;\n }\n\n .back-button-text {\n font-size: 11px;\n line-height: 11px;\n color: rgb(21, 31, 114);\n }\n\n\n\n .tips,\n .powered-by {\n align-items: center;\n border-radius: 0.25rem;\n color: #4e6577;\n display: flex;\n justify-content: center;\n letter-spacing: 0.075em;\n }\n\n .powered-by {\n box-shadow: 0px 2.57415px 2.57415px rgba(0, 0, 0, 0.06);\n display: inline-flex;\n font-size: 0.5rem;\n }\n\n .tips {\n margin-left: auto;\n margin-right: auto;\n max-width: 17rem;\n }\n\n .tips > * + *,\n .powered-by > * + * {\n display: inline-block;\n margin-left: 0.5em;\n }\n\n .powered-by .company {\n color: #18406d;\n font-weight: 700;\n letter-spacing: 0.15rem;\n }\n\n .logo-mark {\n background-color: #004071;\n display: inline-block;\n padding: 0.25em 0.5em;\n }\n\n .logo-mark svg {\n height: auto;\n justify-self: center;\n width: 0.75em;\n }\n \n #document-capture-review-screen {\n block-size: 45rem;\n padding-block: 2rem;\n display: flex;\n flex-direction: column;\n max-block-size: 100%;\n max-inline-size: 40ch;\n }\n\n #document-capture-review-screen .id-image-container.landscape {\n height: auto;\n }\n\n #document-capture-review-screen header p {\n margin-block: 0 !important;\n }\n\n .description {\n color: var(--neutral-off-black, #2D2B2A);\n text-align: center;\n\n /* p */\n font-family: DM Sans;\n font-size: 0.875rem;\n font-style: normal;\n font-weight: 400;\n line-height: 18px;\n }\n\n .padding-bottom-2 {\n padding-bottom: 2rem;\n }\n img {\n border-width: 0.25rem;\n border-color: #9394ab;\n border-style: solid;\n border-radius: 0.25rem;\n }\n\n .instructions-wrapper {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 2rem;\n margin-block-start: 2rem;\n margin-block-end: 4rem;\n }\n .instructions {\n display: flex;\n align-items: center;\n text-align: initial;\n }\n\n .instructions svg {\n flex-shrink: 0;\n margin-inline-end: 2rem;\n }\n\n .instructions p {\n margin-block: 0;\n }\n\n .instruction-body {\n font-size: 0.75rem;\n }\n\n h1 {\n color: var(--web-digital-blue, #001096);\n text-align: center;\n\n /* h1 */\n font-size: 1.5rem;\n font-style: normal;\n font-weight: 700;\n line-height: 36px; /* 150% */\n }\n\n .p2 {\n font-size: 1rem;\n font-style: normal;\n font-weight: 500;\n line-height: 1rem;\n }\n\n .instruction-header {\n color: var(--web-digital-blue, #001096);\n }\n\n .h2 {\n font-size: 1rem;\n font-style: normal;\n font-weight: 700;\n line-height: 1.5rem;\n }\n </style>\n ${styles(this.themeColor)}\n <div id='document-capture-review-screen' class='flow center'>\n <smileid-navigation ${this.showNavigation ? 'show-navigation' : ''} hide-back></smileid-navigation>\n <h1 class=\"header-title title-color\">\n Is the document clear and readable?\n </h1>\n <p class=\"description\">Make sure all corners of the document \n are visible and there is no glare</p>\n <div class='section | flow'>\n <div class='id-image-container'>\n <div class='id-image'>\n <div class='video-overlay'></div>\n ${this.imageSrc ? `<img alt='your ID card' id='document-capture-review-image' src='${this.imageSrc}' />` : ''}\n </div>\n <div class='flow action-buttons'>\n <button data-variant='solid full-width' class='button' type='button' id='select-id-image'>\n Yes, my ID is readable\n </button>\n <button data-variant='ghost full-width' class='button retake-photo' type='button' id='re-capture-id-image'>\n No, retake photo\n </button>\n </div>\n </div>\n\n ${\n this.hideAttribution\n ? ''\n : `\n <powered-by-smile-id></powered-by-smile-id>\n `\n }\n </div>\n </div>\n `;\n}\n\nclass IdReview extends HTMLElement {\n constructor() {\n super();\n this.templateString = templateString.bind(this);\n this.render = () => this.templateString();\n\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n const template = document.createElement('template');\n template.innerHTML = this.render();\n this.shadowRoot.innerHTML = '';\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n this.setUpEventListeners();\n }\n\n static get observedAttributes() {\n return ['hide-back-to-host', 'show-navigation', 'data-image'];\n }\n\n get hideBack() {\n return this.hasAttribute('hide-back-to-host');\n }\n\n get showNavigation() {\n return this.hasAttribute('show-navigation');\n }\n\n get themeColor() {\n return this.getAttribute('theme-color') || '#001096';\n }\n\n get hideAttribution() {\n return this.hasAttribute('hide-attribution');\n }\n\n get imageSrc() {\n return this.getAttribute('data-image');\n }\n\n get title() {\n return this.getAttribute('title') || 'Submit Front of ID';\n }\n\n handleBackEvents() {\n this.dispatchEvent(new CustomEvent('document-capture-review.cancelled'));\n }\n\n handleCloseEvents() {\n this.dispatchEvent(new CustomEvent('document-capture-review.close'));\n }\n\n attributeChangedCallback(name) {\n switch (name) {\n case 'data-image':\n case 'hide-back-to-host':\n case 'show-navigation':\n this.shadowRoot.innerHTML = this.render();\n this.setUpEventListeners();\n break;\n default:\n break;\n }\n }\n\n setUpEventListeners() {\n this.selectIDImage = this.shadowRoot.querySelector('#select-id-image');\n this.reCaptureIDImage = this.shadowRoot.querySelector(\n '#re-capture-id-image',\n );\n this.navigation = this.shadowRoot.querySelector('smileid-navigation');\n this.navigation.addEventListener('navigation.back', () => {\n this.handleBackEvents();\n });\n\n this.navigation.addEventListener('navigation.close', () => {\n this.handleCloseEvents();\n });\n\n this.selectIDImage.addEventListener('click', () => {\n this.dispatchEvent(\n new CustomEvent('document-capture-review.accepted', {\n detail: {},\n }),\n );\n });\n this.reCaptureIDImage.addEventListener('click', () => {\n this.dispatchEvent(\n new CustomEvent('document-capture-review.rejected', {\n detail: {},\n }),\n );\n });\n }\n}\n\nif (\n 'customElements' in window &&\n !customElements.get('document-capture-review')\n) {\n window.customElements.define('document-capture-review', IdReview);\n}\n\nexport default IdReview;\n", "class SmartFileUpload {\n static memoryLimit = 10240000;\n\n static supportedTypes = ['image/jpeg', 'image/png'];\n\n static getHumanSize(numberOfBytes) {\n // Approximate to the closest prefixed unit\n const units = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const exponent = Math.min(\n Math.floor(Math.log(numberOfBytes) / Math.log(1024)),\n units.length - 1,\n );\n const approx = numberOfBytes / 1024 ** exponent;\n const output =\n exponent === 0\n ? `${numberOfBytes} bytes`\n : `${approx.toFixed(0)} ${units[exponent]}`;\n\n return output;\n }\n\n static getData(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = (e) => {\n resolve(e.target.result);\n };\n reader.onerror = () => {\n reject(\n new Error(\n 'An error occurred reading the file. Please check the file, and try again',\n ),\n );\n };\n reader.readAsDataURL(file);\n });\n }\n\n static async retrieve(files) {\n if (files.length > 1) {\n throw new Error('Only one file upload is permitted at a time');\n }\n\n const file = files[0];\n\n if (!SmartFileUpload.supportedTypes.includes(file.type)) {\n throw new Error(\n 'Unsupported file format. Please ensure that you are providing a JPG or PNG image',\n );\n }\n\n if (file.size > SmartFileUpload.memoryLimit) {\n throw new Error(\n `${file.name} is too large. Please ensure that the file is less than ${SmartFileUpload.getHumanSize(SmartFileUpload.memoryLimit)}.`,\n );\n }\n\n const imageAsDataUrl = await SmartFileUpload.getData(file);\n\n return imageAsDataUrl;\n }\n}\n\nexport default SmartFileUpload;\n", "import SmartFileUpload from '../../../../domain/file-upload/src/SmartFileUpload';\nimport styles from '../../../../styles/src/styles';\nimport '../../../navigation/src';\n\nfunction frontDocumentIcon() {\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"173\" height=\"103\" viewBox=\"0 0 173 103\" fill=\"none\">\n <path d=\"M15.3799 21.2759C15.3799 16.8576 18.9616 13.2759 23.3799 13.2759H64.2764C68.6947 13.2759 72.2764 16.8576 72.2764 21.2759V73.5517C72.2764 77.97 68.6947 81.5517 64.2764 81.5517H23.3799C18.9616 81.5517 15.3799 77.97 15.3799 73.5517V21.2759Z\" fill=\"#F6C969\"/>\n <g filter=\"url(#filter0_d_1281_4127)\">\n <path d=\"M60.2117 80.8741C60.2117 80.8741 49.3661 81.5134 44.1952 81.5134C39.0242 81.5134 28.1787 80.8741 28.1787 80.8741C28.1787 80.8741 34.6256 78.4515 35.3307 76.8701C35.7001 76.0962 35.8344 73.2362 35.9015 70.578C35.9687 67.9199 35.9015 65.5646 35.9015 65.5646L44.1952 65.6992L52.4888 65.5646C52.4888 65.5646 52.3881 72.0921 52.7575 75.3223C52.7813 75.8503 52.8832 76.372 53.0597 76.8701C53.7984 78.4515 60.2117 80.8741 60.2117 80.8741Z\" fill=\"url(#paint0_linear_1281_4127)\"/>\n <path d=\"M31.3688 47.126C31.3688 47.126 29.1191 46.3184 28.4812 46.6549C27.8432 46.9914 26.8695 48.6737 27.0038 50.6589C27.0373 51.1636 27.4403 53.6872 29.1527 54.9321C29.6564 55.2686 30.1265 56.951 31.2345 57.1865C32.3426 57.422 32.5105 56.6818 32.5105 56.6818L31.3688 47.126Z\" fill=\"url(#paint1_linear_1281_4127)\"/>\n <path style=\"mix-blend-mode:multiply\" opacity=\"0.6\" d=\"M31.906 51.6683C31.906 51.6683 30.6637 47.7652 28.9848 48.3035C27.3059 48.8419 27.8767 51.6009 27.8767 51.6009C27.8767 51.6009 28.2461 49.0438 29.7571 49.8849C30.5629 50.2887 29.2534 51.029 29.2534 52.072C29.2534 53.1151 30.16 54.36 30.4622 53.6871C30.7644 53.0142 30.9659 50.6252 31.906 51.6683Z\" fill=\"url(#paint2_linear_1281_4127)\"/>\n <path style=\"mix-blend-mode:multiply\" opacity=\"0.6\" d=\"M30.462 53.687C30.7306 52.7785 30.932 51.399 31.4357 51.5335C31.5749 51.5809 31.6986 51.6655 31.7933 51.7781C31.888 51.8908 31.9501 52.0273 31.973 52.1729L31.8386 51.1971C31.8386 51.1971 30.8985 49.683 29.7568 50.9952\" fill=\"url(#paint3_linear_1281_4127)\"/>\n <path d=\"M57.3575 47.126C57.3575 47.126 59.6407 46.3184 60.2787 46.6549C60.9167 46.9914 61.8568 48.6737 61.7561 50.6589C61.7225 51.1636 61.286 53.6872 59.5736 54.9321C59.1035 55.2686 58.5998 56.951 57.4918 57.1865C56.3837 57.422 56.2158 56.6818 56.2158 56.6818L57.3575 47.126Z\" fill=\"url(#paint4_linear_1281_4127)\"/>\n <path style=\"mix-blend-mode:multiply\" opacity=\"0.6\" d=\"M56.8203 51.6683C56.8203 51.6683 58.0627 47.7652 59.7415 48.3035C61.4204 48.8419 60.8832 51.6009 60.8832 51.6009C60.8832 51.6009 60.5138 49.0438 58.9693 49.8849C58.1634 50.2887 59.4729 51.029 59.4729 52.072C59.4729 53.1151 58.5663 54.36 58.2641 53.6871C57.9619 53.0142 57.7605 50.6252 56.8203 51.6683Z\" fill=\"url(#paint5_linear_1281_4127)\"/>\n <path style=\"mix-blend-mode:multiply\" opacity=\"0.6\" d=\"M58.264 56.749C58.1297 56.9509 57.0552 57.5229 56.4844 56.9509C55.9135 56.3789 56.6858 52.7113 56.753 52.173C56.753 52.173 56.5515 56.177 56.8201 56.3452C56.4172 56.1097 58.2304 56.7826 58.264 56.749Z\" fill=\"url(#paint6_linear_1281_4127)\"/>\n <path d=\"M64.4757 81.9845H23.9141L32.5771 78.6534L33.5508 75.457C34.2424 75.3865 34.938 75.364 35.6326 75.3897L35.4312 76.5673C35.4312 76.5673 37.6473 78.8553 44.1949 78.8553C50.0038 78.8553 52.9586 76.5673 52.9586 76.5673L52.7908 75.5243V75.3897C53.4854 75.364 54.181 75.3865 54.8725 75.457L55.8463 78.6534L64.4757 81.9845Z\" fill=\"#151F72\"/>\n <path style=\"mix-blend-mode:multiply\" opacity=\"0.6\" d=\"M33.5509 75.4568C33.383 75.9951 37.7817 79.8309 44.0607 79.8309C48.0849 79.8356 51.9521 78.2662 54.839 75.4568L55.8128 78.6533C55.8128 78.6533 48.7615 81.5133 43.7249 81.5133C38.6883 81.5133 32.5771 78.6533 32.5771 78.6533L33.5509 75.4568Z\" fill=\"url(#paint7_linear_1281_4127)\"/>\n <path d=\"M56.115 37.1326C51.4478 29.6629 38.8898 29.4947 33.2487 35.854C27.6077 42.2133 30.8983 45.1406 31.1334 54.6292C31.3348 60.0464 31.5699 63.613 35.0955 66.6076C36.1386 67.4711 37.2258 68.2797 38.3525 69.0302C43.7249 73.0679 51.4813 69.5349 53.5296 66.473C57.2231 63.6467 56.8537 60.7866 57.2902 54.7301C57.626 46.8903 60.0436 43.2227 56.115 37.1326Z\" fill=\"url(#paint8_linear_1281_4127)\"/>\n </g>\n <g filter=\"url(#filter1_d_1281_4127)\">\n <mask id=\"path-12-inside-1_1281_4127\" fill=\"white\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M18 0C10.268 0 4 6.26801 4 14V80.8276C4 88.5596 10.268 94.8276 18 94.8276H155C162.732 94.8276 169 88.5596 169 80.8276V14C169 6.26801 162.732 0 155 0H18ZM23.7858 14.4876C19.3676 14.4876 15.7858 18.0693 15.7858 22.4876V72.3401C15.7858 76.7584 19.3676 80.3401 23.7858 80.3401H62.7858C67.2041 80.3401 70.7858 76.7584 70.7858 72.3401V22.4876C70.7858 18.0693 67.2041 14.4876 62.7858 14.4876H23.7858Z\"/>\n </mask>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M18 0C10.268 0 4 6.26801 4 14V80.8276C4 88.5596 10.268 94.8276 18 94.8276H155C162.732 94.8276 169 88.5596 169 80.8276V14C169 6.26801 162.732 0 155 0H18ZM23.7858 14.4876C19.3676 14.4876 15.7858 18.0693 15.7858 22.4876V72.3401C15.7858 76.7584 19.3676 80.3401 23.7858 80.3401H62.7858C67.2041 80.3401 70.7858 76.7584 70.7858 72.3401V22.4876C70.7858 18.0693 67.2041 14.4876 62.7858 14.4876H23.7858Z\" fill=\"#F9F0E7\"/>\n <path d=\"M5.5 14C5.5 7.09644 11.0964 1.5 18 1.5V-1.5C9.43959 -1.5 2.5 5.43958 2.5 14H5.5ZM5.5 80.8276V14H2.5V80.8276H5.5ZM18 93.3276C11.0964 93.3276 5.5 87.7311 5.5 80.8276H2.5C2.5 89.388 9.43958 96.3276 18 96.3276V93.3276ZM155 93.3276H18V96.3276H155V93.3276ZM167.5 80.8276C167.5 87.7311 161.904 93.3276 155 93.3276V96.3276C163.56 96.3276 170.5 89.388 170.5 80.8276H167.5ZM167.5 14V80.8276H170.5V14H167.5ZM155 1.5C161.904 1.5 167.5 7.09644 167.5 14H170.5C170.5 5.43959 163.56 -1.5 155 -1.5V1.5ZM18 1.5H155V-1.5H18V1.5ZM17.2858 22.4876C17.2858 18.8977 20.196 15.9876 23.7858 15.9876V12.9876C18.5391 12.9876 14.2858 17.2409 14.2858 22.4876H17.2858ZM17.2858 72.3401V22.4876H14.2858V72.3401H17.2858ZM23.7858 78.8401C20.196 78.8401 17.2858 75.9299 17.2858 72.3401H14.2858C14.2858 77.5868 18.5391 81.8401 23.7858 81.8401V78.8401ZM62.7858 78.8401H23.7858V81.8401H62.7858V78.8401ZM69.2858 72.3401C69.2858 75.9299 66.3757 78.8401 62.7858 78.8401V81.8401C68.0325 81.8401 72.2858 77.5868 72.2858 72.3401H69.2858ZM69.2858 22.4876V72.3401H72.2858V22.4876H69.2858ZM62.7858 15.9876C66.3757 15.9876 69.2858 18.8977 69.2858 22.4876H72.2858C72.2858 17.2409 68.0325 12.9876 62.7858 12.9876V15.9876ZM23.7858 15.9876H62.7858V12.9876H23.7858V15.9876Z\" fill=\"#001096\" mask=\"url(#path-12-inside-1_1281_4127)\"/>\n </g>\n <rect x=\"86.501\" y=\"23.7069\" width=\"64.8214\" height=\"1.42241\" rx=\"0.711207\" fill=\"#2D2B2A\"/>\n <rect x=\"86.501\" y=\"34.2433\" width=\"64.8214\" height=\"1.42241\" rx=\"0.711207\" fill=\"#2D2B2A\"/>\n <rect x=\"86.501\" y=\"44.1212\" width=\"32.7381\" height=\"1.42241\" rx=\"0.711207\" fill=\"#2D2B2A\"/>\n <rect x=\"27.5713\" y=\"86.2667\" width=\"32.7381\" height=\"2.63621\" rx=\"1.3181\" fill=\"#DBDBC4\"/>\n <defs>\n <filter id=\"filter0_d_1281_4127\" x=\"19.9141\" y=\"31.2932\" width=\"48.5615\" height=\"58.6913\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\n <feOffset dy=\"4\"/>\n <feGaussianBlur stdDeviation=\"2\"/>\n <feComposite in2=\"hardAlpha\" operator=\"out\"/>\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\"/>\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_1281_4127\"/>\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_1281_4127\" result=\"shape\"/>\n </filter>\n <filter id=\"filter1_d_1281_4127\" x=\"0\" y=\"0\" width=\"173\" height=\"102.828\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\n <feOffset dy=\"4\"/>\n <feGaussianBlur stdDeviation=\"2\"/>\n <feComposite in2=\"hardAlpha\" operator=\"out\"/>\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\"/>\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_1281_4127\"/>\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_1281_4127\" result=\"shape\"/>\n </filter>\n <linearGradient id=\"paint0_linear_1281_4127\" x1=\"44.1986\" y1=\"81.4966\" x2=\"44.1986\" y2=\"65.578\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FFB09A\"/>\n <stop offset=\"0.21\" stop-color=\"#FF9B8D\"/>\n <stop offset=\"0.47\" stop-color=\"#FF8781\"/>\n <stop offset=\"0.74\" stop-color=\"#FF7B79\"/>\n <stop offset=\"1\" stop-color=\"#FF7777\"/>\n </linearGradient>\n <linearGradient id=\"paint1_linear_1281_4127\" x1=\"29.7538\" y1=\"57.2504\" x2=\"29.7538\" y2=\"46.5708\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FFB09A\"/>\n <stop offset=\"0.21\" stop-color=\"#FF9B8D\"/>\n <stop offset=\"0.47\" stop-color=\"#FF8781\"/>\n <stop offset=\"0.74\" stop-color=\"#FF7B79\"/>\n <stop offset=\"1\" stop-color=\"#FF7777\"/>\n </linearGradient>\n <linearGradient id=\"paint2_linear_1281_4127\" x1=\"29.888\" y1=\"53.8755\" x2=\"29.888\" y2=\"48.2632\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FFE7D8\"/>\n <stop offset=\"0.29\" stop-color=\"#FABDC9\"/>\n <stop offset=\"0.59\" stop-color=\"#F597BB\"/>\n <stop offset=\"0.84\" stop-color=\"#F280B3\"/>\n <stop offset=\"0.99\" stop-color=\"#F177B0\"/>\n </linearGradient>\n <linearGradient id=\"paint3_linear_1281_4127\" x1=\"30.8683\" y1=\"53.6937\" x2=\"30.8683\" y2=\"50.4636\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FFE7D8\"/>\n <stop offset=\"0.99\" stop-color=\"#CE77F1\"/>\n </linearGradient>\n <linearGradient id=\"paint4_linear_1281_4127\" x1=\"58.9759\" y1=\"57.2504\" x2=\"58.9759\" y2=\"46.5708\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FFB09A\"/>\n <stop offset=\"0.21\" stop-color=\"#FF9B8D\"/>\n <stop offset=\"0.47\" stop-color=\"#FF8781\"/>\n <stop offset=\"0.74\" stop-color=\"#FF7B79\"/>\n <stop offset=\"1\" stop-color=\"#FF7777\"/>\n </linearGradient>\n <linearGradient id=\"paint5_linear_1281_4127\" x1=\"58.845\" y1=\"53.8755\" x2=\"58.845\" y2=\"48.2632\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FFE7D8\"/>\n <stop offset=\"0.29\" stop-color=\"#FABDC9\"/>\n <stop offset=\"0.59\" stop-color=\"#F597BB\"/>\n <stop offset=\"0.84\" stop-color=\"#F280B3\"/>\n <stop offset=\"0.99\" stop-color=\"#F177B0\"/>\n </linearGradient>\n <linearGradient id=\"paint6_linear_1281_4127\" x1=\"54.5402\" y1=\"54.6965\" x2=\"59.1672\" y2=\"54.6965\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FFE7D8\"/>\n <stop offset=\"0.29\" stop-color=\"#FABDC9\"/>\n <stop offset=\"0.59\" stop-color=\"#F597BB\"/>\n <stop offset=\"0.84\" stop-color=\"#F280B3\"/>\n <stop offset=\"0.99\" stop-color=\"#F177B0\"/>\n </linearGradient>\n <linearGradient id=\"paint7_linear_1281_4127\" x1=\"44.195\" y1=\"75.4635\" x2=\"44.195\" y2=\"81.4965\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#151F72\"/>\n <stop offset=\"0.19\" stop-color=\"#151F72\"/>\n <stop offset=\"0.54\" stop-color=\"#7FCBF5\"/>\n <stop offset=\"0.82\" stop-color=\"#C574EC\"/>\n <stop offset=\"0.99\" stop-color=\"#FBD1EE\"/>\n </linearGradient>\n <linearGradient id=\"paint8_linear_1281_4127\" x1=\"30.0589\" y1=\"51.0693\" x2=\"58.3379\" y2=\"51.0693\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#FFB09A\"/>\n <stop offset=\"0.06\" stop-color=\"#FF9B89\"/>\n <stop offset=\"0.13\" stop-color=\"#FF8A7B\"/>\n <stop offset=\"0.23\" stop-color=\"#FF7F71\"/>\n <stop offset=\"0.36\" stop-color=\"#FF786C\"/>\n <stop offset=\"0.71\" stop-color=\"#FF766A\"/>\n </linearGradient>\n </defs>\n</svg>`;\n}\n\nfunction backDocumentIcon() {\n return `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"182\" height=\"108\" viewBox=\"0 0 182 108\" fill=\"none\">\n <path d=\"M143 68C143 65.7909 144.791 64 147 64H164C166.209 64 168 65.7909 168 68V89C168 91.2091 166.209 93 164 93H147C144.791 93 143 91.2091 143 89V68Z\" fill=\"#F6C969\"/>\n <g filter=\"url(#filter0_d_1281_4284)\">\n <mask id=\"path-2-inside-1_1281_4284\" fill=\"white\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M18 0C10.268 0 4 6.26801 4 14V86C4 93.732 10.268 100 18 100H164C171.732 100 178 93.732 178 86V14C178 6.26801 171.732 0 164 0H18ZM148 67C145.791 67 144 68.7909 144 71V85C144 87.2091 145.791 89 148 89H162C164.209 89 166 87.2091 166 85V71C166 68.7909 164.209 67 162 67H148Z\"/>\n </mask>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M18 0C10.268 0 4 6.26801 4 14V86C4 93.732 10.268 100 18 100H164C171.732 100 178 93.732 178 86V14C178 6.26801 171.732 0 164 0H18ZM148 67C145.791 67 144 68.7909 144 71V85C144 87.2091 145.791 89 148 89H162C164.209 89 166 87.2091 166 85V71C166 68.7909 164.209 67 162 67H148Z\" fill=\"#F9F0E7\"/>\n <path d=\"M5.5 14C5.5 7.09644 11.0964 1.5 18 1.5V-1.5C9.43959 -1.5 2.5 5.43959 2.5 14H5.5ZM5.5 86V14H2.5V86H5.5ZM18 98.5C11.0964 98.5 5.5 92.9036 5.5 86H2.5C2.5 94.5604 9.43959 101.5 18 101.5V98.5ZM164 98.5H18V101.5H164V98.5ZM176.5 86C176.5 92.9036 170.904 98.5 164 98.5V101.5C172.56 101.5 179.5 94.5604 179.5 86H176.5ZM176.5 14V86H179.5V14H176.5ZM164 1.5C170.904 1.5 176.5 7.09644 176.5 14H179.5C179.5 5.43959 172.56 -1.5 164 -1.5V1.5ZM18 1.5H164V-1.5H18V1.5ZM145.5 71C145.5 69.6193 146.619 68.5 148 68.5V65.5C144.962 65.5 142.5 67.9624 142.5 71H145.5ZM145.5 85V71H142.5V85H145.5ZM148 87.5C146.619 87.5 145.5 86.3807 145.5 85H142.5C142.5 88.0376 144.962 90.5 148 90.5V87.5ZM162 87.5H148V90.5H162V87.5ZM164.5 85C164.5 86.3807 163.381 87.5 162 87.5V90.5C165.038 90.5 167.5 88.0376 167.5 85H164.5ZM164.5 71V85H167.5V71H164.5ZM162 68.5C163.381 68.5 164.5 69.6193 164.5 71H167.5C167.5 67.9624 165.038 65.5 162 65.5V68.5ZM148 68.5H162V65.5H148V68.5Z\" fill=\"#001096\" mask=\"url(#path-2-inside-1_1281_4284)\"/>\n </g>\n <rect x=\"134\" y=\"10\" width=\"3\" height=\"9\" rx=\"0.5\" fill=\"#DBDBC4\"/>\n <rect x=\"148.733\" y=\"10\" width=\"2\" height=\"9\" rx=\"0.5\" fill=\"#DBDBC4\"/>\n <rect x=\"154\" y=\"10\" width=\"2\" height=\"9\" rx=\"0.5\" fill=\"#DBDBC4\"/>\n <rect x=\"166\" y=\"10\" width=\"1.3\" height=\"9\" rx=\"0.5\" fill=\"#DBDBC4\"/>\n <rect x=\"157\" y=\"10\" width=\"2\" height=\"9\" rx=\"0.5\" fill=\"#DBDBC4\"/>\n <rect x=\"141.8\" y=\"10\" width=\"5\" height=\"9\" rx=\"0.5\" fill=\"#DBDBC4\"/>\n <rect x=\"161\" y=\"10\" width=\"4\" height=\"9\" rx=\"0.5\" fill=\"#DBDBC4\"/>\n <rect x=\"137.767\" y=\"10\" width=\"1\" height=\"9\" rx=\"0.5\" fill=\"#DBDBC4\"/>\n <rect x=\"151.2\" y=\"10\" width=\"1\" height=\"9\" rx=\"0.5\" fill=\"#DBDBC4\"/>\n <rect x=\"20.25\" y=\"32.25\" width=\"98.5\" height=\"0.5\" rx=\"0.25\" fill=\"#2D2B2A\" stroke=\"#2D2B2A\" stroke-width=\"0.5\"/>\n <rect x=\"20.25\" y=\"41.75\" width=\"98.5\" height=\"0.5\" rx=\"0.25\" fill=\"#2D2B2A\" stroke=\"#2D2B2A\" stroke-width=\"0.5\"/>\n <rect x=\"20.25\" y=\"51.25\" width=\"49.5\" height=\"0.5\" rx=\"0.25\" fill=\"#2D2B2A\" stroke=\"#2D2B2A\" stroke-width=\"0.5\"/>\n <rect x=\"20.25\" y=\"75.25\" width=\"49.5\" height=\"0.5\" rx=\"0.25\" fill=\"#2D2B2A\" stroke=\"#2D2B2A\" stroke-width=\"0.5\"/>\n <rect x=\"20.25\" y=\"84.75\" width=\"49.5\" height=\"0.5\" rx=\"0.25\" fill=\"#2D2B2A\" stroke=\"#2D2B2A\" stroke-width=\"0.5\"/>\n <defs>\n <filter id=\"filter0_d_1281_4284\" x=\"0\" y=\"0\" width=\"182\" height=\"108\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/>\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/>\n <feOffset dy=\"4\"/>\n <feGaussianBlur stdDeviation=\"2\"/>\n <feComposite in2=\"hardAlpha\" operator=\"out\"/>\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\"/>\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_1281_4284\"/>\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_1281_4284\" result=\"shape\"/>\n </filter>\n </defs>\n</svg>`;\n}\n\nfunction templateString() {\n return `\n <div id=\"document-capture-instructions-screen\" class=\"flow center\">\n <section className=\"main\">\n <smileid-navigation theme-color='${this.themeColor}' ${this.showNavigation ? 'show-navigation' : ''} ${this.hideBack ? 'hide-back' : ''}></smileid-navigation>\n <header>\n ${this.isFrontOfId ? frontDocumentIcon() : backDocumentIcon()}\n <h1 class='text-2xl title-color font-bold'>${this.title}</h1>\n <p class=\"description text-sm font-normal\">\n We'll use it to verify your identity.\n </p>\n <p class=\"description padding-bottom-2\">\n Please follow the instructions below.\n </p>\n </header>\n <div class=\"flow instructions-wrapper\">\n <div class=\"instructions\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"38\"\n height=\"38\"\n viewBox=\"0 0 38 38\"\n fill=\"none\"\n >\n <g clip-path=\"url(#clip0_604_670)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M31.8569 19C31.8569 21.5428 31.1029 24.0285 29.6902 26.1428C28.2774 28.2571 26.2695 29.9049 23.9203 30.878C21.571 31.8511 18.986 32.1057 16.492 31.6096C13.9981 31.1136 11.7072 29.8891 9.90919 28.091C8.11115 26.293 6.88668 24.0022 6.3906 21.5082C5.89452 19.0143 6.14913 16.4292 7.12222 14.08C8.09531 11.7307 9.74318 9.72279 11.8574 8.31008C13.9717 6.89737 16.4574 6.14334 19.0002 6.14334C22.41 6.14334 25.6802 7.49788 28.0913 9.90897C30.5024 12.3201 31.8569 15.5902 31.8569 19Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M19.6064 4.5419H18.394L18.9912 0L19.6064 4.5419Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M26.7541 6.77667L25.7046 6.17048L28.4913 2.54239L26.7541 6.77667Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M31.8298 12.2957L31.2236 11.2462L35.4489 9.49097L31.8298 12.2957Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M33.4674 19.6062V18.3938L38.0003 18.9909L33.4674 19.6062Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M31.2236 26.7538L31.8298 25.7043L35.4579 28.491L31.2236 26.7538Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M25.7046 31.8295L26.7541 31.2233L28.5094 35.4486L25.7046 31.8295Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M18.394 33.4671H19.6064L19.0093 38L18.394 33.4671Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M11.2464 31.2233L12.2959 31.8295L9.50928 35.4576L11.2464 31.2233Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M6.17068 25.7043L6.77687 26.7538L2.55164 28.509L6.17068 25.7043Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M4.54215 18.3938V19.6062L0.000244141 19.009L4.54215 18.3938Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M6.77689 11.2462L6.1707 12.2957L2.5426 9.50903L6.77689 11.2462Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M12.296 6.17047L11.2464 6.77666L9.49121 2.55142L12.296 6.17047Z\"\n fill=\"${this.themeColor}\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_604_670\">\n <rect\n width=\"38\"\n height=\"38\"\n fill=\"white\"\n transform=\"translate(0.000244141)\"\n />\n </clipPath>\n </defs>\n </svg>\n <div class=\"instruction\">\n <p class=\"instruction-header font-bold text-base\">Good Light</p>\n <p class=\"instruction-body text-xs font-medium\">\n Make sure the image is taken in a well-lit environment where the ID document is easy to read.\n </p>\n </div>\n </div>\n <div class=\"instructions\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"38\"\n height=\"36\"\n viewBox=\"0 0 38 36\"\n fill=\"none\"\n >\n <g clip-path=\"url(#clip0_604_672)\">\n <path\n d=\"M36.7211 12.6391H1.22537C1.06275 13.0909 0.910962 13.5427 0.77002 14.0055H37.1764C37.0463 13.5427 36.8946 13.0909 36.7211 12.6391Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M37.3716 14.7438H0.574875C0.466458 15.1625 0.379725 15.5813 0.303833 16.011H37.6426C37.5667 15.5813 37.48 15.1625 37.3716 14.7438Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M37.7727 16.8485H0.173703C0.119494 17.2342 0.0869685 17.6198 0.0544434 18.0055H37.892C37.8594 17.6198 37.8269 17.2342 37.7727 16.8485Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M37.9462 19.4711C37.9462 19.2948 37.9462 19.1295 37.9353 18.9532H0.0110865C0.000244802 19.1295 0.000244141 19.2948 0.000244141 19.4711C0.000244141 19.6474 0.000244802 19.8347 0.0110865 20.011H37.9353C37.9462 19.8347 37.9462 19.6474 37.9462 19.4711Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M37.8811 21.0579H0.0653076C0.086991 21.3774 0.119515 21.697 0.162882 22.0055H37.7836C37.8269 21.697 37.8595 21.3774 37.8811 21.0579Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M37.5992 23.1625H0.347168C0.401376 23.449 0.466426 23.7245 0.531477 24H37.4149C37.48 23.7245 37.545 23.449 37.5992 23.1625Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M37.0788 25.2672H0.867554C0.954287 25.5096 1.03018 25.7631 1.11691 26.0055H36.8295C36.9162 25.7631 37.0029 25.5096 37.0788 25.2672Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M36.2874 27.3719H1.65906L1.95178 28H35.9947L36.2874 27.3719Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M35.2032 29.4766H2.75403C2.84799 29.6529 2.95641 29.8292 3.07928 30.0055H34.878L35.2032 29.4766Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M33.7396 31.5813H4.20679L4.54288 32H33.4035L33.7396 31.5813Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M31.7989 33.6859H6.14746L6.49439 33.9945H31.452L31.7989 33.6859Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M29.0993 35.7906H8.84705L9.18314 36H28.7632L29.0993 35.7906Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M34.2384 8.01102C33.8914 7.53719 33.5228 7.07438 33.1325 6.63361C29.8258 2.60055 24.6977 0 18.9407 0C12.891 0 7.53525 2.86501 4.25021 7.26171H4.28274C4.08759 7.51515 3.89244 7.75757 3.70813 8.01102H34.2384Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M34.531 8.44077H3.41533C3.06839 8.94765 2.74314 9.47658 2.43958 10.0165H35.5068C35.2124 9.47215 34.8866 8.94597 34.531 8.44077Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M35.7887 10.5344H2.15776C1.9084 11.0193 1.68072 11.5151 1.47473 12.011H36.4717C36.2657 11.5151 36.0381 11.0193 35.7887 10.5344Z\"\n fill=\"${this.themeColor}\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_604_672\">\n <rect\n width=\"37.9459\"\n height=\"36\"\n fill=\"white\"\n transform=\"translate(0.000244141)\"\n />\n </clipPath>\n </defs>\n </svg>\n <div>\n <p class=\"instruction-header font-bold text-base\">Clear Image</p>\n <p class=\"instruction-body text-xs font-medium\">\n Hold your camera steady so the words on the ID are not blurry.\n </p>\n </div>\n </div>\n <div id=\"error\" class='color-red'>\n </div>\n </div>\n </section>\n <section className=\"footer\">\n <div class='flow'>\n ${\n this.supportBothCaptureModes || this.documentCaptureModes === 'camera'\n ? `\n <button data-variant='solid full-width' class='button' type='button' id='take-photo'>\n Take Photo\n </button>\n `\n : ''\n }\n ${\n this.supportBothCaptureModes || this.documentCaptureModes === 'upload'\n ? `\n <label id='upload-photo-label' data-variant='${\n this.supportBothCaptureModes ? 'outline' : 'solid'\n }' class='button'>\n <input type='file' hidden onclick='this.value=null;' id='upload-photo' name='document' accept='image/png, image/jpeg' />\n <span>Upload Photo</span>\n </label>\n `\n : ''\n }\n</div>\n${this.hideAttribution ? '' : '<powered-by-smile-id></powered-by-smile-id>'}\n </section>\n </div>\n ${styles(this.themeColor)}\n `;\n}\n\nclass DocumentInstruction extends HTMLElement {\n constructor() {\n super();\n this.templateString = templateString.bind(this);\n this.render = () => this.templateString();\n\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n const template = document.createElement('template');\n template.innerHTML = this.render();\n\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n\n this.navigation = this.shadowRoot.querySelector('smileid-navigation');\n this.takeDocumentPhotoButton = this.shadowRoot.querySelector('#take-photo');\n this.uploadDocumentPhotoButton =\n this.shadowRoot.querySelector('#upload-photo');\n\n this.navigation.addEventListener('navigation.back', () => {\n this.handleBackEvents();\n });\n\n this.navigation.addEventListener('navigation.close', () => {\n this.handleCloseEvents();\n });\n\n if (this.takeDocumentPhotoButton) {\n this.takeDocumentPhotoButton.addEventListener('click', () => {\n this.dispatchEvent(\n new CustomEvent('document-capture-instructions.capture'),\n );\n });\n }\n\n if (this.uploadDocumentPhotoButton) {\n this.uploadDocumentPhotoButton.addEventListener(\n 'change',\n async (event) => {\n this.shadowRoot.querySelector('#error').innerHTML = '';\n try {\n const { files } = event.target;\n\n // validate file, and convert file to data url\n const fileData = await SmartFileUpload.retrieve(files);\n\n this.dispatchEvent(\n new CustomEvent('document-capture-instructions.upload', {\n detail: { image: fileData, previewImage: fileData },\n }),\n );\n } catch (error) {\n this.shadowRoot.querySelector('#error').innerHTML = error.message;\n }\n },\n );\n }\n }\n\n get hideBack() {\n return this.hasAttribute('hide-back-to-host');\n }\n\n get showNavigation() {\n return this.hasAttribute('show-navigation');\n }\n\n get themeColor() {\n return this.getAttribute('theme-color') || '#001096';\n }\n\n get hideAttribution() {\n return this.hasAttribute('hide-attribution');\n }\n\n get documentCaptureModes() {\n return this.getAttribute('document-capture-modes') || 'camera';\n }\n\n get supportBothCaptureModes() {\n const value = this.documentCaptureModes;\n return value.includes('camera') && value.includes('upload');\n }\n\n get title() {\n return this.getAttribute('title') || 'Submit Front of ID';\n }\n\n get sideOfId() {\n return (this.getAttribute('side-of-id') || 'front').toLowerCase();\n }\n\n get isFrontOfId() {\n return this.sideOfId === 'front';\n }\n\n get isBackOfId() {\n return !this.isFrontOfId;\n }\n\n handleBackEvents() {\n this.dispatchEvent(\n new CustomEvent('document-capture-instructions.cancelled'),\n );\n }\n\n handleCloseEvents() {\n this.dispatchEvent(new CustomEvent('document-capture-instructions.close'));\n }\n}\n\nif (\n 'customElements' in window &&\n !customElements.get('document-capture-instructions')\n) {\n window.customElements.define(\n 'document-capture-instructions',\n DocumentInstruction,\n );\n}\n\nexport default DocumentInstruction;\n", "{\n \"name\": \"@smileid/web-components\",\n \"version\": \"2.0.3\",\n \"private\": \"true\",\n \"main\": \"index.js\",\n \"exports\": {\n \".\": \"./index.js\",\n \"./combobox\": \"./src/components/combobox/src/index.js\",\n \"./document-capture\": \"./src/components/document/src/index.js\",\n \"./end-user-consent\": \"./src/components/end-user-consent/src/index.js\",\n \"./navigation\": \"./src/components/navigation/src/index.js\",\n \"./selfie-capture\": \"./src/components/selfie/src/index.js\",\n \"./signature-pad\": \"./src/components/signature-pad/src/index.js\",\n \"./totp-consent\": \"./src/components/totp-consent/src/index.js\",\n \"./smart-camera-web\": \"./src/components/smart-camera-web/src/SmartCameraWeb.js\"\n },\n \"files\": [\n \"./src/components/\",\n \"./src/domain/\",\n \"./src/styles/\",\n \"./README.md\",\n \"index.js\",\n \"package.json\"\n ],\n \"scripts\": {\n \"build\": \"cross-env NODE_ENV=production node esbuild.js\",\n \"build:dev\": \"cross-env NODE_ENV=development node esbuild.js\",\n \"clean\": \"rm -rf build dist\",\n \"prepublishOnly\": \"npm run build\",\n \"lint:fix\": \"eslint . --ext .js --fix\",\n \"lint:html\": \"npx prettier --write $(git ls-files '*.html')\",\n \"lint\": \"eslint . --ext .js\",\n \"start\": \"npm run build && npx serve -p 8000 dist\",\n \"test\": \"npx cypress run\"\n },\n \"description\": \"A collection of Web Components used by SmileID\",\n \"keywords\": [\n \"Web Components\"\n ],\n \"type\": \"module\",\n \"author\": \"SmileID <support@usesmileid.com> (https://usesmileid.com)\",\n \"dependencies\": {\n \"signature_pad\": \"^5.0.2\",\n \"validate.js\": \"^0.13.1\"\n },\n \"devDependencies\": {\n \"cross-env\": \"^7.0.3\",\n \"cypress\": \"^13.15.0\",\n \"esbuild\": \"^0.24.0\",\n \"eslint\": \"^8.57.0\",\n \"eslint-config-airbnb-base\": \"^15.0.0\",\n \"eslint-config-prettier\": \"^9.1.0\",\n \"eslint-plugin-cypress\": \"^3.3.0\",\n \"eslint-plugin-import\": \"^2.29.1\",\n \"eslint-plugin-jest\": \"^28.8.3\",\n \"eslint-plugin-prettier\": \"^5.2.1\",\n \"prettier\": \"^3.3.3\"\n }\n}\n", "import { IMAGE_TYPE } from '../../../domain/constants/src/Constants';\nimport styles from '../../../styles/src/styles';\nimport SmartCamera from '../../../domain/camera/src/SmartCamera';\n\nimport './document-capture';\nimport './document-capture-review';\nimport './document-capture-instructions';\nimport packageJson from '../../../../package.json';\n\nconst COMPONENTS_VERSION = packageJson.version;\n\nconst smartCameraWeb = document.querySelector('smart-camera-web');\n\nasync function getPermissions(captureScreen) {\n try {\n const stream = await SmartCamera.getMedia({\n audio: false,\n video: SmartCamera.environmentOptions,\n });\n const devices = await navigator.mediaDevices.enumerateDevices();\n const videoDevice = devices.find(\n (device) =>\n device.kind === 'videoinput' &&\n stream.getVideoTracks()[0].getSettings().deviceId === device.deviceId,\n );\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.camera-name', {\n detail: { cameraName: videoDevice?.label },\n }),\n );\n captureScreen.removeAttribute('data-camera-error');\n captureScreen.setAttribute('data-camera-ready', true);\n } catch (error) {\n captureScreen.removeAttribute('data-camera-ready');\n captureScreen.setAttribute(\n 'data-camera-error',\n SmartCamera.handleCameraError(error),\n );\n }\n}\n\nclass DocumentCaptureScreens extends HTMLElement {\n constructor() {\n super();\n this.activeScreen = null;\n this.smartCameraWeb = this.closest('smart-camera-web');\n smartCameraWeb?.dispatchEvent(new CustomEvent('metadata.initialize'));\n }\n\n connectedCallback() {\n this.innerHTML = `\n ${styles(this.themeColor)}\n <div>\n <document-capture-instructions theme-color='${this.themeColor}' id='document-capture-instructions-front' ${this.title}\n ${this.documentCaptureModes} ${this.showNavigation} ${this.hideInstructions ? 'hidden' : ''}\n ${this.hideAttribution}\n ></document-capture-instructions>\n <document-capture id='document-capture-front' side-of-id='Front'\n ${this.title} ${this.showNavigation} ${this.hideInstructions ? '' : 'hidden'} ${this.hideAttribution}\n ${this.documentCaptureModes} ${this.documentType} theme-color='${this.themeColor}'\n ></document-capture>\n <document-capture-instructions id='document-capture-instructions-back' side-of-id='Back' title='Submit Back of ID'\n ${this.documentCaptureModes} ${this.showNavigation} theme-color='${this.themeColor}' ${this.hideAttribution} hidden\n ></document-capture-instructions>\n <document-capture id='document-capture-back' side-of-id='Back' ${this.title} ${this.showNavigation}\n ${this.documentCaptureModes} theme-color='${this.themeColor}' ${this.hideAttribution}\n hidden \n ></document-capture>\n <document-capture-review id='front-of-document-capture-review' theme-color='${this.themeColor}' ${this.hideAttribution} hidden></document-capture-review>\n <document-capture-review id='back-of-document-capture-review' theme-color='${this.themeColor}' ${this.hideAttribution} hidden></document-capture-review>\n </div>\n `;\n\n this._data = {\n images: [],\n meta: {\n libraryVersion: COMPONENTS_VERSION,\n },\n };\n\n this.documentInstruction = this.querySelector(\n 'document-capture-instructions',\n );\n this.documentInstructionBack = this.querySelector(\n '#document-capture-instructions-back',\n );\n this.idCapture = this.querySelector('#document-capture-front');\n this.idReview = this.querySelector('#front-of-document-capture-review');\n this.idCaptureBack = this.querySelector('#document-capture-back');\n this.backOfIdReview = this.querySelector(\n '#back-of-document-capture-review',\n );\n this.thankYouScreen = this.querySelector('thank-you');\n\n if (this.hideInstructions) {\n getPermissions(this.idCapture);\n this.setActiveScreen(this.idCapture);\n } else {\n this.setActiveScreen(this.documentInstruction);\n }\n\n this.setUpEventListeners();\n }\n\n disconnectedCallback() {\n SmartCamera.stopMedia();\n if (this.activeScreen) {\n this.activeScreen.removeAttribute('hidden');\n }\n this.activeScreen = null;\n this.innerHTML = '';\n }\n\n setUpEventListeners() {\n this.documentInstruction.addEventListener(\n 'document-capture-instructions.cancelled',\n () => {\n this.handleBackEvents();\n },\n );\n\n this.documentInstruction.addEventListener(\n 'document-capture-instructions.capture',\n async () => {\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.document-front-capture-start'),\n );\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.document-front-origin', {\n detail: { imageOrigin: 'camera_manual_capture' },\n }),\n );\n this.setActiveScreen(this.idCapture);\n await getPermissions(this.idCapture);\n },\n );\n this.documentInstruction.addEventListener(\n 'document-capture-instructions.upload',\n async (event) => {\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.document-front-origin', {\n detail: { imageOrigin: 'gallery' },\n }),\n );\n this.idReview.setAttribute('data-image', event.detail.previewImage);\n this._data.images.push({\n image: event.detail.image.split(',')[1],\n image_type_id: IMAGE_TYPE.ID_CARD_IMAGE_BASE64,\n });\n this.setActiveScreen(this.idReview);\n },\n );\n\n this.idCapture.addEventListener('document-capture.publish', (event) => {\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.document-front-capture-end'),\n );\n this.idReview.setAttribute('data-image', event.detail.previewImage);\n this._data.images.push({\n image: event.detail.image.split(',')[1],\n image_type_id: IMAGE_TYPE.ID_CARD_IMAGE_BASE64,\n });\n SmartCamera.stopMedia();\n this.setActiveScreen(this.idReview);\n });\n\n this.idCapture.addEventListener('document-capture.cancelled', () => {\n if (this.hideInstructions) {\n this.handleBackEvents();\n } else {\n this.setActiveScreen(this.documentInstruction);\n }\n });\n\n this.idReview.addEventListener(\n 'document-capture-review.rejected',\n async () => {\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.document-front-capture-retry'),\n );\n this.idReview.removeAttribute('data-image');\n this._data.images.pop();\n if (this.hideInstructions) {\n this.setActiveScreen(this.idCapture);\n await getPermissions(this.idCapture);\n } else {\n this.setActiveScreen(this.documentInstruction);\n }\n },\n );\n\n this.idReview.addEventListener(\n 'document-capture-review.accepted',\n async () => {\n if (this.hideBackOfId) {\n this._publishSelectedImages();\n } else if (this.hideInstructions) {\n this.setActiveScreen(this.idCaptureBack);\n await getPermissions(this.idCaptureBack);\n } else {\n this.setActiveScreen(this.documentInstructionBack);\n }\n },\n );\n\n this.documentInstructionBack.addEventListener(\n 'document-capture-instructions.capture',\n async () => {\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.document-back-capture-start'),\n );\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.document-back-origin', {\n detail: { imageOrigin: 'camera_manual_capture' },\n }),\n );\n this.setActiveScreen(this.idCaptureBack);\n await getPermissions(this.idCaptureBack);\n },\n );\n\n this.documentInstructionBack.addEventListener(\n 'document-capture-instructions.cancelled',\n async () => {\n this.idReview.removeAttribute('data-image');\n this._data.images.pop();\n if (this.hideInstructions) {\n this.setActiveScreen(this.idCapture);\n await getPermissions(this.idCapture);\n } else {\n this.setActiveScreen(this.documentInstruction);\n }\n },\n );\n\n this.documentInstructionBack.addEventListener(\n 'document-capture-instructions.upload',\n async (event) => {\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.document-back-origin', {\n detail: { imageOrigin: 'gallery' },\n }),\n );\n this.backOfIdReview.setAttribute('data-image', event.detail.image);\n this._data.images.push({\n image: event.detail.image.split(',')[1],\n image_type_id: IMAGE_TYPE.ID_CARD_BACK_IMAGE_BASE64,\n });\n this.setActiveScreen(this.backOfIdReview);\n },\n );\n this.idCaptureBack.addEventListener('document-capture.publish', (event) => {\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.document-back-capture-end'),\n );\n this.backOfIdReview.setAttribute('data-image', event.detail.previewImage);\n this._data.images.push({\n image: event.detail.image.split(',')[1],\n image_type_id: IMAGE_TYPE.ID_CARD_BACK_IMAGE_BASE64,\n });\n this.setActiveScreen(this.backOfIdReview);\n SmartCamera.stopMedia();\n });\n\n this.idCaptureBack.addEventListener(\n 'document-capture.cancelled',\n async () => {\n if (this.hideInstructions) {\n this.setActiveScreen(this.idCapture);\n await getPermissions(this.idCapture);\n } else {\n this.setActiveScreen(this.documentInstructionBack);\n }\n },\n );\n\n this.backOfIdReview.addEventListener(\n 'document-capture-review.rejected',\n async () => {\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.document-back-capture-retry'),\n );\n this.backOfIdReview.removeAttribute('data-image');\n this._data.images.pop();\n if (this.hideInstructions) {\n this.setActiveScreen(this.idCaptureBack);\n await getPermissions(this.idCaptureBack);\n } else {\n this.setActiveScreen(this.documentInstructionBack);\n }\n },\n );\n\n this.backOfIdReview.addEventListener(\n 'document-capture-review.accepted',\n () => {\n this._publishSelectedImages();\n },\n );\n\n const screens = [\n this.documentInstruction,\n this.idCapture,\n this.documentInstructionBack,\n this.idCaptureBack,\n this.idReview,\n this.backOfIdReview,\n ];\n\n screens.forEach((screen) => {\n screen.addEventListener(`${screen.nodeName.toLowerCase()}.close`, () =>\n this.handleCloseEvents(),\n );\n });\n }\n\n _publishSelectedImages() {\n this.dispatchEvent(\n new CustomEvent('document-capture-screens.publish', {\n detail: this._data,\n }),\n );\n }\n\n get hideInstructions() {\n return this.hasAttribute('hide-instructions');\n }\n\n get hideBackOfId() {\n return this.hasAttribute('hide-back-of-id');\n }\n\n get showNavigation() {\n return this.hasAttribute('show-navigation') ? 'show-navigation' : '';\n }\n\n get title() {\n return this.hasAttribute('title')\n ? `title=${this.getAttribute('title')}`\n : '';\n }\n\n get documentCaptureModes() {\n return this.hasAttribute('document-capture-modes')\n ? `document-capture-modes='${this.getAttribute('document-capture-modes')}'`\n : '';\n }\n\n get documentType() {\n return this.hasAttribute('document-type')\n ? `document-type='${this.getAttribute('document-type')}'`\n : '';\n }\n\n get hideAttribution() {\n return this.hasAttribute('hide-attribution') ? 'hide-attribution' : '';\n }\n\n get themeColor() {\n return this.getAttribute('theme-color') || '#001096';\n }\n\n handleBackEvents() {\n this.dispatchEvent(new CustomEvent('document-capture-screens.cancelled'));\n }\n\n handleCloseEvents() {\n this.dispatchEvent(new CustomEvent('document-capture-screens.close'));\n }\n\n setActiveScreen(screen) {\n this.activeScreen?.setAttribute('hidden', '');\n screen.removeAttribute('hidden');\n this.activeScreen = screen;\n }\n\n static get observedAttributes() {\n return [\n 'document-capture-modes',\n 'document-type',\n 'hide-back-to-host',\n 'show-navigation',\n 'hide-back-of-id',\n ];\n }\n\n attributeChangedCallback(name) {\n switch (name) {\n case 'document-capture-modes':\n case 'document-type':\n case 'hide-back-of-id':\n case 'hide-back-to-host':\n case 'show-navigation':\n this.connectedCallback();\n break;\n default:\n break;\n }\n }\n}\n\nif (\n 'customElements' in window &&\n !customElements.get('document-capture-screens')\n) {\n customElements.define('document-capture-screens', DocumentCaptureScreens);\n}\n\nexport default DocumentCaptureScreens;\n", "import { IMAGE_TYPE } from '../../../../domain/constants/src/Constants';\nimport SmartCamera from '../../../../domain/camera/src/SmartCamera';\nimport styles from '../../../../styles/src/styles';\nimport packageJson from '../../../../../package.json';\nimport '../../../navigation/src';\n\nconst COMPONENTS_VERSION = packageJson.version;\n\nconst DEFAULT_NO_OF_LIVENESS_FRAMES = 8;\n\nfunction hasMoreThanNColors(data, n = 16) {\n const colors = new Set();\n for (let i = 0; i < Math.min(data.length, 10000); i += 4) {\n // eslint-disable-next-line no-bitwise\n colors.add((data[i] << 16) | (data[i + 1] << 8) | data[i + 2]);\n if (colors.size > n) {\n return true;\n }\n }\n return false;\n}\n\nfunction getLivenessFramesIndices(\n totalNoOfFrames,\n numberOfFramesRequired = DEFAULT_NO_OF_LIVENESS_FRAMES,\n) {\n const selectedFrames = [];\n\n if (totalNoOfFrames < numberOfFramesRequired) {\n throw new Error(\n 'SmartCameraWeb: Minimum required no of frames is ',\n numberOfFramesRequired,\n );\n }\n\n const frameDivisor = numberOfFramesRequired - 1;\n const frameInterval = Math.floor(totalNoOfFrames / frameDivisor);\n\n // NOTE: when we have satisfied our required 8 frames, but have good\n // candidates, we need to start replacing from the second frame\n let replacementFrameIndex = 1;\n\n for (let i = 0; i < totalNoOfFrames; i += frameInterval) {\n if (selectedFrames.length < 8) {\n selectedFrames.push(i);\n } else {\n // ACTION: replace frame, then sort selectedframes\n selectedFrames[replacementFrameIndex] = i;\n selectedFrames.sort((a, b) => a - b);\n\n // ACTION: update replacement frame index\n replacementFrameIndex += 1;\n }\n }\n\n // INFO: if we don't satisfy our requirement, we add the last index\n const lastFrameIndex = totalNoOfFrames - 1;\n\n if (selectedFrames.length < 8 && !selectedFrames.includes(lastFrameIndex)) {\n selectedFrames.push(lastFrameIndex);\n }\n\n return selectedFrames;\n}\n\nfunction templateString() {\n return `\n ${styles(this.themeColor)}\n <style>\n :host {\n --theme-color: ${this.themeColor || '#001096'};\n --color-active: #001096;\n --color-default: #2D2B2A;\n --color-disabled: #848282;\n }\n\n * {\n font-family: 'DM Sans', sans-serif;\n }\n\n [hidden] {\n display: none !important;\n }\n\n [disabled] {\n cursor: not-allowed !important;\n filter: grayscale(75%);\n }\n\n .visually-hidden {\n border: 0;\n clip: rect(1px 1px 1px 1px);\n clip: rect(1px, 1px, 1px, 1px);\n height: auto;\n margin: 0;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n }\n\n img {\n height: auto;\n max-width: 100%;\n transform: scaleX(-1);\n }\n\n video {\n background-color: black;\n }\n\n a {\n color: currentColor;\n text-decoration: none;\n }\n\n svg {\n max-width: 100%;\n }\n\n .color-gray {\n color: #797979;\n }\n\n .color-red {\n color: red;\n }\n\n .color-richblue {\n color: #4E6577;\n }\n\n .color-richblue-shade {\n color: #0E1B42;\n }\n\n .color-digital-blue {\n color: #001096 !important;\n }\n\n .color-deep-blue {\n color: #001096;\n }\n\n .title-color {\n color: ${this.themeColor};\n }\n \n .theme-color {\n color: ${this.themeColor};\n }\n\n .center {\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n }\n\n .font-size-small {\n font-size: .75rem;\n }\n\n .font-size-large {\n font-size: 1.5rem;\n }\n\n .text-transform-uppercase {\n text-transform: uppercase;\n }\n\n [id*=-\"screen\"] {\n min-block-size: 100%;\n }\n\n [data-variant~=\"full-width\"] {\n inline-size: 100%;\n }\n\n .flow > * + * {\n margin-top: 1rem;\n }\n\n .button {\n --button-color: ${this.themeColor};\n -webkit-appearance: none;\n appearance: none;\n border-radius: 2.5rem;\n border: 0;\n background-color: transparent;\n color: #fff;\n cursor: pointer;\n display: block;\n font-size: 18px;\n font-weight: 600;\n padding: .75rem 1.5rem;\n text-align: center;\n }\n\n .button:hover,\n .button:focus,\n .button:active {\n --button-color: var(--color-default);\n }\n\n .button:disabled {\n --button-color: var(--color-disabled);\n }\n\n .button[data-variant~='solid'] {\n background-color: var(--button-color);\n border: 2px solid var(--button-color);\n }\n\n .button[data-variant~='outline'] {\n color: var(--button-color);\n border: 2px solid var(--button-color);\n }\n\n .button[data-variant~='ghost'] {\n padding: 0px;\n color: var(--button-color);\n background-color: transparent;\n }\n\n .icon-btn {\n appearance: none;\n background: none;\n border: none;\n color: hsl(0deg 0% 94%);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px 8px;\n }\n .justify-right {\n justify-content: end !important;\n }\n .nav {\n display: flex;\n justify-content: space-between;\n }\n\n .back-wrapper {\n display: flex;\n align-items: center;\n }\n\n .back-button {\n display: block !important;\n }\n .back-button-text {\n font-size: 11px;\n line-height: 11px;\n color: rgb(21, 31, 114);\n }\n .section {\n border-radius: .5rem;\n margin-left: auto;\n margin-right: auto;\n max-width: 35ch;\n padding: 1rem;\n }\n\n .selfie-capture-review-image {\n overflow: hidden;\n aspect-ratio: 1/1;\n }\n\n #review-image {\n scale: 1.75;\n }\n\n @media (max-aspect-ratio: 1/1) {\n #review-image {\n transform: scaleX(-1) translateY(-10%);\n }\n }\n\n .tips,\n .powered-by {\n align-items: center;\n border-radius: .25rem;\n display: flex;\n justify-content: center;\n letter-spacing: .075em;\n }\n\n .powered-by {\n box-shadow: 0px 2.57415px 2.57415px rgba(0, 0, 0, 0.06);\n display: inline-flex;\n font-size: .5rem;\n }\n\n .tips {\n margin-left: auto;\n margin-right: auto;\n max-width: 17rem;\n font-size: 0.875rem;\n font-weight: 600;\n }\n\n .tips > * + *,\n .powered-by > * + * {\n display: inline-block;\n margin-left: .5em;\n }\n\n .powered-by .company {\n color: #18406D;\n font-weight: 700;\n letter-spacing: .15rem;\n }\n\n .logo-mark {\n background-color: #004071;\n display: inline-block;\n padding: .25em .5em;\n }\n\n .logo-mark svg {\n height: auto;\n justify-self: center;\n width: .75em;\n }\n\n .id-video-container.portrait {\n width: 100%;\n position: relative;\n height: calc(200px * 1.4);\n }\n\n .id-video-container.portrait video {\n width: calc(213px + 0.9rem);\n height: 100%;\n position: absolute;\n top: 239px;\n left: 161px;\n padding-bottom: calc((214px * 1.4) / 3);\n padding-top: calc((191px * 1.4) / 3);\n object-fit: cover;\n\n transform: translateX(-50%) translateY(-50%);\n z-index: 1;\n block-size: 100%;\n }\n\n .video-container,\n .id-video-container.landscape {\n position: relative;\n z-index: 1;\n width: 100%;\n }\n\n .video-container video,\n .id-video-container.landscape video {\n left: 50%;\n min-width: auto;\n position: absolute;\n top: calc(50% - 3px);\n transform: translateX(-50%) translateY(50%);\n }\n\n .video-container #smile-cta-box {\n color: #fff;\n width: 100%;\n position: absolute;\n top: 0;\n left: 0;\n padding: 2rem 0;\n opacity: 0;\n transition: opacity 0.5s ease-in-out;\n }\n\n .video-container #smile-cta {\n font-size: 1.2rem;\n font-weight: bold;\n margin-top: 0;\n margin-bottom: 0;\n }\n\n .video-container video {\n min-height: 100%;\n transform: scaleX(-1) translateX(50%) translateY(-50%);\n }\n\n .video-container video.agent-mode {\n min-height: 100%;\n transform: scaleX(1) translateX(-50%) translateY(-50%);\n }\n\n .video-container .video {\n background-color: black;\n position: absolute;\n left: 50%;\n height: calc(100% - 6px);\n clip-path: ellipse(101px 118px);\n }\n\n .id-video-container.landscape {\n min-height: calc((2 * 10rem) + 198px);\n height: auto;\n }\n\n .id-video-container.portrait .image-frame-portrait {\n border-width: 0.9rem;\n border-color: rgba(0, 0, 0, 0.7);\n border-style: solid;\n height: auto;\n position: absolute;\n top: 80px;\n left: 47px;\n z-index: 2;\n width: 200px;\n height: calc(200px * 1.4);\n }\n\n .id-video-container.landscape .image-frame {\n border-width: 10rem 1rem;\n border-color: rgba(0, 0, 0, 0.7);\n border-style: solid;\n height: auto;\n width: 90%;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n }\n\n .id-video-container.landscape video {\n width: 100%;\n transform: translateX(-50%) translateY(-50%);\n z-index: 1;\n height: 100%;\n block-size: 100%;\n }\n\n .id-video-container.landscape img {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n max-width: 90%;\n }\n\n .actions {\n background-color: rgba(0, 0, 0, .7);\n bottom: 0;\n display: flex;\n justify-content: space-between;\n padding: 1rem;\n position: absolute;\n width: 90%;\n z-index: 2;\n }\n\n #back-of-id-camera-screen .id-video-container.portrait .actions,\n #id-camera-screen .id-video-container.portrait .actions {\n top: 145%;\n width: calc(200px * 1.4);\n }\n\n #back-of-id-camera-screen .section.portrait, #id-camera-screen .section.portrait {\n min-height: calc((200px * 1.4) + 260px);\n }\n\n #selfie-capture-screen,\n #back-of-id-entry-screen {\n block-size: 45rem;\n padding-block: 2rem;\n display: flex;\n flex-direction: column;\n max-block-size: 100%;\n max-inline-size: 40ch;\n }\n\n #selfie-capture-screen header p {\n margin-block: 0 !important;\n }\n\n .document-tips {\n margin-block-start: 1.5rem;\n display: flex;\n align-items: center;\n text-align: initial;\n }\n\n .document-tips svg {\n flex-shrink: 0;\n margin-inline-end: 1rem;\n }\n\n .document-tips p {\n margin-block: 0;\n }\n\n .document-tips p:first-of-type {\n font-size; 1.875rem;\n font-weight: bold\n }\n\n [type='file'] {\n display: none;\n }\n\n .document-tips > * + * {\n margin-inline-start; 1em;\n }\n </style>\n <div id='selfie-capture-screen' class='flow center'>\n <smileid-navigation theme-color='${this.themeColor}' ${this.showNavigation ? 'show-navigation' : ''} ${this.hideBack ? 'hide-back' : ''}></smileid-navigation>\n\n <div class='tips'>Fit your head inside the oval frame</div>\n\n <div className=\"error\">\n ${this.cameraError ? `<p class=\"color-red\">${this.cameraError}</p>` : ''}\n </div>\n <div class='section | flow' ${this.cameraError ? 'hidden' : ''}>\n <div class='video-container'>\n <div class='video'>\n </div>\n <svg id=\"image-outline\" width=\"215\" height=\"245\" viewBox=\"0 0 215 245\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M210.981 122.838C210.981 188.699 164.248 241.268 107.55 241.268C50.853 241.268 4.12018 188.699 4.12018 122.838C4.12018 56.9763 50.853 4.40771 107.55 4.40771C164.248 4.40771 210.981 56.9763 210.981 122.838Z\" stroke=\"${this.themeColor}\" stroke-width=\"7.13965\"/>\n </svg>\n <div id=\"smile-cta-box\">\n <div>\n <svg width=\"120\" height=\"120\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"70 70 360 360\" fill=\"currentColor\">\n <path d=\"M354.02,247.69c4.12-12.26,6.39-24.53,6.39-35.75,0-54.63-50.19-99.08-111.88-99.08s-111.95,44.45-111.95,99.08c0,11.22,2.28,23.49,6.39,35.75-6.6,4.66-10.94,12.33-10.94,21.04,0,13.45,10.36,24.4,23.46,25.51.52,26.93,12.56,53.51,35.04,71.64v.73c.07.03.14.05.21.08,3.66,1.63,6.74,4.28,9.92,6.66.08.06.17.12.25.17,0-.08-.01-.16-.01-.25,15.23,9.12,32.95,13.89,51.85,12.96h0c15.54-.72,30.01-5.37,42.59-12.99,2.91-2.85,7.01-4.93,10.42-6.71.25-.16.51-.28.77-.43v-.76c20.36-16.83,33.62-42.32,34.85-71.11,13.15-1.05,23.57-12.03,23.57-25.53,0-8.7-4.35-16.38-10.94-21.04ZM155.53,283.54c-7.18-1.09-12.71-7.31-12.71-14.85s5.53-13.75,12.71-14.85v29.7ZM330.53,289.9c0,45.26-33.98,83.65-78.48,85.72-47.29,2.31-86.52-35.65-86.52-83.18v-40.7c15.63-4.03,38.45-15.61,65.91-46.31.08.59.13,1.21.11,1.87-.13,4.43-3.09,9.32-8.58,14.14-1.79,1.57-2.32,4.13-1.31,6.28,1.01,2.14,3.29,3.35,5.68,3,2.19-.35,48.6-8.13,71.88-38.36,3.84,13.25,12.48,33.59,31.31,48.79v48.75ZM339.42,234.31c-27.83-21.03-32.1-56.22-32.15-56.57-.26-2.37-2.08-4.28-4.43-4.67-2.33-.39-4.68.83-5.69,2.99-11.08,23.62-39.34,35.42-56.72,40.63,1.35-2.97,2.08-6,2.16-9.06.26-9.11-5.24-14.81-5.88-15.43-1.06-1.05-2.53-1.59-3.99-1.53-1.48.07-2.87.75-3.83,1.88-32.09,37.93-57.18,47.4-69.28,49.67-.68.13-1.29.39-1.84.74-.11,0-.18-.03-.29-.03-1.65,0-3.26.19-4.82.49-3.58-10.9-5.56-21.72-5.56-31.57,0-48.78,45.46-88.46,101.33-88.46s101.26,39.68,101.26,88.46c0,9.84-1.98,20.67-5.56,31.57-.85-.16-1.73-.19-2.61-.27v-4.6c0-1.67-.78-3.25-2.12-4.26ZM341.53,283.54v-29.7c7.18,1.09,12.72,7.3,12.72,14.85s-5.53,13.76-12.72,14.85Z\"/>\n <path d=\"M259.05,305.3c2.08-2.08,2.08-5.46,0-7.55-2.09-2.08-5.47-2.07-7.54,0-1.75,1.75-4.79,1.75-6.54,0-2.08-2.08-5.45-2.09-7.54,0-2.08,2.08-2.08,5.46,0,7.55,5.98,5.98,15.65,5.98,21.63,0h0Z\"/>\n <path id=\"mouth\"\n d=\"m 213.88314,319.4551 c -1.58,0.97 -0.35309,9.33393 1.50671,9.30586 6.05679,-0.0914 16.11631,0.17227 34.57066,0.13346 18.45435,-0.0388 28.15778,-0.0418 31.09964,-0.79956 1.80122,-0.46394 2.75061,-7.48365 1.16061,-8.45365 -1.6,-1.74874 -2.96432,-0.94348 -6.77747,-1.56441 -12.83012,0.04 -36.52534,0.50197 -41.29469,0.43262 -2.51525,-0.0713 -18.41588,-0.61 -20.01588,0.35 z m 57.29363,1.36599 c -9.24417,-2.23757 -8.08363,-2.42362 -20.78363,-2.42362 -12.7,0 -17.77931,2.69528 -26.84042,5.36549 12.57883,3.28731 33.57775,-4.29887 49.70067,2.24964 z\">\n <animate\n id=\"mouthAnim\"\n attributeName=\"d\"\n begin=\"indefinite\"\n dur=\"1s\"\n fill=\"freeze\"\n to=\"m 211.72,312.36 c -1.58,0.97 -2.56,2.86 -2.56,4.72 0,21.54 17.40021,38.7239 38.94021,38.7239 21.54,0 39.18979,-17.1739 39.18979,-39.0439 0,-1.86 -0.97,-3.59 -2.56,-4.56 -1.6,-0.97 -3.57,-1.03 -5.22,-0.18 -21.07,10.85 -41.53,10.85 -62.58,0 -1.65,-0.85 -3.62,-0.61 -5.22,0.35 z m 63.61,13.22 c -3.62,11.52 -14.4,19.9 -27.1,19.9 -12.7,0 -23.49,-8.38 -27.1,-19.9 18.03,6.94 36.2,6.94 54.2,0 z\" />\n </path>\n <circle fill=\"none\" stroke=\"currentColor\" stroke-width=\"10px\" cx=\"287.3\" cy=\"263.68\" r=\"14\"/>\n <circle fill=\"none\" stroke=\"currentColor\" stroke-width=\"10px\" cx=\"209.16\" cy=\"263.68\" r=\"14\"/>\n </svg>\n </div>\n <div>\n <p id='smile-cta'>SMILE</p>\n </div>\n </div>\n </div>\n\n ${this.allowAgentMode ? `<button data-variant='outline small' id='switch-camera' class='button | center' type='button'>${this.inAgentMode ? 'Agent Mode On' : 'Agent Mode Off'}</button>` : ''}\n\n <button data-variant='solid' id='start-image-capture' class='button | center' type='button'>\n Take Selfie\n </button>\n\n ${this.hideAttribution ? '' : '<powered-by-smile-id></powered-by-smile-id>'}\n </div>\n </div>\n `;\n}\n\nasync function getPermissions(\n captureScreen,\n constraints = { facingMode: 'user' },\n) {\n try {\n const stream = await SmartCamera.getMedia({\n audio: false,\n video: constraints,\n });\n const devices = await navigator.mediaDevices.enumerateDevices();\n const videoDevice = devices.find(\n (device) =>\n device.kind === 'videoinput' &&\n stream.getVideoTracks()[0].getSettings().deviceId === device.deviceId,\n );\n window.dispatchEvent(\n new CustomEvent('metadata.camera-name', {\n detail: { cameraName: videoDevice?.label },\n }),\n );\n captureScreen?.removeAttribute('data-camera-error');\n captureScreen?.setAttribute('data-camera-ready', true);\n } catch (error) {\n captureScreen?.removeAttribute('data-camera-ready');\n captureScreen?.setAttribute(\n 'data-camera-error',\n SmartCamera.handleCameraError(error),\n );\n }\n}\n\nclass SelfieCaptureScreen extends HTMLElement {\n constructor() {\n super();\n this.templateString = templateString.bind(this);\n this.render = () => this.templateString();\n\n this.attachShadow({ mode: 'open' });\n this.facingMode = 'user';\n if (this.allowAgentMode) {\n this.facingMode = 'environment';\n }\n }\n\n connectedCallback() {\n const template = document.createElement('template');\n template.innerHTML = this.render();\n this.shadowRoot.innerHTML = '';\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n this.videoContainer = this.shadowRoot.querySelector(\n '.video-container > .video',\n );\n this.init();\n }\n\n init() {\n this._videoStreamDurationInMS = 7800;\n this._imageCaptureIntervalInMS = 200;\n\n this._data = {\n images: [],\n meta: {\n libraryVersion: COMPONENTS_VERSION,\n },\n };\n this._rawImages = [];\n\n this.setUpEventListeners();\n }\n\n reset() {\n this.disconnectedCallback();\n this.connectedCallback();\n }\n\n _startImageCapture() {\n this.startImageCapture.disabled = true;\n if (this.switchCamera) {\n this.switchCamera.disabled = true;\n }\n\n /**\n * this was culled from https://jakearchibald.com/2013/animated-line-drawing-svg/\n */\n // NOTE: initialise image outline\n const imageOutlineLength = this.imageOutline.getTotalLength();\n // Clear any previous transition\n this.imageOutline.style.transition = 'none';\n // Set up the starting positions\n this.imageOutline.style.strokeDasharray = `${imageOutlineLength} ${imageOutlineLength}`;\n this.imageOutline.style.strokeDashoffset = imageOutlineLength;\n // Trigger a layout so styles are calculated & the browser\n // picks up the starting position before animating\n this.imageOutline.getBoundingClientRect();\n // Define our transition\n this.imageOutline.style.transition = `stroke-dashoffset ${this._videoStreamDurationInMS / 1000}s ease-in-out`;\n // Go!\n this.imageOutline.style.strokeDashoffset = '0';\n\n setTimeout(() => {\n this.smileCTABox.style.opacity = 1;\n this.mouthAnim.beginElement();\n }, 1500);\n\n setTimeout(() => {\n this.smileCTABox.style.opacity = 0;\n }, 3500);\n\n setTimeout(() => {\n this.smileCTABox.style.opacity = 1;\n this.smileCTA.textContent = 'BIGGER SMILE';\n this.mouth.setAttribute(\n 'd',\n 'm 213.88314,319.4551 c -1.58,0.97 -0.35309,9.33393 1.50671,9.30586 6.05679,-0.0914 16.11631,0.17227 34.57066,0.13346 18.45435,-0.0388 28.15778,-0.0418 31.09964,-0.79956 1.80122,-0.46394 2.75061,-7.48365 1.16061,-8.45365 -1.6,-1.74874 -2.96432,-0.94348 -6.77747,-1.56441 -12.83012,0.04 -36.52534,0.50197 -41.29469,0.43262 -2.51525,-0.0713 -18.41588,-0.61 -20.01588,0.35 z m 57.29363,1.36599 c -9.24417,-2.23757 -8.08363,-2.42362 -20.78363,-2.42362 -12.7,0 -17.77931,2.69528 -26.84042,5.36549 12.57883,3.28731 33.57775,-4.29887 49.70067,2.24964 z',\n );\n this.mouthAnim.beginElement();\n }, 4000);\n\n this._imageCaptureInterval = setInterval(() => {\n this._capturePOLPhoto();\n }, this._imageCaptureIntervalInMS);\n\n this._videoStreamTimeout = setTimeout(() => {\n this._stopVideoStream();\n }, this._videoStreamDurationInMS);\n }\n\n async _switchCamera() {\n this.facingMode = this.facingMode === 'user' ? 'environment' : 'user';\n if (this.facingMode === 'user') {\n this.shadowRoot.querySelector('video').classList.remove('agent-mode');\n } else {\n this.shadowRoot.querySelector('video').classList.add('agent-mode');\n }\n this.startImageCapture.disabled = true;\n this.switchCamera.disabled = true;\n SmartCamera.stopMedia();\n await getPermissions(this, { facingMode: this.facingMode });\n this.handleStream(SmartCamera.stream);\n }\n\n _stopVideoStream() {\n try {\n clearTimeout(this._videoStreamTimeout);\n clearInterval(this._imageCaptureInterval);\n clearInterval(this._drawingInterval);\n\n this._capturePOLPhoto(); // NOTE: capture the last photo\n this._captureReferencePhoto();\n SmartCamera.stopMedia();\n\n const totalNoOfFrames = this._rawImages.length;\n this._data.referenceImage = this._referenceImage;\n this._data.previewImage = this._referenceImage;\n\n const livenessFramesIndices = getLivenessFramesIndices(totalNoOfFrames);\n\n this._data.images = this._data.images.concat(\n livenessFramesIndices.map((imageIndex) => ({\n image: this._rawImages[imageIndex].split(',')[1],\n image_type_id: IMAGE_TYPE.LIVENESS_IMAGE_BASE64,\n })),\n );\n\n this._publishImages();\n } catch (error) {\n console.error(error);\n // Todo: handle error\n }\n }\n\n _capturePOLPhoto() {\n const canvas = document.createElement('canvas');\n // Determine orientation of the video\n const isPortrait = this._video.videoHeight > this._video.videoWidth;\n\n // Set dimensions based on orientation, ensuring minimums\n if (isPortrait) {\n // Portrait orientation (taller than wide)\n canvas.width = 240;\n canvas.height = Math.max(\n 320,\n (canvas.width * this._video.videoHeight) / this._video.videoWidth,\n );\n } else {\n // Landscape orientation (wider than tall)\n canvas.height = 240;\n canvas.width = Math.max(\n 320,\n (canvas.height * this._video.videoWidth) / this._video.videoHeight,\n );\n }\n\n // NOTE: we do not want to test POL images\n this._drawImage(canvas, false);\n\n this._rawImages.push(canvas.toDataURL('image/jpeg'));\n }\n\n _captureReferencePhoto() {\n const canvas = document.createElement('canvas');\n // Determine orientation of the video\n const isPortrait = this._video.videoHeight > this._video.videoWidth;\n\n // Set dimensions based on orientation, ensuring minimums\n if (isPortrait) {\n // Portrait orientation (taller than wide)\n canvas.width = 480;\n canvas.height = Math.max(\n 640,\n (canvas.width * this._video.videoHeight) / this._video.videoWidth,\n );\n } else {\n // Landscape orientation (wider than tall)\n canvas.height = 480;\n canvas.width = Math.max(\n 640,\n (canvas.height * this._video.videoWidth) / this._video.videoHeight,\n );\n }\n\n // NOTE: we want to test the image quality of the reference photo\n this._drawImage(canvas, !this.disableImageTests);\n\n const image = canvas.toDataURL('image/jpeg');\n\n this._referenceImage = image;\n\n this._data.images.push({\n image: image.split(',')[1],\n image_type_id: IMAGE_TYPE.SELFIE_IMAGE_BASE64,\n });\n }\n\n _publishImages() {\n this.dispatchEvent(\n new CustomEvent('selfie-capture.publish', {\n detail: this._data,\n }),\n );\n }\n\n resetErrorMessage() {\n this.errorMessage.textContent = '';\n }\n\n _drawImage(canvas, enableImageTests = true, video = this._video) {\n // this.resetErrorMessage();\n const context = canvas.getContext('2d');\n\n context.drawImage(\n video,\n 0,\n 0,\n video.videoWidth,\n video.videoHeight,\n 0,\n 0,\n canvas.width,\n canvas.height,\n );\n\n if (enableImageTests) {\n const imageData = context.getImageData(0, 0, canvas.width, canvas.height);\n\n const hasEnoughColors = hasMoreThanNColors(imageData.data);\n\n if (hasEnoughColors) {\n return context;\n }\n throw new Error(\n 'Unable to capture webcam images - Please try another device',\n );\n } else {\n return context;\n }\n }\n\n handleStream(stream) {\n try {\n const videoExists = this.shadowRoot.querySelector('video');\n let video = null;\n if (videoExists) {\n video = this.shadowRoot.querySelector('video');\n } else {\n video = document.createElement('video');\n }\n\n video.autoplay = true;\n video.playsInline = true;\n video.muted = true;\n\n if ('srcObject' in video) {\n video.srcObject = stream;\n } else {\n video.src = window.URL.createObjectURL(stream);\n }\n\n video.onloadedmetadata = () => {\n video.play();\n };\n\n this._video = video;\n const videoContainer = this.shadowRoot.querySelector(\n '.video-container > .video',\n );\n this._data.permissionGranted = true;\n\n if (!videoExists) {\n videoContainer.prepend(video);\n }\n } catch (error) {\n this.setAttribute(\n 'data-camera-error',\n SmartCamera.handleCameraError(error),\n );\n if (error.name !== 'AbortError') {\n console.error(error);\n }\n SmartCamera.stopMedia();\n }\n }\n\n setUpEventListeners() {\n this.navigation = this.shadowRoot.querySelector('smileid-navigation');\n\n this.startImageCapture = this.shadowRoot.querySelector(\n '#start-image-capture',\n );\n\n this.switchCamera = this.shadowRoot.querySelector('#switch-camera');\n this.imageOutline = this.shadowRoot.querySelector('#image-outline path');\n this.smileCTABox = this.shadowRoot.querySelector('#smile-cta-box');\n this.smileCTA = this.shadowRoot.querySelector('#smile-cta');\n this.mouth = this.shadowRoot.querySelector('#mouth');\n this.mouthAnim = this.shadowRoot.querySelector('#mouthAnim');\n\n this.startImageCapture.addEventListener('click', () => {\n this._startImageCapture();\n });\n\n this.switchCamera?.addEventListener('click', () => {\n this._switchCamera();\n });\n\n this.navigation.addEventListener('navigation.back', () => {\n this.handleBackEvents();\n });\n\n this.navigation.addEventListener('navigation.close', () => {\n this.closeWindow();\n });\n\n if (SmartCamera.stream) {\n this.handleStream(SmartCamera.stream);\n } else if (this.hasAttribute('data-camera-ready')) {\n getPermissions(this, { facingMode: this.facingMode });\n }\n\n this.setupAgentMode();\n }\n\n disconnectedCallback() {\n SmartCamera.stopMedia();\n clearTimeout(this._videoStreamTimeout);\n }\n\n get hideBack() {\n return this.hasAttribute('hide-back');\n }\n\n get showNavigation() {\n return this.hasAttribute('show-navigation');\n }\n\n get themeColor() {\n return this.getAttribute('theme-color') || '#001096';\n }\n\n get hideAttribution() {\n return this.hasAttribute('hide-attribution');\n }\n\n async setupAgentMode() {\n if (!this.allowAgentMode) {\n return;\n }\n\n const supportAgentMode = await SmartCamera.supportsAgentMode();\n\n if (supportAgentMode || this.hasAttribute('show-agent-mode-for-tests')) {\n this.switchCamera.hidden = false;\n if (this.facingMode === 'user') {\n this.shadowRoot.querySelector('video')?.classList?.remove('agent-mode');\n } else {\n this.shadowRoot.querySelector('video')?.classList?.add('agent-mode');\n }\n } else {\n this.switchCamera.hidden = true;\n }\n }\n\n get hasAgentSupport() {\n return this.hasAttribute('has-agent-support');\n }\n\n get title() {\n return this.getAttribute('title') || 'Submit Front of ID';\n }\n\n get hidden() {\n return this.getAttribute('hidden');\n }\n\n get cameraError() {\n return this.getAttribute('data-camera-error');\n }\n\n get disableImageTests() {\n return this.hasAttribute('disable-image-tests');\n }\n\n get allowAgentMode() {\n return this.getAttribute('allow-agent-mode') === 'true';\n }\n\n get inAgentMode() {\n return this.facingMode === 'environment';\n }\n\n static get observedAttributes() {\n return [\n 'allow-agent-mode',\n 'data-camera-error',\n 'data-camera-ready',\n 'disable-image-tests',\n 'hidden',\n 'hide-back-to-host',\n 'show-navigation',\n 'title',\n ];\n }\n\n attributeChangedCallback(name) {\n switch (name) {\n case 'data-camera-error':\n case 'data-camera-ready':\n case 'hidden':\n case 'title':\n case 'allow-agent-mode':\n this.shadowRoot.innerHTML = this.render();\n this.init();\n break;\n default:\n break;\n }\n }\n\n handleBackEvents() {\n this.stopMedia();\n this.dispatchEvent(new CustomEvent('selfie-capture.cancelled'));\n }\n\n closeWindow() {\n this.stopMedia();\n this.dispatchEvent(new CustomEvent('selfie-capture.close'));\n }\n\n stopMedia() {\n this.removeAttribute('data-camera-ready');\n SmartCamera.stopMedia();\n }\n}\n\nif ('customElements' in window && !customElements.get('selfie-capture')) {\n window.customElements.define('selfie-capture', SelfieCaptureScreen);\n}\n\nexport default SelfieCaptureScreen;\n", "import styles from '../../../../styles/src/styles';\nimport '../../../navigation/src';\n\nfunction templateString() {\n return `\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" />\n <link\n href=\"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;700&display=swap\"\n rel=\"stylesheet\"\n />\n <style>\n :host {\n --theme-color: ${this.themeColor || '#001096'}\n --color-active: #001096;\n --color-default: #2d2b2a;\n --color-disabled: #848282;\n }\n\n * {\n font-family: \"DM Sans\", sans-serif;\n }\n\n [hidden] {\n display: none !important;\n }\n\n [disabled] {\n cursor: not-allowed !important;\n filter: grayscale(75%);\n }\n\n .visually-hidden {\n border: 0;\n clip: rect(1px 1px 1px 1px);\n clip: rect(1px, 1px, 1px, 1px);\n height: auto;\n margin: 0;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n }\n\n img {\n height: auto;\n max-width: 100%;\n transform: scaleX(-1);\n }\n\n video {\n background-color: black;\n }\n\n a {\n color: currentColor;\n text-decoration: none;\n }\n\n svg {\n max-width: 100%;\n }\n\n .color-gray {\n color: #797979;\n }\n\n .color-red {\n color: red;\n }\n\n .color-richblue {\n color: #4e6577;\n }\n\n .color-richblue-shade {\n color: #0e1b42;\n }\n\n .color-digital-blue {\n color: #001096 !important;\n }\n\n .color-deep-blue {\n color: #001096;\n }\n\n .center {\n text-align: center;\n margin-left: auto;\n margin-right: auto;\n }\n\n .font-size-small {\n font-size: 0.75rem;\n }\n\n .font-size-large {\n font-size: 1.5rem;\n }\n\n .text-transform-uppercase {\n text-transform: uppercase;\n }\n\n [id*=-\"screen\"] {\n min-block-size: 100%;\n }\n\n [data-variant~=\"full-width\"] {\n inline-size: 100%;\n }\n\n .flow > * + * {\n margin-top: 1rem;\n }\n\n .button {\n --button-color: var(--theme-color);\n -webkit-appearance: none;\n appearance: none;\n border-radius: 2.5rem;\n border: 0;\n background-color: transparent;\n color: #fff;\n cursor: pointer;\n display: block;\n font-size: 18px;\n font-weight: 600;\n padding: 0.75rem 1.5rem;\n text-align: center;\n }\n\n .button:hover,\n .button:focus,\n .button:active {\n --button-color: var(--color-default);\n }\n\n .button:disabled {\n --button-color: var(--color-disabled);\n }\n\n .button[data-variant~=\"solid\"] {\n background-color: var(--button-color);\n border: 2px solid var(--button-color);\n }\n\n .button[data-variant~=\"outline\"] {\n color: var(--button-color);\n border: 2px solid var(--button-color);\n }\n\n .button[data-variant~=\"ghost\"] {\n padding: 0px;\n color: var(--button-color);\n background-color: transparent;\n }\n\n .icon-btn {\n appearance: none;\n background: none;\n border: none;\n color: hsl(0deg 0% 94%);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px 8px;\n }\n .justify-right {\n justify-content: end !important;\n }\n .nav {\n display: flex;\n justify-content: space-between;\n }\n\n .back-wrapper {\n display: flex;\n align-items: center;\n }\n\n .back-button {\n display: block !important;\n }\n .back-button-text {\n font-size: 11px;\n line-height: 11px;\n color: rgb(21, 31, 114);\n }\n .section {\n border: 1px solid #f4f4f4;\n border-radius: 0.5rem;\n margin-left: auto;\n margin-right: auto;\n max-width: 35ch;\n padding: 1rem;\n }\n\n .selfie-capture-review-image {\n overflow: hidden;\n aspect-ratio: 1/1;\n }\n\n #review-image {\n scale: 1.75;\n }\n\n @media (max-aspect-ratio: 1/1) {\n #review-image {\n transform: scaleX(-1) translateY(-10%);\n }\n }\n\n .tips,\n .powered-by {\n align-items: center;\n border-radius: 0.25rem;\n color: #4e6577;\n display: flex;\n justify-content: center;\n letter-spacing: 0.075em;\n }\n\n .powered-by {\n box-shadow: 0px 2.57415px 2.57415px rgba(0, 0, 0, 0.06);\n display: inline-flex;\n font-size: 0.5rem;\n }\n\n .tips {\n margin-left: auto;\n margin-right: auto;\n max-width: 17rem;\n }\n\n .tips > * + *,\n .powered-by > * + * {\n display: inline-block;\n margin-left: 0.5em;\n }\n\n .powered-by .company {\n color: #18406d;\n font-weight: 700;\n letter-spacing: 0.15rem;\n }\n\n .logo-mark {\n background-color: #004071;\n display: inline-block;\n padding: 0.25em 0.5em;\n }\n\n .logo-mark svg {\n height: auto;\n justify-self: center;\n width: 0.75em;\n }\n\n #selfie-capture-instruction-screen {\n padding-block: 2rem;\n display: flex;\n flex-direction: column;\n max-block-size: 100%;\n max-inline-size: 40ch;\n }\n\n #selfie-capture-instruction-screen header p {\n margin-block: 0 !important;\n }\n\n .instructions {\n margin-block-start: 1.5rem;\n display: flex;\n align-items: center;\n text-align: initial;\n gap: 1rem;\n }\n\n .instructions svg {\n flex-shrink: 0;\n margin-inline-end: 1rem;\n }\n\n .instructions p {\n margin-block: 0;\n }\n\n h1 {\n color: ${this.themeColor};\n text-align: center;\n\n /* h1 */\n font-size: 1.5rem;\n font-style: normal;\n font-weight: 700;\n line-height: 36px; /* 150% */\n }\n\n .tip-header {\n color: ${this.themeColor};\n }\n </style>\n ${styles(this.themeColor)}\n <div id=\"selfie-capture-instruction-screen\" class=\"flow center\">\n <smileid-navigation theme-color=${this.themeColor} ${this.hideBack ? 'hide-back' : ''} ${this.showNavigation ? '' : 'hidden'}></smileid-navigation>\n <header>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"65\" height=\"91\" viewBox=\"0 0 65 91\" fill=\"none\">\n <g clip-path=\"url(#clip0_604_692)\">\n <path d=\"M36.6833 60.4888C26.9272 54.8682 13.1977 54.3026 5.53473 59.2162C-2.12824 64.1298 -0.851078 72.9318 8.05358 78.9413L17.8806 85.1274L51.5126 69.6797L36.7188 60.4534H36.6478L36.6833 60.4888Z\" fill=\"#3B3837\"/>\n <path d=\"M27.5624 90.5007L17.9127 85.0923C17.9127 85.0923 17.9127 74.6288 18.1256 70.4929C18.232 68.2305 23.2342 37.441 44.1655 34.6484C48.1389 34.1182 56.8662 40.5871 56.8662 40.5871\" fill=\"#91190F\"/>\n <path d=\"M27.5624 90.5007L17.9127 85.0923C17.9127 85.0923 17.9127 74.6288 18.1256 70.4929C18.232 68.2305 23.2342 37.441 44.1655 34.6484C48.1389 34.1182 56.8662 40.5871 56.8662 40.5871\" fill=\"#3B3837\"/>\n <path d=\"M64.0705 51.9698C63.8931 41.0114 56.2301 36.5927 46.7224 42.0366C37.0727 47.5511 29.055 60.9486 28.3454 72.2958L27.5649 90.4655L63.7512 69.5739L64.1769 51.8991H64.106L64.0705 51.9698Z\" fill=\"#7ECAF0\"/>\n <path d=\"M44.2729 28.3906L30.0112 36.521L30.4015 19.73L44.6631 11.5643L44.2729 28.3906Z\" fill=\"#F8CEEB\"/>\n <path d=\"M53.959 33.8711L39.6974 42.0368L40.0876 25.2104L54.3493 17.0447L53.959 33.8711Z\" fill=\"#7ECAF0\"/>\n <path d=\"M44.6631 11.5643L54.3483 17.0434L40.0866 25.2092L39.6964 42.0356L30.0112 36.521L30.4015 19.73L44.6631 11.5643Z\" fill=\"#3B3837\"/>\n <path d=\"M53.0767 51.0497L59.9591 46.8785L59.9237 36.9099L64.4647 34.3294L64.5002 49.4236L53.0767 56.2461V51.0497Z\" fill=\"#FF5805\"/>\n <path d=\"M54.0676 54.5139L63.5044 48.8933L63.469 36.026L60.9146 37.4754V47.4439L54.0676 51.5798V54.5139Z\" fill=\"#FF5805\"/>\n <path d=\"M30.4053 52.2515L34.9463 49.6356V60.8414L44.0638 55.1855V60.4172L30.4407 68.7244L30.4053 52.2515Z\" fill=\"#FF5805\"/>\n <path d=\"M31.4317 66.9921L43.0681 59.8869V56.9529L33.9506 62.6088V51.3323L31.3962 52.817L31.4317 66.9921Z\" fill=\"#FF5805\"/>\n <path d=\"M30.4053 19.7312L42.5383 13.0148V18.1759L34.9463 22.3471V32.4924L30.4407 35.073L30.4053 19.7312Z\" fill=\"#FF5805\"/>\n <path d=\"M31.3962 33.377L33.9506 31.9276V21.7823L41.5426 17.6111V14.6771L31.3962 20.2976V28.7815V33.377Z\" fill=\"#FF5805\"/>\n <path d=\"M59.9223 8.27746L53.5365 11.9538V6.79277L64.4279 0.500549L64.4633 16.5846L59.9578 19.1651L59.9223 8.27746Z\" fill=\"#FF5805\"/>\n <path d=\"M60.9142 17.4682L63.504 16.0189L63.4685 2.19722L54.4929 7.35826L54.5284 10.2569L60.9142 6.58057V17.4682Z\" fill=\"#FF5805\"/>\n </g>\n <defs>\n <clipPath id=\"clip0_604_692\">\n <rect width=\"64\" height=\"90\" fill=\"white\" transform=\"translate(0.5 0.5)\"/>\n </clipPath>\n </defs>\n </svg>\n <h1 class='text-2xl title-color font-bold'>Next, we'll take a quick selfie</h1>\n </header>\n <div class=\"flow instructions-wrapper\">\n <div class=\"instructions\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"38\"\n height=\"38\"\n viewBox=\"0 0 38 38\"\n fill=\"none\"\n >\n <g clip-path=\"url(#clip0_604_670)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M31.8569 19C31.8569 21.5428 31.1029 24.0285 29.6902 26.1428C28.2774 28.2571 26.2695 29.9049 23.9203 30.878C21.571 31.8511 18.986 32.1057 16.492 31.6096C13.9981 31.1136 11.7072 29.8891 9.90919 28.091C8.11115 26.293 6.88668 24.0022 6.3906 21.5082C5.89452 19.0143 6.14913 16.4292 7.12222 14.08C8.09531 11.7307 9.74318 9.72279 11.8574 8.31008C13.9717 6.89737 16.4574 6.14334 19.0002 6.14334C22.41 6.14334 25.6802 7.49788 28.0913 9.90897C30.5024 12.3201 31.8569 15.5902 31.8569 19Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M19.6064 4.5419H18.394L18.9912 0L19.6064 4.5419Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M26.7541 6.77667L25.7046 6.17048L28.4913 2.54239L26.7541 6.77667Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M31.8298 12.2957L31.2236 11.2462L35.4489 9.49097L31.8298 12.2957Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M33.4674 19.6062V18.3938L38.0003 18.9909L33.4674 19.6062Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M31.2236 26.7538L31.8298 25.7043L35.4579 28.491L31.2236 26.7538Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M25.7046 31.8295L26.7541 31.2233L28.5094 35.4486L25.7046 31.8295Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M18.394 33.4671H19.6064L19.0093 38L18.394 33.4671Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M11.2464 31.2233L12.2959 31.8295L9.50928 35.4576L11.2464 31.2233Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M6.17068 25.7043L6.77687 26.7538L2.55164 28.509L6.17068 25.7043Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M4.54215 18.3938V19.6062L0.000244141 19.009L4.54215 18.3938Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M6.77689 11.2462L6.1707 12.2957L2.5426 9.50903L6.77689 11.2462Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M12.296 6.17047L11.2464 6.77666L9.49121 2.55142L12.296 6.17047Z\"\n fill=\"${this.themeColor}\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_604_670\">\n <rect\n width=\"38\"\n height=\"38\"\n fill=\"white\"\n transform=\"translate(0.000244141)\"\n />\n </clipPath>\n </defs>\n </svg>\n <div class=\"instruction\">\n <p class=\"text-base title-color font-bold tip-header\">Good Light</p>\n <p class=\"tip-body\">\n Make sure you are in a well-lit environment where your face is\n clear and visible.\n </p>\n </div>\n </div>\n <div class=\"instructions\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"38\"\n height=\"36\"\n viewBox=\"0 0 38 36\"\n fill=\"none\"\n >\n <g clip-path=\"url(#clip0_604_672)\">\n <path\n d=\"M36.7211 12.6391H1.22537C1.06275 13.0909 0.910962 13.5427 0.77002 14.0055H37.1764C37.0463 13.5427 36.8946 13.0909 36.7211 12.6391Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M37.3716 14.7438H0.574875C0.466458 15.1625 0.379725 15.5813 0.303833 16.011H37.6426C37.5667 15.5813 37.48 15.1625 37.3716 14.7438Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M37.7727 16.8485H0.173703C0.119494 17.2342 0.0869685 17.6198 0.0544434 18.0055H37.892C37.8594 17.6198 37.8269 17.2342 37.7727 16.8485Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M37.9462 19.4711C37.9462 19.2948 37.9462 19.1295 37.9353 18.9532H0.0110865C0.000244802 19.1295 0.000244141 19.2948 0.000244141 19.4711C0.000244141 19.6474 0.000244802 19.8347 0.0110865 20.011H37.9353C37.9462 19.8347 37.9462 19.6474 37.9462 19.4711Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M37.8811 21.0579H0.0653076C0.086991 21.3774 0.119515 21.697 0.162882 22.0055H37.7836C37.8269 21.697 37.8595 21.3774 37.8811 21.0579Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M37.5992 23.1625H0.347168C0.401376 23.449 0.466426 23.7245 0.531477 24H37.4149C37.48 23.7245 37.545 23.449 37.5992 23.1625Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M37.0788 25.2672H0.867554C0.954287 25.5096 1.03018 25.7631 1.11691 26.0055H36.8295C36.9162 25.7631 37.0029 25.5096 37.0788 25.2672Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M36.2874 27.3719H1.65906L1.95178 28H35.9947L36.2874 27.3719Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M35.2032 29.4766H2.75403C2.84799 29.6529 2.95641 29.8292 3.07928 30.0055H34.878L35.2032 29.4766Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M33.7396 31.5813H4.20679L4.54288 32H33.4035L33.7396 31.5813Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M31.7989 33.6859H6.14746L6.49439 33.9945H31.452L31.7989 33.6859Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M29.0993 35.7906H8.84705L9.18314 36H28.7632L29.0993 35.7906Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M34.2384 8.01102C33.8914 7.53719 33.5228 7.07438 33.1325 6.63361C29.8258 2.60055 24.6977 0 18.9407 0C12.891 0 7.53525 2.86501 4.25021 7.26171H4.28274C4.08759 7.51515 3.89244 7.75757 3.70813 8.01102H34.2384Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M34.531 8.44077H3.41533C3.06839 8.94765 2.74314 9.47658 2.43958 10.0165H35.5068C35.2124 9.47215 34.8866 8.94597 34.531 8.44077Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M35.7887 10.5344H2.15776C1.9084 11.0193 1.68072 11.5151 1.47473 12.011H36.4717C36.2657 11.5151 36.0381 11.0193 35.7887 10.5344Z\"\n fill=\"${this.themeColor}\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_604_672\">\n <rect\n width=\"37.9459\"\n height=\"36\"\n fill=\"white\"\n transform=\"translate(0.000244141)\"\n />\n </clipPath>\n </defs>\n </svg>\n <div class=\"instruction\">\n <p class=\"text-base title-color font-bold tip-header\">Clear Image</p>\n <p>\n Hold your phone steady so the selfie is clear and sharp. Don't\n take blurry images.\n </p>\n </div>\n </div>\n <div class=\"instructions\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"38\"\n height=\"38\"\n viewBox=\"0 0 38 38\"\n fill=\"none\"\n >\n <path\n d=\"M18.9496 0C18.9496 0 13.9842 6.03205e-06 11.1469 1.09139C8.30957 2.18277 8.41092 4.46476 7.80292 6.15145C7.28787 7.56786 6.91455 9.02989 6.68824 10.517C6.68824 10.517 4.86424 11.3107 3.24291 12.2036C2.43378 12.6113 1.72475 13.1862 1.16487 13.8886C0.604986 14.5909 0.207618 15.404 0.000244141 16.2715C0.506911 21.4308 6.68824 23.6136 6.68824 23.6136C6.67321 21.7242 6.77473 19.8356 6.99225 17.9582C7.29625 16.47 7.90424 15.7754 10.4376 14.6841C12.9709 13.5927 18.9496 13.1958 18.9496 13.1958C18.9496 13.1958 24.9282 13.5927 27.4616 14.6841C29.9949 15.7754 30.7042 16.47 31.0082 17.9582C31.2258 19.8356 31.3273 21.7242 31.3122 23.6136C31.3122 23.6136 37.3922 21.4308 38.0002 16.2715C37.5126 14.5484 36.3463 13.0853 34.7576 12.2036L31.2109 10.517C30.9867 9.03874 30.6479 7.57936 30.1976 6.15145C29.4882 4.46476 28.4749 1.78591 26.8536 1.09139C25.2322 0.396873 18.9496 0 18.9496 0Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M10.7416 21.53C12.8058 21.6524 14.8473 22.0188 16.8216 22.6214C18.6235 23.1643 20.5642 23.0588 22.2936 22.3238C24.8269 21.2324 27.5629 21.4308 30.1976 21.6292C30.7849 21.6319 31.3675 21.7326 31.9202 21.9269C32.4269 22.1253 32.4269 22.423 32.4269 23.2167C32.14 24.7237 31.6635 26.19 31.0083 27.5822C30.7799 28.1169 30.4019 28.5776 29.9179 28.9111C29.4338 29.2446 28.8634 29.4375 28.2723 29.4674C27.2359 29.6525 26.1773 29.6859 25.1309 29.5666C24.279 29.5405 23.4506 29.2863 22.736 28.8315C22.0214 28.3766 21.4478 27.7387 21.0776 26.987C20.8887 26.3594 20.6161 25.7589 20.2669 25.201C19.8616 24.705 19.5576 24.5065 19.0509 24.6057C18.7188 24.5693 18.3842 24.6489 18.1061 24.8304C17.828 25.0119 17.6243 25.2837 17.5309 25.5979C16.9229 27.0862 16.4162 28.6736 14.6936 29.2689C13.939 29.5055 13.1548 29.6391 12.3629 29.6658C11.2345 29.6928 10.1081 29.5591 9.01892 29.2689C7.39759 28.7728 6.89092 27.3838 6.38425 25.8956C6.24296 25.2819 6.03928 24.6836 5.77625 24.1096C5.57359 23.5143 5.37092 23.1175 5.67492 22.5222C5.97892 21.9269 6.18159 22.0261 6.68825 21.9269C8.02604 21.6866 9.38168 21.5538 10.7416 21.53ZM12.0589 28.8721C14.4909 28.5744 14.8963 28.5744 15.6056 27.3838C16.0105 26.8072 16.3184 26.1708 16.5176 25.4987C16.9229 24.3081 16.7203 23.7128 15.6056 23.2167C13.2959 22.2331 10.6949 22.127 8.30959 22.9191C8.07105 23.0198 7.85723 23.1693 7.68248 23.3575C7.50772 23.5458 7.37604 23.7684 7.29626 24.0105C7.12045 24.8478 7.19957 25.7172 7.52382 26.5109C7.84807 27.3046 8.40315 27.9876 9.12025 28.4752C10.0603 28.8088 11.0617 28.9441 12.0589 28.8721ZM25.7389 28.9713C26.8173 28.9934 27.8881 28.7904 28.8802 28.376C30.7042 27.5823 30.7043 25.7963 30.7043 24.1096C30.7043 22.423 29.9949 22.9191 29.2856 22.7206C27.3226 22.2044 25.2509 22.2387 23.3069 22.8198C23.0246 22.8282 22.7476 22.8972 22.4956 23.0221C22.2436 23.1469 22.0228 23.3245 21.8487 23.5423C21.6746 23.7601 21.5516 24.0127 21.4884 24.2822C21.4252 24.5517 21.4233 24.8315 21.4829 25.1018C21.6856 27.3838 23.1043 28.5744 25.7389 28.9713Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M11.9576 24.4073C10.8429 24.4073 9.93091 25.1018 9.93091 25.7963V26.2924C9.9546 26.4062 10.0183 26.5082 10.1109 26.5807C10.2034 26.6532 10.319 26.6916 10.4376 26.6893C10.8429 26.6893 11.0456 26.4909 11.0456 26.2924V25.7963C11.0456 25.4987 11.4509 25.201 11.9576 25.201C12.4642 25.201 12.8696 25.4987 12.8696 25.7963V26.2924C12.8696 26.4909 13.1736 26.6893 13.4776 26.6893C13.5961 26.6916 13.7117 26.6532 13.8043 26.5807C13.8969 26.5082 13.9606 26.4062 13.9842 26.2924V25.7963C13.9842 25.1018 13.0722 24.4073 11.9576 24.4073Z\"\n fill=\"${this.themeColor}\"\n />\n <path\n d=\"M26.1442 24.4073C24.9282 24.4073 24.0162 25.1018 24.0162 25.7963V26.2924C24.0162 26.4909 24.3202 26.6893 24.6242 26.6893C24.9282 26.6893 25.2322 26.4909 25.2322 26.2924V25.7963C25.2322 25.4987 25.6376 25.201 26.1442 25.201C26.6509 25.201 27.0562 25.4987 27.0562 25.7963V26.2924C27.0799 26.4062 27.1436 26.5082 27.2362 26.5807C27.3287 26.6532 27.4444 26.6916 27.5629 26.6893C27.8669 26.6893 28.1709 26.4909 28.1709 26.2924V25.7963C28.1709 25.1018 27.2589 24.4073 26.1442 24.4073Z\"\n fill=\"${this.themeColor}\"\n />\n </svg>\n <div class=\"instruction\">\n <p class=\"text-base title-color font-bold tip-header\">Remove Obstructions</p>\n <p>\n Remove anything that covers your face, such glasses, masks, hats\n and scarves.\n </p>\n </div>\n </div>\n <div class=\"instructions\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"38\" height=\"38\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"${this.themeColor}\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"icon icon-tabler icons-tabler-outline icon-tabler-mood-happy\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\" /><path d=\"M9 9l.01 0\" /><path d=\"M15 9l.01 0\" /><path d=\"M8 13a4 4 0 1 0 8 0h-8\" /></svg>\n <div class=\"instruction\">\n <p class=\"text-base title-color font-bold tip-header\">Big Smile</p>\n <p>\n When asked to smile, give a big smile, showing your teeth and keep your eyes open.\n </p>\n </div>\n </div>\n <section class='flow' style='--flow-space: 2.5rem'>\n <button id='allow' data-variant='solid full-width' class='button theme-background'>\n Allow\n </button>\n <button id='cancel' data-variant='outline full-width' class=\"button\" style='--flow-space: 1.5rem' ${this.hideBack || !this.showNavigation ? 'hidden' : ''}>\n Cancel\n </button>\n </section>\n </div>\n ${\n this.hideAttribution\n ? ''\n : `\n <powered-by-smile-id></powered-by-smile-id>\n `\n }\n </div>\n `;\n}\n\nclass SelfieCaptureInstructions extends HTMLElement {\n constructor() {\n super();\n this.templateString = templateString.bind(this);\n this.render = () => this.templateString();\n\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n this.pages = [];\n const template = document.createElement('template');\n template.innerHTML = this.render();\n\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n\n this.allowButton = this.shadowRoot.querySelector('#allow');\n this.navigation = this.shadowRoot.querySelector('smileid-navigation');\n this.cancelButton = this.shadowRoot.querySelector('#cancel');\n\n this.navigation.addEventListener('navigation.back', () => {\n this.handleBackEvents();\n });\n\n if (this.allowButton) {\n this.allowButton.addEventListener('click', () => {\n this.dispatchEvent(\n new CustomEvent('selfie-capture-instructions.capture'),\n );\n });\n }\n\n this.navigation.addEventListener(\n 'navigation.close',\n () => {\n this.handleCloseEvents();\n },\n false,\n );\n\n this.cancelButton.addEventListener('click', () => {\n this.handleBackEvents();\n });\n }\n\n get hideBack() {\n return this.hasAttribute('hide-back');\n }\n\n get themeColor() {\n return this.getAttribute('theme-color') || '#001096';\n }\n\n get hideAttribution() {\n return this.hasAttribute('hide-attribution');\n }\n\n handleBackEvents() {\n this.dispatchEvent(\n new CustomEvent('selfie-capture-instructions.cancelled'),\n );\n }\n\n get showNavigation() {\n return this.hasAttribute('show-navigation');\n }\n\n handleCloseEvents() {\n this.dispatchEvent(new CustomEvent('selfie-capture-instructions.close'));\n }\n\n static get observedAttributes() {\n return ['show-navigation'];\n }\n}\n\nif (\n 'customElements' in window &&\n !window.customElements.get('selfie-capture-instructions')\n) {\n window.customElements.define(\n 'selfie-capture-instructions',\n SelfieCaptureInstructions,\n );\n}\n\nexport default SelfieCaptureInstructions;\n", "import styles from '../../../../styles/src/styles';\nimport '../../../navigation/src';\n\nfunction templateString() {\n return `\n <style>\n .retake-photo.button[data-variant~=\"ghost\"] {\n color: #FF5805;\n }\n .icon-btn {\n appearance: none;\n background: none;\n border: none;\n color: hsl(0deg 0% 94%);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px 8px;\n }\n .justify-right {\n justify-content: end !important;\n }\n .nav {\n display: flex;\n justify-content: space-between;\n }\n .back-wrapper {\n display: flex;\n align-items: center;\n }\n .back-button-text {\n font-size: 11px;\n line-height: 11px;\n color: rgb(21, 31, 114);\n }\n .section {\n border-radius: .5rem;\n margin-left: auto;\n margin-right: auto;\n max-width: 35ch;\n padding: 1rem;\n }\n .selfie-capture-review-image {\n overflow: hidden;\n aspect-ratio: 1/1;\n }\n #review-image {\n scale: 1.75;\n }\n @media (max-aspect-ratio: 1/1) {\n #review-image {\n transform: scaleX(-1) translateY(-10%);\n }\n }\n .tips,\n .powered-by {\n align-items: center;\n border-radius: 0.25rem;\n color: #4e6577;\n display: flex;\n justify-content: center;\n letter-spacing: 0.075em;\n }\n .powered-by {\n box-shadow: 0px 2.57415px 2.57415px rgba(0, 0, 0, 0.06);\n display: inline-flex;\n font-size: 0.5rem;\n }\n .tips {\n margin-left: auto;\n margin-right: auto;\n max-width: 17rem;\n }\n .tips > * + *,\n .powered-by > * + * {\n display: inline-block;\n margin-left: 0.5em;\n }\n .powered-by .company {\n color: #18406d;\n font-weight: 700;\n letter-spacing: 0.15rem;\n }\n .logo-mark {\n background-color: #004071;\n display: inline-block;\n padding: 0.25em 0.5em;\n }\n .logo-mark svg {\n height: auto;\n justify-self: center;\n width: 0.75em;\n }\n #selfie-capture-review-screen {\n block-size: 45rem;\n padding-block: 2rem;\n display: flex;\n flex-direction: column;\n max-block-size: 100%;\n max-inline-size: 40ch;\n }\n #selfie-capture-review-screen .selfie-review-container.landscape {\n height: auto;\n }\n #selfie-capture-review-screen header p {\n margin-block: 0 !important;\n }\n .selfie-review-container.portrait {\n width: 100%;\n position: relative;\n height: calc(200px * 1.4);\n }\n \n .selfie-review-container.portrait img {\n width: calc(213px + 0.9rem);\n height: 100%;\n position: absolute;\n top: 239px;\n left: 161px;\n padding-bottom: calc((214px * 1.4) / 3);\n padding-top: calc((191px * 1.4) / 3);\n object-fit: cover;\n \n transform: translateX(-50%) translateY(-50%);\n z-index: 1;\n block-size: 100%;\n }\n \n .selfie-container,\n .selfie-review-container.landscape {\n height: auto;\n clip-path: inset(15% 20% 20% 20% round 10px);\n overflow: hidden;\n }\n\n .selfie-container img {\n background-color: black;\n position: absolute;\n left: 50%;\n height: calc(100% - 6px);\n clip-path: ellipse(101px 118px);\n }\n\n .description {\n color: var(--neutral-off-black, #2D2B2A);\n text-align: center;\n /* p */\n font-family: DM Sans;\n font-size: 0.875rem;\n font-style: normal;\n font-weight: 400;\n line-height: 18px;\n }\n .padding-bottom-2 {\n padding-bottom: 2rem;\n }\n .instructions-wrapper {\n display: inline-flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 2rem;\n margin-block-start: 2rem;\n margin-block-end: 4rem;\n }\n .instructions {\n display: flex;\n align-items: center;\n text-align: initial;\n }\n .instructions svg {\n flex-shrink: 0;\n margin-inline-end: 2rem;\n }\n .instructions p {\n margin-block: 0;\n }\n .instruction-body {\n font-size: 0.75rem;\n }\n h1 {\n color: var(--web-digital-blue, #001096);\n text-align: center;\n /* h1 */\n font-size: 1.5rem;\n font-style: normal;\n font-weight: 700;\n line-height: 36px; /* 150% */\n }\n .p2 {\n font-size: 1rem;\n font-style: normal;\n font-weight: 500;\n line-height: 1rem;\n }\n .instruction-header {\n color: var(--web-digital-blue, #001096);\n }\n .h2 {\n font-size: 1rem;\n font-style: normal;\n font-weight: 700;\n line-height: 1.5rem;\n }\n </style>\n ${styles(this.themeColor)}\n <div id='selfie-capture-review-screen' class='flow center'>\n <smileid-navigation ${this.showNavigation ? 'show-navigation' : ''} hide-back></smileid-navigation>\n <h1 class=\"header-title text-2xl title-color font-bold\">\n Is your whole face visible and clear in this photo?\n </h1>\n <div class='section | flow'>\n <div class='selfie-review-container ${this.isPortraitCaptureView ? 'portrait' : 'landscape'}'>\n ${\n this.imageSrc\n ? `<img\n alt='your ID card'\n id='document-capture-review-image'\n src='${this.imageSrc}'\n width='396'\n />`\n : ''\n }\n </div>\n <div class='flow action-buttons'>\n <button data-variant='solid full-width' class='button' type='button' id='select-id-image'>\n Yes, use this\n </button>\n <button data-variant='ghost full-width' class='button retake-photo' type='button' id='re-capture-image'>\n No, Retake Selfie\n </button>\n </div>\n ${\n this.hideAttribution\n ? ''\n : `\n <powered-by-smile-id></powered-by-smile-id>\n `\n }\n </div>\n </div>\n `;\n}\n\nclass SelfieCaptureReview extends HTMLElement {\n constructor() {\n super();\n this.templateString = templateString.bind(this);\n this.render = () => this.templateString();\n\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n const template = document.createElement('template');\n template.innerHTML = this.render();\n this.shadowRoot.innerHTML = '';\n this.shadowRoot.appendChild(template.content.cloneNode(true));\n this.setUpEventListeners();\n }\n\n static get observedAttributes() {\n return ['hide-back-to-host', 'show-navigation', 'data-image'];\n }\n\n get hideBack() {\n return this.hasAttribute('hide-back-to-host');\n }\n\n get showNavigation() {\n return this.hasAttribute('show-navigation');\n }\n\n get themeColor() {\n return this.getAttribute('theme-color') || '#001096';\n }\n\n get hideAttribution() {\n return this.hasAttribute('hide-attribution');\n }\n\n get imageSrc() {\n return this.getAttribute('data-image');\n }\n\n get title() {\n return this.getAttribute('title') || 'Submit Front of ID';\n }\n\n handleBackEvents() {\n this.dispatchEvent(new CustomEvent('selfie-capture-review.cancelled'));\n }\n\n handleCloseEvents() {\n this.dispatchEvent(new CustomEvent('selfie-capture-review.close'));\n }\n\n attributeChangedCallback(name) {\n switch (name) {\n case 'data-image':\n case 'hide-back-to-host':\n case 'show-navigation':\n this.shadowRoot.innerHTML = this.render();\n this.setUpEventListeners();\n break;\n default:\n break;\n }\n }\n\n setUpEventListeners() {\n this.selectImage = this.shadowRoot.querySelector('#select-id-image');\n this.reCaptureImage = this.shadowRoot.querySelector('#re-capture-image');\n this.navigation = this.shadowRoot.querySelector('smileid-navigation');\n\n this.navigation.addEventListener('navigation.back', () => {\n this.handleBackEvents();\n });\n this.navigation.addEventListener('navigation.close', () => {\n this.handleCloseEvents();\n });\n\n this.selectImage.addEventListener('click', () => {\n this.dispatchEvent(\n new CustomEvent('selfie-capture-review.accepted', {\n detail: {},\n }),\n );\n });\n this.reCaptureImage.addEventListener('click', () => {\n this.dispatchEvent(\n new CustomEvent('selfie-capture-review.rejected', {\n detail: {},\n }),\n );\n });\n }\n}\n\nif (\n 'customElements' in window &&\n !customElements.get('selfie-capture-review')\n) {\n window.customElements.define('selfie-capture-review', SelfieCaptureReview);\n}\n\nexport default SelfieCaptureReview;\n", "import './selfie-capture';\nimport './selfie-capture-instructions';\nimport './selfie-capture-review';\nimport SmartCamera from '../../../domain/camera/src/SmartCamera';\nimport styles from '../../../styles/src/styles';\nimport packageJson from '../../../../package.json';\n\nconst COMPONENTS_VERSION = packageJson.version;\n\nconst smartCameraWeb = document.querySelector('smart-camera-web');\n\nasync function getPermissions(captureScreen, facingMode = 'user') {\n try {\n const stream = await SmartCamera.getMedia({\n audio: false,\n video: { facingMode },\n });\n const devices = await navigator.mediaDevices.enumerateDevices();\n const videoDevice = devices.find(\n (device) =>\n device.kind === 'videoinput' &&\n stream.getVideoTracks()[0].getSettings().deviceId === device.deviceId,\n );\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.camera-name', {\n detail: { cameraName: videoDevice?.label },\n }),\n );\n captureScreen.removeAttribute('data-camera-error');\n captureScreen.setAttribute('data-camera-ready', true);\n } catch (error) {\n captureScreen.removeAttribute('data-camera-ready');\n captureScreen.setAttribute(\n 'data-camera-error',\n SmartCamera.handleCameraError(error),\n );\n }\n}\n\nclass SelfieCaptureScreens extends HTMLElement {\n constructor() {\n super();\n this.activeScreen = null;\n smartCameraWeb?.dispatchEvent(new CustomEvent('metadata.initialize'));\n }\n\n connectedCallback() {\n this.innerHTML = `\n ${styles(this.themeColor)}\n <div>\n <selfie-capture-instructions theme-color='${this.themeColor}' ${this.showNavigation} ${this.hideAttribution} ${this.hideBack} hidden></selfie-capture-instructions>\n <selfie-capture theme-color='${this.themeColor}' ${this.showNavigation} ${this.allowAgentMode} ${this.allowAgentModeTests} ${this.hideAttribution} ${this.disableImageTests} hidden></selfie-capture>\n <selfie-capture-review theme-color='${this.themeColor}' ${this.showNavigation} ${this.hideAttribution} hidden></selfie-capture-review>\n </div>\n `;\n\n this._data = {\n images: [],\n meta: {\n libraryVersion: COMPONENTS_VERSION,\n },\n };\n\n this.selfieInstruction = this.querySelector('selfie-capture-instructions');\n this.selfieCapture = this.querySelector('selfie-capture');\n this.selfieReview = this.querySelector('selfie-capture-review');\n\n if (this.hideInstructions && !this.hasAttribute('hidden')) {\n getPermissions(this.selfieCapture, this.getAgentMode());\n }\n\n // If the initial screen is selfie-capture, we need to get permissions\n if (this.getAttribute('initial-screen') === 'selfie-capture') {\n getPermissions(this.selfieCapture, this.getAgentMode()).then(() =>\n this.setActiveScreen(this.selfieCapture),\n );\n } else if (this.hideInstructions) {\n this.setActiveScreen(this.selfieCapture);\n } else {\n this.setActiveScreen(this.selfieInstruction);\n }\n\n this.setUpEventListeners();\n }\n\n getAgentMode() {\n return this.inAgentMode ? 'environment' : 'user';\n }\n\n disconnectedCallback() {\n SmartCamera.stopMedia();\n if (this.activeScreen) {\n this.activeScreen.removeAttribute('hidden');\n }\n this.activeScreen = null;\n this.innerHTML = '';\n }\n\n setUpEventListeners() {\n this.selfieInstruction.addEventListener(\n 'selfie-capture-instructions.capture',\n async () => {\n await getPermissions(this.selfieCapture, this.getAgentMode()).then(() =>\n this.setActiveScreen(this.selfieCapture),\n );\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.selfie-capture-start'),\n );\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.selfie-origin', {\n detail: {\n imageOrigin: {\n environment: 'back_camera',\n user: 'front_camera',\n }[this.getAgentMode()],\n },\n }),\n );\n },\n );\n this.selfieInstruction.addEventListener(\n 'selfie-capture-instructions.cancelled',\n () => {\n this.handleBackEvents();\n },\n );\n\n this.selfieCapture.addEventListener('selfie-capture.cancelled', () => {\n this.selfieCapture.reset();\n SmartCamera.stopMedia();\n if (this.hideInstructions) {\n this.handleBackEvents();\n return;\n }\n\n this.setActiveScreen(this.selfieInstruction);\n });\n\n this.selfieCapture.addEventListener('selfie-capture.publish', (event) => {\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.selfie-capture-end'),\n );\n this.selfieReview.setAttribute('data-image', event.detail.referenceImage);\n this._data.images = event.detail.images;\n SmartCamera.stopMedia();\n this.setActiveScreen(this.selfieReview);\n });\n\n this.selfieReview.addEventListener(\n 'selfie-capture-review.rejected',\n async () => {\n smartCameraWeb?.dispatchEvent(\n new CustomEvent('metadata.selfie-capture-retry'),\n );\n this.selfieReview.removeAttribute('data-image');\n this._data.images = [];\n if (this.hideInstructions) {\n this.setActiveScreen(this.selfieCapture);\n await getPermissions(this.selfieCapture, this.getAgentMode());\n } else {\n this.setActiveScreen(this.selfieInstruction);\n }\n },\n );\n\n this.selfieReview.addEventListener(\n 'selfie-capture-review.accepted',\n async () => {\n this._publishSelectedImages();\n },\n );\n\n [this.selfieInstruction, this.selfieCapture, this.selfieReview].forEach(\n (screen) => {\n screen.addEventListener(\n `${screen.nodeName.toLowerCase()}.close`,\n () => {\n this.handleCloseEvent();\n },\n );\n },\n );\n }\n\n _publishSelectedImages() {\n this.dispatchEvent(\n new CustomEvent('selfie-capture-screens.publish', { detail: this._data }),\n );\n }\n\n get hideInstructions() {\n return this.hasAttribute('hide-instructions');\n }\n\n get hideAttribution() {\n return this.hasAttribute('hide-attribution') ? 'hide-attribution' : '';\n }\n\n get hideBackOfId() {\n return this.hasAttribute('hide-back-of-id');\n }\n\n get showNavigation() {\n return this.hasAttribute('show-navigation') ? 'show-navigation' : '';\n }\n\n get inAgentMode() {\n return this.getAttribute('allow-agent-mode') === 'true';\n }\n\n get allowAgentMode() {\n return this.inAgentMode ? \"allow-agent-mode='true'\" : '';\n }\n\n get allowAgentModeTests() {\n return this.hasAttribute('show-agent-mode-for-tests')\n ? 'show-agent-mode-for-tests'\n : '';\n }\n\n get hideBack() {\n return this.hasAttribute('hide-back-to-host') ||\n this.hasAttribute('hide-back')\n ? 'hide-back'\n : '';\n }\n\n get disableImageTests() {\n return this.hasAttribute('disable-image-tests')\n ? 'disable-image-tests'\n : '';\n }\n\n get themeColor() {\n return this.getAttribute('theme-color') || '#001096';\n }\n\n setActiveScreen(screen) {\n this.activeScreen?.setAttribute('hidden', '');\n screen.removeAttribute('hidden');\n this.activeScreen = screen;\n }\n\n handleBackEvents() {\n this.dispatchEvent(new CustomEvent('selfie-capture-screens.cancelled'));\n }\n\n handleCloseEvent() {\n this.dispatchEvent(new CustomEvent('selfie-capture-screens.close'));\n }\n\n static get observedAttributes() {\n return [\n 'title',\n 'hidden',\n 'show-navigation',\n 'hide-back-to-host',\n 'initial-screen',\n ];\n }\n\n attributeChangedCallback(name) {\n switch (name) {\n case 'title':\n case 'hidden':\n case 'initial-screen':\n this.connectedCallback();\n break;\n default:\n break;\n }\n }\n}\n\nif (\n 'customElements' in window &&\n !customElements.get('selfie-capture-screens')\n) {\n customElements.define('selfie-capture-screens', SelfieCaptureScreens);\n}\n\nexport default SelfieCaptureScreens;\n", "class PoweredBySmileId extends HTMLElement {\n constructor() {\n super();\n const template = document.createElement('template');\n template.innerHTML = `\n <p style='margin-inline: auto; max-inline-size: 10rem'>\n <svg viewBox=\"0 0 90 9\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M0.544 7V1.4H2.616C3.064 1.4 3.43467 1.47467 3.728 1.624C4.02133 1.77333 4.24 1.97867 4.384 2.24C4.528 2.50133 4.6 2.79467 4.6 3.12C4.6 3.42933 4.53067 3.71467 4.392 3.976C4.25333 4.232 4.03733 4.44 3.744 4.6C3.45067 4.75467 3.07467 4.832 2.616 4.832H1.568V7H0.544ZM1.568 4H2.552C2.90933 4 3.16533 3.92267 3.32 3.768C3.48 3.608 3.56 3.392 3.56 3.12C3.56 2.84267 3.48 2.62667 3.32 2.472C3.16533 2.312 2.90933 2.232 2.552 2.232H1.568V4ZM7.08025 7.096C6.69625 7.096 6.34958 7.008 6.04025 6.832C5.73625 6.656 5.49358 6.41333 5.31225 6.104C5.13625 5.78933 5.04825 5.42667 5.04825 5.016C5.04825 4.60533 5.13892 4.24533 5.32025 3.936C5.50158 3.62133 5.74425 3.376 6.04825 3.2C6.35758 3.024 6.70425 2.936 7.08825 2.936C7.46692 2.936 7.80825 3.024 8.11225 3.2C8.42158 3.376 8.66425 3.62133 8.84025 3.936C9.02158 4.24533 9.11225 4.60533 9.11225 5.016C9.11225 5.42667 9.02158 5.78933 8.84025 6.104C8.66425 6.41333 8.42158 6.656 8.11225 6.832C7.80292 7.008 7.45892 7.096 7.08025 7.096ZM7.08025 6.208C7.34692 6.208 7.57892 6.10933 7.77625 5.912C7.97358 5.70933 8.07225 5.41067 8.07225 5.016C8.07225 4.62133 7.97358 4.32533 7.77625 4.128C7.57892 3.92533 7.34958 3.824 7.08825 3.824C6.81625 3.824 6.58158 3.92533 6.38425 4.128C6.19225 4.32533 6.09625 4.62133 6.09625 5.016C6.09625 5.41067 6.19225 5.70933 6.38425 5.912C6.58158 6.10933 6.81358 6.208 7.08025 6.208ZM10.6632 7L9.50319 3.032H10.5192L11.2072 5.888L12.0072 3.032H13.1432L13.9432 5.888L14.6392 3.032H15.6552L14.4872 7H13.4232L12.5752 4.032L11.7272 7H10.6632ZM18.0886 7.096C17.6886 7.096 17.334 7.01067 17.0246 6.84C16.7153 6.66933 16.4726 6.42933 16.2966 6.12C16.1206 5.81067 16.0326 5.45333 16.0326 5.048C16.0326 4.63733 16.118 4.272 16.2886 3.952C16.4646 3.632 16.7046 3.384 17.0086 3.208C17.318 3.02667 17.6806 2.936 18.0966 2.936C18.486 2.936 18.83 3.02133 19.1286 3.192C19.4273 3.36267 19.6593 3.59733 19.8246 3.896C19.9953 4.18933 20.0806 4.51733 20.0806 4.88C20.0806 4.93867 20.078 5 20.0726 5.064C20.0726 5.128 20.07 5.19467 20.0646 5.264H17.0486C17.07 5.57333 17.1766 5.816 17.3686 5.992C17.566 6.168 17.8033 6.256 18.0806 6.256C18.2886 6.256 18.462 6.21067 18.6006 6.12C18.7446 6.024 18.8513 5.90133 18.9206 5.752H19.9606C19.886 6.00267 19.7606 6.232 19.5846 6.44C19.414 6.64267 19.2006 6.80267 18.9446 6.92C18.694 7.03733 18.4086 7.096 18.0886 7.096ZM18.0966 3.768C17.846 3.768 17.6246 3.84 17.4326 3.984C17.2406 4.12267 17.118 4.336 17.0646 4.624H19.0406C19.0246 4.36267 18.9286 4.15467 18.7526 4C18.5766 3.84533 18.358 3.768 18.0966 3.768ZM20.9419 7V3.032H21.8539L21.9499 3.776C22.0939 3.52 22.2885 3.31733 22.5339 3.168C22.7845 3.01333 23.0779 2.936 23.4139 2.936V4.016H23.1259C22.9019 4.016 22.7019 4.05067 22.5259 4.12C22.3499 4.18933 22.2112 4.30933 22.1099 4.48C22.0139 4.65067 21.9659 4.888 21.9659 5.192V7H20.9419ZM25.9714 7.096C25.5714 7.096 25.2168 7.01067 24.9074 6.84C24.5981 6.66933 24.3554 6.42933 24.1794 6.12C24.0034 5.81067 23.9154 5.45333 23.9154 5.048C23.9154 4.63733 24.0008 4.272 24.1714 3.952C24.3474 3.632 24.5874 3.384 24.8914 3.208C25.2008 3.02667 25.5634 2.936 25.9794 2.936C26.3688 2.936 26.7128 3.02133 27.0114 3.192C27.3101 3.36267 27.5421 3.59733 27.7074 3.896C27.8781 4.18933 27.9634 4.51733 27.9634 4.88C27.9634 4.93867 27.9608 5 27.9554 5.064C27.9554 5.128 27.9528 5.19467 27.9474 5.264H24.9314C24.9528 5.57333 25.0594 5.816 25.2514 5.992C25.4488 6.168 25.6861 6.256 25.9634 6.256C26.1714 6.256 26.3448 6.21067 26.4834 6.12C26.6274 6.024 26.7341 5.90133 26.8034 5.752H27.8434C27.7688 6.00267 27.6434 6.232 27.4674 6.44C27.2968 6.64267 27.0834 6.80267 26.8274 6.92C26.5768 7.03733 26.2914 7.096 25.9714 7.096ZM25.9794 3.768C25.7288 3.768 25.5074 3.84 25.3154 3.984C25.1234 4.12267 25.0008 4.336 24.9474 4.624H26.9234C26.9074 4.36267 26.8114 4.15467 26.6354 4C26.4594 3.84533 26.2408 3.768 25.9794 3.768ZM30.6487 7.096C30.2754 7.096 29.942 7.00533 29.6487 6.824C29.3554 6.64267 29.1234 6.39467 28.9527 6.08C28.782 5.76533 28.6967 5.408 28.6967 5.008C28.6967 4.608 28.782 4.25333 28.9527 3.944C29.1234 3.62933 29.3554 3.384 29.6487 3.208C29.942 3.02667 30.2754 2.936 30.6487 2.936C30.9474 2.936 31.2087 2.992 31.4327 3.104C31.6567 3.216 31.838 3.37333 31.9767 3.576V1.24H33.0007V7H32.0887L31.9767 6.432C31.8487 6.608 31.678 6.76267 31.4647 6.896C31.2567 7.02933 30.9847 7.096 30.6487 7.096ZM30.8647 6.2C31.1954 6.2 31.4647 6.09067 31.6727 5.872C31.886 5.648 31.9927 5.36267 31.9927 5.016C31.9927 4.66933 31.886 4.38667 31.6727 4.168C31.4647 3.944 31.1954 3.832 30.8647 3.832C30.5394 3.832 30.27 3.94133 30.0567 4.16C29.8434 4.37867 29.7367 4.66133 29.7367 5.008C29.7367 5.35467 29.8434 5.64 30.0567 5.864C30.27 6.088 30.5394 6.2 30.8647 6.2ZM38.3017 7.096C38.003 7.096 37.7417 7.04 37.5177 6.928C37.2937 6.816 37.1124 6.65867 36.9737 6.456L36.8617 7H35.9497V1.24H36.9737V3.6C37.1017 3.424 37.2697 3.26933 37.4777 3.136C37.691 3.00267 37.9657 2.936 38.3017 2.936C38.675 2.936 39.0084 3.02667 39.3017 3.208C39.595 3.38933 39.827 3.63733 39.9977 3.952C40.1684 4.26667 40.2537 4.624 40.2537 5.024C40.2537 5.424 40.1684 5.78133 39.9977 6.096C39.827 6.40533 39.595 6.65067 39.3017 6.832C39.0084 7.008 38.675 7.096 38.3017 7.096ZM38.0857 6.2C38.411 6.2 38.6804 6.09067 38.8937 5.872C39.107 5.65333 39.2137 5.37067 39.2137 5.024C39.2137 4.67733 39.107 4.392 38.8937 4.168C38.6804 3.944 38.411 3.832 38.0857 3.832C37.755 3.832 37.483 3.944 37.2697 4.168C37.0617 4.38667 36.9577 4.66933 36.9577 5.016C36.9577 5.36267 37.0617 5.648 37.2697 5.872C37.483 6.09067 37.755 6.2 38.0857 6.2ZM41.3051 8.76L42.2251 6.736H41.9851L40.4411 3.032H41.5531L42.6651 5.824L43.8251 3.032H44.9131L42.3931 8.76H41.3051Z\" fill=\"#001096\"/>\n <g clipPath=\"url(#clip0_1923_23296)\">\n <path d=\"M58.5141 6.02913C58.5644 6.37005 58.8092 6.77098 59.4839 6.77098C60.0578 6.77098 60.336 6.56623 60.336 6.23338C60.336 5.90053 60.142 5.75579 59.788 5.71292L58.5988 5.58482C57.5612 5.47387 56.9539 4.86819 56.9539 3.87872C56.9539 2.77779 57.7801 2.04401 59.4335 2.04401C61.2135 2.04401 61.9221 2.88874 61.9894 3.88679H60.3195C60.2687 3.51157 59.965 3.27253 59.442 3.27253C58.9783 3.27253 58.6577 3.44349 58.6577 3.75062C58.6577 3.99774 58.8097 4.18534 59.2141 4.21964L60.1844 4.30486C61.4918 4.41582 62.0397 5.04672 62.0397 6.0962C62.0397 7.21377 61.3477 7.999 59.4504 7.999C57.5532 7.999 56.9534 7.02667 56.8691 6.02862H58.5141V6.02913Z\" fill=\"#001096\" />\n <path d=\"M70.1965 5.28736V7.85484H68.5431V5.56019C68.5431 5.09925 68.3746 4.80069 67.9194 4.80069C67.4212 4.80069 67.2108 5.11639 67.2108 5.78159V7.85484H65.5824V5.56019C65.5824 5.09925 65.4133 4.80069 64.9581 4.80069C64.4605 4.80069 64.2496 5.11639 64.2496 5.78159V7.85484H62.5967V3.58932H64.2496V4.24644C64.5113 3.75171 64.9581 3.45265 65.6586 3.45265C66.3592 3.45265 66.8309 3.7855 67.0587 4.35689C67.3285 3.80265 67.7842 3.45265 68.5351 3.45265C69.6735 3.45265 70.197 4.16928 70.197 5.28736H70.1965Z\" fill=\"#001096\" />\n <path d=\"M70.9785 3.8535V2.18118H72.6319V3.8535H70.9785ZM70.9785 7.85476V4.2504H72.6319V7.85476H70.9785Z\" fill=\"#001096\" />\n <path d=\"M73.4121 7.85475V2.18167H75.065V7.85525H73.4121V7.85475Z\" fill=\"#001096\" />\n <path d=\"M78.7264 6.53958H80.3579C80.1968 7.3243 79.5696 7.99151 78.0179 7.99151C76.2294 7.99151 75.6221 6.8568 75.6221 5.71351C75.6221 4.48499 76.3391 3.45265 78.0179 3.45265C79.8653 3.45265 80.3629 4.59594 80.3629 5.77302C80.3629 5.91776 80.3539 6.05443 80.3374 6.13966H77.2336C77.3178 6.68583 77.5881 6.89059 78.0518 6.89059C78.3729 6.89059 78.6083 6.73526 78.7269 6.53908L78.7264 6.53958ZM77.2416 5.21877H78.8022C78.7519 4.77497 78.5404 4.52785 78.0428 4.52785C77.5791 4.52785 77.3348 4.70689 77.2416 5.21877Z\" fill=\"#001096\" />\n <path d=\"M83.5907 7.85476H81.8994L81.9034 2.18118H83.5902L83.5912 7.85476H83.5907Z\" fill=\"#001096\" />\n <path d=\"M89.9995 5.00535C89.9995 6.46434 89.1474 7.85475 87.3345 7.85475H84.3652V2.18167H87.3345C89.1479 2.18167 89.9995 3.54686 89.9995 5.00535ZM86.9376 6.5067C87.8401 6.5067 88.2364 5.99482 88.2364 5.00535C88.2364 4.01588 87.8226 3.52971 86.9376 3.52971H86.06V6.5067H86.9376Z\" fill=\"#001096\" />\n <path d=\"M52.2123 3.88737H48V7.86846H52.2123V3.88737Z\" fill=\"#001096\" />\n <path d=\"M53.2359 0C53.2165 0 53.1975 0.00201727 53.1786 0.00252159C53.1591 0.00252159 53.1402 0 53.1207 0C52.0457 0 51.0869 0.708567 51.0869 2.27044V3.8888H55.2882V2.27044C55.2882 0.708567 54.3174 0 53.2359 0Z\" fill=\"#FF9B00\" />\n </g>\n <defs>\n <clipPath id=\"clip0_1923_23296\">\n <rect width=\"42\" height=\"8\" fill=\"white\" transform=\"translate(48)\" />\n </clipPath>\n </defs>\n </svg>\n </p>\n `;\n\n this.attachShadow({ mode: 'open' }).appendChild(\n template.content.cloneNode(true),\n );\n }\n}\n\nif (\n window.customElements &&\n !window.customElements.get('powered-by-smile-id')\n) {\n window.customElements.define('powered-by-smile-id', PoweredBySmileId);\n}\n\nexport default PoweredBySmileId;\n", "import SmartCamera from '../../domain/camera/src/SmartCamera';\nimport styles from '../../styles/src/styles';\nimport '../attribution/PoweredBySmileId';\nimport '../navigation/src';\n\nfunction templateString() {\n return `\n ${styles(this.themeColor)}\n <style>\n .camera-permission-screen {\n padding-block: 2rem;\n display: flex;\n flex-direction: column;\n max-block-size: 100%;\n max-inline-size: 40ch;\n }\n .camera-permission {\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n align-items: center;\n margin-top: auto;\n margin-bottom: auto;\n }\n .camera-permission svg {\n flex-shrink: 0;\n margin-inline-end: 2rem;\n }\n .camera-permission p {\n margin-block: 0;\n text-align: center;\n }\n </style>\n <div class='camera-permission-screen flow center'>\n <smileid-navigation theme-color='${this.themeColor}' ${this.showNavigation ? 'show-navigation' : ''} ${this.hideBack ? 'hide-back' : ''}></smileid-navigation>\n <div class='flow center'>\n <p class='color-red | center' id='error'>\n </p>\n </div>\n <div class='section | flow camera-permission-wrapper'>\n <div class='center camera-permission'>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"43\" height=\"33\" viewBox=\"0 0 43 33\" fill=\"none\">\n <g clip-path=\"url(#clip0_658_1399)\">\n <path d=\"M6.36288 7.14178H36.6374C38.1923 7.14178 39.6835 7.7593 40.783 8.85849C41.8824 9.95768 42.5001 11.4485 42.5001 13.003V29.8478C42.5001 30.6838 42.1679 31.4856 41.5766 32.0767C40.9853 32.6679 40.1833 33 39.347 33H6.36288C4.80798 33 3.31676 32.3825 2.21728 31.2833C1.1178 30.1841 0.500122 28.6933 0.500122 27.1388L0.500122 13.003C0.500122 11.4485 1.1178 9.95768 2.21728 8.85849C3.31676 7.7593 4.80798 7.14178 6.36288 7.14178Z\" fill=\"#B2B2B2\"/>\n <path d=\"M10.454 23.1789C10.7438 21.9337 9.96906 20.6893 8.7235 20.3995C7.47794 20.1098 6.23325 20.8843 5.9434 22.1296C5.65355 23.3748 6.4283 24.6191 7.67386 24.9089C8.91942 25.1987 10.1641 24.4241 10.454 23.1789Z\" fill=\"#DBDBC4\"/>\n <path d=\"M10.0768 22.9365C10.2425 21.9024 9.53826 20.9298 8.50389 20.7642C7.46952 20.5985 6.49668 21.3025 6.331 22.3366C6.16532 23.3707 6.86954 24.3433 7.90391 24.509C8.93828 24.6746 9.91112 23.9706 10.0768 22.9365Z\" fill=\"#FF5805\"/>\n <path d=\"M10.9694 16.2784H5.20514C4.83782 16.2784 4.54004 16.576 4.54004 16.9433V18.5194C4.54004 18.8866 4.83782 19.1843 5.20514 19.1843H10.9694C11.3367 19.1843 11.6345 18.8866 11.6345 18.5194V16.9433C11.6345 16.576 11.3367 16.2784 10.9694 16.2784Z\" fill=\"#2D2B2A\"/>\n <path d=\"M37.9183 22.6813C37.9183 19.8492 37.9183 17.0418 37.9429 14.2097C37.9429 11.8948 37.9183 9.57985 37.9676 7.28955C37.5348 7.16853 37.0868 7.11047 36.6374 7.11716H36.0708C36.0954 9.87537 36.1201 12.6089 36.1201 15.3672C36.1201 20.9082 36.1201 26.4739 36.1447 32.0149V32.9754H37.8937C37.8937 29.5522 37.8937 26.1291 37.9183 22.6813Z\" fill=\"#DBDBC4\"/>\n <path d=\"M0.500136 12.9291C0.496683 12.9634 0.500492 12.9981 0.511315 13.0309C0.522139 13.0637 0.539736 13.0938 0.562964 13.1194C0.586192 13.1449 0.614532 13.1653 0.646146 13.1792C0.67776 13.1931 0.71194 13.2002 0.746471 13.2H10.4767C12.8169 13.2 12.1271 11.2545 15.1324 11.2545H41.9582C41.9989 11.2523 42.0385 11.2411 42.0742 11.2215C42.1099 11.2019 42.1408 11.1745 42.1644 11.1414C42.1881 11.1083 42.204 11.0702 42.2109 11.0301C42.2179 10.99 42.2157 10.9488 42.2045 10.9097C41.8333 9.80556 41.125 8.84568 40.1793 8.16529C39.2335 7.48491 38.0981 7.11831 36.933 7.11716H6.31363C5.55019 7.11716 4.79423 7.26749 4.0889 7.55957C3.38358 7.85164 2.7427 8.27975 2.20287 8.81944C1.66304 9.35913 1.23482 9.99983 0.942663 10.705C0.650508 11.4101 0.500136 12.1659 0.500136 12.9291Z\" fill=\"#5E646E\"/>\n <path d=\"M29.7154 1.3791H23.4585C21.4632 1.3791 19.7388 2.48731 19.394 4.01418L18.113 9.45671L18.1623 9.50597H35.0116C35.0362 9.50597 35.0608 9.48134 35.0362 9.45671L33.7799 4.01418C33.4104 2.48731 31.7107 1.3791 29.7154 1.3791Z\" fill=\"#5E646E\"/>\n <path d=\"M30.8977 4.06343V3.71865C30.8977 3.32677 30.742 2.95093 30.4649 2.67382C30.1877 2.39672 29.8117 2.24104 29.4197 2.24104H23.6555C23.2678 2.2475 22.8982 2.40603 22.6263 2.68244C22.3544 2.95885 22.2021 3.331 22.2021 3.71865V4.06343H30.8977Z\" fill=\"#2D2B2A\"/>\n <path d=\"M14.0731 4.72836H6.70771C6.4084 4.72836 6.16577 4.97093 6.16577 5.27015V6.63695C6.16577 6.93617 6.4084 7.17874 6.70771 7.17874H14.0731C14.3724 7.17874 14.615 6.93617 14.615 6.63695V5.27015C14.615 4.97093 14.3724 4.72836 14.0731 4.72836Z\" fill=\"#2D2B2A\"/>\n <path d=\"M8.99862 8.76717H7.12648C6.73194 8.76717 6.41211 9.08692 6.41211 9.48135V11.0181C6.41211 11.4125 6.73194 11.7322 7.12648 11.7322H8.99862C9.39315 11.7322 9.71299 11.4125 9.71299 11.0181V9.48135C9.71299 9.08692 9.39315 8.76717 8.99862 8.76717Z\" fill=\"#FCFCFC\"/>\n <path d=\"M8.77703 10.2448C8.77709 10.1521 8.75846 10.0604 8.72227 9.97507C8.68608 9.88977 8.63306 9.81263 8.56638 9.74827C8.4997 9.6839 8.42073 9.63363 8.33418 9.60047C8.24763 9.5673 8.15529 9.55191 8.06266 9.55522C7.97208 9.55522 7.88239 9.57305 7.79871 9.60771C7.71503 9.64236 7.63899 9.69315 7.57494 9.75718C7.5109 9.82121 7.46009 9.89723 7.42543 9.98089C7.39076 10.0646 7.37292 10.1542 7.37292 10.2448C7.37281 10.43 7.44469 10.608 7.57338 10.7413C7.70206 10.8745 7.8775 10.9526 8.06266 10.9589C8.25212 10.9589 8.43382 10.8837 8.56779 10.7498C8.70176 10.6158 8.77703 10.4342 8.77703 10.2448Z\" fill=\"#5E646E\"/>\n <path d=\"M26.9318 30.0202C33.7069 30.0202 39.1992 24.5293 39.1992 17.756C39.1992 10.9827 33.7069 5.49179 26.9318 5.49179C20.1566 5.49179 14.6643 10.9827 14.6643 17.756C14.6643 24.5293 20.1566 30.0202 26.9318 30.0202Z\" fill=\"#FCFCFC\"/>\n <path d=\"M26.9319 28.3455C32.7819 28.3455 37.5242 23.6044 37.5242 17.756C37.5242 11.9075 32.7819 7.16641 26.9319 7.16641C21.0818 7.16641 16.3395 11.9075 16.3395 17.756C16.3395 23.6044 21.0818 28.3455 26.9319 28.3455Z\" fill=\"#0A462F\"/>\n <path d=\"M26.9318 24.0358C30.401 24.0358 33.2133 21.2242 33.2133 17.756C33.2133 14.2877 30.401 11.4761 26.9318 11.4761C23.4626 11.4761 20.6503 14.2877 20.6503 17.756C20.6503 21.2242 23.4626 24.0358 26.9318 24.0358Z\" fill=\"#2D2B2A\"/>\n <path opacity=\"0.49\" d=\"M28.4098 19.1104C30.1376 19.1104 31.5383 17.7102 31.5383 15.9828C31.5383 14.2555 30.1376 12.8552 28.4098 12.8552C26.682 12.8552 25.2814 14.2555 25.2814 15.9828C25.2814 17.7102 26.682 19.1104 28.4098 19.1104Z\" fill=\"url(#paint0_linear_658_1399)\"/>\n <g style=\"mix-blend-mode:screen\" opacity=\"0.24\">\n <path d=\"M30.9717 14.6776C30.9717 14.9977 30.8445 15.3046 30.6182 15.5309C30.3918 15.7572 30.0848 15.8843 29.7647 15.8843C29.4445 15.8843 29.1375 15.7572 28.9112 15.5309C28.6848 15.3046 28.5576 14.9977 28.5576 14.6776C28.5576 14.5203 28.589 14.3645 28.6499 14.2195C28.7109 14.0744 28.8002 13.943 28.9126 13.8329C29.025 13.7228 29.1583 13.6363 29.3046 13.5783C29.4509 13.5204 29.6073 13.4922 29.7647 13.4955C29.922 13.4922 30.0784 13.5204 30.2247 13.5783C30.371 13.6363 30.5043 13.7228 30.6167 13.8329C30.7291 13.943 30.8184 14.0744 30.8794 14.2195C30.9403 14.3645 30.9717 14.5203 30.9717 14.6776Z\" fill=\"#00FFFF\"/>\n </g>\n </g>\n <defs>\n <linearGradient id=\"paint0_linear_658_1399\" x1=\"25.2617\" y1=\"15.9804\" x2=\"31.5383\" y2=\"15.9804\" gradientUnits=\"userSpaceOnUse\">\n <stop stop-color=\"#7F47DD\" stop-opacity=\"0.1\"/>\n <stop offset=\"0.99\" stop-color=\"#00FFFF\"/>\n </linearGradient>\n <clipPath id=\"clip0_658_1399\">\n <rect width=\"42\" height=\"33\" fill=\"white\" transform=\"translate(0.500122)\"/>\n </clipPath>\n </defs>\n </svg>\n <p class='text-2xl font-bold'>We need access to your camera so that we can capture your details.</p>\n <div class='flow action-buttons'>\n <button data-variant='solid full-width' class='button' type='button' id='request-camera-access'>\n Request Camera Access\n </button>\n ${this.hideAttribution ? '' : '<powered-by-smile-id></powered-by-smile-id>'}\n </div>\n </div>\n </div>\n </div>\n `;\n}\n\nclass CameraPermission extends HTMLElement {\n connectedCallback() {\n this.templateString = templateString.bind(this);\n this.render = () => this.templateString();\n this.attachShadow({ mode: 'open' });\n this.shadowRoot.innerHTML = this.render();\n this.setUpEventListeners();\n }\n\n setUpEventListeners() {\n const errorMessage = this.shadowRoot.querySelector('#error');\n const permissionButton = this.shadowRoot.getElementById(\n 'request-camera-access',\n );\n errorMessage.textContent = '';\n permissionButton.addEventListener('click', async () => {\n permissionButton.setAttribute('disabled', true);\n try {\n await SmartCamera.getMedia({\n audio: false,\n video: true,\n });\n this.dispatchEvent(new CustomEvent('camera-permission.granted'));\n } catch (error) {\n this.dispatchEvent(\n new CustomEvent('camera-permission.denied', { detail: error }),\n );\n errorMessage.textContent = SmartCamera.handleCameraError(error);\n }\n permissionButton.removeAttribute('disabled');\n });\n }\n\n get showNavigation() {\n return this.hasAttribute('show-navigation');\n }\n\n get hideAttribution() {\n return this.hasAttribute('hide-attribution');\n }\n\n get hideBack() {\n return this.hasAttribute('hide-back');\n }\n\n get themeColor() {\n return this.getAttribute('theme-color') || '#001096';\n }\n}\n\nif (window.customElements && !window.customElements.get('camera-permission')) {\n window.customElements.define('camera-permission', CameraPermission);\n}\n\nexport default CameraPermission;\n", "import styles from '../../../styles/src/styles';\nimport SmartCamera from '../../../domain/camera/src/SmartCamera';\n\nimport '../../document/src';\nimport '../../selfie/src';\nimport '../../camera-permission/CameraPermission';\nimport packageJson from '../../../../package.json';\n\nconst COMPONENTS_VERSION = packageJson.version;\n\nfunction scwTemplateString() {\n return `\n ${styles(this.themeColor)}\n <div>\n <camera-permission ${this.applyComponentThemeColor} ${this.title} ${this.showNavigation} ${this.hideInstructions ? '' : 'hidden'} ${this.hideAttribution}></camera-permission>\n <selfie-capture-screens ${this.applyComponentThemeColor} ${this.title} ${this.showNavigation} ${this.disableImageTests} ${this.hideAttribution} ${this.hideInstructions} hidden\n ${this.hideBackToHost} ${this.allowAgentMode} ${this.allowAgentModeTests}\n ></selfie-capture-screens>\n <document-capture-screens ${this.applyComponentThemeColor} document-type=${this.documentType} ${this.title} ${this.documentCaptureModes} ${this.showNavigation} ${this.hideAttribution}\n ${this.hideBackOfId} ${this.applyComponentThemeColor} hidden></document-capture-screens>\n </div>\n`;\n}\nclass SmartCameraWeb extends HTMLElement {\n constructor() {\n super();\n this.scwTemplateString = scwTemplateString.bind(this);\n this.render = () => this.scwTemplateString();\n this.attachShadow({ mode: 'open' });\n this.activeScreen = null;\n }\n\n connectedCallback() {\n this.shadowRoot.innerHTML = this.render();\n\n this._data = {\n images: [],\n meta: {\n libraryVersion: COMPONENTS_VERSION,\n },\n };\n\n if (\n 'mediaDevices' in navigator &&\n 'getUserMedia' in navigator.mediaDevices\n ) {\n this.setUpEventListeners();\n } else {\n this.shadowRoot.innerHTML =\n '<h1 class=\"error-message\">Your browser does not support this integration</h1>';\n }\n }\n\n disconnectedCallback() {\n SmartCamera.stopMedia();\n if (this.activeScreen) {\n this.activeScreen.removeAttribute('hidden');\n }\n this.activeScreen = null;\n this.shadowRoot.innerHTML = '';\n }\n\n static get observedAttributes() {\n return [\n 'allow-agent-mode',\n 'disable-image-tests',\n 'document-capture-modes',\n 'document-type',\n 'hide-attribution',\n 'hide-back-of-id',\n 'hide-back-to-host',\n 'show-navigation',\n 'theme-color',\n ];\n }\n\n attributeChangedCallback(name) {\n switch (name) {\n case 'allow-agent-mode':\n case 'disable-image-tests':\n case 'document-capture-modes':\n case 'document-type':\n case 'hide-attribution':\n case 'hide-back-of-id':\n case 'hide-back-to-host':\n case 'show-navigation':\n case 'theme-color':\n this.disconnectedCallback();\n this.shadowRoot.innerHTML = this.render();\n this.setUpEventListeners();\n break;\n default:\n break;\n }\n }\n\n setUpEventListeners() {\n this.cameraPermission = this.shadowRoot.querySelector('camera-permission');\n this.SelfieCaptureScreens = this.shadowRoot.querySelector(\n 'selfie-capture-screens',\n );\n this.documentCapture = this.shadowRoot.querySelector(\n 'document-capture-screens',\n );\n\n if (this.hideInstructions) {\n this.setActiveScreen(this.cameraPermission);\n } else {\n this.setActiveScreen(this.SelfieCaptureScreens);\n }\n this.cameraPermission.addEventListener('camera-permission.granted', () => {\n this.setActiveScreen(this.SelfieCaptureScreens);\n this.SelfieCaptureScreens.removeAttribute('data-camera-error');\n this.SelfieCaptureScreens.setAttribute('data-camera-ready', true);\n });\n\n this.SelfieCaptureScreens.addEventListener(\n 'selfie-capture-screens.publish',\n (event) => {\n this._data.images = event.detail.images;\n if (!this.captureId) {\n this._publishSelectedImages();\n } else {\n this.setActiveScreen(this.documentCapture);\n }\n },\n );\n\n this.SelfieCaptureScreens.addEventListener(\n 'selfie-capture-screens.cancelled',\n () => {\n if (this.hideInstructions) {\n this.setActiveScreen(this.cameraPermission);\n } else {\n this.handleBackEvents();\n }\n },\n );\n this.SelfieCaptureScreens.addEventListener(\n 'selfie-capture-screens.back',\n () => {\n if (!this.hideInstructions) {\n this.setActiveScreen(this.cameraPermission);\n }\n },\n );\n\n this.documentCapture.addEventListener(\n 'document-capture-screens.publish',\n (event) => {\n this._data.images = [...this._data.images, ...event.detail.images];\n this._publishSelectedImages();\n },\n );\n\n this.documentCapture.addEventListener(\n 'document-capture-screens.cancelled',\n () => {\n this.SelfieCaptureScreens.setAttribute(\n 'initial-screen',\n 'selfie-capture',\n );\n this.setActiveScreen(this.SelfieCaptureScreens);\n this.SelfieCaptureScreens.removeAttribute('data-camera-error');\n this.SelfieCaptureScreens.setAttribute('data-camera-ready', true);\n },\n );\n\n [\n this.cameraPermission,\n this.SelfieCaptureScreens,\n this.documentCapture,\n ].forEach((screen) => {\n screen.addEventListener(`${screen.nodeName.toLowerCase()}.close`, () =>\n this.handleCloseEvent(),\n );\n });\n this.documentCapture.addEventListener(\n 'document-capture-screens.back',\n () => {\n this.setActiveScreen(this.SelfieCaptureScreens);\n this.reset();\n },\n );\n }\n\n reset() {\n this.disconnectedCallback();\n this.connectedCallback();\n }\n\n handleBackEvents() {\n this.dispatchEvent(new CustomEvent('smart-camera-web.cancelled'));\n }\n\n _publishSelectedImages() {\n this.dispatchEvent(\n new CustomEvent('smart-camera-web.publish', { detail: this._data }),\n );\n }\n\n get captureId() {\n return this.hasAttribute('capture-id');\n }\n\n get documentType() {\n return this.getAttribute('document-type');\n }\n\n get isPortraitCaptureView() {\n return this.getAttribute('document-type') === 'GREEN_BOOK';\n }\n\n get hideInstructions() {\n return this.hasAttribute('hide-instructions') ? 'hide-instructions' : '';\n }\n\n get hideBackOfId() {\n return this.hasAttribute('hide-back-of-id') ? 'hide-back-of-id' : '';\n }\n\n get showNavigation() {\n return this.hasAttribute('show-navigation') ? 'show-navigation' : '';\n }\n\n get hideBackToHost() {\n return this.hasAttribute('hide-back-to-host') ||\n this.hasAttribute('hide-back')\n ? 'hide-back'\n : '';\n }\n\n get allowAgentMode() {\n return this.hasAttribute('allow-agent-mode')\n ? `allow-agent-mode=${this.getAttribute('allow-agent-mode')}`\n : '';\n }\n\n get allowAgentModeTests() {\n return this.hasAttribute('show-agent-mode-for-tests')\n ? 'show-agent-mode-for-tests'\n : '';\n }\n\n get title() {\n return this.hasAttribute('title')\n ? `title=${this.getAttribute('title')}`\n : '';\n }\n\n get documentCaptureModes() {\n return this.hasAttribute('document-capture-modes')\n ? `document-capture-modes='${this.getAttribute('document-capture-modes')}'`\n : '';\n }\n\n get disableImageTests() {\n return this.hasAttribute('disable-image-tests')\n ? 'disable-image-tests'\n : '';\n }\n\n get hideAttribution() {\n return this.hasAttribute('hide-attribution') ? 'hide-attribution' : '';\n }\n\n get hasThemeColor() {\n return (\n this.hasAttribute('theme-color') &&\n ![null, undefined, 'null', 'undefined'].includes(\n this.getAttribute('theme-color'),\n )\n );\n }\n\n get themeColor() {\n return this.hasThemeColor ? this.getAttribute('theme-color') : '#001096';\n }\n\n get applyComponentThemeColor() {\n return this.hasThemeColor ? `theme-color='${this.themeColor}'` : '';\n }\n\n setActiveScreen(screen) {\n this.activeScreen?.setAttribute('hidden', '');\n screen.removeAttribute('hidden');\n this.activeScreen = screen;\n }\n\n handleCloseEvent() {\n this.dispatchEvent(new CustomEvent('smart-camera-web.close'));\n }\n}\n\nif ('customElements' in window && !customElements.get('smart-camera-web')) {\n customElements.define('smart-camera-web', SmartCameraWeb);\n}\n\nexport default SmartCameraWeb;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["typography", "typography_default", "styles", "themeColor", "typography_default", "styles_default", "_SmartCamera", "constraints", "track", "videoDevices", "device", "hasBackCamera", "error", "matchedModelNumber", "modelNumber", "e", "__publicField", "SmartCamera", "SmartCamera_default", "IMAGE_TYPE", "Navigation", "shadow", "style", "backButton", "closeButton", "_a", "hasMoreThanNColors", "data", "n", "colors", "templateString", "styles_default", "documentCaptureScale", "DocumentCapture", "template", "SmartCamera_default", "__spreadProps", "__spreadValues", "error", "imageDetails", "video", "canvas", "previewCanvas", "image", "previewImage", "height", "intermediateCanvas", "enableImageTests", "context", "imageData", "stream", "videoExists", "videoContainer", "onVideoStart", "portrait", "scaleHeight", "scaleWidth", "heightScaleFactor", "widthScaleFactor", "scaleHeightOffset", "scaleWidthOffset", "width", "startX", "startY", "videoHeight", "videoWidth", "cropWidth", "cropHeight", "sourceCanvas", "destinationCanvas", "aspectRatio", "offsetX", "offsetY", "track", "value", "name", "templateString", "styles_default", "IdReview", "template", "name", "_SmartFileUpload", "numberOfBytes", "units", "exponent", "approx", "file", "resolve", "reject", "reader", "e", "files", "__publicField", "SmartFileUpload", "SmartFileUpload_default", "frontDocumentIcon", "backDocumentIcon", "templateString", "styles_default", "DocumentInstruction", "template", "event", "files", "fileData", "SmartFileUpload_default", "error", "value", "package_default", "COMPONENTS_VERSION", "package_default", "smartCameraWeb", "getPermissions", "captureScreen", "stream", "SmartCamera_default", "videoDevice", "device", "error", "DocumentCaptureScreens", "styles_default", "event", "IMAGE_TYPE", "screen", "_a", "name", "COMPONENTS_VERSION", "package_default", "DEFAULT_NO_OF_LIVENESS_FRAMES", "hasMoreThanNColors", "data", "n", "colors", "getLivenessFramesIndices", "totalNoOfFrames", "numberOfFramesRequired", "selectedFrames", "frameDivisor", "frameInterval", "replacementFrameIndex", "i", "a", "b", "lastFrameIndex", "templateString", "styles_default", "getPermissions", "captureScreen", "constraints", "stream", "SmartCamera_default", "videoDevice", "device", "error", "SelfieCaptureScreen", "template", "imageOutlineLength", "livenessFramesIndices", "imageIndex", "IMAGE_TYPE", "canvas", "image", "enableImageTests", "video", "context", "imageData", "videoExists", "videoContainer", "_a", "_b", "_c", "_d", "name", "templateString", "styles_default", "SelfieCaptureInstructions", "template", "templateString", "styles_default", "SelfieCaptureReview", "template", "name", "COMPONENTS_VERSION", "package_default", "smartCameraWeb", "getPermissions", "captureScreen", "facingMode", "stream", "SmartCamera_default", "videoDevice", "device", "error", "SelfieCaptureScreens", "styles_default", "event", "screen", "_a", "name", "PoweredBySmileId", "template", "templateString", "styles_default", "CameraPermission", "errorMessage", "permissionButton", "SmartCamera_default", "error", "COMPONENTS_VERSION", "package_default", "scwTemplateString", "styles_default", "SmartCameraWeb", "SmartCamera_default", "name", "event", "screen", "_a", "SmartCameraWeb_default"]
|
|
7
|
-
}
|