@mhmo91/schmancy 0.4.10 → 0.4.11

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 (213) hide show
  1. package/dist/{animated-text-Dh_Ony1b.cjs → animated-text-BD04H8eV.cjs} +2 -2
  2. package/dist/{animated-text-Dh_Ony1b.cjs.map → animated-text-BD04H8eV.cjs.map} +1 -1
  3. package/dist/{animated-text-Be02uXuq.js → animated-text-TALC3vSJ.js} +6 -6
  4. package/dist/{animated-text-Be02uXuq.js.map → animated-text-TALC3vSJ.js.map} +1 -1
  5. package/dist/animated-text.cjs +1 -1
  6. package/dist/animated-text.js +1 -1
  7. package/dist/area.cjs +1 -1
  8. package/dist/{area.component-CVYJtXrI.js → area.component-DXcT-c4L.js} +6 -6
  9. package/dist/{area.component-CVYJtXrI.js.map → area.component-DXcT-c4L.js.map} +1 -1
  10. package/dist/{area.component-DTc1TOLd.cjs → area.component-GvVVYEaK.cjs} +2 -2
  11. package/dist/{area.component-DTc1TOLd.cjs.map → area.component-GvVVYEaK.cjs.map} +1 -1
  12. package/dist/area.js +1 -1
  13. package/dist/{autocomplete-CzTNaIqf.cjs → autocomplete-B-UCdew3.cjs} +2 -2
  14. package/dist/{autocomplete-CzTNaIqf.cjs.map → autocomplete-B-UCdew3.cjs.map} +1 -1
  15. package/dist/{autocomplete-D1bwPNoy.js → autocomplete-gfBf6Pph.js} +2 -2
  16. package/dist/{autocomplete-D1bwPNoy.js.map → autocomplete-gfBf6Pph.js.map} +1 -1
  17. package/dist/autocomplete.cjs +1 -1
  18. package/dist/autocomplete.js +1 -1
  19. package/dist/{avatar-CFu-31B1.cjs → avatar-DCQVq0UH.cjs} +2 -2
  20. package/dist/{avatar-CFu-31B1.cjs.map → avatar-DCQVq0UH.cjs.map} +1 -1
  21. package/dist/{avatar-D35JpOv5.js → avatar-wfAWpFxG.js} +33 -33
  22. package/dist/{avatar-D35JpOv5.js.map → avatar-wfAWpFxG.js.map} +1 -1
  23. package/dist/badge.cjs +1 -1
  24. package/dist/badge.js +1 -1
  25. package/dist/busy.cjs +1 -1
  26. package/dist/busy.js +1 -1
  27. package/dist/button.cjs +1 -1
  28. package/dist/button.js +1 -1
  29. package/dist/card.cjs +1 -1
  30. package/dist/card.js +1 -1
  31. package/dist/{checkbox-ZW_jmRBP.js → checkbox-DsmG1Evz.js} +5 -5
  32. package/dist/{checkbox-ZW_jmRBP.js.map → checkbox-DsmG1Evz.js.map} +1 -1
  33. package/dist/checkbox.js +1 -1
  34. package/dist/{chips-DFam160B.js → chips-CtQ6KScS.js} +12 -12
  35. package/dist/{chips-DFam160B.js.map → chips-CtQ6KScS.js.map} +1 -1
  36. package/dist/{chips-DwvB_B3m.cjs → chips-TCtGSVDM.cjs} +2 -2
  37. package/dist/{chips-DwvB_B3m.cjs.map → chips-TCtGSVDM.cjs.map} +1 -1
  38. package/dist/chips.cjs +1 -1
  39. package/dist/chips.js +1 -1
  40. package/dist/{circular-progress-BARPJm-e.js → circular-progress-CUp7rBzy.js} +7 -7
  41. package/dist/{circular-progress-BARPJm-e.js.map → circular-progress-CUp7rBzy.js.map} +1 -1
  42. package/dist/{circular-progress-BDZFB3WR.cjs → circular-progress-Cud0rg3a.cjs} +2 -2
  43. package/dist/{circular-progress-BDZFB3WR.cjs.map → circular-progress-Cud0rg3a.cjs.map} +1 -1
  44. package/dist/circular-progress.cjs +1 -1
  45. package/dist/circular-progress.js +1 -1
  46. package/dist/code-highlight.cjs +1 -1
  47. package/dist/code-highlight.js +1 -1
  48. package/dist/{code-preview-CFnSKSqn.cjs → code-preview-DM8oGBFy.cjs} +2 -2
  49. package/dist/{code-preview-CFnSKSqn.cjs.map → code-preview-DM8oGBFy.cjs.map} +1 -1
  50. package/dist/{code-preview-BxswKcO8.js → code-preview-N0FaD6oD.js} +7 -7
  51. package/dist/{code-preview-BxswKcO8.js.map → code-preview-N0FaD6oD.js.map} +1 -1
  52. package/dist/components.cjs +1 -1
  53. package/dist/components.js +1 -1
  54. package/dist/content-drawer.cjs +1 -1
  55. package/dist/content-drawer.js +1 -1
  56. package/dist/{date-range-Cq8Wdd8b.cjs → date-range-DBdwrYhp.cjs} +2 -2
  57. package/dist/{date-range-Cq8Wdd8b.cjs.map → date-range-DBdwrYhp.cjs.map} +1 -1
  58. package/dist/{date-range-Fij9AQth.js → date-range-DnYewL7B.js} +7 -7
  59. package/dist/{date-range-Fij9AQth.js.map → date-range-DnYewL7B.js.map} +1 -1
  60. package/dist/date-range.cjs +1 -1
  61. package/dist/date-range.js +1 -1
  62. package/dist/{delay-aA1TyZTr.js → delay-C0F-H48q.js} +11 -11
  63. package/dist/{delay-aA1TyZTr.js.map → delay-C0F-H48q.js.map} +1 -1
  64. package/dist/delay.js +1 -1
  65. package/dist/{dialog-content-DpotaqHz.js → dialog-content-COidAlIa.js} +9 -9
  66. package/dist/{dialog-content-DpotaqHz.js.map → dialog-content-COidAlIa.js.map} +1 -1
  67. package/dist/{dialog-content-NyJfG7nL.cjs → dialog-content-CyPNCPyp.cjs} +2 -2
  68. package/dist/{dialog-content-NyJfG7nL.cjs.map → dialog-content-CyPNCPyp.cjs.map} +1 -1
  69. package/dist/dialog.cjs +1 -1
  70. package/dist/dialog.js +1 -1
  71. package/dist/{divider-CEMmRD_e.js → divider-CHtq7YkK.js} +6 -6
  72. package/dist/{divider-CEMmRD_e.js.map → divider-CHtq7YkK.js.map} +1 -1
  73. package/dist/{divider-CMM91UNF.cjs → divider-Cy75eDOI.cjs} +2 -2
  74. package/dist/{divider-CMM91UNF.cjs.map → divider-Cy75eDOI.cjs.map} +1 -1
  75. package/dist/divider.cjs +1 -1
  76. package/dist/divider.js +1 -1
  77. package/dist/{dropdown-content-CUn_E7cR.cjs → dropdown-content-AKsZIRkY.cjs} +2 -2
  78. package/dist/{dropdown-content-CUn_E7cR.cjs.map → dropdown-content-AKsZIRkY.cjs.map} +1 -1
  79. package/dist/{dropdown-content-Cw5wN3oE.js → dropdown-content-DgscCd-v.js} +9 -9
  80. package/dist/{dropdown-content-Cw5wN3oE.js.map → dropdown-content-DgscCd-v.js.map} +1 -1
  81. package/dist/dropdown.cjs +1 -1
  82. package/dist/dropdown.js +1 -1
  83. package/dist/extra.cjs +1 -1
  84. package/dist/extra.js +1 -1
  85. package/dist/{form-DNXmZlmc.js → form-BFc52uuY.js} +9 -9
  86. package/dist/{form-DNXmZlmc.js.map → form-BFc52uuY.js.map} +1 -1
  87. package/dist/{form-BdGYvvVv.cjs → form-DfUjGCp4.cjs} +2 -2
  88. package/dist/{form-BdGYvvVv.cjs.map → form-DfUjGCp4.cjs.map} +1 -1
  89. package/dist/form.cjs +1 -1
  90. package/dist/form.js +1 -1
  91. package/dist/formField.mixin-CuGsxsHl.js +48 -0
  92. package/dist/formField.mixin-CuGsxsHl.js.map +1 -0
  93. package/dist/formField.mixin-Cxw6KKHR.cjs +2 -0
  94. package/dist/formField.mixin-Cxw6KKHR.cjs.map +1 -0
  95. package/dist/{icon-CiYXCpzk.cjs → icon-Csw2jGjz.cjs} +2 -2
  96. package/dist/{icon-CiYXCpzk.cjs.map → icon-Csw2jGjz.cjs.map} +1 -1
  97. package/dist/{icon-BzxYzucF.js → icon-PHYf6Ww3.js} +6 -6
  98. package/dist/{icon-BzxYzucF.js.map → icon-PHYf6Ww3.js.map} +1 -1
  99. package/dist/{icon-button-CVF8ZGrd.cjs → icon-button-B4ItyJ98.cjs} +2 -2
  100. package/dist/{icon-button-CVF8ZGrd.cjs.map → icon-button-B4ItyJ98.cjs.map} +1 -1
  101. package/dist/{icon-button-VqejfzxG.js → icon-button-D889ly9B.js} +7 -7
  102. package/dist/{icon-button-VqejfzxG.js.map → icon-button-D889ly9B.js.map} +1 -1
  103. package/dist/icons.cjs +1 -1
  104. package/dist/icons.js +1 -1
  105. package/dist/index.cjs +1 -1
  106. package/dist/index.js +33 -33
  107. package/dist/input-BbLEIWkk.cjs +122 -0
  108. package/dist/input-BbLEIWkk.cjs.map +1 -0
  109. package/dist/{input-d4jaMv22.js → input-j_kMoC0l.js} +74 -81
  110. package/dist/input-j_kMoC0l.js.map +1 -0
  111. package/dist/input.cjs +1 -1
  112. package/dist/input.js +1 -1
  113. package/dist/{list-L1m51qC0.js → list-B-vruXz6.js} +6 -6
  114. package/dist/{list-L1m51qC0.js.map → list-B-vruXz6.js.map} +1 -1
  115. package/dist/{list-DN2eHabm.cjs → list-CSu6cyoR.cjs} +2 -2
  116. package/dist/{list-DN2eHabm.cjs.map → list-CSu6cyoR.cjs.map} +1 -1
  117. package/dist/list.cjs +1 -1
  118. package/dist/list.js +1 -1
  119. package/dist/{media-C0AR69S2.js → media-B_Me35Lz.js} +11 -11
  120. package/dist/{media-C0AR69S2.js.map → media-B_Me35Lz.js.map} +1 -1
  121. package/dist/{media-yXym3iTa.cjs → media-BfzuayBO.cjs} +2 -2
  122. package/dist/{media-yXym3iTa.cjs.map → media-BfzuayBO.cjs.map} +1 -1
  123. package/dist/{menu-CKDW29ZR.cjs → menu-BDv4zBeO.cjs} +2 -2
  124. package/dist/{menu-CKDW29ZR.cjs.map → menu-BDv4zBeO.cjs.map} +1 -1
  125. package/dist/{menu-Bhh6qxR6.js → menu-CXq_e2XW.js} +9 -9
  126. package/dist/{menu-Bhh6qxR6.js.map → menu-CXq_e2XW.js.map} +1 -1
  127. package/dist/menu.cjs +1 -1
  128. package/dist/menu.js +1 -1
  129. package/dist/mixins/index.ts +1 -0
  130. package/dist/nav-drawer.cjs +1 -1
  131. package/dist/nav-drawer.js +1 -1
  132. package/dist/{notification-service-CG4XTrXU.js → notification-service-CD96gC_Q.js} +2 -2
  133. package/dist/{notification-service-CG4XTrXU.js.map → notification-service-CD96gC_Q.js.map} +1 -1
  134. package/dist/{notification-service-CRbqdLm_.cjs → notification-service-CzJSG4Sn.cjs} +2 -2
  135. package/dist/{notification-service-CRbqdLm_.cjs.map → notification-service-CzJSG4Sn.cjs.map} +1 -1
  136. package/dist/notification.cjs +1 -1
  137. package/dist/notification.js +1 -1
  138. package/dist/{option-Cj25fsD1.js → option-CVtfqsYE.js} +5 -5
  139. package/dist/{option-Cj25fsD1.js.map → option-CVtfqsYE.js.map} +1 -1
  140. package/dist/{option-DFNHF3bL.cjs → option-h_WFbBOi.cjs} +2 -2
  141. package/dist/{option-DFNHF3bL.cjs.map → option-h_WFbBOi.cjs.map} +1 -1
  142. package/dist/option.cjs +1 -1
  143. package/dist/option.js +1 -1
  144. package/dist/{payment-card-form-CEANJmNw.cjs → payment-card-form-BskQ6TgU.cjs} +2 -2
  145. package/dist/{payment-card-form-CEANJmNw.cjs.map → payment-card-form-BskQ6TgU.cjs.map} +1 -1
  146. package/dist/{payment-card-form-YzyxteTK.js → payment-card-form-tNrkE6OQ.js} +9 -9
  147. package/dist/{payment-card-form-YzyxteTK.js.map → payment-card-form-tNrkE6OQ.js.map} +1 -1
  148. package/dist/radio-button-DF08cuJS.js +114 -0
  149. package/dist/radio-button-DF08cuJS.js.map +1 -0
  150. package/dist/radio-button-DnCXtbRy.cjs +41 -0
  151. package/dist/radio-button-DnCXtbRy.cjs.map +1 -0
  152. package/dist/radio-group.cjs +1 -1
  153. package/dist/radio-group.js +1 -1
  154. package/dist/{select-IgXxVwZQ.js → select-BLigK7WJ.js} +8 -8
  155. package/dist/{select-IgXxVwZQ.js.map → select-BLigK7WJ.js.map} +1 -1
  156. package/dist/{select-Cr15D48_.cjs → select-BtsHlkD9.cjs} +2 -2
  157. package/dist/{select-Cr15D48_.cjs.map → select-BtsHlkD9.cjs.map} +1 -1
  158. package/dist/select.cjs +1 -1
  159. package/dist/select.js +1 -1
  160. package/dist/{sheet-9m-LkKNU.js → sheet-Bq4x2qJR.js} +5 -5
  161. package/dist/{sheet-9m-LkKNU.js.map → sheet-Bq4x2qJR.js.map} +1 -1
  162. package/dist/{sheet-u1RXiD4G.cjs → sheet-H3p6cwja.cjs} +2 -2
  163. package/dist/{sheet-u1RXiD4G.cjs.map → sheet-H3p6cwja.cjs.map} +1 -1
  164. package/dist/sheet.cjs +1 -1
  165. package/dist/sheet.js +1 -1
  166. package/dist/{slider-BvOKAD4l.js → slider-B8oe73hM.js} +7 -7
  167. package/dist/{slider-BvOKAD4l.js.map → slider-B8oe73hM.js.map} +1 -1
  168. package/dist/{slider-BFJ0OVq5.cjs → slider-Cfo8tVKG.cjs} +2 -2
  169. package/dist/{slider-BFJ0OVq5.cjs.map → slider-Cfo8tVKG.cjs.map} +1 -1
  170. package/dist/slider.cjs +1 -1
  171. package/dist/slider.js +1 -1
  172. package/dist/{spinner-CRWcQJjQ.cjs → spinner-DnRMrl9v.cjs} +2 -2
  173. package/dist/{spinner-CRWcQJjQ.cjs.map → spinner-DnRMrl9v.cjs.map} +1 -1
  174. package/dist/{spinner-jaFB6wer.js → spinner-U7S7P4no.js} +9 -9
  175. package/dist/{spinner-jaFB6wer.js.map → spinner-U7S7P4no.js.map} +1 -1
  176. package/dist/{tabs-compatibility-DFaq5_66.cjs → tabs-compatibility-9Rd3aAz8.cjs} +2 -2
  177. package/dist/{tabs-compatibility-DFaq5_66.cjs.map → tabs-compatibility-9Rd3aAz8.cjs.map} +1 -1
  178. package/dist/{tabs-compatibility-CHTrE420.js → tabs-compatibility-Bhqb9_1G.js} +7 -7
  179. package/dist/{tabs-compatibility-CHTrE420.js.map → tabs-compatibility-Bhqb9_1G.js.map} +1 -1
  180. package/dist/tabs.cjs +1 -1
  181. package/dist/tabs.js +1 -1
  182. package/dist/teleport.cjs +1 -1
  183. package/dist/teleport.js +1 -1
  184. package/dist/{theme-button-C97XGkCl.js → theme-button-gIEpz0yO.js} +5 -5
  185. package/dist/{theme-button-C97XGkCl.js.map → theme-button-gIEpz0yO.js.map} +1 -1
  186. package/dist/{theme-button-25FKBtFN.cjs → theme-button-oLGQfECu.cjs} +2 -2
  187. package/dist/{theme-button-25FKBtFN.cjs.map → theme-button-oLGQfECu.cjs.map} +1 -1
  188. package/dist/theme-button.cjs +1 -1
  189. package/dist/theme-button.js +1 -1
  190. package/dist/{timezone-BurrHk00.js → timezone-Bo5mdJkY.js} +7 -7
  191. package/dist/{timezone-BurrHk00.js.map → timezone-Bo5mdJkY.js.map} +1 -1
  192. package/dist/{timezone-BWn9DNZY.cjs → timezone-DjBVPwPe.cjs} +2 -2
  193. package/dist/{timezone-BWn9DNZY.cjs.map → timezone-DjBVPwPe.cjs.map} +1 -1
  194. package/dist/{tree-z1EoelBs.cjs → tree-BjNNPfOq.cjs} +2 -2
  195. package/dist/{tree-z1EoelBs.cjs.map → tree-BjNNPfOq.cjs.map} +1 -1
  196. package/dist/{tree-DzHOYcn8.js → tree-DYiGGb5x.js} +6 -6
  197. package/dist/{tree-DzHOYcn8.js.map → tree-DYiGGb5x.js.map} +1 -1
  198. package/dist/tree.cjs +1 -1
  199. package/dist/tree.js +1 -1
  200. package/dist/{typewriter-D_bqiukY.cjs → typewriter-CQWBe0l-.cjs} +2 -2
  201. package/dist/{typewriter-D_bqiukY.cjs.map → typewriter-CQWBe0l-.cjs.map} +1 -1
  202. package/dist/{typewriter-BiBJSC2J.js → typewriter-DNyZpGkL.js} +10 -10
  203. package/dist/{typewriter-BiBJSC2J.js.map → typewriter-DNyZpGkL.js.map} +1 -1
  204. package/dist/typewriter.cjs +1 -1
  205. package/dist/typewriter.js +1 -1
  206. package/package.json +1 -1
  207. package/dist/input-DfBGrUet.cjs +0 -122
  208. package/dist/input-DfBGrUet.cjs.map +0 -1
  209. package/dist/input-d4jaMv22.js.map +0 -1
  210. package/dist/radio-button-BVeem3E9.cjs +0 -41
  211. package/dist/radio-button-BVeem3E9.cjs.map +0 -1
  212. package/dist/radio-button-CBcYZCqv.js +0 -151
  213. package/dist/radio-button-CBcYZCqv.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"typewriter-BiBJSC2J.js","sources":["../.yarn/unplugged/typeit-npm-8.8.7-4441c75f10/node_modules/typeit/dist/index.es.js","../src/typewriter/typewriter.ts"],"sourcesContent":["// TypeIt by Alex MacArthur - https://typeitjs.com\nconst isArray = (thing) => Array.isArray(thing);\n\nconst asArray = (value) => isArray(value) ? value : [value];\n\nlet Queue = function(initialItems) {\n let add = function(steps) {\n asArray(steps).forEach((step) => {\n return _q.set(Symbol(step.char?.innerText), buildQueueItem({ ...step }));\n });\n return this;\n };\n let getTypeable = () => rawValues().filter((value) => value.typeable);\n let set = function(index, item) {\n let keys = [..._q.keys()];\n _q.set(keys[index], buildQueueItem(item));\n };\n let buildQueueItem = (queueItem) => {\n queueItem.shouldPauseCursor = function() {\n return Boolean(this.typeable || this.cursorable || this.deletable);\n };\n return queueItem;\n };\n let reset = function() {\n _q.forEach((item) => delete item.done);\n };\n let wipe = function() {\n _q = /* @__PURE__ */ new Map();\n add(initialItems);\n };\n let getQueue = () => _q;\n let rawValues = () => Array.from(_q.values());\n let destroy = (key) => _q.delete(key);\n let getPendingQueueItems = () => {\n const pending = [];\n for (let [, value] of getQueue()) {\n if (!value.done) {\n pending.push(value);\n }\n }\n return pending;\n };\n let getItems = (all = false) => all ? rawValues() : rawValues().filter((i) => !i.done);\n let done = (key, shouldDestroy = false) => shouldDestroy ? _q.delete(key) : _q.get(key).done = true;\n let _q = /* @__PURE__ */ new Map();\n add(initialItems);\n return {\n add,\n set,\n wipe,\n done,\n reset,\n destroy,\n getItems,\n getQueue,\n getTypeable,\n getPendingQueueItems\n };\n};\n\nconst DATA_ATTRIBUTE = \"data-typeit-id\";\nconst CURSOR_CLASS = \"ti-cursor\";\nconst END = \"END\";\nconst DEFAULT_STATUSES = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false\n};\nconst DEFAULT_OPTIONS = {\n breakLines: true,\n cursor: {\n autoPause: true,\n autoPauseDelay: 500,\n animation: {\n frames: [0, 0, 1].map((n) => {\n return { opacity: n };\n }),\n options: {\n iterations: Infinity,\n easing: \"steps(2, start)\",\n fill: \"forwards\"\n }\n }\n },\n cursorChar: \"|\",\n cursorSpeed: 1e3,\n deleteSpeed: null,\n html: true,\n lifeLike: true,\n loop: false,\n loopDelay: 750,\n nextStringDelay: 750,\n speed: 100,\n startDelay: 250,\n startDelete: false,\n strings: [],\n waitUntilVisible: false,\n beforeString: () => {\n },\n afterString: () => {\n },\n beforeStep: () => {\n },\n afterStep: () => {\n },\n afterComplete: () => {\n }\n};\nconst PLACEHOLDER_CSS = `[${DATA_ATTRIBUTE}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`;\n\nconst createElement = (el) => document.createElement(el);\n\nconst createTextNode = (content) => document.createTextNode(content);\n\nconst appendStyleBlock = (styles, id = \"\") => {\n let styleBlock = createElement(\"style\");\n styleBlock.id = id;\n styleBlock.appendChild(createTextNode(styles));\n document.head.appendChild(styleBlock);\n};\n\nconst calculateDelay = (delayArg) => {\n if (!isArray(delayArg)) {\n delayArg = [delayArg / 2, delayArg / 2];\n }\n return delayArg;\n};\n\nconst randomInRange = (value, range) => {\n return Math.abs(\n Math.random() * (value + range - (value - range)) + (value - range)\n );\n};\n\nlet range = (val) => val / 2;\nfunction calculatePace(options) {\n let { speed, deleteSpeed, lifeLike } = options;\n deleteSpeed = deleteSpeed !== null ? deleteSpeed : speed / 3;\n return lifeLike ? [\n randomInRange(speed, range(speed)),\n randomInRange(deleteSpeed, range(deleteSpeed))\n ] : [speed, deleteSpeed];\n}\n\nconst toArray = (val) => Array.from(val);\n\nlet expandTextNodes = (element) => {\n [...element.childNodes].forEach((child) => {\n if (child.nodeValue) {\n [...child.nodeValue].forEach((c) => {\n child.parentNode.insertBefore(createTextNode(c), child);\n });\n child.remove();\n return;\n }\n expandTextNodes(child);\n });\n return element;\n};\n\nconst getParsedBody = (content) => {\n let doc = document.implementation.createHTMLDocument();\n doc.body.innerHTML = content;\n return expandTextNodes(doc.body);\n};\n\nfunction walkElementNodes(element, shouldReverse = false, shouldIncludeCursor = false) {\n let cursor = element.querySelector(`.${CURSOR_CLASS}`);\n let walker = document.createTreeWalker(element, NodeFilter.SHOW_ALL, {\n acceptNode: (node) => {\n if (cursor && shouldIncludeCursor) {\n if (node.classList?.contains(CURSOR_CLASS)) {\n return NodeFilter.FILTER_ACCEPT;\n }\n if (cursor.contains(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n }\n return node.classList?.contains(CURSOR_CLASS) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n }\n });\n let nextNode;\n let nodes = [];\n while (nextNode = walker.nextNode()) {\n if (!nextNode.originalParent) {\n nextNode.originalParent = nextNode.parentNode;\n }\n nodes.push(nextNode);\n }\n return shouldReverse ? nodes.reverse() : nodes;\n}\nfunction chunkStringAsHtml(string) {\n return walkElementNodes(getParsedBody(string));\n}\nfunction maybeChunkStringAsHtml(str, asHtml = true) {\n return asHtml ? chunkStringAsHtml(str) : toArray(str).map(createTextNode);\n}\n\nconst cleanUpSkipped = ({\n index,\n newIndex,\n queueItems,\n cleanUp\n}) => {\n for (let i = index + 1; i < newIndex + 1; i++) {\n cleanUp(queueItems[i][0]);\n }\n};\n\nconst isNumber = (value) => Number.isInteger(value);\n\nconst countStepsToSelector = ({\n queueItems,\n selector,\n cursorPosition,\n to\n}) => {\n if (isNumber(selector)) {\n return selector * -1;\n }\n let isMovingToEnd = new RegExp(END, \"i\").test(to);\n let selectorIndex = selector ? [...queueItems].reverse().findIndex(({ char }) => {\n let parentElement = char.parentElement;\n let parentMatches = parentElement.matches(selector);\n if (isMovingToEnd && parentMatches) {\n return true;\n }\n return parentMatches && parentElement.firstChild.isSameNode(char);\n }) : -1;\n if (selectorIndex < 0) {\n selectorIndex = isMovingToEnd ? 0 : queueItems.length - 1;\n }\n let offset = isMovingToEnd ? 0 : 1;\n return selectorIndex - cursorPosition + offset;\n};\n\nconst destroyTimeouts = (timeouts) => {\n timeouts.forEach(clearTimeout);\n return [];\n};\n\nconst duplicate = (value, times) => new Array(times).fill(value);\n\nlet beforePaint = (cb) => {\n return new Promise((resolve) => {\n requestAnimationFrame(async () => {\n resolve(await cb());\n });\n });\n};\n\nlet getAnimationFromElement = (element) => {\n return element?.getAnimations().find((animation) => {\n return animation.id === element.dataset.tiAnimationId;\n });\n};\n\nlet setCursorAnimation = ({\n cursor,\n frames,\n options\n}) => {\n let animation = cursor.animate(frames, options);\n animation.pause();\n animation.id = cursor.dataset.tiAnimationId;\n beforePaint(() => {\n beforePaint(() => {\n animation.play();\n });\n });\n return animation;\n};\n\nlet rebuildCursorAnimation = ({\n cursor,\n options,\n cursorOptions\n}) => {\n if (!cursor || !cursorOptions) return;\n let animation = getAnimationFromElement(cursor);\n let oldCurrentTime;\n if (animation) {\n options.delay = animation.effect.getComputedTiming().delay;\n oldCurrentTime = animation.currentTime;\n animation.cancel();\n }\n let newAnimation = setCursorAnimation({\n cursor,\n frames: cursorOptions.animation.frames,\n options\n });\n if (oldCurrentTime) {\n newAnimation.currentTime = oldCurrentTime;\n }\n return newAnimation;\n};\n\nlet execute = (queueItem) => queueItem.func?.call(null);\nlet fireItem = async ({\n index,\n queueItems,\n wait,\n cursor,\n cursorOptions\n}) => {\n let queueItem = queueItems[index][1];\n let instantQueue = [];\n let tempIndex = index;\n let futureItem = queueItem;\n let shouldBeGrouped = () => futureItem && !futureItem.delay;\n let shouldPauseCursor = queueItem.shouldPauseCursor() && cursorOptions.autoPause;\n while (shouldBeGrouped()) {\n instantQueue.push(futureItem);\n shouldBeGrouped() && tempIndex++;\n futureItem = queueItems[tempIndex] ? queueItems[tempIndex][1] : null;\n }\n if (instantQueue.length) {\n await beforePaint(async () => {\n for (let q of instantQueue) {\n await execute(q);\n }\n });\n return tempIndex - 1;\n }\n let animation = getAnimationFromElement(cursor);\n let options;\n if (animation) {\n options = {\n ...animation.effect.getComputedTiming(),\n delay: shouldPauseCursor ? cursorOptions.autoPauseDelay : 0\n };\n }\n await wait(async () => {\n if (animation && shouldPauseCursor) {\n animation.cancel();\n }\n await beforePaint(() => {\n execute(queueItem);\n });\n }, queueItem.delay);\n await rebuildCursorAnimation({\n cursor,\n options,\n cursorOptions\n });\n return index;\n};\n\nconst fireWhenVisible = (element, func) => {\n let observer = new IntersectionObserver(\n (entries, observer2) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n func();\n observer2.unobserve(element);\n }\n });\n },\n { threshold: 1 }\n );\n observer.observe(element);\n};\n\nconst generateHash = () => Math.random().toString().substring(2, 9);\n\nconst isInput = (el) => {\n return \"value\" in el;\n};\n\nlet getAllChars = (element) => {\n if (isInput(element)) {\n return toArray(element.value);\n }\n return walkElementNodes(element, true).filter(\n (c) => !(c.childNodes.length > 0)\n );\n};\n\nlet handleFunctionalArg = (arg) => {\n return typeof arg === \"function\" ? arg() : arg;\n};\n\nlet select = (selector, element = document, all = false) => {\n return element[`querySelector${all ? \"All\" : \"\"}`](selector);\n};\n\nlet isBodyElement = (node) => /body/i.test(node?.tagName);\n\nlet insertIntoElement = (originalTarget, character) => {\n if (isInput(originalTarget)) {\n originalTarget.value = `${originalTarget.value}${character.textContent}`;\n return;\n }\n character.innerHTML = \"\";\n let target = isBodyElement(character.originalParent) ? originalTarget : (\n // If we add one-off fresh elements, there will be no\n // \"originalParent\", so always fall back to the default target.\n character.originalParent || originalTarget\n );\n let cursorNode = select(\".\" + CURSOR_CLASS, target) || null;\n if (cursorNode && cursorNode.parentElement !== target) {\n target = cursorNode.parentElement;\n }\n target.insertBefore(character, cursorNode);\n};\n\nconst isNonVoidElement = (el) => /<(.+)>(.*?)<\\/(.+)>/.test(el.outerHTML);\n\nconst merge = (originalObj, newObj) => Object.assign({}, originalObj, newObj);\n\nlet processCursorOptions = (cursorOptions) => {\n if (typeof cursorOptions === \"object\") {\n let newOptions = {};\n let { frames: defaultFrames, options: defaultOptions } = DEFAULT_OPTIONS.cursor.animation;\n newOptions.animation = cursorOptions.animation || {};\n newOptions.animation.frames = cursorOptions.animation?.frames || defaultFrames;\n newOptions.animation.options = merge(\n defaultOptions,\n cursorOptions.animation?.options || {}\n );\n newOptions.autoPause = cursorOptions.autoPause ?? DEFAULT_OPTIONS.cursor.autoPause;\n newOptions.autoPauseDelay = cursorOptions.autoPauseDelay || DEFAULT_OPTIONS.cursor.autoPauseDelay;\n return newOptions;\n }\n if (cursorOptions === true) {\n return DEFAULT_OPTIONS.cursor;\n }\n return cursorOptions;\n};\n\nconst removeNode = (node, rootElement) => {\n if (!node) return;\n let nodeParent = node.parentNode;\n let nodeToRemove = nodeParent.childNodes.length > 1 || nodeParent.isSameNode(rootElement) ? (\n // This parent still needs to exist.\n node\n ) : (\n // There's nothing else in there, so just delete the entire thing.\n // By doing this, we clean up markup as we go along.\n nodeParent\n );\n nodeToRemove.remove();\n};\n\nconst repositionCursor = (element, allChars, newCursorPosition) => {\n let nodeToInsertBefore = allChars[newCursorPosition - 1];\n let cursor = select(`.${CURSOR_CLASS}`, element);\n element = nodeToInsertBefore?.parentNode || element;\n element.insertBefore(cursor, nodeToInsertBefore || null);\n};\n\nfunction selectorToElement(thing) {\n return typeof thing === \"string\" ? select(thing) : thing;\n}\n\nlet cursorFontStyles = {\n \"font-family\": \"\",\n \"font-weight\": \"\",\n \"font-size\": \"\",\n \"font-style\": \"\",\n \"line-height\": \"\",\n color: \"\",\n transform: \"translateX(-.125em)\"\n};\nlet setCursorStyles = (id, element) => {\n let rootSelector = `[${DATA_ATTRIBUTE}='${id}']`;\n let cursorSelector = `${rootSelector} .${CURSOR_CLASS}`;\n let computedStyles = getComputedStyle(element);\n let customProperties = Object.entries(cursorFontStyles).reduce(\n (accumulator, [item, value]) => {\n return `${accumulator} ${item}: var(--ti-cursor-${item}, ${value || computedStyles[item]});`;\n },\n \"\"\n );\n appendStyleBlock(\n `${cursorSelector} { display: inline-block; width: 0; ${customProperties} }`,\n id\n );\n};\n\nfunction splitOnBreak(str) {\n return str.replace(/<!--(.+?)-->/g, \"\").trim().split(/<br(?:\\s*?)(?:\\/)?>/);\n}\n\nlet updateCursorPosition = (steps, cursorPosition, printedCharacters) => {\n return Math.min(\n Math.max(cursorPosition + steps, 0),\n printedCharacters.length\n );\n};\n\nlet wait = (callback, delay, timeouts) => {\n return new Promise((resolve) => {\n let cb = async () => {\n await callback();\n resolve();\n };\n timeouts.push(setTimeout(cb, delay || 0));\n });\n};\n\nclass TypeIt {\n element;\n timeouts;\n cursorPosition;\n predictedCursorPosition;\n statuses = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false,\n firing: false\n };\n opts;\n id;\n queue;\n cursor;\n flushCallback = null;\n unfreeze = () => {\n };\n constructor(element, options = {}) {\n this.opts = merge(DEFAULT_OPTIONS, options);\n this.element = selectorToElement(element);\n this.timeouts = [];\n this.cursorPosition = 0;\n this.unfreeze = () => {\n };\n this.predictedCursorPosition = null;\n this.statuses = merge({}, DEFAULT_STATUSES);\n this.id = generateHash();\n this.queue = Queue([{ delay: this.opts.startDelay }]);\n this.#buildOptions(options);\n this.cursor = this.#setUpCursor();\n this.element.dataset.typeitId = this.id;\n appendStyleBlock(PLACEHOLDER_CSS);\n if (this.opts.strings.length) {\n this.#generateQueue();\n }\n }\n /**\n * Can only be called once.\n */\n go() {\n if (this.statuses.started) {\n return this;\n }\n this.#attachCursor();\n if (!this.opts.waitUntilVisible) {\n this.#fire();\n return this;\n }\n fireWhenVisible(this.element, this.#fire.bind(this));\n return this;\n }\n destroy(shouldRemoveCursor = true) {\n this.timeouts = destroyTimeouts(this.timeouts);\n handleFunctionalArg(shouldRemoveCursor) && this.cursor && this.#removeNode(this.cursor);\n this.statuses.destroyed = true;\n }\n reset(rebuild) {\n !this.is(\"destroyed\") && this.destroy();\n if (rebuild) {\n this.queue.wipe();\n rebuild(this);\n } else {\n this.queue.reset();\n }\n this.cursorPosition = 0;\n for (let property in this.statuses) {\n this.statuses[property] = false;\n }\n this.element[this.#elementIsInput() ? \"value\" : \"innerHTML\"] = \"\";\n return this;\n }\n is = function(key) {\n return this.statuses[key];\n };\n type(string, actionOpts = {}) {\n string = handleFunctionalArg(string);\n let { instant } = actionOpts;\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let chars = maybeChunkStringAsHtml(string, this.opts.html);\n let charsAsQueueItems = chars.map((char) => {\n return {\n func: () => this.#type(char),\n char,\n delay: instant || isNonVoidElement(char) ? 0 : this.#getPace(),\n typeable: char.nodeType === Node.TEXT_NODE\n };\n });\n let itemsToQueue = [\n bookEndQueueItems[0],\n { func: async () => await this.opts.beforeString(string, this) },\n ...charsAsQueueItems,\n { func: async () => await this.opts.afterString(string, this) },\n bookEndQueueItems[1]\n ];\n return this.#queueAndReturn(itemsToQueue, actionOpts);\n }\n break(actionOpts = {}) {\n return this.#queueAndReturn(\n {\n func: () => this.#type(createElement(\"BR\")),\n typeable: true\n },\n actionOpts\n );\n }\n move(movementArg, actionOpts = {}) {\n movementArg = handleFunctionalArg(movementArg);\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let { instant, to } = actionOpts;\n let numberOfSteps = countStepsToSelector({\n queueItems: this.queue.getTypeable(),\n selector: movementArg === null ? \"\" : movementArg,\n to,\n cursorPosition: this.#derivedCursorPosition\n });\n let directionalStep = numberOfSteps < 0 ? -1 : 1;\n this.predictedCursorPosition = this.#derivedCursorPosition + numberOfSteps;\n return this.#queueAndReturn(\n [\n bookEndQueueItems[0],\n ...duplicate(\n {\n func: () => this.#move(directionalStep),\n delay: instant ? 0 : this.#getPace(),\n cursorable: true\n },\n Math.abs(numberOfSteps)\n ),\n bookEndQueueItems[1]\n ],\n actionOpts\n );\n }\n exec(func, actionOpts = {}) {\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n return this.#queueAndReturn(\n [bookEndQueueItems[0], { func: () => func(this) }, bookEndQueueItems[1]],\n actionOpts\n );\n }\n options(opts, actionOpts = {}) {\n opts = handleFunctionalArg(opts);\n this.#updateOptions(opts);\n return this.#queueAndReturn({}, actionOpts);\n }\n pause(milliseconds, actionOpts = {}) {\n return this.#queueAndReturn(\n { delay: handleFunctionalArg(milliseconds) },\n actionOpts\n );\n }\n delete(numCharacters = null, actionOpts = {}) {\n numCharacters = handleFunctionalArg(numCharacters);\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let num = numCharacters;\n let { instant, to } = actionOpts;\n let typeableQueueItems = this.queue.getTypeable();\n let rounds = (() => {\n if (num === null) {\n return typeableQueueItems.length;\n }\n if (isNumber(num)) {\n return num;\n }\n return countStepsToSelector({\n queueItems: typeableQueueItems,\n selector: num,\n cursorPosition: this.#derivedCursorPosition,\n to\n });\n })();\n return this.#queueAndReturn(\n [\n bookEndQueueItems[0],\n ...duplicate(\n {\n func: this.#delete.bind(this),\n delay: instant ? 0 : this.#getPace(1),\n deletable: true\n },\n rounds\n ),\n bookEndQueueItems[1]\n ],\n actionOpts\n );\n }\n freeze() {\n this.statuses.frozen = true;\n }\n /**\n * Like `.go()`, but more... \"off the grid.\"\n *\n * - won't trigger `afterComplete` callback\n * - items won't be replayed after `.reset()`\n *\n * When called, all non-done items will be \"flushed\" --\n * that is, executed, but not remembered.\n */\n flush(cb = null) {\n this.flushCallback = cb || this.flushCallback;\n if (this.statuses.firing) {\n return this;\n }\n this.#attachCursor();\n this.#fire(false).then(() => {\n if (this.queue.getPendingQueueItems().length > 0) {\n return this.flush();\n }\n this.flushCallback();\n this.flushCallback = null;\n });\n return this;\n }\n getQueue() {\n return this.queue;\n }\n getOptions() {\n return this.opts;\n }\n updateOptions(options) {\n return this.#updateOptions(options);\n }\n getElement() {\n return this.element;\n }\n empty(actionOpts = {}) {\n return this.#queueAndReturn({ func: this.#empty.bind(this) }, actionOpts);\n }\n async #empty() {\n if (this.#elementIsInput()) {\n this.element.value = \"\";\n return;\n }\n this.#allChars.forEach(this.#removeNode.bind(this));\n return;\n }\n /**\n * Execute items in the queue.\n *\n * @param remember If false, each queue item will be destroyed once executed.\n * @returns\n */\n async #fire(remember = true) {\n this.statuses.started = true;\n this.statuses.firing = true;\n let cleanUp = (qKey) => {\n this.queue.done(qKey, !remember);\n };\n try {\n let queueItems = [...this.queue.getQueue()];\n for (let index = 0; index < queueItems.length; index++) {\n let [queueKey, queueItem] = queueItems[index];\n if (queueItem.done) continue;\n if (!queueItem.deletable || queueItem.deletable && this.#allChars.length) {\n let newIndex = await this.#fireItemWithContext(index, queueItems);\n cleanUpSkipped({\n index,\n newIndex,\n queueItems,\n cleanUp\n });\n index = newIndex;\n }\n cleanUp(queueKey);\n }\n if (!remember) {\n this.statuses.firing = false;\n return this;\n }\n this.statuses.completed = true;\n this.statuses.firing = false;\n await this.opts.afterComplete(this);\n if (!this.opts.loop) {\n throw \"\";\n }\n let delay = this.opts.loopDelay;\n this.#wait(async () => {\n await this.#prepLoop(delay[0]);\n this.#fire();\n }, delay[1]);\n } catch (e) {\n }\n this.statuses.firing = false;\n return this;\n }\n async #move(step) {\n this.cursorPosition = updateCursorPosition(\n step,\n this.cursorPosition,\n this.#allChars\n );\n repositionCursor(this.element, this.#allChars, this.cursorPosition);\n }\n /**\n * 1. Reset queue.\n * 2. Reset initial pause.\n */\n async #prepLoop(delay) {\n let derivedCursorPosition = this.#derivedCursorPosition;\n derivedCursorPosition && await this.#move({ value: derivedCursorPosition });\n let queueItems = this.#allChars.map((c) => {\n return [\n Symbol(),\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1),\n deletable: true,\n shouldPauseCursor: () => true\n }\n ];\n });\n for (let index = 0; index < queueItems.length; index++) {\n await this.#fireItemWithContext(index, queueItems);\n }\n this.queue.reset();\n this.queue.set(0, { delay });\n }\n #fireItemWithContext(index, queueItems) {\n return fireItem({\n index,\n queueItems,\n wait: this.#wait.bind(this),\n cursor: this.cursor,\n cursorOptions: this.opts.cursor\n });\n }\n async #wait(callback, delay, silent = false) {\n if (this.statuses.frozen) {\n await new Promise((resolve) => {\n this.unfreeze = () => {\n this.statuses.frozen = false;\n resolve();\n };\n });\n }\n silent || await this.opts.beforeStep(this);\n await wait(callback, delay, this.timeouts);\n silent || await this.opts.afterStep(this);\n }\n /**\n * Attach it to the DOM so, along with the required CSS transition.\n */\n async #attachCursor() {\n !this.#elementIsInput() && this.cursor && this.element.appendChild(this.cursor);\n if (this.#shouldRenderCursor) {\n setCursorStyles(this.id, this.element);\n this.cursor.dataset.tiAnimationId = this.id;\n let { animation } = this.opts.cursor;\n let { frames, options } = animation;\n setCursorAnimation({\n frames,\n cursor: this.cursor,\n options: {\n duration: this.opts.cursorSpeed,\n ...options\n }\n });\n }\n }\n #elementIsInput() {\n return isInput(this.element);\n }\n #queueAndReturn(steps, opts) {\n this.queue.add(steps);\n this.#maybeAppendPause(opts);\n return this;\n }\n #maybeAppendPause(opts = {}) {\n let delay = opts.delay;\n delay && this.queue.add({ delay });\n }\n #generateTemporaryOptionQueueItems(newOptions = {}) {\n return [\n { func: () => this.#updateOptions(newOptions) },\n { func: () => this.#updateOptions(this.opts) }\n ];\n }\n async #updateOptions(opts) {\n this.opts = merge(this.opts, opts);\n }\n /**\n * Based on provided strings, generate a TypeIt queue\n * to be fired for each character in the string.\n */\n #generateQueue() {\n let strings = this.opts.strings.filter((string) => !!string);\n strings.forEach((string, index) => {\n this.type(string);\n if (index + 1 === strings.length) {\n return;\n }\n let splitItems = this.opts.breakLines ? [{ func: () => this.#type(createElement(\"BR\")), typeable: true }] : duplicate(\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1)\n },\n this.queue.getTypeable().length\n );\n this.#addSplitPause(splitItems);\n });\n }\n #buildOptions = (options) => {\n this.opts.cursor = processCursorOptions(\n options.cursor ?? DEFAULT_OPTIONS.cursor\n );\n this.opts.strings = this.#prependHardcodedStrings(\n asArray(this.opts.strings)\n );\n this.opts = merge(this.opts, {\n html: !this.#isInput && this.opts.html,\n nextStringDelay: calculateDelay(this.opts.nextStringDelay),\n loopDelay: calculateDelay(this.opts.loopDelay)\n });\n };\n #prependHardcodedStrings(strings) {\n let existingMarkup = this.element.innerHTML;\n if (!existingMarkup) {\n return strings;\n }\n this.element.innerHTML = \"\";\n if (this.opts.startDelete) {\n this.element.innerHTML = existingMarkup;\n expandTextNodes(this.element);\n this.#addSplitPause(\n duplicate(\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1),\n deletable: true\n },\n this.#allChars.length\n )\n );\n return strings;\n }\n return splitOnBreak(existingMarkup).concat(strings);\n }\n /**\n * Provided it's a non-form element and the options is provided,\n * set up the cursor element for the animation.\n */\n #setUpCursor() {\n if (this.#isInput) {\n return null;\n }\n let cursor = createElement(\"span\");\n cursor.className = CURSOR_CLASS;\n if (!this.#shouldRenderCursor) {\n cursor.style.visibility = \"hidden\";\n return cursor;\n }\n cursor.innerHTML = getParsedBody(this.opts.cursorChar).innerHTML;\n return cursor;\n }\n #addSplitPause(items) {\n let delay = this.opts.nextStringDelay;\n this.queue.add([{ delay: delay[0] }, ...items, { delay: delay[1] }]);\n }\n #type(char) {\n insertIntoElement(this.element, char);\n }\n #delete() {\n if (!this.#allChars.length) return;\n if (this.#isInput) {\n this.element.value = this.element.value.slice(0, -1);\n } else {\n this.#removeNode(this.#allChars[this.cursorPosition]);\n }\n }\n #removeNode(node) {\n removeNode(node, this.element);\n }\n #getPace(index = 0) {\n return calculatePace(this.opts)[index];\n }\n get #derivedCursorPosition() {\n return this.predictedCursorPosition ?? this.cursorPosition;\n }\n get #isInput() {\n return isInput(this.element);\n }\n get #shouldRenderCursor() {\n return !!this.opts.cursor && !this.#isInput;\n }\n get #allChars() {\n return getAllChars(this.element);\n }\n}\n\nexport { TypeIt as default };\n","import { consume } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { delayContext } from '@schmancy/delay'\nimport hashContent from '@schmancy/utils/hashContent'\nimport { intersection$ } from '@schmancy/utils/intersection'\nimport { css, html, TemplateResult } from 'lit'\nimport { customElement, property, query, queryAssignedElements, queryAssignedNodes } from 'lit/decorators.js'\nimport TypeIt, { Options as TypeItOptions } from 'typeit'\n\n@customElement('schmancy-typewriter')\nexport class TypewriterElement extends $LitElement(css`\n\t:host {\n\t\tdisplay: inherit;\n\t}\n\n\t#typewriter {\n\t\t--ti-cursor-display: initial;\n\t}\n\n\t#typewriter .ti-cursor {\n\t\tdisplay: var(--ti-cursor-display);\n\t}\n`) {\n\t/**\n\t * Typing speed in milliseconds per character.\n\t */\n\t@property({ type: Number })\n\tspeed: number = 50\n\n\t/**\n\t * Delay before typing starts (ms).\n\t */\n\t@consume({ context: delayContext, subscribe: true })\n\t@property({ type: Number })\n\tdelay: number = 0\n\n\t/**\n\t * Automatically start typing on initialization.\n\t */\n\t@property({ type: Boolean })\n\tautoStart: boolean = true\n\n\t/**\n\t * The cursor character.\n\t */\n\t@property({ type: String })\n\tcursorChar: string = ''\n\n\t/**\n\t * Typing speed for deletions (ms per character).\n\t */\n\t@property({ type: Number })\n\tdeleteSpeed: number = 25\n\n\t@property({ type: Boolean }) once = true\n\t/**\n\t * TypeIt instance.\n\t */\n\tprivate typeItInstance: TypeIt | null = null\n\n\t/**\n\t * Reference to the typewriter container.\n\t */\n\t@query('#typewriter')\n\tprivate typewriterContainer!: HTMLElement\n\n\t@queryAssignedNodes({\n\t\tflatten: true,\n\t})\n\tprivate _getSlottedNodes!: Node[]\n\n\t@queryAssignedElements({\n\t\tflatten: true,\n\t})\n\tprivate _getSlottedElements!: HTMLElement[]\n\t/**\n\t * Lifecycle method called when the component is disconnected from the DOM.\n\t * Ensures that TypeIt instances are properly cleaned up.\n\t */\n\n\tprivate sessionKey = ''\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._destroyTypeIt()\n\t}\n\n\t/**\n\t * Initializes the TypeIt instance with the provided slotted content.\n\t */\n\tprivate _startTyping() {\n\t\t// Destroy any existing TypeIt instance\n\t\tthis._destroyTypeIt()\n\n\t\tthis.sessionKey = this.generateSessionKey()\n\n\t\tif (this.once && sessionStorage.getItem(this.sessionKey) === 'true') {\n\t\t\t// Skip delay and render immediately if once is set and already rendered\n\t\t\tthis.shadowRoot?.querySelector('slot')?.removeAttribute('hidden')\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.typewriterContainer) {\n\t\t\tconsole.warn('Typewriter container not found.')\n\t\t\treturn\n\t\t}\n\n\t\t// Configure TypeIt options\n\t\tconst typeItOptions: TypeItOptions = {\n\t\t\tspeed: this.speed,\n\t\t\tstartDelay: this.delay,\n\t\t\tcursor: !!this.cursorChar,\n\t\t\tcursorChar: this.cursorChar,\n\t\t\tdeleteSpeed: this.deleteSpeed,\n\t\t\tafterComplete: () => {\n\t\t\t\tif (this.once) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsessionStorage.setItem(this.sessionKey, 'true')\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('Error saving to session storage:', error)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Dispatch the custom event\n\t\t\t\tthis.dispatchEvent(new CustomEvent('typeit-complete', { bubbles: true, composed: true }))\n\n\t\t\t\t// Hide the cursor\n\t\t\t\tthis.typewriterContainer.style.setProperty('--ti-cursor-display', 'none')\n\t\t\t},\n\t\t}\n\n\t\t// Initialize TypeIt\n\t\tthis.typeItInstance = new TypeIt(this.typewriterContainer, typeItOptions)\n\n\t\t// Process slotted content as actions\n\t\tconst slottedNodes = this._getSlottedNodes\n\t\tslottedNodes.forEach(node => {\n\t\t\tif (node.nodeType === Node.TEXT_NODE) {\n\t\t\t\t// Handle plain text\n\t\t\t\tthis.typeItInstance?.type(node.textContent || '')\n\t\t\t} else if (node instanceof HTMLElement) {\n\t\t\t\t// Handle custom element\n\t\t\t\tthis._processCustomElement(node)\n\t\t\t}\n\t\t})\n\n\t\t// Start the typing animation if autoStart is enabled\n\t\t// use rxjs to detect once we are in the view port\n\t\tintersection$(this.shadowRoot?.host as Element).subscribe(() => {\n\t\t\t// alert('in view')\n\t\t\tthis.typeItInstance?.go()\n\t\t})\n\t\t// Start the typing animation if autoStart is enabled\n\t}\n\n\tprivate generateSessionKey(): string {\n\t\tconst slotContent = this._getSlottedElements.map(el => el.outerHTML).join('')\n\t\treturn this.once ? hashContent(slotContent) : ''\n\t}\n\t/**\n\t * Destroys the current TypeIt instance if it exists.\n\t */\n\tprivate _destroyTypeIt() {\n\t\tif (this.typeItInstance) {\n\t\t\ttry {\n\t\t\t\tthis.typeItInstance.destroy()\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error destroying TypeIt instance:', error)\n\t\t\t}\n\t\t\tthis.typeItInstance = null\n\t\t}\n\t}\n\n\t/**\n\t * Processes a custom element for its typing behavior.\n\t */\n\tprivate _processCustomElement(element: HTMLElement) {\n\t\tconst action = element.getAttribute('action')\n\t\tconst value = element.getAttribute('value')\n\t\tswitch (action) {\n\t\t\tcase 'pause':\n\t\t\t\tthis.typeItInstance?.pause(parseInt(value || '0', 10))\n\t\t\t\tbreak\n\t\t\tcase 'delete':\n\t\t\t\tthis.typeItInstance?.delete(parseInt(value || '0', 10))\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (element.tagName === 'P') {\n\t\t\t\t\tthis.typeItInstance.break()\n\t\t\t\t}\n\t\t\t\t// Treat as text if no action is defined\n\t\t\t\tthis.typeItInstance?.type(element.textContent || '')\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Renders the component's HTML.\n\t */\n\trender(): TemplateResult {\n\t\treturn html`<div id=\"typewriter\" aria-live=\"polite\"></div>\n\n\t\t\t<div class=\"typewriter\">\n\t\t\t\t<slot\n\t\t\t\t\thidden\n\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\tthis._startTyping()\n\t\t\t\t\t}}\n\t\t\t\t></slot>\n\t\t\t</div> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-typewriter': TypewriterElement\n\t}\n}\n"],"names":["isArray","thing","Array","asArray","value","DATA_ATTRIBUTE","CURSOR_CLASS","DEFAULT_STATUSES","started","completed","frozen","destroyed","DEFAULT_OPTIONS","breakLines","cursor","autoPause","autoPauseDelay","animation","frames","map","n","opacity","options","iterations","Infinity","easing","fill","cursorChar","cursorSpeed","deleteSpeed","html","lifeLike","loop","loopDelay","nextStringDelay","speed","startDelay","startDelete","strings","waitUntilVisible","beforeString","afterString","beforeStep","afterStep","afterComplete","PLACEHOLDER_CSS","createElement","el","document","createTextNode","content","appendStyleBlock","styles","id","styleBlock","appendChild","head","calculateDelay","delayArg","randomInRange","range","Math","abs","random","val","toArray","from","expandTextNodes","element","childNodes","forEach","child","nodeValue","c","parentNode","insertBefore","remove","getParsedBody","doc","implementation","createHTMLDocument","body","innerHTML","walkElementNodes","shouldReverse","shouldIncludeCursor","nextNode","querySelector","walker","createTreeWalker","NodeFilter","SHOW_ALL","acceptNode","node","classList","contains","FILTER_ACCEPT","FILTER_REJECT","nodes","originalParent","push","reverse","maybeChunkStringAsHtml","str","asHtml","cleanUpSkipped","index","newIndex","queueItems","cleanUp","i","isNumber","Number","isInteger","countStepsToSelector","selector","cursorPosition","to","isMovingToEnd","RegExp","test","selectorIndex","findIndex","char","t","parentElement","parentMatches","matches","firstChild","isSameNode","length","duplicate","times","beforePaint","cb","Promise","resolve","requestAnimationFrame","async","getAnimationFromElement","getAnimations","find","dataset","tiAnimationId","setCursorAnimation","animate","pause","play","execute","queueItem","func","call","fireItem","wait","cursorOptions","instantQueue","tempIndex","futureItem","shouldBeGrouped","delay","shouldPauseCursor","q","effect","getComputedTiming","cancel","oldCurrentTime","currentTime","newAnimation","e","isInput","handleFunctionalArg","arg","select","all","merge","originalObj","newObj","Object","assign","cursorFontStyles","color","transform","TypeIt","timeouts","predictedCursorPosition","statuses","firing","opts","queue","flushCallback","unfreeze","this","toString","substring","initialItems","add","steps","step","_q","set","Symbol","innerText","buildQueueItem","Boolean","typeable","cursorable","deletable","getQueue","rawValues","values","Map","item","keys","wipe","done","key","shouldDestroy","delete","get","reset","destroy","getItems","filter","getTypeable","getPendingQueueItems","pending","buildOptions","setUpCursor","typeitId","attachCursor","bind","IntersectionObserver","entries","observer2","entry","isIntersecting","unobserve","threshold","observe","shouldRemoveCursor","clearTimeout","removeNode","rebuild","is","property","elementIsInput","string","actionOpts","instant","bookEndQueueItems","generateTemporaryOptionQueueItems","charsAsQueueItems","type","outerHTML","nodeType","Node","TEXT_NODE","itemsToQueue","queueAndReturn","movementArg","numberOfSteps","directionalStep","move","milliseconds","numCharacters","num","typeableQueueItems","rounds","derivedCursorPosition","h","then","flush","empty","#y","#r","remember","qKey","queueKey","prepLoop","fire","printedCharacters","allChars","min","max","newCursorPosition","nodeToInsertBefore","#g","fireItemWithContext","#w","callback","silent","setTimeout","shouldRenderCursor","cursorSelector","computedStyles","getComputedStyle","customProperties","reduce","accumulator","duration","#n","#u","maybeAppendPause","#S","#o","newOptions","updateOptions","#i","generateQueue","splitItems","defaultFrames","defaultOptions","prependHardcodedStrings","#C","existingMarkup","addSplitPause","replace","trim","split","concat","#e","className","style","visibility","#I","items","#a","originalTarget","character","textContent","target","tagName","cursorNode","#f","slice","#h","rootElement","nodeParent","#l","#v","TypewriterElement","$LitElement","css","constructor","super","arguments","autoStart","once","typeItInstance","sessionKey","disconnectedCallback","_destroyTypeIt","_startTyping","generateSessionKey","sessionStorage","getItem","shadowRoot","removeAttribute","typewriterContainer","typeItOptions","setItem","dispatchEvent","CustomEvent","bubbles","composed","setProperty","_getSlottedNodes","HTMLElement","_processCustomElement","intersection$","host","subscribe","go","slotContent","_getSlottedElements","join","hashContent","action","getAttribute","parseInt","break","__decorateClass","prototype","consume","context","delayContext","String","query","queryAssignedNodes","flatten","queryAssignedElements","customElement"],"mappings":";;;;;;;;;;AACA,MAAMA,IAAWC,CAAAA,MAAUC,MAAMF,QAAQC,CAEnCE,GAAAA,IAAWC,CAAAA,MAAUJ,EAAQI,CAAAA,IAASA,IAAQ,CAACA,IAyD/CC,IAAiB,kBACjBC,IAAe,aAEfC,KAAmB,EACvBC,SAAAA,IACAC,WAAW,IACXC,QAAQ,IACRC,cAEIC,GAAAA,IAAkB,EACtBC,YAAAA,IACAC,QAAQ,EACNC,WAAW,IACXC,gBAAgB,KAChBC,WAAW,EACTC,QAAQ,CAAC,GAAG,GAAG,CAAA,EAAGC,IAAKC,CAAAA,OACd,EAAEC,SAASD,EAAAA,EAAAA,GAEpBE,SAAS,EACPC,YAAYC,OACZC,QAAQ,mBACRC,MAAM,WAIZC,EAAAA,EAAAA,GAAAA,YAAY,KACZC,aAAa,KACbC,aAAa,MACbC,UACAC,UAAAA,IACAC,MAAAA,IACAC,WAAW,KACXC,iBAAiB,KACjBC,OAAO,KACPC,YAAY,KACZC,iBACAC,SAAS,CACTC,GAAAA,kBAAAA,IACAC,cAAc,MAAA;AAAA,GAEdC,aAAa,MAAA;AAAA,GAEbC,YAAY,MAEZC;AAAAA,GAAAA,WAAW,MAEXC;AAAAA,GAAAA,eAAe,MAGXC;AAAAA,EAAAA,GAAAA,KAAkB,IAAIxC,CAAAA,iFAEtByC,IAAiBC,CAAAA,MAAOC,SAASF,cAAcC,CAAAA,GAE/CE,IAAkBC,CAAAA,MAAYF,SAASC,eAAeC,CAAAA,GAEtDC,IAAmB,CAACC,GAAQC,IAAK,OAAA;AACrC,MAAIC,IAAaR,EAAc,OAAA;AAC/BQ,EAAAA,EAAWD,KAAKA,GAChBC,EAAWC,YAAYN,EAAeG,CACtCJ,CAAAA,GAAAA,SAASQ,KAAKD,YAAYD;AAAW,GAGjCG,IAAkBC,CAAAA,OACjB1D,EAAQ0D,CACXA,MAAAA,IAAW,CAACA,IAAW,GAAGA,IAAW,CAAA,IAEhCA,IAGHC,IAAgB,CAACvD,GAAOwD,MACrBC,KAAKC,IACVD,KAAKE,OAAY3D,KAAAA,IAAQwD,KAASxD,IAAQwD,OAAWxD,IAAQwD,EAIjE;AAAA,IAAIA,IAASI,CAAAA,MAAQA,IAAM;AAU3B,MAAMC,IAAWD,CAAAA,MAAQ9D,MAAMgE,KAAKF,CAAAA;AAEpC,IAAIG,IAAmBC,CAAAA,OACrB,CAAIA,GAAAA,EAAQC,UAAYC,EAAAA,QAASC,OAC/B;AAAA,MAAIA,EAAMC,UAKR,QAJA,CAAID,GAAAA,EAAMC,WAAWF,QAASG,OAAAA;AAC5BF,MAAMG,WAAWC,aAAa1B,EAAewB,CAAAA,GAAIF,CAAM;AAAA,EAAA,CAAA,GAAA,KAEzDA,EAAMK,OAAAA;AAGRT,EAAAA,EAAgBI,CAAAA;AAAM,IAEjBH;AAGT,MAAMS,IAAiB3B,CAAAA,MAAAA;AACrB,MAAI4B,IAAM9B,SAAS+B,eAAeC,mBAAAA;AAElC,SADAF,EAAIG,KAAKC,YAAYhC,GACdiB,EAAgBW,EAAIG,IAAK;AAAA;AAGlC,SAASE,EAAiBf,GAASgB,IAAgB,IAAOC,QACxD;AAAA,MAcIC,GAdAxE,IAASsD,EAAQmB,cAAc,IAAIjF,CACnCkF,EAAAA,GAAAA,IAASxC,SAASyC,iBAAiBrB,GAASsB,WAAWC,UAAU,EACnEC,YAAaC,CAAAA,MACX;AAAA,QAAI/E,KAAUuE,GAAqB;AACjC,UAAIQ,EAAKC,WAAWC,SAASzF,CAAAA,EAC3B,QAAOoF,WAAWM;AAEpB,UAAIlF,EAAOiF,SAASF,GAClB,QAAOH,WAAWO;AAAAA,IAE5B;AACM,WAAOJ,EAAKC,WAAWC,SAASzF,CAAAA,IAAgBoF,WAAWO,gBAAgBP,WAAWM;AAAAA,EAAa,EAAA,CAAA,GAInGE,IAAQ,CACZ;AAAA,SAAOZ,IAAWE,EAAOF,aAClBA,CAAAA,EAASa,mBACZb,EAASa,iBAAiBb,EAASZ,aAErCwB,EAAME,KAAKd,CAAAA;AAEb,SAAOF,IAAgBc,EAAMG,QAAYH,IAAAA;AAC3C;AAIA,SAASI,GAAuBC,GAAKC,QACnC;AAAA,SAAOA,IAHArB,EAAiBN,EAGU0B,CAAOtC,CAAAA,IAAAA,EAAQsC,CAAKpF,EAAAA,IAAI8B;AAC5D;AAEA,MAAMwD,KAAiB,CAAA,EACrBC,OACAC,GAAAA,UAAAA,GACAC,YACAC,GAAAA,SAAAA,EAAAA,MAAAA;AAEA,WAASC,IAAIJ,IAAQ,GAAGI,IAAIH,IAAW,GAAGG,IACxCD,CAAAA,EAAQD,EAAWE,CAAG,EAAA,CAAA,CAAA;AAC1B,GAGMC,IAAY3G,CAAAA,MAAU4G,OAAOC,UAAU7G,CAAAA,GAEvC8G,IAAuB,CAC3BN,EAAAA,YAAAA,GACAO,UACAC,GAAAA,gBAAAA,GACAC;AAEA,MAAIN,EAASI,CACX,EAAA,QAAA,KAAOA;AAET,MAAIG,IAAgB,IAAIC,OA/Jd,OA+J0B,GAAKC,EAAAA,KAAKH,IAC1CI,IAAgBN,IAAW,CAAIP,GAAAA,CAAAA,EAAYP,UAAUqB,UAAU,CAAA,EAAGC,MACpEC,EAAA,MAAA;AAAA,QAAIC,IAAgBF,EAAKE,eACrBC,IAAgBD,EAAcE,QAAQZ,CAAAA;AAC1C,WAAIG,EAAAA,CAAAA,KAAAA,CAAiBQ,MAGdA,KAAiBD,EAAcG,WAAWC,WAAWN;EAAK,CAC5D,IAAA;AAKP,SAJIF,IAAgB,MAClBA,IAAgBH,IAAgB,IAAIV,EAAWsB,SAAS,IAGnDT,IAAgBL,KADVE,IAAgB,IAAI;AACa,GAQ1Ca,IAAY,CAAC/H,GAAOgI,MAAU,IAAIlI,MAAMkI,GAAO1G,KAAKtB,CAAAA;AAE1D,IAAIiI,IAAeC,CAAAA,MACV,IAAIC,QAASC,CAAAA,MAAAA;AAClBC,wBAAsBC,YACpBF;AAAAA,IAAAA,EAAAA,MAAcF,EAAK,CAAA;AAAA,EAAA,CAAA;AACnB,IAIFK,IAA2BvE,CAAAA,MACtBA,GAASwE,cAAAA,EAAgBC,KAAM5H,CAAAA,MAC7BA,EAAUoC,OAAOe,EAAQ0E,QAAQC,aAIxCC,GAAAA,IAAqB,CACvBlI,EAAAA,QAAAA,GACAI,WACAI,SAEAwF,EAAA,MAAA;AAAA,MAAI7F,IAAYH,EAAOmI,QAAQ/H,GAAQI,CAAAA;AAQvC,SAPAL,EAAUiI,SACVjI,EAAUoC,KAAKvC,EAAOgI,QAAQC,eAC9BV,EAAY,MACVA;AAAAA,IAAAA,EAAY;AACVpH,MAAAA,EAAUkI,KAAAA;AAAAA,IAAM,CAChB;AAAA,EAAA,CAAA,GAEGlI;AAAS,GA2BdmI,IAAWC,CAAAA,MAAcA,EAAUC,MAAMC,KAAK,IAAA,GAC9CC,KAAWd,OAAAA,EACbhC,OACAE,GAAAA,YAAAA,GACA6C,MACA3I,GAAAA,QAAAA,GACA4I;AAEA,MAAIL,IAAYzC,EAAWF,CAAAA,EAAO,IAC9BiD,IAAe,CAAA,GACfC,IAAYlD,GACZmD,IAAaR,GACbS,IAAkB,MAAMD,KAAAA,CAAeA,EAAWE,OAClDC,IAAoBX,EAAUW,uBAAuBN,EAAc3I;AACvE,SAAO+I,EAAAA,IACLH,CAAAA,EAAavD,KAAKyD,CAAAA,GAClBC,EAAqBF,KAAAA,KACrBC,IAAajD,EAAWgD,CAAAA,IAAahD,EAAWgD,CAAAA,EAAW,CAAK,IAAA;AAElE,MAAID,EAAazB,OAMf,QALMG,MAAAA,EAAYK,YAChB;AAAA,aAASuB,KAAKN,EAAAA,OACNP,EAAQa,CAAAA;AAAAA,EACtB,IAEWL,IAAY;AAErB,MACItI,GADAL,IAAY0H,EAAwB7H,CAqBxC;AAAA,SAnBIG,MACFK,IAAU,EAAA,GACLL,EAAUiJ,OAAOC,qBACpBJ,OAAOC,IAAoBN,EAAc1I,iBAAiB,YAGxDyI,EAAKf,YAAAA;AACLzH,IAAAA,KAAa+I,KACf/I,EAAUmJ,OAAAA,GAAAA,MAEN/B,EAAY,MAAA;AAChBe,MAAAA,EAAQC,CAAU;AAAA,IAAA,CAAA;AAAA,EAClB,GACDA,EAAUU,eAjEbjJ,CAAAA,EAAAA,QAAAA,GACAQ,SACAoI,GAAAA,eAAAA,EAAAA,MAAAA;AAEA,SAAK5I,KAAW4I,CAAAA,EAAe;AAC/B,QACIW,GADApJ,IAAY0H,EAAwB7H,CAAAA;AAEpCG,IAAAA,MACFK,EAAQyI,QAAQ9I,EAAUiJ,OAAOC,oBAAoBJ,OACrDM,IAAiBpJ,EAAUqJ,aAC3BrJ,EAAUmJ,OAEZ;AAAA,QAAIG,IAAevB,EAAmB,EACpClI,QACAI,GAAAA,QAAQwI,EAAczI,UAAUC,QAChCI,SAKFkJ,EAAA,CAAA;AAAA,WAHIH,MACFE,EAAaD,cAAcD,IAEtBE;AAAAA,EAAY,GA8CU,EAC3BzJ,QACAQ,GAAAA,SAAAA,GACAoI,eAEKhD,EAAAA,CAAAA,GAAAA;AAAK;AAGd,MAiBM+D,IAAW1H,CAAAA,MACR,WAAWA;AAGpB,IASI2H,IAAuBC,CAAAA,aACXA,KAAQ,aAAaA,EAAAA,IAAQA,GAGzCC,IAAS,CAACzD,GAAU/C,IAAUpB,UAAU6H,IAAAA,OACnCzG,EAAQ,mBAAgByG,IAAM,QAAQ,GAAM1D,EAAAA,CAAAA;AAuBrD,MAEM2D,IAAQ,CAACC,GAAaC,MAAWC,OAAOC,OAAO,CAAE,GAAEH,GAAaC,CA+CtE;AAAA,IAAIG,KAAmB,EACrB,eAAe,IACf,eAAe,IACf,aAAa,IACb,cAAc,IACd,eAAe,IACfC,OAAO,IACPC,WAAW,sBAuCb;AAAA,MAAMC,GACJlH;AAAAA,EAAAA;AAAAA,EACAmH;AAAAA,EACAnE;AAAAA,EACAoE;AAAAA,EACAC,WAAW,EACTjL,SAAS,IACTC,WAAW,IACXC,YACAC,WAAAA,IACA+K,QAAAA;EAEFC;AAAAA,EACAtI;AAAAA,EACAuI;AAAAA,EACA9K;AAAAA,EACA+K,gBAAgB;AAAA,EAChBC,WAAW,MAAA;AAAA,EAAA;AAAA,EAEX,YAAY1H,GAAS9C,IAAU;AArEjC,QAA2BrB;AAsEvB8L,SAAKJ,OAAOb,EAAMlK,GAAiBU,CAAAA,GACnCyK,KAAK3H,UAvEkBnE,QAAAA,IAuEUmE,MAtEX,WAAWwG,EAAO3K,KAASA,GAuEjD8L,KAAKR,WAAW,CAAA,GAChBQ,KAAK3E,iBAAiB,GACtB2E,KAAKD,WAAW;OAEhBC,KAAKP,0BAA0B,MAC/BO,KAAKN,WAAWX,EAAM,CAAA,GAAIvK,KAC1BwL,KAAK1I,KAtKkBQ,KAAKE,OAAAA,EAASiI,WAAWC,UAAU,GAAG,CAuK7DF,GAAAA,KAAKH,QA9gBG,SAASM,GAAAA;AACnB,UAAIC,IAAM,SAASC,GAIjB;AAAA,eAHAjM,EAAQiM,CAAAA,EAAO9H,QAAS+H,CAAAA,MACfC,EAAGC,IAAIC,OAAOH,EAAK1E,MAAM8E,SAAAA,GAAYC,EAAe,EAAA,GAAKL,QAE3DN;AAAAA,MACR,GAMGW,IAAkBrD,CAAAA,OACpBA,EAAUW,oBAAoB,WAC5B;AAAA,eAAO2C,GAAQZ,KAAKa,YAAYb,KAAKc,cAAcd,KAAKe;AAAAA,MACzD,GACMzD,IASL0D,IAAW,MAAMT,GACjBU,IAAY,MAAM9M,MAAMgE,KAAKoI,EAAGW,OAahCX,CAAAA,GAAAA,IAAqB,oBAAIY;AAE7B,aADAf,EAAID,CAAAA,GACG,EACLC,KACAI,GAAAA,KAnCQ,SAAS7F,GAAOyG;AACxB,YAAIC,IAAO,CAAId,GAAAA,EAAGc,KAClBd,CAAAA;AAAAA,QAAAA,EAAGC,IAAIa,EAAK1G,IAAQgG,EAAeS,CAAAA,CAAAA;AAAAA,MACpC,GAiCCE,MAvBS;AACTf,QAAAA,IAAqB,oBAAIY,OACzBf,EAAID;MACL,GAqBCoB,MAPS,CAACC,GAAKC,IAAgB,OAAUA,IAAgBlB,EAAGmB,OAAOF,CAAOjB,IAAAA,EAAGoB,IAAIH,CAAAA,EAAKD,WAQtFK,OA5BU,WACVrB;AAAAA,QAAAA,EAAGhI,QAAS6I,CAAAA,MAAgBA,OAAAA,EAAKG,IAClC;AAAA,MAAA,GA2BCM,SApBaL,CAAAA,MAAQjB,EAAGmB,OAAOF,IAqB/BM,UAXa,CAAChD,IAAM,OAAUA,IAAMmC,EAAcA,IAAAA,EAAAA,EAAYc,OAAQhH,CAAAA,MAAAA,CAAOA,EAAEwG,IAY/EP,GAAAA,UAAAA,GACAgB,aA3CgB,MAAMf,EAAYc,EAAAA,OAAQ1N,CAAAA,MAAUA,EAAMwM,WA4C1DoB,sBAvByB,MAAA;AACzB,cAAMC,IAAU;AAChB,iBAAK,CAAO,EAAA7N,CAAAA,KAAU2M,IACf3M,CAAAA,EAAMkN,QACTW,EAAQ7H,KAAKhG,CAGjB;AAAA,eAAO6N;AAAAA,MAAO,EAAA;AAAA,IAkBlB,EAyduB,CAAC,EAAElE,OAAOgC,KAAKJ,KAAKvJ,WAAAA,CAAAA,CAAAA,GACvC2J,KAAKmC,GAAc5M,IACnByK,KAAKjL,SAASiL,KAAKoC,GAAAA,GACnBpC,KAAK3H,QAAQ0E,QAAQsF,WAAWrC,KAAK1I,IACrCF,EAAiBN,EAAAA,GACbkJ,KAAKJ,KAAKrJ,QAAQ4F,UACpB6D,KAAAA,GAEN;AAAA,EAAA;AAAA,EAIE,KACE;AAAA,WAAIA,KAAKN,SAASjL,UACTuL,QAETA,KAAKsC,GAAAA,GACAtC,KAAKJ,KAAKpJ,oBAvMM6B,IA2ML2H,KAAK3H,SA3MSkF,IA2MAyC,KAAAA,GAAWuC,KAAKvC,OA1MjC,IAAIwC,qBACjB,CAACC,GAASC,MACRD;AAAAA,QAAQlK,QAASoK,CAAAA,MAAAA;AACXA,QAAAA,EAAMC,mBACRrF,EAAAA,GACAmF,EAAUG,UAAUxK;MAC9B,CACQ;AAAA,IAAA,GAEJ,EAAEyK,WAAW,KAENC,QAAQ1K,CAAAA,GAgMR2H,SAJLA,KAAAA,GACOA,GAAAA;AAzMW,QAAC3H,GAASkF;AAAAA,EA6MlC;AAAA,EACE,QAAQyF,IAAAA;AACNhD,SAAKR,YAA2BQ,KAAKR,SA9T9BjH,QAAQ0K,YACV,GAAA,CAAA,IA8TLtE,EAAoBqE,CAAAA,KAAuBhD,KAAKjL,UAAUiL,KAAKkD,GAAYlD,KAAKjL,MAChFiL,GAAAA,KAAKN,SAAS9K,YAAAA;AAAAA,EAClB;AAAA,EACE,MAAMuO,GAAAA;AAAAA,KACHnD,KAAKoD,GAAG,WAAA,KAAgBpD,KAAK6B,QAAAA,GAC1BsB,KACFnD,KAAKH,MAAMyB,KAAAA,GACX6B,EAAQnD,IAERA,KAAAA,KAAKH,MAAM+B,MAAAA,GAEb5B,KAAK3E,iBAAiB;AACtB,aAASgI,KAAYrD,KAAKN,SACxBM,MAAKN,SAAS2D,CAAY,IAAA;AAG5B,WADArD,KAAK3H,QAAQ2H,KAAKsD,GAAAA,IAAoB,UAAU,WAAA,IAAe,IACxDtD;AAAAA,EACX;AAAA,EACEoD,KAAK,SAAS5B;AACZ,WAAOxB,KAAKN,SAAS8B,CAAAA;AAAAA,EACtB;AAAA,EACD,KAAK+B,GAAQC,IAAa;AACxBD,QAAS5E,EAAoB4E;AAC7B,QAAIE,EAAAA,SAAEA,EAAYD,IAAAA,GACdE,IAAoB1D,KAAK2D,GAAmCH,CAE5DI,GAAAA,IADQrJ,GAAuBgJ,GAAQvD,KAAKJ,KAAK7J,IAAAA,EACvBX,IAAKwG,CAAAA,MACjC;AAAA,aAAO,EACL2B,MAAM,MAAMyC,KAAK6D,GAAMjI,CACvBA,GAAAA,MAAAA,GACAoC,OAAOyF,MApLWzM,IAoLiB4E,GApLV,sBAAsBH,KAAKzE,EAAG8M,SAoLZ,KAAA,IAAI9D,QAC/Ca,GAAAA,UAAUjF,EAAKmI,aAAaC,KAAKC,UArLhB;AAAA,UAACjN;AAAAA,IAsLnB,CAAA,GAECkN,IAAe,CACjBR,EAAkB,CAClB,GAAA,EAAEnG,MAAMZ,YAAAA,MAAkBqD,KAAKJ,KAAKnJ,aAAa8M,GAAQvD,IAAAA,EAAAA,GAAAA,GACtD4D,GACH,EAAErG,MAAMZ,YAAkBqD,MAAAA,KAAKJ,KAAKlJ,YAAY6M,GAAQvD,IACxD0D,EAAAA,GAAAA,EAAkB,CAEpB,CAAA;AAAA,WAAO1D,KAAKmE,GAAgBD,GAAcV,CAAAA;AAAAA,EAC9C;AAAA,EACE,MAAMA,IAAa;AACjB,WAAOxD,KAAKmE,GACV,EACE5G,MAAM,MAAMyC,KAAK6D,GAAM9M,EAAc,IAAA,CAAA,GACrC8J,UAAU,GAAA,GAEZ2C,CAEN;AAAA,EAAA;AAAA,EACE,KAAKY,GAAaZ,IAAa;AAC7BY,QAAczF,EAAoByF,CAClC;AAAA,QAAIV,IAAoB1D,KAAK2D,GAAmCH,CAC5DC,GAAAA,EAAAA,SAAEA,GAAOnI,IAAEA,EAAOkI,IAAAA,GAClBa,IAAgBlJ,EAAqB,EACvCN,YAAYmF,KAAKH,MAAMmC,YACvB5G,GAAAA,UAAUgJ,MAAgB,OAAO,KAAKA,GACtC9I,IAAAA,GACAD,gBAAgB2E,KAAAA,GAEdsE,CAAAA,GAAAA,IAAkBD,IAAgB,IAAA,KAAS;AAE/C,WADArE,KAAKP,0BAA0BO,UAA8BqE,GACtDrE,KAAKmE,GACV,CACET,EAAkB,CAAA,GAAA,GACftH,EACD,EACEmB,MAAM,MAAMyC,KAAKuE,GAAMD,IACvBtG,OAAOyF,IAAU,IAAIzD,KAAAA,MACrBc,YAAY,GAAA,GAEdhJ,KAAKC,IAAIsM,KAEXX,EAAkB,CAAA,CAAA,GAEpBF,CAEN;AAAA,EAAA;AAAA,EACE,KAAKjG,GAAMiG,IAAa;AACtB,QAAIE,IAAoB1D,KAAK2D,GAAmCH;AAChE,WAAOxD,KAAAA,GACL,CAAC0D,EAAkB,CAAI,GAAA,EAAEnG,MAAM,MAAMA,EAAKyC,IAAAA,EAAAA,GAAS0D,EAAkB,CAAA,CAAA,GACrEF;EAEN;AAAA,EACE,QAAQ5D,GAAM4D,IAAa;AAGzB,WAFA5D,IAAOjB,EAAoBiB,CAC3BI,GAAAA,KAAAA,GAAoBJ,CAAAA,GACbI,KAAKmE,GAAgB,CAAE,GAAEX;EACpC;AAAA,EACE,MAAMgB,GAAchB,IAAa;AAC/B,WAAOxD,KAAAA,GACL,EAAEhC,OAAOW,EAAoB6F,CAAAA,EAAAA,GAC7BhB,CAEN;AAAA,EAAA;AAAA,EACE,OAAOiB,IAAgB,MAAMjB,IAAa,CAAA,GACxCiB;AAAAA,QAAgB9F,EAAoB8F,CACpC;AAAA,QAAIf,IAAoB1D,KAAAA,GAAwCwD,CAC5DkB,GAAAA,IAAMD,GACNhB,EAAAA,SAAEA,GAAOnI,IAAEA,EAAOkI,IAAAA,GAClBmB,IAAqB3E,KAAKH,MAAMmC,YAChC4C,GAAAA,IACEF,MAAQ,OACHC,EAAmBxI,SAExBnB,EAAS0J,CACJA,IAAAA,IAEFvJ,EAAqB,EAC1BN,YAAY8J,GACZvJ,UAAUsJ,GACVrJ,gBAAgB2E,KAAK6E,IACrBvJ,IAXSwJ,EAAA,CAAA;AAcb,WAAO9E,KAAKmE,GACV,CACET,EAAkB,OACftH,EACD,EACEmB,MAAMyC,KAAAA,GAAauC,KAAKvC,IACxBhC,GAAAA,OAAOyF,IAAU,IAAIzD,KAAAA,GAAc,CAAA,GACnCe,cAEF6D,GAAAA,CAAAA,GAEFlB,EAAkB,CAAA,CAAA,GAEpBF;EAEN;AAAA,EACE,SACExD;AAAAA,SAAKN,SAAS/K,SAAAA;AAAAA,EAClB;AAAA,EAUE,MAAM4H,IAAK,MAET;AAAA,WADAyD,KAAKF,gBAAgBvD,KAAMyD,KAAKF,eAC5BE,KAAKN,SAASC,WAGlBK,KAAKsC,GAAAA,GACLtC,QAAW,EAAA,EAAO+E,KAAK,MAAA;AACrB,UAAI/E,KAAKH,MAAMoC,qBAAuB9F,EAAAA,SAAS,EAC7C,QAAO6D,KAAKgF,MAEdhF;AAAAA,WAAKF,iBACLE,KAAKF,gBAAgB;AAAA,IAAI,CAAA,IARlBE;AAAAA,EAWb;AAAA,EACE,WAAAgB;AACE,WAAOhB,KAAKH;AAAAA,EAChB;AAAA,EACE;AACE,WAAOG,KAAKJ;AAAAA,EAChB;AAAA,EACE,cAAcrK,GAAAA;AACZ,WAAOyK,KAAAA,GAAoBzK,CAAAA;AAAAA,EAC/B;AAAA,EACE;AACE,WAAOyK,KAAK3H;AAAAA,EAChB;AAAA,EACE,MAAMmL,IAAa;AACjB,WAAOxD,KAAKmE,GAAgB,EAAE5G,MAAMyC,KAAKiF,GAAO1C,KAAKvC,IAAAA,EAAAA,GAASwD;EAClE;AAAA,EACE,MAAA0B,KACMlF;AAAAA,SAAAA,OACFA,KAAK3H,QAAQhE,QAAQ,KAGvB2L,QAAezH,QAAQyH,KAAKkD,GAAYX,KAAKvC,IAAAA,CAAAA;AAAAA,EAEjD;AAAA,EAOE,MAAAmF,GAAYC,IAAW,IAAA;AACrBpF,SAAKN,SAASjL,cACduL,KAAKN,SAASC,SAAAA;AACd,QAAI7E,IAAWuK,CAAAA,MACbrF;AAAAA,WAAKH,MAAM0B,KAAK8D,GAAOD,CAAAA,CAAAA;AAAAA,IAAS;AAElC,QACE;AAAA,UAAIvK,IAAa,CAAA,GAAImF,KAAKH,MAAMmB,SAAAA,CAAAA;AAChC,eAASrG,IAAQ,GAAGA,IAAQE,EAAWsB,QAAQxB,KAAS;AACtD,YAAK2K,CAAAA,GAAUhI,KAAazC,EAAWF,CAAAA;AACvC,YAAI2C,CAAAA,EAAUiE,MAAd;AACA,cAAA,CAAKjE,EAAUyD,aAAazD,EAAUyD,aAAaf,KAAAA,GAAe7D,QAAQ;AACxE,gBAAIvB,IAAiBoF,MAAAA,KAAAA,GAA0BrF,GAAOE,CAAAA;AACtDH,YAAAA,GAAe,EACbC,UACAC,UACAC,GAAAA,YAAAA,GACAC,SAEFH,EAAAA,CAAAA,GAAAA,IAAQC;AAAAA,UAClB;AACQE,YAAQwK,CAXY;AAAA,QAAA;AAAA,MAY5B;AACM,UAAKF,CAAAA,EAEH,QADApF,KAAKN,SAASC,SAAS,IAChBK;AAKT,UAHAA,KAAKN,SAAShL,YAAAA,IACdsL,KAAKN,SAASC,SAAS,IAAA,MACjBK,KAAKJ,KAAK/I,cAAcmJ,IAAAA,GAAAA,CACzBA,KAAKJ,KAAK3J,KACb,OAAM;AAER,UAAI+H,IAAQgC,KAAKJ,KAAK1J;AACtB8J,WAAKtC,GAAMf;cACHqD,KAAKuF,GAAUvH,EAAM,CAAA,CAAA,GAC3BgC,KAAKwF,GAAAA;AAAAA,MAAO,GACXxH,EAAM;IACV,QACL;AAAA,IAAA;AAEI,WADAgC,KAAKN,SAASC,SAAS,IAChBK;AAAAA,EACX;AAAA,EACE,MAAA,GAAYM,GAAAA;AAjTa,QAACD,GAAOhF,GAAgBoK;AAkT/CzF,SAAK3E,kBAlTmBgF,IAmTtBC,GAnT6BjF,IAoT7B2E,KAAK3E,gBApTwCoK,IAqT7CzF,KAAK0F,IApTF5N,KAAK6N,IACV7N,KAAK8N,IAAIvK,IAAiBgF,GAAO,CAAA,GACjCoF,EAAkBtJ,MAAAA,MA3CI9D,GAASqN,GAAUG,MAC3C;AAAA,UAAIC,IAAqBJ,EAASG,IAAoB,CAClD9Q,GAAAA,IAAS8J,EAAO,IAAItK,CAAAA,IAAgB8D,CACxCA;AAAAA,OAAAA,IAAUyN,GAAoBnN,cAAcN,GACpCO,aAAa7D,GAAQ+Q,KAAsB,IAAA;AAAA,IAAK,GA2VrC9F,KAAK3H,SAAS2H,KAAAA,IAAgBA,KAAK3E;EACxD;AAAA,EAKE,MAAA0K,GAAgB/H,GAAAA;AACd,QAAI6G,IAAwB7E,KAAK6E;AACjCA,eAA+B7E,KAAKuE,GAAM,EAAElQ,OAAOwQ;AACnD,QAAIhK,IAAamF,KAAK0F,GAAUtQ,IAAKsD,CAAAA,MAC5B,CACL+H,OACA,GAAA,EACElD,MAAMyC,KAAAA,GAAauC,KAAKvC,OACxBhC,OAAOgC,KAAAA,GAAc,CAAA,GACrBe,eACA9C,mBAAmB,MAAM,GAAA,CAAA,CAAA;AAI/B,aAAStD,IAAQ,GAAGA,IAAQE,EAAWsB,QAAQxB,IAAAA,OACvCqF,KAAKgG,GAAqBrL,GAAOE,CAEzCmF;AAAAA,SAAKH,MAAM+B,MAAAA,GACX5B,KAAKH,MAAMW,IAAI,GAAG,EAAExC;EACxB;AAAA,EACEiI,GAAqBtL,GAAOE,GAC1B;AAAA,WAAO4C,GAAS,EACd9C,UACAE,YACA6C,GAAAA,MAAMsC,KAAKtC,GAAM6E,KAAKvC,IACtBjL,GAAAA,QAAQiL,KAAKjL,QACb4I,eAAeqC,KAAKJ,KAAK7K,OAE/B,CAAA;AAAA,EAAA;AAAA,EACE,MAAM2I,GAAMwI,GAAUlI,GAAOmI,QACvBnG;AAAAA,SAAKN,SAAS/K,UAAAA,MACV,IAAI6H,QAASC,CAAAA,MAAAA;AACjBuD,WAAKD,WAAW;AACdC,aAAKN,SAAS/K,SAAS,IACvB8H,EAAS;AAAA,MAAA;AAAA,IACV,CAGL0J,GAAAA,KAAAA,MAAgBnG,KAAKJ,KAAKjJ,WAAWqJ,IA5V9B,GAAA,OAAA,CAACkG,GAAUlI,GAAOwB,MACpB,IAAIhD,QAASC,CAAAA;AAKlB+C,MAAAA,EAASnF,KAAK+L,WAJLzJ,YAAAA;AAAAA,cACDuJ,EACNzJ,GAAAA,EAAAA;AAAAA,MAAS,GAEkBuB,KAAS;IAAG,CAuVnCN,GAAKwI,GAAUlI,GAAOgC,KAAKR,QACjC2G,GAAAA,KAAAA,MAAgBnG,KAAKJ,KAAKhJ,UAAUoJ,IACxC;AAAA,EAAA;AAAA,EAIE,MAAMsC,KAAAA;AAEJ,QADCtC,CAAAA,KAAAA,GAA0BA,KAAAA,KAAKjL,UAAUiL,KAAK3H,QAAQb,YAAYwI,KAAKjL,SACpEiL,KAAKqG,IAAqB;AAhYZ,OAAA,CAAC/O,GAAIe,MACzB;AAAA,YACIiO,IAAiB,IADEhS,CAAmBgD,KAAAA,CAAAA,OACD/C,CACrCgS,IAAAA,IAAiBC,iBAAiBnO,CAClCoO,GAAAA,IAAmBvH,OAAOuD,QAAQrD,IAAkBsH,OACtD,CAACC,GAAcvF,CAAAA,GAAM/M,OACZ,GAAGsS,CAAAA,IAAevF,CAAyBA,qBAAAA,CAAAA,KAAS/M,KAASkS,EAAenF,CAErF,CAAA,MAAA,EAAA;AAEFhK,QAAAA,EACE,GAAGkP,CAAAA,uCAAqDG,CACxDnP,MAAAA,CAAAA;AAAAA,MACD,GAoXmB0I,KAAK1I,IAAI0I,KAAK3H,UAC9B2H,KAAKjL,OAAOgI,QAAQC,gBAAgBgD,KAAK1I;AACzC,UAAA,EAAIpC,WAAEA,EAAAA,IAAc8K,KAAKJ,KAAK7K,QAAAA,EAC1BI,QAAEA,GAAMI,SAAEA,EAAYL,IAAAA;AAC1B+H,MAAAA,EAAmB,EACjB9H,WACAJ,QAAQiL,KAAKjL,QACbQ,SAAS,EACPqR,UAAU5G,KAAKJ,KAAK/J,gBACjBN,EAGb,EAAA,CAAA;AAAA,IAAA;AAAA,EACA;AAAA,EACEsR;AACE,WAAOnI,EAAQsB,KAAK3H,OAAAA;AAAAA,EACxB;AAAA,EACEyO,GAAgBzG,GAAOT,GAAAA;AAGrB,WAFAI,KAAKH,MAAMO,IAAIC,IACfL,KAAK+G,GAAkBnH,CAChBI,GAAAA;AAAAA,EACX;AAAA,EACEgH,GAAkBpH,IAAO;AACvB,QAAI5B,IAAQ4B,EAAK5B;AACjBA,SAASgC,KAAKH,MAAMO,IAAI,EAAEpC,OAC9B,EAAA,CAAA;AAAA,EAAA;AAAA,EACEiJ,GAAmCC,IAAa;AAC9C,WAAO,CACL,EAAE3J,MAAM,MAAMyC,KAAKmH,GAAeD,CAClC,EAAA,GAAA,EAAE3J,MAAM,MAAMyC,QAAoBA,KAAKJ,IAE7C,EAAA,CAAA;AAAA,EAAA;AAAA,EACE,SAAqBA,GAAAA;AACnBI,SAAKJ,OAAOb,EAAMiB,KAAKJ,MAAMA,CACjC;AAAA,EAAA;AAAA,EAKEwH,KAAAC;AACE,QAAI9Q,IAAUyJ,KAAKJ,KAAKrJ,QAAQwL,OAAQwB,CAAAA,MAAAA,CAAAA,CAAaA;AACrDhN,MAAQgC,QAAQ,CAACgL,GAAQ5I;AAEvB,UADAqF,KAAK6D,KAAKN,CAAAA,GACN5I,IAAQ,MAAMpE,EAAQ4F,OACxB;AAEF,UAAImL,IAAatH,KAAKJ,KAAK9K,aAAa,CAAC,EAAEyI,MAAM,MAAMyC,QAAWjJ,EAAc,IAAQ8J,CAAAA,GAAAA,UAAAA,GAAoBzE,CAAAA,IAAAA,EAC1G,EACEmB,MAAMyC,QAAauC,KAAKvC,IACxBhC,GAAAA,OAAOgC,QAAc,CAAA,EAAA,GAEvBA,KAAKH,MAAMmC,cAAc7F,MAE3B6D;AAAAA,WAAAA,GAAoBsH,CAAAA;AAAAA,IAAW;EAErC;AAAA,EACEnF,KAAiB5M,OACfyK;AAAAA,SAAKJ,KAAK7K,UAhfc4I,CAAAA,MAC1B;AAAA,iBAAWA,KAAkB,UAAU;AACrC,YAAIuJ,IAAa,CAAE,GACb/R,EAAAA,QAAQoS,GAAehS,SAASiS,EAAmB3S,IAAAA,EAAgBE,OAAOG;AAShF,eARAgS,EAAWhS,YAAYyI,EAAczI,aAAa,CAAE,GACpDgS,EAAWhS,UAAUC,SAASwI,EAAczI,WAAWC,UAAUoS,GACjEL,EAAWhS,UAAUK,UAAUwJ,EAC7ByI,GACA7J,EAAczI,WAAWK,WAAW,CAAA,CAAA,GAEtC2R,EAAWlS,YAAY2I,EAAc3I,aAAaH,EAAgBE,OAAOC,WACzEkS,EAAWjS,iBAAiB0I,EAAc1I,kBAAkBJ,EAAgBE,OAAOE,gBAC5EiS;AAAAA,MACX;AACE,aAAIvJ,MAAJ,KACS9I,EAAgBE,SAElB4I;AAAAA,IAAa,GAgehBpI,EAAQR,UAAUF,EAAgBE,MAEpCiL,GAAAA,KAAKJ,KAAKrJ,UAAUyJ,KAAKyH,GACvBrT,EAAQ4L,KAAKJ,KAAKrJ,OAEpByJ,CAAAA,GAAAA,KAAKJ,OAAOb,EAAMiB,KAAKJ,MAAM,EAC3B7J,OAAOiK,KAAKtB,MAAYsB,KAAKJ,KAAK7J,MAClCI,iBAAiBuB,EAAesI,KAAKJ,KAAKzJ,eAC1CD,GAAAA,WAAWwB,EAAesI,KAAKJ,KAAK1J,SACpC,EAAA,CAAA;AAAA,EAAA;AAAA,EAEJwR,GAAyBnR;AACvB,QAAIoR,IAAiB3H,KAAK3H,QAAQc;AAClC,WAAKwO,KAGL3H,KAAK3H,QAAQc,YAAY,IACrB6G,KAAKJ,KAAKtJ,eACZ0J,KAAK3H,QAAQc,YAAYwO,GACzBvP,EAAgB4H,KAAK3H,OAAAA,GACrB2H,KAAK4H,GACHxL,EACE,EACEmB,MAAMyC,KAAAA,GAAauC,KAAKvC,IAAAA,GACxBhC,OAAOgC,KAAAA,GAAc,CACrBe,GAAAA,WAAAA,GAEFf,GAAAA,KAAAA,GAAe7D,MAGZ5F,CAAAA,GAAAA,MAzcSiE,IA2cEmN,GA1cfnN,EAAIqN,QAAQ,iBAAiB,EAAIC,EAAAA,KAAAA,EAAOC,MAAM,qBA0cfC,GAAAA,OAAOzR,CAlBlCA,KAAAA;AAzbb,QAAsBiE;AAAAA,EA4ctB;AAAA,EAKEyN,KAAA7F;AACE,QAAIpC,KAAKtB,GACP,QAAO;AAET,QAAI3J,IAASgC,EAAc,MAAA;AAE3B,WADAhC,EAAOmT,YAAY3T,GACdyL,KAAAA,MAILjL,EAAOoE,YAAYL,EAAckH,KAAKJ,KAAKhK,UAAYuD,EAAAA,WAChDpE,MAJLA,EAAOoT,MAAMC,aAAa,UACnBrT;AAAAA,EAIb;AAAA,EACEsT,GAAeC,GACb;AAAA,QAAItK,IAAQgC,KAAKJ,KAAKzJ;AACtB6J,SAAKH,MAAMO,IAAI,CAAC,EAAEpC,OAAOA,EAAM,CAAA,EAAA,GAAA,GAASsK,GAAO,EAAEtK,OAAOA,EAAM,CAAA,EAAA,CAAA,CAAA;AAAA,EAClE;AAAA,EACEuK,GAAM3M,GA9jBgB;AAAA,KAAA,CAAC4M,GAAgBC,MAAAA;AACvC,UAAI/J,EAAQ8J,CAAAA,EAEV,QADAA,MAAAA,EAAenU,QAAQ,GAAGmU,EAAenU,KAAAA,GAAQoU,EAAUC,WAG7DD;AAAAA,MAAAA,EAAUtP,YAAY;AACtB,UAAIwP,KARe7O,IAQQ2O,EAAUrO,gBART,QAAQqB,KAAK3B,GAAM8O,OAQQJ,IAAAA,IAGrDC,EAAUrO,kBAAkBoO;AAXZ,UAAC1O;AAanB,UAAI+O,IAAahK,EAAO,MAAMtK,GAAcoU,CAAW,KAAA;AACnDE,MAAAA,KAAcA,EAAW/M,kBAAkB6M,MAC7CA,IAASE,EAAW/M,gBAEtB6M,EAAO/P,aAAa6P,GAAWI,CAAAA;AAAAA,IAAW,GAgjBtB7I,KAAK3H,SAASuD,CAAAA;AAAAA,EACpC;AAAA,EACEkN,KAAApH;AACO1B,SAAK0F,GAAUvJ,WAChB6D,KAAKtB,KACPsB,KAAK3H,QAAQhE,QAAQ2L,KAAK3H,QAAQhE,MAAM0U,MAAM,SAE9C/I,KAAKkD,GAAYlD,QAAeA,KAAK3E,cAE3C,CAAA;AAAA,EAAA;AAAA,EACE2N,GAAYlP,GAAAA;AA/hBK,KAACA,CAAAA,GAAMmP;AACxB,UAAKnP,CAAAA,EAAM;AACX,UAAIoP,IAAapP,EAAKnB;AAAAA,OACHuQ,EAAW5Q,WAAW6D,SAAS,KAAK+M,EAAWhN,WAAW+M,CAAAA,IAAYpN,IAG3Fd,GAKelC,OAAAA;AAAAA,IAAQ,GAqhBRiB,GAAMkG,KAAK3H,OAC1B;AAAA,EAAA;AAAA,EACE8Q,GAASxO,IAAQ,GACf;AAAA,WA10BJ,SAAuBpF,GACrB;AAAA,UAAA,EAAIa,OAAEA,GAAKN,aAAEA,GAAWE,UAAEA,EAAaT,IAAAA;AAEvC,aADAO,IAAcA,MAAgB,OAAOA,IAAcM,IAAQ,GACpDJ,IAAW,CAChB4B,EAAcxB,GAAOyB,EAAMzB,CAC3BwB,CAAAA,GAAAA,EAAc9B,GAAa+B,EAAM/B,CAAAA,CAAAA,CAAAA,IAC/B,CAACM,GAAON,CACd;AAAA,IAAA,EAm0ByBkK,KAAKJ,MAAMjF,CACpC;AAAA,EAAA;AAAA,EACE,IAAIkK,KAAAA;AACF,WAAO7E,KAAKP,2BAA2BO,KAAK3E;AAAAA,EAChD;AAAA,EACE,IAAIqD,KAAAA;AACF,WAAOA,EAAQsB,KAAK3H,OAAAA;AAAAA,EACxB;AAAA,EACE,IAAA+Q;AACE,WAASpJ,CAAAA,CAAAA,KAAKJ,KAAK7K,UAAAA,CAAWiL;EAClC;AAAA,EACE,IAAI0F,KAAAA;AACF,WA5mBerN,IA4mBI2H,KAAK3H,SA3mBtBqG,EAAQrG,CACHH,IAAAA,EAAQG,EAAQhE,KAAAA,IAElB+E,EAAiBf,GAAS,EAAA,EAAM0J,OACpCrJ,CAAAA,MAAAA,EAAQA,EAAEJ,WAAW6D,SAAS,EALjB;AAAA,QAAC9D;AAAAA,EA6mBnB;;;;;;ACr9Ba,IAAAgR,IAAN,cAAgCC,EAAYC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;EAA5C,cAAAC;AAAAC,UAAAC,GAAAA,SAAAA,GAiBU1J,KAAA5J,QAAA,IAOA4J,KAAAhC,QAAA,GAMKgC,KAAA2J,YAAAA,IAMA3J,KAAApK,aAAA,IAMCoK,KAAAlK,cAAA,IAEckK,KAAA4J,OAAAA,IAIpC5J,KAAQ6J,iBAAgC,MAsBxC7J,KAAQ8J,aAAa;AAAA,EAAA;AAAA,EACrB,uBACCL;AAAAA,UAAMM,qBACN/J,GAAAA,KAAKgK,eAAe;AAAA,EAAA;AAAA,EAMb,eAAAC;AAMP,QAJAjK,KAAKgK,eAEAhK,GAAAA,KAAA8J,aAAa9J,KAAKkK,sBAEnBlK,KAAK4J,QAAQO,eAAeC,QAAQpK,KAAK8J,UAG5C,MAH4D,OAG5D,QAAA,KADA9J,KAAKqK,YAAY7Q,cAAc,MAAA,GAAS8Q,gBAAgB,QAAA;AAIrD,SAACtK,KAAKuK,oBAET;AAID,UAAMC,IAA+B,EACpCpU,OAAO4J,KAAK5J,OACZC,YAAY2J,KAAKhC,OACjBjJ,QAAUiL,CAAAA,CAAAA,KAAKpK,YACfA,YAAYoK,KAAKpK,YACjBE,aAAakK,KAAKlK,aAClBe,eAAe,MAAA;AACd,UAAImJ,KAAK4J,KACJ,KAAA;AACYO,uBAAAM,QAAQzK,KAAK8J,YAAY,MAAA;AAAA,cAEe;AAAA,MAAA;AAIpD9J,WAAA0K,cAAc,IAAIC,YAAY,mBAAmB,EAAEC,SAAS,IAAMC,UAAU,GAAA,CAAA,CAAA,GAGjF7K,KAAKuK,oBAAoBpC,MAAM2C,YAAY,uBAAuB,MAAA;AAAA,IAAM,EAK1E9K;AAAAA,SAAK6J,iBAAiB,IAAItK,GAAOS,KAAKuK,qBAAqBC,CAAAA,GAGtCxK,KAAK+K,iBACbxS,QAAgBuB,OACxBA;AAAAA,QAAKiK,aAAaC,KAAKC,YAE1BjE,KAAK6J,gBAAgBhG,KAAK/J,EAAK4O,eAAe,EACpC5O,IAAAA,aAAgBkR,eAE1BhL,KAAKiL,sBAAsBnR,CAAI;AAAA,IAAA,CAAA,GAMjCoR,EAAclL,KAAKqK,YAAYc,IAAAA,EAAiBC,UAAU,MAAA;AAEzDpL,WAAK6J,gBAAgBwB,GAAG;AAAA,IAAA,CAAA;AAAA,EACxB;AAAA,EAIM,qBAAAnB;AACD,UAAAoB,IAActL,KAAKuL,oBAAoBnW,WAAU4B,EAAG8M,SAAAA,EAAW0H,KAAK,EAAA;AAC1E,WAAOxL,KAAK4J,OAAO6B,EAAYH,CAAe,IAAA;AAAA,EAAA;AAAA,EAKvC,iBACP;AAAA,QAAItL,KAAK6J,gBAAgB;AACpB,UAAA;AACH7J,aAAK6J,eAAehI;cAEoC;AAAA,MAAA;AAEzD7B,WAAK6J,iBAAiB;AAAA,IAAA;AAAA,EACvB;AAAA,EAMO,sBAAsBxR,GAAAA;AACvB,UAAAqT,IAASrT,EAAQsT,aAAa,WAC9BtX,IAAQgE,EAAQsT,aAAa,OAAA;AACnC,YAAQD,GAAAA;AAAAA,MACP,KAAK;AACJ1L,aAAK6J,gBAAgB1M,MAAMyO,SAASvX,KAAS,KAAK;AAClD;AAAA,MACD,KAAK;AACJ2L,aAAK6J,gBAAgBnI,OAAOkK,SAASvX,KAAS,KAAK,EAAA,CAAA;AACnD;AAAA,MACD;AACyB,QAApBgE,EAAQuQ,YAAY,OACvB5I,KAAK6J,eAAegC,MAAAA,GAGrB7L,KAAK6J,gBAAgBhG,KAAKxL,EAAQqQ,eAAe,EAAA;AAAA,IAAA;AAAA,EAEnD;AAAA,EAMD,SACQ;AAAA,WAAA3S;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,mBAKU,MAAA;AACbiK,WAAKiK,aAAa;AAAA,IAAA,CAAA;AAAA;AAAA;AAAA,EAClB;AAlLL6B;AAAAA,EAAA,CADCzI,EAAS,EAAEQ,MAAM5I,OAhBNoO,CAAAA,CAAAA,GAAAA,EAiBZ0C,WAAA,SAAA,CAAA,GAOAD,EAAA,CAFCE,EAAQ,EAAEC,SAASC,GAAcd,cACjC/H,CAAAA,GAAAA,EAAS,EAAEQ,MAAM5I,OAvBNoO,CAAAA,CAAAA,GAAAA,EAwBZ0C,WAAA,SAAA,CAAA,GAMAD,EAAA,CADCzI,EAAS,EAAEQ,MAAMjD,QAAAA,CAAAA,CAAAA,GA7BNyI,EA8BZ0C,WAAA,aAAA,CAAA,GAMAD,EAAA,CADCzI,EAAS,EAAEQ,MAAMsI,OAAAA,CAAAA,CAAAA,GAnCN9C,EAoCZ0C,WAAA,cAAA,CAMAD,GAAAA,EAAA,CADCzI,EAAS,EAAEQ,MAAM5I,OAAAA,CAAAA,CAAAA,GAzCNoO,EA0CZ0C,WAAA,eAAA,IAE6BD,EAAA,CAA5BzI,EAAS,EAAEQ,MAAMjD,QAAAA,CAAAA,CAAAA,GA5CNyI,EA4CiB0C,WAAA,QAAA,IAUrBD,EAAA,CADPM,GAAM,aArDK/C,CAAAA,GAAAA,EAsDJ0C,WAAA,uBAAA,CAKAD,GAAAA,EAAA,CAHPO,GAAmB,EACnBC,YAzDWjD,CAAAA,CAAAA,GAAAA,EA2DJ0C,WAAA,oBAAA,CAAA,GAKAD,EAAA,CAHPS,GAAsB,EACtBD,YA9DWjD,CAAAA,CAAAA,GAAAA,EAgEJ0C,WAAA,uBAAA,CAAA,GAhEI1C,IAANyC,EAAA,CADNU,GAAc,qBAAA,CAAA,GACFnD;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"typewriter-DNyZpGkL.js","sources":["../.yarn/unplugged/typeit-npm-8.8.7-4441c75f10/node_modules/typeit/dist/index.es.js","../src/typewriter/typewriter.ts"],"sourcesContent":["// TypeIt by Alex MacArthur - https://typeitjs.com\nconst isArray = (thing) => Array.isArray(thing);\n\nconst asArray = (value) => isArray(value) ? value : [value];\n\nlet Queue = function(initialItems) {\n let add = function(steps) {\n asArray(steps).forEach((step) => {\n return _q.set(Symbol(step.char?.innerText), buildQueueItem({ ...step }));\n });\n return this;\n };\n let getTypeable = () => rawValues().filter((value) => value.typeable);\n let set = function(index, item) {\n let keys = [..._q.keys()];\n _q.set(keys[index], buildQueueItem(item));\n };\n let buildQueueItem = (queueItem) => {\n queueItem.shouldPauseCursor = function() {\n return Boolean(this.typeable || this.cursorable || this.deletable);\n };\n return queueItem;\n };\n let reset = function() {\n _q.forEach((item) => delete item.done);\n };\n let wipe = function() {\n _q = /* @__PURE__ */ new Map();\n add(initialItems);\n };\n let getQueue = () => _q;\n let rawValues = () => Array.from(_q.values());\n let destroy = (key) => _q.delete(key);\n let getPendingQueueItems = () => {\n const pending = [];\n for (let [, value] of getQueue()) {\n if (!value.done) {\n pending.push(value);\n }\n }\n return pending;\n };\n let getItems = (all = false) => all ? rawValues() : rawValues().filter((i) => !i.done);\n let done = (key, shouldDestroy = false) => shouldDestroy ? _q.delete(key) : _q.get(key).done = true;\n let _q = /* @__PURE__ */ new Map();\n add(initialItems);\n return {\n add,\n set,\n wipe,\n done,\n reset,\n destroy,\n getItems,\n getQueue,\n getTypeable,\n getPendingQueueItems\n };\n};\n\nconst DATA_ATTRIBUTE = \"data-typeit-id\";\nconst CURSOR_CLASS = \"ti-cursor\";\nconst END = \"END\";\nconst DEFAULT_STATUSES = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false\n};\nconst DEFAULT_OPTIONS = {\n breakLines: true,\n cursor: {\n autoPause: true,\n autoPauseDelay: 500,\n animation: {\n frames: [0, 0, 1].map((n) => {\n return { opacity: n };\n }),\n options: {\n iterations: Infinity,\n easing: \"steps(2, start)\",\n fill: \"forwards\"\n }\n }\n },\n cursorChar: \"|\",\n cursorSpeed: 1e3,\n deleteSpeed: null,\n html: true,\n lifeLike: true,\n loop: false,\n loopDelay: 750,\n nextStringDelay: 750,\n speed: 100,\n startDelay: 250,\n startDelete: false,\n strings: [],\n waitUntilVisible: false,\n beforeString: () => {\n },\n afterString: () => {\n },\n beforeStep: () => {\n },\n afterStep: () => {\n },\n afterComplete: () => {\n }\n};\nconst PLACEHOLDER_CSS = `[${DATA_ATTRIBUTE}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`;\n\nconst createElement = (el) => document.createElement(el);\n\nconst createTextNode = (content) => document.createTextNode(content);\n\nconst appendStyleBlock = (styles, id = \"\") => {\n let styleBlock = createElement(\"style\");\n styleBlock.id = id;\n styleBlock.appendChild(createTextNode(styles));\n document.head.appendChild(styleBlock);\n};\n\nconst calculateDelay = (delayArg) => {\n if (!isArray(delayArg)) {\n delayArg = [delayArg / 2, delayArg / 2];\n }\n return delayArg;\n};\n\nconst randomInRange = (value, range) => {\n return Math.abs(\n Math.random() * (value + range - (value - range)) + (value - range)\n );\n};\n\nlet range = (val) => val / 2;\nfunction calculatePace(options) {\n let { speed, deleteSpeed, lifeLike } = options;\n deleteSpeed = deleteSpeed !== null ? deleteSpeed : speed / 3;\n return lifeLike ? [\n randomInRange(speed, range(speed)),\n randomInRange(deleteSpeed, range(deleteSpeed))\n ] : [speed, deleteSpeed];\n}\n\nconst toArray = (val) => Array.from(val);\n\nlet expandTextNodes = (element) => {\n [...element.childNodes].forEach((child) => {\n if (child.nodeValue) {\n [...child.nodeValue].forEach((c) => {\n child.parentNode.insertBefore(createTextNode(c), child);\n });\n child.remove();\n return;\n }\n expandTextNodes(child);\n });\n return element;\n};\n\nconst getParsedBody = (content) => {\n let doc = document.implementation.createHTMLDocument();\n doc.body.innerHTML = content;\n return expandTextNodes(doc.body);\n};\n\nfunction walkElementNodes(element, shouldReverse = false, shouldIncludeCursor = false) {\n let cursor = element.querySelector(`.${CURSOR_CLASS}`);\n let walker = document.createTreeWalker(element, NodeFilter.SHOW_ALL, {\n acceptNode: (node) => {\n if (cursor && shouldIncludeCursor) {\n if (node.classList?.contains(CURSOR_CLASS)) {\n return NodeFilter.FILTER_ACCEPT;\n }\n if (cursor.contains(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n }\n return node.classList?.contains(CURSOR_CLASS) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n }\n });\n let nextNode;\n let nodes = [];\n while (nextNode = walker.nextNode()) {\n if (!nextNode.originalParent) {\n nextNode.originalParent = nextNode.parentNode;\n }\n nodes.push(nextNode);\n }\n return shouldReverse ? nodes.reverse() : nodes;\n}\nfunction chunkStringAsHtml(string) {\n return walkElementNodes(getParsedBody(string));\n}\nfunction maybeChunkStringAsHtml(str, asHtml = true) {\n return asHtml ? chunkStringAsHtml(str) : toArray(str).map(createTextNode);\n}\n\nconst cleanUpSkipped = ({\n index,\n newIndex,\n queueItems,\n cleanUp\n}) => {\n for (let i = index + 1; i < newIndex + 1; i++) {\n cleanUp(queueItems[i][0]);\n }\n};\n\nconst isNumber = (value) => Number.isInteger(value);\n\nconst countStepsToSelector = ({\n queueItems,\n selector,\n cursorPosition,\n to\n}) => {\n if (isNumber(selector)) {\n return selector * -1;\n }\n let isMovingToEnd = new RegExp(END, \"i\").test(to);\n let selectorIndex = selector ? [...queueItems].reverse().findIndex(({ char }) => {\n let parentElement = char.parentElement;\n let parentMatches = parentElement.matches(selector);\n if (isMovingToEnd && parentMatches) {\n return true;\n }\n return parentMatches && parentElement.firstChild.isSameNode(char);\n }) : -1;\n if (selectorIndex < 0) {\n selectorIndex = isMovingToEnd ? 0 : queueItems.length - 1;\n }\n let offset = isMovingToEnd ? 0 : 1;\n return selectorIndex - cursorPosition + offset;\n};\n\nconst destroyTimeouts = (timeouts) => {\n timeouts.forEach(clearTimeout);\n return [];\n};\n\nconst duplicate = (value, times) => new Array(times).fill(value);\n\nlet beforePaint = (cb) => {\n return new Promise((resolve) => {\n requestAnimationFrame(async () => {\n resolve(await cb());\n });\n });\n};\n\nlet getAnimationFromElement = (element) => {\n return element?.getAnimations().find((animation) => {\n return animation.id === element.dataset.tiAnimationId;\n });\n};\n\nlet setCursorAnimation = ({\n cursor,\n frames,\n options\n}) => {\n let animation = cursor.animate(frames, options);\n animation.pause();\n animation.id = cursor.dataset.tiAnimationId;\n beforePaint(() => {\n beforePaint(() => {\n animation.play();\n });\n });\n return animation;\n};\n\nlet rebuildCursorAnimation = ({\n cursor,\n options,\n cursorOptions\n}) => {\n if (!cursor || !cursorOptions) return;\n let animation = getAnimationFromElement(cursor);\n let oldCurrentTime;\n if (animation) {\n options.delay = animation.effect.getComputedTiming().delay;\n oldCurrentTime = animation.currentTime;\n animation.cancel();\n }\n let newAnimation = setCursorAnimation({\n cursor,\n frames: cursorOptions.animation.frames,\n options\n });\n if (oldCurrentTime) {\n newAnimation.currentTime = oldCurrentTime;\n }\n return newAnimation;\n};\n\nlet execute = (queueItem) => queueItem.func?.call(null);\nlet fireItem = async ({\n index,\n queueItems,\n wait,\n cursor,\n cursorOptions\n}) => {\n let queueItem = queueItems[index][1];\n let instantQueue = [];\n let tempIndex = index;\n let futureItem = queueItem;\n let shouldBeGrouped = () => futureItem && !futureItem.delay;\n let shouldPauseCursor = queueItem.shouldPauseCursor() && cursorOptions.autoPause;\n while (shouldBeGrouped()) {\n instantQueue.push(futureItem);\n shouldBeGrouped() && tempIndex++;\n futureItem = queueItems[tempIndex] ? queueItems[tempIndex][1] : null;\n }\n if (instantQueue.length) {\n await beforePaint(async () => {\n for (let q of instantQueue) {\n await execute(q);\n }\n });\n return tempIndex - 1;\n }\n let animation = getAnimationFromElement(cursor);\n let options;\n if (animation) {\n options = {\n ...animation.effect.getComputedTiming(),\n delay: shouldPauseCursor ? cursorOptions.autoPauseDelay : 0\n };\n }\n await wait(async () => {\n if (animation && shouldPauseCursor) {\n animation.cancel();\n }\n await beforePaint(() => {\n execute(queueItem);\n });\n }, queueItem.delay);\n await rebuildCursorAnimation({\n cursor,\n options,\n cursorOptions\n });\n return index;\n};\n\nconst fireWhenVisible = (element, func) => {\n let observer = new IntersectionObserver(\n (entries, observer2) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n func();\n observer2.unobserve(element);\n }\n });\n },\n { threshold: 1 }\n );\n observer.observe(element);\n};\n\nconst generateHash = () => Math.random().toString().substring(2, 9);\n\nconst isInput = (el) => {\n return \"value\" in el;\n};\n\nlet getAllChars = (element) => {\n if (isInput(element)) {\n return toArray(element.value);\n }\n return walkElementNodes(element, true).filter(\n (c) => !(c.childNodes.length > 0)\n );\n};\n\nlet handleFunctionalArg = (arg) => {\n return typeof arg === \"function\" ? arg() : arg;\n};\n\nlet select = (selector, element = document, all = false) => {\n return element[`querySelector${all ? \"All\" : \"\"}`](selector);\n};\n\nlet isBodyElement = (node) => /body/i.test(node?.tagName);\n\nlet insertIntoElement = (originalTarget, character) => {\n if (isInput(originalTarget)) {\n originalTarget.value = `${originalTarget.value}${character.textContent}`;\n return;\n }\n character.innerHTML = \"\";\n let target = isBodyElement(character.originalParent) ? originalTarget : (\n // If we add one-off fresh elements, there will be no\n // \"originalParent\", so always fall back to the default target.\n character.originalParent || originalTarget\n );\n let cursorNode = select(\".\" + CURSOR_CLASS, target) || null;\n if (cursorNode && cursorNode.parentElement !== target) {\n target = cursorNode.parentElement;\n }\n target.insertBefore(character, cursorNode);\n};\n\nconst isNonVoidElement = (el) => /<(.+)>(.*?)<\\/(.+)>/.test(el.outerHTML);\n\nconst merge = (originalObj, newObj) => Object.assign({}, originalObj, newObj);\n\nlet processCursorOptions = (cursorOptions) => {\n if (typeof cursorOptions === \"object\") {\n let newOptions = {};\n let { frames: defaultFrames, options: defaultOptions } = DEFAULT_OPTIONS.cursor.animation;\n newOptions.animation = cursorOptions.animation || {};\n newOptions.animation.frames = cursorOptions.animation?.frames || defaultFrames;\n newOptions.animation.options = merge(\n defaultOptions,\n cursorOptions.animation?.options || {}\n );\n newOptions.autoPause = cursorOptions.autoPause ?? DEFAULT_OPTIONS.cursor.autoPause;\n newOptions.autoPauseDelay = cursorOptions.autoPauseDelay || DEFAULT_OPTIONS.cursor.autoPauseDelay;\n return newOptions;\n }\n if (cursorOptions === true) {\n return DEFAULT_OPTIONS.cursor;\n }\n return cursorOptions;\n};\n\nconst removeNode = (node, rootElement) => {\n if (!node) return;\n let nodeParent = node.parentNode;\n let nodeToRemove = nodeParent.childNodes.length > 1 || nodeParent.isSameNode(rootElement) ? (\n // This parent still needs to exist.\n node\n ) : (\n // There's nothing else in there, so just delete the entire thing.\n // By doing this, we clean up markup as we go along.\n nodeParent\n );\n nodeToRemove.remove();\n};\n\nconst repositionCursor = (element, allChars, newCursorPosition) => {\n let nodeToInsertBefore = allChars[newCursorPosition - 1];\n let cursor = select(`.${CURSOR_CLASS}`, element);\n element = nodeToInsertBefore?.parentNode || element;\n element.insertBefore(cursor, nodeToInsertBefore || null);\n};\n\nfunction selectorToElement(thing) {\n return typeof thing === \"string\" ? select(thing) : thing;\n}\n\nlet cursorFontStyles = {\n \"font-family\": \"\",\n \"font-weight\": \"\",\n \"font-size\": \"\",\n \"font-style\": \"\",\n \"line-height\": \"\",\n color: \"\",\n transform: \"translateX(-.125em)\"\n};\nlet setCursorStyles = (id, element) => {\n let rootSelector = `[${DATA_ATTRIBUTE}='${id}']`;\n let cursorSelector = `${rootSelector} .${CURSOR_CLASS}`;\n let computedStyles = getComputedStyle(element);\n let customProperties = Object.entries(cursorFontStyles).reduce(\n (accumulator, [item, value]) => {\n return `${accumulator} ${item}: var(--ti-cursor-${item}, ${value || computedStyles[item]});`;\n },\n \"\"\n );\n appendStyleBlock(\n `${cursorSelector} { display: inline-block; width: 0; ${customProperties} }`,\n id\n );\n};\n\nfunction splitOnBreak(str) {\n return str.replace(/<!--(.+?)-->/g, \"\").trim().split(/<br(?:\\s*?)(?:\\/)?>/);\n}\n\nlet updateCursorPosition = (steps, cursorPosition, printedCharacters) => {\n return Math.min(\n Math.max(cursorPosition + steps, 0),\n printedCharacters.length\n );\n};\n\nlet wait = (callback, delay, timeouts) => {\n return new Promise((resolve) => {\n let cb = async () => {\n await callback();\n resolve();\n };\n timeouts.push(setTimeout(cb, delay || 0));\n });\n};\n\nclass TypeIt {\n element;\n timeouts;\n cursorPosition;\n predictedCursorPosition;\n statuses = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false,\n firing: false\n };\n opts;\n id;\n queue;\n cursor;\n flushCallback = null;\n unfreeze = () => {\n };\n constructor(element, options = {}) {\n this.opts = merge(DEFAULT_OPTIONS, options);\n this.element = selectorToElement(element);\n this.timeouts = [];\n this.cursorPosition = 0;\n this.unfreeze = () => {\n };\n this.predictedCursorPosition = null;\n this.statuses = merge({}, DEFAULT_STATUSES);\n this.id = generateHash();\n this.queue = Queue([{ delay: this.opts.startDelay }]);\n this.#buildOptions(options);\n this.cursor = this.#setUpCursor();\n this.element.dataset.typeitId = this.id;\n appendStyleBlock(PLACEHOLDER_CSS);\n if (this.opts.strings.length) {\n this.#generateQueue();\n }\n }\n /**\n * Can only be called once.\n */\n go() {\n if (this.statuses.started) {\n return this;\n }\n this.#attachCursor();\n if (!this.opts.waitUntilVisible) {\n this.#fire();\n return this;\n }\n fireWhenVisible(this.element, this.#fire.bind(this));\n return this;\n }\n destroy(shouldRemoveCursor = true) {\n this.timeouts = destroyTimeouts(this.timeouts);\n handleFunctionalArg(shouldRemoveCursor) && this.cursor && this.#removeNode(this.cursor);\n this.statuses.destroyed = true;\n }\n reset(rebuild) {\n !this.is(\"destroyed\") && this.destroy();\n if (rebuild) {\n this.queue.wipe();\n rebuild(this);\n } else {\n this.queue.reset();\n }\n this.cursorPosition = 0;\n for (let property in this.statuses) {\n this.statuses[property] = false;\n }\n this.element[this.#elementIsInput() ? \"value\" : \"innerHTML\"] = \"\";\n return this;\n }\n is = function(key) {\n return this.statuses[key];\n };\n type(string, actionOpts = {}) {\n string = handleFunctionalArg(string);\n let { instant } = actionOpts;\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let chars = maybeChunkStringAsHtml(string, this.opts.html);\n let charsAsQueueItems = chars.map((char) => {\n return {\n func: () => this.#type(char),\n char,\n delay: instant || isNonVoidElement(char) ? 0 : this.#getPace(),\n typeable: char.nodeType === Node.TEXT_NODE\n };\n });\n let itemsToQueue = [\n bookEndQueueItems[0],\n { func: async () => await this.opts.beforeString(string, this) },\n ...charsAsQueueItems,\n { func: async () => await this.opts.afterString(string, this) },\n bookEndQueueItems[1]\n ];\n return this.#queueAndReturn(itemsToQueue, actionOpts);\n }\n break(actionOpts = {}) {\n return this.#queueAndReturn(\n {\n func: () => this.#type(createElement(\"BR\")),\n typeable: true\n },\n actionOpts\n );\n }\n move(movementArg, actionOpts = {}) {\n movementArg = handleFunctionalArg(movementArg);\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let { instant, to } = actionOpts;\n let numberOfSteps = countStepsToSelector({\n queueItems: this.queue.getTypeable(),\n selector: movementArg === null ? \"\" : movementArg,\n to,\n cursorPosition: this.#derivedCursorPosition\n });\n let directionalStep = numberOfSteps < 0 ? -1 : 1;\n this.predictedCursorPosition = this.#derivedCursorPosition + numberOfSteps;\n return this.#queueAndReturn(\n [\n bookEndQueueItems[0],\n ...duplicate(\n {\n func: () => this.#move(directionalStep),\n delay: instant ? 0 : this.#getPace(),\n cursorable: true\n },\n Math.abs(numberOfSteps)\n ),\n bookEndQueueItems[1]\n ],\n actionOpts\n );\n }\n exec(func, actionOpts = {}) {\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n return this.#queueAndReturn(\n [bookEndQueueItems[0], { func: () => func(this) }, bookEndQueueItems[1]],\n actionOpts\n );\n }\n options(opts, actionOpts = {}) {\n opts = handleFunctionalArg(opts);\n this.#updateOptions(opts);\n return this.#queueAndReturn({}, actionOpts);\n }\n pause(milliseconds, actionOpts = {}) {\n return this.#queueAndReturn(\n { delay: handleFunctionalArg(milliseconds) },\n actionOpts\n );\n }\n delete(numCharacters = null, actionOpts = {}) {\n numCharacters = handleFunctionalArg(numCharacters);\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let num = numCharacters;\n let { instant, to } = actionOpts;\n let typeableQueueItems = this.queue.getTypeable();\n let rounds = (() => {\n if (num === null) {\n return typeableQueueItems.length;\n }\n if (isNumber(num)) {\n return num;\n }\n return countStepsToSelector({\n queueItems: typeableQueueItems,\n selector: num,\n cursorPosition: this.#derivedCursorPosition,\n to\n });\n })();\n return this.#queueAndReturn(\n [\n bookEndQueueItems[0],\n ...duplicate(\n {\n func: this.#delete.bind(this),\n delay: instant ? 0 : this.#getPace(1),\n deletable: true\n },\n rounds\n ),\n bookEndQueueItems[1]\n ],\n actionOpts\n );\n }\n freeze() {\n this.statuses.frozen = true;\n }\n /**\n * Like `.go()`, but more... \"off the grid.\"\n *\n * - won't trigger `afterComplete` callback\n * - items won't be replayed after `.reset()`\n *\n * When called, all non-done items will be \"flushed\" --\n * that is, executed, but not remembered.\n */\n flush(cb = null) {\n this.flushCallback = cb || this.flushCallback;\n if (this.statuses.firing) {\n return this;\n }\n this.#attachCursor();\n this.#fire(false).then(() => {\n if (this.queue.getPendingQueueItems().length > 0) {\n return this.flush();\n }\n this.flushCallback();\n this.flushCallback = null;\n });\n return this;\n }\n getQueue() {\n return this.queue;\n }\n getOptions() {\n return this.opts;\n }\n updateOptions(options) {\n return this.#updateOptions(options);\n }\n getElement() {\n return this.element;\n }\n empty(actionOpts = {}) {\n return this.#queueAndReturn({ func: this.#empty.bind(this) }, actionOpts);\n }\n async #empty() {\n if (this.#elementIsInput()) {\n this.element.value = \"\";\n return;\n }\n this.#allChars.forEach(this.#removeNode.bind(this));\n return;\n }\n /**\n * Execute items in the queue.\n *\n * @param remember If false, each queue item will be destroyed once executed.\n * @returns\n */\n async #fire(remember = true) {\n this.statuses.started = true;\n this.statuses.firing = true;\n let cleanUp = (qKey) => {\n this.queue.done(qKey, !remember);\n };\n try {\n let queueItems = [...this.queue.getQueue()];\n for (let index = 0; index < queueItems.length; index++) {\n let [queueKey, queueItem] = queueItems[index];\n if (queueItem.done) continue;\n if (!queueItem.deletable || queueItem.deletable && this.#allChars.length) {\n let newIndex = await this.#fireItemWithContext(index, queueItems);\n cleanUpSkipped({\n index,\n newIndex,\n queueItems,\n cleanUp\n });\n index = newIndex;\n }\n cleanUp(queueKey);\n }\n if (!remember) {\n this.statuses.firing = false;\n return this;\n }\n this.statuses.completed = true;\n this.statuses.firing = false;\n await this.opts.afterComplete(this);\n if (!this.opts.loop) {\n throw \"\";\n }\n let delay = this.opts.loopDelay;\n this.#wait(async () => {\n await this.#prepLoop(delay[0]);\n this.#fire();\n }, delay[1]);\n } catch (e) {\n }\n this.statuses.firing = false;\n return this;\n }\n async #move(step) {\n this.cursorPosition = updateCursorPosition(\n step,\n this.cursorPosition,\n this.#allChars\n );\n repositionCursor(this.element, this.#allChars, this.cursorPosition);\n }\n /**\n * 1. Reset queue.\n * 2. Reset initial pause.\n */\n async #prepLoop(delay) {\n let derivedCursorPosition = this.#derivedCursorPosition;\n derivedCursorPosition && await this.#move({ value: derivedCursorPosition });\n let queueItems = this.#allChars.map((c) => {\n return [\n Symbol(),\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1),\n deletable: true,\n shouldPauseCursor: () => true\n }\n ];\n });\n for (let index = 0; index < queueItems.length; index++) {\n await this.#fireItemWithContext(index, queueItems);\n }\n this.queue.reset();\n this.queue.set(0, { delay });\n }\n #fireItemWithContext(index, queueItems) {\n return fireItem({\n index,\n queueItems,\n wait: this.#wait.bind(this),\n cursor: this.cursor,\n cursorOptions: this.opts.cursor\n });\n }\n async #wait(callback, delay, silent = false) {\n if (this.statuses.frozen) {\n await new Promise((resolve) => {\n this.unfreeze = () => {\n this.statuses.frozen = false;\n resolve();\n };\n });\n }\n silent || await this.opts.beforeStep(this);\n await wait(callback, delay, this.timeouts);\n silent || await this.opts.afterStep(this);\n }\n /**\n * Attach it to the DOM so, along with the required CSS transition.\n */\n async #attachCursor() {\n !this.#elementIsInput() && this.cursor && this.element.appendChild(this.cursor);\n if (this.#shouldRenderCursor) {\n setCursorStyles(this.id, this.element);\n this.cursor.dataset.tiAnimationId = this.id;\n let { animation } = this.opts.cursor;\n let { frames, options } = animation;\n setCursorAnimation({\n frames,\n cursor: this.cursor,\n options: {\n duration: this.opts.cursorSpeed,\n ...options\n }\n });\n }\n }\n #elementIsInput() {\n return isInput(this.element);\n }\n #queueAndReturn(steps, opts) {\n this.queue.add(steps);\n this.#maybeAppendPause(opts);\n return this;\n }\n #maybeAppendPause(opts = {}) {\n let delay = opts.delay;\n delay && this.queue.add({ delay });\n }\n #generateTemporaryOptionQueueItems(newOptions = {}) {\n return [\n { func: () => this.#updateOptions(newOptions) },\n { func: () => this.#updateOptions(this.opts) }\n ];\n }\n async #updateOptions(opts) {\n this.opts = merge(this.opts, opts);\n }\n /**\n * Based on provided strings, generate a TypeIt queue\n * to be fired for each character in the string.\n */\n #generateQueue() {\n let strings = this.opts.strings.filter((string) => !!string);\n strings.forEach((string, index) => {\n this.type(string);\n if (index + 1 === strings.length) {\n return;\n }\n let splitItems = this.opts.breakLines ? [{ func: () => this.#type(createElement(\"BR\")), typeable: true }] : duplicate(\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1)\n },\n this.queue.getTypeable().length\n );\n this.#addSplitPause(splitItems);\n });\n }\n #buildOptions = (options) => {\n this.opts.cursor = processCursorOptions(\n options.cursor ?? DEFAULT_OPTIONS.cursor\n );\n this.opts.strings = this.#prependHardcodedStrings(\n asArray(this.opts.strings)\n );\n this.opts = merge(this.opts, {\n html: !this.#isInput && this.opts.html,\n nextStringDelay: calculateDelay(this.opts.nextStringDelay),\n loopDelay: calculateDelay(this.opts.loopDelay)\n });\n };\n #prependHardcodedStrings(strings) {\n let existingMarkup = this.element.innerHTML;\n if (!existingMarkup) {\n return strings;\n }\n this.element.innerHTML = \"\";\n if (this.opts.startDelete) {\n this.element.innerHTML = existingMarkup;\n expandTextNodes(this.element);\n this.#addSplitPause(\n duplicate(\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1),\n deletable: true\n },\n this.#allChars.length\n )\n );\n return strings;\n }\n return splitOnBreak(existingMarkup).concat(strings);\n }\n /**\n * Provided it's a non-form element and the options is provided,\n * set up the cursor element for the animation.\n */\n #setUpCursor() {\n if (this.#isInput) {\n return null;\n }\n let cursor = createElement(\"span\");\n cursor.className = CURSOR_CLASS;\n if (!this.#shouldRenderCursor) {\n cursor.style.visibility = \"hidden\";\n return cursor;\n }\n cursor.innerHTML = getParsedBody(this.opts.cursorChar).innerHTML;\n return cursor;\n }\n #addSplitPause(items) {\n let delay = this.opts.nextStringDelay;\n this.queue.add([{ delay: delay[0] }, ...items, { delay: delay[1] }]);\n }\n #type(char) {\n insertIntoElement(this.element, char);\n }\n #delete() {\n if (!this.#allChars.length) return;\n if (this.#isInput) {\n this.element.value = this.element.value.slice(0, -1);\n } else {\n this.#removeNode(this.#allChars[this.cursorPosition]);\n }\n }\n #removeNode(node) {\n removeNode(node, this.element);\n }\n #getPace(index = 0) {\n return calculatePace(this.opts)[index];\n }\n get #derivedCursorPosition() {\n return this.predictedCursorPosition ?? this.cursorPosition;\n }\n get #isInput() {\n return isInput(this.element);\n }\n get #shouldRenderCursor() {\n return !!this.opts.cursor && !this.#isInput;\n }\n get #allChars() {\n return getAllChars(this.element);\n }\n}\n\nexport { TypeIt as default };\n","import { consume } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { delayContext } from '@schmancy/delay'\nimport hashContent from '@schmancy/utils/hashContent'\nimport { intersection$ } from '@schmancy/utils/intersection'\nimport { css, html, TemplateResult } from 'lit'\nimport { customElement, property, query, queryAssignedElements, queryAssignedNodes } from 'lit/decorators.js'\nimport TypeIt, { Options as TypeItOptions } from 'typeit'\n\n@customElement('schmancy-typewriter')\nexport class TypewriterElement extends $LitElement(css`\n\t:host {\n\t\tdisplay: inherit;\n\t}\n\n\t#typewriter {\n\t\t--ti-cursor-display: initial;\n\t}\n\n\t#typewriter .ti-cursor {\n\t\tdisplay: var(--ti-cursor-display);\n\t}\n`) {\n\t/**\n\t * Typing speed in milliseconds per character.\n\t */\n\t@property({ type: Number })\n\tspeed: number = 50\n\n\t/**\n\t * Delay before typing starts (ms).\n\t */\n\t@consume({ context: delayContext, subscribe: true })\n\t@property({ type: Number })\n\tdelay: number = 0\n\n\t/**\n\t * Automatically start typing on initialization.\n\t */\n\t@property({ type: Boolean })\n\tautoStart: boolean = true\n\n\t/**\n\t * The cursor character.\n\t */\n\t@property({ type: String })\n\tcursorChar: string = ''\n\n\t/**\n\t * Typing speed for deletions (ms per character).\n\t */\n\t@property({ type: Number })\n\tdeleteSpeed: number = 25\n\n\t@property({ type: Boolean }) once = true\n\t/**\n\t * TypeIt instance.\n\t */\n\tprivate typeItInstance: TypeIt | null = null\n\n\t/**\n\t * Reference to the typewriter container.\n\t */\n\t@query('#typewriter')\n\tprivate typewriterContainer!: HTMLElement\n\n\t@queryAssignedNodes({\n\t\tflatten: true,\n\t})\n\tprivate _getSlottedNodes!: Node[]\n\n\t@queryAssignedElements({\n\t\tflatten: true,\n\t})\n\tprivate _getSlottedElements!: HTMLElement[]\n\t/**\n\t * Lifecycle method called when the component is disconnected from the DOM.\n\t * Ensures that TypeIt instances are properly cleaned up.\n\t */\n\n\tprivate sessionKey = ''\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._destroyTypeIt()\n\t}\n\n\t/**\n\t * Initializes the TypeIt instance with the provided slotted content.\n\t */\n\tprivate _startTyping() {\n\t\t// Destroy any existing TypeIt instance\n\t\tthis._destroyTypeIt()\n\n\t\tthis.sessionKey = this.generateSessionKey()\n\n\t\tif (this.once && sessionStorage.getItem(this.sessionKey) === 'true') {\n\t\t\t// Skip delay and render immediately if once is set and already rendered\n\t\t\tthis.shadowRoot?.querySelector('slot')?.removeAttribute('hidden')\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.typewriterContainer) {\n\t\t\tconsole.warn('Typewriter container not found.')\n\t\t\treturn\n\t\t}\n\n\t\t// Configure TypeIt options\n\t\tconst typeItOptions: TypeItOptions = {\n\t\t\tspeed: this.speed,\n\t\t\tstartDelay: this.delay,\n\t\t\tcursor: !!this.cursorChar,\n\t\t\tcursorChar: this.cursorChar,\n\t\t\tdeleteSpeed: this.deleteSpeed,\n\t\t\tafterComplete: () => {\n\t\t\t\tif (this.once) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsessionStorage.setItem(this.sessionKey, 'true')\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('Error saving to session storage:', error)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Dispatch the custom event\n\t\t\t\tthis.dispatchEvent(new CustomEvent('typeit-complete', { bubbles: true, composed: true }))\n\n\t\t\t\t// Hide the cursor\n\t\t\t\tthis.typewriterContainer.style.setProperty('--ti-cursor-display', 'none')\n\t\t\t},\n\t\t}\n\n\t\t// Initialize TypeIt\n\t\tthis.typeItInstance = new TypeIt(this.typewriterContainer, typeItOptions)\n\n\t\t// Process slotted content as actions\n\t\tconst slottedNodes = this._getSlottedNodes\n\t\tslottedNodes.forEach(node => {\n\t\t\tif (node.nodeType === Node.TEXT_NODE) {\n\t\t\t\t// Handle plain text\n\t\t\t\tthis.typeItInstance?.type(node.textContent || '')\n\t\t\t} else if (node instanceof HTMLElement) {\n\t\t\t\t// Handle custom element\n\t\t\t\tthis._processCustomElement(node)\n\t\t\t}\n\t\t})\n\n\t\t// Start the typing animation if autoStart is enabled\n\t\t// use rxjs to detect once we are in the view port\n\t\tintersection$(this.shadowRoot?.host as Element).subscribe(() => {\n\t\t\t// alert('in view')\n\t\t\tthis.typeItInstance?.go()\n\t\t})\n\t\t// Start the typing animation if autoStart is enabled\n\t}\n\n\tprivate generateSessionKey(): string {\n\t\tconst slotContent = this._getSlottedElements.map(el => el.outerHTML).join('')\n\t\treturn this.once ? hashContent(slotContent) : ''\n\t}\n\t/**\n\t * Destroys the current TypeIt instance if it exists.\n\t */\n\tprivate _destroyTypeIt() {\n\t\tif (this.typeItInstance) {\n\t\t\ttry {\n\t\t\t\tthis.typeItInstance.destroy()\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error destroying TypeIt instance:', error)\n\t\t\t}\n\t\t\tthis.typeItInstance = null\n\t\t}\n\t}\n\n\t/**\n\t * Processes a custom element for its typing behavior.\n\t */\n\tprivate _processCustomElement(element: HTMLElement) {\n\t\tconst action = element.getAttribute('action')\n\t\tconst value = element.getAttribute('value')\n\t\tswitch (action) {\n\t\t\tcase 'pause':\n\t\t\t\tthis.typeItInstance?.pause(parseInt(value || '0', 10))\n\t\t\t\tbreak\n\t\t\tcase 'delete':\n\t\t\t\tthis.typeItInstance?.delete(parseInt(value || '0', 10))\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (element.tagName === 'P') {\n\t\t\t\t\tthis.typeItInstance.break()\n\t\t\t\t}\n\t\t\t\t// Treat as text if no action is defined\n\t\t\t\tthis.typeItInstance?.type(element.textContent || '')\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Renders the component's HTML.\n\t */\n\trender(): TemplateResult {\n\t\treturn html`<div id=\"typewriter\" aria-live=\"polite\"></div>\n\n\t\t\t<div class=\"typewriter\">\n\t\t\t\t<slot\n\t\t\t\t\thidden\n\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\tthis._startTyping()\n\t\t\t\t\t}}\n\t\t\t\t></slot>\n\t\t\t</div> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-typewriter': TypewriterElement\n\t}\n}\n"],"names":["isArray","thing","Array","asArray","value","DATA_ATTRIBUTE","CURSOR_CLASS","DEFAULT_STATUSES","started","completed","frozen","destroyed","DEFAULT_OPTIONS","breakLines","cursor","autoPause","autoPauseDelay","animation","frames","map","n","opacity","options","iterations","Infinity","easing","fill","cursorChar","cursorSpeed","deleteSpeed","html","lifeLike","loop","loopDelay","nextStringDelay","speed","startDelay","startDelete","strings","waitUntilVisible","beforeString","afterString","beforeStep","afterStep","afterComplete","PLACEHOLDER_CSS","createElement","el","document","createTextNode","content","appendStyleBlock","styles","id","styleBlock","appendChild","head","calculateDelay","delayArg","randomInRange","range","Math","abs","random","val","toArray","from","expandTextNodes","element","childNodes","forEach","child","nodeValue","c","parentNode","insertBefore","remove","getParsedBody","doc","implementation","createHTMLDocument","body","innerHTML","walkElementNodes","shouldReverse","shouldIncludeCursor","nextNode","querySelector","walker","createTreeWalker","NodeFilter","SHOW_ALL","acceptNode","node","classList","contains","FILTER_ACCEPT","FILTER_REJECT","nodes","originalParent","push","reverse","maybeChunkStringAsHtml","str","asHtml","cleanUpSkipped","index","newIndex","queueItems","cleanUp","i","isNumber","Number","isInteger","countStepsToSelector","selector","cursorPosition","to","isMovingToEnd","RegExp","test","selectorIndex","findIndex","char","t","parentElement","parentMatches","matches","firstChild","isSameNode","length","duplicate","times","beforePaint","cb","Promise","resolve","requestAnimationFrame","async","getAnimationFromElement","getAnimations","find","dataset","tiAnimationId","setCursorAnimation","animate","pause","play","execute","queueItem","func","call","fireItem","wait","cursorOptions","instantQueue","tempIndex","futureItem","shouldBeGrouped","delay","shouldPauseCursor","q","effect","getComputedTiming","cancel","oldCurrentTime","currentTime","newAnimation","e","isInput","handleFunctionalArg","arg","select","all","merge","originalObj","newObj","Object","assign","cursorFontStyles","color","transform","TypeIt","timeouts","predictedCursorPosition","statuses","firing","opts","queue","flushCallback","unfreeze","this","toString","substring","initialItems","add","steps","step","_q","set","Symbol","innerText","buildQueueItem","Boolean","typeable","cursorable","deletable","getQueue","rawValues","values","Map","item","keys","wipe","done","key","shouldDestroy","delete","get","reset","destroy","getItems","filter","getTypeable","getPendingQueueItems","pending","buildOptions","setUpCursor","typeitId","attachCursor","bind","IntersectionObserver","entries","observer2","entry","isIntersecting","unobserve","threshold","observe","shouldRemoveCursor","clearTimeout","removeNode","rebuild","is","property","elementIsInput","string","actionOpts","instant","bookEndQueueItems","generateTemporaryOptionQueueItems","charsAsQueueItems","type","outerHTML","nodeType","Node","TEXT_NODE","itemsToQueue","queueAndReturn","movementArg","numberOfSteps","directionalStep","move","milliseconds","numCharacters","num","typeableQueueItems","rounds","derivedCursorPosition","h","then","flush","empty","#y","#r","remember","qKey","queueKey","prepLoop","fire","printedCharacters","allChars","min","max","newCursorPosition","nodeToInsertBefore","#g","fireItemWithContext","#w","callback","silent","setTimeout","shouldRenderCursor","cursorSelector","computedStyles","getComputedStyle","customProperties","reduce","accumulator","duration","#n","#u","maybeAppendPause","#S","#o","newOptions","updateOptions","#i","generateQueue","splitItems","defaultFrames","defaultOptions","prependHardcodedStrings","#C","existingMarkup","addSplitPause","replace","trim","split","concat","#e","className","style","visibility","#I","items","#a","originalTarget","character","textContent","target","tagName","cursorNode","#f","slice","#h","rootElement","nodeParent","#l","#v","TypewriterElement","$LitElement","css","constructor","super","arguments","autoStart","once","typeItInstance","sessionKey","disconnectedCallback","_destroyTypeIt","_startTyping","generateSessionKey","sessionStorage","getItem","shadowRoot","removeAttribute","typewriterContainer","typeItOptions","setItem","dispatchEvent","CustomEvent","bubbles","composed","setProperty","_getSlottedNodes","HTMLElement","_processCustomElement","intersection$","host","subscribe","go","slotContent","_getSlottedElements","join","hashContent","action","getAttribute","parseInt","break","__decorateClass","prototype","consume","context","delayContext","String","query","queryAssignedNodes","flatten","queryAssignedElements","customElement"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./typewriter-D_bqiukY.cjs");Object.defineProperty(exports,"TypewriterElement",{enumerable:!0,get:()=>e.TypewriterElement});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./typewriter-CQWBe0l-.cjs");Object.defineProperty(exports,"TypewriterElement",{enumerable:!0,get:()=>e.TypewriterElement});
2
2
  //# sourceMappingURL=typewriter.cjs.map
@@ -1,4 +1,4 @@
1
- import { T as t } from "./typewriter-BiBJSC2J.js";
1
+ import { T as t } from "./typewriter-DNyZpGkL.js";
2
2
  export {
3
3
  t as TypewriterElement
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mhmo91/schmancy",
3
- "version": "0.4.10",
3
+ "version": "0.4.11",
4
4
  "description": "UI library build with web components",
5
5
  "main": "./dist/index.js",
6
6
  "packageManager": "yarn@4.9.2",
@@ -1,122 +0,0 @@
1
- "use strict";const d=require("lit"),i=require("lit/decorators.js"),p=require("lit/directives/if-defined.js"),v=require("lit/directives/ref.js"),b=require("lit/directives/when.js"),n=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const g=require("./tailwind.mixin-xwSbeHSt.cjs"),m=require("./ripple-C2BHbhcS.cjs"),c=require("./theme.interface-Xg5Zi46a.cjs"),E=":host{border:unset!important;line-height:unset!important;background:unset!important;padding:unset!important;font-size:unset!important;box-shadow:unset!important;width:-webkit-fill-available}:host:focus{box-shadow:unset!important}input:focus-visible{outline:none!important}input{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;text-decoration:inherit;text-indent:inherit;text-shadow:inherit;text-overflow:inherit;text-rendering:inherit;text-size-adjust:inherit;text-align-last:inherit}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}@keyframes onAutoFillStart{}input:-webkit-autofill{animation-name:onAutoFillStart}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px var(--schmancy-sys-color-surface-highest) inset!important;-webkit-text-fill-color:var(--schmancy-sys-color-surface-on)!important;transition:background-color 5000s ease-in-out 0s}@-moz-document url-prefix(){input:-moz-autofill,input:-moz-autofill:focus{background-color:var(--schmancy-sys-color-surface-highest)!important;color:var(--schmancy-sys-color-surface-on)!important}}input:autofill,input:autofill:hover,input:autofill:focus,input:autofill:active{background-color:var(--schmancy-sys-color-surface-highest)!important;color:var(--schmancy-sys-color-surface-on)!important}";var x=Object.defineProperty,$=Object.getOwnPropertyDescriptor,o=(t,e,a,u)=>{for(var y,h=u>1?void 0:u?$(e,a):e,f=t.length-1;f>=0;f--)(y=t[f])&&(h=(u?y(e,a,h):y(h))||h);return u&&h&&x(e,a,h),h};let s=class extends g.TailwindElement(E){constructor(){if(super(),this.id="",this.label="",this.type="text",this.name=`name_${Date.now()}`,this.placeholder="",this.value="",this.required=!1,this.disabled=!1,this.readonly=!1,this.clickable=!1,this.spellcheck=!1,this.align="left",this.autofocus=!1,this.autocomplete="on",this.tabIndex=0,this.error=!1,this.size="md",this.validateOn="touched",this.validationMessage="",this.inputRef=v.createRef(),this.isAutofilled=!1,this.touched=!1,this.dirty=!1,this.submitted=!1,this.defaultValue="","attachInternals"in this)try{this.internals=this.attachInternals()}catch{this.internals=void 0}}willUpdate(t){this.id||(this.id="sch-input-"+s._idCounter++),super.willUpdate(t)}get form(){return this.internals?.form??null}updated(t){super.updated(t),t.has("value")&&(this.value!==this.defaultValue&&(this.dirty=!0),this.internals?.setFormValue(this.value),this.validateInput()),t.has("error")&&this.updateValidityState(),!this.hasUpdated&&t.has("value")&&(this.defaultValue=this.value)}connectedCallback(){super.connectedCallback(),this.defaultValue=this.value,this.setupFormIntegration(),this.setupExternalLabelAssociation()}setupFormIntegration(){this.internals?.form&&(this.formResetObserver=new MutationObserver(t=>{for(const e of t)e.type==="attributes"&&e.attributeName==="reset"&&this.resetToDefault()}),this.formResetObserver.observe(this.internals.form,{attributes:!0,childList:!1,subtree:!1}),this.internals.form.addEventListener("reset",()=>{this.resetToDefault()}),this.internals.form.addEventListener("submit",()=>{this.submitted=!0,this.validateInput(!0)}))}setupExternalLabelAssociation(){if(this.id){const t=()=>{document.querySelectorAll(`label[for="${this.id}"]`).forEach(e=>{e.addEventListener("click",()=>{this.focus()})})};document.readyState==="complete"?t():document.addEventListener("DOMContentLoaded",t)}}disconnectedCallback(){super.disconnectedCallback(),this.formResetObserver&&this.formResetObserver.disconnect(),this.id&&document.querySelectorAll(`label[for="${this.id}"]`).forEach(t=>{t.removeEventListener("click",()=>{this.focus()})})}resetToDefault(){this.value=this.defaultValue,this.touched=!1,this.dirty=!1,this.submitted=!1,this.error=!1,this.validationMessage="",this.dispatchEvent(new CustomEvent("reset",{bubbles:!0}))}shouldShowValidation(t=!1){if(t)return!0;switch(this.validateOn){case"always":return!0;case"touched":default:return this.touched;case"dirty":return this.dirty;case"submitted":return this.submitted}}updateValidityState(){this.error?this.validationMessage?this.internals?.setValidity({customError:!0},this.validationMessage,this.inputElement):this.internals?.setValidity({customError:!0},"Invalid input",this.inputElement):this.internals?.setValidity({})}validateInput(t=!1){if(this.disabled)return;const e=this.shouldShowValidation(t),a=this.inputElement?.validity??{customError:!1,valid:!0},u=!a.valid&&!a.customError;e&&u?(this.error=!0,this.validationMessage=this.inputElement?.validationMessage||""):a.valid?(this.error=!1,a.customError||(this.validationMessage="")):e||(this.error=!1),this.updateValidityState()}checkValidity(){const t=this.inputRef.value?.checkValidity()??!0;return this.internals&&!t?(this.internals.checkValidity(),!1):t}reportValidity(){this.touched=!0,this.submitted=!0;const t=this.inputRef.value?.reportValidity()??!0;return this.validateInput(!0),this.internals&&!t?(this.internals.reportValidity(),!1):t}setCustomValidity(t){this.inputRef.value&&this.inputRef.value.setCustomValidity(t),this.validationMessage=t,this.error=t!==""&&this.shouldShowValidation(),this.internals&&(t?this.internals.setValidity({customError:!0},t,this.inputElement):this.internals.setValidity({}))}firstUpdated(){this.autofocus&&setTimeout(()=>{this.focus()},0),this.setupInputEvents(),this.setupFocusBlurEvents(),this.setupAutofillDetection(),this.setupEnterKeyEvents()}setupInputEvents(){n.fromEvent(this.inputElement,"input").pipe(n.map(t=>{const e=t;return{value:t.target.value,inputType:e.inputType,data:e.data,isComposing:e.isComposing,originalEvent:t}}),n.takeUntil(this.disconnecting)).subscribe(t=>{this.value=t.value,this.dirty=this.value!==this.defaultValue;const e=new CustomEvent("input",{detail:{value:t.value},bubbles:!0,composed:!0});Object.defineProperties(e,{inputType:{value:t.inputType},data:{value:t.data},isComposing:{value:t.isComposing}}),this.dispatchEvent(e),this.validateInput()}),n.fromEvent(this.inputElement,"change").pipe(n.map(t=>t.target.value),n.distinctUntilChanged(),n.takeUntil(this.disconnecting)).subscribe(t=>{this.value=t,this.dirty=this.value!==this.defaultValue,this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0,composed:!0})),this.validateInput()})}setupFocusBlurEvents(){n.fromEvent(this.inputElement,"focus").pipe(n.takeUntil(this.disconnecting)).subscribe(t=>{const e=new CustomEvent("focus",{bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed});Object.defineProperties(e,{relatedTarget:{value:t.relatedTarget}}),this.dispatchEvent(e)}),n.fromEvent(this.inputElement,"blur").pipe(n.takeUntil(this.disconnecting)).subscribe(t=>{this.touched=!0,this.disabled||this.validateInput();const e=new CustomEvent("blur",{bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed});Object.defineProperties(e,{relatedTarget:{value:t.relatedTarget}}),this.dispatchEvent(e)})}setupAutofillDetection(){n.fromEvent(this.inputElement,"animationstart").pipe(n.filter(t=>t.animationName==="onAutoFillStart"),n.takeUntil(this.disconnecting)).subscribe(t=>{const{value:e}=t.target;this.value=e,this.isAutofilled=!0,this.dirty=this.value!==this.defaultValue,this.dispatchEvent(new CustomEvent("autofill",{detail:{value:e},bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:{value:e},bubbles:!0,composed:!0}))}),n.fromEvent(this.inputElement,"animationstart").pipe(n.filter(t=>t.animationName==="onAutoFillCancel"),n.takeUntil(this.disconnecting)).subscribe(()=>{this.isAutofilled=!1})}setupEnterKeyEvents(){n.fromEvent(this.inputElement,"keyup").pipe(n.filter(t=>t.key==="Enter"),n.takeUntil(this.disconnecting)).subscribe(t=>{const{value:e}=t.target;this.value=e,this.dirty=this.value!==this.defaultValue;const a=new CustomEvent("enter",{detail:{value:e},bubbles:!0,composed:!0});Object.defineProperties(a,{key:{value:"Enter"},code:{value:"Enter"},keyCode:{value:13},which:{value:13}}),this.dispatchEvent(a)})}select(){return this.inputRef.value?.select()}getValidity(){return this.inputRef.value?.validity}setSelectionRange(t,e,a){this.inputRef.value?.setSelectionRange(t,e,a)}get selectionStart(){return this.inputRef.value?.selectionStart??null}get selectionEnd(){return this.inputRef.value?.selectionEnd??null}get selectionDirection(){return this.inputRef.value?.selectionDirection??null}setRangeText(t,e,a,u){e!==void 0&&a!==void 0?this.inputRef.value?.setRangeText(t,e,a,u):this.inputRef.value?.setRangeText(t)}focus(t){this.inputRef.value?.focus(t),this.dispatchEvent(new Event("focus"))}click(){this.inputRef.value?.click(),this.dispatchEvent(new Event("click"))}blur(){this.inputRef.value?.blur(),this.dispatchEvent(new Event("blur"))}render(){const{height:t,padding:e,fontSize:a}=(()=>{switch(this.size){case"sm":return{height:"40px",padding:"0 8px",fontSize:"0.875rem"};case"lg":return{height:"60px",padding:"0 20px",fontSize:"1.125rem"};default:return{height:"50px",padding:"0 16px",fontSize:"1rem"}}})(),u={"w-full flex-1 rounded-[8px] border-0 bg-surface-highest text-surface-on":!0,"outline-secondary-default focus:outline-1 ":!0,"outline-secondary-default focus:outline-1":!0,"disabled:opacity-40 disabled:cursor-not-allowed":!0,"placeholder:text-muted":!0,"ring-0 ring-inset focus:ring-1 focus:ring-inset":!0,"ring-secondary-default ring-outline focus:ring-secondary-default":!this.error,"ring-error-default focus:ring-error-default":this.error,"caret-transparent focus:outline-hidden cursor-pointer text-select-none":this.readonly,"cursor-pointer":this.clickable,"text-center":this.align==="center","text-right":this.align==="right",autofilled:this.isAutofilled},y={"opacity-40":this.disabled,"block mb-[4px]":!0,"text-sm":this.size==="sm","text-base":this.size==="md","text-lg":this.size==="lg"},h={height:t,padding:e,fontSize:a};return d.html`
2
- ${b.when(this.label,()=>d.html`
3
- <label
4
- for=${this.id}
5
- id="label-${this.id}"
6
- class=${this.classMap(y)}
7
- ${m.color({color:this.error?c.SchmancyTheme.sys.color.error.default:c.SchmancyTheme.sys.color.primary.default})}
8
- >
9
- <schmancy-typography type="label" token=${this.size==="sm"?"sm":this.size==="lg"?"lg":"md"}>
10
- ${this.label}
11
- </schmancy-typography>
12
- </label>
13
- `)}
14
-
15
- <input
16
- ${m.color({bgColor:c.SchmancyTheme.sys.color.surface.highest,color:c.SchmancyTheme.sys.color.surface.on})}
17
- ${v.ref(this.inputRef)}
18
- id=${this.id}
19
- name=${this.name}
20
- class=${this.classMap(u)}
21
- style=${this.styleMap(h)}
22
- .value=${this.value}
23
- .type=${this.type}
24
- .autocomplete=${this.autocomplete}
25
- .spellcheck=${this.spellcheck}
26
- placeholder=${this.placeholder}
27
- inputmode=${p.ifDefined(this.inputmode)}
28
- pattern=${p.ifDefined(this.pattern)}
29
- step=${p.ifDefined(this.step)}
30
- minlength=${p.ifDefined(this.minlength)}
31
- maxlength=${p.ifDefined(this.maxlength)}
32
- min=${p.ifDefined(this.min)}
33
- max=${p.ifDefined(this.max)}
34
- list=${p.ifDefined(this.list)}
35
- ?required=${this.required}
36
- ?disabled=${this.disabled}
37
- ?readonly=${this.readonly}
38
- aria-invalid=${this.error?"true":"false"}
39
- aria-required=${this.required?"true":"false"}
40
- aria-labelledby=${this.label?`label-${this.id}`:d.nothing}
41
- aria-describedby=${this.hint?`hint-${this.id}`:d.nothing}
42
- aria-label=${p.ifDefined(this.label?void 0:this.placeholder||"Input")}
43
- aria-autocomplete=${this.list?"list":"none"}
44
- />
45
-
46
- ${b.when(this.hint,()=>d.html`
47
- <div
48
- id="hint-${this.id}"
49
- class="${this.size==="sm"?"pt-[1px] text-xs":this.size==="lg"?"pt-[3px] text-base":"pt-[2px] text-sm"}"
50
- ${m.color({color:this.error?c.SchmancyTheme.sys.color.error.default:c.SchmancyTheme.sys.color.primary.default})}
51
- >
52
- <schmancy-typography
53
- align="left"
54
- type="label"
55
- token=${this.size==="sm"?"sm":this.size==="lg"?"lg":"md"}
56
- >
57
- ${this.hint}
58
- </schmancy-typography>
59
- </div>
60
- `)}
61
- `}};s._idCounter=0,s.formAssociated=!0,s.shadowRootOptions={...d.LitElement.shadowRootOptions,delegatesFocus:!0},o([i.property({reflect:!0})],s.prototype,"id",2),o([i.property({type:String})],s.prototype,"label",2),o([i.property({reflect:!0})],s.prototype,"type",2),o([i.property()],s.prototype,"name",2),o([i.property()],s.prototype,"placeholder",2),o([i.property({type:String,reflect:!0})],s.prototype,"value",2),o([i.property({type:String,reflect:!0})],s.prototype,"pattern",2),o([i.property({type:Boolean,reflect:!0})],s.prototype,"required",2),o([i.property({type:Boolean,reflect:!0})],s.prototype,"disabled",2),o([i.property({type:Boolean,reflect:!0})],s.prototype,"readonly",2),o([i.property({type:Boolean,reflect:!0})],s.prototype,"clickable",2),o([i.property({type:Boolean,reflect:!0})],s.prototype,"spellcheck",2),o([i.property({type:String,reflect:!0})],s.prototype,"align",2),o([i.property()],s.prototype,"inputmode",2),o([i.property({type:Number,reflect:!0})],s.prototype,"minlength",2),o([i.property({type:Number})],s.prototype,"maxlength",2),o([i.property()],s.prototype,"min",2),o([i.property()],s.prototype,"max",2),o([i.property({type:Number,reflect:!0})],s.prototype,"step",2),o([i.property({type:Boolean})],s.prototype,"autofocus",2),o([i.property({type:String,reflect:!0})],s.prototype,"autocomplete",2),o([i.property({type:Number,reflect:!0})],s.prototype,"tabIndex",2),o([i.property()],s.prototype,"hint",2),o([i.property({type:Boolean,reflect:!0})],s.prototype,"error",2),o([i.property({type:String,reflect:!0})],s.prototype,"size",2),o([i.property({type:String})],s.prototype,"validateOn",2),o([i.property({type:String})],s.prototype,"list",2),o([i.property({type:String})],s.prototype,"validationMessage",2),o([i.query("input")],s.prototype,"inputElement",2),o([i.state()],s.prototype,"isAutofilled",2),o([i.state()],s.prototype,"touched",2),o([i.state()],s.prototype,"dirty",2),o([i.state()],s.prototype,"submitted",2),o([i.state()],s.prototype,"defaultValue",2),s=o([i.customElement("sch-input")],s);var k=Object.defineProperty,w=Object.getOwnPropertyDescriptor,l=(t,e,a,u)=>{for(var y,h=u>1?void 0:u?w(e,a):e,f=t.length-1;f>=0;f--)(y=t[f])&&(h=(u?y(e,a,h):y(h))||h);return u&&h&&k(e,a,h),h};let r=class extends g.TailwindElement(E){constructor(){if(super(),this.id="",this.label="",this.type="text",this.name=`name_${Date.now()}`,this.placeholder="",this.value="",this.required=!1,this.disabled=!1,this.readonly=!1,this.clickable=!1,this.spellcheck=!1,this.align="left",this.autofocus=!1,this.autocomplete="on",this.tabIndex=0,this.error=!1,this.size="md",this.validateOn="touched",this.validationMessage="",this.inputRef=v.createRef(),this.isAutofilled=!1,this.touched=!1,this.dirty=!1,this.submitted=!1,this.defaultValue="","attachInternals"in this)try{this.internals=this.attachInternals()}catch{this.internals=void 0}}willUpdate(t){this.id||(this.id="sch-input-"+r._idCounter++),super.willUpdate(t)}get form(){return this.internals?.form??null}updated(t){super.updated(t),t.has("value")&&(this.value!==this.defaultValue&&(this.dirty=!0),this.internals?.setFormValue(this.value),this.validateInput()),t.has("error")&&this.updateValidityState(),!this.hasUpdated&&t.has("value")&&(this.defaultValue=this.value)}connectedCallback(){super.connectedCallback(),this.defaultValue=this.value,this.setupFormIntegration(),this.setupExternalLabelAssociation()}setupFormIntegration(){this.internals?.form&&(this.formResetObserver=new MutationObserver(t=>{for(const e of t)e.type==="attributes"&&e.attributeName==="reset"&&this.resetToDefault()}),this.formResetObserver.observe(this.internals.form,{attributes:!0,childList:!1,subtree:!1}),this.internals.form.addEventListener("reset",()=>{this.resetToDefault()}),this.internals.form.addEventListener("submit",()=>{this.submitted=!0,this.validateInput(!0)}))}setupExternalLabelAssociation(){if(this.id){const t=()=>{document.querySelectorAll(`label[for="${this.id}"]`).forEach(e=>{e.addEventListener("click",()=>{this.focus()})})};document.readyState==="complete"?t():document.addEventListener("DOMContentLoaded",t)}}disconnectedCallback(){super.disconnectedCallback(),this.formResetObserver&&this.formResetObserver.disconnect(),this.id&&document.querySelectorAll(`label[for="${this.id}"]`).forEach(t=>{t.removeEventListener("click",()=>{this.focus()})})}resetToDefault(){this.value=this.defaultValue,this.touched=!1,this.dirty=!1,this.submitted=!1,this.error=!1,this.validationMessage="",this.dispatchEvent(new CustomEvent("reset",{bubbles:!0}))}shouldShowValidation(t=!1){if(t)return!0;switch(this.validateOn){case"always":return!0;case"touched":default:return this.touched;case"dirty":return this.dirty;case"submitted":return this.submitted}}updateValidityState(){this.error?this.validationMessage?this.internals?.setValidity({customError:!0},this.validationMessage,this.inputElement):this.internals?.setValidity({customError:!0},"Invalid input",this.inputElement):this.internals?.setValidity({})}validateInput(t=!1){if(this.disabled)return;const e=this.shouldShowValidation(t),a=this.inputElement?.validity??{customError:!1,valid:!0},u=!a.valid&&!a.customError;e&&u?(this.error=!0,this.validationMessage=this.inputElement?.validationMessage||""):a.valid?(this.error=!1,a.customError||(this.validationMessage="")):e||(this.error=!1),this.updateValidityState()}checkValidity(){const t=this.inputRef.value?.checkValidity()??!0;return this.internals&&!t?(this.internals.checkValidity(),!1):t}reportValidity(){this.touched=!0,this.submitted=!0;const t=this.inputRef.value?.reportValidity()??!0;return this.validateInput(!0),this.internals&&!t?(this.internals.reportValidity(),!1):t}setCustomValidity(t){this.inputRef.value&&this.inputRef.value.setCustomValidity(t),this.validationMessage=t,this.error=t!==""&&this.shouldShowValidation(),this.internals&&(t?this.internals.setValidity({customError:!0},t,this.inputElement):this.internals.setValidity({}))}firstUpdated(){this.autofocus&&setTimeout(()=>{this.focus()},0),this.setupInputEvents(),this.setupFocusBlurEvents(),this.setupAutofillDetection(),this.setupEnterKeyEvents()}setupInputEvents(){n.fromEvent(this.inputElement,"input").pipe(n.map(t=>{const e=t;return{value:t.target.value,inputType:e.inputType,data:e.data,isComposing:e.isComposing,originalEvent:t}}),n.takeUntil(this.disconnecting)).subscribe(t=>{this.value=t.value,this.dirty=this.value!==this.defaultValue;const e=new CustomEvent("input",{detail:{value:t.value},bubbles:!0,composed:!0});Object.defineProperties(e,{inputType:{value:t.inputType},data:{value:t.data},isComposing:{value:t.isComposing}}),this.dispatchEvent(e),this.validateInput()}),n.fromEvent(this.inputElement,"change").pipe(n.map(t=>t.target.value),n.distinctUntilChanged(),n.takeUntil(this.disconnecting)).subscribe(t=>{this.value=t,this.dirty=this.value!==this.defaultValue,this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0,composed:!0})),this.validateInput()})}setupFocusBlurEvents(){n.fromEvent(this.inputElement,"focus").pipe(n.takeUntil(this.disconnecting)).subscribe(t=>{const e=new CustomEvent("focus",{bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed});Object.defineProperties(e,{relatedTarget:{value:t.relatedTarget}}),this.dispatchEvent(e)}),n.fromEvent(this.inputElement,"blur").pipe(n.takeUntil(this.disconnecting)).subscribe(t=>{this.touched=!0,this.disabled||this.validateInput();const e=new CustomEvent("blur",{bubbles:t.bubbles,cancelable:t.cancelable,composed:t.composed});Object.defineProperties(e,{relatedTarget:{value:t.relatedTarget}}),this.dispatchEvent(e)})}setupAutofillDetection(){n.fromEvent(this.inputElement,"animationstart").pipe(n.filter(t=>t.animationName==="onAutoFillStart"),n.takeUntil(this.disconnecting)).subscribe(t=>{const{value:e}=t.target;this.value=e,this.isAutofilled=!0,this.dirty=this.value!==this.defaultValue,this.dispatchEvent(new CustomEvent("autofill",{detail:{value:e},bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:{value:e},bubbles:!0,composed:!0}))}),n.fromEvent(this.inputElement,"animationstart").pipe(n.filter(t=>t.animationName==="onAutoFillCancel"),n.takeUntil(this.disconnecting)).subscribe(()=>{this.isAutofilled=!1})}setupEnterKeyEvents(){n.fromEvent(this.inputElement,"keyup").pipe(n.filter(t=>t.key==="Enter"),n.takeUntil(this.disconnecting)).subscribe(t=>{const{value:e}=t.target;this.value=e,this.dirty=this.value!==this.defaultValue;const a=new CustomEvent("enter",{detail:{value:e},bubbles:!0,composed:!0});Object.defineProperties(a,{key:{value:"Enter"},code:{value:"Enter"},keyCode:{value:13},which:{value:13}}),this.dispatchEvent(a)})}select(){return this.inputRef.value?.select()}getValidity(){return this.inputRef.value?.validity}setSelectionRange(t,e,a){this.inputRef.value?.setSelectionRange(t,e,a)}get selectionStart(){return this.inputRef.value?.selectionStart??null}get selectionEnd(){return this.inputRef.value?.selectionEnd??null}get selectionDirection(){return this.inputRef.value?.selectionDirection??null}setRangeText(t,e,a,u){e!==void 0&&a!==void 0?this.inputRef.value?.setRangeText(t,e,a,u):this.inputRef.value?.setRangeText(t)}focus(t){this.inputRef.value?.focus(t),this.dispatchEvent(new Event("focus"))}click(){this.inputRef.value?.click(),this.dispatchEvent(new Event("click"))}blur(){this.inputRef.value?.blur(),this.dispatchEvent(new Event("blur"))}render(){const{height:t,padding:e,fontSize:a}=(()=>{switch(this.size){case"sm":return{height:"40px",padding:"0 8px",fontSize:"0.875rem"};case"lg":return{height:"60px",padding:"0 20px",fontSize:"1.125rem"};default:return{height:"50px",padding:"0 16px",fontSize:"1rem"}}})(),u={"w-full flex-1 rounded-[8px] border-0 bg-surface-highest text-surface-on":!0,"outline-secondary-default focus:outline-1 ":!0,"outline-secondary-default focus:outline-1":!0,"disabled:opacity-40 disabled:cursor-not-allowed":!0,"placeholder:text-muted":!0,"ring-0 ring-inset focus:ring-1 focus:ring-inset":!0,"ring-secondary-default ring-outline focus:ring-secondary-default":!this.error,"ring-error-default focus:ring-error-default":this.error,"caret-transparent focus:outline-hidden cursor-pointer text-select-none":this.readonly,"cursor-pointer":this.clickable,"text-center":this.align==="center","text-right":this.align==="right",autofilled:this.isAutofilled},y={"opacity-40":this.disabled,"block mb-[4px]":!0,"text-sm":this.size==="sm","text-base":this.size==="md","text-lg":this.size==="lg"},h={height:t,padding:e,fontSize:a};return d.html`
62
- ${b.when(this.label,()=>d.html`
63
- <label
64
- for=${this.id}
65
- id="label-${this.id}"
66
- class=${this.classMap(y)}
67
- ${m.color({color:this.error?c.SchmancyTheme.sys.color.error.default:c.SchmancyTheme.sys.color.primary.default})}
68
- >
69
- <schmancy-typography type="label" token=${this.size==="sm"?"sm":this.size==="lg"?"lg":"md"}>
70
- ${this.label}
71
- </schmancy-typography>
72
- </label>
73
- `)}
74
-
75
- <input
76
- ${m.color({bgColor:c.SchmancyTheme.sys.color.surface.highest,color:c.SchmancyTheme.sys.color.surface.on})}
77
- ${v.ref(this.inputRef)}
78
- id=${this.id}
79
- name=${this.name}
80
- class=${this.classMap(u)}
81
- style=${this.styleMap(h)}
82
- .value=${this.value}
83
- .type=${this.type}
84
- .autocomplete=${this.autocomplete}
85
- .spellcheck=${this.spellcheck}
86
- placeholder=${this.placeholder}
87
- inputmode=${p.ifDefined(this.inputmode)}
88
- pattern=${p.ifDefined(this.pattern)}
89
- step=${p.ifDefined(this.step)}
90
- minlength=${p.ifDefined(this.minlength)}
91
- maxlength=${p.ifDefined(this.maxlength)}
92
- min=${p.ifDefined(this.min)}
93
- max=${p.ifDefined(this.max)}
94
- list=${p.ifDefined(this.list)}
95
- ?required=${this.required}
96
- ?disabled=${this.disabled}
97
- ?readonly=${this.readonly}
98
- aria-invalid=${this.error?"true":"false"}
99
- aria-required=${this.required?"true":"false"}
100
- aria-labelledby=${this.label?`label-${this.id}`:d.nothing}
101
- aria-describedby=${this.hint?`hint-${this.id}`:d.nothing}
102
- aria-label=${p.ifDefined(this.label?void 0:this.placeholder||"Input")}
103
- aria-autocomplete=${this.list?"list":"none"}
104
- />
105
-
106
- ${b.when(this.hint,()=>d.html`
107
- <div
108
- id="hint-${this.id}"
109
- class="${this.size==="sm"?"pt-[1px] text-xs":this.size==="lg"?"pt-[3px] text-base":"pt-[2px] text-sm"}"
110
- ${m.color({color:this.error?c.SchmancyTheme.sys.color.error.default:c.SchmancyTheme.sys.color.primary.default})}
111
- >
112
- <schmancy-typography
113
- align="left"
114
- type="label"
115
- token=${this.size==="sm"?"sm":this.size==="lg"?"lg":"md"}
116
- >
117
- ${this.hint}
118
- </schmancy-typography>
119
- </div>
120
- `)}
121
- `}};r._idCounter=0,r.formAssociated=!0,r.shadowRootOptions={...d.LitElement.shadowRootOptions,delegatesFocus:!0},l([i.property({reflect:!0})],r.prototype,"id",2),l([i.property({type:String})],r.prototype,"label",2),l([i.property({reflect:!0})],r.prototype,"type",2),l([i.property()],r.prototype,"name",2),l([i.property()],r.prototype,"placeholder",2),l([i.property({type:String,reflect:!0})],r.prototype,"value",2),l([i.property({type:String,reflect:!0})],r.prototype,"pattern",2),l([i.property({type:Boolean,reflect:!0})],r.prototype,"required",2),l([i.property({type:Boolean,reflect:!0})],r.prototype,"disabled",2),l([i.property({type:Boolean,reflect:!0})],r.prototype,"readonly",2),l([i.property({type:Boolean,reflect:!0})],r.prototype,"clickable",2),l([i.property({type:Boolean,reflect:!0})],r.prototype,"spellcheck",2),l([i.property({type:String,reflect:!0})],r.prototype,"align",2),l([i.property()],r.prototype,"inputmode",2),l([i.property({type:Number,reflect:!0})],r.prototype,"minlength",2),l([i.property({type:Number})],r.prototype,"maxlength",2),l([i.property()],r.prototype,"min",2),l([i.property()],r.prototype,"max",2),l([i.property({type:Number,reflect:!0})],r.prototype,"step",2),l([i.property({type:Boolean})],r.prototype,"autofocus",2),l([i.property({type:String,reflect:!0})],r.prototype,"autocomplete",2),l([i.property({type:Number,reflect:!0})],r.prototype,"tabIndex",2),l([i.property()],r.prototype,"hint",2),l([i.property({type:Boolean,reflect:!0})],r.prototype,"error",2),l([i.property({type:String,reflect:!0})],r.prototype,"size",2),l([i.property({type:String})],r.prototype,"validateOn",2),l([i.property({type:String})],r.prototype,"list",2),l([i.property({type:String})],r.prototype,"validationMessage",2),l([i.query("input")],r.prototype,"inputElement",2),l([i.state()],r.prototype,"isAutofilled",2),l([i.state()],r.prototype,"touched",2),l([i.state()],r.prototype,"dirty",2),l([i.state()],r.prototype,"submitted",2),l([i.state()],r.prototype,"defaultValue",2),r=l([i.customElement("schmancy-input")],r);
122
- //# sourceMappingURL=input-DfBGrUet.cjs.map