@mhmo91/schmancy 0.7.7 → 0.8.3

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 (547) hide show
  1. package/ai/audio.md +241 -0
  2. package/ai/content-drawer.md +163 -70
  3. package/ai/lightbox.md +381 -0
  4. package/ai/typography.md +75 -49
  5. package/dist/ai/audio.md +241 -0
  6. package/dist/ai/content-drawer.md +163 -70
  7. package/dist/ai/lightbox.md +381 -0
  8. package/dist/ai/typography.md +75 -49
  9. package/dist/{animated-text-Be290e6l.cjs → animated-text-Bc3qyXjp.cjs} +2 -2
  10. package/dist/{animated-text-Be290e6l.cjs.map → animated-text-Bc3qyXjp.cjs.map} +1 -1
  11. package/dist/{animated-text-DuLrWJ6O.js → animated-text-CNx6Pmlo.js} +3 -3
  12. package/dist/{animated-text-DuLrWJ6O.js.map → animated-text-CNx6Pmlo.js.map} +1 -1
  13. package/dist/animated-text.cjs +1 -1
  14. package/dist/animated-text.js +1 -1
  15. package/dist/area.cjs +1 -1
  16. package/dist/{area.component-BzjJiNTJ.js → area.component-7mWxekxE.js} +104 -98
  17. package/dist/area.component-7mWxekxE.js.map +1 -0
  18. package/dist/area.component-CS_gSutH.cjs +12 -0
  19. package/dist/area.component-CS_gSutH.cjs.map +1 -0
  20. package/dist/area.js +1 -1
  21. package/dist/audio.cjs +2 -0
  22. package/dist/audio.cjs.map +1 -0
  23. package/dist/audio.js +9 -0
  24. package/dist/audio.js.map +1 -0
  25. package/dist/{autocomplete-FLkd9ju8.js → autocomplete-Ci4jo3Ur.js} +4 -4
  26. package/dist/{autocomplete-FLkd9ju8.js.map → autocomplete-Ci4jo3Ur.js.map} +1 -1
  27. package/dist/{autocomplete-CHmGhBNt.cjs → autocomplete-y-IyzH4r.cjs} +2 -2
  28. package/dist/{autocomplete-CHmGhBNt.cjs.map → autocomplete-y-IyzH4r.cjs.map} +1 -1
  29. package/dist/autocomplete.cjs +1 -1
  30. package/dist/autocomplete.js +1 -1
  31. package/dist/{avatar-C8P4lVfa.js → avatar-BdyuuIk7.js} +243 -258
  32. package/dist/avatar-BdyuuIk7.js.map +1 -0
  33. package/dist/avatar-DBfJucB9.cjs +273 -0
  34. package/dist/avatar-DBfJucB9.cjs.map +1 -0
  35. package/dist/badge.cjs +1 -1
  36. package/dist/badge.js +1 -1
  37. package/dist/{boat-Ma6LW-ny.js → boat-CowHieO2.js} +6 -6
  38. package/dist/{boat-Ma6LW-ny.js.map → boat-CowHieO2.js.map} +1 -1
  39. package/dist/{boat-kYOUec8f.cjs → boat-DkNUc1UO.cjs} +5 -5
  40. package/dist/{boat-kYOUec8f.cjs.map → boat-DkNUc1UO.cjs.map} +1 -1
  41. package/dist/boat.cjs +1 -1
  42. package/dist/boat.js +1 -1
  43. package/dist/busy.cjs +1 -1
  44. package/dist/busy.js +1 -1
  45. package/dist/button.cjs +1 -1
  46. package/dist/button.js +1 -1
  47. package/dist/card.cjs +1 -1
  48. package/dist/card.js +1 -1
  49. package/dist/charts.cjs +2 -0
  50. package/dist/charts.cjs.map +1 -0
  51. package/dist/charts.js +9 -0
  52. package/dist/charts.js.map +1 -0
  53. package/dist/{checkbox-x46L-XTG.js → checkbox-BY4Sn8F2.js} +6 -6
  54. package/dist/{checkbox-x46L-XTG.js.map → checkbox-BY4Sn8F2.js.map} +1 -1
  55. package/dist/{checkbox-DLZkKaon.cjs → checkbox-BvWcABPr.cjs} +2 -2
  56. package/dist/{checkbox-DLZkKaon.cjs.map → checkbox-BvWcABPr.cjs.map} +1 -1
  57. package/dist/checkbox.cjs +1 -1
  58. package/dist/checkbox.js +1 -1
  59. package/dist/chips.cjs +1 -1
  60. package/dist/chips.js +2 -2
  61. package/dist/code-highlight.cjs +1 -1
  62. package/dist/code-highlight.js +1 -1
  63. package/dist/{code-preview-BsQq77nu.cjs → code-preview-BIFIJigy.cjs} +2 -2
  64. package/dist/{code-preview-BsQq77nu.cjs.map → code-preview-BIFIJigy.cjs.map} +1 -1
  65. package/dist/{code-preview-C3DLglSl.js → code-preview-CYjmAxfs.js} +3 -3
  66. package/dist/{code-preview-C3DLglSl.js.map → code-preview-CYjmAxfs.js.map} +1 -1
  67. package/dist/components.cjs +1 -1
  68. package/dist/components.js +1 -1
  69. package/dist/content-drawer.cjs +1 -1
  70. package/dist/content-drawer.js +1 -1
  71. package/dist/{context-create-BvxbWTgj.js → context-create-B_S-sD5B.js} +69 -57
  72. package/dist/context-create-B_S-sD5B.js.map +1 -0
  73. package/dist/context-create-DTybDbZp.cjs +2 -0
  74. package/dist/context-create-DTybDbZp.cjs.map +1 -0
  75. package/dist/date-range-B80Ummtv.cjs +119 -0
  76. package/dist/date-range-B80Ummtv.cjs.map +1 -0
  77. package/dist/date-range-BdIqI7LC.js +639 -0
  78. package/dist/date-range-BdIqI7LC.js.map +1 -0
  79. package/dist/{date-range-inline-CfDu-lIo.js → date-range-inline-Cnhs9atd.js} +3 -3
  80. package/dist/{date-range-inline-CfDu-lIo.js.map → date-range-inline-Cnhs9atd.js.map} +1 -1
  81. package/dist/{date-range-inline-cGptw0hr.cjs → date-range-inline-Df8u6Ecy.cjs} +2 -2
  82. package/dist/{date-range-inline-cGptw0hr.cjs.map → date-range-inline-Df8u6Ecy.cjs.map} +1 -1
  83. package/dist/date-range-inline.cjs +1 -1
  84. package/dist/date-range-inline.js +1 -1
  85. package/dist/date-range.cjs +1 -1
  86. package/dist/date-range.js +1 -1
  87. package/dist/{delay-CXFIM6qK.cjs → delay-BWsVHQib.cjs} +2 -2
  88. package/dist/delay-BWsVHQib.cjs.map +1 -0
  89. package/dist/{delay-BINGOQ7f.js → delay-CCa9nN4A.js} +45 -45
  90. package/dist/delay-CCa9nN4A.js.map +1 -0
  91. package/dist/delay.cjs +1 -1
  92. package/dist/delay.js +1 -1
  93. package/dist/details-Bee5ya0L.js +100 -0
  94. package/dist/details-Bee5ya0L.js.map +1 -0
  95. package/dist/details-oaVHXU7U.cjs +55 -0
  96. package/dist/details-oaVHXU7U.cjs.map +1 -0
  97. package/dist/details.cjs +1 -1
  98. package/dist/details.js +1 -1
  99. package/dist/dialog-service-C86xTS8q.cjs +2 -0
  100. package/dist/dialog-service-C86xTS8q.cjs.map +1 -0
  101. package/dist/dialog-service-D9E3jLAR.js +118 -0
  102. package/dist/dialog-service-D9E3jLAR.js.map +1 -0
  103. package/dist/dialog.cjs +1 -1
  104. package/dist/dialog.component-BriB-kFi.cjs +48 -0
  105. package/dist/dialog.component-BriB-kFi.cjs.map +1 -0
  106. package/dist/dialog.component-CMUoCC7O.js +145 -0
  107. package/dist/dialog.component-CMUoCC7O.js.map +1 -0
  108. package/dist/dialog.js +7 -7
  109. package/dist/directives.cjs +1 -1
  110. package/dist/directives.js +11 -10
  111. package/dist/directives.js.map +1 -1
  112. package/dist/{divider-Bu6tzwGl.js → divider-B7DBbYFI.js} +3 -3
  113. package/dist/{divider-Bu6tzwGl.js.map → divider-B7DBbYFI.js.map} +1 -1
  114. package/dist/{divider-8tk2mDbL.cjs → divider-Dl4TToQZ.cjs} +2 -2
  115. package/dist/{divider-8tk2mDbL.cjs.map → divider-Dl4TToQZ.cjs.map} +1 -1
  116. package/dist/divider.cjs +1 -1
  117. package/dist/divider.js +1 -1
  118. package/dist/{dropdown-content-DFb07S8x.cjs → dropdown-content-C2W7OttQ.cjs} +2 -2
  119. package/dist/{dropdown-content-DFb07S8x.cjs.map → dropdown-content-C2W7OttQ.cjs.map} +1 -1
  120. package/dist/{dropdown-content-fVhnEKdY.js → dropdown-content-DzhOtilY.js} +3 -3
  121. package/dist/{dropdown-content-fVhnEKdY.js.map → dropdown-content-DzhOtilY.js.map} +1 -1
  122. package/dist/dropdown.cjs +1 -1
  123. package/dist/dropdown.js +1 -1
  124. package/dist/{email-recipients-OG52RGiH.js → email-recipients-BWqZKo3m.js} +8 -7
  125. package/dist/{email-recipients-OG52RGiH.js.map → email-recipients-BWqZKo3m.js.map} +1 -1
  126. package/dist/{email-recipients-BG3GxJvc.cjs → email-recipients-Bh5VC0rc.cjs} +2 -2
  127. package/dist/{email-recipients-BG3GxJvc.cjs.map → email-recipients-Bh5VC0rc.cjs.map} +1 -1
  128. package/dist/emotional-sounds-BRnFhww6.js +234 -0
  129. package/dist/emotional-sounds-BRnFhww6.js.map +1 -0
  130. package/dist/emotional-sounds-DVGhmoZf.cjs +2 -0
  131. package/dist/emotional-sounds-DVGhmoZf.cjs.map +1 -0
  132. package/dist/extra.cjs +1 -1
  133. package/dist/extra.js +1 -1
  134. package/dist/flex-53G-PJx7.js +183 -0
  135. package/dist/flex-53G-PJx7.js.map +1 -0
  136. package/dist/flex-DFSIy0t4.cjs +18 -0
  137. package/dist/flex-DFSIy0t4.cjs.map +1 -0
  138. package/dist/{form-tpyd1nsT.js → form-BtRK9bnp.js} +2 -2
  139. package/dist/{form-tpyd1nsT.js.map → form-BtRK9bnp.js.map} +1 -1
  140. package/dist/{form-cWJBcwc6.cjs → form-Zq7g2JS8.cjs} +2 -2
  141. package/dist/{form-cWJBcwc6.cjs.map → form-Zq7g2JS8.cjs.map} +1 -1
  142. package/dist/form.cjs +1 -1
  143. package/dist/form.js +1 -1
  144. package/dist/{formField.mixin-Mx5CwYUh.js → formField.mixin-2jSL7WF_.js} +2 -2
  145. package/dist/{formField.mixin-Mx5CwYUh.js.map → formField.mixin-2jSL7WF_.js.map} +1 -1
  146. package/dist/{formField.mixin-XlN2pAL0.cjs → formField.mixin-DkN2ufR_.cjs} +2 -2
  147. package/dist/{formField.mixin-XlN2pAL0.cjs.map → formField.mixin-DkN2ufR_.cjs.map} +1 -1
  148. package/dist/height-CfECBO2j.js +44 -0
  149. package/dist/height-CfECBO2j.js.map +1 -0
  150. package/dist/height-Z70qJYJK.cjs +2 -0
  151. package/dist/height-Z70qJYJK.cjs.map +1 -0
  152. package/dist/{icon-Y2qLOFqe.js → icon-B5qeYrDu.js} +17 -17
  153. package/dist/icon-B5qeYrDu.js.map +1 -0
  154. package/dist/icon-button-BpmGFjaR.cjs +70 -0
  155. package/dist/icon-button-BpmGFjaR.cjs.map +1 -0
  156. package/dist/icon-button-HSYaQBNF.js +164 -0
  157. package/dist/icon-button-HSYaQBNF.js.map +1 -0
  158. package/dist/icon-pU_cfmpD.cjs +49 -0
  159. package/dist/icon-pU_cfmpD.cjs.map +1 -0
  160. package/dist/icons.cjs +1 -1
  161. package/dist/icons.js +1 -1
  162. package/dist/index.cjs +1 -1
  163. package/dist/index.js +275 -250
  164. package/dist/index.js.map +1 -1
  165. package/dist/input-8G9YY9qv.cjs +51 -0
  166. package/dist/input-8G9YY9qv.cjs.map +1 -0
  167. package/dist/{input-DDCFZ3cr.js → input-BJMF5Fyk.js} +35 -31
  168. package/dist/input-BJMF5Fyk.js.map +1 -0
  169. package/dist/{input-chip-Bht9MU9G.cjs → input-chip-CocdqTzr.cjs} +2 -2
  170. package/dist/{input-chip-Bht9MU9G.cjs.map → input-chip-CocdqTzr.cjs.map} +1 -1
  171. package/dist/{input-chip-DVE4_1wn.js → input-chip-tbrw56ix.js} +2 -2
  172. package/dist/{input-chip-DVE4_1wn.js.map → input-chip-tbrw56ix.js.map} +1 -1
  173. package/dist/input.cjs +1 -1
  174. package/dist/input.js +1 -1
  175. package/dist/json-CvcloKQv.js +51 -0
  176. package/dist/json-CvcloKQv.js.map +1 -0
  177. package/dist/json-DPnyOA3K.cjs +12 -0
  178. package/dist/json-DPnyOA3K.cjs.map +1 -0
  179. package/dist/json.cjs +2 -0
  180. package/dist/json.cjs.map +1 -0
  181. package/dist/json.js +5 -0
  182. package/dist/json.js.map +1 -0
  183. package/dist/layout.cjs +1 -1
  184. package/dist/layout.js +4 -3
  185. package/dist/layout.js.map +1 -1
  186. package/dist/lightbox-service-3mHqBKEh.cjs +202 -0
  187. package/dist/lightbox-service-3mHqBKEh.cjs.map +1 -0
  188. package/dist/lightbox-service-DxbYZAuv.js +458 -0
  189. package/dist/lightbox-service-DxbYZAuv.js.map +1 -0
  190. package/dist/lightbox.cjs +2 -0
  191. package/dist/lightbox.cjs.map +1 -0
  192. package/dist/lightbox.js +8 -0
  193. package/dist/lightbox.js.map +1 -0
  194. package/dist/{list-BO1gnjmc.js → list-FWXmY-eQ.js} +2 -2
  195. package/dist/{list-BO1gnjmc.js.map → list-FWXmY-eQ.js.map} +1 -1
  196. package/dist/{list-Bac329kq.cjs → list-JjR7WOrd.cjs} +2 -2
  197. package/dist/{list-Bac329kq.cjs.map → list-JjR7WOrd.cjs.map} +1 -1
  198. package/dist/list.cjs +1 -1
  199. package/dist/list.js +1 -1
  200. package/dist/{litElement.mixin-B1WTI3WY.cjs → litElement.mixin-BVBdv0GP.cjs} +2 -2
  201. package/dist/{litElement.mixin-B1WTI3WY.cjs.map → litElement.mixin-BVBdv0GP.cjs.map} +1 -1
  202. package/dist/{litElement.mixin-CVje6z-M.js → litElement.mixin-Wcu4yIIs.js} +2 -2
  203. package/dist/{litElement.mixin-CVje6z-M.js.map → litElement.mixin-Wcu4yIIs.js.map} +1 -1
  204. package/dist/mailbox.cjs +1 -1
  205. package/dist/mailbox.js +1 -1
  206. package/dist/{map-C1jVMhlF.js → map-Br6xJFxG.js} +2 -2
  207. package/dist/{map-C1jVMhlF.js.map → map-Br6xJFxG.js.map} +1 -1
  208. package/dist/{map-BlmS6Zfx.cjs → map-D9R3OCne.cjs} +2 -2
  209. package/dist/{map-BlmS6Zfx.cjs.map → map-D9R3OCne.cjs.map} +1 -1
  210. package/dist/map.cjs +1 -1
  211. package/dist/map.js +1 -1
  212. package/dist/{media-CNMZbEJe.js → media-BV_1DfcW.js} +2 -2
  213. package/dist/{media-CNMZbEJe.js.map → media-BV_1DfcW.js.map} +1 -1
  214. package/dist/{media-CxfrOjie.cjs → media-DibPwAjJ.cjs} +2 -2
  215. package/dist/{media-CxfrOjie.cjs.map → media-DibPwAjJ.cjs.map} +1 -1
  216. package/dist/menu-HKqlq99V.js +60 -0
  217. package/dist/{menu-CUKV4pVJ.js.map → menu-HKqlq99V.js.map} +1 -1
  218. package/dist/{menu-DEa2K7Pk.cjs → menu-vNrV-Nuq.cjs} +4 -6
  219. package/dist/{menu-DEa2K7Pk.cjs.map → menu-vNrV-Nuq.cjs.map} +1 -1
  220. package/dist/menu.cjs +1 -1
  221. package/dist/menu.js +1 -1
  222. package/dist/mixins.cjs +1 -1
  223. package/dist/mixins.js +3 -3
  224. package/dist/nav-drawer.cjs +1 -1
  225. package/dist/nav-drawer.js +1 -1
  226. package/dist/navigation-bar.cjs +1 -1
  227. package/dist/navigation-bar.js +1 -1
  228. package/dist/{navigation-rail-DXr4NJnN.cjs → navigation-rail-D1o3qDe_.cjs} +15 -17
  229. package/dist/navigation-rail-D1o3qDe_.cjs.map +1 -0
  230. package/dist/{navigation-rail-CYKfvZs9.js → navigation-rail-DKXumnmt.js} +30 -32
  231. package/dist/navigation-rail-DKXumnmt.js.map +1 -0
  232. package/dist/navigation-rail.cjs +1 -1
  233. package/dist/navigation-rail.js +1 -1
  234. package/dist/notification-service-B5ljba4P.js +155 -0
  235. package/dist/notification-service-B5ljba4P.js.map +1 -0
  236. package/dist/notification-service-ICRT05L0.cjs +19 -0
  237. package/dist/notification-service-ICRT05L0.cjs.map +1 -0
  238. package/dist/notification.cjs +1 -1
  239. package/dist/notification.js +6 -8
  240. package/dist/{notify-KvHZ-8z9.js → notify-B9CpO1Ru.js} +2 -2
  241. package/dist/notify-B9CpO1Ru.js.map +1 -0
  242. package/dist/{notify-VkDx6hMZ.cjs → notify-NX-dl60E.cjs} +2 -2
  243. package/dist/notify-NX-dl60E.cjs.map +1 -0
  244. package/dist/{option-DnRdbsTb.js → option-B4JKMrLg.js} +2 -2
  245. package/dist/{option-DnRdbsTb.js.map → option-B4JKMrLg.js.map} +1 -1
  246. package/dist/{option-Eh2AXe-Z.cjs → option-epyXLWoY.cjs} +2 -2
  247. package/dist/{option-Eh2AXe-Z.cjs.map → option-epyXLWoY.cjs.map} +1 -1
  248. package/dist/option.cjs +1 -1
  249. package/dist/option.js +1 -1
  250. package/dist/page-Bmi1QHtq.cjs +20 -0
  251. package/dist/page-Bmi1QHtq.cjs.map +1 -0
  252. package/dist/page-BpygEntU.js +48 -0
  253. package/dist/page-BpygEntU.js.map +1 -0
  254. package/dist/page.cjs +2 -0
  255. package/dist/page.cjs.map +1 -0
  256. package/dist/page.js +5 -0
  257. package/dist/page.js.map +1 -0
  258. package/dist/{payment-card-form-8a4Nqqhy.cjs → payment-card-form-3kAXDbXf.cjs} +2 -2
  259. package/dist/{payment-card-form-8a4Nqqhy.cjs.map → payment-card-form-3kAXDbXf.cjs.map} +1 -1
  260. package/dist/{payment-card-form-EVQEb5OX.js → payment-card-form-BxkHuSls.js} +3 -3
  261. package/dist/{payment-card-form-EVQEb5OX.js.map → payment-card-form-BxkHuSls.js.map} +1 -1
  262. package/dist/pills-C3fIvfn8.js +346 -0
  263. package/dist/pills-C3fIvfn8.js.map +1 -0
  264. package/dist/pills-MmHyBGQu.cjs +113 -0
  265. package/dist/pills-MmHyBGQu.cjs.map +1 -0
  266. package/dist/progress-0POmJs5o.js +59 -0
  267. package/dist/progress-0POmJs5o.js.map +1 -0
  268. package/dist/progress-qx8jtrOA.cjs +35 -0
  269. package/dist/progress-qx8jtrOA.cjs.map +1 -0
  270. package/dist/progress.cjs +1 -1
  271. package/dist/progress.js +1 -1
  272. package/dist/qr-scanner-DQq-WLyo.cjs +29 -0
  273. package/dist/qr-scanner-DQq-WLyo.cjs.map +1 -0
  274. package/dist/qr-scanner-jwOSrD0N.js +743 -0
  275. package/dist/qr-scanner-jwOSrD0N.js.map +1 -0
  276. package/dist/qr-scanner.cjs +2 -0
  277. package/dist/qr-scanner.cjs.map +1 -0
  278. package/dist/qr-scanner.js +5 -0
  279. package/dist/qr-scanner.js.map +1 -0
  280. package/dist/{radio-button-QCukBJLy.js → radio-button-B0EUK_wg.js} +3 -3
  281. package/dist/{radio-button-QCukBJLy.js.map → radio-button-B0EUK_wg.js.map} +1 -1
  282. package/dist/{radio-button-BTdqEOSJ.cjs → radio-button-DraEYR2R.cjs} +2 -2
  283. package/dist/{radio-button-BTdqEOSJ.cjs.map → radio-button-DraEYR2R.cjs.map} +1 -1
  284. package/dist/radio-group.cjs +1 -1
  285. package/dist/radio-group.js +1 -1
  286. package/dist/ripple-BgJXbNSP.js +124 -0
  287. package/dist/ripple-BgJXbNSP.js.map +1 -0
  288. package/dist/ripple-x6sTX02K.cjs +16 -0
  289. package/dist/ripple-x6sTX02K.cjs.map +1 -0
  290. package/dist/{schmancy-steps-container-CtwqkRBU.cjs → schmancy-steps-container-B5aiqgMA.cjs} +2 -2
  291. package/dist/{schmancy-steps-container-CtwqkRBU.cjs.map → schmancy-steps-container-B5aiqgMA.cjs.map} +1 -1
  292. package/dist/{schmancy-steps-container-NZOamraF.js → schmancy-steps-container-C2StAA5K.js} +3 -3
  293. package/dist/{schmancy-steps-container-NZOamraF.js.map → schmancy-steps-container-C2StAA5K.js.map} +1 -1
  294. package/dist/scroll-BqT7bvhu.cjs +27 -0
  295. package/dist/scroll-BqT7bvhu.cjs.map +1 -0
  296. package/dist/scroll-Bu-vAg3d.js +87 -0
  297. package/dist/scroll-Bu-vAg3d.js.map +1 -0
  298. package/dist/{select-C-Kv7ey_.cjs → select-HiEGJvOX.cjs} +2 -2
  299. package/dist/select-HiEGJvOX.cjs.map +1 -0
  300. package/dist/{select-DSTQ-Zau.js → select-i-uKur-W.js} +5 -4
  301. package/dist/select-i-uKur-W.js.map +1 -0
  302. package/dist/select.cjs +1 -1
  303. package/dist/select.js +1 -1
  304. package/dist/{selector-hook-Cok22ifx.cjs → selector-hook-9w2auh2O.cjs} +2 -2
  305. package/dist/{selector-hook-Cok22ifx.cjs.map → selector-hook-9w2auh2O.cjs.map} +1 -1
  306. package/dist/{selector-hook-l2fe2UO5.js → selector-hook-CHV4kDMd.js} +3 -3
  307. package/dist/{selector-hook-l2fe2UO5.js.map → selector-hook-CHV4kDMd.js.map} +1 -1
  308. package/dist/{sheet-DY-z5_tm.js → sheet-B1g7E4dQ.js} +5 -5
  309. package/dist/{sheet-DY-z5_tm.js.map → sheet-B1g7E4dQ.js.map} +1 -1
  310. package/dist/{sheet-IzYy3H8n.cjs → sheet-BbrRW0S5.cjs} +2 -2
  311. package/dist/{sheet-IzYy3H8n.cjs.map → sheet-BbrRW0S5.cjs.map} +1 -1
  312. package/dist/sheet.cjs +1 -1
  313. package/dist/sheet.js +2 -2
  314. package/dist/{sheet.service-DuVcXyOB.js → sheet.service-4etIM-p6.js} +20 -18
  315. package/dist/sheet.service-4etIM-p6.js.map +1 -0
  316. package/dist/sheet.service-BiRZjCdN.cjs +2 -0
  317. package/dist/sheet.service-BiRZjCdN.cjs.map +1 -0
  318. package/dist/{slider-CFtbSQ9Y.js → slider-8E3Wad0t.js} +3 -3
  319. package/dist/{slider-CFtbSQ9Y.js.map → slider-8E3Wad0t.js.map} +1 -1
  320. package/dist/{slider-CGE_Qeok.cjs → slider-VYnbIRH2.cjs} +2 -2
  321. package/dist/{slider-CGE_Qeok.cjs.map → slider-VYnbIRH2.cjs.map} +1 -1
  322. package/dist/slider.cjs +1 -1
  323. package/dist/slider.js +1 -1
  324. package/dist/sound.service-Nza4c6wv.js +102 -0
  325. package/dist/sound.service-Nza4c6wv.js.map +1 -0
  326. package/dist/sound.service-eRirZw59.cjs +2 -0
  327. package/dist/sound.service-eRirZw59.cjs.map +1 -0
  328. package/dist/{spinner-DAF-hCvQ.js → spinner-CKm13CKN.js} +15 -12
  329. package/dist/spinner-CKm13CKN.js.map +1 -0
  330. package/dist/{spinner-CSPJs8CL.cjs → spinner-DJgcI5wr.cjs} +9 -9
  331. package/dist/spinner-DJgcI5wr.cjs.map +1 -0
  332. package/dist/steps.cjs +1 -1
  333. package/dist/steps.js +1 -1
  334. package/dist/store.cjs +1 -1
  335. package/dist/store.js +2 -2
  336. package/dist/{suggestion-chip-CYu-4xrL.js → suggestion-chip-6njXvvHm.js} +50 -46
  337. package/dist/suggestion-chip-6njXvvHm.js.map +1 -0
  338. package/dist/{suggestion-chip-Cj8gwZqq.cjs → suggestion-chip-DdLfqk7o.cjs} +18 -23
  339. package/dist/suggestion-chip-DdLfqk7o.cjs.map +1 -0
  340. package/dist/{surface-DTOK-0E4.js → surface-BYU3l_Q2.js} +12 -11
  341. package/dist/surface-BYU3l_Q2.js.map +1 -0
  342. package/dist/{surface-VX_THUHv.cjs → surface-DcqbWGub.cjs} +5 -4
  343. package/dist/surface-DcqbWGub.cjs.map +1 -0
  344. package/dist/surface.cjs +1 -1
  345. package/dist/surface.js +1 -1
  346. package/dist/{table-BV0-o9Wi.cjs → table-C9fzDjjk.cjs} +2 -2
  347. package/dist/{table-BV0-o9Wi.cjs.map → table-C9fzDjjk.cjs.map} +1 -1
  348. package/dist/{table-CkXbXqi9.js → table-Dq12ollZ.js} +3 -3
  349. package/dist/{table-CkXbXqi9.js.map → table-Dq12ollZ.js.map} +1 -1
  350. package/dist/table.cjs +1 -1
  351. package/dist/table.js +1 -1
  352. package/dist/{tabs-compatibility-DsfD60U_.cjs → tabs-compatibility-Dwtjfkcf.cjs} +2 -2
  353. package/dist/{tabs-compatibility-DsfD60U_.cjs.map → tabs-compatibility-Dwtjfkcf.cjs.map} +1 -1
  354. package/dist/{tabs-compatibility-D_BBW655.js → tabs-compatibility-wnzlHtln.js} +2 -2
  355. package/dist/{tabs-compatibility-D_BBW655.js.map → tabs-compatibility-wnzlHtln.js.map} +1 -1
  356. package/dist/tabs.cjs +1 -1
  357. package/dist/tabs.js +1 -1
  358. package/dist/tailwind.mixin-Ddt05Frc.js +67 -0
  359. package/dist/{tailwind.mixin-wLaKUxf1.js.map → tailwind.mixin-Ddt05Frc.js.map} +1 -1
  360. package/dist/tailwind.mixin-UijsBrYW.cjs +2 -0
  361. package/dist/{tailwind.mixin-JFXu3GSo.cjs.map → tailwind.mixin-UijsBrYW.cjs.map} +1 -1
  362. package/dist/teleport.cjs +1 -1
  363. package/dist/teleport.js +1 -1
  364. package/dist/textarea-DGmsw1B_.cjs +44 -0
  365. package/dist/{textarea-B6LDhRed.cjs.map → textarea-DGmsw1B_.cjs.map} +1 -1
  366. package/dist/{textarea-TeVnUeIJ.js → textarea-Vd3zayJZ.js} +4 -3
  367. package/dist/{textarea-TeVnUeIJ.js.map → textarea-Vd3zayJZ.js.map} +1 -1
  368. package/dist/textarea.cjs +1 -1
  369. package/dist/textarea.js +1 -1
  370. package/dist/{theme-button-DxMbO3yP.cjs → theme-button-DG_Xwg9H.cjs} +2 -2
  371. package/dist/{theme-button-DxMbO3yP.cjs.map → theme-button-DG_Xwg9H.cjs.map} +1 -1
  372. package/dist/{theme-button-BXXqAu2Y.js → theme-button-rGpEW_xS.js} +2 -2
  373. package/dist/{theme-button-BXXqAu2Y.js.map → theme-button-rGpEW_xS.js.map} +1 -1
  374. package/dist/theme-button.cjs +1 -1
  375. package/dist/theme-button.js +1 -1
  376. package/dist/{theme-controller-boat-CVS77gnH.js → theme-controller-boat-B1fjcqJI.js} +420 -228
  377. package/dist/theme-controller-boat-B1fjcqJI.js.map +1 -0
  378. package/dist/theme-controller-boat-pLzK5zxL.cjs +178 -0
  379. package/dist/theme-controller-boat-pLzK5zxL.cjs.map +1 -0
  380. package/dist/theme.cjs +1 -1
  381. package/dist/theme.js +13 -11
  382. package/dist/{timezone-D7YOMM8G.cjs → timezone-BhUaIAV7.cjs} +2 -2
  383. package/dist/{timezone-D7YOMM8G.cjs.map → timezone-BhUaIAV7.cjs.map} +1 -1
  384. package/dist/{timezone-RBV74f85.js → timezone-IQkwr6Oh.js} +3 -3
  385. package/dist/{timezone-RBV74f85.js.map → timezone-IQkwr6Oh.js.map} +1 -1
  386. package/dist/{tooltip-DssL6Qfx.js → tooltip-CwaiZC8f.js} +2 -2
  387. package/dist/{tooltip-DssL6Qfx.js.map → tooltip-CwaiZC8f.js.map} +1 -1
  388. package/dist/{tooltip-BH_RLoZI.cjs → tooltip-iEvxKg8g.cjs} +2 -2
  389. package/dist/{tooltip-BH_RLoZI.cjs.map → tooltip-iEvxKg8g.cjs.map} +1 -1
  390. package/dist/tooltip.cjs +1 -1
  391. package/dist/tooltip.js +1 -1
  392. package/dist/{tree-7Zz1sJKl.cjs → tree-Bclu6uvv.cjs} +2 -2
  393. package/dist/{tree-7Zz1sJKl.cjs.map → tree-Bclu6uvv.cjs.map} +1 -1
  394. package/dist/{tree-C33t9-0j.js → tree-D9EbEsxn.js} +2 -2
  395. package/dist/{tree-C33t9-0j.js.map → tree-D9EbEsxn.js.map} +1 -1
  396. package/dist/tree.cjs +1 -1
  397. package/dist/tree.js +1 -1
  398. package/dist/{typewriter-Dt1Js2lP.js → typewriter-BjDPgRlj.js} +5 -5
  399. package/dist/{typewriter-Dt1Js2lP.js.map → typewriter-BjDPgRlj.js.map} +1 -1
  400. package/dist/{typewriter-WbYqfXO7.cjs → typewriter-Bscwd-36.cjs} +4 -4
  401. package/dist/{typewriter-WbYqfXO7.cjs.map → typewriter-Bscwd-36.cjs.map} +1 -1
  402. package/dist/typewriter.cjs +1 -1
  403. package/dist/typewriter.js +1 -1
  404. package/dist/{typography-DdG9aEAg.js → typography-CConBBFH.js} +13 -53
  405. package/dist/typography-CConBBFH.js.map +1 -0
  406. package/dist/{typography-Ck-OdI83.cjs → typography-DLGT3DGz.cjs} +3 -46
  407. package/dist/typography-DLGT3DGz.cjs.map +1 -0
  408. package/dist/typography.cjs +1 -1
  409. package/dist/typography.js +1 -1
  410. package/mixins/tailwind.css +37 -6
  411. package/package.json +21 -20
  412. package/types/src/area/area.service.d.ts +1 -1
  413. package/types/src/area/router.types.d.ts +1 -0
  414. package/types/src/audio/emotional-sounds.d.ts +122 -0
  415. package/types/src/audio/index.d.ts +30 -0
  416. package/types/src/audio/sound.service.d.ts +111 -0
  417. package/types/src/avatar.d.ts +10 -1
  418. package/types/src/busy/spinner.d.ts +6 -1
  419. package/types/src/button/button.d.ts +15 -2
  420. package/types/src/button/icon-button.d.ts +1 -1
  421. package/types/src/charts/area-chart.d.ts +58 -0
  422. package/types/src/charts/index.d.ts +4 -0
  423. package/types/src/charts/pills.d.ts +51 -0
  424. package/types/src/charts/types.d.ts +62 -0
  425. package/types/src/charts/utils.d.ts +28 -0
  426. package/types/src/checkbox/checkbox.d.ts +3 -2
  427. package/types/src/chips/chips.d.ts +2 -0
  428. package/types/src/content-drawer/drawer.service.d.ts +1 -7
  429. package/types/src/date-range/date-range-dialog.d.ts +16 -0
  430. package/types/src/date-range/date-range.d.ts +1 -1
  431. package/types/src/details/details.d.ts +3 -7
  432. package/types/src/dialog/dailog.d.ts +1 -5
  433. package/types/src/dialog/dialog-base.mixin.d.ts +26 -0
  434. package/types/src/dialog/dialog-service.d.ts +3 -66
  435. package/types/src/dialog/dialog.component.d.ts +63 -30
  436. package/types/src/dialog/index.d.ts +1 -3
  437. package/types/src/directives/height.d.ts +11 -6
  438. package/types/src/icons/icon.d.ts +17 -0
  439. package/types/src/index.d.ts +6 -0
  440. package/types/src/input/input.d.ts +13 -9
  441. package/types/src/json/index.d.ts +1 -0
  442. package/types/src/json/json.d.ts +15 -0
  443. package/types/src/lightbox/flip-directive.d.ts +29 -0
  444. package/types/src/lightbox/flip.directive.d.ts +22 -0
  445. package/types/src/lightbox/index.d.ts +4 -0
  446. package/types/src/lightbox/lightbox-service.d.ts +24 -0
  447. package/types/src/lightbox/lightbox.d.ts +34 -0
  448. package/types/src/lightbox/lightbox.directive.d.ts +30 -0
  449. package/types/src/nav-drawer/appbar.d.ts +0 -5
  450. package/types/src/nav-drawer/drawer.d.ts +1 -32
  451. package/types/src/notification/index.d.ts +1 -3
  452. package/types/src/notification/notification-service.d.ts +13 -1
  453. package/types/src/notification/notification.d.ts +13 -12
  454. package/types/src/notification/notify.d.ts +1 -1
  455. package/types/src/page/index.d.ts +1 -0
  456. package/types/src/page/page.d.ts +31 -0
  457. package/types/src/progress/progress.d.ts +2 -2
  458. package/types/src/qr-scanner/index.d.ts +1 -0
  459. package/types/src/qr-scanner/qr-scanner.d.ts +26 -0
  460. package/types/src/select/select.d.ts +1 -1
  461. package/types/src/theme/index.d.ts +1 -0
  462. package/types/src/theme/theme-audio-player.d.ts +100 -0
  463. package/types/src/theme/theme-controller-boat.d.ts +1 -0
  464. package/types/src/theme/theme.component.d.ts +1 -1
  465. package/types/src/types/index.d.ts +1 -0
  466. package/types/src/types/mood-audio.types.d.ts +173 -0
  467. package/types/src/typography/typography.d.ts +1 -0
  468. package/dist/area.component-BzjJiNTJ.js.map +0 -1
  469. package/dist/area.component-FL_IUylM.cjs +0 -12
  470. package/dist/area.component-FL_IUylM.cjs.map +0 -1
  471. package/dist/avatar-B_uJN9WV.cjs +0 -288
  472. package/dist/avatar-B_uJN9WV.cjs.map +0 -1
  473. package/dist/avatar-C8P4lVfa.js.map +0 -1
  474. package/dist/context-create-BJkkLr1D.cjs +0 -2
  475. package/dist/context-create-BJkkLr1D.cjs.map +0 -1
  476. package/dist/context-create-BvxbWTgj.js.map +0 -1
  477. package/dist/date-range-Cm0TCfwu.js +0 -664
  478. package/dist/date-range-Cm0TCfwu.js.map +0 -1
  479. package/dist/date-range-Cy97kOP_.cjs +0 -134
  480. package/dist/date-range-Cy97kOP_.cjs.map +0 -1
  481. package/dist/delay-BINGOQ7f.js.map +0 -1
  482. package/dist/delay-CXFIM6qK.cjs.map +0 -1
  483. package/dist/details-CLRikV4s.cjs +0 -64
  484. package/dist/details-CLRikV4s.cjs.map +0 -1
  485. package/dist/details-bgq2X_hO.js +0 -115
  486. package/dist/details-bgq2X_hO.js.map +0 -1
  487. package/dist/dialog-content-B59ekS_y.cjs +0 -85
  488. package/dist/dialog-content-B59ekS_y.cjs.map +0 -1
  489. package/dist/dialog-content-Cu7fqN8Y.js +0 -256
  490. package/dist/dialog-content-Cu7fqN8Y.js.map +0 -1
  491. package/dist/dialog-service-B4nR8Em5.cjs +0 -2
  492. package/dist/dialog-service-B4nR8Em5.cjs.map +0 -1
  493. package/dist/dialog-service-Bege4HF4.js +0 -140
  494. package/dist/dialog-service-Bege4HF4.js.map +0 -1
  495. package/dist/flex-CYQU6Pf8.js +0 -260
  496. package/dist/flex-CYQU6Pf8.js.map +0 -1
  497. package/dist/flex-DytMcHmq.cjs +0 -43
  498. package/dist/flex-DytMcHmq.cjs.map +0 -1
  499. package/dist/icon-C8Q_XMtJ.cjs +0 -49
  500. package/dist/icon-C8Q_XMtJ.cjs.map +0 -1
  501. package/dist/icon-Y2qLOFqe.js.map +0 -1
  502. package/dist/icon-button-CJ6AVTv9.js +0 -156
  503. package/dist/icon-button-CJ6AVTv9.js.map +0 -1
  504. package/dist/icon-button-IdG1NVgA.cjs +0 -65
  505. package/dist/icon-button-IdG1NVgA.cjs.map +0 -1
  506. package/dist/input-DDCFZ3cr.js.map +0 -1
  507. package/dist/input-UyknNHNr.cjs +0 -51
  508. package/dist/input-UyknNHNr.cjs.map +0 -1
  509. package/dist/menu-CUKV4pVJ.js +0 -61
  510. package/dist/navigation-rail-CYKfvZs9.js.map +0 -1
  511. package/dist/navigation-rail-DXr4NJnN.cjs.map +0 -1
  512. package/dist/notification-service-CZ56fXew.js +0 -532
  513. package/dist/notification-service-CZ56fXew.js.map +0 -1
  514. package/dist/notification-service-DQGs9O0f.cjs +0 -143
  515. package/dist/notification-service-DQGs9O0f.cjs.map +0 -1
  516. package/dist/notify-KvHZ-8z9.js.map +0 -1
  517. package/dist/notify-VkDx6hMZ.cjs.map +0 -1
  518. package/dist/progress-D5kgn2Fg.js +0 -58
  519. package/dist/progress-D5kgn2Fg.js.map +0 -1
  520. package/dist/progress-yFxoJDYf.cjs +0 -35
  521. package/dist/progress-yFxoJDYf.cjs.map +0 -1
  522. package/dist/ripple-QoNZUUw_.js +0 -148
  523. package/dist/ripple-QoNZUUw_.js.map +0 -1
  524. package/dist/ripple-Ujq_REH4.cjs +0 -16
  525. package/dist/ripple-Ujq_REH4.cjs.map +0 -1
  526. package/dist/select-C-Kv7ey_.cjs.map +0 -1
  527. package/dist/select-DSTQ-Zau.js.map +0 -1
  528. package/dist/sheet.service-BNz-ird-.cjs +0 -2
  529. package/dist/sheet.service-BNz-ird-.cjs.map +0 -1
  530. package/dist/sheet.service-DuVcXyOB.js.map +0 -1
  531. package/dist/spinner-CSPJs8CL.cjs.map +0 -1
  532. package/dist/spinner-DAF-hCvQ.js.map +0 -1
  533. package/dist/suggestion-chip-CYu-4xrL.js.map +0 -1
  534. package/dist/suggestion-chip-Cj8gwZqq.cjs.map +0 -1
  535. package/dist/surface-DTOK-0E4.js.map +0 -1
  536. package/dist/surface-VX_THUHv.cjs.map +0 -1
  537. package/dist/tailwind.mixin-JFXu3GSo.cjs +0 -2
  538. package/dist/tailwind.mixin-wLaKUxf1.js +0 -67
  539. package/dist/textarea-B6LDhRed.cjs +0 -44
  540. package/dist/theme-controller-boat-CCBNOGxF.cjs +0 -64
  541. package/dist/theme-controller-boat-CCBNOGxF.cjs.map +0 -1
  542. package/dist/theme-controller-boat-CVS77gnH.js.map +0 -1
  543. package/dist/typography-Ck-OdI83.cjs.map +0 -1
  544. package/dist/typography-DdG9aEAg.js.map +0 -1
  545. package/types/src/notification/notification-audio-generator.d.ts +0 -45
  546. package/types/src/notification/notification-audio.d.ts +0 -79
  547. package/types/src/notification/notification-container.d.ts +0 -48
@@ -1 +1 @@
1
- {"version":3,"file":"typewriter-Dt1Js2lP.js","sources":["../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: inline-block;\n\t}\n\n\t#typewriter {\n\t\tposition: relative;\n\t}\n\n\t/* Enhanced cursor with glow effect */\n\t#typewriter :global(.ti-cursor) {\n\t\tanimation: cursor-pulse 1.2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n\t\tcolor: currentColor;\n\t\tfilter: drop-shadow(0 0 8px currentColor);\n\t}\n\n\t@keyframes cursor-pulse {\n\t\t0%, 100% {\n\t\t\topacity: 1;\n\t\t\ttransform: scale(1);\n\t\t}\n\t\t50% {\n\t\t\topacity: 0.3;\n\t\t\ttransform: scale(0.95);\n\t\t}\n\t}\n\n\t/* Character entrance animation */\n\t#typewriter :global(.ti-container *) {\n\t\tanimation: char-entrance 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) backwards;\n\t}\n\n\t@keyframes char-entrance {\n\t\t0% {\n\t\t\topacity: 0;\n\t\t\ttransform: scale(0.3) translateY(10px);\n\t\t\tfilter: blur(4px);\n\t\t}\n\t\t50% {\n\t\t\topacity: 0.8;\n\t\t\ttransform: scale(1.1) translateY(-2px);\n\t\t}\n\t\t100% {\n\t\t\topacity: 1;\n\t\t\ttransform: scale(1) translateY(0);\n\t\t\tfilter: blur(0);\n\t\t}\n\t}\n\n\t/* Subtle character wobble on appear */\n\t#typewriter :global(.ti-container *:nth-child(odd)) {\n\t\tanimation: char-entrance 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) backwards,\n\t\t char-wobble 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) 0.15s backwards;\n\t}\n\n\t@keyframes char-wobble {\n\t\t0%, 100% {\n\t\t\ttransform: rotate(0deg);\n\t\t}\n\t\t25% {\n\t\t\ttransform: rotate(2deg);\n\t\t}\n\t\t75% {\n\t\t\ttransform: rotate(-2deg);\n\t\t}\n\t}\n\n\t/* Deletion animation - fade out and scale down */\n\t#typewriter :global(.ti-container .deleting) {\n\t\tanimation: char-delete 0.2s cubic-bezier(0.4, 0, 1, 1) forwards;\n\t}\n\n\t@keyframes char-delete {\n\t\t0% {\n\t\t\topacity: 1;\n\t\t\ttransform: scale(1);\n\t\t\tfilter: blur(0);\n\t\t}\n\t\t50% {\n\t\t\topacity: 0.5;\n\t\t\ttransform: scale(0.8) translateY(-3px);\n\t\t}\n\t\t100% {\n\t\t\topacity: 0;\n\t\t\ttransform: scale(0.4) translateY(-8px);\n\t\t\tfilter: blur(3px);\n\t\t}\n\t}\n\n\t/* Gradient text effect on typed text */\n\t#typewriter :global(.ti-container) {\n\t\tbackground: linear-gradient(\n\t\t\t90deg,\n\t\t\tcurrentColor 0%,\n\t\t\tcurrentColor 70%,\n\t\t\ttransparent 100%\n\t\t);\n\t\t-webkit-background-clip: text;\n\t\tbackground-clip: text;\n\t\tanimation: gradient-shift 3s ease-in-out infinite;\n\t}\n\n\t@keyframes gradient-shift {\n\t\t0%, 100% {\n\t\t\tfilter: brightness(1) saturate(1);\n\t\t}\n\t\t50% {\n\t\t\tfilter: brightness(1.15) saturate(1.2);\n\t\t}\n\t}\n\n\t/* Smooth transitions for all text */\n\t#typewriter * {\n\t\ttransition: opacity 0.15s ease-out, transform 0.15s cubic-bezier(0.34, 1.56, 0.64, 1);\n\t}\n`) {\n\t/**\n\t * Typing speed in milliseconds per character.\n\t */\n\t@property({ type: Number })\n\tspeed: number = 35\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 = 20\n\n\t/**\n\t * Only animate once per session.\n\t */\n\t@property({ type: Boolean }) once = true\n\n\t/**\n\t * Loop the animation infinitely (overrides once).\n\t */\n\t@property({ type: Boolean }) loop = false\n\n\t/**\n\t * Default pause duration for cycling (ms).\n\t */\n\t@property({ type: Number }) cyclePause = 1500\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\tloop: this.loop,\n\t\t\tafterComplete: () => {\n\t\t\t\tif (this.once && !this.loop) {\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 (unless looping)\n\t\t\t\tif (!this.loop) {\n\t\t\t\t\tthis.typewriterContainer.style.setProperty('--ti-cursor-display', 'none')\n\t\t\t\t}\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 - skip whitespace-only text nodes\n\t\t\t\tconst textContent = node.textContent || ''\n\t\t\t\tif (textContent.trim()) {\n\t\t\t\t\tthis.typeItInstance?.type(textContent)\n\t\t\t\t}\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\tconst cycle = element.getAttribute('cycle')\n\n\t\t// Handle cycle attribute - simple pipe-separated list\n\t\tif (cycle) {\n\t\t\tconst items = cycle.split('|').map(item => item.trim())\n\t\t\tthis._processCycle(items, element)\n\t\t\treturn\n\t\t}\n\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 * Processes cycling text with auto-calculated delete counts.\n\t */\n\tprivate _processCycle(items: string[], element: HTMLElement) {\n\t\tif (items.length === 0) return\n\n\t\tconst customPause = element.getAttribute('pause')\n\t\tconst pauseDuration = customPause ? parseInt(customPause, 10) : this.cyclePause\n\n\t\t// Type each item with automatic deletion\n\t\titems.forEach((item, index) => {\n\t\t\t// Type the item\n\t\t\tthis.typeItInstance?.type(item)\n\n\t\t\t// Pause after typing (except after last item when not looping)\n\t\t\tif (index < items.length - 1 || this.loop) {\n\t\t\t\tthis.typeItInstance?.pause(pauseDuration)\n\t\t\t}\n\n\t\t\t// Delete back to start (except for last item when not looping)\n\t\t\tif (index < items.length - 1) {\n\t\t\t\tthis.typeItInstance?.delete(item.length)\n\t\t\t} else if (this.loop) {\n\t\t\t\t// For looping, delete and start over\n\t\t\t\tthis.typeItInstance?.delete(item.length)\n\t\t\t}\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","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","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","setUpCursor","typeitId","generateQueue","go","attachCursor","bind","IntersectionObserver","entries","observer2","entry","isIntersecting","unobserve","threshold","observe","shouldRemoveCursor","clearTimeout","rebuild","is","property","elementIsInput","string","actionOpts","instant","bookEndQueueItems","charsAsQueueItems","outerHTML","getPace","nodeType","Node","TEXT_NODE","itemsToQueue","movementArg","numberOfSteps","derivedCursorPosition","directionalStep","milliseconds","numCharacters","num","typeableQueueItems","rounds","freeze","fire","then","flush","getOptions","#y","empty","#r","remember","qKey","queueKey","e","#d","printedCharacters","min","max","allChars","newCursorPosition","nodeToInsertBefore","#g","#b","#w","callback","silent","setTimeout","cursorSelector","computedStyles","getComputedStyle","customProperties","reduce","accumulator","duration","#a","#u","#x","#o","newOptions","#p","#i","type","splitItems","buildOptions","defaultFrames","defaultOptions","#C","existingMarkup","replace","trim","split","concat","#e","className","style","visibility","#S","items","#h","originalTarget","character","textContent","target","tagName","cursorNode","#f","slice","#n","rootElement","nodeParent","t","#l","#c","#k","#v","#m","TypewriterElement","$LitElement","css","super","arguments","autoStart","once","cyclePause","typeItInstance","sessionKey","disconnectedCallback","_destroyTypeIt","_startTyping","generateSessionKey","sessionStorage","getItem","shadowRoot","removeAttribute","typewriterContainer","typeItOptions","setItem","dispatchEvent","CustomEvent","bubbles","composed","setProperty","_getSlottedNodes","HTMLElement","_processCustomElement","intersection$","host","subscribe","slotContent","_getSlottedElements","join","hashContent","error","action","getAttribute","cycle","_processCycle","parseInt","break","customPause","pauseDuration","render","__decorateClass","prototype","consume","context","delayContext","String","query","queryAssignedNodes","flatten","queryAssignedElements","customElement"],"mappings":";;;;;;;;;;;AACA,MAAMA,IAAWC,CAAAA,MAAUC,MAAMF,QAAQC,IAEnCE,IAAWC,CAAAA,MAAUJ,EAAQI,CAAAA,IAASA,IAAQ,CAACA,CAAAA,GAyD/CC,IAAiB,kBACjBC,IAAe,aAEfC,KAAmB,EACvBC,SAAAA,IACAC,WAAAA,IACAC,YACAC,WAAAA,GAAW,GAEPC,IAAkB,EACtBC,YAAAA,IACAC,QAAQ,EACNC,WAAAA,IACAC,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,kBAIZC,YAAY,KACZC,aAAa,KACbC,aAAa,MACbC,MAAAA,IACAC,cACAC,MAAAA,IACAC,WAAW,KACXC,iBAAiB,KACjBC,OAAO,KACPC,YAAY,KACZC,aAAAA,IACAC,SAAS,CAAA,GACTC,kBAAAA,IACAC,cAAc;GAEdC,aAAa,MAAA;AAAA,GAEbC,YAAY,MAAA;AAAA,GAEZC,WAAW,MAAA;AAAA,GAEXC,eAAe,MAAA;AAAA,EAAA,GAGXC,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,CAAAA,CAAAA,GACtCJ,SAASQ,KAAKD,YAAYD,CAAAA;AAAAA,GAGtBG,IAAkBC,CAAAA,OACjB1D,EAAQ0D,CAAAA,MACXA,IAAW,CAACA,IAAW,GAAGA,IAAW,CAAA,IAEhCA,IAGHC,IAAgB,CAACvD,GAAOwD,MACrBC,KAAKC,IACVD,KAAKE,OAAAA,KAAY3D,IAAQwD,KAASxD,IAAQwD,OAAWxD,IAAQwD,EAAAA;AAIjE,IAAIA,IAASI,CAAAA,MAAQA,IAAM;AAU3B,MAAMC,IAAWD,CAAAA,MAAQ9D,MAAMgE,KAAKF,CAAAA;AAEpC,IAAIG,IAAmBC,CAAAA,OACrB,CAAA,GAAIA,EAAQC,UAAAA,EAAYC,QAASC,OAAAA;AAC/B,MAAIA,EAAMC,UAKR,QAJA,CAAA,GAAID,EAAMC,SAAAA,EAAWF,QAASG;AAC5BF,MAAMG,WAAWC,aAAa1B,EAAewB,CAAAA,GAAIF,CAAAA;AAAAA,EAAAA,CAAAA,GAAAA,KAEnDA,EAAMK,OAAAA;AAGRT,EAAAA,EAAgBI,CAAAA;AAAAA,CAAAA,GAEXH;AAGT,MAAMS,IAAiB3B,CAAAA;AACrB,MAAI4B,IAAM9B,SAAS+B,eAAeC;AAElC,SADAF,EAAIG,KAAKC,YAAYhC,GACdiB,EAAgBW,EAAIG,IAAAA;AAAAA;AAG7B,SAASE,EAAiBf,GAASgB,IAAAA,IAAuBC,QAAsB;AAC9E,MAcIC,GAdAxE,IAASsD,EAAQmB,cAAc,IAAIjF,CAAAA,EAAAA,GACnCkF,IAASxC,SAASyC,iBAAiBrB,GAASsB,WAAWC,UAAU,EACnEC,YAAaC,CAAAA,MAAAA;AACX,QAAI/E,KAAUuE,GAAqB;AACjC,UAAIQ,EAAKC,WAAWC,SAASzF,CAAAA,EAC3B,QAAOoF,WAAWM;AAEpB,UAAIlF,EAAOiF,SAASF,GAClB,QAAOH,WAAWO;AAAAA,IAEtB;AACA,WAAOJ,EAAKC,WAAWC,SAASzF,CAAAA,IAAgBoF,WAAWO,gBAAgBP,WAAWM;AAAAA,EAAAA,EAAAA,CAAAA,GAItFE,IAAQ,CAAA;AACZ,SAAOZ,IAAWE,EAAOF,aAClBA,CAAAA,EAASa,mBACZb,EAASa,iBAAiBb,EAASZ,aAErCwB,EAAME,KAAKd,CAAAA;AAEb,SAAOF,IAAgBc,EAAMG,QAAAA,IAAYH;AAC3C;AAIA,SAASI,GAAuBC,GAAKC,QAAS;AAC5C,SAAOA,IAHArB,EAAiBN,EAGU0B,CAAAA,CAAAA,IAAOtC,EAAQsC,CAAAA,EAAKpF,IAAI8B,CAAAA;AAC5D;AAEA,MAAMwD,KAAiB,CAAA,EACrBC,OAAAA,GACAC,UAAAA,GACAC,YAAAA,GACAC;AAEA,WAASC,IAAIJ,IAAQ,GAAGI,IAAIH,IAAW,GAAGG,IACxCD,CAAAA,EAAQD,EAAWE,CAAAA,EAAG,CAAA,CAAA;AAAA,GAIpBC,IAAY3G,CAAAA,MAAU4G,OAAOC,UAAU7G,CAAAA,GAEvC8G,IAAuB,CAAA,EAC3BN,YAAAA,GACAO,UAAAA,GACAC,gBAAAA,GACAC;AAEA,MAAIN,EAASI,CAAAA,EACX,QAAA,KAAOA;AAET,MAAIG,IAAgB,IAAIC,OA/Jd,OA+J0B,GAAA,EAAKC,KAAKH,IAC1CI,IAAgBN,IAAW,CAAA,GAAIP,CAAAA,EAAYP,UAAUqB,UAAU,CAAA,EAAGC,MAAAA,EAAAA,MAAAA;AACpE,QAAIC,IAAgBD,EAAKC,eACrBC,IAAgBD,EAAcE,QAAQX,CAAAA;AAC1C,WAAA,EAAA,CAAIG,KAAAA,CAAiBO,MAGdA,KAAiBD,EAAcG,WAAWC,WAAWL,CAAAA;AAAAA,EAAAA,CAAAA,IAAAA;AAM9D,SAJIF,IAAgB,MAClBA,IAAgBH,IAAgB,IAAIV,EAAWqB,SAAS,IAGnDR,IAAgBL,KADVE,IAAgB,IAAI;AAAA,GAS7BY,IAAY,CAAC9H,GAAO+H,MAAU,IAAIjI,MAAMiI,CAAAA,EAAOzG,KAAKtB,CAAAA;AAE1D,IAAIgI,IAAeC,CAAAA,MACV,IAAIC,QAASC,CAAAA,MAAAA;AAClBC,wBAAsBC;AACpBF,IAAAA,EAAAA,MAAcF,EAAAA,CAAAA;AAAAA,EAAAA,CAAAA;AAAAA,CAAAA,GAKhBK,IAA2BtE,CAAAA,MACtBA,GAASuE,cAAAA,EAAgBC,KAAM3H,CAAAA,MAC7BA,EAAUoC,OAAOe,EAAQyE,QAAQC,aAAAA,GAIxCC,IAAqB,CAAA,EACvBjI,QAAAA,GACAI,QAAAA,GACAI,SAAAA,EAAAA,MAAAA;AAEA,MAAIL,IAAYH,EAAOkI,QAAQ9H,GAAQI;AAQvC,SAPAL,EAAUgI,MAAAA,GACVhI,EAAUoC,KAAKvC,EAAO+H,QAAQC,eAC9BV,EAAY,MAAA;AACVA,IAAAA,EAAY,MAAA;AACVnH,MAAAA,EAAUiI;;MAGPjI;AAAAA,GA2BLkI,IAAWC,CAAAA,MAAcA,EAAUC,MAAMC,KAAK,IAAA,GAC9CC,KAAWd,SACb/B,OAAAA,GACAE,YAAAA,GACA4C,MAAAA,GACA1I,QAAAA,GACA2I,eAAAA,EAAAA,MAAAA;AAEA,MAAIL,IAAYxC,EAAWF,GAAO,CAAA,GAC9BgD,IAAe,CAAA,GACfC,IAAYjD,GACZkD,IAAaR,GACbS,IAAkB,MAAMD,MAAeA,EAAWE,OAClDC,IAAoBX,EAAUW,kBAAAA,KAAuBN,EAAc1I;AACvE,SAAO8I,MACLH,CAAAA,EAAatD,KAAKwD,CAAAA,GAClBC,EAAAA,KAAqBF,KACrBC,IAAahD,EAAW+C,CAAAA,IAAa/C,EAAW+C,GAAW,CAAA,IAAK;AAElE,MAAID,EAAazB,OAMf,QAAA,MALMG,EAAYK,YAAAA;AAChB,aAASuB,KAAKN,EAAAA,OACNP,EAAQa;MAGXL,IAAY;AAErB,MACIrI,GADAL,IAAYyH,EAAwB5H,CAAAA;AAqBxC,SAnBIG,MACFK,IAAU,EAAA,GACLL,EAAUgJ,OAAOC,qBACpBJ,OAAOC,IAAoBN,EAAczI,iBAAiB,YAGxDwI,EAAKf,YAAAA;AACLxH,IAAAA,KAAa8I,KACf9I,EAAUkJ,OAAAA,GAAAA,MAEN/B,EAAY,MAAA;AAChBe,MAAAA,EAAQC,CAAAA;AAAAA,IAAAA,CAAAA;AAAAA,EAAAA,GAETA,EAAUU,KAAAA,GAAAA,OAlEc,CAAA,EAC3BhJ,WACAQ,SAAAA,GACAmI,eAAAA,EAAAA,MAAAA;AAEA,QAAA,CAAK3I,KAAAA,CAAW2I,EAAe;AAC/B,QACIW,GADAnJ,IAAYyH,EAAwB5H,CAAAA;AAEpCG,IAAAA,MACFK,EAAQwI,QAAQ7I,EAAUgJ,OAAOC,kBAAAA,EAAoBJ,OACrDM,IAAiBnJ,EAAUoJ,aAC3BpJ,EAAUkJ,OAAAA;AAEZ,QAAIG,IAAevB,EAAmB,EACpCjI,QAAAA,GACAI,QAAQuI,EAAcxI,UAAUC,QAChCI,SAAAA,EAAAA,CAAAA;AAKF,WAHI8I,MACFE,EAAaD,cAAcD,IAEtBE;AAAAA,EAAAA,GA8CsB,EAC3BxJ,QAAAA,GACAQ,YACAmI,eAAAA,EAAAA,CAAAA,GAEK/C;AAAAA;AAGT,MAiBM6D,IAAWxH,CAAAA,MACR,WAAWA;AAGpB,IASIyH,IAAuBC,CAAAA,MACH,OAARA,KAAQ,aAAaA,EAAAA,IAAQA,GAGzCC,IAAS,CAACvD,GAAU/C,IAAUpB,UAAU2H,IAAAA,OACnCvG,EAAQ,mBAAgBuG,IAAM,QAAQ,GAAA,EAAMxD,CAAAA;AAuBrD,MAEMyD,IAAQ,CAACC,GAAaC,MAAWC,OAAOC,OAAO,CAAA,GAAIH,GAAaC,CAAAA;AA+CtE,IAAIG,KAAmB,EACrB,eAAe,IACf,eAAe,IACf,aAAa,IACb,cAAc,IACd,eAAe,IACfC,OAAO,IACPC,WAAW,sBAAA;AAuCb,MAAMC,GAAAA;AAAAA,EACJhH;AAAAA,EACAiH;AAAAA,EACAjE;AAAAA,EACAkE;AAAAA,EACAC,WAAW,EACT/K,SAAAA,IACAC,WAAAA,IACAC,QAAAA,IACAC,eACA6K,QAAAA,GAAQ;AAAA,EAEVC;AAAAA,EACApI;AAAAA,EACAqI;AAAAA,EACA5K;AAAAA,EACA6K,gBAAgB;AAAA,EAChBC,WAAW,MAAA;AAAA,EAAA;AAAA,EAEX,YAAYxH,GAAS9C,IAAU;AArEjC,QAA2BrB;AAsEvB4L,SAAKJ,OAAOb,EAAMhK,GAAiBU,CAAAA,GACnCuK,KAAKzH,UAtEiB,QADCnE,IAuEUmE,MAtEX,WAAWsG,EAAOzK,CAAAA,IAASA,GAuEjD4L,KAAKR,WAAW,CAAA,GAChBQ,KAAKzE,iBAAiB,GACtByE,KAAKD,WAAW,MAAA;AAAA,IAAA,GAEhBC,KAAKP,0BAA0B,MAC/BO,KAAKN,WAAWX,EAAM,CAAA,GAAIrK,EAAAA,GAC1BsL,KAAKxI,KAtKkBQ,KAAKE,OAAAA,EAAS+H,SAAAA,EAAWC,UAAU,GAAG,CAAA,GAuK7DF,KAAKH,SA9gBG,SAASM,GAAAA;AACnB,UAAIC,IAAM,SAASC;AAIjB,eAHA/L,EAAQ+L,CAAAA,EAAO5H,QAAS6H,CAAAA,MACfC,EAAGC,IAAIC,OAAOH,EAAKxE,MAAM4E,SAAAA,GAAYC,EAAe,EAAA,GAAKL,QAE3DN;AAAAA,MACT,GAMIW,IAAkBpD,CAAAA,OACpBA,EAAUW,oBAAoB,WAAA;AAC5B,eAAO0C,GAAQZ,KAAKa,YAAYb,KAAKc,cAAcd,KAAKe;AAAAA,MAC1D,GACOxD,IASLyD,IAAW,MAAMT,GACjBU,IAAY,MAAM5M,MAAMgE,KAAKkI,EAAGW,OAAAA,CAAAA,GAahCX,IAAqB,oBAAIY;AAE7B,aADAf,EAAID,IACG,EACLC,KAAAA,GACAI,KAnCQ,SAAS3F,GAAOuG,GAAAA;AACxB,YAAIC,IAAO,CAAA,GAAId,EAAGc,KAAAA,CAAAA;AAClBd,QAAAA,EAAGC,IAAIa,EAAKxG,CAAAA,GAAQ8F,EAAeS,CAAAA,CAAAA;AAAAA,MACrC,GAiCEE,MAvBS,WAAA;AACTf,QAAAA,IAAqB,oBAAIY,OACzBf,EAAID,CAAAA;AAAAA,MACN,GAqBEoB,MAPS,CAACC,GAAKC,IAAAA,OAA0BA,IAAgBlB,EAAGmB,OAAOF,CAAAA,IAAOjB,EAAGoB,IAAIH,GAAKD,OAAAA,IAQtFK,OA5BU,WAAA;AACVrB,QAAAA,EAAG9H,QAAS2I,CAAAA,MAAAA,OAAgBA,EAAKG,IAAAA;AAAAA,MACnC,GA2BEM,SApBaL,CAAAA,MAAQjB,EAAGmB,OAAOF,CAAAA,GAqB/BM,UAXa,CAAChD,IAAAA,OAAgBA,IAAMmC,EAAAA,IAAcA,EAAAA,EAAYc,OAAQ9G,CAAAA,OAAOA,EAAEsG,IAAAA,GAY/EP,UAAAA,GACAgB,aA3CgB,MAAMf,EAAAA,EAAYc,OAAQxN,CAAAA,MAAUA,EAAMsM,QAAAA,GA4C1DoB,sBAvByB,MAAA;AACzB,cAAMC,IAAU,CAAA;AAChB,iBAAK,CAAI,EAAG3N,MAAUyM,EAAAA,EACfzM,CAAAA,EAAMgN,QACTW,EAAQ3H,KAAKhG,CAAAA;AAGjB,eAAO2N;AAAAA,MAAAA,EAAAA;AAAAA,IAkBX,GAyduB,CAAC,EAAEjE,OAAO+B,KAAKJ,KAAKrJ,WAAAA,CAAAA,CAAAA,GACvCyJ,KAAAA,GAAmBvK,IACnBuK,KAAK/K,SAAS+K,KAAAA,GAAKmC,GACnBnC,KAAKzH,QAAQyE,QAAQoF,WAAWpC,KAAKxI,IACrCF,EAAiBN,EAAAA,GACbgJ,KAAKJ,KAAKnJ,QAAQ2F,UACpB4D,KAAAA,GAAKqC;AAAAA,EAET;AAAA,EAIA,KAAAC;AACE,WAAItC,KAAKN,SAAS/K,UACTqL,QAETA,KAAAA,GAAKuC,GACAvC,KAAKJ,KAAKlJ,oBAvMM6B,IA2MLyH,KAAKzH,SA3MSiF,IA2MAwC,KAAAA,GAAWwC,KAAKxC,IAAAA,GA1MjC,IAAIyC,qBACjB,CAACC,GAASC,MAAAA;AACRD,QAAQjK,QAASmK,CAAAA,MAAAA;AACXA,QAAAA,EAAMC,mBACRrF,EAAAA,GACAmF,EAAUG,UAAUvK,CAAAA;AAAAA,MAAAA,CAAAA;AAAAA,IAAAA,GAI1B,EAAEwK,WAAW,KAENC,QAAQzK,CAAAA,GAgMRyH,SAJLA,KAAAA,MACOA;AAzMW,QAACzH,GAASiF;AAAAA,EA6MhC;AAAA,EACA,QAAQyF,IAAAA;AACNjD,SAAKR,YAA2BQ,KAAKR,SA9T9B/G,QAAQyK,YAAAA,GACV,CAAA,IA8TLvE,EAAoBsE,CAAAA,KAAuBjD,KAAK/K,UAAU+K,KAAAA,GAAiBA,KAAK/K,MAAAA,GAChF+K,KAAKN,SAAS5K,YAAAA;AAAAA,EAChB;AAAA,EACA,MAAMqO,GAAAA;AAAAA,KACHnD,KAAKoD,GAAG,WAAA,KAAgBpD,KAAK6B,QAAAA,GAC1BsB,KACFnD,KAAKH,MAAMyB,KAAAA,GACX6B,EAAQnD,IAAAA,KAERA,KAAKH,MAAM+B,MAAAA,GAEb5B,KAAKzE,iBAAiB;AACtB,aAAS8H,KAAYrD,KAAKN,SACxBM,MAAKN,SAAS2D;AAGhB,WADArD,KAAKzH,QAAQyH,KAAAA,GAAKsD,IAAoB,UAAU,WAAA,IAAe,IACxDtD;AAAAA,EACT;AAAA,EACAoD,KAAK,SAAS5B;AACZ,WAAOxB,KAAKN,SAAS8B,CAAAA;AAAAA,EACvB;AAAA,EACA,KAAK+B,GAAQC,IAAa;AACxBD,QAAS5E,EAAoB4E;AAC7B,QAAA,EAAIE,SAAEA,EAAAA,IAAYD,GACdE,IAAoB1D,KAAAA,GAAwCwD,CAAAA,GAE5DG,IADQlJ,GAAuB8I,GAAQvD,KAAKJ,KAAK3J,IAAAA,EACvBX,IAAKwG,CAAAA,MAAAA;AACjC,aAAO,EACL0B,MAAM,MAAMwC,KAAAA,GAAWlE,CAAAA,GACvBA,SACAmC,OAAOwF,MApLWvM,IAoLiB4E,GApLV,sBAAsBH,KAAKzE,EAAG0M,SAAAA,KAoLZ,IAAI5D,KAAAA,GAAK6D,GACpDhD,UAAU/E,EAAKgI,aAAaC,KAAKC,UAAAA;AArLhB,UAAC9M;AAAAA,IAAAA,CAAAA,GAwLlB+M,IAAe,CACjBP,EAAkB,CAAA,GAClB,EAAElG,MAAMZ,YAAAA,MAAkBoD,KAAKJ,KAAKjJ,aAAa4M,GAAQvD,IAAAA,EAAAA,GAAAA,GACtD2D,GACH,EAAEnG,MAAMZ,YAAAA,MAAkBoD,KAAKJ,KAAKhJ,YAAY2M,GAAQvD,IAAAA,EAAAA,GACxD0D,EAAkB,CAAA,CAAA;AAEpB,WAAO1D,KAAAA,GAAqBiE,GAAcT,CAAAA;AAAAA,EAC5C;AAAA,EACA,MAAMA,IAAa;AACjB,WAAOxD,KAAAA,GACL,EACExC,MAAM,MAAMwC,KAAAA,GAAW/I,EAAc,QACrC4J,UAAAA,GAAU,GAEZ2C,CAAAA;AAAAA,EAEJ;AAAA,EACA,KAAKU,GAAaV,IAAa;AAC7BU,QAAcvF,EAAoBuF,CAAAA;AAClC,QAAIR,IAAoB1D,KAAAA,GAAwCwD,CAAAA,GAAAA,EAC5DC,SAAEA,GAAOjI,IAAEA,EAAAA,IAAOgI,GAClBW,IAAgB9I,EAAqB,EACvCN,YAAYiF,KAAKH,MAAMmC,YAAAA,GACvB1G,UAAU4I,MAAgB,OAAO,KAAKA,GACtC1I,IAAAA,GACAD,gBAAgByE,QAAKoE,CAAAA,GAEnBC,IAAkBF,IAAgB,IAAA,KAAS;AAE/C,WADAnE,KAAKP,0BAA0BO,KAAAA,KAA8BmE,GACtDnE,KAAAA,GACL,CACE0D,EAAkB,CAAA,GAAA,GACfrH,EACD,EACEmB,MAAM,MAAMwC,KAAAA,GAAWqE,CAAAA,GACvBpG,OAAOwF,IAAU,IAAIzD,QAAK6D,GAC1B/C,YAAAA,GAAY,GAEd9I,KAAKC,IAAIkM,CAAAA,CAAAA,GAEXT,EAAkB,CAAA,CAAA,GAEpBF,CAAAA;AAAAA,EAEJ;AAAA,EACA,KAAKhG,GAAMgG,IAAa;AACtB,QAAIE,IAAoB1D,QAAwCwD,CAAAA;AAChE,WAAOxD,KAAAA,GACL,CAAC0D,EAAkB,CAAA,GAAI,EAAElG,MAAM,MAAMA,EAAKwC,IAAAA,EAAAA,GAAS0D,EAAkB,CAAA,CAAA,GACrEF,CAAAA;AAAAA,EAEJ;AAAA,EACA,QAAQ5D,GAAM4D,IAAa;AAGzB,WAFA5D,IAAOjB,EAAoBiB,CAAAA,GAC3BI,QAAoBJ,CAAAA,GACbI,KAAAA,GAAqB,CAAA,GAAIwD,CAAAA;AAAAA,EAClC;AAAA,EACA,MAAMc,GAAcd,IAAa;AAC/B,WAAOxD,KAAAA,GACL,EAAE/B,OAAOU,EAAoB2F,CAAAA,EAAAA,GAC7Bd,CAAAA;AAAAA,EAEJ;AAAA,EACA,OAAOe,IAAgB,MAAMf,IAAa,CAAA,GAAA;AACxCe,QAAgB5F,EAAoB4F,CAAAA;AACpC,QAAIb,IAAoB1D,KAAAA,GAAwCwD,CAAAA,GAC5DgB,IAAMD,GAAAA,EACNd,SAAEA,GAAOjI,IAAEA,EAAAA,IAAOgI,GAClBiB,IAAqBzE,KAAKH,MAAMmC,YAAAA,GAChC0C,IACEF,MAAQ,OACHC,EAAmBrI,SAExBlB,EAASsJ,CAAAA,IACJA,IAEFnJ,EAAqB,EAC1BN,YAAY0J,GACZnJ,UAAUkJ,GACVjJ,gBAAgByE,KAAAA,IAChBxE,IAAAA,EAAAA,CAAAA;AAGJ,WAAOwE,KAAAA,GACL,CACE0D,EAAkB,CAAA,GAAA,GACfrH,EACD,EACEmB,MAAMwC,KAAAA,GAAawC,KAAKxC,IAAAA,GACxB/B,OAAOwF,IAAU,IAAIzD,KAAAA,GAAc,CAAA,GACnCe,WAAAA,MAEF2D,CAAAA,GAEFhB,EAAkB,CAAA,CAAA,GAEpBF,CAAAA;AAAAA,EAEJ;AAAA,EACA,SAAAmB;AACE3E,SAAKN,SAAS7K,SAAAA;AAAAA,EAChB;AAAA,EAUA,MAAM2H,IAAK,MAAA;AAET,WADAwD,KAAKF,gBAAgBtD,KAAMwD,KAAKF,eAC5BE,KAAKN,SAASC,WAGlBK,KAAAA,GAAKuC,GACLvC,KAAAA,GAAK4E,EAAM,EAAOC,KAAK,MAAA;AACrB,UAAI7E,KAAKH,MAAMoC,qBAAAA,EAAuB7F,SAAS,EAC7C,QAAO4D,KAAK8E,MAAAA;AAEd9E,WAAKF,iBACLE,KAAKF,gBAAgB;AAAA,IAAA,CAAA,IARdE;AAAAA,EAWX;AAAA,EACA,WAAAgB;AACE,WAAOhB,KAAKH;AAAAA,EACd;AAAA,EACA,aAAAkF;AACE,WAAO/E,KAAKJ;AAAAA,EACd;AAAA,EACA,cAAcnK,GAAAA;AACZ,WAAOuK,KAAAA,GAAoBvK,CAAAA;AAAAA,EAC7B;AAAA,EACA;AACE,WAAOuK,KAAKzH;AAAAA,EACd;AAAA,EACA,MAAMiL,IAAa;AACjB,WAAOxD,KAAAA,GAAqB,EAAExC,MAAMwC,KAAAA,GAAYwC,KAAKxC,IAAAA,EAAAA,GAASwD;EAChE;AAAA,EACA,MAAAwB,KAAMC;AACAjF,SAAAA,OACFA,KAAKzH,QAAQhE,QAAQ,KAGvByL,QAAevH,QAAQuH,KAAAA,GAAiBwC,KAAKxC,IAAAA,CAAAA;AAAAA,EAE/C;AAAA,EAOA,MAAAkF,GAAYC,IAAAA,IAAW;AACrBnF,SAAKN,SAAS/K,cACdqL,KAAKN,SAASC,SAAAA;AACd,QAAI3E,IAAWoK,CAAAA,MAAAA;AACbpF,WAAKH,MAAM0B,KAAK6D,GAAAA,CAAOD,CAAAA;AAAAA,IAAAA;AAEzB;AACE,UAAIpK,IAAa,CAAA,GAAIiF,KAAKH,MAAMmB,SAAAA,CAAAA;AAChC,eAASnG,IAAQ,GAAGA,IAAQE,EAAWqB,QAAQvB,KAAS;AACtD,YAAA,CAAKwK,GAAU9H,CAAAA,IAAaxC,EAAWF,CAAAA;AACvC,YAAA,CAAI0C,EAAUgE,MAAd;AACA,cAAA,CAAKhE,EAAUwD,aAAaxD,EAAUwD,aAAaf,KAAAA,GAAe5D,QAAQ;AACxE,gBAAItB,IAAAA,MAAiBkF,KAAAA,GAA0BnF,GAAOE,CAAAA;AACtDH,YAAAA,GAAe,EACbC,OAAAA,GACAC,aACAC,YAAAA,GACAC,SAAAA,EAAAA,CAAAA,GAEFH,IAAQC;AAAAA,UACV;AACAE,YAAQqK,CAAAA;AAAAA,QAXY;AAAA,MAYtB;AACA,UAAA,CAAKF,EAEH,QADAnF,KAAKN,SAASC,SAAAA,IACPK;AAKT,UAHAA,KAAKN,SAAS9K,YAAAA,IACdoL,KAAKN,SAASC,SAAAA,IAAS,MACjBK,KAAKJ,KAAK7I,cAAciJ,IAAAA,GAAAA,CACzBA,KAAKJ,KAAKzJ,KACb,OAAM;AAER,UAAI8H,IAAQ+B,KAAKJ,KAAKxJ;AACtB4J,WAAAA,GAAWpD,YAAAA;AAAAA,cACHoD,KAAAA,GAAe/B,EAAM,CAAA,CAAA,GAC3B+B,KAAAA,GAAK4E;AAAAA,MAAAA,GACJ3G,EAAM;IACX,QAASqH;AAAAA,IACT;AAEA,WADAtF,KAAKN,SAASC,SAAAA,IACPK;AAAAA,EACT;AAAA,EACA,MAAAuF,GAAYjF,GAAAA;AAjTa,QAACD,GAAO9E,GAAgBiK;AAkT/CxF,SAAKzE,kBAlTmB8E,IAmTtBC,GAnT6B/E,IAoT7ByE,KAAKzE,gBApTwCiK,IAqT7CxF,KAAAA,IApTGhI,KAAKyN,IACVzN,KAAK0N,IAAInK,IAAiB8E,GAAO,CAAA,GACjCmF,EAAkBpJ,MAAAA,MA3CI7D,GAASoN,GAAUC,MAAAA;AAC3C,UAAIC,IAAqBF,EAASC,IAAoB,CAAA,GAClD3Q,IAAS4J,EAAO,IAAIpK,CAAAA,IAAgB8D,CAAAA;AAAAA,OACxCA,IAAUsN,GAAoBhN,cAAcN,GACpCO,aAAa7D,GAAQ4Q,KAAsB,IAAA;AAAA,IAAA,GA2VhC7F,KAAKzH,SAASyH,KAAAA,IAAgBA,KAAKzE,cAAAA;AAAAA,EACtD;AAAA,EAKA,MAAAuK,GAAgB7H,GAAAA;AACd,QAAImG,IAAwBpE,KAAAA;AAC5BoE,SAAAA,MAA+BpE,QAAW,EAAEzL,OAAO6P,EAAAA,CAAAA;AACnD,QAAIrJ,IAAaiF,KAAAA,GAAe1K,IAAKsD,CAAAA,MAC5B,CACL6H,OAAAA,GACA,EACEjD,MAAMwC,KAAAA,GAAawC,KAAKxC,IAAAA,GACxB/B,OAAO+B,KAAAA,GAAc,CAAA,GACrBe,WAAAA,IACA7C,mBAAmB,MAAA,GAAM,CAAA,CAAA;AAI/B,aAASrD,IAAQ,GAAGA,IAAQE,EAAWqB,QAAQvB,IAAAA,OACvCmF,KAAAA,GAA0BnF,GAAOE,CAAAA;AAEzCiF,SAAKH,MAAM+B,MAAAA,GACX5B,KAAKH,MAAMW,IAAI,GAAG,EAAEvC;EACtB;AAAA,EACA8H,GAAqBlL,GAAOE,GAAAA;AAC1B,WAAO2C,GAAS,EACd7C,UACAE,YAAAA,GACA4C,MAAMqC,KAAAA,GAAWwC,KAAKxC,IAAAA,GACtB/K,QAAQ+K,KAAK/K,QACb2I,eAAeoC,KAAKJ,KAAK3K,OAAAA,CAAAA;AAAAA,EAE7B;AAAA,EACA,MAAA+Q,GAAYC,GAAUhI,GAAOiI,IAAAA,IAAS;AAChClG,SAAKN,SAAS7K,gBACV,IAAI4H,QAASC,CAAAA,MAAAA;AACjBsD,WAAKD,WAAW,MAAA;AACdC,aAAKN,SAAS7K,SAAAA,IACd6H,EAAAA;AAAAA,MAAAA;AAAAA,IAAAA,CAAAA,GAINwJ,KAAAA,MAAgBlG,KAAKJ,KAAK/I,WAAWmJ,IAAAA,GAAAA,OA5V9B,CAACiG,GAAUhI,GAAOuB,MACpB,IAAI/C,QAASC,CAAAA,MAAAA;AAKlB8C,MAAAA,EAASjF,KAAK4L,WAJLvJ,YAAAA;AAAAA,cACDqJ,EAAAA,GACNvJ,EAAAA;AAAAA,MAAAA,GAE2BuB,KAAS,CAAA,CAAA;AAAA,IAAA,CAAA,GAuV3BgI,GAAUhI,GAAO+B,KAAKR,QAAAA,GACjC0G,KAAAA,MAAgBlG,KAAKJ,KAAK9I,UAAUkJ,IAAAA;AAAAA,EACtC;AAAA,EAIA,WAAMuC;AAEJ,QAAA,CADCvC,KAAAA,GAAKsD,KAAqBtD,KAAK/K,UAAU+K,KAAKzH,QAAQb,YAAYsI,KAAK/K,MAAAA,GACpE+K,KAAAA,IAA0B;AAhYZ,OAAA,CAACxI,GAAIe,MAAAA;AACzB,YACI6N,IAAiB,IADE5R,CAAAA,KAAmBgD,CAAAA,OACD/C,CAAAA,IACrC4R,IAAiBC,iBAAiB/N,CAAAA,GAClCgO,IAAmBrH,OAAOwD,QAAQtD,EAAAA,EAAkBoH,OACtD,CAACC,IAAcrF,GAAM7M,CAAAA,MACZ,GAAGkS,CAAAA,IAAerF,sBAAyBA,CAAAA,KAAS7M,KAAS8R,EAAejF,CAAAA,CAAAA,MAErF,EAAA;AAEF9J,QAAAA,EACE,GAAG8O,CAAAA,uCAAqDG,OACxD/O,CAAAA;AAAAA,MAAAA,GAqXkBwI,KAAKxI,IAAIwI,KAAKzH,OAAAA,GAC9ByH,KAAK/K,OAAO+H,QAAQC,gBAAgB+C,KAAKxI;AACzC,UAAA,EAAIpC,WAAEA,EAAAA,IAAc4K,KAAKJ,KAAK3K,QAAAA,EAC1BI,QAAEA,GAAMI,SAAEA,EAAAA,IAAYL;AAC1B8H,MAAAA,EAAmB,EACjB7H,QAAAA,GACAJ,QAAQ+K,KAAK/K,QACbQ,SAAS,EACPiR,UAAU1G,KAAKJ,KAAK7J,aAAAA,GACjBN,EAAAA,EAAAA,CAAAA;AAAAA,IAGT;AAAA,EACF;AAAA,EACAkR,KAAArD;AACE,WAAO5E,EAAQsB,KAAKzH,OAAAA;AAAAA,EACtB;AAAA,EACAqO,GAAgBvG,GAAOT,GAAAA;AAGrB,WAFAI,KAAKH,MAAMO,IAAIC,CAAAA,GACfL,KAAAA,GAAuBJ,CAAAA,GAChBI;AAAAA,EACT;AAAA,EACA6G,GAAkBjH,IAAO;AACvB,QAAI3B,IAAQ2B,EAAK3B;AACjBA,SAAS+B,KAAKH,MAAMO,IAAI,EAAEnC,OAAAA,EAAAA,CAAAA;AAAAA,EAC5B;AAAA,EACA6I,GAAmCC,IAAa;AAC9C,WAAO,CACL,EAAEvJ,MAAM,MAAMwC,KAAAA,GAAoB+G,CAAAA,EAAAA,GAClC,EAAEvJ,MAAM,MAAMwC,KAAAA,GAAoBA,KAAKJ,IAAAA,EAAAA,CAAAA;AAAAA,EAE3C;AAAA,EACA,MAAAoH,GAAqBpH;AACnBI,SAAKJ,OAAOb,EAAMiB,KAAKJ,MAAMA,CAAAA;AAAAA,EAC/B;AAAA,EAKAqH,KAAA5E;AACE,QAAI5L,IAAUuJ,KAAKJ,KAAKnJ,QAAQsL,OAAQwB,CAAAA,MAAAA,CAAAA,CAAaA,CAAAA;AACrD9M,MAAQgC,QAAQ,CAAC8K,GAAQ1I,MAAAA;AAEvB,UADAmF,KAAKkH,KAAK3D,CAAAA,GACN1I,IAAQ,MAAMpE,EAAQ2F,OACxB;AAEF,UAAI+K,IAAanH,KAAKJ,KAAK5K,aAAa,CAAC,EAAEwI,MAAM,MAAMwC,KAAAA,GAAW/I,EAAc,IAAA,CAAA,GAAQ4J,UAAAA,GAAU,CAAA,IAAUxE,EAC1G,EACEmB,MAAMwC,KAAAA,GAAawC,KAAKxC,IAAAA,GACxB/B,OAAO+B,KAAAA,GAAc,CAAA,EAAA,GAEvBA,KAAKH,MAAMmC,YAAAA,EAAc5F;AAE3B4D,WAAAA,GAAoBmH,CAAAA;AAAAA,IAAAA,CAAAA;AAAAA,EAExB;AAAA,EACAC,KAAiB3R,OAAAA;AACfuK,SAAKJ,KAAK3K,UAhfc2I,CAAAA,MAAAA;AAC1B,UAA6B,OAAlBA,KAAkB,UAAU;AACrC,YAAImJ,IAAa,CAAA,KACX1R,QAAQgS,GAAe5R,SAAS6R,EAAAA,IAAmBvS,EAAgBE,OAAOG;AAShF,eARA2R,EAAW3R,YAAYwI,EAAcxI,aAAa,CAAA,GAClD2R,EAAW3R,UAAUC,SAASuI,EAAcxI,WAAWC,UAAUgS,GACjEN,EAAW3R,UAAUK,UAAUsJ,EAC7BuI,GACA1J,EAAcxI,WAAWK,WAAW,CAAA,CAAA,GAEtCsR,EAAW7R,YAAY0I,EAAc1I,aAAaH,EAAgBE,OAAOC,WACzE6R,EAAW5R,iBAAiByI,EAAczI,kBAAkBJ,EAAgBE,OAAOE,gBAC5E4R;AAAAA,MACT;AACA,aAAInJ,MAAJ,KACS7I,EAAgBE,SAElB2I;AAAAA,IAAAA,GAgeHnI,EAAQR,UAAUF,EAAgBE,MAAAA,GAEpC+K,KAAKJ,KAAKnJ,UAAUuJ,KAAAA,GAClB1L,EAAQ0L,KAAKJ,KAAKnJ,OAAAA,CAAAA,GAEpBuJ,KAAKJ,OAAOb,EAAMiB,KAAKJ,MAAM,EAC3B3J,MAAAA,CAAO+J,WAAiBA,KAAKJ,KAAK3J,MAClCI,iBAAiBuB,EAAeoI,KAAKJ,KAAKvJ,kBAC1CD,WAAWwB,EAAeoI,KAAKJ,KAAKxJ;;EAGxCmR,GAAyB9Q,GAAAA;AACvB,QAAI+Q,IAAiBxH,KAAKzH,QAAQc;AAClC,WAAKmO,KAGLxH,KAAKzH,QAAQc,YAAY,IACrB2G,KAAKJ,KAAKpJ,eACZwJ,KAAKzH,QAAQc,YAAYmO,GACzBlP,EAAgB0H,KAAKzH,UACrByH,KAAAA,GACE3D,EACE,EACEmB,MAAMwC,KAAAA,GAAawC,KAAKxC,OACxB/B,OAAO+B,KAAAA,GAAc,CAAA,GACrBe,cAAW,GAEbf,KAAAA,GAAe5D,MAAAA,CAAAA,GAGZ3F,MAzcSiE,IA2cE8M,GA1cf9M,EAAI+M,QAAQ,iBAAiB,EAAA,EAAIC,KAAAA,EAAOC,MAAM,wBA0cfC,OAAOnR,CAAAA,KAlBlCA;AAzbb,QAAsBiE;AAAAA,EA4cpB;AAAA,EAKAmN,KAAA1F;AACE,QAAInC,QACF,QAAO;AAET,QAAI/K,IAASgC,EAAc,MAAA;AAE3B,WADAhC,EAAO6S,YAAYrT,GACduL,KAAAA,MAIL/K,EAAOoE,YAAYL,EAAcgH,KAAKJ,KAAK9J,UAAAA,EAAYuD,WAChDpE,MAJLA,EAAO8S,MAAMC,aAAa,UACnB/S;AAAAA,EAIX;AAAA,EACAgT,GAAeC,GAAAA;AACb,QAAIjK,IAAQ+B,KAAKJ,KAAKvJ;AACtB2J,SAAKH,MAAMO,IAAI,CAAC,EAAEnC,OAAOA,EAAM,CAAA,EAAA,GAAA,GAASiK,GAAO,EAAEjK,OAAOA,EAAM,CAAA,EAAA,CAAA,CAAA;AAAA,EAChE;AAAA,EACAkK,GAAMrM,GAAAA;AA9jBgB,KAAA,CAACsM,GAAgBC,MAAAA;AACvC,UAAI3J,EAAQ0J,CAAAA,EAEV,QAAA,MADAA,EAAe7T,QAAQ,GAAG6T,EAAe7T,KAAAA,GAAQ8T,EAAUC,WAAAA;AAG7DD,MAAAA,EAAUhP,YAAY;AACtB,UAAIkP,KARevO,IAQQqO,EAAU/N,gBART,QAAQqB,KAAK3B,GAAMwO,OAAAA,IAQQJ,IAGrDC,EAAU/N,kBAAkB8N;AAXZ,UAACpO;AAanB,UAAIyO,IAAa5J,EAAO,MAAMpK,GAAc8T,CAAAA,KAAW;AACnDE,MAAAA,KAAcA,EAAW1M,kBAAkBwM,MAC7CA,IAASE,EAAW1M,gBAEtBwM,EAAOzP,aAAauP,GAAWI,CAAAA;AAAAA,IAAAA,GAgjBXzI,KAAKzH,SAASuD,CAAAA;AAAAA,EAClC;AAAA,EACA4M,KAAAhH;AACO1B,SAAAA,GAAe5D,WAChB4D,UACFA,KAAKzH,QAAQhE,QAAQyL,KAAKzH,QAAQhE,MAAMoU,MAAM,SAE9C3I,KAAAA,GAAiBA,KAAAA,GAAeA,KAAKzE,cAAAA,CAAAA;AAAAA,EAEzC;AAAA,EACAqN,GAAY5O,GAAAA;AA/hBK,KAAA,CAACA,GAAM6O,MAAAA;AACxB,UAAA,CAAK7O,EAAM;AACX,UAAI8O,IAAa9O,EAAKnB;AAAAA,OACHiQ,EAAWtQ,WAAW4D,SAAS,KAAK0M,EAAW3M,WAAW0M,CAAAA,IAAYE,IAG3F9N,GAKelC,OAAAA;AAAAA,IAAAA,GAqhBAiB,GAAMgG,KAAKzH,OAAAA;AAAAA,EACxB;AAAA,EACAyQ,GAASnO,IAAQ,GAAA;AACf,YA10BJ,SAAuBpF,GAAAA;AACrB,UAAA,EAAIa,OAAEA,GAAKN,aAAEA,GAAWE,UAAEA,EAAAA,IAAaT;AAEvC,aADAO,IAAcA,MAAgB,OAAOA,IAAcM,IAAQ,GACpDJ,IAAW,CAChB4B,EAAcxB,GAAOyB,EAAMzB,CAAAA,CAAAA,GAC3BwB,EAAc9B,GAAa+B,EAAM/B,CAAAA,CAAAA,CAAAA,IAC/B,CAACM,GAAON,CAAAA;AAAAA,IACd,GAm0ByBgK,KAAKJ,MAAM/E,CAAAA;AAAAA,EAClC;AAAA,EACA,IAAAoO,KAAI7E;AACF,WAAOpE,KAAKP,2BAA2BO,KAAKzE;AAAAA,EAC9C;AAAA,EACA,IAAA2N,KAAIxK;AACF,WAAOA,EAAQsB,KAAKzH,OAAAA;AAAAA,EACtB;AAAA,EACA,IAAA4Q;AACE,WAAA,CAAA,CAASnJ,KAAKJ,KAAK3K,UAAAA,CAAW+K;EAChC;AAAA,EACA,IAAAoJ,KAAIzD;AACF,WA5mBepN,IA4mBIyH,KAAKzH,SA3mBtBmG,EAAQnG,CAAAA,IACHH,EAAQG,EAAQhE,KAAAA,IAElB+E,EAAiBf,GAAAA,EAAS,EAAMwJ,OACpCnJ,CAAAA,MAAAA,EAAQA,EAAEJ,WAAW4D,SAAS,EAAA;AALjB,QAAC7D;AAAAA,EA6mBjB;AAAA;;;;;ACr9BK,IAAM8Q,IAAN,cAAgCC,EAAYC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA5C,EAAA;AAAA,EAAA;AAAAC,UAAAA,GAAAC,SAAAA,GAwHNzJ,KAAA1J,QAAgB,IAOhB0J,KAAA/B,QAAgB,GAMhB+B,KAAA0J,gBAMA1J,KAAAlK,aAAqB,IAMrBkK,KAAAhK,cAAsB,IAKOgK,KAAA2J,OAAAA,IAKA3J,KAAA7J,OAAAA,IAKD6J,KAAA4J,aAAa,MAIzC5J,KAAQ6J,iBAAgC,MAsBxC7J,KAAQ8J,aAAa;AAAA,EAAA;AAAA,EACrB,uBAAAC;AACCP,UAAMO,qBAAAA,GACN/J,KAAKgK,eAAAA;AAAAA,EACN;AAAA,EAKQ,eAAAC;AAMP,QAJAjK,KAAKgK,eAAAA,GAELhK,KAAK8J,aAAa9J,KAAKkK,mBAAAA,GAEnBlK,KAAK2J,QAAQQ,eAAeC,QAAQpK,KAAK8J,UAAAA,MAAgB,OAG5D,aADA9J,KAAKqK,YAAY3Q,cAAc,MAAA,GAAS4Q,gBAAgB,QAAA;AAIzD,QAAA,CAAKtK,KAAKuK,oBAET;AAID,UAAMC,IAA+B,EACpClU,OAAO0J,KAAK1J,OACZC,YAAYyJ,KAAK/B,OACjBhJ,QAAAA,CAAAA,CAAU+K,KAAKlK,YACfA,YAAYkK,KAAKlK,YACjBE,aAAagK,KAAKhK,aAClBG,MAAM6J,KAAK7J,MACXY,eAAe,MAAA;AACd,UAAIiJ,KAAK2J,SAAS3J,KAAK7J,KACtB;AACCgU,uBAAeM,QAAQzK,KAAK8J,YAAY,MAAA;AAAA,MACzC;MAEA;AAGD9J,WAAK0K,cAAc,IAAIC,YAAY,mBAAmB,EAAEC,SAAAA,IAAeC,aAAU,CAAA,CAAA,GAG5E7K,KAAK7J,QACT6J,KAAKuK,oBAAoBxC,MAAM+C,YAAY,uBAAuB,MAAA;AAAA,IAAA,EAAA;AAMrE9K,SAAK6J,iBAAiB,IAAItK,GAAOS,KAAKuK,qBAAqBC,IAGtCxK,KAAK+K,iBACbtS,QAAQuB,OAAAA;AACpB,UAAIA,EAAK8J,aAAaC,KAAKC,WAAW;AAErC,cAAMsE,IAActO,EAAKsO,eAAe;AACpCA,UAAYZ,KAAAA,KACf1H,KAAK6J,gBAAgB3C,KAAKoB;MAE5B,MAAWtO,cAAgBgR,eAE1BhL,KAAKiL,sBAAsBjR,CAAAA;AAAAA,IAAAA,CAAAA,GAM7BkR,GAAclL,KAAKqK,YAAYc,IAAAA,EAAiBC,UAAU,MAAA;AAEzDpL,WAAK6J,gBAAgBvH,GAAAA;AAAAA,IAAAA,CAAAA;AAAAA,EAGvB;AAAA,EAEQ,qBAAA4H;AACP,UAAMmB,IAAcrL,KAAKsL,oBAAoBhW,WAAU4B,EAAG0M,WAAW2H,KAAK,EAAA;AAC1E,WAAOvL,KAAK2J,OAAO6B,GAAYH,CAAAA,IAAe;AAAA,EAC/C;AAAA,EAIQ;AACP,QAAIrL,KAAK6J,gBAAgB;AACxB;AACC7J,aAAK6J,eAAehI,QAAAA;AAAAA,MACrB,QAAS4J;AAAAA,MAET;AACAzL,WAAK6J,iBAAiB;AAAA,IACvB;AAAA,EACD;AAAA,EAKQ,sBAAsBtR,GAAAA;AAC7B,UAAMmT,IAASnT,EAAQoT,aAAa,QAAA,GAC9BpX,IAAQgE,EAAQoT,aAAa,OAAA,GAC7BC,IAAQrT,EAAQoT,aAAa,OAAA;AAGnC,QAAIC,GAAO;AACV,YAAM1D,IAAQ0D,EAAMjE,MAAM,GAAA,EAAKrS,IAAI8L,CAAAA,MAAQA,EAAKsG,KAAAA,CAAAA;AAEhD,aAAA,KADA1H,KAAK6L,cAAc3D,GAAO3P,CAAAA;AAAAA,IAE3B;AAEA,YAAQmT,GAAAA;AAAAA,MACP,KAAK;AACJ1L,aAAK6J,gBAAgBzM,MAAM0O,SAASvX,KAAS,KAAK,EAAA,CAAA;AAClD;AAAA,MACD,KAAK;AACJyL,aAAK6J,gBAAgBnI,OAAOoK,SAASvX,KAAS,KAAK,EAAA,CAAA;AACnD;AAAA,MACD;AACyB,QAApBgE,EAAQiQ,YAAY,OACvBxI,KAAK6J,gBAAgBkC,MAAAA,GAGtB/L,KAAK6J,gBAAgB3C,KAAK3O,EAAQ+P,eAAe,EAAA;AAAA,IAAA;AAAA,EAGpD;AAAA,EAKQ,cAAcJ,GAAiB3P,GAAAA;AACtC,QAAI2P,EAAM9L,WAAW,EAAG;AAExB,UAAM4P,IAAczT,EAAQoT,aAAa,OAAA,GACnCM,IAAgBD,IAAcF,SAASE,GAAa,EAAA,IAAMhM,KAAK4J;AAGrE1B,IAAAA,EAAMzP,QAAQ,CAAC2I,GAAMvG,MAAAA;AAEpBmF,WAAK6J,gBAAgB3C,KAAK9F,CAAAA,IAGtBvG,IAAQqN,EAAM9L,SAAS,KAAK4D,KAAK7J,SACpC6J,KAAK6J,gBAAgBzM,MAAM6O,CAAAA,IAIxBpR,IAAQqN,EAAM9L,SAAS,KAEhB4D,KAAK7J,SADf6J,KAAK6J,gBAAgBnI,OAAON,EAAKhF,MAAAA;AAAAA,IAAAA,CAAAA;AAAAA,EAMpC;AAAA,EAKA,SAAA8P;AACC,WAAOjW;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,mBAKU,MAAA;AACb+J,WAAKiK,aAAAA;AAAAA,IAAAA,CAAAA;AAAAA;AAAAA;AAAAA,EAIV;AAAA;AA9OAkC,EAAA,CADC9I,EAAS,EAAE6D,MAAM/L,OAAAA,CAAAA,CAAAA,GAvHNkO,EAwHZ+C,WAAA,SAAA,CAAA,GAOAD,EAAA,CAFCE,EAAQ,EAAEC,SAASC,IAAcnB,WAAAA,GAAW,CAAA,GAC5C/H,EAAS,EAAE6D,MAAM/L,OAAAA,CAAAA,CAAAA,GA9HNkO,EA+HZ+C,WAAA,SAAA,CAAA,GAMAD,EAAA,CADC9I,EAAS,EAAE6D,MAAMtG,QAAAA,CAAAA,CAAAA,GApINyI,EAqIZ+C,WAAA,aAAA,CAAA,GAMAD,EAAA,CADC9I,EAAS,EAAE6D,MAAMsF,OAAAA,CAAAA,CAAAA,GA1INnD,EA2IZ+C,WAAA,cAAA,CAAA,GAMAD,EAAA,CADC9I,EAAS,EAAE6D,MAAM/L,OAAAA,CAAAA,CAAAA,GAhJNkO,EAiJZ+C,WAAA,eAAA,CAAA,GAK6BD,EAAA,CAA5B9I,EAAS,EAAE6D,MAAMtG,QAAAA,CAAAA,CAAAA,GAtJNyI,EAsJiB+C,WAAA,QAAA,CAAA,GAKAD,EAAA,CAA5B9I,EAAS,EAAE6D,MAAMtG,QAAAA,CAAAA,CAAAA,GA3JNyI,EA2JiB+C,WAAA,QAAA,CAAA,GAKDD,EAAA,CAA3B9I,EAAS,EAAE6D,MAAM/L,OAAAA,CAAAA,CAAAA,GAhKNkO,EAgKgB+C,WAAA,cAAA,CAAA,GAUpBD,EAAA,CADPM,EAAM,aAAA,CAAA,GAzKKpD,EA0KJ+C,WAAA,uBAAA,CAAA,GAKAD,EAAA,CAHPO,EAAmB,EACnBC,SAAAA,GAAS,CAAA,CAAA,GA7KEtD,EA+KJ+C,WAAA,oBAAA,CAAA,GAKAD,EAAA,CAHPS,EAAsB,EACtBD,SAAAA,GAAS,CAAA,CAAA,GAlLEtD,EAoLJ+C,WAAA,uBAAA,CAAA,GApLI/C,IAAN8C,EAAA,CADNU,EAAc,qBAAA,CAAA,GACFxD,CAAAA;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"typewriter-BjDPgRlj.js","sources":["../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: inline-block;\n\t}\n\n\t#typewriter {\n\t\tposition: relative;\n\t}\n\n\t/* Enhanced cursor with glow effect */\n\t#typewriter :global(.ti-cursor) {\n\t\tanimation: cursor-pulse 1.2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n\t\tcolor: currentColor;\n\t\tfilter: drop-shadow(0 0 8px currentColor);\n\t}\n\n\t@keyframes cursor-pulse {\n\t\t0%, 100% {\n\t\t\topacity: 1;\n\t\t\ttransform: scale(1);\n\t\t}\n\t\t50% {\n\t\t\topacity: 0.3;\n\t\t\ttransform: scale(0.95);\n\t\t}\n\t}\n\n\t/* Character entrance animation */\n\t#typewriter :global(.ti-container *) {\n\t\tanimation: char-entrance 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) backwards;\n\t}\n\n\t@keyframes char-entrance {\n\t\t0% {\n\t\t\topacity: 0;\n\t\t\ttransform: scale(0.3) translateY(10px);\n\t\t\tfilter: blur(4px);\n\t\t}\n\t\t50% {\n\t\t\topacity: 0.8;\n\t\t\ttransform: scale(1.1) translateY(-2px);\n\t\t}\n\t\t100% {\n\t\t\topacity: 1;\n\t\t\ttransform: scale(1) translateY(0);\n\t\t\tfilter: blur(0);\n\t\t}\n\t}\n\n\t/* Subtle character wobble on appear */\n\t#typewriter :global(.ti-container *:nth-child(odd)) {\n\t\tanimation: char-entrance 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) backwards,\n\t\t char-wobble 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) 0.15s backwards;\n\t}\n\n\t@keyframes char-wobble {\n\t\t0%, 100% {\n\t\t\ttransform: rotate(0deg);\n\t\t}\n\t\t25% {\n\t\t\ttransform: rotate(2deg);\n\t\t}\n\t\t75% {\n\t\t\ttransform: rotate(-2deg);\n\t\t}\n\t}\n\n\t/* Deletion animation - fade out and scale down */\n\t#typewriter :global(.ti-container .deleting) {\n\t\tanimation: char-delete 0.2s cubic-bezier(0.4, 0, 1, 1) forwards;\n\t}\n\n\t@keyframes char-delete {\n\t\t0% {\n\t\t\topacity: 1;\n\t\t\ttransform: scale(1);\n\t\t\tfilter: blur(0);\n\t\t}\n\t\t50% {\n\t\t\topacity: 0.5;\n\t\t\ttransform: scale(0.8) translateY(-3px);\n\t\t}\n\t\t100% {\n\t\t\topacity: 0;\n\t\t\ttransform: scale(0.4) translateY(-8px);\n\t\t\tfilter: blur(3px);\n\t\t}\n\t}\n\n\t/* Gradient text effect on typed text */\n\t#typewriter :global(.ti-container) {\n\t\tbackground: linear-gradient(\n\t\t\t90deg,\n\t\t\tcurrentColor 0%,\n\t\t\tcurrentColor 70%,\n\t\t\ttransparent 100%\n\t\t);\n\t\t-webkit-background-clip: text;\n\t\tbackground-clip: text;\n\t\tanimation: gradient-shift 3s ease-in-out infinite;\n\t}\n\n\t@keyframes gradient-shift {\n\t\t0%, 100% {\n\t\t\tfilter: brightness(1) saturate(1);\n\t\t}\n\t\t50% {\n\t\t\tfilter: brightness(1.15) saturate(1.2);\n\t\t}\n\t}\n\n\t/* Smooth transitions for all text */\n\t#typewriter * {\n\t\ttransition: opacity 0.15s ease-out, transform 0.15s cubic-bezier(0.34, 1.56, 0.64, 1);\n\t}\n`) {\n\t/**\n\t * Typing speed in milliseconds per character.\n\t */\n\t@property({ type: Number })\n\tspeed: number = 35\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 = 20\n\n\t/**\n\t * Only animate once per session.\n\t */\n\t@property({ type: Boolean }) once = true\n\n\t/**\n\t * Loop the animation infinitely (overrides once).\n\t */\n\t@property({ type: Boolean }) loop = false\n\n\t/**\n\t * Default pause duration for cycling (ms).\n\t */\n\t@property({ type: Number }) cyclePause = 1500\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\tloop: this.loop,\n\t\t\tafterComplete: () => {\n\t\t\t\tif (this.once && !this.loop) {\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 (unless looping)\n\t\t\t\tif (!this.loop) {\n\t\t\t\t\tthis.typewriterContainer.style.setProperty('--ti-cursor-display', 'none')\n\t\t\t\t}\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 - skip whitespace-only text nodes\n\t\t\t\tconst textContent = node.textContent || ''\n\t\t\t\tif (textContent.trim()) {\n\t\t\t\t\tthis.typeItInstance?.type(textContent)\n\t\t\t\t}\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\tconst cycle = element.getAttribute('cycle')\n\n\t\t// Handle cycle attribute - simple pipe-separated list\n\t\tif (cycle) {\n\t\t\tconst items = cycle.split('|').map(item => item.trim())\n\t\t\tthis._processCycle(items, element)\n\t\t\treturn\n\t\t}\n\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 * Processes cycling text with auto-calculated delete counts.\n\t */\n\tprivate _processCycle(items: string[], element: HTMLElement) {\n\t\tif (items.length === 0) return\n\n\t\tconst customPause = element.getAttribute('pause')\n\t\tconst pauseDuration = customPause ? parseInt(customPause, 10) : this.cyclePause\n\n\t\t// Type each item with automatic deletion\n\t\titems.forEach((item, index) => {\n\t\t\t// Type the item\n\t\t\tthis.typeItInstance?.type(item)\n\n\t\t\t// Pause after typing (except after last item when not looping)\n\t\t\tif (index < items.length - 1 || this.loop) {\n\t\t\t\tthis.typeItInstance?.pause(pauseDuration)\n\t\t\t}\n\n\t\t\t// Delete back to start (except for last item when not looping)\n\t\t\tif (index < items.length - 1) {\n\t\t\t\tthis.typeItInstance?.delete(item.length)\n\t\t\t} else if (this.loop) {\n\t\t\t\t// For looping, delete and start over\n\t\t\t\tthis.typeItInstance?.delete(item.length)\n\t\t\t}\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","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","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","setUpCursor","typeitId","generateQueue","go","attachCursor","bind","IntersectionObserver","entries","observer2","entry","isIntersecting","unobserve","threshold","observe","shouldRemoveCursor","clearTimeout","rebuild","is","property","elementIsInput","string","actionOpts","instant","bookEndQueueItems","charsAsQueueItems","outerHTML","getPace","nodeType","Node","TEXT_NODE","itemsToQueue","movementArg","numberOfSteps","derivedCursorPosition","directionalStep","milliseconds","numCharacters","num","typeableQueueItems","rounds","freeze","fire","then","flush","getOptions","#y","empty","#r","remember","qKey","queueKey","e","#d","printedCharacters","min","max","allChars","newCursorPosition","nodeToInsertBefore","#g","#b","#w","callback","silent","setTimeout","cursorSelector","computedStyles","getComputedStyle","customProperties","reduce","accumulator","duration","#a","#u","#x","#o","newOptions","#p","#i","type","splitItems","buildOptions","defaultFrames","defaultOptions","#C","existingMarkup","replace","trim","split","concat","#e","className","style","visibility","#S","items","#h","originalTarget","character","textContent","target","tagName","cursorNode","#f","slice","#n","rootElement","nodeParent","t","#l","#c","#k","#v","#m","TypewriterElement","$LitElement","css","super","arguments","autoStart","once","cyclePause","typeItInstance","sessionKey","disconnectedCallback","_destroyTypeIt","_startTyping","generateSessionKey","sessionStorage","getItem","shadowRoot","removeAttribute","typewriterContainer","typeItOptions","setItem","dispatchEvent","CustomEvent","bubbles","composed","setProperty","_getSlottedNodes","HTMLElement","_processCustomElement","intersection$","host","subscribe","slotContent","_getSlottedElements","join","hashContent","error","action","getAttribute","cycle","_processCycle","parseInt","break","customPause","pauseDuration","render","__decorateClass","prototype","consume","context","delayContext","String","query","queryAssignedNodes","flatten","queryAssignedElements","customElement"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,4 +1,4 @@
1
- "use strict";const X=require("./consume-edta5ng5.cjs");require("rxjs"),require("rxjs/operators"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const p=require("lit/decorators.js");require("./tailwind.mixin-JFXu3GSo.cjs");const J=require("./litElement.mixin-B1WTI3WY.cjs"),L=require("./delay-CXFIM6qK.cjs"),W=require("./intersection-CVvaDv96.cjs"),A=require("lit"),B=s=>Array.isArray(s),M=s=>B(s)?s:[s],j="data-typeit-id",y="ti-cursor",G={started:!1,completed:!1,frozen:!1,destroyed:!1},f={breakLines:!0,cursor:{autoPause:!0,autoPauseDelay:500,animation:{frames:[0,0,1].map(s=>({opacity:s})),options:{iterations:1/0,easing:"steps(2, start)",fill:"forwards"}}},cursorChar:"|",cursorSpeed:1e3,deleteSpeed:null,html:!0,lifeLike:!0,loop:!1,loopDelay:750,nextStringDelay:750,speed:100,startDelay:250,startDelete:!1,strings:[],waitUntilVisible:!1,beforeString:()=>{},afterString:()=>{},beforeStep:()=>{},afterStep:()=>{},afterComplete:()=>{}},Z=`[${j}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`,E=s=>document.createElement(s),q=s=>document.createTextNode(s),_=(s,e="")=>{let t=E("style");t.id=e,t.appendChild(q(s)),document.head.appendChild(t)},$=s=>(B(s)||(s=[s/2,s/2]),s),z=(s,e)=>Math.abs(Math.random()*(s+e-(s-e))+(s-e));let O=s=>s/2;const K=s=>Array.from(s);let x=s=>([...s.childNodes].forEach(e=>{if(e.nodeValue)return[...e.nodeValue].forEach(t=>{e.parentNode.insertBefore(q(t),e)}),void e.remove();x(e)}),s);const Y=s=>{let e=document.implementation.createHTMLDocument();return e.body.innerHTML=s,x(e.body)};function Q(s,e=!1,t=!1){let i,r=s.querySelector(`.${y}`),n=document.createTreeWalker(s,NodeFilter.SHOW_ALL,{acceptNode:a=>{if(r&&t){if(a.classList?.contains(y))return NodeFilter.FILTER_ACCEPT;if(r.contains(a))return NodeFilter.FILTER_REJECT}return a.classList?.contains(y)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),o=[];for(;i=n.nextNode();)i.originalParent||(i.originalParent=i.parentNode),o.push(i);return e?o.reverse():o}function ee(s,e=!0){return e?Q(Y(s)):K(s).map(q)}const te=({index:s,newIndex:e,queueItems:t,cleanUp:i})=>{for(let r=s+1;r<e+1;r++)i(t[r][0])},U=s=>Number.isInteger(s),H=({queueItems:s,selector:e,cursorPosition:t,to:i})=>{if(U(e))return-1*e;let r=new RegExp("END","i").test(i),n=e?[...s].reverse().findIndex(({char:o})=>{let a=o.parentElement,u=a.matches(e);return!(!r||!u)||u&&a.firstChild.isSameNode(o)}):-1;return n<0&&(n=r?0:s.length-1),n-t+(r?0:1)},T=(s,e)=>new Array(e).fill(s);let v=s=>new Promise(e=>{requestAnimationFrame(async()=>{e(await s())})}),F=s=>s?.getAnimations().find(e=>e.id===s.dataset.tiAnimationId),V=({cursor:s,frames:e,options:t})=>{let i=s.animate(e,t);return i.pause(),i.id=s.dataset.tiAnimationId,v(()=>{v(()=>{i.play()})}),i},R=s=>s.func?.call(null),se=async({index:s,queueItems:e,wait:t,cursor:i,cursorOptions:r})=>{let n=e[s][1],o=[],a=s,u=n,h=()=>u&&!u.delay,l=n.shouldPauseCursor()&&r.autoPause;for(;h();)o.push(u),h()&&a++,u=e[a]?e[a][1]:null;if(o.length)return await v(async()=>{for(let b of o)await R(b)}),a-1;let c,m=F(i);return m&&(c={...m.effect.getComputedTiming(),delay:l?r.autoPauseDelay:0}),await t(async()=>{m&&l&&m.cancel(),await v(()=>{R(n)})},n.delay),await(({cursor:b,options:k,cursorOptions:N})=>{if(!b||!N)return;let P,I=F(b);I&&(k.delay=I.effect.getComputedTiming().delay,P=I.currentTime,I.cancel());let D=V({cursor:b,frames:N.animation.frames,options:k});return P&&(D.currentTime=P),D})({cursor:i,options:c,cursorOptions:r}),s};const C=s=>"value"in s;let g=s=>typeof s=="function"?s():s,S=(s,e=document,t=!1)=>e["querySelector"+(t?"All":"")](s);const w=(s,e)=>Object.assign({},s,e);let ie={"font-family":"","font-weight":"","font-size":"","font-style":"","line-height":"",color:"",transform:"translateX(-.125em)"};class re{element;timeouts;cursorPosition;predictedCursorPosition;statuses={started:!1,completed:!1,frozen:!1,destroyed:!1,firing:!1};opts;id;queue;cursor;flushCallback=null;unfreeze=()=>{};constructor(e,t={}){var i;this.opts=w(f,t),this.element=typeof(i=e)=="string"?S(i):i,this.timeouts=[],this.cursorPosition=0,this.unfreeze=()=>{},this.predictedCursorPosition=null,this.statuses=w({},G),this.id=Math.random().toString().substring(2,9),this.queue=(function(r){let n=function(l){return M(l).forEach(c=>h.set(Symbol(c.char?.innerText),o({...c}))),this},o=l=>(l.shouldPauseCursor=function(){return!!(this.typeable||this.cursorable||this.deletable)},l),a=()=>h,u=()=>Array.from(h.values()),h=new Map;return n(r),{add:n,set:function(l,c){let m=[...h.keys()];h.set(m[l],o(c))},wipe:function(){h=new Map,n(r)},done:(l,c=!1)=>c?h.delete(l):h.get(l).done=!0,reset:function(){h.forEach(l=>delete l.done)},destroy:l=>h.delete(l),getItems:(l=!1)=>l?u():u().filter(c=>!c.done),getQueue:a,getTypeable:()=>u().filter(l=>l.typeable),getPendingQueueItems:()=>{const l=[];for(let[,c]of a())c.done||l.push(c);return l}}})([{delay:this.opts.startDelay}]),this.#C(t),this.cursor=this.#v(),this.element.dataset.typeitId=this.id,_(Z),this.opts.strings.length&&this.#T()}go(){return this.statuses.started?this:(this.#m(),this.opts.waitUntilVisible?(e=this.element,t=this.#i.bind(this),new IntersectionObserver((i,r)=>{i.forEach(n=>{n.isIntersecting&&(t(),r.unobserve(e))})},{threshold:1}).observe(e),this):(this.#i(),this));var e,t}destroy(e=!0){this.timeouts=(this.timeouts.forEach(clearTimeout),[]),g(e)&&this.cursor&&this.#c(this.cursor),this.statuses.destroyed=!0}reset(e){!this.is("destroyed")&&this.destroy(),e?(this.queue.wipe(),e(this)):this.queue.reset(),this.cursorPosition=0;for(let t in this.statuses)this.statuses[t]=!1;return this.element[this.#u()?"value":"innerHTML"]="",this}is=function(e){return this.statuses[e]};type(e,t={}){e=g(e);let{instant:i}=t,r=this.#r(t),n=ee(e,this.opts.html).map(a=>{return{func:()=>this.#h(a),char:a,delay:i||(u=a,/<(.+)>(.*?)<\/(.+)>/.test(u.outerHTML))?0:this.#s(),typeable:a.nodeType===Node.TEXT_NODE};var u}),o=[r[0],{func:async()=>await this.opts.beforeString(e,this)},...n,{func:async()=>await this.opts.afterString(e,this)},r[1]];return this.#e(o,t)}break(e={}){return this.#e({func:()=>this.#h(E("BR")),typeable:!0},e)}move(e,t={}){e=g(e);let i=this.#r(t),{instant:r,to:n}=t,o=H({queueItems:this.queue.getTypeable(),selector:e===null?"":e,to:n,cursorPosition:this.#a}),a=o<0?-1:1;return this.predictedCursorPosition=this.#a+o,this.#e([i[0],...T({func:()=>this.#p(a),delay:r?0:this.#s(),cursorable:!0},Math.abs(o)),i[1]],t)}exec(e,t={}){let i=this.#r(t);return this.#e([i[0],{func:()=>e(this)},i[1]],t)}options(e,t={}){return e=g(e),this.#n(e),this.#e({},t)}pause(e,t={}){return this.#e({delay:g(e)},t)}delete(e=null,t={}){e=g(e);let i=this.#r(t),r=e,{instant:n,to:o}=t,a=this.queue.getTypeable(),u=r===null?a.length:U(r)?r:H({queueItems:a,selector:r,cursorPosition:this.#a,to:o});return this.#e([i[0],...T({func:this.#o.bind(this),delay:n?0:this.#s(1),deletable:!0},u),i[1]],t)}freeze(){this.statuses.frozen=!0}flush(e=null){return this.flushCallback=e||this.flushCallback,this.statuses.firing||(this.#m(),this.#i(!1).then(()=>{if(this.queue.getPendingQueueItems().length>0)return this.flush();this.flushCallback(),this.flushCallback=null})),this}getQueue(){return this.queue}getOptions(){return this.opts}updateOptions(e){return this.#n(e)}getElement(){return this.element}empty(e={}){return this.#e({func:this.#b.bind(this)},e)}async#b(){this.#u()?this.element.value="":this.#t.forEach(this.#c.bind(this))}async#i(e=!0){this.statuses.started=!0,this.statuses.firing=!0;let t=i=>{this.queue.done(i,!e)};try{let i=[...this.queue.getQueue()];for(let n=0;n<i.length;n++){let[o,a]=i[n];if(!a.done){if(!a.deletable||a.deletable&&this.#t.length){let u=await this.#d(n,i);te({index:n,newIndex:u,queueItems:i,cleanUp:t}),n=u}t(o)}}if(!e)return this.statuses.firing=!1,this;if(this.statuses.completed=!0,this.statuses.firing=!1,await this.opts.afterComplete(this),!this.opts.loop)throw"";let r=this.opts.loopDelay;this.#y(async()=>{await this.#w(r[0]),this.#i()},r[1])}catch{}return this.statuses.firing=!1,this}async#p(e){var t,i,r;this.cursorPosition=(t=e,i=this.cursorPosition,r=this.#t,Math.min(Math.max(i+t,0),r.length)),((n,o,a)=>{let u=o[a-1],h=S(`.${y}`,n);(n=u?.parentNode||n).insertBefore(h,u||null)})(this.element,this.#t,this.cursorPosition)}async#w(e){let t=this.#a;t&&await this.#p({value:t});let i=this.#t.map(r=>[Symbol(),{func:this.#o.bind(this),delay:this.#s(1),deletable:!0,shouldPauseCursor:()=>!0}]);for(let r=0;r<i.length;r++)await this.#d(r,i);this.queue.reset(),this.queue.set(0,{delay:e})}#d(e,t){return se({index:e,queueItems:t,wait:this.#y.bind(this),cursor:this.cursor,cursorOptions:this.opts.cursor})}async#y(e,t,i=!1){this.statuses.frozen&&await new Promise(r=>{this.unfreeze=()=>{this.statuses.frozen=!1,r()}}),i||await this.opts.beforeStep(this),await((r,n,o)=>new Promise(a=>{o.push(setTimeout(async()=>{await r(),a()},n||0))}))(e,t,this.timeouts),i||await this.opts.afterStep(this)}async#m(){if(!this.#u()&&this.cursor&&this.element.appendChild(this.cursor),this.#g){((r,n)=>{let o=`[${j}='${r}'] .${y}`,a=getComputedStyle(n),u=Object.entries(ie).reduce((h,[l,c])=>`${h} ${l}: var(--ti-cursor-${l}, ${c||a[l]});`,"");_(`${o} { display: inline-block; width: 0; ${u} }`,r)})(this.id,this.element),this.cursor.dataset.tiAnimationId=this.id;let{animation:e}=this.opts.cursor,{frames:t,options:i}=e;V({frames:t,cursor:this.cursor,options:{duration:this.opts.cursorSpeed,...i}})}}#u(){return C(this.element)}#e(e,t){return this.queue.add(e),this.#I(t),this}#I(e={}){let t=e.delay;t&&this.queue.add({delay:t})}#r(e={}){return[{func:()=>this.#n(e)},{func:()=>this.#n(this.opts)}]}async#n(e){this.opts=w(this.opts,e)}#T(){let e=this.opts.strings.filter(t=>!!t);e.forEach((t,i)=>{if(this.type(t),i+1===e.length)return;let r=this.opts.breakLines?[{func:()=>this.#h(E("BR")),typeable:!0}]:T({func:this.#o.bind(this),delay:this.#s(1)},this.queue.getTypeable().length);this.#f(r)})}#C=e=>{this.opts.cursor=(t=>{if(typeof t=="object"){let i={},{frames:r,options:n}=f.cursor.animation;return i.animation=t.animation||{},i.animation.frames=t.animation?.frames||r,i.animation.options=w(n,t.animation?.options||{}),i.autoPause=t.autoPause??f.cursor.autoPause,i.autoPauseDelay=t.autoPauseDelay||f.cursor.autoPauseDelay,i}return t===!0?f.cursor:t})(e.cursor??f.cursor),this.opts.strings=this.#E(M(this.opts.strings)),this.opts=w(this.opts,{html:!this.#l&&this.opts.html,nextStringDelay:$(this.opts.nextStringDelay),loopDelay:$(this.opts.loopDelay)})};#E(e){let t=this.element.innerHTML;return t?(this.element.innerHTML="",this.opts.startDelete?(this.element.innerHTML=t,x(this.element),this.#f(T({func:this.#o.bind(this),delay:this.#s(1),deletable:!0},this.#t.length)),e):(i=t,i.replace(/<!--(.+?)-->/g,"").trim().split(/<br(?:\s*?)(?:\/)?>/)).concat(e)):e;var i}#v(){if(this.#l)return null;let e=E("span");return e.className=y,this.#g?(e.innerHTML=Y(this.opts.cursorChar).innerHTML,e):(e.style.visibility="hidden",e)}#f(e){let t=this.opts.nextStringDelay;this.queue.add([{delay:t[0]},...e,{delay:t[1]}])}#h(e){((t,i)=>{if(C(t))return void(t.value=`${t.value}${i.textContent}`);i.innerHTML="";let r=(n=i.originalParent,/body/i.test(n?.tagName)?t:i.originalParent||t);var n;let o=S("."+y,r)||null;o&&o.parentElement!==r&&(r=o.parentElement),r.insertBefore(i,o)})(this.element,e)}#o(){this.#t.length&&(this.#l?this.element.value=this.element.value.slice(0,-1):this.#c(this.#t[this.cursorPosition]))}#c(e){((t,i)=>{if(!t)return;let r=t.parentNode;(r.childNodes.length>1||r.isSameNode(i)?t:r).remove()})(e,this.element)}#s(e=0){return(function(t){let{speed:i,deleteSpeed:r,lifeLike:n}=t;return r=r!==null?r:i/3,n?[z(i,O(i)),z(r,O(r))]:[i,r]})(this.opts)[e]}get#a(){return this.predictedCursorPosition??this.cursorPosition}get#l(){return C(this.element)}get#g(){return!!this.opts.cursor&&!this.#l}get#t(){return e=this.element,C(e)?K(e.value):Q(e,!0).filter(t=>!(t.childNodes.length>0));var e}}var ne=Object.defineProperty,oe=Object.getOwnPropertyDescriptor,d=(s,e,t,i)=>{for(var r,n=i>1?void 0:i?oe(e,t):e,o=s.length-1;o>=0;o--)(r=s[o])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&ne(e,t,n),n};exports.TypewriterElement=class extends J.$LitElement(A.css`
1
+ "use strict";const X=require("./consume-edta5ng5.cjs");require("rxjs"),require("rxjs/operators"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const p=require("lit/decorators.js");require("./tailwind.mixin-UijsBrYW.cjs");const J=require("./litElement.mixin-BVBdv0GP.cjs"),D=require("./delay-BWsVHQib.cjs"),W=require("./intersection-CVvaDv96.cjs"),A=require("lit"),B=s=>Array.isArray(s),M=s=>B(s)?s:[s],j="data-typeit-id",y="ti-cursor",G={started:!1,completed:!1,frozen:!1,destroyed:!1},f={breakLines:!0,cursor:{autoPause:!0,autoPauseDelay:500,animation:{frames:[0,0,1].map(s=>({opacity:s})),options:{iterations:1/0,easing:"steps(2, start)",fill:"forwards"}}},cursorChar:"|",cursorSpeed:1e3,deleteSpeed:null,html:!0,lifeLike:!0,loop:!1,loopDelay:750,nextStringDelay:750,speed:100,startDelay:250,startDelete:!1,strings:[],waitUntilVisible:!1,beforeString:()=>{},afterString:()=>{},beforeStep:()=>{},afterStep:()=>{},afterComplete:()=>{}},Z=`[${j}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`,E=s=>document.createElement(s),q=s=>document.createTextNode(s),_=(s,e="")=>{let t=E("style");t.id=e,t.appendChild(q(s)),document.head.appendChild(t)},$=s=>(B(s)||(s=[s/2,s/2]),s),z=(s,e)=>Math.abs(Math.random()*(s+e-(s-e))+(s-e));let O=s=>s/2;const K=s=>Array.from(s);let x=s=>([...s.childNodes].forEach(e=>{if(e.nodeValue)return[...e.nodeValue].forEach(t=>{e.parentNode.insertBefore(q(t),e)}),void e.remove();x(e)}),s);const Q=s=>{let e=document.implementation.createHTMLDocument();return e.body.innerHTML=s,x(e.body)};function Y(s,e=!1,t=!1){let i,r=s.querySelector(`.${y}`),n=document.createTreeWalker(s,NodeFilter.SHOW_ALL,{acceptNode:a=>{if(r&&t){if(a.classList?.contains(y))return NodeFilter.FILTER_ACCEPT;if(r.contains(a))return NodeFilter.FILTER_REJECT}return a.classList?.contains(y)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),o=[];for(;i=n.nextNode();)i.originalParent||(i.originalParent=i.parentNode),o.push(i);return e?o.reverse():o}function ee(s,e=!0){return e?Y(Q(s)):K(s).map(q)}const te=({index:s,newIndex:e,queueItems:t,cleanUp:i})=>{for(let r=s+1;r<e+1;r++)i(t[r][0])},U=s=>Number.isInteger(s),H=({queueItems:s,selector:e,cursorPosition:t,to:i})=>{if(U(e))return-1*e;let r=new RegExp("END","i").test(i),n=e?[...s].reverse().findIndex(({char:o})=>{let a=o.parentElement,u=a.matches(e);return!(!r||!u)||u&&a.firstChild.isSameNode(o)}):-1;return n<0&&(n=r?0:s.length-1),n-t+(r?0:1)},T=(s,e)=>new Array(e).fill(s);let v=s=>new Promise(e=>{requestAnimationFrame(async()=>{e(await s())})}),F=s=>s?.getAnimations().find(e=>e.id===s.dataset.tiAnimationId),V=({cursor:s,frames:e,options:t})=>{let i=s.animate(e,t);return i.pause(),i.id=s.dataset.tiAnimationId,v(()=>{v(()=>{i.play()})}),i},R=s=>s.func?.call(null),se=async({index:s,queueItems:e,wait:t,cursor:i,cursorOptions:r})=>{let n=e[s][1],o=[],a=s,u=n,h=()=>u&&!u.delay,l=n.shouldPauseCursor()&&r.autoPause;for(;h();)o.push(u),h()&&a++,u=e[a]?e[a][1]:null;if(o.length)return await v(async()=>{for(let b of o)await R(b)}),a-1;let c,m=F(i);return m&&(c={...m.effect.getComputedTiming(),delay:l?r.autoPauseDelay:0}),await t(async()=>{m&&l&&m.cancel(),await v(()=>{R(n)})},n.delay),await(({cursor:b,options:k,cursorOptions:N})=>{if(!b||!N)return;let P,I=F(b);I&&(k.delay=I.effect.getComputedTiming().delay,P=I.currentTime,I.cancel());let L=V({cursor:b,frames:N.animation.frames,options:k});return P&&(L.currentTime=P),L})({cursor:i,options:c,cursorOptions:r}),s};const C=s=>"value"in s;let g=s=>typeof s=="function"?s():s,S=(s,e=document,t=!1)=>e["querySelector"+(t?"All":"")](s);const w=(s,e)=>Object.assign({},s,e);let ie={"font-family":"","font-weight":"","font-size":"","font-style":"","line-height":"",color:"",transform:"translateX(-.125em)"};class re{element;timeouts;cursorPosition;predictedCursorPosition;statuses={started:!1,completed:!1,frozen:!1,destroyed:!1,firing:!1};opts;id;queue;cursor;flushCallback=null;unfreeze=()=>{};constructor(e,t={}){var i;this.opts=w(f,t),this.element=typeof(i=e)=="string"?S(i):i,this.timeouts=[],this.cursorPosition=0,this.unfreeze=()=>{},this.predictedCursorPosition=null,this.statuses=w({},G),this.id=Math.random().toString().substring(2,9),this.queue=(function(r){let n=function(l){return M(l).forEach(c=>h.set(Symbol(c.char?.innerText),o({...c}))),this},o=l=>(l.shouldPauseCursor=function(){return!!(this.typeable||this.cursorable||this.deletable)},l),a=()=>h,u=()=>Array.from(h.values()),h=new Map;return n(r),{add:n,set:function(l,c){let m=[...h.keys()];h.set(m[l],o(c))},wipe:function(){h=new Map,n(r)},done:(l,c=!1)=>c?h.delete(l):h.get(l).done=!0,reset:function(){h.forEach(l=>delete l.done)},destroy:l=>h.delete(l),getItems:(l=!1)=>l?u():u().filter(c=>!c.done),getQueue:a,getTypeable:()=>u().filter(l=>l.typeable),getPendingQueueItems:()=>{const l=[];for(let[,c]of a())c.done||l.push(c);return l}}})([{delay:this.opts.startDelay}]),this.#C(t),this.cursor=this.#v(),this.element.dataset.typeitId=this.id,_(Z),this.opts.strings.length&&this.#T()}go(){return this.statuses.started?this:(this.#m(),this.opts.waitUntilVisible?(e=this.element,t=this.#i.bind(this),new IntersectionObserver((i,r)=>{i.forEach(n=>{n.isIntersecting&&(t(),r.unobserve(e))})},{threshold:1}).observe(e),this):(this.#i(),this));var e,t}destroy(e=!0){this.timeouts=(this.timeouts.forEach(clearTimeout),[]),g(e)&&this.cursor&&this.#c(this.cursor),this.statuses.destroyed=!0}reset(e){!this.is("destroyed")&&this.destroy(),e?(this.queue.wipe(),e(this)):this.queue.reset(),this.cursorPosition=0;for(let t in this.statuses)this.statuses[t]=!1;return this.element[this.#u()?"value":"innerHTML"]="",this}is=function(e){return this.statuses[e]};type(e,t={}){e=g(e);let{instant:i}=t,r=this.#r(t),n=ee(e,this.opts.html).map(a=>{return{func:()=>this.#h(a),char:a,delay:i||(u=a,/<(.+)>(.*?)<\/(.+)>/.test(u.outerHTML))?0:this.#s(),typeable:a.nodeType===Node.TEXT_NODE};var u}),o=[r[0],{func:async()=>await this.opts.beforeString(e,this)},...n,{func:async()=>await this.opts.afterString(e,this)},r[1]];return this.#e(o,t)}break(e={}){return this.#e({func:()=>this.#h(E("BR")),typeable:!0},e)}move(e,t={}){e=g(e);let i=this.#r(t),{instant:r,to:n}=t,o=H({queueItems:this.queue.getTypeable(),selector:e===null?"":e,to:n,cursorPosition:this.#a}),a=o<0?-1:1;return this.predictedCursorPosition=this.#a+o,this.#e([i[0],...T({func:()=>this.#p(a),delay:r?0:this.#s(),cursorable:!0},Math.abs(o)),i[1]],t)}exec(e,t={}){let i=this.#r(t);return this.#e([i[0],{func:()=>e(this)},i[1]],t)}options(e,t={}){return e=g(e),this.#n(e),this.#e({},t)}pause(e,t={}){return this.#e({delay:g(e)},t)}delete(e=null,t={}){e=g(e);let i=this.#r(t),r=e,{instant:n,to:o}=t,a=this.queue.getTypeable(),u=r===null?a.length:U(r)?r:H({queueItems:a,selector:r,cursorPosition:this.#a,to:o});return this.#e([i[0],...T({func:this.#o.bind(this),delay:n?0:this.#s(1),deletable:!0},u),i[1]],t)}freeze(){this.statuses.frozen=!0}flush(e=null){return this.flushCallback=e||this.flushCallback,this.statuses.firing||(this.#m(),this.#i(!1).then(()=>{if(this.queue.getPendingQueueItems().length>0)return this.flush();this.flushCallback(),this.flushCallback=null})),this}getQueue(){return this.queue}getOptions(){return this.opts}updateOptions(e){return this.#n(e)}getElement(){return this.element}empty(e={}){return this.#e({func:this.#b.bind(this)},e)}async#b(){this.#u()?this.element.value="":this.#t.forEach(this.#c.bind(this))}async#i(e=!0){this.statuses.started=!0,this.statuses.firing=!0;let t=i=>{this.queue.done(i,!e)};try{let i=[...this.queue.getQueue()];for(let n=0;n<i.length;n++){let[o,a]=i[n];if(!a.done){if(!a.deletable||a.deletable&&this.#t.length){let u=await this.#d(n,i);te({index:n,newIndex:u,queueItems:i,cleanUp:t}),n=u}t(o)}}if(!e)return this.statuses.firing=!1,this;if(this.statuses.completed=!0,this.statuses.firing=!1,await this.opts.afterComplete(this),!this.opts.loop)throw"";let r=this.opts.loopDelay;this.#y(async()=>{await this.#w(r[0]),this.#i()},r[1])}catch{}return this.statuses.firing=!1,this}async#p(e){var t,i,r;this.cursorPosition=(t=e,i=this.cursorPosition,r=this.#t,Math.min(Math.max(i+t,0),r.length)),((n,o,a)=>{let u=o[a-1],h=S(`.${y}`,n);(n=u?.parentNode||n).insertBefore(h,u||null)})(this.element,this.#t,this.cursorPosition)}async#w(e){let t=this.#a;t&&await this.#p({value:t});let i=this.#t.map(r=>[Symbol(),{func:this.#o.bind(this),delay:this.#s(1),deletable:!0,shouldPauseCursor:()=>!0}]);for(let r=0;r<i.length;r++)await this.#d(r,i);this.queue.reset(),this.queue.set(0,{delay:e})}#d(e,t){return se({index:e,queueItems:t,wait:this.#y.bind(this),cursor:this.cursor,cursorOptions:this.opts.cursor})}async#y(e,t,i=!1){this.statuses.frozen&&await new Promise(r=>{this.unfreeze=()=>{this.statuses.frozen=!1,r()}}),i||await this.opts.beforeStep(this),await((r,n,o)=>new Promise(a=>{o.push(setTimeout(async()=>{await r(),a()},n||0))}))(e,t,this.timeouts),i||await this.opts.afterStep(this)}async#m(){if(!this.#u()&&this.cursor&&this.element.appendChild(this.cursor),this.#g){((r,n)=>{let o=`[${j}='${r}'] .${y}`,a=getComputedStyle(n),u=Object.entries(ie).reduce((h,[l,c])=>`${h} ${l}: var(--ti-cursor-${l}, ${c||a[l]});`,"");_(`${o} { display: inline-block; width: 0; ${u} }`,r)})(this.id,this.element),this.cursor.dataset.tiAnimationId=this.id;let{animation:e}=this.opts.cursor,{frames:t,options:i}=e;V({frames:t,cursor:this.cursor,options:{duration:this.opts.cursorSpeed,...i}})}}#u(){return C(this.element)}#e(e,t){return this.queue.add(e),this.#I(t),this}#I(e={}){let t=e.delay;t&&this.queue.add({delay:t})}#r(e={}){return[{func:()=>this.#n(e)},{func:()=>this.#n(this.opts)}]}async#n(e){this.opts=w(this.opts,e)}#T(){let e=this.opts.strings.filter(t=>!!t);e.forEach((t,i)=>{if(this.type(t),i+1===e.length)return;let r=this.opts.breakLines?[{func:()=>this.#h(E("BR")),typeable:!0}]:T({func:this.#o.bind(this),delay:this.#s(1)},this.queue.getTypeable().length);this.#f(r)})}#C=e=>{this.opts.cursor=(t=>{if(typeof t=="object"){let i={},{frames:r,options:n}=f.cursor.animation;return i.animation=t.animation||{},i.animation.frames=t.animation?.frames||r,i.animation.options=w(n,t.animation?.options||{}),i.autoPause=t.autoPause??f.cursor.autoPause,i.autoPauseDelay=t.autoPauseDelay||f.cursor.autoPauseDelay,i}return t===!0?f.cursor:t})(e.cursor??f.cursor),this.opts.strings=this.#E(M(this.opts.strings)),this.opts=w(this.opts,{html:!this.#l&&this.opts.html,nextStringDelay:$(this.opts.nextStringDelay),loopDelay:$(this.opts.loopDelay)})};#E(e){let t=this.element.innerHTML;return t?(this.element.innerHTML="",this.opts.startDelete?(this.element.innerHTML=t,x(this.element),this.#f(T({func:this.#o.bind(this),delay:this.#s(1),deletable:!0},this.#t.length)),e):(i=t,i.replace(/<!--(.+?)-->/g,"").trim().split(/<br(?:\s*?)(?:\/)?>/)).concat(e)):e;var i}#v(){if(this.#l)return null;let e=E("span");return e.className=y,this.#g?(e.innerHTML=Q(this.opts.cursorChar).innerHTML,e):(e.style.visibility="hidden",e)}#f(e){let t=this.opts.nextStringDelay;this.queue.add([{delay:t[0]},...e,{delay:t[1]}])}#h(e){((t,i)=>{if(C(t))return void(t.value=`${t.value}${i.textContent}`);i.innerHTML="";let r=(n=i.originalParent,/body/i.test(n?.tagName)?t:i.originalParent||t);var n;let o=S("."+y,r)||null;o&&o.parentElement!==r&&(r=o.parentElement),r.insertBefore(i,o)})(this.element,e)}#o(){this.#t.length&&(this.#l?this.element.value=this.element.value.slice(0,-1):this.#c(this.#t[this.cursorPosition]))}#c(e){((t,i)=>{if(!t)return;let r=t.parentNode;(r.childNodes.length>1||r.isSameNode(i)?t:r).remove()})(e,this.element)}#s(e=0){return(function(t){let{speed:i,deleteSpeed:r,lifeLike:n}=t;return r=r!==null?r:i/3,n?[z(i,O(i)),z(r,O(r))]:[i,r]})(this.opts)[e]}get#a(){return this.predictedCursorPosition??this.cursorPosition}get#l(){return C(this.element)}get#g(){return!!this.opts.cursor&&!this.#l}get#t(){return e=this.element,C(e)?K(e.value):Y(e,!0).filter(t=>!(t.childNodes.length>0));var e}}var ne=Object.defineProperty,oe=Object.getOwnPropertyDescriptor,d=(s,e,t,i)=>{for(var r,n=i>1?void 0:i?oe(e,t):e,o=s.length-1;o>=0;o--)(r=s[o])&&(n=(i?r(e,t,n):r(n))||n);return i&&n&&ne(e,t,n),n};exports.TypewriterElement=class extends J.$LitElement(A.css`
2
2
  :host {
3
3
  display: inline-block;
4
4
  }
@@ -113,12 +113,12 @@
113
113
  #typewriter * {
114
114
  transition: opacity 0.15s ease-out, transform 0.15s cubic-bezier(0.34, 1.56, 0.64, 1);
115
115
  }
116
- `){constructor(){super(...arguments),this.speed=35,this.delay=0,this.autoStart=!0,this.cursorChar="",this.deleteSpeed=20,this.once=!0,this.loop=!1,this.cyclePause=1500,this.typeItInstance=null,this.sessionKey=""}disconnectedCallback(){super.disconnectedCallback(),this._destroyTypeIt()}_startTyping(){if(this._destroyTypeIt(),this.sessionKey=this.generateSessionKey(),this.once&&sessionStorage.getItem(this.sessionKey)==="true")return void this.shadowRoot?.querySelector("slot")?.removeAttribute("hidden");if(!this.typewriterContainer)return;const s={speed:this.speed,startDelay:this.delay,cursor:!!this.cursorChar,cursorChar:this.cursorChar,deleteSpeed:this.deleteSpeed,loop:this.loop,afterComplete:()=>{if(this.once&&!this.loop)try{sessionStorage.setItem(this.sessionKey,"true")}catch{}this.dispatchEvent(new CustomEvent("typeit-complete",{bubbles:!0,composed:!0})),this.loop||this.typewriterContainer.style.setProperty("--ti-cursor-display","none")}};this.typeItInstance=new re(this.typewriterContainer,s),this._getSlottedNodes.forEach(e=>{if(e.nodeType===Node.TEXT_NODE){const t=e.textContent||"";t.trim()&&this.typeItInstance?.type(t)}else e instanceof HTMLElement&&this._processCustomElement(e)}),W.intersection$(this.shadowRoot?.host).subscribe(()=>{this.typeItInstance?.go()})}generateSessionKey(){const s=this._getSlottedElements.map(e=>e.outerHTML).join("");return this.once?L.hashContent(s):""}_destroyTypeIt(){if(this.typeItInstance){try{this.typeItInstance.destroy()}catch{}this.typeItInstance=null}}_processCustomElement(s){const e=s.getAttribute("action"),t=s.getAttribute("value"),i=s.getAttribute("cycle");if(i){const r=i.split("|").map(n=>n.trim());return void this._processCycle(r,s)}switch(e){case"pause":this.typeItInstance?.pause(parseInt(t||"0",10));break;case"delete":this.typeItInstance?.delete(parseInt(t||"0",10));break;default:s.tagName==="P"&&this.typeItInstance?.break(),this.typeItInstance?.type(s.textContent||"")}}_processCycle(s,e){if(s.length===0)return;const t=e.getAttribute("pause"),i=t?parseInt(t,10):this.cyclePause;s.forEach((r,n)=>{this.typeItInstance?.type(r),(n<s.length-1||this.loop)&&this.typeItInstance?.pause(i),(n<s.length-1||this.loop)&&this.typeItInstance?.delete(r.length)})}render(){return A.html`<div id="typewriter" aria-live="polite"></div>
116
+ `){constructor(){super(...arguments),this.speed=35,this.delay=0,this.autoStart=!0,this.cursorChar="",this.deleteSpeed=20,this.once=!0,this.loop=!1,this.cyclePause=1500,this.typeItInstance=null,this.sessionKey=""}disconnectedCallback(){super.disconnectedCallback(),this._destroyTypeIt()}_startTyping(){if(this._destroyTypeIt(),this.sessionKey=this.generateSessionKey(),this.once&&sessionStorage.getItem(this.sessionKey)==="true")return void this.shadowRoot?.querySelector("slot")?.removeAttribute("hidden");if(!this.typewriterContainer)return;const s={speed:this.speed,startDelay:this.delay,cursor:!!this.cursorChar,cursorChar:this.cursorChar,deleteSpeed:this.deleteSpeed,loop:this.loop,afterComplete:()=>{if(this.once&&!this.loop)try{sessionStorage.setItem(this.sessionKey,"true")}catch{}this.dispatchEvent(new CustomEvent("typeit-complete",{bubbles:!0,composed:!0})),this.loop||this.typewriterContainer.style.setProperty("--ti-cursor-display","none")}};this.typeItInstance=new re(this.typewriterContainer,s),this._getSlottedNodes.forEach(e=>{if(e.nodeType===Node.TEXT_NODE){const t=e.textContent||"";t.trim()&&this.typeItInstance?.type(t)}else e instanceof HTMLElement&&this._processCustomElement(e)}),W.intersection$(this.shadowRoot?.host).subscribe(()=>{this.typeItInstance?.go()})}generateSessionKey(){const s=this._getSlottedElements.map(e=>e.outerHTML).join("");return this.once?D.hashContent(s):""}_destroyTypeIt(){if(this.typeItInstance){try{this.typeItInstance.destroy()}catch{}this.typeItInstance=null}}_processCustomElement(s){const e=s.getAttribute("action"),t=s.getAttribute("value"),i=s.getAttribute("cycle");if(i){const r=i.split("|").map(n=>n.trim());return void this._processCycle(r,s)}switch(e){case"pause":this.typeItInstance?.pause(parseInt(t||"0",10));break;case"delete":this.typeItInstance?.delete(parseInt(t||"0",10));break;default:s.tagName==="P"&&this.typeItInstance?.break(),this.typeItInstance?.type(s.textContent||"")}}_processCycle(s,e){if(s.length===0)return;const t=e.getAttribute("pause"),i=t?parseInt(t,10):this.cyclePause;s.forEach((r,n)=>{this.typeItInstance?.type(r),(n<s.length-1||this.loop)&&this.typeItInstance?.pause(i),(n<s.length-1||this.loop)&&this.typeItInstance?.delete(r.length)})}render(){return A.html`<div id="typewriter" aria-live="polite"></div>
117
117
 
118
118
  <div class="typewriter">
119
119
  <slot
120
120
  hidden
121
121
  @slotchange=${()=>{this._startTyping()}}
122
122
  ></slot>
123
- </div> `}},d([p.property({type:Number})],exports.TypewriterElement.prototype,"speed",2),d([X.c({context:L.delayContext,subscribe:!0}),p.property({type:Number})],exports.TypewriterElement.prototype,"delay",2),d([p.property({type:Boolean})],exports.TypewriterElement.prototype,"autoStart",2),d([p.property({type:String})],exports.TypewriterElement.prototype,"cursorChar",2),d([p.property({type:Number})],exports.TypewriterElement.prototype,"deleteSpeed",2),d([p.property({type:Boolean})],exports.TypewriterElement.prototype,"once",2),d([p.property({type:Boolean})],exports.TypewriterElement.prototype,"loop",2),d([p.property({type:Number})],exports.TypewriterElement.prototype,"cyclePause",2),d([p.query("#typewriter")],exports.TypewriterElement.prototype,"typewriterContainer",2),d([p.queryAssignedNodes({flatten:!0})],exports.TypewriterElement.prototype,"_getSlottedNodes",2),d([p.queryAssignedElements({flatten:!0})],exports.TypewriterElement.prototype,"_getSlottedElements",2),exports.TypewriterElement=d([p.customElement("schmancy-typewriter")],exports.TypewriterElement);
124
- //# sourceMappingURL=typewriter-WbYqfXO7.cjs.map
123
+ </div> `}},d([p.property({type:Number})],exports.TypewriterElement.prototype,"speed",2),d([X.c({context:D.delayContext,subscribe:!0}),p.property({type:Number})],exports.TypewriterElement.prototype,"delay",2),d([p.property({type:Boolean})],exports.TypewriterElement.prototype,"autoStart",2),d([p.property({type:String})],exports.TypewriterElement.prototype,"cursorChar",2),d([p.property({type:Number})],exports.TypewriterElement.prototype,"deleteSpeed",2),d([p.property({type:Boolean})],exports.TypewriterElement.prototype,"once",2),d([p.property({type:Boolean})],exports.TypewriterElement.prototype,"loop",2),d([p.property({type:Number})],exports.TypewriterElement.prototype,"cyclePause",2),d([p.query("#typewriter")],exports.TypewriterElement.prototype,"typewriterContainer",2),d([p.queryAssignedNodes({flatten:!0})],exports.TypewriterElement.prototype,"_getSlottedNodes",2),d([p.queryAssignedElements({flatten:!0})],exports.TypewriterElement.prototype,"_getSlottedElements",2),exports.TypewriterElement=d([p.customElement("schmancy-typewriter")],exports.TypewriterElement);
124
+ //# sourceMappingURL=typewriter-Bscwd-36.cjs.map