@mhmo91/schmancy 0.3.6 → 0.3.7

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 (288) hide show
  1. package/ai/area.md +61 -7
  2. package/dist/ai/area.md +61 -7
  3. package/dist/{animated-text-DzY-xfTP.js → animated-text-Bvsed9-v.js} +3 -3
  4. package/dist/{animated-text-DzY-xfTP.js.map → animated-text-Bvsed9-v.js.map} +1 -1
  5. package/dist/{animated-text-CvOxKhXc.cjs → animated-text-W8xFlvmD.cjs} +2 -2
  6. package/dist/{animated-text-CvOxKhXc.cjs.map → animated-text-W8xFlvmD.cjs.map} +1 -1
  7. package/dist/animated-text.cjs +1 -1
  8. package/dist/animated-text.js +1 -1
  9. package/dist/area.cjs +1 -1
  10. package/dist/area.component-BQl7E0p5.js +288 -0
  11. package/dist/area.component-BQl7E0p5.js.map +1 -0
  12. package/dist/area.component-DROgdpax.cjs +8 -0
  13. package/dist/area.component-DROgdpax.cjs.map +1 -0
  14. package/dist/area.js +1 -1
  15. package/dist/{autocomplete-KvR4MRDs.js → autocomplete-BEDtGEin.js} +3 -3
  16. package/dist/{autocomplete-KvR4MRDs.js.map → autocomplete-BEDtGEin.js.map} +1 -1
  17. package/dist/{autocomplete-DqbWESS2.cjs → autocomplete-DEmTHHnv.cjs} +2 -2
  18. package/dist/{autocomplete-DqbWESS2.cjs.map → autocomplete-DEmTHHnv.cjs.map} +1 -1
  19. package/dist/autocomplete.cjs +1 -1
  20. package/dist/autocomplete.js +1 -1
  21. package/dist/{avatar-BvqaPLuL.cjs → avatar-4P5aCw4S.cjs} +2 -2
  22. package/dist/{avatar-BvqaPLuL.cjs.map → avatar-4P5aCw4S.cjs.map} +1 -1
  23. package/dist/{avatar-Dy63jAZP.js → avatar-DIQf--I8.js} +43 -43
  24. package/dist/{avatar-Dy63jAZP.js.map → avatar-DIQf--I8.js.map} +1 -1
  25. package/dist/badge.cjs +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/{boat-DpwpvrwB.cjs → boat-BOLTYqLt.cjs} +2 -2
  28. package/dist/{boat-DpwpvrwB.cjs.map → boat-BOLTYqLt.cjs.map} +1 -1
  29. package/dist/{boat-CL-jiVBO.js → boat-Jf9KFRav.js} +2 -2
  30. package/dist/{boat-CL-jiVBO.js.map → boat-Jf9KFRav.js.map} +1 -1
  31. package/dist/boat.cjs +1 -1
  32. package/dist/boat.js +1 -1
  33. package/dist/busy.cjs +1 -1
  34. package/dist/busy.js +1 -1
  35. package/dist/button.cjs +1 -1
  36. package/dist/button.js +1 -1
  37. package/dist/card.cjs +1 -1
  38. package/dist/card.js +1 -1
  39. package/dist/{checkbox-DFSfKDe7.cjs → checkbox-BkZjy7wu.cjs} +2 -2
  40. package/dist/{checkbox-DFSfKDe7.cjs.map → checkbox-BkZjy7wu.cjs.map} +1 -1
  41. package/dist/{checkbox-BjDdxFyz.js → checkbox-C6pgGXbq.js} +2 -2
  42. package/dist/{checkbox-BjDdxFyz.js.map → checkbox-C6pgGXbq.js.map} +1 -1
  43. package/dist/checkbox.cjs +1 -1
  44. package/dist/checkbox.js +1 -1
  45. package/dist/{chips-DdDQGtnw.js → chips-BIfCLPdp.js} +3 -3
  46. package/dist/{chips-DdDQGtnw.js.map → chips-BIfCLPdp.js.map} +1 -1
  47. package/dist/{chips-SlEVDtLL.cjs → chips-BhDsOR2G.cjs} +2 -2
  48. package/dist/{chips-SlEVDtLL.cjs.map → chips-BhDsOR2G.cjs.map} +1 -1
  49. package/dist/chips.cjs +1 -1
  50. package/dist/chips.js +1 -1
  51. package/dist/{circular-progress-hBD2CBnQ.js → circular-progress-DQh7dBl7.js} +3 -3
  52. package/dist/{circular-progress-hBD2CBnQ.js.map → circular-progress-DQh7dBl7.js.map} +1 -1
  53. package/dist/{circular-progress-D0Ei_TVO.cjs → circular-progress-Wyg2t8Zk.cjs} +2 -2
  54. package/dist/{circular-progress-D0Ei_TVO.cjs.map → circular-progress-Wyg2t8Zk.cjs.map} +1 -1
  55. package/dist/circular-progress.cjs +1 -1
  56. package/dist/circular-progress.js +1 -1
  57. package/dist/code-highlight.cjs +1 -1
  58. package/dist/code-highlight.js +1 -1
  59. package/dist/{code-preview-rZY7AeQl.js → code-preview-Df0FAFLL.js} +2 -2
  60. package/dist/{code-preview-rZY7AeQl.js.map → code-preview-Df0FAFLL.js.map} +1 -1
  61. package/dist/{code-preview-CHUDQgBs.cjs → code-preview-pTQ9MZFz.cjs} +2 -2
  62. package/dist/{code-preview-CHUDQgBs.cjs.map → code-preview-pTQ9MZFz.cjs.map} +1 -1
  63. package/dist/components.cjs +1 -1
  64. package/dist/components.js +1 -1
  65. package/dist/content-drawer.cjs +1 -1
  66. package/dist/content-drawer.js +1 -1
  67. package/dist/{date-range-vfh_MQQ8.cjs → date-range-D0IL35bs.cjs} +2 -2
  68. package/dist/date-range-D0IL35bs.cjs.map +1 -0
  69. package/dist/{date-range-DYdBqzUs.js → date-range-D6gvc6qr.js} +4 -4
  70. package/dist/date-range-D6gvc6qr.js.map +1 -0
  71. package/dist/date-range.cjs +1 -1
  72. package/dist/date-range.js +1 -1
  73. package/dist/{delay-D0iuwCUK.js → delay-C0vSQZLG.js} +2 -2
  74. package/dist/{delay-D0iuwCUK.js.map → delay-C0vSQZLG.js.map} +1 -1
  75. package/dist/{delay-DSlalih2.cjs → delay-CgAWp6oP.cjs} +2 -2
  76. package/dist/{delay-DSlalih2.cjs.map → delay-CgAWp6oP.cjs.map} +1 -1
  77. package/dist/delay.cjs +1 -1
  78. package/dist/delay.js +1 -1
  79. package/dist/{dialog-content-Bc8Dem2U.js → dialog-content-CZFXqiLB.js} +3 -3
  80. package/dist/{dialog-content-Bc8Dem2U.js.map → dialog-content-CZFXqiLB.js.map} +1 -1
  81. package/dist/{dialog-content-C2mSWw93.cjs → dialog-content-Cy81LS2H.cjs} +2 -2
  82. package/dist/{dialog-content-C2mSWw93.cjs.map → dialog-content-Cy81LS2H.cjs.map} +1 -1
  83. package/dist/dialog.cjs +1 -1
  84. package/dist/dialog.js +1 -1
  85. package/dist/{divider-CE4Z74RZ.js → divider-By1TwbMf.js} +3 -3
  86. package/dist/{divider-CE4Z74RZ.js.map → divider-By1TwbMf.js.map} +1 -1
  87. package/dist/{divider-BLWfsrgW.cjs → divider-Ce0VyZUg.cjs} +2 -2
  88. package/dist/{divider-BLWfsrgW.cjs.map → divider-Ce0VyZUg.cjs.map} +1 -1
  89. package/dist/divider.cjs +1 -1
  90. package/dist/divider.js +1 -1
  91. package/dist/{dropdown-content-DGzqx1S_.cjs → dropdown-content-BVJW5qwu.cjs} +2 -2
  92. package/dist/{dropdown-content-DGzqx1S_.cjs.map → dropdown-content-BVJW5qwu.cjs.map} +1 -1
  93. package/dist/{dropdown-content-owobMGzG.js → dropdown-content-DrXmfeZA.js} +3 -3
  94. package/dist/{dropdown-content-owobMGzG.js.map → dropdown-content-DrXmfeZA.js.map} +1 -1
  95. package/dist/dropdown.cjs +1 -1
  96. package/dist/dropdown.js +1 -1
  97. package/dist/extra.cjs +1 -1
  98. package/dist/extra.js +1 -1
  99. package/dist/{flex-Dpr6dCxo.cjs → flex-BlUmtTp_.cjs} +2 -2
  100. package/dist/{flex-Dpr6dCxo.cjs.map → flex-BlUmtTp_.cjs.map} +1 -1
  101. package/dist/{flex-BsSncdMc.js → flex-DGkqlLrE.js} +2 -2
  102. package/dist/{flex-BsSncdMc.js.map → flex-DGkqlLrE.js.map} +1 -1
  103. package/dist/{form-BQE8JXxF.cjs → form-BfOpjKJG.cjs} +2 -2
  104. package/dist/{form-BQE8JXxF.cjs.map → form-BfOpjKJG.cjs.map} +1 -1
  105. package/dist/{form-CHNcjEbu.js → form-BpLxrFcU.js} +2 -2
  106. package/dist/{form-CHNcjEbu.js.map → form-BpLxrFcU.js.map} +1 -1
  107. package/dist/form.cjs +1 -1
  108. package/dist/form.js +1 -1
  109. package/dist/{icon-pSnkdbDc.cjs → icon-4BtQ7Fcm.cjs} +2 -2
  110. package/dist/{icon-pSnkdbDc.cjs.map → icon-4BtQ7Fcm.cjs.map} +1 -1
  111. package/dist/{icon-BEBPLEy5.js → icon-BhX0S3Ep.js} +2 -2
  112. package/dist/{icon-BEBPLEy5.js.map → icon-BhX0S3Ep.js.map} +1 -1
  113. package/dist/{icon-button-2HzMutoD.js → icon-button-DORCGn8E.js} +3 -3
  114. package/dist/{icon-button-2HzMutoD.js.map → icon-button-DORCGn8E.js.map} +1 -1
  115. package/dist/{icon-button-BCMiumJV.cjs → icon-button-pwSvxB9g.cjs} +2 -2
  116. package/dist/{icon-button-BCMiumJV.cjs.map → icon-button-pwSvxB9g.cjs.map} +1 -1
  117. package/dist/icons.cjs +1 -1
  118. package/dist/icons.js +1 -1
  119. package/dist/index.cjs +1 -1
  120. package/dist/index.js +189 -187
  121. package/dist/{input-BeF_sRNg.js → input-B3dNWEtq.js} +2 -2
  122. package/dist/{input-BeF_sRNg.js.map → input-B3dNWEtq.js.map} +1 -1
  123. package/dist/{input-BN2LXdXz.cjs → input-DKzGkUCd.cjs} +2 -2
  124. package/dist/{input-BN2LXdXz.cjs.map → input-DKzGkUCd.cjs.map} +1 -1
  125. package/dist/input.cjs +1 -1
  126. package/dist/input.js +1 -1
  127. package/dist/layout.cjs +1 -1
  128. package/dist/layout.js +1 -1
  129. package/dist/{list-BEbwK0js.cjs → list-BuU9UoTg.cjs} +2 -2
  130. package/dist/{list-BEbwK0js.cjs.map → list-BuU9UoTg.cjs.map} +1 -1
  131. package/dist/{list-BL8wGmIx.js → list-DTa-peni.js} +2 -2
  132. package/dist/{list-BL8wGmIx.js.map → list-DTa-peni.js.map} +1 -1
  133. package/dist/list.cjs +1 -1
  134. package/dist/list.js +1 -1
  135. package/dist/{litElement.mixin-DBKBn5-0.cjs → litElement.mixin-FAOb9fJy.cjs} +2 -2
  136. package/dist/{litElement.mixin-DBKBn5-0.cjs.map → litElement.mixin-FAOb9fJy.cjs.map} +1 -1
  137. package/dist/{litElement.mixin-Csoyz9Ih.js → litElement.mixin-a-9uNJhx.js} +2 -2
  138. package/dist/{litElement.mixin-Csoyz9Ih.js.map → litElement.mixin-a-9uNJhx.js.map} +1 -1
  139. package/dist/{menu-DyAZ0l5W.js → menu-BhEX64LY.js} +3 -3
  140. package/dist/{menu-DyAZ0l5W.js.map → menu-BhEX64LY.js.map} +1 -1
  141. package/dist/{menu-BdzIXUjg.cjs → menu-CtLCf3WA.cjs} +2 -2
  142. package/dist/{menu-BdzIXUjg.cjs.map → menu-CtLCf3WA.cjs.map} +1 -1
  143. package/dist/menu.cjs +1 -1
  144. package/dist/menu.js +1 -1
  145. package/dist/nav-drawer.cjs +1 -1
  146. package/dist/nav-drawer.js +1 -1
  147. package/dist/{notification-service-CXc-_Kb_.cjs → notification-service-59PBuLLr.cjs} +2 -2
  148. package/dist/{notification-service-CXc-_Kb_.cjs.map → notification-service-59PBuLLr.cjs.map} +1 -1
  149. package/dist/{notification-service-DKZuIFCM.js → notification-service-BFBsDmpb.js} +3 -3
  150. package/dist/{notification-service-DKZuIFCM.js.map → notification-service-BFBsDmpb.js.map} +1 -1
  151. package/dist/notification.cjs +1 -1
  152. package/dist/notification.js +1 -1
  153. package/dist/{option-EnoMfyR-.cjs → option-Cd-JUVuk.cjs} +2 -2
  154. package/dist/{option-EnoMfyR-.cjs.map → option-Cd-JUVuk.cjs.map} +1 -1
  155. package/dist/{option-CYaG8vnG.js → option-IUBhBhvQ.js} +2 -2
  156. package/dist/{option-CYaG8vnG.js.map → option-IUBhBhvQ.js.map} +1 -1
  157. package/dist/option.cjs +1 -1
  158. package/dist/option.js +1 -1
  159. package/dist/{payment-card-form-BSmtEC4S.js → payment-card-form-CgHBf1MR.js} +3 -3
  160. package/dist/{payment-card-form-BSmtEC4S.js.map → payment-card-form-CgHBf1MR.js.map} +1 -1
  161. package/dist/{payment-card-form-CpgGccLb.cjs → payment-card-form-DrW53CSV.cjs} +2 -2
  162. package/dist/{payment-card-form-CpgGccLb.cjs.map → payment-card-form-DrW53CSV.cjs.map} +1 -1
  163. package/dist/{radio-button-BURq74ON.js → radio-button-CAaxZBzh.js} +2 -2
  164. package/dist/{radio-button-BURq74ON.js.map → radio-button-CAaxZBzh.js.map} +1 -1
  165. package/dist/{radio-button-BJjvHX_o.cjs → radio-button-DwbEpHtz.cjs} +2 -2
  166. package/dist/{radio-button-BJjvHX_o.cjs.map → radio-button-DwbEpHtz.cjs.map} +1 -1
  167. package/dist/radio-group.cjs +1 -1
  168. package/dist/radio-group.js +1 -1
  169. package/dist/{schmancy-steps-container-DDTHvnOz.cjs → schmancy-steps-container-CJuXgr9I.cjs} +2 -2
  170. package/dist/{schmancy-steps-container-DDTHvnOz.cjs.map → schmancy-steps-container-CJuXgr9I.cjs.map} +1 -1
  171. package/dist/{schmancy-steps-container-Jm5DjyWr.js → schmancy-steps-container-DAmvJuCY.js} +2 -2
  172. package/dist/{schmancy-steps-container-Jm5DjyWr.js.map → schmancy-steps-container-DAmvJuCY.js.map} +1 -1
  173. package/dist/{select-DhsURRRa.cjs → select-PbBp1b0F.cjs} +2 -2
  174. package/dist/{select-DhsURRRa.cjs.map → select-PbBp1b0F.cjs.map} +1 -1
  175. package/dist/{select-C7KUOvwM.js → select-lwfEyz5o.js} +3 -3
  176. package/dist/{select-C7KUOvwM.js.map → select-lwfEyz5o.js.map} +1 -1
  177. package/dist/select.cjs +1 -1
  178. package/dist/select.js +1 -1
  179. package/dist/sheet-B6XV3o34.cjs +47 -0
  180. package/dist/sheet-B6XV3o34.cjs.map +1 -0
  181. package/dist/sheet-BIPHjkEU.js +146 -0
  182. package/dist/sheet-BIPHjkEU.js.map +1 -0
  183. package/dist/sheet.cjs +1 -1
  184. package/dist/sheet.js +6 -5
  185. package/dist/sheet.js.map +1 -1
  186. package/dist/{slider-CAYWu8jw.cjs → slider-DcjD04WW.cjs} +2 -2
  187. package/dist/{slider-CAYWu8jw.cjs.map → slider-DcjD04WW.cjs.map} +1 -1
  188. package/dist/{slider-DiRa4lW4.js → slider-DxAAbhgv.js} +3 -3
  189. package/dist/{slider-DiRa4lW4.js.map → slider-DxAAbhgv.js.map} +1 -1
  190. package/dist/slider.cjs +1 -1
  191. package/dist/slider.js +1 -1
  192. package/dist/{spinner-XXVCb3SB.cjs → spinner-ChF8eu2h.cjs} +2 -2
  193. package/dist/{spinner-XXVCb3SB.cjs.map → spinner-ChF8eu2h.cjs.map} +1 -1
  194. package/dist/{spinner-CnjBDKlQ.js → spinner-ljyO1OP-.js} +3 -3
  195. package/dist/{spinner-CnjBDKlQ.js.map → spinner-ljyO1OP-.js.map} +1 -1
  196. package/dist/steps.cjs +1 -1
  197. package/dist/steps.js +1 -1
  198. package/dist/{surface-DPoDLP5m.js → surface-4rxDWTNU.js} +2 -2
  199. package/dist/{surface-DPoDLP5m.js.map → surface-4rxDWTNU.js.map} +1 -1
  200. package/dist/{surface-B93-RzTP.cjs → surface-DaslnVcG.cjs} +2 -2
  201. package/dist/{surface-B93-RzTP.cjs.map → surface-DaslnVcG.cjs.map} +1 -1
  202. package/dist/surface.cjs +1 -1
  203. package/dist/surface.js +1 -1
  204. package/dist/{table-CZ0Kxa-3.cjs → table-Bc6wiBh6.cjs} +2 -2
  205. package/dist/{table-CZ0Kxa-3.cjs.map → table-Bc6wiBh6.cjs.map} +1 -1
  206. package/dist/{table-Dsb3MObV.js → table-CqX5tEfA.js} +2 -2
  207. package/dist/{table-Dsb3MObV.js.map → table-CqX5tEfA.js.map} +1 -1
  208. package/dist/table.cjs +1 -1
  209. package/dist/table.js +1 -1
  210. package/dist/{tabs-compatibility-Dx9gQzb8.js → tabs-compatibility-B31B1aRa.js} +2 -2
  211. package/dist/{tabs-compatibility-Dx9gQzb8.js.map → tabs-compatibility-B31B1aRa.js.map} +1 -1
  212. package/dist/{tabs-compatibility-B8L2QZNH.cjs → tabs-compatibility-B5tD-1OC.cjs} +2 -2
  213. package/dist/{tabs-compatibility-B8L2QZNH.cjs.map → tabs-compatibility-B5tD-1OC.cjs.map} +1 -1
  214. package/dist/tabs.cjs +1 -1
  215. package/dist/tabs.js +1 -1
  216. package/dist/tailwind.mixin-Cfwi8T64.cjs +2 -0
  217. package/dist/{tailwind.mixin-CYcf-U4R.cjs.map → tailwind.mixin-Cfwi8T64.cjs.map} +1 -1
  218. package/dist/tailwind.mixin-Ct_5TKPq.js +43 -0
  219. package/dist/{tailwind.mixin-D0pn9tte.js.map → tailwind.mixin-Ct_5TKPq.js.map} +1 -1
  220. package/dist/teleport.cjs +1 -1
  221. package/dist/teleport.js +1 -1
  222. package/dist/{textarea-c08GNNdE.cjs → textarea-CeYMkEf1.cjs} +2 -2
  223. package/dist/{textarea-c08GNNdE.cjs.map → textarea-CeYMkEf1.cjs.map} +1 -1
  224. package/dist/{textarea-DRRZOHFq.js → textarea-DyCfsGTx.js} +2 -2
  225. package/dist/{textarea-DRRZOHFq.js.map → textarea-DyCfsGTx.js.map} +1 -1
  226. package/dist/textarea.cjs +1 -1
  227. package/dist/textarea.js +1 -1
  228. package/dist/{theme-button-C1WDEzCs.cjs → theme-button-CqXOoq1-.cjs} +2 -2
  229. package/dist/{theme-button-C1WDEzCs.cjs.map → theme-button-CqXOoq1-.cjs.map} +1 -1
  230. package/dist/{theme-button-CVyoV6wr.js → theme-button-Y3t1tyUe.js} +2 -2
  231. package/dist/{theme-button-CVyoV6wr.js.map → theme-button-Y3t1tyUe.js.map} +1 -1
  232. package/dist/theme-button.cjs +1 -1
  233. package/dist/theme-button.js +1 -1
  234. package/dist/theme.cjs +1 -1
  235. package/dist/theme.component-BJRnOZZf.js +823 -0
  236. package/dist/theme.component-BJRnOZZf.js.map +1 -0
  237. package/dist/theme.component-DIVy-I47.cjs +3 -0
  238. package/dist/theme.component-DIVy-I47.cjs.map +1 -0
  239. package/dist/theme.js +7 -5
  240. package/dist/{timezone-B9ulERyu.cjs → timezone-CCc5M91Q.cjs} +2 -2
  241. package/dist/{timezone-B9ulERyu.cjs.map → timezone-CCc5M91Q.cjs.map} +1 -1
  242. package/dist/{timezone-D3qGsxoX.js → timezone-CO3ktnVC.js} +3 -3
  243. package/dist/{timezone-D3qGsxoX.js.map → timezone-CO3ktnVC.js.map} +1 -1
  244. package/dist/{tooltip-wORJd0XU.js → tooltip-DQZi1Fwk.js} +2 -2
  245. package/dist/{tooltip-wORJd0XU.js.map → tooltip-DQZi1Fwk.js.map} +1 -1
  246. package/dist/{tooltip-BcfZtAjX.cjs → tooltip-ICkkzmmZ.cjs} +2 -2
  247. package/dist/{tooltip-BcfZtAjX.cjs.map → tooltip-ICkkzmmZ.cjs.map} +1 -1
  248. package/dist/tooltip.cjs +1 -1
  249. package/dist/tooltip.js +1 -1
  250. package/dist/{tree-DbCTJGWZ.js → tree-CWGWvGEI.js} +2 -2
  251. package/dist/{tree-DbCTJGWZ.js.map → tree-CWGWvGEI.js.map} +1 -1
  252. package/dist/{tree-D0gmqicQ.cjs → tree-vC57M9j9.cjs} +2 -2
  253. package/dist/{tree-D0gmqicQ.cjs.map → tree-vC57M9j9.cjs.map} +1 -1
  254. package/dist/tree.cjs +1 -1
  255. package/dist/tree.js +1 -1
  256. package/dist/{typewriter-B9CTFK02.cjs → typewriter-XHOWCYMc.cjs} +2 -2
  257. package/dist/{typewriter-B9CTFK02.cjs.map → typewriter-XHOWCYMc.cjs.map} +1 -1
  258. package/dist/{typewriter-CrSNqZl5.js → typewriter-qllBgg5K.js} +4 -4
  259. package/dist/{typewriter-CrSNqZl5.js.map → typewriter-qllBgg5K.js.map} +1 -1
  260. package/dist/typewriter.cjs +1 -1
  261. package/dist/typewriter.js +1 -1
  262. package/dist/{typography-846IJx5H.cjs → typography-B2xrKjE_.cjs} +2 -2
  263. package/dist/{typography-846IJx5H.cjs.map → typography-B2xrKjE_.cjs.map} +1 -1
  264. package/dist/{typography-B2HnnOVG.js → typography-Z6bJJUm5.js} +2 -2
  265. package/dist/{typography-B2HnnOVG.js.map → typography-Z6bJJUm5.js.map} +1 -1
  266. package/dist/typography.cjs +1 -1
  267. package/dist/typography.js +1 -1
  268. package/package.json +1 -1
  269. package/types/src/area/area.service.d.ts +8 -0
  270. package/types/src/area/router.types.d.ts +15 -0
  271. package/types/src/sheet/sheet.service.d.ts +4 -3
  272. package/types/src/theme/theme.component.d.ts +6 -0
  273. package/dist/area.component-DEOob0ox.cjs +0 -8
  274. package/dist/area.component-DEOob0ox.cjs.map +0 -1
  275. package/dist/area.component-X7coBLB2.js +0 -280
  276. package/dist/area.component-X7coBLB2.js.map +0 -1
  277. package/dist/date-range-DYdBqzUs.js.map +0 -1
  278. package/dist/date-range-vfh_MQQ8.cjs.map +0 -1
  279. package/dist/sheet-BD5cVkNb.js +0 -212
  280. package/dist/sheet-BD5cVkNb.js.map +0 -1
  281. package/dist/sheet-L0BMbi1B.cjs +0 -47
  282. package/dist/sheet-L0BMbi1B.cjs.map +0 -1
  283. package/dist/tailwind.mixin-CYcf-U4R.cjs +0 -2
  284. package/dist/tailwind.mixin-D0pn9tte.js +0 -43
  285. package/dist/theme.component-hNNgXue7.cjs +0 -3
  286. package/dist/theme.component-hNNgXue7.cjs.map +0 -1
  287. package/dist/theme.component-rwAI-wT2.js +0 -738
  288. package/dist/theme.component-rwAI-wT2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"typewriter-CrSNqZl5.js","sources":["../.yarn/unplugged/typeit-npm-8.8.7-4441c75f10/node_modules/typeit/dist/index.es.js","../src/typewriter/typewriter.ts"],"sourcesContent":["// TypeIt by Alex MacArthur - https://typeitjs.com\nconst isArray = (thing) => Array.isArray(thing);\n\nconst asArray = (value) => isArray(value) ? value : [value];\n\nlet Queue = function(initialItems) {\n let add = function(steps) {\n asArray(steps).forEach((step) => {\n return _q.set(Symbol(step.char?.innerText), buildQueueItem({ ...step }));\n });\n return this;\n };\n let getTypeable = () => rawValues().filter((value) => value.typeable);\n let set = function(index, item) {\n let keys = [..._q.keys()];\n _q.set(keys[index], buildQueueItem(item));\n };\n let buildQueueItem = (queueItem) => {\n queueItem.shouldPauseCursor = function() {\n return Boolean(this.typeable || this.cursorable || this.deletable);\n };\n return queueItem;\n };\n let reset = function() {\n _q.forEach((item) => delete item.done);\n };\n let wipe = function() {\n _q = /* @__PURE__ */ new Map();\n add(initialItems);\n };\n let getQueue = () => _q;\n let rawValues = () => Array.from(_q.values());\n let destroy = (key) => _q.delete(key);\n let getPendingQueueItems = () => {\n const pending = [];\n for (let [, value] of getQueue()) {\n if (!value.done) {\n pending.push(value);\n }\n }\n return pending;\n };\n let getItems = (all = false) => all ? rawValues() : rawValues().filter((i) => !i.done);\n let done = (key, shouldDestroy = false) => shouldDestroy ? _q.delete(key) : _q.get(key).done = true;\n let _q = /* @__PURE__ */ new Map();\n add(initialItems);\n return {\n add,\n set,\n wipe,\n done,\n reset,\n destroy,\n getItems,\n getQueue,\n getTypeable,\n getPendingQueueItems\n };\n};\n\nconst DATA_ATTRIBUTE = \"data-typeit-id\";\nconst CURSOR_CLASS = \"ti-cursor\";\nconst END = \"END\";\nconst DEFAULT_STATUSES = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false\n};\nconst DEFAULT_OPTIONS = {\n breakLines: true,\n cursor: {\n autoPause: true,\n autoPauseDelay: 500,\n animation: {\n frames: [0, 0, 1].map((n) => {\n return { opacity: n };\n }),\n options: {\n iterations: Infinity,\n easing: \"steps(2, start)\",\n fill: \"forwards\"\n }\n }\n },\n cursorChar: \"|\",\n cursorSpeed: 1e3,\n deleteSpeed: null,\n html: true,\n lifeLike: true,\n loop: false,\n loopDelay: 750,\n nextStringDelay: 750,\n speed: 100,\n startDelay: 250,\n startDelete: false,\n strings: [],\n waitUntilVisible: false,\n beforeString: () => {\n },\n afterString: () => {\n },\n beforeStep: () => {\n },\n afterStep: () => {\n },\n afterComplete: () => {\n }\n};\nconst PLACEHOLDER_CSS = `[${DATA_ATTRIBUTE}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`;\n\nconst createElement = (el) => document.createElement(el);\n\nconst createTextNode = (content) => document.createTextNode(content);\n\nconst appendStyleBlock = (styles, id = \"\") => {\n let styleBlock = createElement(\"style\");\n styleBlock.id = id;\n styleBlock.appendChild(createTextNode(styles));\n document.head.appendChild(styleBlock);\n};\n\nconst calculateDelay = (delayArg) => {\n if (!isArray(delayArg)) {\n delayArg = [delayArg / 2, delayArg / 2];\n }\n return delayArg;\n};\n\nconst randomInRange = (value, range) => {\n return Math.abs(\n Math.random() * (value + range - (value - range)) + (value - range)\n );\n};\n\nlet range = (val) => val / 2;\nfunction calculatePace(options) {\n let { speed, deleteSpeed, lifeLike } = options;\n deleteSpeed = deleteSpeed !== null ? deleteSpeed : speed / 3;\n return lifeLike ? [\n randomInRange(speed, range(speed)),\n randomInRange(deleteSpeed, range(deleteSpeed))\n ] : [speed, deleteSpeed];\n}\n\nconst toArray = (val) => Array.from(val);\n\nlet expandTextNodes = (element) => {\n [...element.childNodes].forEach((child) => {\n if (child.nodeValue) {\n [...child.nodeValue].forEach((c) => {\n child.parentNode.insertBefore(createTextNode(c), child);\n });\n child.remove();\n return;\n }\n expandTextNodes(child);\n });\n return element;\n};\n\nconst getParsedBody = (content) => {\n let doc = document.implementation.createHTMLDocument();\n doc.body.innerHTML = content;\n return expandTextNodes(doc.body);\n};\n\nfunction walkElementNodes(element, shouldReverse = false, shouldIncludeCursor = false) {\n let cursor = element.querySelector(`.${CURSOR_CLASS}`);\n let walker = document.createTreeWalker(element, NodeFilter.SHOW_ALL, {\n acceptNode: (node) => {\n if (cursor && shouldIncludeCursor) {\n if (node.classList?.contains(CURSOR_CLASS)) {\n return NodeFilter.FILTER_ACCEPT;\n }\n if (cursor.contains(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n }\n return node.classList?.contains(CURSOR_CLASS) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n }\n });\n let nextNode;\n let nodes = [];\n while (nextNode = walker.nextNode()) {\n if (!nextNode.originalParent) {\n nextNode.originalParent = nextNode.parentNode;\n }\n nodes.push(nextNode);\n }\n return shouldReverse ? nodes.reverse() : nodes;\n}\nfunction chunkStringAsHtml(string) {\n return walkElementNodes(getParsedBody(string));\n}\nfunction maybeChunkStringAsHtml(str, asHtml = true) {\n return asHtml ? chunkStringAsHtml(str) : toArray(str).map(createTextNode);\n}\n\nconst cleanUpSkipped = ({\n index,\n newIndex,\n queueItems,\n cleanUp\n}) => {\n for (let i = index + 1; i < newIndex + 1; i++) {\n cleanUp(queueItems[i][0]);\n }\n};\n\nconst isNumber = (value) => Number.isInteger(value);\n\nconst countStepsToSelector = ({\n queueItems,\n selector,\n cursorPosition,\n to\n}) => {\n if (isNumber(selector)) {\n return selector * -1;\n }\n let isMovingToEnd = new RegExp(END, \"i\").test(to);\n let selectorIndex = selector ? [...queueItems].reverse().findIndex(({ char }) => {\n let parentElement = char.parentElement;\n let parentMatches = parentElement.matches(selector);\n if (isMovingToEnd && parentMatches) {\n return true;\n }\n return parentMatches && parentElement.firstChild.isSameNode(char);\n }) : -1;\n if (selectorIndex < 0) {\n selectorIndex = isMovingToEnd ? 0 : queueItems.length - 1;\n }\n let offset = isMovingToEnd ? 0 : 1;\n return selectorIndex - cursorPosition + offset;\n};\n\nconst destroyTimeouts = (timeouts) => {\n timeouts.forEach(clearTimeout);\n return [];\n};\n\nconst duplicate = (value, times) => new Array(times).fill(value);\n\nlet beforePaint = (cb) => {\n return new Promise((resolve) => {\n requestAnimationFrame(async () => {\n resolve(await cb());\n });\n });\n};\n\nlet getAnimationFromElement = (element) => {\n return element?.getAnimations().find((animation) => {\n return animation.id === element.dataset.tiAnimationId;\n });\n};\n\nlet setCursorAnimation = ({\n cursor,\n frames,\n options\n}) => {\n let animation = cursor.animate(frames, options);\n animation.pause();\n animation.id = cursor.dataset.tiAnimationId;\n beforePaint(() => {\n beforePaint(() => {\n animation.play();\n });\n });\n return animation;\n};\n\nlet rebuildCursorAnimation = ({\n cursor,\n options,\n cursorOptions\n}) => {\n if (!cursor || !cursorOptions) return;\n let animation = getAnimationFromElement(cursor);\n let oldCurrentTime;\n if (animation) {\n options.delay = animation.effect.getComputedTiming().delay;\n oldCurrentTime = animation.currentTime;\n animation.cancel();\n }\n let newAnimation = setCursorAnimation({\n cursor,\n frames: cursorOptions.animation.frames,\n options\n });\n if (oldCurrentTime) {\n newAnimation.currentTime = oldCurrentTime;\n }\n return newAnimation;\n};\n\nlet execute = (queueItem) => queueItem.func?.call(null);\nlet fireItem = async ({\n index,\n queueItems,\n wait,\n cursor,\n cursorOptions\n}) => {\n let queueItem = queueItems[index][1];\n let instantQueue = [];\n let tempIndex = index;\n let futureItem = queueItem;\n let shouldBeGrouped = () => futureItem && !futureItem.delay;\n let shouldPauseCursor = queueItem.shouldPauseCursor() && cursorOptions.autoPause;\n while (shouldBeGrouped()) {\n instantQueue.push(futureItem);\n shouldBeGrouped() && tempIndex++;\n futureItem = queueItems[tempIndex] ? queueItems[tempIndex][1] : null;\n }\n if (instantQueue.length) {\n await beforePaint(async () => {\n for (let q of instantQueue) {\n await execute(q);\n }\n });\n return tempIndex - 1;\n }\n let animation = getAnimationFromElement(cursor);\n let options;\n if (animation) {\n options = {\n ...animation.effect.getComputedTiming(),\n delay: shouldPauseCursor ? cursorOptions.autoPauseDelay : 0\n };\n }\n await wait(async () => {\n if (animation && shouldPauseCursor) {\n animation.cancel();\n }\n await beforePaint(() => {\n execute(queueItem);\n });\n }, queueItem.delay);\n await rebuildCursorAnimation({\n cursor,\n options,\n cursorOptions\n });\n return index;\n};\n\nconst fireWhenVisible = (element, func) => {\n let observer = new IntersectionObserver(\n (entries, observer2) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n func();\n observer2.unobserve(element);\n }\n });\n },\n { threshold: 1 }\n );\n observer.observe(element);\n};\n\nconst generateHash = () => Math.random().toString().substring(2, 9);\n\nconst isInput = (el) => {\n return \"value\" in el;\n};\n\nlet getAllChars = (element) => {\n if (isInput(element)) {\n return toArray(element.value);\n }\n return walkElementNodes(element, true).filter(\n (c) => !(c.childNodes.length > 0)\n );\n};\n\nlet handleFunctionalArg = (arg) => {\n return typeof arg === \"function\" ? arg() : arg;\n};\n\nlet select = (selector, element = document, all = false) => {\n return element[`querySelector${all ? \"All\" : \"\"}`](selector);\n};\n\nlet isBodyElement = (node) => /body/i.test(node?.tagName);\n\nlet insertIntoElement = (originalTarget, character) => {\n if (isInput(originalTarget)) {\n originalTarget.value = `${originalTarget.value}${character.textContent}`;\n return;\n }\n character.innerHTML = \"\";\n let target = isBodyElement(character.originalParent) ? originalTarget : (\n // If we add one-off fresh elements, there will be no\n // \"originalParent\", so always fall back to the default target.\n character.originalParent || originalTarget\n );\n let cursorNode = select(\".\" + CURSOR_CLASS, target) || null;\n if (cursorNode && cursorNode.parentElement !== target) {\n target = cursorNode.parentElement;\n }\n target.insertBefore(character, cursorNode);\n};\n\nconst isNonVoidElement = (el) => /<(.+)>(.*?)<\\/(.+)>/.test(el.outerHTML);\n\nconst merge = (originalObj, newObj) => Object.assign({}, originalObj, newObj);\n\nlet processCursorOptions = (cursorOptions) => {\n if (typeof cursorOptions === \"object\") {\n let newOptions = {};\n let { frames: defaultFrames, options: defaultOptions } = DEFAULT_OPTIONS.cursor.animation;\n newOptions.animation = cursorOptions.animation || {};\n newOptions.animation.frames = cursorOptions.animation?.frames || defaultFrames;\n newOptions.animation.options = merge(\n defaultOptions,\n cursorOptions.animation?.options || {}\n );\n newOptions.autoPause = cursorOptions.autoPause ?? DEFAULT_OPTIONS.cursor.autoPause;\n newOptions.autoPauseDelay = cursorOptions.autoPauseDelay || DEFAULT_OPTIONS.cursor.autoPauseDelay;\n return newOptions;\n }\n if (cursorOptions === true) {\n return DEFAULT_OPTIONS.cursor;\n }\n return cursorOptions;\n};\n\nconst removeNode = (node, rootElement) => {\n if (!node) return;\n let nodeParent = node.parentNode;\n let nodeToRemove = nodeParent.childNodes.length > 1 || nodeParent.isSameNode(rootElement) ? (\n // This parent still needs to exist.\n node\n ) : (\n // There's nothing else in there, so just delete the entire thing.\n // By doing this, we clean up markup as we go along.\n nodeParent\n );\n nodeToRemove.remove();\n};\n\nconst repositionCursor = (element, allChars, newCursorPosition) => {\n let nodeToInsertBefore = allChars[newCursorPosition - 1];\n let cursor = select(`.${CURSOR_CLASS}`, element);\n element = nodeToInsertBefore?.parentNode || element;\n element.insertBefore(cursor, nodeToInsertBefore || null);\n};\n\nfunction selectorToElement(thing) {\n return typeof thing === \"string\" ? select(thing) : thing;\n}\n\nlet cursorFontStyles = {\n \"font-family\": \"\",\n \"font-weight\": \"\",\n \"font-size\": \"\",\n \"font-style\": \"\",\n \"line-height\": \"\",\n color: \"\",\n transform: \"translateX(-.125em)\"\n};\nlet setCursorStyles = (id, element) => {\n let rootSelector = `[${DATA_ATTRIBUTE}='${id}']`;\n let cursorSelector = `${rootSelector} .${CURSOR_CLASS}`;\n let computedStyles = getComputedStyle(element);\n let customProperties = Object.entries(cursorFontStyles).reduce(\n (accumulator, [item, value]) => {\n return `${accumulator} ${item}: var(--ti-cursor-${item}, ${value || computedStyles[item]});`;\n },\n \"\"\n );\n appendStyleBlock(\n `${cursorSelector} { display: inline-block; width: 0; ${customProperties} }`,\n id\n );\n};\n\nfunction splitOnBreak(str) {\n return str.replace(/<!--(.+?)-->/g, \"\").trim().split(/<br(?:\\s*?)(?:\\/)?>/);\n}\n\nlet updateCursorPosition = (steps, cursorPosition, printedCharacters) => {\n return Math.min(\n Math.max(cursorPosition + steps, 0),\n printedCharacters.length\n );\n};\n\nlet wait = (callback, delay, timeouts) => {\n return new Promise((resolve) => {\n let cb = async () => {\n await callback();\n resolve();\n };\n timeouts.push(setTimeout(cb, delay || 0));\n });\n};\n\nclass TypeIt {\n element;\n timeouts;\n cursorPosition;\n predictedCursorPosition;\n statuses = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false,\n firing: false\n };\n opts;\n id;\n queue;\n cursor;\n flushCallback = null;\n unfreeze = () => {\n };\n constructor(element, options = {}) {\n this.opts = merge(DEFAULT_OPTIONS, options);\n this.element = selectorToElement(element);\n this.timeouts = [];\n this.cursorPosition = 0;\n this.unfreeze = () => {\n };\n this.predictedCursorPosition = null;\n this.statuses = merge({}, DEFAULT_STATUSES);\n this.id = generateHash();\n this.queue = Queue([{ delay: this.opts.startDelay }]);\n this.#buildOptions(options);\n this.cursor = this.#setUpCursor();\n this.element.dataset.typeitId = this.id;\n appendStyleBlock(PLACEHOLDER_CSS);\n if (this.opts.strings.length) {\n this.#generateQueue();\n }\n }\n /**\n * Can only be called once.\n */\n go() {\n if (this.statuses.started) {\n return this;\n }\n this.#attachCursor();\n if (!this.opts.waitUntilVisible) {\n this.#fire();\n return this;\n }\n fireWhenVisible(this.element, this.#fire.bind(this));\n return this;\n }\n destroy(shouldRemoveCursor = true) {\n this.timeouts = destroyTimeouts(this.timeouts);\n handleFunctionalArg(shouldRemoveCursor) && this.cursor && this.#removeNode(this.cursor);\n this.statuses.destroyed = true;\n }\n reset(rebuild) {\n !this.is(\"destroyed\") && this.destroy();\n if (rebuild) {\n this.queue.wipe();\n rebuild(this);\n } else {\n this.queue.reset();\n }\n this.cursorPosition = 0;\n for (let property in this.statuses) {\n this.statuses[property] = false;\n }\n this.element[this.#elementIsInput() ? \"value\" : \"innerHTML\"] = \"\";\n return this;\n }\n is = function(key) {\n return this.statuses[key];\n };\n type(string, actionOpts = {}) {\n string = handleFunctionalArg(string);\n let { instant } = actionOpts;\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let chars = maybeChunkStringAsHtml(string, this.opts.html);\n let charsAsQueueItems = chars.map((char) => {\n return {\n func: () => this.#type(char),\n char,\n delay: instant || isNonVoidElement(char) ? 0 : this.#getPace(),\n typeable: char.nodeType === Node.TEXT_NODE\n };\n });\n let itemsToQueue = [\n bookEndQueueItems[0],\n { func: async () => await this.opts.beforeString(string, this) },\n ...charsAsQueueItems,\n { func: async () => await this.opts.afterString(string, this) },\n bookEndQueueItems[1]\n ];\n return this.#queueAndReturn(itemsToQueue, actionOpts);\n }\n break(actionOpts = {}) {\n return this.#queueAndReturn(\n {\n func: () => this.#type(createElement(\"BR\")),\n typeable: true\n },\n actionOpts\n );\n }\n move(movementArg, actionOpts = {}) {\n movementArg = handleFunctionalArg(movementArg);\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let { instant, to } = actionOpts;\n let numberOfSteps = countStepsToSelector({\n queueItems: this.queue.getTypeable(),\n selector: movementArg === null ? \"\" : movementArg,\n to,\n cursorPosition: this.#derivedCursorPosition\n });\n let directionalStep = numberOfSteps < 0 ? -1 : 1;\n this.predictedCursorPosition = this.#derivedCursorPosition + numberOfSteps;\n return this.#queueAndReturn(\n [\n bookEndQueueItems[0],\n ...duplicate(\n {\n func: () => this.#move(directionalStep),\n delay: instant ? 0 : this.#getPace(),\n cursorable: true\n },\n Math.abs(numberOfSteps)\n ),\n bookEndQueueItems[1]\n ],\n actionOpts\n );\n }\n exec(func, actionOpts = {}) {\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n return this.#queueAndReturn(\n [bookEndQueueItems[0], { func: () => func(this) }, bookEndQueueItems[1]],\n actionOpts\n );\n }\n options(opts, actionOpts = {}) {\n opts = handleFunctionalArg(opts);\n this.#updateOptions(opts);\n return this.#queueAndReturn({}, actionOpts);\n }\n pause(milliseconds, actionOpts = {}) {\n return this.#queueAndReturn(\n { delay: handleFunctionalArg(milliseconds) },\n actionOpts\n );\n }\n delete(numCharacters = null, actionOpts = {}) {\n numCharacters = handleFunctionalArg(numCharacters);\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let num = numCharacters;\n let { instant, to } = actionOpts;\n let typeableQueueItems = this.queue.getTypeable();\n let rounds = (() => {\n if (num === null) {\n return typeableQueueItems.length;\n }\n if (isNumber(num)) {\n return num;\n }\n return countStepsToSelector({\n queueItems: typeableQueueItems,\n selector: num,\n cursorPosition: this.#derivedCursorPosition,\n to\n });\n })();\n return this.#queueAndReturn(\n [\n bookEndQueueItems[0],\n ...duplicate(\n {\n func: this.#delete.bind(this),\n delay: instant ? 0 : this.#getPace(1),\n deletable: true\n },\n rounds\n ),\n bookEndQueueItems[1]\n ],\n actionOpts\n );\n }\n freeze() {\n this.statuses.frozen = true;\n }\n /**\n * Like `.go()`, but more... \"off the grid.\"\n *\n * - won't trigger `afterComplete` callback\n * - items won't be replayed after `.reset()`\n *\n * When called, all non-done items will be \"flushed\" --\n * that is, executed, but not remembered.\n */\n flush(cb = null) {\n this.flushCallback = cb || this.flushCallback;\n if (this.statuses.firing) {\n return this;\n }\n this.#attachCursor();\n this.#fire(false).then(() => {\n if (this.queue.getPendingQueueItems().length > 0) {\n return this.flush();\n }\n this.flushCallback();\n this.flushCallback = null;\n });\n return this;\n }\n getQueue() {\n return this.queue;\n }\n getOptions() {\n return this.opts;\n }\n updateOptions(options) {\n return this.#updateOptions(options);\n }\n getElement() {\n return this.element;\n }\n empty(actionOpts = {}) {\n return this.#queueAndReturn({ func: this.#empty.bind(this) }, actionOpts);\n }\n async #empty() {\n if (this.#elementIsInput()) {\n this.element.value = \"\";\n return;\n }\n this.#allChars.forEach(this.#removeNode.bind(this));\n return;\n }\n /**\n * Execute items in the queue.\n *\n * @param remember If false, each queue item will be destroyed once executed.\n * @returns\n */\n async #fire(remember = true) {\n this.statuses.started = true;\n this.statuses.firing = true;\n let cleanUp = (qKey) => {\n this.queue.done(qKey, !remember);\n };\n try {\n let queueItems = [...this.queue.getQueue()];\n for (let index = 0; index < queueItems.length; index++) {\n let [queueKey, queueItem] = queueItems[index];\n if (queueItem.done) continue;\n if (!queueItem.deletable || queueItem.deletable && this.#allChars.length) {\n let newIndex = await this.#fireItemWithContext(index, queueItems);\n cleanUpSkipped({\n index,\n newIndex,\n queueItems,\n cleanUp\n });\n index = newIndex;\n }\n cleanUp(queueKey);\n }\n if (!remember) {\n this.statuses.firing = false;\n return this;\n }\n this.statuses.completed = true;\n this.statuses.firing = false;\n await this.opts.afterComplete(this);\n if (!this.opts.loop) {\n throw \"\";\n }\n let delay = this.opts.loopDelay;\n this.#wait(async () => {\n await this.#prepLoop(delay[0]);\n this.#fire();\n }, delay[1]);\n } catch (e) {\n }\n this.statuses.firing = false;\n return this;\n }\n async #move(step) {\n this.cursorPosition = updateCursorPosition(\n step,\n this.cursorPosition,\n this.#allChars\n );\n repositionCursor(this.element, this.#allChars, this.cursorPosition);\n }\n /**\n * 1. Reset queue.\n * 2. Reset initial pause.\n */\n async #prepLoop(delay) {\n let derivedCursorPosition = this.#derivedCursorPosition;\n derivedCursorPosition && await this.#move({ value: derivedCursorPosition });\n let queueItems = this.#allChars.map((c) => {\n return [\n Symbol(),\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1),\n deletable: true,\n shouldPauseCursor: () => true\n }\n ];\n });\n for (let index = 0; index < queueItems.length; index++) {\n await this.#fireItemWithContext(index, queueItems);\n }\n this.queue.reset();\n this.queue.set(0, { delay });\n }\n #fireItemWithContext(index, queueItems) {\n return fireItem({\n index,\n queueItems,\n wait: this.#wait.bind(this),\n cursor: this.cursor,\n cursorOptions: this.opts.cursor\n });\n }\n async #wait(callback, delay, silent = false) {\n if (this.statuses.frozen) {\n await new Promise((resolve) => {\n this.unfreeze = () => {\n this.statuses.frozen = false;\n resolve();\n };\n });\n }\n silent || await this.opts.beforeStep(this);\n await wait(callback, delay, this.timeouts);\n silent || await this.opts.afterStep(this);\n }\n /**\n * Attach it to the DOM so, along with the required CSS transition.\n */\n async #attachCursor() {\n !this.#elementIsInput() && this.cursor && this.element.appendChild(this.cursor);\n if (this.#shouldRenderCursor) {\n setCursorStyles(this.id, this.element);\n this.cursor.dataset.tiAnimationId = this.id;\n let { animation } = this.opts.cursor;\n let { frames, options } = animation;\n setCursorAnimation({\n frames,\n cursor: this.cursor,\n options: {\n duration: this.opts.cursorSpeed,\n ...options\n }\n });\n }\n }\n #elementIsInput() {\n return isInput(this.element);\n }\n #queueAndReturn(steps, opts) {\n this.queue.add(steps);\n this.#maybeAppendPause(opts);\n return this;\n }\n #maybeAppendPause(opts = {}) {\n let delay = opts.delay;\n delay && this.queue.add({ delay });\n }\n #generateTemporaryOptionQueueItems(newOptions = {}) {\n return [\n { func: () => this.#updateOptions(newOptions) },\n { func: () => this.#updateOptions(this.opts) }\n ];\n }\n async #updateOptions(opts) {\n this.opts = merge(this.opts, opts);\n }\n /**\n * Based on provided strings, generate a TypeIt queue\n * to be fired for each character in the string.\n */\n #generateQueue() {\n let strings = this.opts.strings.filter((string) => !!string);\n strings.forEach((string, index) => {\n this.type(string);\n if (index + 1 === strings.length) {\n return;\n }\n let splitItems = this.opts.breakLines ? [{ func: () => this.#type(createElement(\"BR\")), typeable: true }] : duplicate(\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1)\n },\n this.queue.getTypeable().length\n );\n this.#addSplitPause(splitItems);\n });\n }\n #buildOptions = (options) => {\n this.opts.cursor = processCursorOptions(\n options.cursor ?? DEFAULT_OPTIONS.cursor\n );\n this.opts.strings = this.#prependHardcodedStrings(\n asArray(this.opts.strings)\n );\n this.opts = merge(this.opts, {\n html: !this.#isInput && this.opts.html,\n nextStringDelay: calculateDelay(this.opts.nextStringDelay),\n loopDelay: calculateDelay(this.opts.loopDelay)\n });\n };\n #prependHardcodedStrings(strings) {\n let existingMarkup = this.element.innerHTML;\n if (!existingMarkup) {\n return strings;\n }\n this.element.innerHTML = \"\";\n if (this.opts.startDelete) {\n this.element.innerHTML = existingMarkup;\n expandTextNodes(this.element);\n this.#addSplitPause(\n duplicate(\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1),\n deletable: true\n },\n this.#allChars.length\n )\n );\n return strings;\n }\n return splitOnBreak(existingMarkup).concat(strings);\n }\n /**\n * Provided it's a non-form element and the options is provided,\n * set up the cursor element for the animation.\n */\n #setUpCursor() {\n if (this.#isInput) {\n return null;\n }\n let cursor = createElement(\"span\");\n cursor.className = CURSOR_CLASS;\n if (!this.#shouldRenderCursor) {\n cursor.style.visibility = \"hidden\";\n return cursor;\n }\n cursor.innerHTML = getParsedBody(this.opts.cursorChar).innerHTML;\n return cursor;\n }\n #addSplitPause(items) {\n let delay = this.opts.nextStringDelay;\n this.queue.add([{ delay: delay[0] }, ...items, { delay: delay[1] }]);\n }\n #type(char) {\n insertIntoElement(this.element, char);\n }\n #delete() {\n if (!this.#allChars.length) return;\n if (this.#isInput) {\n this.element.value = this.element.value.slice(0, -1);\n } else {\n this.#removeNode(this.#allChars[this.cursorPosition]);\n }\n }\n #removeNode(node) {\n removeNode(node, this.element);\n }\n #getPace(index = 0) {\n return calculatePace(this.opts)[index];\n }\n get #derivedCursorPosition() {\n return this.predictedCursorPosition ?? this.cursorPosition;\n }\n get #isInput() {\n return isInput(this.element);\n }\n get #shouldRenderCursor() {\n return !!this.opts.cursor && !this.#isInput;\n }\n get #allChars() {\n return getAllChars(this.element);\n }\n}\n\nexport { TypeIt as default };\n","import { consume } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { delayContext } from '@schmancy/delay'\nimport hashContent from '@schmancy/utils/hashContent'\nimport { intersection$ } from '@schmancy/utils/intersection'\nimport { css, html, TemplateResult } from 'lit'\nimport { customElement, property, query, queryAssignedElements, queryAssignedNodes } from 'lit/decorators.js'\nimport TypeIt, { Options as TypeItOptions } from 'typeit'\n\n@customElement('schmancy-typewriter')\nexport class TypewriterElement extends $LitElement(css`\n\t:host {\n\t\tdisplay: inherit;\n\t}\n\n\t#typewriter {\n\t\t--ti-cursor-display: initial;\n\t}\n\n\t#typewriter .ti-cursor {\n\t\tdisplay: var(--ti-cursor-display);\n\t}\n`) {\n\t/**\n\t * Typing speed in milliseconds per character.\n\t */\n\t@property({ type: Number })\n\tspeed: number = 50\n\n\t/**\n\t * Delay before typing starts (ms).\n\t */\n\t@consume({ context: delayContext, subscribe: true })\n\t@property({ type: Number })\n\tdelay: number = 0\n\n\t/**\n\t * Automatically start typing on initialization.\n\t */\n\t@property({ type: Boolean })\n\tautoStart: boolean = true\n\n\t/**\n\t * The cursor character.\n\t */\n\t@property({ type: String })\n\tcursorChar: string = ''\n\n\t/**\n\t * Typing speed for deletions (ms per character).\n\t */\n\t@property({ type: Number })\n\tdeleteSpeed: number = 25\n\n\t@property({ type: Boolean }) once = true\n\t/**\n\t * TypeIt instance.\n\t */\n\tprivate typeItInstance: TypeIt | null = null\n\n\t/**\n\t * Reference to the typewriter container.\n\t */\n\t@query('#typewriter')\n\tprivate typewriterContainer!: HTMLElement\n\n\t@queryAssignedNodes({\n\t\tflatten: true,\n\t})\n\tprivate _getSlottedNodes!: Node[]\n\n\t@queryAssignedElements({\n\t\tflatten: true,\n\t})\n\tprivate _getSlottedElements!: HTMLElement[]\n\t/**\n\t * Lifecycle method called when the component is disconnected from the DOM.\n\t * Ensures that TypeIt instances are properly cleaned up.\n\t */\n\n\tprivate sessionKey = ''\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._destroyTypeIt()\n\t}\n\n\t/**\n\t * Initializes the TypeIt instance with the provided slotted content.\n\t */\n\tprivate _startTyping() {\n\t\t// Destroy any existing TypeIt instance\n\t\tthis._destroyTypeIt()\n\n\t\tthis.sessionKey = this.generateSessionKey()\n\n\t\tif (this.once && sessionStorage.getItem(this.sessionKey) === 'true') {\n\t\t\t// Skip delay and render immediately if once is set and already rendered\n\t\t\tthis.shadowRoot?.querySelector('slot')?.removeAttribute('hidden')\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.typewriterContainer) {\n\t\t\tconsole.warn('Typewriter container not found.')\n\t\t\treturn\n\t\t}\n\n\t\t// Configure TypeIt options\n\t\tconst typeItOptions: TypeItOptions = {\n\t\t\tspeed: this.speed,\n\t\t\tstartDelay: this.delay,\n\t\t\tcursor: !!this.cursorChar,\n\t\t\tcursorChar: this.cursorChar,\n\t\t\tdeleteSpeed: this.deleteSpeed,\n\t\t\tafterComplete: () => {\n\t\t\t\tif (this.once) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsessionStorage.setItem(this.sessionKey, 'true')\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('Error saving to session storage:', error)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Dispatch the custom event\n\t\t\t\tthis.dispatchEvent(new CustomEvent('typeit-complete', { bubbles: true, composed: true }))\n\n\t\t\t\t// Hide the cursor\n\t\t\t\tthis.typewriterContainer.style.setProperty('--ti-cursor-display', 'none')\n\t\t\t},\n\t\t}\n\n\t\t// Initialize TypeIt\n\t\tthis.typeItInstance = new TypeIt(this.typewriterContainer, typeItOptions)\n\n\t\t// Process slotted content as actions\n\t\tconst slottedNodes = this._getSlottedNodes\n\t\tslottedNodes.forEach(node => {\n\t\t\tif (node.nodeType === Node.TEXT_NODE) {\n\t\t\t\t// Handle plain text\n\t\t\t\tthis.typeItInstance?.type(node.textContent || '')\n\t\t\t} else if (node instanceof HTMLElement) {\n\t\t\t\t// Handle custom element\n\t\t\t\tthis._processCustomElement(node)\n\t\t\t}\n\t\t})\n\n\t\t// Start the typing animation if autoStart is enabled\n\t\t// use rxjs to detect once we are in the view port\n\t\tintersection$(this.shadowRoot?.host as Element).subscribe(() => {\n\t\t\t// alert('in view')\n\t\t\tthis.typeItInstance?.go()\n\t\t})\n\t\t// Start the typing animation if autoStart is enabled\n\t}\n\n\tprivate generateSessionKey(): string {\n\t\tconst slotContent = this._getSlottedElements.map(el => el.outerHTML).join('')\n\t\treturn this.once ? hashContent(slotContent) : ''\n\t}\n\t/**\n\t * Destroys the current TypeIt instance if it exists.\n\t */\n\tprivate _destroyTypeIt() {\n\t\tif (this.typeItInstance) {\n\t\t\ttry {\n\t\t\t\tthis.typeItInstance.destroy()\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error destroying TypeIt instance:', error)\n\t\t\t}\n\t\t\tthis.typeItInstance = null\n\t\t}\n\t}\n\n\t/**\n\t * Processes a custom element for its typing behavior.\n\t */\n\tprivate _processCustomElement(element: HTMLElement) {\n\t\tconst action = element.getAttribute('action')\n\t\tconst value = element.getAttribute('value')\n\t\tswitch (action) {\n\t\t\tcase 'pause':\n\t\t\t\tthis.typeItInstance?.pause(parseInt(value || '0', 10))\n\t\t\t\tbreak\n\t\t\tcase 'delete':\n\t\t\t\tthis.typeItInstance?.delete(parseInt(value || '0', 10))\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (element.tagName === 'P') {\n\t\t\t\t\tthis.typeItInstance.break()\n\t\t\t\t}\n\t\t\t\t// Treat as text if no action is defined\n\t\t\t\tthis.typeItInstance?.type(element.textContent || '')\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Renders the component's HTML.\n\t */\n\trender(): TemplateResult {\n\t\treturn html`<div id=\"typewriter\" aria-live=\"polite\"></div>\n\n\t\t\t<div class=\"typewriter\">\n\t\t\t\t<slot\n\t\t\t\t\thidden\n\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\tthis._startTyping()\n\t\t\t\t\t}}\n\t\t\t\t></slot>\n\t\t\t</div> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-typewriter': TypewriterElement\n\t}\n}\n"],"names":["isArray","thing","Array","asArray","value","DATA_ATTRIBUTE","CURSOR_CLASS","DEFAULT_STATUSES","started","completed","frozen","destroyed","DEFAULT_OPTIONS","breakLines","cursor","autoPause","autoPauseDelay","animation","frames","map","n","opacity","options","iterations","Infinity","easing","fill","cursorChar","cursorSpeed","deleteSpeed","html","lifeLike","loop","loopDelay","nextStringDelay","speed","startDelay","startDelete","strings","waitUntilVisible","beforeString","afterString","beforeStep","afterStep","afterComplete","PLACEHOLDER_CSS","createElement","el","document","createTextNode","content","appendStyleBlock","styles","id","styleBlock","appendChild","head","calculateDelay","delayArg","randomInRange","range","Math","abs","random","val","toArray","from","expandTextNodes","element","childNodes","forEach","child","nodeValue","c","parentNode","insertBefore","remove","getParsedBody","doc","implementation","createHTMLDocument","body","innerHTML","walkElementNodes","shouldReverse","shouldIncludeCursor","nextNode","querySelector","walker","createTreeWalker","NodeFilter","SHOW_ALL","acceptNode","node","classList","contains","FILTER_ACCEPT","FILTER_REJECT","nodes","originalParent","push","reverse","maybeChunkStringAsHtml","str","asHtml","cleanUpSkipped","index","newIndex","queueItems","cleanUp","i","isNumber","Number","isInteger","countStepsToSelector","selector","cursorPosition","to","isMovingToEnd","RegExp","test","selectorIndex","findIndex","char","t","parentElement","parentMatches","matches","firstChild","isSameNode","length","duplicate","times","beforePaint","cb","Promise","resolve","requestAnimationFrame","async","getAnimationFromElement","getAnimations","find","dataset","tiAnimationId","setCursorAnimation","animate","pause","play","execute","queueItem","func","call","fireItem","wait","cursorOptions","instantQueue","tempIndex","futureItem","shouldBeGrouped","delay","shouldPauseCursor","q","effect","getComputedTiming","cancel","oldCurrentTime","currentTime","newAnimation","e","isInput","handleFunctionalArg","arg","select","all","merge","originalObj","newObj","Object","assign","cursorFontStyles","color","transform","TypeIt","__privateAdd","___instances","timeouts","predictedCursorPosition","statuses","firing","opts","queue","flushCallback","unfreeze","is","key","this","buildOptions","newOptions","defaultFrames","defaultOptions","prependHardcodedStrings","toString","substring","initialItems","add","steps","step","_q","set","Symbol","innerText","buildQueueItem","Boolean","typeable","cursorable","deletable","getQueue","rawValues","values","Map","item","keys","wipe","done","shouldDestroy","delete","get","reset","destroy","getItems","filter","getTypeable","getPendingQueueItems","pending","setUpCursor","typeitId","attachCursor","bind","IntersectionObserver","entries","observer2","entry","isIntersecting","unobserve","threshold","observe","shouldRemoveCursor","clearTimeout","removeNode","rebuild","property","elementIsInput","string","actionOpts","instant","bookEndQueueItems","generateTemporaryOptionQueueItems","charsAsQueueItems","type","outerHTML","nodeType","Node","TEXT_NODE","itemsToQueue","queueAndReturn","movementArg","numberOfSteps","directionalStep","move","milliseconds","numCharacters","num","typeableQueueItems","rounds","derivedCursorPosition","then","flush","empty","y_fn","r_fn","fire","remember","qKey","queueKey","prepLoop","d_fn","printedCharacters","allChars","min","max","newCursorPosition","nodeToInsertBefore","g_fn","fireItemWithContext","w_fn","callback","silent","setTimeout","shouldRenderCursor","cursorSelector","computedStyles","getComputedStyle","customProperties","reduce","accumulator","duration","n_fn","u_fn","maybeAppendPause","S_fn","o_fn","updateOptions","i_fn","generateQueue","splitItems","C_fn","existingMarkup","addSplitPause","replace","trim","split","concat","e_fn","className","style","visibility","I_fn","items","a_fn","originalTarget","character","textContent","target","tagName","cursorNode","f_fn","slice","h_fn","rootElement","nodeParent","l_fn","getPace","v_get","TypewriterElement","$LitElement","css","constructor","super","arguments","autoStart","once","typeItInstance","sessionKey","disconnectedCallback","_destroyTypeIt","_startTyping","generateSessionKey","sessionStorage","getItem","shadowRoot","removeAttribute","typewriterContainer","typeItOptions","setItem","dispatchEvent","CustomEvent","bubbles","composed","setProperty","_getSlottedNodes","HTMLElement","_processCustomElement","intersection$","host","subscribe","go","slotContent","_getSlottedElements","join","hashContent","action","getAttribute","parseInt","break","__decorateClass","prototype","consume","context","delayContext","String","query","queryAssignedNodes","flatten","queryAssignedElements","customElement"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"typewriter-qllBgg5K.js","sources":["../.yarn/unplugged/typeit-npm-8.8.7-4441c75f10/node_modules/typeit/dist/index.es.js","../src/typewriter/typewriter.ts"],"sourcesContent":["// TypeIt by Alex MacArthur - https://typeitjs.com\nconst isArray = (thing) => Array.isArray(thing);\n\nconst asArray = (value) => isArray(value) ? value : [value];\n\nlet Queue = function(initialItems) {\n let add = function(steps) {\n asArray(steps).forEach((step) => {\n return _q.set(Symbol(step.char?.innerText), buildQueueItem({ ...step }));\n });\n return this;\n };\n let getTypeable = () => rawValues().filter((value) => value.typeable);\n let set = function(index, item) {\n let keys = [..._q.keys()];\n _q.set(keys[index], buildQueueItem(item));\n };\n let buildQueueItem = (queueItem) => {\n queueItem.shouldPauseCursor = function() {\n return Boolean(this.typeable || this.cursorable || this.deletable);\n };\n return queueItem;\n };\n let reset = function() {\n _q.forEach((item) => delete item.done);\n };\n let wipe = function() {\n _q = /* @__PURE__ */ new Map();\n add(initialItems);\n };\n let getQueue = () => _q;\n let rawValues = () => Array.from(_q.values());\n let destroy = (key) => _q.delete(key);\n let getPendingQueueItems = () => {\n const pending = [];\n for (let [, value] of getQueue()) {\n if (!value.done) {\n pending.push(value);\n }\n }\n return pending;\n };\n let getItems = (all = false) => all ? rawValues() : rawValues().filter((i) => !i.done);\n let done = (key, shouldDestroy = false) => shouldDestroy ? _q.delete(key) : _q.get(key).done = true;\n let _q = /* @__PURE__ */ new Map();\n add(initialItems);\n return {\n add,\n set,\n wipe,\n done,\n reset,\n destroy,\n getItems,\n getQueue,\n getTypeable,\n getPendingQueueItems\n };\n};\n\nconst DATA_ATTRIBUTE = \"data-typeit-id\";\nconst CURSOR_CLASS = \"ti-cursor\";\nconst END = \"END\";\nconst DEFAULT_STATUSES = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false\n};\nconst DEFAULT_OPTIONS = {\n breakLines: true,\n cursor: {\n autoPause: true,\n autoPauseDelay: 500,\n animation: {\n frames: [0, 0, 1].map((n) => {\n return { opacity: n };\n }),\n options: {\n iterations: Infinity,\n easing: \"steps(2, start)\",\n fill: \"forwards\"\n }\n }\n },\n cursorChar: \"|\",\n cursorSpeed: 1e3,\n deleteSpeed: null,\n html: true,\n lifeLike: true,\n loop: false,\n loopDelay: 750,\n nextStringDelay: 750,\n speed: 100,\n startDelay: 250,\n startDelete: false,\n strings: [],\n waitUntilVisible: false,\n beforeString: () => {\n },\n afterString: () => {\n },\n beforeStep: () => {\n },\n afterStep: () => {\n },\n afterComplete: () => {\n }\n};\nconst PLACEHOLDER_CSS = `[${DATA_ATTRIBUTE}]:before {content: '.'; display: inline-block; width: 0; visibility: hidden;}`;\n\nconst createElement = (el) => document.createElement(el);\n\nconst createTextNode = (content) => document.createTextNode(content);\n\nconst appendStyleBlock = (styles, id = \"\") => {\n let styleBlock = createElement(\"style\");\n styleBlock.id = id;\n styleBlock.appendChild(createTextNode(styles));\n document.head.appendChild(styleBlock);\n};\n\nconst calculateDelay = (delayArg) => {\n if (!isArray(delayArg)) {\n delayArg = [delayArg / 2, delayArg / 2];\n }\n return delayArg;\n};\n\nconst randomInRange = (value, range) => {\n return Math.abs(\n Math.random() * (value + range - (value - range)) + (value - range)\n );\n};\n\nlet range = (val) => val / 2;\nfunction calculatePace(options) {\n let { speed, deleteSpeed, lifeLike } = options;\n deleteSpeed = deleteSpeed !== null ? deleteSpeed : speed / 3;\n return lifeLike ? [\n randomInRange(speed, range(speed)),\n randomInRange(deleteSpeed, range(deleteSpeed))\n ] : [speed, deleteSpeed];\n}\n\nconst toArray = (val) => Array.from(val);\n\nlet expandTextNodes = (element) => {\n [...element.childNodes].forEach((child) => {\n if (child.nodeValue) {\n [...child.nodeValue].forEach((c) => {\n child.parentNode.insertBefore(createTextNode(c), child);\n });\n child.remove();\n return;\n }\n expandTextNodes(child);\n });\n return element;\n};\n\nconst getParsedBody = (content) => {\n let doc = document.implementation.createHTMLDocument();\n doc.body.innerHTML = content;\n return expandTextNodes(doc.body);\n};\n\nfunction walkElementNodes(element, shouldReverse = false, shouldIncludeCursor = false) {\n let cursor = element.querySelector(`.${CURSOR_CLASS}`);\n let walker = document.createTreeWalker(element, NodeFilter.SHOW_ALL, {\n acceptNode: (node) => {\n if (cursor && shouldIncludeCursor) {\n if (node.classList?.contains(CURSOR_CLASS)) {\n return NodeFilter.FILTER_ACCEPT;\n }\n if (cursor.contains(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n }\n return node.classList?.contains(CURSOR_CLASS) ? NodeFilter.FILTER_REJECT : NodeFilter.FILTER_ACCEPT;\n }\n });\n let nextNode;\n let nodes = [];\n while (nextNode = walker.nextNode()) {\n if (!nextNode.originalParent) {\n nextNode.originalParent = nextNode.parentNode;\n }\n nodes.push(nextNode);\n }\n return shouldReverse ? nodes.reverse() : nodes;\n}\nfunction chunkStringAsHtml(string) {\n return walkElementNodes(getParsedBody(string));\n}\nfunction maybeChunkStringAsHtml(str, asHtml = true) {\n return asHtml ? chunkStringAsHtml(str) : toArray(str).map(createTextNode);\n}\n\nconst cleanUpSkipped = ({\n index,\n newIndex,\n queueItems,\n cleanUp\n}) => {\n for (let i = index + 1; i < newIndex + 1; i++) {\n cleanUp(queueItems[i][0]);\n }\n};\n\nconst isNumber = (value) => Number.isInteger(value);\n\nconst countStepsToSelector = ({\n queueItems,\n selector,\n cursorPosition,\n to\n}) => {\n if (isNumber(selector)) {\n return selector * -1;\n }\n let isMovingToEnd = new RegExp(END, \"i\").test(to);\n let selectorIndex = selector ? [...queueItems].reverse().findIndex(({ char }) => {\n let parentElement = char.parentElement;\n let parentMatches = parentElement.matches(selector);\n if (isMovingToEnd && parentMatches) {\n return true;\n }\n return parentMatches && parentElement.firstChild.isSameNode(char);\n }) : -1;\n if (selectorIndex < 0) {\n selectorIndex = isMovingToEnd ? 0 : queueItems.length - 1;\n }\n let offset = isMovingToEnd ? 0 : 1;\n return selectorIndex - cursorPosition + offset;\n};\n\nconst destroyTimeouts = (timeouts) => {\n timeouts.forEach(clearTimeout);\n return [];\n};\n\nconst duplicate = (value, times) => new Array(times).fill(value);\n\nlet beforePaint = (cb) => {\n return new Promise((resolve) => {\n requestAnimationFrame(async () => {\n resolve(await cb());\n });\n });\n};\n\nlet getAnimationFromElement = (element) => {\n return element?.getAnimations().find((animation) => {\n return animation.id === element.dataset.tiAnimationId;\n });\n};\n\nlet setCursorAnimation = ({\n cursor,\n frames,\n options\n}) => {\n let animation = cursor.animate(frames, options);\n animation.pause();\n animation.id = cursor.dataset.tiAnimationId;\n beforePaint(() => {\n beforePaint(() => {\n animation.play();\n });\n });\n return animation;\n};\n\nlet rebuildCursorAnimation = ({\n cursor,\n options,\n cursorOptions\n}) => {\n if (!cursor || !cursorOptions) return;\n let animation = getAnimationFromElement(cursor);\n let oldCurrentTime;\n if (animation) {\n options.delay = animation.effect.getComputedTiming().delay;\n oldCurrentTime = animation.currentTime;\n animation.cancel();\n }\n let newAnimation = setCursorAnimation({\n cursor,\n frames: cursorOptions.animation.frames,\n options\n });\n if (oldCurrentTime) {\n newAnimation.currentTime = oldCurrentTime;\n }\n return newAnimation;\n};\n\nlet execute = (queueItem) => queueItem.func?.call(null);\nlet fireItem = async ({\n index,\n queueItems,\n wait,\n cursor,\n cursorOptions\n}) => {\n let queueItem = queueItems[index][1];\n let instantQueue = [];\n let tempIndex = index;\n let futureItem = queueItem;\n let shouldBeGrouped = () => futureItem && !futureItem.delay;\n let shouldPauseCursor = queueItem.shouldPauseCursor() && cursorOptions.autoPause;\n while (shouldBeGrouped()) {\n instantQueue.push(futureItem);\n shouldBeGrouped() && tempIndex++;\n futureItem = queueItems[tempIndex] ? queueItems[tempIndex][1] : null;\n }\n if (instantQueue.length) {\n await beforePaint(async () => {\n for (let q of instantQueue) {\n await execute(q);\n }\n });\n return tempIndex - 1;\n }\n let animation = getAnimationFromElement(cursor);\n let options;\n if (animation) {\n options = {\n ...animation.effect.getComputedTiming(),\n delay: shouldPauseCursor ? cursorOptions.autoPauseDelay : 0\n };\n }\n await wait(async () => {\n if (animation && shouldPauseCursor) {\n animation.cancel();\n }\n await beforePaint(() => {\n execute(queueItem);\n });\n }, queueItem.delay);\n await rebuildCursorAnimation({\n cursor,\n options,\n cursorOptions\n });\n return index;\n};\n\nconst fireWhenVisible = (element, func) => {\n let observer = new IntersectionObserver(\n (entries, observer2) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n func();\n observer2.unobserve(element);\n }\n });\n },\n { threshold: 1 }\n );\n observer.observe(element);\n};\n\nconst generateHash = () => Math.random().toString().substring(2, 9);\n\nconst isInput = (el) => {\n return \"value\" in el;\n};\n\nlet getAllChars = (element) => {\n if (isInput(element)) {\n return toArray(element.value);\n }\n return walkElementNodes(element, true).filter(\n (c) => !(c.childNodes.length > 0)\n );\n};\n\nlet handleFunctionalArg = (arg) => {\n return typeof arg === \"function\" ? arg() : arg;\n};\n\nlet select = (selector, element = document, all = false) => {\n return element[`querySelector${all ? \"All\" : \"\"}`](selector);\n};\n\nlet isBodyElement = (node) => /body/i.test(node?.tagName);\n\nlet insertIntoElement = (originalTarget, character) => {\n if (isInput(originalTarget)) {\n originalTarget.value = `${originalTarget.value}${character.textContent}`;\n return;\n }\n character.innerHTML = \"\";\n let target = isBodyElement(character.originalParent) ? originalTarget : (\n // If we add one-off fresh elements, there will be no\n // \"originalParent\", so always fall back to the default target.\n character.originalParent || originalTarget\n );\n let cursorNode = select(\".\" + CURSOR_CLASS, target) || null;\n if (cursorNode && cursorNode.parentElement !== target) {\n target = cursorNode.parentElement;\n }\n target.insertBefore(character, cursorNode);\n};\n\nconst isNonVoidElement = (el) => /<(.+)>(.*?)<\\/(.+)>/.test(el.outerHTML);\n\nconst merge = (originalObj, newObj) => Object.assign({}, originalObj, newObj);\n\nlet processCursorOptions = (cursorOptions) => {\n if (typeof cursorOptions === \"object\") {\n let newOptions = {};\n let { frames: defaultFrames, options: defaultOptions } = DEFAULT_OPTIONS.cursor.animation;\n newOptions.animation = cursorOptions.animation || {};\n newOptions.animation.frames = cursorOptions.animation?.frames || defaultFrames;\n newOptions.animation.options = merge(\n defaultOptions,\n cursorOptions.animation?.options || {}\n );\n newOptions.autoPause = cursorOptions.autoPause ?? DEFAULT_OPTIONS.cursor.autoPause;\n newOptions.autoPauseDelay = cursorOptions.autoPauseDelay || DEFAULT_OPTIONS.cursor.autoPauseDelay;\n return newOptions;\n }\n if (cursorOptions === true) {\n return DEFAULT_OPTIONS.cursor;\n }\n return cursorOptions;\n};\n\nconst removeNode = (node, rootElement) => {\n if (!node) return;\n let nodeParent = node.parentNode;\n let nodeToRemove = nodeParent.childNodes.length > 1 || nodeParent.isSameNode(rootElement) ? (\n // This parent still needs to exist.\n node\n ) : (\n // There's nothing else in there, so just delete the entire thing.\n // By doing this, we clean up markup as we go along.\n nodeParent\n );\n nodeToRemove.remove();\n};\n\nconst repositionCursor = (element, allChars, newCursorPosition) => {\n let nodeToInsertBefore = allChars[newCursorPosition - 1];\n let cursor = select(`.${CURSOR_CLASS}`, element);\n element = nodeToInsertBefore?.parentNode || element;\n element.insertBefore(cursor, nodeToInsertBefore || null);\n};\n\nfunction selectorToElement(thing) {\n return typeof thing === \"string\" ? select(thing) : thing;\n}\n\nlet cursorFontStyles = {\n \"font-family\": \"\",\n \"font-weight\": \"\",\n \"font-size\": \"\",\n \"font-style\": \"\",\n \"line-height\": \"\",\n color: \"\",\n transform: \"translateX(-.125em)\"\n};\nlet setCursorStyles = (id, element) => {\n let rootSelector = `[${DATA_ATTRIBUTE}='${id}']`;\n let cursorSelector = `${rootSelector} .${CURSOR_CLASS}`;\n let computedStyles = getComputedStyle(element);\n let customProperties = Object.entries(cursorFontStyles).reduce(\n (accumulator, [item, value]) => {\n return `${accumulator} ${item}: var(--ti-cursor-${item}, ${value || computedStyles[item]});`;\n },\n \"\"\n );\n appendStyleBlock(\n `${cursorSelector} { display: inline-block; width: 0; ${customProperties} }`,\n id\n );\n};\n\nfunction splitOnBreak(str) {\n return str.replace(/<!--(.+?)-->/g, \"\").trim().split(/<br(?:\\s*?)(?:\\/)?>/);\n}\n\nlet updateCursorPosition = (steps, cursorPosition, printedCharacters) => {\n return Math.min(\n Math.max(cursorPosition + steps, 0),\n printedCharacters.length\n );\n};\n\nlet wait = (callback, delay, timeouts) => {\n return new Promise((resolve) => {\n let cb = async () => {\n await callback();\n resolve();\n };\n timeouts.push(setTimeout(cb, delay || 0));\n });\n};\n\nclass TypeIt {\n element;\n timeouts;\n cursorPosition;\n predictedCursorPosition;\n statuses = {\n started: false,\n completed: false,\n frozen: false,\n destroyed: false,\n firing: false\n };\n opts;\n id;\n queue;\n cursor;\n flushCallback = null;\n unfreeze = () => {\n };\n constructor(element, options = {}) {\n this.opts = merge(DEFAULT_OPTIONS, options);\n this.element = selectorToElement(element);\n this.timeouts = [];\n this.cursorPosition = 0;\n this.unfreeze = () => {\n };\n this.predictedCursorPosition = null;\n this.statuses = merge({}, DEFAULT_STATUSES);\n this.id = generateHash();\n this.queue = Queue([{ delay: this.opts.startDelay }]);\n this.#buildOptions(options);\n this.cursor = this.#setUpCursor();\n this.element.dataset.typeitId = this.id;\n appendStyleBlock(PLACEHOLDER_CSS);\n if (this.opts.strings.length) {\n this.#generateQueue();\n }\n }\n /**\n * Can only be called once.\n */\n go() {\n if (this.statuses.started) {\n return this;\n }\n this.#attachCursor();\n if (!this.opts.waitUntilVisible) {\n this.#fire();\n return this;\n }\n fireWhenVisible(this.element, this.#fire.bind(this));\n return this;\n }\n destroy(shouldRemoveCursor = true) {\n this.timeouts = destroyTimeouts(this.timeouts);\n handleFunctionalArg(shouldRemoveCursor) && this.cursor && this.#removeNode(this.cursor);\n this.statuses.destroyed = true;\n }\n reset(rebuild) {\n !this.is(\"destroyed\") && this.destroy();\n if (rebuild) {\n this.queue.wipe();\n rebuild(this);\n } else {\n this.queue.reset();\n }\n this.cursorPosition = 0;\n for (let property in this.statuses) {\n this.statuses[property] = false;\n }\n this.element[this.#elementIsInput() ? \"value\" : \"innerHTML\"] = \"\";\n return this;\n }\n is = function(key) {\n return this.statuses[key];\n };\n type(string, actionOpts = {}) {\n string = handleFunctionalArg(string);\n let { instant } = actionOpts;\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let chars = maybeChunkStringAsHtml(string, this.opts.html);\n let charsAsQueueItems = chars.map((char) => {\n return {\n func: () => this.#type(char),\n char,\n delay: instant || isNonVoidElement(char) ? 0 : this.#getPace(),\n typeable: char.nodeType === Node.TEXT_NODE\n };\n });\n let itemsToQueue = [\n bookEndQueueItems[0],\n { func: async () => await this.opts.beforeString(string, this) },\n ...charsAsQueueItems,\n { func: async () => await this.opts.afterString(string, this) },\n bookEndQueueItems[1]\n ];\n return this.#queueAndReturn(itemsToQueue, actionOpts);\n }\n break(actionOpts = {}) {\n return this.#queueAndReturn(\n {\n func: () => this.#type(createElement(\"BR\")),\n typeable: true\n },\n actionOpts\n );\n }\n move(movementArg, actionOpts = {}) {\n movementArg = handleFunctionalArg(movementArg);\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let { instant, to } = actionOpts;\n let numberOfSteps = countStepsToSelector({\n queueItems: this.queue.getTypeable(),\n selector: movementArg === null ? \"\" : movementArg,\n to,\n cursorPosition: this.#derivedCursorPosition\n });\n let directionalStep = numberOfSteps < 0 ? -1 : 1;\n this.predictedCursorPosition = this.#derivedCursorPosition + numberOfSteps;\n return this.#queueAndReturn(\n [\n bookEndQueueItems[0],\n ...duplicate(\n {\n func: () => this.#move(directionalStep),\n delay: instant ? 0 : this.#getPace(),\n cursorable: true\n },\n Math.abs(numberOfSteps)\n ),\n bookEndQueueItems[1]\n ],\n actionOpts\n );\n }\n exec(func, actionOpts = {}) {\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n return this.#queueAndReturn(\n [bookEndQueueItems[0], { func: () => func(this) }, bookEndQueueItems[1]],\n actionOpts\n );\n }\n options(opts, actionOpts = {}) {\n opts = handleFunctionalArg(opts);\n this.#updateOptions(opts);\n return this.#queueAndReturn({}, actionOpts);\n }\n pause(milliseconds, actionOpts = {}) {\n return this.#queueAndReturn(\n { delay: handleFunctionalArg(milliseconds) },\n actionOpts\n );\n }\n delete(numCharacters = null, actionOpts = {}) {\n numCharacters = handleFunctionalArg(numCharacters);\n let bookEndQueueItems = this.#generateTemporaryOptionQueueItems(actionOpts);\n let num = numCharacters;\n let { instant, to } = actionOpts;\n let typeableQueueItems = this.queue.getTypeable();\n let rounds = (() => {\n if (num === null) {\n return typeableQueueItems.length;\n }\n if (isNumber(num)) {\n return num;\n }\n return countStepsToSelector({\n queueItems: typeableQueueItems,\n selector: num,\n cursorPosition: this.#derivedCursorPosition,\n to\n });\n })();\n return this.#queueAndReturn(\n [\n bookEndQueueItems[0],\n ...duplicate(\n {\n func: this.#delete.bind(this),\n delay: instant ? 0 : this.#getPace(1),\n deletable: true\n },\n rounds\n ),\n bookEndQueueItems[1]\n ],\n actionOpts\n );\n }\n freeze() {\n this.statuses.frozen = true;\n }\n /**\n * Like `.go()`, but more... \"off the grid.\"\n *\n * - won't trigger `afterComplete` callback\n * - items won't be replayed after `.reset()`\n *\n * When called, all non-done items will be \"flushed\" --\n * that is, executed, but not remembered.\n */\n flush(cb = null) {\n this.flushCallback = cb || this.flushCallback;\n if (this.statuses.firing) {\n return this;\n }\n this.#attachCursor();\n this.#fire(false).then(() => {\n if (this.queue.getPendingQueueItems().length > 0) {\n return this.flush();\n }\n this.flushCallback();\n this.flushCallback = null;\n });\n return this;\n }\n getQueue() {\n return this.queue;\n }\n getOptions() {\n return this.opts;\n }\n updateOptions(options) {\n return this.#updateOptions(options);\n }\n getElement() {\n return this.element;\n }\n empty(actionOpts = {}) {\n return this.#queueAndReturn({ func: this.#empty.bind(this) }, actionOpts);\n }\n async #empty() {\n if (this.#elementIsInput()) {\n this.element.value = \"\";\n return;\n }\n this.#allChars.forEach(this.#removeNode.bind(this));\n return;\n }\n /**\n * Execute items in the queue.\n *\n * @param remember If false, each queue item will be destroyed once executed.\n * @returns\n */\n async #fire(remember = true) {\n this.statuses.started = true;\n this.statuses.firing = true;\n let cleanUp = (qKey) => {\n this.queue.done(qKey, !remember);\n };\n try {\n let queueItems = [...this.queue.getQueue()];\n for (let index = 0; index < queueItems.length; index++) {\n let [queueKey, queueItem] = queueItems[index];\n if (queueItem.done) continue;\n if (!queueItem.deletable || queueItem.deletable && this.#allChars.length) {\n let newIndex = await this.#fireItemWithContext(index, queueItems);\n cleanUpSkipped({\n index,\n newIndex,\n queueItems,\n cleanUp\n });\n index = newIndex;\n }\n cleanUp(queueKey);\n }\n if (!remember) {\n this.statuses.firing = false;\n return this;\n }\n this.statuses.completed = true;\n this.statuses.firing = false;\n await this.opts.afterComplete(this);\n if (!this.opts.loop) {\n throw \"\";\n }\n let delay = this.opts.loopDelay;\n this.#wait(async () => {\n await this.#prepLoop(delay[0]);\n this.#fire();\n }, delay[1]);\n } catch (e) {\n }\n this.statuses.firing = false;\n return this;\n }\n async #move(step) {\n this.cursorPosition = updateCursorPosition(\n step,\n this.cursorPosition,\n this.#allChars\n );\n repositionCursor(this.element, this.#allChars, this.cursorPosition);\n }\n /**\n * 1. Reset queue.\n * 2. Reset initial pause.\n */\n async #prepLoop(delay) {\n let derivedCursorPosition = this.#derivedCursorPosition;\n derivedCursorPosition && await this.#move({ value: derivedCursorPosition });\n let queueItems = this.#allChars.map((c) => {\n return [\n Symbol(),\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1),\n deletable: true,\n shouldPauseCursor: () => true\n }\n ];\n });\n for (let index = 0; index < queueItems.length; index++) {\n await this.#fireItemWithContext(index, queueItems);\n }\n this.queue.reset();\n this.queue.set(0, { delay });\n }\n #fireItemWithContext(index, queueItems) {\n return fireItem({\n index,\n queueItems,\n wait: this.#wait.bind(this),\n cursor: this.cursor,\n cursorOptions: this.opts.cursor\n });\n }\n async #wait(callback, delay, silent = false) {\n if (this.statuses.frozen) {\n await new Promise((resolve) => {\n this.unfreeze = () => {\n this.statuses.frozen = false;\n resolve();\n };\n });\n }\n silent || await this.opts.beforeStep(this);\n await wait(callback, delay, this.timeouts);\n silent || await this.opts.afterStep(this);\n }\n /**\n * Attach it to the DOM so, along with the required CSS transition.\n */\n async #attachCursor() {\n !this.#elementIsInput() && this.cursor && this.element.appendChild(this.cursor);\n if (this.#shouldRenderCursor) {\n setCursorStyles(this.id, this.element);\n this.cursor.dataset.tiAnimationId = this.id;\n let { animation } = this.opts.cursor;\n let { frames, options } = animation;\n setCursorAnimation({\n frames,\n cursor: this.cursor,\n options: {\n duration: this.opts.cursorSpeed,\n ...options\n }\n });\n }\n }\n #elementIsInput() {\n return isInput(this.element);\n }\n #queueAndReturn(steps, opts) {\n this.queue.add(steps);\n this.#maybeAppendPause(opts);\n return this;\n }\n #maybeAppendPause(opts = {}) {\n let delay = opts.delay;\n delay && this.queue.add({ delay });\n }\n #generateTemporaryOptionQueueItems(newOptions = {}) {\n return [\n { func: () => this.#updateOptions(newOptions) },\n { func: () => this.#updateOptions(this.opts) }\n ];\n }\n async #updateOptions(opts) {\n this.opts = merge(this.opts, opts);\n }\n /**\n * Based on provided strings, generate a TypeIt queue\n * to be fired for each character in the string.\n */\n #generateQueue() {\n let strings = this.opts.strings.filter((string) => !!string);\n strings.forEach((string, index) => {\n this.type(string);\n if (index + 1 === strings.length) {\n return;\n }\n let splitItems = this.opts.breakLines ? [{ func: () => this.#type(createElement(\"BR\")), typeable: true }] : duplicate(\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1)\n },\n this.queue.getTypeable().length\n );\n this.#addSplitPause(splitItems);\n });\n }\n #buildOptions = (options) => {\n this.opts.cursor = processCursorOptions(\n options.cursor ?? DEFAULT_OPTIONS.cursor\n );\n this.opts.strings = this.#prependHardcodedStrings(\n asArray(this.opts.strings)\n );\n this.opts = merge(this.opts, {\n html: !this.#isInput && this.opts.html,\n nextStringDelay: calculateDelay(this.opts.nextStringDelay),\n loopDelay: calculateDelay(this.opts.loopDelay)\n });\n };\n #prependHardcodedStrings(strings) {\n let existingMarkup = this.element.innerHTML;\n if (!existingMarkup) {\n return strings;\n }\n this.element.innerHTML = \"\";\n if (this.opts.startDelete) {\n this.element.innerHTML = existingMarkup;\n expandTextNodes(this.element);\n this.#addSplitPause(\n duplicate(\n {\n func: this.#delete.bind(this),\n delay: this.#getPace(1),\n deletable: true\n },\n this.#allChars.length\n )\n );\n return strings;\n }\n return splitOnBreak(existingMarkup).concat(strings);\n }\n /**\n * Provided it's a non-form element and the options is provided,\n * set up the cursor element for the animation.\n */\n #setUpCursor() {\n if (this.#isInput) {\n return null;\n }\n let cursor = createElement(\"span\");\n cursor.className = CURSOR_CLASS;\n if (!this.#shouldRenderCursor) {\n cursor.style.visibility = \"hidden\";\n return cursor;\n }\n cursor.innerHTML = getParsedBody(this.opts.cursorChar).innerHTML;\n return cursor;\n }\n #addSplitPause(items) {\n let delay = this.opts.nextStringDelay;\n this.queue.add([{ delay: delay[0] }, ...items, { delay: delay[1] }]);\n }\n #type(char) {\n insertIntoElement(this.element, char);\n }\n #delete() {\n if (!this.#allChars.length) return;\n if (this.#isInput) {\n this.element.value = this.element.value.slice(0, -1);\n } else {\n this.#removeNode(this.#allChars[this.cursorPosition]);\n }\n }\n #removeNode(node) {\n removeNode(node, this.element);\n }\n #getPace(index = 0) {\n return calculatePace(this.opts)[index];\n }\n get #derivedCursorPosition() {\n return this.predictedCursorPosition ?? this.cursorPosition;\n }\n get #isInput() {\n return isInput(this.element);\n }\n get #shouldRenderCursor() {\n return !!this.opts.cursor && !this.#isInput;\n }\n get #allChars() {\n return getAllChars(this.element);\n }\n}\n\nexport { TypeIt as default };\n","import { consume } from '@lit/context'\nimport { $LitElement } from '@mixins/index'\nimport { delayContext } from '@schmancy/delay'\nimport hashContent from '@schmancy/utils/hashContent'\nimport { intersection$ } from '@schmancy/utils/intersection'\nimport { css, html, TemplateResult } from 'lit'\nimport { customElement, property, query, queryAssignedElements, queryAssignedNodes } from 'lit/decorators.js'\nimport TypeIt, { Options as TypeItOptions } from 'typeit'\n\n@customElement('schmancy-typewriter')\nexport class TypewriterElement extends $LitElement(css`\n\t:host {\n\t\tdisplay: inherit;\n\t}\n\n\t#typewriter {\n\t\t--ti-cursor-display: initial;\n\t}\n\n\t#typewriter .ti-cursor {\n\t\tdisplay: var(--ti-cursor-display);\n\t}\n`) {\n\t/**\n\t * Typing speed in milliseconds per character.\n\t */\n\t@property({ type: Number })\n\tspeed: number = 50\n\n\t/**\n\t * Delay before typing starts (ms).\n\t */\n\t@consume({ context: delayContext, subscribe: true })\n\t@property({ type: Number })\n\tdelay: number = 0\n\n\t/**\n\t * Automatically start typing on initialization.\n\t */\n\t@property({ type: Boolean })\n\tautoStart: boolean = true\n\n\t/**\n\t * The cursor character.\n\t */\n\t@property({ type: String })\n\tcursorChar: string = ''\n\n\t/**\n\t * Typing speed for deletions (ms per character).\n\t */\n\t@property({ type: Number })\n\tdeleteSpeed: number = 25\n\n\t@property({ type: Boolean }) once = true\n\t/**\n\t * TypeIt instance.\n\t */\n\tprivate typeItInstance: TypeIt | null = null\n\n\t/**\n\t * Reference to the typewriter container.\n\t */\n\t@query('#typewriter')\n\tprivate typewriterContainer!: HTMLElement\n\n\t@queryAssignedNodes({\n\t\tflatten: true,\n\t})\n\tprivate _getSlottedNodes!: Node[]\n\n\t@queryAssignedElements({\n\t\tflatten: true,\n\t})\n\tprivate _getSlottedElements!: HTMLElement[]\n\t/**\n\t * Lifecycle method called when the component is disconnected from the DOM.\n\t * Ensures that TypeIt instances are properly cleaned up.\n\t */\n\n\tprivate sessionKey = ''\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis._destroyTypeIt()\n\t}\n\n\t/**\n\t * Initializes the TypeIt instance with the provided slotted content.\n\t */\n\tprivate _startTyping() {\n\t\t// Destroy any existing TypeIt instance\n\t\tthis._destroyTypeIt()\n\n\t\tthis.sessionKey = this.generateSessionKey()\n\n\t\tif (this.once && sessionStorage.getItem(this.sessionKey) === 'true') {\n\t\t\t// Skip delay and render immediately if once is set and already rendered\n\t\t\tthis.shadowRoot?.querySelector('slot')?.removeAttribute('hidden')\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.typewriterContainer) {\n\t\t\tconsole.warn('Typewriter container not found.')\n\t\t\treturn\n\t\t}\n\n\t\t// Configure TypeIt options\n\t\tconst typeItOptions: TypeItOptions = {\n\t\t\tspeed: this.speed,\n\t\t\tstartDelay: this.delay,\n\t\t\tcursor: !!this.cursorChar,\n\t\t\tcursorChar: this.cursorChar,\n\t\t\tdeleteSpeed: this.deleteSpeed,\n\t\t\tafterComplete: () => {\n\t\t\t\tif (this.once) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsessionStorage.setItem(this.sessionKey, 'true')\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('Error saving to session storage:', error)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Dispatch the custom event\n\t\t\t\tthis.dispatchEvent(new CustomEvent('typeit-complete', { bubbles: true, composed: true }))\n\n\t\t\t\t// Hide the cursor\n\t\t\t\tthis.typewriterContainer.style.setProperty('--ti-cursor-display', 'none')\n\t\t\t},\n\t\t}\n\n\t\t// Initialize TypeIt\n\t\tthis.typeItInstance = new TypeIt(this.typewriterContainer, typeItOptions)\n\n\t\t// Process slotted content as actions\n\t\tconst slottedNodes = this._getSlottedNodes\n\t\tslottedNodes.forEach(node => {\n\t\t\tif (node.nodeType === Node.TEXT_NODE) {\n\t\t\t\t// Handle plain text\n\t\t\t\tthis.typeItInstance?.type(node.textContent || '')\n\t\t\t} else if (node instanceof HTMLElement) {\n\t\t\t\t// Handle custom element\n\t\t\t\tthis._processCustomElement(node)\n\t\t\t}\n\t\t})\n\n\t\t// Start the typing animation if autoStart is enabled\n\t\t// use rxjs to detect once we are in the view port\n\t\tintersection$(this.shadowRoot?.host as Element).subscribe(() => {\n\t\t\t// alert('in view')\n\t\t\tthis.typeItInstance?.go()\n\t\t})\n\t\t// Start the typing animation if autoStart is enabled\n\t}\n\n\tprivate generateSessionKey(): string {\n\t\tconst slotContent = this._getSlottedElements.map(el => el.outerHTML).join('')\n\t\treturn this.once ? hashContent(slotContent) : ''\n\t}\n\t/**\n\t * Destroys the current TypeIt instance if it exists.\n\t */\n\tprivate _destroyTypeIt() {\n\t\tif (this.typeItInstance) {\n\t\t\ttry {\n\t\t\t\tthis.typeItInstance.destroy()\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error('Error destroying TypeIt instance:', error)\n\t\t\t}\n\t\t\tthis.typeItInstance = null\n\t\t}\n\t}\n\n\t/**\n\t * Processes a custom element for its typing behavior.\n\t */\n\tprivate _processCustomElement(element: HTMLElement) {\n\t\tconst action = element.getAttribute('action')\n\t\tconst value = element.getAttribute('value')\n\t\tswitch (action) {\n\t\t\tcase 'pause':\n\t\t\t\tthis.typeItInstance?.pause(parseInt(value || '0', 10))\n\t\t\t\tbreak\n\t\t\tcase 'delete':\n\t\t\t\tthis.typeItInstance?.delete(parseInt(value || '0', 10))\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tif (element.tagName === 'P') {\n\t\t\t\t\tthis.typeItInstance.break()\n\t\t\t\t}\n\t\t\t\t// Treat as text if no action is defined\n\t\t\t\tthis.typeItInstance?.type(element.textContent || '')\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Renders the component's HTML.\n\t */\n\trender(): TemplateResult {\n\t\treturn html`<div id=\"typewriter\" aria-live=\"polite\"></div>\n\n\t\t\t<div class=\"typewriter\">\n\t\t\t\t<slot\n\t\t\t\t\thidden\n\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\tthis._startTyping()\n\t\t\t\t\t}}\n\t\t\t\t></slot>\n\t\t\t</div> `\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-typewriter': TypewriterElement\n\t}\n}\n"],"names":["isArray","thing","Array","asArray","value","DATA_ATTRIBUTE","CURSOR_CLASS","DEFAULT_STATUSES","started","completed","frozen","destroyed","DEFAULT_OPTIONS","breakLines","cursor","autoPause","autoPauseDelay","animation","frames","map","n","opacity","options","iterations","Infinity","easing","fill","cursorChar","cursorSpeed","deleteSpeed","html","lifeLike","loop","loopDelay","nextStringDelay","speed","startDelay","startDelete","strings","waitUntilVisible","beforeString","afterString","beforeStep","afterStep","afterComplete","PLACEHOLDER_CSS","createElement","el","document","createTextNode","content","appendStyleBlock","styles","id","styleBlock","appendChild","head","calculateDelay","delayArg","randomInRange","range","Math","abs","random","val","toArray","from","expandTextNodes","element","childNodes","forEach","child","nodeValue","c","parentNode","insertBefore","remove","getParsedBody","doc","implementation","createHTMLDocument","body","innerHTML","walkElementNodes","shouldReverse","shouldIncludeCursor","nextNode","querySelector","walker","createTreeWalker","NodeFilter","SHOW_ALL","acceptNode","node","classList","contains","FILTER_ACCEPT","FILTER_REJECT","nodes","originalParent","push","reverse","maybeChunkStringAsHtml","str","asHtml","cleanUpSkipped","index","newIndex","queueItems","cleanUp","i","isNumber","Number","isInteger","countStepsToSelector","selector","cursorPosition","to","isMovingToEnd","RegExp","test","selectorIndex","findIndex","char","t","parentElement","parentMatches","matches","firstChild","isSameNode","length","duplicate","times","beforePaint","cb","Promise","resolve","requestAnimationFrame","async","getAnimationFromElement","getAnimations","find","dataset","tiAnimationId","setCursorAnimation","animate","pause","play","execute","queueItem","func","call","fireItem","wait","cursorOptions","instantQueue","tempIndex","futureItem","shouldBeGrouped","delay","shouldPauseCursor","q","effect","getComputedTiming","cancel","oldCurrentTime","currentTime","newAnimation","e","isInput","handleFunctionalArg","arg","select","all","merge","originalObj","newObj","Object","assign","cursorFontStyles","color","transform","TypeIt","__privateAdd","___instances","timeouts","predictedCursorPosition","statuses","firing","opts","queue","flushCallback","unfreeze","is","key","this","buildOptions","newOptions","defaultFrames","defaultOptions","prependHardcodedStrings","toString","substring","initialItems","add","steps","step","_q","set","Symbol","innerText","buildQueueItem","Boolean","typeable","cursorable","deletable","getQueue","rawValues","values","Map","item","keys","wipe","done","shouldDestroy","delete","get","reset","destroy","getItems","filter","getTypeable","getPendingQueueItems","pending","setUpCursor","typeitId","attachCursor","bind","IntersectionObserver","entries","observer2","entry","isIntersecting","unobserve","threshold","observe","shouldRemoveCursor","clearTimeout","removeNode","rebuild","property","elementIsInput","string","actionOpts","instant","bookEndQueueItems","generateTemporaryOptionQueueItems","charsAsQueueItems","type","outerHTML","nodeType","Node","TEXT_NODE","itemsToQueue","queueAndReturn","movementArg","numberOfSteps","directionalStep","move","milliseconds","numCharacters","num","typeableQueueItems","rounds","derivedCursorPosition","then","flush","empty","y_fn","r_fn","fire","remember","qKey","queueKey","prepLoop","d_fn","printedCharacters","allChars","min","max","newCursorPosition","nodeToInsertBefore","g_fn","fireItemWithContext","w_fn","callback","silent","setTimeout","shouldRenderCursor","cursorSelector","computedStyles","getComputedStyle","customProperties","reduce","accumulator","duration","n_fn","u_fn","maybeAppendPause","S_fn","o_fn","updateOptions","i_fn","generateQueue","splitItems","C_fn","existingMarkup","addSplitPause","replace","trim","split","concat","e_fn","className","style","visibility","I_fn","items","a_fn","originalTarget","character","textContent","target","tagName","cursorNode","f_fn","slice","h_fn","rootElement","nodeParent","l_fn","getPace","v_get","TypewriterElement","$LitElement","css","constructor","super","arguments","autoStart","once","typeItInstance","sessionKey","disconnectedCallback","_destroyTypeIt","_startTyping","generateSessionKey","sessionStorage","getItem","shadowRoot","removeAttribute","typewriterContainer","typeItOptions","setItem","dispatchEvent","CustomEvent","bubbles","composed","setProperty","_getSlottedNodes","HTMLElement","_processCustomElement","intersection$","host","subscribe","go","slotContent","_getSlottedElements","join","hashContent","action","getAttribute","parseInt","break","__decorateClass","prototype","consume","context","delayContext","String","query","queryAssignedNodes","flatten","queryAssignedElements","customElement"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./typewriter-B9CTFK02.cjs");Object.defineProperty(exports,"TypewriterElement",{enumerable:!0,get:()=>e.TypewriterElement});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./typewriter-XHOWCYMc.cjs");Object.defineProperty(exports,"TypewriterElement",{enumerable:!0,get:()=>e.TypewriterElement});
2
2
  //# sourceMappingURL=typewriter.cjs.map
@@ -1,4 +1,4 @@
1
- import { T as t } from "./typewriter-CrSNqZl5.js";
1
+ import { T as t } from "./typewriter-qllBgg5K.js";
2
2
  export {
3
3
  t as TypewriterElement
4
4
  };
@@ -1,4 +1,4 @@
1
- "use strict";const r=require("./tailwind.mixin-CYcf-U4R.cjs"),a=require("lit"),e=require("lit/decorators.js");var g=Object.defineProperty,y=Object.getOwnPropertyDescriptor,i=(l,o,h,n)=>{for(var p,t=n>1?void 0:n?y(o,h):o,s=l.length-1;s>=0;s--)(p=l[s])&&(t=(n?p(o,h,t):p(t))||t);return n&&t&&g(o,h,t),t};exports.SchmancyTypography=class extends r.TailwindElement(a.css`
1
+ "use strict";const r=require("./tailwind.mixin-Cfwi8T64.cjs"),a=require("lit"),e=require("lit/decorators.js");var g=Object.defineProperty,y=Object.getOwnPropertyDescriptor,i=(l,o,h,n)=>{for(var p,t=n>1?void 0:n?y(o,h):o,s=l.length-1;s>=0;s--)(p=l[s])&&(t=(n?p(o,h,t):p(t))||t);return n&&t&&g(o,h,t),t};exports.SchmancyTypography=class extends r.TailwindElement(a.css`
2
2
  :host {
3
3
  display: block;
4
4
  font-family: inherit;
@@ -283,4 +283,4 @@
283
283
 
284
284
  /* Note: Custom letter-spacing, font-size, and line-height should be applied via inline styles or Tailwind classes */
285
285
  `){constructor(){super(...arguments),this.type="body",this.token="md"}render(){return a.html`<slot></slot>`}},i([e.property({type:String,reflect:!0})],exports.SchmancyTypography.prototype,"type",2),i([e.property({type:String,reflect:!0})],exports.SchmancyTypography.prototype,"token",2),i([e.property({type:String,reflect:!0})],exports.SchmancyTypography.prototype,"align",2),i([e.property({type:String,reflect:!0})],exports.SchmancyTypography.prototype,"weight",2),i([e.property({type:String,reflect:!0})],exports.SchmancyTypography.prototype,"transform",2),i([e.property({type:Number,attribute:"max-lines",reflect:!0})],exports.SchmancyTypography.prototype,"maxLines",2),exports.SchmancyTypography=i([e.customElement("schmancy-typography")],exports.SchmancyTypography);
286
- //# sourceMappingURL=typography-846IJx5H.cjs.map
286
+ //# sourceMappingURL=typography-B2xrKjE_.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"typography-846IJx5H.cjs","sources":["../src/typography/typography.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n// Material Design 3 typography - https://m3.material.io/styles/typography/type-scale-tokens\n\n/**\n * @element schmancy-typography\n * @slot - The text for the typography.\n */\n@customElement('schmancy-typography')\nexport class SchmancyTypography extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tfont-family: inherit;\n\t\thyphens: none;\n\t}\n\n\t/* Text alignment */\n\t:host([align='center']) {\n\t\ttext-align: center;\n\t}\n\n\t:host([align='left']) {\n\t\ttext-align: start;\n\t}\n\n\t:host([align='right']) {\n\t\ttext-align: right;\n\t}\n\n\t:host([align='justify']) {\n\t\ttext-align: justify;\n\t}\n\n\t/* Max lines / line clamping */\n\t:host([max-lines='1']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 1;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='2']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 2;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='3']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='4']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 4;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='5']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 5;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='6']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 6;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t/* Font weight */\n\t:host([weight='bold']) {\n\t\tfont-weight: 700;\n\t}\n\n\t:host([weight='medium']) {\n\t\tfont-weight: 500;\n\t}\n\n\t:host([weight='normal']) {\n\t\tfont-weight: 400;\n\t}\n\n\t/* Text transform */\n\t:host([transform='uppercase']) {\n\t\ttext-transform: uppercase;\n\t}\n\n\t:host([transform='lowercase']) {\n\t\ttext-transform: lowercase;\n\t}\n\n\t:host([transform='capitalize']) {\n\t\ttext-transform: capitalize;\n\t}\n\n\t:host([transform='normal']) {\n\t\ttext-transform: none;\n\t}\n\n\t/* Display typography variants - Material Design 3 + Extended */\n\t:host([type='display'][token='xl']) {\n\t\tfont-size: 72px;\n\t\tline-height: 80px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='lg']) {\n\t\tfont-size: 57px;\n\t\tline-height: 64px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='md']) {\n\t\tfont-size: 45px;\n\t\tline-height: 52px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='sm']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='xs']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Headline typography variants - Material Design 3 + Extended */\n\t:host([type='headline'][token='xl']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='lg']) {\n\t\tfont-size: 32px;\n\t\tline-height: 40px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='md']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='sm']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='xs']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Title typography variants - Material Design 3 + Extended */\n\t:host([type='title'][token='xl']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='lg']) {\n\t\tfont-size: 22px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Subtitle typography variants - Extended from Material Design 3 */\n\t:host([type='subtitle'][token='xl']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='lg']) {\n\t\tfont-size: 18px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Body typography variants - Material Design 3 + Extended */\n\t:host([type='body'][token='xl']) {\n\t\tfont-size: 18px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='lg']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='md']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='sm']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Label typography variants - Material Design 3 + Extended */\n\t:host([type='label'][token='xl']) {\n\t\tfont-size: 16px;\n\t\tline-height: 22px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='lg']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='md']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='sm']) {\n\t\tfont-size: 11px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Note: Custom letter-spacing, font-size, and line-height should be applied via inline styles or Tailwind classes */\n`) {\n\t/**\n\t * @attr type - The type of the typography.\n\t * @default 'body'\n\t * @type {'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttype: 'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label' = 'body'\n\n\t/**\n\t * @attr token - The token of the typography.\n\t * @default 'md'\n\t * @type {'xs' | 'sm' | 'md' | 'lg' | 'xl'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttoken: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'left' |'center' |'right'}\n\t */\n\t@property({ type: String, reflect: true })\n\talign: 'left' | 'center' | 'justify' | 'right' | undefined\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'normal' | 'medium' |'bold'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true })\n\tweight: 'normal' | 'medium' | 'bold' | undefined\n\t\n\t/**\n\t *\n\t * @attr\n\t * @default inherit\n\t * @type {'uppercase' |'lowercase' |'capitalize' |'normal'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true }) \n\ttransform: 'uppercase' | 'lowercase' | 'capitalize' | 'normal' | undefined\n\n\t@property({ type: Number, attribute: 'max-lines', reflect: true }) \n\tmaxLines: 1 | 2 | 3 | 4 | 5 | 6 | undefined\n\n\tprotected render(): unknown {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-typography': SchmancyTypography\n\t}\n}"],"names":["SchmancyTypography","TailwindElement","css","constructor","super","arguments","this","type","token","render","html","__decorateClass","property","String","reflect","prototype","Number","attribute","customElement"],"mappings":"8SAWaA,QAAAA,mBAAN,cAAiCC,EAAAA,gBAAgBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAAjD,aAAAC,CAAAC,MAAAC,GAAAA,SAAAA,EAmSmEC,KAAAC,KAAA,OAQ/BD,KAAAE,MAAA,IAAA,CAgChC,QAAAC,CACF,OAAAC,EAAAA,mBAAA,CAAA,EAzCRC,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAS,EAAA,CAAA,CAAA,EAlSvBd,2BAmSZe,UAAA,OAAA,CAAA,EAQAJ,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAS,EAAA,CAAA,CAAA,EA1SvBd,2BA2SZe,UAAA,QAAA,CAAA,EAQAJ,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAAA,EAlTdd,CAAAA,CAAAA,EAAAA,2BAmTZe,UAAA,QAAA,CASAJ,EAAAA,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAAA,EA3Tdd,CAAAA,CAAAA,EAAAA,2BA4TZe,UAAA,SAAA,CAUAJ,EAAAA,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAAA,EArUdd,CAAAA,CAAAA,EAAAA,2BAsUZe,UAAA,YAAA,CAGAJ,EAAAA,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMS,OAAQC,UAAW,YAAaH,QAAAA,MAxUtCd,2BAyUZe,UAAA,WAAA,CAzUYf,EAAAA,QAANA,mBAAAW,EAAA,CADNO,EAAAA,cAAc,qBAAA,CAAA,EACFlB"}
1
+ {"version":3,"file":"typography-B2xrKjE_.cjs","sources":["../src/typography/typography.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n// Material Design 3 typography - https://m3.material.io/styles/typography/type-scale-tokens\n\n/**\n * @element schmancy-typography\n * @slot - The text for the typography.\n */\n@customElement('schmancy-typography')\nexport class SchmancyTypography extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tfont-family: inherit;\n\t\thyphens: none;\n\t}\n\n\t/* Text alignment */\n\t:host([align='center']) {\n\t\ttext-align: center;\n\t}\n\n\t:host([align='left']) {\n\t\ttext-align: start;\n\t}\n\n\t:host([align='right']) {\n\t\ttext-align: right;\n\t}\n\n\t:host([align='justify']) {\n\t\ttext-align: justify;\n\t}\n\n\t/* Max lines / line clamping */\n\t:host([max-lines='1']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 1;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='2']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 2;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='3']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='4']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 4;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='5']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 5;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='6']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 6;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t/* Font weight */\n\t:host([weight='bold']) {\n\t\tfont-weight: 700;\n\t}\n\n\t:host([weight='medium']) {\n\t\tfont-weight: 500;\n\t}\n\n\t:host([weight='normal']) {\n\t\tfont-weight: 400;\n\t}\n\n\t/* Text transform */\n\t:host([transform='uppercase']) {\n\t\ttext-transform: uppercase;\n\t}\n\n\t:host([transform='lowercase']) {\n\t\ttext-transform: lowercase;\n\t}\n\n\t:host([transform='capitalize']) {\n\t\ttext-transform: capitalize;\n\t}\n\n\t:host([transform='normal']) {\n\t\ttext-transform: none;\n\t}\n\n\t/* Display typography variants - Material Design 3 + Extended */\n\t:host([type='display'][token='xl']) {\n\t\tfont-size: 72px;\n\t\tline-height: 80px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='lg']) {\n\t\tfont-size: 57px;\n\t\tline-height: 64px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='md']) {\n\t\tfont-size: 45px;\n\t\tline-height: 52px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='sm']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='xs']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Headline typography variants - Material Design 3 + Extended */\n\t:host([type='headline'][token='xl']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='lg']) {\n\t\tfont-size: 32px;\n\t\tline-height: 40px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='md']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='sm']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='xs']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Title typography variants - Material Design 3 + Extended */\n\t:host([type='title'][token='xl']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='lg']) {\n\t\tfont-size: 22px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Subtitle typography variants - Extended from Material Design 3 */\n\t:host([type='subtitle'][token='xl']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='lg']) {\n\t\tfont-size: 18px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Body typography variants - Material Design 3 + Extended */\n\t:host([type='body'][token='xl']) {\n\t\tfont-size: 18px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='lg']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='md']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='sm']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Label typography variants - Material Design 3 + Extended */\n\t:host([type='label'][token='xl']) {\n\t\tfont-size: 16px;\n\t\tline-height: 22px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='lg']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='md']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='sm']) {\n\t\tfont-size: 11px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Note: Custom letter-spacing, font-size, and line-height should be applied via inline styles or Tailwind classes */\n`) {\n\t/**\n\t * @attr type - The type of the typography.\n\t * @default 'body'\n\t * @type {'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttype: 'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label' = 'body'\n\n\t/**\n\t * @attr token - The token of the typography.\n\t * @default 'md'\n\t * @type {'xs' | 'sm' | 'md' | 'lg' | 'xl'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttoken: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'left' |'center' |'right'}\n\t */\n\t@property({ type: String, reflect: true })\n\talign: 'left' | 'center' | 'justify' | 'right' | undefined\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'normal' | 'medium' |'bold'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true })\n\tweight: 'normal' | 'medium' | 'bold' | undefined\n\t\n\t/**\n\t *\n\t * @attr\n\t * @default inherit\n\t * @type {'uppercase' |'lowercase' |'capitalize' |'normal'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true }) \n\ttransform: 'uppercase' | 'lowercase' | 'capitalize' | 'normal' | undefined\n\n\t@property({ type: Number, attribute: 'max-lines', reflect: true }) \n\tmaxLines: 1 | 2 | 3 | 4 | 5 | 6 | undefined\n\n\tprotected render(): unknown {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-typography': SchmancyTypography\n\t}\n}"],"names":["SchmancyTypography","TailwindElement","css","constructor","super","arguments","this","type","token","render","html","__decorateClass","property","String","reflect","prototype","Number","attribute","customElement"],"mappings":"8SAWaA,QAAAA,mBAAN,cAAiCC,EAAAA,gBAAgBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAAjD,aAAAC,CAAAC,MAAAC,GAAAA,SAAAA,EAmSmEC,KAAAC,KAAA,OAQ/BD,KAAAE,MAAA,IAAA,CAgChC,QAAAC,CACF,OAAAC,EAAAA,mBAAA,CAAA,EAzCRC,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAS,EAAA,CAAA,CAAA,EAlSvBd,2BAmSZe,UAAA,OAAA,CAAA,EAQAJ,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAS,EAAA,CAAA,CAAA,EA1SvBd,2BA2SZe,UAAA,QAAA,CAAA,EAQAJ,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAAA,EAlTdd,CAAAA,CAAAA,EAAAA,2BAmTZe,UAAA,QAAA,CASAJ,EAAAA,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAAA,EA3Tdd,CAAAA,CAAAA,EAAAA,2BA4TZe,UAAA,SAAA,CAUAJ,EAAAA,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,QAAAA,EArUdd,CAAAA,CAAAA,EAAAA,2BAsUZe,UAAA,YAAA,CAGAJ,EAAAA,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMS,OAAQC,UAAW,YAAaH,QAAAA,MAxUtCd,2BAyUZe,UAAA,WAAA,CAzUYf,EAAAA,QAANA,mBAAAW,EAAA,CADNO,EAAAA,cAAc,qBAAA,CAAA,EACFlB"}
@@ -1,4 +1,4 @@
1
- import { T as r } from "./tailwind.mixin-D0pn9tte.js";
1
+ import { T as r } from "./tailwind.mixin-Ct_5TKPq.js";
2
2
  import { css as x, html as g } from "lit";
3
3
  import { property as o, customElement as f } from "lit/decorators.js";
4
4
  var y = Object.defineProperty, d = Object.getOwnPropertyDescriptor, i = (a, n, s, h) => {
@@ -301,4 +301,4 @@ i([o({ type: String, reflect: !0 })], t.prototype, "type", 2), i([o({ type: Stri
301
301
  export {
302
302
  t as S
303
303
  };
304
- //# sourceMappingURL=typography-B2HnnOVG.js.map
304
+ //# sourceMappingURL=typography-Z6bJJUm5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typography-B2HnnOVG.js","sources":["../src/typography/typography.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n// Material Design 3 typography - https://m3.material.io/styles/typography/type-scale-tokens\n\n/**\n * @element schmancy-typography\n * @slot - The text for the typography.\n */\n@customElement('schmancy-typography')\nexport class SchmancyTypography extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tfont-family: inherit;\n\t\thyphens: none;\n\t}\n\n\t/* Text alignment */\n\t:host([align='center']) {\n\t\ttext-align: center;\n\t}\n\n\t:host([align='left']) {\n\t\ttext-align: start;\n\t}\n\n\t:host([align='right']) {\n\t\ttext-align: right;\n\t}\n\n\t:host([align='justify']) {\n\t\ttext-align: justify;\n\t}\n\n\t/* Max lines / line clamping */\n\t:host([max-lines='1']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 1;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='2']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 2;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='3']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='4']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 4;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='5']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 5;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='6']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 6;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t/* Font weight */\n\t:host([weight='bold']) {\n\t\tfont-weight: 700;\n\t}\n\n\t:host([weight='medium']) {\n\t\tfont-weight: 500;\n\t}\n\n\t:host([weight='normal']) {\n\t\tfont-weight: 400;\n\t}\n\n\t/* Text transform */\n\t:host([transform='uppercase']) {\n\t\ttext-transform: uppercase;\n\t}\n\n\t:host([transform='lowercase']) {\n\t\ttext-transform: lowercase;\n\t}\n\n\t:host([transform='capitalize']) {\n\t\ttext-transform: capitalize;\n\t}\n\n\t:host([transform='normal']) {\n\t\ttext-transform: none;\n\t}\n\n\t/* Display typography variants - Material Design 3 + Extended */\n\t:host([type='display'][token='xl']) {\n\t\tfont-size: 72px;\n\t\tline-height: 80px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='lg']) {\n\t\tfont-size: 57px;\n\t\tline-height: 64px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='md']) {\n\t\tfont-size: 45px;\n\t\tline-height: 52px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='sm']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='xs']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Headline typography variants - Material Design 3 + Extended */\n\t:host([type='headline'][token='xl']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='lg']) {\n\t\tfont-size: 32px;\n\t\tline-height: 40px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='md']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='sm']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='xs']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Title typography variants - Material Design 3 + Extended */\n\t:host([type='title'][token='xl']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='lg']) {\n\t\tfont-size: 22px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Subtitle typography variants - Extended from Material Design 3 */\n\t:host([type='subtitle'][token='xl']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='lg']) {\n\t\tfont-size: 18px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Body typography variants - Material Design 3 + Extended */\n\t:host([type='body'][token='xl']) {\n\t\tfont-size: 18px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='lg']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='md']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='sm']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Label typography variants - Material Design 3 + Extended */\n\t:host([type='label'][token='xl']) {\n\t\tfont-size: 16px;\n\t\tline-height: 22px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='lg']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='md']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='sm']) {\n\t\tfont-size: 11px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Note: Custom letter-spacing, font-size, and line-height should be applied via inline styles or Tailwind classes */\n`) {\n\t/**\n\t * @attr type - The type of the typography.\n\t * @default 'body'\n\t * @type {'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttype: 'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label' = 'body'\n\n\t/**\n\t * @attr token - The token of the typography.\n\t * @default 'md'\n\t * @type {'xs' | 'sm' | 'md' | 'lg' | 'xl'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttoken: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'left' |'center' |'right'}\n\t */\n\t@property({ type: String, reflect: true })\n\talign: 'left' | 'center' | 'justify' | 'right' | undefined\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'normal' | 'medium' |'bold'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true })\n\tweight: 'normal' | 'medium' | 'bold' | undefined\n\t\n\t/**\n\t *\n\t * @attr\n\t * @default inherit\n\t * @type {'uppercase' |'lowercase' |'capitalize' |'normal'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true }) \n\ttransform: 'uppercase' | 'lowercase' | 'capitalize' | 'normal' | undefined\n\n\t@property({ type: Number, attribute: 'max-lines', reflect: true }) \n\tmaxLines: 1 | 2 | 3 | 4 | 5 | 6 | undefined\n\n\tprotected render(): unknown {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-typography': SchmancyTypography\n\t}\n}"],"names":["SchmancyTypography","TailwindElement","css","constructor","super","arguments","this","type","token","html","__decorateClass","property","String","reflect","prototype","Number","attribute","customElement"],"mappings":";;;;;;;AAWa,IAAAA,IAAN,cAAiCC,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;EAAjD,cAAAC;AAAAC,aAAAC,SAmSmEC,GAAAA,KAAAC,OAAA,QAQ/BD,KAAAE,QAAA;AAAA,EAAA;AAAA,EAgChC,SACF;AAAA,WAAAC;AAAAA,EAAA;AAAA;AAzCRC,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,YAlSdb,CAAAA,CAAAA,GAAAA,EAmSZc,WAAA,QAAA,CAAA,GAQAJ,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,YA1Sdb,CAAAA,CAAAA,GAAAA,EA2SZc,WAAA,SAAA,CAAA,GAQAJ,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,SAAAA,QAlTdb,EAmTZc,WAAA,SAAA,CASAJ,GAAAA,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,SAAAA,QA3Tdb,EA4TZc,WAAA,UAAA,CAUAJ,GAAAA,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,SAAS,GAAA,CAAA,CAAA,GArUvBb,EAsUZc,WAAA,aAAA,IAGAJ,EAAA,CADCC,EAAS,EAAEJ,MAAMQ,QAAQC,WAAW,aAAaH,YAxUtCb,CAAAA,CAAAA,GAAAA,EAyUZc,WAAA,YAAA,CAAA,GAzUYd,IAANU,EAAA,CADNO,EAAc,qBAAA,CAAA,GACFjB;"}
1
+ {"version":3,"file":"typography-Z6bJJUm5.js","sources":["../src/typography/typography.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/tailwind.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n// Material Design 3 typography - https://m3.material.io/styles/typography/type-scale-tokens\n\n/**\n * @element schmancy-typography\n * @slot - The text for the typography.\n */\n@customElement('schmancy-typography')\nexport class SchmancyTypography extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tfont-family: inherit;\n\t\thyphens: none;\n\t}\n\n\t/* Text alignment */\n\t:host([align='center']) {\n\t\ttext-align: center;\n\t}\n\n\t:host([align='left']) {\n\t\ttext-align: start;\n\t}\n\n\t:host([align='right']) {\n\t\ttext-align: right;\n\t}\n\n\t:host([align='justify']) {\n\t\ttext-align: justify;\n\t}\n\n\t/* Max lines / line clamping */\n\t:host([max-lines='1']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 1;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='2']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 2;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='3']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='4']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 4;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='5']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 5;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t:host([max-lines='6']) {\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 6;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\n\t/* Font weight */\n\t:host([weight='bold']) {\n\t\tfont-weight: 700;\n\t}\n\n\t:host([weight='medium']) {\n\t\tfont-weight: 500;\n\t}\n\n\t:host([weight='normal']) {\n\t\tfont-weight: 400;\n\t}\n\n\t/* Text transform */\n\t:host([transform='uppercase']) {\n\t\ttext-transform: uppercase;\n\t}\n\n\t:host([transform='lowercase']) {\n\t\ttext-transform: lowercase;\n\t}\n\n\t:host([transform='capitalize']) {\n\t\ttext-transform: capitalize;\n\t}\n\n\t:host([transform='normal']) {\n\t\ttext-transform: none;\n\t}\n\n\t/* Display typography variants - Material Design 3 + Extended */\n\t:host([type='display'][token='xl']) {\n\t\tfont-size: 72px;\n\t\tline-height: 80px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='lg']) {\n\t\tfont-size: 57px;\n\t\tline-height: 64px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='md']) {\n\t\tfont-size: 45px;\n\t\tline-height: 52px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='sm']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='display'][token='xs']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Headline typography variants - Material Design 3 + Extended */\n\t:host([type='headline'][token='xl']) {\n\t\tfont-size: 36px;\n\t\tline-height: 44px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='lg']) {\n\t\tfont-size: 32px;\n\t\tline-height: 40px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='md']) {\n\t\tfont-size: 28px;\n\t\tline-height: 36px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='sm']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='headline'][token='xs']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Title typography variants - Material Design 3 + Extended */\n\t:host([type='title'][token='xl']) {\n\t\tfont-size: 24px;\n\t\tline-height: 32px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='lg']) {\n\t\tfont-size: 22px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='title'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='title'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Subtitle typography variants - Extended from Material Design 3 */\n\t:host([type='subtitle'][token='xl']) {\n\t\tfont-size: 20px;\n\t\tline-height: 28px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='lg']) {\n\t\tfont-size: 18px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='md']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='sm']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='subtitle'][token='xs']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Body typography variants - Material Design 3 + Extended */\n\t:host([type='body'][token='xl']) {\n\t\tfont-size: 18px;\n\t\tline-height: 28px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='lg']) {\n\t\tfont-size: 16px;\n\t\tline-height: 24px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='md']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='sm']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 400;\n\t}\n\n\t:host([type='body'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 400;\n\t}\n\n\t/* Label typography variants - Material Design 3 + Extended */\n\t:host([type='label'][token='xl']) {\n\t\tfont-size: 16px;\n\t\tline-height: 22px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='lg']) {\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='md']) {\n\t\tfont-size: 12px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='sm']) {\n\t\tfont-size: 11px;\n\t\tline-height: 16px;\n\t\tfont-weight: 500;\n\t}\n\n\t:host([type='label'][token='xs']) {\n\t\tfont-size: 10px;\n\t\tline-height: 14px;\n\t\tfont-weight: 500;\n\t}\n\n\t/* Note: Custom letter-spacing, font-size, and line-height should be applied via inline styles or Tailwind classes */\n`) {\n\t/**\n\t * @attr type - The type of the typography.\n\t * @default 'body'\n\t * @type {'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttype: 'display' | 'headline' | 'title' | 'subtitle' | 'body' | 'label' = 'body'\n\n\t/**\n\t * @attr token - The token of the typography.\n\t * @default 'md'\n\t * @type {'xs' | 'sm' | 'md' | 'lg' | 'xl'}\n\t */\n\t@property({ type: String, reflect: true })\n\ttoken: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md'\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'left' |'center' |'right'}\n\t */\n\t@property({ type: String, reflect: true })\n\talign: 'left' | 'center' | 'justify' | 'right' | undefined\n\n\t/**\n\t * @attr\n\t * @default inherit\n\t * @type {'normal' | 'medium' |'bold'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true })\n\tweight: 'normal' | 'medium' | 'bold' | undefined\n\t\n\t/**\n\t *\n\t * @attr\n\t * @default inherit\n\t * @type {'uppercase' |'lowercase' |'capitalize' |'normal'}\n\t * @public\n\t */\n\t@property({ type: String, reflect: true }) \n\ttransform: 'uppercase' | 'lowercase' | 'capitalize' | 'normal' | undefined\n\n\t@property({ type: Number, attribute: 'max-lines', reflect: true }) \n\tmaxLines: 1 | 2 | 3 | 4 | 5 | 6 | undefined\n\n\tprotected render(): unknown {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-typography': SchmancyTypography\n\t}\n}"],"names":["SchmancyTypography","TailwindElement","css","constructor","super","arguments","this","type","token","html","__decorateClass","property","String","reflect","prototype","Number","attribute","customElement"],"mappings":";;;;;;;AAWa,IAAAA,IAAN,cAAiCC,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;EAAjD,cAAAC;AAAAC,aAAAC,SAmSmEC,GAAAA,KAAAC,OAAA,QAQ/BD,KAAAE,QAAA;AAAA,EAAA;AAAA,EAgChC,SACF;AAAA,WAAAC;AAAAA,EAAA;AAAA;AAzCRC,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,YAlSdb,CAAAA,CAAAA,GAAAA,EAmSZc,WAAA,QAAA,CAAA,GAQAJ,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,YA1Sdb,CAAAA,CAAAA,GAAAA,EA2SZc,WAAA,SAAA,CAAA,GAQAJ,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,SAAAA,QAlTdb,EAmTZc,WAAA,SAAA,CASAJ,GAAAA,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,SAAAA,QA3Tdb,EA4TZc,WAAA,UAAA,CAUAJ,GAAAA,EAAA,CADCC,EAAS,EAAEJ,MAAMK,QAAQC,SAAS,GAAA,CAAA,CAAA,GArUvBb,EAsUZc,WAAA,aAAA,IAGAJ,EAAA,CADCC,EAAS,EAAEJ,MAAMQ,QAAQC,WAAW,aAAaH,YAxUtCb,CAAAA,CAAAA,GAAAA,EAyUZc,WAAA,YAAA,CAAA,GAzUYd,IAANU,EAAA,CADNO,EAAc,qBAAA,CAAA,GACFjB;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./typography-846IJx5H.cjs");Object.defineProperty(exports,"SchmancyTypography",{enumerable:!0,get:()=>e.SchmancyTypography});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./typography-B2xrKjE_.cjs");Object.defineProperty(exports,"SchmancyTypography",{enumerable:!0,get:()=>e.SchmancyTypography});
2
2
  //# sourceMappingURL=typography.cjs.map
@@ -1,4 +1,4 @@
1
- import { S as p } from "./typography-B2HnnOVG.js";
1
+ import { S as p } from "./typography-Z6bJJUm5.js";
2
2
  export {
3
3
  p as SchmancyTypography
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mhmo91/schmancy",
3
- "version": "0.3.6",
3
+ "version": "0.3.7",
4
4
  "description": "UI library build with web components",
5
5
  "main": "./dist/index.js",
6
6
  "packageManager": "yarn@4.6.0",
@@ -51,6 +51,14 @@ declare class AreaService implements AreaSubscription {
51
51
  * Get a specific param from an area with null safety
52
52
  */
53
53
  param<T = unknown>(areaName: string, key: string): Observable<T>;
54
+ /**
55
+ * Get props from an area with type safety
56
+ */
57
+ props<T extends Record<string, unknown> = Record<string, unknown>>(areaName: string): Observable<T>;
58
+ /**
59
+ * Get a specific prop from an area with null safety
60
+ */
61
+ prop<T = unknown>(areaName: string, key: string): Observable<T>;
54
62
  /**
55
63
  * Find teleportation components
56
64
  */
@@ -3,6 +3,7 @@ export type RouteAction = {
3
3
  area: string;
4
4
  state?: Record<string, unknown>;
5
5
  params?: Record<string, unknown>;
6
+ props?: Record<string, unknown>;
6
7
  historyStrategy?: THistoryStrategy;
7
8
  clearQueryParams?: string[] | boolean | null;
8
9
  _source?: 'programmatic' | 'browser' | 'initial';
@@ -12,6 +13,7 @@ export type ActiveRoute = {
12
13
  area: string;
13
14
  state?: Record<string, unknown>;
14
15
  params?: Record<string, unknown>;
16
+ props?: Record<string, unknown>;
15
17
  };
16
18
  /**
17
19
  * Interface for subscribing to area changes
@@ -49,6 +51,19 @@ export interface AreaSubscription {
49
51
  * @returns Observable of the param value
50
52
  */
51
53
  param<T = unknown>(areaName: string, key: string): import('rxjs').Observable<T>;
54
+ /**
55
+ * Get props from an area
56
+ * @param areaName Name of the area to subscribe to
57
+ * @returns Observable of the area's props
58
+ */
59
+ props<T extends Record<string, unknown> = Record<string, unknown>>(areaName: string): import('rxjs').Observable<T>;
60
+ /**
61
+ * Get a specific prop from an area
62
+ * @param areaName Name of the area to subscribe to
63
+ * @param key Key of the prop to select
64
+ * @returns Observable of the prop value
65
+ */
66
+ prop<T = unknown>(areaName: string, key: string): import('rxjs').Observable<T>;
52
67
  }
53
68
  export type THistoryStrategy = 'push' | 'replace' | 'pop' | 'silent';
54
69
  export declare enum HISTORY_STRATEGY {
@@ -32,7 +32,8 @@ export type SheetWhereAreYouRickyEvent = CustomEvent<{
32
32
  }>;
33
33
  export declare const SheetWhereAreYouRicky = "are-you-there-sheet";
34
34
  export type SheetHereMortyEvent = CustomEvent<{
35
- sheet: SchmancySheet;
35
+ sheet?: SchmancySheet;
36
+ theme?: HTMLElement;
36
37
  }>;
37
38
  export declare const SheetHereMorty = "yes-here";
38
39
  declare class BottomSheetService {
@@ -54,9 +55,9 @@ declare class BottomSheetService {
54
55
  */
55
56
  private setupPopStateListener;
56
57
  /**
57
- * Dismiss a sheet by uid
58
+ * Dismiss a sheet by uid, or dismiss the most recently opened sheet if no uid provided
58
59
  */
59
- dismiss(uid: string): void;
60
+ dismiss(uid?: string): void;
60
61
  /**
61
62
  * Open a sheet with the given target configuration
62
63
  */
@@ -1,4 +1,10 @@
1
1
  import { TSchmancyTheme } from './theme.interface';
2
+ export type ThemeWhereAreYouEvent = CustomEvent<void>;
3
+ export declare const ThemeWhereAreYou = "theme-where-are-you";
4
+ export type ThemeHereIAmEvent = CustomEvent<{
5
+ theme: HTMLElement;
6
+ }>;
7
+ export declare const ThemeHereIAm = "theme-here-i-am";
2
8
  export declare const tailwindStyles: import("lit").CSSResult;
3
9
  declare const SchmancyThemeComponent_base: import("../../mixins").Constructor<CustomElementConstructor> & import("../../mixins").Constructor<import("@mixins/tailwind.mixin").ITailwindElementMixin> & import("../../mixins").Constructor<import("lit").LitElement> & import("../../mixins").Constructor<import("../../mixins").IBaseMixin>;
4
10
  export declare class SchmancyThemeComponent extends SchmancyThemeComponent_base {