@incodetech/web 2.1.1 → 2.2.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/dist/ae-signature/ae-signature.es.js +7 -4
  2. package/dist/antifraud/antifraud.es.js +6 -6
  3. package/dist/authentication/authentication.es.js +7 -7
  4. package/dist/{autoFocusTitle-CuRu2lPg.js → autoFocusTitle-gLba2mgp.js} +6 -3
  5. package/dist/{back-horizontal-hint-xTnSQbzn.js → back-horizontal-hint-BBGuJ75y.js} +1 -1
  6. package/dist/{back-vertical-hint-BWWlHfX2.js → back-vertical-hint-B9usJ5lY.js} +1 -1
  7. package/dist/base.css +425 -3290
  8. package/dist/{bottomSheet-CnWbbUAM.js → bottomSheet-Cp8DLulN.js} +7 -8
  9. package/dist/certificate-issuance/certificate-issuance.es.js +34 -87
  10. package/dist/certificate-issuance/styles.css +0 -41
  11. package/dist/{checkbox-1wUHSoaK.js → checkbox-C38Elx0O.js} +5 -5
  12. package/dist/connectionError-DAeXp8sE.js +45 -0
  13. package/dist/consent/consent.es.js +10 -12
  14. package/dist/consent/styles.css +5 -4
  15. package/dist/{countrySelector-SvUOyPo0.js → countrySelector-2t-ZTgGo.js} +3 -3
  16. package/dist/cross-document-data-match/cross-document-data-match.es.js +13 -10
  17. package/dist/curp-validation/curp-validation.es.js +28 -29
  18. package/dist/curp-validation/styles.css +47 -0
  19. package/dist/{customFields-BDsXR7A-.js → customFields-B8HQZ7Mh.js} +13 -14
  20. package/dist/{customWatchlist-CYoRNCim.js → customWatchlist-_tUmZ855.js} +9 -9
  21. package/dist/dashboardTheme-CVliZSR-.js +223 -0
  22. package/dist/{dateInputComposed-DuaofcBl.js → dateInputComposed-eRcbt_SL.js} +5 -5
  23. package/dist/dateInputComposed-ks0-opuq.js +1 -0
  24. package/dist/document-capture/document-capture.es.js +1 -1
  25. package/dist/document-capture/styles.css +85 -70
  26. package/dist/{documentCapture-DhbO-A-V.js → documentCapture-BvEGCYj-.js} +218 -136
  27. package/dist/documentCapture-DdHdRPzR.js +2 -0
  28. package/dist/{dropdownComposed-CoU0enG6.js → dropdownComposed-OHDHzt1Q.js} +18 -11
  29. package/dist/dropdownComposed-kjG4UblM.js +1 -0
  30. package/dist/dynamic-forms/styles.css +58 -6
  31. package/dist/{dynamicForms-BifGbC9F.js → dynamicForms-P-4E42IA.js} +53 -45
  32. package/dist/ekyb/ekyb.es.js +1 -1
  33. package/dist/ekyb/styles.css +1 -28
  34. package/dist/ekybModule-CiaxFHXo.js +2 -0
  35. package/dist/{ekybModule-DGnTw5UV.js → ekybModule-DmjkzVWE.js} +51 -27
  36. package/dist/ekyc/ekyc.es.js +1 -1
  37. package/dist/ekyc/styles.css +2 -2
  38. package/dist/ekycModule-BVt10kgv.js +2 -0
  39. package/dist/{ekycModule-Dxpdd0ns.js → ekycModule-Da1Fm7ai.js} +45 -19
  40. package/dist/electronic-signature/electronic-signature.es.js +1 -1
  41. package/dist/{ae-signature → electronic-signature}/styles.css +2 -2
  42. package/dist/{electronic-signature-Ueoffasr.js → electronic-signature-yamI6zHM.js} +31 -23
  43. package/dist/email/email.es.js +10 -11
  44. package/dist/{emailInput-DsLkDtER.js → emailInput-B0P2Q-pk.js} +4 -4
  45. package/dist/{expiredId-BZXLrLk-.js → expiredId-BXXE3srN.js} +6 -6
  46. package/dist/{extensibility-7sRIN0JC.js → extensibility-iJYzpW6H.js} +440 -374
  47. package/dist/extensibility.es.js +24 -28
  48. package/dist/face-match/face-match.es.js +1 -1
  49. package/dist/face-match/styles.css +9 -609
  50. package/dist/faceMatch-D4XFihTc.js +2 -0
  51. package/dist/{faceMatch-DyTBoMDm.js → faceMatch-VtEZvsen.js} +71 -79
  52. package/dist/field-comparison/field-comparison.es.js +1 -1
  53. package/dist/fieldComparison-B_r9Bal7.js +2 -0
  54. package/dist/{fieldComparison-L_knHqgw.js → fieldComparison-NLdDSOEh.js} +11 -12
  55. package/dist/finalSuccessScreen-DryADx1n.js +500 -0
  56. package/dist/fiscal-qr/fiscal-qr.es.js +12 -12
  57. package/dist/flip-animation-CvN8FLNc.js +6996 -0
  58. package/dist/flow/flow.es.js +81 -45
  59. package/dist/flow/styles.css +908 -5423
  60. package/dist/{front-horizontal-hint-B84GgTO1.js → front-horizontal-hint-D3CrWViZ.js} +1 -1
  61. package/dist/{front-vertical-hint-Bs_avngq.js → front-vertical-hint-BoLZvyx5.js} +1 -1
  62. package/dist/geolocation/geolocation.es.js +36 -13
  63. package/dist/geolocation/styles.css +1 -1
  64. package/dist/government-validation/government-validation.es.js +11 -12
  65. package/dist/{homeScreen-B6T0JVh8.js → homeScreen-Pv3v_0ji.js} +7 -9
  66. package/dist/{icons-CJJbIpBq.js → icons--ezYG2Fb.js} +92 -7
  67. package/dist/id/id.es.js +222 -52
  68. package/dist/id/styles.css +290 -10
  69. package/dist/id-back-of-card-DO593HH8.js +83 -0
  70. package/dist/id-back-of-card-vertical-DArEQ0hE.js +88 -0
  71. package/dist/id-front-of-card-Bcit7Pnq.js +308 -0
  72. package/dist/id-front-of-card-vertical-Bcr-KXcl.js +278 -0
  73. package/dist/id-laser-h-BaUHzX-d.js +480 -0
  74. package/dist/{id-laser-v-BiUXkM4x.js → id-laser-v-Dv9yEYJE.js} +7 -17
  75. package/dist/id-selfie-flow/id-selfie-flow.es.js +239 -0
  76. package/dist/id-selfie-flow/styles.css +749 -0
  77. package/dist/id-verification/id-verification.es.js +13 -9
  78. package/dist/{idOcr-WFBvqy3b.js → idOcr-gsIXHq6R.js} +14 -15
  79. package/dist/identity-reuse/identity-reuse.es.js +6 -8
  80. package/dist/identity-reuse/styles.css +1 -1
  81. package/dist/{incode-logo-57XFniXU.js → incode-logo-rGFjZHqi.js} +64 -1
  82. package/dist/incodeComponent-K9ZWg302.js +713 -0
  83. package/dist/incodeModule-CcLzar_X.js +25 -0
  84. package/dist/index.es.js +16 -5
  85. package/dist/{inputComposed-C1R2LAa3.js → inputComposed-BeROn635.js} +9 -9
  86. package/dist/inputComposed-CADVQW-o.js +1 -0
  87. package/dist/{mandatoryConsent-D0GTKu-H.js → mandatoryConsent-BtqB-FxY.js} +9 -11
  88. package/dist/{capture-CkGvdDNH.js → manualCaptureButton-quGa2ufS.js} +68 -198
  89. package/dist/manualCaptureButton-t_oIol88.js +300 -0
  90. package/dist/{modal-OxkFuuiR.js → modal-BjjJFpZu.js} +4 -4
  91. package/dist/{modal.hooks-ZrzmHAUa.js → modal.hooks-BvXzNWvY.js} +1 -1
  92. package/dist/{numberedStep-CEb-lFJm.js → numberedStep-DUs77Gy3.js} +1 -1
  93. package/dist/{optionAccessibleLabel-gfF-58Mv.js → optionAccessibleLabel-DgfHD_mx.js} +6 -6
  94. package/dist/{otpInput-CnDc6pQm.js → otpInput-D5dLXrmC.js} +72 -36
  95. package/dist/{passport-horizontal-hint-Bj0ZJY0g.js → passport-horizontal-hint-DgnU-8bl.js} +1 -1
  96. package/dist/{passport-vertical-hint-Dfk77xUJ.js → passport-vertical-hint-Dd2Wknw7.js} +1 -1
  97. package/dist/{pdf-BqtJTlor.js → pdf-BUoY_2gv.js} +1 -1
  98. package/dist/pdfViewer-CZb6obcZ.js +2 -0
  99. package/dist/{pdfViewer-B97DmT9m.js → pdfViewer-vud1VZv6.js} +5 -7
  100. package/dist/phone/phone.es.js +13 -12
  101. package/dist/{phoneInputComposed-DMiXfF-1.js → phoneInputComposed-CeVWTS_O.js} +7 -6
  102. package/dist/{processing-BeUMfdJJ.js → processing-BsvHyDWa.js} +2 -2
  103. package/dist/qe-signature/qe-signature.es.js +7 -4
  104. package/dist/{radioGroupComposed-DuQxslB2.js → radioGroupComposed-DzNGUbZQ.js} +16 -15
  105. package/dist/redirect-to-mobile/redirect-to-mobile.es.js +132 -45
  106. package/dist/redirect-to-mobile/styles.css +20 -10
  107. package/dist/{registerIncodeElement-DaNjbAwZ.js → registerIncodeElement-BduCekz5.js} +1 -1
  108. package/dist/{richText-CB1fmegc.js → richText-CTHBpZOw.js} +3 -1607
  109. package/dist/selfie/selfie.es.js +10 -10
  110. package/dist/selfie/styles.css +16 -949
  111. package/dist/signature/signature.es.js +27 -19
  112. package/dist/{ae-signature/styles2.css → signature/styles.css} +4 -4
  113. package/dist/{snackbar-DS7Mv62v.js → snackbar-C9Mqrh0e.js} +2 -2
  114. package/dist/spacer-CDlQd12V.js +2344 -0
  115. package/dist/{spinner-BMeIEK1d.js → spinner-CLZ2fz4u.js} +45 -4
  116. package/dist/statusPage--GVFSUJp.js +36 -0
  117. package/dist/{successIcon-B5mGvdx1.js → successIcon-Bj8Y9CuI.js} +1 -1
  118. package/dist/{tabs-C__chW-u.js → tabs-DweBZTV2.js} +4 -3
  119. package/dist/themes/dark.css +35 -0
  120. package/dist/themes/light.css +35 -0
  121. package/dist/{tutorial-CCfPuVKX.js → tutorial-BZZC93Ur.js} +222 -180
  122. package/dist/types/ae-signature.d.ts +91 -5
  123. package/dist/types/antifraud.d.ts +86 -3
  124. package/dist/types/authentication.d.ts +86 -3
  125. package/dist/types/certificate-issuance.d.ts +86 -3
  126. package/dist/types/consent.d.ts +86 -3
  127. package/dist/types/cross-document-data-match.d.ts +88 -4
  128. package/dist/types/curp-validation.d.ts +86 -3
  129. package/dist/types/document-capture.d.ts +88 -4
  130. package/dist/types/ekyb.d.ts +88 -4
  131. package/dist/types/ekyc.d.ts +88 -4
  132. package/dist/types/electronic-signature.d.ts +87 -4
  133. package/dist/types/email.d.ts +82 -22
  134. package/dist/types/extensibility.d.ts +157 -5
  135. package/dist/types/face-match.d.ts +84 -22
  136. package/dist/types/field-comparison.d.ts +86 -3
  137. package/dist/types/fiscal-qr.d.ts +89 -5
  138. package/dist/types/flow.d.ts +92 -2
  139. package/dist/types/geolocation.d.ts +86 -3
  140. package/dist/types/government-validation.d.ts +86 -3
  141. package/dist/types/id-selfie-flow.d.ts +161 -0
  142. package/dist/types/id-verification.d.ts +87 -4
  143. package/dist/types/id.d.ts +88 -5
  144. package/dist/types/identity-reuse.d.ts +82 -2
  145. package/dist/types/index.d.ts +106 -1
  146. package/dist/types/phone.d.ts +83 -24
  147. package/dist/types/qe-signature.d.ts +91 -5
  148. package/dist/types/redirect-to-mobile.d.ts +4 -1
  149. package/dist/types/selfie.d.ts +86 -3
  150. package/dist/types/signature.d.ts +91 -5
  151. package/dist/types/video-selfie.d.ts +83 -6
  152. package/dist/types/watchlist.d.ts +91 -5
  153. package/dist/types/workflow.d.ts +85 -2
  154. package/dist/{i18n-CU4xq8qC.js → uiConfig-B5ASPUL4.js} +26 -3
  155. package/dist/{useModuleLoader-Bi26kJbg.js → useModuleLoader-D_YpuVsS.js} +37 -248
  156. package/dist/{vendor-preact-DThS2ZQ_.js → vendor-preact-mvwZ8mJj.js} +1 -1
  157. package/dist/{verificationResult-BWWkmeiA.js → verificationResult-B8HwR07t.js} +26 -15
  158. package/dist/video-selfie/styles.css +349 -1202
  159. package/dist/video-selfie/video-selfie.es.js +120 -381
  160. package/dist/watchlist/watchlist.es.js +16 -13
  161. package/dist/{watchlistForBusiness-D2Uo_TwF.js → watchlistForBusiness-D8Is99bZ.js} +12 -13
  162. package/dist/workflow/styles.css +501 -3977
  163. package/dist/workflow/workflow.es.js +25 -18
  164. package/package.json +22 -20
  165. package/dist/button-Dz6AsbmF.js +0 -40
  166. package/dist/cameraView-DIEzM5ru.js +0 -47
  167. package/dist/cpf-ocr/cpf-ocr.es.js +0 -2
  168. package/dist/cpf-ocr/styles.css +0 -45
  169. package/dist/cpfOcr-B79245-3.js +0 -2
  170. package/dist/cpfOcr-BhxT-lRN.js +0 -92
  171. package/dist/dateInputComposed-DRzZi6uy.js +0 -1
  172. package/dist/documentCapture-DXYYyxZl.js +0 -2
  173. package/dist/dropdownComposed-BAoxIIsE.js +0 -1
  174. package/dist/ekybModule-C6Nttked.js +0 -2
  175. package/dist/ekycModule-CDIEjI6V.js +0 -2
  176. package/dist/errorIcon-BA4T6iy-.js +0 -26
  177. package/dist/faceMatch-B_HvxLm_.js +0 -2
  178. package/dist/fieldComparison-DfNEuEE5.js +0 -2
  179. package/dist/flip-animation-CZYSUtMm.js +0 -6983
  180. package/dist/hooks-CNu7o-v8.js +0 -186
  181. package/dist/id-laser-h-CzPegPMn.js +0 -467
  182. package/dist/incodeComponent-CfzJGETt.js +0 -64
  183. package/dist/incodeModule-B-4_3JrK.js +0 -13
  184. package/dist/inputComposed-BaY5q9WM.js +0 -1
  185. package/dist/loadingIcon-B0ysgiNq.js +0 -148
  186. package/dist/page-DidH_RkX.js +0 -171
  187. package/dist/spinner-BCDCoi9C.js +0 -1
  188. package/dist/statusPage-Bk8nJwXV.js +0 -28
  189. package/dist/transitionSpinner-CuNCqHNi.js +0 -30
  190. package/dist/types/cpf-ocr.d.ts +0 -12
  191. package/dist/typography-BZIpjo97.js +0 -45
  192. package/dist/uiConfig-D2_wawvr.js +0 -25
  193. /package/dist/{aligndevicelottie-DFscByAI.js → aligndevicelottie-CfoZ5Uus.js} +0 -0
  194. /package/dist/{back-tutorial-cI_4VHmE.js → back-tutorial-BHyRHyET.js} +0 -0
  195. /package/dist/{backdevicelottie-COyhTrxM.js → backdevicelottie-yKkczgFy.js} +0 -0
  196. /package/dist/{blurdevicelottie-BLVeJHEG.js → blurdevicelottie-8BbophdM.js} +0 -0
  197. /package/dist/{browser-ponyfill-Df13Th-G.js → browser-ponyfill-CBjGwwPW.js} +0 -0
  198. /package/dist/{defineProperty-Qjefk7Uf.js → defineProperty-BbpBna-2.js} +0 -0
  199. /package/dist/{frontdevicelottie-B4tE2PYQ.js → frontdevicelottie-CFcahVLk.js} +0 -0
  200. /package/dist/{glaredevicelottie-D1pR73sx.js → glaredevicelottie-Cnvah0kz.js} +0 -0
  201. /package/dist/{id-tutorial-DwO90SAm.js → id-tutorial-BOOsXlAJ.js} +0 -0
  202. /package/dist/{lottie_light-C6B2ec41.js → lottie_light-Bv56F2Ae.js} +0 -0
  203. /package/dist/{passport-tutorial-D9JNsMsM.js → passport-tutorial-CeSup6m9.js} +0 -0
  204. /package/dist/{requiredLabelHint-D0RhuMed.js → requiredLabelHint-Dx0WS2cR.js} +0 -0
  205. /package/dist/{selfieTutorial-pB-N-fj5.js → selfieTutorial-CYa8bq6B.js} +0 -0
@@ -0,0 +1,2344 @@
1
+ import { r as __toESM } from "./rolldown-runtime--E5BIlTp.js";
2
+ import { i as useTranslation, n as useUiConfig } from "./uiConfig-B5ASPUL4.js";
3
+ import { _ as y, b as Q, d as T, f as _, g as x, h as q, l as A, p as d, v as u } from "./vendor-preact-mvwZ8mJj.js";
4
+ //#region src/styles/cn.tsx
5
+ var cn = (...classes) => {
6
+ const result = [];
7
+ for (const cls of classes) {
8
+ if (!cls) continue;
9
+ if (typeof cls === "string") result.push(cls);
10
+ else if (typeof cls === "object") {
11
+ for (const [key, value] of Object.entries(cls)) if (value) result.push(key);
12
+ }
13
+ }
14
+ return result.join(" ");
15
+ };
16
+ //#endregion
17
+ //#region ../../node_modules/.pnpm/dompurify@3.3.3/node_modules/dompurify/dist/purify.es.mjs
18
+ /*! @license DOMPurify 3.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.3/LICENSE */
19
+ var { entries, setPrototypeOf, isFrozen, getPrototypeOf, getOwnPropertyDescriptor } = Object;
20
+ var { freeze, seal, create } = Object;
21
+ var { apply, construct } = typeof Reflect !== "undefined" && Reflect;
22
+ if (!freeze) freeze = function freeze(x) {
23
+ return x;
24
+ };
25
+ if (!seal) seal = function seal(x) {
26
+ return x;
27
+ };
28
+ if (!apply) apply = function apply(func, thisArg) {
29
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) args[_key - 2] = arguments[_key];
30
+ return func.apply(thisArg, args);
31
+ };
32
+ if (!construct) construct = function construct(Func) {
33
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) args[_key2 - 1] = arguments[_key2];
34
+ return new Func(...args);
35
+ };
36
+ var arrayForEach = unapply(Array.prototype.forEach);
37
+ var arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);
38
+ var arrayPop = unapply(Array.prototype.pop);
39
+ var arrayPush = unapply(Array.prototype.push);
40
+ var arraySplice = unapply(Array.prototype.splice);
41
+ var stringToLowerCase = unapply(String.prototype.toLowerCase);
42
+ var stringToString = unapply(String.prototype.toString);
43
+ var stringMatch = unapply(String.prototype.match);
44
+ var stringReplace = unapply(String.prototype.replace);
45
+ var stringIndexOf = unapply(String.prototype.indexOf);
46
+ var stringTrim = unapply(String.prototype.trim);
47
+ var objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);
48
+ var regExpTest = unapply(RegExp.prototype.test);
49
+ var typeErrorCreate = unconstruct(TypeError);
50
+ /**
51
+ * Creates a new function that calls the given function with a specified thisArg and arguments.
52
+ *
53
+ * @param func - The function to be wrapped and called.
54
+ * @returns A new function that calls the given function with a specified thisArg and arguments.
55
+ */
56
+ function unapply(func) {
57
+ return function(thisArg) {
58
+ if (thisArg instanceof RegExp) thisArg.lastIndex = 0;
59
+ for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) args[_key3 - 1] = arguments[_key3];
60
+ return apply(func, thisArg, args);
61
+ };
62
+ }
63
+ /**
64
+ * Creates a new function that constructs an instance of the given constructor function with the provided arguments.
65
+ *
66
+ * @param func - The constructor function to be wrapped and called.
67
+ * @returns A new function that constructs an instance of the given constructor function with the provided arguments.
68
+ */
69
+ function unconstruct(Func) {
70
+ return function() {
71
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) args[_key4] = arguments[_key4];
72
+ return construct(Func, args);
73
+ };
74
+ }
75
+ /**
76
+ * Add properties to a lookup table
77
+ *
78
+ * @param set - The set to which elements will be added.
79
+ * @param array - The array containing elements to be added to the set.
80
+ * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.
81
+ * @returns The modified set with added elements.
82
+ */
83
+ function addToSet(set, array) {
84
+ let transformCaseFunc = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : stringToLowerCase;
85
+ if (setPrototypeOf) setPrototypeOf(set, null);
86
+ let l = array.length;
87
+ while (l--) {
88
+ let element = array[l];
89
+ if (typeof element === "string") {
90
+ const lcElement = transformCaseFunc(element);
91
+ if (lcElement !== element) {
92
+ if (!isFrozen(array)) array[l] = lcElement;
93
+ element = lcElement;
94
+ }
95
+ }
96
+ set[element] = true;
97
+ }
98
+ return set;
99
+ }
100
+ /**
101
+ * Clean up an array to harden against CSPP
102
+ *
103
+ * @param array - The array to be cleaned.
104
+ * @returns The cleaned version of the array
105
+ */
106
+ function cleanArray(array) {
107
+ for (let index = 0; index < array.length; index++) if (!objectHasOwnProperty(array, index)) array[index] = null;
108
+ return array;
109
+ }
110
+ /**
111
+ * Shallow clone an object
112
+ *
113
+ * @param object - The object to be cloned.
114
+ * @returns A new object that copies the original.
115
+ */
116
+ function clone(object) {
117
+ const newObject = create(null);
118
+ for (const [property, value] of entries(object)) if (objectHasOwnProperty(object, property)) if (Array.isArray(value)) newObject[property] = cleanArray(value);
119
+ else if (value && typeof value === "object" && value.constructor === Object) newObject[property] = clone(value);
120
+ else newObject[property] = value;
121
+ return newObject;
122
+ }
123
+ /**
124
+ * This method automatically checks if the prop is function or getter and behaves accordingly.
125
+ *
126
+ * @param object - The object to look up the getter function in its prototype chain.
127
+ * @param prop - The property name for which to find the getter function.
128
+ * @returns The getter function found in the prototype chain or a fallback function.
129
+ */
130
+ function lookupGetter(object, prop) {
131
+ while (object !== null) {
132
+ const desc = getOwnPropertyDescriptor(object, prop);
133
+ if (desc) {
134
+ if (desc.get) return unapply(desc.get);
135
+ if (typeof desc.value === "function") return unapply(desc.value);
136
+ }
137
+ object = getPrototypeOf(object);
138
+ }
139
+ function fallbackValue() {
140
+ return null;
141
+ }
142
+ return fallbackValue;
143
+ }
144
+ var html$1 = freeze([
145
+ "a",
146
+ "abbr",
147
+ "acronym",
148
+ "address",
149
+ "area",
150
+ "article",
151
+ "aside",
152
+ "audio",
153
+ "b",
154
+ "bdi",
155
+ "bdo",
156
+ "big",
157
+ "blink",
158
+ "blockquote",
159
+ "body",
160
+ "br",
161
+ "button",
162
+ "canvas",
163
+ "caption",
164
+ "center",
165
+ "cite",
166
+ "code",
167
+ "col",
168
+ "colgroup",
169
+ "content",
170
+ "data",
171
+ "datalist",
172
+ "dd",
173
+ "decorator",
174
+ "del",
175
+ "details",
176
+ "dfn",
177
+ "dialog",
178
+ "dir",
179
+ "div",
180
+ "dl",
181
+ "dt",
182
+ "element",
183
+ "em",
184
+ "fieldset",
185
+ "figcaption",
186
+ "figure",
187
+ "font",
188
+ "footer",
189
+ "form",
190
+ "h1",
191
+ "h2",
192
+ "h3",
193
+ "h4",
194
+ "h5",
195
+ "h6",
196
+ "head",
197
+ "header",
198
+ "hgroup",
199
+ "hr",
200
+ "html",
201
+ "i",
202
+ "img",
203
+ "input",
204
+ "ins",
205
+ "kbd",
206
+ "label",
207
+ "legend",
208
+ "li",
209
+ "main",
210
+ "map",
211
+ "mark",
212
+ "marquee",
213
+ "menu",
214
+ "menuitem",
215
+ "meter",
216
+ "nav",
217
+ "nobr",
218
+ "ol",
219
+ "optgroup",
220
+ "option",
221
+ "output",
222
+ "p",
223
+ "picture",
224
+ "pre",
225
+ "progress",
226
+ "q",
227
+ "rp",
228
+ "rt",
229
+ "ruby",
230
+ "s",
231
+ "samp",
232
+ "search",
233
+ "section",
234
+ "select",
235
+ "shadow",
236
+ "slot",
237
+ "small",
238
+ "source",
239
+ "spacer",
240
+ "span",
241
+ "strike",
242
+ "strong",
243
+ "style",
244
+ "sub",
245
+ "summary",
246
+ "sup",
247
+ "table",
248
+ "tbody",
249
+ "td",
250
+ "template",
251
+ "textarea",
252
+ "tfoot",
253
+ "th",
254
+ "thead",
255
+ "time",
256
+ "tr",
257
+ "track",
258
+ "tt",
259
+ "u",
260
+ "ul",
261
+ "var",
262
+ "video",
263
+ "wbr"
264
+ ]);
265
+ var svg$1 = freeze([
266
+ "svg",
267
+ "a",
268
+ "altglyph",
269
+ "altglyphdef",
270
+ "altglyphitem",
271
+ "animatecolor",
272
+ "animatemotion",
273
+ "animatetransform",
274
+ "circle",
275
+ "clippath",
276
+ "defs",
277
+ "desc",
278
+ "ellipse",
279
+ "enterkeyhint",
280
+ "exportparts",
281
+ "filter",
282
+ "font",
283
+ "g",
284
+ "glyph",
285
+ "glyphref",
286
+ "hkern",
287
+ "image",
288
+ "inputmode",
289
+ "line",
290
+ "lineargradient",
291
+ "marker",
292
+ "mask",
293
+ "metadata",
294
+ "mpath",
295
+ "part",
296
+ "path",
297
+ "pattern",
298
+ "polygon",
299
+ "polyline",
300
+ "radialgradient",
301
+ "rect",
302
+ "stop",
303
+ "style",
304
+ "switch",
305
+ "symbol",
306
+ "text",
307
+ "textpath",
308
+ "title",
309
+ "tref",
310
+ "tspan",
311
+ "view",
312
+ "vkern"
313
+ ]);
314
+ var svgFilters = freeze([
315
+ "feBlend",
316
+ "feColorMatrix",
317
+ "feComponentTransfer",
318
+ "feComposite",
319
+ "feConvolveMatrix",
320
+ "feDiffuseLighting",
321
+ "feDisplacementMap",
322
+ "feDistantLight",
323
+ "feDropShadow",
324
+ "feFlood",
325
+ "feFuncA",
326
+ "feFuncB",
327
+ "feFuncG",
328
+ "feFuncR",
329
+ "feGaussianBlur",
330
+ "feImage",
331
+ "feMerge",
332
+ "feMergeNode",
333
+ "feMorphology",
334
+ "feOffset",
335
+ "fePointLight",
336
+ "feSpecularLighting",
337
+ "feSpotLight",
338
+ "feTile",
339
+ "feTurbulence"
340
+ ]);
341
+ var svgDisallowed = freeze([
342
+ "animate",
343
+ "color-profile",
344
+ "cursor",
345
+ "discard",
346
+ "font-face",
347
+ "font-face-format",
348
+ "font-face-name",
349
+ "font-face-src",
350
+ "font-face-uri",
351
+ "foreignobject",
352
+ "hatch",
353
+ "hatchpath",
354
+ "mesh",
355
+ "meshgradient",
356
+ "meshpatch",
357
+ "meshrow",
358
+ "missing-glyph",
359
+ "script",
360
+ "set",
361
+ "solidcolor",
362
+ "unknown",
363
+ "use"
364
+ ]);
365
+ var mathMl$1 = freeze([
366
+ "math",
367
+ "menclose",
368
+ "merror",
369
+ "mfenced",
370
+ "mfrac",
371
+ "mglyph",
372
+ "mi",
373
+ "mlabeledtr",
374
+ "mmultiscripts",
375
+ "mn",
376
+ "mo",
377
+ "mover",
378
+ "mpadded",
379
+ "mphantom",
380
+ "mroot",
381
+ "mrow",
382
+ "ms",
383
+ "mspace",
384
+ "msqrt",
385
+ "mstyle",
386
+ "msub",
387
+ "msup",
388
+ "msubsup",
389
+ "mtable",
390
+ "mtd",
391
+ "mtext",
392
+ "mtr",
393
+ "munder",
394
+ "munderover",
395
+ "mprescripts"
396
+ ]);
397
+ var mathMlDisallowed = freeze([
398
+ "maction",
399
+ "maligngroup",
400
+ "malignmark",
401
+ "mlongdiv",
402
+ "mscarries",
403
+ "mscarry",
404
+ "msgroup",
405
+ "mstack",
406
+ "msline",
407
+ "msrow",
408
+ "semantics",
409
+ "annotation",
410
+ "annotation-xml",
411
+ "mprescripts",
412
+ "none"
413
+ ]);
414
+ var text = freeze(["#text"]);
415
+ var html = freeze([
416
+ "accept",
417
+ "action",
418
+ "align",
419
+ "alt",
420
+ "autocapitalize",
421
+ "autocomplete",
422
+ "autopictureinpicture",
423
+ "autoplay",
424
+ "background",
425
+ "bgcolor",
426
+ "border",
427
+ "capture",
428
+ "cellpadding",
429
+ "cellspacing",
430
+ "checked",
431
+ "cite",
432
+ "class",
433
+ "clear",
434
+ "color",
435
+ "cols",
436
+ "colspan",
437
+ "controls",
438
+ "controlslist",
439
+ "coords",
440
+ "crossorigin",
441
+ "datetime",
442
+ "decoding",
443
+ "default",
444
+ "dir",
445
+ "disabled",
446
+ "disablepictureinpicture",
447
+ "disableremoteplayback",
448
+ "download",
449
+ "draggable",
450
+ "enctype",
451
+ "enterkeyhint",
452
+ "exportparts",
453
+ "face",
454
+ "for",
455
+ "headers",
456
+ "height",
457
+ "hidden",
458
+ "high",
459
+ "href",
460
+ "hreflang",
461
+ "id",
462
+ "inert",
463
+ "inputmode",
464
+ "integrity",
465
+ "ismap",
466
+ "kind",
467
+ "label",
468
+ "lang",
469
+ "list",
470
+ "loading",
471
+ "loop",
472
+ "low",
473
+ "max",
474
+ "maxlength",
475
+ "media",
476
+ "method",
477
+ "min",
478
+ "minlength",
479
+ "multiple",
480
+ "muted",
481
+ "name",
482
+ "nonce",
483
+ "noshade",
484
+ "novalidate",
485
+ "nowrap",
486
+ "open",
487
+ "optimum",
488
+ "part",
489
+ "pattern",
490
+ "placeholder",
491
+ "playsinline",
492
+ "popover",
493
+ "popovertarget",
494
+ "popovertargetaction",
495
+ "poster",
496
+ "preload",
497
+ "pubdate",
498
+ "radiogroup",
499
+ "readonly",
500
+ "rel",
501
+ "required",
502
+ "rev",
503
+ "reversed",
504
+ "role",
505
+ "rows",
506
+ "rowspan",
507
+ "spellcheck",
508
+ "scope",
509
+ "selected",
510
+ "shape",
511
+ "size",
512
+ "sizes",
513
+ "slot",
514
+ "span",
515
+ "srclang",
516
+ "start",
517
+ "src",
518
+ "srcset",
519
+ "step",
520
+ "style",
521
+ "summary",
522
+ "tabindex",
523
+ "title",
524
+ "translate",
525
+ "type",
526
+ "usemap",
527
+ "valign",
528
+ "value",
529
+ "width",
530
+ "wrap",
531
+ "xmlns",
532
+ "slot"
533
+ ]);
534
+ var svg = freeze([
535
+ "accent-height",
536
+ "accumulate",
537
+ "additive",
538
+ "alignment-baseline",
539
+ "amplitude",
540
+ "ascent",
541
+ "attributename",
542
+ "attributetype",
543
+ "azimuth",
544
+ "basefrequency",
545
+ "baseline-shift",
546
+ "begin",
547
+ "bias",
548
+ "by",
549
+ "class",
550
+ "clip",
551
+ "clippathunits",
552
+ "clip-path",
553
+ "clip-rule",
554
+ "color",
555
+ "color-interpolation",
556
+ "color-interpolation-filters",
557
+ "color-profile",
558
+ "color-rendering",
559
+ "cx",
560
+ "cy",
561
+ "d",
562
+ "dx",
563
+ "dy",
564
+ "diffuseconstant",
565
+ "direction",
566
+ "display",
567
+ "divisor",
568
+ "dur",
569
+ "edgemode",
570
+ "elevation",
571
+ "end",
572
+ "exponent",
573
+ "fill",
574
+ "fill-opacity",
575
+ "fill-rule",
576
+ "filter",
577
+ "filterunits",
578
+ "flood-color",
579
+ "flood-opacity",
580
+ "font-family",
581
+ "font-size",
582
+ "font-size-adjust",
583
+ "font-stretch",
584
+ "font-style",
585
+ "font-variant",
586
+ "font-weight",
587
+ "fx",
588
+ "fy",
589
+ "g1",
590
+ "g2",
591
+ "glyph-name",
592
+ "glyphref",
593
+ "gradientunits",
594
+ "gradienttransform",
595
+ "height",
596
+ "href",
597
+ "id",
598
+ "image-rendering",
599
+ "in",
600
+ "in2",
601
+ "intercept",
602
+ "k",
603
+ "k1",
604
+ "k2",
605
+ "k3",
606
+ "k4",
607
+ "kerning",
608
+ "keypoints",
609
+ "keysplines",
610
+ "keytimes",
611
+ "lang",
612
+ "lengthadjust",
613
+ "letter-spacing",
614
+ "kernelmatrix",
615
+ "kernelunitlength",
616
+ "lighting-color",
617
+ "local",
618
+ "marker-end",
619
+ "marker-mid",
620
+ "marker-start",
621
+ "markerheight",
622
+ "markerunits",
623
+ "markerwidth",
624
+ "maskcontentunits",
625
+ "maskunits",
626
+ "max",
627
+ "mask",
628
+ "mask-type",
629
+ "media",
630
+ "method",
631
+ "mode",
632
+ "min",
633
+ "name",
634
+ "numoctaves",
635
+ "offset",
636
+ "operator",
637
+ "opacity",
638
+ "order",
639
+ "orient",
640
+ "orientation",
641
+ "origin",
642
+ "overflow",
643
+ "paint-order",
644
+ "path",
645
+ "pathlength",
646
+ "patterncontentunits",
647
+ "patterntransform",
648
+ "patternunits",
649
+ "points",
650
+ "preservealpha",
651
+ "preserveaspectratio",
652
+ "primitiveunits",
653
+ "r",
654
+ "rx",
655
+ "ry",
656
+ "radius",
657
+ "refx",
658
+ "refy",
659
+ "repeatcount",
660
+ "repeatdur",
661
+ "restart",
662
+ "result",
663
+ "rotate",
664
+ "scale",
665
+ "seed",
666
+ "shape-rendering",
667
+ "slope",
668
+ "specularconstant",
669
+ "specularexponent",
670
+ "spreadmethod",
671
+ "startoffset",
672
+ "stddeviation",
673
+ "stitchtiles",
674
+ "stop-color",
675
+ "stop-opacity",
676
+ "stroke-dasharray",
677
+ "stroke-dashoffset",
678
+ "stroke-linecap",
679
+ "stroke-linejoin",
680
+ "stroke-miterlimit",
681
+ "stroke-opacity",
682
+ "stroke",
683
+ "stroke-width",
684
+ "style",
685
+ "surfacescale",
686
+ "systemlanguage",
687
+ "tabindex",
688
+ "tablevalues",
689
+ "targetx",
690
+ "targety",
691
+ "transform",
692
+ "transform-origin",
693
+ "text-anchor",
694
+ "text-decoration",
695
+ "text-rendering",
696
+ "textlength",
697
+ "type",
698
+ "u1",
699
+ "u2",
700
+ "unicode",
701
+ "values",
702
+ "viewbox",
703
+ "visibility",
704
+ "version",
705
+ "vert-adv-y",
706
+ "vert-origin-x",
707
+ "vert-origin-y",
708
+ "width",
709
+ "word-spacing",
710
+ "wrap",
711
+ "writing-mode",
712
+ "xchannelselector",
713
+ "ychannelselector",
714
+ "x",
715
+ "x1",
716
+ "x2",
717
+ "xmlns",
718
+ "y",
719
+ "y1",
720
+ "y2",
721
+ "z",
722
+ "zoomandpan"
723
+ ]);
724
+ var mathMl = freeze([
725
+ "accent",
726
+ "accentunder",
727
+ "align",
728
+ "bevelled",
729
+ "close",
730
+ "columnsalign",
731
+ "columnlines",
732
+ "columnspan",
733
+ "denomalign",
734
+ "depth",
735
+ "dir",
736
+ "display",
737
+ "displaystyle",
738
+ "encoding",
739
+ "fence",
740
+ "frame",
741
+ "height",
742
+ "href",
743
+ "id",
744
+ "largeop",
745
+ "length",
746
+ "linethickness",
747
+ "lspace",
748
+ "lquote",
749
+ "mathbackground",
750
+ "mathcolor",
751
+ "mathsize",
752
+ "mathvariant",
753
+ "maxsize",
754
+ "minsize",
755
+ "movablelimits",
756
+ "notation",
757
+ "numalign",
758
+ "open",
759
+ "rowalign",
760
+ "rowlines",
761
+ "rowspacing",
762
+ "rowspan",
763
+ "rspace",
764
+ "rquote",
765
+ "scriptlevel",
766
+ "scriptminsize",
767
+ "scriptsizemultiplier",
768
+ "selection",
769
+ "separator",
770
+ "separators",
771
+ "stretchy",
772
+ "subscriptshift",
773
+ "supscriptshift",
774
+ "symmetric",
775
+ "voffset",
776
+ "width",
777
+ "xmlns"
778
+ ]);
779
+ var xml = freeze([
780
+ "xlink:href",
781
+ "xml:id",
782
+ "xlink:title",
783
+ "xml:space",
784
+ "xmlns:xlink"
785
+ ]);
786
+ var MUSTACHE_EXPR = seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm);
787
+ var ERB_EXPR = seal(/<%[\w\W]*|[\w\W]*%>/gm);
788
+ var TMPLIT_EXPR = seal(/\$\{[\w\W]*/gm);
789
+ var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/);
790
+ var ARIA_ATTR = seal(/^aria-[\-\w]+$/);
791
+ var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i);
792
+ var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
793
+ var ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g);
794
+ var DOCTYPE_NAME = seal(/^html$/i);
795
+ var CUSTOM_ELEMENT = seal(/^[a-z][.\w]*(-[.\w]+)+$/i);
796
+ var EXPRESSIONS = /* @__PURE__ */ Object.freeze({
797
+ __proto__: null,
798
+ ARIA_ATTR,
799
+ ATTR_WHITESPACE,
800
+ CUSTOM_ELEMENT,
801
+ DATA_ATTR,
802
+ DOCTYPE_NAME,
803
+ ERB_EXPR,
804
+ IS_ALLOWED_URI,
805
+ IS_SCRIPT_OR_DATA,
806
+ MUSTACHE_EXPR,
807
+ TMPLIT_EXPR
808
+ });
809
+ var NODE_TYPE = {
810
+ element: 1,
811
+ attribute: 2,
812
+ text: 3,
813
+ cdataSection: 4,
814
+ entityReference: 5,
815
+ entityNode: 6,
816
+ progressingInstruction: 7,
817
+ comment: 8,
818
+ document: 9,
819
+ documentType: 10,
820
+ documentFragment: 11,
821
+ notation: 12
822
+ };
823
+ var getGlobal = function getGlobal() {
824
+ return typeof window === "undefined" ? null : window;
825
+ };
826
+ /**
827
+ * Creates a no-op policy for internal use only.
828
+ * Don't export this function outside this module!
829
+ * @param trustedTypes The policy factory.
830
+ * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).
831
+ * @return The policy created (or null, if Trusted Types
832
+ * are not supported or creating the policy failed).
833
+ */
834
+ var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {
835
+ if (typeof trustedTypes !== "object" || typeof trustedTypes.createPolicy !== "function") return null;
836
+ let suffix = null;
837
+ const ATTR_NAME = "data-tt-policy-suffix";
838
+ if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) suffix = purifyHostElement.getAttribute(ATTR_NAME);
839
+ const policyName = "dompurify" + (suffix ? "#" + suffix : "");
840
+ try {
841
+ return trustedTypes.createPolicy(policyName, {
842
+ createHTML(html) {
843
+ return html;
844
+ },
845
+ createScriptURL(scriptUrl) {
846
+ return scriptUrl;
847
+ }
848
+ });
849
+ } catch (_) {
850
+ console.warn("TrustedTypes policy " + policyName + " could not be created.");
851
+ return null;
852
+ }
853
+ };
854
+ var _createHooksMap = function _createHooksMap() {
855
+ return {
856
+ afterSanitizeAttributes: [],
857
+ afterSanitizeElements: [],
858
+ afterSanitizeShadowDOM: [],
859
+ beforeSanitizeAttributes: [],
860
+ beforeSanitizeElements: [],
861
+ beforeSanitizeShadowDOM: [],
862
+ uponSanitizeAttribute: [],
863
+ uponSanitizeElement: [],
864
+ uponSanitizeShadowNode: []
865
+ };
866
+ };
867
+ function createDOMPurify() {
868
+ let window = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal();
869
+ const DOMPurify = (root) => createDOMPurify(root);
870
+ DOMPurify.version = "3.3.3";
871
+ DOMPurify.removed = [];
872
+ if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {
873
+ DOMPurify.isSupported = false;
874
+ return DOMPurify;
875
+ }
876
+ let { document } = window;
877
+ const originalDocument = document;
878
+ const currentScript = originalDocument.currentScript;
879
+ const { DocumentFragment, HTMLTemplateElement, Node, Element, NodeFilter, NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap, HTMLFormElement, DOMParser, trustedTypes } = window;
880
+ const ElementPrototype = Element.prototype;
881
+ const cloneNode = lookupGetter(ElementPrototype, "cloneNode");
882
+ const remove = lookupGetter(ElementPrototype, "remove");
883
+ const getNextSibling = lookupGetter(ElementPrototype, "nextSibling");
884
+ const getChildNodes = lookupGetter(ElementPrototype, "childNodes");
885
+ const getParentNode = lookupGetter(ElementPrototype, "parentNode");
886
+ if (typeof HTMLTemplateElement === "function") {
887
+ const template = document.createElement("template");
888
+ if (template.content && template.content.ownerDocument) document = template.content.ownerDocument;
889
+ }
890
+ let trustedTypesPolicy;
891
+ let emptyHTML = "";
892
+ const { implementation, createNodeIterator, createDocumentFragment, getElementsByTagName } = document;
893
+ const { importNode } = originalDocument;
894
+ let hooks = _createHooksMap();
895
+ /**
896
+ * Expose whether this browser supports running the full DOMPurify.
897
+ */
898
+ DOMPurify.isSupported = typeof entries === "function" && typeof getParentNode === "function" && implementation && implementation.createHTMLDocument !== void 0;
899
+ const { MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR, DATA_ATTR, ARIA_ATTR, IS_SCRIPT_OR_DATA, ATTR_WHITESPACE, CUSTOM_ELEMENT } = EXPRESSIONS;
900
+ let { IS_ALLOWED_URI: IS_ALLOWED_URI$1 } = EXPRESSIONS;
901
+ /**
902
+ * We consider the elements and attributes below to be safe. Ideally
903
+ * don't add any new ones but feel free to remove unwanted ones.
904
+ */
905
+ let ALLOWED_TAGS = null;
906
+ const DEFAULT_ALLOWED_TAGS = addToSet({}, [
907
+ ...html$1,
908
+ ...svg$1,
909
+ ...svgFilters,
910
+ ...mathMl$1,
911
+ ...text
912
+ ]);
913
+ let ALLOWED_ATTR = null;
914
+ const DEFAULT_ALLOWED_ATTR = addToSet({}, [
915
+ ...html,
916
+ ...svg,
917
+ ...mathMl,
918
+ ...xml
919
+ ]);
920
+ let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {
921
+ tagNameCheck: {
922
+ writable: true,
923
+ configurable: false,
924
+ enumerable: true,
925
+ value: null
926
+ },
927
+ attributeNameCheck: {
928
+ writable: true,
929
+ configurable: false,
930
+ enumerable: true,
931
+ value: null
932
+ },
933
+ allowCustomizedBuiltInElements: {
934
+ writable: true,
935
+ configurable: false,
936
+ enumerable: true,
937
+ value: false
938
+ }
939
+ }));
940
+ let FORBID_TAGS = null;
941
+ let FORBID_ATTR = null;
942
+ const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {
943
+ tagCheck: {
944
+ writable: true,
945
+ configurable: false,
946
+ enumerable: true,
947
+ value: null
948
+ },
949
+ attributeCheck: {
950
+ writable: true,
951
+ configurable: false,
952
+ enumerable: true,
953
+ value: null
954
+ }
955
+ }));
956
+ let ALLOW_ARIA_ATTR = true;
957
+ let ALLOW_DATA_ATTR = true;
958
+ let ALLOW_UNKNOWN_PROTOCOLS = false;
959
+ let ALLOW_SELF_CLOSE_IN_ATTR = true;
960
+ let SAFE_FOR_TEMPLATES = false;
961
+ let SAFE_FOR_XML = true;
962
+ let WHOLE_DOCUMENT = false;
963
+ let SET_CONFIG = false;
964
+ let FORCE_BODY = false;
965
+ let RETURN_DOM = false;
966
+ let RETURN_DOM_FRAGMENT = false;
967
+ let RETURN_TRUSTED_TYPE = false;
968
+ let SANITIZE_DOM = true;
969
+ let SANITIZE_NAMED_PROPS = false;
970
+ const SANITIZE_NAMED_PROPS_PREFIX = "user-content-";
971
+ let KEEP_CONTENT = true;
972
+ let IN_PLACE = false;
973
+ let USE_PROFILES = {};
974
+ let FORBID_CONTENTS = null;
975
+ const DEFAULT_FORBID_CONTENTS = addToSet({}, [
976
+ "annotation-xml",
977
+ "audio",
978
+ "colgroup",
979
+ "desc",
980
+ "foreignobject",
981
+ "head",
982
+ "iframe",
983
+ "math",
984
+ "mi",
985
+ "mn",
986
+ "mo",
987
+ "ms",
988
+ "mtext",
989
+ "noembed",
990
+ "noframes",
991
+ "noscript",
992
+ "plaintext",
993
+ "script",
994
+ "style",
995
+ "svg",
996
+ "template",
997
+ "thead",
998
+ "title",
999
+ "video",
1000
+ "xmp"
1001
+ ]);
1002
+ let DATA_URI_TAGS = null;
1003
+ const DEFAULT_DATA_URI_TAGS = addToSet({}, [
1004
+ "audio",
1005
+ "video",
1006
+ "img",
1007
+ "source",
1008
+ "image",
1009
+ "track"
1010
+ ]);
1011
+ let URI_SAFE_ATTRIBUTES = null;
1012
+ const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [
1013
+ "alt",
1014
+ "class",
1015
+ "for",
1016
+ "id",
1017
+ "label",
1018
+ "name",
1019
+ "pattern",
1020
+ "placeholder",
1021
+ "role",
1022
+ "summary",
1023
+ "title",
1024
+ "value",
1025
+ "style",
1026
+ "xmlns"
1027
+ ]);
1028
+ const MATHML_NAMESPACE = "http://www.w3.org/1998/Math/MathML";
1029
+ const SVG_NAMESPACE = "http://www.w3.org/2000/svg";
1030
+ const HTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
1031
+ let NAMESPACE = HTML_NAMESPACE;
1032
+ let IS_EMPTY_INPUT = false;
1033
+ let ALLOWED_NAMESPACES = null;
1034
+ const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [
1035
+ MATHML_NAMESPACE,
1036
+ SVG_NAMESPACE,
1037
+ HTML_NAMESPACE
1038
+ ], stringToString);
1039
+ let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [
1040
+ "mi",
1041
+ "mo",
1042
+ "mn",
1043
+ "ms",
1044
+ "mtext"
1045
+ ]);
1046
+ let HTML_INTEGRATION_POINTS = addToSet({}, ["annotation-xml"]);
1047
+ const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [
1048
+ "title",
1049
+ "style",
1050
+ "font",
1051
+ "a",
1052
+ "script"
1053
+ ]);
1054
+ let PARSER_MEDIA_TYPE = null;
1055
+ const SUPPORTED_PARSER_MEDIA_TYPES = ["application/xhtml+xml", "text/html"];
1056
+ const DEFAULT_PARSER_MEDIA_TYPE = "text/html";
1057
+ let transformCaseFunc = null;
1058
+ let CONFIG = null;
1059
+ const formElement = document.createElement("form");
1060
+ const isRegexOrFunction = function isRegexOrFunction(testValue) {
1061
+ return testValue instanceof RegExp || testValue instanceof Function;
1062
+ };
1063
+ /**
1064
+ * _parseConfig
1065
+ *
1066
+ * @param cfg optional config literal
1067
+ */
1068
+ const _parseConfig = function _parseConfig() {
1069
+ let cfg = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
1070
+ if (CONFIG && CONFIG === cfg) return;
1071
+ if (!cfg || typeof cfg !== "object") cfg = {};
1072
+ cfg = clone(cfg);
1073
+ PARSER_MEDIA_TYPE = SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;
1074
+ transformCaseFunc = PARSER_MEDIA_TYPE === "application/xhtml+xml" ? stringToString : stringToLowerCase;
1075
+ ALLOWED_TAGS = objectHasOwnProperty(cfg, "ALLOWED_TAGS") ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;
1076
+ ALLOWED_ATTR = objectHasOwnProperty(cfg, "ALLOWED_ATTR") ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;
1077
+ ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, "ALLOWED_NAMESPACES") ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;
1078
+ URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, "ADD_URI_SAFE_ATTR") ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;
1079
+ DATA_URI_TAGS = objectHasOwnProperty(cfg, "ADD_DATA_URI_TAGS") ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;
1080
+ FORBID_CONTENTS = objectHasOwnProperty(cfg, "FORBID_CONTENTS") ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
1081
+ FORBID_TAGS = objectHasOwnProperty(cfg, "FORBID_TAGS") ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});
1082
+ FORBID_ATTR = objectHasOwnProperty(cfg, "FORBID_ATTR") ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});
1083
+ USE_PROFILES = objectHasOwnProperty(cfg, "USE_PROFILES") ? cfg.USE_PROFILES : false;
1084
+ ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false;
1085
+ ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false;
1086
+ ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false;
1087
+ ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false;
1088
+ SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false;
1089
+ SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false;
1090
+ WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false;
1091
+ RETURN_DOM = cfg.RETURN_DOM || false;
1092
+ RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false;
1093
+ RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false;
1094
+ FORCE_BODY = cfg.FORCE_BODY || false;
1095
+ SANITIZE_DOM = cfg.SANITIZE_DOM !== false;
1096
+ SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false;
1097
+ KEEP_CONTENT = cfg.KEEP_CONTENT !== false;
1098
+ IN_PLACE = cfg.IN_PLACE || false;
1099
+ IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;
1100
+ NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;
1101
+ MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;
1102
+ HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;
1103
+ CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};
1104
+ if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;
1105
+ if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;
1106
+ if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === "boolean") CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;
1107
+ if (SAFE_FOR_TEMPLATES) ALLOW_DATA_ATTR = false;
1108
+ if (RETURN_DOM_FRAGMENT) RETURN_DOM = true;
1109
+ if (USE_PROFILES) {
1110
+ ALLOWED_TAGS = addToSet({}, text);
1111
+ ALLOWED_ATTR = create(null);
1112
+ if (USE_PROFILES.html === true) {
1113
+ addToSet(ALLOWED_TAGS, html$1);
1114
+ addToSet(ALLOWED_ATTR, html);
1115
+ }
1116
+ if (USE_PROFILES.svg === true) {
1117
+ addToSet(ALLOWED_TAGS, svg$1);
1118
+ addToSet(ALLOWED_ATTR, svg);
1119
+ addToSet(ALLOWED_ATTR, xml);
1120
+ }
1121
+ if (USE_PROFILES.svgFilters === true) {
1122
+ addToSet(ALLOWED_TAGS, svgFilters);
1123
+ addToSet(ALLOWED_ATTR, svg);
1124
+ addToSet(ALLOWED_ATTR, xml);
1125
+ }
1126
+ if (USE_PROFILES.mathMl === true) {
1127
+ addToSet(ALLOWED_TAGS, mathMl$1);
1128
+ addToSet(ALLOWED_ATTR, mathMl);
1129
+ addToSet(ALLOWED_ATTR, xml);
1130
+ }
1131
+ }
1132
+ if (!objectHasOwnProperty(cfg, "ADD_TAGS")) EXTRA_ELEMENT_HANDLING.tagCheck = null;
1133
+ if (!objectHasOwnProperty(cfg, "ADD_ATTR")) EXTRA_ELEMENT_HANDLING.attributeCheck = null;
1134
+ if (cfg.ADD_TAGS) if (typeof cfg.ADD_TAGS === "function") EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;
1135
+ else {
1136
+ if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) ALLOWED_TAGS = clone(ALLOWED_TAGS);
1137
+ addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
1138
+ }
1139
+ if (cfg.ADD_ATTR) if (typeof cfg.ADD_ATTR === "function") EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;
1140
+ else {
1141
+ if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) ALLOWED_ATTR = clone(ALLOWED_ATTR);
1142
+ addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);
1143
+ }
1144
+ if (cfg.ADD_URI_SAFE_ATTR) addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);
1145
+ if (cfg.FORBID_CONTENTS) {
1146
+ if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) FORBID_CONTENTS = clone(FORBID_CONTENTS);
1147
+ addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);
1148
+ }
1149
+ if (cfg.ADD_FORBID_CONTENTS) {
1150
+ if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) FORBID_CONTENTS = clone(FORBID_CONTENTS);
1151
+ addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);
1152
+ }
1153
+ if (KEEP_CONTENT) ALLOWED_TAGS["#text"] = true;
1154
+ if (WHOLE_DOCUMENT) addToSet(ALLOWED_TAGS, [
1155
+ "html",
1156
+ "head",
1157
+ "body"
1158
+ ]);
1159
+ if (ALLOWED_TAGS.table) {
1160
+ addToSet(ALLOWED_TAGS, ["tbody"]);
1161
+ delete FORBID_TAGS.tbody;
1162
+ }
1163
+ if (cfg.TRUSTED_TYPES_POLICY) {
1164
+ if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== "function") throw typeErrorCreate("TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.");
1165
+ if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== "function") throw typeErrorCreate("TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.");
1166
+ trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;
1167
+ emptyHTML = trustedTypesPolicy.createHTML("");
1168
+ } else {
1169
+ if (trustedTypesPolicy === void 0) trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);
1170
+ if (trustedTypesPolicy !== null && typeof emptyHTML === "string") emptyHTML = trustedTypesPolicy.createHTML("");
1171
+ }
1172
+ if (freeze) freeze(cfg);
1173
+ CONFIG = cfg;
1174
+ };
1175
+ const ALL_SVG_TAGS = addToSet({}, [
1176
+ ...svg$1,
1177
+ ...svgFilters,
1178
+ ...svgDisallowed
1179
+ ]);
1180
+ const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);
1181
+ /**
1182
+ * @param element a DOM element whose namespace is being checked
1183
+ * @returns Return false if the element has a
1184
+ * namespace that a spec-compliant parser would never
1185
+ * return. Return true otherwise.
1186
+ */
1187
+ const _checkValidNamespace = function _checkValidNamespace(element) {
1188
+ let parent = getParentNode(element);
1189
+ if (!parent || !parent.tagName) parent = {
1190
+ namespaceURI: NAMESPACE,
1191
+ tagName: "template"
1192
+ };
1193
+ const tagName = stringToLowerCase(element.tagName);
1194
+ const parentTagName = stringToLowerCase(parent.tagName);
1195
+ if (!ALLOWED_NAMESPACES[element.namespaceURI]) return false;
1196
+ if (element.namespaceURI === SVG_NAMESPACE) {
1197
+ if (parent.namespaceURI === HTML_NAMESPACE) return tagName === "svg";
1198
+ if (parent.namespaceURI === MATHML_NAMESPACE) return tagName === "svg" && (parentTagName === "annotation-xml" || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);
1199
+ return Boolean(ALL_SVG_TAGS[tagName]);
1200
+ }
1201
+ if (element.namespaceURI === MATHML_NAMESPACE) {
1202
+ if (parent.namespaceURI === HTML_NAMESPACE) return tagName === "math";
1203
+ if (parent.namespaceURI === SVG_NAMESPACE) return tagName === "math" && HTML_INTEGRATION_POINTS[parentTagName];
1204
+ return Boolean(ALL_MATHML_TAGS[tagName]);
1205
+ }
1206
+ if (element.namespaceURI === HTML_NAMESPACE) {
1207
+ if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) return false;
1208
+ if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) return false;
1209
+ return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);
1210
+ }
1211
+ if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && ALLOWED_NAMESPACES[element.namespaceURI]) return true;
1212
+ return false;
1213
+ };
1214
+ /**
1215
+ * _forceRemove
1216
+ *
1217
+ * @param node a DOM node
1218
+ */
1219
+ const _forceRemove = function _forceRemove(node) {
1220
+ arrayPush(DOMPurify.removed, { element: node });
1221
+ try {
1222
+ getParentNode(node).removeChild(node);
1223
+ } catch (_) {
1224
+ remove(node);
1225
+ }
1226
+ };
1227
+ /**
1228
+ * _removeAttribute
1229
+ *
1230
+ * @param name an Attribute name
1231
+ * @param element a DOM node
1232
+ */
1233
+ const _removeAttribute = function _removeAttribute(name, element) {
1234
+ try {
1235
+ arrayPush(DOMPurify.removed, {
1236
+ attribute: element.getAttributeNode(name),
1237
+ from: element
1238
+ });
1239
+ } catch (_) {
1240
+ arrayPush(DOMPurify.removed, {
1241
+ attribute: null,
1242
+ from: element
1243
+ });
1244
+ }
1245
+ element.removeAttribute(name);
1246
+ if (name === "is") if (RETURN_DOM || RETURN_DOM_FRAGMENT) try {
1247
+ _forceRemove(element);
1248
+ } catch (_) {}
1249
+ else try {
1250
+ element.setAttribute(name, "");
1251
+ } catch (_) {}
1252
+ };
1253
+ /**
1254
+ * _initDocument
1255
+ *
1256
+ * @param dirty - a string of dirty markup
1257
+ * @return a DOM, filled with the dirty markup
1258
+ */
1259
+ const _initDocument = function _initDocument(dirty) {
1260
+ let doc = null;
1261
+ let leadingWhitespace = null;
1262
+ if (FORCE_BODY) dirty = "<remove></remove>" + dirty;
1263
+ else {
1264
+ const matches = stringMatch(dirty, /^[\r\n\t ]+/);
1265
+ leadingWhitespace = matches && matches[0];
1266
+ }
1267
+ if (PARSER_MEDIA_TYPE === "application/xhtml+xml" && NAMESPACE === HTML_NAMESPACE) dirty = "<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>" + dirty + "</body></html>";
1268
+ const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
1269
+ if (NAMESPACE === HTML_NAMESPACE) try {
1270
+ doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);
1271
+ } catch (_) {}
1272
+ if (!doc || !doc.documentElement) {
1273
+ doc = implementation.createDocument(NAMESPACE, "template", null);
1274
+ try {
1275
+ doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;
1276
+ } catch (_) {}
1277
+ }
1278
+ const body = doc.body || doc.documentElement;
1279
+ if (dirty && leadingWhitespace) body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);
1280
+ if (NAMESPACE === HTML_NAMESPACE) return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? "html" : "body")[0];
1281
+ return WHOLE_DOCUMENT ? doc.documentElement : body;
1282
+ };
1283
+ /**
1284
+ * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.
1285
+ *
1286
+ * @param root The root element or node to start traversing on.
1287
+ * @return The created NodeIterator
1288
+ */
1289
+ const _createNodeIterator = function _createNodeIterator(root) {
1290
+ return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);
1291
+ };
1292
+ /**
1293
+ * _isClobbered
1294
+ *
1295
+ * @param element element to check for clobbering attacks
1296
+ * @return true if clobbered, false if safe
1297
+ */
1298
+ const _isClobbered = function _isClobbered(element) {
1299
+ return element instanceof HTMLFormElement && (typeof element.nodeName !== "string" || typeof element.textContent !== "string" || typeof element.removeChild !== "function" || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== "function" || typeof element.setAttribute !== "function" || typeof element.namespaceURI !== "string" || typeof element.insertBefore !== "function" || typeof element.hasChildNodes !== "function");
1300
+ };
1301
+ /**
1302
+ * Checks whether the given object is a DOM node.
1303
+ *
1304
+ * @param value object to check whether it's a DOM node
1305
+ * @return true is object is a DOM node
1306
+ */
1307
+ const _isNode = function _isNode(value) {
1308
+ return typeof Node === "function" && value instanceof Node;
1309
+ };
1310
+ function _executeHooks(hooks, currentNode, data) {
1311
+ arrayForEach(hooks, (hook) => {
1312
+ hook.call(DOMPurify, currentNode, data, CONFIG);
1313
+ });
1314
+ }
1315
+ /**
1316
+ * _sanitizeElements
1317
+ *
1318
+ * @protect nodeName
1319
+ * @protect textContent
1320
+ * @protect removeChild
1321
+ * @param currentNode to check for permission to exist
1322
+ * @return true if node was killed, false if left alive
1323
+ */
1324
+ const _sanitizeElements = function _sanitizeElements(currentNode) {
1325
+ let content = null;
1326
+ _executeHooks(hooks.beforeSanitizeElements, currentNode, null);
1327
+ if (_isClobbered(currentNode)) {
1328
+ _forceRemove(currentNode);
1329
+ return true;
1330
+ }
1331
+ const tagName = transformCaseFunc(currentNode.nodeName);
1332
+ _executeHooks(hooks.uponSanitizeElement, currentNode, {
1333
+ tagName,
1334
+ allowedTags: ALLOWED_TAGS
1335
+ });
1336
+ if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\w!]/g, currentNode.textContent)) {
1337
+ _forceRemove(currentNode);
1338
+ return true;
1339
+ }
1340
+ if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {
1341
+ _forceRemove(currentNode);
1342
+ return true;
1343
+ }
1344
+ if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, currentNode.data)) {
1345
+ _forceRemove(currentNode);
1346
+ return true;
1347
+ }
1348
+ if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {
1349
+ if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {
1350
+ if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;
1351
+ if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;
1352
+ }
1353
+ if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {
1354
+ const parentNode = getParentNode(currentNode) || currentNode.parentNode;
1355
+ const childNodes = getChildNodes(currentNode) || currentNode.childNodes;
1356
+ if (childNodes && parentNode) {
1357
+ const childCount = childNodes.length;
1358
+ for (let i = childCount - 1; i >= 0; --i) {
1359
+ const childClone = cloneNode(childNodes[i], true);
1360
+ childClone.__removalCount = (currentNode.__removalCount || 0) + 1;
1361
+ parentNode.insertBefore(childClone, getNextSibling(currentNode));
1362
+ }
1363
+ }
1364
+ }
1365
+ _forceRemove(currentNode);
1366
+ return true;
1367
+ }
1368
+ if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {
1369
+ _forceRemove(currentNode);
1370
+ return true;
1371
+ }
1372
+ if ((tagName === "noscript" || tagName === "noembed" || tagName === "noframes") && regExpTest(/<\/no(script|embed|frames)/i, currentNode.innerHTML)) {
1373
+ _forceRemove(currentNode);
1374
+ return true;
1375
+ }
1376
+ if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {
1377
+ content = currentNode.textContent;
1378
+ arrayForEach([
1379
+ MUSTACHE_EXPR,
1380
+ ERB_EXPR,
1381
+ TMPLIT_EXPR
1382
+ ], (expr) => {
1383
+ content = stringReplace(content, expr, " ");
1384
+ });
1385
+ if (currentNode.textContent !== content) {
1386
+ arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });
1387
+ currentNode.textContent = content;
1388
+ }
1389
+ }
1390
+ _executeHooks(hooks.afterSanitizeElements, currentNode, null);
1391
+ return false;
1392
+ };
1393
+ /**
1394
+ * _isValidAttribute
1395
+ *
1396
+ * @param lcTag Lowercase tag name of containing element.
1397
+ * @param lcName Lowercase attribute name.
1398
+ * @param value Attribute value.
1399
+ * @return Returns true if `value` is valid, otherwise false.
1400
+ */
1401
+ const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {
1402
+ if (FORBID_ATTR[lcName]) return false;
1403
+ if (SANITIZE_DOM && (lcName === "id" || lcName === "name") && (value in document || value in formElement)) return false;
1404
+ if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName));
1405
+ else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName));
1406
+ else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag));
1407
+ else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) if (_isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) || lcName === "is" && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value)));
1408
+ else return false;
1409
+ else if (URI_SAFE_ATTRIBUTES[lcName]);
1410
+ else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, "")));
1411
+ else if ((lcName === "src" || lcName === "xlink:href" || lcName === "href") && lcTag !== "script" && stringIndexOf(value, "data:") === 0 && DATA_URI_TAGS[lcTag]);
1412
+ else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, "")));
1413
+ else if (value) return false;
1414
+ return true;
1415
+ };
1416
+ /**
1417
+ * _isBasicCustomElement
1418
+ * checks if at least one dash is included in tagName, and it's not the first char
1419
+ * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name
1420
+ *
1421
+ * @param tagName name of the tag of the node to sanitize
1422
+ * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.
1423
+ */
1424
+ const _isBasicCustomElement = function _isBasicCustomElement(tagName) {
1425
+ return tagName !== "annotation-xml" && stringMatch(tagName, CUSTOM_ELEMENT);
1426
+ };
1427
+ /**
1428
+ * _sanitizeAttributes
1429
+ *
1430
+ * @protect attributes
1431
+ * @protect nodeName
1432
+ * @protect removeAttribute
1433
+ * @protect setAttribute
1434
+ *
1435
+ * @param currentNode to sanitize
1436
+ */
1437
+ const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {
1438
+ _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);
1439
+ const { attributes } = currentNode;
1440
+ if (!attributes || _isClobbered(currentNode)) return;
1441
+ const hookEvent = {
1442
+ attrName: "",
1443
+ attrValue: "",
1444
+ keepAttr: true,
1445
+ allowedAttributes: ALLOWED_ATTR,
1446
+ forceKeepAttr: void 0
1447
+ };
1448
+ let l = attributes.length;
1449
+ while (l--) {
1450
+ const { name, namespaceURI, value: attrValue } = attributes[l];
1451
+ const lcName = transformCaseFunc(name);
1452
+ const initValue = attrValue;
1453
+ let value = name === "value" ? initValue : stringTrim(initValue);
1454
+ hookEvent.attrName = lcName;
1455
+ hookEvent.attrValue = value;
1456
+ hookEvent.keepAttr = true;
1457
+ hookEvent.forceKeepAttr = void 0;
1458
+ _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);
1459
+ value = hookEvent.attrValue;
1460
+ if (SANITIZE_NAMED_PROPS && (lcName === "id" || lcName === "name")) {
1461
+ _removeAttribute(name, currentNode);
1462
+ value = SANITIZE_NAMED_PROPS_PREFIX + value;
1463
+ }
1464
+ if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {
1465
+ _removeAttribute(name, currentNode);
1466
+ continue;
1467
+ }
1468
+ if (lcName === "attributename" && stringMatch(value, "href")) {
1469
+ _removeAttribute(name, currentNode);
1470
+ continue;
1471
+ }
1472
+ if (hookEvent.forceKeepAttr) continue;
1473
+ if (!hookEvent.keepAttr) {
1474
+ _removeAttribute(name, currentNode);
1475
+ continue;
1476
+ }
1477
+ if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\/>/i, value)) {
1478
+ _removeAttribute(name, currentNode);
1479
+ continue;
1480
+ }
1481
+ if (SAFE_FOR_TEMPLATES) arrayForEach([
1482
+ MUSTACHE_EXPR,
1483
+ ERB_EXPR,
1484
+ TMPLIT_EXPR
1485
+ ], (expr) => {
1486
+ value = stringReplace(value, expr, " ");
1487
+ });
1488
+ const lcTag = transformCaseFunc(currentNode.nodeName);
1489
+ if (!_isValidAttribute(lcTag, lcName, value)) {
1490
+ _removeAttribute(name, currentNode);
1491
+ continue;
1492
+ }
1493
+ if (trustedTypesPolicy && typeof trustedTypes === "object" && typeof trustedTypes.getAttributeType === "function") if (namespaceURI);
1494
+ else switch (trustedTypes.getAttributeType(lcTag, lcName)) {
1495
+ case "TrustedHTML":
1496
+ value = trustedTypesPolicy.createHTML(value);
1497
+ break;
1498
+ case "TrustedScriptURL":
1499
+ value = trustedTypesPolicy.createScriptURL(value);
1500
+ break;
1501
+ }
1502
+ if (value !== initValue) try {
1503
+ if (namespaceURI) currentNode.setAttributeNS(namespaceURI, name, value);
1504
+ else currentNode.setAttribute(name, value);
1505
+ if (_isClobbered(currentNode)) _forceRemove(currentNode);
1506
+ else arrayPop(DOMPurify.removed);
1507
+ } catch (_) {
1508
+ _removeAttribute(name, currentNode);
1509
+ }
1510
+ }
1511
+ _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);
1512
+ };
1513
+ /**
1514
+ * _sanitizeShadowDOM
1515
+ *
1516
+ * @param fragment to iterate over recursively
1517
+ */
1518
+ const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {
1519
+ let shadowNode = null;
1520
+ const shadowIterator = _createNodeIterator(fragment);
1521
+ _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);
1522
+ while (shadowNode = shadowIterator.nextNode()) {
1523
+ _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);
1524
+ _sanitizeElements(shadowNode);
1525
+ _sanitizeAttributes(shadowNode);
1526
+ if (shadowNode.content instanceof DocumentFragment) _sanitizeShadowDOM(shadowNode.content);
1527
+ }
1528
+ _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);
1529
+ };
1530
+ DOMPurify.sanitize = function(dirty) {
1531
+ let cfg = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
1532
+ let body = null;
1533
+ let importedNode = null;
1534
+ let currentNode = null;
1535
+ let returnNode = null;
1536
+ IS_EMPTY_INPUT = !dirty;
1537
+ if (IS_EMPTY_INPUT) dirty = "<!-->";
1538
+ if (typeof dirty !== "string" && !_isNode(dirty)) if (typeof dirty.toString === "function") {
1539
+ dirty = dirty.toString();
1540
+ if (typeof dirty !== "string") throw typeErrorCreate("dirty is not a string, aborting");
1541
+ } else throw typeErrorCreate("toString is not a function");
1542
+ if (!DOMPurify.isSupported) return dirty;
1543
+ if (!SET_CONFIG) _parseConfig(cfg);
1544
+ DOMPurify.removed = [];
1545
+ if (typeof dirty === "string") IN_PLACE = false;
1546
+ if (IN_PLACE) {
1547
+ if (dirty.nodeName) {
1548
+ const tagName = transformCaseFunc(dirty.nodeName);
1549
+ if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) throw typeErrorCreate("root node is forbidden and cannot be sanitized in-place");
1550
+ }
1551
+ } else if (dirty instanceof Node) {
1552
+ body = _initDocument("<!---->");
1553
+ importedNode = body.ownerDocument.importNode(dirty, true);
1554
+ if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === "BODY") body = importedNode;
1555
+ else if (importedNode.nodeName === "HTML") body = importedNode;
1556
+ else body.appendChild(importedNode);
1557
+ } else {
1558
+ if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf("<") === -1) return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;
1559
+ body = _initDocument(dirty);
1560
+ if (!body) return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : "";
1561
+ }
1562
+ if (body && FORCE_BODY) _forceRemove(body.firstChild);
1563
+ const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);
1564
+ while (currentNode = nodeIterator.nextNode()) {
1565
+ _sanitizeElements(currentNode);
1566
+ _sanitizeAttributes(currentNode);
1567
+ if (currentNode.content instanceof DocumentFragment) _sanitizeShadowDOM(currentNode.content);
1568
+ }
1569
+ if (IN_PLACE) return dirty;
1570
+ if (RETURN_DOM) {
1571
+ if (RETURN_DOM_FRAGMENT) {
1572
+ returnNode = createDocumentFragment.call(body.ownerDocument);
1573
+ while (body.firstChild) returnNode.appendChild(body.firstChild);
1574
+ } else returnNode = body;
1575
+ if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) returnNode = importNode.call(originalDocument, returnNode, true);
1576
+ return returnNode;
1577
+ }
1578
+ let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
1579
+ if (WHOLE_DOCUMENT && ALLOWED_TAGS["!doctype"] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) serializedHTML = "<!DOCTYPE " + body.ownerDocument.doctype.name + ">\n" + serializedHTML;
1580
+ if (SAFE_FOR_TEMPLATES) arrayForEach([
1581
+ MUSTACHE_EXPR,
1582
+ ERB_EXPR,
1583
+ TMPLIT_EXPR
1584
+ ], (expr) => {
1585
+ serializedHTML = stringReplace(serializedHTML, expr, " ");
1586
+ });
1587
+ return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
1588
+ };
1589
+ DOMPurify.setConfig = function() {
1590
+ _parseConfig(arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {});
1591
+ SET_CONFIG = true;
1592
+ };
1593
+ DOMPurify.clearConfig = function() {
1594
+ CONFIG = null;
1595
+ SET_CONFIG = false;
1596
+ };
1597
+ DOMPurify.isValidAttribute = function(tag, attr, value) {
1598
+ if (!CONFIG) _parseConfig({});
1599
+ return _isValidAttribute(transformCaseFunc(tag), transformCaseFunc(attr), value);
1600
+ };
1601
+ DOMPurify.addHook = function(entryPoint, hookFunction) {
1602
+ if (typeof hookFunction !== "function") return;
1603
+ arrayPush(hooks[entryPoint], hookFunction);
1604
+ };
1605
+ DOMPurify.removeHook = function(entryPoint, hookFunction) {
1606
+ if (hookFunction !== void 0) {
1607
+ const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);
1608
+ return index === -1 ? void 0 : arraySplice(hooks[entryPoint], index, 1)[0];
1609
+ }
1610
+ return arrayPop(hooks[entryPoint]);
1611
+ };
1612
+ DOMPurify.removeHooks = function(entryPoint) {
1613
+ hooks[entryPoint] = [];
1614
+ };
1615
+ DOMPurify.removeAllHooks = function() {
1616
+ hooks = _createHooksMap();
1617
+ };
1618
+ return DOMPurify;
1619
+ }
1620
+ var purify$1 = createDOMPurify();
1621
+ //#endregion
1622
+ //#region src/shared/assets/sanitizeSvg.ts
1623
+ var SVG_SANITIZE_CONFIG = {
1624
+ USE_PROFILES: {
1625
+ svg: true,
1626
+ svgFilters: true
1627
+ },
1628
+ FORBID_TAGS: ["foreignObject"],
1629
+ ADD_TAGS: ["use"]
1630
+ };
1631
+ var purify = purify$1(window);
1632
+ var strippedHref = false;
1633
+ purify.addHook("uponSanitizeAttribute", (_node, data) => {
1634
+ if ((data.attrName === "href" || data.attrName === "xlink:href") && !String(data.attrValue).startsWith("#")) {
1635
+ data.keepAttr = false;
1636
+ strippedHref = true;
1637
+ }
1638
+ });
1639
+ /**
1640
+ * Sanitizes untrusted SVG markup for safe inline injection. Strips scripts,
1641
+ * event handlers, `<foreignObject>`, and external `href` / `xlink:href` (while
1642
+ * keeping in-document `#fragment` references SVGs rely on for gradients and
1643
+ * filters). An all-stripped payload yields `markup: ''`; the caller treats
1644
+ * both that and `strippedHref` as a failed override and falls back to the
1645
+ * built-in default.
1646
+ */
1647
+ function sanitizeSvg(raw) {
1648
+ strippedHref = false;
1649
+ return {
1650
+ markup: purify.sanitize(raw, SVG_SANITIZE_CONFIG),
1651
+ strippedHref
1652
+ };
1653
+ }
1654
+ //#endregion
1655
+ //#region src/shared/assets/instanceOverrides.ts
1656
+ var InstanceOverridesContext = Q({});
1657
+ var InstanceOverridesProvider = InstanceOverridesContext.Provider;
1658
+ function useInstanceOverrides() {
1659
+ return x(InstanceOverridesContext);
1660
+ }
1661
+ //#endregion
1662
+ //#region src/shared/assets/assetRegistry.ts
1663
+ var defaultExport = (module) => module.default;
1664
+ var decorative = { ariaHidden: true };
1665
+ var assetRegistry = {
1666
+ "faceMatch.success": { a11y: decorative },
1667
+ "faceMatch.fail": { a11y: decorative },
1668
+ "documentCapture.tutorial": { a11y: decorative },
1669
+ "id.uploadScreen": { a11y: decorative },
1670
+ "id.ageVerification.dob": { a11y: decorative },
1671
+ "id.ageVerification.scan": { a11y: decorative },
1672
+ "id.ageVerification.privacy": { a11y: decorative },
1673
+ "videoSelfie.success": { a11y: decorative },
1674
+ "videoSelfie.fail": { a11y: decorative },
1675
+ "videoSelfie.tutorial.permission": { a11y: decorative },
1676
+ "videoSelfie.tutorial.selfie": { a11y: decorative },
1677
+ "videoSelfie.tutorial.frontId": { a11y: decorative },
1678
+ "videoSelfie.tutorial.backId": { a11y: decorative },
1679
+ "videoSelfie.tutorial.poa": { a11y: decorative },
1680
+ "videoSelfie.tutorial.questions": { a11y: decorative },
1681
+ "videoSelfie.tutorial.speech": { a11y: decorative },
1682
+ "loader.spinner": { a11y: decorative }
1683
+ };
1684
+ var animationRegistry = {
1685
+ "id.tutorial.front": {
1686
+ default: () => import("./id-tutorial-BOOsXlAJ.js").then(defaultExport),
1687
+ a11y: decorative
1688
+ },
1689
+ "id.tutorial.back": {
1690
+ default: () => import("./back-tutorial-BHyRHyET.js").then(defaultExport),
1691
+ a11y: decorative
1692
+ },
1693
+ "id.tutorial.passport": {
1694
+ default: () => import("./passport-tutorial-CeSup6m9.js").then(defaultExport),
1695
+ a11y: decorative
1696
+ },
1697
+ "id.flip": {
1698
+ default: () => import("./flip-animation-CvN8FLNc.js").then(defaultExport),
1699
+ a11y: decorative
1700
+ },
1701
+ "id.processing": {
1702
+ default: {
1703
+ horizontal: () => import("./id-laser-h-BaUHzX-d.js").then(defaultExport),
1704
+ vertical: () => import("./id-laser-v-Dv9yEYJE.js").then(defaultExport)
1705
+ },
1706
+ a11y: decorative
1707
+ },
1708
+ "selfie.tutorial": {
1709
+ default: () => import("./selfieTutorial-CYa8bq6B.js").then(defaultExport),
1710
+ a11y: decorative
1711
+ },
1712
+ "loader.spinner": {
1713
+ default: null,
1714
+ a11y: decorative
1715
+ }
1716
+ };
1717
+ //#endregion
1718
+ //#region src/shared/assets/resolveAsset.ts
1719
+ /**
1720
+ * Whether a resolved value represents an active override, as opposed to no
1721
+ * override at all (`type === 'default'`).
1722
+ */
1723
+ function isActiveOverride(resolved) {
1724
+ return resolved !== null && resolved.type !== "default";
1725
+ }
1726
+ function warnUnknownKey(key) {
1727
+ `${key}`;
1728
+ }
1729
+ function isValidUrl(url) {
1730
+ const SCHEME_PREFIX = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;
1731
+ if (url === "" || /\s/.test(url)) return false;
1732
+ if (!SCHEME_PREFIX.test(url)) return true;
1733
+ try {
1734
+ new URL(url);
1735
+ return true;
1736
+ } catch {
1737
+ return false;
1738
+ }
1739
+ }
1740
+ function normalizeAssetOverride(override) {
1741
+ if (override === void 0) return null;
1742
+ if (typeof override === "string") {
1743
+ const value = override.trim();
1744
+ if (value === "") return null;
1745
+ if (value.startsWith("<")) return {
1746
+ type: "override-raw",
1747
+ raw: value
1748
+ };
1749
+ if (!isValidUrl(value)) return null;
1750
+ return {
1751
+ type: "override-url",
1752
+ url: value
1753
+ };
1754
+ }
1755
+ if ("svg" in override) return {
1756
+ type: "override-component",
1757
+ component: override.svg
1758
+ };
1759
+ if ("raw" in override) {
1760
+ const raw = override.raw.trim();
1761
+ return raw === "" ? null : {
1762
+ type: "override-raw",
1763
+ raw
1764
+ };
1765
+ }
1766
+ if ("url" in override) {
1767
+ const url = override.url.trim();
1768
+ if (url === "") return null;
1769
+ if (!isValidUrl(url)) return null;
1770
+ return {
1771
+ type: "override-url",
1772
+ url
1773
+ };
1774
+ }
1775
+ return null;
1776
+ }
1777
+ function normalizeAnimationOverride(override) {
1778
+ if (override === void 0) return null;
1779
+ if ("url" in override) {
1780
+ const url = override.url.trim();
1781
+ if (url === "") return null;
1782
+ if (!isValidUrl(url)) return null;
1783
+ return {
1784
+ type: "override-url",
1785
+ url
1786
+ };
1787
+ }
1788
+ if ("animationData" in override) return {
1789
+ type: "override-data",
1790
+ animationData: override.animationData
1791
+ };
1792
+ return {
1793
+ type: "override-data",
1794
+ animationData: override
1795
+ };
1796
+ }
1797
+ function resolveAsset(key, scopes = {}) {
1798
+ scopes.instance;
1799
+ scopes.global;
1800
+ const entry = assetRegistry[key];
1801
+ if (entry === void 0) {
1802
+ warnUnknownKey(key);
1803
+ return null;
1804
+ }
1805
+ const override = normalizeAssetOverride(scopes.instance?.[key]) ?? normalizeAssetOverride(scopes.global?.[key]);
1806
+ if (override !== null) return {
1807
+ ...override,
1808
+ a11y: entry.a11y
1809
+ };
1810
+ return {
1811
+ type: "default",
1812
+ a11y: entry.a11y
1813
+ };
1814
+ }
1815
+ function resolveAnimation(key, scopes = {}) {
1816
+ scopes.instance;
1817
+ scopes.global;
1818
+ const entry = animationRegistry[key];
1819
+ if (entry === void 0) {
1820
+ warnUnknownKey(key);
1821
+ return null;
1822
+ }
1823
+ const override = normalizeAnimationOverride(scopes.instance?.[key]) ?? normalizeAnimationOverride(scopes.global?.[key]);
1824
+ if (override !== null) return {
1825
+ ...override,
1826
+ a11y: entry.a11y
1827
+ };
1828
+ return {
1829
+ type: "default",
1830
+ default: entry.default,
1831
+ a11y: entry.a11y
1832
+ };
1833
+ }
1834
+ //#endregion
1835
+ //#region src/shared/assets/useAsset.ts
1836
+ function useAsset(key) {
1837
+ const instance = useInstanceOverrides();
1838
+ const uiConfig = useUiConfig();
1839
+ return T(() => {
1840
+ return resolveAsset(key, {
1841
+ instance: instance.assets,
1842
+ global: uiConfig.assets
1843
+ });
1844
+ }, [
1845
+ key,
1846
+ instance.assets,
1847
+ uiConfig.assets
1848
+ ]);
1849
+ }
1850
+ function useAnimation(key) {
1851
+ const instance = useInstanceOverrides();
1852
+ const uiConfig = useUiConfig();
1853
+ return T(() => {
1854
+ return resolveAnimation(key, {
1855
+ instance: instance.animations,
1856
+ global: uiConfig.animations
1857
+ });
1858
+ }, [
1859
+ key,
1860
+ instance.animations,
1861
+ uiConfig.animations
1862
+ ]);
1863
+ }
1864
+ //#endregion
1865
+ //#region src/shared/assets/asset.tsx
1866
+ function altText(a11y, t) {
1867
+ return "altKey" in a11y ? t(a11y.altKey) : "";
1868
+ }
1869
+ function svgA11y(a11y, t) {
1870
+ return "altKey" in a11y ? {
1871
+ role: "img",
1872
+ "aria-label": t(a11y.altKey)
1873
+ } : { "aria-hidden": "true" };
1874
+ }
1875
+ /**
1876
+ * Normalizes the call-site `default` into a renderable shape. Trusted (it is a
1877
+ * bundled SDK asset), so raw markup is not sanitized — unlike a customer raw
1878
+ * override.
1879
+ */
1880
+ function defaultToRenderable(value) {
1881
+ if (value === void 0) return null;
1882
+ if (typeof value === "function") return {
1883
+ kind: "component",
1884
+ value
1885
+ };
1886
+ return value.trim().startsWith("<") ? {
1887
+ kind: "raw",
1888
+ value
1889
+ } : {
1890
+ kind: "url",
1891
+ value
1892
+ };
1893
+ }
1894
+ function useAssetContent(key, defaultAsset, onFallback) {
1895
+ const resolved = useAsset(key);
1896
+ const [failedUrl, setFailedUrl] = d(null);
1897
+ const rawOverride = resolved?.type === "override-raw" ? resolved.raw : null;
1898
+ const sanitizedRaw = T(() => rawOverride === null ? null : sanitizeSvg(rawOverride), [rawOverride]);
1899
+ const urlFailed = resolved?.type === "override-url" && resolved.url === failedUrl;
1900
+ const rawStripped = rawOverride !== null && (sanitizedRaw?.strippedHref === true || (sanitizedRaw?.markup ?? "").trim() === "");
1901
+ y(() => {
1902
+ if (urlFailed || rawStripped) onFallback?.();
1903
+ }, [
1904
+ urlFailed,
1905
+ rawStripped,
1906
+ onFallback
1907
+ ]);
1908
+ if (resolved === null) return null;
1909
+ const useDefault = resolved.type === "default" || urlFailed || rawStripped;
1910
+ const { a11y } = resolved;
1911
+ if (!useDefault) switch (resolved.type) {
1912
+ case "override-component": return {
1913
+ content: {
1914
+ kind: "component",
1915
+ value: resolved.component
1916
+ },
1917
+ a11y
1918
+ };
1919
+ case "override-url": return {
1920
+ content: {
1921
+ kind: "url",
1922
+ value: resolved.url,
1923
+ onError: () => setFailedUrl(resolved.url)
1924
+ },
1925
+ a11y
1926
+ };
1927
+ case "override-raw": return {
1928
+ content: {
1929
+ kind: "raw",
1930
+ value: sanitizedRaw?.markup ?? ""
1931
+ },
1932
+ a11y
1933
+ };
1934
+ }
1935
+ const content = defaultToRenderable(defaultAsset);
1936
+ return content ? {
1937
+ content,
1938
+ a11y
1939
+ } : null;
1940
+ }
1941
+ function renderAsset(content, a11y, t, className) {
1942
+ switch (content.kind) {
1943
+ case "component": {
1944
+ const Svg = content.value;
1945
+ return /* @__PURE__ */ u(Svg, {
1946
+ class: className,
1947
+ ...svgA11y(a11y, t)
1948
+ });
1949
+ }
1950
+ case "url": return /* @__PURE__ */ u("img", {
1951
+ src: content.value,
1952
+ alt: altText(a11y, t),
1953
+ "aria-hidden": "altKey" in a11y ? void 0 : "true",
1954
+ class: className,
1955
+ onError: content.onError
1956
+ });
1957
+ case "raw": return /* @__PURE__ */ u("span", {
1958
+ class: cn("IncodeAssetRaw", className),
1959
+ ...svgA11y(a11y, t),
1960
+ dangerouslySetInnerHTML: { __html: content.value }
1961
+ });
1962
+ default: return content;
1963
+ }
1964
+ }
1965
+ /**
1966
+ * Renders a branded illustration by catalog key, honoring the resolved
1967
+ * precedence (per-instance → global → built-in default). The built-in default
1968
+ * is supplied by the call site via `default` (imported on-site).
1969
+ */
1970
+ function Asset({ name, class: className, default: defaultAsset, onFallback }) {
1971
+ const { t } = useTranslation();
1972
+ const result = useAssetContent(name, defaultAsset, onFallback);
1973
+ if (result === null) return null;
1974
+ return renderAsset(result.content, result.a11y, t, className);
1975
+ }
1976
+ //#endregion
1977
+ //#region src/shared/lottie/lottie.tsx
1978
+ var lottiePromise = null;
1979
+ async function loadLottie() {
1980
+ if (lottiePromise) return lottiePromise;
1981
+ lottiePromise = import("./lottie_light-Bv56F2Ae.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1)).then((mod) => mod.default);
1982
+ return lottiePromise;
1983
+ }
1984
+ var AUTO_STOP_AFTER_MS = 5e3;
1985
+ function Lottie({ animationData, loop = true, autoplay = true, reverse = false, style, className, onComplete, autoStop = false, stopFramePosition }) {
1986
+ const containerRef = A(null);
1987
+ const effectiveAutoplay = reverse ? false : autoplay;
1988
+ const animationOptionsRef = A({
1989
+ container: containerRef.current,
1990
+ renderer: "svg",
1991
+ loop,
1992
+ autoplay: effectiveAutoplay,
1993
+ animationData
1994
+ });
1995
+ y(() => {
1996
+ animationOptionsRef.current = {
1997
+ container: containerRef.current,
1998
+ renderer: "svg",
1999
+ loop,
2000
+ autoplay: effectiveAutoplay,
2001
+ animationData
2002
+ };
2003
+ }, [
2004
+ animationData,
2005
+ loop,
2006
+ effectiveAutoplay
2007
+ ]);
2008
+ y(() => {
2009
+ if (!containerRef.current) return;
2010
+ let anim;
2011
+ let stopTimer;
2012
+ let isMounted = true;
2013
+ loadLottie().then((lottie) => {
2014
+ if (!isMounted) return;
2015
+ anim = lottie.loadAnimation(animationOptionsRef.current);
2016
+ if (reverse) {
2017
+ anim.setDirection(-1);
2018
+ anim.goToAndPlay(anim.totalFrames - 1, true);
2019
+ }
2020
+ if (onComplete) anim.addEventListener("complete", onComplete);
2021
+ if (autoStop) stopTimer = window.setTimeout(() => {
2022
+ const current = anim;
2023
+ if (!current) return;
2024
+ if (!stopFramePosition) {
2025
+ current.pause();
2026
+ return;
2027
+ }
2028
+ const totalFrames = current.totalFrames;
2029
+ if (!totalFrames || totalFrames <= 0) {
2030
+ current.stop();
2031
+ return;
2032
+ }
2033
+ const targetFrame = stopFramePosition === "last" ? Math.max(totalFrames - 1, 0) : stopFramePosition === "first" ? 0 : Math.floor((totalFrames - 1) / 2);
2034
+ current.goToAndStop(targetFrame, true);
2035
+ }, AUTO_STOP_AFTER_MS);
2036
+ });
2037
+ return () => {
2038
+ isMounted = false;
2039
+ if (stopTimer !== void 0) window.clearTimeout(stopTimer);
2040
+ if (anim) {
2041
+ if (onComplete) anim.removeEventListener("complete", onComplete);
2042
+ anim.destroy();
2043
+ }
2044
+ };
2045
+ }, [
2046
+ onComplete,
2047
+ reverse,
2048
+ autoStop,
2049
+ stopFramePosition
2050
+ ]);
2051
+ return /* @__PURE__ */ u("div", {
2052
+ ref: containerRef,
2053
+ style,
2054
+ className,
2055
+ "aria-hidden": "true"
2056
+ });
2057
+ }
2058
+ //#endregion
2059
+ //#region src/shared/assets/animatedAsset.tsx
2060
+ var overrideUrlCache = /* @__PURE__ */ new Map();
2061
+ function fetchAnimation(url) {
2062
+ const cached = overrideUrlCache.get(url);
2063
+ if (cached) return cached;
2064
+ const pending = fetch(url).then((response) => {
2065
+ if (!response.ok) throw new Error(`Request for "${url}" failed with status ${response.status}.`);
2066
+ return response.json();
2067
+ });
2068
+ overrideUrlCache.set(url, pending);
2069
+ pending.catch(() => overrideUrlCache.delete(url));
2070
+ return pending;
2071
+ }
2072
+ function loadAnimationDefault(def, orientation) {
2073
+ if (def === null) return Promise.resolve(null);
2074
+ if (typeof def === "function") return def();
2075
+ return def[orientation]();
2076
+ }
2077
+ var defaultCache = /* @__PURE__ */ new Map();
2078
+ function defaultCacheKey(name, orientation) {
2079
+ return `${name}|${orientation}`;
2080
+ }
2081
+ function loadDefaultCached(name, orientation) {
2082
+ const cacheKey = defaultCacheKey(name, orientation);
2083
+ if (defaultCache.has(cacheKey)) return Promise.resolve(defaultCache.get(cacheKey) ?? null);
2084
+ return loadAnimationDefault(animationRegistry[name]?.default ?? null, orientation).then((value) => {
2085
+ defaultCache.set(cacheKey, value);
2086
+ return value;
2087
+ });
2088
+ }
2089
+ /**
2090
+ * Warms the built-in animation cache for the given catalog keys so a later
2091
+ * render is synchronous (no flash). Best-effort; call it before the screen
2092
+ * mounts.
2093
+ */
2094
+ function preloadAnimations(keys, orientation = "vertical") {
2095
+ for (const key of keys) loadDefaultCached(key, orientation).catch(() => {});
2096
+ }
2097
+ /**
2098
+ * Resolves the winning animation to parsed `animationData` plus whether it came
2099
+ * from a customer override. Reads the default cache synchronously on first
2100
+ * render, so a preloaded animation shows with no flash. A failed override URL
2101
+ * silently falls back to the built-in default.
2102
+ *
2103
+ * Shared by `AnimatedAsset` and by tutorial surfaces that render Lottie
2104
+ * themselves (e.g. `BaseTutorial`, which recolors only built-in defaults).
2105
+ *
2106
+ * `onFallback`, if given, fires only when a *configured* override actually
2107
+ * fails to load (never when there was simply no override to begin with) —
2108
+ * for a caller whose true fallback lives outside this system entirely, so it
2109
+ * can react to a real failure instead of committing to render this component before
2110
+ * knowing whether the override will actually work.
2111
+ */
2112
+ function useAnimationData(name, orientation = "vertical", onFallback) {
2113
+ const resolved = useAnimation(name);
2114
+ const type = resolved?.type;
2115
+ const isOverride = isActiveOverride(resolved);
2116
+ const overrideUrl = resolved?.type === "override-url" ? resolved.url : void 0;
2117
+ const overrideData = resolved?.type === "override-data" ? resolved.animationData : void 0;
2118
+ const [data, setData] = d(() => {
2119
+ if (type === "override-data") return overrideData ?? null;
2120
+ if (type === "default") return defaultCache.get(defaultCacheKey(name, orientation)) ?? null;
2121
+ return null;
2122
+ });
2123
+ const [overrideFailed, setOverrideFailed] = d(false);
2124
+ y(() => {
2125
+ let active = true;
2126
+ setOverrideFailed(false);
2127
+ if (type === void 0) setData(null);
2128
+ else if (type === "override-data") setData(overrideData ?? null);
2129
+ else if (type === "override-url" && overrideUrl !== void 0) fetchAnimation(overrideUrl).then((value) => {
2130
+ if (active) setData(value);
2131
+ }, (error) => {
2132
+ `${name}`;
2133
+ if (active) {
2134
+ setOverrideFailed(true);
2135
+ loadDefaultCached(name, orientation).then((value) => {
2136
+ if (active) setData(value);
2137
+ }, () => {});
2138
+ }
2139
+ });
2140
+ else loadDefaultCached(name, orientation).then((value) => {
2141
+ if (active) setData(value);
2142
+ }, (error) => {
2143
+ if (active) {
2144
+ setData(null);
2145
+ `${name}`;
2146
+ }
2147
+ });
2148
+ return () => {
2149
+ active = false;
2150
+ };
2151
+ }, [
2152
+ name,
2153
+ orientation,
2154
+ type,
2155
+ overrideUrl,
2156
+ overrideData
2157
+ ]);
2158
+ y(() => {
2159
+ if (overrideFailed) onFallback?.();
2160
+ }, [overrideFailed, onFallback]);
2161
+ return {
2162
+ data,
2163
+ isOverride
2164
+ };
2165
+ }
2166
+ /**
2167
+ * Renders a Lottie animation by catalog key, honoring the resolved precedence
2168
+ * (per-instance → global → built-in default). Renders nothing while pending or
2169
+ * when there is no Lottie to show; the container is `aria-hidden` (all catalog
2170
+ * animations are decorative).
2171
+ */
2172
+ function AnimatedAsset({ name, autoStop, stopFramePosition, orientation = "vertical", loop, reverse, onComplete, class: className, onFallback }) {
2173
+ const { data } = useAnimationData(name, orientation, onFallback);
2174
+ if (data === null) return null;
2175
+ return /* @__PURE__ */ u(Lottie, {
2176
+ animationData: data,
2177
+ autoStop,
2178
+ stopFramePosition,
2179
+ loop,
2180
+ reverse,
2181
+ onComplete,
2182
+ className
2183
+ });
2184
+ }
2185
+ //#endregion
2186
+ //#region src/shared/loader/loadingIcon.tsx
2187
+ /**
2188
+ * Duration of the CSS spin animation on `.IncodeLoadingIcon`.
2189
+ * Must stay in sync with the `animation-duration` declared in the stylesheet.
2190
+ */
2191
+ var SPIN_DURATION_MS = 1e3;
2192
+ var SpinnerPrimary = ({ size, className }) => {
2193
+ return /* @__PURE__ */ u("svg", {
2194
+ width: size,
2195
+ height: size,
2196
+ viewBox: "0 0 31 31",
2197
+ fill: "none",
2198
+ xmlns: "http://www.w3.org/2000/svg",
2199
+ class: cn("IncodeLoadingIconPrimaryIcon", className),
2200
+ "aria-hidden": "true",
2201
+ children: /* @__PURE__ */ u("path", { d: "M28.1614 15.2837C29.453 15.2837 30.5186 14.2304 30.3181 12.9545C30.1344 11.7862 29.8129 10.6411 29.3582 9.54344C28.6044 7.72356 27.4995 6.06997 26.1066 4.67709C24.7137 3.28421 23.0601 2.17932 21.2403 1.4255C20.1426 0.970841 18.9974 0.649265 17.8292 0.46563C16.5533 0.265073 15.5 1.33073 15.5 2.62232C15.5 3.91391 16.5601 4.93461 17.8187 5.22473C18.3748 5.35291 18.9206 5.52729 19.4503 5.74672C20.7028 6.26548 21.8407 7.02585 22.7993 7.98441C23.7578 8.94296 24.5182 10.0809 25.037 11.3333C25.2564 11.8631 25.4308 12.4089 25.559 12.965C25.8491 14.2236 26.8698 15.2837 28.1614 15.2837Z" })
2202
+ });
2203
+ };
2204
+ var SpinnerSecondary = ({ size, className }) => {
2205
+ return /* @__PURE__ */ u("svg", {
2206
+ width: size,
2207
+ height: size,
2208
+ viewBox: "0 0 31 31",
2209
+ fill: "none",
2210
+ xmlns: "http://www.w3.org/2000/svg",
2211
+ class: cn("IncodeLoadingIconSecondaryIcon", className),
2212
+ "aria-hidden": "true",
2213
+ children: [/* @__PURE__ */ u("title", { children: "Spinner Outer part" }), /* @__PURE__ */ u("path", { d: "M30.5 15.2837C30.5 23.568 23.7843 30.2837 15.5 30.2837C7.21573 30.2837 0.5 23.568 0.5 15.2837C0.5 6.99942 7.21573 0.283691 15.5 0.283691C23.7843 0.283691 30.5 6.99942 30.5 15.2837ZM5.17725 15.2837C5.17725 20.9848 9.7989 25.6064 15.5 25.6064C21.2011 25.6064 25.8227 20.9848 25.8227 15.2837C25.8227 9.5826 21.2011 4.96095 15.5 4.96095C9.7989 4.96095 5.17725 9.5826 5.17725 15.2837Z" })]
2214
+ });
2215
+ };
2216
+ var LoadingIcon = ({ size = 30, secondaryClass, primaryClass }) => {
2217
+ const ref = A(null);
2218
+ const overrideRef = A(null);
2219
+ const animation = useAnimation("loader.spinner");
2220
+ const svg = useAsset("loader.spinner");
2221
+ const hasAnimationOverride = isActiveOverride(animation);
2222
+ const hasSvgOverride = isActiveOverride(svg);
2223
+ const [overrideFailed, setOverrideFailed] = d(false);
2224
+ const handleFallback = q(() => setOverrideFailed(true), []);
2225
+ const hasOverride = (hasAnimationOverride || hasSvgOverride) && !overrideFailed;
2226
+ /**
2227
+ * Cross-module loaders (e.g. ID processing → selfie initialising) unmount
2228
+ * and remount this component as the user moves between flow steps. By
2229
+ * default each remount restarts the CSS spin animation from frame 0, which
2230
+ * reads as a visible "stutter" or reset of the spinner during otherwise
2231
+ * seamless transitions.
2232
+ *
2233
+ * To keep the rotation continuous across remounts we anchor the animation
2234
+ * to a wall-clock offset: `performance.now() % SPIN_DURATION_MS` tells us
2235
+ * how far into the current spin cycle we are, and applying it as a
2236
+ * negative `animation-delay` makes the new instance pick up exactly where
2237
+ * the previous one left off. (Built-in default only.)
2238
+ */
2239
+ _(() => {
2240
+ if (hasOverride || !ref.current) return;
2241
+ const offsetMs = performance.now() % SPIN_DURATION_MS;
2242
+ ref.current.style.animationDelay = `-${offsetMs}ms`;
2243
+ }, [hasOverride]);
2244
+ _(() => {
2245
+ if (!overrideRef.current) return;
2246
+ overrideRef.current.style.width = `${size}px`;
2247
+ overrideRef.current.style.height = `${size}px`;
2248
+ }, [size, hasOverride]);
2249
+ if (hasOverride) return /* @__PURE__ */ u("div", {
2250
+ ref: overrideRef,
2251
+ class: "IncodeLoadingIconOverride",
2252
+ children: hasAnimationOverride ? /* @__PURE__ */ u(AnimatedAsset, {
2253
+ name: "loader.spinner",
2254
+ loop: true,
2255
+ onFallback: handleFallback
2256
+ }) : /* @__PURE__ */ u(Asset, {
2257
+ name: "loader.spinner",
2258
+ onFallback: handleFallback
2259
+ })
2260
+ });
2261
+ return /* @__PURE__ */ u("div", {
2262
+ ref,
2263
+ class: "IncodeLoadingIcon",
2264
+ children: [/* @__PURE__ */ u(SpinnerSecondary, {
2265
+ size,
2266
+ className: secondaryClass
2267
+ }), /* @__PURE__ */ u("div", {
2268
+ class: "IncodeLoadingIconPrimary",
2269
+ children: /* @__PURE__ */ u(SpinnerPrimary, {
2270
+ size,
2271
+ className: primaryClass
2272
+ })
2273
+ })]
2274
+ });
2275
+ };
2276
+ //#endregion
2277
+ //#region src/shared/spacer/spacer.tsx
2278
+ var scaleTokens = new Set([
2279
+ 0,
2280
+ 2,
2281
+ 4,
2282
+ 8,
2283
+ 12,
2284
+ 16,
2285
+ 20,
2286
+ 24,
2287
+ 32,
2288
+ 40,
2289
+ 48,
2290
+ 64,
2291
+ 80,
2292
+ 96,
2293
+ 104,
2294
+ 120,
2295
+ 200
2296
+ ]);
2297
+ var scaleToClassName = (size, direction) => {
2298
+ if (direction === "horizontal") return {
2299
+ 0: "IncodeSpacerHorizontal0",
2300
+ 2: "IncodeSpacerHorizontal2",
2301
+ 4: "IncodeSpacerHorizontal4",
2302
+ 8: "IncodeSpacerHorizontal8",
2303
+ 12: "IncodeSpacerHorizontal12",
2304
+ 16: "IncodeSpacerHorizontal16",
2305
+ 20: "IncodeSpacerHorizontal20",
2306
+ 24: "IncodeSpacerHorizontal24",
2307
+ 32: "IncodeSpacerHorizontal32",
2308
+ 40: "IncodeSpacerHorizontal40",
2309
+ 48: "IncodeSpacerHorizontal48",
2310
+ 64: "IncodeSpacerHorizontal64",
2311
+ 80: "IncodeSpacerHorizontal80",
2312
+ 96: "IncodeSpacerHorizontal96",
2313
+ 104: "IncodeSpacerHorizontal104",
2314
+ 120: "IncodeSpacerHorizontal120",
2315
+ 200: "IncodeSpacerHorizontal200"
2316
+ }[size];
2317
+ return {
2318
+ 0: "IncodeSpacerVertical0",
2319
+ 2: "IncodeSpacerVertical2",
2320
+ 4: "IncodeSpacerVertical4",
2321
+ 8: "IncodeSpacerVertical8",
2322
+ 12: "IncodeSpacerVertical12",
2323
+ 16: "IncodeSpacerVertical16",
2324
+ 20: "IncodeSpacerVertical20",
2325
+ 24: "IncodeSpacerVertical24",
2326
+ 32: "IncodeSpacerVertical32",
2327
+ 40: "IncodeSpacerVertical40",
2328
+ 48: "IncodeSpacerVertical48",
2329
+ 64: "IncodeSpacerVertical64",
2330
+ 80: "IncodeSpacerVertical80",
2331
+ 96: "IncodeSpacerVertical96",
2332
+ 104: "IncodeSpacerVertical104",
2333
+ 120: "IncodeSpacerVertical120",
2334
+ 200: "IncodeSpacerVertical200"
2335
+ }[size];
2336
+ };
2337
+ var Spacer = ({ size, className, direction = "vertical" }) => {
2338
+ if (size === void 0) return /* @__PURE__ */ u("div", { class: `IncodeSpacerFlex ${className || ""}` });
2339
+ if (!(direction === "horizontal" ? "w" : direction === "vertical" ? "h" : void 0)) return /* @__PURE__ */ u("div", { class: `${className || ""}` });
2340
+ if (typeof size === "number" && scaleTokens.has(size)) return /* @__PURE__ */ u("div", { class: `${scaleToClassName(size, direction)} ${className || ""}` });
2341
+ return /* @__PURE__ */ u("div", { class: `${className || ""}` });
2342
+ };
2343
+ //#endregion
2344
+ export { useAnimationData as a, InstanceOverridesProvider as c, preloadAnimations as i, purify$1 as l, LoadingIcon as n, Lottie as o, AnimatedAsset as r, Asset as s, Spacer as t, cn as u };