@microblink/blinkid-ux-manager 7.2.2 → 7.3.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"blinkid-ux-manager.js","sources":["../../../node_modules/.pnpm/ts-pattern@5.6.2/node_modules/ts-pattern/dist/index.js","../src/core/blinkid-ui-state.ts","../../feedback-stabilizer/dist/utils.js","../../feedback-stabilizer/dist/index.js","../src/core/utils.ts","../src/core/BlinkIdUxManager.ts","../../shared-components/src/renderWithOwner.ts","../src/ui/locales/en.ts","../src/ui/LocalizationContext.tsx","../../../node_modules/.pnpm/@solid-primitives+keyed@1.5.0_solid-js@1.9.5/node_modules/@solid-primitives/keyed/dist/index.js","../../../node_modules/.pnpm/@solid-primitives+props@3.1.11_solid-js@1.9.5/node_modules/@solid-primitives/props/dist/index.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/array.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/clamp.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/defaults.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/is-number.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/is-easing-list.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/wrap.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/easing.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/mix.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/noop.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/progress.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/offset.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/interpolate.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/is-cubic-bezier.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/is-easing-generator.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/is-function.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/is-string.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/time.es.js","../../../node_modules/.pnpm/@motionone+easing@10.18.0/node_modules/@motionone/easing/dist/cubic-bezier.es.js","../../../node_modules/.pnpm/@motionone+easing@10.18.0/node_modules/@motionone/easing/dist/steps.es.js","../../../node_modules/.pnpm/@motionone+animation@10.18.0/node_modules/@motionone/animation/dist/utils/easing.es.js","../../../node_modules/.pnpm/@motionone+animation@10.18.0/node_modules/@motionone/animation/dist/Animation.es.js","../../../node_modules/.pnpm/hey-listen@1.0.8/node_modules/hey-listen/dist/hey-listen.es.js","../../../node_modules/.pnpm/@motionone+types@10.17.1/node_modules/@motionone/types/dist/MotionValue.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/data.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/transforms.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/css-var.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/feature-detection.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/easing.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/keyframes.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/style.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/stop-animation.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/get-unit.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/animate-style.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/options.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/utils/resolve-elements.es.js","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/gestures/in-view.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/utils/has-changed.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/utils/is-variant.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/utils/resolve-variant.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/utils/schedule.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/utils/events.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/gestures/in-view.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/gestures/hover.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/gestures/press.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/index.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/style-object.es.js","../../../node_modules/.pnpm/@solid-primitives+refs@1.0.8_solid-js@1.9.5/node_modules/@solid-primitives/refs/dist/index.js","../../../node_modules/.pnpm/@solid-primitives+transition-group@1.0.5_solid-js@1.9.5/node_modules/@solid-primitives/transition-group/dist/index.js","../../../node_modules/.pnpm/solid-motionone@1.0.3_solid-js@1.9.5/node_modules/solid-motionone/dist/index.jsx","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../src/ui/feedbackMessages.ts","../src/ui/assets/reticles/card-back.svg?component-solid","../src/ui/assets/reticles/card-front.svg?component-solid","../src/ui/assets/reticles/done.svg?component-solid","../src/ui/assets/reticles/full.svg?component-solid","../src/ui/assets/reticles/passport-bottom.svg?component-solid","../src/ui/assets/reticles/passport-highlight.svg?component-solid","../src/ui/assets/reticles/passport-top.svg?component-solid","../src/ui/assets/reticles/searching.svg?component-solid","../src/ui/assets/reticles/spin.svg?component-solid","../src/ui/UiFeedbackOverlay.tsx","../src/ui/BlinkIdUiStoreContext.tsx","../../shared-components/src/SmartEnvironmentProvider.tsx","../../shared-components/src/Modal.tsx","../src/ui/assets/help/help_correct_framing.svg?component-solid","../src/ui/dialogs/OnboardingGuideModal.tsx","../src/ui/assets/help/help_fields_visible.svg?component-solid","../src/ui/assets/help/help_harsh_light.svg?component-solid","../src/ui/assets/help/help_keep_still.svg?component-solid","../src/ui/assets/icons/icon-question.svg?component-solid","../src/ui/dialogs/HelpModal.tsx","../src/ui/dialogs/ErrorModal.tsx","../src/ui/assets/demo-overlay.svg?component-solid","../src/ui/assets/microblink.svg?component-solid","../src/ui/BlinkIdFeedbackUi.tsx","../src/ui/createBlinkIdFeedbackUi.tsx","../src/index.ts"],"sourcesContent":["const t=Symbol.for(\"@ts-pattern/matcher\"),e=Symbol.for(\"@ts-pattern/isVariadic\"),n=\"@ts-pattern/anonymous-select-key\",r=t=>Boolean(t&&\"object\"==typeof t),i=e=>e&&!!e[t],s=(n,o,c)=>{if(i(n)){const e=n[t](),{matched:r,selections:i}=e.match(o);return r&&i&&Object.keys(i).forEach(t=>c(t,i[t])),r}if(r(n)){if(!r(o))return!1;if(Array.isArray(n)){if(!Array.isArray(o))return!1;let t=[],r=[],a=[];for(const s of n.keys()){const o=n[s];i(o)&&o[e]?a.push(o):a.length?r.push(o):t.push(o)}if(a.length){if(a.length>1)throw new Error(\"Pattern error: Using `...P.array(...)` several times in a single pattern is not allowed.\");if(o.length<t.length+r.length)return!1;const e=o.slice(0,t.length),n=0===r.length?[]:o.slice(-r.length),i=o.slice(t.length,0===r.length?Infinity:-r.length);return t.every((t,n)=>s(t,e[n],c))&&r.every((t,e)=>s(t,n[e],c))&&(0===a.length||s(a[0],i,c))}return n.length===o.length&&n.every((t,e)=>s(t,o[e],c))}return Reflect.ownKeys(n).every(e=>{const r=n[e];return(e in o||i(a=r)&&\"optional\"===a[t]().matcherType)&&s(r,o[e],c);var a})}return Object.is(o,n)},o=e=>{var n,s,a;return r(e)?i(e)?null!=(n=null==(s=(a=e[t]()).getSelectionKeys)?void 0:s.call(a))?n:[]:Array.isArray(e)?c(e,o):c(Object.values(e),o):[]},c=(t,e)=>t.reduce((t,n)=>t.concat(e(n)),[]);function a(...t){if(1===t.length){const[e]=t;return t=>s(e,t,()=>{})}if(2===t.length){const[e,n]=t;return s(e,n,()=>{})}throw new Error(`isMatching wasn't given the right number of arguments: expected 1 or 2, received ${t.length}.`)}function u(t){return Object.assign(t,{optional:()=>h(t),and:e=>m(t,e),or:e=>d(t,e),select:e=>void 0===e?y(t):y(e,t)})}function l(t){return Object.assign((t=>Object.assign(t,{[Symbol.iterator](){let n=0;const r=[{value:Object.assign(t,{[e]:!0}),done:!1},{done:!0,value:void 0}];return{next:()=>{var t;return null!=(t=r[n++])?t:r.at(-1)}}}}))(t),{optional:()=>l(h(t)),select:e=>l(void 0===e?y(t):y(e,t))})}function h(e){return u({[t]:()=>({match:t=>{let n={};const r=(t,e)=>{n[t]=e};return void 0===t?(o(e).forEach(t=>r(t,void 0)),{matched:!0,selections:n}):{matched:s(e,t,r),selections:n}},getSelectionKeys:()=>o(e),matcherType:\"optional\"})})}const f=(t,e)=>{for(const n of t)if(!e(n))return!1;return!0},g=(t,e)=>{for(const[n,r]of t.entries())if(!e(r,n))return!1;return!0};function m(...e){return u({[t]:()=>({match:t=>{let n={};const r=(t,e)=>{n[t]=e};return{matched:e.every(e=>s(e,t,r)),selections:n}},getSelectionKeys:()=>c(e,o),matcherType:\"and\"})})}function d(...e){return u({[t]:()=>({match:t=>{let n={};const r=(t,e)=>{n[t]=e};return c(e,o).forEach(t=>r(t,void 0)),{matched:e.some(e=>s(e,t,r)),selections:n}},getSelectionKeys:()=>c(e,o),matcherType:\"or\"})})}function p(e){return{[t]:()=>({match:t=>({matched:Boolean(e(t))})})}}function y(...e){const r=\"string\"==typeof e[0]?e[0]:void 0,i=2===e.length?e[1]:\"string\"==typeof e[0]?void 0:e[0];return u({[t]:()=>({match:t=>{let e={[null!=r?r:n]:t};return{matched:void 0===i||s(i,t,(t,n)=>{e[t]=n}),selections:e}},getSelectionKeys:()=>[null!=r?r:n].concat(void 0===i?[]:o(i))})})}function v(t){return\"number\"==typeof t}function b(t){return\"string\"==typeof t}function w(t){return\"bigint\"==typeof t}const S=u(p(function(t){return!0})),O=S,j=t=>Object.assign(u(t),{startsWith:e=>{return j(m(t,(n=e,p(t=>b(t)&&t.startsWith(n)))));var n},endsWith:e=>{return j(m(t,(n=e,p(t=>b(t)&&t.endsWith(n)))));var n},minLength:e=>j(m(t,(t=>p(e=>b(e)&&e.length>=t))(e))),length:e=>j(m(t,(t=>p(e=>b(e)&&e.length===t))(e))),maxLength:e=>j(m(t,(t=>p(e=>b(e)&&e.length<=t))(e))),includes:e=>{return j(m(t,(n=e,p(t=>b(t)&&t.includes(n)))));var n},regex:e=>{return j(m(t,(n=e,p(t=>b(t)&&Boolean(t.match(n))))));var n}}),K=j(p(b)),x=t=>Object.assign(u(t),{between:(e,n)=>x(m(t,((t,e)=>p(n=>v(n)&&t<=n&&e>=n))(e,n))),lt:e=>x(m(t,(t=>p(e=>v(e)&&e<t))(e))),gt:e=>x(m(t,(t=>p(e=>v(e)&&e>t))(e))),lte:e=>x(m(t,(t=>p(e=>v(e)&&e<=t))(e))),gte:e=>x(m(t,(t=>p(e=>v(e)&&e>=t))(e))),int:()=>x(m(t,p(t=>v(t)&&Number.isInteger(t)))),finite:()=>x(m(t,p(t=>v(t)&&Number.isFinite(t)))),positive:()=>x(m(t,p(t=>v(t)&&t>0))),negative:()=>x(m(t,p(t=>v(t)&&t<0)))}),E=x(p(v)),A=t=>Object.assign(u(t),{between:(e,n)=>A(m(t,((t,e)=>p(n=>w(n)&&t<=n&&e>=n))(e,n))),lt:e=>A(m(t,(t=>p(e=>w(e)&&e<t))(e))),gt:e=>A(m(t,(t=>p(e=>w(e)&&e>t))(e))),lte:e=>A(m(t,(t=>p(e=>w(e)&&e<=t))(e))),gte:e=>A(m(t,(t=>p(e=>w(e)&&e>=t))(e))),positive:()=>A(m(t,p(t=>w(t)&&t>0))),negative:()=>A(m(t,p(t=>w(t)&&t<0)))}),P=A(p(w)),T=u(p(function(t){return\"boolean\"==typeof t})),B=u(p(function(t){return\"symbol\"==typeof t})),_=u(p(function(t){return null==t})),k=u(p(function(t){return null!=t}));var N={__proto__:null,matcher:t,optional:h,array:function(...e){return l({[t]:()=>({match:t=>{if(!Array.isArray(t))return{matched:!1};if(0===e.length)return{matched:!0};const n=e[0];let r={};if(0===t.length)return o(n).forEach(t=>{r[t]=[]}),{matched:!0,selections:r};const i=(t,e)=>{r[t]=(r[t]||[]).concat([e])};return{matched:t.every(t=>s(n,t,i)),selections:r}},getSelectionKeys:()=>0===e.length?[]:o(e[0])})})},set:function(...e){return u({[t]:()=>({match:t=>{if(!(t instanceof Set))return{matched:!1};let n={};if(0===t.size)return{matched:!0,selections:n};if(0===e.length)return{matched:!0};const r=(t,e)=>{n[t]=(n[t]||[]).concat([e])},i=e[0];return{matched:f(t,t=>s(i,t,r)),selections:n}},getSelectionKeys:()=>0===e.length?[]:o(e[0])})})},map:function(...e){return u({[t]:()=>({match:t=>{if(!(t instanceof Map))return{matched:!1};let n={};if(0===t.size)return{matched:!0,selections:n};const r=(t,e)=>{n[t]=(n[t]||[]).concat([e])};if(0===e.length)return{matched:!0};var i;if(1===e.length)throw new Error(`\\`P.map\\` wasn't given enough arguments. Expected (key, value), received ${null==(i=e[0])?void 0:i.toString()}`);const[o,c]=e;return{matched:g(t,(t,e)=>{const n=s(o,e,r),i=s(c,t,r);return n&&i}),selections:n}},getSelectionKeys:()=>0===e.length?[]:[...o(e[0]),...o(e[1])]})})},intersection:m,union:d,not:function(e){return u({[t]:()=>({match:t=>({matched:!s(e,t,()=>{})}),getSelectionKeys:()=>[],matcherType:\"not\"})})},when:p,select:y,any:S,_:O,string:K,number:E,bigint:P,boolean:T,symbol:B,nullish:_,nonNullable:k,instanceOf:function(t){return u(p(function(t){return e=>e instanceof t}(t)))},shape:function(t){return u(p(a(t)))}};class W extends Error{constructor(t){let e;try{e=JSON.stringify(t)}catch(n){e=t}super(`Pattern matching error: no pattern matches value ${e}`),this.input=void 0,this.input=t}}const $={matched:!1,value:void 0};function z(t){return new I(t,$)}class I{constructor(t,e){this.input=void 0,this.state=void 0,this.input=t,this.state=e}with(...t){if(this.state.matched)return this;const e=t[t.length-1],r=[t[0]];let i;3===t.length&&\"function\"==typeof t[1]?i=t[1]:t.length>2&&r.push(...t.slice(1,t.length-1));let o=!1,c={};const a=(t,e)=>{o=!0,c[t]=e},u=!r.some(t=>s(t,this.input,a))||i&&!Boolean(i(this.input))?$:{matched:!0,value:e(o?n in c?c[n]:c:this.input,this.input)};return new I(this.input,u)}when(t,e){if(this.state.matched)return this;const n=Boolean(t(this.input));return new I(this.input,n?{matched:!0,value:e(this.input,this.input)}:$)}otherwise(t){return this.state.matched?this.state.value:t(this.input)}exhaustive(){if(this.state.matched)return this.state.value;throw new W(this.input)}run(){return this.exhaustive()}returnType(){return this}}export{W as NonExhaustiveError,N as P,N as Pattern,a as isMatching,z as match};\n//# sourceMappingURL=index.js.map\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport {\n DocumentClassInfo,\n DocumentRotation,\n InputImageAnalysisResult,\n ResultCompleteness,\n ScanningSettings,\n} from \"@microblink/blinkid-core\";\nimport { UiState } from \"@microblink/feedback-stabilizer\";\nimport { match, P } from \"ts-pattern\";\n\nexport type BlinkIdReticleType =\n | \"searching\"\n | \"processing\"\n | \"error\"\n | \"done\"\n | \"flip\"\n | \"move_top\"\n | \"move_left\"\n | \"move_right\";\n\nexport type BlinkIdUiStateKey =\n | \"FLIP_CARD\"\n | \"DOCUMENT_CAPTURED\"\n | \"SENSING_FRONT\"\n | \"SENSING_BACK\"\n | \"SENSING_DATA_PAGE\"\n | \"SENSING_TOP_PAGE\"\n | \"SENSING_LEFT_PAGE\"\n | \"SENSING_RIGHT_PAGE\"\n | \"MOVE_TOP\"\n | \"MOVE_LEFT\"\n | \"MOVE_RIGHT\"\n | \"DOCUMENT_FRAMING_CAMERA_TOO_FAR\"\n | \"DOCUMENT_FRAMING_CAMERA_TOO_CLOSE\"\n | \"DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP\"\n | \"DOCUMENT_TOO_CLOSE_TO_FRAME_EDGE\"\n | \"BLUR_DETECTED\"\n | \"GLARE_DETECTED\"\n | \"TOO_DARK\"\n | \"TOO_BRIGHT\"\n | \"OCCLUDED\"\n | \"FACE_PHOTO_OCCLUDED\"\n | \"UNSUPPORTED_DOCUMENT\"\n | \"SCAN_BARCODE\"\n | \"WRONG_TOP_PAGE\"\n | \"WRONG_LEFT_PAGE\"\n | \"WRONG_RIGHT_PAGE\"\n | \"WRONG_SIDE\";\n\n/**\n * Extended UI state for BlinkID.\n */\n\nexport type BlinkIdUiStateMap = {\n [K in BlinkIdUiStateKey]: UiState & {\n key: K;\n reticleType: BlinkIdReticleType;\n };\n};\n\nexport const firstSideCapturedStates: BlinkIdUiStateKey[] = [\n \"FLIP_CARD\",\n \"MOVE_LEFT\",\n \"MOVE_RIGHT\",\n \"MOVE_TOP\",\n] as const;\n\nexport type BlinkIdUiState = BlinkIdUiStateMap[keyof BlinkIdUiStateMap];\n\nexport const blinkIdUiStateMap: BlinkIdUiStateMap = {\n SENSING_FRONT: {\n key: \"SENSING_FRONT\",\n reticleType: \"searching\",\n minDuration: 1000,\n },\n SENSING_BACK: {\n key: \"SENSING_BACK\",\n reticleType: \"searching\",\n minDuration: 1000,\n },\n SENSING_DATA_PAGE: {\n key: \"SENSING_DATA_PAGE\",\n reticleType: \"searching\",\n minDuration: 1000,\n },\n SENSING_TOP_PAGE: {\n key: \"SENSING_TOP_PAGE\",\n reticleType: \"searching\",\n minDuration: 1000,\n },\n SENSING_LEFT_PAGE: {\n key: \"SENSING_LEFT_PAGE\",\n reticleType: \"searching\",\n minDuration: 1000,\n },\n SENSING_RIGHT_PAGE: {\n key: \"SENSING_RIGHT_PAGE\",\n reticleType: \"searching\",\n minDuration: 1000,\n },\n SCAN_BARCODE: {\n key: \"SCAN_BARCODE\",\n reticleType: \"processing\",\n minDuration: 1000,\n },\n // ID card captured, flip to back side\n FLIP_CARD: {\n key: \"FLIP_CARD\",\n reticleType: \"flip\",\n minDuration: 2000,\n singleEmit: true,\n },\n // Passport pages captured, move to the next page\n MOVE_TOP: {\n key: \"MOVE_TOP\",\n reticleType: \"move_top\",\n minDuration: 2000,\n singleEmit: true,\n },\n MOVE_LEFT: {\n key: \"MOVE_LEFT\",\n reticleType: \"move_left\",\n minDuration: 2000,\n singleEmit: true,\n },\n MOVE_RIGHT: {\n key: \"MOVE_RIGHT\",\n reticleType: \"move_right\",\n minDuration: 2000,\n singleEmit: true,\n },\n // Capturing all sides completed\n DOCUMENT_CAPTURED: {\n key: \"DOCUMENT_CAPTURED\",\n reticleType: \"done\",\n minDuration: 1000,\n singleEmit: true,\n },\n BLUR_DETECTED: {\n key: \"BLUR_DETECTED\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n GLARE_DETECTED: {\n key: \"GLARE_DETECTED\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n OCCLUDED: {\n key: \"OCCLUDED\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n FACE_PHOTO_OCCLUDED: {\n key: \"FACE_PHOTO_OCCLUDED\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n WRONG_SIDE: {\n key: \"WRONG_SIDE\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n WRONG_TOP_PAGE: {\n key: \"WRONG_TOP_PAGE\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n WRONG_LEFT_PAGE: {\n key: \"WRONG_LEFT_PAGE\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n WRONG_RIGHT_PAGE: {\n key: \"WRONG_RIGHT_PAGE\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n TOO_DARK: {\n key: \"TOO_DARK\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n TOO_BRIGHT: {\n key: \"TOO_BRIGHT\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n DOCUMENT_FRAMING_CAMERA_TOO_FAR: {\n key: \"DOCUMENT_FRAMING_CAMERA_TOO_FAR\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n DOCUMENT_FRAMING_CAMERA_TOO_CLOSE: {\n key: \"DOCUMENT_FRAMING_CAMERA_TOO_CLOSE\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP: {\n key: \"DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n DOCUMENT_TOO_CLOSE_TO_FRAME_EDGE: {\n key: \"DOCUMENT_TOO_CLOSE_TO_FRAME_EDGE\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n UNSUPPORTED_DOCUMENT: {\n key: \"UNSUPPORTED_DOCUMENT\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n} as const;\n\nexport type PartialProcessResult = {\n inputImageAnalysisResult: Partial<InputImageAnalysisResult>;\n resultCompleteness: Partial<ResultCompleteness>;\n};\n\nfunction isPassport(docClass: DocumentClassInfo | undefined) {\n return docClass?.type === \"passport\";\n}\n\nexport function getUiStateKey(\n frameProcessResult: PartialProcessResult,\n settings?: Partial<ScanningSettings>,\n) {\n return (\n match<PartialProcessResult, BlinkIdUiStateKey>(frameProcessResult)\n // Success states\n .with(\n {\n resultCompleteness: {\n scanningStatus: \"document-scanned\",\n },\n },\n () => \"DOCUMENT_CAPTURED\",\n )\n\n // unsupported document\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"unsupported-document\",\n },\n },\n () => \"UNSUPPORTED_DOCUMENT\",\n )\n\n // passport pages captured\n .with(\n {\n resultCompleteness: {\n scanningStatus: \"side-scanned\",\n },\n inputImageAnalysisResult: {\n documentClassInfo: P.when(isPassport),\n documentRotation: \"counter-clockwise-90\",\n },\n },\n () => \"MOVE_LEFT\",\n )\n .with(\n {\n resultCompleteness: {\n scanningStatus: \"side-scanned\",\n },\n inputImageAnalysisResult: {\n documentClassInfo: P.when(isPassport),\n documentRotation: \"clockwise-90\",\n },\n },\n () => \"MOVE_RIGHT\",\n )\n .with(\n {\n resultCompleteness: {\n scanningStatus: \"side-scanned\",\n },\n inputImageAnalysisResult: {\n documentClassInfo: P.when(isPassport),\n },\n },\n () => \"MOVE_TOP\",\n )\n\n // side captured on non-passport\n .with(\n {\n resultCompleteness: {\n scanningStatus: \"side-scanned\",\n },\n },\n () => \"FLIP_CARD\",\n )\n\n // framing\n .with(\n {\n inputImageAnalysisResult: {\n documentDetectionStatus: \"camera-angle-too-steep\",\n },\n },\n () => \"DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n documentDetectionStatus: \"camera-too-close\",\n },\n },\n () => \"DOCUMENT_FRAMING_CAMERA_TOO_CLOSE\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n documentDetectionStatus: \"camera-too-far\",\n },\n },\n () => \"DOCUMENT_FRAMING_CAMERA_TOO_FAR\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n documentDetectionStatus: \"document-too-close-to-camera-edge\",\n },\n },\n () => \"DOCUMENT_TOO_CLOSE_TO_FRAME_EDGE\",\n )\n\n // lighting\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"image-preprocessing-failed\",\n documentLightingStatus: P.when(\n (status) =>\n status === \"too-bright\" &&\n settings?.skipImagesWithInadequateLightingConditions,\n ),\n },\n },\n () => \"TOO_BRIGHT\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"image-preprocessing-failed\",\n documentLightingStatus: P.when(\n (status) =>\n status === \"too-dark\" &&\n settings?.skipImagesWithInadequateLightingConditions,\n ),\n },\n },\n () => \"TOO_DARK\",\n )\n\n // glare\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"image-preprocessing-failed\",\n glareDetectionStatus: P.when(\n (status) =>\n status === \"detected\" && settings?.skipImagesWithGlare,\n ),\n },\n },\n () => \"GLARE_DETECTED\",\n )\n\n // occluded\n .with(\n {\n inputImageAnalysisResult: {\n documentDetectionStatus: \"document-partially-visible\",\n },\n },\n () => \"OCCLUDED\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n documentHandOcclusionStatus: P.when(\n (status) =>\n status === \"detected\" && settings?.skipImagesOccludedByHand,\n ),\n },\n },\n () => \"OCCLUDED\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n missingMandatoryFields: P.when(\n (arr) => Array.isArray(arr) && arr.length > 0,\n ),\n },\n },\n () => \"OCCLUDED\",\n )\n // technically the same as the previous case\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"mandatory-field-missing\",\n },\n },\n () => \"OCCLUDED\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"invalid-characters-found\",\n },\n },\n () => \"OCCLUDED\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"mrz-parsing-failed\",\n },\n },\n () => \"OCCLUDED\",\n )\n\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"image-return-failed\",\n imageExtractionFailures: P.when(\n (arr) => Array.isArray(arr) && arr.includes(\"face\"),\n ),\n },\n },\n () => \"FACE_PHOTO_OCCLUDED\",\n )\n\n // blur\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"image-preprocessing-failed\",\n blurDetectionStatus: P.when(\n (status) => status === \"detected\" && settings?.skipImagesWithBlur,\n ),\n },\n },\n () => \"BLUR_DETECTED\",\n )\n\n // scan wrong side / page\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"second\",\n processingStatus: \"scanning-wrong-side\",\n documentClassInfo: P.when(isPassport),\n documentRotation: \"counter-clockwise-90\",\n },\n },\n () => \"WRONG_LEFT_PAGE\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"second\",\n processingStatus: \"scanning-wrong-side\",\n documentClassInfo: P.when(isPassport),\n documentRotation: \"clockwise-90\",\n },\n },\n () => \"WRONG_RIGHT_PAGE\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"second\",\n processingStatus: \"scanning-wrong-side\",\n documentClassInfo: P.when(isPassport),\n },\n },\n () => \"WRONG_TOP_PAGE\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"scanning-wrong-side\",\n },\n },\n () => \"WRONG_SIDE\",\n )\n\n // scan barcode\n .with(\n {\n resultCompleteness: {\n scanningStatus: \"scanning-barcode-in-progress\",\n },\n },\n () => \"SCAN_BARCODE\",\n )\n\n // scan passport second page (in frame)\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"second\",\n documentClassInfo: P.when(isPassport),\n documentRotation: \"counter-clockwise-90\",\n },\n },\n () => \"SENSING_LEFT_PAGE\",\n )\n // TODO: upside-down?\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"second\",\n documentClassInfo: P.when(isPassport),\n documentRotation: \"clockwise-90\",\n },\n },\n () => \"SENSING_RIGHT_PAGE\",\n )\n\n // sensing passport data page\n // TODO: this cannot occur\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"first\",\n documentClassInfo: P.when(isPassport),\n },\n },\n () => \"SENSING_DATA_PAGE\",\n )\n\n // passport side fallback\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"second\",\n documentClassInfo: P.when(isPassport),\n },\n },\n () => \"SENSING_TOP_PAGE\",\n )\n\n // scan front\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"first\",\n },\n },\n () => \"SENSING_FRONT\",\n )\n\n // scan back\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"second\",\n },\n // TODO: do we need this?\n resultCompleteness: {\n scanningStatus: \"scanning-side-in-progress\",\n },\n },\n () => \"SENSING_BACK\",\n )\n\n // fallback\n .otherwise((processResult) => {\n console.debug(\"Fallback to SENSING_FRONT\", processResult);\n\n return \"SENSING_FRONT\";\n })\n );\n}\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\nexport function getKeyWithHighestValue(obj) {\n const keys = Object.keys(obj);\n if (keys.length === 0) {\n throw new Error(\"No members in object!\");\n }\n // set default\n let maxKey = keys[0];\n let maxValue = -Infinity;\n for (const [key, value] of Object.entries(obj)) {\n if (value > maxValue) {\n maxValue = value;\n maxKey = key;\n }\n }\n return maxKey;\n}\nexport function getAverage(arr) {\n return arr.reduce((p, c) => p + c, 0) / arr.length;\n}\nexport const asError = (thrown) => {\n if (thrown instanceof Error)\n return thrown;\n try {\n return new Error(JSON.stringify(thrown));\n }\n catch {\n // fallback in case there's an error stringifying.\n // for example, due to circular references.\n return new Error(String(thrown));\n }\n};\n//# sourceMappingURL=utils.js.map","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\nimport { getKeyWithHighestValue } from \"./utils\";\nexport class FeedbackStabilizer {\n initialKey;\n uiStateMap;\n timeWindow = 3000;\n decayRate = 0.95;\n eventQueue = [];\n /** this is a special queue as min duration of the event can be longer than the `timeWindow` */\n singleEventQueue = [];\n // used for tracking current state\n currentKey;\n currentStateStartTime = performance.now();\n summedScores = {};\n scoreBoard = {};\n get currentState() {\n return this.uiStateMap[this.currentKey];\n }\n getEventQueue() {\n return structuredClone(this.eventQueue);\n }\n getScores() {\n return structuredClone(this.summedScores);\n }\n getScoreBoard() {\n return structuredClone(this.scoreBoard);\n }\n setTimeWindow(timeWindow) {\n this.timeWindow = timeWindow;\n }\n constructor(uiStateMap, initialKey, timeWindow, decayRate) {\n this.uiStateMap = uiStateMap;\n this.initialKey = initialKey;\n this.currentKey = initialKey;\n this.getNewUiState(initialKey);\n if (timeWindow) {\n this.timeWindow = timeWindow;\n }\n if (decayRate) {\n this.decayRate = decayRate;\n }\n }\n reset() {\n this.currentKey = this.initialKey;\n this.eventQueue = [];\n this.singleEventQueue = [];\n this.summedScores = {};\n }\n canShowNewUiState = () => {\n return (performance.now() - this.currentStateStartTime >=\n this.currentState.minDuration);\n };\n /**\n * Returns a weighted UI state based on the history\n */\n getNewUiState(incomingUiStateKey) {\n const now = performance.now();\n const initialWeight = this.uiStateMap[incomingUiStateKey].initialWeight;\n // create new event\n const uiStateEvent = {\n key: incomingUiStateKey,\n timeStamp: now,\n currentWeight: initialWeight ?? 1,\n singleEmit: this.uiStateMap[incomingUiStateKey].singleEmit,\n };\n // single emitted events are placed in a different queue and emitted once the previous event is done\n if (uiStateEvent.singleEmit) {\n this.singleEventQueue.push(uiStateEvent);\n }\n // if there is a single event in the queue, show it\n if (this.singleEventQueue.length > 0 && this.canShowNewUiState()) {\n const singleEvent = this.singleEventQueue.shift(); // we know it's not empty\n // clear the queue of regular events\n this.eventQueue = [];\n // early exit, no need to calculate the state\n this.currentKey = singleEvent.key;\n this.currentStateStartTime = now;\n return this.uiStateMap[singleEvent.key];\n }\n // place new event on stack\n this.eventQueue.push(uiStateEvent);\n // set up the scoreboard for current stack iteration\n this.scoreBoard = {};\n // start iterating from the oldest events\n this.eventQueue.forEach((eventInQueue) => {\n // delete and skip events outside of time window\n if (now - eventInQueue.timeStamp > this.timeWindow) {\n this.eventQueue.shift();\n return;\n }\n const relativeTime = eventInQueue.timeStamp / now;\n // Decay weight based on time, not only index.\n eventInQueue.currentWeight *= this.decayRate * relativeTime;\n // prefill board\n if (!this.scoreBoard[eventInQueue.key]) {\n this.scoreBoard[eventInQueue.key] = [];\n }\n // push the score on the current track\n this.scoreBoard[eventInQueue.key].push(eventInQueue.currentWeight); // we know it's not empty\n });\n // Return same state if under minimum duration\n if (!this.canShowNewUiState()) {\n return this.uiStateMap[this.currentKey];\n }\n // Otherwise calculate new UI state\n // We use this record to sum individual tracks\n this.summedScores = {};\n // score board is full, pick a winning state\n for (const trackKey in this.scoreBoard) {\n const track = this.scoreBoard[trackKey];\n if (!track) {\n throw new Error(\"no track - SHOULD NOT HAPPEN\");\n }\n if (!this.scoreBoard[trackKey]) {\n throw new Error(\"no score board for key\");\n }\n // TODO: See if relative amount makes sense\n const relativeAmount = track.length / this.eventQueue.length;\n const summedTrackScores = this.scoreBoard[trackKey].reduce((partialSum, a) => partialSum + a, 0);\n this.summedScores[trackKey] = summedTrackScores * relativeAmount;\n }\n // TODO: this sometimes fails with 0 keys - inspect!\n if (Object.keys(this.summedScores).length === 0) {\n return this.uiStateMap[this.currentKey];\n }\n const winningKey = getKeyWithHighestValue(this.summedScores);\n const winningState = this.uiStateMap[winningKey];\n // start tracking time if it's a different state\n if (winningState.key !== this.currentKey) {\n this.currentKey = winningKey;\n this.currentStateStartTime = now;\n }\n return winningState;\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nexport function getAverage(arr: number[]) {\n return arr.reduce((p, c) => p + c, 0) / arr.length;\n}\n\nexport const asError = (thrown: unknown): Error => {\n if (thrown instanceof Error) return thrown;\n try {\n return new Error(JSON.stringify(thrown));\n } catch {\n // fallback in case there's an error stringifying.\n // for example, due to circular references.\n return new Error(String(thrown));\n }\n};\n\nexport async function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport {\n BlinkIdScanningResult,\n BlinkIdSessionSettings,\n DocumentClassInfo,\n ProcessResultWithBuffer,\n RemoteScanningSession,\n} from \"@microblink/blinkid-core\";\nimport { type CameraManager } from \"@microblink/camera-manager\";\nimport { FeedbackStabilizer } from \"@microblink/feedback-stabilizer\";\nimport { BlinkIdProcessingError } from \"./BlinkIdProcessingError\";\nimport {\n BlinkIdUiState,\n BlinkIdUiStateKey,\n blinkIdUiStateMap,\n firstSideCapturedStates,\n getUiStateKey,\n} from \"./blinkid-ui-state\";\nimport { sleep } from \"./utils\";\nimport { DocumentClassFilter } from \"./DocumentClassFilter\";\n\n/**\n * Manages the UX of the BlinkID SDK.\n */\nexport class BlinkIdUxManager {\n declare cameraManager: CameraManager;\n declare scanningSession: RemoteScanningSession;\n declare showDemoOverlay: boolean;\n declare showProductionOverlay: boolean;\n declare uiState: BlinkIdUiState;\n declare rawUiStateKey: BlinkIdUiStateKey;\n declare feedbackStabilizer: FeedbackStabilizer<typeof blinkIdUiStateMap>;\n declare sessionSettings: BlinkIdSessionSettings;\n\n #successProcessResult: ProcessResultWithBuffer | undefined;\n #threadBusy = false;\n #timeoutId?: number;\n /** Timeout duration in ms */\n #timeoutDuration = 10000; // 10s\n\n #onUiStateChangedCallbacks = new Set<(uiState: BlinkIdUiState) => void>();\n #onResultCallbacks = new Set<(result: BlinkIdScanningResult) => void>();\n #onFrameProcessCallbacks = new Set<\n (frameResult: ProcessResultWithBuffer) => void\n >();\n #onErrorCallbacks = new Set<(errorState: BlinkIdProcessingError) => void>();\n #onDocumentFilteredCallbacks = new Set<\n (documentClassInfo: DocumentClassInfo) => void\n >();\n #documentClassFilter?: DocumentClassFilter;\n\n constructor(\n cameraManager: CameraManager,\n scanningSession: RemoteScanningSession,\n ) {\n this.cameraManager = cameraManager;\n this.scanningSession = scanningSession;\n this.feedbackStabilizer = new FeedbackStabilizer(\n blinkIdUiStateMap,\n \"SENSING_FRONT\",\n );\n this.uiState = this.feedbackStabilizer.currentState;\n void this.scanningSession.getSettings().then((settings) => {\n this.sessionSettings = settings;\n });\n void this.scanningSession.showDemoOverlay().then((showDemoOverlay) => {\n this.showDemoOverlay = showDemoOverlay;\n });\n void this.scanningSession\n .showProductionOverlay()\n .then((showProductionOverlay) => {\n this.showProductionOverlay = showProductionOverlay;\n });\n\n // clear timeout when we stop processing and add one when we start\n const unsubscribePlaybackState = this.cameraManager.subscribe(\n (s) => s.playbackState,\n (playbackState) => {\n console.debug(`⏯️ ${playbackState}`);\n if (playbackState !== \"capturing\") {\n this.clearScanTimeout();\n } else {\n // Trigger for initial scan and pause/resume\n console.debug(\"🔁 continuing timeout\");\n this.#setTimeout(this.uiState);\n }\n },\n );\n\n // We unsubscribe the video observer when the video element is removed from the DOM\n const unsubscribeVideoObserver = cameraManager.subscribe(\n (s) => s.videoElement,\n (videoElement) => {\n if (!videoElement) {\n console.debug(\"Removing timeout subscriptions\");\n this.reset();\n unsubscribeVideoObserver();\n unsubscribePlaybackState();\n }\n },\n );\n\n // will only trigger if the camera manager is processing frames\n cameraManager.addFrameCaptureCallback(this.#frameCaptureCallback);\n }\n\n /**\n * Indicates whether the UI should display the demo overlay. Controlled by the license property.\n */\n getShowDemoOverlay(): boolean {\n return this.showDemoOverlay;\n }\n\n /**\n * Indicates whether the UI should display the production overlay. Controlled by the license property.\n */\n getShowProductionOverlay(): boolean {\n return this.showProductionOverlay;\n }\n\n /**\n * Adds a callback function to be executed when the UI state changes.\n * @param callback - Function to be called when UI state changes. Receives the new UI state as parameter.\n * @returns A cleanup function that removes the callback when called.\n * @example\n * const cleanup = manager.addOnUiStateChangedCallback((newState) => {\n * console.log('UI state changed to:', newState);\n * });\n *\n * cleanup();\n */\n addOnUiStateChangedCallback(callback: (uiState: BlinkIdUiState) => void) {\n this.#onUiStateChangedCallbacks.add(callback);\n return () => {\n this.#onUiStateChangedCallbacks.delete(callback);\n };\n }\n\n /**\n * Registers a callback function to be called when a scan result is available.\n * @param callback - A function that will be called with the scan result.\n * @returns A cleanup function that, when called, will remove the registered callback.\n *\n * @example\n *\n * const cleanup = manager.addOnResultCallback((result) => {\n * console.log('Scan result:', result);\n * });\n *\n * // Later, to remove the callback:\n * cleanup();\n */\n addOnResultCallback(callback: (result: BlinkIdScanningResult) => void) {\n this.#onResultCallbacks.add(callback);\n return () => {\n this.#onResultCallbacks.delete(callback);\n };\n }\n\n /**\n * Registers a callback function to filter document classes.\n * @param callback - A function that will be called with the document class info.\n * @returns A cleanup function that, when called, will remove the registered callback.\n *\n * @example\n * const cleanup = manager.addDocumentClassFilter((docClassInfo) => {\n * return docClassInfo.country === 'usa';\n * });\n *\n * // Later, to remove the callback:\n * cleanup();\n */\n addDocumentClassFilter(callback: DocumentClassFilter) {\n this.#documentClassFilter = callback;\n return () => {\n this.#documentClassFilter = undefined;\n };\n }\n\n /**\n * Registers a callback function to be called when a frame is processed.\n * @param callback - A function that will be called with the frame analysis result.\n * @returns A cleanup function that, when called, will remove the registered callback.\n *\n * @example\n * const cleanup = manager.addOnFrameProcessCallback((frameResult) => {\n * console.log('Frame processed:', frameResult);\n * });\n *\n * // Later, to remove the callback:\n * cleanup();\n */\n addOnFrameProcessCallback(\n callback: (frameResult: ProcessResultWithBuffer) => void,\n ) {\n this.#onFrameProcessCallbacks.add(callback);\n return () => {\n this.#onFrameProcessCallbacks.delete(callback);\n };\n }\n\n /**\n * Registers a callback function to be called when an error occurs during processing.\n * @param callback - A function that will be called with the error state.\n * @returns A cleanup function that, when called, will remove the registered callback.\n *\n * @example\n * const cleanup = manager.addOnErrorCallback((error) => {\n * console.error('Processing error:', error);\n * });\n *\n * // Later, to remove the callback:\n * cleanup();\n */\n addOnErrorCallback(callback: (errorState: BlinkIdProcessingError) => void) {\n this.#onErrorCallbacks.add(callback);\n return () => {\n this.#onErrorCallbacks.delete(callback);\n };\n }\n\n #invokeOnErrorCallbacks = (errorState: BlinkIdProcessingError) => {\n for (const callback of this.#onErrorCallbacks) {\n try {\n callback(errorState);\n } catch (e) {\n console.error(\"Error in onError callback\", e);\n }\n }\n };\n\n addOnDocumentFilteredCallback(\n callback: (documentClassInfo: DocumentClassInfo) => void,\n ) {\n this.#onDocumentFilteredCallbacks.add(callback);\n return () => {\n this.#onDocumentFilteredCallbacks.delete(callback);\n };\n }\n\n #invokeOnDocumentFilteredCallbacks = (\n documentClassInfo: DocumentClassInfo,\n ) => {\n for (const callback of this.#onDocumentFilteredCallbacks) {\n try {\n callback(documentClassInfo);\n } catch (e) {\n console.error(\"Error in onDocumentFiltered callback\", e);\n }\n }\n };\n\n #invokeOnResultCallbacks = (result: BlinkIdScanningResult) => {\n for (const callback of this.#onResultCallbacks) {\n try {\n callback(result);\n } catch (e) {\n console.error(\"Error in onResult callback\", e);\n }\n }\n };\n\n #invokeOnFrameProcessCallbacks = (frameResult: ProcessResultWithBuffer) => {\n for (const callback of this.#onFrameProcessCallbacks) {\n try {\n callback(frameResult);\n } catch (e) {\n console.error(\"Error in onFrameProcess callback\", e);\n }\n }\n };\n\n #invokeOnUiStateChangedCallbacks = (uiState: BlinkIdUiState) => {\n for (const callback of this.#onUiStateChangedCallbacks) {\n try {\n callback(uiState);\n } catch (e) {\n console.error(\"Error in onUiStateChanged callback\", e);\n }\n }\n };\n\n #frameCaptureCallback = async (imageData: ImageData) => {\n if (this.#threadBusy) {\n return;\n }\n\n this.#threadBusy = true;\n\n // https://issues.chromium.org/issues/379999322\n const imageDataLike = {\n data: imageData.data,\n width: imageData.width,\n height: imageData.height,\n colorSpace: \"srgb\",\n } satisfies ImageData;\n\n /**\n * `scanningSession.process()` errors on calls after the document is captured and\n * the success state is placed on the queue to be shown after the current message's\n * minimum duration is reached.\n *\n * However, we still need to call `#handleUiStateChange()` to update the UI state, so\n * we stop the loop here by not setting `this.#threadBusy` to `true` and manually\n * calling `#handleUiStateChange()` with the `DOCUMENT_CAPTURED` state after the\n * minimum duration of the state is reached.\n */\n if (this.#successProcessResult) {\n window.setTimeout(() => {\n if (!this.#successProcessResult) {\n throw new Error(\"No success process result, should not happen\");\n }\n this.#handleUiStateChanges(this.#successProcessResult);\n }, blinkIdUiStateMap.DOCUMENT_CAPTURED.minDuration);\n return;\n }\n\n const processResult = await this.scanningSession.process(imageDataLike);\n\n this.#threadBusy = false;\n\n // document class filter\n if (this.#documentClassFilter !== undefined) {\n const documentClassInfo = this.#extractDocumentClassInfo(processResult);\n\n if (\n this.#isDocumentClassified(documentClassInfo) &&\n !this.#documentClassFilter(documentClassInfo)\n ) {\n this.#invokeOnDocumentFilteredCallbacks(documentClassInfo);\n }\n }\n\n // Handle UI state changes\n this.#handleUiStateChanges(processResult);\n this.#invokeOnFrameProcessCallbacks(processResult);\n\n return processResult.arrayBuffer;\n };\n\n /**\n * Set the duration of the timeout in milliseconds.\n */\n setTimeoutDuration(duration: number) {\n this.#timeoutDuration = duration;\n }\n\n #setTimeout = (uiState: BlinkIdUiState) => {\n this.clearScanTimeout();\n console.debug(`⏳🟢 starting timeout for ${uiState.key}`);\n\n this.#timeoutId = window.setTimeout(() => {\n this.cameraManager.stopFrameCapture();\n\n this.#invokeOnErrorCallbacks(\"timeout\");\n\n // Reset the feedback stabilizer to clear the state\n // We handle this as a new scan attempt\n\n this.feedbackStabilizer.reset();\n this.uiState = this.feedbackStabilizer.currentState;\n }, this.#timeoutDuration);\n };\n\n #handleUiStateChanges = (processResult: ProcessResultWithBuffer) => {\n const nextUiStateKey = getUiStateKey(\n processResult,\n this.sessionSettings.scanningSettings,\n );\n\n if (nextUiStateKey === \"DOCUMENT_CAPTURED\") {\n // TODO: check if the buffer is still reachable\n this.#successProcessResult = processResult;\n }\n\n this.rawUiStateKey = nextUiStateKey;\n\n const newUiState = this.feedbackStabilizer.getNewUiState(nextUiStateKey);\n\n // Skip if the state is the same\n if (newUiState.key === this.uiState.key) {\n return;\n }\n\n this.uiState = newUiState;\n\n this.#invokeOnUiStateChangedCallbacks(newUiState);\n void this.#handleUiStateChange(newUiState);\n };\n\n // Side-effects are handled here\n #handleUiStateChange = async (uiState: BlinkIdUiState) => {\n this.#setTimeout(uiState);\n\n // Handle all first side captured states to display both the\n // animation to reposition the document and the success animation\n if (firstSideCapturedStates.includes(uiState.key)) {\n this.cameraManager.stopFrameCapture();\n // we need to wait for the compound duration\n // The DOCUMENT_CAPTURED state is the checkbox animation\n\n await sleep(\n uiState.minDuration + blinkIdUiStateMap.DOCUMENT_CAPTURED.minDuration,\n );\n await this.cameraManager.startFrameCapture();\n return;\n }\n\n // handle UNSUPPORTED_DOCUMENT\n if (uiState.key === \"UNSUPPORTED_DOCUMENT\") {\n this.cameraManager.stopFrameCapture();\n return;\n }\n\n // handle DOCUMENT_CAPTURED\n if (uiState.key === \"DOCUMENT_CAPTURED\") {\n this.cameraManager.stopFrameCapture();\n await sleep(uiState.minDuration); // allow animation to play out\n\n const result = await this.scanningSession.getResult();\n this.#invokeOnResultCallbacks(result);\n return;\n }\n };\n\n #extractDocumentClassInfo(processResult: ProcessResultWithBuffer) {\n return processResult.inputImageAnalysisResult.documentClassInfo;\n }\n\n #isDocumentClassified(documentClassInfo: DocumentClassInfo): boolean {\n return (\n documentClassInfo?.country !== undefined &&\n documentClassInfo?.type !== undefined\n );\n }\n\n /**\n * Clears any active timeout.\n */\n clearScanTimeout = () => {\n console.debug(\"⏳🔴 clearing timeout\");\n window.clearTimeout(this.#timeoutId);\n };\n\n /**\n * Resets the manager and clears all callbacks.\n *\n * Does not reset the camera manager or the BlinkID core instance.\n */\n reset() {\n this.clearScanTimeout();\n this.#threadBusy = false;\n this.#successProcessResult = undefined;\n this.#onUiStateChangedCallbacks.clear();\n this.#onResultCallbacks.clear();\n this.#onFrameProcessCallbacks.clear();\n this.#onErrorCallbacks.clear();\n this.#onDocumentFilteredCallbacks.clear();\n }\n}\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { JSX, Owner, createRoot } from \"solid-js\";\nimport { MountableElement, insert } from \"solid-js/web\";\n\n/**\n * A custom render function that allows you to specify the owner of the rendered component.\n * This is useful when you want to render a component into a different owner than the current one.\n *\n * Discussion: https://discord.com/channels/722131463138705510/1346100647824724008\n *\n * @param code The JSX code to render\n * @param element the element to render the code into\n * @param owner the SolidJS owner\n */\nexport const renderWithOwner = (\n code: () => JSX.Element,\n element: MountableElement,\n owner: Owner | null,\n) => {\n return createRoot((dispose) => {\n insert(element, code(), element.firstChild ? null : undefined);\n\n return () => {\n dispose();\n element.textContent = \"\";\n };\n }, owner);\n};\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nexport default {\n scan_the_front_side: \"Scan the front side of the document\",\n scan_data_page: \"Scan the data page of the document\",\n scan_top_page: \"Scan the top page\",\n scan_left_page: \"Scan the left page\",\n scan_right_page: \"Scan the right page\",\n flip_document: \"Flip the document\",\n wrong_top: \"Move to the top page\",\n wrong_left: \"Move to the left page\",\n wrong_right: \"Move to the right page\",\n flip_to_back_side: \"Flip to the back side\",\n move_top: \"Move to the page on top\",\n move_left: \"Move to the page on the left\",\n move_right: \"Move to the page on the right\",\n scan_the_back_side: \"Scan the back side of the document\",\n scan_the_barcode: \"Scan the barcode\",\n move_closer: \"Move closer\",\n move_farther: \"Move farther\",\n camera_angle_too_steep: \"Keep document parallel to phone\",\n face_photo_not_fully_visible: \"Keep face photo fully visible\",\n document_too_close_to_edge: \"Move the document from the edge\",\n blur_detected: \"Keep document and phone still\",\n glare_detected: \"Tilt or move document to remove reflection\",\n occluded: \"Keep the document fully visible\",\n too_dark: \"Move to brighter spot\",\n too_bright: \"Move to spot with less lighting\",\n scan_unsuccessful: \"Scan unsuccessful\",\n scan_unsuccessful_details: \"Unable to read the document. Please try again.\",\n document_not_recognized: \"Document not recognized\",\n document_not_recognized_details:\n \"Scan the front side of a supported document.\",\n document_filtered: \"Document not accepted\",\n document_filtered_details: \"Try scanning a different document.\",\n onboarding_modal_title: \"Keep all the details visible\",\n onboarding_modal_details:\n \"Make sure you keep the document well lit. All document fields should be visible on the camera screen.\",\n onboarding_modal_btn: \"Start scanning\",\n help_modal_title_1: \"Keep all the fields visible\",\n help_modal_details_1:\n \"Make sure you aren’t covering parts of the document with a finger, including the bottom lines. Also, watch out for hologram reflections that go over the document fields.\",\n help_modal_title_2: \"Watch out for harsh light\",\n help_modal_details_2:\n \"Avoid direct harsh light because it reflects from the document and can make parts of the document unreadable. If you can’t read data on the document, it won’t be visible to the camera either.\",\n help_modal_title_3: \"Keep still while scanning\",\n help_modal_details_3:\n \"Try to keep the phone and document still while scanning. Moving either can blur the image and make data on the document unreadable.\",\n help_modal_back_btn: \"Back\",\n help_modal_next_btn: \"Next\",\n help_modal_done_btn: \"Done\",\n help_aria_label: \"Help\",\n help_tooltip: \"Need help?\",\n alert_retry_btn: \"Retry\",\n alert_cancel_btn: \"Cancel\",\n} as const;\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport {\n ParentComponent,\n createContext,\n createEffect,\n useContext,\n} from \"solid-js\";\nimport { SetStoreFunction, createStore } from \"solid-js/store\";\n\nimport enLocaleStrings from \"./locales/en\";\n\nexport type LocaleRecord = typeof enLocaleStrings;\n\nexport type LocalizationStrings = {\n // This allows for autocomplete for defaults, but also overriding\n // https://twitter.com/mattpocockuk/status/1709281782325977101\n // eslint-disable-next-line @typescript-eslint/ban-types\n [K in keyof LocaleRecord]: LocaleRecord[K] | (string & {});\n};\n\nconst LocalizationContext = createContext<{\n t: LocalizationStrings;\n updateLocalization: SetStoreFunction<LocalizationStrings>;\n}>();\n\nexport const LocalizationProvider: ParentComponent<{\n userStrings?: Partial<LocalizationStrings>;\n}> = (props) => {\n const [localizationStore, updateLocalizationStore] =\n // avoid initing with original as proxying to the original object will\n // mutate the original object on store updates\n createStore<LocalizationStrings>({} as LocalizationStrings);\n\n const mergedStrings = () => ({\n ...enLocaleStrings,\n ...props.userStrings,\n });\n\n // update store as a side-effects of userStrings changing\n createEffect(() => {\n updateLocalizationStore(mergedStrings());\n });\n\n const contextValue = {\n t: localizationStore,\n updateLocalization: updateLocalizationStore,\n };\n\n return (\n <LocalizationContext.Provider value={contextValue}>\n {props.children}\n </LocalizationContext.Provider>\n );\n};\n\nexport function useLocalization() {\n const ctx = useContext(LocalizationContext);\n if (!ctx) {\n throw new Error(\"LocalizationContext.Provider not in scope.\");\n }\n return ctx;\n}\n","import { createMemo, createRoot, createSignal, on, onCleanup, untrack, $TRACK, mapArray, } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(list) {\n for (const o of list)\n o.dispose();\n}\n/**\n * Reactively maps an array by specified key with a callback function - underlying helper for the `<Key>` control flow.\n * @param list input list of values to map\n * @param keyFn key getter, items will be identified by it's value. changing the value is changing the item.\n * @param mapFn reactive function used to create mapped output item. Similar to `Array.prototype.map` but both item and index are signals, that could change over time.\n * @param options a fallback for when the input list is empty or missing\n * @returns mapped input array signal\n * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyed#keyArray\n */\nexport function keyArray(items, keyFn, mapFn, options = {}) {\n // SERVER NOOP\n if (isServer) {\n const itemsRef = items();\n let s = [];\n if (itemsRef && itemsRef.length) {\n for (let i = 0, len = itemsRef.length; i < len; i++)\n s.push(mapFn(() => itemsRef[i], () => i));\n }\n else if (options.fallback)\n s = [options.fallback()];\n return () => s;\n }\n const prev = new Map();\n onCleanup(() => dispose(prev.values()));\n return () => {\n const list = items() || [];\n list[$TRACK]; // top level store tracking\n return untrack(() => {\n // fast path for empty arrays\n if (!list.length) {\n dispose(prev.values());\n prev.clear();\n if (!options.fallback)\n return [];\n const fb = createRoot(dispose => {\n prev.set(FALLBACK, { dispose });\n return options.fallback();\n });\n return [fb];\n }\n const result = new Array(list.length);\n // fast path for new create or after fallback\n const fb = prev.get(FALLBACK);\n if (!prev.size || fb) {\n fb?.dispose();\n prev.delete(FALLBACK);\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n const key = keyFn(item, i);\n addNewItem(result, item, i, key);\n }\n return result;\n }\n const prevKeys = new Set(prev.keys());\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n const key = keyFn(item, i);\n prevKeys.delete(key);\n const lookup = prev.get(key);\n if (lookup) {\n result[i] = lookup.mapped;\n lookup.setIndex?.(i);\n lookup.setItem(() => item);\n }\n else\n addNewItem(result, item, i, key);\n }\n for (const key of prevKeys) {\n prev.get(key)?.dispose();\n prev.delete(key);\n }\n return result;\n });\n };\n function addNewItem(list, item, i, key) {\n createRoot(dispose => {\n const [getItem, setItem] = createSignal(item);\n const save = { setItem, dispose };\n if (mapFn.length > 1) {\n const [index, setIndex] = createSignal(i);\n save.setIndex = setIndex;\n save.mapped = mapFn(getItem, index);\n }\n else\n save.mapped = mapFn(getItem);\n prev.set(key, save);\n list[i] = save.mapped;\n });\n }\n}\n/**\n * creates a list of elements from the input `each` list\n *\n * it receives a map function as its child that receives a **list item signal** and **index signal** and returns a JSX-Element; if the list is empty, an optional fallback is returned:\n * ```tsx\n * <Key each={items()} by={item => item.id} fallback={<div>No items</div>}>\n * {(item, index) => <div data-index={index()}>{item()}</div>}\n * </Key>\n * ```\n *\n * prop `by` can also be an object key:\n * ```tsx\n * <Key each={items()} by=\"id\">\n * ```\n *\n * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyed#Key\n */\nexport function Key(props) {\n const { by } = props;\n return createMemo(keyArray(() => props.each, typeof by === \"function\" ? by : (v) => v[by], props.children, \"fallback\" in props ? { fallback: () => props.fallback } : undefined));\n}\n/**\n * creates a list of elements from the entries of provided object\n *\n * @param props\n * @param props.of object to iterate entries of (`Object.entries(object)`)\n * @param props.children\n * a map render function that receives an object key, **value signal** and **index signal** and returns a JSX-Element; if the list is empty, an optional fallback is returned:\n * ```tsx\n * <Entries of={object()} fallback={<div>No items</div>}>\n * {(key, value, index) => <div data-index={index()}>{key}: {value()}</div>}\n * </Entries>\n * ```\n *\n * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyed#Entries\n */\nexport function Entries(props) {\n // changes to this function may be applicable to similar functions - grep 4A29BECD-767A-4CC0-AEBB-3543D7B444C6\n const mapFn = props.children;\n return createMemo(mapArray(() => props.of && Object.keys(props.of), mapFn.length < 3\n ? key => mapFn(key, () => props.of[key])\n : (key, i) => mapFn(key, () => props.of[key], i), \"fallback\" in props ? { fallback: () => props.fallback } : undefined));\n}\n/**\n * Creates a list of elements from the entries of provided Map\n *\n * @param props\n * @param props.of map to iterate entries of (`myMap.entries()`)\n * @param props.children\n * a map render function that receives a Map key, **value signal** and **index signal** and returns a JSX-Element; if the list is empty, an optional fallback is returned:\n * ```tsx\n * <MapEntries of={map()} fallback={<div>No items</div>}>\n * {(key, value, index) => <div data-index={index()}>{key}: {value()}</div>}\n * </MapEntries>\n * ```\n *\n * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyed#mapentries\n */\nexport function MapEntries(props) {\n // changes to this function may be applicable to similar functions - grep 4A29BECD-767A-4CC0-AEBB-3543D7B444C6\n const mapFn = props.children;\n return createMemo(mapArray(() => props.of && Array.from(props.of.keys()), mapFn.length < 3\n ? key => mapFn(key, () => props.of.get(key))\n : (key, i) => mapFn(key, () => props.of.get(key), i), \"fallback\" in props ? { fallback: () => props.fallback } : undefined));\n}\n/**\n * Creates a list of elements from the values of provided Set\n *\n * @param props\n * @param props.of set to iterate values of (`mySet.values()`)\n * @param props.children\n * a map render function that receives a Set value and **index signal** and returns a JSX-Element; if the list is empty, an optional fallback is returned:\n * ```tsx\n * <SetValues of={set()} fallback={<div>No items</div>}>\n * {(value, index) => <div data-index={index()}>{value)}</div>}\n * </SetValues>\n * ```\n *\n * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyed#setvalues\n */\nexport function SetValues(props) {\n // changes to this function may be applicable to similar functions - grep 4A29BECD-767A-4CC0-AEBB-3543D7B444C6\n const mapFn = props.children;\n return createMemo(mapArray(() => props.of && Array.from(props.of.values()), mapFn.length < 2 ? value => mapFn(value) : mapFn, \"fallback\" in props ? { fallback: () => props.fallback } : undefined));\n}\nexport function Rerun(props) {\n const key = typeof props.on === \"function\" || Array.isArray(props.on) ? props.on : () => props.on;\n return createMemo(on(key, (a, b) => {\n const child = props.children;\n return typeof child === \"function\" && child.length > 0 ? child(a, b) : child;\n }));\n}\n","import { $PROXY, createMemo, mergeProps } from 'solid-js';\nimport { reverseChain, chain, access } from '@solid-primitives/utils';\n\n// src/propTraps.ts\nfunction trueFn() {\n return true;\n}\nvar propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY)\n return receiver;\n return _.get(property);\n },\n has(_, property) {\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction filterProps(props, predicate) {\n return new Proxy(\n {\n get(property) {\n return property in props && predicate(property) ? props[property] : void 0;\n },\n has(property) {\n return property in props && predicate(property);\n },\n keys() {\n return Object.keys(props).filter(predicate);\n }\n },\n propTraps\n );\n}\nfunction createPropsPredicate(props, predicate) {\n const cache = createMemo(\n () => {\n return {};\n },\n void 0,\n { equals: false }\n );\n return (key) => {\n const cacheRef = cache();\n const cached = cacheRef[key];\n if (cached !== void 0)\n return cached;\n const v = predicate(key);\n cacheRef[key] = v;\n return v;\n };\n}\nvar extractCSSregex = /((?:--)?(?:\\w+-?)+)\\s*:\\s*([^;]*)/g;\nfunction stringStyleToObject(style) {\n const object = {};\n let match;\n while (match = extractCSSregex.exec(style)) {\n object[match[1]] = match[2];\n }\n return object;\n}\nfunction combineStyle(a, b) {\n if (typeof a === \"string\") {\n if (typeof b === \"string\")\n return `${a};${b}`;\n a = stringStyleToObject(a);\n } else if (typeof b === \"string\") {\n b = stringStyleToObject(b);\n }\n return { ...a, ...b };\n}\nvar reduce = (sources, key, calc) => {\n let v = void 0;\n for (const props of sources) {\n const propV = access(props)[key];\n if (!v)\n v = propV;\n else if (propV)\n v = calc(v, propV);\n }\n return v;\n};\nfunction combineProps(...args) {\n const restArgs = Array.isArray(args[0]);\n const sources = restArgs ? args[0] : args;\n if (sources.length === 1)\n return sources[0];\n const chainFn = restArgs && args[1]?.reverseEventHandlers ? reverseChain : chain;\n const listeners = {};\n for (const props of sources) {\n const propsObj = access(props);\n for (const key in propsObj) {\n if (key[0] === \"o\" && key[1] === \"n\" && key[2]) {\n const v = propsObj[key];\n const name = key.toLowerCase();\n const callback = typeof v === \"function\" ? v : (\n // jsx event handlers can be tuples of [callback, arg]\n Array.isArray(v) ? v.length === 1 ? v[0] : v[0].bind(void 0, v[1]) : void 0\n );\n if (callback)\n listeners[name] ? listeners[name].push(callback) : listeners[name] = [callback];\n else\n delete listeners[name];\n }\n }\n }\n const merge = mergeProps(...sources);\n return new Proxy(\n {\n get(key) {\n if (typeof key !== \"string\")\n return Reflect.get(merge, key);\n if (key === \"style\")\n return reduce(sources, \"style\", combineStyle);\n if (key === \"ref\") {\n const callbacks = [];\n for (const props of sources) {\n const cb = access(props)[key];\n if (typeof cb === \"function\")\n callbacks.push(cb);\n }\n return chainFn(callbacks);\n }\n if (key[0] === \"o\" && key[1] === \"n\" && key[2]) {\n const callbacks = listeners[key.toLowerCase()];\n return callbacks ? chainFn(callbacks) : Reflect.get(merge, key);\n }\n if (key === \"class\" || key === \"className\")\n return reduce(sources, key, (a, b) => `${a} ${b}`);\n if (key === \"classList\")\n return reduce(sources, key, (a, b) => ({ ...a, ...b }));\n return Reflect.get(merge, key);\n },\n has(key) {\n return Reflect.has(merge, key);\n },\n keys() {\n return Object.keys(merge);\n }\n },\n propTraps\n );\n}\n\nexport { combineProps, combineStyle, createPropsPredicate, filterProps, propTraps, stringStyleToObject };\n","function addUniqueItem(array, item) {\n array.indexOf(item) === -1 && array.push(item);\n}\nfunction removeItem(arr, item) {\n const index = arr.indexOf(item);\n index > -1 && arr.splice(index, 1);\n}\n\nexport { addUniqueItem, removeItem };\n","const clamp = (min, max, v) => Math.min(Math.max(v, min), max);\n\nexport { clamp };\n","const defaults = {\n duration: 0.3,\n delay: 0,\n endDelay: 0,\n repeat: 0,\n easing: \"ease\",\n};\n\nexport { defaults };\n","const isNumber = (value) => typeof value === \"number\";\n\nexport { isNumber };\n","import { isNumber } from './is-number.es.js';\n\nconst isEasingList = (easing) => Array.isArray(easing) && !isNumber(easing[0]);\n\nexport { isEasingList };\n","const wrap = (min, max, v) => {\n const rangeSize = max - min;\n return ((((v - min) % rangeSize) + rangeSize) % rangeSize) + min;\n};\n\nexport { wrap };\n","import { isEasingList } from './is-easing-list.es.js';\nimport { wrap } from './wrap.es.js';\n\nfunction getEasingForSegment(easing, i) {\n return isEasingList(easing) ? easing[wrap(0, easing.length, i)] : easing;\n}\n\nexport { getEasingForSegment };\n","const mix = (min, max, progress) => -progress * min + progress * max + min;\n\nexport { mix };\n","const noop = () => { };\nconst noopReturn = (v) => v;\n\nexport { noop, noopReturn };\n","const progress = (min, max, value) => max - min === 0 ? 1 : (value - min) / (max - min);\n\nexport { progress };\n","import { mix } from './mix.es.js';\nimport { progress } from './progress.es.js';\n\nfunction fillOffset(offset, remaining) {\n const min = offset[offset.length - 1];\n for (let i = 1; i <= remaining; i++) {\n const offsetProgress = progress(0, remaining, i);\n offset.push(mix(min, 1, offsetProgress));\n }\n}\nfunction defaultOffset(length) {\n const offset = [0];\n fillOffset(offset, length - 1);\n return offset;\n}\n\nexport { defaultOffset, fillOffset };\n","import { mix } from './mix.es.js';\nimport { noopReturn } from './noop.es.js';\nimport { fillOffset, defaultOffset } from './offset.es.js';\nimport { progress } from './progress.es.js';\nimport { getEasingForSegment } from './easing.es.js';\nimport { clamp } from './clamp.es.js';\n\nfunction interpolate(output, input = defaultOffset(output.length), easing = noopReturn) {\n const length = output.length;\n /**\n * If the input length is lower than the output we\n * fill the input to match. This currently assumes the input\n * is an animation progress value so is a good candidate for\n * moving outside the function.\n */\n const remainder = length - input.length;\n remainder > 0 && fillOffset(input, remainder);\n return (t) => {\n let i = 0;\n for (; i < length - 2; i++) {\n if (t < input[i + 1])\n break;\n }\n let progressInRange = clamp(0, 1, progress(input[i], input[i + 1], t));\n const segmentEasing = getEasingForSegment(easing, i);\n progressInRange = segmentEasing(progressInRange);\n return mix(output[i], output[i + 1], progressInRange);\n };\n}\n\nexport { interpolate };\n","import { isNumber } from './is-number.es.js';\n\nconst isCubicBezier = (easing) => Array.isArray(easing) && isNumber(easing[0]);\n\nexport { isCubicBezier };\n","const isEasingGenerator = (easing) => typeof easing === \"object\" &&\n Boolean(easing.createAnimation);\n\nexport { isEasingGenerator };\n","const isFunction = (value) => typeof value === \"function\";\n\nexport { isFunction };\n","const isString = (value) => typeof value === \"string\";\n\nexport { isString };\n","const time = {\n ms: (seconds) => seconds * 1000,\n s: (milliseconds) => milliseconds / 1000,\n};\n\nexport { time };\n","import { noopReturn } from '@motionone/utils';\n\n/*\n Bezier function generator\n\n This has been modified from Gaëtan Renaudeau's BezierEasing\n https://github.com/gre/bezier-easing/blob/master/src/index.js\n https://github.com/gre/bezier-easing/blob/master/LICENSE\n \n I've removed the newtonRaphsonIterate algo because in benchmarking it\n wasn't noticiably faster than binarySubdivision, indeed removing it\n usually improved times, depending on the curve.\n\n I also removed the lookup table, as for the added bundle size and loop we're\n only cutting ~4 or so subdivision iterations. I bumped the max iterations up\n to 12 to compensate and this still tended to be faster for no perceivable\n loss in accuracy.\n\n Usage\n const easeOut = cubicBezier(.17,.67,.83,.67);\n const x = easeOut(0.5); // returns 0.627...\n*/\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) * t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noopReturn;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n","import { clamp } from '@motionone/utils';\n\nconst steps = (steps, direction = \"end\") => (progress) => {\n progress =\n direction === \"end\"\n ? Math.min(progress, 0.999)\n : Math.max(progress, 0.001);\n const expanded = progress * steps;\n const rounded = direction === \"end\" ? Math.floor(expanded) : Math.ceil(expanded);\n return clamp(0, 1, rounded / steps);\n};\n\nexport { steps };\n","import { cubicBezier, steps } from '@motionone/easing';\nimport { isFunction, isCubicBezier, noopReturn } from '@motionone/utils';\n\nconst namedEasings = {\n ease: cubicBezier(0.25, 0.1, 0.25, 1.0),\n \"ease-in\": cubicBezier(0.42, 0.0, 1.0, 1.0),\n \"ease-in-out\": cubicBezier(0.42, 0.0, 0.58, 1.0),\n \"ease-out\": cubicBezier(0.0, 0.0, 0.58, 1.0),\n};\nconst functionArgsRegex = /\\((.*?)\\)/;\nfunction getEasingFunction(definition) {\n // If already an easing function, return\n if (isFunction(definition))\n return definition;\n // If an easing curve definition, return bezier function\n if (isCubicBezier(definition))\n return cubicBezier(...definition);\n // If we have a predefined easing function, return\n const namedEasing = namedEasings[definition];\n if (namedEasing)\n return namedEasing;\n // If this is a steps function, attempt to create easing curve\n if (definition.startsWith(\"steps\")) {\n const args = functionArgsRegex.exec(definition);\n if (args) {\n const argsArray = args[1].split(\",\");\n return steps(parseFloat(argsArray[0]), argsArray[1].trim());\n }\n }\n return noopReturn;\n}\n\nexport { getEasingFunction };\n","import { noopReturn, defaults, isEasingGenerator, isEasingList, interpolate } from '@motionone/utils';\nimport { getEasingFunction } from './utils/easing.es.js';\n\nclass Animation {\n constructor(output, keyframes = [0, 1], { easing, duration: initialDuration = defaults.duration, delay = defaults.delay, endDelay = defaults.endDelay, repeat = defaults.repeat, offset, direction = \"normal\", autoplay = true, } = {}) {\n this.startTime = null;\n this.rate = 1;\n this.t = 0;\n this.cancelTimestamp = null;\n this.easing = noopReturn;\n this.duration = 0;\n this.totalDuration = 0;\n this.repeat = 0;\n this.playState = \"idle\";\n this.finished = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n easing = easing || defaults.easing;\n if (isEasingGenerator(easing)) {\n const custom = easing.createAnimation(keyframes);\n easing = custom.easing;\n keyframes = custom.keyframes || keyframes;\n initialDuration = custom.duration || initialDuration;\n }\n this.repeat = repeat;\n this.easing = isEasingList(easing) ? noopReturn : getEasingFunction(easing);\n this.updateDuration(initialDuration);\n const interpolate$1 = interpolate(keyframes, offset, isEasingList(easing) ? easing.map(getEasingFunction) : noopReturn);\n this.tick = (timestamp) => {\n var _a;\n // TODO: Temporary fix for OptionsResolver typing\n delay = delay;\n let t = 0;\n if (this.pauseTime !== undefined) {\n t = this.pauseTime;\n }\n else {\n t = (timestamp - this.startTime) * this.rate;\n }\n this.t = t;\n // Convert to seconds\n t /= 1000;\n // Rebase on delay\n t = Math.max(t - delay, 0);\n /**\n * If this animation has finished, set the current time\n * to the total duration.\n */\n if (this.playState === \"finished\" && this.pauseTime === undefined) {\n t = this.totalDuration;\n }\n /**\n * Get the current progress (0-1) of the animation. If t is >\n * than duration we'll get values like 2.5 (midway through the\n * third iteration)\n */\n const progress = t / this.duration;\n // TODO progress += iterationStart\n /**\n * Get the current iteration (0 indexed). For instance the floor of\n * 2.5 is 2.\n */\n let currentIteration = Math.floor(progress);\n /**\n * Get the current progress of the iteration by taking the remainder\n * so 2.5 is 0.5 through iteration 2\n */\n let iterationProgress = progress % 1.0;\n if (!iterationProgress && progress >= 1) {\n iterationProgress = 1;\n }\n /**\n * If iteration progress is 1 we count that as the end\n * of the previous iteration.\n */\n iterationProgress === 1 && currentIteration--;\n /**\n * Reverse progress if we're not running in \"normal\" direction\n */\n const iterationIsOdd = currentIteration % 2;\n if (direction === \"reverse\" ||\n (direction === \"alternate\" && iterationIsOdd) ||\n (direction === \"alternate-reverse\" && !iterationIsOdd)) {\n iterationProgress = 1 - iterationProgress;\n }\n const p = t >= this.totalDuration ? 1 : Math.min(iterationProgress, 1);\n const latest = interpolate$1(this.easing(p));\n output(latest);\n const isAnimationFinished = this.pauseTime === undefined &&\n (this.playState === \"finished\" || t >= this.totalDuration + endDelay);\n if (isAnimationFinished) {\n this.playState = \"finished\";\n (_a = this.resolve) === null || _a === void 0 ? void 0 : _a.call(this, latest);\n }\n else if (this.playState !== \"idle\") {\n this.frameRequestId = requestAnimationFrame(this.tick);\n }\n };\n if (autoplay)\n this.play();\n }\n play() {\n const now = performance.now();\n this.playState = \"running\";\n if (this.pauseTime !== undefined) {\n this.startTime = now - this.pauseTime;\n }\n else if (!this.startTime) {\n this.startTime = now;\n }\n this.cancelTimestamp = this.startTime;\n this.pauseTime = undefined;\n this.frameRequestId = requestAnimationFrame(this.tick);\n }\n pause() {\n this.playState = \"paused\";\n this.pauseTime = this.t;\n }\n finish() {\n this.playState = \"finished\";\n this.tick(0);\n }\n stop() {\n var _a;\n this.playState = \"idle\";\n if (this.frameRequestId !== undefined) {\n cancelAnimationFrame(this.frameRequestId);\n }\n (_a = this.reject) === null || _a === void 0 ? void 0 : _a.call(this, false);\n }\n cancel() {\n this.stop();\n this.tick(this.cancelTimestamp);\n }\n reverse() {\n this.rate *= -1;\n }\n commitStyles() { }\n updateDuration(duration) {\n this.duration = duration;\n this.totalDuration = duration * (this.repeat + 1);\n }\n get currentTime() {\n return this.t;\n }\n set currentTime(t) {\n if (this.pauseTime !== undefined || this.rate === 0) {\n this.pauseTime = t;\n }\n else {\n this.startTime = performance.now() - t / this.rate;\n }\n }\n get playbackRate() {\n return this.rate;\n }\n set playbackRate(rate) {\n this.rate = rate;\n }\n}\n\nexport { Animation };\n","var warning = function () { };\r\nvar invariant = function () { };\r\nif (process.env.NODE_ENV !== 'production') {\r\n warning = function (check, message) {\r\n if (!check && typeof console !== 'undefined') {\r\n console.warn(message);\r\n }\r\n };\r\n invariant = function (check, message) {\r\n if (!check) {\r\n throw new Error(message);\r\n }\r\n };\r\n}\n\nexport { invariant, warning };\n","/**\n * The MotionValue tracks the state of a single animatable\n * value. Currently, updatedAt and current are unused. The\n * long term idea is to use this to minimise the number\n * of DOM reads, and to abstract the DOM interactions here.\n */\nclass MotionValue {\n setAnimation(animation) {\n this.animation = animation;\n animation === null || animation === void 0 ? void 0 : animation.finished.then(() => this.clearAnimation()).catch(() => { });\n }\n clearAnimation() {\n this.animation = this.generator = undefined;\n }\n}\n\nexport { MotionValue };\n","import { MotionValue } from '@motionone/types';\n\nconst data = new WeakMap();\nfunction getAnimationData(element) {\n if (!data.has(element)) {\n data.set(element, {\n transforms: [],\n values: new Map(),\n });\n }\n return data.get(element);\n}\nfunction getMotionValue(motionValues, name) {\n if (!motionValues.has(name)) {\n motionValues.set(name, new MotionValue());\n }\n return motionValues.get(name);\n}\n\nexport { getAnimationData, getMotionValue };\n","import { noopReturn, addUniqueItem } from '@motionone/utils';\nimport { getAnimationData } from '../data.es.js';\n\n/**\n * A list of all transformable axes. We'll use this list to generated a version\n * of each axes for each transform.\n */\nconst axes = [\"\", \"X\", \"Y\", \"Z\"];\n/**\n * An ordered array of each transformable value. By default, transform values\n * will be sorted to this order.\n */\nconst order = [\"translate\", \"scale\", \"rotate\", \"skew\"];\nconst transformAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n};\nconst rotation = {\n syntax: \"<angle>\",\n initialValue: \"0deg\",\n toDefaultUnit: (v) => v + \"deg\",\n};\nconst baseTransformProperties = {\n translate: {\n syntax: \"<length-percentage>\",\n initialValue: \"0px\",\n toDefaultUnit: (v) => v + \"px\",\n },\n rotate: rotation,\n scale: {\n syntax: \"<number>\",\n initialValue: 1,\n toDefaultUnit: noopReturn,\n },\n skew: rotation,\n};\nconst transformDefinitions = new Map();\nconst asTransformCssVar = (name) => `--motion-${name}`;\n/**\n * Generate a list of every possible transform key\n */\nconst transforms = [\"x\", \"y\", \"z\"];\norder.forEach((name) => {\n axes.forEach((axis) => {\n transforms.push(name + axis);\n transformDefinitions.set(asTransformCssVar(name + axis), baseTransformProperties[name]);\n });\n});\n/**\n * A function to use with Array.sort to sort transform keys by their default order.\n */\nconst compareTransformOrder = (a, b) => transforms.indexOf(a) - transforms.indexOf(b);\n/**\n * Provide a quick way to check if a string is the name of a transform\n */\nconst transformLookup = new Set(transforms);\nconst isTransform = (name) => transformLookup.has(name);\nconst addTransformToElement = (element, name) => {\n // Map x to translateX etc\n if (transformAlias[name])\n name = transformAlias[name];\n const { transforms } = getAnimationData(element);\n addUniqueItem(transforms, name);\n /**\n * TODO: An optimisation here could be to cache the transform in element data\n * and only update if this has changed.\n */\n element.style.transform = buildTransformTemplate(transforms);\n};\nconst buildTransformTemplate = (transforms) => transforms\n .sort(compareTransformOrder)\n .reduce(transformListToString, \"\")\n .trim();\nconst transformListToString = (template, name) => `${template} ${name}(var(${asTransformCssVar(name)}))`;\n\nexport { addTransformToElement, asTransformCssVar, axes, buildTransformTemplate, compareTransformOrder, isTransform, transformAlias, transformDefinitions };\n","import { transformDefinitions } from './transforms.es.js';\n\nconst isCssVar = (name) => name.startsWith(\"--\");\nconst registeredProperties = new Set();\nfunction registerCssVariable(name) {\n if (registeredProperties.has(name))\n return;\n registeredProperties.add(name);\n try {\n const { syntax, initialValue } = transformDefinitions.has(name)\n ? transformDefinitions.get(name)\n : {};\n CSS.registerProperty({\n name,\n inherits: false,\n syntax,\n initialValue,\n });\n }\n catch (e) { }\n}\n\nexport { isCssVar, registerCssVariable, registeredProperties };\n","const testAnimation = (keyframes, options) => document.createElement(\"div\").animate(keyframes, options);\nconst featureTests = {\n cssRegisterProperty: () => typeof CSS !== \"undefined\" &&\n Object.hasOwnProperty.call(CSS, \"registerProperty\"),\n waapi: () => Object.hasOwnProperty.call(Element.prototype, \"animate\"),\n partialKeyframes: () => {\n try {\n testAnimation({ opacity: [1] });\n }\n catch (e) {\n return false;\n }\n return true;\n },\n finished: () => Boolean(testAnimation({ opacity: [0, 1] }, { duration: 0.001 }).finished),\n linearEasing: () => {\n try {\n testAnimation({ opacity: 0 }, { easing: \"linear(0, 1)\" });\n }\n catch (e) {\n return false;\n }\n return true;\n },\n};\nconst results = {};\nconst supports = {};\nfor (const key in featureTests) {\n supports[key] = () => {\n if (results[key] === undefined)\n results[key] =\n featureTests[key]();\n return results[key];\n };\n}\n\nexport { supports };\n","import { isFunction, defaults, isCubicBezier, progress } from '@motionone/utils';\nimport { supports } from './feature-detection.es.js';\n\n// Create a linear easing point for every x second\nconst resolution = 0.015;\nconst generateLinearEasingPoints = (easing, duration) => {\n let points = \"\";\n const numPoints = Math.round(duration / resolution);\n for (let i = 0; i < numPoints; i++) {\n points += easing(progress(0, numPoints - 1, i)) + \", \";\n }\n return points.substring(0, points.length - 2);\n};\nconst convertEasing = (easing, duration) => {\n if (isFunction(easing)) {\n return supports.linearEasing()\n ? `linear(${generateLinearEasingPoints(easing, duration)})`\n : defaults.easing;\n }\n else {\n return isCubicBezier(easing) ? cubicBezierAsString(easing) : easing;\n }\n};\nconst cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\n\nexport { convertEasing, cubicBezierAsString, generateLinearEasingPoints };\n","function hydrateKeyframes(keyframes, readInitialValue) {\n for (let i = 0; i < keyframes.length; i++) {\n if (keyframes[i] === null) {\n keyframes[i] = i ? keyframes[i - 1] : readInitialValue();\n }\n }\n return keyframes;\n}\nconst keyframesList = (keyframes) => Array.isArray(keyframes) ? keyframes : [keyframes];\n\nexport { hydrateKeyframes, keyframesList };\n","import { isTransform, asTransformCssVar, transformAlias } from './transforms.es.js';\n\nfunction getStyleName(key) {\n if (transformAlias[key])\n key = transformAlias[key];\n return isTransform(key) ? asTransformCssVar(key) : key;\n}\n\nexport { getStyleName };\n","import { isCssVar } from './utils/css-var.es.js';\nimport { getStyleName } from './utils/get-style-name.es.js';\nimport { transformDefinitions } from './utils/transforms.es.js';\n\nconst style = {\n get: (element, name) => {\n name = getStyleName(name);\n let value = isCssVar(name)\n ? element.style.getPropertyValue(name)\n : getComputedStyle(element)[name];\n // TODO Decide if value can be 0\n if (!value && value !== 0) {\n const definition = transformDefinitions.get(name);\n if (definition)\n value = definition.initialValue;\n }\n return value;\n },\n set: (element, name, value) => {\n name = getStyleName(name);\n if (isCssVar(name)) {\n element.style.setProperty(name, value);\n }\n else {\n element.style[name] = value;\n }\n },\n};\n\nexport { style };\n","function stopAnimation(animation, needsCommit = true) {\n if (!animation || animation.playState === \"finished\")\n return;\n // Suppress error thrown by WAAPI\n try {\n if (animation.stop) {\n animation.stop();\n }\n else {\n needsCommit && animation.commitStyles();\n animation.cancel();\n }\n }\n catch (e) { }\n}\n\nexport { stopAnimation };\n","import { noopReturn, isString } from '@motionone/utils';\n\nfunction getUnitConverter(keyframes, definition) {\n var _a;\n let toUnit = (definition === null || definition === void 0 ? void 0 : definition.toDefaultUnit) || noopReturn;\n const finalKeyframe = keyframes[keyframes.length - 1];\n if (isString(finalKeyframe)) {\n const unit = ((_a = finalKeyframe.match(/(-?[\\d.]+)([a-z%]*)/)) === null || _a === void 0 ? void 0 : _a[2]) || \"\";\n if (unit)\n toUnit = (value) => value + unit;\n }\n return toUnit;\n}\n\nexport { getUnitConverter };\n","import { getAnimationData, getMotionValue } from './data.es.js';\nimport { isCssVar, registerCssVariable } from './utils/css-var.es.js';\nimport { defaults, isEasingGenerator, isFunction, isEasingList, isNumber, time, noop } from '@motionone/utils';\nimport { isTransform, addTransformToElement, transformDefinitions } from './utils/transforms.es.js';\nimport { convertEasing } from './utils/easing.es.js';\nimport { supports } from './utils/feature-detection.es.js';\nimport { hydrateKeyframes, keyframesList } from './utils/keyframes.es.js';\nimport { style } from './style.es.js';\nimport { getStyleName } from './utils/get-style-name.es.js';\nimport { stopAnimation } from './utils/stop-animation.es.js';\nimport { getUnitConverter } from './utils/get-unit.es.js';\n\nfunction getDevToolsRecord() {\n return window.__MOTION_DEV_TOOLS_RECORD;\n}\nfunction animateStyle(element, key, keyframesDefinition, options = {}, AnimationPolyfill) {\n const record = getDevToolsRecord();\n const isRecording = options.record !== false && record;\n let animation;\n let { duration = defaults.duration, delay = defaults.delay, endDelay = defaults.endDelay, repeat = defaults.repeat, easing = defaults.easing, persist = false, direction, offset, allowWebkitAcceleration = false, autoplay = true, } = options;\n const data = getAnimationData(element);\n const valueIsTransform = isTransform(key);\n let canAnimateNatively = supports.waapi();\n /**\n * If this is an individual transform, we need to map its\n * key to a CSS variable and update the element's transform style\n */\n valueIsTransform && addTransformToElement(element, key);\n const name = getStyleName(key);\n const motionValue = getMotionValue(data.values, name);\n /**\n * Get definition of value, this will be used to convert numerical\n * keyframes into the default value type.\n */\n const definition = transformDefinitions.get(name);\n /**\n * Stop the current animation, if any. Because this will trigger\n * commitStyles (DOM writes) and we might later trigger DOM reads,\n * this is fired now and we return a factory function to create\n * the actual animation that can get called in batch,\n */\n stopAnimation(motionValue.animation, !(isEasingGenerator(easing) && motionValue.generator) &&\n options.record !== false);\n /**\n * Batchable factory function containing all DOM reads.\n */\n return () => {\n const readInitialValue = () => { var _a, _b; return (_b = (_a = style.get(element, name)) !== null && _a !== void 0 ? _a : definition === null || definition === void 0 ? void 0 : definition.initialValue) !== null && _b !== void 0 ? _b : 0; };\n /**\n * Replace null values with the previous keyframe value, or read\n * it from the DOM if it's the first keyframe.\n */\n let keyframes = hydrateKeyframes(keyframesList(keyframesDefinition), readInitialValue);\n /**\n * Detect unit type of keyframes.\n */\n const toUnit = getUnitConverter(keyframes, definition);\n if (isEasingGenerator(easing)) {\n const custom = easing.createAnimation(keyframes, key !== \"opacity\", readInitialValue, name, motionValue);\n easing = custom.easing;\n keyframes = custom.keyframes || keyframes;\n duration = custom.duration || duration;\n }\n /**\n * If this is a CSS variable we need to register it with the browser\n * before it can be animated natively. We also set it with setProperty\n * rather than directly onto the element.style object.\n */\n if (isCssVar(name)) {\n if (supports.cssRegisterProperty()) {\n registerCssVariable(name);\n }\n else {\n canAnimateNatively = false;\n }\n }\n /**\n * If we've been passed a custom easing function, and this browser\n * does **not** support linear() easing, and the value is a transform\n * (and thus a pure number) we can still support the custom easing\n * by falling back to the animation polyfill.\n */\n if (valueIsTransform &&\n !supports.linearEasing() &&\n (isFunction(easing) || (isEasingList(easing) && easing.some(isFunction)))) {\n canAnimateNatively = false;\n }\n /**\n * If we can animate this value with WAAPI, do so.\n */\n if (canAnimateNatively) {\n /**\n * Convert numbers to default value types. Currently this only supports\n * transforms but it could also support other value types.\n */\n if (definition) {\n keyframes = keyframes.map((value) => isNumber(value) ? definition.toDefaultUnit(value) : value);\n }\n /**\n * If this browser doesn't support partial/implicit keyframes we need to\n * explicitly provide one.\n */\n if (keyframes.length === 1 &&\n (!supports.partialKeyframes() || isRecording)) {\n keyframes.unshift(readInitialValue());\n }\n const animationOptions = {\n delay: time.ms(delay),\n duration: time.ms(duration),\n endDelay: time.ms(endDelay),\n easing: !isEasingList(easing)\n ? convertEasing(easing, duration)\n : undefined,\n direction,\n iterations: repeat + 1,\n fill: \"both\",\n };\n animation = element.animate({\n [name]: keyframes,\n offset,\n easing: isEasingList(easing)\n ? easing.map((thisEasing) => convertEasing(thisEasing, duration))\n : undefined,\n }, animationOptions);\n /**\n * Polyfill finished Promise in browsers that don't support it\n */\n if (!animation.finished) {\n animation.finished = new Promise((resolve, reject) => {\n animation.onfinish = resolve;\n animation.oncancel = reject;\n });\n }\n const target = keyframes[keyframes.length - 1];\n animation.finished\n .then(() => {\n if (persist)\n return;\n // Apply styles to target\n style.set(element, name, target);\n // Ensure fill modes don't persist\n animation.cancel();\n })\n .catch(noop);\n /**\n * This forces Webkit to run animations on the main thread by exploiting\n * this condition:\n * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp?rev=281238#L1099\n *\n * This fixes Webkit's timing bugs, like accelerated animations falling\n * out of sync with main thread animations and massive delays in starting\n * accelerated animations in WKWebView.\n */\n if (!allowWebkitAcceleration)\n animation.playbackRate = 1.000001;\n /**\n * If we can't animate the value natively then we can fallback to the numbers-only\n * polyfill for transforms.\n */\n }\n else if (AnimationPolyfill && valueIsTransform) {\n /**\n * If any keyframe is a string (because we measured it from the DOM), we need to convert\n * it into a number before passing to the Animation polyfill.\n */\n keyframes = keyframes.map((value) => typeof value === \"string\" ? parseFloat(value) : value);\n /**\n * If we only have a single keyframe, we need to create an initial keyframe by reading\n * the current value from the DOM.\n */\n if (keyframes.length === 1) {\n keyframes.unshift(parseFloat(readInitialValue()));\n }\n animation = new AnimationPolyfill((latest) => {\n style.set(element, name, toUnit ? toUnit(latest) : latest);\n }, keyframes, Object.assign(Object.assign({}, options), { duration,\n easing }));\n }\n else {\n const target = keyframes[keyframes.length - 1];\n style.set(element, name, definition && isNumber(target)\n ? definition.toDefaultUnit(target)\n : target);\n }\n if (isRecording) {\n record(element, key, keyframes, {\n duration,\n delay: delay,\n easing,\n repeat,\n offset,\n }, \"motion-one\");\n }\n motionValue.setAnimation(animation);\n if (animation && !autoplay)\n animation.pause();\n return animation;\n };\n}\n\nexport { animateStyle };\n","const getOptions = (options, key) => \n/**\n * TODO: Make test for this\n * Always return a new object otherwise delay is overwritten by results of stagger\n * and this results in no stagger\n */\noptions[key] ? Object.assign(Object.assign({}, options), options[key]) : Object.assign({}, options);\n\nexport { getOptions };\n","function resolveElements(elements, selectorCache) {\n var _a;\n if (typeof elements === \"string\") {\n if (selectorCache) {\n (_a = selectorCache[elements]) !== null && _a !== void 0 ? _a : (selectorCache[elements] = document.querySelectorAll(elements));\n elements = selectorCache[elements];\n }\n else {\n elements = document.querySelectorAll(elements);\n }\n }\n else if (elements instanceof Element) {\n elements = [elements];\n }\n /**\n * Return an empty array\n */\n return Array.from(elements || []);\n}\n\nexport { resolveElements };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { resolveElements } from '../utils/resolve-elements.es.js';\nimport { isFunction } from '@motionone/utils';\n\nconst thresholds = {\n any: 0,\n all: 1,\n};\nfunction inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = \"any\" } = {}) {\n /**\n * If this browser doesn't support IntersectionObserver, return a dummy stop function.\n * Default triggering of onStart is tricky - it could be used for starting/stopping\n * videos, lazy loading content etc. We could provide an option to enable a fallback, or\n * provide a fallback callback option.\n */\n if (typeof IntersectionObserver === \"undefined\") {\n return () => { };\n }\n const elements = resolveElements(elementOrSelector);\n const activeIntersections = new WeakMap();\n const onIntersectionChange = (entries) => {\n entries.forEach((entry) => {\n const onEnd = activeIntersections.get(entry.target);\n /**\n * If there's no change to the intersection, we don't need to\n * do anything here.\n */\n if (entry.isIntersecting === Boolean(onEnd))\n return;\n if (entry.isIntersecting) {\n const newOnEnd = onStart(entry);\n if (isFunction(newOnEnd)) {\n activeIntersections.set(entry.target, newOnEnd);\n }\n else {\n observer.unobserve(entry.target);\n }\n }\n else if (onEnd) {\n onEnd(entry);\n activeIntersections.delete(entry.target);\n }\n });\n };\n const observer = new IntersectionObserver(onIntersectionChange, {\n root,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholds[amount],\n });\n elements.forEach((element) => observer.observe(element));\n return () => observer.disconnect();\n}\n\nexport { inView };\n","function hasChanged(a, b) {\n if (typeof a !== typeof b)\n return true;\n if (Array.isArray(a) && Array.isArray(b))\n return !shallowCompare(a, b);\n return a !== b;\n}\nfunction shallowCompare(next, prev) {\n const prevLength = prev.length;\n if (prevLength !== next.length)\n return false;\n for (let i = 0; i < prevLength; i++) {\n if (prev[i] !== next[i])\n return false;\n }\n return true;\n}\n\nexport { hasChanged, shallowCompare };\n","function isVariant(definition) {\n return typeof definition === \"object\";\n}\n\nexport { isVariant };\n","import { isVariant } from './is-variant.es.js';\n\nfunction resolveVariant(definition, variants) {\n if (isVariant(definition)) {\n return definition;\n }\n else if (definition && variants) {\n return variants[definition];\n }\n}\n\nexport { resolveVariant };\n","import { addUniqueItem, removeItem } from '@motionone/utils';\n\nlet scheduled = undefined;\nfunction processScheduledAnimations() {\n if (!scheduled)\n return;\n const generators = scheduled.sort(compareByDepth).map(fireAnimateUpdates);\n generators.forEach(fireNext);\n generators.forEach(fireNext);\n scheduled = undefined;\n}\nfunction scheduleAnimation(state) {\n if (!scheduled) {\n scheduled = [state];\n requestAnimationFrame(processScheduledAnimations);\n }\n else {\n addUniqueItem(scheduled, state);\n }\n}\nfunction unscheduleAnimation(state) {\n scheduled && removeItem(scheduled, state);\n}\nconst compareByDepth = (a, b) => a.getDepth() - b.getDepth();\nconst fireAnimateUpdates = (state) => state.animateUpdates();\nconst fireNext = (iterator) => iterator.next();\n\nexport { scheduleAnimation, unscheduleAnimation };\n","const motionEvent = (name, target) => new CustomEvent(name, { detail: { target } });\nfunction dispatchPointerEvent(element, name, event) {\n element.dispatchEvent(new CustomEvent(name, { detail: { originalEvent: event } }));\n}\nfunction dispatchViewEvent(element, name, entry) {\n element.dispatchEvent(new CustomEvent(name, { detail: { originalEntry: entry } }));\n}\n\nexport { dispatchPointerEvent, dispatchViewEvent, motionEvent };\n","import { __rest } from 'tslib';\nimport { dispatchViewEvent } from '../utils/events.es.js';\nimport { inView as inView$1 } from '../../gestures/in-view.es.js';\n\nconst inView = {\n isActive: (options) => Boolean(options.inView),\n subscribe: (element, { enable, disable }, { inViewOptions = {} }) => {\n const { once } = inViewOptions, viewOptions = __rest(inViewOptions, [\"once\"]);\n return inView$1(element, (enterEntry) => {\n enable();\n dispatchViewEvent(element, \"viewenter\", enterEntry);\n if (!once) {\n return (leaveEntry) => {\n disable();\n dispatchViewEvent(element, \"viewleave\", leaveEntry);\n };\n }\n }, viewOptions);\n },\n};\n\nexport { inView };\n","import { dispatchPointerEvent } from '../utils/events.es.js';\n\nconst mouseEvent = (element, name, action) => (event) => {\n if (event.pointerType && event.pointerType !== \"mouse\")\n return;\n action();\n dispatchPointerEvent(element, name, event);\n};\nconst hover = {\n isActive: (options) => Boolean(options.hover),\n subscribe: (element, { enable, disable }) => {\n const onEnter = mouseEvent(element, \"hoverstart\", enable);\n const onLeave = mouseEvent(element, \"hoverend\", disable);\n element.addEventListener(\"pointerenter\", onEnter);\n element.addEventListener(\"pointerleave\", onLeave);\n return () => {\n element.removeEventListener(\"pointerenter\", onEnter);\n element.removeEventListener(\"pointerleave\", onLeave);\n };\n },\n};\n\nexport { hover };\n","import { dispatchPointerEvent } from '../utils/events.es.js';\n\nconst press = {\n isActive: (options) => Boolean(options.press),\n subscribe: (element, { enable, disable }) => {\n const onPointerUp = (event) => {\n disable();\n dispatchPointerEvent(element, \"pressend\", event);\n window.removeEventListener(\"pointerup\", onPointerUp);\n };\n const onPointerDown = (event) => {\n enable();\n dispatchPointerEvent(element, \"pressstart\", event);\n window.addEventListener(\"pointerup\", onPointerUp);\n };\n element.addEventListener(\"pointerdown\", onPointerDown);\n return () => {\n element.removeEventListener(\"pointerdown\", onPointerDown);\n window.removeEventListener(\"pointerup\", onPointerUp);\n };\n },\n};\n\nexport { press };\n","import { __rest } from 'tslib';\nimport { invariant } from 'hey-listen';\nimport { noop } from '@motionone/utils';\nimport { animateStyle } from '../animate/animate-style.es.js';\nimport { style } from '../animate/style.es.js';\nimport { getOptions } from '../animate/utils/options.es.js';\nimport { hasChanged } from './utils/has-changed.es.js';\nimport { resolveVariant } from './utils/resolve-variant.es.js';\nimport { scheduleAnimation, unscheduleAnimation } from './utils/schedule.es.js';\nimport { inView } from './gestures/in-view.es.js';\nimport { hover } from './gestures/hover.es.js';\nimport { press } from './gestures/press.es.js';\nimport { motionEvent } from './utils/events.es.js';\nimport { Animation } from '@motionone/animation';\n\nconst gestures = { inView, hover, press };\n/**\n * A list of state types, in priority order. If a value is defined in\n * a righter-most type, it will override any definition in a lefter-most.\n */\nconst stateTypes = [\"initial\", \"animate\", ...Object.keys(gestures), \"exit\"];\n/**\n * A global store of all generated motion states. This can be used to lookup\n * a motion state for a given Element.\n */\nconst mountedStates = new WeakMap();\nfunction createMotionState(options = {}, parent) {\n /**\n * The element represented by the motion state. This is an empty reference\n * when we create the state to support SSR and allow for later mounting\n * in view libraries.\n *\n * @ts-ignore\n */\n let element;\n /**\n * Calculate a depth that we can use to order motion states by tree depth.\n */\n let depth = parent ? parent.getDepth() + 1 : 0;\n /**\n * Track which states are currently active.\n */\n const activeStates = { initial: true, animate: true };\n /**\n * A map of functions that, when called, will remove event listeners for\n * a given gesture.\n */\n const gestureSubscriptions = {};\n /**\n * Initialise a context to share through motion states. This\n * will be populated by variant names (if any).\n */\n const context = {};\n for (const name of stateTypes) {\n context[name] =\n typeof options[name] === \"string\"\n ? options[name]\n : parent === null || parent === void 0 ? void 0 : parent.getContext()[name];\n }\n /**\n * If initial is set to false we use the animate prop as the initial\n * animation state.\n */\n const initialVariantSource = options.initial === false ? \"animate\" : \"initial\";\n /**\n * Destructure an initial target out from the resolved initial variant.\n */\n let _a = resolveVariant(options[initialVariantSource] || context[initialVariantSource], options.variants) || {}, target = __rest(_a, [\"transition\"]);\n /**\n * The base target is a cached map of values that we'll use to animate\n * back to if a value is removed from all active state types. This\n * is usually the initial value as read from the DOM, for instance if\n * it hasn't been defined in initial.\n */\n const baseTarget = Object.assign({}, target);\n /**\n * A generator that will be processed by the global animation scheduler.\n * This yields when it switches from reading the DOM to writing to it\n * to prevent layout thrashing.\n */\n function* animateUpdates() {\n var _a, _b;\n const prevTarget = target;\n target = {};\n const animationOptions = {};\n for (const name of stateTypes) {\n if (!activeStates[name])\n continue;\n const variant = resolveVariant(options[name]);\n if (!variant)\n continue;\n for (const key in variant) {\n if (key === \"transition\")\n continue;\n target[key] = variant[key];\n animationOptions[key] = getOptions((_b = (_a = variant.transition) !== null && _a !== void 0 ? _a : options.transition) !== null && _b !== void 0 ? _b : {}, key);\n }\n }\n const allTargetKeys = new Set([\n ...Object.keys(target),\n ...Object.keys(prevTarget),\n ]);\n const animationFactories = [];\n allTargetKeys.forEach((key) => {\n var _a;\n if (target[key] === undefined) {\n target[key] = baseTarget[key];\n }\n if (hasChanged(prevTarget[key], target[key])) {\n (_a = baseTarget[key]) !== null && _a !== void 0 ? _a : (baseTarget[key] = style.get(element, key));\n animationFactories.push(animateStyle(element, key, target[key], animationOptions[key], Animation));\n }\n });\n // Wait for all animation states to read from the DOM\n yield;\n const animations = animationFactories\n .map((factory) => factory())\n .filter(Boolean);\n if (!animations.length)\n return;\n const animationTarget = target;\n element.dispatchEvent(motionEvent(\"motionstart\", animationTarget));\n Promise.all(animations.map((animation) => animation.finished))\n .then(() => {\n element.dispatchEvent(motionEvent(\"motioncomplete\", animationTarget));\n })\n .catch(noop);\n }\n const setGesture = (name, isActive) => () => {\n activeStates[name] = isActive;\n scheduleAnimation(state);\n };\n const updateGestureSubscriptions = () => {\n for (const name in gestures) {\n const isGestureActive = gestures[name].isActive(options);\n const remove = gestureSubscriptions[name];\n if (isGestureActive && !remove) {\n gestureSubscriptions[name] = gestures[name].subscribe(element, {\n enable: setGesture(name, true),\n disable: setGesture(name, false),\n }, options);\n }\n else if (!isGestureActive && remove) {\n remove();\n delete gestureSubscriptions[name];\n }\n }\n };\n const state = {\n update: (newOptions) => {\n if (!element)\n return;\n options = newOptions;\n updateGestureSubscriptions();\n scheduleAnimation(state);\n },\n setActive: (name, isActive) => {\n if (!element)\n return;\n activeStates[name] = isActive;\n scheduleAnimation(state);\n },\n animateUpdates,\n getDepth: () => depth,\n getTarget: () => target,\n getOptions: () => options,\n getContext: () => context,\n mount: (newElement) => {\n invariant(Boolean(newElement), \"Animation state must be mounted with valid Element\");\n element = newElement;\n mountedStates.set(element, state);\n updateGestureSubscriptions();\n return () => {\n mountedStates.delete(element);\n unscheduleAnimation(state);\n for (const key in gestureSubscriptions) {\n gestureSubscriptions[key]();\n }\n };\n },\n isMounted: () => Boolean(element),\n };\n return state;\n}\n\nexport { createMotionState, mountedStates };\n","import { isNumber } from '@motionone/utils';\nimport { isTransform, transformAlias, asTransformCssVar, transformDefinitions, buildTransformTemplate } from './transforms.es.js';\n\nfunction createStyles(keyframes) {\n const initialKeyframes = {};\n const transformKeys = [];\n for (let key in keyframes) {\n const value = keyframes[key];\n if (isTransform(key)) {\n if (transformAlias[key])\n key = transformAlias[key];\n transformKeys.push(key);\n key = asTransformCssVar(key);\n }\n let initialKeyframe = Array.isArray(value) ? value[0] : value;\n /**\n * If this is a number and we have a default value type, convert the number\n * to this type.\n */\n const definition = transformDefinitions.get(key);\n if (definition) {\n initialKeyframe = isNumber(value)\n ? definition.toDefaultUnit(value)\n : value;\n }\n initialKeyframes[key] = initialKeyframe;\n }\n if (transformKeys.length) {\n initialKeyframes.transform = buildTransformTemplate(transformKeys);\n }\n return initialKeyframes;\n}\n\nexport { createStyles };\n","import { chain, arrayEquals } from '@solid-primitives/utils';\nimport { createMemo, children, createComputed, untrack, onCleanup } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/index.ts\nfunction mergeRefs(...refs) {\n return chain(refs);\n}\nvar defaultElementPredicate = isServer ? (item) => item != null && typeof item === \"object\" && \"t\" in item : (item) => item instanceof Element;\nfunction getResolvedElements(value, predicate) {\n if (predicate(value))\n return value;\n if (typeof value === \"function\" && !value.length)\n return getResolvedElements(value(), predicate);\n if (Array.isArray(value)) {\n const results = [];\n for (const item of value) {\n const result = getResolvedElements(item, predicate);\n if (result)\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results.length ? results : null;\n }\n return null;\n}\nfunction resolveElements(fn, predicate = defaultElementPredicate, serverPredicate = defaultElementPredicate) {\n const children2 = createMemo(fn);\n const memo = createMemo(\n () => getResolvedElements(children2(), isServer ? serverPredicate : predicate)\n );\n memo.toArray = () => {\n const value = memo();\n return Array.isArray(value) ? value : value ? [value] : [];\n };\n return memo;\n}\nfunction getFirstChild(value, predicate) {\n if (predicate(value))\n return value;\n if (typeof value === \"function\" && !value.length)\n return getFirstChild(value(), predicate);\n if (Array.isArray(value)) {\n for (const item of value) {\n const result = getFirstChild(item, predicate);\n if (result)\n return result;\n }\n }\n return null;\n}\nfunction resolveFirst(fn, predicate = defaultElementPredicate, serverPredicate = defaultElementPredicate) {\n const children2 = createMemo(fn);\n return createMemo(() => getFirstChild(children2(), isServer ? serverPredicate : predicate));\n}\nfunction Refs(props) {\n if (isServer) {\n return props.children;\n }\n const cb = props.ref, resolved = children(() => props.children);\n let prev = [];\n createComputed(() => {\n const els = resolved.toArray().filter(defaultElementPredicate);\n if (!arrayEquals(prev, els))\n untrack(() => cb(els));\n prev = els;\n }, []);\n onCleanup(() => prev.length && cb([]));\n return resolved;\n}\nfunction Ref(props) {\n if (isServer) {\n return props.children;\n }\n const cb = props.ref, resolved = children(() => props.children);\n let prev;\n createComputed(() => {\n const el = resolved.toArray().find(defaultElementPredicate);\n if (el !== prev)\n untrack(() => cb(el));\n prev = el;\n });\n onCleanup(() => prev && cb(void 0));\n return resolved;\n}\n\nexport { Ref, Refs, defaultElementPredicate, getFirstChild, getResolvedElements, mergeRefs, resolveElements, resolveFirst };\n","import { untrack, createSignal, useTransition, createComputed, batch, createMemo, $TRACK } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/index.ts\nvar noop = () => {\n};\nvar noopTransition = (el, done) => done();\nfunction createSwitchTransition(source, options) {\n const initSource = untrack(source);\n const initReturned = initSource ? [initSource] : [];\n if (isServer) {\n return () => initReturned;\n }\n const { onEnter = noopTransition, onExit = noopTransition } = options;\n const [returned, setReturned] = createSignal(\n options.appear ? [] : initReturned\n );\n const [isTransitionPending] = useTransition();\n let next;\n let isExiting = false;\n function exitTransition(el, after) {\n if (!el)\n return after && after();\n isExiting = true;\n onExit(el, () => {\n batch(() => {\n isExiting = false;\n setReturned((p) => p.filter((e) => e !== el));\n after && after();\n });\n });\n }\n function enterTransition(after) {\n const el = next;\n if (!el)\n return after && after();\n next = void 0;\n setReturned((p) => [el, ...p]);\n onEnter(el, after ?? noop);\n }\n const triggerTransitions = options.mode === \"out-in\" ? (\n // exit -> enter\n (prev) => isExiting || exitTransition(prev, enterTransition)\n ) : options.mode === \"in-out\" ? (\n // enter -> exit\n (prev) => enterTransition(() => exitTransition(prev))\n ) : (\n // exit & enter\n (prev) => {\n exitTransition(prev);\n enterTransition();\n }\n );\n createComputed(\n (prev) => {\n const el = source();\n if (untrack(isTransitionPending)) {\n isTransitionPending();\n return prev;\n }\n if (el !== prev) {\n next = el;\n batch(() => untrack(() => triggerTransitions(prev)));\n }\n return el;\n },\n options.appear ? void 0 : initSource\n );\n return returned;\n}\nfunction createListTransition(source, options) {\n const initSource = untrack(source);\n if (isServer) {\n const copy = initSource.slice();\n return () => copy;\n }\n const { onChange } = options;\n let prevSet = new Set(options.appear ? void 0 : initSource);\n const exiting = /* @__PURE__ */ new WeakSet();\n const [toRemove, setToRemove] = createSignal([], { equals: false });\n const [isTransitionPending] = useTransition();\n const finishRemoved = options.exitMethod === \"remove\" ? noop : (els) => {\n setToRemove((p) => (p.push.apply(p, els), p));\n for (const el of els)\n exiting.delete(el);\n };\n const handleRemoved = options.exitMethod === \"remove\" ? noop : options.exitMethod === \"keep-index\" ? (els, el, i) => els.splice(i, 0, el) : (els, el) => els.push(el);\n return createMemo(\n (prev) => {\n const elsToRemove = toRemove();\n const sourceList = source();\n sourceList[$TRACK];\n if (untrack(isTransitionPending)) {\n isTransitionPending();\n return prev;\n }\n if (elsToRemove.length) {\n const next = prev.filter((e) => !elsToRemove.includes(e));\n elsToRemove.length = 0;\n onChange({ list: next, added: [], removed: [], unchanged: next, finishRemoved });\n return next;\n }\n return untrack(() => {\n const nextSet = new Set(sourceList);\n const next = sourceList.slice();\n const added = [];\n const removed = [];\n const unchanged = [];\n for (const el of sourceList) {\n (prevSet.has(el) ? unchanged : added).push(el);\n }\n let nothingChanged = !added.length;\n for (let i = 0; i < prev.length; i++) {\n const el = prev[i];\n if (!nextSet.has(el)) {\n if (!exiting.has(el)) {\n removed.push(el);\n exiting.add(el);\n }\n handleRemoved(next, el, i);\n }\n if (nothingChanged && el !== next[i])\n nothingChanged = false;\n }\n if (!removed.length && nothingChanged)\n return prev;\n onChange({ list: next, added, removed, unchanged, finishRemoved });\n prevSet = nextSet;\n return next;\n });\n },\n options.appear ? [] : initSource.slice()\n );\n}\n\nexport { createListTransition, createSwitchTransition };\n","// src/motion.tsx\nimport { Dynamic } from \"solid-js/web\";\nimport { useContext as useContext2, splitProps, createContext as createContext2 } from \"solid-js\";\nimport { combineStyle } from \"@solid-primitives/props\";\n\n// src/primitives.ts\nimport { createMotionState, createStyles, style } from \"@motionone/dom\";\nimport { createEffect, onCleanup, useContext } from \"solid-js\";\n\n// src/presence.tsx\nimport { mountedStates } from \"@motionone/dom\";\nimport { resolveFirst } from \"@solid-primitives/refs\";\nimport { createSwitchTransition } from \"@solid-primitives/transition-group\";\nimport {\n createContext,\n createSignal,\n batch\n} from \"solid-js\";\nvar PresenceContext = createContext();\nvar Presence = (props) => {\n const [mount, setMount] = createSignal(true), state = { initial: props.initial ?? true, mount }, render = <PresenceContext.Provider value={state}>{createSwitchTransition(\n resolveFirst(() => props.children),\n {\n appear: state.initial,\n mode: props.exitBeforeEnter ? \"out-in\" : \"parallel\",\n onExit(el, done) {\n batch(() => {\n setMount(false);\n mountedStates.get(el)?.getOptions()?.exit ? el.addEventListener(\"motioncomplete\", done) : done();\n });\n },\n onEnter(_, done) {\n batch(() => {\n setMount(true);\n done();\n });\n }\n }\n )}</PresenceContext.Provider>;\n state.initial = true;\n return render;\n};\n\n// src/primitives.ts\nfunction createAndBindMotionState(el, options, presence_state, parent_state) {\n const state = createMotionState(\n presence_state?.initial === false ? { ...options(), initial: false } : options(),\n parent_state\n );\n createEffect(() => {\n if (presence_state && !presence_state.mount())\n return;\n const el_ref = el(), unmount = state.mount(el_ref);\n createEffect(() => state.update(options()));\n onCleanup(() => {\n if (presence_state && options().exit) {\n state.setActive(\"exit\", true);\n el_ref.addEventListener(\"motioncomplete\", unmount);\n } else\n unmount();\n });\n });\n return [state, createStyles(state.getTarget())];\n}\nfunction createMotion(target, options, presenceState) {\n const [state, styles] = createAndBindMotionState(\n () => target,\n typeof options === \"function\" ? options : () => options,\n presenceState\n );\n for (const key in styles) {\n style.set(target, key, styles[key]);\n }\n return state;\n}\nfunction motion(el, props) {\n createMotion(el, props, useContext(PresenceContext));\n}\n\n// src/motion.tsx\nvar OPTION_KEYS = [\n \"initial\",\n \"animate\",\n \"inView\",\n \"inViewOptions\",\n \"hover\",\n \"press\",\n \"variants\",\n \"transition\",\n \"exit\"\n];\nvar ATTR_KEYS = [\"tag\"];\nvar ParentContext = createContext2();\nvar MotionComponent = (props) => {\n const [options, , attrs] = splitProps(props, OPTION_KEYS, ATTR_KEYS);\n const [state, style2] = createAndBindMotionState(\n () => root,\n () => ({ ...options }),\n useContext2(PresenceContext),\n useContext2(ParentContext)\n );\n let root;\n return <ParentContext.Provider value={state}><Dynamic\n {...attrs}\n ref={(el) => {\n root = el;\n props.ref?.(el);\n }}\n component={props.tag || \"div\"}\n style={combineStyle(props.style, style2)}\n /></ParentContext.Provider>;\n};\nvar Motion = new Proxy(MotionComponent, {\n get: (_, tag) => (props) => <MotionComponent {...props} tag={tag} />\n});\nexport {\n Motion,\n Presence,\n PresenceContext,\n createMotion,\n motion\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { BlinkIdUiStateKey } from \"../core/blinkid-ui-state\";\nimport { LocalizationStrings } from \"./LocalizationContext\";\n\nexport const feedbackMessages: Partial<\n Record<BlinkIdUiStateKey, keyof LocalizationStrings>\n> = {\n SENSING_FRONT: \"scan_the_front_side\",\n SENSING_BACK: \"scan_the_back_side\",\n FLIP_CARD: \"flip_to_back_side\",\n WRONG_SIDE: \"flip_document\",\n SCAN_BARCODE: \"scan_the_barcode\",\n // passport\n SENSING_DATA_PAGE: \"scan_data_page\",\n SENSING_TOP_PAGE: \"scan_top_page\",\n SENSING_LEFT_PAGE: \"scan_left_page\",\n SENSING_RIGHT_PAGE: \"scan_right_page\",\n MOVE_TOP: \"move_top\",\n MOVE_LEFT: \"move_left\",\n MOVE_RIGHT: \"move_right\",\n WRONG_TOP_PAGE: \"wrong_top\",\n WRONG_LEFT_PAGE: \"wrong_left\",\n WRONG_RIGHT_PAGE: \"wrong_right\",\n // occlusion\n BLUR_DETECTED: \"blur_detected\",\n GLARE_DETECTED: \"glare_detected\",\n OCCLUDED: \"occluded\",\n // image\n FACE_PHOTO_OCCLUDED: \"face_photo_not_fully_visible\",\n // framing\n DOCUMENT_FRAMING_CAMERA_TOO_CLOSE: \"move_farther\",\n DOCUMENT_FRAMING_CAMERA_TOO_FAR: \"move_closer\",\n DOCUMENT_TOO_CLOSE_TO_FRAME_EDGE: \"document_too_close_to_edge\",\n DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP: \"camera_angle_too_steep\",\n // lighting\n TOO_DARK: \"too_dark\",\n TOO_BRIGHT: \"too_bright\",\n};\n","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 96 60\"{...props}><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M0 6a6 6 0 0 1 6-6h84a6 6 0 0 1 6 6v48a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6zm10.2 7.8c0-1.325 1.11-2.4 2.48-2.4h69.44c1.37 0 2.48 1.075 2.48 2.4s-1.11 2.4-2.48 2.4H12.68c-1.37 0-2.48-1.074-2.48-2.4m70.5 35.4a3.9 3.9 0 1 0 0-7.8 3.9 3.9 0 0 0 0 7.8m-70.5-3c0-1.326 1.098-2.4 2.451-2.4H34.15c1.353 0 2.451 1.075 2.451 2.4s-1.098 2.4-2.451 2.4h-21.5c-1.354 0-2.451-1.075-2.451-2.4Zm2.474-13.8c-1.366 0-2.474 1.075-2.474 2.4 0 1.326 1.108 2.4 2.474 2.4h30.452c1.366 0 2.474-1.075 2.474-2.4s-1.108-2.4-2.474-2.4z\" clip-rule=\"evenodd\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 96 60\"{...props}><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M6 0a6 6 0 0 0-6 6v48a6 6 0 0 0 6 6h84a6 6 0 0 0 6-6V6a6 6 0 0 0-6-6zm42.671 10.8c-1.365 0-2.471 1.074-2.471 2.4s1.106 2.4 2.471 2.4H82.13c1.365 0 2.471-1.075 2.471-2.4s-1.106-2.4-2.471-2.4zM72 49.2c0-1.326 1.058-2.4 2.364-2.4h7.272c1.306 0 2.364 1.075 2.364 2.4s-1.058 2.4-2.364 2.4h-7.272C73.058 51.6 72 50.525 72 49.2M48.702 33.6c-1.382 0-2.502 1.075-2.502 2.4s1.12 2.4 2.502 2.4h15.396c1.382 0 2.502-1.075 2.502-2.4s-1.12-2.4-2.502-2.4zm-2.502-9c0-1.326 1.106-2.4 2.471-2.4H82.13c1.365 0 2.471 1.075 2.471 2.4S83.494 27 82.129 27H48.67c-1.365 0-2.471-1.075-2.471-2.4M13.265 10.8c-1.693 0-3.065 1.407-3.065 3.144v24.024c0 1.117.569 2.097 1.42 2.653.266.174.59.224.894.138a1.12 1.12 0 0 0 .698-.587c1.385-2.82 3.678-5.021 6.438-6.162.373-.154.637-.504.688-.915.05-.41-.119-.816-.443-1.062a7.23 7.23 0 0 1-2.84-5.78c0-3.962 3.115-7.164 6.945-7.164s6.944 3.203 6.944 7.165a7.23 7.23 0 0 1-2.839 5.78 1.16 1.16 0 0 0-.442 1.061c.05.41.314.76.688.915 2.76 1.14 5.052 3.343 6.437 6.162.142.288.395.501.698.587.304.086.628.036.893-.138a3.16 3.16 0 0 0 1.421-2.653V13.944c0-1.737-1.372-3.144-3.065-3.144z\" clip-rule=\"evenodd\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 96 96\"{...props}><rect width=\"96\" height=\"96\" fill=\"#fff\" rx=\"48\"/><path fill=\"#000\" d=\"M44.972 57.46a2 2 0 0 1-1.414-.584l-8.484-8.486a2 2 0 1 1 2.826-2.83l7.07 7.07L57.7 39.904a2 2 0 1 1 2.83 2.828L46.386 56.876a2 2 0 0 1-1.414.584\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 100 100\"{...props}><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M50 7.692C26.634 7.692 7.692 26.634 7.692 50S26.634 92.308 50 92.308 92.308 73.366 92.308 50 73.366 7.692 50 7.692M0 50C0 22.386 22.386 0 50 0s50 22.386 50 50-22.386 50-50 50S0 77.614 0 50\" clip-rule=\"evenodd\" opacity=\".75\"/><circle cx=\"50\" cy=\"50\" r=\"4\" fill=\"#fff\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 120 76\"{...props}><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M118 .5H2a2 2 0 0 0-2 2V68a7.5 7.5 0 0 0 7.5 7.5h105A7.5 7.5 0 0 0 120 68V2.5a2 2 0 0 0-2-2m-14.875 18.75h-38.75a3.125 3.125 0 1 0 0 6.25h38.75a3.125 3.125 0 1 0 0-6.25m-38.75 30h17.5a3.125 3.125 0 1 1 0 6.25h-17.5a3.125 3.125 0 1 1 0-6.25m38.75-15h-38.75a3.125 3.125 0 1 0 0 6.25h38.75a3.125 3.125 0 1 0 0-6.25M16.665 15.5c-2.3 0-4.165 1.935-4.165 4.322v33.034a4.36 4.36 0 0 0 1.93 3.648c.36.239.801.307 1.213.19.412-.118.757-.411.95-.807 1.881-3.877 4.997-6.904 8.746-8.473.508-.213.866-.694.935-1.258a1.6 1.6 0 0 0-.602-1.46c-2.34-1.795-3.857-4.685-3.857-7.947 0-5.448 4.231-9.851 9.435-9.851s9.435 4.403 9.435 9.851c0 3.262-1.517 6.152-3.857 7.947-.44.337-.671.896-.602 1.46s.427 1.045.935 1.258c3.75 1.569 6.865 4.596 8.747 8.473.192.396.537.689.949.807.412.117.852.049 1.213-.19A4.36 4.36 0 0 0 50 52.857V19.822c0-2.387-1.864-4.322-4.164-4.322z\" clip-rule=\"evenodd\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 144 86\"{...props}><path stroke=\"#fff\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M9.119 2H2v7.119M134.883 2h7.118v7.119M134.883 83.865h7.118v-7.119M9.119 83.865H2v-7.119\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 120 75\"{...props}><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M6 0a6 6 0 0 0-6 6v67a2 2 0 0 0 2 2h116a2 2 0 0 0 2-2V6a6 6 0 0 0-6-6zm82.125 56.25h15a3.125 3.125 0 1 1 0 6.25h-15a3.125 3.125 0 1 1 0-6.25m-32.5-42.5h-40a3.125 3.125 0 1 0 0 6.25h40a3.125 3.125 0 1 0 0-6.25m-40 12.5h25a3.125 3.125 0 1 1 0 6.25h-25a3.125 3.125 0 1 1 0-6.25\" clip-rule=\"evenodd\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 100 100\"{...props}><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M67.122 11.998a42.16 42.16 0 0 0-34.244 0l-3.397-7.644a50.52 50.52 0 0 1 41.038 0zm-55.124 20.88a42.16 42.16 0 0 0 0 34.244l-7.644 3.397a50.52 50.52 0 0 1 0-41.038zm76.004 34.244a42.16 42.16 0 0 0 0-34.244l7.644-3.397a50.52 50.52 0 0 1 0 41.038zm-55.124 20.88a42.16 42.16 0 0 0 34.244 0l3.397 7.644a50.52 50.52 0 0 1-41.038 0z\" clip-rule=\"evenodd\" opacity=\".75\"/><circle cx=\"50\" cy=\"50\" r=\"4\" fill=\"#fff\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 101 100\"{...props}><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M50.301 7.692C26.935 7.692 7.994 26.634 7.994 50S26.935 92.308 50.3 92.308 92.61 73.366 92.61 50 73.667 7.692 50.301 7.692M.301 50c0-27.614 22.386-50 50-50s50 22.386 50 50-22.386 50-50 50-50-22.386-50-50\" clip-rule=\"evenodd\" opacity=\".3\"/><circle cx=\"50.3\" cy=\"50\" r=\"4\" fill=\"#fff\"/><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M29.148 13.36C8.912 25.043 1.977 50.918 13.662 71.154L7 75C-6.807 51.085 1.387 20.506 25.301 6.699z\" clip-rule=\"evenodd\"/></svg>","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { Rerun } from \"@solid-primitives/keyed\";\nimport {\n Component,\n createEffect,\n createSignal,\n Match,\n onCleanup,\n ParentComponent,\n Show,\n Switch,\n} from \"solid-js\";\nimport { Motion, Presence } from \"solid-motionone\";\n\nimport { clsx } from \"clsx\";\nimport {\n BlinkIdUiState,\n blinkIdUiStateMap,\n firstSideCapturedStates,\n} from \"../core/blinkid-ui-state\";\nimport { useLocalization } from \"./LocalizationContext\";\nimport { feedbackMessages } from \"./feedbackMessages\";\n\n// icons\nimport CardIconBack from \"./assets/reticles/card-back.svg?component-solid\";\nimport CardIconFront from \"./assets/reticles/card-front.svg?component-solid\";\nimport DoneIcon from \"./assets/reticles/done.svg?component-solid\";\nimport FullIcon from \"./assets/reticles/full.svg?component-solid\";\nimport PassportBottom from \"./assets/reticles/passport-bottom.svg?component-solid\";\nimport PassportHighlight from \"./assets/reticles/passport-highlight.svg?component-solid\";\nimport PassportTop from \"./assets/reticles/passport-top.svg?component-solid\";\nimport SearchIcon from \"./assets/reticles/searching.svg?component-solid\";\nimport ScanIcon from \"./assets/reticles/spin.svg?component-solid\";\n\nexport const UiFeedbackOverlay: Component<{\n uiState: BlinkIdUiState;\n}> = (props) => {\n /**\n * This is a hack since we don't have a discrete state for both a successful\n * scan and a card flip.\n */\n const [showSuccessOnly, setShowSuccessOnly] = createSignal(false);\n let timeout: number;\n\n /**\n * Handles showing the success feedback before other states defined in {@link firstSideCapturedStates}\n */\n createEffect(() => {\n if (firstSideCapturedStates.includes(props.uiState.key)) {\n setShowSuccessOnly(true);\n\n // TODO: incorrectly resolving to NodeJS timeout\n timeout = window.setTimeout(\n () => setShowSuccessOnly(false),\n blinkIdUiStateMap.DOCUMENT_CAPTURED.minDuration,\n );\n } else {\n setShowSuccessOnly(false);\n clearTimeout(timeout!);\n }\n\n onCleanup(() => clearTimeout(timeout!));\n });\n\n const isPassportCaptureState = () => {\n return (\n props.uiState.key === \"MOVE_TOP\" ||\n props.uiState.key === \"MOVE_LEFT\" ||\n props.uiState.key === \"MOVE_RIGHT\"\n );\n };\n\n const getDirection = () => {\n switch (props.uiState.key) {\n case \"MOVE_TOP\":\n return \"top\";\n case \"MOVE_LEFT\":\n return \"left\";\n case \"MOVE_RIGHT\":\n return \"right\";\n default:\n return \"top\";\n }\n };\n\n return (\n <>\n <div\n class=\"absolute left-0 top-0 grid size-full select-none place-items-center\n contain-strict overflow-hidden\"\n >\n <div>\n {/* we only want the actual reticle-like spinners to remain in the screen center\n which is why the container is sized the same dimensions as the reticle\n\n The layout size shouldn't change between the different reticle types, so that the\n message positioning is consistent.\n */}\n <div class=\"size-24\">\n <div class=\"relative size-full grid place-items-center\" aria-hidden>\n {/* default spinners */}\n <Switch>\n <Match when={props.uiState.reticleType === \"searching\"}>\n <SearchReticle />\n </Match>\n <Match when={props.uiState.reticleType === \"processing\"}>\n <ScanningReticle />\n </Match>\n <Match when={props.uiState.reticleType === \"error\"}>\n <ErrorReticle />\n </Match>\n\n {/* Success – reused between multiple states */}\n <Match\n when={\n props.uiState.reticleType === \"done\" || showSuccessOnly()\n }\n >\n <SuccessFeedback />\n </Match>\n\n {/* Success – reused between multiple states */}\n <Match\n when={\n props.uiState.reticleType === \"done\" || showSuccessOnly()\n }\n >\n <SuccessFeedback />\n </Match>\n\n {/* flip card */}\n <Match\n when={\n props.uiState.reticleType === \"flip\" && !showSuccessOnly()\n }\n >\n <FlipCardFeedback />\n </Match>\n\n {/* move passport */}\n <Match when={isPassportCaptureState() && !showSuccessOnly()}>\n <PassportAnimation\n direction={getDirection()}\n duration={blinkIdUiStateMap[props.uiState.key].minDuration}\n />\n </Match>\n </Switch>\n </div>\n </div>\n\n {/* feedback message */}\n <Show when={!showSuccessOnly()}>\n <UiFeedbackMessage uiState={props.uiState} />\n </Show>\n </div>\n </div>\n </>\n );\n};\n\nconst SuccessFeedback: Component = () => {\n return (\n <Motion\n initial={{ opacity: 0, scale: 0.5 }}\n animate={{\n opacity: 1,\n scale: 1,\n transition: { easing: \"ease-in-out\", duration: 0.3 },\n }}\n exit={{ opacity: 0, scale: 5 }}\n >\n <DoneIcon class=\"[&>path]:fill-[initial] size-24 drop-shadow-[0_0_15px_rgba(0,0,0,0.1)]\" />\n </Motion>\n );\n};\n\nconst FlipCardFeedback: Component = () => {\n const cardSideStyles = `backface-hidden drop-shadow-[0_0_15px_rgba(0,0,0,0.1)]`;\n\n return (\n <div class=\"absolute perspective-300px bottom-0\">\n <Motion\n class=\"relative preserve-3d w-24\"\n initial={{ opacity: 0 }}\n animate={{\n opacity: 1,\n rotateY: [\"180deg\"],\n transition: {\n rotateY: {\n duration: blinkIdUiStateMap.FLIP_CARD.minDuration / 1000,\n },\n opacity: {\n duration: 0.5,\n },\n },\n }}\n exit={{ opacity: 0 }}\n >\n {/* we don't set the dimensions, so that the ratio is naturally preserved */}\n <CardIconFront class={cardSideStyles} />\n <CardIconBack\n class={clsx(\n cardSideStyles,\n \"absolute top-0 left-0 w-full transform rotate-y-180\",\n )}\n />\n </Motion>\n </div>\n );\n};\n\nconst PassportAnimation: Component<{\n direction: \"top\" | \"right\" | \"left\";\n duration: number;\n}> = (props) => {\n const rotation = () => {\n switch (props.direction) {\n case \"top\":\n return \"0deg\";\n case \"right\":\n return \"90deg\";\n case \"left\":\n return \"-90deg\";\n }\n };\n\n return (\n <div class=\"absolute perspective-300px bottom-0\">\n <Motion\n class=\"relative\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.3 }}\n >\n <div class=\"relative\" style={{ transform: `rotate(${rotation()})` }}>\n <Motion\n class=\"w-24\"\n initial={{ opacity: 0.3 }}\n animate={{ opacity: 1 }}\n transition={{\n duration: props.duration / 1000,\n easing: \"ease\",\n }}\n >\n <PassportTop class=\"[&>path]:fill-[currentColor] drop-shadow-[0_0_15px_rgba(0,0,0,0.1)]\" />\n </Motion>\n\n <Motion\n class=\"w-24\"\n initial={{ opacity: 1 }}\n animate={{ opacity: 0.3 }}\n transition={{\n duration: props.duration / 1000,\n easing: \"ease\",\n }}\n >\n <PassportBottom class=\"[&>path]:fill-[currentColor] drop-shadow-[0_0_15px_rgba(0,0,0,0.1)]\" />\n </Motion>\n\n <Motion\n class=\"absolute bottom-0 w-full\"\n initial={{ y: \"0\" }}\n animate={{ y: \"-100%\" }}\n transition={{\n duration: props.duration / 1000,\n easing: \"ease\",\n }}\n >\n <PassportHighlight class=\"scale-130\" />\n </Motion>\n </div>\n </Motion>\n </div>\n );\n};\n\nconst ReticleContainer: ParentComponent<{\n type: BlinkIdUiState[\"reticleType\"];\n}> = (props) => {\n return (\n <Motion.div\n class={clsx(\n `absolute bottom-0 grid size-full place-items-center rounded-full\n backdrop-blur-xl bg-opacity-30`,\n props.type === \"error\" ? \"bg-error-500 \" : \"bg-dark-100\",\n )}\n initial={{ opacity: 0 }}\n animate={{\n opacity: 1,\n transition: { delay: 0.05 },\n }}\n transition={{ duration: 0.05 }}\n >\n {props.children}\n </Motion.div>\n );\n};\n\nconst SearchReticle: Component = () => (\n <ReticleContainer type=\"searching\">\n <Motion\n class=\"will-change-transform\"\n animate={{ opacity: 1, transform: \"rotate(360deg)\" }}\n transition={{\n transform: {\n duration: 1,\n easing: \"ease-in-out\",\n repeat: Infinity,\n },\n }}\n >\n <SearchIcon class=\"size-12\" />\n </Motion>\n </ReticleContainer>\n);\n\nconst ErrorReticle: Component = () => (\n <ReticleContainer type=\"error\">\n <FullIcon class=\"size-12\" />\n </ReticleContainer>\n);\n\nconst ScanningReticle: Component = () => (\n <ReticleContainer type=\"processing\">\n <Motion\n animate={{ opacity: 1, rotate: \"360deg\" }}\n transition={{\n rotate: {\n duration: 0.8,\n easing: [0.23, 0.58, 0.58, 0.23],\n repeat: Infinity,\n },\n }}\n >\n <ScanIcon class=\"size-12\" />\n </Motion>\n </ReticleContainer>\n);\n\n/**\n * This component displays feedback messages to the user.\n * Shown below the reticle.\n */\nconst UiFeedbackMessage: Component<{\n uiState: BlinkIdUiState;\n}> = (props) => {\n const { t } = useLocalization();\n\n const message = () => {\n const key = props.uiState.key;\n if (key in feedbackMessages) {\n return feedbackMessages[key];\n }\n\n return;\n };\n\n return (\n <div class=\"absolute left-0 mt-3 w-full flex justify-center p-inline-4\">\n <Presence exitBeforeEnter>\n <Rerun on={() => props.uiState.key}>\n <Show when={message()}>\n <Motion.div\n initial={{ opacity: 0, transform: \"translateY(2rem)\" }}\n animate={{\n opacity: 1,\n transform: \"translateY(0)\",\n transition: { delay: 0.05 },\n }}\n transition={{ duration: 0.05 }}\n exit={{ opacity: 0, transform: \"translateY(-2rem)\" }}\n class=\"max-w-45 text-base gap-1 rounded-2 bg-opacity-30 bg-dark-100 px-2 py-3\n text-center text-balance text-white font-bold\n text-shadow-[0_1px_4px_rgba(0,0,0,0.1)] backdrop-blur-xl will-change-transform\"\n >\n <div role=\"alert\">{t[message()!]}</div>\n </Motion.div>\n </Show>\n </Rerun>\n </Presence>\n </div>\n );\n};\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport type { CameraManagerComponent } from \"@microblink/camera-manager\";\nimport {\n createContext,\n onCleanup,\n type ParentComponent,\n useContext,\n} from \"solid-js\";\nimport { createStore, SetStoreFunction } from \"solid-js/store\";\nimport type { BlinkIdProcessingError } from \"../core/BlinkIdProcessingError\";\nimport type { BlinkIdUxManager } from \"../core/BlinkIdUxManager\";\n\nexport type BlinkIdUiStore = {\n blinkIdUxManager: BlinkIdUxManager;\n cameraManagerComponent: CameraManagerComponent;\n // TODO: should this be part of `BlinkIdUxManager`?\n errorState?: BlinkIdProcessingError;\n documentFiltered: boolean;\n showOnboardingGuide?: boolean;\n showHelpTooltipTimeout?: number;\n showHelpModal?: boolean;\n dismountFeedbackUi: () => void;\n};\n\ntype BlinkIdUiStoreContextValue = {\n store: BlinkIdUiStore;\n updateStore: SetStoreFunction<BlinkIdUiStore>;\n};\n\nconst BlinkIdUiStoreContext = createContext<BlinkIdUiStoreContextValue>();\n\nexport const BlinkIdUiStoreProvider: ParentComponent<{\n blinkIdUxManager: BlinkIdUxManager;\n cameraManagerComponent: CameraManagerComponent;\n showOnboardingGuide?: boolean;\n showHelpTooltipTimeout?: number;\n dismountFeedbackUi: () => void;\n}> = (props) => {\n const [store, updateStore] = createStore<BlinkIdUiStore>(\n {} as BlinkIdUiStore,\n );\n\n // This needs to be created outside of `useEffect` since we\n // need it immediately on mount\n updateStore({\n /* eslint-disable solid/reactivity */\n blinkIdUxManager: props.blinkIdUxManager,\n cameraManagerComponent: props.cameraManagerComponent,\n showOnboardingGuide: props.showOnboardingGuide,\n showHelpTooltipTimeout: props.showHelpTooltipTimeout,\n dismountFeedbackUi: props.dismountFeedbackUi,\n /* eslint-enable solid/reactivity */\n });\n\n const contextValue = {\n store,\n updateStore,\n };\n\n onCleanup(() => {\n console.debug(\"BlinkIdUiStoreProvider cleanup\");\n });\n\n return (\n <BlinkIdUiStoreContext.Provider value={contextValue}>\n {props.children}\n </BlinkIdUiStoreContext.Provider>\n );\n};\n\nexport function useBlinkIdUiStore() {\n const ctx = useContext(BlinkIdUiStoreContext);\n if (!ctx) {\n throw new Error(\"BlinkIdUiStoreContext.Provider not in scope\");\n }\n\n return ctx;\n}\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { EnvironmentProvider } from \"@ark-ui/solid/environment\";\nimport { Component, createSignal, JSX, onMount, Show } from \"solid-js\";\n\nexport const SmartEnvironmentProvider: Component<{\n children: (rootNode: Node) => JSX.Element;\n}> = (props) => {\n const [rootNode, setRootNode] = createSignal<Node>();\n const [ref, setRef] = createSignal<HTMLSpanElement>();\n\n onMount(() => {\n const spanRef = ref();\n\n if (!spanRef) {\n return;\n }\n\n setRootNode(spanRef.getRootNode());\n });\n\n return (\n <>\n <Show when={rootNode()} fallback={<span ref={setRef} />}>\n {(rootNode) => (\n <EnvironmentProvider value={() => rootNode()}>\n {props.children(rootNode())}\n </EnvironmentProvider>\n )}\n </Show>\n </>\n );\n};\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { Dialog } from \"@ark-ui/solid/dialog\";\nimport { JSX, ParentComponent, Show } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\nimport { SmartEnvironmentProvider } from \"./SmartEnvironmentProvider\";\n\nimport styles from \"./styles.module.scss\";\n\ntype ModalProps = {\n mountTarget: HTMLElement;\n headerImage?: JSX.Element;\n header?: string | JSX.Element;\n actions?: JSX.Element;\n showCloseButton?: boolean;\n onCloseClicked?: () => void;\n modalStyle?: \"compact\" | \"default\" | \"large\";\n} & Dialog.RootProps;\n\nexport const Modal: ParentComponent<ModalProps> = (props) => {\n const getPaddingClass = () => {\n switch (props.modalStyle) {\n case \"compact\":\n return styles.compact;\n case \"large\":\n return styles.compact;\n case \"default\":\n default:\n return undefined;\n }\n };\n\n return (\n <SmartEnvironmentProvider>\n {() => (\n <Dialog.Root\n // prevent closing by clicking outside\n onFocusOutside={(e) => e.preventDefault()}\n onInteractOutside={(e) => e.preventDefault()}\n restoreFocus\n unmountOnExit\n lazyMount\n // TODO: report bug to Ark UI\n // https://github.com/chakra-ui/zag/blob/a3ea8a50672aac3f25e5644d4708b9d8286a4302/CHANGELOG.md?plain=1#L1030C56-L1030C67\n // breaks focus trap\n // role=\"alertdialog\"\n {...props}\n >\n {/* Ark UI renders an empty portal even if it's not open, which is why\n we need to wrap it in a <Show>\n https://github.com/chakra-ui/ark/discussions/3252\n */}\n <Show when={props.open}>\n <Portal mount={props.mountTarget}>\n <Dialog.Positioner class={styles.dialogPositioner}>\n <Dialog.Backdrop class={styles.dialogBackdrop} />\n <Dialog.Content\n class={`${styles.dialogContent} ${getPaddingClass()}`}\n >\n {/* Close button */}\n <Show when={props.showCloseButton}>\n <Dialog.CloseTrigger\n class={styles.closeButton}\n onClick={props.onCloseClicked}\n >\n <span class={styles.closeButtonInner}>&times;</span>\n </Dialog.CloseTrigger>\n </Show>\n\n {/* headerImage */}\n <Show when={props.headerImage}>{props.headerImage}</Show>\n\n {/* header */}\n <Show when={props.header}>\n {(header) => (\n <Dialog.Title class={styles.dialogTitle}>\n {header()}\n </Dialog.Title>\n )}\n </Show>\n\n {/* Main content */}\n <Dialog.Description class={styles.contentOut}>\n {props.children}\n </Dialog.Description>\n\n {/* Action buttons */}\n <Show when={props.actions}>\n <div>{props.actions}</div>\n </Show>\n </Dialog.Content>\n </Dialog.Positioner>\n </Portal>\n </Show>\n </Dialog.Root>\n )}\n </SmartEnvironmentProvider>\n );\n};\n\ntype AlertModalProps = {\n mountTarget: HTMLElement;\n header: string;\n text: string;\n open: boolean;\n primaryButtonText?: string;\n secondaryButtonText?: string;\n onPrimaryClick: () => void;\n onSecondaryClick: () => void;\n};\n\nexport const AlertModal: ParentComponent<AlertModalProps> = ({\n mountTarget,\n header,\n text,\n open,\n onPrimaryClick,\n onSecondaryClick,\n primaryButtonText = \"Retry\",\n secondaryButtonText = \"Cancel\",\n}) => {\n let primaryButtonEl!: HTMLButtonElement;\n\n return (\n <Modal\n mountTarget={mountTarget}\n header={<span class={styles.alertTitle}>{header}</span>}\n initialFocusEl={() => primaryButtonEl}\n open={open}\n actions={\n <div class={styles.actions}>\n <button\n class={styles.secondaryActionButton}\n onClick={() => onSecondaryClick()}\n >\n {secondaryButtonText}\n </button>\n <button\n ref={primaryButtonEl}\n class={styles.primaryActionButton}\n onClick={() => onPrimaryClick()}\n >\n {primaryButtonText}\n </button>\n </div>\n }\n modalStyle=\"compact\"\n >\n <p class={styles.alertText}>{text}</p>\n </Modal>\n );\n};\n","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 280 197\"{...props}><path fill=\"#10B990\" d=\"M150 175.5c0 7.456-6.044 13.5-13.5 13.5-7.455 0-13.5-6.044-13.5-13.5s6.045-13.5 13.5-13.5c7.456 0 13.5 6.044 13.5 13.5M239.717 153.996H36.283c-5.667 0-10.283-4.574-10.283-10.2V22.201C26 16.578 30.61 12 36.283 12h203.434C245.384 12 250 16.574 250 22.2V143.8c0 5.623-4.612 10.201-10.283 10.201zM36.283 14.324c-4.382 0-7.945 3.535-7.945 7.882v121.593c0 4.347 3.563 7.882 7.945 7.882h203.434c4.381 0 7.944-3.535 7.944-7.882V22.201c0-4.346-3.563-7.881-7.944-7.881H36.283z\"/><path fill=\"#fff\" d=\"M142.651 171.333a1.214 1.214 0 0 0-1.292-.246 1.2 1.2 0 0 0-.385.246l-6.234 5.962-2.715-2.596a1.214 1.214 0 0 0-1.293-.246 1.2 1.2 0 0 0-.384.246q-.167.16-.258.368a1.1 1.1 0 0 0 .258 1.236l3.516 3.366c.231.222.535.331.838.331h.075c.304 0 .607-.109.839-.331l7.035-6.727a1.1 1.1 0 0 0 .349-.802 1.106 1.106 0 0 0-.349-.802z\"/><path fill=\"#142641\" d=\"M224.891 30H45.108C40.078 30 36 34.066 36 39.08v95.84c0 5.014 4.078 9.08 9.108 9.08H224.89c5.031 0 9.109-4.066 9.109-9.08V39.08c0-5.014-4.078-9.08-9.109-9.08\" opacity=\".3\"/><path fill=\"#fff\" d=\"M228.892 24H49.109C44.078 24 40 28.065 40 33.08v95.84c0 5.015 4.078 9.08 9.109 9.08h179.783c5.03 0 9.108-4.065 9.108-9.08V33.08c0-5.014-4.078-9.08-9.108-9.08\"/><path fill=\"#142641\" d=\"M228.741 139H49.259C43.605 139 39 134.419 39 128.785v-95.57C39 27.585 43.6 23 49.259 23H228.74C234.395 23 239 27.58 239 33.215v95.57c0 5.63-4.601 10.215-10.259 10.215M49.259 25.327c-4.372 0-7.927 3.54-7.927 7.893v95.569c0 4.353 3.555 7.893 7.927 7.893H228.74c4.371 0 7.926-3.54 7.926-7.893V33.216c0-4.353-3.555-7.893-7.926-7.893H49.259z\"/><path fill=\"#142641\" d=\"M81 82c-8.82 0-16-7.178-16-16s7.18-16 16-16c8.822 0 16 7.178 16 16s-7.178 16-16 16m0-29.662c-7.533 0-13.666 6.128-13.666 13.666s6.128 13.667 13.667 13.667c7.537 0 13.666-6.129 13.666-13.667S88.539 52.338 81 52.338\"/><path fill=\"#142641\" d=\"M106.989 102.79a1.167 1.167 0 0 1-1.165-1.168c0-10.42-10.878-18.895-24.248-18.895S57.33 91.2 57.33 101.622c0 .645-.522 1.168-1.165 1.168A1.166 1.166 0 0 1 55 101.622c0-11.707 11.921-21.234 26.576-21.234s26.577 9.528 26.577 21.234c0 .645-.521 1.168-1.164 1.168m101.224-43.344h-85.925a1.16 1.16 0 0 1-.823-.342 1.18 1.18 0 0 1-.342-.828c0-.645.522-1.17 1.165-1.17h85.925c.643 0 1.165.524 1.165 1.17s-.522 1.17-1.165 1.17m.176 16.485h-85.926a1.167 1.167 0 0 1-1.164-1.17c0-.645.522-1.168 1.164-1.168h85.926c.643 0 1.165.523 1.165 1.169s-.522 1.169-1.165 1.169m-23.683 16.346h-62.224a1.17 1.17 0 0 1-1.165-1.17c0-.644.523-1.168 1.165-1.168h62.224c.643 0 1.164.523 1.164 1.168 0 .646-.521 1.17-1.164 1.17m.028 30.709c-.471 0-.918-.291-1.09-.762a1.18 1.18 0 0 1 .685-1.507 15.1 15.1 0 0 0 5.44-3.545c-.755-.206-1.537-.571-2.138-1.197-.713-.748-1.048-1.74-.959-2.867.065-.889.433-1.787 1.057-2.595q.182-.237.363-.482c.592-.8 1.268-1.708 2.255-2.315 1.034-.636 2.245-.786 3.247-.398.927.355 1.617 1.146 1.938 2.231.28.935.238 1.964-.126 2.97a17 17 0 0 1-1.011 2.277 13.8 13.8 0 0 0 4.231-1.693 1.38 1.38 0 0 1 1.667.182c.447.431.555 1.119.251 1.666-.255.468-.498 1.094-.199 1.435.223.258.66.253.973.118.615-.272 1.062-.824 1.546-1.904a1.713 1.713 0 0 1 1.202-.969 1.73 1.73 0 0 1 1.514.413c1.183 1.07 2.828 1.636 4.384 1.519 1.798-.13 3.526-1.164 4.505-2.684a1.161 1.161 0 0 1 1.612-.351c.54.351.699 1.071.349 1.618-1.365 2.129-3.773 3.569-6.289 3.751a8.26 8.26 0 0 1-5.502-1.613c-.489.907-1.206 1.842-2.376 2.361-1.317.585-2.79.295-3.67-.72a2.88 2.88 0 0 1-.708-1.8 16 16 0 0 1-5.195 1.281 17.56 17.56 0 0 1-7.542 5.519 1.1 1.1 0 0 1-.405.075zm7.7-13.545c-.275 0-.591.094-.871.267-.606.369-1.09 1.024-1.602 1.716q-.197.267-.391.52c-.243.313-.537.799-.578 1.341-.047.613.158.908.316 1.072.401.421 1.212.687 2.18.73a15 15 0 0 0 1.729-3.364c.186-.524.219-1.061.084-1.505-.173-.575-.447-.683-.541-.72a.9.9 0 0 0-.326-.057m30.401-71.103H56.164A1.166 1.166 0 0 1 55 37.17c0-.646.521-1.17 1.164-1.17h166.671c.643 0 1.165.523 1.165 1.17 0 .644-.522 1.168-1.165 1.168m-115.846 81.879H56.164a1.16 1.16 0 0 1-.822-.342 1.18 1.18 0 0 1-.342-.828c0-.645.521-1.168 1.164-1.168h50.825c.643 0 1.164.523 1.164 1.168 0 .646-.521 1.17-1.164 1.17\"/></svg>","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { Modal } from \"@microblink/shared-components/Modal\";\nimport { type Component } from \"solid-js\";\nimport { useBlinkIdUiStore } from \"../BlinkIdUiStoreContext\";\n\nimport HelpCorrectFraming from \"../assets/help/help_correct_framing.svg?component-solid\";\n\nimport styles from \"./styles.module.scss\";\nimport { DialogTitle } from \"@ark-ui/solid\";\nimport { useLocalization } from \"../LocalizationContext\";\n\nexport const OnboardingGuideModal: Component = () => {\n const { t } = useLocalization();\n\n const { store, updateStore } = useBlinkIdUiStore();\n\n const modalVisible = () => store.showOnboardingGuide;\n const hideModal = () => {\n updateStore({ showOnboardingGuide: false });\n void store.blinkIdUxManager.cameraManager.startFrameCapture();\n };\n\n let startScanningBtnRef!: HTMLButtonElement;\n\n return (\n <Modal\n mountTarget={store.cameraManagerComponent.overlayLayerNode}\n initialFocusEl={() => startScanningBtnRef}\n open={modalVisible()}\n modalStyle=\"large\"\n >\n <div class={styles.onboardingGuide}>\n <div class={styles.content}>\n <div class={styles.header}>\n <HelpCorrectFraming />\n <div class={styles.textContent}>\n <DialogTitle>{t.onboarding_modal_title}</DialogTitle>\n <p>{t.onboarding_modal_details}</p>\n </div>\n </div>\n </div>\n <div class={styles.actions}>\n <button\n ref={startScanningBtnRef}\n class={styles.buttonPrimary}\n onClick={() => hideModal()}\n >\n {t.onboarding_modal_btn}\n </button>\n </div>\n </div>\n </Modal>\n );\n};\n","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 280 197\"{...props}><path fill=\"#F43F5E\" d=\"M150 175.5c0 7.456-6.044 13.5-13.5 13.5-7.455 0-13.5-6.044-13.5-13.5s6.045-13.5 13.5-13.5c7.456 0 13.5 6.044 13.5 13.5\"/><path fill=\"#fff\" d=\"m138.103 175.501 2.563-2.564a1.14 1.14 0 0 0 .333-.802 1.12 1.12 0 0 0-.333-.802 1.135 1.135 0 0 0-1.236-.247 1.1 1.1 0 0 0-.367.247l-2.563 2.564-2.563-2.564a1.135 1.135 0 0 0-1.603 1.604l2.563 2.564-2.563 2.565a1.131 1.131 0 0 0 .802 1.934c.289 0 .579-.109.801-.33l2.563-2.565 2.563 2.565c.222.221.512.33.801.33a1.132 1.132 0 0 0 .802-1.934z\"/><path fill=\"#142641\" d=\"M223.1 28H86.9c-3.81 0-6.9 3.067-6.9 6.85v72.3c0 3.783 3.09 6.85 6.9 6.85h136.2c3.811 0 6.9-3.067 6.9-6.85v-72.3c0-3.783-3.089-6.85-6.9-6.85\" opacity=\".3\"/><path fill=\"#fff\" d=\"M226.1 23H89.9c-3.81 0-6.9 3.066-6.9 6.85v72.3c0 3.784 3.09 6.85 6.9 6.85h136.2c3.811 0 6.9-3.066 6.9-6.85v-72.3c0-3.783-3.089-6.85-6.9-6.85\"/><path fill=\"#F43F5E\" fill-rule=\"evenodd\" d=\"M94 95c0-.552.45-1 1.006-1h64.988c.556 0 1.006.448 1.006 1s-.45 1-1.006 1H95.006A1.003 1.003 0 0 1 94 95\" clip-rule=\"evenodd\"/><path fill=\"#142641\" d=\"M86.204 114.895a7 7 0 0 1-.197-.304c-.287-.473-.579-.925-.874-1.38-2.837-4.382-5.908-9.125-6.36-36.155-.136-8.148-.081-19.483-.036-28.752.019-3.943.036-7.513.036-10.304C61.178 49.778 60.7 51.017 54.456 67.186a660 660 0 0 1-3.88 9.87c-9.27 22.957-9.071 38.414-8.167 48.304.578 6.325 1.7 12.626 3.353 18.761l3.373 12.526c.85 3.158 3.733 5.353 7.015 5.353h34.072c4.168 0 7.94-2.507 9.257-6.447 1.022-3.055 1.969-6.21 2.898-9.303.748-2.493 1.484-4.946 2.239-7.277a275 275 0 0 0 2.126-6.841l23.344-25.859c4.406-4.879 3.734-12.473-1.461-16.511a11.33 11.33 0 0 0-14.451.446z\" opacity=\".3\"/><path fill=\"#142641\" fill-rule=\"evenodd\" d=\"M90.852 24.001a5.853 5.853 0 0 0-5.856 5.85v72.298a5.853 5.853 0 0 0 5.856 5.85h135.296a5.853 5.853 0 0 0 5.856-5.85V29.851a5.853 5.853 0 0 0-5.856-5.85zM83 29.851A7.85 7.85 0 0 1 90.852 22h135.296A7.85 7.85 0 0 1 234 29.85v72.299a7.85 7.85 0 0 1-7.852 7.851H90.852A7.85 7.85 0 0 1 83 102.149z\" clip-rule=\"evenodd\"/><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M90.061 104.73c-1.222-.761-2.377-1.906-3.38-3.555-.636-1.042-1.111-1.791-1.47-2.592-1.37-3.05-1.053-6.846-1.45-30.49-.137-8.18-.08-20.081-.036-29.674.02-4.03.036-7.651.036-10.419-20.716 13.819-25.98 24.099-36.488 50.03-10.175 25.107-7.267 38.726-5.44 47.288l.077.359c.517 2.424.864 4.881 1.212 7.338.219 1.547.438 3.094.699 4.633l2.43 14.327c.59 3.478 3.635 6.025 7.19 6.025h33.622c4.184 0 7.97-2.507 9.292-6.447 1.026-3.056 1.976-6.212 2.908-9.306.752-2.494 1.491-4.948 2.248-7.279a275 275 0 0 0 2.124-6.807l23.442-25.876c4.42-4.88 3.745-12.473-1.468-16.511-4.315-3.343-10.407-3.156-14.502.445z\" clip-rule=\"evenodd\"/><path fill=\"#142641\" fill-rule=\"evenodd\" d=\"m84.765 26-1.564 1.044c-10.427 6.964-17.026 13.077-22.337 20.757-5.29 7.65-9.27 16.81-14.519 29.779-5.124 12.657-6.97 22.46-7.292 30.21-.322 7.746.883 13.396 1.8 17.694l.078.369c.509 2.388.852 4.813 1.2 7.278l.001.007c.218 1.544.439 3.104.702 4.657l2.43 14.342c.672 3.964 4.137 6.863 8.179 6.863h33.62c4.58 0 8.775-2.752 10.244-7.135 1.03-3.075 1.984-6.246 2.915-9.339l.002-.007c.752-2.498 1.488-4.944 2.241-7.265a279 279 0 0 0 2.067-6.621l23.287-25.734c4.81-5.315 4.075-13.583-1.596-17.981-4.696-3.642-11.327-3.439-15.784.485l-20.454 18.01c-.859-.657-1.69-1.566-2.446-2.808l-.22-.361c-.532-.873-.903-1.48-1.192-2.124-.596-1.329-.86-2.862-1.002-7.157-.08-2.436-.122-5.7-.179-10.245-.043-3.443-.095-7.62-.18-12.729-.138-8.175-.082-20.076-.037-29.682v-.003c.02-4.032.036-7.66.036-10.432zm-2.01 3.76c-.005 2.447-.019 5.365-.033 8.537v.01c-.046 9.596-.102 21.516.036 29.715.085 5.074.137 9.241.18 12.685.058 4.572.099 7.87.18 10.322.141 4.285.402 6.179 1.175 7.903.344.767.787 1.491 1.307 2.344q.11.176.22.361c1.076 1.768 2.338 3.034 3.708 3.887l.636.397 21.607-19.025a10.38 10.38 0 0 1 13.217-.406c4.754 3.687 5.369 10.62 1.338 15.075l-23.592 26.07-.064.218a277 277 0 0 1-2.116 6.789c-.76 2.343-1.502 4.808-2.252 7.3l-.002.006c-.933 3.1-1.879 6.244-2.898 9.286-1.175 3.505-4.553 5.771-8.34 5.771H53.444c-3.065 0-5.69-2.199-6.199-5.199l-2.43-14.342a170 170 0 0 1-.694-4.61l-.003-.017c-.346-2.448-.697-4.936-1.221-7.396l-.077-.36c-.91-4.271-2.07-9.719-1.76-17.209.312-7.493 2.099-17.072 7.149-29.548 5.258-12.989 9.164-21.951 14.31-29.394C67.38 41.9 73.377 36.19 82.756 29.76\" clip-rule=\"evenodd\"/><path fill=\"#142641\" fill-rule=\"evenodd\" d=\"M92.209 102.843a1.007 1.007 0 0 0-1.342.459c-.306.623-.998 1.36-2.044 2.125-1.027.751-2.31 1.468-3.682 2.078a23.8 23.8 0 0 1-4.119 1.409c-1.331.313-2.475.423-3.293.325a1.003 1.003 0 0 0-1.116.871 1 1 0 0 0 .876 1.11c1.153.138 2.559-.027 3.995-.364a26 26 0 0 0 4.477-1.53c1.47-.654 2.885-1.439 4.052-2.292 1.146-.839 2.143-1.807 2.658-2.857a.995.995 0 0 0-.462-1.334\" clip-rule=\"evenodd\"/><path fill=\"#142641\" d=\"M114 67c-6.616 0-12-5.383-12-12s5.384-12 12-12 12 5.383 12 12c0 6.616-5.384 12-12 12m0-22.247c-5.65 0-10.249 4.596-10.249 10.25s4.596 10.25 10.249 10.25 10.25-4.596 10.25-10.25-4.596-10.25-10.25-10.25\"/><path fill=\"#142641\" fill-rule=\"evenodd\" d=\"M145 49c0-.552.449-1 1.003-1h64.994c.554 0 1.003.448 1.003 1s-.449 1-1.003 1h-64.994A1 1 0 0 1 145 49M145 61c0-.552.449-1 1.003-1h64.994c.554 0 1.003.448 1.003 1s-.449 1-1.003 1h-64.994A1 1 0 0 1 145 61M94 34c0-.552.446-1 .997-1h125.006c.551 0 .997.448.997 1s-.446 1-.997 1H94.997A1 1 0 0 1 94 34M145 74c0-.552.451-1 1.007-1h46.986c.556 0 1.007.448 1.007 1s-.451 1-1.007 1h-46.986A1.004 1.004 0 0 1 145 74M114 66.984c-10.183 0-18.019 6.485-18.019 14.024a.991.991 0 1 1-1.981 0C94 71.961 103.186 65 114 65s20 6.96 20 16.008a.992.992 0 1 1-1.981 0c0-7.54-7.836-14.024-18.019-14.024\" clip-rule=\"evenodd\"/><path fill=\"#142641\" d=\"M196.809 95.99a.81.81 0 0 1-.735-1.147.81.81 0 0 1 .453-.423 10.5 10.5 0 0 0 3.789-2.454c-.526-.142-1.071-.394-1.489-.829-.497-.517-.73-1.204-.668-1.984.045-.615.301-1.236.736-1.796q.127-.164.253-.334c.412-.553.883-1.181 1.57-1.602.721-.44 1.564-.54 2.262-.276.645.247 1.125.794 1.349 1.545.195.648.166 1.36-.087 2.056a12 12 0 0 1-.705 1.576 9.6 9.6 0 0 0 2.947-1.172.96.96 0 0 1 1.443.673.96.96 0 0 1-.107.606c-.178.323-.347.757-.139.993.156.179.46.175.678.082.428-.188.739-.57 1.077-1.318a1.19 1.19 0 0 1 1.398-.653c.183.05.352.141.493.268a4.2 4.2 0 0 0 3.053 1.052 4.17 4.17 0 0 0 3.137-1.858.815.815 0 0 1 1.462.275.8.8 0 0 1-.096.602c-.951 1.473-2.628 2.47-4.379 2.596a5.77 5.77 0 0 1-3.832-1.117c-.341.629-.84 1.276-1.655 1.635-.918.404-1.943.204-2.556-.499a2 2 0 0 1-.493-1.245 11.2 11.2 0 0 1-3.618.886 12.2 12.2 0 0 1-5.252 3.82.8.8 0 0 1-.282.052zm5.363-9.375c-.192 0-.412.065-.607.185-.422.256-.759.709-1.116 1.188q-.137.184-.272.36c-.169.216-.373.553-.403.928-.032.424.111.628.221.742.279.291.844.476 1.518.505.499-.722.903-1.504 1.204-2.328.129-.362.152-.735.059-1.042-.121-.398-.312-.473-.377-.499a.7.7 0 0 0-.227-.039\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 280 197\"{...props}><path fill=\"#F43F5E\" d=\"M150 175.5c0 7.456-6.044 13.5-13.5 13.5-7.455 0-13.5-6.044-13.5-13.5s6.045-13.5 13.5-13.5c7.456 0 13.5 6.044 13.5 13.5M239.717 153.996H36.283c-5.667 0-10.283-4.574-10.283-10.2V22.201C26 16.578 30.61 12 36.283 12h203.434C245.384 12 250 16.574 250 22.2V143.8c0 5.623-4.612 10.201-10.283 10.201zM36.283 14.324c-4.382 0-7.945 3.535-7.945 7.882v121.593c0 4.347 3.563 7.882 7.945 7.882h203.434c4.381 0 7.944-3.535 7.944-7.882V22.201c0-4.346-3.563-7.881-7.944-7.881H36.283z\"/><path fill=\"#fff\" d=\"m138.103 175.501 2.563-2.564a1.14 1.14 0 0 0 .333-.802 1.12 1.12 0 0 0-.333-.802 1.135 1.135 0 0 0-1.236-.247 1.1 1.1 0 0 0-.367.247l-2.563 2.564-2.563-2.564a1.135 1.135 0 0 0-1.603 1.604l2.563 2.564-2.563 2.565a1.131 1.131 0 0 0 .802 1.934c.289 0 .579-.109.801-.33l2.563-2.565 2.563 2.565c.222.221.512.33.801.33a1.132 1.132 0 0 0 .802-1.934z\"/><path fill=\"#142641\" d=\"M225.891 30H46.108a9.12 9.12 0 0 0-6.44 2.66A9.07 9.07 0 0 0 37 39.08v95.839a9.05 9.05 0 0 0 2.667 6.421 9.13 9.13 0 0 0 6.44 2.66h179.784a9.14 9.14 0 0 0 6.441-2.659 9.1 9.1 0 0 0 1.975-2.947 9.05 9.05 0 0 0 .693-3.475v-95.84a9.07 9.07 0 0 0-5.623-8.388 9.1 9.1 0 0 0-3.486-.691\" opacity=\".3\"/><path fill=\"#fff\" d=\"M229.892 24H50.109a9.13 9.13 0 0 0-6.441 2.66A9.08 9.08 0 0 0 41 33.08v95.839a9 9 0 0 0 .693 3.475 9.1 9.1 0 0 0 4.93 4.915 9.1 9.1 0 0 0 3.486.691h179.783a9.129 9.129 0 0 0 6.441-2.66 9.07 9.07 0 0 0 2.667-6.421v-95.84c0-2.407-.96-4.717-2.668-6.42a9.12 9.12 0 0 0-6.44-2.659\"/><path fill=\"#142641\" d=\"M229.741 140H50.259C44.605 140 40 135.379 40 129.696V33.304C40 27.624 44.6 23 50.259 23H229.74C235.395 23 240 27.62 240 33.304v96.392c0 5.679-4.6 10.304-10.259 10.304M50.259 25.348c-4.37 0-7.926 3.57-7.926 7.96V129.7c0 4.391 3.555 7.961 7.926 7.961H229.74c4.372 0 7.927-3.57 7.927-7.961V33.304c0-4.39-3.555-7.961-7.927-7.961H50.259z\"/><path fill=\"#142641\" d=\"M82 83c-8.822 0-16-7.178-16-16 0-8.82 7.178-16 16-16s16 7.18 16 16c0 8.822-7.178 16-16 16m0-29.662c-7.533 0-13.667 6.13-13.667 13.666 0 7.539 6.129 13.667 13.667 13.667s13.667-6.128 13.667-13.667c0-7.537-6.129-13.666-13.667-13.666\"/><path fill=\"#142641\" d=\"M107.989 102.791c-.309 0-.605-.124-.823-.343a1.17 1.17 0 0 1-.342-.827c0-10.42-10.877-18.894-24.247-18.894S58.33 91.202 58.33 101.621a1.17 1.17 0 0 1-1.165 1.136c-.303 0-.594-.119-.811-.331a1.17 1.17 0 0 1-.353-.805c0-11.705 11.921-21.232 26.576-21.232s26.576 9.527 26.576 21.232c0 .646-.521 1.17-1.164 1.17m101.223-43.346h-85.925a1.16 1.16 0 0 1-.801-.354 1.174 1.174 0 0 1 0-1.63c.211-.218.498-.345.801-.354h85.925a1.169 1.169 0 0 1 0 2.338m.178 16.486h-85.926a1.169 1.169 0 0 1-.823-1.996 1.16 1.16 0 0 1 .823-.342h85.926a1.163 1.163 0 0 1 1.13 1.17 1.163 1.163 0 0 1-1.13 1.169m-23.684 16.346h-62.223a1.165 1.165 0 0 1-1.131-1.17 1.165 1.165 0 0 1 1.131-1.17h62.223a1.164 1.164 0 0 1 1.131 1.17 1.164 1.164 0 0 1-1.131 1.169m.028 30.709c-.471 0-.918-.291-1.09-.763a1.18 1.18 0 0 1 .034-.894c.128-.282.362-.502.651-.612a15.1 15.1 0 0 0 5.44-3.545c-.754-.205-1.537-.57-2.138-1.197-.713-.748-1.048-1.74-.959-2.867.065-.889.433-1.787 1.057-2.595q.183-.239.363-.482c.592-.8 1.268-1.707 2.255-2.315 1.035-.637 2.245-.781 3.248-.398.926.356 1.616 1.146 1.937 2.231.28.936.238 1.964-.126 2.97q-.42 1.176-1.011 2.277a13.8 13.8 0 0 0 4.231-1.693 1.374 1.374 0 0 1 2.071.973c.047.301-.007.608-.153.874-.255.468-.498 1.095-.199 1.437.223.257.661.252.973.117.615-.272 1.062-.824 1.546-1.904a1.71 1.71 0 0 1 1.202-.968 1.74 1.74 0 0 1 1.514.411c1.183 1.072 2.832 1.637 4.384 1.521 1.799-.132 3.527-1.165 4.505-2.685a1.165 1.165 0 0 1 2.099.398c.068.297.019.609-.138.87-1.365 2.127-3.773 3.567-6.289 3.75a8.25 8.25 0 0 1-5.502-1.614c-.489.908-1.206 1.843-2.376 2.362-1.317.585-2.79.295-3.67-.72a2.88 2.88 0 0 1-.708-1.8 16 16 0 0 1-5.195 1.281 17.57 17.57 0 0 1-7.541 5.519 1.2 1.2 0 0 1-.406.075zm7.701-13.545c-.276 0-.592.094-.872.267-.606.37-1.09 1.024-1.602 1.717q-.197.266-.391.519c-.243.313-.536.8-.578 1.342-.047.612.158.907.316 1.071.401.421 1.212.688 2.18.73a14.9 14.9 0 0 0 1.729-3.364c.186-.523.219-1.061.084-1.505-.173-.575-.447-.683-.541-.72a.9.9 0 0 0-.325-.057m30.4-71.102H57.165c-.309 0-.605-.123-.824-.342A1.172 1.172 0 0 1 57.165 36h166.67A1.164 1.164 0 0 1 225 37.17a1.164 1.164 0 0 1-1.165 1.17m-115.846 81.878H57.165a1.164 1.164 0 0 1-1.13-1.169 1.164 1.164 0 0 1 1.13-1.169h50.824a1.165 1.165 0 0 1 1.165 1.169 1.165 1.165 0 0 1-1.165 1.169\"/><path fill=\"#F9FAFB\" d=\"M101.772 23 54 139.999h47.772L144.158 23zm56.203 0-47.772 117 7.727-.001L165 23z\" opacity=\".95\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 280 197\"{...props}><path fill=\"#F43F5E\" d=\"M150 175.5c0 7.456-6.044 13.5-13.5 13.5-7.455 0-13.5-6.044-13.5-13.5s6.045-13.5 13.5-13.5c7.456 0 13.5 6.044 13.5 13.5\"/><path fill=\"#142641\" d=\"M225.893 29.001H46.109a9.13 9.13 0 0 0-6.441 2.66A9.08 9.08 0 0 0 37 38.08v95.839a9.06 9.06 0 0 0 2.668 6.421 9.1 9.1 0 0 0 6.44 2.659h179.784a9.12 9.12 0 0 0 6.44-2.659A9.07 9.07 0 0 0 235 133.92V38.08a9.05 9.05 0 0 0-2.667-6.42 9.11 9.11 0 0 0-6.441-2.66z\" opacity=\".3\"/><path fill=\"#fff\" d=\"M230.892 24H51.108a9.12 9.12 0 0 0-6.44 2.66A9.07 9.07 0 0 0 42 33.08v95.839a9.05 9.05 0 0 0 2.667 6.421 9.13 9.13 0 0 0 6.44 2.66h179.785a9.129 9.129 0 0 0 6.441-2.66 9.07 9.07 0 0 0 2.667-6.421v-95.84c0-2.407-.96-4.717-2.668-6.42a9.12 9.12 0 0 0-6.44-2.659\"/><g fill=\"#142641\" opacity=\".4\"><path d=\"M229.741 139H50.259C44.605 139 40 134.38 40 128.696V32.304C40 26.624 44.6 22 50.259 22H229.74C235.395 22 240 26.62 240 32.304v96.392c0 5.679-4.6 10.304-10.259 10.304M50.259 24.348c-4.372 0-7.927 3.57-7.927 7.961v96.392c0 4.39 3.555 7.96 7.927 7.96H229.74c4.372 0 7.927-3.57 7.927-7.96V32.304c0-4.39-3.555-7.961-7.927-7.961H50.259z\"/><path d=\"M82 82c-8.822 0-16-7.178-16-16 0-8.82 7.178-16 16-16 8.82 0 16 7.178 16 16 0 8.82-7.18 16-16 16m0-29.66c-7.534 0-13.667 6.127-13.667 13.665S74.463 79.673 82 79.673c7.538 0 13.666-6.13 13.666-13.666 0-7.539-6.128-13.667-13.666-13.667\"/><path d=\"M108.026 101.791a1.172 1.172 0 0 1-1.165-1.169c0-10.42-10.876-18.895-24.246-18.895S58.368 90.2 58.368 100.622a1.163 1.163 0 1 1-2.329 0c0-11.707 11.92-21.234 26.576-21.234 14.655 0 26.576 9.527 26.576 21.234 0 .645-.522 1.169-1.165 1.169m101.216-43.345h-85.923a1.164 1.164 0 0 1-1.165-1.17 1.164 1.164 0 0 1 1.165-1.17h85.923a1.17 1.17 0 0 1 .824 1.997c-.218.22-.515.343-.824.343m.182 16.486h-85.922a1.17 1.17 0 0 1-.824-1.997c.218-.22.515-.343.824-.343h85.922a1.164 1.164 0 0 1 1.165 1.17 1.164 1.164 0 0 1-1.165 1.17m-23.683 16.346h-62.226a1.17 1.17 0 0 1-.824-1.996c.218-.22.515-.344.824-.344h62.221a1.17 1.17 0 0 1 .824 1.997c-.218.22-.515.343-.824.343zm.023 30.708c-.47 0-.917-.29-1.09-.763a1.174 1.174 0 0 1 .685-1.505 15.1 15.1 0 0 0 5.441-3.546c-.754-.205-1.537-.57-2.138-1.196-.713-.749-1.048-1.74-.96-2.868.066-.889.433-1.787 1.058-2.595.121-.16.241-.318.363-.482.591-.8 1.267-1.707 2.254-2.316 1.034-.635 2.246-.78 3.247-.396.928.354 1.617 1.145 1.938 2.23.279.936.238 1.965-.126 2.97a17 17 0 0 1-1.01 2.278 13.7 13.7 0 0 0 4.229-1.694 1.37 1.37 0 0 1 1.668.183c.448.431.554 1.118.252 1.665-.257.467-.499 1.095-.201 1.435.224.258.662.253.974.118.615-.272 1.062-.823 1.547-1.903a1.7 1.7 0 0 1 2.007-.943c.263.071.505.203.708.385 1.184 1.072 2.828 1.638 4.384 1.521 1.798-.132 3.526-1.165 4.504-2.685a1.164 1.164 0 0 1 2.099.398c.069.297.019.609-.137.87-1.365 2.127-3.774 3.568-6.289 3.751a8.26 8.26 0 0 1-5.501-1.614c-.489.907-1.207 1.842-2.376 2.361-1.319.586-2.791.295-3.671-.719a2.9 2.9 0 0 1-.708-1.801 16 16 0 0 1-5.194 1.282c-1.956 2.464-4.575 4.405-7.542 5.518q-.202.077-.406.075zm7.701-13.545c-.309.009-.61.101-.872.267-.605.37-1.09 1.024-1.602 1.717q-.192.261-.391.519c-.243.313-.536.799-.578 1.342-.046.613.158.908.317 1.071.4.421 1.211.688 2.18.73a15 15 0 0 0 1.728-3.363c.187-.524.219-1.062.084-1.506-.173-.575-.447-.683-.54-.721a.9.9 0 0 0-.326-.056m30.404-71.103H57.199a1.16 1.16 0 0 1-.802-.354A1.172 1.172 0 0 1 57.2 35h166.67A1.164 1.164 0 0 1 225 36.17a1.163 1.163 0 0 1-1.131 1.169m-115.843 81.879H57.199A1.165 1.165 0 0 1 56 118.048a1.17 1.17 0 0 1 .743-1.09c.145-.057.3-.084.456-.079h50.822a1.164 1.164 0 0 1 1.107 1.169 1.17 1.17 0 0 1-1.107 1.169z\"/></g><g fill=\"#142641\" opacity=\".3\"><path d=\"m230.991 136.742-179.244 4.255c-5.647.136-10.35-4.367-10.485-10.035l-2.259-96.18c-.135-5.669 4.353-10.388 10.001-10.523l179.243-4.256c5.648-.135 10.35 4.37 10.485 10.036l2.265 96.175c.135 5.669-4.352 10.388-10.001 10.523zM49.059 26.597c-4.362.103-7.83 3.751-7.726 8.128l2.264 96.175c.102 4.378 3.737 7.857 8.1 7.754l179.242-4.255c4.362-.103 7.829-3.751 7.727-8.128l-2.265-96.175c-.102-4.378-3.737-7.857-8.099-7.754z\"/><path d=\"M82.378 82.995c-8.822.21-16.163-6.796-16.373-15.617S72.8 51.215 81.622 51.005 97.785 57.8 97.995 66.62 91.2 82.785 82.378 82.995m-.7-29.657c-7.534.177-13.518 6.451-13.34 13.984.177 7.533 6.45 13.517 13.984 13.339s13.518-6.45 13.34-13.984c-.177-7.533-6.45-13.517-13.984-13.339\"/><path d=\"M108.547 102.403a1.17 1.17 0 0 1-1.193-1.14c-.247-10.397-11.326-18.601-24.697-18.284s-24.053 9.034-23.807 19.433a1.17 1.17 0 0 1-1.138 1.144 1.17 1.17 0 0 1-1.192-1.088c-.275-11.686 11.423-21.473 26.08-21.824 14.659-.345 26.809 8.876 27.084 20.563a1.168 1.168 0 0 1-1.137 1.196m100.222-45.66-85.942 2.036a1.168 1.168 0 0 1-.056-2.335l85.942-2.036a1.164 1.164 0 0 1 1.142 1.14 1.17 1.17 0 0 1-1.086 1.195m.569 16.45-85.943 2.035a1.164 1.164 0 0 1-1.193-1.14 1.17 1.17 0 0 1 1.137-1.195l85.943-2.035a1.166 1.166 0 0 1 1.174 1.14 1.17 1.17 0 0 1-1.118 1.194M186.03 90.072l-62.233 1.475a1.165 1.165 0 0 1-1.155-1.14 1.17 1.17 0 0 1 1.099-1.195l62.233-1.475a1.166 1.166 0 0 1 1.174 1.14 1.17 1.17 0 0 1-1.118 1.195m.75 30.648a1.163 1.163 0 0 1-1.162-.933 1.17 1.17 0 0 1 .701-1.317 15.15 15.15 0 0 0 5.36-3.67c-.76-.187-1.552-.533-2.167-1.149-.732-.728-1.086-1.709-1.03-2.839.046-.887.392-1.793.997-2.615q.176-.238.349-.49c.574-.813 1.227-1.737 2.201-2.362 1.015-.659 2.228-.837 3.238-.477.937.332 1.646 1.107 1.996 2.181.302.929.283 1.952-.056 2.969a16.4 16.4 0 0 1-.961 2.297 13.7 13.7 0 0 0 4.191-1.788 1.38 1.38 0 0 1 1.673.14c.461.421.578 1.102.293 1.657-.242.473-.47 1.103-.168 1.434.233.252.667.238.979.093.606-.284 1.044-.849 1.505-1.937a1.71 1.71 0 0 1 1.986-.99c.265.065.511.191.718.369 1.207 1.036 2.866 1.569 4.418 1.415 1.799-.178 3.501-1.242 4.441-2.788a1.166 1.166 0 0 1 1.991 1.219c-1.315 2.157-3.691 3.651-6.203 3.894a8.28 8.28 0 0 1-5.542-1.48c-.47.914-1.161 1.867-2.321 2.413-1.305.613-2.788.36-3.686-.63a2.88 2.88 0 0 1-.755-1.779 15.9 15.9 0 0 1-5.165 1.401c-1.901 2.507-4.469 4.506-7.41 5.687q-.203.078-.406.084zm7.383-13.699a1.7 1.7 0 0 0-.867.285c-.596.382-1.063 1.045-1.561 1.751q-.189.266-.378.527c-.232.317-.517.807-.545 1.35-.033.611.182.9.345 1.064.41.41 1.23.659 2.2.677a14.5 14.5 0 0 0 1.645-3.399c.178-.528.196-1.065.052-1.508-.187-.574-.467-.672-.56-.705a.9.9 0 0 0-.331-.047zm28.738-71.686-166.707 3.95A1.165 1.165 0 0 1 55 38.145a1.17 1.17 0 0 1 1.138-1.195L222.845 33a1.171 1.171 0 0 1 .846 1.96 1.16 1.16 0 0 1-.79.375m-113.944 84.46L58.123 121a1.169 1.169 0 0 1-.056-2.334l50.834-1.205a1.17 1.17 0 0 1 .844.315 1.16 1.16 0 0 1 .368.824 1.167 1.167 0 0 1-1.156 1.195\"/></g><g fill=\"#142641\" opacity=\".2\"><path d=\"m233.237 132.957-179.59 9.03c-5.66.283-10.497-4.064-10.782-9.695L38.013 36.77c-.284-5.632 4.086-10.444 9.745-10.727l179.589-9.03c5.661-.284 10.499 4.064 10.784 9.695l4.856 95.527c.285 5.631-4.085 10.443-9.746 10.727zM47.876 28.363c-4.375.219-7.75 3.938-7.53 8.285l4.856 95.528c.22 4.347 3.959 7.709 8.33 7.49l179.588-9.03c4.375-.218 7.749-3.937 7.53-8.285l-4.857-95.527c-.219-4.348-3.959-7.71-8.329-7.49z\"/><path d=\"M82.808 83.98c-8.814.443-16.344-6.363-16.788-15.173s6.363-16.344 15.173-16.786c8.809-.445 16.343 6.362 16.786 15.171.445 8.814-6.362 16.344-15.17 16.788m-1.5-29.632c-7.524.38-13.34 6.817-12.958 14.343s6.816 13.342 14.341 12.959 13.342-6.816 12.959-14.342c-.383-7.525-6.816-13.342-14.34-12.959z\"/><path d=\"M109.292 102.14a1.2 1.2 0 0 1-.45-.066 1.15 1.15 0 0 1-.39-.233 1.152 1.152 0 0 1-.382-.803c-.522-10.343-11.828-18.209-25.197-17.534-13.367.673-23.82 9.636-23.292 19.979a1.16 1.16 0 0 1-1.106 1.219 1.165 1.165 0 0 1-1.223-1.102c-.587-11.622 10.854-21.677 25.51-22.416 14.655-.74 27.057 8.116 27.645 19.738a1.16 1.16 0 0 1-1.106 1.218zm99.037-48.132-85.925 4.328a1.17 1.17 0 0 1-1.111-.662 1.159 1.159 0 0 1 .994-1.657l85.926-4.329a1.17 1.17 0 0 1 1.111.662 1.16 1.16 0 0 1-.995 1.658m1.012 16.359-85.925 4.327a1.165 1.165 0 0 1-1.156-1.55 1.17 1.17 0 0 1 1.039-.769l85.926-4.328a1.164 1.164 0 0 1 1.156 1.55 1.17 1.17 0 0 1-1.04.77m-22.859 17.422-62.222 3.134a1.166 1.166 0 0 1-1.222-1.102 1.16 1.16 0 0 1 1.106-1.218l62.221-3.133a1.17 1.17 0 0 1 1.111.662 1.155 1.155 0 0 1-.188 1.276 1.17 1.17 0 0 1-.806.381m1.572 30.482a1.17 1.17 0 0 1-1.191-.899 1.165 1.165 0 0 1 .669-1.332 15.15 15.15 0 0 0 5.261-3.794c-.77-.167-1.567-.488-2.197-1.083-.751-.707-1.133-1.674-1.105-2.799.023-.883.344-1.794.928-2.63q.167-.247.34-.498c.556-.823 1.18-1.758 2.137-2.413 1.002-.683 2.206-.893 3.227-.562.947.307 1.674 1.06 2.052 2.115.327.915.336 1.938.024 2.956a16 16 0 0 1-.9 2.31 13.8 13.8 0 0 0 4.141-1.891 1.38 1.38 0 0 1 1.681.094 1.37 1.37 0 0 1 .334 1.644c-.232.474-.442 1.112-.13 1.433.237.246.671.218.979.064.602-.302 1.022-.873 1.451-1.966a1.71 1.71 0 0 1 1.964-1.038c.266.058.516.178.727.35 1.236 1 2.91 1.483 4.46 1.293a6 6 0 0 0 2.518-.946 5.95 5.95 0 0 0 1.847-1.951 1.15 1.15 0 0 1 .706-.543 1.16 1.16 0 0 1 .885.115c.559.321.75 1.032.428 1.585-1.259 2.181-3.596 3.734-6.1 4.045a8.3 8.3 0 0 1-5.584-1.325c-.442.925-1.114 1.887-2.256 2.464-1.288.646-2.776.432-3.709-.53a2.87 2.87 0 0 1-.802-1.753 16 16 0 0 1-5.131 1.534c-1.833 2.543-4.351 4.607-7.262 5.857a1.1 1.1 0 0 1-.402.094zm7.02-13.834a1.7 1.7 0 0 0-.859.306c-.588.4-1.035 1.074-1.515 1.786-.122.181-.243.362-.364.533-.224.321-.495.819-.509 1.358-.014.609.205.893.374 1.051.424.4 1.246.623 2.215.614a14.7 14.7 0 0 0 1.558-3.427c.163-.53.163-1.064.009-1.501-.201-.563-.484-.656-.578-.688a.9.9 0 0 0-.331-.037zm26.819-72.114-166.67 8.394a1.17 1.17 0 0 1-1.11-.662 1.16 1.16 0 0 1 .553-1.547c.138-.066.288-.104.44-.111l166.67-8.395a1.167 1.167 0 0 1 1.223 1.101 1.16 1.16 0 0 1-.665 1.108 1.2 1.2 0 0 1-.441.111m-111.724 87.114-50.822 2.562a1.2 1.2 0 0 1-.45-.066 1.18 1.18 0 0 1-.661-.596 1.157 1.157 0 0 1 .553-1.547c.138-.065.288-.103.44-.11l50.823-2.563a1.18 1.18 0 0 1 1.111.663c.066.138.104.287.111.439q.012.231-.066.449a1.168 1.168 0 0 1-1.039.769\"/></g><g fill=\"#142641\" opacity=\".2\"><path d=\"m227.168 142.986-179.435-9.401c-5.656-.294-10.013-5.143-9.719-10.804l5.025-96.038c.294-5.662 5.138-10.023 10.794-9.729l179.433 9.402c5.657.294 10.014 5.142 9.72 10.804l-5.021 96.038c-.294 5.661-5.137 10.022-10.793 9.728zM53.706 19.352c-4.366-.23-8.107 3.142-8.336 7.518l-5.021 96.037c-.228 4.371 3.138 8.116 7.51 8.345l179.435 9.402c4.366.228 8.107-3.142 8.336-7.518l5.02-96.038c.229-4.371-3.138-8.116-7.51-8.345z\"/><path d=\"M82.165 77.978c-8.808-.462-15.604-8.005-15.143-16.813.463-8.808 8.006-15.604 16.814-15.143 8.808.462 15.603 8.006 15.142 16.814S90.973 78.44 82.165 77.978m1.55-29.626c-7.525-.392-13.966 5.41-14.363 12.934-.397 7.525 5.41 13.966 12.934 14.363 7.525.392 13.966-5.41 14.363-12.935.391-7.524-5.41-13.965-12.934-14.362\"/><path d=\"M106.723 99.65a1.17 1.17 0 0 1-.805-.388 1.19 1.19 0 0 1-.299-.847c.541-10.448-9.88-19.517-23.231-20.226s-24.659 7.223-25.199 17.667a1.18 1.18 0 0 1-.394.792 1.16 1.16 0 0 1-1.626-.086 1.18 1.18 0 0 1-.31-.829c.611-11.739 13.012-20.662 27.65-19.892 14.632.771 26.045 10.951 25.435 22.691a1.18 1.18 0 0 1-.384.812 1.16 1.16 0 0 1-.841.301zm103.342-38.13-85.811-4.528a1.16 1.16 0 0 1-.806-.387 1.18 1.18 0 0 1 .086-1.66 1.16 1.16 0 0 1 .841-.3l85.811 4.527c.3.028.578.171.775.401a1.18 1.18 0 0 1-.084 1.628c-.22.208-.511.322-.812.318m-.675 16.538-85.811-4.527a1.16 1.16 0 0 1-.806-.387 1.18 1.18 0 0 1 .086-1.66c.229-.209.532-.317.841-.3l85.811 4.526c.309.017.598.156.806.387a1.18 1.18 0 0 1-.086 1.66 1.16 1.16 0 0 1-.841.301m-24.505 15.144-62.141-3.277a1.17 1.17 0 0 1-.806-.387 1.18 1.18 0 0 1 .086-1.66 1.16 1.16 0 0 1 .841-.302l62.141 3.279c.297.032.57.178.763.407a1.181 1.181 0 0 1-.884 1.94m-1.575 30.791a1.164 1.164 0 0 1-1.09-1.025 1.18 1.18 0 0 1 .802-1.267 15.1 15.1 0 0 0 5.618-3.268c-.746-.248-1.504-.653-2.073-1.315-.675-.789-.955-1.798-.811-2.925.112-.888.527-1.766 1.193-2.545q.195-.226.386-.465c.634-.771 1.352-1.644 2.372-2.203 1.062-.582 2.287-.667 3.266-.23.908.404 1.556 1.236 1.821 2.338.233.954.135 1.983-.279 2.973a17 17 0 0 1-1.132 2.231 13.6 13.6 0 0 0 4.308-1.474 1.37 1.37 0 0 1 1.654.267 1.4 1.4 0 0 1 .168 1.681c-.279.456-.554 1.07-.274 1.428.209.272.643.29.968.169.629-.24 1.104-.77 1.645-1.827a1.72 1.72 0 0 1 1.253-.911 1.74 1.74 0 0 1 1.49.493c1.128 1.137 2.74 1.789 4.296 1.757 1.803-.039 3.583-.982 4.635-2.457a1.162 1.162 0 0 1 2.094.497c.05.307-.023.622-.202.875-1.473 2.061-3.956 3.376-6.476 3.432a8.22 8.22 0 0 1-5.409-1.911c-.535.883-1.3 1.784-2.496 2.244-1.347.518-2.805.151-3.629-.91a2.92 2.92 0 0 1-.615-1.846 15.8 15.8 0 0 1-5.255 1.009c-2.082 2.367-4.799 4.18-7.817 5.138a1.1 1.1 0 0 1-.411.052zm8.396-13.176a1.7 1.7 0 0 0-.886.22c-.624.338-1.141.967-1.686 1.634q-.21.255-.419.502c-.257.301-.578.771-.648 1.316-.079.61.112.915.261 1.093.382.442 1.174.752 2.138.851a14.8 14.8 0 0 0 1.901-3.283c.214-.516.275-1.051.163-1.507-.144-.587-.415-.71-.503-.747a.9.9 0 0 0-.326-.07zm34.068-69.687L59.323 32.348a1.16 1.16 0 0 1-.785-.397 1.18 1.18 0 0 1 .083-1.638c.223-.208.518-.32.821-.314l166.452 8.782a1.16 1.16 0 0 1 .806.387 1.17 1.17 0 0 1 .298.848 1.18 1.18 0 0 1-.383.812 1.17 1.17 0 0 1-.841.3m-119.959 75.993-50.755-2.677a1.16 1.16 0 0 1-.775-.401 1.184 1.184 0 0 1 .084-1.628c.22-.208.51-.322.812-.318l50.756 2.676a1.17 1.17 0 0 1 1.103 1.236 1.18 1.18 0 0 1-.775 1.046 1.15 1.15 0 0 1-.45.066\"/></g><g fill=\"#142641\" opacity=\".3\"><path d=\"m228.097 140.997-179.114-4.508c-5.645-.14-10.12-4.858-9.98-10.514l2.407-95.972c.14-5.656 4.848-10.14 10.493-10l179.114 4.507c5.645.14 10.12 4.858 9.98 10.514l-2.407 95.972c-.14 5.656-4.848 10.141-10.493 10.001M51.847 22.331c-4.36-.112-7.997 3.355-8.108 7.728l-2.409 95.972c-.111 4.368 3.35 8.013 7.713 8.125l179.114 4.508c4.359.112 7.997-3.356 8.108-7.728l2.409-95.972c.111-4.368-3.35-8.013-7.713-8.125z\"/><path d=\"M82.598 79.996c-8.816-.22-15.812-7.575-15.593-16.397.219-8.817 7.575-15.813 16.397-15.594 8.816.219 15.812 7.575 15.593 16.397-.22 8.822-7.575 15.814-16.397 15.594m.748-29.653c-7.534-.192-13.817 5.783-14.003 13.317-.192 7.533 5.783 13.816 13.316 14.002s13.816-5.783 14.003-13.316c.19-7.533-5.783-13.817-13.316-14.003\"/><path d=\"M107.409 100.903a1.17 1.17 0 0 1-1.137-1.194c.262-10.393-10.404-19.12-23.772-19.455-13.368-.337-24.456 7.844-24.718 18.237a1.17 1.17 0 0 1-1.192 1.12 1.165 1.165 0 0 1-1.137-1.176c.293-11.68 12.454-20.88 27.103-20.51 14.654.368 26.335 10.168 26.041 21.85a1.165 1.165 0 0 1-1.193 1.138zm102.297-40.692-85.914-2.16a1.165 1.165 0 0 1-1.138-1.195 1.164 1.164 0 0 1 1.193-1.139l85.915 2.16a1.165 1.165 0 0 1 1.098 1.194 1.17 1.17 0 0 1-1.154 1.14m-.233 16.45-85.914-2.16a1.165 1.165 0 0 1-1.099-1.195 1.167 1.167 0 0 1 1.155-1.14l85.914 2.16a1.167 1.167 0 0 1-.056 2.335m-24.089 15.712-62.216-1.568a1.165 1.165 0 0 1-1.038-1.64 1.175 1.175 0 0 1 1.093-.694l62.217 1.568a1.165 1.165 0 0 1 1.098 1.194 1.165 1.165 0 0 1-1.154 1.14M184.638 123a1.17 1.17 0 0 1-.349-2.273 15.1 15.1 0 0 0 5.531-3.402c-.751-.224-1.524-.606-2.107-1.25-.694-.766-1.001-1.76-.889-2.884.088-.882.48-1.769 1.123-2.562q.189-.232.377-.472c.615-.784 1.309-1.67 2.311-2.254 1.048-.606 2.264-.723 3.257-.317.917.378 1.589 1.185 1.883 2.273.255.942.185 1.964-.201 2.963a16.4 16.4 0 0 1-1.072 2.245 13.8 13.8 0 0 0 4.273-1.582 1.372 1.372 0 0 1 2.054 1.02c.037.302-.026.608-.181.87-.266.457-.526 1.078-.238 1.423.219.266.652.271.97.14.619-.257 1.08-.793 1.597-1.862a1.714 1.714 0 0 1 2.731-.49c1.155 1.097 2.787 1.703 4.342 1.629 1.803-.089 3.556-1.069 4.571-2.567a1.17 1.17 0 0 1 .745-.489 1.156 1.156 0 0 1 1.19.505 1.17 1.17 0 0 1-.011 1.295c-1.416 2.091-3.862 3.463-6.383 3.584-1.952.098-3.904-.536-5.46-1.75-.513.892-1.254 1.806-2.438 2.296-1.333.551-2.799.224-3.652-.807a2.9 2.9 0 0 1-.667-1.815 16 16 0 0 1-5.228 1.148c-2.016 2.408-4.682 4.279-7.679 5.315a1.3 1.3 0 0 1-.409.065zm8.037-13.319a1.8 1.8 0 0 0-.88.243c-.615.355-1.113.994-1.645 1.671-.135.172-.27.345-.405.508-.247.304-.554.784-.61 1.321-.061.611.135.91.294 1.078.391.429 1.192.714 2.161.784a15 15 0 0 0 1.812-3.313c.201-.518.248-1.055.122-1.503-.159-.579-.434-.695-.522-.728a.9.9 0 0 0-.327-.061m32.183-70.153-166.65-4.195a1.164 1.164 0 0 1-1.118-1.194A1.17 1.17 0 0 1 58.263 33l166.651 4.195a1.168 1.168 0 0 1-.056 2.333m-117.882 78.754-50.82-1.279a1.16 1.16 0 0 1-1.076-.742 1.166 1.166 0 0 1 1.133-1.591l50.819 1.279a1.163 1.163 0 0 1 1.156 1.195 1.16 1.16 0 0 1-.758 1.066c-.145.054-.3.078-.454.072\"/></g><path fill=\"#F43F5E\" d=\"M239.717 153.996H36.283c-5.667 0-10.283-4.574-10.283-10.2V22.201C26 16.578 30.61 12 36.283 12h203.434C245.384 12 250 16.574 250 22.2V143.8c0 5.623-4.612 10.201-10.283 10.201zM36.283 14.324c-4.382 0-7.945 3.535-7.945 7.882v121.593c0 4.347 3.563 7.882 7.945 7.882h203.434c4.381 0 7.944-3.535 7.944-7.882V22.201c0-4.346-3.563-7.881-7.944-7.881H36.283z\"/><path fill=\"#fff\" d=\"m138.103 175.501 2.563-2.564a1.14 1.14 0 0 0 .333-.802 1.12 1.12 0 0 0-.333-.802 1.135 1.135 0 0 0-1.236-.247 1.1 1.1 0 0 0-.367.247l-2.563 2.564-2.563-2.564a1.135 1.135 0 0 0-1.603 1.604l2.563 2.564-2.563 2.565a1.131 1.131 0 0 0 .802 1.934c.289 0 .579-.109.801-.33l2.563-2.565 2.563 2.565c.222.221.512.33.801.33a1.132 1.132 0 0 0 .802-1.934z\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 36 36\"{...props}><path fill=\"#0062F2\" fill-rule=\"evenodd\" d=\"M12 15c0-3.315 2.685-6 6-6s6 2.685 6 6c0 1.924-1.185 2.96-2.339 3.968-1.095.957-2.161 1.889-2.161 3.532h-3c0-2.732 1.413-3.815 2.656-4.767C20.13 16.985 21 16.319 21 15c0-1.65-1.35-3-3-3s-3 1.35-3 3zm7.5 9v3h-3v-3z\" clip-rule=\"evenodd\"/></svg>","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { Modal } from \"@microblink/shared-components/Modal\";\nimport {\n type Component,\n createEffect,\n createSignal,\n For,\n onCleanup,\n ParentComponent,\n} from \"solid-js\";\nimport { useBlinkIdUiStore } from \"../BlinkIdUiStoreContext\";\n\nimport HelpCorrectFraming from \"../assets/help/help_fields_visible.svg?component-solid\";\nimport HelpHarshLight from \"../assets/help/help_harsh_light.svg?component-solid\";\nimport HelpKeepStill from \"../assets/help/help_keep_still.svg?component-solid\";\nimport { Carousel, DialogTitle, Tooltip } from \"@ark-ui/solid\";\nimport QuestionIcon from \"../assets/icons/icon-question.svg?component-solid\";\n\nimport { Dynamic } from \"solid-js/web\";\n\nimport styles from \"./styles.module.scss\";\nimport { LocalizationStrings, useLocalization } from \"../LocalizationContext\";\n\nexport const HelpModal: Component = () => {\n const { t } = useLocalization();\n\n const { store, updateStore } = useBlinkIdUiStore();\n const [currentStep, setCurrentStep] = createSignal(0);\n\n const modalVisible = () => store.showHelpModal;\n const hideModal = () => {\n updateStore({ showHelpModal: false });\n setCurrentStep(0);\n void store.blinkIdUxManager.cameraManager.startFrameCapture();\n };\n\n const steps: {\n title: keyof LocalizationStrings;\n img: Component;\n text: keyof LocalizationStrings;\n }[] = [\n {\n title: \"help_modal_title_1\",\n img: HelpCorrectFraming,\n text: \"help_modal_details_1\",\n },\n {\n title: \"help_modal_title_2\",\n img: HelpHarshLight,\n text: \"help_modal_details_2\",\n },\n {\n title: \"help_modal_title_3\",\n img: HelpKeepStill,\n text: \"help_modal_details_3\",\n },\n ];\n\n const isLastStep = () => currentStep() === steps.length - 1;\n const isFirstStep = () => currentStep() === 0;\n\n let startScanningBtnRef!: HTMLButtonElement;\n\n createEffect(() => {\n const showHelpModal = store.showHelpModal;\n\n if (showHelpModal === undefined) {\n return;\n }\n\n if (showHelpModal) {\n store.blinkIdUxManager.cameraManager.stopFrameCapture();\n } else {\n void store.blinkIdUxManager.cameraManager.startFrameCapture();\n }\n });\n\n return (\n <Modal\n mountTarget={store.cameraManagerComponent.overlayLayerNode}\n initialFocusEl={() => startScanningBtnRef}\n open={modalVisible()}\n showCloseButton\n onCloseClicked={() => hideModal()}\n >\n <Carousel.Root\n defaultPage={0}\n slideCount={steps.length}\n page={currentStep()}\n onPageChange={(details) => setCurrentStep(details.page)}\n class={styles.carousel}\n >\n <Carousel.ItemGroup class={styles.itemGroup}>\n <For each={steps}>\n {(step, index) => (\n <Carousel.Item class={styles.item} index={index()}>\n <Dynamic component={step.img} />\n <div class={styles.textContent}>\n <DialogTitle>{t[step.title]}</DialogTitle>\n <p>{t[step.text]}</p>\n </div>\n </Carousel.Item>\n )}\n </For>\n </Carousel.ItemGroup>\n <Carousel.IndicatorGroup class={styles.indicators}>\n <For each={steps}>\n {(_, i) => (\n <Carousel.Indicator index={i()} class={styles.indicator} />\n )}\n </For>\n </Carousel.IndicatorGroup>\n <Carousel.Control class={styles.controls}>\n <div class={styles.controlsInner}>\n <Carousel.PrevTrigger\n class={styles.buttonSecondary}\n disabled={isFirstStep()}\n >\n {t.help_modal_back_btn}\n </Carousel.PrevTrigger>\n <Carousel.NextTrigger\n ref={startScanningBtnRef}\n class={styles.buttonPrimary}\n onClick={() => {\n if (currentStep() >= steps.length - 1) {\n hideModal();\n }\n }}\n disabled={false}\n >\n {isLastStep() ? t.help_modal_done_btn : t.help_modal_next_btn}\n </Carousel.NextTrigger>\n </div>\n </Carousel.Control>\n </Carousel.Root>\n </Modal>\n );\n};\n\nexport const HelpButton: ParentComponent<{ isProcessing: boolean }> = (\n props,\n) => {\n const { t } = useLocalization();\n\n const { store, updateStore } = useBlinkIdUiStore();\n const [tooltipOpen, setTooltipOpen] = createSignal(false);\n\n let timeoutId: number | undefined;\n\n onCleanup(() => {\n if (timeoutId !== undefined) {\n window.clearTimeout(timeoutId);\n }\n });\n\n createEffect(() => {\n if (timeoutId !== undefined) {\n window.clearTimeout(timeoutId);\n timeoutId = undefined;\n }\n\n if (props.isProcessing && !tooltipOpen()) {\n const { showHelpTooltipTimeout } = store;\n\n if (showHelpTooltipTimeout && showHelpTooltipTimeout > 0) {\n timeoutId = window.setTimeout(() => {\n setTooltipOpen(true);\n }, showHelpTooltipTimeout);\n }\n }\n });\n\n return (\n <Tooltip.Root\n positioning={{\n placement: \"top-end\",\n }}\n open={tooltipOpen()}\n openDelay={300}\n closeDelay={300}\n onOpenChange={(details) => setTooltipOpen(details.open)}\n >\n <Tooltip.Trigger\n aria-label={t.help_aria_label}\n class={styles.helpButton}\n onClick={() => updateStore({ showHelpModal: true })}\n >\n <QuestionIcon />\n </Tooltip.Trigger>\n\n {/* Tooltip */}\n <Tooltip.Positioner>\n <Tooltip.Content class={styles.tooltip}>\n <Tooltip.Arrow class={styles.arrow}>\n <Tooltip.ArrowTip />\n </Tooltip.Arrow>\n {t.help_tooltip}\n </Tooltip.Content>\n </Tooltip.Positioner>\n </Tooltip.Root>\n );\n};\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { AlertModal } from \"@microblink/shared-components/Modal\";\nimport { type Component } from \"solid-js\";\nimport { useBlinkIdUiStore } from \"../BlinkIdUiStoreContext\";\nimport { useLocalization } from \"../LocalizationContext\";\n\ninterface ErrorModalProps {\n header: string;\n text: string;\n shouldResetScanningSession?: boolean;\n}\n\nexport const ErrorModal: Component<ErrorModalProps> = (props) => {\n const { t } = useLocalization();\n\n const { store, updateStore } = useBlinkIdUiStore();\n\n const hideModal = () => {\n updateStore({ errorState: undefined });\n };\n\n const dismountCameraManagerUi = () => {\n store.cameraManagerComponent.dismount();\n };\n\n const handlePrimaryClick = async () => {\n hideModal();\n\n if (props.shouldResetScanningSession) {\n await store.blinkIdUxManager.scanningSession.reset();\n }\n\n await store.blinkIdUxManager.cameraManager.startFrameCapture();\n };\n\n return (\n <AlertModal\n mountTarget={store.cameraManagerComponent.overlayLayerNode}\n header={props.header}\n text={props.text}\n open={true}\n onPrimaryClick={() => void handlePrimaryClick()}\n onSecondaryClick={() => dismountCameraManagerUi()}\n primaryButtonText={t.alert_retry_btn}\n secondaryButtonText={t.alert_cancel_btn}\n />\n );\n};\n","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 250 35\"{...props}><g fill=\"#0062F2\" clip-path=\"url(#a)\"><path fill-rule=\"evenodd\" d=\"m30.827 6.401 4.006 9.975a3.44 3.44 0 0 1-.03 2.648l-4.24 9.882a3.46 3.46 0 0 1-1.896 1.848l-10.003 3.998a3.47 3.47 0 0 1-2.651-.03L6.107 30.49a3.46 3.46 0 0 1-1.852-1.892L.249 18.621a3.45 3.45 0 0 1 .03-2.645l4.24-9.883a3.46 3.46 0 0 1 1.896-1.848L16.417.248a3.47 3.47 0 0 1 2.652.03l9.905 4.23a3.46 3.46 0 0 1 1.853 1.893m-5.763 17.945c.771-.396 1.612-.827 2.534-1.331 1.52-.826 2.624-2.255 2.905-3.561.308-1.32-.213-2.516-1.256-3.172-2.383-1.523-3.362-3.42-4.842-6.291-.397-.769-.83-1.607-1.334-2.526-.824-1.517-2.256-2.621-3.565-2.898-1.323-.308-2.522.211-3.18 1.253-1.526 2.376-3.428 3.352-6.304 4.829-.77.395-1.611.827-2.534 1.33-1.52.828-2.626 2.256-2.905 3.563-.308 1.318.212 2.516 1.256 3.171 2.383 1.523 3.362 3.42 4.842 6.291.397.769.829 1.607 1.334 2.526.824 1.517 2.256 2.621 3.565 2.898 1.323.308 2.522-.21 3.18-1.252 1.526-2.378 3.428-3.354 6.304-4.83\" clip-rule=\"evenodd\"/><path d=\"M62.466 23.715 55.704 6.373H51.2v22.57h3.073V11.192l7.007 17.846h2.242l7.07-18.005v17.91h3.168V6.373h-4.534zM83.133 6.373h-3.325v22.57h3.324zM127.593 17.637a7.42 7.42 0 0 0 1.38-4.363c0-1.847-.795-3.57-2.24-4.853-1.49-1.32-3.561-2.045-5.84-2.045h-9.178v22.57h3.325v-8.072h5.385l4.698 8.069h3.946l-5.027-8.624a7.66 7.66 0 0 0 3.551-2.682m-2.008-4.331a4.5 4.5 0 0 1-.323 1.729 4.4 4.4 0 0 1-.961 1.464c-.846.845-2.034 1.31-3.344 1.31h-5.921V9.471h5.921c2.638 0 4.628 1.648 4.628 3.835M143.07 5.991c-3.121 0-5.934 1.224-7.934 3.445-1.924 2.142-2.984 5.062-2.984 8.221 0 3.16 1.06 6.095 2.984 8.234 1.993 2.214 4.81 3.43 7.934 3.43 3.137 0 5.965-1.22 7.961-3.43 1.927-2.136 2.988-5.06 2.988-8.234 0-3.173-1.061-6.08-2.987-8.22-2.001-2.225-4.828-3.446-7.962-3.446m0 20.17a7 7 0 0 1-2.969-.646 7.1 7.1 0 0 1-2.433-1.846c-1.372-1.58-2.127-3.716-2.127-6.012s.755-4.415 2.127-6c1.397-1.615 3.315-2.504 5.402-2.504s4.013.889 5.418 2.505c1.381 1.59 2.143 3.718 2.143 6 0 2.28-.761 4.428-2.143 6.011a7.2 7.2 0 0 1-2.442 1.845c-.935.43-1.95.651-2.976.648M172.244 17.103c1.939-1.087 3.091-2.995 3.091-5.132 0-3.296-2.885-5.598-7.006-5.598h-9.75v22.57h10.22c4.06 0 7.006-2.743 7.006-6.521.003-2.267-1.358-4.29-3.561-5.319m-3.348 8.742h-6.994v-7.003h6.518c2.39 0 3.998 1.3 3.998 3.232.002 2.29-1.382 3.77-3.522 3.77m-.852-10.04h-6.142V9.472h6.518c2.143 0 3.524 1.13 3.524 2.882.003 1.72-1.204 3.453-3.9 3.453zM183.92 6.373h-3.326v22.57h14.551V25.78H183.92zM202.18 6.373h-3.326v22.57h3.326zM223.067 23.071 211.48 6.443l-.05-.07h-3.214v22.57h3.136V11.418l12.205 17.525h2.646V6.373h-3.136zM241.061 16.303l8.702-9.93h-4.068L235.56 17.918V6.373h-3.326v22.57h3.326V22.39l3.226-3.641 7.182 10.193H250zM104.791 21.307c-1.483 3.425-3.386 4.887-6.377 4.887-2.043 0-3.915-.886-5.27-2.494-1.334-1.584-2.07-3.73-2.07-6.043 0-2.295.72-4.427 2.023-6.003 1.336-1.613 3.19-2.501 5.224-2.501 2.754 0 4.768 1.393 6.158 4.258l.059.122h3.479l-.016-.098c-.083-.476-.254-.92-.42-1.357l-.053-.141a9.3 9.3 0 0 0-3.561-4.367c-1.603-1.048-3.535-1.579-5.741-1.579-3.017 0-5.739 1.224-7.666 3.448-1.853 2.14-2.874 5.059-2.874 8.218 0 3.202 1.026 6.134 2.89 8.255 1.963 2.233 4.65 3.412 7.775 3.412 2.189 0 4.113-.575 5.718-1.71q.406-.286.777-.615c1.628-1.437 2.861-3.481 3.297-5.468l.011-.052q.023-.103.039-.206l.017-.098h-3.366z\"/></g><defs><clipPath id=\"a\"><path fill=\"#fff\" d=\"M0 0h250v35H0z\"/></clipPath></defs></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 95 28\"{...props}><path fill=\"#fff\" d=\"M25.088 7.572c1.314 0 2.178-.891 2.178-2.16 0-1.287-.855-2.151-2.178-2.151h-2.601V9.84h1.152V7.572zm-.225-3.285c.765 0 1.197.396 1.197 1.116s-.423 1.143-1.215 1.143h-1.206v-2.26zM27.772 7.608c0 1.386.999 2.34 2.376 2.34s2.376-.954 2.376-2.34-.999-2.34-2.376-2.34-2.376.954-2.376 2.34m1.098 0c0-.81.522-1.36 1.278-1.36s1.278.55 1.278 1.36-.522 1.359-1.278 1.359-1.278-.55-1.278-1.36M34.336 9.84h1.07l.613-1.908c.225-.73.306-1.044.35-1.251.037.225.136.648.316 1.233l.612 1.926h1.026l1.539-4.446H38.7l-.594 1.908c-.081.279-.225.81-.297 1.143a16 16 0 0 0-.288-1.143l-.594-1.908h-1.116L35.2 7.302c-.144.44-.225.72-.306 1.152a15 15 0 0 0-.27-1.152l-.585-1.908h-1.143zM42.476 9.957c1.16 0 1.97-.585 2.16-1.557h-1.017c-.126.423-.522.657-1.125.657-.73 0-1.143-.396-1.224-1.18l3.348-.008v-.333c0-1.386-.846-2.277-2.178-2.277-1.305 0-2.214.963-2.214 2.358 0 1.377.927 2.34 2.25 2.34m-.027-3.798c.657 0 1.08.405 1.08 1.017h-2.232c.108-.666.504-1.017 1.152-1.017M48.467 5.376a2 2 0 0 0-.486-.063c-.595 0-1.017.297-1.206.738l-.063-.648h-1.036V9.84h1.099V7.68c0-.864.495-1.287 1.287-1.287h.405zM51.23 9.957c1.16 0 1.97-.585 2.16-1.557h-1.018c-.126.423-.522.657-1.125.657-.729 0-1.143-.396-1.224-1.18l3.348-.008v-.333c0-1.386-.846-2.277-2.178-2.277-1.305 0-2.214.963-2.214 2.358 0 1.377.927 2.34 2.25 2.34m-.028-3.798c.657 0 1.08.405 1.08 1.017H50.05c.108-.666.504-1.017 1.152-1.017M56.257 9.957c.675 0 1.251-.297 1.521-.81l.072.693h1.008V3.144h-1.089V5.96c-.279-.441-.828-.702-1.449-.702-1.341 0-2.151.99-2.151 2.376 0 1.377.801 2.322 2.088 2.322m.243-1.008c-.765 0-1.233-.558-1.233-1.35s.468-1.36 1.233-1.36 1.26.559 1.26 1.36c0 .8-.495 1.35-1.26 1.35M63.805 9.84l.072-.693c.261.513.828.81 1.494.81 1.278 0 2.115-.945 2.115-2.313 0-1.404-.774-2.394-2.043-2.394-.675 0-1.269.297-1.557.792V3.144h-1.098V9.84zm.09-2.241c0-.801.495-1.36 1.251-1.36.774 0 1.233.568 1.233 1.36s-.459 1.35-1.233 1.35c-.756 0-1.25-.55-1.25-1.35M67.986 11.9c.243.064.513.1.82.1.728 0 1.196-.342 1.53-1.17l2.177-5.436H71.38l-1.206 3.24-1.143-3.24h-1.16l1.79 4.635-.126.333c-.189.522-.459.62-.89.62h-.658z\"/><g fill=\"#fff\" clip-path=\"url(#a)\"><path d=\"m9.816 23.595-2.89-7.432H5v9.673h1.314v-7.608l2.996 7.649h.958l3.023-7.717v7.676h1.355v-9.673h-1.939zM18.653 16.163H17.23v9.673h1.422zM37.663 20.991a3.2 3.2 0 0 0 .59-1.87c0-.791-.34-1.53-.958-2.08-.637-.565-1.523-.876-2.497-.876h-3.924v9.673h1.421v-3.46h2.303l2.009 3.459h1.687l-2.15-3.696a3.3 3.3 0 0 0 1.519-1.15m-.86-1.856a1.93 1.93 0 0 1-.548 1.369c-.362.362-.87.561-1.43.561h-2.532v-3.573h2.532c1.128 0 1.979.706 1.979 1.643M44.28 16c-1.334 0-2.537.525-3.392 1.477-.822.918-1.276 2.169-1.276 3.523s.453 2.612 1.276 3.529c.852.948 2.057 1.47 3.392 1.47 1.341 0 2.55-.523 3.404-1.47.824-.916 1.278-2.17 1.278-3.53s-.454-2.605-1.278-3.522C46.83 16.523 45.62 16 44.28 16m0 8.645a3 3 0 0 1-1.27-.278 3.05 3.05 0 0 1-1.04-.79c-.586-.678-.909-1.593-.909-2.577s.323-1.892.91-2.572a3.02 3.02 0 0 1 2.31-1.073c.892 0 1.715.381 2.316 1.074.59.68.916 1.593.916 2.57 0 .979-.325 1.899-.916 2.578a3.1 3.1 0 0 1-1.044.79c-.4.184-.834.28-1.273.278M56.754 20.762c.83-.466 1.322-1.284 1.322-2.2 0-1.412-1.233-2.399-2.995-2.399h-4.17v9.673h4.37c1.736 0 2.996-1.175 2.996-2.795.001-.97-.581-1.838-1.523-2.279m-1.431 3.746h-2.99v-3h2.786c1.022 0 1.71.556 1.71 1.384 0 .982-.591 1.616-1.506 1.616m-.364-4.302h-2.627V17.49h2.787c.916 0 1.507.485 1.507 1.236.001.736-.515 1.48-1.667 1.48zM61.746 16.163h-1.422v9.673h6.222v-1.355h-4.8zM69.554 16.163h-1.422v9.673h1.422zM78.484 23.32l-4.954-7.127-.021-.03h-1.375v9.673h1.341v-7.51l5.219 7.51h1.131v-9.673h-1.34zM86.178 20.419l3.72-4.256H88.16l-4.333 4.948v-4.948h-1.422v9.673h1.422v-2.808l1.38-1.56 3.07 4.368H90zM27.913 22.564c-.634 1.468-1.448 2.094-2.726 2.094-.874 0-1.674-.38-2.253-1.069-.571-.678-.885-1.598-.885-2.59 0-.983.307-1.896.864-2.572.571-.691 1.364-1.072 2.234-1.072 1.177 0 2.039.597 2.633 1.825l.025.052h1.488l-.007-.042c-.036-.204-.109-.394-.18-.581l-.023-.06a3.98 3.98 0 0 0-1.522-1.872c-.685-.45-1.511-.677-2.455-.677-1.29 0-2.453.525-3.277 1.478-.793.917-1.23 2.168-1.23 3.522 0 1.372.44 2.628 1.237 3.538.839.956 1.988 1.462 3.324 1.462.936 0 1.758-.247 2.445-.733q.173-.123.332-.264c.696-.616 1.223-1.491 1.41-2.343l.004-.022q.01-.045.017-.089l.007-.041h-1.439z\"/></g><defs><clipPath id=\"a\"><path fill=\"#fff\" d=\"M5 16h85v10H5z\"/></clipPath></defs></svg>","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { cameraManagerStore } from \"@microblink/camera-manager\";\nimport type { Component } from \"solid-js\";\nimport {\n createEffect,\n createSignal,\n Match,\n onCleanup,\n Show,\n Switch,\n} from \"solid-js\";\nimport { createWithSignal } from \"solid-zustand\";\nimport {\n BlinkIdUiState,\n firstSideCapturedStates,\n} from \"../core/blinkid-ui-state\";\nimport {\n LocalizationProvider,\n LocalizationStrings,\n useLocalization,\n} from \"./LocalizationContext\";\nimport { UiFeedbackOverlay } from \"./UiFeedbackOverlay\";\n\n// this triggers extraction of CSS from the UnoCSS plugin\nimport \"virtual:uno.css\";\n\nimport { useBlinkIdUiStore } from \"./BlinkIdUiStoreContext\";\nimport { SmartEnvironmentProvider } from \"@microblink/shared-components/SmartEnvironmentProvider\";\nimport { OnboardingGuideModal } from \"./dialogs/OnboardingGuideModal\";\nimport { HelpButton, HelpModal } from \"./dialogs/HelpModal\";\nimport { ErrorModal } from \"./dialogs/ErrorModal\";\nimport DemoOverlay from \"./assets/demo-overlay.svg?component-solid\";\nimport MicroblinkOverlay from \"./assets/microblink.svg?component-solid\";\n\nimport styles from \"./styles.module.scss\";\n\n// `blinkIdUxManager` is not reactive\nexport const BlinkIdFeedbackUi: Component<{\n localization?: Partial<LocalizationStrings>;\n}> = (props) => {\n const { store, updateStore } = useBlinkIdUiStore();\n\n // TODO: hacky, fix this\n // only used to map LOW_QUALITY_FRONT and LOW_QUALITY_BACK to SENSING_FRONT\n // and SENSING_BACK\n const [uiState, setUiState] = createSignal<BlinkIdUiState>(\n store.blinkIdUxManager.uiState,\n );\n\n // Handle errors during scanning\n createEffect(() => {\n const errorCallbackCleanup = store.blinkIdUxManager.addOnErrorCallback(\n (errorState) => {\n updateStore({ errorState });\n },\n );\n onCleanup(() => errorCallbackCleanup());\n });\n\n // Handle document filtered during scanning\n createEffect(() => {\n const errorCallbackCleanup =\n store.blinkIdUxManager.addOnDocumentFilteredCallback((_) => {\n store.blinkIdUxManager.cameraManager.stopFrameCapture();\n updateStore({ documentFiltered: true });\n });\n onCleanup(() => errorCallbackCleanup());\n });\n\n const playbackState = createWithSignal(cameraManagerStore)(\n (s) => s.playbackState,\n );\n\n const isProcessing = () => playbackState() === \"capturing\";\n\n // Processing is stopped, but we still want to show the feedback\n // TODO: see if there is a better way to handle these edge-cases\n const shouldShowFeedback = () => {\n return (\n isProcessing() ||\n firstSideCapturedStates.includes(uiState().key) ||\n uiState().key === \"DOCUMENT_CAPTURED\"\n );\n };\n\n const shouldShowDemoOverlay = () => {\n return store.blinkIdUxManager.getShowDemoOverlay();\n };\n\n const shouldShowProductionOverlay = () => {\n return store.blinkIdUxManager.getShowProductionOverlay();\n };\n\n createEffect(() => {\n const removeUiStateChangeCallback =\n store.blinkIdUxManager.addOnUiStateChangedCallback((newUiState) => {\n setUiState(newUiState);\n });\n\n onCleanup(() => removeUiStateChangeCallback());\n });\n\n return (\n <div>\n <style\n id=\"blinkid-ux-manager-style\"\n ref={(ref) => {\n if (window.__blinkidUxManagerCssCode) {\n ref.innerHTML = window.__blinkidUxManagerCssCode;\n }\n }}\n />\n <LocalizationProvider userStrings={props.localization}>\n <SmartEnvironmentProvider>\n {() => {\n const { t } = useLocalization();\n\n return (\n <>\n <Switch>\n <Match when={store.errorState === \"timeout\"}>\n <ErrorModal\n header={t.scan_unsuccessful}\n text={t.scan_unsuccessful_details}\n shouldResetScanningSession={true}\n />\n </Match>\n <Match when={uiState().key === \"UNSUPPORTED_DOCUMENT\"}>\n <ErrorModal\n header={t.document_not_recognized}\n text={t.document_not_recognized_details}\n shouldResetScanningSession={true}\n />\n </Match>\n <Match when={store.documentFiltered}>\n <ErrorModal\n header={t.document_filtered}\n text={t.document_filtered_details}\n shouldResetScanningSession={true}\n />\n </Match>\n </Switch>\n\n <Show when={shouldShowFeedback()}>\n <UiFeedbackOverlay uiState={uiState()} />\n </Show>\n\n <Show when={shouldShowDemoOverlay()}>\n <div class={styles.demoOverlay}>\n <DemoOverlay width=\"250\" />\n </div>\n </Show>\n\n <Show when={shouldShowProductionOverlay()}>\n <div class={styles.microblinkOverlay}>\n <MicroblinkOverlay width=\"100\" />\n </div>\n </Show>\n\n <HelpButton isProcessing={isProcessing()} />\n </>\n );\n }}\n </SmartEnvironmentProvider>\n\n <OnboardingGuideModal />\n <HelpModal />\n </LocalizationProvider>\n </div>\n );\n};\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { BlinkIdUxManager } from \"../core/BlinkIdUxManager\";\n\nimport { CameraManagerComponent } from \"@microblink/camera-manager\";\nimport { renderWithOwner } from \"@microblink/shared-components/renderWithOwner\";\nimport { BlinkIdFeedbackUi } from \"./BlinkIdFeedbackUi\";\nimport { BlinkIdUiStoreProvider } from \"./BlinkIdUiStoreContext\";\nimport { LocalizationStrings } from \"./LocalizationContext\";\n\nexport type FeedbackUiOptions = {\n localizationStrings?: Partial<LocalizationStrings>;\n /**\n * If set to `true`, the BlinkID instance will not be terminated when the\n * feedback UI is unmounted.\n *\n * @defaultValue false\n */\n preserveSdkInstance?: boolean;\n showOnboardingGuide?: boolean;\n showHelpTooltipTimeout?: number;\n};\n\nexport function createBlinkIdFeedbackUi(\n blinkIdUxManager: BlinkIdUxManager,\n cameraManagerComponent: CameraManagerComponent,\n {\n localizationStrings,\n // todo - implement this\n preserveSdkInstance,\n showOnboardingGuide = true,\n showHelpTooltipTimeout = 8000,\n }: FeedbackUiOptions = {},\n) {\n // Use a ref or closure to handle the circular reference\n const dismountFeedbackUiRef = {\n current: () => {\n void 0;\n },\n };\n\n cameraManagerComponent.addOnDismountCallback(() => {\n // if the camera manager is unmounted, we need to unmount the feedback UI\n dismountFeedbackUiRef.current();\n });\n\n const unmountFunction = renderWithOwner(\n () => (\n <BlinkIdUiStoreProvider\n blinkIdUxManager={blinkIdUxManager}\n cameraManagerComponent={cameraManagerComponent}\n showOnboardingGuide={showOnboardingGuide}\n showHelpTooltipTimeout={showHelpTooltipTimeout}\n dismountFeedbackUi={() => dismountFeedbackUiRef.current()}\n >\n <BlinkIdFeedbackUi localization={localizationStrings} />\n </BlinkIdUiStoreProvider>\n ),\n cameraManagerComponent.feedbackLayerNode,\n cameraManagerComponent.owner,\n );\n\n dismountFeedbackUiRef.current = unmountFunction;\n return unmountFunction;\n}\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nexport * from \"./core/blinkid-ui-state\";\nexport * from \"./core/BlinkIdUxManager\";\nexport * from \"./ui/createBlinkIdFeedbackUi\";\nexport type {\n LocaleRecord,\n LocalizationStrings,\n} from \"./ui/LocalizationContext\";\nexport type { DocumentClassFilter } from \"./core/DocumentClassFilter\";\n\nexport type * from \"@microblink/feedback-stabilizer\";\nexport type { BlinkIdProcessingError } from \"./core/BlinkIdProcessingError\";\n\n// https://newsletter.daishikato.com/p/detecting-dual-module-issues-in-jotai\nconst testSymbol = Symbol();\n\ndeclare global {\n /* eslint-disable no-var */\n var __BLINKID_UX_MANAGER__: typeof testSymbol;\n}\n\nglobalThis.__BLINKID_UX_MANAGER__ ||= testSymbol;\nif (globalThis.__BLINKID_UX_MANAGER__ !== testSymbol) {\n console.warn(\n \"Detected multiple instances of @microblink/blinkid-ux-manager. This can lead to unexpected behavior.\",\n );\n}\n"],"names":["r","t","e","n","o","c","i","a","s","u","match","P","LocalizationContext","createContext","LocalizationProvider","props","localizationStore","updateLocalizationStore","createStore","mergedStrings","enLocaleStrings","userStrings","createEffect","contextValue","updateLocalization","_$createComponent","Provider","value","children","useLocalization","ctx","useContext","Error","b","style","item","v","progress","noop","x","steps","p","transforms","template","d","data","inView","_a","PresenceContext","Presence","mount","setMount","createSignal","state","initial","render","createSwitchTransition","resolveFirst","appear","mode","exitBeforeEnter","onExit","el","done","batch","get","getOptions","exit","addEventListener","onEnter","_","createAndBindMotionState","options","presence_state","parent_state","createMotionState","el_ref","unmount","update","onCleanup","setActive","createStyles","getTarget","OPTION_KEYS","ATTR_KEYS","ParentContext","createContext2","MotionComponent","attrs","splitProps","style2","root","useContext2","Dynamic","_$mergeProps","ref","component","tag","combineStyle","Motion","Proxy","f","_el$","_tmpl$","_$spread","UiFeedbackOverlay","showSuccessOnly","setShowSuccessOnly","timeout","firstSideCapturedStates","includes","uiState","key","window","setTimeout","blinkIdUiStateMap","DOCUMENT_CAPTURED","minDuration","clearTimeout","isPassportCaptureState","getDirection","_el$2","firstChild","_el$3","_el$4","Switch","Match","when","reticleType","SearchReticle","ScanningReticle","ErrorReticle","SuccessFeedback","_$memo","FlipCardFeedback","PassportAnimation","direction","duration","Show","UiFeedbackMessage","opacity","scale","animate","transition","easing","DoneIcon","cardSideStyles","_el$5","_tmpl$2","rotateY","FLIP_CARD","CardIconFront","CardIconBack","clsx","rotation","_el$6","_el$7","_tmpl$3","PassportTop","PassportBottom","y","PassportHighlight","_$effect","_$p","setProperty","removeProperty","ReticleContainer","div","type","delay","transform","repeat","Infinity","SearchIcon","FullIcon","rotate","ScanIcon","message","feedbackMessages","_el$8","_tmpl$5","Rerun","on","_el$9","_tmpl$4","_$insert","BlinkIdUiStoreContext","BlinkIdUiStoreProvider","store","updateStore","blinkIdUxManager","cameraManagerComponent","showOnboardingGuide","showHelpTooltipTimeout","dismountFeedbackUi","console","debug","useBlinkIdUiStore","SmartEnvironmentProvider","rootNode","setRootNode","setRef","onMount","spanRef","getRootNode","fallback","_$use","EnvironmentProvider","Modal","getPaddingClass","modalStyle","styles","compact","undefined","Dialog","Root","onFocusOutside","preventDefault","onInteractOutside","restoreFocus","unmountOnExit","lazyMount","open","Portal","mountTarget","Positioner","dialogPositioner","Backdrop","dialogBackdrop","Content","dialogContent","showCloseButton","CloseTrigger","closeButton","onClick","onCloseClicked","_$className","closeButtonInner","headerImage","header","Title","dialogTitle","Description","contentOut","actions","AlertModal","text","onPrimaryClick","onSecondaryClick","primaryButtonText","secondaryButtonText","primaryButtonEl","alertTitle","initialFocusEl","nextSibling","$$click","_ref$","_p$","_v$","_v$2","secondaryActionButton","_v$3","primaryActionButton","alertText","_$delegateEvents","OnboardingGuideModal","modalVisible","hideModal","cameraManager","startFrameCapture","startScanningBtnRef","overlayLayerNode","HelpCorrectFraming","DialogTitle","onboarding_modal_title","onboarding_modal_details","onboarding_modal_btn","onboardingGuide","content","_v$4","textContent","_v$5","_v$6","buttonPrimary","HelpModal","currentStep","setCurrentStep","showHelpModal","title","img","HelpHarshLight","HelpKeepStill","isLastStep","length","isFirstStep","stopFrameCapture","Carousel","defaultPage","slideCount","page","onPageChange","details","carousel","ItemGroup","itemGroup","For","each","step","index","Item","IndicatorGroup","indicators","Indicator","indicator","Control","controls","PrevTrigger","buttonSecondary","disabled","help_modal_back_btn","NextTrigger","r$","help_modal_done_btn","help_modal_next_btn","controlsInner","HelpButton","tooltipOpen","setTooltipOpen","timeoutId","isProcessing","Tooltip","positioning","placement","openDelay","closeDelay","onOpenChange","Trigger","help_aria_label","helpButton","QuestionIcon","tooltip","Arrow","arrow","ArrowTip","help_tooltip","ErrorModal","errorState","dismountCameraManagerUi","dismount","handlePrimaryClick","shouldResetScanningSession","scanningSession","reset","alert_retry_btn","alert_cancel_btn","BlinkIdFeedbackUi","setUiState","errorCallbackCleanup","addOnErrorCallback","addOnDocumentFilteredCallback","documentFiltered","playbackState","createWithSignal","cameraManagerStore","shouldShowFeedback","shouldShowDemoOverlay","getShowDemoOverlay","shouldShowProductionOverlay","getShowProductionOverlay","removeUiStateChangeCallback","addOnUiStateChangedCallback","newUiState","__blinkidUxManagerCssCode","innerHTML","localization","scan_unsuccessful","scan_unsuccessful_details","document_not_recognized","document_not_recognized_details","document_filtered","document_filtered_details","DemoOverlay","width","demoOverlay","MicroblinkOverlay","microblinkOverlay","createBlinkIdFeedbackUi","localizationStrings","preserveSdkInstance","dismountFeedbackUiRef","current","addOnDismountCallback","unmountFunction","renderWithOwner","feedbackLayerNode","owner"],"mappings":"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","x_google_ignoreList":[0,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62]}
1
+ {"version":3,"file":"blinkid-ux-manager.js","sources":["../../../node_modules/.pnpm/ts-pattern@5.6.2/node_modules/ts-pattern/dist/index.js","../src/core/blinkid-ui-state.ts","../../feedback-stabilizer/dist/utils.js","../../feedback-stabilizer/dist/index.js","../src/core/utils.ts","../src/core/BlinkIdUxManager.ts","../../shared-components/src/renderWithOwner.ts","../src/ui/locales/en.ts","../src/ui/LocalizationContext.tsx","../../../node_modules/.pnpm/@solid-primitives+keyed@1.5.0_solid-js@1.9.5/node_modules/@solid-primitives/keyed/dist/index.js","../../../node_modules/.pnpm/@solid-primitives+props@3.1.11_solid-js@1.9.5/node_modules/@solid-primitives/props/dist/index.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/array.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/clamp.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/defaults.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/is-number.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/is-easing-list.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/wrap.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/easing.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/mix.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/noop.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/progress.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/offset.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/interpolate.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/is-cubic-bezier.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/is-easing-generator.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/is-function.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/is-string.es.js","../../../node_modules/.pnpm/@motionone+utils@10.18.0/node_modules/@motionone/utils/dist/time.es.js","../../../node_modules/.pnpm/@motionone+easing@10.18.0/node_modules/@motionone/easing/dist/cubic-bezier.es.js","../../../node_modules/.pnpm/@motionone+easing@10.18.0/node_modules/@motionone/easing/dist/steps.es.js","../../../node_modules/.pnpm/@motionone+animation@10.18.0/node_modules/@motionone/animation/dist/utils/easing.es.js","../../../node_modules/.pnpm/@motionone+animation@10.18.0/node_modules/@motionone/animation/dist/Animation.es.js","../../../node_modules/.pnpm/hey-listen@1.0.8/node_modules/hey-listen/dist/hey-listen.es.js","../../../node_modules/.pnpm/@motionone+types@10.17.1/node_modules/@motionone/types/dist/MotionValue.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/data.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/transforms.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/css-var.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/feature-detection.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/easing.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/keyframes.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/get-style-name.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/style.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/stop-animation.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/get-unit.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/animate-style.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/options.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/utils/resolve-elements.es.js","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/gestures/in-view.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/utils/has-changed.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/utils/is-variant.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/utils/resolve-variant.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/utils/schedule.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/utils/events.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/gestures/in-view.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/gestures/hover.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/gestures/press.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/state/index.es.js","../../../node_modules/.pnpm/@motionone+dom@10.18.0/node_modules/@motionone/dom/dist/animate/utils/style-object.es.js","../../../node_modules/.pnpm/@solid-primitives+refs@1.0.8_solid-js@1.9.5/node_modules/@solid-primitives/refs/dist/index.js","../../../node_modules/.pnpm/@solid-primitives+transition-group@1.0.5_solid-js@1.9.5/node_modules/@solid-primitives/transition-group/dist/index.js","../../../node_modules/.pnpm/solid-motionone@1.0.3_solid-js@1.9.5/node_modules/solid-motionone/dist/index.jsx","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../src/ui/feedbackMessages.ts","../src/ui/assets/reticles/card-back.svg?component-solid","../src/ui/assets/reticles/card-front.svg?component-solid","../src/ui/assets/reticles/done.svg?component-solid","../src/ui/assets/reticles/full.svg?component-solid","../src/ui/assets/reticles/passport-bottom.svg?component-solid","../src/ui/assets/reticles/passport-highlight.svg?component-solid","../src/ui/assets/reticles/passport-top.svg?component-solid","../src/ui/assets/reticles/searching.svg?component-solid","../src/ui/assets/reticles/spin.svg?component-solid","../src/ui/UiFeedbackOverlay.tsx","../src/ui/BlinkIdUiStoreContext.tsx","../../shared-components/src/SmartEnvironmentProvider.tsx","../../shared-components/src/Modal.tsx","../src/ui/assets/help/help_correct_framing.svg?component-solid","../src/ui/dialogs/OnboardingGuideModal.tsx","../src/ui/assets/help/help_fields_visible.svg?component-solid","../src/ui/assets/help/help_harsh_light.svg?component-solid","../src/ui/assets/help/help_keep_still.svg?component-solid","../src/ui/assets/icons/icon-question.svg?component-solid","../src/ui/dialogs/HelpModal.tsx","../src/ui/dialogs/ErrorModal.tsx","../src/ui/assets/demo-overlay.svg?component-solid","../src/ui/assets/microblink.svg?component-solid","../src/ui/BlinkIdFeedbackUi.tsx","../src/ui/createBlinkIdFeedbackUi.tsx","../src/index.ts"],"sourcesContent":["const t=Symbol.for(\"@ts-pattern/matcher\"),e=Symbol.for(\"@ts-pattern/isVariadic\"),n=\"@ts-pattern/anonymous-select-key\",r=t=>Boolean(t&&\"object\"==typeof t),i=e=>e&&!!e[t],s=(n,o,c)=>{if(i(n)){const e=n[t](),{matched:r,selections:i}=e.match(o);return r&&i&&Object.keys(i).forEach(t=>c(t,i[t])),r}if(r(n)){if(!r(o))return!1;if(Array.isArray(n)){if(!Array.isArray(o))return!1;let t=[],r=[],a=[];for(const s of n.keys()){const o=n[s];i(o)&&o[e]?a.push(o):a.length?r.push(o):t.push(o)}if(a.length){if(a.length>1)throw new Error(\"Pattern error: Using `...P.array(...)` several times in a single pattern is not allowed.\");if(o.length<t.length+r.length)return!1;const e=o.slice(0,t.length),n=0===r.length?[]:o.slice(-r.length),i=o.slice(t.length,0===r.length?Infinity:-r.length);return t.every((t,n)=>s(t,e[n],c))&&r.every((t,e)=>s(t,n[e],c))&&(0===a.length||s(a[0],i,c))}return n.length===o.length&&n.every((t,e)=>s(t,o[e],c))}return Reflect.ownKeys(n).every(e=>{const r=n[e];return(e in o||i(a=r)&&\"optional\"===a[t]().matcherType)&&s(r,o[e],c);var a})}return Object.is(o,n)},o=e=>{var n,s,a;return r(e)?i(e)?null!=(n=null==(s=(a=e[t]()).getSelectionKeys)?void 0:s.call(a))?n:[]:Array.isArray(e)?c(e,o):c(Object.values(e),o):[]},c=(t,e)=>t.reduce((t,n)=>t.concat(e(n)),[]);function a(...t){if(1===t.length){const[e]=t;return t=>s(e,t,()=>{})}if(2===t.length){const[e,n]=t;return s(e,n,()=>{})}throw new Error(`isMatching wasn't given the right number of arguments: expected 1 or 2, received ${t.length}.`)}function u(t){return Object.assign(t,{optional:()=>h(t),and:e=>m(t,e),or:e=>d(t,e),select:e=>void 0===e?y(t):y(e,t)})}function l(t){return Object.assign((t=>Object.assign(t,{[Symbol.iterator](){let n=0;const r=[{value:Object.assign(t,{[e]:!0}),done:!1},{done:!0,value:void 0}];return{next:()=>{var t;return null!=(t=r[n++])?t:r.at(-1)}}}}))(t),{optional:()=>l(h(t)),select:e=>l(void 0===e?y(t):y(e,t))})}function h(e){return u({[t]:()=>({match:t=>{let n={};const r=(t,e)=>{n[t]=e};return void 0===t?(o(e).forEach(t=>r(t,void 0)),{matched:!0,selections:n}):{matched:s(e,t,r),selections:n}},getSelectionKeys:()=>o(e),matcherType:\"optional\"})})}const f=(t,e)=>{for(const n of t)if(!e(n))return!1;return!0},g=(t,e)=>{for(const[n,r]of t.entries())if(!e(r,n))return!1;return!0};function m(...e){return u({[t]:()=>({match:t=>{let n={};const r=(t,e)=>{n[t]=e};return{matched:e.every(e=>s(e,t,r)),selections:n}},getSelectionKeys:()=>c(e,o),matcherType:\"and\"})})}function d(...e){return u({[t]:()=>({match:t=>{let n={};const r=(t,e)=>{n[t]=e};return c(e,o).forEach(t=>r(t,void 0)),{matched:e.some(e=>s(e,t,r)),selections:n}},getSelectionKeys:()=>c(e,o),matcherType:\"or\"})})}function p(e){return{[t]:()=>({match:t=>({matched:Boolean(e(t))})})}}function y(...e){const r=\"string\"==typeof e[0]?e[0]:void 0,i=2===e.length?e[1]:\"string\"==typeof e[0]?void 0:e[0];return u({[t]:()=>({match:t=>{let e={[null!=r?r:n]:t};return{matched:void 0===i||s(i,t,(t,n)=>{e[t]=n}),selections:e}},getSelectionKeys:()=>[null!=r?r:n].concat(void 0===i?[]:o(i))})})}function v(t){return\"number\"==typeof t}function b(t){return\"string\"==typeof t}function w(t){return\"bigint\"==typeof t}const S=u(p(function(t){return!0})),O=S,j=t=>Object.assign(u(t),{startsWith:e=>{return j(m(t,(n=e,p(t=>b(t)&&t.startsWith(n)))));var n},endsWith:e=>{return j(m(t,(n=e,p(t=>b(t)&&t.endsWith(n)))));var n},minLength:e=>j(m(t,(t=>p(e=>b(e)&&e.length>=t))(e))),length:e=>j(m(t,(t=>p(e=>b(e)&&e.length===t))(e))),maxLength:e=>j(m(t,(t=>p(e=>b(e)&&e.length<=t))(e))),includes:e=>{return j(m(t,(n=e,p(t=>b(t)&&t.includes(n)))));var n},regex:e=>{return j(m(t,(n=e,p(t=>b(t)&&Boolean(t.match(n))))));var n}}),K=j(p(b)),x=t=>Object.assign(u(t),{between:(e,n)=>x(m(t,((t,e)=>p(n=>v(n)&&t<=n&&e>=n))(e,n))),lt:e=>x(m(t,(t=>p(e=>v(e)&&e<t))(e))),gt:e=>x(m(t,(t=>p(e=>v(e)&&e>t))(e))),lte:e=>x(m(t,(t=>p(e=>v(e)&&e<=t))(e))),gte:e=>x(m(t,(t=>p(e=>v(e)&&e>=t))(e))),int:()=>x(m(t,p(t=>v(t)&&Number.isInteger(t)))),finite:()=>x(m(t,p(t=>v(t)&&Number.isFinite(t)))),positive:()=>x(m(t,p(t=>v(t)&&t>0))),negative:()=>x(m(t,p(t=>v(t)&&t<0)))}),E=x(p(v)),A=t=>Object.assign(u(t),{between:(e,n)=>A(m(t,((t,e)=>p(n=>w(n)&&t<=n&&e>=n))(e,n))),lt:e=>A(m(t,(t=>p(e=>w(e)&&e<t))(e))),gt:e=>A(m(t,(t=>p(e=>w(e)&&e>t))(e))),lte:e=>A(m(t,(t=>p(e=>w(e)&&e<=t))(e))),gte:e=>A(m(t,(t=>p(e=>w(e)&&e>=t))(e))),positive:()=>A(m(t,p(t=>w(t)&&t>0))),negative:()=>A(m(t,p(t=>w(t)&&t<0)))}),P=A(p(w)),T=u(p(function(t){return\"boolean\"==typeof t})),B=u(p(function(t){return\"symbol\"==typeof t})),_=u(p(function(t){return null==t})),k=u(p(function(t){return null!=t}));var N={__proto__:null,matcher:t,optional:h,array:function(...e){return l({[t]:()=>({match:t=>{if(!Array.isArray(t))return{matched:!1};if(0===e.length)return{matched:!0};const n=e[0];let r={};if(0===t.length)return o(n).forEach(t=>{r[t]=[]}),{matched:!0,selections:r};const i=(t,e)=>{r[t]=(r[t]||[]).concat([e])};return{matched:t.every(t=>s(n,t,i)),selections:r}},getSelectionKeys:()=>0===e.length?[]:o(e[0])})})},set:function(...e){return u({[t]:()=>({match:t=>{if(!(t instanceof Set))return{matched:!1};let n={};if(0===t.size)return{matched:!0,selections:n};if(0===e.length)return{matched:!0};const r=(t,e)=>{n[t]=(n[t]||[]).concat([e])},i=e[0];return{matched:f(t,t=>s(i,t,r)),selections:n}},getSelectionKeys:()=>0===e.length?[]:o(e[0])})})},map:function(...e){return u({[t]:()=>({match:t=>{if(!(t instanceof Map))return{matched:!1};let n={};if(0===t.size)return{matched:!0,selections:n};const r=(t,e)=>{n[t]=(n[t]||[]).concat([e])};if(0===e.length)return{matched:!0};var i;if(1===e.length)throw new Error(`\\`P.map\\` wasn't given enough arguments. Expected (key, value), received ${null==(i=e[0])?void 0:i.toString()}`);const[o,c]=e;return{matched:g(t,(t,e)=>{const n=s(o,e,r),i=s(c,t,r);return n&&i}),selections:n}},getSelectionKeys:()=>0===e.length?[]:[...o(e[0]),...o(e[1])]})})},intersection:m,union:d,not:function(e){return u({[t]:()=>({match:t=>({matched:!s(e,t,()=>{})}),getSelectionKeys:()=>[],matcherType:\"not\"})})},when:p,select:y,any:S,_:O,string:K,number:E,bigint:P,boolean:T,symbol:B,nullish:_,nonNullable:k,instanceOf:function(t){return u(p(function(t){return e=>e instanceof t}(t)))},shape:function(t){return u(p(a(t)))}};class W extends Error{constructor(t){let e;try{e=JSON.stringify(t)}catch(n){e=t}super(`Pattern matching error: no pattern matches value ${e}`),this.input=void 0,this.input=t}}const $={matched:!1,value:void 0};function z(t){return new I(t,$)}class I{constructor(t,e){this.input=void 0,this.state=void 0,this.input=t,this.state=e}with(...t){if(this.state.matched)return this;const e=t[t.length-1],r=[t[0]];let i;3===t.length&&\"function\"==typeof t[1]?i=t[1]:t.length>2&&r.push(...t.slice(1,t.length-1));let o=!1,c={};const a=(t,e)=>{o=!0,c[t]=e},u=!r.some(t=>s(t,this.input,a))||i&&!Boolean(i(this.input))?$:{matched:!0,value:e(o?n in c?c[n]:c:this.input,this.input)};return new I(this.input,u)}when(t,e){if(this.state.matched)return this;const n=Boolean(t(this.input));return new I(this.input,n?{matched:!0,value:e(this.input,this.input)}:$)}otherwise(t){return this.state.matched?this.state.value:t(this.input)}exhaustive(){if(this.state.matched)return this.state.value;throw new W(this.input)}run(){return this.exhaustive()}returnType(){return this}}export{W as NonExhaustiveError,N as P,N as Pattern,a as isMatching,z as match};\n//# sourceMappingURL=index.js.map\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport {\n DocumentClassInfo,\n DocumentRotation,\n InputImageAnalysisResult,\n ResultCompleteness,\n ScanningSettings,\n} from \"@microblink/blinkid-core\";\nimport { UiState } from \"@microblink/feedback-stabilizer\";\nimport { match, P } from \"ts-pattern\";\n\nexport type BlinkIdReticleType =\n | \"searching\"\n | \"processing\"\n | \"error\"\n | \"done\"\n | \"flip\"\n | \"move_top\"\n | \"move_left\"\n | \"move_right\";\n\nexport type BlinkIdUiStateKey =\n | \"FLIP_CARD\"\n | \"DOCUMENT_CAPTURED\"\n | \"SENSING_FRONT\"\n | \"SENSING_BACK\"\n | \"SENSING_DATA_PAGE\"\n | \"SENSING_TOP_PAGE\"\n | \"SENSING_LEFT_PAGE\"\n | \"SENSING_RIGHT_PAGE\"\n | \"MOVE_TOP\"\n | \"MOVE_LEFT\"\n | \"MOVE_RIGHT\"\n | \"DOCUMENT_FRAMING_CAMERA_TOO_FAR\"\n | \"DOCUMENT_FRAMING_CAMERA_TOO_CLOSE\"\n | \"DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP\"\n | \"DOCUMENT_TOO_CLOSE_TO_FRAME_EDGE\"\n | \"BLUR_DETECTED\"\n | \"GLARE_DETECTED\"\n | \"TOO_DARK\"\n | \"TOO_BRIGHT\"\n | \"OCCLUDED\"\n | \"FACE_PHOTO_OCCLUDED\"\n | \"UNSUPPORTED_DOCUMENT\"\n | \"SCAN_BARCODE\"\n | \"WRONG_TOP_PAGE\"\n | \"WRONG_LEFT_PAGE\"\n | \"WRONG_RIGHT_PAGE\"\n | \"WRONG_SIDE\";\n\n/**\n * Extended UI state for BlinkID.\n */\n\nexport type BlinkIdUiStateMap = {\n [K in BlinkIdUiStateKey]: UiState & {\n key: K;\n reticleType: BlinkIdReticleType;\n };\n};\n\nexport const firstSideCapturedStates: BlinkIdUiStateKey[] = [\n \"FLIP_CARD\",\n \"MOVE_LEFT\",\n \"MOVE_RIGHT\",\n \"MOVE_TOP\",\n] as const;\n\nexport type BlinkIdUiState = BlinkIdUiStateMap[keyof BlinkIdUiStateMap];\n\nexport const blinkIdUiStateMap: BlinkIdUiStateMap = {\n SENSING_FRONT: {\n key: \"SENSING_FRONT\",\n reticleType: \"searching\",\n minDuration: 1000,\n },\n SENSING_BACK: {\n key: \"SENSING_BACK\",\n reticleType: \"searching\",\n minDuration: 1000,\n },\n SENSING_DATA_PAGE: {\n key: \"SENSING_DATA_PAGE\",\n reticleType: \"searching\",\n minDuration: 1000,\n },\n SENSING_TOP_PAGE: {\n key: \"SENSING_TOP_PAGE\",\n reticleType: \"searching\",\n minDuration: 1000,\n },\n SENSING_LEFT_PAGE: {\n key: \"SENSING_LEFT_PAGE\",\n reticleType: \"searching\",\n minDuration: 1000,\n },\n SENSING_RIGHT_PAGE: {\n key: \"SENSING_RIGHT_PAGE\",\n reticleType: \"searching\",\n minDuration: 1000,\n },\n SCAN_BARCODE: {\n key: \"SCAN_BARCODE\",\n reticleType: \"processing\",\n minDuration: 1000,\n },\n // ID card captured, flip to back side\n FLIP_CARD: {\n key: \"FLIP_CARD\",\n reticleType: \"flip\",\n minDuration: 2000,\n singleEmit: true,\n },\n // Passport pages captured, move to the next page\n MOVE_TOP: {\n key: \"MOVE_TOP\",\n reticleType: \"move_top\",\n minDuration: 2000,\n singleEmit: true,\n },\n MOVE_LEFT: {\n key: \"MOVE_LEFT\",\n reticleType: \"move_left\",\n minDuration: 2000,\n singleEmit: true,\n },\n MOVE_RIGHT: {\n key: \"MOVE_RIGHT\",\n reticleType: \"move_right\",\n minDuration: 2000,\n singleEmit: true,\n },\n // Capturing all sides completed\n DOCUMENT_CAPTURED: {\n key: \"DOCUMENT_CAPTURED\",\n reticleType: \"done\",\n minDuration: 1000,\n singleEmit: true,\n },\n BLUR_DETECTED: {\n key: \"BLUR_DETECTED\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n GLARE_DETECTED: {\n key: \"GLARE_DETECTED\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n OCCLUDED: {\n key: \"OCCLUDED\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n FACE_PHOTO_OCCLUDED: {\n key: \"FACE_PHOTO_OCCLUDED\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n WRONG_SIDE: {\n key: \"WRONG_SIDE\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n WRONG_TOP_PAGE: {\n key: \"WRONG_TOP_PAGE\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n WRONG_LEFT_PAGE: {\n key: \"WRONG_LEFT_PAGE\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n WRONG_RIGHT_PAGE: {\n key: \"WRONG_RIGHT_PAGE\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n TOO_DARK: {\n key: \"TOO_DARK\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n TOO_BRIGHT: {\n key: \"TOO_BRIGHT\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n DOCUMENT_FRAMING_CAMERA_TOO_FAR: {\n key: \"DOCUMENT_FRAMING_CAMERA_TOO_FAR\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n DOCUMENT_FRAMING_CAMERA_TOO_CLOSE: {\n key: \"DOCUMENT_FRAMING_CAMERA_TOO_CLOSE\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP: {\n key: \"DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n DOCUMENT_TOO_CLOSE_TO_FRAME_EDGE: {\n key: \"DOCUMENT_TOO_CLOSE_TO_FRAME_EDGE\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n UNSUPPORTED_DOCUMENT: {\n key: \"UNSUPPORTED_DOCUMENT\",\n reticleType: \"error\",\n minDuration: 1500,\n },\n} as const;\n\nexport type PartialProcessResult = {\n inputImageAnalysisResult: Partial<InputImageAnalysisResult>;\n resultCompleteness: Partial<ResultCompleteness>;\n};\n\nfunction isPassport(docClass: DocumentClassInfo | undefined) {\n return docClass?.type === \"passport\";\n}\n\nexport function getUiStateKey(\n frameProcessResult: PartialProcessResult,\n settings?: Partial<ScanningSettings>,\n) {\n return (\n match<PartialProcessResult, BlinkIdUiStateKey>(frameProcessResult)\n // Success states\n .with(\n {\n resultCompleteness: {\n scanningStatus: \"document-scanned\",\n },\n },\n () => \"DOCUMENT_CAPTURED\",\n )\n\n // unsupported document\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"unsupported-document\",\n },\n },\n () => \"UNSUPPORTED_DOCUMENT\",\n )\n\n // passport pages captured\n .with(\n {\n resultCompleteness: {\n scanningStatus: \"side-scanned\",\n },\n inputImageAnalysisResult: {\n documentClassInfo: P.when(isPassport),\n documentRotation: \"counter-clockwise-90\",\n },\n },\n () => \"MOVE_LEFT\",\n )\n .with(\n {\n resultCompleteness: {\n scanningStatus: \"side-scanned\",\n },\n inputImageAnalysisResult: {\n documentClassInfo: P.when(isPassport),\n documentRotation: \"clockwise-90\",\n },\n },\n () => \"MOVE_RIGHT\",\n )\n .with(\n {\n resultCompleteness: {\n scanningStatus: \"side-scanned\",\n },\n inputImageAnalysisResult: {\n documentClassInfo: P.when(isPassport),\n },\n },\n () => \"MOVE_TOP\",\n )\n\n // side captured on non-passport\n .with(\n {\n resultCompleteness: {\n scanningStatus: \"side-scanned\",\n },\n },\n () => \"FLIP_CARD\",\n )\n\n // framing\n .with(\n {\n inputImageAnalysisResult: {\n documentDetectionStatus: \"camera-angle-too-steep\",\n },\n },\n () => \"DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n documentDetectionStatus: \"camera-too-close\",\n },\n },\n () => \"DOCUMENT_FRAMING_CAMERA_TOO_CLOSE\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n documentDetectionStatus: \"camera-too-far\",\n },\n },\n () => \"DOCUMENT_FRAMING_CAMERA_TOO_FAR\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n documentDetectionStatus: \"document-too-close-to-camera-edge\",\n },\n },\n () => \"DOCUMENT_TOO_CLOSE_TO_FRAME_EDGE\",\n )\n\n // lighting\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"image-preprocessing-failed\",\n documentLightingStatus: P.when(\n (status) =>\n status === \"too-bright\" &&\n settings?.skipImagesWithInadequateLightingConditions,\n ),\n },\n },\n () => \"TOO_BRIGHT\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"image-preprocessing-failed\",\n documentLightingStatus: P.when(\n (status) =>\n status === \"too-dark\" &&\n settings?.skipImagesWithInadequateLightingConditions,\n ),\n },\n },\n () => \"TOO_DARK\",\n )\n\n // glare\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"image-preprocessing-failed\",\n glareDetectionStatus: P.when(\n (status) =>\n status === \"detected\" && settings?.skipImagesWithGlare,\n ),\n },\n },\n () => \"GLARE_DETECTED\",\n )\n\n // occluded\n .with(\n {\n inputImageAnalysisResult: {\n documentDetectionStatus: \"document-partially-visible\",\n },\n },\n () => \"OCCLUDED\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n documentHandOcclusionStatus: P.when(\n (status) =>\n status === \"detected\" && settings?.skipImagesOccludedByHand,\n ),\n },\n },\n () => \"OCCLUDED\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n missingMandatoryFields: P.when(\n (arr) => Array.isArray(arr) && arr.length > 0,\n ),\n },\n },\n () => \"OCCLUDED\",\n )\n // technically the same as the previous case\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"mandatory-field-missing\",\n },\n },\n () => \"OCCLUDED\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"invalid-characters-found\",\n },\n },\n () => \"OCCLUDED\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"mrz-parsing-failed\",\n },\n },\n () => \"OCCLUDED\",\n )\n\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"image-return-failed\",\n imageExtractionFailures: P.when(\n (arr) => Array.isArray(arr) && arr.includes(\"face\"),\n ),\n },\n },\n () => \"FACE_PHOTO_OCCLUDED\",\n )\n\n // blur\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"image-preprocessing-failed\",\n blurDetectionStatus: P.when(\n (status) => status === \"detected\" && settings?.skipImagesWithBlur,\n ),\n },\n },\n () => \"BLUR_DETECTED\",\n )\n\n // scan wrong side / page\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"second\",\n processingStatus: \"scanning-wrong-side\",\n documentClassInfo: P.when(isPassport),\n documentRotation: \"counter-clockwise-90\",\n },\n },\n () => \"WRONG_LEFT_PAGE\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"second\",\n processingStatus: \"scanning-wrong-side\",\n documentClassInfo: P.when(isPassport),\n documentRotation: \"clockwise-90\",\n },\n },\n () => \"WRONG_RIGHT_PAGE\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"second\",\n processingStatus: \"scanning-wrong-side\",\n documentClassInfo: P.when(isPassport),\n },\n },\n () => \"WRONG_TOP_PAGE\",\n )\n .with(\n {\n inputImageAnalysisResult: {\n processingStatus: \"scanning-wrong-side\",\n },\n },\n () => \"WRONG_SIDE\",\n )\n\n // scan barcode\n .with(\n {\n resultCompleteness: {\n scanningStatus: \"scanning-barcode-in-progress\",\n },\n },\n () => \"SCAN_BARCODE\",\n )\n\n // scan passport second page (in frame)\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"second\",\n documentClassInfo: P.when(isPassport),\n documentRotation: \"counter-clockwise-90\",\n },\n },\n () => \"SENSING_LEFT_PAGE\",\n )\n // TODO: upside-down?\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"second\",\n documentClassInfo: P.when(isPassport),\n documentRotation: \"clockwise-90\",\n },\n },\n () => \"SENSING_RIGHT_PAGE\",\n )\n\n // sensing passport data page\n // TODO: this cannot occur\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"first\",\n documentClassInfo: P.when(isPassport),\n },\n },\n () => \"SENSING_DATA_PAGE\",\n )\n\n // passport side fallback\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"second\",\n documentClassInfo: P.when(isPassport),\n },\n },\n () => \"SENSING_TOP_PAGE\",\n )\n\n // scan front\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"first\",\n },\n },\n () => \"SENSING_FRONT\",\n )\n\n // scan back\n .with(\n {\n inputImageAnalysisResult: {\n scanningSide: \"second\",\n },\n // TODO: do we need this?\n resultCompleteness: {\n scanningStatus: \"scanning-side-in-progress\",\n },\n },\n () => \"SENSING_BACK\",\n )\n\n // fallback\n .otherwise((processResult) => {\n console.debug(\"Fallback to SENSING_FRONT\", processResult);\n\n return \"SENSING_FRONT\";\n })\n );\n}\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\nexport function getKeyWithHighestValue(obj) {\n const keys = Object.keys(obj);\n if (keys.length === 0) {\n throw new Error(\"No members in object!\");\n }\n // set default\n let maxKey = keys[0];\n let maxValue = -Infinity;\n for (const [key, value] of Object.entries(obj)) {\n if (value > maxValue) {\n maxValue = value;\n maxKey = key;\n }\n }\n return maxKey;\n}\nexport function getAverage(arr) {\n return arr.reduce((p, c) => p + c, 0) / arr.length;\n}\nexport const asError = (thrown) => {\n if (thrown instanceof Error)\n return thrown;\n try {\n return new Error(JSON.stringify(thrown));\n }\n catch {\n // fallback in case there's an error stringifying.\n // for example, due to circular references.\n return new Error(String(thrown));\n }\n};\n//# sourceMappingURL=utils.js.map","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\nimport { getKeyWithHighestValue } from \"./utils\";\nexport class FeedbackStabilizer {\n initialKey;\n uiStateMap;\n timeWindow = 3000;\n decayRate = 0.95;\n eventQueue = [];\n /** this is a special queue as min duration of the event can be longer than the `timeWindow` */\n singleEventQueue = [];\n // used for tracking current state\n currentKey;\n currentStateStartTime = performance.now();\n summedScores = {};\n scoreBoard = {};\n get currentState() {\n return this.uiStateMap[this.currentKey];\n }\n getEventQueue() {\n return structuredClone(this.eventQueue);\n }\n getScores() {\n return structuredClone(this.summedScores);\n }\n getScoreBoard() {\n return structuredClone(this.scoreBoard);\n }\n setTimeWindow(timeWindow) {\n this.timeWindow = timeWindow;\n }\n constructor(uiStateMap, initialKey, timeWindow, decayRate) {\n this.uiStateMap = uiStateMap;\n this.initialKey = initialKey;\n this.currentKey = initialKey;\n this.getNewUiState(initialKey);\n if (timeWindow) {\n this.timeWindow = timeWindow;\n }\n if (decayRate) {\n this.decayRate = decayRate;\n }\n }\n reset() {\n this.currentKey = this.initialKey;\n this.eventQueue = [];\n this.singleEventQueue = [];\n this.summedScores = {};\n }\n canShowNewUiState = () => {\n return (performance.now() - this.currentStateStartTime >=\n this.currentState.minDuration);\n };\n /**\n * Returns a weighted UI state based on the history\n */\n getNewUiState(incomingUiStateKey) {\n const now = performance.now();\n const initialWeight = this.uiStateMap[incomingUiStateKey].initialWeight;\n // create new event\n const uiStateEvent = {\n key: incomingUiStateKey,\n timeStamp: now,\n currentWeight: initialWeight ?? 1,\n singleEmit: this.uiStateMap[incomingUiStateKey].singleEmit,\n };\n // single emitted events are placed in a different queue and emitted once the previous event is done\n if (uiStateEvent.singleEmit) {\n this.singleEventQueue.push(uiStateEvent);\n }\n // if there is a single event in the queue, show it\n if (this.singleEventQueue.length > 0 && this.canShowNewUiState()) {\n const singleEvent = this.singleEventQueue.shift(); // we know it's not empty\n // clear the queue of regular events\n this.eventQueue = [];\n // early exit, no need to calculate the state\n this.currentKey = singleEvent.key;\n this.currentStateStartTime = now;\n return this.uiStateMap[singleEvent.key];\n }\n // place new event on stack\n this.eventQueue.push(uiStateEvent);\n // set up the scoreboard for current stack iteration\n this.scoreBoard = {};\n // start iterating from the oldest events\n this.eventQueue.forEach((eventInQueue) => {\n // delete and skip events outside of time window\n if (now - eventInQueue.timeStamp > this.timeWindow) {\n this.eventQueue.shift();\n return;\n }\n const relativeTime = eventInQueue.timeStamp / now;\n // Decay weight based on time, not only index.\n eventInQueue.currentWeight *= this.decayRate * relativeTime;\n // prefill board\n if (!this.scoreBoard[eventInQueue.key]) {\n this.scoreBoard[eventInQueue.key] = [];\n }\n // push the score on the current track\n this.scoreBoard[eventInQueue.key].push(eventInQueue.currentWeight); // we know it's not empty\n });\n // Return same state if under minimum duration\n if (!this.canShowNewUiState()) {\n return this.uiStateMap[this.currentKey];\n }\n // Otherwise calculate new UI state\n // We use this record to sum individual tracks\n this.summedScores = {};\n // score board is full, pick a winning state\n for (const trackKey in this.scoreBoard) {\n const track = this.scoreBoard[trackKey];\n if (!track) {\n throw new Error(\"no track - SHOULD NOT HAPPEN\");\n }\n if (!this.scoreBoard[trackKey]) {\n throw new Error(\"no score board for key\");\n }\n // TODO: See if relative amount makes sense\n const relativeAmount = track.length / this.eventQueue.length;\n const summedTrackScores = this.scoreBoard[trackKey].reduce((partialSum, a) => partialSum + a, 0);\n this.summedScores[trackKey] = summedTrackScores * relativeAmount;\n }\n // TODO: this sometimes fails with 0 keys - inspect!\n if (Object.keys(this.summedScores).length === 0) {\n return this.uiStateMap[this.currentKey];\n }\n const winningKey = getKeyWithHighestValue(this.summedScores);\n const winningState = this.uiStateMap[winningKey];\n // start tracking time if it's a different state\n if (winningState.key !== this.currentKey) {\n this.currentKey = winningKey;\n this.currentStateStartTime = now;\n }\n return winningState;\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nexport function getAverage(arr: number[]) {\n return arr.reduce((p, c) => p + c, 0) / arr.length;\n}\n\nexport const asError = (thrown: unknown): Error => {\n if (thrown instanceof Error) return thrown;\n try {\n return new Error(JSON.stringify(thrown));\n } catch {\n // fallback in case there's an error stringifying.\n // for example, due to circular references.\n return new Error(String(thrown));\n }\n};\n\nexport async function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport {\n BlinkIdScanningResult,\n BlinkIdSessionSettings,\n DocumentClassInfo,\n ProcessResultWithBuffer,\n RemoteScanningSession,\n} from \"@microblink/blinkid-core\";\nimport { type CameraManager } from \"@microblink/camera-manager\";\nimport { FeedbackStabilizer } from \"@microblink/feedback-stabilizer\";\nimport { BlinkIdProcessingError } from \"./BlinkIdProcessingError\";\nimport {\n BlinkIdUiState,\n BlinkIdUiStateKey,\n blinkIdUiStateMap,\n firstSideCapturedStates,\n getUiStateKey,\n} from \"./blinkid-ui-state\";\nimport { sleep } from \"./utils\";\nimport { DocumentClassFilter } from \"./DocumentClassFilter\";\n\n/**\n * Manages the UX of the BlinkID SDK.\n */\nexport class BlinkIdUxManager {\n declare cameraManager: CameraManager;\n declare scanningSession: RemoteScanningSession;\n declare showDemoOverlay: boolean;\n declare showProductionOverlay: boolean;\n declare uiState: BlinkIdUiState;\n declare rawUiStateKey: BlinkIdUiStateKey;\n declare feedbackStabilizer: FeedbackStabilizer<typeof blinkIdUiStateMap>;\n declare sessionSettings: BlinkIdSessionSettings;\n\n #successProcessResult: ProcessResultWithBuffer | undefined;\n #threadBusy = false;\n #timeoutId?: number;\n /** Timeout duration in ms for the scanning session. If null, timeout won't be triggered ever. */\n #timeoutDuration: number | null = 10000; // 10s\n /** Time in ms before the help tooltip is shown. If null, tooltip won't be auto shown. */\n #helpTooltipShowDelay: number | null = 5000; // 5s\n /** Time in ms before the help tooltip is hidden. If null, tooltip won't be auto hidden. */\n #helpTooltipHideDelay: number | null = 5000; // 5s\n\n #onUiStateChangedCallbacks = new Set<(uiState: BlinkIdUiState) => void>();\n #onResultCallbacks = new Set<(result: BlinkIdScanningResult) => void>();\n #onFrameProcessCallbacks = new Set<\n (frameResult: ProcessResultWithBuffer) => void\n >();\n #onErrorCallbacks = new Set<(errorState: BlinkIdProcessingError) => void>();\n #onDocumentFilteredCallbacks = new Set<\n (documentClassInfo: DocumentClassInfo) => void\n >();\n #documentClassFilter?: DocumentClassFilter;\n\n constructor(\n cameraManager: CameraManager,\n scanningSession: RemoteScanningSession,\n ) {\n this.cameraManager = cameraManager;\n this.scanningSession = scanningSession;\n this.feedbackStabilizer = new FeedbackStabilizer(\n blinkIdUiStateMap,\n \"SENSING_FRONT\",\n );\n this.uiState = this.feedbackStabilizer.currentState;\n void this.scanningSession.getSettings().then((settings) => {\n this.sessionSettings = settings;\n });\n void this.scanningSession.showDemoOverlay().then((showDemoOverlay) => {\n this.showDemoOverlay = showDemoOverlay;\n });\n void this.scanningSession\n .showProductionOverlay()\n .then((showProductionOverlay) => {\n this.showProductionOverlay = showProductionOverlay;\n });\n\n // clear timeout when we stop processing and add one when we start\n const unsubscribePlaybackState = this.cameraManager.subscribe(\n (s) => s.playbackState,\n (playbackState) => {\n console.debug(`⏯️ ${playbackState}`);\n\n // if timeout duration is null, we don't want to start a timeout\n if (this.#timeoutDuration === null) {\n return;\n }\n\n if (playbackState !== \"capturing\") {\n this.clearScanTimeout();\n } else {\n // Trigger for initial scan and pause/resume\n console.debug(\"🔁 continuing timeout\");\n this.#setTimeout(this.uiState);\n }\n },\n );\n\n // We unsubscribe the video observer when the video element is removed from the DOM\n const unsubscribeVideoObserver = cameraManager.subscribe(\n (s) => s.videoElement,\n (videoElement) => {\n if (!videoElement) {\n console.debug(\"Removing timeout subscriptions\");\n this.reset();\n unsubscribeVideoObserver();\n unsubscribePlaybackState();\n }\n },\n );\n\n // will only trigger if the camera manager is processing frames\n cameraManager.addFrameCaptureCallback(this.#frameCaptureCallback);\n }\n\n /**\n * Indicates whether the UI should display the demo overlay. Controlled by the license property.\n */\n getShowDemoOverlay(): boolean {\n return this.showDemoOverlay;\n }\n\n /**\n * Indicates whether the UI should display the production overlay. Controlled by the license property.\n */\n getShowProductionOverlay(): boolean {\n return this.showProductionOverlay;\n }\n\n /**\n * Returns the timeout duration in ms. Null if timeout won't be triggered ever.\n * @returns The timeout duration in ms.\n */\n getTimeoutDuration(): number | null {\n return this.#timeoutDuration;\n }\n\n /**\n * Returns the time in ms before the help tooltip is shown. Null if tooltip won't be auto shown.\n * @returns The time in ms before the help tooltip is shown.\n */\n getHelpTooltipShowDelay(): number | null {\n return this.#helpTooltipShowDelay;\n }\n\n /**\n * Returns the time in ms before the help tooltip is hidden. Null if tooltip won't be auto hidden.\n * @returns The time in ms before the help tooltip is hidden.\n */\n getHelpTooltipHideDelay(): number | null {\n return this.#helpTooltipHideDelay;\n }\n\n /**\n * Adds a callback function to be executed when the UI state changes.\n * @param callback - Function to be called when UI state changes. Receives the new UI state as parameter.\n * @returns A cleanup function that removes the callback when called.\n * @example\n * const cleanup = manager.addOnUiStateChangedCallback((newState) => {\n * console.log('UI state changed to:', newState);\n * });\n *\n * cleanup();\n */\n addOnUiStateChangedCallback(callback: (uiState: BlinkIdUiState) => void) {\n this.#onUiStateChangedCallbacks.add(callback);\n return () => {\n this.#onUiStateChangedCallbacks.delete(callback);\n };\n }\n\n /**\n * Registers a callback function to be called when a scan result is available.\n * @param callback - A function that will be called with the scan result.\n * @returns A cleanup function that, when called, will remove the registered callback.\n *\n * @example\n *\n * const cleanup = manager.addOnResultCallback((result) => {\n * console.log('Scan result:', result);\n * });\n *\n * // Later, to remove the callback:\n * cleanup();\n */\n addOnResultCallback(callback: (result: BlinkIdScanningResult) => void) {\n this.#onResultCallbacks.add(callback);\n return () => {\n this.#onResultCallbacks.delete(callback);\n };\n }\n\n /**\n * Registers a callback function to filter document classes.\n * @param callback - A function that will be called with the document class info.\n * @returns A cleanup function that, when called, will remove the registered callback.\n *\n * @example\n * const cleanup = manager.addDocumentClassFilter((docClassInfo) => {\n * return docClassInfo.country === 'usa';\n * });\n *\n * // Later, to remove the callback:\n * cleanup();\n */\n addDocumentClassFilter(callback: DocumentClassFilter) {\n this.#documentClassFilter = callback;\n return () => {\n this.#documentClassFilter = undefined;\n };\n }\n\n /**\n * Registers a callback function to be called when a frame is processed.\n * @param callback - A function that will be called with the frame analysis result.\n * @returns A cleanup function that, when called, will remove the registered callback.\n *\n * @example\n * const cleanup = manager.addOnFrameProcessCallback((frameResult) => {\n * console.log('Frame processed:', frameResult);\n * });\n *\n * // Later, to remove the callback:\n * cleanup();\n */\n addOnFrameProcessCallback(\n callback: (frameResult: ProcessResultWithBuffer) => void,\n ) {\n this.#onFrameProcessCallbacks.add(callback);\n return () => {\n this.#onFrameProcessCallbacks.delete(callback);\n };\n }\n\n /**\n * Registers a callback function to be called when an error occurs during processing.\n * @param callback - A function that will be called with the error state.\n * @returns A cleanup function that, when called, will remove the registered callback.\n *\n * @example\n * const cleanup = manager.addOnErrorCallback((error) => {\n * console.error('Processing error:', error);\n * });\n *\n * // Later, to remove the callback:\n * cleanup();\n */\n addOnErrorCallback(callback: (errorState: BlinkIdProcessingError) => void) {\n this.#onErrorCallbacks.add(callback);\n return () => {\n this.#onErrorCallbacks.delete(callback);\n };\n }\n\n #invokeOnErrorCallbacks = (errorState: BlinkIdProcessingError) => {\n for (const callback of this.#onErrorCallbacks) {\n try {\n callback(errorState);\n } catch (e) {\n console.error(\"Error in onError callback\", e);\n }\n }\n };\n\n addOnDocumentFilteredCallback(\n callback: (documentClassInfo: DocumentClassInfo) => void,\n ) {\n this.#onDocumentFilteredCallbacks.add(callback);\n return () => {\n this.#onDocumentFilteredCallbacks.delete(callback);\n };\n }\n\n #invokeOnDocumentFilteredCallbacks = (\n documentClassInfo: DocumentClassInfo,\n ) => {\n for (const callback of this.#onDocumentFilteredCallbacks) {\n try {\n callback(documentClassInfo);\n } catch (e) {\n console.error(\"Error in onDocumentFiltered callback\", e);\n }\n }\n };\n\n #invokeOnResultCallbacks = (result: BlinkIdScanningResult) => {\n for (const callback of this.#onResultCallbacks) {\n try {\n callback(result);\n } catch (e) {\n console.error(\"Error in onResult callback\", e);\n }\n }\n };\n\n #invokeOnFrameProcessCallbacks = (frameResult: ProcessResultWithBuffer) => {\n for (const callback of this.#onFrameProcessCallbacks) {\n try {\n callback(frameResult);\n } catch (e) {\n console.error(\"Error in onFrameProcess callback\", e);\n }\n }\n };\n\n #invokeOnUiStateChangedCallbacks = (uiState: BlinkIdUiState) => {\n for (const callback of this.#onUiStateChangedCallbacks) {\n try {\n callback(uiState);\n } catch (e) {\n console.error(\"Error in onUiStateChanged callback\", e);\n }\n }\n };\n\n #frameCaptureCallback = async (imageData: ImageData) => {\n if (this.#threadBusy) {\n return;\n }\n\n this.#threadBusy = true;\n\n // https://issues.chromium.org/issues/379999322\n const imageDataLike = {\n data: imageData.data,\n width: imageData.width,\n height: imageData.height,\n colorSpace: \"srgb\",\n } satisfies ImageData;\n\n /**\n * `scanningSession.process()` errors on calls after the document is captured and\n * the success state is placed on the queue to be shown after the current message's\n * minimum duration is reached.\n *\n * However, we still need to call `#handleUiStateChange()` to update the UI state, so\n * we stop the loop here by not setting `this.#threadBusy` to `true` and manually\n * calling `#handleUiStateChange()` with the `DOCUMENT_CAPTURED` state after the\n * minimum duration of the state is reached.\n */\n if (this.#successProcessResult) {\n window.setTimeout(() => {\n if (!this.#successProcessResult) {\n throw new Error(\"No success process result, should not happen\");\n }\n this.#handleUiStateChanges(this.#successProcessResult);\n }, blinkIdUiStateMap.DOCUMENT_CAPTURED.minDuration);\n return;\n }\n\n const processResult = await this.scanningSession.process(imageDataLike);\n\n this.#threadBusy = false;\n\n // document class filter\n if (this.#documentClassFilter !== undefined) {\n const documentClassInfo = this.#extractDocumentClassInfo(processResult);\n\n if (\n this.#isDocumentClassified(documentClassInfo) &&\n !this.#documentClassFilter(documentClassInfo)\n ) {\n this.#invokeOnDocumentFilteredCallbacks(documentClassInfo);\n }\n }\n\n // Handle UI state changes\n this.#handleUiStateChanges(processResult);\n this.#invokeOnFrameProcessCallbacks(processResult);\n\n return processResult.arrayBuffer;\n };\n\n /**\n * Sets the duration after which the scanning session will timeout. The timeout can occur in various scenarios\n * and may be restarted by different scanning events.\n *\n * @param duration The timeout duration in milliseconds. If null, timeout won't be triggered ever.\n * @param setHelpTooltipShowDelay If true, also sets the help tooltip show delay to half of the provided duration. If timeout duration is null, help tooltip show delay will be set to null. Defaults to true.\n * @throws {Error} Throws an error if duration is less than or equal to 0 when not null.\n */\n setTimeoutDuration(duration: number | null, setHelpTooltipShowDelay = true) {\n if (duration !== null && duration <= 0) {\n throw new Error(\"Timeout duration must be greater than 0\");\n }\n\n this.#timeoutDuration = duration;\n\n if (setHelpTooltipShowDelay) {\n this.setHelpTooltipShowDelay(duration !== null ? duration / 2 : null);\n }\n }\n\n /**\n * Sets the duration in milliseconds before the help tooltip is shown.\n * A value of null means the help tooltip will not be auto shown.\n * @param duration The duration in milliseconds before the help tooltip is shown. If null, tooltip won't be auto shown.\n * @throws {Error} Throws an error if duration is less than or equal to 0 when not null.\n */\n setHelpTooltipShowDelay(duration: number | null) {\n if (duration !== null && duration <= 0) {\n throw new Error(\"Help tooltip show delay must be greater than 0\");\n }\n\n this.#helpTooltipShowDelay = duration;\n }\n\n /**\n * Sets the duration in milliseconds before the help tooltip is hidden.\n * A value of null means the help tooltip will not be auto hidden.\n * @param duration The duration in milliseconds before the help tooltip is hidden. If null, tooltip won't be auto hidden.\n * @throws {Error} Throws an error if duration is less than or equal to 0 when not null.\n */\n setHelpTooltipHideDelay(duration: number | null) {\n if (duration !== null && duration <= 0) {\n throw new Error(\"Help tooltip display duration must be greater than 0\");\n }\n\n this.#helpTooltipHideDelay = duration;\n }\n\n #setTimeout = (uiState: BlinkIdUiState) => {\n if (this.#timeoutDuration === null) {\n console.debug(\"⏳🟢 timeout duration is null, not starting timeout\");\n return;\n }\n\n this.clearScanTimeout();\n console.debug(`⏳🟢 starting timeout for ${uiState.key}`);\n\n this.#timeoutId = window.setTimeout(() => {\n console.debug(\"⏳🟢 timeout triggered\");\n this.cameraManager.stopFrameCapture();\n\n this.#invokeOnErrorCallbacks(\"timeout\");\n\n // Reset the feedback stabilizer to clear the state\n // We handle this as a new scan attempt\n\n this.feedbackStabilizer.reset();\n this.uiState = this.feedbackStabilizer.currentState;\n }, this.#timeoutDuration);\n };\n\n #handleUiStateChanges = (processResult: ProcessResultWithBuffer) => {\n const nextUiStateKey = getUiStateKey(\n processResult,\n this.sessionSettings.scanningSettings,\n );\n\n if (nextUiStateKey === \"DOCUMENT_CAPTURED\") {\n // TODO: check if the buffer is still reachable\n this.#successProcessResult = processResult;\n }\n\n this.rawUiStateKey = nextUiStateKey;\n\n const newUiState = this.feedbackStabilizer.getNewUiState(nextUiStateKey);\n\n // Skip if the state is the same\n if (newUiState.key === this.uiState.key) {\n return;\n }\n\n this.uiState = newUiState;\n\n this.#invokeOnUiStateChangedCallbacks(newUiState);\n void this.#handleUiStateChange(newUiState);\n };\n\n // Side-effects are handled here\n #handleUiStateChange = async (uiState: BlinkIdUiState) => {\n if (this.#timeoutDuration !== null) {\n this.#setTimeout(uiState);\n }\n\n // Handle all first side captured states to display both the\n // animation to reposition the document and the success animation\n if (firstSideCapturedStates.includes(uiState.key)) {\n this.cameraManager.stopFrameCapture();\n // we need to wait for the compound duration\n // The DOCUMENT_CAPTURED state is the checkbox animation\n\n await sleep(\n uiState.minDuration + blinkIdUiStateMap.DOCUMENT_CAPTURED.minDuration,\n );\n await this.cameraManager.startFrameCapture();\n return;\n }\n\n // handle UNSUPPORTED_DOCUMENT\n if (uiState.key === \"UNSUPPORTED_DOCUMENT\") {\n this.cameraManager.stopFrameCapture();\n return;\n }\n\n // handle DOCUMENT_CAPTURED\n if (uiState.key === \"DOCUMENT_CAPTURED\") {\n this.cameraManager.stopFrameCapture();\n await sleep(uiState.minDuration); // allow animation to play out\n\n const result = await this.scanningSession.getResult();\n this.#invokeOnResultCallbacks(result);\n return;\n }\n };\n\n #extractDocumentClassInfo(processResult: ProcessResultWithBuffer) {\n return processResult.inputImageAnalysisResult.documentClassInfo;\n }\n\n #isDocumentClassified(documentClassInfo: DocumentClassInfo): boolean {\n return (\n documentClassInfo?.country !== undefined &&\n documentClassInfo?.type !== undefined\n );\n }\n\n /**\n * Clears any active timeout.\n */\n clearScanTimeout = () => {\n // if timeout id is not set, we don't want to clear it\n if (!this.#timeoutId) {\n return;\n }\n\n console.debug(\"⏳🔴 clearing timeout\");\n window.clearTimeout(this.#timeoutId);\n };\n\n /**\n * Resets the manager and clears all callbacks.\n *\n * Does not reset the camera manager or the BlinkID core instance.\n */\n reset() {\n this.clearScanTimeout();\n this.#threadBusy = false;\n this.#successProcessResult = undefined;\n this.#onUiStateChangedCallbacks.clear();\n this.#onResultCallbacks.clear();\n this.#onFrameProcessCallbacks.clear();\n this.#onErrorCallbacks.clear();\n this.#onDocumentFilteredCallbacks.clear();\n }\n}\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { JSX, Owner, createRoot } from \"solid-js\";\nimport { MountableElement, insert } from \"solid-js/web\";\n\n/**\n * A custom render function that allows you to specify the owner of the rendered component.\n * This is useful when you want to render a component into a different owner than the current one.\n *\n * Discussion: https://discord.com/channels/722131463138705510/1346100647824724008\n *\n * @param code The JSX code to render\n * @param element the element to render the code into\n * @param owner the SolidJS owner\n */\nexport const renderWithOwner = (\n code: () => JSX.Element,\n element: MountableElement,\n owner: Owner | null,\n) => {\n return createRoot((dispose) => {\n insert(element, code(), element.firstChild ? null : undefined);\n\n return () => {\n dispose();\n element.textContent = \"\";\n };\n }, owner);\n};\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nexport default {\n scan_the_front_side: \"Scan the front side of the document\",\n scan_data_page: \"Scan the data page of the document\",\n scan_top_page: \"Scan the top page\",\n scan_left_page: \"Scan the left page\",\n scan_right_page: \"Scan the right page\",\n flip_document: \"Flip the document\",\n wrong_top: \"Move to the top page\",\n wrong_left: \"Move to the left page\",\n wrong_right: \"Move to the right page\",\n flip_to_back_side: \"Flip to the back side\",\n move_top: \"Move to the page on top\",\n move_left: \"Move to the page on the left\",\n move_right: \"Move to the page on the right\",\n scan_the_back_side: \"Scan the back side of the document\",\n scan_the_barcode: \"Scan the barcode\",\n move_closer: \"Move closer\",\n move_farther: \"Move farther\",\n camera_angle_too_steep: \"Keep document parallel to phone\",\n face_photo_not_fully_visible: \"Keep face photo fully visible\",\n document_too_close_to_edge: \"Move the document from the edge\",\n blur_detected: \"Keep document and phone still\",\n glare_detected: \"Tilt or move document to remove reflection\",\n occluded: \"Keep the document fully visible\",\n too_dark: \"Move to brighter spot\",\n too_bright: \"Move to spot with less lighting\",\n scan_unsuccessful: \"Scan unsuccessful\",\n scan_unsuccessful_details: \"Unable to read the document. Please try again.\",\n document_not_recognized: \"Document not recognized\",\n document_not_recognized_details:\n \"Scan the front side of a supported document.\",\n document_filtered: \"Document not accepted\",\n document_filtered_details: \"Try scanning a different document.\",\n onboarding_modal_title: \"Keep all the details visible\",\n onboarding_modal_details:\n \"Make sure you keep the document well lit. All document fields should be visible on the camera screen.\",\n onboarding_modal_btn: \"Start scanning\",\n help_modal_title_1: \"Keep all the fields visible\",\n help_modal_details_1:\n \"Make sure you aren’t covering parts of the document with a finger, including the bottom lines. Also, watch out for hologram reflections that go over the document fields.\",\n help_modal_title_2: \"Watch out for harsh light\",\n help_modal_details_2:\n \"Avoid direct harsh light because it reflects from the document and can make parts of the document unreadable. If you can’t read data on the document, it won’t be visible to the camera either.\",\n help_modal_title_3: \"Keep still while scanning\",\n help_modal_details_3:\n \"Try to keep the phone and document still while scanning. Moving either can blur the image and make data on the document unreadable.\",\n help_modal_back_btn: \"Back\",\n help_modal_next_btn: \"Next\",\n help_modal_done_btn: \"Done\",\n help_aria_label: \"Help\",\n help_tooltip: \"Need help?\",\n alert_retry_btn: \"Retry\",\n alert_cancel_btn: \"Cancel\",\n} as const;\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport {\n ParentComponent,\n createContext,\n createEffect,\n useContext,\n} from \"solid-js\";\nimport { SetStoreFunction, createStore } from \"solid-js/store\";\n\nimport enLocaleStrings from \"./locales/en\";\n\nexport type LocaleRecord = typeof enLocaleStrings;\n\nexport type LocalizationStrings = {\n // This allows for autocomplete for defaults, but also overriding\n // https://twitter.com/mattpocockuk/status/1709281782325977101\n // eslint-disable-next-line @typescript-eslint/ban-types\n [K in keyof LocaleRecord]: LocaleRecord[K] | (string & {});\n};\n\nconst LocalizationContext = createContext<{\n t: LocalizationStrings;\n updateLocalization: SetStoreFunction<LocalizationStrings>;\n}>();\n\nexport const LocalizationProvider: ParentComponent<{\n userStrings?: Partial<LocalizationStrings>;\n}> = (props) => {\n const [localizationStore, updateLocalizationStore] =\n // avoid initing with original as proxying to the original object will\n // mutate the original object on store updates\n createStore<LocalizationStrings>({} as LocalizationStrings);\n\n const mergedStrings = () => ({\n ...enLocaleStrings,\n ...props.userStrings,\n });\n\n // update store as a side-effects of userStrings changing\n createEffect(() => {\n updateLocalizationStore(mergedStrings());\n });\n\n const contextValue = {\n t: localizationStore,\n updateLocalization: updateLocalizationStore,\n };\n\n return (\n <LocalizationContext.Provider value={contextValue}>\n {props.children}\n </LocalizationContext.Provider>\n );\n};\n\nexport function useLocalization() {\n const ctx = useContext(LocalizationContext);\n if (!ctx) {\n throw new Error(\"LocalizationContext.Provider not in scope.\");\n }\n return ctx;\n}\n","import { createMemo, createRoot, createSignal, on, onCleanup, untrack, $TRACK, mapArray, } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(list) {\n for (const o of list)\n o.dispose();\n}\n/**\n * Reactively maps an array by specified key with a callback function - underlying helper for the `<Key>` control flow.\n * @param list input list of values to map\n * @param keyFn key getter, items will be identified by it's value. changing the value is changing the item.\n * @param mapFn reactive function used to create mapped output item. Similar to `Array.prototype.map` but both item and index are signals, that could change over time.\n * @param options a fallback for when the input list is empty or missing\n * @returns mapped input array signal\n * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyed#keyArray\n */\nexport function keyArray(items, keyFn, mapFn, options = {}) {\n // SERVER NOOP\n if (isServer) {\n const itemsRef = items();\n let s = [];\n if (itemsRef && itemsRef.length) {\n for (let i = 0, len = itemsRef.length; i < len; i++)\n s.push(mapFn(() => itemsRef[i], () => i));\n }\n else if (options.fallback)\n s = [options.fallback()];\n return () => s;\n }\n const prev = new Map();\n onCleanup(() => dispose(prev.values()));\n return () => {\n const list = items() || [];\n list[$TRACK]; // top level store tracking\n return untrack(() => {\n // fast path for empty arrays\n if (!list.length) {\n dispose(prev.values());\n prev.clear();\n if (!options.fallback)\n return [];\n const fb = createRoot(dispose => {\n prev.set(FALLBACK, { dispose });\n return options.fallback();\n });\n return [fb];\n }\n const result = new Array(list.length);\n // fast path for new create or after fallback\n const fb = prev.get(FALLBACK);\n if (!prev.size || fb) {\n fb?.dispose();\n prev.delete(FALLBACK);\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n const key = keyFn(item, i);\n addNewItem(result, item, i, key);\n }\n return result;\n }\n const prevKeys = new Set(prev.keys());\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n const key = keyFn(item, i);\n prevKeys.delete(key);\n const lookup = prev.get(key);\n if (lookup) {\n result[i] = lookup.mapped;\n lookup.setIndex?.(i);\n lookup.setItem(() => item);\n }\n else\n addNewItem(result, item, i, key);\n }\n for (const key of prevKeys) {\n prev.get(key)?.dispose();\n prev.delete(key);\n }\n return result;\n });\n };\n function addNewItem(list, item, i, key) {\n createRoot(dispose => {\n const [getItem, setItem] = createSignal(item);\n const save = { setItem, dispose };\n if (mapFn.length > 1) {\n const [index, setIndex] = createSignal(i);\n save.setIndex = setIndex;\n save.mapped = mapFn(getItem, index);\n }\n else\n save.mapped = mapFn(getItem);\n prev.set(key, save);\n list[i] = save.mapped;\n });\n }\n}\n/**\n * creates a list of elements from the input `each` list\n *\n * it receives a map function as its child that receives a **list item signal** and **index signal** and returns a JSX-Element; if the list is empty, an optional fallback is returned:\n * ```tsx\n * <Key each={items()} by={item => item.id} fallback={<div>No items</div>}>\n * {(item, index) => <div data-index={index()}>{item()}</div>}\n * </Key>\n * ```\n *\n * prop `by` can also be an object key:\n * ```tsx\n * <Key each={items()} by=\"id\">\n * ```\n *\n * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyed#Key\n */\nexport function Key(props) {\n const { by } = props;\n return createMemo(keyArray(() => props.each, typeof by === \"function\" ? by : (v) => v[by], props.children, \"fallback\" in props ? { fallback: () => props.fallback } : undefined));\n}\n/**\n * creates a list of elements from the entries of provided object\n *\n * @param props\n * @param props.of object to iterate entries of (`Object.entries(object)`)\n * @param props.children\n * a map render function that receives an object key, **value signal** and **index signal** and returns a JSX-Element; if the list is empty, an optional fallback is returned:\n * ```tsx\n * <Entries of={object()} fallback={<div>No items</div>}>\n * {(key, value, index) => <div data-index={index()}>{key}: {value()}</div>}\n * </Entries>\n * ```\n *\n * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyed#Entries\n */\nexport function Entries(props) {\n // changes to this function may be applicable to similar functions - grep 4A29BECD-767A-4CC0-AEBB-3543D7B444C6\n const mapFn = props.children;\n return createMemo(mapArray(() => props.of && Object.keys(props.of), mapFn.length < 3\n ? key => mapFn(key, () => props.of[key])\n : (key, i) => mapFn(key, () => props.of[key], i), \"fallback\" in props ? { fallback: () => props.fallback } : undefined));\n}\n/**\n * Creates a list of elements from the entries of provided Map\n *\n * @param props\n * @param props.of map to iterate entries of (`myMap.entries()`)\n * @param props.children\n * a map render function that receives a Map key, **value signal** and **index signal** and returns a JSX-Element; if the list is empty, an optional fallback is returned:\n * ```tsx\n * <MapEntries of={map()} fallback={<div>No items</div>}>\n * {(key, value, index) => <div data-index={index()}>{key}: {value()}</div>}\n * </MapEntries>\n * ```\n *\n * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyed#mapentries\n */\nexport function MapEntries(props) {\n // changes to this function may be applicable to similar functions - grep 4A29BECD-767A-4CC0-AEBB-3543D7B444C6\n const mapFn = props.children;\n return createMemo(mapArray(() => props.of && Array.from(props.of.keys()), mapFn.length < 3\n ? key => mapFn(key, () => props.of.get(key))\n : (key, i) => mapFn(key, () => props.of.get(key), i), \"fallback\" in props ? { fallback: () => props.fallback } : undefined));\n}\n/**\n * Creates a list of elements from the values of provided Set\n *\n * @param props\n * @param props.of set to iterate values of (`mySet.values()`)\n * @param props.children\n * a map render function that receives a Set value and **index signal** and returns a JSX-Element; if the list is empty, an optional fallback is returned:\n * ```tsx\n * <SetValues of={set()} fallback={<div>No items</div>}>\n * {(value, index) => <div data-index={index()}>{value)}</div>}\n * </SetValues>\n * ```\n *\n * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/keyed#setvalues\n */\nexport function SetValues(props) {\n // changes to this function may be applicable to similar functions - grep 4A29BECD-767A-4CC0-AEBB-3543D7B444C6\n const mapFn = props.children;\n return createMemo(mapArray(() => props.of && Array.from(props.of.values()), mapFn.length < 2 ? value => mapFn(value) : mapFn, \"fallback\" in props ? { fallback: () => props.fallback } : undefined));\n}\nexport function Rerun(props) {\n const key = typeof props.on === \"function\" || Array.isArray(props.on) ? props.on : () => props.on;\n return createMemo(on(key, (a, b) => {\n const child = props.children;\n return typeof child === \"function\" && child.length > 0 ? child(a, b) : child;\n }));\n}\n","import { $PROXY, createMemo, mergeProps } from 'solid-js';\nimport { reverseChain, chain, access } from '@solid-primitives/utils';\n\n// src/propTraps.ts\nfunction trueFn() {\n return true;\n}\nvar propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY)\n return receiver;\n return _.get(property);\n },\n has(_, property) {\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction filterProps(props, predicate) {\n return new Proxy(\n {\n get(property) {\n return property in props && predicate(property) ? props[property] : void 0;\n },\n has(property) {\n return property in props && predicate(property);\n },\n keys() {\n return Object.keys(props).filter(predicate);\n }\n },\n propTraps\n );\n}\nfunction createPropsPredicate(props, predicate) {\n const cache = createMemo(\n () => {\n return {};\n },\n void 0,\n { equals: false }\n );\n return (key) => {\n const cacheRef = cache();\n const cached = cacheRef[key];\n if (cached !== void 0)\n return cached;\n const v = predicate(key);\n cacheRef[key] = v;\n return v;\n };\n}\nvar extractCSSregex = /((?:--)?(?:\\w+-?)+)\\s*:\\s*([^;]*)/g;\nfunction stringStyleToObject(style) {\n const object = {};\n let match;\n while (match = extractCSSregex.exec(style)) {\n object[match[1]] = match[2];\n }\n return object;\n}\nfunction combineStyle(a, b) {\n if (typeof a === \"string\") {\n if (typeof b === \"string\")\n return `${a};${b}`;\n a = stringStyleToObject(a);\n } else if (typeof b === \"string\") {\n b = stringStyleToObject(b);\n }\n return { ...a, ...b };\n}\nvar reduce = (sources, key, calc) => {\n let v = void 0;\n for (const props of sources) {\n const propV = access(props)[key];\n if (!v)\n v = propV;\n else if (propV)\n v = calc(v, propV);\n }\n return v;\n};\nfunction combineProps(...args) {\n const restArgs = Array.isArray(args[0]);\n const sources = restArgs ? args[0] : args;\n if (sources.length === 1)\n return sources[0];\n const chainFn = restArgs && args[1]?.reverseEventHandlers ? reverseChain : chain;\n const listeners = {};\n for (const props of sources) {\n const propsObj = access(props);\n for (const key in propsObj) {\n if (key[0] === \"o\" && key[1] === \"n\" && key[2]) {\n const v = propsObj[key];\n const name = key.toLowerCase();\n const callback = typeof v === \"function\" ? v : (\n // jsx event handlers can be tuples of [callback, arg]\n Array.isArray(v) ? v.length === 1 ? v[0] : v[0].bind(void 0, v[1]) : void 0\n );\n if (callback)\n listeners[name] ? listeners[name].push(callback) : listeners[name] = [callback];\n else\n delete listeners[name];\n }\n }\n }\n const merge = mergeProps(...sources);\n return new Proxy(\n {\n get(key) {\n if (typeof key !== \"string\")\n return Reflect.get(merge, key);\n if (key === \"style\")\n return reduce(sources, \"style\", combineStyle);\n if (key === \"ref\") {\n const callbacks = [];\n for (const props of sources) {\n const cb = access(props)[key];\n if (typeof cb === \"function\")\n callbacks.push(cb);\n }\n return chainFn(callbacks);\n }\n if (key[0] === \"o\" && key[1] === \"n\" && key[2]) {\n const callbacks = listeners[key.toLowerCase()];\n return callbacks ? chainFn(callbacks) : Reflect.get(merge, key);\n }\n if (key === \"class\" || key === \"className\")\n return reduce(sources, key, (a, b) => `${a} ${b}`);\n if (key === \"classList\")\n return reduce(sources, key, (a, b) => ({ ...a, ...b }));\n return Reflect.get(merge, key);\n },\n has(key) {\n return Reflect.has(merge, key);\n },\n keys() {\n return Object.keys(merge);\n }\n },\n propTraps\n );\n}\n\nexport { combineProps, combineStyle, createPropsPredicate, filterProps, propTraps, stringStyleToObject };\n","function addUniqueItem(array, item) {\n array.indexOf(item) === -1 && array.push(item);\n}\nfunction removeItem(arr, item) {\n const index = arr.indexOf(item);\n index > -1 && arr.splice(index, 1);\n}\n\nexport { addUniqueItem, removeItem };\n","const clamp = (min, max, v) => Math.min(Math.max(v, min), max);\n\nexport { clamp };\n","const defaults = {\n duration: 0.3,\n delay: 0,\n endDelay: 0,\n repeat: 0,\n easing: \"ease\",\n};\n\nexport { defaults };\n","const isNumber = (value) => typeof value === \"number\";\n\nexport { isNumber };\n","import { isNumber } from './is-number.es.js';\n\nconst isEasingList = (easing) => Array.isArray(easing) && !isNumber(easing[0]);\n\nexport { isEasingList };\n","const wrap = (min, max, v) => {\n const rangeSize = max - min;\n return ((((v - min) % rangeSize) + rangeSize) % rangeSize) + min;\n};\n\nexport { wrap };\n","import { isEasingList } from './is-easing-list.es.js';\nimport { wrap } from './wrap.es.js';\n\nfunction getEasingForSegment(easing, i) {\n return isEasingList(easing) ? easing[wrap(0, easing.length, i)] : easing;\n}\n\nexport { getEasingForSegment };\n","const mix = (min, max, progress) => -progress * min + progress * max + min;\n\nexport { mix };\n","const noop = () => { };\nconst noopReturn = (v) => v;\n\nexport { noop, noopReturn };\n","const progress = (min, max, value) => max - min === 0 ? 1 : (value - min) / (max - min);\n\nexport { progress };\n","import { mix } from './mix.es.js';\nimport { progress } from './progress.es.js';\n\nfunction fillOffset(offset, remaining) {\n const min = offset[offset.length - 1];\n for (let i = 1; i <= remaining; i++) {\n const offsetProgress = progress(0, remaining, i);\n offset.push(mix(min, 1, offsetProgress));\n }\n}\nfunction defaultOffset(length) {\n const offset = [0];\n fillOffset(offset, length - 1);\n return offset;\n}\n\nexport { defaultOffset, fillOffset };\n","import { mix } from './mix.es.js';\nimport { noopReturn } from './noop.es.js';\nimport { fillOffset, defaultOffset } from './offset.es.js';\nimport { progress } from './progress.es.js';\nimport { getEasingForSegment } from './easing.es.js';\nimport { clamp } from './clamp.es.js';\n\nfunction interpolate(output, input = defaultOffset(output.length), easing = noopReturn) {\n const length = output.length;\n /**\n * If the input length is lower than the output we\n * fill the input to match. This currently assumes the input\n * is an animation progress value so is a good candidate for\n * moving outside the function.\n */\n const remainder = length - input.length;\n remainder > 0 && fillOffset(input, remainder);\n return (t) => {\n let i = 0;\n for (; i < length - 2; i++) {\n if (t < input[i + 1])\n break;\n }\n let progressInRange = clamp(0, 1, progress(input[i], input[i + 1], t));\n const segmentEasing = getEasingForSegment(easing, i);\n progressInRange = segmentEasing(progressInRange);\n return mix(output[i], output[i + 1], progressInRange);\n };\n}\n\nexport { interpolate };\n","import { isNumber } from './is-number.es.js';\n\nconst isCubicBezier = (easing) => Array.isArray(easing) && isNumber(easing[0]);\n\nexport { isCubicBezier };\n","const isEasingGenerator = (easing) => typeof easing === \"object\" &&\n Boolean(easing.createAnimation);\n\nexport { isEasingGenerator };\n","const isFunction = (value) => typeof value === \"function\";\n\nexport { isFunction };\n","const isString = (value) => typeof value === \"string\";\n\nexport { isString };\n","const time = {\n ms: (seconds) => seconds * 1000,\n s: (milliseconds) => milliseconds / 1000,\n};\n\nexport { time };\n","import { noopReturn } from '@motionone/utils';\n\n/*\n Bezier function generator\n\n This has been modified from Gaëtan Renaudeau's BezierEasing\n https://github.com/gre/bezier-easing/blob/master/src/index.js\n https://github.com/gre/bezier-easing/blob/master/LICENSE\n \n I've removed the newtonRaphsonIterate algo because in benchmarking it\n wasn't noticiably faster than binarySubdivision, indeed removing it\n usually improved times, depending on the curve.\n\n I also removed the lookup table, as for the added bundle size and loop we're\n only cutting ~4 or so subdivision iterations. I bumped the max iterations up\n to 12 to compensate and this still tended to be faster for no perceivable\n loss in accuracy.\n\n Usage\n const easeOut = cubicBezier(.17,.67,.83,.67);\n const x = easeOut(0.5); // returns 0.627...\n*/\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) * t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noopReturn;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n","import { clamp } from '@motionone/utils';\n\nconst steps = (steps, direction = \"end\") => (progress) => {\n progress =\n direction === \"end\"\n ? Math.min(progress, 0.999)\n : Math.max(progress, 0.001);\n const expanded = progress * steps;\n const rounded = direction === \"end\" ? Math.floor(expanded) : Math.ceil(expanded);\n return clamp(0, 1, rounded / steps);\n};\n\nexport { steps };\n","import { cubicBezier, steps } from '@motionone/easing';\nimport { isFunction, isCubicBezier, noopReturn } from '@motionone/utils';\n\nconst namedEasings = {\n ease: cubicBezier(0.25, 0.1, 0.25, 1.0),\n \"ease-in\": cubicBezier(0.42, 0.0, 1.0, 1.0),\n \"ease-in-out\": cubicBezier(0.42, 0.0, 0.58, 1.0),\n \"ease-out\": cubicBezier(0.0, 0.0, 0.58, 1.0),\n};\nconst functionArgsRegex = /\\((.*?)\\)/;\nfunction getEasingFunction(definition) {\n // If already an easing function, return\n if (isFunction(definition))\n return definition;\n // If an easing curve definition, return bezier function\n if (isCubicBezier(definition))\n return cubicBezier(...definition);\n // If we have a predefined easing function, return\n const namedEasing = namedEasings[definition];\n if (namedEasing)\n return namedEasing;\n // If this is a steps function, attempt to create easing curve\n if (definition.startsWith(\"steps\")) {\n const args = functionArgsRegex.exec(definition);\n if (args) {\n const argsArray = args[1].split(\",\");\n return steps(parseFloat(argsArray[0]), argsArray[1].trim());\n }\n }\n return noopReturn;\n}\n\nexport { getEasingFunction };\n","import { noopReturn, defaults, isEasingGenerator, isEasingList, interpolate } from '@motionone/utils';\nimport { getEasingFunction } from './utils/easing.es.js';\n\nclass Animation {\n constructor(output, keyframes = [0, 1], { easing, duration: initialDuration = defaults.duration, delay = defaults.delay, endDelay = defaults.endDelay, repeat = defaults.repeat, offset, direction = \"normal\", autoplay = true, } = {}) {\n this.startTime = null;\n this.rate = 1;\n this.t = 0;\n this.cancelTimestamp = null;\n this.easing = noopReturn;\n this.duration = 0;\n this.totalDuration = 0;\n this.repeat = 0;\n this.playState = \"idle\";\n this.finished = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n easing = easing || defaults.easing;\n if (isEasingGenerator(easing)) {\n const custom = easing.createAnimation(keyframes);\n easing = custom.easing;\n keyframes = custom.keyframes || keyframes;\n initialDuration = custom.duration || initialDuration;\n }\n this.repeat = repeat;\n this.easing = isEasingList(easing) ? noopReturn : getEasingFunction(easing);\n this.updateDuration(initialDuration);\n const interpolate$1 = interpolate(keyframes, offset, isEasingList(easing) ? easing.map(getEasingFunction) : noopReturn);\n this.tick = (timestamp) => {\n var _a;\n // TODO: Temporary fix for OptionsResolver typing\n delay = delay;\n let t = 0;\n if (this.pauseTime !== undefined) {\n t = this.pauseTime;\n }\n else {\n t = (timestamp - this.startTime) * this.rate;\n }\n this.t = t;\n // Convert to seconds\n t /= 1000;\n // Rebase on delay\n t = Math.max(t - delay, 0);\n /**\n * If this animation has finished, set the current time\n * to the total duration.\n */\n if (this.playState === \"finished\" && this.pauseTime === undefined) {\n t = this.totalDuration;\n }\n /**\n * Get the current progress (0-1) of the animation. If t is >\n * than duration we'll get values like 2.5 (midway through the\n * third iteration)\n */\n const progress = t / this.duration;\n // TODO progress += iterationStart\n /**\n * Get the current iteration (0 indexed). For instance the floor of\n * 2.5 is 2.\n */\n let currentIteration = Math.floor(progress);\n /**\n * Get the current progress of the iteration by taking the remainder\n * so 2.5 is 0.5 through iteration 2\n */\n let iterationProgress = progress % 1.0;\n if (!iterationProgress && progress >= 1) {\n iterationProgress = 1;\n }\n /**\n * If iteration progress is 1 we count that as the end\n * of the previous iteration.\n */\n iterationProgress === 1 && currentIteration--;\n /**\n * Reverse progress if we're not running in \"normal\" direction\n */\n const iterationIsOdd = currentIteration % 2;\n if (direction === \"reverse\" ||\n (direction === \"alternate\" && iterationIsOdd) ||\n (direction === \"alternate-reverse\" && !iterationIsOdd)) {\n iterationProgress = 1 - iterationProgress;\n }\n const p = t >= this.totalDuration ? 1 : Math.min(iterationProgress, 1);\n const latest = interpolate$1(this.easing(p));\n output(latest);\n const isAnimationFinished = this.pauseTime === undefined &&\n (this.playState === \"finished\" || t >= this.totalDuration + endDelay);\n if (isAnimationFinished) {\n this.playState = \"finished\";\n (_a = this.resolve) === null || _a === void 0 ? void 0 : _a.call(this, latest);\n }\n else if (this.playState !== \"idle\") {\n this.frameRequestId = requestAnimationFrame(this.tick);\n }\n };\n if (autoplay)\n this.play();\n }\n play() {\n const now = performance.now();\n this.playState = \"running\";\n if (this.pauseTime !== undefined) {\n this.startTime = now - this.pauseTime;\n }\n else if (!this.startTime) {\n this.startTime = now;\n }\n this.cancelTimestamp = this.startTime;\n this.pauseTime = undefined;\n this.frameRequestId = requestAnimationFrame(this.tick);\n }\n pause() {\n this.playState = \"paused\";\n this.pauseTime = this.t;\n }\n finish() {\n this.playState = \"finished\";\n this.tick(0);\n }\n stop() {\n var _a;\n this.playState = \"idle\";\n if (this.frameRequestId !== undefined) {\n cancelAnimationFrame(this.frameRequestId);\n }\n (_a = this.reject) === null || _a === void 0 ? void 0 : _a.call(this, false);\n }\n cancel() {\n this.stop();\n this.tick(this.cancelTimestamp);\n }\n reverse() {\n this.rate *= -1;\n }\n commitStyles() { }\n updateDuration(duration) {\n this.duration = duration;\n this.totalDuration = duration * (this.repeat + 1);\n }\n get currentTime() {\n return this.t;\n }\n set currentTime(t) {\n if (this.pauseTime !== undefined || this.rate === 0) {\n this.pauseTime = t;\n }\n else {\n this.startTime = performance.now() - t / this.rate;\n }\n }\n get playbackRate() {\n return this.rate;\n }\n set playbackRate(rate) {\n this.rate = rate;\n }\n}\n\nexport { Animation };\n","var warning = function () { };\r\nvar invariant = function () { };\r\nif (process.env.NODE_ENV !== 'production') {\r\n warning = function (check, message) {\r\n if (!check && typeof console !== 'undefined') {\r\n console.warn(message);\r\n }\r\n };\r\n invariant = function (check, message) {\r\n if (!check) {\r\n throw new Error(message);\r\n }\r\n };\r\n}\n\nexport { invariant, warning };\n","/**\n * The MotionValue tracks the state of a single animatable\n * value. Currently, updatedAt and current are unused. The\n * long term idea is to use this to minimise the number\n * of DOM reads, and to abstract the DOM interactions here.\n */\nclass MotionValue {\n setAnimation(animation) {\n this.animation = animation;\n animation === null || animation === void 0 ? void 0 : animation.finished.then(() => this.clearAnimation()).catch(() => { });\n }\n clearAnimation() {\n this.animation = this.generator = undefined;\n }\n}\n\nexport { MotionValue };\n","import { MotionValue } from '@motionone/types';\n\nconst data = new WeakMap();\nfunction getAnimationData(element) {\n if (!data.has(element)) {\n data.set(element, {\n transforms: [],\n values: new Map(),\n });\n }\n return data.get(element);\n}\nfunction getMotionValue(motionValues, name) {\n if (!motionValues.has(name)) {\n motionValues.set(name, new MotionValue());\n }\n return motionValues.get(name);\n}\n\nexport { getAnimationData, getMotionValue };\n","import { noopReturn, addUniqueItem } from '@motionone/utils';\nimport { getAnimationData } from '../data.es.js';\n\n/**\n * A list of all transformable axes. We'll use this list to generated a version\n * of each axes for each transform.\n */\nconst axes = [\"\", \"X\", \"Y\", \"Z\"];\n/**\n * An ordered array of each transformable value. By default, transform values\n * will be sorted to this order.\n */\nconst order = [\"translate\", \"scale\", \"rotate\", \"skew\"];\nconst transformAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n};\nconst rotation = {\n syntax: \"<angle>\",\n initialValue: \"0deg\",\n toDefaultUnit: (v) => v + \"deg\",\n};\nconst baseTransformProperties = {\n translate: {\n syntax: \"<length-percentage>\",\n initialValue: \"0px\",\n toDefaultUnit: (v) => v + \"px\",\n },\n rotate: rotation,\n scale: {\n syntax: \"<number>\",\n initialValue: 1,\n toDefaultUnit: noopReturn,\n },\n skew: rotation,\n};\nconst transformDefinitions = new Map();\nconst asTransformCssVar = (name) => `--motion-${name}`;\n/**\n * Generate a list of every possible transform key\n */\nconst transforms = [\"x\", \"y\", \"z\"];\norder.forEach((name) => {\n axes.forEach((axis) => {\n transforms.push(name + axis);\n transformDefinitions.set(asTransformCssVar(name + axis), baseTransformProperties[name]);\n });\n});\n/**\n * A function to use with Array.sort to sort transform keys by their default order.\n */\nconst compareTransformOrder = (a, b) => transforms.indexOf(a) - transforms.indexOf(b);\n/**\n * Provide a quick way to check if a string is the name of a transform\n */\nconst transformLookup = new Set(transforms);\nconst isTransform = (name) => transformLookup.has(name);\nconst addTransformToElement = (element, name) => {\n // Map x to translateX etc\n if (transformAlias[name])\n name = transformAlias[name];\n const { transforms } = getAnimationData(element);\n addUniqueItem(transforms, name);\n /**\n * TODO: An optimisation here could be to cache the transform in element data\n * and only update if this has changed.\n */\n element.style.transform = buildTransformTemplate(transforms);\n};\nconst buildTransformTemplate = (transforms) => transforms\n .sort(compareTransformOrder)\n .reduce(transformListToString, \"\")\n .trim();\nconst transformListToString = (template, name) => `${template} ${name}(var(${asTransformCssVar(name)}))`;\n\nexport { addTransformToElement, asTransformCssVar, axes, buildTransformTemplate, compareTransformOrder, isTransform, transformAlias, transformDefinitions };\n","import { transformDefinitions } from './transforms.es.js';\n\nconst isCssVar = (name) => name.startsWith(\"--\");\nconst registeredProperties = new Set();\nfunction registerCssVariable(name) {\n if (registeredProperties.has(name))\n return;\n registeredProperties.add(name);\n try {\n const { syntax, initialValue } = transformDefinitions.has(name)\n ? transformDefinitions.get(name)\n : {};\n CSS.registerProperty({\n name,\n inherits: false,\n syntax,\n initialValue,\n });\n }\n catch (e) { }\n}\n\nexport { isCssVar, registerCssVariable, registeredProperties };\n","const testAnimation = (keyframes, options) => document.createElement(\"div\").animate(keyframes, options);\nconst featureTests = {\n cssRegisterProperty: () => typeof CSS !== \"undefined\" &&\n Object.hasOwnProperty.call(CSS, \"registerProperty\"),\n waapi: () => Object.hasOwnProperty.call(Element.prototype, \"animate\"),\n partialKeyframes: () => {\n try {\n testAnimation({ opacity: [1] });\n }\n catch (e) {\n return false;\n }\n return true;\n },\n finished: () => Boolean(testAnimation({ opacity: [0, 1] }, { duration: 0.001 }).finished),\n linearEasing: () => {\n try {\n testAnimation({ opacity: 0 }, { easing: \"linear(0, 1)\" });\n }\n catch (e) {\n return false;\n }\n return true;\n },\n};\nconst results = {};\nconst supports = {};\nfor (const key in featureTests) {\n supports[key] = () => {\n if (results[key] === undefined)\n results[key] =\n featureTests[key]();\n return results[key];\n };\n}\n\nexport { supports };\n","import { isFunction, defaults, isCubicBezier, progress } from '@motionone/utils';\nimport { supports } from './feature-detection.es.js';\n\n// Create a linear easing point for every x second\nconst resolution = 0.015;\nconst generateLinearEasingPoints = (easing, duration) => {\n let points = \"\";\n const numPoints = Math.round(duration / resolution);\n for (let i = 0; i < numPoints; i++) {\n points += easing(progress(0, numPoints - 1, i)) + \", \";\n }\n return points.substring(0, points.length - 2);\n};\nconst convertEasing = (easing, duration) => {\n if (isFunction(easing)) {\n return supports.linearEasing()\n ? `linear(${generateLinearEasingPoints(easing, duration)})`\n : defaults.easing;\n }\n else {\n return isCubicBezier(easing) ? cubicBezierAsString(easing) : easing;\n }\n};\nconst cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\n\nexport { convertEasing, cubicBezierAsString, generateLinearEasingPoints };\n","function hydrateKeyframes(keyframes, readInitialValue) {\n for (let i = 0; i < keyframes.length; i++) {\n if (keyframes[i] === null) {\n keyframes[i] = i ? keyframes[i - 1] : readInitialValue();\n }\n }\n return keyframes;\n}\nconst keyframesList = (keyframes) => Array.isArray(keyframes) ? keyframes : [keyframes];\n\nexport { hydrateKeyframes, keyframesList };\n","import { isTransform, asTransformCssVar, transformAlias } from './transforms.es.js';\n\nfunction getStyleName(key) {\n if (transformAlias[key])\n key = transformAlias[key];\n return isTransform(key) ? asTransformCssVar(key) : key;\n}\n\nexport { getStyleName };\n","import { isCssVar } from './utils/css-var.es.js';\nimport { getStyleName } from './utils/get-style-name.es.js';\nimport { transformDefinitions } from './utils/transforms.es.js';\n\nconst style = {\n get: (element, name) => {\n name = getStyleName(name);\n let value = isCssVar(name)\n ? element.style.getPropertyValue(name)\n : getComputedStyle(element)[name];\n // TODO Decide if value can be 0\n if (!value && value !== 0) {\n const definition = transformDefinitions.get(name);\n if (definition)\n value = definition.initialValue;\n }\n return value;\n },\n set: (element, name, value) => {\n name = getStyleName(name);\n if (isCssVar(name)) {\n element.style.setProperty(name, value);\n }\n else {\n element.style[name] = value;\n }\n },\n};\n\nexport { style };\n","function stopAnimation(animation, needsCommit = true) {\n if (!animation || animation.playState === \"finished\")\n return;\n // Suppress error thrown by WAAPI\n try {\n if (animation.stop) {\n animation.stop();\n }\n else {\n needsCommit && animation.commitStyles();\n animation.cancel();\n }\n }\n catch (e) { }\n}\n\nexport { stopAnimation };\n","import { noopReturn, isString } from '@motionone/utils';\n\nfunction getUnitConverter(keyframes, definition) {\n var _a;\n let toUnit = (definition === null || definition === void 0 ? void 0 : definition.toDefaultUnit) || noopReturn;\n const finalKeyframe = keyframes[keyframes.length - 1];\n if (isString(finalKeyframe)) {\n const unit = ((_a = finalKeyframe.match(/(-?[\\d.]+)([a-z%]*)/)) === null || _a === void 0 ? void 0 : _a[2]) || \"\";\n if (unit)\n toUnit = (value) => value + unit;\n }\n return toUnit;\n}\n\nexport { getUnitConverter };\n","import { getAnimationData, getMotionValue } from './data.es.js';\nimport { isCssVar, registerCssVariable } from './utils/css-var.es.js';\nimport { defaults, isEasingGenerator, isFunction, isEasingList, isNumber, time, noop } from '@motionone/utils';\nimport { isTransform, addTransformToElement, transformDefinitions } from './utils/transforms.es.js';\nimport { convertEasing } from './utils/easing.es.js';\nimport { supports } from './utils/feature-detection.es.js';\nimport { hydrateKeyframes, keyframesList } from './utils/keyframes.es.js';\nimport { style } from './style.es.js';\nimport { getStyleName } from './utils/get-style-name.es.js';\nimport { stopAnimation } from './utils/stop-animation.es.js';\nimport { getUnitConverter } from './utils/get-unit.es.js';\n\nfunction getDevToolsRecord() {\n return window.__MOTION_DEV_TOOLS_RECORD;\n}\nfunction animateStyle(element, key, keyframesDefinition, options = {}, AnimationPolyfill) {\n const record = getDevToolsRecord();\n const isRecording = options.record !== false && record;\n let animation;\n let { duration = defaults.duration, delay = defaults.delay, endDelay = defaults.endDelay, repeat = defaults.repeat, easing = defaults.easing, persist = false, direction, offset, allowWebkitAcceleration = false, autoplay = true, } = options;\n const data = getAnimationData(element);\n const valueIsTransform = isTransform(key);\n let canAnimateNatively = supports.waapi();\n /**\n * If this is an individual transform, we need to map its\n * key to a CSS variable and update the element's transform style\n */\n valueIsTransform && addTransformToElement(element, key);\n const name = getStyleName(key);\n const motionValue = getMotionValue(data.values, name);\n /**\n * Get definition of value, this will be used to convert numerical\n * keyframes into the default value type.\n */\n const definition = transformDefinitions.get(name);\n /**\n * Stop the current animation, if any. Because this will trigger\n * commitStyles (DOM writes) and we might later trigger DOM reads,\n * this is fired now and we return a factory function to create\n * the actual animation that can get called in batch,\n */\n stopAnimation(motionValue.animation, !(isEasingGenerator(easing) && motionValue.generator) &&\n options.record !== false);\n /**\n * Batchable factory function containing all DOM reads.\n */\n return () => {\n const readInitialValue = () => { var _a, _b; return (_b = (_a = style.get(element, name)) !== null && _a !== void 0 ? _a : definition === null || definition === void 0 ? void 0 : definition.initialValue) !== null && _b !== void 0 ? _b : 0; };\n /**\n * Replace null values with the previous keyframe value, or read\n * it from the DOM if it's the first keyframe.\n */\n let keyframes = hydrateKeyframes(keyframesList(keyframesDefinition), readInitialValue);\n /**\n * Detect unit type of keyframes.\n */\n const toUnit = getUnitConverter(keyframes, definition);\n if (isEasingGenerator(easing)) {\n const custom = easing.createAnimation(keyframes, key !== \"opacity\", readInitialValue, name, motionValue);\n easing = custom.easing;\n keyframes = custom.keyframes || keyframes;\n duration = custom.duration || duration;\n }\n /**\n * If this is a CSS variable we need to register it with the browser\n * before it can be animated natively. We also set it with setProperty\n * rather than directly onto the element.style object.\n */\n if (isCssVar(name)) {\n if (supports.cssRegisterProperty()) {\n registerCssVariable(name);\n }\n else {\n canAnimateNatively = false;\n }\n }\n /**\n * If we've been passed a custom easing function, and this browser\n * does **not** support linear() easing, and the value is a transform\n * (and thus a pure number) we can still support the custom easing\n * by falling back to the animation polyfill.\n */\n if (valueIsTransform &&\n !supports.linearEasing() &&\n (isFunction(easing) || (isEasingList(easing) && easing.some(isFunction)))) {\n canAnimateNatively = false;\n }\n /**\n * If we can animate this value with WAAPI, do so.\n */\n if (canAnimateNatively) {\n /**\n * Convert numbers to default value types. Currently this only supports\n * transforms but it could also support other value types.\n */\n if (definition) {\n keyframes = keyframes.map((value) => isNumber(value) ? definition.toDefaultUnit(value) : value);\n }\n /**\n * If this browser doesn't support partial/implicit keyframes we need to\n * explicitly provide one.\n */\n if (keyframes.length === 1 &&\n (!supports.partialKeyframes() || isRecording)) {\n keyframes.unshift(readInitialValue());\n }\n const animationOptions = {\n delay: time.ms(delay),\n duration: time.ms(duration),\n endDelay: time.ms(endDelay),\n easing: !isEasingList(easing)\n ? convertEasing(easing, duration)\n : undefined,\n direction,\n iterations: repeat + 1,\n fill: \"both\",\n };\n animation = element.animate({\n [name]: keyframes,\n offset,\n easing: isEasingList(easing)\n ? easing.map((thisEasing) => convertEasing(thisEasing, duration))\n : undefined,\n }, animationOptions);\n /**\n * Polyfill finished Promise in browsers that don't support it\n */\n if (!animation.finished) {\n animation.finished = new Promise((resolve, reject) => {\n animation.onfinish = resolve;\n animation.oncancel = reject;\n });\n }\n const target = keyframes[keyframes.length - 1];\n animation.finished\n .then(() => {\n if (persist)\n return;\n // Apply styles to target\n style.set(element, name, target);\n // Ensure fill modes don't persist\n animation.cancel();\n })\n .catch(noop);\n /**\n * This forces Webkit to run animations on the main thread by exploiting\n * this condition:\n * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp?rev=281238#L1099\n *\n * This fixes Webkit's timing bugs, like accelerated animations falling\n * out of sync with main thread animations and massive delays in starting\n * accelerated animations in WKWebView.\n */\n if (!allowWebkitAcceleration)\n animation.playbackRate = 1.000001;\n /**\n * If we can't animate the value natively then we can fallback to the numbers-only\n * polyfill for transforms.\n */\n }\n else if (AnimationPolyfill && valueIsTransform) {\n /**\n * If any keyframe is a string (because we measured it from the DOM), we need to convert\n * it into a number before passing to the Animation polyfill.\n */\n keyframes = keyframes.map((value) => typeof value === \"string\" ? parseFloat(value) : value);\n /**\n * If we only have a single keyframe, we need to create an initial keyframe by reading\n * the current value from the DOM.\n */\n if (keyframes.length === 1) {\n keyframes.unshift(parseFloat(readInitialValue()));\n }\n animation = new AnimationPolyfill((latest) => {\n style.set(element, name, toUnit ? toUnit(latest) : latest);\n }, keyframes, Object.assign(Object.assign({}, options), { duration,\n easing }));\n }\n else {\n const target = keyframes[keyframes.length - 1];\n style.set(element, name, definition && isNumber(target)\n ? definition.toDefaultUnit(target)\n : target);\n }\n if (isRecording) {\n record(element, key, keyframes, {\n duration,\n delay: delay,\n easing,\n repeat,\n offset,\n }, \"motion-one\");\n }\n motionValue.setAnimation(animation);\n if (animation && !autoplay)\n animation.pause();\n return animation;\n };\n}\n\nexport { animateStyle };\n","const getOptions = (options, key) => \n/**\n * TODO: Make test for this\n * Always return a new object otherwise delay is overwritten by results of stagger\n * and this results in no stagger\n */\noptions[key] ? Object.assign(Object.assign({}, options), options[key]) : Object.assign({}, options);\n\nexport { getOptions };\n","function resolveElements(elements, selectorCache) {\n var _a;\n if (typeof elements === \"string\") {\n if (selectorCache) {\n (_a = selectorCache[elements]) !== null && _a !== void 0 ? _a : (selectorCache[elements] = document.querySelectorAll(elements));\n elements = selectorCache[elements];\n }\n else {\n elements = document.querySelectorAll(elements);\n }\n }\n else if (elements instanceof Element) {\n elements = [elements];\n }\n /**\n * Return an empty array\n */\n return Array.from(elements || []);\n}\n\nexport { resolveElements };\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { resolveElements } from '../utils/resolve-elements.es.js';\nimport { isFunction } from '@motionone/utils';\n\nconst thresholds = {\n any: 0,\n all: 1,\n};\nfunction inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = \"any\" } = {}) {\n /**\n * If this browser doesn't support IntersectionObserver, return a dummy stop function.\n * Default triggering of onStart is tricky - it could be used for starting/stopping\n * videos, lazy loading content etc. We could provide an option to enable a fallback, or\n * provide a fallback callback option.\n */\n if (typeof IntersectionObserver === \"undefined\") {\n return () => { };\n }\n const elements = resolveElements(elementOrSelector);\n const activeIntersections = new WeakMap();\n const onIntersectionChange = (entries) => {\n entries.forEach((entry) => {\n const onEnd = activeIntersections.get(entry.target);\n /**\n * If there's no change to the intersection, we don't need to\n * do anything here.\n */\n if (entry.isIntersecting === Boolean(onEnd))\n return;\n if (entry.isIntersecting) {\n const newOnEnd = onStart(entry);\n if (isFunction(newOnEnd)) {\n activeIntersections.set(entry.target, newOnEnd);\n }\n else {\n observer.unobserve(entry.target);\n }\n }\n else if (onEnd) {\n onEnd(entry);\n activeIntersections.delete(entry.target);\n }\n });\n };\n const observer = new IntersectionObserver(onIntersectionChange, {\n root,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholds[amount],\n });\n elements.forEach((element) => observer.observe(element));\n return () => observer.disconnect();\n}\n\nexport { inView };\n","function hasChanged(a, b) {\n if (typeof a !== typeof b)\n return true;\n if (Array.isArray(a) && Array.isArray(b))\n return !shallowCompare(a, b);\n return a !== b;\n}\nfunction shallowCompare(next, prev) {\n const prevLength = prev.length;\n if (prevLength !== next.length)\n return false;\n for (let i = 0; i < prevLength; i++) {\n if (prev[i] !== next[i])\n return false;\n }\n return true;\n}\n\nexport { hasChanged, shallowCompare };\n","function isVariant(definition) {\n return typeof definition === \"object\";\n}\n\nexport { isVariant };\n","import { isVariant } from './is-variant.es.js';\n\nfunction resolveVariant(definition, variants) {\n if (isVariant(definition)) {\n return definition;\n }\n else if (definition && variants) {\n return variants[definition];\n }\n}\n\nexport { resolveVariant };\n","import { addUniqueItem, removeItem } from '@motionone/utils';\n\nlet scheduled = undefined;\nfunction processScheduledAnimations() {\n if (!scheduled)\n return;\n const generators = scheduled.sort(compareByDepth).map(fireAnimateUpdates);\n generators.forEach(fireNext);\n generators.forEach(fireNext);\n scheduled = undefined;\n}\nfunction scheduleAnimation(state) {\n if (!scheduled) {\n scheduled = [state];\n requestAnimationFrame(processScheduledAnimations);\n }\n else {\n addUniqueItem(scheduled, state);\n }\n}\nfunction unscheduleAnimation(state) {\n scheduled && removeItem(scheduled, state);\n}\nconst compareByDepth = (a, b) => a.getDepth() - b.getDepth();\nconst fireAnimateUpdates = (state) => state.animateUpdates();\nconst fireNext = (iterator) => iterator.next();\n\nexport { scheduleAnimation, unscheduleAnimation };\n","const motionEvent = (name, target) => new CustomEvent(name, { detail: { target } });\nfunction dispatchPointerEvent(element, name, event) {\n element.dispatchEvent(new CustomEvent(name, { detail: { originalEvent: event } }));\n}\nfunction dispatchViewEvent(element, name, entry) {\n element.dispatchEvent(new CustomEvent(name, { detail: { originalEntry: entry } }));\n}\n\nexport { dispatchPointerEvent, dispatchViewEvent, motionEvent };\n","import { __rest } from 'tslib';\nimport { dispatchViewEvent } from '../utils/events.es.js';\nimport { inView as inView$1 } from '../../gestures/in-view.es.js';\n\nconst inView = {\n isActive: (options) => Boolean(options.inView),\n subscribe: (element, { enable, disable }, { inViewOptions = {} }) => {\n const { once } = inViewOptions, viewOptions = __rest(inViewOptions, [\"once\"]);\n return inView$1(element, (enterEntry) => {\n enable();\n dispatchViewEvent(element, \"viewenter\", enterEntry);\n if (!once) {\n return (leaveEntry) => {\n disable();\n dispatchViewEvent(element, \"viewleave\", leaveEntry);\n };\n }\n }, viewOptions);\n },\n};\n\nexport { inView };\n","import { dispatchPointerEvent } from '../utils/events.es.js';\n\nconst mouseEvent = (element, name, action) => (event) => {\n if (event.pointerType && event.pointerType !== \"mouse\")\n return;\n action();\n dispatchPointerEvent(element, name, event);\n};\nconst hover = {\n isActive: (options) => Boolean(options.hover),\n subscribe: (element, { enable, disable }) => {\n const onEnter = mouseEvent(element, \"hoverstart\", enable);\n const onLeave = mouseEvent(element, \"hoverend\", disable);\n element.addEventListener(\"pointerenter\", onEnter);\n element.addEventListener(\"pointerleave\", onLeave);\n return () => {\n element.removeEventListener(\"pointerenter\", onEnter);\n element.removeEventListener(\"pointerleave\", onLeave);\n };\n },\n};\n\nexport { hover };\n","import { dispatchPointerEvent } from '../utils/events.es.js';\n\nconst press = {\n isActive: (options) => Boolean(options.press),\n subscribe: (element, { enable, disable }) => {\n const onPointerUp = (event) => {\n disable();\n dispatchPointerEvent(element, \"pressend\", event);\n window.removeEventListener(\"pointerup\", onPointerUp);\n };\n const onPointerDown = (event) => {\n enable();\n dispatchPointerEvent(element, \"pressstart\", event);\n window.addEventListener(\"pointerup\", onPointerUp);\n };\n element.addEventListener(\"pointerdown\", onPointerDown);\n return () => {\n element.removeEventListener(\"pointerdown\", onPointerDown);\n window.removeEventListener(\"pointerup\", onPointerUp);\n };\n },\n};\n\nexport { press };\n","import { __rest } from 'tslib';\nimport { invariant } from 'hey-listen';\nimport { noop } from '@motionone/utils';\nimport { animateStyle } from '../animate/animate-style.es.js';\nimport { style } from '../animate/style.es.js';\nimport { getOptions } from '../animate/utils/options.es.js';\nimport { hasChanged } from './utils/has-changed.es.js';\nimport { resolveVariant } from './utils/resolve-variant.es.js';\nimport { scheduleAnimation, unscheduleAnimation } from './utils/schedule.es.js';\nimport { inView } from './gestures/in-view.es.js';\nimport { hover } from './gestures/hover.es.js';\nimport { press } from './gestures/press.es.js';\nimport { motionEvent } from './utils/events.es.js';\nimport { Animation } from '@motionone/animation';\n\nconst gestures = { inView, hover, press };\n/**\n * A list of state types, in priority order. If a value is defined in\n * a righter-most type, it will override any definition in a lefter-most.\n */\nconst stateTypes = [\"initial\", \"animate\", ...Object.keys(gestures), \"exit\"];\n/**\n * A global store of all generated motion states. This can be used to lookup\n * a motion state for a given Element.\n */\nconst mountedStates = new WeakMap();\nfunction createMotionState(options = {}, parent) {\n /**\n * The element represented by the motion state. This is an empty reference\n * when we create the state to support SSR and allow for later mounting\n * in view libraries.\n *\n * @ts-ignore\n */\n let element;\n /**\n * Calculate a depth that we can use to order motion states by tree depth.\n */\n let depth = parent ? parent.getDepth() + 1 : 0;\n /**\n * Track which states are currently active.\n */\n const activeStates = { initial: true, animate: true };\n /**\n * A map of functions that, when called, will remove event listeners for\n * a given gesture.\n */\n const gestureSubscriptions = {};\n /**\n * Initialise a context to share through motion states. This\n * will be populated by variant names (if any).\n */\n const context = {};\n for (const name of stateTypes) {\n context[name] =\n typeof options[name] === \"string\"\n ? options[name]\n : parent === null || parent === void 0 ? void 0 : parent.getContext()[name];\n }\n /**\n * If initial is set to false we use the animate prop as the initial\n * animation state.\n */\n const initialVariantSource = options.initial === false ? \"animate\" : \"initial\";\n /**\n * Destructure an initial target out from the resolved initial variant.\n */\n let _a = resolveVariant(options[initialVariantSource] || context[initialVariantSource], options.variants) || {}, target = __rest(_a, [\"transition\"]);\n /**\n * The base target is a cached map of values that we'll use to animate\n * back to if a value is removed from all active state types. This\n * is usually the initial value as read from the DOM, for instance if\n * it hasn't been defined in initial.\n */\n const baseTarget = Object.assign({}, target);\n /**\n * A generator that will be processed by the global animation scheduler.\n * This yields when it switches from reading the DOM to writing to it\n * to prevent layout thrashing.\n */\n function* animateUpdates() {\n var _a, _b;\n const prevTarget = target;\n target = {};\n const animationOptions = {};\n for (const name of stateTypes) {\n if (!activeStates[name])\n continue;\n const variant = resolveVariant(options[name]);\n if (!variant)\n continue;\n for (const key in variant) {\n if (key === \"transition\")\n continue;\n target[key] = variant[key];\n animationOptions[key] = getOptions((_b = (_a = variant.transition) !== null && _a !== void 0 ? _a : options.transition) !== null && _b !== void 0 ? _b : {}, key);\n }\n }\n const allTargetKeys = new Set([\n ...Object.keys(target),\n ...Object.keys(prevTarget),\n ]);\n const animationFactories = [];\n allTargetKeys.forEach((key) => {\n var _a;\n if (target[key] === undefined) {\n target[key] = baseTarget[key];\n }\n if (hasChanged(prevTarget[key], target[key])) {\n (_a = baseTarget[key]) !== null && _a !== void 0 ? _a : (baseTarget[key] = style.get(element, key));\n animationFactories.push(animateStyle(element, key, target[key], animationOptions[key], Animation));\n }\n });\n // Wait for all animation states to read from the DOM\n yield;\n const animations = animationFactories\n .map((factory) => factory())\n .filter(Boolean);\n if (!animations.length)\n return;\n const animationTarget = target;\n element.dispatchEvent(motionEvent(\"motionstart\", animationTarget));\n Promise.all(animations.map((animation) => animation.finished))\n .then(() => {\n element.dispatchEvent(motionEvent(\"motioncomplete\", animationTarget));\n })\n .catch(noop);\n }\n const setGesture = (name, isActive) => () => {\n activeStates[name] = isActive;\n scheduleAnimation(state);\n };\n const updateGestureSubscriptions = () => {\n for (const name in gestures) {\n const isGestureActive = gestures[name].isActive(options);\n const remove = gestureSubscriptions[name];\n if (isGestureActive && !remove) {\n gestureSubscriptions[name] = gestures[name].subscribe(element, {\n enable: setGesture(name, true),\n disable: setGesture(name, false),\n }, options);\n }\n else if (!isGestureActive && remove) {\n remove();\n delete gestureSubscriptions[name];\n }\n }\n };\n const state = {\n update: (newOptions) => {\n if (!element)\n return;\n options = newOptions;\n updateGestureSubscriptions();\n scheduleAnimation(state);\n },\n setActive: (name, isActive) => {\n if (!element)\n return;\n activeStates[name] = isActive;\n scheduleAnimation(state);\n },\n animateUpdates,\n getDepth: () => depth,\n getTarget: () => target,\n getOptions: () => options,\n getContext: () => context,\n mount: (newElement) => {\n invariant(Boolean(newElement), \"Animation state must be mounted with valid Element\");\n element = newElement;\n mountedStates.set(element, state);\n updateGestureSubscriptions();\n return () => {\n mountedStates.delete(element);\n unscheduleAnimation(state);\n for (const key in gestureSubscriptions) {\n gestureSubscriptions[key]();\n }\n };\n },\n isMounted: () => Boolean(element),\n };\n return state;\n}\n\nexport { createMotionState, mountedStates };\n","import { isNumber } from '@motionone/utils';\nimport { isTransform, transformAlias, asTransformCssVar, transformDefinitions, buildTransformTemplate } from './transforms.es.js';\n\nfunction createStyles(keyframes) {\n const initialKeyframes = {};\n const transformKeys = [];\n for (let key in keyframes) {\n const value = keyframes[key];\n if (isTransform(key)) {\n if (transformAlias[key])\n key = transformAlias[key];\n transformKeys.push(key);\n key = asTransformCssVar(key);\n }\n let initialKeyframe = Array.isArray(value) ? value[0] : value;\n /**\n * If this is a number and we have a default value type, convert the number\n * to this type.\n */\n const definition = transformDefinitions.get(key);\n if (definition) {\n initialKeyframe = isNumber(value)\n ? definition.toDefaultUnit(value)\n : value;\n }\n initialKeyframes[key] = initialKeyframe;\n }\n if (transformKeys.length) {\n initialKeyframes.transform = buildTransformTemplate(transformKeys);\n }\n return initialKeyframes;\n}\n\nexport { createStyles };\n","import { chain, arrayEquals } from '@solid-primitives/utils';\nimport { createMemo, children, createComputed, untrack, onCleanup } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/index.ts\nfunction mergeRefs(...refs) {\n return chain(refs);\n}\nvar defaultElementPredicate = isServer ? (item) => item != null && typeof item === \"object\" && \"t\" in item : (item) => item instanceof Element;\nfunction getResolvedElements(value, predicate) {\n if (predicate(value))\n return value;\n if (typeof value === \"function\" && !value.length)\n return getResolvedElements(value(), predicate);\n if (Array.isArray(value)) {\n const results = [];\n for (const item of value) {\n const result = getResolvedElements(item, predicate);\n if (result)\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results.length ? results : null;\n }\n return null;\n}\nfunction resolveElements(fn, predicate = defaultElementPredicate, serverPredicate = defaultElementPredicate) {\n const children2 = createMemo(fn);\n const memo = createMemo(\n () => getResolvedElements(children2(), isServer ? serverPredicate : predicate)\n );\n memo.toArray = () => {\n const value = memo();\n return Array.isArray(value) ? value : value ? [value] : [];\n };\n return memo;\n}\nfunction getFirstChild(value, predicate) {\n if (predicate(value))\n return value;\n if (typeof value === \"function\" && !value.length)\n return getFirstChild(value(), predicate);\n if (Array.isArray(value)) {\n for (const item of value) {\n const result = getFirstChild(item, predicate);\n if (result)\n return result;\n }\n }\n return null;\n}\nfunction resolveFirst(fn, predicate = defaultElementPredicate, serverPredicate = defaultElementPredicate) {\n const children2 = createMemo(fn);\n return createMemo(() => getFirstChild(children2(), isServer ? serverPredicate : predicate));\n}\nfunction Refs(props) {\n if (isServer) {\n return props.children;\n }\n const cb = props.ref, resolved = children(() => props.children);\n let prev = [];\n createComputed(() => {\n const els = resolved.toArray().filter(defaultElementPredicate);\n if (!arrayEquals(prev, els))\n untrack(() => cb(els));\n prev = els;\n }, []);\n onCleanup(() => prev.length && cb([]));\n return resolved;\n}\nfunction Ref(props) {\n if (isServer) {\n return props.children;\n }\n const cb = props.ref, resolved = children(() => props.children);\n let prev;\n createComputed(() => {\n const el = resolved.toArray().find(defaultElementPredicate);\n if (el !== prev)\n untrack(() => cb(el));\n prev = el;\n });\n onCleanup(() => prev && cb(void 0));\n return resolved;\n}\n\nexport { Ref, Refs, defaultElementPredicate, getFirstChild, getResolvedElements, mergeRefs, resolveElements, resolveFirst };\n","import { untrack, createSignal, useTransition, createComputed, batch, createMemo, $TRACK } from 'solid-js';\nimport { isServer } from 'solid-js/web';\n\n// src/index.ts\nvar noop = () => {\n};\nvar noopTransition = (el, done) => done();\nfunction createSwitchTransition(source, options) {\n const initSource = untrack(source);\n const initReturned = initSource ? [initSource] : [];\n if (isServer) {\n return () => initReturned;\n }\n const { onEnter = noopTransition, onExit = noopTransition } = options;\n const [returned, setReturned] = createSignal(\n options.appear ? [] : initReturned\n );\n const [isTransitionPending] = useTransition();\n let next;\n let isExiting = false;\n function exitTransition(el, after) {\n if (!el)\n return after && after();\n isExiting = true;\n onExit(el, () => {\n batch(() => {\n isExiting = false;\n setReturned((p) => p.filter((e) => e !== el));\n after && after();\n });\n });\n }\n function enterTransition(after) {\n const el = next;\n if (!el)\n return after && after();\n next = void 0;\n setReturned((p) => [el, ...p]);\n onEnter(el, after ?? noop);\n }\n const triggerTransitions = options.mode === \"out-in\" ? (\n // exit -> enter\n (prev) => isExiting || exitTransition(prev, enterTransition)\n ) : options.mode === \"in-out\" ? (\n // enter -> exit\n (prev) => enterTransition(() => exitTransition(prev))\n ) : (\n // exit & enter\n (prev) => {\n exitTransition(prev);\n enterTransition();\n }\n );\n createComputed(\n (prev) => {\n const el = source();\n if (untrack(isTransitionPending)) {\n isTransitionPending();\n return prev;\n }\n if (el !== prev) {\n next = el;\n batch(() => untrack(() => triggerTransitions(prev)));\n }\n return el;\n },\n options.appear ? void 0 : initSource\n );\n return returned;\n}\nfunction createListTransition(source, options) {\n const initSource = untrack(source);\n if (isServer) {\n const copy = initSource.slice();\n return () => copy;\n }\n const { onChange } = options;\n let prevSet = new Set(options.appear ? void 0 : initSource);\n const exiting = /* @__PURE__ */ new WeakSet();\n const [toRemove, setToRemove] = createSignal([], { equals: false });\n const [isTransitionPending] = useTransition();\n const finishRemoved = options.exitMethod === \"remove\" ? noop : (els) => {\n setToRemove((p) => (p.push.apply(p, els), p));\n for (const el of els)\n exiting.delete(el);\n };\n const handleRemoved = options.exitMethod === \"remove\" ? noop : options.exitMethod === \"keep-index\" ? (els, el, i) => els.splice(i, 0, el) : (els, el) => els.push(el);\n return createMemo(\n (prev) => {\n const elsToRemove = toRemove();\n const sourceList = source();\n sourceList[$TRACK];\n if (untrack(isTransitionPending)) {\n isTransitionPending();\n return prev;\n }\n if (elsToRemove.length) {\n const next = prev.filter((e) => !elsToRemove.includes(e));\n elsToRemove.length = 0;\n onChange({ list: next, added: [], removed: [], unchanged: next, finishRemoved });\n return next;\n }\n return untrack(() => {\n const nextSet = new Set(sourceList);\n const next = sourceList.slice();\n const added = [];\n const removed = [];\n const unchanged = [];\n for (const el of sourceList) {\n (prevSet.has(el) ? unchanged : added).push(el);\n }\n let nothingChanged = !added.length;\n for (let i = 0; i < prev.length; i++) {\n const el = prev[i];\n if (!nextSet.has(el)) {\n if (!exiting.has(el)) {\n removed.push(el);\n exiting.add(el);\n }\n handleRemoved(next, el, i);\n }\n if (nothingChanged && el !== next[i])\n nothingChanged = false;\n }\n if (!removed.length && nothingChanged)\n return prev;\n onChange({ list: next, added, removed, unchanged, finishRemoved });\n prevSet = nextSet;\n return next;\n });\n },\n options.appear ? [] : initSource.slice()\n );\n}\n\nexport { createListTransition, createSwitchTransition };\n","// src/motion.tsx\nimport { Dynamic } from \"solid-js/web\";\nimport { useContext as useContext2, splitProps, createContext as createContext2 } from \"solid-js\";\nimport { combineStyle } from \"@solid-primitives/props\";\n\n// src/primitives.ts\nimport { createMotionState, createStyles, style } from \"@motionone/dom\";\nimport { createEffect, onCleanup, useContext } from \"solid-js\";\n\n// src/presence.tsx\nimport { mountedStates } from \"@motionone/dom\";\nimport { resolveFirst } from \"@solid-primitives/refs\";\nimport { createSwitchTransition } from \"@solid-primitives/transition-group\";\nimport {\n createContext,\n createSignal,\n batch\n} from \"solid-js\";\nvar PresenceContext = createContext();\nvar Presence = (props) => {\n const [mount, setMount] = createSignal(true), state = { initial: props.initial ?? true, mount }, render = <PresenceContext.Provider value={state}>{createSwitchTransition(\n resolveFirst(() => props.children),\n {\n appear: state.initial,\n mode: props.exitBeforeEnter ? \"out-in\" : \"parallel\",\n onExit(el, done) {\n batch(() => {\n setMount(false);\n mountedStates.get(el)?.getOptions()?.exit ? el.addEventListener(\"motioncomplete\", done) : done();\n });\n },\n onEnter(_, done) {\n batch(() => {\n setMount(true);\n done();\n });\n }\n }\n )}</PresenceContext.Provider>;\n state.initial = true;\n return render;\n};\n\n// src/primitives.ts\nfunction createAndBindMotionState(el, options, presence_state, parent_state) {\n const state = createMotionState(\n presence_state?.initial === false ? { ...options(), initial: false } : options(),\n parent_state\n );\n createEffect(() => {\n if (presence_state && !presence_state.mount())\n return;\n const el_ref = el(), unmount = state.mount(el_ref);\n createEffect(() => state.update(options()));\n onCleanup(() => {\n if (presence_state && options().exit) {\n state.setActive(\"exit\", true);\n el_ref.addEventListener(\"motioncomplete\", unmount);\n } else\n unmount();\n });\n });\n return [state, createStyles(state.getTarget())];\n}\nfunction createMotion(target, options, presenceState) {\n const [state, styles] = createAndBindMotionState(\n () => target,\n typeof options === \"function\" ? options : () => options,\n presenceState\n );\n for (const key in styles) {\n style.set(target, key, styles[key]);\n }\n return state;\n}\nfunction motion(el, props) {\n createMotion(el, props, useContext(PresenceContext));\n}\n\n// src/motion.tsx\nvar OPTION_KEYS = [\n \"initial\",\n \"animate\",\n \"inView\",\n \"inViewOptions\",\n \"hover\",\n \"press\",\n \"variants\",\n \"transition\",\n \"exit\"\n];\nvar ATTR_KEYS = [\"tag\"];\nvar ParentContext = createContext2();\nvar MotionComponent = (props) => {\n const [options, , attrs] = splitProps(props, OPTION_KEYS, ATTR_KEYS);\n const [state, style2] = createAndBindMotionState(\n () => root,\n () => ({ ...options }),\n useContext2(PresenceContext),\n useContext2(ParentContext)\n );\n let root;\n return <ParentContext.Provider value={state}><Dynamic\n {...attrs}\n ref={(el) => {\n root = el;\n props.ref?.(el);\n }}\n component={props.tag || \"div\"}\n style={combineStyle(props.style, style2)}\n /></ParentContext.Provider>;\n};\nvar Motion = new Proxy(MotionComponent, {\n get: (_, tag) => (props) => <MotionComponent {...props} tag={tag} />\n});\nexport {\n Motion,\n Presence,\n PresenceContext,\n createMotion,\n motion\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { BlinkIdUiStateKey } from \"../core/blinkid-ui-state\";\nimport { LocalizationStrings } from \"./LocalizationContext\";\n\nexport const feedbackMessages: Partial<\n Record<BlinkIdUiStateKey, keyof LocalizationStrings>\n> = {\n SENSING_FRONT: \"scan_the_front_side\",\n SENSING_BACK: \"scan_the_back_side\",\n FLIP_CARD: \"flip_to_back_side\",\n WRONG_SIDE: \"flip_document\",\n SCAN_BARCODE: \"scan_the_barcode\",\n // passport\n SENSING_DATA_PAGE: \"scan_data_page\",\n SENSING_TOP_PAGE: \"scan_top_page\",\n SENSING_LEFT_PAGE: \"scan_left_page\",\n SENSING_RIGHT_PAGE: \"scan_right_page\",\n MOVE_TOP: \"move_top\",\n MOVE_LEFT: \"move_left\",\n MOVE_RIGHT: \"move_right\",\n WRONG_TOP_PAGE: \"wrong_top\",\n WRONG_LEFT_PAGE: \"wrong_left\",\n WRONG_RIGHT_PAGE: \"wrong_right\",\n // occlusion\n BLUR_DETECTED: \"blur_detected\",\n GLARE_DETECTED: \"glare_detected\",\n OCCLUDED: \"occluded\",\n // image\n FACE_PHOTO_OCCLUDED: \"face_photo_not_fully_visible\",\n // framing\n DOCUMENT_FRAMING_CAMERA_TOO_CLOSE: \"move_farther\",\n DOCUMENT_FRAMING_CAMERA_TOO_FAR: \"move_closer\",\n DOCUMENT_TOO_CLOSE_TO_FRAME_EDGE: \"document_too_close_to_edge\",\n DOCUMENT_FRAMING_CAMERA_ANGLE_TOO_STEEP: \"camera_angle_too_steep\",\n // lighting\n TOO_DARK: \"too_dark\",\n TOO_BRIGHT: \"too_bright\",\n};\n","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 96 60\"{...props}><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M0 6a6 6 0 0 1 6-6h84a6 6 0 0 1 6 6v48a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6zm10.2 7.8c0-1.325 1.11-2.4 2.48-2.4h69.44c1.37 0 2.48 1.075 2.48 2.4s-1.11 2.4-2.48 2.4H12.68c-1.37 0-2.48-1.074-2.48-2.4m70.5 35.4a3.9 3.9 0 1 0 0-7.8 3.9 3.9 0 0 0 0 7.8m-70.5-3c0-1.326 1.098-2.4 2.451-2.4H34.15c1.353 0 2.451 1.075 2.451 2.4s-1.098 2.4-2.451 2.4h-21.5c-1.354 0-2.451-1.075-2.451-2.4Zm2.474-13.8c-1.366 0-2.474 1.075-2.474 2.4 0 1.326 1.108 2.4 2.474 2.4h30.452c1.366 0 2.474-1.075 2.474-2.4s-1.108-2.4-2.474-2.4z\" clip-rule=\"evenodd\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 96 60\"{...props}><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M6 0a6 6 0 0 0-6 6v48a6 6 0 0 0 6 6h84a6 6 0 0 0 6-6V6a6 6 0 0 0-6-6zm42.671 10.8c-1.365 0-2.471 1.074-2.471 2.4s1.106 2.4 2.471 2.4H82.13c1.365 0 2.471-1.075 2.471-2.4s-1.106-2.4-2.471-2.4zM72 49.2c0-1.326 1.058-2.4 2.364-2.4h7.272c1.306 0 2.364 1.075 2.364 2.4s-1.058 2.4-2.364 2.4h-7.272C73.058 51.6 72 50.525 72 49.2M48.702 33.6c-1.382 0-2.502 1.075-2.502 2.4s1.12 2.4 2.502 2.4h15.396c1.382 0 2.502-1.075 2.502-2.4s-1.12-2.4-2.502-2.4zm-2.502-9c0-1.326 1.106-2.4 2.471-2.4H82.13c1.365 0 2.471 1.075 2.471 2.4S83.494 27 82.129 27H48.67c-1.365 0-2.471-1.075-2.471-2.4M13.265 10.8c-1.693 0-3.065 1.407-3.065 3.144v24.024c0 1.117.569 2.097 1.42 2.653.266.174.59.224.894.138a1.12 1.12 0 0 0 .698-.587c1.385-2.82 3.678-5.021 6.438-6.162.373-.154.637-.504.688-.915.05-.41-.119-.816-.443-1.062a7.23 7.23 0 0 1-2.84-5.78c0-3.962 3.115-7.164 6.945-7.164s6.944 3.203 6.944 7.165a7.23 7.23 0 0 1-2.839 5.78 1.16 1.16 0 0 0-.442 1.061c.05.41.314.76.688.915 2.76 1.14 5.052 3.343 6.437 6.162.142.288.395.501.698.587.304.086.628.036.893-.138a3.16 3.16 0 0 0 1.421-2.653V13.944c0-1.737-1.372-3.144-3.065-3.144z\" clip-rule=\"evenodd\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 96 96\"{...props}><rect width=\"96\" height=\"96\" fill=\"#fff\" rx=\"48\"/><path fill=\"#000\" d=\"M44.972 57.46a2 2 0 0 1-1.414-.584l-8.484-8.486a2 2 0 1 1 2.826-2.83l7.07 7.07L57.7 39.904a2 2 0 1 1 2.83 2.828L46.386 56.876a2 2 0 0 1-1.414.584\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 100 100\"{...props}><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M50 7.692C26.634 7.692 7.692 26.634 7.692 50S26.634 92.308 50 92.308 92.308 73.366 92.308 50 73.366 7.692 50 7.692M0 50C0 22.386 22.386 0 50 0s50 22.386 50 50-22.386 50-50 50S0 77.614 0 50\" clip-rule=\"evenodd\" opacity=\".75\"/><circle cx=\"50\" cy=\"50\" r=\"4\" fill=\"#fff\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 120 76\"{...props}><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M118 .5H2a2 2 0 0 0-2 2V68a7.5 7.5 0 0 0 7.5 7.5h105A7.5 7.5 0 0 0 120 68V2.5a2 2 0 0 0-2-2m-14.875 18.75h-38.75a3.125 3.125 0 1 0 0 6.25h38.75a3.125 3.125 0 1 0 0-6.25m-38.75 30h17.5a3.125 3.125 0 1 1 0 6.25h-17.5a3.125 3.125 0 1 1 0-6.25m38.75-15h-38.75a3.125 3.125 0 1 0 0 6.25h38.75a3.125 3.125 0 1 0 0-6.25M16.665 15.5c-2.3 0-4.165 1.935-4.165 4.322v33.034a4.36 4.36 0 0 0 1.93 3.648c.36.239.801.307 1.213.19.412-.118.757-.411.95-.807 1.881-3.877 4.997-6.904 8.746-8.473.508-.213.866-.694.935-1.258a1.6 1.6 0 0 0-.602-1.46c-2.34-1.795-3.857-4.685-3.857-7.947 0-5.448 4.231-9.851 9.435-9.851s9.435 4.403 9.435 9.851c0 3.262-1.517 6.152-3.857 7.947-.44.337-.671.896-.602 1.46s.427 1.045.935 1.258c3.75 1.569 6.865 4.596 8.747 8.473.192.396.537.689.949.807.412.117.852.049 1.213-.19A4.36 4.36 0 0 0 50 52.857V19.822c0-2.387-1.864-4.322-4.164-4.322z\" clip-rule=\"evenodd\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 144 86\"{...props}><path stroke=\"#fff\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"4\" d=\"M9.119 2H2v7.119M134.883 2h7.118v7.119M134.883 83.865h7.118v-7.119M9.119 83.865H2v-7.119\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 120 75\"{...props}><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M6 0a6 6 0 0 0-6 6v67a2 2 0 0 0 2 2h116a2 2 0 0 0 2-2V6a6 6 0 0 0-6-6zm82.125 56.25h15a3.125 3.125 0 1 1 0 6.25h-15a3.125 3.125 0 1 1 0-6.25m-32.5-42.5h-40a3.125 3.125 0 1 0 0 6.25h40a3.125 3.125 0 1 0 0-6.25m-40 12.5h25a3.125 3.125 0 1 1 0 6.25h-25a3.125 3.125 0 1 1 0-6.25\" clip-rule=\"evenodd\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 100 100\"{...props}><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M67.122 11.998a42.16 42.16 0 0 0-34.244 0l-3.397-7.644a50.52 50.52 0 0 1 41.038 0zm-55.124 20.88a42.16 42.16 0 0 0 0 34.244l-7.644 3.397a50.52 50.52 0 0 1 0-41.038zm76.004 34.244a42.16 42.16 0 0 0 0-34.244l7.644-3.397a50.52 50.52 0 0 1 0 41.038zm-55.124 20.88a42.16 42.16 0 0 0 34.244 0l3.397 7.644a50.52 50.52 0 0 1-41.038 0z\" clip-rule=\"evenodd\" opacity=\".75\"/><circle cx=\"50\" cy=\"50\" r=\"4\" fill=\"#fff\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 101 100\"{...props}><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M50.301 7.692C26.935 7.692 7.994 26.634 7.994 50S26.935 92.308 50.3 92.308 92.61 73.366 92.61 50 73.667 7.692 50.301 7.692M.301 50c0-27.614 22.386-50 50-50s50 22.386 50 50-22.386 50-50 50-50-22.386-50-50\" clip-rule=\"evenodd\" opacity=\".3\"/><circle cx=\"50.3\" cy=\"50\" r=\"4\" fill=\"#fff\"/><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M29.148 13.36C8.912 25.043 1.977 50.918 13.662 71.154L7 75C-6.807 51.085 1.387 20.506 25.301 6.699z\" clip-rule=\"evenodd\"/></svg>","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { Rerun } from \"@solid-primitives/keyed\";\nimport {\n Component,\n createEffect,\n createSignal,\n Match,\n onCleanup,\n ParentComponent,\n Show,\n Switch,\n} from \"solid-js\";\nimport { Motion, Presence } from \"solid-motionone\";\n\nimport { clsx } from \"clsx\";\nimport {\n BlinkIdUiState,\n blinkIdUiStateMap,\n firstSideCapturedStates,\n} from \"../core/blinkid-ui-state\";\nimport { useLocalization } from \"./LocalizationContext\";\nimport { feedbackMessages } from \"./feedbackMessages\";\n\n// icons\nimport CardIconBack from \"./assets/reticles/card-back.svg?component-solid\";\nimport CardIconFront from \"./assets/reticles/card-front.svg?component-solid\";\nimport DoneIcon from \"./assets/reticles/done.svg?component-solid\";\nimport FullIcon from \"./assets/reticles/full.svg?component-solid\";\nimport PassportBottom from \"./assets/reticles/passport-bottom.svg?component-solid\";\nimport PassportHighlight from \"./assets/reticles/passport-highlight.svg?component-solid\";\nimport PassportTop from \"./assets/reticles/passport-top.svg?component-solid\";\nimport SearchIcon from \"./assets/reticles/searching.svg?component-solid\";\nimport ScanIcon from \"./assets/reticles/spin.svg?component-solid\";\n\nexport const UiFeedbackOverlay: Component<{\n uiState: BlinkIdUiState;\n}> = (props) => {\n /**\n * This is a hack since we don't have a discrete state for both a successful\n * scan and a card flip.\n */\n const [showSuccessOnly, setShowSuccessOnly] = createSignal(false);\n let timeout: number;\n\n /**\n * Handles showing the success feedback before other states defined in {@link firstSideCapturedStates}\n */\n createEffect(() => {\n if (firstSideCapturedStates.includes(props.uiState.key)) {\n setShowSuccessOnly(true);\n\n // TODO: incorrectly resolving to NodeJS timeout\n timeout = window.setTimeout(\n () => setShowSuccessOnly(false),\n blinkIdUiStateMap.DOCUMENT_CAPTURED.minDuration,\n );\n } else {\n setShowSuccessOnly(false);\n clearTimeout(timeout!);\n }\n\n onCleanup(() => clearTimeout(timeout!));\n });\n\n const isPassportCaptureState = () => {\n return (\n props.uiState.key === \"MOVE_TOP\" ||\n props.uiState.key === \"MOVE_LEFT\" ||\n props.uiState.key === \"MOVE_RIGHT\"\n );\n };\n\n const getDirection = () => {\n switch (props.uiState.key) {\n case \"MOVE_TOP\":\n return \"top\";\n case \"MOVE_LEFT\":\n return \"left\";\n case \"MOVE_RIGHT\":\n return \"right\";\n default:\n return \"top\";\n }\n };\n\n return (\n <>\n <div\n class=\"absolute left-0 top-0 grid size-full select-none place-items-center\n contain-strict overflow-hidden\"\n >\n <div>\n {/* we only want the actual reticle-like spinners to remain in the screen center\n which is why the container is sized the same dimensions as the reticle\n\n The layout size shouldn't change between the different reticle types, so that the\n message positioning is consistent.\n */}\n <div class=\"size-24\">\n <div class=\"relative size-full grid place-items-center\" aria-hidden>\n {/* default spinners */}\n <Switch>\n <Match when={props.uiState.reticleType === \"searching\"}>\n <SearchReticle />\n </Match>\n <Match when={props.uiState.reticleType === \"processing\"}>\n <ScanningReticle />\n </Match>\n <Match when={props.uiState.reticleType === \"error\"}>\n <ErrorReticle />\n </Match>\n\n {/* Success – reused between multiple states */}\n <Match\n when={\n props.uiState.reticleType === \"done\" || showSuccessOnly()\n }\n >\n <SuccessFeedback />\n </Match>\n\n {/* flip card */}\n <Match\n when={\n props.uiState.reticleType === \"flip\" && !showSuccessOnly()\n }\n >\n <FlipCardFeedback />\n </Match>\n\n {/* move passport */}\n <Match when={isPassportCaptureState() && !showSuccessOnly()}>\n <PassportAnimation\n direction={getDirection()}\n duration={blinkIdUiStateMap[props.uiState.key].minDuration}\n />\n </Match>\n </Switch>\n </div>\n </div>\n\n {/* feedback message */}\n <Show when={!showSuccessOnly()}>\n <UiFeedbackMessage uiState={props.uiState} />\n </Show>\n </div>\n </div>\n </>\n );\n};\n\nconst SuccessFeedback: Component = () => {\n return (\n <Motion\n initial={{ opacity: 0, scale: 0.5 }}\n animate={{\n opacity: 1,\n scale: 1,\n transition: { easing: \"ease-in-out\", duration: 0.3 },\n }}\n exit={{ opacity: 0, scale: 5 }}\n >\n <DoneIcon class=\"[&>path]:fill-[initial] size-24 drop-shadow-[0_0_15px_rgba(0,0,0,0.1)]\" />\n </Motion>\n );\n};\n\nconst FlipCardFeedback: Component = () => {\n const cardSideStyles = `backface-hidden drop-shadow-[0_0_15px_rgba(0,0,0,0.1)]`;\n\n return (\n <div class=\"absolute perspective-300px bottom-0\">\n <Motion\n class=\"relative preserve-3d w-24\"\n initial={{ opacity: 0 }}\n animate={{\n opacity: 1,\n rotateY: [\"180deg\"],\n transition: {\n rotateY: {\n duration: blinkIdUiStateMap.FLIP_CARD.minDuration / 1000,\n },\n opacity: {\n duration: 0.5,\n },\n },\n }}\n exit={{ opacity: 0 }}\n >\n {/* we don't set the dimensions, so that the ratio is naturally preserved */}\n <CardIconFront class={cardSideStyles} />\n <CardIconBack\n class={clsx(\n cardSideStyles,\n \"absolute top-0 left-0 w-full transform rotate-y-180\",\n )}\n />\n </Motion>\n </div>\n );\n};\n\nconst PassportAnimation: Component<{\n direction: \"top\" | \"right\" | \"left\";\n duration: number;\n}> = (props) => {\n const rotation = () => {\n switch (props.direction) {\n case \"top\":\n return \"0deg\";\n case \"right\":\n return \"90deg\";\n case \"left\":\n return \"-90deg\";\n }\n };\n\n return (\n <div class=\"absolute perspective-300px bottom-0\">\n <Motion\n class=\"relative\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.3 }}\n >\n <div class=\"relative\" style={{ transform: `rotate(${rotation()})` }}>\n <Motion\n class=\"w-24\"\n initial={{ opacity: 0.3 }}\n animate={{ opacity: 1 }}\n transition={{\n duration: props.duration / 1000,\n easing: \"ease\",\n }}\n >\n <PassportTop class=\"[&>path]:fill-[currentColor] drop-shadow-[0_0_15px_rgba(0,0,0,0.1)]\" />\n </Motion>\n\n <Motion\n class=\"w-24\"\n initial={{ opacity: 1 }}\n animate={{ opacity: 0.3 }}\n transition={{\n duration: props.duration / 1000,\n easing: \"ease\",\n }}\n >\n <PassportBottom class=\"[&>path]:fill-[currentColor] drop-shadow-[0_0_15px_rgba(0,0,0,0.1)]\" />\n </Motion>\n\n <Motion\n class=\"absolute bottom-0 w-full\"\n initial={{ y: \"0\" }}\n animate={{ y: \"-100%\" }}\n transition={{\n duration: props.duration / 1000,\n easing: \"ease\",\n }}\n >\n <PassportHighlight class=\"scale-130\" />\n </Motion>\n </div>\n </Motion>\n </div>\n );\n};\n\nconst ReticleContainer: ParentComponent<{\n type: BlinkIdUiState[\"reticleType\"];\n}> = (props) => {\n return (\n <Motion.div\n class={clsx(\n `absolute bottom-0 grid size-full place-items-center rounded-full\n backdrop-blur-xl bg-opacity-30`,\n props.type === \"error\" ? \"bg-error-500 \" : \"bg-dark-100\",\n )}\n initial={{ opacity: 0 }}\n animate={{\n opacity: 1,\n transition: { delay: 0.05 },\n }}\n transition={{ duration: 0.05 }}\n >\n {props.children}\n </Motion.div>\n );\n};\n\nconst SearchReticle: Component = () => (\n <ReticleContainer type=\"searching\">\n <Motion\n class=\"will-change-transform\"\n animate={{ opacity: 1, transform: \"rotate(360deg)\" }}\n transition={{\n transform: {\n duration: 1,\n easing: \"ease-in-out\",\n repeat: Infinity,\n },\n }}\n >\n <SearchIcon class=\"size-12\" />\n </Motion>\n </ReticleContainer>\n);\n\nconst ErrorReticle: Component = () => (\n <ReticleContainer type=\"error\">\n <FullIcon class=\"size-12\" />\n </ReticleContainer>\n);\n\nconst ScanningReticle: Component = () => (\n <ReticleContainer type=\"processing\">\n <Motion\n animate={{ opacity: 1, rotate: \"360deg\" }}\n transition={{\n rotate: {\n duration: 0.8,\n easing: [0.23, 0.58, 0.58, 0.23],\n repeat: Infinity,\n },\n }}\n >\n <ScanIcon class=\"size-12\" />\n </Motion>\n </ReticleContainer>\n);\n\n/**\n * This component displays feedback messages to the user.\n * Shown below the reticle.\n */\nconst UiFeedbackMessage: Component<{\n uiState: BlinkIdUiState;\n}> = (props) => {\n const { t } = useLocalization();\n\n const message = () => {\n const key = props.uiState.key;\n if (key in feedbackMessages) {\n return feedbackMessages[key];\n }\n\n return;\n };\n\n return (\n <div class=\"absolute left-0 mt-3 w-full flex justify-center p-inline-4\">\n <Presence exitBeforeEnter>\n <Rerun on={() => props.uiState.key}>\n <Show when={message()}>\n <Motion.div\n initial={{ opacity: 0, transform: \"translateY(2rem)\" }}\n animate={{\n opacity: 1,\n transform: \"translateY(0)\",\n transition: { delay: 0.05 },\n }}\n transition={{ duration: 0.05 }}\n exit={{ opacity: 0, transform: \"translateY(-2rem)\" }}\n class=\"max-w-45 text-base gap-1 rounded-2 bg-opacity-30 bg-dark-100 px-2 py-3\n text-center text-balance text-white font-bold\n text-shadow-[0_1px_4px_rgba(0,0,0,0.1)] backdrop-blur-xl will-change-transform\"\n >\n <div role=\"alert\">{t[message()!]}</div>\n </Motion.div>\n </Show>\n </Rerun>\n </Presence>\n </div>\n );\n};\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport type { CameraManagerComponent } from \"@microblink/camera-manager\";\nimport {\n createContext,\n onCleanup,\n type ParentComponent,\n useContext,\n} from \"solid-js\";\nimport { createStore, SetStoreFunction } from \"solid-js/store\";\nimport type { BlinkIdProcessingError } from \"../core/BlinkIdProcessingError\";\nimport type { BlinkIdUxManager } from \"../core/BlinkIdUxManager\";\n\nexport type BlinkIdUiStore = {\n blinkIdUxManager: BlinkIdUxManager;\n cameraManagerComponent: CameraManagerComponent;\n // TODO: should this be part of `BlinkIdUxManager`?\n errorState?: BlinkIdProcessingError;\n documentFiltered: boolean;\n showOnboardingGuide?: boolean;\n showHelpTooltipTimeout?: number;\n showHelpModal?: boolean;\n showHelpButton?: boolean;\n dismountFeedbackUi: () => void;\n};\n\ntype BlinkIdUiStoreContextValue = {\n store: BlinkIdUiStore;\n updateStore: SetStoreFunction<BlinkIdUiStore>;\n};\n\nconst BlinkIdUiStoreContext = createContext<BlinkIdUiStoreContextValue>();\n\nexport const BlinkIdUiStoreProvider: ParentComponent<{\n blinkIdUxManager: BlinkIdUxManager;\n cameraManagerComponent: CameraManagerComponent;\n showOnboardingGuide?: boolean;\n showHelpButton?: boolean;\n showHelpTooltipTimeout?: number;\n dismountFeedbackUi: () => void;\n}> = (props) => {\n const [store, updateStore] = createStore<BlinkIdUiStore>(\n {} as BlinkIdUiStore,\n );\n\n // This needs to be created outside of `useEffect` since we\n // need it immediately on mount\n updateStore({\n /* eslint-disable solid/reactivity */\n blinkIdUxManager: props.blinkIdUxManager,\n cameraManagerComponent: props.cameraManagerComponent,\n showOnboardingGuide: props.showOnboardingGuide,\n showHelpTooltipTimeout: props.showHelpTooltipTimeout,\n showHelpButton: props.showHelpButton,\n dismountFeedbackUi: props.dismountFeedbackUi,\n /* eslint-enable solid/reactivity */\n });\n\n const contextValue = {\n store,\n updateStore,\n };\n\n onCleanup(() => {\n console.debug(\"BlinkIdUiStoreProvider cleanup\");\n });\n\n return (\n <BlinkIdUiStoreContext.Provider value={contextValue}>\n {props.children}\n </BlinkIdUiStoreContext.Provider>\n );\n};\n\nexport function useBlinkIdUiStore() {\n const ctx = useContext(BlinkIdUiStoreContext);\n if (!ctx) {\n throw new Error(\"BlinkIdUiStoreContext.Provider not in scope\");\n }\n\n return ctx;\n}\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { EnvironmentProvider } from \"@ark-ui/solid/environment\";\nimport { Component, createSignal, JSX, onMount, Show } from \"solid-js\";\n\nexport const SmartEnvironmentProvider: Component<{\n children: (rootNode: Node) => JSX.Element;\n}> = (props) => {\n const [rootNode, setRootNode] = createSignal<Node>();\n const [ref, setRef] = createSignal<HTMLSpanElement>();\n\n onMount(() => {\n const spanRef = ref();\n\n if (!spanRef) {\n return;\n }\n\n setRootNode(spanRef.getRootNode());\n });\n\n return (\n <>\n <Show when={rootNode()} fallback={<span ref={setRef} />}>\n {(rootNode) => (\n <EnvironmentProvider value={() => rootNode()}>\n {props.children(rootNode())}\n </EnvironmentProvider>\n )}\n </Show>\n </>\n );\n};\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { Dialog } from \"@ark-ui/solid/dialog\";\nimport { JSX, ParentComponent, Show } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\nimport { SmartEnvironmentProvider } from \"./SmartEnvironmentProvider\";\n\nimport styles from \"./styles.module.scss\";\n\ntype ModalProps = {\n mountTarget: HTMLElement;\n headerImage?: JSX.Element;\n header?: string | JSX.Element;\n actions?: JSX.Element;\n showCloseButton?: boolean;\n onCloseClicked?: () => void;\n modalStyle?: \"compact\" | \"default\" | \"large\";\n} & Dialog.RootProps;\n\nexport const Modal: ParentComponent<ModalProps> = (props) => {\n const getPaddingClass = () => {\n switch (props.modalStyle) {\n case \"compact\":\n return styles.compact;\n case \"large\":\n return styles.compact;\n case \"default\":\n default:\n return undefined;\n }\n };\n\n return (\n <SmartEnvironmentProvider>\n {() => (\n <Dialog.Root\n // prevent closing by clicking outside\n onFocusOutside={(e) => e.preventDefault()}\n onInteractOutside={(e) => e.preventDefault()}\n restoreFocus\n unmountOnExit\n lazyMount\n // TODO: report bug to Ark UI\n // https://github.com/chakra-ui/zag/blob/a3ea8a50672aac3f25e5644d4708b9d8286a4302/CHANGELOG.md?plain=1#L1030C56-L1030C67\n // breaks focus trap\n // role=\"alertdialog\"\n {...props}\n >\n {/* Ark UI renders an empty portal even if it's not open, which is why\n we need to wrap it in a <Show>\n https://github.com/chakra-ui/ark/discussions/3252\n */}\n <Show when={props.open}>\n <Portal mount={props.mountTarget}>\n <Dialog.Positioner class={styles.dialogPositioner}>\n <Dialog.Backdrop class={styles.dialogBackdrop} />\n <Dialog.Content\n class={`${styles.dialogContent} ${getPaddingClass()}`}\n >\n {/* Close button */}\n <Show when={props.showCloseButton}>\n <Dialog.CloseTrigger\n class={styles.closeButton}\n onClick={props.onCloseClicked}\n >\n <span class={styles.closeButtonInner}>&times;</span>\n </Dialog.CloseTrigger>\n </Show>\n\n {/* headerImage */}\n <Show when={props.headerImage}>{props.headerImage}</Show>\n\n {/* header */}\n <Show when={props.header}>\n {(header) => (\n <Dialog.Title class={styles.dialogTitle}>\n {header()}\n </Dialog.Title>\n )}\n </Show>\n\n {/* Main content */}\n <Dialog.Description class={styles.contentOut}>\n {props.children}\n </Dialog.Description>\n\n {/* Action buttons */}\n <Show when={props.actions}>\n <div>{props.actions}</div>\n </Show>\n </Dialog.Content>\n </Dialog.Positioner>\n </Portal>\n </Show>\n </Dialog.Root>\n )}\n </SmartEnvironmentProvider>\n );\n};\n\ntype AlertModalProps = {\n mountTarget: HTMLElement;\n header: string;\n text: string;\n open: boolean;\n primaryButtonText?: string;\n secondaryButtonText?: string;\n onPrimaryClick: () => void;\n onSecondaryClick: () => void;\n};\n\nexport const AlertModal: ParentComponent<AlertModalProps> = ({\n mountTarget,\n header,\n text,\n open,\n onPrimaryClick,\n onSecondaryClick,\n primaryButtonText = \"Retry\",\n secondaryButtonText = \"Cancel\",\n}) => {\n let primaryButtonEl!: HTMLButtonElement;\n\n return (\n <Modal\n mountTarget={mountTarget}\n header={<span class={styles.alertTitle}>{header}</span>}\n initialFocusEl={() => primaryButtonEl}\n open={open}\n actions={\n <div class={styles.actions}>\n <button\n class={styles.secondaryActionButton}\n onClick={() => onSecondaryClick()}\n >\n {secondaryButtonText}\n </button>\n <button\n ref={primaryButtonEl}\n class={styles.primaryActionButton}\n onClick={() => onPrimaryClick()}\n >\n {primaryButtonText}\n </button>\n </div>\n }\n modalStyle=\"compact\"\n >\n <p class={styles.alertText}>{text}</p>\n </Modal>\n );\n};\n","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 280 197\"{...props}><path fill=\"#10B990\" d=\"M150 175.5c0 7.456-6.044 13.5-13.5 13.5-7.455 0-13.5-6.044-13.5-13.5s6.045-13.5 13.5-13.5c7.456 0 13.5 6.044 13.5 13.5M239.717 153.996H36.283c-5.667 0-10.283-4.574-10.283-10.2V22.201C26 16.578 30.61 12 36.283 12h203.434C245.384 12 250 16.574 250 22.2V143.8c0 5.623-4.612 10.201-10.283 10.201zM36.283 14.324c-4.382 0-7.945 3.535-7.945 7.882v121.593c0 4.347 3.563 7.882 7.945 7.882h203.434c4.381 0 7.944-3.535 7.944-7.882V22.201c0-4.346-3.563-7.881-7.944-7.881H36.283z\"/><path fill=\"#fff\" d=\"M142.651 171.333a1.214 1.214 0 0 0-1.292-.246 1.2 1.2 0 0 0-.385.246l-6.234 5.962-2.715-2.596a1.214 1.214 0 0 0-1.293-.246 1.2 1.2 0 0 0-.384.246q-.167.16-.258.368a1.1 1.1 0 0 0 .258 1.236l3.516 3.366c.231.222.535.331.838.331h.075c.304 0 .607-.109.839-.331l7.035-6.727a1.1 1.1 0 0 0 .349-.802 1.106 1.106 0 0 0-.349-.802z\"/><path fill=\"#142641\" d=\"M224.891 30H45.108C40.078 30 36 34.066 36 39.08v95.84c0 5.014 4.078 9.08 9.108 9.08H224.89c5.031 0 9.109-4.066 9.109-9.08V39.08c0-5.014-4.078-9.08-9.109-9.08\" opacity=\".3\"/><path fill=\"#fff\" d=\"M228.892 24H49.109C44.078 24 40 28.065 40 33.08v95.84c0 5.015 4.078 9.08 9.109 9.08h179.783c5.03 0 9.108-4.065 9.108-9.08V33.08c0-5.014-4.078-9.08-9.108-9.08\"/><path fill=\"#142641\" d=\"M228.741 139H49.259C43.605 139 39 134.419 39 128.785v-95.57C39 27.585 43.6 23 49.259 23H228.74C234.395 23 239 27.58 239 33.215v95.57c0 5.63-4.601 10.215-10.259 10.215M49.259 25.327c-4.372 0-7.927 3.54-7.927 7.893v95.569c0 4.353 3.555 7.893 7.927 7.893H228.74c4.371 0 7.926-3.54 7.926-7.893V33.216c0-4.353-3.555-7.893-7.926-7.893H49.259z\"/><path fill=\"#142641\" d=\"M81 82c-8.82 0-16-7.178-16-16s7.18-16 16-16c8.822 0 16 7.178 16 16s-7.178 16-16 16m0-29.662c-7.533 0-13.666 6.128-13.666 13.666s6.128 13.667 13.667 13.667c7.537 0 13.666-6.129 13.666-13.667S88.539 52.338 81 52.338\"/><path fill=\"#142641\" d=\"M106.989 102.79a1.167 1.167 0 0 1-1.165-1.168c0-10.42-10.878-18.895-24.248-18.895S57.33 91.2 57.33 101.622c0 .645-.522 1.168-1.165 1.168A1.166 1.166 0 0 1 55 101.622c0-11.707 11.921-21.234 26.576-21.234s26.577 9.528 26.577 21.234c0 .645-.521 1.168-1.164 1.168m101.224-43.344h-85.925a1.16 1.16 0 0 1-.823-.342 1.18 1.18 0 0 1-.342-.828c0-.645.522-1.17 1.165-1.17h85.925c.643 0 1.165.524 1.165 1.17s-.522 1.17-1.165 1.17m.176 16.485h-85.926a1.167 1.167 0 0 1-1.164-1.17c0-.645.522-1.168 1.164-1.168h85.926c.643 0 1.165.523 1.165 1.169s-.522 1.169-1.165 1.169m-23.683 16.346h-62.224a1.17 1.17 0 0 1-1.165-1.17c0-.644.523-1.168 1.165-1.168h62.224c.643 0 1.164.523 1.164 1.168 0 .646-.521 1.17-1.164 1.17m.028 30.709c-.471 0-.918-.291-1.09-.762a1.18 1.18 0 0 1 .685-1.507 15.1 15.1 0 0 0 5.44-3.545c-.755-.206-1.537-.571-2.138-1.197-.713-.748-1.048-1.74-.959-2.867.065-.889.433-1.787 1.057-2.595q.182-.237.363-.482c.592-.8 1.268-1.708 2.255-2.315 1.034-.636 2.245-.786 3.247-.398.927.355 1.617 1.146 1.938 2.231.28.935.238 1.964-.126 2.97a17 17 0 0 1-1.011 2.277 13.8 13.8 0 0 0 4.231-1.693 1.38 1.38 0 0 1 1.667.182c.447.431.555 1.119.251 1.666-.255.468-.498 1.094-.199 1.435.223.258.66.253.973.118.615-.272 1.062-.824 1.546-1.904a1.713 1.713 0 0 1 1.202-.969 1.73 1.73 0 0 1 1.514.413c1.183 1.07 2.828 1.636 4.384 1.519 1.798-.13 3.526-1.164 4.505-2.684a1.161 1.161 0 0 1 1.612-.351c.54.351.699 1.071.349 1.618-1.365 2.129-3.773 3.569-6.289 3.751a8.26 8.26 0 0 1-5.502-1.613c-.489.907-1.206 1.842-2.376 2.361-1.317.585-2.79.295-3.67-.72a2.88 2.88 0 0 1-.708-1.8 16 16 0 0 1-5.195 1.281 17.56 17.56 0 0 1-7.542 5.519 1.1 1.1 0 0 1-.405.075zm7.7-13.545c-.275 0-.591.094-.871.267-.606.369-1.09 1.024-1.602 1.716q-.197.267-.391.52c-.243.313-.537.799-.578 1.341-.047.613.158.908.316 1.072.401.421 1.212.687 2.18.73a15 15 0 0 0 1.729-3.364c.186-.524.219-1.061.084-1.505-.173-.575-.447-.683-.541-.72a.9.9 0 0 0-.326-.057m30.401-71.103H56.164A1.166 1.166 0 0 1 55 37.17c0-.646.521-1.17 1.164-1.17h166.671c.643 0 1.165.523 1.165 1.17 0 .644-.522 1.168-1.165 1.168m-115.846 81.879H56.164a1.16 1.16 0 0 1-.822-.342 1.18 1.18 0 0 1-.342-.828c0-.645.521-1.168 1.164-1.168h50.825c.643 0 1.164.523 1.164 1.168 0 .646-.521 1.17-1.164 1.17\"/></svg>","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { Modal } from \"@microblink/shared-components/Modal\";\nimport { type Component } from \"solid-js\";\nimport { useBlinkIdUiStore } from \"../BlinkIdUiStoreContext\";\n\nimport HelpCorrectFraming from \"../assets/help/help_correct_framing.svg?component-solid\";\n\nimport styles from \"./styles.module.scss\";\nimport { DialogTitle } from \"@ark-ui/solid\";\nimport { useLocalization } from \"../LocalizationContext\";\n\nexport const OnboardingGuideModal: Component = () => {\n const { t } = useLocalization();\n\n const { store, updateStore } = useBlinkIdUiStore();\n\n const modalVisible = () => store.showOnboardingGuide;\n const hideModal = () => {\n updateStore({ showOnboardingGuide: false });\n void store.blinkIdUxManager.cameraManager.startFrameCapture();\n };\n\n let startScanningBtnRef!: HTMLButtonElement;\n\n return (\n <Modal\n mountTarget={store.cameraManagerComponent.overlayLayerNode}\n initialFocusEl={() => startScanningBtnRef}\n open={modalVisible()}\n modalStyle=\"large\"\n >\n <div class={styles.onboardingGuide}>\n <div class={styles.content}>\n <div class={styles.header}>\n <HelpCorrectFraming />\n <div class={styles.textContent}>\n <DialogTitle>{t.onboarding_modal_title}</DialogTitle>\n <p>{t.onboarding_modal_details}</p>\n </div>\n </div>\n </div>\n <div class={styles.actions}>\n <button\n ref={startScanningBtnRef}\n class={styles.buttonPrimary}\n onClick={() => hideModal()}\n >\n {t.onboarding_modal_btn}\n </button>\n </div>\n </div>\n </Modal>\n );\n};\n","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 280 197\"{...props}><path fill=\"#F43F5E\" d=\"M150 175.5c0 7.456-6.044 13.5-13.5 13.5-7.455 0-13.5-6.044-13.5-13.5s6.045-13.5 13.5-13.5c7.456 0 13.5 6.044 13.5 13.5\"/><path fill=\"#fff\" d=\"m138.103 175.501 2.563-2.564a1.14 1.14 0 0 0 .333-.802 1.12 1.12 0 0 0-.333-.802 1.135 1.135 0 0 0-1.236-.247 1.1 1.1 0 0 0-.367.247l-2.563 2.564-2.563-2.564a1.135 1.135 0 0 0-1.603 1.604l2.563 2.564-2.563 2.565a1.131 1.131 0 0 0 .802 1.934c.289 0 .579-.109.801-.33l2.563-2.565 2.563 2.565c.222.221.512.33.801.33a1.132 1.132 0 0 0 .802-1.934z\"/><path fill=\"#142641\" d=\"M223.1 28H86.9c-3.81 0-6.9 3.067-6.9 6.85v72.3c0 3.783 3.09 6.85 6.9 6.85h136.2c3.811 0 6.9-3.067 6.9-6.85v-72.3c0-3.783-3.089-6.85-6.9-6.85\" opacity=\".3\"/><path fill=\"#fff\" d=\"M226.1 23H89.9c-3.81 0-6.9 3.066-6.9 6.85v72.3c0 3.784 3.09 6.85 6.9 6.85h136.2c3.811 0 6.9-3.066 6.9-6.85v-72.3c0-3.783-3.089-6.85-6.9-6.85\"/><path fill=\"#F43F5E\" fill-rule=\"evenodd\" d=\"M94 95c0-.552.45-1 1.006-1h64.988c.556 0 1.006.448 1.006 1s-.45 1-1.006 1H95.006A1.003 1.003 0 0 1 94 95\" clip-rule=\"evenodd\"/><path fill=\"#142641\" d=\"M86.204 114.895a7 7 0 0 1-.197-.304c-.287-.473-.579-.925-.874-1.38-2.837-4.382-5.908-9.125-6.36-36.155-.136-8.148-.081-19.483-.036-28.752.019-3.943.036-7.513.036-10.304C61.178 49.778 60.7 51.017 54.456 67.186a660 660 0 0 1-3.88 9.87c-9.27 22.957-9.071 38.414-8.167 48.304.578 6.325 1.7 12.626 3.353 18.761l3.373 12.526c.85 3.158 3.733 5.353 7.015 5.353h34.072c4.168 0 7.94-2.507 9.257-6.447 1.022-3.055 1.969-6.21 2.898-9.303.748-2.493 1.484-4.946 2.239-7.277a275 275 0 0 0 2.126-6.841l23.344-25.859c4.406-4.879 3.734-12.473-1.461-16.511a11.33 11.33 0 0 0-14.451.446z\" opacity=\".3\"/><path fill=\"#142641\" fill-rule=\"evenodd\" d=\"M90.852 24.001a5.853 5.853 0 0 0-5.856 5.85v72.298a5.853 5.853 0 0 0 5.856 5.85h135.296a5.853 5.853 0 0 0 5.856-5.85V29.851a5.853 5.853 0 0 0-5.856-5.85zM83 29.851A7.85 7.85 0 0 1 90.852 22h135.296A7.85 7.85 0 0 1 234 29.85v72.299a7.85 7.85 0 0 1-7.852 7.851H90.852A7.85 7.85 0 0 1 83 102.149z\" clip-rule=\"evenodd\"/><path fill=\"#fff\" fill-rule=\"evenodd\" d=\"M90.061 104.73c-1.222-.761-2.377-1.906-3.38-3.555-.636-1.042-1.111-1.791-1.47-2.592-1.37-3.05-1.053-6.846-1.45-30.49-.137-8.18-.08-20.081-.036-29.674.02-4.03.036-7.651.036-10.419-20.716 13.819-25.98 24.099-36.488 50.03-10.175 25.107-7.267 38.726-5.44 47.288l.077.359c.517 2.424.864 4.881 1.212 7.338.219 1.547.438 3.094.699 4.633l2.43 14.327c.59 3.478 3.635 6.025 7.19 6.025h33.622c4.184 0 7.97-2.507 9.292-6.447 1.026-3.056 1.976-6.212 2.908-9.306.752-2.494 1.491-4.948 2.248-7.279a275 275 0 0 0 2.124-6.807l23.442-25.876c4.42-4.88 3.745-12.473-1.468-16.511-4.315-3.343-10.407-3.156-14.502.445z\" clip-rule=\"evenodd\"/><path fill=\"#142641\" fill-rule=\"evenodd\" d=\"m84.765 26-1.564 1.044c-10.427 6.964-17.026 13.077-22.337 20.757-5.29 7.65-9.27 16.81-14.519 29.779-5.124 12.657-6.97 22.46-7.292 30.21-.322 7.746.883 13.396 1.8 17.694l.078.369c.509 2.388.852 4.813 1.2 7.278l.001.007c.218 1.544.439 3.104.702 4.657l2.43 14.342c.672 3.964 4.137 6.863 8.179 6.863h33.62c4.58 0 8.775-2.752 10.244-7.135 1.03-3.075 1.984-6.246 2.915-9.339l.002-.007c.752-2.498 1.488-4.944 2.241-7.265a279 279 0 0 0 2.067-6.621l23.287-25.734c4.81-5.315 4.075-13.583-1.596-17.981-4.696-3.642-11.327-3.439-15.784.485l-20.454 18.01c-.859-.657-1.69-1.566-2.446-2.808l-.22-.361c-.532-.873-.903-1.48-1.192-2.124-.596-1.329-.86-2.862-1.002-7.157-.08-2.436-.122-5.7-.179-10.245-.043-3.443-.095-7.62-.18-12.729-.138-8.175-.082-20.076-.037-29.682v-.003c.02-4.032.036-7.66.036-10.432zm-2.01 3.76c-.005 2.447-.019 5.365-.033 8.537v.01c-.046 9.596-.102 21.516.036 29.715.085 5.074.137 9.241.18 12.685.058 4.572.099 7.87.18 10.322.141 4.285.402 6.179 1.175 7.903.344.767.787 1.491 1.307 2.344q.11.176.22.361c1.076 1.768 2.338 3.034 3.708 3.887l.636.397 21.607-19.025a10.38 10.38 0 0 1 13.217-.406c4.754 3.687 5.369 10.62 1.338 15.075l-23.592 26.07-.064.218a277 277 0 0 1-2.116 6.789c-.76 2.343-1.502 4.808-2.252 7.3l-.002.006c-.933 3.1-1.879 6.244-2.898 9.286-1.175 3.505-4.553 5.771-8.34 5.771H53.444c-3.065 0-5.69-2.199-6.199-5.199l-2.43-14.342a170 170 0 0 1-.694-4.61l-.003-.017c-.346-2.448-.697-4.936-1.221-7.396l-.077-.36c-.91-4.271-2.07-9.719-1.76-17.209.312-7.493 2.099-17.072 7.149-29.548 5.258-12.989 9.164-21.951 14.31-29.394C67.38 41.9 73.377 36.19 82.756 29.76\" clip-rule=\"evenodd\"/><path fill=\"#142641\" fill-rule=\"evenodd\" d=\"M92.209 102.843a1.007 1.007 0 0 0-1.342.459c-.306.623-.998 1.36-2.044 2.125-1.027.751-2.31 1.468-3.682 2.078a23.8 23.8 0 0 1-4.119 1.409c-1.331.313-2.475.423-3.293.325a1.003 1.003 0 0 0-1.116.871 1 1 0 0 0 .876 1.11c1.153.138 2.559-.027 3.995-.364a26 26 0 0 0 4.477-1.53c1.47-.654 2.885-1.439 4.052-2.292 1.146-.839 2.143-1.807 2.658-2.857a.995.995 0 0 0-.462-1.334\" clip-rule=\"evenodd\"/><path fill=\"#142641\" d=\"M114 67c-6.616 0-12-5.383-12-12s5.384-12 12-12 12 5.383 12 12c0 6.616-5.384 12-12 12m0-22.247c-5.65 0-10.249 4.596-10.249 10.25s4.596 10.25 10.249 10.25 10.25-4.596 10.25-10.25-4.596-10.25-10.25-10.25\"/><path fill=\"#142641\" fill-rule=\"evenodd\" d=\"M145 49c0-.552.449-1 1.003-1h64.994c.554 0 1.003.448 1.003 1s-.449 1-1.003 1h-64.994A1 1 0 0 1 145 49M145 61c0-.552.449-1 1.003-1h64.994c.554 0 1.003.448 1.003 1s-.449 1-1.003 1h-64.994A1 1 0 0 1 145 61M94 34c0-.552.446-1 .997-1h125.006c.551 0 .997.448.997 1s-.446 1-.997 1H94.997A1 1 0 0 1 94 34M145 74c0-.552.451-1 1.007-1h46.986c.556 0 1.007.448 1.007 1s-.451 1-1.007 1h-46.986A1.004 1.004 0 0 1 145 74M114 66.984c-10.183 0-18.019 6.485-18.019 14.024a.991.991 0 1 1-1.981 0C94 71.961 103.186 65 114 65s20 6.96 20 16.008a.992.992 0 1 1-1.981 0c0-7.54-7.836-14.024-18.019-14.024\" clip-rule=\"evenodd\"/><path fill=\"#142641\" d=\"M196.809 95.99a.81.81 0 0 1-.735-1.147.81.81 0 0 1 .453-.423 10.5 10.5 0 0 0 3.789-2.454c-.526-.142-1.071-.394-1.489-.829-.497-.517-.73-1.204-.668-1.984.045-.615.301-1.236.736-1.796q.127-.164.253-.334c.412-.553.883-1.181 1.57-1.602.721-.44 1.564-.54 2.262-.276.645.247 1.125.794 1.349 1.545.195.648.166 1.36-.087 2.056a12 12 0 0 1-.705 1.576 9.6 9.6 0 0 0 2.947-1.172.96.96 0 0 1 1.443.673.96.96 0 0 1-.107.606c-.178.323-.347.757-.139.993.156.179.46.175.678.082.428-.188.739-.57 1.077-1.318a1.19 1.19 0 0 1 1.398-.653c.183.05.352.141.493.268a4.2 4.2 0 0 0 3.053 1.052 4.17 4.17 0 0 0 3.137-1.858.815.815 0 0 1 1.462.275.8.8 0 0 1-.096.602c-.951 1.473-2.628 2.47-4.379 2.596a5.77 5.77 0 0 1-3.832-1.117c-.341.629-.84 1.276-1.655 1.635-.918.404-1.943.204-2.556-.499a2 2 0 0 1-.493-1.245 11.2 11.2 0 0 1-3.618.886 12.2 12.2 0 0 1-5.252 3.82.8.8 0 0 1-.282.052zm5.363-9.375c-.192 0-.412.065-.607.185-.422.256-.759.709-1.116 1.188q-.137.184-.272.36c-.169.216-.373.553-.403.928-.032.424.111.628.221.742.279.291.844.476 1.518.505.499-.722.903-1.504 1.204-2.328.129-.362.152-.735.059-1.042-.121-.398-.312-.473-.377-.499a.7.7 0 0 0-.227-.039\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 280 197\"{...props}><path fill=\"#F43F5E\" d=\"M150 175.5c0 7.456-6.044 13.5-13.5 13.5-7.455 0-13.5-6.044-13.5-13.5s6.045-13.5 13.5-13.5c7.456 0 13.5 6.044 13.5 13.5M239.717 153.996H36.283c-5.667 0-10.283-4.574-10.283-10.2V22.201C26 16.578 30.61 12 36.283 12h203.434C245.384 12 250 16.574 250 22.2V143.8c0 5.623-4.612 10.201-10.283 10.201zM36.283 14.324c-4.382 0-7.945 3.535-7.945 7.882v121.593c0 4.347 3.563 7.882 7.945 7.882h203.434c4.381 0 7.944-3.535 7.944-7.882V22.201c0-4.346-3.563-7.881-7.944-7.881H36.283z\"/><path fill=\"#fff\" d=\"m138.103 175.501 2.563-2.564a1.14 1.14 0 0 0 .333-.802 1.12 1.12 0 0 0-.333-.802 1.135 1.135 0 0 0-1.236-.247 1.1 1.1 0 0 0-.367.247l-2.563 2.564-2.563-2.564a1.135 1.135 0 0 0-1.603 1.604l2.563 2.564-2.563 2.565a1.131 1.131 0 0 0 .802 1.934c.289 0 .579-.109.801-.33l2.563-2.565 2.563 2.565c.222.221.512.33.801.33a1.132 1.132 0 0 0 .802-1.934z\"/><path fill=\"#142641\" d=\"M225.891 30H46.108a9.12 9.12 0 0 0-6.44 2.66A9.07 9.07 0 0 0 37 39.08v95.839a9.05 9.05 0 0 0 2.667 6.421 9.13 9.13 0 0 0 6.44 2.66h179.784a9.14 9.14 0 0 0 6.441-2.659 9.1 9.1 0 0 0 1.975-2.947 9.05 9.05 0 0 0 .693-3.475v-95.84a9.07 9.07 0 0 0-5.623-8.388 9.1 9.1 0 0 0-3.486-.691\" opacity=\".3\"/><path fill=\"#fff\" d=\"M229.892 24H50.109a9.13 9.13 0 0 0-6.441 2.66A9.08 9.08 0 0 0 41 33.08v95.839a9 9 0 0 0 .693 3.475 9.1 9.1 0 0 0 4.93 4.915 9.1 9.1 0 0 0 3.486.691h179.783a9.129 9.129 0 0 0 6.441-2.66 9.07 9.07 0 0 0 2.667-6.421v-95.84c0-2.407-.96-4.717-2.668-6.42a9.12 9.12 0 0 0-6.44-2.659\"/><path fill=\"#142641\" d=\"M229.741 140H50.259C44.605 140 40 135.379 40 129.696V33.304C40 27.624 44.6 23 50.259 23H229.74C235.395 23 240 27.62 240 33.304v96.392c0 5.679-4.6 10.304-10.259 10.304M50.259 25.348c-4.37 0-7.926 3.57-7.926 7.96V129.7c0 4.391 3.555 7.961 7.926 7.961H229.74c4.372 0 7.927-3.57 7.927-7.961V33.304c0-4.39-3.555-7.961-7.927-7.961H50.259z\"/><path fill=\"#142641\" d=\"M82 83c-8.822 0-16-7.178-16-16 0-8.82 7.178-16 16-16s16 7.18 16 16c0 8.822-7.178 16-16 16m0-29.662c-7.533 0-13.667 6.13-13.667 13.666 0 7.539 6.129 13.667 13.667 13.667s13.667-6.128 13.667-13.667c0-7.537-6.129-13.666-13.667-13.666\"/><path fill=\"#142641\" d=\"M107.989 102.791c-.309 0-.605-.124-.823-.343a1.17 1.17 0 0 1-.342-.827c0-10.42-10.877-18.894-24.247-18.894S58.33 91.202 58.33 101.621a1.17 1.17 0 0 1-1.165 1.136c-.303 0-.594-.119-.811-.331a1.17 1.17 0 0 1-.353-.805c0-11.705 11.921-21.232 26.576-21.232s26.576 9.527 26.576 21.232c0 .646-.521 1.17-1.164 1.17m101.223-43.346h-85.925a1.16 1.16 0 0 1-.801-.354 1.174 1.174 0 0 1 0-1.63c.211-.218.498-.345.801-.354h85.925a1.169 1.169 0 0 1 0 2.338m.178 16.486h-85.926a1.169 1.169 0 0 1-.823-1.996 1.16 1.16 0 0 1 .823-.342h85.926a1.163 1.163 0 0 1 1.13 1.17 1.163 1.163 0 0 1-1.13 1.169m-23.684 16.346h-62.223a1.165 1.165 0 0 1-1.131-1.17 1.165 1.165 0 0 1 1.131-1.17h62.223a1.164 1.164 0 0 1 1.131 1.17 1.164 1.164 0 0 1-1.131 1.169m.028 30.709c-.471 0-.918-.291-1.09-.763a1.18 1.18 0 0 1 .034-.894c.128-.282.362-.502.651-.612a15.1 15.1 0 0 0 5.44-3.545c-.754-.205-1.537-.57-2.138-1.197-.713-.748-1.048-1.74-.959-2.867.065-.889.433-1.787 1.057-2.595q.183-.239.363-.482c.592-.8 1.268-1.707 2.255-2.315 1.035-.637 2.245-.781 3.248-.398.926.356 1.616 1.146 1.937 2.231.28.936.238 1.964-.126 2.97q-.42 1.176-1.011 2.277a13.8 13.8 0 0 0 4.231-1.693 1.374 1.374 0 0 1 2.071.973c.047.301-.007.608-.153.874-.255.468-.498 1.095-.199 1.437.223.257.661.252.973.117.615-.272 1.062-.824 1.546-1.904a1.71 1.71 0 0 1 1.202-.968 1.74 1.74 0 0 1 1.514.411c1.183 1.072 2.832 1.637 4.384 1.521 1.799-.132 3.527-1.165 4.505-2.685a1.165 1.165 0 0 1 2.099.398c.068.297.019.609-.138.87-1.365 2.127-3.773 3.567-6.289 3.75a8.25 8.25 0 0 1-5.502-1.614c-.489.908-1.206 1.843-2.376 2.362-1.317.585-2.79.295-3.67-.72a2.88 2.88 0 0 1-.708-1.8 16 16 0 0 1-5.195 1.281 17.57 17.57 0 0 1-7.541 5.519 1.2 1.2 0 0 1-.406.075zm7.701-13.545c-.276 0-.592.094-.872.267-.606.37-1.09 1.024-1.602 1.717q-.197.266-.391.519c-.243.313-.536.8-.578 1.342-.047.612.158.907.316 1.071.401.421 1.212.688 2.18.73a14.9 14.9 0 0 0 1.729-3.364c.186-.523.219-1.061.084-1.505-.173-.575-.447-.683-.541-.72a.9.9 0 0 0-.325-.057m30.4-71.102H57.165c-.309 0-.605-.123-.824-.342A1.172 1.172 0 0 1 57.165 36h166.67A1.164 1.164 0 0 1 225 37.17a1.164 1.164 0 0 1-1.165 1.17m-115.846 81.878H57.165a1.164 1.164 0 0 1-1.13-1.169 1.164 1.164 0 0 1 1.13-1.169h50.824a1.165 1.165 0 0 1 1.165 1.169 1.165 1.165 0 0 1-1.165 1.169\"/><path fill=\"#F9FAFB\" d=\"M101.772 23 54 139.999h47.772L144.158 23zm56.203 0-47.772 117 7.727-.001L165 23z\" opacity=\".95\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 280 197\"{...props}><path fill=\"#F43F5E\" d=\"M150 175.5c0 7.456-6.044 13.5-13.5 13.5-7.455 0-13.5-6.044-13.5-13.5s6.045-13.5 13.5-13.5c7.456 0 13.5 6.044 13.5 13.5\"/><path fill=\"#142641\" d=\"M225.893 29.001H46.109a9.13 9.13 0 0 0-6.441 2.66A9.08 9.08 0 0 0 37 38.08v95.839a9.06 9.06 0 0 0 2.668 6.421 9.1 9.1 0 0 0 6.44 2.659h179.784a9.12 9.12 0 0 0 6.44-2.659A9.07 9.07 0 0 0 235 133.92V38.08a9.05 9.05 0 0 0-2.667-6.42 9.11 9.11 0 0 0-6.441-2.66z\" opacity=\".3\"/><path fill=\"#fff\" d=\"M230.892 24H51.108a9.12 9.12 0 0 0-6.44 2.66A9.07 9.07 0 0 0 42 33.08v95.839a9.05 9.05 0 0 0 2.667 6.421 9.13 9.13 0 0 0 6.44 2.66h179.785a9.129 9.129 0 0 0 6.441-2.66 9.07 9.07 0 0 0 2.667-6.421v-95.84c0-2.407-.96-4.717-2.668-6.42a9.12 9.12 0 0 0-6.44-2.659\"/><g fill=\"#142641\" opacity=\".4\"><path d=\"M229.741 139H50.259C44.605 139 40 134.38 40 128.696V32.304C40 26.624 44.6 22 50.259 22H229.74C235.395 22 240 26.62 240 32.304v96.392c0 5.679-4.6 10.304-10.259 10.304M50.259 24.348c-4.372 0-7.927 3.57-7.927 7.961v96.392c0 4.39 3.555 7.96 7.927 7.96H229.74c4.372 0 7.927-3.57 7.927-7.96V32.304c0-4.39-3.555-7.961-7.927-7.961H50.259z\"/><path d=\"M82 82c-8.822 0-16-7.178-16-16 0-8.82 7.178-16 16-16 8.82 0 16 7.178 16 16 0 8.82-7.18 16-16 16m0-29.66c-7.534 0-13.667 6.127-13.667 13.665S74.463 79.673 82 79.673c7.538 0 13.666-6.13 13.666-13.666 0-7.539-6.128-13.667-13.666-13.667\"/><path d=\"M108.026 101.791a1.172 1.172 0 0 1-1.165-1.169c0-10.42-10.876-18.895-24.246-18.895S58.368 90.2 58.368 100.622a1.163 1.163 0 1 1-2.329 0c0-11.707 11.92-21.234 26.576-21.234 14.655 0 26.576 9.527 26.576 21.234 0 .645-.522 1.169-1.165 1.169m101.216-43.345h-85.923a1.164 1.164 0 0 1-1.165-1.17 1.164 1.164 0 0 1 1.165-1.17h85.923a1.17 1.17 0 0 1 .824 1.997c-.218.22-.515.343-.824.343m.182 16.486h-85.922a1.17 1.17 0 0 1-.824-1.997c.218-.22.515-.343.824-.343h85.922a1.164 1.164 0 0 1 1.165 1.17 1.164 1.164 0 0 1-1.165 1.17m-23.683 16.346h-62.226a1.17 1.17 0 0 1-.824-1.996c.218-.22.515-.344.824-.344h62.221a1.17 1.17 0 0 1 .824 1.997c-.218.22-.515.343-.824.343zm.023 30.708c-.47 0-.917-.29-1.09-.763a1.174 1.174 0 0 1 .685-1.505 15.1 15.1 0 0 0 5.441-3.546c-.754-.205-1.537-.57-2.138-1.196-.713-.749-1.048-1.74-.96-2.868.066-.889.433-1.787 1.058-2.595.121-.16.241-.318.363-.482.591-.8 1.267-1.707 2.254-2.316 1.034-.635 2.246-.78 3.247-.396.928.354 1.617 1.145 1.938 2.23.279.936.238 1.965-.126 2.97a17 17 0 0 1-1.01 2.278 13.7 13.7 0 0 0 4.229-1.694 1.37 1.37 0 0 1 1.668.183c.448.431.554 1.118.252 1.665-.257.467-.499 1.095-.201 1.435.224.258.662.253.974.118.615-.272 1.062-.823 1.547-1.903a1.7 1.7 0 0 1 2.007-.943c.263.071.505.203.708.385 1.184 1.072 2.828 1.638 4.384 1.521 1.798-.132 3.526-1.165 4.504-2.685a1.164 1.164 0 0 1 2.099.398c.069.297.019.609-.137.87-1.365 2.127-3.774 3.568-6.289 3.751a8.26 8.26 0 0 1-5.501-1.614c-.489.907-1.207 1.842-2.376 2.361-1.319.586-2.791.295-3.671-.719a2.9 2.9 0 0 1-.708-1.801 16 16 0 0 1-5.194 1.282c-1.956 2.464-4.575 4.405-7.542 5.518q-.202.077-.406.075zm7.701-13.545c-.309.009-.61.101-.872.267-.605.37-1.09 1.024-1.602 1.717q-.192.261-.391.519c-.243.313-.536.799-.578 1.342-.046.613.158.908.317 1.071.4.421 1.211.688 2.18.73a15 15 0 0 0 1.728-3.363c.187-.524.219-1.062.084-1.506-.173-.575-.447-.683-.54-.721a.9.9 0 0 0-.326-.056m30.404-71.103H57.199a1.16 1.16 0 0 1-.802-.354A1.172 1.172 0 0 1 57.2 35h166.67A1.164 1.164 0 0 1 225 36.17a1.163 1.163 0 0 1-1.131 1.169m-115.843 81.879H57.199A1.165 1.165 0 0 1 56 118.048a1.17 1.17 0 0 1 .743-1.09c.145-.057.3-.084.456-.079h50.822a1.164 1.164 0 0 1 1.107 1.169 1.17 1.17 0 0 1-1.107 1.169z\"/></g><g fill=\"#142641\" opacity=\".3\"><path d=\"m230.991 136.742-179.244 4.255c-5.647.136-10.35-4.367-10.485-10.035l-2.259-96.18c-.135-5.669 4.353-10.388 10.001-10.523l179.243-4.256c5.648-.135 10.35 4.37 10.485 10.036l2.265 96.175c.135 5.669-4.352 10.388-10.001 10.523zM49.059 26.597c-4.362.103-7.83 3.751-7.726 8.128l2.264 96.175c.102 4.378 3.737 7.857 8.1 7.754l179.242-4.255c4.362-.103 7.829-3.751 7.727-8.128l-2.265-96.175c-.102-4.378-3.737-7.857-8.099-7.754z\"/><path d=\"M82.378 82.995c-8.822.21-16.163-6.796-16.373-15.617S72.8 51.215 81.622 51.005 97.785 57.8 97.995 66.62 91.2 82.785 82.378 82.995m-.7-29.657c-7.534.177-13.518 6.451-13.34 13.984.177 7.533 6.45 13.517 13.984 13.339s13.518-6.45 13.34-13.984c-.177-7.533-6.45-13.517-13.984-13.339\"/><path d=\"M108.547 102.403a1.17 1.17 0 0 1-1.193-1.14c-.247-10.397-11.326-18.601-24.697-18.284s-24.053 9.034-23.807 19.433a1.17 1.17 0 0 1-1.138 1.144 1.17 1.17 0 0 1-1.192-1.088c-.275-11.686 11.423-21.473 26.08-21.824 14.659-.345 26.809 8.876 27.084 20.563a1.168 1.168 0 0 1-1.137 1.196m100.222-45.66-85.942 2.036a1.168 1.168 0 0 1-.056-2.335l85.942-2.036a1.164 1.164 0 0 1 1.142 1.14 1.17 1.17 0 0 1-1.086 1.195m.569 16.45-85.943 2.035a1.164 1.164 0 0 1-1.193-1.14 1.17 1.17 0 0 1 1.137-1.195l85.943-2.035a1.166 1.166 0 0 1 1.174 1.14 1.17 1.17 0 0 1-1.118 1.194M186.03 90.072l-62.233 1.475a1.165 1.165 0 0 1-1.155-1.14 1.17 1.17 0 0 1 1.099-1.195l62.233-1.475a1.166 1.166 0 0 1 1.174 1.14 1.17 1.17 0 0 1-1.118 1.195m.75 30.648a1.163 1.163 0 0 1-1.162-.933 1.17 1.17 0 0 1 .701-1.317 15.15 15.15 0 0 0 5.36-3.67c-.76-.187-1.552-.533-2.167-1.149-.732-.728-1.086-1.709-1.03-2.839.046-.887.392-1.793.997-2.615q.176-.238.349-.49c.574-.813 1.227-1.737 2.201-2.362 1.015-.659 2.228-.837 3.238-.477.937.332 1.646 1.107 1.996 2.181.302.929.283 1.952-.056 2.969a16.4 16.4 0 0 1-.961 2.297 13.7 13.7 0 0 0 4.191-1.788 1.38 1.38 0 0 1 1.673.14c.461.421.578 1.102.293 1.657-.242.473-.47 1.103-.168 1.434.233.252.667.238.979.093.606-.284 1.044-.849 1.505-1.937a1.71 1.71 0 0 1 1.986-.99c.265.065.511.191.718.369 1.207 1.036 2.866 1.569 4.418 1.415 1.799-.178 3.501-1.242 4.441-2.788a1.166 1.166 0 0 1 1.991 1.219c-1.315 2.157-3.691 3.651-6.203 3.894a8.28 8.28 0 0 1-5.542-1.48c-.47.914-1.161 1.867-2.321 2.413-1.305.613-2.788.36-3.686-.63a2.88 2.88 0 0 1-.755-1.779 15.9 15.9 0 0 1-5.165 1.401c-1.901 2.507-4.469 4.506-7.41 5.687q-.203.078-.406.084zm7.383-13.699a1.7 1.7 0 0 0-.867.285c-.596.382-1.063 1.045-1.561 1.751q-.189.266-.378.527c-.232.317-.517.807-.545 1.35-.033.611.182.9.345 1.064.41.41 1.23.659 2.2.677a14.5 14.5 0 0 0 1.645-3.399c.178-.528.196-1.065.052-1.508-.187-.574-.467-.672-.56-.705a.9.9 0 0 0-.331-.047zm28.738-71.686-166.707 3.95A1.165 1.165 0 0 1 55 38.145a1.17 1.17 0 0 1 1.138-1.195L222.845 33a1.171 1.171 0 0 1 .846 1.96 1.16 1.16 0 0 1-.79.375m-113.944 84.46L58.123 121a1.169 1.169 0 0 1-.056-2.334l50.834-1.205a1.17 1.17 0 0 1 .844.315 1.16 1.16 0 0 1 .368.824 1.167 1.167 0 0 1-1.156 1.195\"/></g><g fill=\"#142641\" opacity=\".2\"><path d=\"m233.237 132.957-179.59 9.03c-5.66.283-10.497-4.064-10.782-9.695L38.013 36.77c-.284-5.632 4.086-10.444 9.745-10.727l179.589-9.03c5.661-.284 10.499 4.064 10.784 9.695l4.856 95.527c.285 5.631-4.085 10.443-9.746 10.727zM47.876 28.363c-4.375.219-7.75 3.938-7.53 8.285l4.856 95.528c.22 4.347 3.959 7.709 8.33 7.49l179.588-9.03c4.375-.218 7.749-3.937 7.53-8.285l-4.857-95.527c-.219-4.348-3.959-7.71-8.329-7.49z\"/><path d=\"M82.808 83.98c-8.814.443-16.344-6.363-16.788-15.173s6.363-16.344 15.173-16.786c8.809-.445 16.343 6.362 16.786 15.171.445 8.814-6.362 16.344-15.17 16.788m-1.5-29.632c-7.524.38-13.34 6.817-12.958 14.343s6.816 13.342 14.341 12.959 13.342-6.816 12.959-14.342c-.383-7.525-6.816-13.342-14.34-12.959z\"/><path d=\"M109.292 102.14a1.2 1.2 0 0 1-.45-.066 1.15 1.15 0 0 1-.39-.233 1.152 1.152 0 0 1-.382-.803c-.522-10.343-11.828-18.209-25.197-17.534-13.367.673-23.82 9.636-23.292 19.979a1.16 1.16 0 0 1-1.106 1.219 1.165 1.165 0 0 1-1.223-1.102c-.587-11.622 10.854-21.677 25.51-22.416 14.655-.74 27.057 8.116 27.645 19.738a1.16 1.16 0 0 1-1.106 1.218zm99.037-48.132-85.925 4.328a1.17 1.17 0 0 1-1.111-.662 1.159 1.159 0 0 1 .994-1.657l85.926-4.329a1.17 1.17 0 0 1 1.111.662 1.16 1.16 0 0 1-.995 1.658m1.012 16.359-85.925 4.327a1.165 1.165 0 0 1-1.156-1.55 1.17 1.17 0 0 1 1.039-.769l85.926-4.328a1.164 1.164 0 0 1 1.156 1.55 1.17 1.17 0 0 1-1.04.77m-22.859 17.422-62.222 3.134a1.166 1.166 0 0 1-1.222-1.102 1.16 1.16 0 0 1 1.106-1.218l62.221-3.133a1.17 1.17 0 0 1 1.111.662 1.155 1.155 0 0 1-.188 1.276 1.17 1.17 0 0 1-.806.381m1.572 30.482a1.17 1.17 0 0 1-1.191-.899 1.165 1.165 0 0 1 .669-1.332 15.15 15.15 0 0 0 5.261-3.794c-.77-.167-1.567-.488-2.197-1.083-.751-.707-1.133-1.674-1.105-2.799.023-.883.344-1.794.928-2.63q.167-.247.34-.498c.556-.823 1.18-1.758 2.137-2.413 1.002-.683 2.206-.893 3.227-.562.947.307 1.674 1.06 2.052 2.115.327.915.336 1.938.024 2.956a16 16 0 0 1-.9 2.31 13.8 13.8 0 0 0 4.141-1.891 1.38 1.38 0 0 1 1.681.094 1.37 1.37 0 0 1 .334 1.644c-.232.474-.442 1.112-.13 1.433.237.246.671.218.979.064.602-.302 1.022-.873 1.451-1.966a1.71 1.71 0 0 1 1.964-1.038c.266.058.516.178.727.35 1.236 1 2.91 1.483 4.46 1.293a6 6 0 0 0 2.518-.946 5.95 5.95 0 0 0 1.847-1.951 1.15 1.15 0 0 1 .706-.543 1.16 1.16 0 0 1 .885.115c.559.321.75 1.032.428 1.585-1.259 2.181-3.596 3.734-6.1 4.045a8.3 8.3 0 0 1-5.584-1.325c-.442.925-1.114 1.887-2.256 2.464-1.288.646-2.776.432-3.709-.53a2.87 2.87 0 0 1-.802-1.753 16 16 0 0 1-5.131 1.534c-1.833 2.543-4.351 4.607-7.262 5.857a1.1 1.1 0 0 1-.402.094zm7.02-13.834a1.7 1.7 0 0 0-.859.306c-.588.4-1.035 1.074-1.515 1.786-.122.181-.243.362-.364.533-.224.321-.495.819-.509 1.358-.014.609.205.893.374 1.051.424.4 1.246.623 2.215.614a14.7 14.7 0 0 0 1.558-3.427c.163-.53.163-1.064.009-1.501-.201-.563-.484-.656-.578-.688a.9.9 0 0 0-.331-.037zm26.819-72.114-166.67 8.394a1.17 1.17 0 0 1-1.11-.662 1.16 1.16 0 0 1 .553-1.547c.138-.066.288-.104.44-.111l166.67-8.395a1.167 1.167 0 0 1 1.223 1.101 1.16 1.16 0 0 1-.665 1.108 1.2 1.2 0 0 1-.441.111m-111.724 87.114-50.822 2.562a1.2 1.2 0 0 1-.45-.066 1.18 1.18 0 0 1-.661-.596 1.157 1.157 0 0 1 .553-1.547c.138-.065.288-.103.44-.11l50.823-2.563a1.18 1.18 0 0 1 1.111.663c.066.138.104.287.111.439q.012.231-.066.449a1.168 1.168 0 0 1-1.039.769\"/></g><g fill=\"#142641\" opacity=\".2\"><path d=\"m227.168 142.986-179.435-9.401c-5.656-.294-10.013-5.143-9.719-10.804l5.025-96.038c.294-5.662 5.138-10.023 10.794-9.729l179.433 9.402c5.657.294 10.014 5.142 9.72 10.804l-5.021 96.038c-.294 5.661-5.137 10.022-10.793 9.728zM53.706 19.352c-4.366-.23-8.107 3.142-8.336 7.518l-5.021 96.037c-.228 4.371 3.138 8.116 7.51 8.345l179.435 9.402c4.366.228 8.107-3.142 8.336-7.518l5.02-96.038c.229-4.371-3.138-8.116-7.51-8.345z\"/><path d=\"M82.165 77.978c-8.808-.462-15.604-8.005-15.143-16.813.463-8.808 8.006-15.604 16.814-15.143 8.808.462 15.603 8.006 15.142 16.814S90.973 78.44 82.165 77.978m1.55-29.626c-7.525-.392-13.966 5.41-14.363 12.934-.397 7.525 5.41 13.966 12.934 14.363 7.525.392 13.966-5.41 14.363-12.935.391-7.524-5.41-13.965-12.934-14.362\"/><path d=\"M106.723 99.65a1.17 1.17 0 0 1-.805-.388 1.19 1.19 0 0 1-.299-.847c.541-10.448-9.88-19.517-23.231-20.226s-24.659 7.223-25.199 17.667a1.18 1.18 0 0 1-.394.792 1.16 1.16 0 0 1-1.626-.086 1.18 1.18 0 0 1-.31-.829c.611-11.739 13.012-20.662 27.65-19.892 14.632.771 26.045 10.951 25.435 22.691a1.18 1.18 0 0 1-.384.812 1.16 1.16 0 0 1-.841.301zm103.342-38.13-85.811-4.528a1.16 1.16 0 0 1-.806-.387 1.18 1.18 0 0 1 .086-1.66 1.16 1.16 0 0 1 .841-.3l85.811 4.527c.3.028.578.171.775.401a1.18 1.18 0 0 1-.084 1.628c-.22.208-.511.322-.812.318m-.675 16.538-85.811-4.527a1.16 1.16 0 0 1-.806-.387 1.18 1.18 0 0 1 .086-1.66c.229-.209.532-.317.841-.3l85.811 4.526c.309.017.598.156.806.387a1.18 1.18 0 0 1-.086 1.66 1.16 1.16 0 0 1-.841.301m-24.505 15.144-62.141-3.277a1.17 1.17 0 0 1-.806-.387 1.18 1.18 0 0 1 .086-1.66 1.16 1.16 0 0 1 .841-.302l62.141 3.279c.297.032.57.178.763.407a1.181 1.181 0 0 1-.884 1.94m-1.575 30.791a1.164 1.164 0 0 1-1.09-1.025 1.18 1.18 0 0 1 .802-1.267 15.1 15.1 0 0 0 5.618-3.268c-.746-.248-1.504-.653-2.073-1.315-.675-.789-.955-1.798-.811-2.925.112-.888.527-1.766 1.193-2.545q.195-.226.386-.465c.634-.771 1.352-1.644 2.372-2.203 1.062-.582 2.287-.667 3.266-.23.908.404 1.556 1.236 1.821 2.338.233.954.135 1.983-.279 2.973a17 17 0 0 1-1.132 2.231 13.6 13.6 0 0 0 4.308-1.474 1.37 1.37 0 0 1 1.654.267 1.4 1.4 0 0 1 .168 1.681c-.279.456-.554 1.07-.274 1.428.209.272.643.29.968.169.629-.24 1.104-.77 1.645-1.827a1.72 1.72 0 0 1 1.253-.911 1.74 1.74 0 0 1 1.49.493c1.128 1.137 2.74 1.789 4.296 1.757 1.803-.039 3.583-.982 4.635-2.457a1.162 1.162 0 0 1 2.094.497c.05.307-.023.622-.202.875-1.473 2.061-3.956 3.376-6.476 3.432a8.22 8.22 0 0 1-5.409-1.911c-.535.883-1.3 1.784-2.496 2.244-1.347.518-2.805.151-3.629-.91a2.92 2.92 0 0 1-.615-1.846 15.8 15.8 0 0 1-5.255 1.009c-2.082 2.367-4.799 4.18-7.817 5.138a1.1 1.1 0 0 1-.411.052zm8.396-13.176a1.7 1.7 0 0 0-.886.22c-.624.338-1.141.967-1.686 1.634q-.21.255-.419.502c-.257.301-.578.771-.648 1.316-.079.61.112.915.261 1.093.382.442 1.174.752 2.138.851a14.8 14.8 0 0 0 1.901-3.283c.214-.516.275-1.051.163-1.507-.144-.587-.415-.71-.503-.747a.9.9 0 0 0-.326-.07zm34.068-69.687L59.323 32.348a1.16 1.16 0 0 1-.785-.397 1.18 1.18 0 0 1 .083-1.638c.223-.208.518-.32.821-.314l166.452 8.782a1.16 1.16 0 0 1 .806.387 1.17 1.17 0 0 1 .298.848 1.18 1.18 0 0 1-.383.812 1.17 1.17 0 0 1-.841.3m-119.959 75.993-50.755-2.677a1.16 1.16 0 0 1-.775-.401 1.184 1.184 0 0 1 .084-1.628c.22-.208.51-.322.812-.318l50.756 2.676a1.17 1.17 0 0 1 1.103 1.236 1.18 1.18 0 0 1-.775 1.046 1.15 1.15 0 0 1-.45.066\"/></g><g fill=\"#142641\" opacity=\".3\"><path d=\"m228.097 140.997-179.114-4.508c-5.645-.14-10.12-4.858-9.98-10.514l2.407-95.972c.14-5.656 4.848-10.14 10.493-10l179.114 4.507c5.645.14 10.12 4.858 9.98 10.514l-2.407 95.972c-.14 5.656-4.848 10.141-10.493 10.001M51.847 22.331c-4.36-.112-7.997 3.355-8.108 7.728l-2.409 95.972c-.111 4.368 3.35 8.013 7.713 8.125l179.114 4.508c4.359.112 7.997-3.356 8.108-7.728l2.409-95.972c.111-4.368-3.35-8.013-7.713-8.125z\"/><path d=\"M82.598 79.996c-8.816-.22-15.812-7.575-15.593-16.397.219-8.817 7.575-15.813 16.397-15.594 8.816.219 15.812 7.575 15.593 16.397-.22 8.822-7.575 15.814-16.397 15.594m.748-29.653c-7.534-.192-13.817 5.783-14.003 13.317-.192 7.533 5.783 13.816 13.316 14.002s13.816-5.783 14.003-13.316c.19-7.533-5.783-13.817-13.316-14.003\"/><path d=\"M107.409 100.903a1.17 1.17 0 0 1-1.137-1.194c.262-10.393-10.404-19.12-23.772-19.455-13.368-.337-24.456 7.844-24.718 18.237a1.17 1.17 0 0 1-1.192 1.12 1.165 1.165 0 0 1-1.137-1.176c.293-11.68 12.454-20.88 27.103-20.51 14.654.368 26.335 10.168 26.041 21.85a1.165 1.165 0 0 1-1.193 1.138zm102.297-40.692-85.914-2.16a1.165 1.165 0 0 1-1.138-1.195 1.164 1.164 0 0 1 1.193-1.139l85.915 2.16a1.165 1.165 0 0 1 1.098 1.194 1.17 1.17 0 0 1-1.154 1.14m-.233 16.45-85.914-2.16a1.165 1.165 0 0 1-1.099-1.195 1.167 1.167 0 0 1 1.155-1.14l85.914 2.16a1.167 1.167 0 0 1-.056 2.335m-24.089 15.712-62.216-1.568a1.165 1.165 0 0 1-1.038-1.64 1.175 1.175 0 0 1 1.093-.694l62.217 1.568a1.165 1.165 0 0 1 1.098 1.194 1.165 1.165 0 0 1-1.154 1.14M184.638 123a1.17 1.17 0 0 1-.349-2.273 15.1 15.1 0 0 0 5.531-3.402c-.751-.224-1.524-.606-2.107-1.25-.694-.766-1.001-1.76-.889-2.884.088-.882.48-1.769 1.123-2.562q.189-.232.377-.472c.615-.784 1.309-1.67 2.311-2.254 1.048-.606 2.264-.723 3.257-.317.917.378 1.589 1.185 1.883 2.273.255.942.185 1.964-.201 2.963a16.4 16.4 0 0 1-1.072 2.245 13.8 13.8 0 0 0 4.273-1.582 1.372 1.372 0 0 1 2.054 1.02c.037.302-.026.608-.181.87-.266.457-.526 1.078-.238 1.423.219.266.652.271.97.14.619-.257 1.08-.793 1.597-1.862a1.714 1.714 0 0 1 2.731-.49c1.155 1.097 2.787 1.703 4.342 1.629 1.803-.089 3.556-1.069 4.571-2.567a1.17 1.17 0 0 1 .745-.489 1.156 1.156 0 0 1 1.19.505 1.17 1.17 0 0 1-.011 1.295c-1.416 2.091-3.862 3.463-6.383 3.584-1.952.098-3.904-.536-5.46-1.75-.513.892-1.254 1.806-2.438 2.296-1.333.551-2.799.224-3.652-.807a2.9 2.9 0 0 1-.667-1.815 16 16 0 0 1-5.228 1.148c-2.016 2.408-4.682 4.279-7.679 5.315a1.3 1.3 0 0 1-.409.065zm8.037-13.319a1.8 1.8 0 0 0-.88.243c-.615.355-1.113.994-1.645 1.671-.135.172-.27.345-.405.508-.247.304-.554.784-.61 1.321-.061.611.135.91.294 1.078.391.429 1.192.714 2.161.784a15 15 0 0 0 1.812-3.313c.201-.518.248-1.055.122-1.503-.159-.579-.434-.695-.522-.728a.9.9 0 0 0-.327-.061m32.183-70.153-166.65-4.195a1.164 1.164 0 0 1-1.118-1.194A1.17 1.17 0 0 1 58.263 33l166.651 4.195a1.168 1.168 0 0 1-.056 2.333m-117.882 78.754-50.82-1.279a1.16 1.16 0 0 1-1.076-.742 1.166 1.166 0 0 1 1.133-1.591l50.819 1.279a1.163 1.163 0 0 1 1.156 1.195 1.16 1.16 0 0 1-.758 1.066c-.145.054-.3.078-.454.072\"/></g><path fill=\"#F43F5E\" d=\"M239.717 153.996H36.283c-5.667 0-10.283-4.574-10.283-10.2V22.201C26 16.578 30.61 12 36.283 12h203.434C245.384 12 250 16.574 250 22.2V143.8c0 5.623-4.612 10.201-10.283 10.201zM36.283 14.324c-4.382 0-7.945 3.535-7.945 7.882v121.593c0 4.347 3.563 7.882 7.945 7.882h203.434c4.381 0 7.944-3.535 7.944-7.882V22.201c0-4.346-3.563-7.881-7.944-7.881H36.283z\"/><path fill=\"#fff\" d=\"m138.103 175.501 2.563-2.564a1.14 1.14 0 0 0 .333-.802 1.12 1.12 0 0 0-.333-.802 1.135 1.135 0 0 0-1.236-.247 1.1 1.1 0 0 0-.367.247l-2.563 2.564-2.563-2.564a1.135 1.135 0 0 0-1.603 1.604l2.563 2.564-2.563 2.565a1.131 1.131 0 0 0 .802 1.934c.289 0 .579-.109.801-.33l2.563-2.565 2.563 2.565c.222.221.512.33.801.33a1.132 1.132 0 0 0 .802-1.934z\"/></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 36 36\"{...props}><path fill=\"#0062F2\" fill-rule=\"evenodd\" d=\"M12 15c0-3.315 2.685-6 6-6s6 2.685 6 6c0 1.924-1.185 2.96-2.339 3.968-1.095.957-2.161 1.889-2.161 3.532h-3c0-2.732 1.413-3.815 2.656-4.767C20.13 16.985 21 16.319 21 15c0-1.65-1.35-3-3-3s-3 1.35-3 3zm7.5 9v3h-3v-3z\" clip-rule=\"evenodd\"/></svg>","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { Modal } from \"@microblink/shared-components/Modal\";\nimport {\n type Component,\n createEffect,\n createSignal,\n For,\n onCleanup,\n ParentComponent,\n} from \"solid-js\";\nimport { useBlinkIdUiStore } from \"../BlinkIdUiStoreContext\";\n\nimport HelpCorrectFraming from \"../assets/help/help_fields_visible.svg?component-solid\";\nimport HelpHarshLight from \"../assets/help/help_harsh_light.svg?component-solid\";\nimport HelpKeepStill from \"../assets/help/help_keep_still.svg?component-solid\";\nimport { Carousel, DialogTitle, Tooltip } from \"@ark-ui/solid\";\nimport QuestionIcon from \"../assets/icons/icon-question.svg?component-solid\";\n\nimport { Dynamic } from \"solid-js/web\";\n\nimport styles from \"./styles.module.scss\";\nimport { LocalizationStrings, useLocalization } from \"../LocalizationContext\";\n\nexport const HelpModal: Component = () => {\n const { t } = useLocalization();\n\n const { store, updateStore } = useBlinkIdUiStore();\n const [currentStep, setCurrentStep] = createSignal(0);\n\n const modalVisible = () => store.showHelpModal;\n const hideModal = () => {\n updateStore({ showHelpModal: false });\n setCurrentStep(0);\n void store.blinkIdUxManager.cameraManager.startFrameCapture();\n };\n\n const steps: {\n title: keyof LocalizationStrings;\n img: Component;\n text: keyof LocalizationStrings;\n }[] = [\n {\n title: \"help_modal_title_1\",\n img: HelpCorrectFraming,\n text: \"help_modal_details_1\",\n },\n {\n title: \"help_modal_title_2\",\n img: HelpHarshLight,\n text: \"help_modal_details_2\",\n },\n {\n title: \"help_modal_title_3\",\n img: HelpKeepStill,\n text: \"help_modal_details_3\",\n },\n ];\n\n const isLastStep = () => currentStep() === steps.length - 1;\n const isFirstStep = () => currentStep() === 0;\n\n let startScanningBtnRef!: HTMLButtonElement;\n\n createEffect(() => {\n const showHelpModal = store.showHelpModal;\n\n if (showHelpModal === undefined) {\n return;\n }\n\n if (showHelpModal) {\n store.blinkIdUxManager.cameraManager.stopFrameCapture();\n } else {\n void store.blinkIdUxManager.cameraManager.startFrameCapture();\n }\n });\n\n return (\n <Modal\n mountTarget={store.cameraManagerComponent.overlayLayerNode}\n initialFocusEl={() => startScanningBtnRef}\n open={modalVisible()}\n showCloseButton\n onCloseClicked={() => hideModal()}\n >\n <Carousel.Root\n defaultPage={0}\n slideCount={steps.length}\n page={currentStep()}\n onPageChange={(details) => setCurrentStep(details.page)}\n class={styles.carousel}\n >\n <Carousel.ItemGroup class={styles.itemGroup}>\n <For each={steps}>\n {(step, index) => (\n <Carousel.Item class={styles.item} index={index()}>\n <Dynamic component={step.img} />\n <div class={styles.textContent}>\n <DialogTitle>{t[step.title]}</DialogTitle>\n <p>{t[step.text]}</p>\n </div>\n </Carousel.Item>\n )}\n </For>\n </Carousel.ItemGroup>\n <Carousel.IndicatorGroup class={styles.indicators}>\n <For each={steps}>\n {(_, i) => (\n <Carousel.Indicator index={i()} class={styles.indicator} />\n )}\n </For>\n </Carousel.IndicatorGroup>\n <Carousel.Control class={styles.controls}>\n <div class={styles.controlsInner}>\n <Carousel.PrevTrigger\n class={styles.buttonSecondary}\n disabled={isFirstStep()}\n >\n {t.help_modal_back_btn}\n </Carousel.PrevTrigger>\n <Carousel.NextTrigger\n ref={startScanningBtnRef}\n class={styles.buttonPrimary}\n onClick={() => {\n if (currentStep() >= steps.length - 1) {\n hideModal();\n }\n }}\n disabled={false}\n >\n {isLastStep() ? t.help_modal_done_btn : t.help_modal_next_btn}\n </Carousel.NextTrigger>\n </div>\n </Carousel.Control>\n </Carousel.Root>\n </Modal>\n );\n};\n\nexport const HelpButton: ParentComponent<{ isProcessing: boolean }> = (\n props,\n) => {\n const { t } = useLocalization();\n const { store, updateStore } = useBlinkIdUiStore();\n\n const [tooltipOpen, setTooltipOpen] = createSignal(false);\n const [wasAutoShown, setWasAutoShown] = createSignal(false);\n\n let showTooltipTimeoutId: number | undefined;\n let hideTooltipTimeoutId: number | undefined;\n\n const clearTimeouts = () => {\n if (showTooltipTimeoutId !== undefined) {\n window.clearTimeout(showTooltipTimeoutId);\n showTooltipTimeoutId = undefined;\n }\n if (hideTooltipTimeoutId !== undefined) {\n window.clearTimeout(hideTooltipTimeoutId);\n hideTooltipTimeoutId = undefined;\n }\n };\n\n const scheduleAutoHide = () => {\n const displayDuration = store.blinkIdUxManager.getHelpTooltipHideDelay();\n if (displayDuration && displayDuration > 0) {\n hideTooltipTimeoutId = window.setTimeout(() => {\n setTooltipOpen(false);\n }, displayDuration);\n }\n };\n\n const showTooltipAutomatically = () => {\n const timeout = store.blinkIdUxManager.getHelpTooltipShowDelay();\n if (timeout && timeout > 0) {\n showTooltipTimeoutId = window.setTimeout(() => {\n setTooltipOpen(true);\n setWasAutoShown(true);\n scheduleAutoHide();\n }, timeout);\n }\n };\n\n // Cleanup on component unmount\n onCleanup(clearTimeouts);\n\n // Handle processing state changes\n createEffect(() => {\n if (!props.isProcessing) {\n setTooltipOpen(false);\n setWasAutoShown(false);\n clearTimeouts();\n return;\n }\n\n // Show tooltip only if it hasn't been shown before\n if (!tooltipOpen() && !wasAutoShown()) {\n showTooltipAutomatically();\n }\n });\n\n return (\n <Tooltip.Root\n positioning={{ placement: \"top-end\" }}\n open={tooltipOpen()}\n openDelay={300}\n closeDelay={300}\n onOpenChange={(details) => setTooltipOpen(details.open)}\n >\n <Tooltip.Trigger\n part=\"help-button-part\"\n aria-label={t.help_aria_label}\n class={styles.helpButton}\n onClick={() => updateStore({ showHelpModal: true })}\n >\n <QuestionIcon />\n </Tooltip.Trigger>\n\n <Tooltip.Positioner>\n <Tooltip.Content part=\"help-button-tooltip-part\" class={styles.tooltip}>\n <Tooltip.Arrow class={styles.arrow}>\n <Tooltip.ArrowTip />\n </Tooltip.Arrow>\n {t.help_tooltip}\n </Tooltip.Content>\n </Tooltip.Positioner>\n </Tooltip.Root>\n );\n};\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { AlertModal } from \"@microblink/shared-components/Modal\";\nimport { type Component } from \"solid-js\";\nimport { useBlinkIdUiStore } from \"../BlinkIdUiStoreContext\";\nimport { useLocalization } from \"../LocalizationContext\";\n\ninterface ErrorModalProps {\n header: string;\n text: string;\n shouldResetScanningSession?: boolean;\n}\n\nexport const ErrorModal: Component<ErrorModalProps> = (props) => {\n const { t } = useLocalization();\n\n const { store, updateStore } = useBlinkIdUiStore();\n\n const hideModal = () => {\n updateStore({ errorState: undefined });\n };\n\n const dismountCameraManagerUi = () => {\n store.cameraManagerComponent.dismount();\n };\n\n const handlePrimaryClick = async () => {\n hideModal();\n\n if (props.shouldResetScanningSession) {\n await store.blinkIdUxManager.scanningSession.reset();\n }\n\n await store.blinkIdUxManager.cameraManager.startFrameCapture();\n };\n\n return (\n <AlertModal\n mountTarget={store.cameraManagerComponent.overlayLayerNode}\n header={props.header}\n text={props.text}\n open={true}\n onPrimaryClick={() => void handlePrimaryClick()}\n onSecondaryClick={() => dismountCameraManagerUi()}\n primaryButtonText={t.alert_retry_btn}\n secondaryButtonText={t.alert_cancel_btn}\n />\n );\n};\n","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 250 35\"{...props}><g fill=\"#0062F2\" clip-path=\"url(#a)\"><path fill-rule=\"evenodd\" d=\"m30.827 6.401 4.006 9.975a3.44 3.44 0 0 1-.03 2.648l-4.24 9.882a3.46 3.46 0 0 1-1.896 1.848l-10.003 3.998a3.47 3.47 0 0 1-2.651-.03L6.107 30.49a3.46 3.46 0 0 1-1.852-1.892L.249 18.621a3.45 3.45 0 0 1 .03-2.645l4.24-9.883a3.46 3.46 0 0 1 1.896-1.848L16.417.248a3.47 3.47 0 0 1 2.652.03l9.905 4.23a3.46 3.46 0 0 1 1.853 1.893m-5.763 17.945c.771-.396 1.612-.827 2.534-1.331 1.52-.826 2.624-2.255 2.905-3.561.308-1.32-.213-2.516-1.256-3.172-2.383-1.523-3.362-3.42-4.842-6.291-.397-.769-.83-1.607-1.334-2.526-.824-1.517-2.256-2.621-3.565-2.898-1.323-.308-2.522.211-3.18 1.253-1.526 2.376-3.428 3.352-6.304 4.829-.77.395-1.611.827-2.534 1.33-1.52.828-2.626 2.256-2.905 3.563-.308 1.318.212 2.516 1.256 3.171 2.383 1.523 3.362 3.42 4.842 6.291.397.769.829 1.607 1.334 2.526.824 1.517 2.256 2.621 3.565 2.898 1.323.308 2.522-.21 3.18-1.252 1.526-2.378 3.428-3.354 6.304-4.83\" clip-rule=\"evenodd\"/><path d=\"M62.466 23.715 55.704 6.373H51.2v22.57h3.073V11.192l7.007 17.846h2.242l7.07-18.005v17.91h3.168V6.373h-4.534zM83.133 6.373h-3.325v22.57h3.324zM127.593 17.637a7.42 7.42 0 0 0 1.38-4.363c0-1.847-.795-3.57-2.24-4.853-1.49-1.32-3.561-2.045-5.84-2.045h-9.178v22.57h3.325v-8.072h5.385l4.698 8.069h3.946l-5.027-8.624a7.66 7.66 0 0 0 3.551-2.682m-2.008-4.331a4.5 4.5 0 0 1-.323 1.729 4.4 4.4 0 0 1-.961 1.464c-.846.845-2.034 1.31-3.344 1.31h-5.921V9.471h5.921c2.638 0 4.628 1.648 4.628 3.835M143.07 5.991c-3.121 0-5.934 1.224-7.934 3.445-1.924 2.142-2.984 5.062-2.984 8.221 0 3.16 1.06 6.095 2.984 8.234 1.993 2.214 4.81 3.43 7.934 3.43 3.137 0 5.965-1.22 7.961-3.43 1.927-2.136 2.988-5.06 2.988-8.234 0-3.173-1.061-6.08-2.987-8.22-2.001-2.225-4.828-3.446-7.962-3.446m0 20.17a7 7 0 0 1-2.969-.646 7.1 7.1 0 0 1-2.433-1.846c-1.372-1.58-2.127-3.716-2.127-6.012s.755-4.415 2.127-6c1.397-1.615 3.315-2.504 5.402-2.504s4.013.889 5.418 2.505c1.381 1.59 2.143 3.718 2.143 6 0 2.28-.761 4.428-2.143 6.011a7.2 7.2 0 0 1-2.442 1.845c-.935.43-1.95.651-2.976.648M172.244 17.103c1.939-1.087 3.091-2.995 3.091-5.132 0-3.296-2.885-5.598-7.006-5.598h-9.75v22.57h10.22c4.06 0 7.006-2.743 7.006-6.521.003-2.267-1.358-4.29-3.561-5.319m-3.348 8.742h-6.994v-7.003h6.518c2.39 0 3.998 1.3 3.998 3.232.002 2.29-1.382 3.77-3.522 3.77m-.852-10.04h-6.142V9.472h6.518c2.143 0 3.524 1.13 3.524 2.882.003 1.72-1.204 3.453-3.9 3.453zM183.92 6.373h-3.326v22.57h14.551V25.78H183.92zM202.18 6.373h-3.326v22.57h3.326zM223.067 23.071 211.48 6.443l-.05-.07h-3.214v22.57h3.136V11.418l12.205 17.525h2.646V6.373h-3.136zM241.061 16.303l8.702-9.93h-4.068L235.56 17.918V6.373h-3.326v22.57h3.326V22.39l3.226-3.641 7.182 10.193H250zM104.791 21.307c-1.483 3.425-3.386 4.887-6.377 4.887-2.043 0-3.915-.886-5.27-2.494-1.334-1.584-2.07-3.73-2.07-6.043 0-2.295.72-4.427 2.023-6.003 1.336-1.613 3.19-2.501 5.224-2.501 2.754 0 4.768 1.393 6.158 4.258l.059.122h3.479l-.016-.098c-.083-.476-.254-.92-.42-1.357l-.053-.141a9.3 9.3 0 0 0-3.561-4.367c-1.603-1.048-3.535-1.579-5.741-1.579-3.017 0-5.739 1.224-7.666 3.448-1.853 2.14-2.874 5.059-2.874 8.218 0 3.202 1.026 6.134 2.89 8.255 1.963 2.233 4.65 3.412 7.775 3.412 2.189 0 4.113-.575 5.718-1.71q.406-.286.777-.615c1.628-1.437 2.861-3.481 3.297-5.468l.011-.052q.023-.103.039-.206l.017-.098h-3.366z\"/></g><defs><clipPath id=\"a\"><path fill=\"#fff\" d=\"M0 0h250v35H0z\"/></clipPath></defs></svg>","export default (props = {}) => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 95 28\"{...props}><path fill=\"#fff\" d=\"M25.088 7.572c1.314 0 2.178-.891 2.178-2.16 0-1.287-.855-2.151-2.178-2.151h-2.601V9.84h1.152V7.572zm-.225-3.285c.765 0 1.197.396 1.197 1.116s-.423 1.143-1.215 1.143h-1.206v-2.26zM27.772 7.608c0 1.386.999 2.34 2.376 2.34s2.376-.954 2.376-2.34-.999-2.34-2.376-2.34-2.376.954-2.376 2.34m1.098 0c0-.81.522-1.36 1.278-1.36s1.278.55 1.278 1.36-.522 1.359-1.278 1.359-1.278-.55-1.278-1.36M34.336 9.84h1.07l.613-1.908c.225-.73.306-1.044.35-1.251.037.225.136.648.316 1.233l.612 1.926h1.026l1.539-4.446H38.7l-.594 1.908c-.081.279-.225.81-.297 1.143a16 16 0 0 0-.288-1.143l-.594-1.908h-1.116L35.2 7.302c-.144.44-.225.72-.306 1.152a15 15 0 0 0-.27-1.152l-.585-1.908h-1.143zM42.476 9.957c1.16 0 1.97-.585 2.16-1.557h-1.017c-.126.423-.522.657-1.125.657-.73 0-1.143-.396-1.224-1.18l3.348-.008v-.333c0-1.386-.846-2.277-2.178-2.277-1.305 0-2.214.963-2.214 2.358 0 1.377.927 2.34 2.25 2.34m-.027-3.798c.657 0 1.08.405 1.08 1.017h-2.232c.108-.666.504-1.017 1.152-1.017M48.467 5.376a2 2 0 0 0-.486-.063c-.595 0-1.017.297-1.206.738l-.063-.648h-1.036V9.84h1.099V7.68c0-.864.495-1.287 1.287-1.287h.405zM51.23 9.957c1.16 0 1.97-.585 2.16-1.557h-1.018c-.126.423-.522.657-1.125.657-.729 0-1.143-.396-1.224-1.18l3.348-.008v-.333c0-1.386-.846-2.277-2.178-2.277-1.305 0-2.214.963-2.214 2.358 0 1.377.927 2.34 2.25 2.34m-.028-3.798c.657 0 1.08.405 1.08 1.017H50.05c.108-.666.504-1.017 1.152-1.017M56.257 9.957c.675 0 1.251-.297 1.521-.81l.072.693h1.008V3.144h-1.089V5.96c-.279-.441-.828-.702-1.449-.702-1.341 0-2.151.99-2.151 2.376 0 1.377.801 2.322 2.088 2.322m.243-1.008c-.765 0-1.233-.558-1.233-1.35s.468-1.36 1.233-1.36 1.26.559 1.26 1.36c0 .8-.495 1.35-1.26 1.35M63.805 9.84l.072-.693c.261.513.828.81 1.494.81 1.278 0 2.115-.945 2.115-2.313 0-1.404-.774-2.394-2.043-2.394-.675 0-1.269.297-1.557.792V3.144h-1.098V9.84zm.09-2.241c0-.801.495-1.36 1.251-1.36.774 0 1.233.568 1.233 1.36s-.459 1.35-1.233 1.35c-.756 0-1.25-.55-1.25-1.35M67.986 11.9c.243.064.513.1.82.1.728 0 1.196-.342 1.53-1.17l2.177-5.436H71.38l-1.206 3.24-1.143-3.24h-1.16l1.79 4.635-.126.333c-.189.522-.459.62-.89.62h-.658z\"/><g fill=\"#fff\" clip-path=\"url(#a)\"><path d=\"m9.816 23.595-2.89-7.432H5v9.673h1.314v-7.608l2.996 7.649h.958l3.023-7.717v7.676h1.355v-9.673h-1.939zM18.653 16.163H17.23v9.673h1.422zM37.663 20.991a3.2 3.2 0 0 0 .59-1.87c0-.791-.34-1.53-.958-2.08-.637-.565-1.523-.876-2.497-.876h-3.924v9.673h1.421v-3.46h2.303l2.009 3.459h1.687l-2.15-3.696a3.3 3.3 0 0 0 1.519-1.15m-.86-1.856a1.93 1.93 0 0 1-.548 1.369c-.362.362-.87.561-1.43.561h-2.532v-3.573h2.532c1.128 0 1.979.706 1.979 1.643M44.28 16c-1.334 0-2.537.525-3.392 1.477-.822.918-1.276 2.169-1.276 3.523s.453 2.612 1.276 3.529c.852.948 2.057 1.47 3.392 1.47 1.341 0 2.55-.523 3.404-1.47.824-.916 1.278-2.17 1.278-3.53s-.454-2.605-1.278-3.522C46.83 16.523 45.62 16 44.28 16m0 8.645a3 3 0 0 1-1.27-.278 3.05 3.05 0 0 1-1.04-.79c-.586-.678-.909-1.593-.909-2.577s.323-1.892.91-2.572a3.02 3.02 0 0 1 2.31-1.073c.892 0 1.715.381 2.316 1.074.59.68.916 1.593.916 2.57 0 .979-.325 1.899-.916 2.578a3.1 3.1 0 0 1-1.044.79c-.4.184-.834.28-1.273.278M56.754 20.762c.83-.466 1.322-1.284 1.322-2.2 0-1.412-1.233-2.399-2.995-2.399h-4.17v9.673h4.37c1.736 0 2.996-1.175 2.996-2.795.001-.97-.581-1.838-1.523-2.279m-1.431 3.746h-2.99v-3h2.786c1.022 0 1.71.556 1.71 1.384 0 .982-.591 1.616-1.506 1.616m-.364-4.302h-2.627V17.49h2.787c.916 0 1.507.485 1.507 1.236.001.736-.515 1.48-1.667 1.48zM61.746 16.163h-1.422v9.673h6.222v-1.355h-4.8zM69.554 16.163h-1.422v9.673h1.422zM78.484 23.32l-4.954-7.127-.021-.03h-1.375v9.673h1.341v-7.51l5.219 7.51h1.131v-9.673h-1.34zM86.178 20.419l3.72-4.256H88.16l-4.333 4.948v-4.948h-1.422v9.673h1.422v-2.808l1.38-1.56 3.07 4.368H90zM27.913 22.564c-.634 1.468-1.448 2.094-2.726 2.094-.874 0-1.674-.38-2.253-1.069-.571-.678-.885-1.598-.885-2.59 0-.983.307-1.896.864-2.572.571-.691 1.364-1.072 2.234-1.072 1.177 0 2.039.597 2.633 1.825l.025.052h1.488l-.007-.042c-.036-.204-.109-.394-.18-.581l-.023-.06a3.98 3.98 0 0 0-1.522-1.872c-.685-.45-1.511-.677-2.455-.677-1.29 0-2.453.525-3.277 1.478-.793.917-1.23 2.168-1.23 3.522 0 1.372.44 2.628 1.237 3.538.839.956 1.988 1.462 3.324 1.462.936 0 1.758-.247 2.445-.733q.173-.123.332-.264c.696-.616 1.223-1.491 1.41-2.343l.004-.022q.01-.045.017-.089l.007-.041h-1.439z\"/></g><defs><clipPath id=\"a\"><path fill=\"#fff\" d=\"M5 16h85v10H5z\"/></clipPath></defs></svg>","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { cameraManagerStore } from \"@microblink/camera-manager\";\nimport type { Component } from \"solid-js\";\nimport {\n createEffect,\n createSignal,\n Match,\n onCleanup,\n Show,\n Switch,\n} from \"solid-js\";\nimport { createWithSignal } from \"solid-zustand\";\nimport {\n BlinkIdUiState,\n firstSideCapturedStates,\n} from \"../core/blinkid-ui-state\";\nimport {\n LocalizationProvider,\n LocalizationStrings,\n useLocalization,\n} from \"./LocalizationContext\";\nimport { UiFeedbackOverlay } from \"./UiFeedbackOverlay\";\n\n// this triggers extraction of CSS from the UnoCSS plugin\nimport \"virtual:uno.css\";\n\nimport { useBlinkIdUiStore } from \"./BlinkIdUiStoreContext\";\nimport { SmartEnvironmentProvider } from \"@microblink/shared-components/SmartEnvironmentProvider\";\nimport { OnboardingGuideModal } from \"./dialogs/OnboardingGuideModal\";\nimport { HelpButton, HelpModal } from \"./dialogs/HelpModal\";\nimport { ErrorModal } from \"./dialogs/ErrorModal\";\nimport DemoOverlay from \"./assets/demo-overlay.svg?component-solid\";\nimport MicroblinkOverlay from \"./assets/microblink.svg?component-solid\";\n\nimport styles from \"./styles.module.scss\";\n\n// `blinkIdUxManager` is not reactive\nexport const BlinkIdFeedbackUi: Component<{\n localization?: Partial<LocalizationStrings>;\n}> = (props) => {\n const { store, updateStore } = useBlinkIdUiStore();\n\n // TODO: hacky, fix this\n // only used to map LOW_QUALITY_FRONT and LOW_QUALITY_BACK to SENSING_FRONT\n // and SENSING_BACK\n const [uiState, setUiState] = createSignal<BlinkIdUiState>(\n store.blinkIdUxManager.uiState,\n );\n\n // Handle errors during scanning\n createEffect(() => {\n const errorCallbackCleanup = store.blinkIdUxManager.addOnErrorCallback(\n (errorState) => {\n updateStore({ errorState });\n },\n );\n onCleanup(() => errorCallbackCleanup());\n });\n\n // Handle document filtered during scanning\n createEffect(() => {\n const errorCallbackCleanup =\n store.blinkIdUxManager.addOnDocumentFilteredCallback((_) => {\n store.blinkIdUxManager.cameraManager.stopFrameCapture();\n updateStore({ documentFiltered: true });\n });\n onCleanup(() => errorCallbackCleanup());\n });\n\n const playbackState = createWithSignal(cameraManagerStore)(\n (s) => s.playbackState,\n );\n\n const isProcessing = () => playbackState() === \"capturing\";\n\n // Processing is stopped, but we still want to show the feedback\n // TODO: see if there is a better way to handle these edge-cases\n const shouldShowFeedback = () => {\n return (\n isProcessing() ||\n firstSideCapturedStates.includes(uiState().key) ||\n uiState().key === \"DOCUMENT_CAPTURED\"\n );\n };\n\n const shouldShowDemoOverlay = () => {\n return store.blinkIdUxManager.getShowDemoOverlay();\n };\n\n const shouldShowProductionOverlay = () => {\n return store.blinkIdUxManager.getShowProductionOverlay();\n };\n\n createEffect(() => {\n const removeUiStateChangeCallback =\n store.blinkIdUxManager.addOnUiStateChangedCallback((newUiState) => {\n setUiState(newUiState);\n });\n\n onCleanup(() => removeUiStateChangeCallback());\n });\n\n return (\n <div>\n <style\n id=\"blinkid-ux-manager-style\"\n ref={(ref) => {\n if (window.__blinkidUxManagerCssCode) {\n ref.innerHTML = window.__blinkidUxManagerCssCode;\n }\n }}\n />\n <LocalizationProvider userStrings={props.localization}>\n <SmartEnvironmentProvider>\n {() => {\n const { t } = useLocalization();\n\n return (\n <>\n <Switch>\n <Match when={store.errorState === \"timeout\"}>\n <ErrorModal\n header={t.scan_unsuccessful}\n text={t.scan_unsuccessful_details}\n shouldResetScanningSession={true}\n />\n </Match>\n <Match when={uiState().key === \"UNSUPPORTED_DOCUMENT\"}>\n <ErrorModal\n header={t.document_not_recognized}\n text={t.document_not_recognized_details}\n shouldResetScanningSession={true}\n />\n </Match>\n <Match when={store.documentFiltered}>\n <ErrorModal\n header={t.document_filtered}\n text={t.document_filtered_details}\n shouldResetScanningSession={true}\n />\n </Match>\n </Switch>\n\n <Show when={shouldShowFeedback()}>\n <UiFeedbackOverlay uiState={uiState()} />\n </Show>\n\n <Show when={shouldShowDemoOverlay()}>\n <div class={styles.demoOverlay}>\n <DemoOverlay width=\"250\" />\n </div>\n </Show>\n\n <Show when={shouldShowProductionOverlay()}>\n <div class={styles.microblinkOverlay}>\n <MicroblinkOverlay width=\"100\" />\n </div>\n </Show>\n\n <Show when={store.showHelpButton}>\n <HelpButton isProcessing={isProcessing()} />\n </Show>\n </>\n );\n }}\n </SmartEnvironmentProvider>\n\n <OnboardingGuideModal />\n <HelpModal />\n </LocalizationProvider>\n </div>\n );\n};\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nimport { BlinkIdUxManager } from \"../core/BlinkIdUxManager\";\n\nimport { CameraManagerComponent } from \"@microblink/camera-manager\";\nimport { renderWithOwner } from \"@microblink/shared-components/renderWithOwner\";\nimport { BlinkIdFeedbackUi } from \"./BlinkIdFeedbackUi\";\nimport { BlinkIdUiStoreProvider } from \"./BlinkIdUiStoreContext\";\nimport { LocalizationStrings } from \"./LocalizationContext\";\n\nexport type FeedbackUiOptions = {\n localizationStrings?: Partial<LocalizationStrings>;\n /**\n * If set to `true`, the BlinkID instance will not be terminated when the\n * feedback UI is unmounted.\n *\n * @defaultValue false\n */\n preserveSdkInstance?: boolean;\n /**\n * If set to `true`, the onboarding guide will be shown.\n *\n * @defaultValue true\n */\n showOnboardingGuide?: boolean;\n /**\n * If set to `true`, the help button will be shown.\n *\n * @defaultValue true\n */\n showHelpButton?: boolean;\n};\n\nexport function createBlinkIdFeedbackUi(\n blinkIdUxManager: BlinkIdUxManager,\n cameraManagerComponent: CameraManagerComponent,\n {\n localizationStrings,\n // todo - implement this\n preserveSdkInstance,\n showOnboardingGuide = true,\n showHelpButton = true,\n }: FeedbackUiOptions = {},\n) {\n // Use a ref or closure to handle the circular reference\n const dismountFeedbackUiRef = {\n current: () => {\n void 0;\n },\n };\n\n cameraManagerComponent.addOnDismountCallback(() => {\n // if the camera manager is unmounted, we need to unmount the feedback UI\n dismountFeedbackUiRef.current();\n });\n\n const unmountFunction = renderWithOwner(\n () => (\n <BlinkIdUiStoreProvider\n blinkIdUxManager={blinkIdUxManager}\n cameraManagerComponent={cameraManagerComponent}\n showOnboardingGuide={showOnboardingGuide}\n showHelpButton={showHelpButton}\n dismountFeedbackUi={() => dismountFeedbackUiRef.current()}\n >\n <BlinkIdFeedbackUi localization={localizationStrings} />\n </BlinkIdUiStoreProvider>\n ),\n cameraManagerComponent.feedbackLayerNode,\n cameraManagerComponent.owner,\n );\n\n dismountFeedbackUiRef.current = unmountFunction;\n return unmountFunction;\n}\n","/**\n * Copyright (c) 2025 Microblink Ltd. All rights reserved.\n */\n\nexport * from \"./core/blinkid-ui-state\";\nexport * from \"./core/BlinkIdUxManager\";\nexport * from \"./ui/createBlinkIdFeedbackUi\";\nexport type {\n LocaleRecord,\n LocalizationStrings,\n} from \"./ui/LocalizationContext\";\nexport type { DocumentClassFilter } from \"./core/DocumentClassFilter\";\n\nexport type * from \"@microblink/feedback-stabilizer\";\nexport type { BlinkIdProcessingError } from \"./core/BlinkIdProcessingError\";\n\n// https://newsletter.daishikato.com/p/detecting-dual-module-issues-in-jotai\nconst testSymbol = Symbol();\n\ndeclare global {\n /* eslint-disable no-var */\n var __BLINKID_UX_MANAGER__: typeof testSymbol;\n}\n\nglobalThis.__BLINKID_UX_MANAGER__ ||= testSymbol;\nif (globalThis.__BLINKID_UX_MANAGER__ !== testSymbol) {\n console.warn(\n \"Detected multiple instances of @microblink/blinkid-ux-manager. This can lead to unexpected behavior.\",\n );\n}\n"],"names":["r","t","e","n","o","c","i","a","s","u","match","P","LocalizationContext","createContext","LocalizationProvider","props","localizationStore","updateLocalizationStore","createStore","mergedStrings","enLocaleStrings","userStrings","createEffect","contextValue","updateLocalization","_$createComponent","Provider","value","children","useLocalization","ctx","useContext","Error","b","style","item","v","progress","noop","x","steps","p","transforms","template","d","data","inView","_a","PresenceContext","Presence","mount","setMount","createSignal","state","initial","render","createSwitchTransition","resolveFirst","appear","mode","exitBeforeEnter","onExit","el","done","batch","get","getOptions","exit","addEventListener","onEnter","_","createAndBindMotionState","options","presence_state","parent_state","createMotionState","el_ref","unmount","update","onCleanup","setActive","createStyles","getTarget","OPTION_KEYS","ATTR_KEYS","ParentContext","createContext2","MotionComponent","attrs","splitProps","style2","root","useContext2","Dynamic","_$mergeProps","ref","component","tag","combineStyle","Motion","Proxy","f","_el$","_tmpl$","_$spread","UiFeedbackOverlay","showSuccessOnly","setShowSuccessOnly","timeout","firstSideCapturedStates","includes","uiState","key","window","setTimeout","blinkIdUiStateMap","DOCUMENT_CAPTURED","minDuration","clearTimeout","isPassportCaptureState","getDirection","_el$2","firstChild","_el$3","_el$4","Switch","Match","when","reticleType","SearchReticle","ScanningReticle","ErrorReticle","SuccessFeedback","_$memo","FlipCardFeedback","PassportAnimation","direction","duration","Show","UiFeedbackMessage","opacity","scale","animate","transition","easing","DoneIcon","cardSideStyles","_el$5","_tmpl$2","rotateY","FLIP_CARD","CardIconFront","CardIconBack","clsx","rotation","_el$6","_el$7","_tmpl$3","PassportTop","PassportBottom","y","PassportHighlight","_$effect","_$p","setProperty","removeProperty","ReticleContainer","div","type","delay","transform","repeat","Infinity","SearchIcon","FullIcon","rotate","ScanIcon","message","feedbackMessages","_el$8","_tmpl$5","Rerun","on","_el$9","_tmpl$4","_$insert","BlinkIdUiStoreContext","BlinkIdUiStoreProvider","store","updateStore","blinkIdUxManager","cameraManagerComponent","showOnboardingGuide","showHelpTooltipTimeout","showHelpButton","dismountFeedbackUi","console","debug","useBlinkIdUiStore","SmartEnvironmentProvider","rootNode","setRootNode","setRef","onMount","spanRef","getRootNode","fallback","_$use","EnvironmentProvider","Modal","getPaddingClass","modalStyle","styles","compact","undefined","Dialog","Root","onFocusOutside","preventDefault","onInteractOutside","restoreFocus","unmountOnExit","lazyMount","open","Portal","mountTarget","Positioner","dialogPositioner","Backdrop","dialogBackdrop","Content","dialogContent","showCloseButton","CloseTrigger","closeButton","onClick","onCloseClicked","_$className","closeButtonInner","headerImage","header","Title","dialogTitle","Description","contentOut","actions","AlertModal","text","onPrimaryClick","onSecondaryClick","primaryButtonText","secondaryButtonText","primaryButtonEl","alertTitle","initialFocusEl","nextSibling","$$click","_ref$","_p$","_v$","_v$2","secondaryActionButton","_v$3","primaryActionButton","alertText","_$delegateEvents","OnboardingGuideModal","modalVisible","hideModal","cameraManager","startFrameCapture","startScanningBtnRef","overlayLayerNode","HelpCorrectFraming","DialogTitle","onboarding_modal_title","onboarding_modal_details","onboarding_modal_btn","onboardingGuide","content","_v$4","textContent","_v$5","_v$6","buttonPrimary","HelpModal","currentStep","setCurrentStep","showHelpModal","title","img","HelpHarshLight","HelpKeepStill","isLastStep","length","isFirstStep","stopFrameCapture","Carousel","defaultPage","slideCount","page","onPageChange","details","carousel","ItemGroup","itemGroup","For","each","step","index","Item","IndicatorGroup","indicators","Indicator","indicator","Control","controls","PrevTrigger","buttonSecondary","disabled","help_modal_back_btn","NextTrigger","r$","help_modal_done_btn","help_modal_next_btn","controlsInner","HelpButton","tooltipOpen","setTooltipOpen","wasAutoShown","setWasAutoShown","showTooltipTimeoutId","hideTooltipTimeoutId","clearTimeouts","scheduleAutoHide","displayDuration","getHelpTooltipHideDelay","showTooltipAutomatically","getHelpTooltipShowDelay","isProcessing","Tooltip","positioning","placement","openDelay","closeDelay","onOpenChange","Trigger","part","help_aria_label","helpButton","QuestionIcon","tooltip","Arrow","arrow","ArrowTip","help_tooltip","ErrorModal","errorState","dismountCameraManagerUi","dismount","handlePrimaryClick","shouldResetScanningSession","scanningSession","reset","alert_retry_btn","alert_cancel_btn","BlinkIdFeedbackUi","setUiState","errorCallbackCleanup","addOnErrorCallback","addOnDocumentFilteredCallback","documentFiltered","playbackState","createWithSignal","cameraManagerStore","shouldShowFeedback","shouldShowDemoOverlay","getShowDemoOverlay","shouldShowProductionOverlay","getShowProductionOverlay","removeUiStateChangeCallback","addOnUiStateChangedCallback","newUiState","__blinkidUxManagerCssCode","innerHTML","localization","scan_unsuccessful","scan_unsuccessful_details","document_not_recognized","document_not_recognized_details","document_filtered","document_filtered_details","DemoOverlay","width","demoOverlay","MicroblinkOverlay","microblinkOverlay","createBlinkIdFeedbackUi","localizationStrings","preserveSdkInstance","dismountFeedbackUiRef","current","addOnDismountCallback","unmountFunction","renderWithOwner","feedbackLayerNode","owner"],"mappings":"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","x_google_ignoreList":[0,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62]}