@mhmo91/schmancy 0.2.104 → 0.2.106

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 (222) hide show
  1. package/dist/{animated-text-DMvZ91Pi.cjs → animated-text-B-gRGTS2.cjs} +2 -2
  2. package/dist/{animated-text-DMvZ91Pi.cjs.map → animated-text-B-gRGTS2.cjs.map} +1 -1
  3. package/dist/{animated-text-Zzonc23y.js → animated-text-gc7T0HLa.js} +3 -3
  4. package/dist/{animated-text-Zzonc23y.js.map → animated-text-gc7T0HLa.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-8AQUkma0.js +119 -0
  9. package/dist/area.component-8AQUkma0.js.map +1 -0
  10. package/dist/area.component-nkE9S6b3.cjs +8 -0
  11. package/dist/area.component-nkE9S6b3.cjs.map +1 -0
  12. package/dist/area.js +1 -1
  13. package/dist/{autocomplete-2xI-YGmY.cjs → autocomplete-Ct3zhedL.cjs} +2 -2
  14. package/dist/{autocomplete-2xI-YGmY.cjs.map → autocomplete-Ct3zhedL.cjs.map} +1 -1
  15. package/dist/{autocomplete-DgPHNNK4.js → autocomplete-DNypXTYG.js} +3 -3
  16. package/dist/{autocomplete-DgPHNNK4.js.map → autocomplete-DNypXTYG.js.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-CKrSzer3.js → checkbox-DxHSWouk.js} +2 -2
  26. package/dist/{checkbox-CKrSzer3.js.map → checkbox-DxHSWouk.js.map} +1 -1
  27. package/dist/{checkbox-Dii2nqhC.cjs → checkbox-VYAzANWi.cjs} +2 -2
  28. package/dist/{checkbox-Dii2nqhC.cjs.map → checkbox-VYAzANWi.cjs.map} +1 -1
  29. package/dist/checkbox.cjs +1 -1
  30. package/dist/checkbox.js +1 -1
  31. package/dist/{chips-BRgVxSAK.js → chips-CR5QTRYd.js} +3 -3
  32. package/dist/{chips-BRgVxSAK.js.map → chips-CR5QTRYd.js.map} +1 -1
  33. package/dist/{chips-oAoJx3xK.cjs → chips-SxuwP65D.cjs} +2 -2
  34. package/dist/{chips-oAoJx3xK.cjs.map → chips-SxuwP65D.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-CrgRRdGS.cjs → date-range-BKcjHwBs.cjs} +2 -2
  42. package/dist/{date-range-CrgRRdGS.cjs.map → date-range-BKcjHwBs.cjs.map} +1 -1
  43. package/dist/{date-range-B8lM-Gwr.js → date-range-CUnECMbS.js} +3 -3
  44. package/dist/{date-range-B8lM-Gwr.js.map → date-range-CUnECMbS.js.map} +1 -1
  45. package/dist/date-range.cjs +1 -1
  46. package/dist/date-range.js +1 -1
  47. package/dist/{delay-DyWOCKIu.js → delay-6t2zn7t4.js} +2 -2
  48. package/dist/{delay-DyWOCKIu.js.map → delay-6t2zn7t4.js.map} +1 -1
  49. package/dist/{delay-DORzS-xz.cjs → delay-DE7SE2Lx.cjs} +2 -2
  50. package/dist/{delay-DORzS-xz.cjs.map → delay-DE7SE2Lx.cjs.map} +1 -1
  51. package/dist/delay.cjs +1 -1
  52. package/dist/delay.js +1 -1
  53. package/dist/{divider-BQK0_zpf.js → divider-CdjlZINp.js} +3 -3
  54. package/dist/{divider-BQK0_zpf.js.map → divider-CdjlZINp.js.map} +1 -1
  55. package/dist/{divider-AD7B5zhm.cjs → divider-DZ_aPVkO.cjs} +2 -2
  56. package/dist/{divider-AD7B5zhm.cjs.map → divider-DZ_aPVkO.cjs.map} +1 -1
  57. package/dist/divider.cjs +1 -1
  58. package/dist/divider.js +1 -1
  59. package/dist/{flex-CZr7oQ9Y.cjs → flex-BONU-PFy.cjs} +2 -2
  60. package/dist/{flex-CZr7oQ9Y.cjs.map → flex-BONU-PFy.cjs.map} +1 -1
  61. package/dist/{flex-CgyFcRT6.js → flex-CxlUwIat.js} +2 -2
  62. package/dist/{flex-CgyFcRT6.js.map → flex-CxlUwIat.js.map} +1 -1
  63. package/dist/{form-gVJ0RRu0.cjs → form-CD_4LDVO.cjs} +2 -2
  64. package/dist/{form-gVJ0RRu0.cjs.map → form-CD_4LDVO.cjs.map} +1 -1
  65. package/dist/{form-Cid-0MaA.js → form-CRprmM0w.js} +2 -2
  66. package/dist/{form-Cid-0MaA.js.map → form-CRprmM0w.js.map} +1 -1
  67. package/dist/form.cjs +1 -1
  68. package/dist/form.js +1 -1
  69. package/dist/{icon-BPuovSPn.cjs → icon-CHArNkiO.cjs} +2 -2
  70. package/dist/{icon-BPuovSPn.cjs.map → icon-CHArNkiO.cjs.map} +1 -1
  71. package/dist/{icon-button-Cb44AXI8.cjs → icon-button-Bj7wtydv.cjs} +2 -2
  72. package/dist/{icon-button-Cb44AXI8.cjs.map → icon-button-Bj7wtydv.cjs.map} +1 -1
  73. package/dist/{icon-button-HBCK5RRi.js → icon-button-DtoWe88O.js} +3 -3
  74. package/dist/{icon-button-HBCK5RRi.js.map → icon-button-DtoWe88O.js.map} +1 -1
  75. package/dist/{icon-wGj9VX16.js → icon-rVYBp2x-.js} +3 -3
  76. package/dist/{icon-wGj9VX16.js.map → icon-rVYBp2x-.js.map} +1 -1
  77. package/dist/icons.cjs +1 -1
  78. package/dist/icons.js +1 -1
  79. package/dist/index.cjs +1 -1
  80. package/dist/index.js +33 -33
  81. package/dist/{input-yQZmwfun.js → input-Ctt6mtZc.js} +6 -6
  82. package/dist/{input-yQZmwfun.js.map → input-Ctt6mtZc.js.map} +1 -1
  83. package/dist/{input-C8b7bCcP.cjs → input-jRmXX3rp.cjs} +4 -4
  84. package/dist/{input-C8b7bCcP.cjs.map → input-jRmXX3rp.cjs.map} +1 -1
  85. package/dist/input.cjs +1 -1
  86. package/dist/input.js +1 -1
  87. package/dist/layout.cjs +1 -1
  88. package/dist/layout.js +1 -1
  89. package/dist/{list-D230Vky3.js → list-6C-kQqCi.js} +2 -2
  90. package/dist/{list-D230Vky3.js.map → list-6C-kQqCi.js.map} +1 -1
  91. package/dist/{list-80LJZy4q.cjs → list-BZ55pU5L.cjs} +2 -2
  92. package/dist/{list-80LJZy4q.cjs.map → list-BZ55pU5L.cjs.map} +1 -1
  93. package/dist/list.cjs +1 -1
  94. package/dist/list.js +1 -1
  95. package/dist/{litElement.mixin-DA1nq3OE.cjs → litElement.mixin-9sOZ1KTq.cjs} +2 -2
  96. package/dist/{litElement.mixin-DA1nq3OE.cjs.map → litElement.mixin-9sOZ1KTq.cjs.map} +1 -1
  97. package/dist/{litElement.mixin-DIIXFwwy.js → litElement.mixin-B43tuAsM.js} +2 -2
  98. package/dist/{litElement.mixin-DIIXFwwy.js.map → litElement.mixin-B43tuAsM.js.map} +1 -1
  99. package/dist/{menu-D_sTXBbO.cjs → menu-Bd6Yleqx.cjs} +2 -2
  100. package/dist/{menu-D_sTXBbO.cjs.map → menu-Bd6Yleqx.cjs.map} +1 -1
  101. package/dist/{menu-9q6mbHaG.js → menu-D0izP8_9.js} +3 -3
  102. package/dist/{menu-9q6mbHaG.js.map → menu-D0izP8_9.js.map} +1 -1
  103. package/dist/menu.cjs +1 -1
  104. package/dist/menu.js +1 -1
  105. package/dist/nav-drawer.cjs +1 -1
  106. package/dist/nav-drawer.js +1 -1
  107. package/dist/notification.cjs +1 -1
  108. package/dist/notification.js +1 -1
  109. package/dist/{option-CzgSfsqO.cjs → option-CLhNC_i9.cjs} +2 -2
  110. package/dist/{option-CzgSfsqO.cjs.map → option-CLhNC_i9.cjs.map} +1 -1
  111. package/dist/{option-OVXvZzXX.js → option-CxIpiUcJ.js} +2 -2
  112. package/dist/{option-OVXvZzXX.js.map → option-CxIpiUcJ.js.map} +1 -1
  113. package/dist/option.cjs +1 -1
  114. package/dist/option.js +1 -1
  115. package/dist/{outlet-DT80LcoZ.js → outlet-B16Pt3na.js} +2 -2
  116. package/dist/{outlet-DT80LcoZ.js.map → outlet-B16Pt3na.js.map} +1 -1
  117. package/dist/{outlet-C7rjq28x.cjs → outlet-CT1apG_R.cjs} +2 -2
  118. package/dist/{outlet-C7rjq28x.cjs.map → outlet-CT1apG_R.cjs.map} +1 -1
  119. package/dist/{payment-card-form-Cxw8K4Bz.js → payment-card-form-BwmcjAMM.js} +3 -3
  120. package/dist/{payment-card-form-Cxw8K4Bz.js.map → payment-card-form-BwmcjAMM.js.map} +1 -1
  121. package/dist/{payment-card-form--b3A-llt.cjs → payment-card-form-CQB_MKO_.cjs} +2 -2
  122. package/dist/{payment-card-form--b3A-llt.cjs.map → payment-card-form-CQB_MKO_.cjs.map} +1 -1
  123. package/dist/{radio-group-DYCBFhJg.js → radio-group-BvtrNylW.js} +2 -2
  124. package/dist/{radio-group-DYCBFhJg.js.map → radio-group-BvtrNylW.js.map} +1 -1
  125. package/dist/{radio-group-Bby3q70w.cjs → radio-group-BwJ-r3hy.cjs} +2 -2
  126. package/dist/{radio-group-Bby3q70w.cjs.map → radio-group-BwJ-r3hy.cjs.map} +1 -1
  127. package/dist/radio-group.cjs +1 -1
  128. package/dist/radio-group.js +1 -1
  129. package/dist/{select-BEP8d8b_.js → select-D6nFemFx.js} +3 -3
  130. package/dist/{select-BEP8d8b_.js.map → select-D6nFemFx.js.map} +1 -1
  131. package/dist/{select-BLjr99KM.cjs → select-DOTwG1aT.cjs} +2 -2
  132. package/dist/{select-BLjr99KM.cjs.map → select-DOTwG1aT.cjs.map} +1 -1
  133. package/dist/select.cjs +1 -1
  134. package/dist/select.js +1 -1
  135. package/dist/{sheet-oAe0B1jm.cjs → sheet-C_gzbR0e.cjs} +2 -2
  136. package/dist/{sheet-oAe0B1jm.cjs.map → sheet-C_gzbR0e.cjs.map} +1 -1
  137. package/dist/{sheet-BzcToxel.js → sheet-Y-ULBa4y.js} +3 -3
  138. package/dist/{sheet-BzcToxel.js.map → sheet-Y-ULBa4y.js.map} +1 -1
  139. package/dist/sheet.cjs +1 -1
  140. package/dist/sheet.js +1 -1
  141. package/dist/{slider-BAcT1aNo.js → slider-CFLiNdqN.js} +3 -3
  142. package/dist/{slider-BAcT1aNo.js.map → slider-CFLiNdqN.js.map} +1 -1
  143. package/dist/{slider-7tOxo-JN.cjs → slider-uzR2YTuo.cjs} +2 -2
  144. package/dist/{slider-7tOxo-JN.cjs.map → slider-uzR2YTuo.cjs.map} +1 -1
  145. package/dist/slider.cjs +1 -1
  146. package/dist/slider.js +1 -1
  147. package/dist/{spinner-BWLmpEe4.js → spinner-Ca50o0jU.js} +3 -3
  148. package/dist/{spinner-BWLmpEe4.js.map → spinner-Ca50o0jU.js.map} +1 -1
  149. package/dist/{spinner-C5tyUoUH.cjs → spinner-DisHMwJU.cjs} +2 -2
  150. package/dist/{spinner-C5tyUoUH.cjs.map → spinner-DisHMwJU.cjs.map} +1 -1
  151. package/dist/{surface-BHw-E4Ns.js → surface-D_qD1cZj.js} +2 -2
  152. package/dist/{surface-BHw-E4Ns.js.map → surface-D_qD1cZj.js.map} +1 -1
  153. package/dist/{surface-DQzIpP6p.cjs → surface-jiFO8Fq-.cjs} +2 -2
  154. package/dist/{surface-DQzIpP6p.cjs.map → surface-jiFO8Fq-.cjs.map} +1 -1
  155. package/dist/surface.cjs +1 -1
  156. package/dist/surface.js +1 -1
  157. package/dist/{table-svmLYHeN.cjs → table-B2-vIMmg.cjs} +2 -2
  158. package/dist/{table-svmLYHeN.cjs.map → table-B2-vIMmg.cjs.map} +1 -1
  159. package/dist/{table-CoqnMB3v.js → table-QyTaL_m4.js} +2 -2
  160. package/dist/{table-CoqnMB3v.js.map → table-QyTaL_m4.js.map} +1 -1
  161. package/dist/table.cjs +1 -1
  162. package/dist/table.js +1 -1
  163. package/dist/{tabs-group-BpRky0TZ.js → tabs-group-CWM0kWDK.js} +2 -2
  164. package/dist/{tabs-group-BpRky0TZ.js.map → tabs-group-CWM0kWDK.js.map} +1 -1
  165. package/dist/{tabs-group-1zlDT88I.cjs → tabs-group-DIkk0A7J.cjs} +2 -2
  166. package/dist/{tabs-group-1zlDT88I.cjs.map → tabs-group-DIkk0A7J.cjs.map} +1 -1
  167. package/dist/tabs.cjs +1 -1
  168. package/dist/tabs.js +1 -1
  169. package/dist/tailwind.mixin-DFM3jd9q.cjs +2 -0
  170. package/dist/{tailwind.mixin-BCq9pcGg.cjs.map → tailwind.mixin-DFM3jd9q.cjs.map} +1 -1
  171. package/dist/{tailwind.mixin-CXbUcwTo.js → tailwind.mixin-ECkyl80C.js} +2 -2
  172. package/dist/{tailwind.mixin-CXbUcwTo.js.map → tailwind.mixin-ECkyl80C.js.map} +1 -1
  173. package/dist/teleport.cjs +1 -1
  174. package/dist/{teleport.component-DL_aASxo.cjs → teleport.component-BokvDfBn.cjs} +2 -2
  175. package/dist/{teleport.component-DL_aASxo.cjs.map → teleport.component-BokvDfBn.cjs.map} +1 -1
  176. package/dist/{teleport.component-fFlS00qb.js → teleport.component-CDsX-2Mg.js} +35 -35
  177. package/dist/{teleport.component-fFlS00qb.js.map → teleport.component-CDsX-2Mg.js.map} +1 -1
  178. package/dist/teleport.js +1 -1
  179. package/dist/{textarea-ChIWzFaU.js → textarea-BMSNswLn.js} +2 -2
  180. package/dist/{textarea-ChIWzFaU.js.map → textarea-BMSNswLn.js.map} +1 -1
  181. package/dist/{textarea-hCVSw5xF.cjs → textarea-hbpsxkKy.cjs} +2 -2
  182. package/dist/{textarea-hCVSw5xF.cjs.map → textarea-hbpsxkKy.cjs.map} +1 -1
  183. package/dist/textarea.cjs +1 -1
  184. package/dist/textarea.js +1 -1
  185. package/dist/{theme-button-DpWfaCzm.js → theme-button-BoAxkMWO.js} +2 -2
  186. package/dist/{theme-button-DpWfaCzm.js.map → theme-button-BoAxkMWO.js.map} +1 -1
  187. package/dist/{theme-button-0_Dyv3N3.cjs → theme-button-CsWs0AS9.cjs} +2 -2
  188. package/dist/{theme-button-0_Dyv3N3.cjs.map → theme-button-CsWs0AS9.cjs.map} +1 -1
  189. package/dist/theme-button.cjs +1 -1
  190. package/dist/theme-button.js +1 -1
  191. package/dist/theme.cjs +1 -1
  192. package/dist/{theme.component-CafBed3r.js → theme.component-BIjHKguL.js} +2 -2
  193. package/dist/{theme.component-CafBed3r.js.map → theme.component-BIjHKguL.js.map} +1 -1
  194. package/dist/{theme.component-B3Bkeuj8.cjs → theme.component-BYbrrqK3.cjs} +2 -2
  195. package/dist/{theme.component-B3Bkeuj8.cjs.map → theme.component-BYbrrqK3.cjs.map} +1 -1
  196. package/dist/theme.js +1 -1
  197. package/dist/{tree-dGVAUSaR.cjs → tree-OqMXhWak.cjs} +2 -2
  198. package/dist/{tree-dGVAUSaR.cjs.map → tree-OqMXhWak.cjs.map} +1 -1
  199. package/dist/{tree-CWoVwnF3.js → tree-YkLiYcr_.js} +2 -2
  200. package/dist/{tree-CWoVwnF3.js.map → tree-YkLiYcr_.js.map} +1 -1
  201. package/dist/tree.cjs +1 -1
  202. package/dist/tree.js +1 -1
  203. package/dist/{typewriter-CJHUghKa.cjs → typewriter-CAmStzUa.cjs} +2 -2
  204. package/dist/{typewriter-CJHUghKa.cjs.map → typewriter-CAmStzUa.cjs.map} +1 -1
  205. package/dist/{typewriter-B7vPiHXT.js → typewriter-SgYEA2OC.js} +4 -4
  206. package/dist/{typewriter-B7vPiHXT.js.map → typewriter-SgYEA2OC.js.map} +1 -1
  207. package/dist/typewriter.cjs +1 -1
  208. package/dist/typewriter.js +1 -1
  209. package/dist/{typography-DFkEsBL_.js → typography-BXJ-xs12.js} +2 -2
  210. package/dist/{typography-DFkEsBL_.js.map → typography-BXJ-xs12.js.map} +1 -1
  211. package/dist/{typography-BmwF96eo.cjs → typography-CMNtjzZE.cjs} +2 -2
  212. package/dist/{typography-BmwF96eo.cjs.map → typography-CMNtjzZE.cjs.map} +1 -1
  213. package/dist/typography.cjs +1 -1
  214. package/dist/typography.js +1 -1
  215. package/package.json +1 -1
  216. package/types/src/area/area.component.d.ts +64 -4
  217. package/types/src/area/router.types.d.ts +1 -1
  218. package/dist/area.component-B1dh2oPl.js +0 -107
  219. package/dist/area.component-B1dh2oPl.js.map +0 -1
  220. package/dist/area.component-u1833ygY.cjs +0 -8
  221. package/dist/area.component-u1833ygY.cjs.map +0 -1
  222. package/dist/tailwind.mixin-BCq9pcGg.cjs +0 -2
@@ -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-DA1nq3OE.cjs");require("./tailwind.mixin-BCq9pcGg.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-9sOZ1KTq.cjs");require("./tailwind.mixin-DFM3jd9q.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-DMvZ91Pi.cjs.map
37
+ //# sourceMappingURL=animated-text-B-gRGTS2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"animated-text-DMvZ91Pi.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
+ {"version":3,"file":"animated-text-B-gRGTS2.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-DIIXFwwy.js";
5
- import "./tailwind.mixin-CXbUcwTo.js";
4
+ import { $ as x } from "./litElement.mixin-B43tuAsM.js";
5
+ import "./tailwind.mixin-ECkyl80C.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-Zzonc23y.js.map
75
+ //# sourceMappingURL=animated-text-gc7T0HLa.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"animated-text-Zzonc23y.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-gc7T0HLa.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-DMvZ91Pi.cjs");
1
+ "use strict";require("./animated-text-B-gRGTS2.cjs");
2
2
  //# sourceMappingURL=animated-text.cjs.map
@@ -1,2 +1,2 @@
1
- import "./animated-text-Zzonc23y.js";
1
+ import "./animated-text-gc7T0HLa.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-u1833ygY.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-nkE9S6b3.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
@@ -0,0 +1,119 @@
1
+ import { Subject as I, ReplaySubject as E, zip as b, fromEvent as C, of as i, map as a, bufferTime as N, tap as u, timeout as v, catchError as g, EMPTY as P, filter as f, merge as O, switchMap as y, take as F, takeUntil as w, distinctUntilChanged as R, from as U } from "rxjs";
2
+ import "lit/directives/class-map.js";
3
+ import "lit/directives/style-map.js";
4
+ import { $ as M } from "./litElement.mixin-B43tuAsM.js";
5
+ import "./tailwind.mixin-ECkyl80C.js";
6
+ import { css as T, html as L } from "lit";
7
+ import { property as S, customElement as $ } from "lit/decorators.js";
8
+ import { l as J } from "./index-CuY8m6ta.js";
9
+ const B = new I(), x = "FINDING_MORTIES", k = "HERE_RICKY";
10
+ class p {
11
+ constructor() {
12
+ this.prettyURL = !1, this.mode = "HISTORY", this.request = new E(1), this.current = /* @__PURE__ */ new Map(), this.$current = new E(1), this.enableHistoryMode = !0, this.findingMortiesEvent = new CustomEvent(x), this.$current.next(this.current);
13
+ }
14
+ find() {
15
+ return b([C(window, k).pipe(a((t) => t.detail), N(0), u(console.log)), i(1).pipe(u(() => window.dispatchEvent(this.findingMortiesEvent)))]).pipe(a(([t]) => t), v(1));
16
+ }
17
+ push(t) {
18
+ this.request.next(t);
19
+ }
20
+ pop(t) {
21
+ const n = JSON.parse(JSON.stringify(m.state));
22
+ delete n[t], history.replaceState(null, "", encodeURIComponent(JSON.stringify(n)));
23
+ }
24
+ static getInstance() {
25
+ return p.instance || (p.instance = new p()), p.instance;
26
+ }
27
+ get state() {
28
+ const t = location.pathname.split("/").pop();
29
+ let n = {};
30
+ try {
31
+ n = t ? JSON.parse(decodeURIComponent(t)) : {};
32
+ } catch {
33
+ n = {};
34
+ }
35
+ return n;
36
+ }
37
+ }
38
+ const m = p.getInstance();
39
+ var h = ((e) => (e.push = "push", e.replace = "replace", e.pop = "pop", e.silent = "silent", e))(h || {}), q = Object.defineProperty, A = Object.getOwnPropertyDescriptor, l = (e, t, n, o) => {
40
+ for (var r, s = o > 1 ? void 0 : o ? A(t, n) : t, d = e.length - 1; d >= 0; d--) (r = e[d]) && (s = (o ? r(t, n, s) : r(s)) || s);
41
+ return o && s && q(t, n, s), s;
42
+ };
43
+ let c = class extends M(T`
44
+ :host {
45
+ position: relative;
46
+ display: block;
47
+ inset: 0;
48
+ }
49
+ `) {
50
+ constructor() {
51
+ super(...arguments), this.mappings = [];
52
+ }
53
+ getComponentFromMappings(e, t) {
54
+ return i(location.pathname).pipe(a((n) => {
55
+ const o = e.find((s) => s.pathname === n);
56
+ if (!o) throw new Error(`No mapping found for pathname: ${n}`);
57
+ const r = o.routes.find((s) => s.area === this.name);
58
+ if (!r) throw new Error(`No route found for area: ${this.name} in pathname: ${n}`);
59
+ return r;
60
+ }), a((n) => ({ area: this.name, component: n.component || this.default, state: n.state, historyStrategy: t })), g(() => this.default ? i({ area: this.name, component: this.default, historyStrategy: t }) : P));
61
+ }
62
+ getComponentFromPathname(e, t) {
63
+ return i(e).pipe(a((n) => n.split("/").pop() ?? ""), a((n) => decodeURIComponent(n)), a((n) => JSON.parse(n)), a((n) => n[this.name]), a((n) => !n && this.default ? { component: this.default, state: void 0 } : n), f((n) => J.isPresent(n)), a((n) => ({ area: this.name, component: n.component ?? this.default, state: n.state, historyStrategy: t })), a((n) => n), g(() => this.default ? i({ area: this.name, component: this.default, historyStrategy: t }) : P));
64
+ }
65
+ firstUpdated() {
66
+ if (!this.name) throw new Error("Area name or default component not set");
67
+ O(i(location.pathname).pipe(y((e) => this.mappings && this.mappings.length ? this.getComponentFromMappings(this.mappings, h.silent) : this.getComponentFromPathname(e, h.silent)), F(1)), m.request.pipe(f(({ area: e }) => e === this.name)), C(window, "popstate").pipe(a((e) => e.target.location.pathname), y((e) => this.mappings && this.mappings.length ? this.getComponentFromMappings(this.mappings, h.silent) : this.getComponentFromPathname(e, h.silent)))).pipe(f((e) => !!e.component), w(this.disconnecting), R((e, t) => {
68
+ let n, o;
69
+ return typeof e.component != "function" && (typeof e.component == "string" && (n = e.component), typeof t.component != "function" && (typeof t.component == "string" && (o = t.component), (o == null ? void 0 : o.replaceAll("-", "").toLowerCase()) === (n == null ? void 0 : n.replaceAll("-", "").toLowerCase())));
70
+ })).pipe(y((e) => {
71
+ const t = e.component;
72
+ return t instanceof Promise ? U(t).pipe(a((n) => ({ component: n.exports.default, route: e }))) : i({ component: t, route: e });
73
+ }), a(({ component: e, route: t }) => typeof e == "string" ? { component: document.createElement(e), route: t } : e instanceof HTMLElement ? { component: e, route: t } : typeof e == "function" ? { component: new e(), route: t } : void 0), R((e, t) => e.component.tagName === t.component.tagName), a(({ component: e, route: t }) => {
74
+ var r, s;
75
+ const n = (r = this.shadowRoot) == null ? void 0 : r.children[0], o = !!n;
76
+ return n.remove(), e.classList.add("opacity-0"), (s = this.shadowRoot) == null || s.append(e), e.animate([{ opacity: 0 }, { opacity: 1 }], { duration: o ? 150 : 100, easing: "cubic-bezier(0.25, 0.8, 0.25, 1)", fill: "forwards" }), { component: e, route: t };
77
+ }), u(({ component: e, route: t }) => {
78
+ t.historyStrategy === void 0 || t.historyStrategy === "push" ? history.pushState(t.state, "", this.newPath(e.tagName, t)) : t.historyStrategy && ["replace", "pop"].includes(t.historyStrategy) && history.replaceState(t.state, "", this.newPath(e.tagName, t)), m.current.set(this.name, { component: e.tagName, state: t.state, area: this.name }), m.$current.next(m.current);
79
+ }), w(this.disconnecting)).subscribe();
80
+ }
81
+ newPath(e, t) {
82
+ const n = location.pathname.split("/").pop();
83
+ let o = {};
84
+ try {
85
+ o = n ? JSON.parse(decodeURIComponent(n)) : {};
86
+ } catch {
87
+ o = {};
88
+ }
89
+ t.state = t.state ?? {};
90
+ const r = t.clearQueryParams ? this.queryParamClear(t.clearQueryParams) : document.location.search;
91
+ return encodeURIComponent(JSON.stringify({ ...o, [this.name]: { component: e.toLowerCase(), state: t.state } })).concat(`${r}`);
92
+ }
93
+ queryParamClear(e) {
94
+ if (!e) return "";
95
+ const t = new URLSearchParams(location.search);
96
+ return e.forEach((n) => t.delete(n)), t.toString() === "" ? "" : `?${t.toString()}`;
97
+ }
98
+ checkForTeleportationRequests() {
99
+ return C(window, "FLIP_REQUEST").pipe(a((e) => e.detail), N(0), u(() => {
100
+ this.dispatchEvent(new CustomEvent("FLIP_STARTED"));
101
+ }), w(this.disconnecting), v(0), g(() => i(null)));
102
+ }
103
+ disconnectedCallback() {
104
+ super.disconnectedCallback(), this.disconnecting.next(!0);
105
+ }
106
+ render() {
107
+ return L` <slot> </slot> `;
108
+ }
109
+ };
110
+ l([S()], c.prototype, "name", 2), l([S()], c.prototype, "default", 2), l([S({ type: Array })], c.prototype, "mappings", 2), c = l([$("schmancy-area")], c);
111
+ export {
112
+ x as F,
113
+ k as H,
114
+ c as S,
115
+ m as a,
116
+ h as b,
117
+ B as r
118
+ };
119
+ //# sourceMappingURL=area.component-8AQUkma0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"area.component-8AQUkma0.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 | HTMLElement\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\n/**\n * Type describing the route for an area.\n */\ntype TRouteArea = {\n\tcomponent: string\n\tstate: object | undefined\n}\n\n/**\n * Type for a mapping entry. Each mapping specifies a pathname and an array of route definitions.\n * Each route definition contains an area name, a component (or promise/constructor/template),\n * and optionally, a state.\n */\nexport type AreaPathnames = {\n\tpathname: string\n\troutes: Array<{\n\t\tarea: string\n\t\tcomponent: string | Promise<NodeModule> | CustomElementConstructor | TemplateResult<1>\n\t\tstate?: object\n\t}>\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/**\n\t * The default component to use if no matching route is found.\n\t */\n\t@property() default!: string | Promise<NodeModule> | CustomElementConstructor | TemplateResult<1>\n\n\t/**\n\t * An optional array of route mappings that can be passed into the component.\n\t * Each mapping specifies a pathname and an array of routes mapping area names to components.\n\t *\n\t * Example:\n\t * [\n\t * {\n\t * pathname: '/home',\n\t * routes: [\n\t * { area: 'main', component: 'home-view', state: { foo: 'bar' } },\n\t * { area: 'sidebar', component: 'menu-view' }\n\t * ]\n\t * },\n\t * {\n\t * pathname: '/about',\n\t * routes: [\n\t * { area: 'main', component: 'about-view' },\n\t * { area: 'sidebar', component: 'info-view' }\n\t * ]\n\t * }\n\t * ]\n\t */\n\t@property({ type: Array })\n\tmappings: AreaPathnames[] = []\n\n\t/**\n\t * New API: Returns an observable emitting a RouteAction based on the passed mappings.\n\t *\n\t * It looks for a mapping that matches the current location’s pathname, then selects\n\t * the route whose area matches this component’s name.\n\t *\n\t * @param mappings - Array of route mapping objects.\n\t * @param historyStrategy - The history strategy to use (e.g. PUSH, REPLACE, SILENT).\n\t * @returns An RxJS Observable that emits a RouteAction.\n\t */\n\tpublic getComponentFromMappings(mappings: AreaPathnames[], historyStrategy: HISTORY_STRATEGY) {\n\t\treturn of(location.pathname).pipe(\n\t\t\tmap(currentPath => {\n\t\t\t\tconst mapping = mappings.find(m => m.pathname === currentPath)\n\t\t\t\tif (!mapping) {\n\t\t\t\t\tthrow new Error(`No mapping found for pathname: ${currentPath}`)\n\t\t\t\t}\n\t\t\t\tconst routeForArea = mapping.routes.find(route => route.area === this.name)\n\t\t\t\tif (!routeForArea) {\n\t\t\t\t\tthrow new Error(`No route found for area: ${this.name} in pathname: ${currentPath}`)\n\t\t\t\t}\n\t\t\t\treturn routeForArea\n\t\t\t}),\n\t\t\tmap(\n\t\t\t\troute =>\n\t\t\t\t\t({\n\t\t\t\t\t\tarea: this.name,\n\t\t\t\t\t\tcomponent: route.component || this.default,\n\t\t\t\t\t\tstate: route.state,\n\t\t\t\t\t\thistoryStrategy,\n\t\t\t\t\t}) as RouteAction,\n\t\t\t),\n\t\t\tcatchError(() =>\n\t\t\t\tthis.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\t/**\n\t * Existing API: Returns an observable that emits a RouteAction based on the provided pathname.\n\t *\n\t * @param pathname - Pathname from the browser location API.\n\t * @param historyStrategy - The history strategy to use for the route (PUSH, REPLACE, SILENT).\n\t * @returns An observable emitting the RouteAction.\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// TODO: 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// The route resolution now checks for a non-empty mappings property.\n\t\t// If mappings are provided, they override the normal parsing logic for the current URL.\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 => {\n\t\t\t\t\tif (this.mappings && this.mappings.length) {\n\t\t\t\t\t\treturn this.getComponentFromMappings(this.mappings, HISTORY_STRATEGY.silent)\n\t\t\t\t\t}\n\t\t\t\t\treturn this.getComponentFromPathname(pathname, HISTORY_STRATEGY.silent)\n\t\t\t\t}),\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 => {\n\t\t\t\t\tif (this.mappings && this.mappings.length) {\n\t\t\t\t\t\treturn this.getComponentFromMappings(this.mappings, HISTORY_STRATEGY.silent)\n\t\t\t\t\t}\n\t\t\t\t\treturn this.getComponentFromPathname(pathname, HISTORY_STRATEGY.silent)\n\t\t\t\t}),\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(\n\t\t\t\t\t\t\tmap(x => ({\n\t\t\t\t\t\t\t\tcomponent: x.exports.default as CustomElementConstructor,\n\t\t\t\t\t\t\t\troute,\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t)\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\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\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\t/**\n\t * Computes a new URL path for the given component and route.\n\t */\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\t/**\n\t * Removes specified query parameters from the current URL.\n\t */\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\tif (urlParams.toString() === '') return ''\n\t\treturn `?${urlParams.toString()}`\n\t}\n\n\t/**\n\t * Checks for teleportation requests (FLIP_REQUEST events) and dispatches a FLIP_STARTED event.\n\t */\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","super","arguments","mappings","historyStrategy","currentPath","mapping","m","Error","routeForArea","routes","route","default","catchError","EMPTY","path","filter","x","isPresent","firstUpdated","merge","switchMap","length","getComponentFromMappings","silent","getComponentFromPathname","take","target","takeUntil","disconnecting","distinctUntilChanged","a","b","aComponent","bComponent","replaceAll","toLowerCase","c","Promise","from","exports","t","o","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","disconnectedCallback","render","html","__decorateClass","property","prototype","type","Array","customElement"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ "use strict";const t=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const y=require("./litElement.mixin-9sOZ1KTq.cjs");require("./tailwind.mixin-DFM3jd9q.cjs");const l=require("lit"),m=require("lit/decorators.js"),g=require("./index-DyJ0oDpR.cjs"),S=new t.Subject,d="FINDING_MORTIES",f="HERE_RICKY";class c{constructor(){this.prettyURL=!1,this.mode="HISTORY",this.request=new t.ReplaySubject(1),this.current=new Map,this.$current=new t.ReplaySubject(1),this.enableHistoryMode=!0,this.findingMortiesEvent=new CustomEvent(d),this.$current.next(this.current)}find(){return t.zip([t.fromEvent(window,f).pipe(t.map(e=>e.detail),t.bufferTime(0),t.tap(console.log)),t.of(1).pipe(t.tap(()=>window.dispatchEvent(this.findingMortiesEvent)))]).pipe(t.map(([e])=>e),t.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 c.instance||(c.instance=new c),c.instance}get state(){const e=location.pathname.split("/").pop();let o={};try{o=e?JSON.parse(decodeURIComponent(e)):{}}catch{o={}}return o}}const s=c.getInstance();var p=(n=>(n.push="push",n.replace="replace",n.pop="pop",n.silent="silent",n))(p||{}),w=Object.defineProperty,E=Object.getOwnPropertyDescriptor,h=(n,e,o,a)=>{for(var i,r=a>1?void 0:a?E(e,o):e,u=n.length-1;u>=0;u--)(i=n[u])&&(r=(a?i(e,o,r):i(r))||r);return a&&r&&w(e,o,r),r};exports.SchmancyArea=class extends y.$LitElement(l.css`
2
+ :host {
3
+ position: relative;
4
+ display: block;
5
+ inset: 0;
6
+ }
7
+ `){constructor(){super(...arguments),this.mappings=[]}getComponentFromMappings(n,e){return t.of(location.pathname).pipe(t.map(o=>{const a=n.find(r=>r.pathname===o);if(!a)throw new Error(`No mapping found for pathname: ${o}`);const i=a.routes.find(r=>r.area===this.name);if(!i)throw new Error(`No route found for area: ${this.name} in pathname: ${o}`);return i}),t.map(o=>({area:this.name,component:o.component||this.default,state:o.state,historyStrategy:e})),t.catchError(()=>this.default?t.of({area:this.name,component:this.default,historyStrategy:e}):t.EMPTY))}getComponentFromPathname(n,e){return t.of(n).pipe(t.map(o=>o.split("/").pop()??""),t.map(o=>decodeURIComponent(o)),t.map(o=>JSON.parse(o)),t.map(o=>o[this.name]),t.map(o=>!o&&this.default?{component:this.default,state:void 0}:o),t.filter(o=>g.libExports.isPresent(o)),t.map(o=>({area:this.name,component:o.component??this.default,state:o.state,historyStrategy:e})),t.map(o=>o),t.catchError(()=>this.default?t.of({area:this.name,component:this.default,historyStrategy:e}):t.EMPTY))}firstUpdated(){if(!this.name)throw new Error("Area name or default component not set");t.merge(t.of(location.pathname).pipe(t.switchMap(n=>this.mappings&&this.mappings.length?this.getComponentFromMappings(this.mappings,p.silent):this.getComponentFromPathname(n,p.silent)),t.take(1)),s.request.pipe(t.filter(({area:n})=>n===this.name)),t.fromEvent(window,"popstate").pipe(t.map(n=>n.target.location.pathname),t.switchMap(n=>this.mappings&&this.mappings.length?this.getComponentFromMappings(this.mappings,p.silent):this.getComponentFromPathname(n,p.silent)))).pipe(t.filter(n=>!!n.component),t.takeUntil(this.disconnecting),t.distinctUntilChanged((n,e)=>{let o,a;return typeof n.component!="function"&&(typeof n.component=="string"&&(o=n.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(t.switchMap(n=>{const e=n.component;return e instanceof Promise?t.from(e).pipe(t.map(o=>({component:o.exports.default,route:n}))):t.of({component:e,route:n})}),t.map(({component:n,route:e})=>typeof n=="string"?{component:document.createElement(n),route:e}:n instanceof HTMLElement?{component:n,route:e}:typeof n=="function"?{component:new n,route:e}:void 0),t.distinctUntilChanged((n,e)=>n.component.tagName===e.component.tagName),t.map(({component:n,route:e})=>{var i,r;const o=(i=this.shadowRoot)==null?void 0:i.children[0],a=!!o;return o.remove(),n.classList.add("opacity-0"),(r=this.shadowRoot)==null||r.append(n),n.animate([{opacity:0},{opacity:1}],{duration:a?150:100,easing:"cubic-bezier(0.25, 0.8, 0.25, 1)",fill:"forwards"}),{component:n,route:e}}),t.tap(({component:n,route:e})=>{e.historyStrategy===void 0||e.historyStrategy==="push"?history.pushState(e.state,"",this.newPath(n.tagName,e)):e.historyStrategy&&["replace","pop"].includes(e.historyStrategy)&&history.replaceState(e.state,"",this.newPath(n.tagName,e)),s.current.set(this.name,{component:n.tagName,state:e.state,area:this.name}),s.$current.next(s.current)}),t.takeUntil(this.disconnecting)).subscribe()}newPath(n,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:n.toLowerCase(),state:e.state}})).concat(`${i}`)}queryParamClear(n){if(!n)return"";const e=new URLSearchParams(location.search);return n.forEach(o=>e.delete(o)),e.toString()===""?"":`?${e.toString()}`}checkForTeleportationRequests(){return t.fromEvent(window,"FLIP_REQUEST").pipe(t.map(n=>n.detail),t.bufferTime(0),t.tap(()=>{this.dispatchEvent(new CustomEvent("FLIP_STARTED"))}),t.takeUntil(this.disconnecting),t.timeout(0),t.catchError(()=>t.of(null)))}disconnectedCallback(){super.disconnectedCallback(),this.disconnecting.next(!0)}render(){return l.html` <slot> </slot> `}},h([m.property()],exports.SchmancyArea.prototype,"name",2),h([m.property()],exports.SchmancyArea.prototype,"default",2),h([m.property({type:Array})],exports.SchmancyArea.prototype,"mappings",2),exports.SchmancyArea=h([m.customElement("schmancy-area")],exports.SchmancyArea),exports.FINDING_MORTIES=d,exports.HERE_RICKY=f,exports.HISTORY_STRATEGY=p,exports.area=s,exports.routerHistory=S;
8
+ //# sourceMappingURL=area.component-nkE9S6b3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"area.component-nkE9S6b3.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 | HTMLElement\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\n/**\n * Type describing the route for an area.\n */\ntype TRouteArea = {\n\tcomponent: string\n\tstate: object | undefined\n}\n\n/**\n * Type for a mapping entry. Each mapping specifies a pathname and an array of route definitions.\n * Each route definition contains an area name, a component (or promise/constructor/template),\n * and optionally, a state.\n */\nexport type AreaPathnames = {\n\tpathname: string\n\troutes: Array<{\n\t\tarea: string\n\t\tcomponent: string | Promise<NodeModule> | CustomElementConstructor | TemplateResult<1>\n\t\tstate?: object\n\t}>\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/**\n\t * The default component to use if no matching route is found.\n\t */\n\t@property() default!: string | Promise<NodeModule> | CustomElementConstructor | TemplateResult<1>\n\n\t/**\n\t * An optional array of route mappings that can be passed into the component.\n\t * Each mapping specifies a pathname and an array of routes mapping area names to components.\n\t *\n\t * Example:\n\t * [\n\t * {\n\t * pathname: '/home',\n\t * routes: [\n\t * { area: 'main', component: 'home-view', state: { foo: 'bar' } },\n\t * { area: 'sidebar', component: 'menu-view' }\n\t * ]\n\t * },\n\t * {\n\t * pathname: '/about',\n\t * routes: [\n\t * { area: 'main', component: 'about-view' },\n\t * { area: 'sidebar', component: 'info-view' }\n\t * ]\n\t * }\n\t * ]\n\t */\n\t@property({ type: Array })\n\tmappings: AreaPathnames[] = []\n\n\t/**\n\t * New API: Returns an observable emitting a RouteAction based on the passed mappings.\n\t *\n\t * It looks for a mapping that matches the current location’s pathname, then selects\n\t * the route whose area matches this component’s name.\n\t *\n\t * @param mappings - Array of route mapping objects.\n\t * @param historyStrategy - The history strategy to use (e.g. PUSH, REPLACE, SILENT).\n\t * @returns An RxJS Observable that emits a RouteAction.\n\t */\n\tpublic getComponentFromMappings(mappings: AreaPathnames[], historyStrategy: HISTORY_STRATEGY) {\n\t\treturn of(location.pathname).pipe(\n\t\t\tmap(currentPath => {\n\t\t\t\tconst mapping = mappings.find(m => m.pathname === currentPath)\n\t\t\t\tif (!mapping) {\n\t\t\t\t\tthrow new Error(`No mapping found for pathname: ${currentPath}`)\n\t\t\t\t}\n\t\t\t\tconst routeForArea = mapping.routes.find(route => route.area === this.name)\n\t\t\t\tif (!routeForArea) {\n\t\t\t\t\tthrow new Error(`No route found for area: ${this.name} in pathname: ${currentPath}`)\n\t\t\t\t}\n\t\t\t\treturn routeForArea\n\t\t\t}),\n\t\t\tmap(\n\t\t\t\troute =>\n\t\t\t\t\t({\n\t\t\t\t\t\tarea: this.name,\n\t\t\t\t\t\tcomponent: route.component || this.default,\n\t\t\t\t\t\tstate: route.state,\n\t\t\t\t\t\thistoryStrategy,\n\t\t\t\t\t}) as RouteAction,\n\t\t\t),\n\t\t\tcatchError(() =>\n\t\t\t\tthis.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\t/**\n\t * Existing API: Returns an observable that emits a RouteAction based on the provided pathname.\n\t *\n\t * @param pathname - Pathname from the browser location API.\n\t * @param historyStrategy - The history strategy to use for the route (PUSH, REPLACE, SILENT).\n\t * @returns An observable emitting the RouteAction.\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// TODO: 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// The route resolution now checks for a non-empty mappings property.\n\t\t// If mappings are provided, they override the normal parsing logic for the current URL.\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 => {\n\t\t\t\t\tif (this.mappings && this.mappings.length) {\n\t\t\t\t\t\treturn this.getComponentFromMappings(this.mappings, HISTORY_STRATEGY.silent)\n\t\t\t\t\t}\n\t\t\t\t\treturn this.getComponentFromPathname(pathname, HISTORY_STRATEGY.silent)\n\t\t\t\t}),\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 => {\n\t\t\t\t\tif (this.mappings && this.mappings.length) {\n\t\t\t\t\t\treturn this.getComponentFromMappings(this.mappings, HISTORY_STRATEGY.silent)\n\t\t\t\t\t}\n\t\t\t\t\treturn this.getComponentFromPathname(pathname, HISTORY_STRATEGY.silent)\n\t\t\t\t}),\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(\n\t\t\t\t\t\t\tmap(x => ({\n\t\t\t\t\t\t\t\tcomponent: x.exports.default as CustomElementConstructor,\n\t\t\t\t\t\t\t\troute,\n\t\t\t\t\t\t\t})),\n\t\t\t\t\t\t)\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\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\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\t/**\n\t * Computes a new URL path for the given component and route.\n\t */\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\t/**\n\t * Removes specified query parameters from the current URL.\n\t */\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\tif (urlParams.toString() === '') return ''\n\t\treturn `?${urlParams.toString()}`\n\t}\n\n\t/**\n\t * Checks for teleportation requests (FLIP_REQUEST events) and dispatches a FLIP_STARTED event.\n\t */\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","super","arguments","mappings","historyStrategy","currentPath","mapping","find","m","Error","routeForArea","routes","route","default","catchError","EMPTY","path","filter","x","isPresent","libExports","merge","switchMap","length","getComponentFromMappings","silent","getComponentFromPathname","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","disconnectedCallback","html","__decorateClass","property","prototype","type","Array","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-B1dh2oPl.js";
1
+ import { F as s, H as I, b as R, S, a as e, r as o } from "./area.component-8AQUkma0.js";
2
2
  export {
3
3
  s as FINDING_MORTIES,
4
4
  I as HERE_RICKY,
@@ -1,4 +1,4 @@
1
- "use strict";const q=require("@floating-ui/dom"),D=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const Y=require("./litElement.mixin-DA1nq3OE.cjs");require("./tailwind.mixin-BCq9pcGg.cjs");const j=require("./ripple-C2BHbhcS.cjs"),H=require("./theme.interface-Xg5Zi46a.cjs"),P=require("lit"),u=require("lit/decorators.js"),U=require("lit/directives/ref.js"),A=require("rxjs/operators"),C=new Uint32Array(65536),z=(t,e)=>{if(t.length<e.length){const i=e;e=t,t=i}return e.length===0?t.length:t.length<=32?((i,o)=>{const n=i.length,r=o.length,l=1<<n-1;let p=-1,y=0,$=n,h=n;for(;h--;)C[i.charCodeAt(h)]|=1<<h;for(h=0;h<r;h++){let b=C[o.charCodeAt(h)];const v=b|y;b|=(b&p)+p^p,y|=~(b|p),p&=b,y&l&&$++,p&l&&$--,y=y<<1|1,p=p<<1|~(v|y),y&=v}for(h=n;h--;)C[i.charCodeAt(h)]=0;return $})(t,e):((i,o)=>{const n=o.length,r=i.length,l=[],p=[],y=Math.ceil(n/32),$=Math.ceil(r/32);for(let s=0;s<y;s++)p[s]=-1,l[s]=0;let h=0;for(;h<$-1;h++){let s=0,m=-1;const x=32*h,w=Math.min(32,r)+x;for(let a=x;a<w;a++)C[i.charCodeAt(a)]|=1<<a;for(let a=0;a<n;a++){const O=C[o.charCodeAt(a)],g=p[a/32|0]>>>a&1,f=l[a/32|0]>>>a&1,T=O|s,M=((O|f)&m)+m^m|O|f;let k=s|~(M|m),E=m&M;k>>>31^g&&(p[a/32|0]^=1<<a),E>>>31^f&&(l[a/32|0]^=1<<a),k=k<<1|g,E=E<<1|f,m=E|~(T|k),s=k&T}for(let a=x;a<w;a++)C[i.charCodeAt(a)]=0}let b=0,v=-1;const S=32*h,V=Math.min(32,r-S)+S;for(let s=S;s<V;s++)C[i.charCodeAt(s)]|=1<<s;let I=r;for(let s=0;s<n;s++){const m=C[o.charCodeAt(s)],x=p[s/32|0]>>>s&1,w=l[s/32|0]>>>s&1,a=m|b,O=((m|w)&v)+v^v|m|w;let g=b|~(O|v),f=v&O;I+=g>>>r-1&1,I-=f>>>r-1&1,g>>>31^x&&(p[s/32|0]^=1<<s),f>>>31^w&&(l[s/32|0]^=1<<s),g=g<<1|x,f=f<<1|w,v=f|~(a|g),b=g&a}for(let s=S;s<V;s++)C[i.charCodeAt(s)]=0;return I})(t,e)};var N=Object.defineProperty,B=Object.getOwnPropertyDescriptor,d=(t,e,i,o)=>{for(var n,r=o>1?void 0:o?B(e,i):e,l=t.length-1;l>=0;l--)(n=t[l])&&(r=(o?n(e,i,r):n(r))||r);return o&&r&&N(e,i,r),r};let c=class extends Y.$LitElement(":host{display:block;border:unset!important;line-height:unset!important;background:unset!important;padding:unset!important;font-size:unset!important;box-shadow:unset!important}:host:focus{box-shadow:unset!important}"){constructor(){super(...arguments),this.required=!1,this.placeholder="",this.value="",this.label="",this.maxHeight="25vh",this.multi=!1,this.inputRef=U.createRef(),this.searchTerm$=new D.Subject,this.startY=0,this.handleKeyDown=t=>{const e=this.options.filter(o=>!o.hidden);if(this.optionsContainer.hasAttribute("hidden"))return void(["Enter"," ","ArrowDown"].includes(t.key)&&(t.preventDefault(),this.showOptions().then(()=>{e.length>0&&this.focusOption(e,0)})));let i=e.findIndex(o=>o.matches(":focus"));switch(i===-1&&(i=0),t.key){case"Escape":t.preventDefault(),this.hideOptions(),this.input.focus();break;case"ArrowDown":t.preventDefault(),this.focusOption(e,Math.min(i+1,e.length-1));break;case"ArrowUp":t.preventDefault(),this.focusOption(e,Math.max(i-1,0));break;case"Enter":case" ":if(t.preventDefault(),e[i]){const o=e[i].getAttribute("data-value")||e[i].getAttribute("value");o&&this.handleOptionClick(o)}break;case"Tab":this.hideOptions()}}}connectedCallback(){super.connectedCallback(),this.id||(this.id=`schmancy-autocomplete-${Math.random().toString(36).substr(2,9)}`),D.fromEvent(this,"keydown").pipe(A.takeUntil(this.disconnecting)).subscribe({next:t=>{this.handleKeyDown(t)}}),this.searchTerm$.pipe(A.distinctUntilChanged(),A.tap(t=>{const e=t.trim().toLowerCase(),i=this.options.map(o=>{const n=o.label.toLowerCase();return{option:o,levDistance:z(e,n)}}).filter(({option:o,levDistance:n})=>e.length<3||n<=o.label.toLowerCase().length-e.length).sort((o,n)=>o.levDistance-n.levDistance);this.options.forEach(o=>o.hidden=!0);for(const{option:o}of i)o.hidden=!1;this.empty.hidden=i.length>0,this.setupOptionsAccessibility(),this.requestUpdate()}),A.takeUntil(this.disconnecting)).subscribe(()=>{this.showOptions()}),D.fromEvent(this,"focusout").pipe(A.takeUntil(this.disconnecting),A.filter(t=>{var e;return((e=t.relatedTarget)==null?void 0:e.tagName)!=="SCHMANCY-OPTION"}),A.switchMap(()=>{this.options.forEach(e=>e.hidden=!1);const t=this.optionsContainer.animate([{opacity:1},{opacity:0}],{duration:150,easing:"cubic-bezier(0.5, 0.01, 0.25, 1)"});return D.from(new Promise(e=>{t.onfinish=()=>{this.optionsContainer.style.display="none",this.optionsContainer.style.opacity="1",e()}}))})).subscribe({next:()=>{var t;if(this.multi){const e=this.options.filter(i=>i.selected).map(i=>i.label);this.input.value=e.join(", ")}else this.input.value=((t=this.options.find(e=>e.value===this.value))==null?void 0:t.label)??""}})}firstUpdated(){this.updateInputValue()}updated(t){super.updated(t),t.has("value")&&(this.syncSelectionFromValue(),this.updateInputValue())}handleSlotChange(){this.empty.hidden=this.options.some(t=>!t.hidden),this.syncSelectionFromValue(),this.updateInputValue(),this.setupOptionsAccessibility()}setupOptionsAccessibility(){this.options.forEach((t,e)=>{t.setAttribute("role","option"),t.id||(t.id=`${this.id}-option-${e}`),t.tabIndex=-1,t.setAttribute("aria-selected",String(this.multi?t.selected:t.value===this.value))})}syncSelectionFromValue(){if(this.multi){const t=this.value.split(",").map(e=>e.trim()).filter(Boolean);this.options.forEach(e=>{e.selected=t.includes(e.value)})}else this.options.forEach(t=>{t.selected=t.value===this.value})}updateInputValue(){requestAnimationFrame(()=>{var t;if(this.multi){const e=this.options.filter(i=>i.selected).map(i=>i.label);this.input.value=e.join(", ")}else{const e=(t=this.options.find(i=>i.value===this.value))==null?void 0:t.label;this.input.value=e??""}})}async showOptions(){this.optionsContainer.removeAttribute("hidden"),this.optionsContainer.style.display="block";const{x:t,y:e}=await q.computePosition(this.input,this.optionsContainer,{placement:"bottom-start",middleware:[q.offset(5),q.flip(),q.shift({padding:5}),q.size({apply({availableWidth:i,availableHeight:o,elements:n,rects:r}){const l=r.reference.width;n.floating.style.minWidth=`${l}px`,n.floating.style.maxWidth=`${i}px`,n.floating.style.maxHeight=`${o}px`}})]});Object.assign(this.optionsContainer.style,{left:`${t}px`,top:`${e}px`,position:"absolute",zIndex:"9999",overflowY:"auto"})}hideOptions(){var t;(t=this.optionsContainer)==null||t.setAttribute("hidden","true"),this.optionsContainer&&(this.optionsContainer.style.display="none")}handleInputChange(t){t.preventDefault(),t.stopPropagation();const e=t.detail.value;this.searchTerm$.next(e)}handleOptionClick(t){if(this.multi){const e=this.options.find(o=>o.value===t);e&&(e.selected=!e.selected);const i=this.options.filter(o=>o.selected).map(o=>o.value);this.value=i.join(","),this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:i},bubbles:!0,composed:!0}))}else this.hideOptions(),this.value=t,this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0,composed:!0}))}checkValidity(){return this.multi?this.options.some(t=>t.selected):!!this.value}reportValidity(){var t;return(t=this.inputRef.value)==null?void 0:t.reportValidity()}handleTouchStart(t){var e,i;this.startY=((i=(e=t.touches)==null?void 0:e[0])==null?void 0:i.clientY)??0}preventScroll(t){var r,l;const e=t.target;if(!this.optionsContainer.contains(e))return;const i=this.optionsContainer.scrollTop,o=this.optionsContainer.scrollHeight-this.optionsContainer.offsetHeight,n=((l=(r=t.touches)==null?void 0:r[0])==null?void 0:l.clientY)??0;(i<=0&&n>this.startY||i>=o&&n<this.startY)&&t.preventDefault()}focusOption(t,e){const i=t[e];i&&(i.focus(),this.input.setAttribute("aria-activedescendant",i.id))}render(){var e;const t=!((e=this.optionsContainer)!=null&&e.hasAttribute("hidden"));return P.html`
1
+ "use strict";const q=require("@floating-ui/dom"),D=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const Y=require("./litElement.mixin-9sOZ1KTq.cjs");require("./tailwind.mixin-DFM3jd9q.cjs");const j=require("./ripple-C2BHbhcS.cjs"),H=require("./theme.interface-Xg5Zi46a.cjs"),P=require("lit"),u=require("lit/decorators.js"),U=require("lit/directives/ref.js"),A=require("rxjs/operators"),C=new Uint32Array(65536),z=(t,e)=>{if(t.length<e.length){const i=e;e=t,t=i}return e.length===0?t.length:t.length<=32?((i,o)=>{const n=i.length,r=o.length,l=1<<n-1;let p=-1,y=0,$=n,h=n;for(;h--;)C[i.charCodeAt(h)]|=1<<h;for(h=0;h<r;h++){let b=C[o.charCodeAt(h)];const v=b|y;b|=(b&p)+p^p,y|=~(b|p),p&=b,y&l&&$++,p&l&&$--,y=y<<1|1,p=p<<1|~(v|y),y&=v}for(h=n;h--;)C[i.charCodeAt(h)]=0;return $})(t,e):((i,o)=>{const n=o.length,r=i.length,l=[],p=[],y=Math.ceil(n/32),$=Math.ceil(r/32);for(let s=0;s<y;s++)p[s]=-1,l[s]=0;let h=0;for(;h<$-1;h++){let s=0,m=-1;const x=32*h,w=Math.min(32,r)+x;for(let a=x;a<w;a++)C[i.charCodeAt(a)]|=1<<a;for(let a=0;a<n;a++){const O=C[o.charCodeAt(a)],g=p[a/32|0]>>>a&1,f=l[a/32|0]>>>a&1,T=O|s,M=((O|f)&m)+m^m|O|f;let k=s|~(M|m),E=m&M;k>>>31^g&&(p[a/32|0]^=1<<a),E>>>31^f&&(l[a/32|0]^=1<<a),k=k<<1|g,E=E<<1|f,m=E|~(T|k),s=k&T}for(let a=x;a<w;a++)C[i.charCodeAt(a)]=0}let b=0,v=-1;const S=32*h,V=Math.min(32,r-S)+S;for(let s=S;s<V;s++)C[i.charCodeAt(s)]|=1<<s;let I=r;for(let s=0;s<n;s++){const m=C[o.charCodeAt(s)],x=p[s/32|0]>>>s&1,w=l[s/32|0]>>>s&1,a=m|b,O=((m|w)&v)+v^v|m|w;let g=b|~(O|v),f=v&O;I+=g>>>r-1&1,I-=f>>>r-1&1,g>>>31^x&&(p[s/32|0]^=1<<s),f>>>31^w&&(l[s/32|0]^=1<<s),g=g<<1|x,f=f<<1|w,v=f|~(a|g),b=g&a}for(let s=S;s<V;s++)C[i.charCodeAt(s)]=0;return I})(t,e)};var N=Object.defineProperty,B=Object.getOwnPropertyDescriptor,d=(t,e,i,o)=>{for(var n,r=o>1?void 0:o?B(e,i):e,l=t.length-1;l>=0;l--)(n=t[l])&&(r=(o?n(e,i,r):n(r))||r);return o&&r&&N(e,i,r),r};let c=class extends Y.$LitElement(":host{display:block;border:unset!important;line-height:unset!important;background:unset!important;padding:unset!important;font-size:unset!important;box-shadow:unset!important}:host:focus{box-shadow:unset!important}"){constructor(){super(...arguments),this.required=!1,this.placeholder="",this.value="",this.label="",this.maxHeight="25vh",this.multi=!1,this.inputRef=U.createRef(),this.searchTerm$=new D.Subject,this.startY=0,this.handleKeyDown=t=>{const e=this.options.filter(o=>!o.hidden);if(this.optionsContainer.hasAttribute("hidden"))return void(["Enter"," ","ArrowDown"].includes(t.key)&&(t.preventDefault(),this.showOptions().then(()=>{e.length>0&&this.focusOption(e,0)})));let i=e.findIndex(o=>o.matches(":focus"));switch(i===-1&&(i=0),t.key){case"Escape":t.preventDefault(),this.hideOptions(),this.input.focus();break;case"ArrowDown":t.preventDefault(),this.focusOption(e,Math.min(i+1,e.length-1));break;case"ArrowUp":t.preventDefault(),this.focusOption(e,Math.max(i-1,0));break;case"Enter":case" ":if(t.preventDefault(),e[i]){const o=e[i].getAttribute("data-value")||e[i].getAttribute("value");o&&this.handleOptionClick(o)}break;case"Tab":this.hideOptions()}}}connectedCallback(){super.connectedCallback(),this.id||(this.id=`schmancy-autocomplete-${Math.random().toString(36).substr(2,9)}`),D.fromEvent(this,"keydown").pipe(A.takeUntil(this.disconnecting)).subscribe({next:t=>{this.handleKeyDown(t)}}),this.searchTerm$.pipe(A.distinctUntilChanged(),A.tap(t=>{const e=t.trim().toLowerCase(),i=this.options.map(o=>{const n=o.label.toLowerCase();return{option:o,levDistance:z(e,n)}}).filter(({option:o,levDistance:n})=>e.length<3||n<=o.label.toLowerCase().length-e.length).sort((o,n)=>o.levDistance-n.levDistance);this.options.forEach(o=>o.hidden=!0);for(const{option:o}of i)o.hidden=!1;this.empty.hidden=i.length>0,this.setupOptionsAccessibility(),this.requestUpdate()}),A.takeUntil(this.disconnecting)).subscribe(()=>{this.showOptions()}),D.fromEvent(this,"focusout").pipe(A.takeUntil(this.disconnecting),A.filter(t=>{var e;return((e=t.relatedTarget)==null?void 0:e.tagName)!=="SCHMANCY-OPTION"}),A.switchMap(()=>{this.options.forEach(e=>e.hidden=!1);const t=this.optionsContainer.animate([{opacity:1},{opacity:0}],{duration:150,easing:"cubic-bezier(0.5, 0.01, 0.25, 1)"});return D.from(new Promise(e=>{t.onfinish=()=>{this.optionsContainer.style.display="none",this.optionsContainer.style.opacity="1",e()}}))})).subscribe({next:()=>{var t;if(this.multi){const e=this.options.filter(i=>i.selected).map(i=>i.label);this.input.value=e.join(", ")}else this.input.value=((t=this.options.find(e=>e.value===this.value))==null?void 0:t.label)??""}})}firstUpdated(){this.updateInputValue()}updated(t){super.updated(t),t.has("value")&&(this.syncSelectionFromValue(),this.updateInputValue())}handleSlotChange(){this.empty.hidden=this.options.some(t=>!t.hidden),this.syncSelectionFromValue(),this.updateInputValue(),this.setupOptionsAccessibility()}setupOptionsAccessibility(){this.options.forEach((t,e)=>{t.setAttribute("role","option"),t.id||(t.id=`${this.id}-option-${e}`),t.tabIndex=-1,t.setAttribute("aria-selected",String(this.multi?t.selected:t.value===this.value))})}syncSelectionFromValue(){if(this.multi){const t=this.value.split(",").map(e=>e.trim()).filter(Boolean);this.options.forEach(e=>{e.selected=t.includes(e.value)})}else this.options.forEach(t=>{t.selected=t.value===this.value})}updateInputValue(){requestAnimationFrame(()=>{var t;if(this.multi){const e=this.options.filter(i=>i.selected).map(i=>i.label);this.input.value=e.join(", ")}else{const e=(t=this.options.find(i=>i.value===this.value))==null?void 0:t.label;this.input.value=e??""}})}async showOptions(){this.optionsContainer.removeAttribute("hidden"),this.optionsContainer.style.display="block";const{x:t,y:e}=await q.computePosition(this.input,this.optionsContainer,{placement:"bottom-start",middleware:[q.offset(5),q.flip(),q.shift({padding:5}),q.size({apply({availableWidth:i,availableHeight:o,elements:n,rects:r}){const l=r.reference.width;n.floating.style.minWidth=`${l}px`,n.floating.style.maxWidth=`${i}px`,n.floating.style.maxHeight=`${o}px`}})]});Object.assign(this.optionsContainer.style,{left:`${t}px`,top:`${e}px`,position:"absolute",zIndex:"9999",overflowY:"auto"})}hideOptions(){var t;(t=this.optionsContainer)==null||t.setAttribute("hidden","true"),this.optionsContainer&&(this.optionsContainer.style.display="none")}handleInputChange(t){t.preventDefault(),t.stopPropagation();const e=t.detail.value;this.searchTerm$.next(e)}handleOptionClick(t){if(this.multi){const e=this.options.find(o=>o.value===t);e&&(e.selected=!e.selected);const i=this.options.filter(o=>o.selected).map(o=>o.value);this.value=i.join(","),this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:i},bubbles:!0,composed:!0}))}else this.hideOptions(),this.value=t,this.updateInputValue(),this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0,composed:!0}))}checkValidity(){return this.multi?this.options.some(t=>t.selected):!!this.value}reportValidity(){var t;return(t=this.inputRef.value)==null?void 0:t.reportValidity()}handleTouchStart(t){var e,i;this.startY=((i=(e=t.touches)==null?void 0:e[0])==null?void 0:i.clientY)??0}preventScroll(t){var r,l;const e=t.target;if(!this.optionsContainer.contains(e))return;const i=this.optionsContainer.scrollTop,o=this.optionsContainer.scrollHeight-this.optionsContainer.offsetHeight,n=((l=(r=t.touches)==null?void 0:r[0])==null?void 0:l.clientY)??0;(i<=0&&n>this.startY||i>=o&&n<this.startY)&&t.preventDefault()}focusOption(t,e){const i=t[e];i&&(i.focus(),this.input.setAttribute("aria-activedescendant",i.id))}render(){var e;const t=!((e=this.optionsContainer)!=null&&e.hasAttribute("hidden"));return P.html`
2
2
  <div class="relative">
3
3
  <!-- The trigger slot (if any) overrides the default SchmancyInput -->
4
4
  <slot name="trigger">
@@ -46,4 +46,4 @@
46
46
  </ul>
47
47
  </div>
48
48
  `}};d([u.property({type:Boolean})],c.prototype,"required",2),d([u.property({type:String})],c.prototype,"placeholder",2),d([u.property({type:String,reflect:!0})],c.prototype,"value",2),d([u.property({type:String,reflect:!0})],c.prototype,"label",2),d([u.property({type:String})],c.prototype,"maxHeight",2),d([u.property({type:Boolean})],c.prototype,"multi",2),d([u.query("#options")],c.prototype,"optionsContainer",2),d([u.query("#empty")],c.prototype,"empty",2),d([u.query("schmancy-input")],c.prototype,"input",2),d([u.queryAssignedElements({flatten:!0})],c.prototype,"options",2),d([u.eventOptions({passive:!0})],c.prototype,"handleOptionClick",1),c=d([u.customElement("schmancy-autocomplete")],c);
49
- //# sourceMappingURL=autocomplete-2xI-YGmY.cjs.map
49
+ //# sourceMappingURL=autocomplete-Ct3zhedL.cjs.map