@mhmo91/schmancy 0.2.5 → 0.2.6

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 (217) hide show
  1. package/dist/{animated-text-ZX1snylb.cjs → animated-text-B2Hsj2EE.cjs} +2 -2
  2. package/dist/{animated-text-ZX1snylb.cjs.map → animated-text-B2Hsj2EE.cjs.map} +1 -1
  3. package/dist/{animated-text-WprAnY6N.js → animated-text-Cl8DsOSx.js} +3 -3
  4. package/dist/{animated-text-WprAnY6N.js.map → animated-text-Cl8DsOSx.js.map} +1 -1
  5. package/dist/animated-text.cjs +1 -1
  6. package/dist/animated-text.js +1 -1
  7. package/dist/area.cjs +1 -1
  8. package/dist/{area.component-BTb4YMjB.js → area.component-B85bKRcZ.js} +3 -3
  9. package/dist/{area.component-BTb4YMjB.js.map → area.component-B85bKRcZ.js.map} +1 -1
  10. package/dist/{area.component-e52Eafj8.cjs → area.component-DmfwQylu.cjs} +2 -2
  11. package/dist/{area.component-e52Eafj8.cjs.map → area.component-DmfwQylu.cjs.map} +1 -1
  12. package/dist/area.js +1 -1
  13. package/dist/{autocomplete-BMJqXHOb.js → autocomplete-JwXoveWr.js} +3 -3
  14. package/dist/{autocomplete-BMJqXHOb.js.map → autocomplete-JwXoveWr.js.map} +1 -1
  15. package/dist/{autocomplete-CDURDcuP.cjs → autocomplete-p4IaQ3rG.cjs} +2 -2
  16. package/dist/{autocomplete-CDURDcuP.cjs.map → autocomplete-p4IaQ3rG.cjs.map} +1 -1
  17. package/dist/autocomplete.cjs +1 -1
  18. package/dist/autocomplete.js +1 -1
  19. package/dist/busy.cjs +1 -1
  20. package/dist/busy.js +1 -1
  21. package/dist/button.cjs +1 -1
  22. package/dist/button.js +1 -1
  23. package/dist/card.cjs +1 -1
  24. package/dist/card.js +1 -1
  25. package/dist/{checkbox-CVjDSD7Z.cjs → checkbox-CzjTuT3w.cjs} +2 -2
  26. package/dist/{checkbox-CVjDSD7Z.cjs.map → checkbox-CzjTuT3w.cjs.map} +1 -1
  27. package/dist/{checkbox-zjbsRV4T.js → checkbox-YQLMxQp0.js} +2 -2
  28. package/dist/{checkbox-zjbsRV4T.js.map → checkbox-YQLMxQp0.js.map} +1 -1
  29. package/dist/checkbox.cjs +1 -1
  30. package/dist/checkbox.js +1 -1
  31. package/dist/{chips-aWPtXsqr.js → chips-CeHrQrCw.js} +3 -3
  32. package/dist/{chips-aWPtXsqr.js.map → chips-CeHrQrCw.js.map} +1 -1
  33. package/dist/{chips-D66ZWon8.cjs → chips-RKqKhpMt.cjs} +2 -2
  34. package/dist/{chips-D66ZWon8.cjs.map → chips-RKqKhpMt.cjs.map} +1 -1
  35. package/dist/chips.cjs +1 -1
  36. package/dist/chips.js +1 -1
  37. package/dist/components.cjs +1 -1
  38. package/dist/components.js +1 -1
  39. package/dist/content-drawer.cjs +1 -1
  40. package/dist/content-drawer.js +1 -1
  41. package/dist/{date-range-BxBuTyht.cjs → date-range-C8QEPoSF.cjs} +2 -2
  42. package/dist/{date-range-BxBuTyht.cjs.map → date-range-C8QEPoSF.cjs.map} +1 -1
  43. package/dist/{date-range-Dcbpz5LG.js → date-range-DpmqQQA6.js} +3 -3
  44. package/dist/{date-range-Dcbpz5LG.js.map → date-range-DpmqQQA6.js.map} +1 -1
  45. package/dist/date-range.cjs +1 -1
  46. package/dist/date-range.js +1 -1
  47. package/dist/{delay-D6r9Ffu1.js → delay-BRuD9ZsU.js} +2 -2
  48. package/dist/{delay-D6r9Ffu1.js.map → delay-BRuD9ZsU.js.map} +1 -1
  49. package/dist/{delay-oEn5HbAU.cjs → delay-CwoNn0R6.cjs} +2 -2
  50. package/dist/{delay-oEn5HbAU.cjs.map → delay-CwoNn0R6.cjs.map} +1 -1
  51. package/dist/delay.cjs +1 -1
  52. package/dist/delay.js +1 -1
  53. package/dist/{divider-ev9Kr0U7.cjs → divider-BmOzQ2GN.cjs} +2 -2
  54. package/dist/{divider-ev9Kr0U7.cjs.map → divider-BmOzQ2GN.cjs.map} +1 -1
  55. package/dist/{divider-C7Eoqg9K.js → divider-OsKCBnzO.js} +3 -3
  56. package/dist/{divider-C7Eoqg9K.js.map → divider-OsKCBnzO.js.map} +1 -1
  57. package/dist/divider.cjs +1 -1
  58. package/dist/divider.js +1 -1
  59. package/dist/{form-GMVrqpHh.js → form-BrnglTfc.js} +2 -2
  60. package/dist/{form-GMVrqpHh.js.map → form-BrnglTfc.js.map} +1 -1
  61. package/dist/{form-1qIEblTD.cjs → form-qcKjLvvI.cjs} +2 -2
  62. package/dist/{form-1qIEblTD.cjs.map → form-qcKjLvvI.cjs.map} +1 -1
  63. package/dist/form.cjs +1 -1
  64. package/dist/form.js +1 -1
  65. package/dist/{icon-BC7HF1LD.cjs → icon-CEMFBCcI.cjs} +2 -2
  66. package/dist/{icon-BC7HF1LD.cjs.map → icon-CEMFBCcI.cjs.map} +1 -1
  67. package/dist/{icon-button-jOYAxg9J.js → icon-button-CR1xaeX3.js} +3 -3
  68. package/dist/{icon-button-jOYAxg9J.js.map → icon-button-CR1xaeX3.js.map} +1 -1
  69. package/dist/{icon-button-De3ulD_z.cjs → icon-button-Ut2BREU3.cjs} +2 -2
  70. package/dist/{icon-button-De3ulD_z.cjs.map → icon-button-Ut2BREU3.cjs.map} +1 -1
  71. package/dist/{icon-DeZg9ygb.js → icon-gMfGHTB7.js} +3 -3
  72. package/dist/{icon-DeZg9ygb.js.map → icon-gMfGHTB7.js.map} +1 -1
  73. package/dist/icons.cjs +1 -1
  74. package/dist/icons.js +1 -1
  75. package/dist/index.cjs +1 -1
  76. package/dist/index.js +32 -32
  77. package/dist/{input-CJEATp6c.js → input-DMEOrHcQ.js} +2 -2
  78. package/dist/{input-CJEATp6c.js.map → input-DMEOrHcQ.js.map} +1 -1
  79. package/dist/{input-CD6peoaf.cjs → input-I662p43y.cjs} +2 -2
  80. package/dist/{input-CD6peoaf.cjs.map → input-I662p43y.cjs.map} +1 -1
  81. package/dist/input.cjs +1 -1
  82. package/dist/input.js +1 -1
  83. package/dist/layout.cjs +1 -1
  84. package/dist/layout.js +1 -1
  85. package/dist/list.cjs +1 -1
  86. package/dist/list.js +1 -1
  87. package/dist/{litElement.mixin-tfNlySsk.cjs → litElement.mixin-CcvIvqxb.cjs} +2 -2
  88. package/dist/{litElement.mixin-tfNlySsk.cjs.map → litElement.mixin-CcvIvqxb.cjs.map} +1 -1
  89. package/dist/{litElement.mixin-7ULqg8XW.js → litElement.mixin-DzAZO77V.js} +2 -2
  90. package/dist/{litElement.mixin-7ULqg8XW.js.map → litElement.mixin-DzAZO77V.js.map} +1 -1
  91. package/dist/{menu-DjJq2oIx.js → menu-BCaGhzWH.js} +3 -3
  92. package/dist/{menu-DjJq2oIx.js.map → menu-BCaGhzWH.js.map} +1 -1
  93. package/dist/{menu-AjGY7zys.cjs → menu-BvnWyx7C.cjs} +2 -2
  94. package/dist/{menu-AjGY7zys.cjs.map → menu-BvnWyx7C.cjs.map} +1 -1
  95. package/dist/menu.cjs +1 -1
  96. package/dist/menu.js +1 -1
  97. package/dist/nav-drawer.cjs +1 -1
  98. package/dist/nav-drawer.js +1 -1
  99. package/dist/notification.cjs +1 -1
  100. package/dist/notification.js +1 -1
  101. package/dist/{option-vffOh8kD.cjs → option-9tcTfHed.cjs} +2 -2
  102. package/dist/{option-vffOh8kD.cjs.map → option-9tcTfHed.cjs.map} +1 -1
  103. package/dist/{option-CMO0s0ZA.js → option-D7YIvw13.js} +2 -2
  104. package/dist/{option-CMO0s0ZA.js.map → option-D7YIvw13.js.map} +1 -1
  105. package/dist/option.cjs +1 -1
  106. package/dist/option.js +1 -1
  107. package/dist/{outlet-CiF64oFE.js → outlet-BJcvmmU-.js} +2 -2
  108. package/dist/{outlet-CiF64oFE.js.map → outlet-BJcvmmU-.js.map} +1 -1
  109. package/dist/{outlet-B-n4OmvF.cjs → outlet-CR51h_EW.cjs} +2 -2
  110. package/dist/{outlet-B-n4OmvF.cjs.map → outlet-CR51h_EW.cjs.map} +1 -1
  111. package/dist/{payment-card-form-CzU2JNAf.js → payment-card-form-CWTv6RZW.js} +3 -3
  112. package/dist/{payment-card-form-CzU2JNAf.js.map → payment-card-form-CWTv6RZW.js.map} +1 -1
  113. package/dist/{payment-card-form-Db_Z6cO5.cjs → payment-card-form-CfxdH9Ww.cjs} +2 -2
  114. package/dist/{payment-card-form-Db_Z6cO5.cjs.map → payment-card-form-CfxdH9Ww.cjs.map} +1 -1
  115. package/dist/{radio-group-7nt46fXZ.js → radio-group-DgWBhZ1z.js} +2 -2
  116. package/dist/{radio-group-7nt46fXZ.js.map → radio-group-DgWBhZ1z.js.map} +1 -1
  117. package/dist/{radio-group-DJYSoWBy.cjs → radio-group-g5dYbBjj.cjs} +2 -2
  118. package/dist/{radio-group-DJYSoWBy.cjs.map → radio-group-g5dYbBjj.cjs.map} +1 -1
  119. package/dist/radio-group.cjs +1 -1
  120. package/dist/radio-group.js +1 -1
  121. package/dist/{scroll-DfFQkfsL.js → scroll-CDMKyXlg.js} +2 -2
  122. package/dist/{scroll-DfFQkfsL.js.map → scroll-CDMKyXlg.js.map} +1 -1
  123. package/dist/{scroll-wAplw639.cjs → scroll-DdnOkTUU.cjs} +2 -2
  124. package/dist/{scroll-wAplw639.cjs.map → scroll-DdnOkTUU.cjs.map} +1 -1
  125. package/dist/{select-B1f_i1ap.cjs → select-C-9U4aXL.cjs} +2 -2
  126. package/dist/{select-B1f_i1ap.cjs.map → select-C-9U4aXL.cjs.map} +1 -1
  127. package/dist/{select-D4GoZ34Z.js → select-CgqhzQeG.js} +3 -3
  128. package/dist/{select-D4GoZ34Z.js.map → select-CgqhzQeG.js.map} +1 -1
  129. package/dist/select.cjs +1 -1
  130. package/dist/select.js +1 -1
  131. package/dist/sheet-Bo4UzC3M.js +189 -0
  132. package/dist/sheet-Bo4UzC3M.js.map +1 -0
  133. package/dist/sheet-u7gTdCVC.cjs +46 -0
  134. package/dist/sheet-u7gTdCVC.cjs.map +1 -0
  135. package/dist/sheet.cjs +1 -1
  136. package/dist/sheet.js +1 -1
  137. package/dist/{slider-Dy2X0oq3.js → slider-C-2Dtp0w.js} +3 -3
  138. package/dist/{slider-Dy2X0oq3.js.map → slider-C-2Dtp0w.js.map} +1 -1
  139. package/dist/{slider-CjjoJTVy.cjs → slider-NBL_wss9.cjs} +2 -2
  140. package/dist/{slider-CjjoJTVy.cjs.map → slider-NBL_wss9.cjs.map} +1 -1
  141. package/dist/slider.cjs +1 -1
  142. package/dist/slider.js +1 -1
  143. package/dist/{spinner-C80gw4he.js → spinner-DyhJHfNo.js} +3 -3
  144. package/dist/{spinner-C80gw4he.js.map → spinner-DyhJHfNo.js.map} +1 -1
  145. package/dist/{spinner-4EbjEFc8.cjs → spinner-jhDZDoZ_.cjs} +2 -2
  146. package/dist/{spinner-4EbjEFc8.cjs.map → spinner-jhDZDoZ_.cjs.map} +1 -1
  147. package/dist/{surface-CQAyPwkD.cjs → surface-BtnEjyvR.cjs} +2 -2
  148. package/dist/{surface-CQAyPwkD.cjs.map → surface-BtnEjyvR.cjs.map} +1 -1
  149. package/dist/{surface-Ctrl8tC0.js → surface-C5Lec-AF.js} +2 -2
  150. package/dist/{surface-Ctrl8tC0.js.map → surface-C5Lec-AF.js.map} +1 -1
  151. package/dist/surface.cjs +1 -1
  152. package/dist/surface.js +1 -1
  153. package/dist/{table-C6evJfhm.cjs → table-DJR_1tnU.cjs} +2 -2
  154. package/dist/{table-C6evJfhm.cjs.map → table-DJR_1tnU.cjs.map} +1 -1
  155. package/dist/{table-DqVhvHWO.js → table-upGzIia_.js} +2 -2
  156. package/dist/{table-DqVhvHWO.js.map → table-upGzIia_.js.map} +1 -1
  157. package/dist/table.cjs +1 -1
  158. package/dist/table.js +1 -1
  159. package/dist/{tabs-group-CL9Pglz4.cjs → tabs-group-CRDP7Djw.cjs} +2 -2
  160. package/dist/{tabs-group-CL9Pglz4.cjs.map → tabs-group-CRDP7Djw.cjs.map} +1 -1
  161. package/dist/{tabs-group-ClqcDvFv.js → tabs-group-LuGpm0sj.js} +2 -2
  162. package/dist/{tabs-group-ClqcDvFv.js.map → tabs-group-LuGpm0sj.js.map} +1 -1
  163. package/dist/tabs.cjs +1 -1
  164. package/dist/tabs.js +1 -1
  165. package/dist/{tailwind.mixin-sZ3A8X0T.cjs → tailwind.mixin-BZjCpGfl.cjs} +2 -2
  166. package/dist/{tailwind.mixin-sZ3A8X0T.cjs.map → tailwind.mixin-BZjCpGfl.cjs.map} +1 -1
  167. package/dist/{tailwind.mixin-qh_Ahoe6.js → tailwind.mixin-C0_Bt1Xe.js} +12 -12
  168. package/dist/{tailwind.mixin-qh_Ahoe6.js.map → tailwind.mixin-C0_Bt1Xe.js.map} +1 -1
  169. package/dist/teleport.cjs +1 -1
  170. package/dist/{teleport.component-BZfCUZCo.js → teleport.component-D30hS_n9.js} +34 -34
  171. package/dist/{teleport.component-BZfCUZCo.js.map → teleport.component-D30hS_n9.js.map} +1 -1
  172. package/dist/{teleport.component-CBL4y6UF.cjs → teleport.component-THQUVYzw.cjs} +2 -2
  173. package/dist/{teleport.component-CBL4y6UF.cjs.map → teleport.component-THQUVYzw.cjs.map} +1 -1
  174. package/dist/teleport.js +1 -1
  175. package/dist/{textarea-BZskb4ff.cjs → textarea-CFZZ1Gu6.cjs} +2 -2
  176. package/dist/{textarea-BZskb4ff.cjs.map → textarea-CFZZ1Gu6.cjs.map} +1 -1
  177. package/dist/{textarea-BskVUKzF.js → textarea-VJQ3NGSS.js} +2 -2
  178. package/dist/{textarea-BskVUKzF.js.map → textarea-VJQ3NGSS.js.map} +1 -1
  179. package/dist/textarea.cjs +1 -1
  180. package/dist/textarea.js +1 -1
  181. package/dist/{theme-button-DesGHZ6-.js → theme-button-1PV2MUS7.js} +2 -2
  182. package/dist/{theme-button-DesGHZ6-.js.map → theme-button-1PV2MUS7.js.map} +1 -1
  183. package/dist/{theme-button-B_sQNI3r.cjs → theme-button-DHQv605r.cjs} +2 -2
  184. package/dist/{theme-button-B_sQNI3r.cjs.map → theme-button-DHQv605r.cjs.map} +1 -1
  185. package/dist/theme-button.cjs +1 -1
  186. package/dist/theme-button.js +1 -1
  187. package/dist/theme.cjs +1 -1
  188. package/dist/{theme.component-09GDsjpK.js → theme.component-BmmjcnrT.js} +61 -61
  189. package/dist/{theme.component-09GDsjpK.js.map → theme.component-BmmjcnrT.js.map} +1 -1
  190. package/dist/{theme.component-DGdGPj9P.cjs → theme.component-uRe2gufA.cjs} +3 -3
  191. package/dist/{theme.component-DGdGPj9P.cjs.map → theme.component-uRe2gufA.cjs.map} +1 -1
  192. package/dist/theme.js +1 -1
  193. package/dist/{tree-CihS-3ZD.js → tree-DQ9irfDc.js} +2 -2
  194. package/dist/{tree-CihS-3ZD.js.map → tree-DQ9irfDc.js.map} +1 -1
  195. package/dist/{tree-DUS1zZNw.cjs → tree-j7aC86In.cjs} +2 -2
  196. package/dist/{tree-DUS1zZNw.cjs.map → tree-j7aC86In.cjs.map} +1 -1
  197. package/dist/tree.cjs +1 -1
  198. package/dist/tree.js +1 -1
  199. package/dist/{typewriter-PucRqoAA.js → typewriter-BvTFERZS.js} +4 -4
  200. package/dist/{typewriter-PucRqoAA.js.map → typewriter-BvTFERZS.js.map} +1 -1
  201. package/dist/{typewriter-CJAKgz83.cjs → typewriter-CzHNbkkC.cjs} +2 -2
  202. package/dist/{typewriter-CJAKgz83.cjs.map → typewriter-CzHNbkkC.cjs.map} +1 -1
  203. package/dist/typewriter.cjs +1 -1
  204. package/dist/typewriter.js +1 -1
  205. package/dist/{typography-CWsxjQLr.cjs → typography-Ck-J9-0w.cjs} +2 -2
  206. package/dist/{typography-CWsxjQLr.cjs.map → typography-Ck-J9-0w.cjs.map} +1 -1
  207. package/dist/{typography-ByDngQWd.js → typography-x0gzDR7s.js} +2 -2
  208. package/dist/{typography-ByDngQWd.js.map → typography-x0gzDR7s.js.map} +1 -1
  209. package/dist/typography.cjs +1 -1
  210. package/dist/typography.js +1 -1
  211. package/package.json +1 -1
  212. package/types/src/sheet/sheet.d.ts +12 -14
  213. package/types/src/theme/theme.component.d.ts +1 -0
  214. package/dist/sheet-Br-tYMRf.js +0 -189
  215. package/dist/sheet-Br-tYMRf.js.map +0 -1
  216. package/dist/sheet-CosRC56a.cjs +0 -43
  217. package/dist/sheet-CosRC56a.cjs.map +0 -1
@@ -1,4 +1,4 @@
1
- "use strict";const e=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const h=require("./litElement.mixin-tfNlySsk.cjs");require("./tailwind.mixin-sZ3A8X0T.cjs");const c=require("lit"),r=require("lit/decorators.js");var d=Object.defineProperty,u=Object.getOwnPropertyDescriptor,s=(i,a,p,n)=>{for(var l,o=n>1?void 0:n?u(a,p):a,y=i.length-1;y>=0;y--)(l=i[y])&&(o=(n?l(a,p,o):l(o))||o);return n&&o&&d(a,p,o),o};let t=class extends h.$LitElement(c.css`
1
+ "use strict";const e=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const h=require("./litElement.mixin-CcvIvqxb.cjs");require("./tailwind.mixin-BZjCpGfl.cjs");const c=require("lit"),r=require("lit/decorators.js");var d=Object.defineProperty,u=Object.getOwnPropertyDescriptor,s=(i,a,p,n)=>{for(var l,o=n>1?void 0:n?u(a,p):a,y=i.length-1;y>=0;y--)(l=i[y])&&(o=(n?l(a,p,o):l(o))||o);return n&&o&&d(a,p,o),o};let t=class extends h.$LitElement(c.css`
2
2
  :host {
3
3
  font-family: inherit;
4
4
  display: block;
@@ -34,4 +34,4 @@
34
34
  </span>
35
35
  </span>
36
36
  `}};s([r.property({type:String})],t.prototype,"ease",2),s([r.property({type:Number})],t.prototype,"delay",2),s([r.property({type:Number})],t.prototype,"stagger",2),s([r.property({type:Number})],t.prototype,"duration",2),s([r.property({type:Array})],t.prototype,"scale",2),s([r.property({type:Array})],t.prototype,"opacity",2),s([r.property({type:Array})],t.prototype,"translateX",2),s([r.property({type:Array})],t.prototype,"translateY",2),s([r.property({type:Array})],t.prototype,"translateZ",2),s([r.property({type:Array})],t.prototype,"rotateZ",2),s([r.property({type:Boolean})],t.prototype,"resetOnScroll",2),s([r.queryAssignedNodes()],t.prototype,"defaultSlot",2),s([r.query(".letters")],t.prototype,"letters",2),s([r.query(".ml7")],t.prototype,"ml7",2),t=s([r.customElement("schmancy-animated-text")],t);
37
- //# sourceMappingURL=animated-text-ZX1snylb.cjs.map
37
+ //# sourceMappingURL=animated-text-B2Hsj2EE.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"animated-text-ZX1snylb.cjs","sources":["../src/animated-text/animated-text.ts"],"sourcesContent":["// Removed: import { createTimeline, stagger } from '@packages/anime-beta-master'\nimport { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, queryAssignedNodes } from 'lit/decorators.js'\nimport {\n\tconcat,\n\tdistinctUntilChanged,\n\tfilter,\n\tfromEvent,\n\tinterval,\n\tmap,\n\tstartWith,\n\ttake,\n\ttap,\n\tthrottleTime,\n} from 'rxjs'\n\n/**\n * @element schmancy-animated-text\n * Inspired by https://tobiasahlin.com/moving-letters/#1\n */\n@customElement('schmancy-animated-text')\nexport default class SchmancyAnimatedText extends $LitElement(css`\n\t:host {\n\t\tfont-family: inherit;\n\t\tdisplay: block;\n\t}\n\t.ml7 {\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t}\n\t.ml7 .text-wrapper {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t\toverflow: hidden;\n\t}\n\t.ml7 .letter {\n\t\ttransform-origin: 0 100%;\n\t\tdisplay: inline-block;\n\t\topacity: 0;\n\t}\n`) {\n\t@property({ type: String }) ease = 'outExpo' // not a built-in string for Web Animations\n\t@property({ type: Number }) delay = 0\n\t@property({ type: Number }) stagger = 50\n\t@property({ type: Number }) duration = 750\n\t@property({ type: Array }) scale = [0, 1]\n\t@property({ type: Array }) opacity = [0, 1]\n\t@property({ type: Array }) translateX = ['0.55em', '0em']\n\t@property({ type: Array }) translateY = ['1.1em', '0em']\n\t@property({ type: Array }) translateZ = [0, 0]\n\t@property({ type: Array }) rotateZ = [180, 0]\n\t@property({ type: Boolean }) resetOnScroll = true\n\n\t@queryAssignedNodes() defaultSlot!: HTMLElement[]\n\t@query('.letters') letters!: HTMLElement\n\t@query('.ml7') ml7!: HTMLElement\n\n\t// Function to check if an element is in the viewport\n\tisInViewport(element: HTMLElement) {\n\t\tconst rect = element.getBoundingClientRect()\n\t\treturn (\n\t\t\trect.top >= 0 &&\n\t\t\trect.left >= 0 &&\n\t\t\trect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n\t\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth)\n\t\t)\n\t}\n\n\tasync firstUpdated() {\n\t\t// Split the text into <span class=\"letter\"> ... </span> elements\n\t\tthis.letters.innerHTML = this.defaultSlot[0].textContent!.replace(/\\S/g, `<span class=\"letter\">$&</span>`)\n\n\t\t// Observe viewport + initial readiness\n\t\tconcat(\n\t\t\t// 1) Wait until the element is rendered (width/height > 0)\n\t\t\tinterval(10).pipe(\n\t\t\t\tstartWith(true),\n\t\t\t\tfilter(() => {\n\t\t\t\t\tconst rect = this.getBoundingClientRect()\n\t\t\t\t\treturn rect.width > 0 && rect.height > 0\n\t\t\t\t}),\n\t\t\t\ttake(1),\n\t\t\t),\n\t\t\t// 2) Then handle scroll events, throttled\n\t\t\tfromEvent(window, 'scroll').pipe(\n\t\t\t\tthrottleTime(0, undefined, {\n\t\t\t\t\tleading: true,\n\t\t\t\t\ttrailing: true,\n\t\t\t\t}),\n\t\t\t\tstartWith(true),\n\t\t\t\tmap(() => this.isInViewport(this)),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(inViewport => {\n\t\t\t\t\t// If leaving viewport and `resetOnScroll` is true, reset letters to opacity 0\n\t\t\t\t\tif (!inViewport && this.resetOnScroll) {\n\t\t\t\t\t\tArray.from(this.letters.children).forEach((letter: HTMLElement) => {\n\t\t\t\t\t\t\tletter.style.opacity = '0'\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tfilter(isInViewport => isInViewport),\n\t\t\t\t// If resetOnScroll = false, animate only the first time inView. If true, repeat.\n\t\t\t\tthis.resetOnScroll ? tap() : take(1),\n\t\t\t\ttap({\n\t\t\t\t\tnext: () => {\n\t\t\t\t\t\t// Animate letters with the native Web Animations API\n\t\t\t\t\t\tconst letters = this.shadowRoot!.querySelectorAll<HTMLElement>('.ml7 .letter')\n\n\t\t\t\t\t\tletters.forEach((letter, i) => {\n\t\t\t\t\t\t\t// Combine all transforms into one CSS transform string\n\t\t\t\t\t\t\t// From\n\t\t\t\t\t\t\tconst fromTransform = `\n translate3d(${this.translateX[0]}, ${this.translateY[0]}, ${this.translateZ[0]}px)\n rotateZ(${this.rotateZ[0]}deg)\n scale(${this.scale[0]})\n `\n\t\t\t\t\t\t\t// To\n\t\t\t\t\t\t\tconst toTransform = `\n translate3d(${this.translateX[1]}, ${this.translateY[1]}, ${this.translateZ[1]}px)\n rotateZ(${this.rotateZ[1]}deg)\n scale(${this.scale[1]})\n `\n\t\t\t\t\t\t\t// Approximate `outExpo` or pick a standard easing (like 'ease-out'):\n\t\t\t\t\t\t\t// outExpo often approximated by cubic-bezier(0.19, 1, 0.22, 1)\n\t\t\t\t\t\t\tconst easingMap: Record<string, string> = {\n\t\t\t\t\t\t\t\toutExpo: 'cubic-bezier(0.19, 1, 0.22, 1)',\n\t\t\t\t\t\t\t\t// add more if you want\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst keyframes: Keyframe[] = [\n\t\t\t\t\t\t\t\t{ transform: fromTransform, opacity: String(this.opacity[0]) },\n\t\t\t\t\t\t\t\t{ transform: toTransform, opacity: String(this.opacity[1]) },\n\t\t\t\t\t\t\t]\n\n\t\t\t\t\t\t\tletter.animate(keyframes, {\n\t\t\t\t\t\t\t\tduration: this.duration,\n\t\t\t\t\t\t\t\teasing: easingMap[this.ease] || 'ease-out',\n\t\t\t\t\t\t\t\tdelay: this.delay + i * this.stagger, // staggered start\n\t\t\t\t\t\t\t\tfill: 'forwards', // so the letters remain visible\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t).subscribe()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<span class=\"ml7\">\n\t\t\t\t<span class=\"text-wrapper\">\n\t\t\t\t\t<span class=\"letters\">\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-animated-text': SchmancyAnimatedText\n\t}\n}\n"],"names":["SchmancyAnimatedText","$LitElement","css","super","arguments","this","ease","delay","stagger","duration","scale","opacity","translateX","translateY","translateZ","rotateZ","resetOnScroll","element","rect","getBoundingClientRect","top","left","bottom","window","innerHeight","document","documentElement","clientHeight","right","innerWidth","clientWidth","firstUpdated","letters","innerHTML","defaultSlot","textContent","replace","concat","interval","pipe","startWith","filter","width","height","take","fromEvent","throttleTime","leading","trailing","map","isInViewport","distinctUntilChanged","tap","inViewport","Array","from","children","forEach","letter","style","next","shadowRoot","querySelectorAll","i","fromTransform","toTransform","keyframes","transform","String","animate","easing","outExpo","fill","subscribe","html","__decorateClass","property","type","prototype","Number","Boolean","queryAssignedNodes","query","customElement"],"mappings":"qcAsBA,IAAqBA,EAArB,cAAkDC,EAAAA,YAAYC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA9D,CAAA,CAAA,aAAAC,CAAAA,MAAAA,GAAAC,SAoBoCC,EAAAA,KAAAC,KAAA,UACCD,KAAAE,MAAA,EACEF,KAAAG,QAAA,GACCH,KAAAI,SAAA,IACJJ,KAAAK,MAAA,CAAC,EAAG,CACFL,EAAAA,KAAAM,QAAA,CAAC,EAAG,CAAA,EACDN,KAAAO,WAAA,CAAC,SAAU,OACXP,KAAAQ,WAAA,CAAC,QAAS,KACVR,EAAAA,KAAAS,WAAA,CAAC,EAAG,CAAA,EACPT,KAAAU,QAAA,CAAC,IAAK,CACEV,EAAAA,KAAAW,gBAAA,CAO7C,aAAaC,EACN,CAAA,MAAAC,EAAOD,EAAQE,sBACrB,EAAA,OACCD,EAAKE,KAAO,GACZF,EAAKG,MAAQ,GACbH,EAAKI,SAAWC,OAAOC,aAAeC,SAASC,gBAAgBC,eAC/DT,EAAKU,QAAUL,OAAOM,YAAcJ,SAASC,gBAAgBI,YAAA,CAI/D,MAAMC,cAAAA,CAEA1B,KAAA2B,QAAQC,UAAY5B,KAAK6B,YAAY,CAAGC,EAAAA,YAAaC,QAAQ,MAAO,gCAGzEC,EAAAA,EAAAA,OAECC,EAAAA,SAAS,EAAA,EAAIC,KACZC,EAAAA,YACAC,EAAAA,EAAAA,OAAO,IAAA,CACA,MAAAvB,EAAOb,KAAKc,sBAAAA,EAClB,OAAOD,EAAKwB,MAAQ,GAAKxB,EAAKyB,OAAS,CAAA,CAAA,EAExCC,EAAAA,KAAK,CAAA,CAAA,EAGNC,YAAUtB,OAAQ,QAAA,EAAUgB,KAC3BO,EAAAA,aAAa,EAAA,OAAc,CAC1BC,QAAS,GACTC,SAAU,EAAA,CAAA,EAEXR,EAAAA,UAAU,EAAA,EACVS,EAAAA,IAAI,IAAM5C,KAAK6C,aAAa7C,IAAAA,CAAAA,EAC5B8C,yBACAC,MAAkBC,GAEZA,CAAAA,CAAAA,GAAchD,KAAKW,eACvBsC,MAAMC,KAAKlD,KAAK2B,QAAQwB,QAAAA,EAAUC,QAASC,GAAAA,CAC1CA,EAAOC,MAAMhD,QAAU,GAAA,CACvB,CAAA,CAAA,EAGH8B,YAAuBS,CAAAA,EAEvB7C,KAAKW,cAAgBoC,EAAAA,IAAQR,EAAAA,EAAAA,KAAK,CAAA,EAClCQ,MAAI,CACHQ,KAAM,IAEWvD,CAAAA,KAAKwD,WAAYC,iBAA8B,cAEvDL,EAAAA,QAAQ,CAACC,EAAQK,IAAAA,CAGxB,MAAMC,EAAgB;AAAA,8BACC3D,KAAKO,WAAW,CAAA,CAAA,KAAOP,KAAKQ,WAAW,CAAOR,CAAAA,KAAAA,KAAKS,WAAW,CAAA,CAAA;AAAA,0BAClET,KAAKU,QAAQ;wBACfV,KAAKK,MAAM,CAGtBuD,CAAAA;AAAAA,gBAAAA,EAAc;AAAA,8BACG5D,KAAKO,WAAW,CAAA,CAAA,KAAOP,KAAKQ,WAAW,CAAOR,CAAAA,KAAAA,KAAKS,WAAW,CAAA,CAAA;AAAA,0BAClET,KAAKU,QAAQ;wBACfV,KAAKK,MAAM,CAQtBwD,CAAAA;AAAAA,gBAAAA,EAAwB,CAC7B,CAAEC,UAAWH,EAAerD,QAASyD,OAAO/D,KAAKM,QAAQ,CACzD,CAAA,CAAA,EAAA,CAAEwD,UAAWF,EAAatD,QAASyD,OAAO/D,KAAKM,QAAQ,CAAA,CAAA,CAAA,CAAA,EAGxD+C,EAAOW,QAAQH,EAAW,CACzBzD,SAAUJ,KAAKI,SACf6D,OAXyC,CACzCC,QAAS,gCAUSlE,EAAAA,KAAKC,OAAS,WAChCC,MAAOF,KAAKE,MAAQwD,EAAI1D,KAAKG,QAC7BgE,KAAM,UACN,CAAA,CAAA,CAAA,CACD,CAIHC,CAAAA,CAAAA,CAAAA,EAAAA,UAAAA,CAAU,CAGb,QACQ,CAAA,OAAAC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAAA,CAAA,EA1GoBC,EAAA,CAA3BC,WAAS,CAAEC,KAAMT,MAAAA,CAAAA,CAAAA,EApBEpE,EAoBQ8E,UAAA,OAAA,CACAH,EAAAA,EAAA,CAA3BC,WAAS,CAAEC,KAAME,MArBE/E,CAAAA,CAAAA,EAAAA,EAqBQ8E,UAAA,QAAA,CAAA,EACAH,EAAA,CAA3BC,WAAS,CAAEC,KAAME,MAAAA,CAAAA,CAAAA,EAtBE/E,EAsBQ8E,UAAA,UAAA,CACAH,EAAAA,EAAA,CAA3BC,WAAS,CAAEC,KAAME,MAvBE/E,CAAAA,CAAAA,EAAAA,EAuBQ8E,UAAA,WAAA,GACDH,EAAA,CAA1BC,WAAS,CAAEC,KAAMvB,KAAAA,CAAAA,CAAAA,EAxBEtD,EAwBO8E,UAAA,QAAA,CACAH,EAAAA,EAAA,CAA1BC,WAAS,CAAEC,KAAMvB,KAzBEtD,CAAAA,CAAAA,EAAAA,EAyBO8E,UAAA,UAAA,CAAA,EACAH,EAAA,CAA1BC,WAAS,CAAEC,KAAMvB,KAAAA,CAAAA,CAAAA,EA1BEtD,EA0BO8E,UAAA,aAAA,CACAH,EAAAA,EAAA,CAA1BC,WAAS,CAAEC,KAAMvB,KA3BEtD,CAAAA,CAAAA,EAAAA,EA2BO8E,UAAA,aAAA,GACAH,EAAA,CAA1BC,WAAS,CAAEC,KAAMvB,KAAAA,CAAAA,CAAAA,EA5BEtD,EA4BO8E,UAAA,aAAA,CACAH,EAAAA,EAAA,CAA1BC,WAAS,CAAEC,KAAMvB,KA7BEtD,CAAAA,CAAAA,EAAAA,EA6BO8E,UAAA,UAAA,CAAA,EACEH,EAAA,CAA5BC,WAAS,CAAEC,KAAMG,OAAAA,CAAAA,CAAAA,EA9BEhF,EA8BS8E,UAAA,gBAAA,CAAA,EAEPH,EAAA,CAArBM,EAAmBA,mBAhCAjF,CAAAA,EAAAA,EAgCE8E,UAAA,cAAA,CAAA,EACHH,EAAA,CAAlBO,EAAAA,MAAM,UAAA,CAAA,EAjCalF,EAiCD8E,UAAA,UAAA,CACJH,EAAAA,EAAA,CAAdO,EAAAA,MAAM,MAlCalF,CAAAA,EAAAA,EAkCL8E,UAAA,MAAA,GAlCK9E,EAArB2E,EAAA,CADCQ,EAAAA,cAAc,wBACMnF,CAAAA,EAAAA,CAAAA"}
1
+ {"version":3,"file":"animated-text-B2Hsj2EE.cjs","sources":["../src/animated-text/animated-text.ts"],"sourcesContent":["// Removed: import { createTimeline, stagger } from '@packages/anime-beta-master'\nimport { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, queryAssignedNodes } from 'lit/decorators.js'\nimport {\n\tconcat,\n\tdistinctUntilChanged,\n\tfilter,\n\tfromEvent,\n\tinterval,\n\tmap,\n\tstartWith,\n\ttake,\n\ttap,\n\tthrottleTime,\n} from 'rxjs'\n\n/**\n * @element schmancy-animated-text\n * Inspired by https://tobiasahlin.com/moving-letters/#1\n */\n@customElement('schmancy-animated-text')\nexport default class SchmancyAnimatedText extends $LitElement(css`\n\t:host {\n\t\tfont-family: inherit;\n\t\tdisplay: block;\n\t}\n\t.ml7 {\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t}\n\t.ml7 .text-wrapper {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t\toverflow: hidden;\n\t}\n\t.ml7 .letter {\n\t\ttransform-origin: 0 100%;\n\t\tdisplay: inline-block;\n\t\topacity: 0;\n\t}\n`) {\n\t@property({ type: String }) ease = 'outExpo' // not a built-in string for Web Animations\n\t@property({ type: Number }) delay = 0\n\t@property({ type: Number }) stagger = 50\n\t@property({ type: Number }) duration = 750\n\t@property({ type: Array }) scale = [0, 1]\n\t@property({ type: Array }) opacity = [0, 1]\n\t@property({ type: Array }) translateX = ['0.55em', '0em']\n\t@property({ type: Array }) translateY = ['1.1em', '0em']\n\t@property({ type: Array }) translateZ = [0, 0]\n\t@property({ type: Array }) rotateZ = [180, 0]\n\t@property({ type: Boolean }) resetOnScroll = true\n\n\t@queryAssignedNodes() defaultSlot!: HTMLElement[]\n\t@query('.letters') letters!: HTMLElement\n\t@query('.ml7') ml7!: HTMLElement\n\n\t// Function to check if an element is in the viewport\n\tisInViewport(element: HTMLElement) {\n\t\tconst rect = element.getBoundingClientRect()\n\t\treturn (\n\t\t\trect.top >= 0 &&\n\t\t\trect.left >= 0 &&\n\t\t\trect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n\t\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth)\n\t\t)\n\t}\n\n\tasync firstUpdated() {\n\t\t// Split the text into <span class=\"letter\"> ... </span> elements\n\t\tthis.letters.innerHTML = this.defaultSlot[0].textContent!.replace(/\\S/g, `<span class=\"letter\">$&</span>`)\n\n\t\t// Observe viewport + initial readiness\n\t\tconcat(\n\t\t\t// 1) Wait until the element is rendered (width/height > 0)\n\t\t\tinterval(10).pipe(\n\t\t\t\tstartWith(true),\n\t\t\t\tfilter(() => {\n\t\t\t\t\tconst rect = this.getBoundingClientRect()\n\t\t\t\t\treturn rect.width > 0 && rect.height > 0\n\t\t\t\t}),\n\t\t\t\ttake(1),\n\t\t\t),\n\t\t\t// 2) Then handle scroll events, throttled\n\t\t\tfromEvent(window, 'scroll').pipe(\n\t\t\t\tthrottleTime(0, undefined, {\n\t\t\t\t\tleading: true,\n\t\t\t\t\ttrailing: true,\n\t\t\t\t}),\n\t\t\t\tstartWith(true),\n\t\t\t\tmap(() => this.isInViewport(this)),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(inViewport => {\n\t\t\t\t\t// If leaving viewport and `resetOnScroll` is true, reset letters to opacity 0\n\t\t\t\t\tif (!inViewport && this.resetOnScroll) {\n\t\t\t\t\t\tArray.from(this.letters.children).forEach((letter: HTMLElement) => {\n\t\t\t\t\t\t\tletter.style.opacity = '0'\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tfilter(isInViewport => isInViewport),\n\t\t\t\t// If resetOnScroll = false, animate only the first time inView. If true, repeat.\n\t\t\t\tthis.resetOnScroll ? tap() : take(1),\n\t\t\t\ttap({\n\t\t\t\t\tnext: () => {\n\t\t\t\t\t\t// Animate letters with the native Web Animations API\n\t\t\t\t\t\tconst letters = this.shadowRoot!.querySelectorAll<HTMLElement>('.ml7 .letter')\n\n\t\t\t\t\t\tletters.forEach((letter, i) => {\n\t\t\t\t\t\t\t// Combine all transforms into one CSS transform string\n\t\t\t\t\t\t\t// From\n\t\t\t\t\t\t\tconst fromTransform = `\n translate3d(${this.translateX[0]}, ${this.translateY[0]}, ${this.translateZ[0]}px)\n rotateZ(${this.rotateZ[0]}deg)\n scale(${this.scale[0]})\n `\n\t\t\t\t\t\t\t// To\n\t\t\t\t\t\t\tconst toTransform = `\n translate3d(${this.translateX[1]}, ${this.translateY[1]}, ${this.translateZ[1]}px)\n rotateZ(${this.rotateZ[1]}deg)\n scale(${this.scale[1]})\n `\n\t\t\t\t\t\t\t// Approximate `outExpo` or pick a standard easing (like 'ease-out'):\n\t\t\t\t\t\t\t// outExpo often approximated by cubic-bezier(0.19, 1, 0.22, 1)\n\t\t\t\t\t\t\tconst easingMap: Record<string, string> = {\n\t\t\t\t\t\t\t\toutExpo: 'cubic-bezier(0.19, 1, 0.22, 1)',\n\t\t\t\t\t\t\t\t// add more if you want\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst keyframes: Keyframe[] = [\n\t\t\t\t\t\t\t\t{ transform: fromTransform, opacity: String(this.opacity[0]) },\n\t\t\t\t\t\t\t\t{ transform: toTransform, opacity: String(this.opacity[1]) },\n\t\t\t\t\t\t\t]\n\n\t\t\t\t\t\t\tletter.animate(keyframes, {\n\t\t\t\t\t\t\t\tduration: this.duration,\n\t\t\t\t\t\t\t\teasing: easingMap[this.ease] || 'ease-out',\n\t\t\t\t\t\t\t\tdelay: this.delay + i * this.stagger, // staggered start\n\t\t\t\t\t\t\t\tfill: 'forwards', // so the letters remain visible\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t).subscribe()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<span class=\"ml7\">\n\t\t\t\t<span class=\"text-wrapper\">\n\t\t\t\t\t<span class=\"letters\">\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-animated-text': SchmancyAnimatedText\n\t}\n}\n"],"names":["SchmancyAnimatedText","$LitElement","css","super","arguments","this","ease","delay","stagger","duration","scale","opacity","translateX","translateY","translateZ","rotateZ","resetOnScroll","element","rect","getBoundingClientRect","top","left","bottom","window","innerHeight","document","documentElement","clientHeight","right","innerWidth","clientWidth","firstUpdated","letters","innerHTML","defaultSlot","textContent","replace","concat","interval","pipe","startWith","filter","width","height","take","fromEvent","throttleTime","leading","trailing","map","isInViewport","distinctUntilChanged","tap","inViewport","Array","from","children","forEach","letter","style","next","shadowRoot","querySelectorAll","i","fromTransform","toTransform","keyframes","transform","String","animate","easing","outExpo","fill","subscribe","html","__decorateClass","property","type","prototype","Number","Boolean","queryAssignedNodes","query","customElement"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { concat as u, interval as g, startWith as y, filter as h, take as d, fromEvent as f, throttleTime as w, map as b, distinctUntilChanged as $, tap as c } from "rxjs";
2
2
  import "lit/directives/class-map.js";
3
3
  import "lit/directives/style-map.js";
4
- import { $ as x } from "./litElement.mixin-7ULqg8XW.js";
5
- import "./tailwind.mixin-qh_Ahoe6.js";
4
+ import { $ as x } from "./litElement.mixin-DzAZO77V.js";
5
+ import "./tailwind.mixin-C0_Bt1Xe.js";
6
6
  import { css as S, html as Z } from "lit";
7
7
  import { property as a, queryAssignedNodes as v, query as m, customElement as A } from "lit/decorators.js";
8
8
  var E = Object.defineProperty, O = Object.getOwnPropertyDescriptor, e = (r, s, n, i) => {
@@ -72,4 +72,4 @@ let t = class extends x(S`
72
72
  }
73
73
  };
74
74
  e([a({ type: String })], t.prototype, "ease", 2), e([a({ type: Number })], t.prototype, "delay", 2), e([a({ type: Number })], t.prototype, "stagger", 2), e([a({ type: Number })], t.prototype, "duration", 2), e([a({ type: Array })], t.prototype, "scale", 2), e([a({ type: Array })], t.prototype, "opacity", 2), e([a({ type: Array })], t.prototype, "translateX", 2), e([a({ type: Array })], t.prototype, "translateY", 2), e([a({ type: Array })], t.prototype, "translateZ", 2), e([a({ type: Array })], t.prototype, "rotateZ", 2), e([a({ type: Boolean })], t.prototype, "resetOnScroll", 2), e([v()], t.prototype, "defaultSlot", 2), e([m(".letters")], t.prototype, "letters", 2), e([m(".ml7")], t.prototype, "ml7", 2), t = e([A("schmancy-animated-text")], t);
75
- //# sourceMappingURL=animated-text-WprAnY6N.js.map
75
+ //# sourceMappingURL=animated-text-Cl8DsOSx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"animated-text-WprAnY6N.js","sources":["../src/animated-text/animated-text.ts"],"sourcesContent":["// Removed: import { createTimeline, stagger } from '@packages/anime-beta-master'\nimport { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, queryAssignedNodes } from 'lit/decorators.js'\nimport {\n\tconcat,\n\tdistinctUntilChanged,\n\tfilter,\n\tfromEvent,\n\tinterval,\n\tmap,\n\tstartWith,\n\ttake,\n\ttap,\n\tthrottleTime,\n} from 'rxjs'\n\n/**\n * @element schmancy-animated-text\n * Inspired by https://tobiasahlin.com/moving-letters/#1\n */\n@customElement('schmancy-animated-text')\nexport default class SchmancyAnimatedText extends $LitElement(css`\n\t:host {\n\t\tfont-family: inherit;\n\t\tdisplay: block;\n\t}\n\t.ml7 {\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t}\n\t.ml7 .text-wrapper {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t\toverflow: hidden;\n\t}\n\t.ml7 .letter {\n\t\ttransform-origin: 0 100%;\n\t\tdisplay: inline-block;\n\t\topacity: 0;\n\t}\n`) {\n\t@property({ type: String }) ease = 'outExpo' // not a built-in string for Web Animations\n\t@property({ type: Number }) delay = 0\n\t@property({ type: Number }) stagger = 50\n\t@property({ type: Number }) duration = 750\n\t@property({ type: Array }) scale = [0, 1]\n\t@property({ type: Array }) opacity = [0, 1]\n\t@property({ type: Array }) translateX = ['0.55em', '0em']\n\t@property({ type: Array }) translateY = ['1.1em', '0em']\n\t@property({ type: Array }) translateZ = [0, 0]\n\t@property({ type: Array }) rotateZ = [180, 0]\n\t@property({ type: Boolean }) resetOnScroll = true\n\n\t@queryAssignedNodes() defaultSlot!: HTMLElement[]\n\t@query('.letters') letters!: HTMLElement\n\t@query('.ml7') ml7!: HTMLElement\n\n\t// Function to check if an element is in the viewport\n\tisInViewport(element: HTMLElement) {\n\t\tconst rect = element.getBoundingClientRect()\n\t\treturn (\n\t\t\trect.top >= 0 &&\n\t\t\trect.left >= 0 &&\n\t\t\trect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n\t\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth)\n\t\t)\n\t}\n\n\tasync firstUpdated() {\n\t\t// Split the text into <span class=\"letter\"> ... </span> elements\n\t\tthis.letters.innerHTML = this.defaultSlot[0].textContent!.replace(/\\S/g, `<span class=\"letter\">$&</span>`)\n\n\t\t// Observe viewport + initial readiness\n\t\tconcat(\n\t\t\t// 1) Wait until the element is rendered (width/height > 0)\n\t\t\tinterval(10).pipe(\n\t\t\t\tstartWith(true),\n\t\t\t\tfilter(() => {\n\t\t\t\t\tconst rect = this.getBoundingClientRect()\n\t\t\t\t\treturn rect.width > 0 && rect.height > 0\n\t\t\t\t}),\n\t\t\t\ttake(1),\n\t\t\t),\n\t\t\t// 2) Then handle scroll events, throttled\n\t\t\tfromEvent(window, 'scroll').pipe(\n\t\t\t\tthrottleTime(0, undefined, {\n\t\t\t\t\tleading: true,\n\t\t\t\t\ttrailing: true,\n\t\t\t\t}),\n\t\t\t\tstartWith(true),\n\t\t\t\tmap(() => this.isInViewport(this)),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(inViewport => {\n\t\t\t\t\t// If leaving viewport and `resetOnScroll` is true, reset letters to opacity 0\n\t\t\t\t\tif (!inViewport && this.resetOnScroll) {\n\t\t\t\t\t\tArray.from(this.letters.children).forEach((letter: HTMLElement) => {\n\t\t\t\t\t\t\tletter.style.opacity = '0'\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tfilter(isInViewport => isInViewport),\n\t\t\t\t// If resetOnScroll = false, animate only the first time inView. If true, repeat.\n\t\t\t\tthis.resetOnScroll ? tap() : take(1),\n\t\t\t\ttap({\n\t\t\t\t\tnext: () => {\n\t\t\t\t\t\t// Animate letters with the native Web Animations API\n\t\t\t\t\t\tconst letters = this.shadowRoot!.querySelectorAll<HTMLElement>('.ml7 .letter')\n\n\t\t\t\t\t\tletters.forEach((letter, i) => {\n\t\t\t\t\t\t\t// Combine all transforms into one CSS transform string\n\t\t\t\t\t\t\t// From\n\t\t\t\t\t\t\tconst fromTransform = `\n translate3d(${this.translateX[0]}, ${this.translateY[0]}, ${this.translateZ[0]}px)\n rotateZ(${this.rotateZ[0]}deg)\n scale(${this.scale[0]})\n `\n\t\t\t\t\t\t\t// To\n\t\t\t\t\t\t\tconst toTransform = `\n translate3d(${this.translateX[1]}, ${this.translateY[1]}, ${this.translateZ[1]}px)\n rotateZ(${this.rotateZ[1]}deg)\n scale(${this.scale[1]})\n `\n\t\t\t\t\t\t\t// Approximate `outExpo` or pick a standard easing (like 'ease-out'):\n\t\t\t\t\t\t\t// outExpo often approximated by cubic-bezier(0.19, 1, 0.22, 1)\n\t\t\t\t\t\t\tconst easingMap: Record<string, string> = {\n\t\t\t\t\t\t\t\toutExpo: 'cubic-bezier(0.19, 1, 0.22, 1)',\n\t\t\t\t\t\t\t\t// add more if you want\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst keyframes: Keyframe[] = [\n\t\t\t\t\t\t\t\t{ transform: fromTransform, opacity: String(this.opacity[0]) },\n\t\t\t\t\t\t\t\t{ transform: toTransform, opacity: String(this.opacity[1]) },\n\t\t\t\t\t\t\t]\n\n\t\t\t\t\t\t\tletter.animate(keyframes, {\n\t\t\t\t\t\t\t\tduration: this.duration,\n\t\t\t\t\t\t\t\teasing: easingMap[this.ease] || 'ease-out',\n\t\t\t\t\t\t\t\tdelay: this.delay + i * this.stagger, // staggered start\n\t\t\t\t\t\t\t\tfill: 'forwards', // so the letters remain visible\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t).subscribe()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<span class=\"ml7\">\n\t\t\t\t<span class=\"text-wrapper\">\n\t\t\t\t\t<span class=\"letters\">\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-animated-text': SchmancyAnimatedText\n\t}\n}\n"],"names":["SchmancyAnimatedText","$LitElement","css","super","arguments","this","ease","delay","stagger","duration","scale","opacity","translateX","translateY","translateZ","rotateZ","resetOnScroll","element","rect","getBoundingClientRect","top","left","bottom","window","innerHeight","document","documentElement","clientHeight","right","innerWidth","clientWidth","firstUpdated","letters","innerHTML","defaultSlot","textContent","replace","concat","interval","pipe","startWith","filter","width","height","take","fromEvent","throttleTime","leading","trailing","map","isInViewport","distinctUntilChanged","tap","inViewport","Array","from","children","forEach","letter","style","next","shadowRoot","querySelectorAll","i","fromTransform","toTransform","keyframes","transform","String","animate","easing","outExpo","fill","subscribe","html","__decorateClass","property","type","prototype","Number","Boolean","queryAssignedNodes","query","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"animated-text-Cl8DsOSx.js","sources":["../src/animated-text/animated-text.ts"],"sourcesContent":["// Removed: import { createTimeline, stagger } from '@packages/anime-beta-master'\nimport { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, queryAssignedNodes } from 'lit/decorators.js'\nimport {\n\tconcat,\n\tdistinctUntilChanged,\n\tfilter,\n\tfromEvent,\n\tinterval,\n\tmap,\n\tstartWith,\n\ttake,\n\ttap,\n\tthrottleTime,\n} from 'rxjs'\n\n/**\n * @element schmancy-animated-text\n * Inspired by https://tobiasahlin.com/moving-letters/#1\n */\n@customElement('schmancy-animated-text')\nexport default class SchmancyAnimatedText extends $LitElement(css`\n\t:host {\n\t\tfont-family: inherit;\n\t\tdisplay: block;\n\t}\n\t.ml7 {\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t}\n\t.ml7 .text-wrapper {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t\toverflow: hidden;\n\t}\n\t.ml7 .letter {\n\t\ttransform-origin: 0 100%;\n\t\tdisplay: inline-block;\n\t\topacity: 0;\n\t}\n`) {\n\t@property({ type: String }) ease = 'outExpo' // not a built-in string for Web Animations\n\t@property({ type: Number }) delay = 0\n\t@property({ type: Number }) stagger = 50\n\t@property({ type: Number }) duration = 750\n\t@property({ type: Array }) scale = [0, 1]\n\t@property({ type: Array }) opacity = [0, 1]\n\t@property({ type: Array }) translateX = ['0.55em', '0em']\n\t@property({ type: Array }) translateY = ['1.1em', '0em']\n\t@property({ type: Array }) translateZ = [0, 0]\n\t@property({ type: Array }) rotateZ = [180, 0]\n\t@property({ type: Boolean }) resetOnScroll = true\n\n\t@queryAssignedNodes() defaultSlot!: HTMLElement[]\n\t@query('.letters') letters!: HTMLElement\n\t@query('.ml7') ml7!: HTMLElement\n\n\t// Function to check if an element is in the viewport\n\tisInViewport(element: HTMLElement) {\n\t\tconst rect = element.getBoundingClientRect()\n\t\treturn (\n\t\t\trect.top >= 0 &&\n\t\t\trect.left >= 0 &&\n\t\t\trect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n\t\t\trect.right <= (window.innerWidth || document.documentElement.clientWidth)\n\t\t)\n\t}\n\n\tasync firstUpdated() {\n\t\t// Split the text into <span class=\"letter\"> ... </span> elements\n\t\tthis.letters.innerHTML = this.defaultSlot[0].textContent!.replace(/\\S/g, `<span class=\"letter\">$&</span>`)\n\n\t\t// Observe viewport + initial readiness\n\t\tconcat(\n\t\t\t// 1) Wait until the element is rendered (width/height > 0)\n\t\t\tinterval(10).pipe(\n\t\t\t\tstartWith(true),\n\t\t\t\tfilter(() => {\n\t\t\t\t\tconst rect = this.getBoundingClientRect()\n\t\t\t\t\treturn rect.width > 0 && rect.height > 0\n\t\t\t\t}),\n\t\t\t\ttake(1),\n\t\t\t),\n\t\t\t// 2) Then handle scroll events, throttled\n\t\t\tfromEvent(window, 'scroll').pipe(\n\t\t\t\tthrottleTime(0, undefined, {\n\t\t\t\t\tleading: true,\n\t\t\t\t\ttrailing: true,\n\t\t\t\t}),\n\t\t\t\tstartWith(true),\n\t\t\t\tmap(() => this.isInViewport(this)),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(inViewport => {\n\t\t\t\t\t// If leaving viewport and `resetOnScroll` is true, reset letters to opacity 0\n\t\t\t\t\tif (!inViewport && this.resetOnScroll) {\n\t\t\t\t\t\tArray.from(this.letters.children).forEach((letter: HTMLElement) => {\n\t\t\t\t\t\t\tletter.style.opacity = '0'\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tfilter(isInViewport => isInViewport),\n\t\t\t\t// If resetOnScroll = false, animate only the first time inView. If true, repeat.\n\t\t\t\tthis.resetOnScroll ? tap() : take(1),\n\t\t\t\ttap({\n\t\t\t\t\tnext: () => {\n\t\t\t\t\t\t// Animate letters with the native Web Animations API\n\t\t\t\t\t\tconst letters = this.shadowRoot!.querySelectorAll<HTMLElement>('.ml7 .letter')\n\n\t\t\t\t\t\tletters.forEach((letter, i) => {\n\t\t\t\t\t\t\t// Combine all transforms into one CSS transform string\n\t\t\t\t\t\t\t// From\n\t\t\t\t\t\t\tconst fromTransform = `\n translate3d(${this.translateX[0]}, ${this.translateY[0]}, ${this.translateZ[0]}px)\n rotateZ(${this.rotateZ[0]}deg)\n scale(${this.scale[0]})\n `\n\t\t\t\t\t\t\t// To\n\t\t\t\t\t\t\tconst toTransform = `\n translate3d(${this.translateX[1]}, ${this.translateY[1]}, ${this.translateZ[1]}px)\n rotateZ(${this.rotateZ[1]}deg)\n scale(${this.scale[1]})\n `\n\t\t\t\t\t\t\t// Approximate `outExpo` or pick a standard easing (like 'ease-out'):\n\t\t\t\t\t\t\t// outExpo often approximated by cubic-bezier(0.19, 1, 0.22, 1)\n\t\t\t\t\t\t\tconst easingMap: Record<string, string> = {\n\t\t\t\t\t\t\t\toutExpo: 'cubic-bezier(0.19, 1, 0.22, 1)',\n\t\t\t\t\t\t\t\t// add more if you want\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst keyframes: Keyframe[] = [\n\t\t\t\t\t\t\t\t{ transform: fromTransform, opacity: String(this.opacity[0]) },\n\t\t\t\t\t\t\t\t{ transform: toTransform, opacity: String(this.opacity[1]) },\n\t\t\t\t\t\t\t]\n\n\t\t\t\t\t\t\tletter.animate(keyframes, {\n\t\t\t\t\t\t\t\tduration: this.duration,\n\t\t\t\t\t\t\t\teasing: easingMap[this.ease] || 'ease-out',\n\t\t\t\t\t\t\t\tdelay: this.delay + i * this.stagger, // staggered start\n\t\t\t\t\t\t\t\tfill: 'forwards', // so the letters remain visible\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t})\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t).subscribe()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<span class=\"ml7\">\n\t\t\t\t<span class=\"text-wrapper\">\n\t\t\t\t\t<span class=\"letters\">\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-animated-text': SchmancyAnimatedText\n\t}\n}\n"],"names":["SchmancyAnimatedText","$LitElement","css","super","arguments","this","ease","delay","stagger","duration","scale","opacity","translateX","translateY","translateZ","rotateZ","resetOnScroll","element","rect","getBoundingClientRect","top","left","bottom","window","innerHeight","document","documentElement","clientHeight","right","innerWidth","clientWidth","firstUpdated","letters","innerHTML","defaultSlot","textContent","replace","concat","interval","pipe","startWith","filter","width","height","take","fromEvent","throttleTime","leading","trailing","map","isInViewport","distinctUntilChanged","tap","inViewport","Array","from","children","forEach","letter","style","next","shadowRoot","querySelectorAll","i","fromTransform","toTransform","keyframes","transform","String","animate","easing","outExpo","fill","subscribe","html","__decorateClass","property","type","prototype","Number","Boolean","queryAssignedNodes","query","customElement"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";require("./animated-text-ZX1snylb.cjs");
1
+ "use strict";require("./animated-text-B2Hsj2EE.cjs");
2
2
  //# sourceMappingURL=animated-text.cjs.map
@@ -1,2 +1,2 @@
1
- import "./animated-text-WprAnY6N.js";
1
+ import "./animated-text-Cl8DsOSx.js";
2
2
  //# sourceMappingURL=animated-text.js.map
package/dist/area.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./area.component-e52Eafj8.cjs");exports.FINDING_MORTIES=e.FINDING_MORTIES,exports.HERE_RICKY=e.HERE_RICKY,exports.HISTORY_STRATEGY=e.HISTORY_STRATEGY,Object.defineProperty(exports,"SchmancyArea",{enumerable:!0,get:()=>e.SchmancyArea}),exports.area=e.area,exports.routerHistory=e.routerHistory;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./area.component-DmfwQylu.cjs");exports.FINDING_MORTIES=e.FINDING_MORTIES,exports.HERE_RICKY=e.HERE_RICKY,exports.HISTORY_STRATEGY=e.HISTORY_STRATEGY,Object.defineProperty(exports,"SchmancyArea",{enumerable:!0,get:()=>e.SchmancyArea}),exports.area=e.area,exports.routerHistory=e.routerHistory;
2
2
  //# sourceMappingURL=area.cjs.map
@@ -1,8 +1,8 @@
1
1
  import { Subject as I, ReplaySubject as S, zip as b, fromEvent as g, map as o, bufferTime as R, tap as h, of as i, timeout as v, filter as u, catchError as E, EMPTY as O, merge as U, switchMap as d, take as N, takeUntil as f, distinctUntilChanged as C, from as T } from "rxjs";
2
2
  import "lit/directives/class-map.js";
3
3
  import "lit/directives/style-map.js";
4
- import { $ as L } from "./litElement.mixin-7ULqg8XW.js";
5
- import "./tailwind.mixin-qh_Ahoe6.js";
4
+ import { $ as L } from "./litElement.mixin-DzAZO77V.js";
5
+ import "./tailwind.mixin-C0_Bt1Xe.js";
6
6
  import { css as x, html as F } from "lit";
7
7
  import { property as P, customElement as J } from "lit/decorators.js";
8
8
  import { l as M } from "./index-CuY8m6ta.js";
@@ -104,4 +104,4 @@ export {
104
104
  w as b,
105
105
  B as r
106
106
  };
107
- //# sourceMappingURL=area.component-BTb4YMjB.js.map
107
+ //# sourceMappingURL=area.component-B85bKRcZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"area.component-BTb4YMjB.js","sources":["../src/area/area.service.ts","../src/area/router.types.ts","../src/area/area.component.ts"],"sourcesContent":["import { ReplaySubject, Subject, bufferTime, fromEvent, map, of, tap, timeout, zip } from 'rxjs'\nimport { SchmancyTeleportation } from '../teleport'\nimport { ActiveRoute, RouteAction } from './router.types'\n\nexport const routerHistory = new Subject<RouteAction>()\n\nexport const FINDING_MORTIES = 'FINDING_MORTIES'\nexport const HERE_RICKY = 'HERE_RICKY'\nexport type HERE_RICKY_EVENT = CustomEvent<{\n\tcomponent: SchmancyTeleportation\n}>\nexport type FINDING_MORTIES_EVENT = CustomEvent<{\n\tcomponent: SchmancyTeleportation\n}>\n\nclass AreaService {\n\tprivate static instance: AreaService\n\tpublic prettyURL = false\n\tpublic mode: 'SILENT' | 'HISTORY' = 'HISTORY'\n\tpublic request = new ReplaySubject<RouteAction>(1)\n\tpublic current = new Map<string, ActiveRoute>()\n\tpublic $current = new ReplaySubject<Map<string, ActiveRoute>>(1)\n\tpublic enableHistoryMode = true\n\tprivate findingMortiesEvent = new CustomEvent<FINDING_MORTIES_EVENT['detail']>(FINDING_MORTIES)\n\n\tconstructor() {\n\t\tthis.$current.next(this.current)\n\t}\n\n\tfind() {\n\t\treturn zip([\n\t\t\tfromEvent<HERE_RICKY_EVENT>(window, HERE_RICKY).pipe(\n\t\t\t\tmap(e => e.detail),\n\t\t\t\tbufferTime(0),\n\t\t\t\ttap(console.log),\n\t\t\t),\n\t\t\tof(1).pipe(tap(() => window.dispatchEvent(this.findingMortiesEvent))),\n\t\t]).pipe(\n\t\t\tmap(([component]) => component),\n\t\t\ttimeout(1),\n\t\t)\n\t}\n\n\tpush(r: RouteAction) {\n\t\tthis.request.next(r)\n\t}\n\n\tpop(name: string) {\n\t\tconst newState = JSON.parse(JSON.stringify(area.state))\n\t\tdelete newState[name]\n\t\tconsole.log(area.state, newState)\n\t\thistory.replaceState(null, '', encodeURIComponent(JSON.stringify(newState)))\n\t}\n\tstatic getInstance() {\n\t\tif (!AreaService.instance) {\n\t\t\tAreaService.instance = new AreaService()\n\t\t}\n\t\treturn AreaService.instance\n\t}\n\n\tget state() {\n\t\tconst pathname = location.pathname.split('/').pop()\n\t\tlet areaState = {}\n\t\ttry {\n\t\t\tareaState = pathname ? JSON.parse(decodeURIComponent(pathname)) : {}\n\t\t} catch {\n\t\t\tareaState = {}\n\t\t}\n\t\treturn areaState\n\t}\n}\n\nexport const area = AreaService.getInstance()\nexport default area\n","export type RouteAction = {\n\tcomponent: CustomElementConstructor | string | Promise<NodeModule> | HTMLElement | Promise<NodeModule>\n\tarea: string\n\tstate?: object\n\thistoryStrategy?: THistoryStrategy\n\tclearQueryParams?: string[] | null\n}\n\nexport type ActiveRoute = {\n\tcomponent: string\n\tarea: string\n\tstate?: object\n}\n\nexport type THistoryStrategy = 'push' | 'replace' | 'pop' | 'silent'\n\nexport enum HISTORY_STRATEGY {\n\tpush = 'push',\n\treplace = 'replace',\n\tpop = 'pop',\n\tsilent = 'silent',\n}\n","import { $LitElement } from '@mixins/index'\nimport { TemplateResult, css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport {\n\tEMPTY,\n\tbufferTime,\n\tcatchError,\n\tdistinctUntilChanged,\n\tfilter,\n\tfrom,\n\tfromEvent,\n\tmap,\n\tmerge,\n\tof,\n\tswitchMap,\n\ttake,\n\ttakeUntil,\n\ttap,\n\ttimeout,\n} from 'rxjs'\nimport { isPresent } from 'ts-is-present'\nimport area from './area.service'\nimport { HISTORY_STRATEGY, RouteAction } from './router.types'\n\ntype TRouteArea = {\n\tcomponent: string\n\tstate: object | undefined\n}\n\n@customElement('schmancy-area')\nexport class SchmancyArea extends $LitElement(css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\tinset: 0;\n\t}\n`) {\n\t/**\n\t * The name of the router outlet\n\t * @attr\n\t * @type {string}\n\t * @public\n\t * @required\n\t */\n\t@property() name!: string\n\n\t@property() default!: string | Promise<NodeModule> | CustomElementConstructor | TemplateResult<1>\n\n\t/**\n\t *\n\t * @param pathname pathname from the browser location API\n\t * @param historyStrategy the history strategy to use for the route like PUSH, REPLACE, or SILENT\n\t * @returns rxjs pipes that will return the component to render and the history strategy to use\n\t */\n\tgetComponentFromPathname(pathname: string, historyStrategy: HISTORY_STRATEGY) {\n\t\treturn of(pathname).pipe(\n\t\t\tmap(path => path.split('/').pop() ?? ''),\n\t\t\tmap(path => decodeURIComponent(path)),\n\t\t\tmap(path => JSON.parse(path)),\n\t\t\tmap(routes => routes[this.name] as TRouteArea),\n\t\t\tmap(component =>\n\t\t\t\t!component && this.default\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tcomponent: this.default,\n\t\t\t\t\t\t\tstate: undefined,\n\t\t\t\t\t\t}\n\t\t\t\t\t: component,\n\t\t\t),\n\t\t\tfilter(x => isPresent(x)),\n\t\t\tmap((component: TRouteArea) => ({\n\t\t\t\tarea: this.name,\n\t\t\t\tcomponent: component.component ?? this.default,\n\t\t\t\tstate: component.state,\n\t\t\t\thistoryStrategy,\n\t\t\t})),\n\t\t\tmap(x => x as RouteAction),\n\t\t\tcatchError(() => {\n\t\t\t\treturn this.default\n\t\t\t\t\t? of({\n\t\t\t\t\t\t\tarea: this.name,\n\t\t\t\t\t\t\tcomponent: this.default,\n\t\t\t\t\t\t\thistoryStrategy,\n\t\t\t\t\t\t} as RouteAction)\n\t\t\t\t\t: EMPTY\n\t\t\t}),\n\t\t)\n\t}\n\n\tprotected firstUpdated(): void {\n\t\tif (!this.name) {\n\t\t\t// TOOD: maybe enforce this to be unique\n\t\t\tthrow new Error('Area name or default component not set')\n\t\t}\n\n\t\t// active outlet changes\n\t\tmerge(\n\t\t\t// 1) initial load from location.pathname\n\t\t\tof(location.pathname).pipe(\n\t\t\t\tswitchMap(pathname => this.getComponentFromPathname(pathname, HISTORY_STRATEGY.silent)),\n\t\t\t\tmap(route => route as RouteAction),\n\t\t\t\ttake(1),\n\t\t\t),\n\t\t\t// 2) requests to change the route for this area\n\t\t\tarea.request.pipe(filter(({ area }) => area === this.name)),\n\t\t\t// 3) popstate events (back, forward)\n\t\t\tfromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\t\tmap(e => (e.target as Window).location.pathname),\n\t\t\t\tswitchMap(pathname => this.getComponentFromPathname(pathname, HISTORY_STRATEGY.silent)),\n\t\t\t\tmap(route => route as RouteAction),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(\n\t\t\t\tfilter(request => !!request.component),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdistinctUntilChanged((a, b) => {\n\t\t\t\t\tlet aComponent, bComponent\n\t\t\t\t\tif (typeof a.component === 'function') return false\n\t\t\t\t\telse if (typeof a.component === 'string') aComponent = a.component\n\n\t\t\t\t\tif (typeof b.component === 'function') return false\n\t\t\t\t\telse if (typeof b.component === 'string') bComponent = b.component\n\n\t\t\t\t\treturn bComponent?.replaceAll('-', '').toLowerCase() === aComponent?.replaceAll('-', '').toLowerCase()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(route => {\n\t\t\t\t\tconst c = route.component\n\t\t\t\t\tif (c instanceof Promise) {\n\t\t\t\t\t\t// Dynamic import module\n\t\t\t\t\t\treturn from(c).pipe(map(x => ({ component: x.exports.default as CustomElementConstructor, route })))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Already a string, function, or element\n\t\t\t\t\t\treturn of({ component: c, route })\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tmap(({ component, route }) => {\n\t\t\t\t\tif (typeof component === 'string') {\n\t\t\t\t\t\t// Tag name\n\t\t\t\t\t\treturn { component: document.createElement(component), route }\n\t\t\t\t\t} else if (component instanceof HTMLElement) {\n\t\t\t\t\t\t// Already an element instance\n\t\t\t\t\t\treturn { component, route }\n\t\t\t\t\t} else if (typeof component === 'function') {\n\t\t\t\t\t\t// Custom element constructor\n\t\t\t\t\t\treturn { component: new component(), route }\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tdistinctUntilChanged((prev, curr) => prev.component.tagName === curr.component.tagName),\n\t\t\t\t// create the new view and add it to the DOM\n\t\t\t\tmap(({ component, route }) => {\n\t\t\t\t\tconst oldView = this.shadowRoot?.children[0]\n\t\t\t\t\tconst oldViewExists = !!oldView\n\n\t\t\t\t\t// Remove the old view (if any)\n\t\t\t\t\toldView.remove()\n\t\t\t\t\t// Native Web Animations API - fade in\n\t\t\t\t\t// \"ease: cubic-bezier(0.25, 0.8, 0.25, 1)\" was used in the old code\n\t\t\t\t\tcomponent.classList.add('opacity-0')\n\t\t\t\t\tthis.shadowRoot?.append(component)\n\t\t\t\t\tcomponent.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\t\t\t\tduration: oldViewExists ? 150 : 100,\n\t\t\t\t\t\teasing: 'cubic-bezier(0.25, 0.8, 0.25, 1)',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t})\n\n\t\t\t\t\t// Insert the new view\n\n\t\t\t\t\treturn { component, route }\n\t\t\t\t}),\n\t\t\t\ttap(({ component, route }) => {\n\t\t\t\t\t// Handle history updates\n\t\t\t\t\tif (typeof route.historyStrategy === 'undefined' || route.historyStrategy === 'push') {\n\t\t\t\t\t\thistory.pushState(route.state, '', this.newPath(component.tagName, route))\n\t\t\t\t\t} else if (route.historyStrategy && ['replace', 'pop'].includes(route.historyStrategy)) {\n\t\t\t\t\t\thistory.replaceState(route.state, '', this.newPath(component.tagName, route))\n\t\t\t\t\t}\n\t\t\t\t\tarea.current.set(this.name, {\n\t\t\t\t\t\tcomponent: component.tagName,\n\t\t\t\t\t\tstate: route.state,\n\t\t\t\t\t\tarea: this.name,\n\t\t\t\t\t})\n\n\t\t\t\t\tarea.$current.next(area.current)\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tnewPath(tag: string, route: RouteAction) {\n\t\tconst oldPathname = location.pathname.split('/').pop()\n\t\tlet oldAreaState = {}\n\t\ttry {\n\t\t\toldAreaState = oldPathname ? JSON.parse(decodeURIComponent(oldPathname)) : {}\n\t\t} catch {\n\t\t\toldAreaState = {}\n\t\t}\n\t\troute.state = route.state ?? {}\n\t\tconst queryParams = route.clearQueryParams ? this.queryParamClear(route.clearQueryParams) : document.location.search\n\n\t\treturn encodeURIComponent(\n\t\t\tJSON.stringify({\n\t\t\t\t...oldAreaState,\n\t\t\t\t[this.name]: { component: tag.toLowerCase(), state: route.state },\n\t\t\t}),\n\t\t).concat(`${queryParams}`)\n\t}\n\n\tqueryParamClear(params?: string[]) {\n\t\tif (!params) {\n\t\t\treturn ''\n\t\t}\n\t\t// get query params from url\n\t\tconst urlParams = new URLSearchParams(location.search)\n\t\t// remove query params\n\t\tparams.forEach(param => urlParams.delete(param))\n\t\t// update url\n\t\tif (urlParams.toString() === '') return ''\n\t\treturn `?${urlParams.toString()}`\n\t}\n\n\tcheckForTeleportationRequests() {\n\t\treturn fromEvent<CustomEvent>(window, 'FLIP_REQUEST').pipe(\n\t\t\tmap(e => e.detail),\n\t\t\tbufferTime(0),\n\t\t\ttap(() => {\n\t\t\t\tthis.dispatchEvent(new CustomEvent('FLIP_STARTED'))\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t\ttimeout(0),\n\t\t\tcatchError(() => of(null)),\n\t\t)\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\trender() {\n\t\treturn html` <slot> </slot> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-area': SchmancyArea\n\t}\n}\n"],"names":["routerHistory","Subject","FINDING_MORTIES","HERE_RICKY","AreaService","constructor","this","prettyURL","mode","request","ReplaySubject","current","Map","$current","enableHistoryMode","findingMortiesEvent","CustomEvent","next","find","zip","fromEvent","window","pipe","map","e","detail","bufferTime","tap","console","log","of","dispatchEvent","component","timeout","r","name","newState","JSON","parse","stringify","area","state","history","replaceState","encodeURIComponent","instance","pathname","location","split","pop","areaState","decodeURIComponent","getInstance","HISTORY_STRATEGY","SchmancyArea","$LitElement","css","historyStrategy","path","routes","default","filter","x","isPresent","catchError","EMPTY","firstUpdated","Error","merge","switchMap","getComponentFromPathname","silent","route","take","target","takeUntil","disconnecting","distinctUntilChanged","a","b","aComponent","bComponent","replaceAll","toLowerCase","c","Promise","from","exports","document","createElement","HTMLElement","prev","curr","tagName","oldView","shadowRoot","children","oldViewExists","remove","classList","add","append","animate","opacity","duration","easing","fill","pushState","newPath","includes","set","subscribe","tag","oldPathname","oldAreaState","queryParams","clearQueryParams","queryParamClear","search","concat","params","urlParams","URLSearchParams","forEach","param","delete","toString","checkForTeleportationRequests","disconnectedCallback","super","html","__decorateClass","property","prototype","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"area.component-B85bKRcZ.js","sources":["../src/area/area.service.ts","../src/area/router.types.ts","../src/area/area.component.ts"],"sourcesContent":["import { ReplaySubject, Subject, bufferTime, fromEvent, map, of, tap, timeout, zip } from 'rxjs'\nimport { SchmancyTeleportation } from '../teleport'\nimport { ActiveRoute, RouteAction } from './router.types'\n\nexport const routerHistory = new Subject<RouteAction>()\n\nexport const FINDING_MORTIES = 'FINDING_MORTIES'\nexport const HERE_RICKY = 'HERE_RICKY'\nexport type HERE_RICKY_EVENT = CustomEvent<{\n\tcomponent: SchmancyTeleportation\n}>\nexport type FINDING_MORTIES_EVENT = CustomEvent<{\n\tcomponent: SchmancyTeleportation\n}>\n\nclass AreaService {\n\tprivate static instance: AreaService\n\tpublic prettyURL = false\n\tpublic mode: 'SILENT' | 'HISTORY' = 'HISTORY'\n\tpublic request = new ReplaySubject<RouteAction>(1)\n\tpublic current = new Map<string, ActiveRoute>()\n\tpublic $current = new ReplaySubject<Map<string, ActiveRoute>>(1)\n\tpublic enableHistoryMode = true\n\tprivate findingMortiesEvent = new CustomEvent<FINDING_MORTIES_EVENT['detail']>(FINDING_MORTIES)\n\n\tconstructor() {\n\t\tthis.$current.next(this.current)\n\t}\n\n\tfind() {\n\t\treturn zip([\n\t\t\tfromEvent<HERE_RICKY_EVENT>(window, HERE_RICKY).pipe(\n\t\t\t\tmap(e => e.detail),\n\t\t\t\tbufferTime(0),\n\t\t\t\ttap(console.log),\n\t\t\t),\n\t\t\tof(1).pipe(tap(() => window.dispatchEvent(this.findingMortiesEvent))),\n\t\t]).pipe(\n\t\t\tmap(([component]) => component),\n\t\t\ttimeout(1),\n\t\t)\n\t}\n\n\tpush(r: RouteAction) {\n\t\tthis.request.next(r)\n\t}\n\n\tpop(name: string) {\n\t\tconst newState = JSON.parse(JSON.stringify(area.state))\n\t\tdelete newState[name]\n\t\tconsole.log(area.state, newState)\n\t\thistory.replaceState(null, '', encodeURIComponent(JSON.stringify(newState)))\n\t}\n\tstatic getInstance() {\n\t\tif (!AreaService.instance) {\n\t\t\tAreaService.instance = new AreaService()\n\t\t}\n\t\treturn AreaService.instance\n\t}\n\n\tget state() {\n\t\tconst pathname = location.pathname.split('/').pop()\n\t\tlet areaState = {}\n\t\ttry {\n\t\t\tareaState = pathname ? JSON.parse(decodeURIComponent(pathname)) : {}\n\t\t} catch {\n\t\t\tareaState = {}\n\t\t}\n\t\treturn areaState\n\t}\n}\n\nexport const area = AreaService.getInstance()\nexport default area\n","export type RouteAction = {\n\tcomponent: CustomElementConstructor | string | Promise<NodeModule> | HTMLElement | Promise<NodeModule>\n\tarea: string\n\tstate?: object\n\thistoryStrategy?: THistoryStrategy\n\tclearQueryParams?: string[] | null\n}\n\nexport type ActiveRoute = {\n\tcomponent: string\n\tarea: string\n\tstate?: object\n}\n\nexport type THistoryStrategy = 'push' | 'replace' | 'pop' | 'silent'\n\nexport enum HISTORY_STRATEGY {\n\tpush = 'push',\n\treplace = 'replace',\n\tpop = 'pop',\n\tsilent = 'silent',\n}\n","import { $LitElement } from '@mixins/index'\nimport { TemplateResult, css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport {\n\tEMPTY,\n\tbufferTime,\n\tcatchError,\n\tdistinctUntilChanged,\n\tfilter,\n\tfrom,\n\tfromEvent,\n\tmap,\n\tmerge,\n\tof,\n\tswitchMap,\n\ttake,\n\ttakeUntil,\n\ttap,\n\ttimeout,\n} from 'rxjs'\nimport { isPresent } from 'ts-is-present'\nimport area from './area.service'\nimport { HISTORY_STRATEGY, RouteAction } from './router.types'\n\ntype TRouteArea = {\n\tcomponent: string\n\tstate: object | undefined\n}\n\n@customElement('schmancy-area')\nexport class SchmancyArea extends $LitElement(css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\tinset: 0;\n\t}\n`) {\n\t/**\n\t * The name of the router outlet\n\t * @attr\n\t * @type {string}\n\t * @public\n\t * @required\n\t */\n\t@property() name!: string\n\n\t@property() default!: string | Promise<NodeModule> | CustomElementConstructor | TemplateResult<1>\n\n\t/**\n\t *\n\t * @param pathname pathname from the browser location API\n\t * @param historyStrategy the history strategy to use for the route like PUSH, REPLACE, or SILENT\n\t * @returns rxjs pipes that will return the component to render and the history strategy to use\n\t */\n\tgetComponentFromPathname(pathname: string, historyStrategy: HISTORY_STRATEGY) {\n\t\treturn of(pathname).pipe(\n\t\t\tmap(path => path.split('/').pop() ?? ''),\n\t\t\tmap(path => decodeURIComponent(path)),\n\t\t\tmap(path => JSON.parse(path)),\n\t\t\tmap(routes => routes[this.name] as TRouteArea),\n\t\t\tmap(component =>\n\t\t\t\t!component && this.default\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tcomponent: this.default,\n\t\t\t\t\t\t\tstate: undefined,\n\t\t\t\t\t\t}\n\t\t\t\t\t: component,\n\t\t\t),\n\t\t\tfilter(x => isPresent(x)),\n\t\t\tmap((component: TRouteArea) => ({\n\t\t\t\tarea: this.name,\n\t\t\t\tcomponent: component.component ?? this.default,\n\t\t\t\tstate: component.state,\n\t\t\t\thistoryStrategy,\n\t\t\t})),\n\t\t\tmap(x => x as RouteAction),\n\t\t\tcatchError(() => {\n\t\t\t\treturn this.default\n\t\t\t\t\t? of({\n\t\t\t\t\t\t\tarea: this.name,\n\t\t\t\t\t\t\tcomponent: this.default,\n\t\t\t\t\t\t\thistoryStrategy,\n\t\t\t\t\t\t} as RouteAction)\n\t\t\t\t\t: EMPTY\n\t\t\t}),\n\t\t)\n\t}\n\n\tprotected firstUpdated(): void {\n\t\tif (!this.name) {\n\t\t\t// TOOD: maybe enforce this to be unique\n\t\t\tthrow new Error('Area name or default component not set')\n\t\t}\n\n\t\t// active outlet changes\n\t\tmerge(\n\t\t\t// 1) initial load from location.pathname\n\t\t\tof(location.pathname).pipe(\n\t\t\t\tswitchMap(pathname => this.getComponentFromPathname(pathname, HISTORY_STRATEGY.silent)),\n\t\t\t\tmap(route => route as RouteAction),\n\t\t\t\ttake(1),\n\t\t\t),\n\t\t\t// 2) requests to change the route for this area\n\t\t\tarea.request.pipe(filter(({ area }) => area === this.name)),\n\t\t\t// 3) popstate events (back, forward)\n\t\t\tfromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\t\tmap(e => (e.target as Window).location.pathname),\n\t\t\t\tswitchMap(pathname => this.getComponentFromPathname(pathname, HISTORY_STRATEGY.silent)),\n\t\t\t\tmap(route => route as RouteAction),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(\n\t\t\t\tfilter(request => !!request.component),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdistinctUntilChanged((a, b) => {\n\t\t\t\t\tlet aComponent, bComponent\n\t\t\t\t\tif (typeof a.component === 'function') return false\n\t\t\t\t\telse if (typeof a.component === 'string') aComponent = a.component\n\n\t\t\t\t\tif (typeof b.component === 'function') return false\n\t\t\t\t\telse if (typeof b.component === 'string') bComponent = b.component\n\n\t\t\t\t\treturn bComponent?.replaceAll('-', '').toLowerCase() === aComponent?.replaceAll('-', '').toLowerCase()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(route => {\n\t\t\t\t\tconst c = route.component\n\t\t\t\t\tif (c instanceof Promise) {\n\t\t\t\t\t\t// Dynamic import module\n\t\t\t\t\t\treturn from(c).pipe(map(x => ({ component: x.exports.default as CustomElementConstructor, route })))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Already a string, function, or element\n\t\t\t\t\t\treturn of({ component: c, route })\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tmap(({ component, route }) => {\n\t\t\t\t\tif (typeof component === 'string') {\n\t\t\t\t\t\t// Tag name\n\t\t\t\t\t\treturn { component: document.createElement(component), route }\n\t\t\t\t\t} else if (component instanceof HTMLElement) {\n\t\t\t\t\t\t// Already an element instance\n\t\t\t\t\t\treturn { component, route }\n\t\t\t\t\t} else if (typeof component === 'function') {\n\t\t\t\t\t\t// Custom element constructor\n\t\t\t\t\t\treturn { component: new component(), route }\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tdistinctUntilChanged((prev, curr) => prev.component.tagName === curr.component.tagName),\n\t\t\t\t// create the new view and add it to the DOM\n\t\t\t\tmap(({ component, route }) => {\n\t\t\t\t\tconst oldView = this.shadowRoot?.children[0]\n\t\t\t\t\tconst oldViewExists = !!oldView\n\n\t\t\t\t\t// Remove the old view (if any)\n\t\t\t\t\toldView.remove()\n\t\t\t\t\t// Native Web Animations API - fade in\n\t\t\t\t\t// \"ease: cubic-bezier(0.25, 0.8, 0.25, 1)\" was used in the old code\n\t\t\t\t\tcomponent.classList.add('opacity-0')\n\t\t\t\t\tthis.shadowRoot?.append(component)\n\t\t\t\t\tcomponent.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\t\t\t\tduration: oldViewExists ? 150 : 100,\n\t\t\t\t\t\teasing: 'cubic-bezier(0.25, 0.8, 0.25, 1)',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t})\n\n\t\t\t\t\t// Insert the new view\n\n\t\t\t\t\treturn { component, route }\n\t\t\t\t}),\n\t\t\t\ttap(({ component, route }) => {\n\t\t\t\t\t// Handle history updates\n\t\t\t\t\tif (typeof route.historyStrategy === 'undefined' || route.historyStrategy === 'push') {\n\t\t\t\t\t\thistory.pushState(route.state, '', this.newPath(component.tagName, route))\n\t\t\t\t\t} else if (route.historyStrategy && ['replace', 'pop'].includes(route.historyStrategy)) {\n\t\t\t\t\t\thistory.replaceState(route.state, '', this.newPath(component.tagName, route))\n\t\t\t\t\t}\n\t\t\t\t\tarea.current.set(this.name, {\n\t\t\t\t\t\tcomponent: component.tagName,\n\t\t\t\t\t\tstate: route.state,\n\t\t\t\t\t\tarea: this.name,\n\t\t\t\t\t})\n\n\t\t\t\t\tarea.$current.next(area.current)\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tnewPath(tag: string, route: RouteAction) {\n\t\tconst oldPathname = location.pathname.split('/').pop()\n\t\tlet oldAreaState = {}\n\t\ttry {\n\t\t\toldAreaState = oldPathname ? JSON.parse(decodeURIComponent(oldPathname)) : {}\n\t\t} catch {\n\t\t\toldAreaState = {}\n\t\t}\n\t\troute.state = route.state ?? {}\n\t\tconst queryParams = route.clearQueryParams ? this.queryParamClear(route.clearQueryParams) : document.location.search\n\n\t\treturn encodeURIComponent(\n\t\t\tJSON.stringify({\n\t\t\t\t...oldAreaState,\n\t\t\t\t[this.name]: { component: tag.toLowerCase(), state: route.state },\n\t\t\t}),\n\t\t).concat(`${queryParams}`)\n\t}\n\n\tqueryParamClear(params?: string[]) {\n\t\tif (!params) {\n\t\t\treturn ''\n\t\t}\n\t\t// get query params from url\n\t\tconst urlParams = new URLSearchParams(location.search)\n\t\t// remove query params\n\t\tparams.forEach(param => urlParams.delete(param))\n\t\t// update url\n\t\tif (urlParams.toString() === '') return ''\n\t\treturn `?${urlParams.toString()}`\n\t}\n\n\tcheckForTeleportationRequests() {\n\t\treturn fromEvent<CustomEvent>(window, 'FLIP_REQUEST').pipe(\n\t\t\tmap(e => e.detail),\n\t\t\tbufferTime(0),\n\t\t\ttap(() => {\n\t\t\t\tthis.dispatchEvent(new CustomEvent('FLIP_STARTED'))\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t\ttimeout(0),\n\t\t\tcatchError(() => of(null)),\n\t\t)\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\trender() {\n\t\treturn html` <slot> </slot> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-area': SchmancyArea\n\t}\n}\n"],"names":["routerHistory","Subject","FINDING_MORTIES","HERE_RICKY","AreaService","constructor","this","prettyURL","mode","request","ReplaySubject","current","Map","$current","enableHistoryMode","findingMortiesEvent","CustomEvent","next","find","zip","fromEvent","window","pipe","map","e","detail","bufferTime","tap","console","log","of","dispatchEvent","component","timeout","r","name","newState","JSON","parse","stringify","area","state","history","replaceState","encodeURIComponent","instance","pathname","location","split","pop","areaState","decodeURIComponent","getInstance","HISTORY_STRATEGY","SchmancyArea","$LitElement","css","historyStrategy","path","routes","default","filter","x","isPresent","catchError","EMPTY","firstUpdated","Error","merge","switchMap","getComponentFromPathname","silent","route","take","target","takeUntil","disconnecting","distinctUntilChanged","a","b","aComponent","bComponent","replaceAll","toLowerCase","c","Promise","from","exports","document","createElement","HTMLElement","prev","curr","tagName","oldView","shadowRoot","children","oldViewExists","remove","classList","add","append","animate","opacity","duration","easing","fill","pushState","newPath","includes","set","subscribe","tag","oldPathname","oldAreaState","queryParams","clearQueryParams","queryParamClear","search","concat","params","urlParams","URLSearchParams","forEach","param","delete","toString","checkForTeleportationRequests","disconnectedCallback","super","html","__decorateClass","property","prototype","customElement"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- "use strict";const n=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const f=require("./litElement.mixin-tfNlySsk.cjs");require("./tailwind.mixin-sZ3A8X0T.cjs");const u=require("lit"),h=require("lit/decorators.js"),g=require("./index-DyJ0oDpR.cjs"),S=new n.Subject,d="FINDING_MORTIES",y="HERE_RICKY";class p{constructor(){this.prettyURL=!1,this.mode="HISTORY",this.request=new n.ReplaySubject(1),this.current=new Map,this.$current=new n.ReplaySubject(1),this.enableHistoryMode=!0,this.findingMortiesEvent=new CustomEvent(d),this.$current.next(this.current)}find(){return n.zip([n.fromEvent(window,y).pipe(n.map(e=>e.detail),n.bufferTime(0),n.tap(console.log)),n.of(1).pipe(n.tap(()=>window.dispatchEvent(this.findingMortiesEvent)))]).pipe(n.map(([e])=>e),n.timeout(1))}push(e){this.request.next(e)}pop(e){const o=JSON.parse(JSON.stringify(s.state));delete o[e],history.replaceState(null,"",encodeURIComponent(JSON.stringify(o)))}static getInstance(){return p.instance||(p.instance=new p),p.instance}get state(){const e=location.pathname.split("/").pop();let o={};try{o=e?JSON.parse(decodeURIComponent(e)):{}}catch{o={}}return o}}const s=p.getInstance();var c=(t=>(t.push="push",t.replace="replace",t.pop="pop",t.silent="silent",t))(c||{}),w=Object.defineProperty,E=Object.getOwnPropertyDescriptor,l=(t,e,o,a)=>{for(var i,r=a>1?void 0:a?E(e,o):e,m=t.length-1;m>=0;m--)(i=t[m])&&(r=(a?i(e,o,r):i(r))||r);return a&&r&&w(e,o,r),r};exports.SchmancyArea=class extends f.$LitElement(u.css`
1
+ "use strict";const n=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const f=require("./litElement.mixin-CcvIvqxb.cjs");require("./tailwind.mixin-BZjCpGfl.cjs");const u=require("lit"),h=require("lit/decorators.js"),g=require("./index-DyJ0oDpR.cjs"),S=new n.Subject,d="FINDING_MORTIES",y="HERE_RICKY";class p{constructor(){this.prettyURL=!1,this.mode="HISTORY",this.request=new n.ReplaySubject(1),this.current=new Map,this.$current=new n.ReplaySubject(1),this.enableHistoryMode=!0,this.findingMortiesEvent=new CustomEvent(d),this.$current.next(this.current)}find(){return n.zip([n.fromEvent(window,y).pipe(n.map(e=>e.detail),n.bufferTime(0),n.tap(console.log)),n.of(1).pipe(n.tap(()=>window.dispatchEvent(this.findingMortiesEvent)))]).pipe(n.map(([e])=>e),n.timeout(1))}push(e){this.request.next(e)}pop(e){const o=JSON.parse(JSON.stringify(s.state));delete o[e],history.replaceState(null,"",encodeURIComponent(JSON.stringify(o)))}static getInstance(){return p.instance||(p.instance=new p),p.instance}get state(){const e=location.pathname.split("/").pop();let o={};try{o=e?JSON.parse(decodeURIComponent(e)):{}}catch{o={}}return o}}const s=p.getInstance();var c=(t=>(t.push="push",t.replace="replace",t.pop="pop",t.silent="silent",t))(c||{}),w=Object.defineProperty,E=Object.getOwnPropertyDescriptor,l=(t,e,o,a)=>{for(var i,r=a>1?void 0:a?E(e,o):e,m=t.length-1;m>=0;m--)(i=t[m])&&(r=(a?i(e,o,r):i(r))||r);return a&&r&&w(e,o,r),r};exports.SchmancyArea=class extends f.$LitElement(u.css`
2
2
  :host {
3
3
  position: relative;
4
4
  display: block;
5
5
  inset: 0;
6
6
  }
7
7
  `){getComponentFromPathname(t,e){return n.of(t).pipe(n.map(o=>o.split("/").pop()??""),n.map(o=>decodeURIComponent(o)),n.map(o=>JSON.parse(o)),n.map(o=>o[this.name]),n.map(o=>!o&&this.default?{component:this.default,state:void 0}:o),n.filter(o=>g.libExports.isPresent(o)),n.map(o=>({area:this.name,component:o.component??this.default,state:o.state,historyStrategy:e})),n.map(o=>o),n.catchError(()=>this.default?n.of({area:this.name,component:this.default,historyStrategy:e}):n.EMPTY))}firstUpdated(){if(!this.name)throw new Error("Area name or default component not set");n.merge(n.of(location.pathname).pipe(n.switchMap(t=>this.getComponentFromPathname(t,c.silent)),n.map(t=>t),n.take(1)),s.request.pipe(n.filter(({area:t})=>t===this.name)),n.fromEvent(window,"popstate").pipe(n.map(t=>t.target.location.pathname),n.switchMap(t=>this.getComponentFromPathname(t,c.silent)),n.map(t=>t))).pipe(n.filter(t=>!!t.component),n.takeUntil(this.disconnecting),n.distinctUntilChanged((t,e)=>{let o,a;return typeof t.component!="function"&&(typeof t.component=="string"&&(o=t.component),typeof e.component!="function"&&(typeof e.component=="string"&&(a=e.component),(a==null?void 0:a.replaceAll("-","").toLowerCase())===(o==null?void 0:o.replaceAll("-","").toLowerCase())))})).pipe(n.switchMap(t=>{const e=t.component;return e instanceof Promise?n.from(e).pipe(n.map(o=>({component:o.exports.default,route:t}))):n.of({component:e,route:t})}),n.map(({component:t,route:e})=>typeof t=="string"?{component:document.createElement(t),route:e}:t instanceof HTMLElement?{component:t,route:e}:typeof t=="function"?{component:new t,route:e}:void 0),n.distinctUntilChanged((t,e)=>t.component.tagName===e.component.tagName),n.map(({component:t,route:e})=>{var i,r;const o=(i=this.shadowRoot)==null?void 0:i.children[0],a=!!o;return o.remove(),t.classList.add("opacity-0"),(r=this.shadowRoot)==null||r.append(t),t.animate([{opacity:0},{opacity:1}],{duration:a?150:100,easing:"cubic-bezier(0.25, 0.8, 0.25, 1)",fill:"forwards"}),{component:t,route:e}}),n.tap(({component:t,route:e})=>{e.historyStrategy===void 0||e.historyStrategy==="push"?history.pushState(e.state,"",this.newPath(t.tagName,e)):e.historyStrategy&&["replace","pop"].includes(e.historyStrategy)&&history.replaceState(e.state,"",this.newPath(t.tagName,e)),s.current.set(this.name,{component:t.tagName,state:e.state,area:this.name}),s.$current.next(s.current)}),n.takeUntil(this.disconnecting)).subscribe()}newPath(t,e){const o=location.pathname.split("/").pop();let a={};try{a=o?JSON.parse(decodeURIComponent(o)):{}}catch{a={}}e.state=e.state??{};const i=e.clearQueryParams?this.queryParamClear(e.clearQueryParams):document.location.search;return encodeURIComponent(JSON.stringify({...a,[this.name]:{component:t.toLowerCase(),state:e.state}})).concat(`${i}`)}queryParamClear(t){if(!t)return"";const e=new URLSearchParams(location.search);return t.forEach(o=>e.delete(o)),e.toString()===""?"":`?${e.toString()}`}checkForTeleportationRequests(){return n.fromEvent(window,"FLIP_REQUEST").pipe(n.map(t=>t.detail),n.bufferTime(0),n.tap(()=>{this.dispatchEvent(new CustomEvent("FLIP_STARTED"))}),n.takeUntil(this.disconnecting),n.timeout(0),n.catchError(()=>n.of(null)))}disconnectedCallback(){super.disconnectedCallback(),this.disconnecting.next(!0)}render(){return u.html` <slot> </slot> `}},l([h.property()],exports.SchmancyArea.prototype,"name",2),l([h.property()],exports.SchmancyArea.prototype,"default",2),exports.SchmancyArea=l([h.customElement("schmancy-area")],exports.SchmancyArea),exports.FINDING_MORTIES=d,exports.HERE_RICKY=y,exports.HISTORY_STRATEGY=c,exports.area=s,exports.routerHistory=S;
8
- //# sourceMappingURL=area.component-e52Eafj8.cjs.map
8
+ //# sourceMappingURL=area.component-DmfwQylu.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"area.component-e52Eafj8.cjs","sources":["../src/area/area.service.ts","../src/area/router.types.ts","../src/area/area.component.ts"],"sourcesContent":["import { ReplaySubject, Subject, bufferTime, fromEvent, map, of, tap, timeout, zip } from 'rxjs'\nimport { SchmancyTeleportation } from '../teleport'\nimport { ActiveRoute, RouteAction } from './router.types'\n\nexport const routerHistory = new Subject<RouteAction>()\n\nexport const FINDING_MORTIES = 'FINDING_MORTIES'\nexport const HERE_RICKY = 'HERE_RICKY'\nexport type HERE_RICKY_EVENT = CustomEvent<{\n\tcomponent: SchmancyTeleportation\n}>\nexport type FINDING_MORTIES_EVENT = CustomEvent<{\n\tcomponent: SchmancyTeleportation\n}>\n\nclass AreaService {\n\tprivate static instance: AreaService\n\tpublic prettyURL = false\n\tpublic mode: 'SILENT' | 'HISTORY' = 'HISTORY'\n\tpublic request = new ReplaySubject<RouteAction>(1)\n\tpublic current = new Map<string, ActiveRoute>()\n\tpublic $current = new ReplaySubject<Map<string, ActiveRoute>>(1)\n\tpublic enableHistoryMode = true\n\tprivate findingMortiesEvent = new CustomEvent<FINDING_MORTIES_EVENT['detail']>(FINDING_MORTIES)\n\n\tconstructor() {\n\t\tthis.$current.next(this.current)\n\t}\n\n\tfind() {\n\t\treturn zip([\n\t\t\tfromEvent<HERE_RICKY_EVENT>(window, HERE_RICKY).pipe(\n\t\t\t\tmap(e => e.detail),\n\t\t\t\tbufferTime(0),\n\t\t\t\ttap(console.log),\n\t\t\t),\n\t\t\tof(1).pipe(tap(() => window.dispatchEvent(this.findingMortiesEvent))),\n\t\t]).pipe(\n\t\t\tmap(([component]) => component),\n\t\t\ttimeout(1),\n\t\t)\n\t}\n\n\tpush(r: RouteAction) {\n\t\tthis.request.next(r)\n\t}\n\n\tpop(name: string) {\n\t\tconst newState = JSON.parse(JSON.stringify(area.state))\n\t\tdelete newState[name]\n\t\tconsole.log(area.state, newState)\n\t\thistory.replaceState(null, '', encodeURIComponent(JSON.stringify(newState)))\n\t}\n\tstatic getInstance() {\n\t\tif (!AreaService.instance) {\n\t\t\tAreaService.instance = new AreaService()\n\t\t}\n\t\treturn AreaService.instance\n\t}\n\n\tget state() {\n\t\tconst pathname = location.pathname.split('/').pop()\n\t\tlet areaState = {}\n\t\ttry {\n\t\t\tareaState = pathname ? JSON.parse(decodeURIComponent(pathname)) : {}\n\t\t} catch {\n\t\t\tareaState = {}\n\t\t}\n\t\treturn areaState\n\t}\n}\n\nexport const area = AreaService.getInstance()\nexport default area\n","export type RouteAction = {\n\tcomponent: CustomElementConstructor | string | Promise<NodeModule> | HTMLElement | Promise<NodeModule>\n\tarea: string\n\tstate?: object\n\thistoryStrategy?: THistoryStrategy\n\tclearQueryParams?: string[] | null\n}\n\nexport type ActiveRoute = {\n\tcomponent: string\n\tarea: string\n\tstate?: object\n}\n\nexport type THistoryStrategy = 'push' | 'replace' | 'pop' | 'silent'\n\nexport enum HISTORY_STRATEGY {\n\tpush = 'push',\n\treplace = 'replace',\n\tpop = 'pop',\n\tsilent = 'silent',\n}\n","import { $LitElement } from '@mixins/index'\nimport { TemplateResult, css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport {\n\tEMPTY,\n\tbufferTime,\n\tcatchError,\n\tdistinctUntilChanged,\n\tfilter,\n\tfrom,\n\tfromEvent,\n\tmap,\n\tmerge,\n\tof,\n\tswitchMap,\n\ttake,\n\ttakeUntil,\n\ttap,\n\ttimeout,\n} from 'rxjs'\nimport { isPresent } from 'ts-is-present'\nimport area from './area.service'\nimport { HISTORY_STRATEGY, RouteAction } from './router.types'\n\ntype TRouteArea = {\n\tcomponent: string\n\tstate: object | undefined\n}\n\n@customElement('schmancy-area')\nexport class SchmancyArea extends $LitElement(css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\tinset: 0;\n\t}\n`) {\n\t/**\n\t * The name of the router outlet\n\t * @attr\n\t * @type {string}\n\t * @public\n\t * @required\n\t */\n\t@property() name!: string\n\n\t@property() default!: string | Promise<NodeModule> | CustomElementConstructor | TemplateResult<1>\n\n\t/**\n\t *\n\t * @param pathname pathname from the browser location API\n\t * @param historyStrategy the history strategy to use for the route like PUSH, REPLACE, or SILENT\n\t * @returns rxjs pipes that will return the component to render and the history strategy to use\n\t */\n\tgetComponentFromPathname(pathname: string, historyStrategy: HISTORY_STRATEGY) {\n\t\treturn of(pathname).pipe(\n\t\t\tmap(path => path.split('/').pop() ?? ''),\n\t\t\tmap(path => decodeURIComponent(path)),\n\t\t\tmap(path => JSON.parse(path)),\n\t\t\tmap(routes => routes[this.name] as TRouteArea),\n\t\t\tmap(component =>\n\t\t\t\t!component && this.default\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tcomponent: this.default,\n\t\t\t\t\t\t\tstate: undefined,\n\t\t\t\t\t\t}\n\t\t\t\t\t: component,\n\t\t\t),\n\t\t\tfilter(x => isPresent(x)),\n\t\t\tmap((component: TRouteArea) => ({\n\t\t\t\tarea: this.name,\n\t\t\t\tcomponent: component.component ?? this.default,\n\t\t\t\tstate: component.state,\n\t\t\t\thistoryStrategy,\n\t\t\t})),\n\t\t\tmap(x => x as RouteAction),\n\t\t\tcatchError(() => {\n\t\t\t\treturn this.default\n\t\t\t\t\t? of({\n\t\t\t\t\t\t\tarea: this.name,\n\t\t\t\t\t\t\tcomponent: this.default,\n\t\t\t\t\t\t\thistoryStrategy,\n\t\t\t\t\t\t} as RouteAction)\n\t\t\t\t\t: EMPTY\n\t\t\t}),\n\t\t)\n\t}\n\n\tprotected firstUpdated(): void {\n\t\tif (!this.name) {\n\t\t\t// TOOD: maybe enforce this to be unique\n\t\t\tthrow new Error('Area name or default component not set')\n\t\t}\n\n\t\t// active outlet changes\n\t\tmerge(\n\t\t\t// 1) initial load from location.pathname\n\t\t\tof(location.pathname).pipe(\n\t\t\t\tswitchMap(pathname => this.getComponentFromPathname(pathname, HISTORY_STRATEGY.silent)),\n\t\t\t\tmap(route => route as RouteAction),\n\t\t\t\ttake(1),\n\t\t\t),\n\t\t\t// 2) requests to change the route for this area\n\t\t\tarea.request.pipe(filter(({ area }) => area === this.name)),\n\t\t\t// 3) popstate events (back, forward)\n\t\t\tfromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\t\tmap(e => (e.target as Window).location.pathname),\n\t\t\t\tswitchMap(pathname => this.getComponentFromPathname(pathname, HISTORY_STRATEGY.silent)),\n\t\t\t\tmap(route => route as RouteAction),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(\n\t\t\t\tfilter(request => !!request.component),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdistinctUntilChanged((a, b) => {\n\t\t\t\t\tlet aComponent, bComponent\n\t\t\t\t\tif (typeof a.component === 'function') return false\n\t\t\t\t\telse if (typeof a.component === 'string') aComponent = a.component\n\n\t\t\t\t\tif (typeof b.component === 'function') return false\n\t\t\t\t\telse if (typeof b.component === 'string') bComponent = b.component\n\n\t\t\t\t\treturn bComponent?.replaceAll('-', '').toLowerCase() === aComponent?.replaceAll('-', '').toLowerCase()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(route => {\n\t\t\t\t\tconst c = route.component\n\t\t\t\t\tif (c instanceof Promise) {\n\t\t\t\t\t\t// Dynamic import module\n\t\t\t\t\t\treturn from(c).pipe(map(x => ({ component: x.exports.default as CustomElementConstructor, route })))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Already a string, function, or element\n\t\t\t\t\t\treturn of({ component: c, route })\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tmap(({ component, route }) => {\n\t\t\t\t\tif (typeof component === 'string') {\n\t\t\t\t\t\t// Tag name\n\t\t\t\t\t\treturn { component: document.createElement(component), route }\n\t\t\t\t\t} else if (component instanceof HTMLElement) {\n\t\t\t\t\t\t// Already an element instance\n\t\t\t\t\t\treturn { component, route }\n\t\t\t\t\t} else if (typeof component === 'function') {\n\t\t\t\t\t\t// Custom element constructor\n\t\t\t\t\t\treturn { component: new component(), route }\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tdistinctUntilChanged((prev, curr) => prev.component.tagName === curr.component.tagName),\n\t\t\t\t// create the new view and add it to the DOM\n\t\t\t\tmap(({ component, route }) => {\n\t\t\t\t\tconst oldView = this.shadowRoot?.children[0]\n\t\t\t\t\tconst oldViewExists = !!oldView\n\n\t\t\t\t\t// Remove the old view (if any)\n\t\t\t\t\toldView.remove()\n\t\t\t\t\t// Native Web Animations API - fade in\n\t\t\t\t\t// \"ease: cubic-bezier(0.25, 0.8, 0.25, 1)\" was used in the old code\n\t\t\t\t\tcomponent.classList.add('opacity-0')\n\t\t\t\t\tthis.shadowRoot?.append(component)\n\t\t\t\t\tcomponent.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\t\t\t\tduration: oldViewExists ? 150 : 100,\n\t\t\t\t\t\teasing: 'cubic-bezier(0.25, 0.8, 0.25, 1)',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t})\n\n\t\t\t\t\t// Insert the new view\n\n\t\t\t\t\treturn { component, route }\n\t\t\t\t}),\n\t\t\t\ttap(({ component, route }) => {\n\t\t\t\t\t// Handle history updates\n\t\t\t\t\tif (typeof route.historyStrategy === 'undefined' || route.historyStrategy === 'push') {\n\t\t\t\t\t\thistory.pushState(route.state, '', this.newPath(component.tagName, route))\n\t\t\t\t\t} else if (route.historyStrategy && ['replace', 'pop'].includes(route.historyStrategy)) {\n\t\t\t\t\t\thistory.replaceState(route.state, '', this.newPath(component.tagName, route))\n\t\t\t\t\t}\n\t\t\t\t\tarea.current.set(this.name, {\n\t\t\t\t\t\tcomponent: component.tagName,\n\t\t\t\t\t\tstate: route.state,\n\t\t\t\t\t\tarea: this.name,\n\t\t\t\t\t})\n\n\t\t\t\t\tarea.$current.next(area.current)\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tnewPath(tag: string, route: RouteAction) {\n\t\tconst oldPathname = location.pathname.split('/').pop()\n\t\tlet oldAreaState = {}\n\t\ttry {\n\t\t\toldAreaState = oldPathname ? JSON.parse(decodeURIComponent(oldPathname)) : {}\n\t\t} catch {\n\t\t\toldAreaState = {}\n\t\t}\n\t\troute.state = route.state ?? {}\n\t\tconst queryParams = route.clearQueryParams ? this.queryParamClear(route.clearQueryParams) : document.location.search\n\n\t\treturn encodeURIComponent(\n\t\t\tJSON.stringify({\n\t\t\t\t...oldAreaState,\n\t\t\t\t[this.name]: { component: tag.toLowerCase(), state: route.state },\n\t\t\t}),\n\t\t).concat(`${queryParams}`)\n\t}\n\n\tqueryParamClear(params?: string[]) {\n\t\tif (!params) {\n\t\t\treturn ''\n\t\t}\n\t\t// get query params from url\n\t\tconst urlParams = new URLSearchParams(location.search)\n\t\t// remove query params\n\t\tparams.forEach(param => urlParams.delete(param))\n\t\t// update url\n\t\tif (urlParams.toString() === '') return ''\n\t\treturn `?${urlParams.toString()}`\n\t}\n\n\tcheckForTeleportationRequests() {\n\t\treturn fromEvent<CustomEvent>(window, 'FLIP_REQUEST').pipe(\n\t\t\tmap(e => e.detail),\n\t\t\tbufferTime(0),\n\t\t\ttap(() => {\n\t\t\t\tthis.dispatchEvent(new CustomEvent('FLIP_STARTED'))\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t\ttimeout(0),\n\t\t\tcatchError(() => of(null)),\n\t\t)\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\trender() {\n\t\treturn html` <slot> </slot> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-area': SchmancyArea\n\t}\n}\n"],"names":["routerHistory","Subject","FINDING_MORTIES","HERE_RICKY","AreaService","constructor","this","prettyURL","mode","request","ReplaySubject","current","Map","$current","enableHistoryMode","findingMortiesEvent","CustomEvent","next","zip","fromEvent","window","pipe","map","e","detail","bufferTime","tap","console","log","of","dispatchEvent","component","timeout","r","name","newState","JSON","parse","stringify","area","state","history","replaceState","encodeURIComponent","getInstance","instance","pathname","location","split","pop","areaState","decodeURIComponent","HISTORY_STRATEGY","SchmancyArea","$LitElement","css","historyStrategy","path","routes","default","undefined","filter","x","isPresent","libExports","catchError","EMPTY","Error","merge","switchMap","getComponentFromPathname","silent","route","take","target","takeUntil","disconnecting","distinctUntilChanged","a","b","aComponent","bComponent","replaceAll","toLowerCase","c","Promise","from","exports","document","createElement","HTMLElement","prev","curr","tagName","oldView","shadowRoot","children","oldViewExists","remove","classList","add","append","animate","opacity","duration","easing","fill","pushState","newPath","includes","set","subscribe","tag","oldPathname","oldAreaState","queryParams","clearQueryParams","queryParamClear","search","concat","params","urlParams","URLSearchParams","forEach","param","delete","toString","super","disconnectedCallback","html","__decorateClass","property","prototype","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"area.component-DmfwQylu.cjs","sources":["../src/area/area.service.ts","../src/area/router.types.ts","../src/area/area.component.ts"],"sourcesContent":["import { ReplaySubject, Subject, bufferTime, fromEvent, map, of, tap, timeout, zip } from 'rxjs'\nimport { SchmancyTeleportation } from '../teleport'\nimport { ActiveRoute, RouteAction } from './router.types'\n\nexport const routerHistory = new Subject<RouteAction>()\n\nexport const FINDING_MORTIES = 'FINDING_MORTIES'\nexport const HERE_RICKY = 'HERE_RICKY'\nexport type HERE_RICKY_EVENT = CustomEvent<{\n\tcomponent: SchmancyTeleportation\n}>\nexport type FINDING_MORTIES_EVENT = CustomEvent<{\n\tcomponent: SchmancyTeleportation\n}>\n\nclass AreaService {\n\tprivate static instance: AreaService\n\tpublic prettyURL = false\n\tpublic mode: 'SILENT' | 'HISTORY' = 'HISTORY'\n\tpublic request = new ReplaySubject<RouteAction>(1)\n\tpublic current = new Map<string, ActiveRoute>()\n\tpublic $current = new ReplaySubject<Map<string, ActiveRoute>>(1)\n\tpublic enableHistoryMode = true\n\tprivate findingMortiesEvent = new CustomEvent<FINDING_MORTIES_EVENT['detail']>(FINDING_MORTIES)\n\n\tconstructor() {\n\t\tthis.$current.next(this.current)\n\t}\n\n\tfind() {\n\t\treturn zip([\n\t\t\tfromEvent<HERE_RICKY_EVENT>(window, HERE_RICKY).pipe(\n\t\t\t\tmap(e => e.detail),\n\t\t\t\tbufferTime(0),\n\t\t\t\ttap(console.log),\n\t\t\t),\n\t\t\tof(1).pipe(tap(() => window.dispatchEvent(this.findingMortiesEvent))),\n\t\t]).pipe(\n\t\t\tmap(([component]) => component),\n\t\t\ttimeout(1),\n\t\t)\n\t}\n\n\tpush(r: RouteAction) {\n\t\tthis.request.next(r)\n\t}\n\n\tpop(name: string) {\n\t\tconst newState = JSON.parse(JSON.stringify(area.state))\n\t\tdelete newState[name]\n\t\tconsole.log(area.state, newState)\n\t\thistory.replaceState(null, '', encodeURIComponent(JSON.stringify(newState)))\n\t}\n\tstatic getInstance() {\n\t\tif (!AreaService.instance) {\n\t\t\tAreaService.instance = new AreaService()\n\t\t}\n\t\treturn AreaService.instance\n\t}\n\n\tget state() {\n\t\tconst pathname = location.pathname.split('/').pop()\n\t\tlet areaState = {}\n\t\ttry {\n\t\t\tareaState = pathname ? JSON.parse(decodeURIComponent(pathname)) : {}\n\t\t} catch {\n\t\t\tareaState = {}\n\t\t}\n\t\treturn areaState\n\t}\n}\n\nexport const area = AreaService.getInstance()\nexport default area\n","export type RouteAction = {\n\tcomponent: CustomElementConstructor | string | Promise<NodeModule> | HTMLElement | Promise<NodeModule>\n\tarea: string\n\tstate?: object\n\thistoryStrategy?: THistoryStrategy\n\tclearQueryParams?: string[] | null\n}\n\nexport type ActiveRoute = {\n\tcomponent: string\n\tarea: string\n\tstate?: object\n}\n\nexport type THistoryStrategy = 'push' | 'replace' | 'pop' | 'silent'\n\nexport enum HISTORY_STRATEGY {\n\tpush = 'push',\n\treplace = 'replace',\n\tpop = 'pop',\n\tsilent = 'silent',\n}\n","import { $LitElement } from '@mixins/index'\nimport { TemplateResult, css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport {\n\tEMPTY,\n\tbufferTime,\n\tcatchError,\n\tdistinctUntilChanged,\n\tfilter,\n\tfrom,\n\tfromEvent,\n\tmap,\n\tmerge,\n\tof,\n\tswitchMap,\n\ttake,\n\ttakeUntil,\n\ttap,\n\ttimeout,\n} from 'rxjs'\nimport { isPresent } from 'ts-is-present'\nimport area from './area.service'\nimport { HISTORY_STRATEGY, RouteAction } from './router.types'\n\ntype TRouteArea = {\n\tcomponent: string\n\tstate: object | undefined\n}\n\n@customElement('schmancy-area')\nexport class SchmancyArea extends $LitElement(css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: block;\n\t\tinset: 0;\n\t}\n`) {\n\t/**\n\t * The name of the router outlet\n\t * @attr\n\t * @type {string}\n\t * @public\n\t * @required\n\t */\n\t@property() name!: string\n\n\t@property() default!: string | Promise<NodeModule> | CustomElementConstructor | TemplateResult<1>\n\n\t/**\n\t *\n\t * @param pathname pathname from the browser location API\n\t * @param historyStrategy the history strategy to use for the route like PUSH, REPLACE, or SILENT\n\t * @returns rxjs pipes that will return the component to render and the history strategy to use\n\t */\n\tgetComponentFromPathname(pathname: string, historyStrategy: HISTORY_STRATEGY) {\n\t\treturn of(pathname).pipe(\n\t\t\tmap(path => path.split('/').pop() ?? ''),\n\t\t\tmap(path => decodeURIComponent(path)),\n\t\t\tmap(path => JSON.parse(path)),\n\t\t\tmap(routes => routes[this.name] as TRouteArea),\n\t\t\tmap(component =>\n\t\t\t\t!component && this.default\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tcomponent: this.default,\n\t\t\t\t\t\t\tstate: undefined,\n\t\t\t\t\t\t}\n\t\t\t\t\t: component,\n\t\t\t),\n\t\t\tfilter(x => isPresent(x)),\n\t\t\tmap((component: TRouteArea) => ({\n\t\t\t\tarea: this.name,\n\t\t\t\tcomponent: component.component ?? this.default,\n\t\t\t\tstate: component.state,\n\t\t\t\thistoryStrategy,\n\t\t\t})),\n\t\t\tmap(x => x as RouteAction),\n\t\t\tcatchError(() => {\n\t\t\t\treturn this.default\n\t\t\t\t\t? of({\n\t\t\t\t\t\t\tarea: this.name,\n\t\t\t\t\t\t\tcomponent: this.default,\n\t\t\t\t\t\t\thistoryStrategy,\n\t\t\t\t\t\t} as RouteAction)\n\t\t\t\t\t: EMPTY\n\t\t\t}),\n\t\t)\n\t}\n\n\tprotected firstUpdated(): void {\n\t\tif (!this.name) {\n\t\t\t// TOOD: maybe enforce this to be unique\n\t\t\tthrow new Error('Area name or default component not set')\n\t\t}\n\n\t\t// active outlet changes\n\t\tmerge(\n\t\t\t// 1) initial load from location.pathname\n\t\t\tof(location.pathname).pipe(\n\t\t\t\tswitchMap(pathname => this.getComponentFromPathname(pathname, HISTORY_STRATEGY.silent)),\n\t\t\t\tmap(route => route as RouteAction),\n\t\t\t\ttake(1),\n\t\t\t),\n\t\t\t// 2) requests to change the route for this area\n\t\t\tarea.request.pipe(filter(({ area }) => area === this.name)),\n\t\t\t// 3) popstate events (back, forward)\n\t\t\tfromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\t\tmap(e => (e.target as Window).location.pathname),\n\t\t\t\tswitchMap(pathname => this.getComponentFromPathname(pathname, HISTORY_STRATEGY.silent)),\n\t\t\t\tmap(route => route as RouteAction),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(\n\t\t\t\tfilter(request => !!request.component),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdistinctUntilChanged((a, b) => {\n\t\t\t\t\tlet aComponent, bComponent\n\t\t\t\t\tif (typeof a.component === 'function') return false\n\t\t\t\t\telse if (typeof a.component === 'string') aComponent = a.component\n\n\t\t\t\t\tif (typeof b.component === 'function') return false\n\t\t\t\t\telse if (typeof b.component === 'string') bComponent = b.component\n\n\t\t\t\t\treturn bComponent?.replaceAll('-', '').toLowerCase() === aComponent?.replaceAll('-', '').toLowerCase()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(route => {\n\t\t\t\t\tconst c = route.component\n\t\t\t\t\tif (c instanceof Promise) {\n\t\t\t\t\t\t// Dynamic import module\n\t\t\t\t\t\treturn from(c).pipe(map(x => ({ component: x.exports.default as CustomElementConstructor, route })))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Already a string, function, or element\n\t\t\t\t\t\treturn of({ component: c, route })\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tmap(({ component, route }) => {\n\t\t\t\t\tif (typeof component === 'string') {\n\t\t\t\t\t\t// Tag name\n\t\t\t\t\t\treturn { component: document.createElement(component), route }\n\t\t\t\t\t} else if (component instanceof HTMLElement) {\n\t\t\t\t\t\t// Already an element instance\n\t\t\t\t\t\treturn { component, route }\n\t\t\t\t\t} else if (typeof component === 'function') {\n\t\t\t\t\t\t// Custom element constructor\n\t\t\t\t\t\treturn { component: new component(), route }\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tdistinctUntilChanged((prev, curr) => prev.component.tagName === curr.component.tagName),\n\t\t\t\t// create the new view and add it to the DOM\n\t\t\t\tmap(({ component, route }) => {\n\t\t\t\t\tconst oldView = this.shadowRoot?.children[0]\n\t\t\t\t\tconst oldViewExists = !!oldView\n\n\t\t\t\t\t// Remove the old view (if any)\n\t\t\t\t\toldView.remove()\n\t\t\t\t\t// Native Web Animations API - fade in\n\t\t\t\t\t// \"ease: cubic-bezier(0.25, 0.8, 0.25, 1)\" was used in the old code\n\t\t\t\t\tcomponent.classList.add('opacity-0')\n\t\t\t\t\tthis.shadowRoot?.append(component)\n\t\t\t\t\tcomponent.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\t\t\t\tduration: oldViewExists ? 150 : 100,\n\t\t\t\t\t\teasing: 'cubic-bezier(0.25, 0.8, 0.25, 1)',\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t})\n\n\t\t\t\t\t// Insert the new view\n\n\t\t\t\t\treturn { component, route }\n\t\t\t\t}),\n\t\t\t\ttap(({ component, route }) => {\n\t\t\t\t\t// Handle history updates\n\t\t\t\t\tif (typeof route.historyStrategy === 'undefined' || route.historyStrategy === 'push') {\n\t\t\t\t\t\thistory.pushState(route.state, '', this.newPath(component.tagName, route))\n\t\t\t\t\t} else if (route.historyStrategy && ['replace', 'pop'].includes(route.historyStrategy)) {\n\t\t\t\t\t\thistory.replaceState(route.state, '', this.newPath(component.tagName, route))\n\t\t\t\t\t}\n\t\t\t\t\tarea.current.set(this.name, {\n\t\t\t\t\t\tcomponent: component.tagName,\n\t\t\t\t\t\tstate: route.state,\n\t\t\t\t\t\tarea: this.name,\n\t\t\t\t\t})\n\n\t\t\t\t\tarea.$current.next(area.current)\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tnewPath(tag: string, route: RouteAction) {\n\t\tconst oldPathname = location.pathname.split('/').pop()\n\t\tlet oldAreaState = {}\n\t\ttry {\n\t\t\toldAreaState = oldPathname ? JSON.parse(decodeURIComponent(oldPathname)) : {}\n\t\t} catch {\n\t\t\toldAreaState = {}\n\t\t}\n\t\troute.state = route.state ?? {}\n\t\tconst queryParams = route.clearQueryParams ? this.queryParamClear(route.clearQueryParams) : document.location.search\n\n\t\treturn encodeURIComponent(\n\t\t\tJSON.stringify({\n\t\t\t\t...oldAreaState,\n\t\t\t\t[this.name]: { component: tag.toLowerCase(), state: route.state },\n\t\t\t}),\n\t\t).concat(`${queryParams}`)\n\t}\n\n\tqueryParamClear(params?: string[]) {\n\t\tif (!params) {\n\t\t\treturn ''\n\t\t}\n\t\t// get query params from url\n\t\tconst urlParams = new URLSearchParams(location.search)\n\t\t// remove query params\n\t\tparams.forEach(param => urlParams.delete(param))\n\t\t// update url\n\t\tif (urlParams.toString() === '') return ''\n\t\treturn `?${urlParams.toString()}`\n\t}\n\n\tcheckForTeleportationRequests() {\n\t\treturn fromEvent<CustomEvent>(window, 'FLIP_REQUEST').pipe(\n\t\t\tmap(e => e.detail),\n\t\t\tbufferTime(0),\n\t\t\ttap(() => {\n\t\t\t\tthis.dispatchEvent(new CustomEvent('FLIP_STARTED'))\n\t\t\t}),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t\ttimeout(0),\n\t\t\tcatchError(() => of(null)),\n\t\t)\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\trender() {\n\t\treturn html` <slot> </slot> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-area': SchmancyArea\n\t}\n}\n"],"names":["routerHistory","Subject","FINDING_MORTIES","HERE_RICKY","AreaService","constructor","this","prettyURL","mode","request","ReplaySubject","current","Map","$current","enableHistoryMode","findingMortiesEvent","CustomEvent","next","zip","fromEvent","window","pipe","map","e","detail","bufferTime","tap","console","log","of","dispatchEvent","component","timeout","r","name","newState","JSON","parse","stringify","area","state","history","replaceState","encodeURIComponent","getInstance","instance","pathname","location","split","pop","areaState","decodeURIComponent","HISTORY_STRATEGY","SchmancyArea","$LitElement","css","historyStrategy","path","routes","default","undefined","filter","x","isPresent","libExports","catchError","EMPTY","Error","merge","switchMap","getComponentFromPathname","silent","route","take","target","takeUntil","disconnecting","distinctUntilChanged","a","b","aComponent","bComponent","replaceAll","toLowerCase","c","Promise","from","exports","document","createElement","HTMLElement","prev","curr","tagName","oldView","shadowRoot","children","oldViewExists","remove","classList","add","append","animate","opacity","duration","easing","fill","pushState","newPath","includes","set","subscribe","tag","oldPathname","oldAreaState","queryParams","clearQueryParams","queryParamClear","search","concat","params","urlParams","URLSearchParams","forEach","param","delete","toString","super","disconnectedCallback","html","__decorateClass","property","prototype","customElement"],"mappings":"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"}
package/dist/area.js CHANGED
@@ -1,4 +1,4 @@
1
- import { F as s, H as I, b as R, S, a as e, r as o } from "./area.component-BTb4YMjB.js";
1
+ import { F as s, H as I, b as R, S, a as e, r as o } from "./area.component-B85bKRcZ.js";
2
2
  export {
3
3
  s as FINDING_MORTIES,
4
4
  I as HERE_RICKY,
@@ -2,8 +2,8 @@ import { computePosition as j, offset as q, flip as D, shift as T } from "@float
2
2
  import { Subject as R, fromEvent as Y, from as z } from "rxjs";
3
3
  import "lit/directives/class-map.js";
4
4
  import "lit/directives/style-map.js";
5
- import { $ as L } from "./litElement.mixin-7ULqg8XW.js";
6
- import "./tailwind.mixin-qh_Ahoe6.js";
5
+ import { $ as L } from "./litElement.mixin-DzAZO77V.js";
6
+ import "./tailwind.mixin-C0_Bt1Xe.js";
7
7
  import { c as U } from "./ripple-BumgqsDT.js";
8
8
  import { S as N } from "./theme.interface-C5Kj6WjD.js";
9
9
  import { html as B } from "lit";
@@ -186,4 +186,4 @@ let p = class extends L(":host{display:block;border:unset!important;line-height:
186
186
  }
187
187
  };
188
188
  u([$({ type: Boolean })], p.prototype, "required", 2), u([$({ type: String })], p.prototype, "placeholder", 2), u([$({ type: String, reflect: !0 })], p.prototype, "value", 2), u([$({ type: String, reflect: !0 })], p.prototype, "label", 2), u([$({ type: String })], p.prototype, "maxHeight", 2), u([$({ type: Boolean })], p.prototype, "multi", 2), u([F()], p.prototype, "valueLabel", 2), u([P("ul")], p.prototype, "ul", 2), u([P("#empty")], p.prototype, "empty", 2), u([P("#options")], p.prototype, "optionsContainer", 2), u([P("schmancy-input")], p.prototype, "input", 2), u([G({ flatten: !0 })], p.prototype, "options", 2), u([J({ passive: !0 })], p.prototype, "handleOptionClick", 1), p = u([K("schmancy-autocomplete")], p);
189
- //# sourceMappingURL=autocomplete-BMJqXHOb.js.map
189
+ //# sourceMappingURL=autocomplete-JwXoveWr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete-BMJqXHOb.js","sources":["../node_modules/fastest-levenshtein/esm/mod.js","../src/autocomplete/autocomplete.ts"],"sourcesContent":["const peq = new Uint32Array(0x10000);\nconst myers_32 = (a, b) => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)] |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)];\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\nconst myers_x = (b, a) => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\nconst distance = (a, b) => {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n let min_distance = Infinity;\n let min_index = 0;\n for (let i = 0; i < arr.length; i++) {\n const dist = distance(str, arr[i]);\n if (dist < min_distance) {\n min_distance = dist;\n min_index = i;\n }\n }\n return arr[min_index];\n};\nexport { closest, distance };\n","import { computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption, { SchmancyOptionChangeEvent } from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { distance } from 'fastest-levenshtein'\nimport { html } from 'lit'\nimport { customElement, eventOptions, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { from, fromEvent, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, switchMap, takeUntil, tap } from 'rxjs/operators'\nimport { SchmancyInputChangeEvent } from '..'\nimport style from './autocomplete.scss?inline'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n\t@property({ type: Boolean }) required\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String, reflect: true }) value = ''\n\t@property({ type: String, reflect: true }) label = ''\n\t@property({ type: String }) maxHeight = '25vh'\n\t@property({ type: Boolean }) multi = false\n\t@state() valueLabel = ''\n\tinputRef = createRef<HTMLInputElement>()\n\n\t@query('ul') ul!: HTMLUListElement\n\t@query('#empty') empty!: HTMLLIElement\n\t@query('#options') optionsContainer!: HTMLUListElement\n\t@query('schmancy-input') input!: SchmancyInput\n\n\t@queryAssignedElements({ flatten: true }) options!: SchmancyOption[]\n\n\tsearchTerm$ = new Subject<string>()\n\tsearchTermSubscription: any\n\n\tfirstUpdated() {\n\t\tthis.searchTermSubscription = this.searchTerm$\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(term => {\n\t\t\t\t\tconst searchTerm = term.trim().toLowerCase()\n\t\t\t\t\t// ... filter logic ...\n\t\t\t\t\tconst matches = this.options\n\t\t\t\t\t\t.map(option => {\n\t\t\t\t\t\t\tconst optionText = option.label.toLowerCase()\n\t\t\t\t\t\t\tconst levDistance = distance(searchTerm, optionText)\n\t\t\t\t\t\t\treturn { option, levDistance }\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t({ option, levDistance }) =>\n\t\t\t\t\t\t\t\tsearchTerm.length < 3 || levDistance <= option.label.toLowerCase().length - searchTerm.length,\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.sort((a, b) => a.levDistance - b.levDistance)\n\n\t\t\t\t\tthis.empty.hidden = matches\n\t\t\t\t\t\t.map(({ option }) => {\n\t\t\t\t\t\t\toption.hidden = false\n\t\t\t\t\t\t\treturn option\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.some(option => !option.hidden)\n\n\t\t\t\t\tthis.options.forEach(option => {\n\t\t\t\t\t\toption.hidden = !matches.some(match => match.option === option)\n\t\t\t\t\t})\n\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\tfromEvent<FocusEvent>(this, 'focusout')\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tfilter(e => (e.relatedTarget as SchmancyOption)?.tagName !== 'SCHMANCY-OPTION'),\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// --- Native Web Animations API replacement ---\n\t\t\t\t\tconst animation = this.ul.animate(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{ opacity: 1 }, // from\n\t\t\t\t\t\t\t{ opacity: 0 }, // to\n\t\t\t\t\t\t],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// Turn the onfinish callback into a Promise so RxJS can `from(...)` it\n\t\t\t\t\tconst animationPromise = new Promise<void>(resolve => {\n\t\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\t\t// This is where you'd do your cleanup (like onComplete before)\n\t\t\t\t\t\t\tthis.ul?.style.setProperty('display', 'none')\n\t\t\t\t\t\t\tthis.ul?.style.setProperty('opacity', '1')\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\treturn from(animationPromise)\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\t// Once animation completes\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\tthis.inputRef.value?.setAttribute(\n\t\t\t\t\t\t\t'value',\n\t\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t\t.filter(o => o.selected)\n\t\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t\t.join(', '),\n\t\t\t\t\t\t)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.inputRef.value?.setAttribute('value', this.options.find(o => o.value === this.value)?.label ?? '')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\n\t\tthis.updateInputValue()\n\t}\n\n\tupdateInputValue() {\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.multi) {\n\t\t\t\tconst selectedOptions = this.value.split(',').map(v => this.options.find(o => o.value === v)?.label)\n\t\t\t\tthis.input.value = selectedOptions.join(', ')\n\t\t\t} else {\n\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t}\n\t\t})\n\t}\n\n\tasync showOptions() {\n\t\tthis.ul?.removeAttribute('hidden')\n\t\tthis.ul?.style.setProperty('display', 'block')\n\n\t\t// Position the dropdown using Floating UI\n\t\tconst { x, y } = await computePosition(this.input, this.ul, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: [offset(5), flip(), shift({ padding: 5 })],\n\t\t})\n\n\t\tObject.assign(this.ul.style, {\n\t\t\tleft: `${x}px`,\n\t\t\ttop: `${y}px`,\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '9999',\n\t\t\tmaxHeight: this.maxHeight,\n\t\t\toverflowY: 'auto',\n\t\t})\n\t}\n\n\thideOptions() {\n\t\tthis.ul?.setAttribute('hidden', 'true')\n\t\tthis.ul?.style.setProperty('display', 'none')\n\t}\n\n\thandleInputChange(event: SchmancyInputChangeEvent) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tconst term = event.detail.value\n\t\tthis.searchTerm$.next(term)\n\t}\n\n\t@eventOptions({ passive: true })\n\thandleOptionClick(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (option) option.selected = !option.selected\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('change', {\n\t\t\t\t\tdetail: { value: this.options.filter(o => o.selected).map(o => o.value) },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else {\n\t\t\tthis.hideOptions()\n\t\t\tthis.value = value\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('change', {\n\t\t\t\t\tdetail: { value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity()\n\t}\n\n\tpublic checkValidity() {\n\t\treturn this.multi ? this.options.some(o => o.selected) : !!this.value\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-2': true,\n\t\t}\n\t\tconst styles = {\n\t\t\tmaxHeight: this.maxHeight,\n\t\t}\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\tid=\"input\"\n\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t@focus=${this.showOptions}\n\t\t\t\t\t\tclickable\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tinputmode=\"text\"\n\t\t\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\t\t\t@change=${this.handleInputChange}\n\t\t\t\t\t>\n\t\t\t\t\t</schmancy-input>\n\t\t\t\t</slot>\n\t\t\t\t<ul\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tclass=${this.classMap(classes)}\n\t\t\t\t\tstyle=${this.styleMap(styles)}\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\thidden\n\t\t\t\t\t@click=${(e: SchmancyOptionChangeEvent) => {\n\t\t\t\t\t\tthis.handleOptionClick(e.detail.value)\n\t\t\t\t\t}}\n\t\t\t\t\t@touchstart=${this.preventScroll}\n\t\t\t\t\t@touchmove=${this.preventScroll}\n\t\t\t\t\t${color({\n\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t<li id=\"empty\" tabindex=\"-1\">\n\t\t\t\t\t\t<schmancy-typography type=\"label\">No results found</schmancy-typography>\n\t\t\t\t\t</li>\n\t\t\t\t\t<slot\n\t\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\t\t\t\t\t\tthis.updateInputValue()\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n\n\tpreventScroll(event) {\n\t\tconst target = event.target\n\n\t\tif (this.optionsContainer.contains(target)) {\n\t\t\tconst scrollTop = this.optionsContainer.scrollTop\n\t\t\tconst scrollHeight = this.optionsContainer.scrollHeight\n\t\t\tconst offsetHeight = this.optionsContainer.offsetHeight\n\t\t\tconst contentHeight = scrollHeight - offsetHeight\n\n\t\t\tif (\n\t\t\t\t(scrollTop === 0 && event.touches[0].clientY > event.touches[0].clientY) ||\n\t\t\t\t(scrollTop === contentHeight && event.touches[0].clientY < event.touches[0].clientY)\n\t\t\t) {\n\t\t\t\tevent.preventDefault()\n\t\t\t}\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"names":["peq","Uint32Array","distance","a","b","length","tmp","n","m","lst","pv","mv","sc","i","charCodeAt","eq","xv","mhc","phc","hsize","Math","ceil","vsize","j","start","vlen","min","k","pb","mb","xh","ph","mh","score","SchmancyAutocomplete","$LitElement","constructor","super","arguments","this","placeholder","value","label","maxHeight","multi","valueLabel","inputRef","createRef","searchTerm$","Subject","searchTermSubscription","pipe","takeUntil","disconnecting","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","matches","options","map","option","optionText","levDistance","filter","sort","empty","hidden","some","forEach","match","requestUpdate","subscribe","showOptions","fromEvent","e","relatedTarget","tagName","switchMap","animation","ul","animate","opacity","duration","easing","animationPromise","Promise","resolve","onfinish","style","setProperty","from","next","setAttribute","o","selected","join","find","updateInputValue","requestAnimationFrame","selectedOptions","split","v","input","removeAttribute","x","y","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","left","top","position","zIndex","overflowY","hideOptions","event","preventDefault","stopPropagation","detail","dispatchEvent","CustomEvent","bubbles","composed","reportValidity","styles","html","ref","required","handleInputChange","classMap","styleMap","handleOptionClick","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","target","optionsContainer","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","touches","clientY","__decorateClass","property","type","Boolean","prototype","String","reflect","state","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"autocomplete-JwXoveWr.js","sources":["../node_modules/fastest-levenshtein/esm/mod.js","../src/autocomplete/autocomplete.ts"],"sourcesContent":["const peq = new Uint32Array(0x10000);\nconst myers_32 = (a, b) => {\n const n = a.length;\n const m = b.length;\n const lst = 1 << (n - 1);\n let pv = -1;\n let mv = 0;\n let sc = n;\n let i = n;\n while (i--) {\n peq[a.charCodeAt(i)] |= 1 << i;\n }\n for (i = 0; i < m; i++) {\n let eq = peq[b.charCodeAt(i)];\n const xv = eq | mv;\n eq |= ((eq & pv) + pv) ^ pv;\n mv |= ~(eq | pv);\n pv &= eq;\n if (mv & lst) {\n sc++;\n }\n if (pv & lst) {\n sc--;\n }\n mv = (mv << 1) | 1;\n pv = (pv << 1) | ~(xv | mv);\n mv &= xv;\n }\n i = n;\n while (i--) {\n peq[a.charCodeAt(i)] = 0;\n }\n return sc;\n};\nconst myers_x = (b, a) => {\n const n = a.length;\n const m = b.length;\n const mhc = [];\n const phc = [];\n const hsize = Math.ceil(n / 32);\n const vsize = Math.ceil(m / 32);\n for (let i = 0; i < hsize; i++) {\n phc[i] = -1;\n mhc[i] = 0;\n }\n let j = 0;\n for (; j < vsize - 1; j++) {\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n }\n let mv = 0;\n let pv = -1;\n const start = j * 32;\n const vlen = Math.min(32, m - start) + start;\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] |= 1 << k;\n }\n let score = m;\n for (let i = 0; i < n; i++) {\n const eq = peq[a.charCodeAt(i)];\n const pb = (phc[(i / 32) | 0] >>> i) & 1;\n const mb = (mhc[(i / 32) | 0] >>> i) & 1;\n const xv = eq | mv;\n const xh = ((((eq | mb) & pv) + pv) ^ pv) | eq | mb;\n let ph = mv | ~(xh | pv);\n let mh = pv & xh;\n score += (ph >>> (m - 1)) & 1;\n score -= (mh >>> (m - 1)) & 1;\n if ((ph >>> 31) ^ pb) {\n phc[(i / 32) | 0] ^= 1 << i;\n }\n if ((mh >>> 31) ^ mb) {\n mhc[(i / 32) | 0] ^= 1 << i;\n }\n ph = (ph << 1) | pb;\n mh = (mh << 1) | mb;\n pv = mh | ~(xv | ph);\n mv = ph & xv;\n }\n for (let k = start; k < vlen; k++) {\n peq[b.charCodeAt(k)] = 0;\n }\n return score;\n};\nconst distance = (a, b) => {\n if (a.length < b.length) {\n const tmp = b;\n b = a;\n a = tmp;\n }\n if (b.length === 0) {\n return a.length;\n }\n if (a.length <= 32) {\n return myers_32(a, b);\n }\n return myers_x(a, b);\n};\nconst closest = (str, arr) => {\n let min_distance = Infinity;\n let min_index = 0;\n for (let i = 0; i < arr.length; i++) {\n const dist = distance(str, arr[i]);\n if (dist < min_distance) {\n min_distance = dist;\n min_index = i;\n }\n }\n return arr[min_index];\n};\nexport { closest, distance };\n","import { computePosition, flip, offset, shift } from '@floating-ui/dom'\nimport { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport SchmancyInput from '@schmancy/input/input'\nimport SchmancyOption, { SchmancyOptionChangeEvent } from '@schmancy/option/option'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { distance } from 'fastest-levenshtein'\nimport { html } from 'lit'\nimport { customElement, eventOptions, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { from, fromEvent, Subject } from 'rxjs'\nimport { distinctUntilChanged, filter, switchMap, takeUntil, tap } from 'rxjs/operators'\nimport { SchmancyInputChangeEvent } from '..'\nimport style from './autocomplete.scss?inline'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n}>\n\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n\t@property({ type: Boolean }) required\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String, reflect: true }) value = ''\n\t@property({ type: String, reflect: true }) label = ''\n\t@property({ type: String }) maxHeight = '25vh'\n\t@property({ type: Boolean }) multi = false\n\t@state() valueLabel = ''\n\tinputRef = createRef<HTMLInputElement>()\n\n\t@query('ul') ul!: HTMLUListElement\n\t@query('#empty') empty!: HTMLLIElement\n\t@query('#options') optionsContainer!: HTMLUListElement\n\t@query('schmancy-input') input!: SchmancyInput\n\n\t@queryAssignedElements({ flatten: true }) options!: SchmancyOption[]\n\n\tsearchTerm$ = new Subject<string>()\n\tsearchTermSubscription: any\n\n\tfirstUpdated() {\n\t\tthis.searchTermSubscription = this.searchTerm$\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(term => {\n\t\t\t\t\tconst searchTerm = term.trim().toLowerCase()\n\t\t\t\t\t// ... filter logic ...\n\t\t\t\t\tconst matches = this.options\n\t\t\t\t\t\t.map(option => {\n\t\t\t\t\t\t\tconst optionText = option.label.toLowerCase()\n\t\t\t\t\t\t\tconst levDistance = distance(searchTerm, optionText)\n\t\t\t\t\t\t\treturn { option, levDistance }\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t({ option, levDistance }) =>\n\t\t\t\t\t\t\t\tsearchTerm.length < 3 || levDistance <= option.label.toLowerCase().length - searchTerm.length,\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.sort((a, b) => a.levDistance - b.levDistance)\n\n\t\t\t\t\tthis.empty.hidden = matches\n\t\t\t\t\t\t.map(({ option }) => {\n\t\t\t\t\t\t\toption.hidden = false\n\t\t\t\t\t\t\treturn option\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.some(option => !option.hidden)\n\n\t\t\t\t\tthis.options.forEach(option => {\n\t\t\t\t\t\toption.hidden = !matches.some(match => match.option === option)\n\t\t\t\t\t})\n\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showOptions()\n\t\t\t})\n\n\t\tfromEvent<FocusEvent>(this, 'focusout')\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\tfilter(e => (e.relatedTarget as SchmancyOption)?.tagName !== 'SCHMANCY-OPTION'),\n\t\t\t\tswitchMap(() => {\n\t\t\t\t\t// --- Native Web Animations API replacement ---\n\t\t\t\t\tconst animation = this.ul.animate(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{ opacity: 1 }, // from\n\t\t\t\t\t\t\t{ opacity: 0 }, // to\n\t\t\t\t\t\t],\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\t\teasing: 'cubic-bezier(0.5, 0.01, 0.25, 1)',\n\t\t\t\t\t\t},\n\t\t\t\t\t)\n\n\t\t\t\t\t// Turn the onfinish callback into a Promise so RxJS can `from(...)` it\n\t\t\t\t\tconst animationPromise = new Promise<void>(resolve => {\n\t\t\t\t\t\tanimation.onfinish = () => {\n\t\t\t\t\t\t\t// This is where you'd do your cleanup (like onComplete before)\n\t\t\t\t\t\t\tthis.ul?.style.setProperty('display', 'none')\n\t\t\t\t\t\t\tthis.ul?.style.setProperty('opacity', '1')\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\treturn from(animationPromise)\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe({\n\t\t\t\tnext: () => {\n\t\t\t\t\t// Once animation completes\n\t\t\t\t\tif (this.multi) {\n\t\t\t\t\t\tthis.inputRef.value?.setAttribute(\n\t\t\t\t\t\t\t'value',\n\t\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t\t.filter(o => o.selected)\n\t\t\t\t\t\t\t\t.map(o => o.label)\n\t\t\t\t\t\t\t\t.join(', '),\n\t\t\t\t\t\t)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.inputRef.value?.setAttribute('value', this.options.find(o => o.value === this.value)?.label ?? '')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t})\n\n\t\tthis.updateInputValue()\n\t}\n\n\tupdateInputValue() {\n\t\trequestAnimationFrame(() => {\n\t\t\tif (this.multi) {\n\t\t\t\tconst selectedOptions = this.value.split(',').map(v => this.options.find(o => o.value === v)?.label)\n\t\t\t\tthis.input.value = selectedOptions.join(', ')\n\t\t\t} else {\n\t\t\t\tthis.input.value = this.options.find(o => o.value === this.value)?.label ?? ''\n\t\t\t}\n\t\t})\n\t}\n\n\tasync showOptions() {\n\t\tthis.ul?.removeAttribute('hidden')\n\t\tthis.ul?.style.setProperty('display', 'block')\n\n\t\t// Position the dropdown using Floating UI\n\t\tconst { x, y } = await computePosition(this.input, this.ul, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: [offset(5), flip(), shift({ padding: 5 })],\n\t\t})\n\n\t\tObject.assign(this.ul.style, {\n\t\t\tleft: `${x}px`,\n\t\t\ttop: `${y}px`,\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '9999',\n\t\t\tmaxHeight: this.maxHeight,\n\t\t\toverflowY: 'auto',\n\t\t})\n\t}\n\n\thideOptions() {\n\t\tthis.ul?.setAttribute('hidden', 'true')\n\t\tthis.ul?.style.setProperty('display', 'none')\n\t}\n\n\thandleInputChange(event: SchmancyInputChangeEvent) {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tconst term = event.detail.value\n\t\tthis.searchTerm$.next(term)\n\t}\n\n\t@eventOptions({ passive: true })\n\thandleOptionClick(value: string) {\n\t\tif (this.multi) {\n\t\t\tconst option = this.options.find(o => o.value === value)\n\t\t\tif (option) option.selected = !option.selected\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('change', {\n\t\t\t\t\tdetail: { value: this.options.filter(o => o.selected).map(o => o.value) },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} else {\n\t\t\tthis.hideOptions()\n\t\t\tthis.value = value\n\t\t\tthis.updateInputValue()\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('change', {\n\t\t\t\t\tdetail: { value },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity()\n\t}\n\n\tpublic checkValidity() {\n\t\treturn this.multi ? this.options.some(o => o.selected) : !!this.value\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'absolute z-30 mt-1 w-full overflow-auto rounded-md shadow-2': true,\n\t\t}\n\t\tconst styles = {\n\t\t\tmaxHeight: this.maxHeight,\n\t\t}\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\tautocomplete=\"off\"\n\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t${ref(this.inputRef)}\n\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\tid=\"input\"\n\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t@focus=${this.showOptions}\n\t\t\t\t\t\tclickable\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\tinputmode=\"text\"\n\t\t\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\t\t\t@change=${this.handleInputChange}\n\t\t\t\t\t>\n\t\t\t\t\t</schmancy-input>\n\t\t\t\t</slot>\n\t\t\t\t<ul\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tclass=${this.classMap(classes)}\n\t\t\t\t\tstyle=${this.styleMap(styles)}\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\thidden\n\t\t\t\t\t@click=${(e: SchmancyOptionChangeEvent) => {\n\t\t\t\t\t\tthis.handleOptionClick(e.detail.value)\n\t\t\t\t\t}}\n\t\t\t\t\t@touchstart=${this.preventScroll}\n\t\t\t\t\t@touchmove=${this.preventScroll}\n\t\t\t\t\t${color({\n\t\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\t\t})}\n\t\t\t\t>\n\t\t\t\t\t<li id=\"empty\" tabindex=\"-1\">\n\t\t\t\t\t\t<schmancy-typography type=\"label\">No results found</schmancy-typography>\n\t\t\t\t\t</li>\n\t\t\t\t\t<slot\n\t\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\t\tthis.empty.hidden = this.options.some(option => !option.hidden)\n\t\t\t\t\t\t\tthis.updateInputValue()\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t></slot>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n\n\tpreventScroll(event) {\n\t\tconst target = event.target\n\n\t\tif (this.optionsContainer.contains(target)) {\n\t\t\tconst scrollTop = this.optionsContainer.scrollTop\n\t\t\tconst scrollHeight = this.optionsContainer.scrollHeight\n\t\t\tconst offsetHeight = this.optionsContainer.offsetHeight\n\t\t\tconst contentHeight = scrollHeight - offsetHeight\n\n\t\t\tif (\n\t\t\t\t(scrollTop === 0 && event.touches[0].clientY > event.touches[0].clientY) ||\n\t\t\t\t(scrollTop === contentHeight && event.touches[0].clientY < event.touches[0].clientY)\n\t\t\t) {\n\t\t\t\tevent.preventDefault()\n\t\t\t}\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"names":["peq","Uint32Array","distance","a","b","length","tmp","n","m","lst","pv","mv","sc","i","charCodeAt","eq","xv","mhc","phc","hsize","Math","ceil","vsize","j","start","vlen","min","k","pb","mb","xh","ph","mh","score","SchmancyAutocomplete","$LitElement","constructor","super","arguments","this","placeholder","value","label","maxHeight","multi","valueLabel","inputRef","createRef","searchTerm$","Subject","searchTermSubscription","pipe","takeUntil","disconnecting","distinctUntilChanged","tap","term","searchTerm","trim","toLowerCase","matches","options","map","option","optionText","levDistance","filter","sort","empty","hidden","some","forEach","match","requestUpdate","subscribe","showOptions","fromEvent","e","relatedTarget","tagName","switchMap","animation","ul","animate","opacity","duration","easing","animationPromise","Promise","resolve","onfinish","style","setProperty","from","next","setAttribute","o","selected","join","find","updateInputValue","requestAnimationFrame","selectedOptions","split","v","input","removeAttribute","x","y","computePosition","placement","middleware","offset","flip","shift","padding","Object","assign","left","top","position","zIndex","overflowY","hideOptions","event","preventDefault","stopPropagation","detail","dispatchEvent","CustomEvent","bubbles","composed","reportValidity","styles","html","ref","required","handleInputChange","classMap","styleMap","handleOptionClick","preventScroll","color","bgColor","SchmancyTheme","sys","surface","container","target","optionsContainer","contains","scrollTop","contentHeight","scrollHeight","offsetHeight","touches","clientY","__decorateClass","property","type","Boolean","prototype","String","reflect","state","query","queryAssignedElements","flatten","eventOptions","passive","customElement"],"mappings":"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","x_google_ignoreList":[0]}