@mhmo91/schmancy 0.10.1 → 0.10.2

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 (371) hide show
  1. package/custom-elements.json +20 -0
  2. package/dist/active-host-CcIa2tmW.cjs +1 -0
  3. package/dist/active-host-CcIa2tmW.cjs.map +1 -0
  4. package/dist/{active-host-D-a1X-nq.js → active-host-CvNYoprt.js} +12 -12
  5. package/dist/active-host-CvNYoprt.js.map +1 -0
  6. package/dist/agent/schmancy.agent.js +1546 -1524
  7. package/dist/agent/schmancy.agent.js.map +1 -1
  8. package/dist/{area-C_J4qxKO.js → area-DHVANBbr.js} +1 -1
  9. package/dist/{area-C_J4qxKO.js.map → area-DHVANBbr.js.map} +1 -1
  10. package/dist/{area-ISC8Mdkh.cjs → area-ZupIezvU.cjs} +1 -1
  11. package/dist/{area-ISC8Mdkh.cjs.map → area-ZupIezvU.cjs.map} +1 -1
  12. package/dist/area.cjs +1 -1
  13. package/dist/area.js +1 -1
  14. package/dist/{audio-DZN8HsSS.cjs → audio-CluX8Qpq.cjs} +1 -1
  15. package/dist/{audio-DZN8HsSS.cjs.map → audio-CluX8Qpq.cjs.map} +1 -1
  16. package/dist/{audio-Tmre4WyL.js → audio-DcXphulJ.js} +1 -1
  17. package/dist/{audio-Tmre4WyL.js.map → audio-DcXphulJ.js.map} +1 -1
  18. package/dist/audio.cjs +1 -1
  19. package/dist/audio.js +2 -2
  20. package/dist/{autocomplete-BDF85W0J.cjs → autocomplete-Bn525CTp.cjs} +1 -1
  21. package/dist/{autocomplete-BDF85W0J.cjs.map → autocomplete-Bn525CTp.cjs.map} +1 -1
  22. package/dist/{autocomplete-CM8VqW9S.js → autocomplete-pHvsyfbH.js} +2 -2
  23. package/dist/{autocomplete-CM8VqW9S.js.map → autocomplete-pHvsyfbH.js.map} +1 -1
  24. package/dist/autocomplete.cjs +1 -1
  25. package/dist/autocomplete.js +1 -1
  26. package/dist/avatar.cjs +1 -1
  27. package/dist/avatar.js +1 -1
  28. package/dist/badge.cjs +1 -1
  29. package/dist/badge.js +1 -1
  30. package/dist/{boat-CpXe-Qto.cjs → boat-IyEtsNI4.cjs} +1 -1
  31. package/dist/{boat-CpXe-Qto.cjs.map → boat-IyEtsNI4.cjs.map} +1 -1
  32. package/dist/{boat-DxYNK4xT.js → boat-_Yv3M6YM.js} +2 -2
  33. package/dist/{boat-DxYNK4xT.js.map → boat-_Yv3M6YM.js.map} +1 -1
  34. package/dist/boat.cjs +1 -1
  35. package/dist/boat.js +1 -1
  36. package/dist/breadcrumb.cjs +1 -1
  37. package/dist/breadcrumb.js +1 -1
  38. package/dist/{busy-Dma4gtnz.cjs → busy-CjM39APN.cjs} +1 -1
  39. package/dist/{busy-Dma4gtnz.cjs.map → busy-CjM39APN.cjs.map} +1 -1
  40. package/dist/{busy-CP-gRfAP.js → busy-Ck2IXJ4r.js} +1 -1
  41. package/dist/{busy-CP-gRfAP.js.map → busy-Ck2IXJ4r.js.map} +1 -1
  42. package/dist/busy.cjs +1 -1
  43. package/dist/busy.js +1 -1
  44. package/dist/button.cjs +1 -1
  45. package/dist/button.js +1 -1
  46. package/dist/{card-ClroODSK.cjs → card-DIxDuuth.cjs} +1 -1
  47. package/dist/{card-ClroODSK.cjs.map → card-DIxDuuth.cjs.map} +1 -1
  48. package/dist/{card-Bv--HeGO.js → card-DUWZmMHc.js} +1 -1
  49. package/dist/{card-Bv--HeGO.js.map → card-DUWZmMHc.js.map} +1 -1
  50. package/dist/card.cjs +1 -1
  51. package/dist/card.js +1 -1
  52. package/dist/charts.cjs +1 -1
  53. package/dist/charts.js +1 -1
  54. package/dist/{checkbox-DvTZXN1Y.cjs → checkbox-CGdFXuWQ.cjs} +1 -1
  55. package/dist/{checkbox-DvTZXN1Y.cjs.map → checkbox-CGdFXuWQ.cjs.map} +1 -1
  56. package/dist/{checkbox-1gQOOcja.js → checkbox-DPS1mWG-.js} +1 -1
  57. package/dist/{checkbox-1gQOOcja.js.map → checkbox-DPS1mWG-.js.map} +1 -1
  58. package/dist/checkbox.cjs +1 -1
  59. package/dist/checkbox.js +1 -1
  60. package/dist/{chips-wkfKzf_e.js → chips-BnnXQSA-.js} +3 -3
  61. package/dist/{chips-wkfKzf_e.js.map → chips-BnnXQSA-.js.map} +1 -1
  62. package/dist/{chips-Bw7FNDpX.cjs → chips-UoFbwmlG.cjs} +1 -1
  63. package/dist/{chips-Bw7FNDpX.cjs.map → chips-UoFbwmlG.cjs.map} +1 -1
  64. package/dist/chips.cjs +1 -1
  65. package/dist/chips.js +2 -2
  66. package/dist/{code-highlight-CJzuds4c.cjs → code-highlight-CMilN0B8.cjs} +1 -1
  67. package/dist/{code-highlight-CJzuds4c.cjs.map → code-highlight-CMilN0B8.cjs.map} +1 -1
  68. package/dist/{code-highlight-CcdCFMrn.js → code-highlight-kFUJ1Eet.js} +1 -1
  69. package/dist/{code-highlight-CcdCFMrn.js.map → code-highlight-kFUJ1Eet.js.map} +1 -1
  70. package/dist/code-highlight.cjs +1 -1
  71. package/dist/code-highlight.js +1 -1
  72. package/dist/connectivity.cjs +1 -1
  73. package/dist/connectivity.js +2 -2
  74. package/dist/content-drawer.cjs +1 -1
  75. package/dist/content-drawer.js +1 -1
  76. package/dist/{date-range-BsPW60vp.cjs → date-range-BIyrzTRZ.cjs} +1 -1
  77. package/dist/{date-range-BsPW60vp.cjs.map → date-range-BIyrzTRZ.cjs.map} +1 -1
  78. package/dist/{date-range-BDHz_Olm.js → date-range-DOstCIg8.js} +2 -2
  79. package/dist/{date-range-BDHz_Olm.js.map → date-range-DOstCIg8.js.map} +1 -1
  80. package/dist/{date-range-inline-BsjNNGFR.cjs → date-range-inline-4P7zqeVe.cjs} +1 -1
  81. package/dist/{date-range-inline-BsjNNGFR.cjs.map → date-range-inline-4P7zqeVe.cjs.map} +1 -1
  82. package/dist/{date-range-inline-1NmZE_Xr.js → date-range-inline-BVycTWLb.js} +1 -1
  83. package/dist/{date-range-inline-1NmZE_Xr.js.map → date-range-inline-BVycTWLb.js.map} +1 -1
  84. package/dist/date-range-inline.cjs +1 -1
  85. package/dist/date-range-inline.js +1 -1
  86. package/dist/date-range.cjs +1 -1
  87. package/dist/date-range.js +1 -1
  88. package/dist/delay.cjs +1 -1
  89. package/dist/delay.js +1 -1
  90. package/dist/{details-BtUNqzn8.cjs → details-BJBbZOO6.cjs} +1 -1
  91. package/dist/{details-BtUNqzn8.cjs.map → details-BJBbZOO6.cjs.map} +1 -1
  92. package/dist/{details-BEp2s2ca.js → details-DPc5GxPa.js} +1 -1
  93. package/dist/{details-BEp2s2ca.js.map → details-DPc5GxPa.js.map} +1 -1
  94. package/dist/details.cjs +1 -1
  95. package/dist/details.js +1 -1
  96. package/dist/dialog.cjs +1 -1
  97. package/dist/dialog.js +1 -1
  98. package/dist/directives.cjs +1 -1
  99. package/dist/directives.js +1 -1
  100. package/dist/{divider-VxpjZ8hk.js → divider-BvJsmSPH.js} +1 -1
  101. package/dist/{divider-VxpjZ8hk.js.map → divider-BvJsmSPH.js.map} +1 -1
  102. package/dist/{divider-CpNT11Iy.cjs → divider-DPT3XnG5.cjs} +1 -1
  103. package/dist/{divider-CpNT11Iy.cjs.map → divider-DPT3XnG5.cjs.map} +1 -1
  104. package/dist/divider.cjs +1 -1
  105. package/dist/divider.js +1 -1
  106. package/dist/dropdown.cjs +1 -1
  107. package/dist/dropdown.js +1 -1
  108. package/dist/{expand-CRUl3-mN.js → expand-BMzocdtj.js} +2 -2
  109. package/dist/{expand-CRUl3-mN.js.map → expand-BMzocdtj.js.map} +1 -1
  110. package/dist/{expand-05azMpho.cjs → expand-CTqBWVXo.cjs} +1 -1
  111. package/dist/{expand-05azMpho.cjs.map → expand-CTqBWVXo.cjs.map} +1 -1
  112. package/dist/expand.cjs +1 -1
  113. package/dist/expand.js +1 -1
  114. package/dist/{extra-aNV1fO6W.js → extra-BeHlUhzv.js} +1 -1
  115. package/dist/{extra-aNV1fO6W.js.map → extra-BeHlUhzv.js.map} +1 -1
  116. package/dist/{extra-CyERULfm.cjs → extra-h_cuxRII.cjs} +1 -1
  117. package/dist/{extra-CyERULfm.cjs.map → extra-h_cuxRII.cjs.map} +1 -1
  118. package/dist/extra.cjs +1 -1
  119. package/dist/extra.js +1 -1
  120. package/dist/{float-N3qhNET_.js → float-CTc1xxqH.js} +1 -1
  121. package/dist/{float-N3qhNET_.js.map → float-CTc1xxqH.js.map} +1 -1
  122. package/dist/{float-DRET9mVZ.cjs → float-CwVBs11k.cjs} +1 -1
  123. package/dist/{float-DRET9mVZ.cjs.map → float-CwVBs11k.cjs.map} +1 -1
  124. package/dist/float.cjs +1 -1
  125. package/dist/float.js +1 -1
  126. package/dist/handover/agent-runtime-followups.md +1 -1
  127. package/dist/handover/agent-runtime-v1.md +3 -3
  128. package/dist/{icons-BBJqwT_B.js → icons-BbCVrcas.js} +1 -1
  129. package/dist/{icons-BBJqwT_B.js.map → icons-BbCVrcas.js.map} +1 -1
  130. package/dist/{icons-CNixJ6kL.cjs → icons-qEQW4pjM.cjs} +1 -1
  131. package/dist/{icons-CNixJ6kL.cjs.map → icons-qEQW4pjM.cjs.map} +1 -1
  132. package/dist/icons.cjs +1 -1
  133. package/dist/icons.js +1 -1
  134. package/dist/{iframe-DoN_toqE.js → iframe-BJfDIEJf.js} +1 -1
  135. package/dist/{iframe-DoN_toqE.js.map → iframe-BJfDIEJf.js.map} +1 -1
  136. package/dist/{iframe-g-4DjAD7.cjs → iframe-D6HTruav.cjs} +1 -1
  137. package/dist/{iframe-g-4DjAD7.cjs.map → iframe-D6HTruav.cjs.map} +1 -1
  138. package/dist/iframe.cjs +1 -1
  139. package/dist/iframe.js +1 -1
  140. package/dist/index.cjs +1 -1
  141. package/dist/index.js +35 -35
  142. package/dist/{input-ClnkMJgh.js → input-LTK3cctF.js} +32 -32
  143. package/dist/input-LTK3cctF.js.map +1 -0
  144. package/dist/input-U26axtcs.cjs +51 -0
  145. package/dist/input-U26axtcs.cjs.map +1 -0
  146. package/dist/{input-chip-DMXRT7bK.cjs → input-chip-CADXt0X5.cjs} +1 -1
  147. package/dist/{input-chip-DMXRT7bK.cjs.map → input-chip-CADXt0X5.cjs.map} +1 -1
  148. package/dist/{input-chip-DwSyFv1x.js → input-chip-Ch-aCs3c.js} +1 -1
  149. package/dist/{input-chip-DwSyFv1x.js.map → input-chip-Ch-aCs3c.js.map} +1 -1
  150. package/dist/input.cjs +1 -1
  151. package/dist/input.js +1 -1
  152. package/dist/json.cjs +1 -1
  153. package/dist/json.js +2 -2
  154. package/dist/kbd.cjs +1 -1
  155. package/dist/kbd.js +1 -1
  156. package/dist/{layout-BghHmee6.js → layout-C4xmnU4n.js} +1 -1
  157. package/dist/{layout-BghHmee6.js.map → layout-C4xmnU4n.js.map} +1 -1
  158. package/dist/{layout-VmxXuGGp.cjs → layout-Dmh6fxh0.cjs} +1 -1
  159. package/dist/{layout-VmxXuGGp.cjs.map → layout-Dmh6fxh0.cjs.map} +1 -1
  160. package/dist/layout.cjs +1 -1
  161. package/dist/layout.js +1 -1
  162. package/dist/{lightbox-m5FLmYlv.cjs → lightbox-DbYUSfVl.cjs} +1 -1
  163. package/dist/{lightbox-m5FLmYlv.cjs.map → lightbox-DbYUSfVl.cjs.map} +1 -1
  164. package/dist/{lightbox-IleIcq19.js → lightbox-DqG2z3Cn.js} +1 -1
  165. package/dist/{lightbox-IleIcq19.js.map → lightbox-DqG2z3Cn.js.map} +1 -1
  166. package/dist/lightbox.cjs +1 -1
  167. package/dist/lightbox.js +1 -1
  168. package/dist/{list-C-b9p1yi.cjs → list-CLX4sSAw.cjs} +1 -1
  169. package/dist/{list-C-b9p1yi.cjs.map → list-CLX4sSAw.cjs.map} +1 -1
  170. package/dist/{list-BlXJlm16.js → list-D6-_E5ZD.js} +1 -1
  171. package/dist/{list-BlXJlm16.js.map → list-D6-_E5ZD.js.map} +1 -1
  172. package/dist/list.cjs +1 -1
  173. package/dist/list.js +1 -1
  174. package/dist/{mailbox-B0hZLpF1.cjs → mailbox-Ct6iYe-4.cjs} +1 -1
  175. package/dist/{mailbox-B0hZLpF1.cjs.map → mailbox-Ct6iYe-4.cjs.map} +1 -1
  176. package/dist/{mailbox-DAmejcKa.js → mailbox-DsPII8HR.js} +3 -3
  177. package/dist/{mailbox-DAmejcKa.js.map → mailbox-DsPII8HR.js.map} +1 -1
  178. package/dist/mailbox.cjs +1 -1
  179. package/dist/mailbox.js +1 -1
  180. package/dist/{map-BoIu47qU.js → map-Dhy3ta9v.js} +1 -1
  181. package/dist/{map-BoIu47qU.js.map → map-Dhy3ta9v.js.map} +1 -1
  182. package/dist/{map-CZ0816EI.cjs → map-WXeVkx2K.cjs} +1 -1
  183. package/dist/{map-CZ0816EI.cjs.map → map-WXeVkx2K.cjs.map} +1 -1
  184. package/dist/map.cjs +1 -1
  185. package/dist/map.js +1 -1
  186. package/dist/{menu-BV9_8ys8.js → menu-Bhd3EapX.js} +1 -1
  187. package/dist/{menu-BV9_8ys8.js.map → menu-Bhd3EapX.js.map} +1 -1
  188. package/dist/{menu-BFHBnp5M.cjs → menu-Cg2aaDjs.cjs} +1 -1
  189. package/dist/{menu-BFHBnp5M.cjs.map → menu-Cg2aaDjs.cjs.map} +1 -1
  190. package/dist/menu.cjs +1 -1
  191. package/dist/menu.js +1 -1
  192. package/dist/{mixins-CL1krSOE.js → mixins-CcIWET41.js} +1 -1
  193. package/dist/{mixins-CL1krSOE.js.map → mixins-CcIWET41.js.map} +1 -1
  194. package/dist/{mixins-BIXF7xkF.cjs → mixins-De3xfjrm.cjs} +1 -1
  195. package/dist/{mixins-BIXF7xkF.cjs.map → mixins-De3xfjrm.cjs.map} +1 -1
  196. package/dist/mixins.cjs +1 -1
  197. package/dist/mixins.js +1 -1
  198. package/dist/nav-drawer.cjs +1 -1
  199. package/dist/nav-drawer.js +1 -1
  200. package/dist/navigation-bar.cjs +1 -1
  201. package/dist/navigation-bar.js +1 -1
  202. package/dist/navigation-rail.cjs +1 -1
  203. package/dist/navigation-rail.js +1 -1
  204. package/dist/{notification-Dzm6zWxX.js → notification-CVLqQ8c_.js} +3 -3
  205. package/dist/{notification-Dzm6zWxX.js.map → notification-CVLqQ8c_.js.map} +1 -1
  206. package/dist/{notification-CigTy3ia.cjs → notification-D_PQjBSf.cjs} +1 -1
  207. package/dist/{notification-CigTy3ia.cjs.map → notification-D_PQjBSf.cjs.map} +1 -1
  208. package/dist/notification.cjs +1 -1
  209. package/dist/notification.js +1 -1
  210. package/dist/{option-BfvzzkzM.cjs → option-DDU_goh1.cjs} +1 -1
  211. package/dist/{option-BfvzzkzM.cjs.map → option-DDU_goh1.cjs.map} +1 -1
  212. package/dist/{option-Dyb0Q45u.js → option-rm4HebVs.js} +1 -1
  213. package/dist/{option-Dyb0Q45u.js.map → option-rm4HebVs.js.map} +1 -1
  214. package/dist/option.cjs +1 -1
  215. package/dist/option.js +1 -1
  216. package/dist/overlay.cjs +1 -1
  217. package/dist/overlay.cjs.map +1 -1
  218. package/dist/overlay.js +2 -2
  219. package/dist/overlay.js.map +1 -1
  220. package/dist/page.cjs +1 -1
  221. package/dist/page.js +4 -4
  222. package/dist/{payment-card-form-D9N2Q0wM.js → payment-card-form-C0dHYZIv.js} +1 -1
  223. package/dist/{payment-card-form-D9N2Q0wM.js.map → payment-card-form-C0dHYZIv.js.map} +1 -1
  224. package/dist/{payment-card-form-CQ6sLlrh.cjs → payment-card-form-DNvmZxs4.cjs} +1 -1
  225. package/dist/{payment-card-form-CQ6sLlrh.cjs.map → payment-card-form-DNvmZxs4.cjs.map} +1 -1
  226. package/dist/payment-card-form.cjs +1 -1
  227. package/dist/payment-card-form.js +1 -1
  228. package/dist/{progress-LPwPfzBi.js → progress-BRerM5Bn.js} +1 -1
  229. package/dist/{progress-LPwPfzBi.js.map → progress-BRerM5Bn.js.map} +1 -1
  230. package/dist/{progress-Dyri7dc2.cjs → progress-U3LQkpM2.cjs} +1 -1
  231. package/dist/{progress-Dyri7dc2.cjs.map → progress-U3LQkpM2.cjs.map} +1 -1
  232. package/dist/progress.cjs +1 -1
  233. package/dist/progress.js +1 -1
  234. package/dist/qr-scanner.cjs +1 -1
  235. package/dist/qr-scanner.js +1 -1
  236. package/dist/{radio-group-DqP886F-.js → radio-group-BZ2WoOXJ.js} +1 -1
  237. package/dist/{radio-group-DqP886F-.js.map → radio-group-BZ2WoOXJ.js.map} +1 -1
  238. package/dist/{radio-group-DK-T6jGy.cjs → radio-group-D7mm-yvJ.cjs} +1 -1
  239. package/dist/{radio-group-DK-T6jGy.cjs.map → radio-group-D7mm-yvJ.cjs.map} +1 -1
  240. package/dist/radio-group.cjs +1 -1
  241. package/dist/radio-group.js +1 -1
  242. package/dist/range.cjs +1 -1
  243. package/dist/range.js +1 -1
  244. package/dist/{scroll-yfNU0zNO.cjs → scroll-DJTjNIT_.cjs} +1 -1
  245. package/dist/{scroll-yfNU0zNO.cjs.map → scroll-DJTjNIT_.cjs.map} +1 -1
  246. package/dist/{scroll-BD82ANjm.js → scroll-qL-HkMdP.js} +1 -1
  247. package/dist/{scroll-BD82ANjm.js.map → scroll-qL-HkMdP.js.map} +1 -1
  248. package/dist/{select-BR3r3SZe.cjs → select-BvA7v-gL.cjs} +1 -1
  249. package/dist/{select-BR3r3SZe.cjs.map → select-BvA7v-gL.cjs.map} +1 -1
  250. package/dist/{select-GONAphZI.js → select-CnPXUeSf.js} +1 -1
  251. package/dist/{select-GONAphZI.js.map → select-CnPXUeSf.js.map} +1 -1
  252. package/dist/select.cjs +1 -1
  253. package/dist/select.js +1 -1
  254. package/dist/{sheet-C4sAGqTf.js → sheet-BRL07BB4.js} +3 -3
  255. package/dist/{sheet-C4sAGqTf.js.map → sheet-BRL07BB4.js.map} +1 -1
  256. package/dist/{sheet-D9pZMrzs.cjs → sheet-BYQJAHQn.cjs} +1 -1
  257. package/dist/{sheet-D9pZMrzs.cjs.map → sheet-BYQJAHQn.cjs.map} +1 -1
  258. package/dist/sheet.cjs +1 -1
  259. package/dist/sheet.js +2 -2
  260. package/dist/{sheet.service-C1J0-i4d.cjs → sheet.service-B25bsrYG.cjs} +1 -1
  261. package/dist/{sheet.service-C1J0-i4d.cjs.map → sheet.service-B25bsrYG.cjs.map} +1 -1
  262. package/dist/{sheet.service-B7h_-e-q.js → sheet.service-SPQ8oLCi.js} +2 -2
  263. package/dist/{sheet.service-B7h_-e-q.js.map → sheet.service-SPQ8oLCi.js.map} +1 -1
  264. package/dist/skeleton.cjs +1 -1
  265. package/dist/skeleton.js +1 -1
  266. package/dist/slider.cjs +1 -1
  267. package/dist/slider.js +1 -1
  268. package/dist/{sound.service-CvdB2yUJ.cjs → sound.service-BGs6m0Cm.cjs} +1 -1
  269. package/dist/{sound.service-CvdB2yUJ.cjs.map → sound.service-BGs6m0Cm.cjs.map} +1 -1
  270. package/dist/{sound.service-Ba_HNBLD.js → sound.service-kKfsN0m-.js} +1 -1
  271. package/dist/{sound.service-Ba_HNBLD.js.map → sound.service-kKfsN0m-.js.map} +1 -1
  272. package/dist/{splash-screen-DqULOTZ0.cjs → splash-screen-BDt4PInk.cjs} +1 -1
  273. package/dist/{splash-screen-DqULOTZ0.cjs.map → splash-screen-BDt4PInk.cjs.map} +1 -1
  274. package/dist/{splash-screen-BGMZmQRT.js → splash-screen-C8JCqX5L.js} +1 -1
  275. package/dist/{splash-screen-BGMZmQRT.js.map → splash-screen-C8JCqX5L.js.map} +1 -1
  276. package/dist/splash-screen.cjs +1 -1
  277. package/dist/splash-screen.js +1 -1
  278. package/dist/{src-DzFcGdcn.cjs → src-CpRNClhg.cjs} +1 -1
  279. package/dist/{src-DzFcGdcn.cjs.map → src-CpRNClhg.cjs.map} +1 -1
  280. package/dist/{src-CHM4hrEr.js → src-CqdnWGgr.js} +39 -39
  281. package/dist/{src-CHM4hrEr.js.map → src-CqdnWGgr.js.map} +1 -1
  282. package/dist/{state-ClRXrqDA.js → state-BusMG6sM.js} +266 -244
  283. package/dist/{state-ClRXrqDA.js.map → state-BusMG6sM.js.map} +1 -1
  284. package/dist/state-DNdCPITt.cjs +1 -0
  285. package/dist/{state-BAW3C11I.cjs.map → state-DNdCPITt.cjs.map} +1 -1
  286. package/dist/state.cjs +1 -1
  287. package/dist/state.js +2 -2
  288. package/dist/steps.cjs +1 -1
  289. package/dist/steps.js +1 -1
  290. package/dist/{surface-BHJgIDz9.js → surface-C8jQy8Ym.js} +1 -1
  291. package/dist/{surface-BHJgIDz9.js.map → surface-C8jQy8Ym.js.map} +1 -1
  292. package/dist/{surface-DW78bc8W.cjs → surface-Du2Y4vXd.cjs} +1 -1
  293. package/dist/{surface-DW78bc8W.cjs.map → surface-Du2Y4vXd.cjs.map} +1 -1
  294. package/dist/surface.cjs +1 -1
  295. package/dist/surface.js +1 -1
  296. package/dist/switch.cjs +1 -1
  297. package/dist/switch.js +1 -1
  298. package/dist/table.cjs +1 -1
  299. package/dist/table.js +1 -1
  300. package/dist/{tabs-EIEhkEUb.cjs → tabs-0RfeCa00.cjs} +1 -1
  301. package/dist/{tabs-EIEhkEUb.cjs.map → tabs-0RfeCa00.cjs.map} +1 -1
  302. package/dist/{tabs-BCRVyQU1.js → tabs-Cyahh9Q6.js} +1 -1
  303. package/dist/{tabs-BCRVyQU1.js.map → tabs-Cyahh9Q6.js.map} +1 -1
  304. package/dist/tabs.cjs +1 -1
  305. package/dist/tabs.js +1 -1
  306. package/dist/teleport.cjs +1 -1
  307. package/dist/teleport.js +1 -1
  308. package/dist/{textarea-DApOhSAL.js → textarea-CXCcTVnf.js} +1 -1
  309. package/dist/{textarea-DApOhSAL.js.map → textarea-CXCcTVnf.js.map} +1 -1
  310. package/dist/{textarea-zxNlRLVm.cjs → textarea-jqRrLxmo.cjs} +1 -1
  311. package/dist/{textarea-zxNlRLVm.cjs.map → textarea-jqRrLxmo.cjs.map} +1 -1
  312. package/dist/textarea.cjs +1 -1
  313. package/dist/textarea.js +1 -1
  314. package/dist/{theme-BCUjQH6-.js → theme-2KZW2Rfs.js} +3 -3
  315. package/dist/{theme-BCUjQH6-.js.map → theme-2KZW2Rfs.js.map} +1 -1
  316. package/dist/{theme-Z43TLE61.cjs → theme-Hjz9sCN-.cjs} +1 -1
  317. package/dist/{theme-Z43TLE61.cjs.map → theme-Hjz9sCN-.cjs.map} +1 -1
  318. package/dist/{theme-button-DdSbcivT.js → theme-button-9uF1eoHz.js} +1 -1
  319. package/dist/{theme-button-DdSbcivT.js.map → theme-button-9uF1eoHz.js.map} +1 -1
  320. package/dist/{theme-button-Czsdp3o1.cjs → theme-button-C7QIbke1.cjs} +1 -1
  321. package/dist/{theme-button-Czsdp3o1.cjs.map → theme-button-C7QIbke1.cjs.map} +1 -1
  322. package/dist/theme-button.cjs +1 -1
  323. package/dist/theme-button.js +1 -1
  324. package/dist/theme.cjs +1 -1
  325. package/dist/theme.js +3 -3
  326. package/dist/{theme.service-CP71ojp6.cjs → theme.service-BrUbGoeQ.cjs} +1 -1
  327. package/dist/{theme.service-CP71ojp6.cjs.map → theme.service-BrUbGoeQ.cjs.map} +1 -1
  328. package/dist/{theme.service-9clsqyee.js → theme.service-CmbOGMA8.js} +1 -1
  329. package/dist/{theme.service-9clsqyee.js.map → theme.service-CmbOGMA8.js.map} +1 -1
  330. package/dist/timeline.cjs +1 -1
  331. package/dist/timeline.js +1 -1
  332. package/dist/tree.cjs +1 -1
  333. package/dist/tree.js +1 -1
  334. package/dist/typography.cjs +1 -1
  335. package/dist/typography.js +1 -1
  336. package/dist/visually-hidden.cjs +1 -1
  337. package/dist/visually-hidden.js +1 -1
  338. package/dist/{window-moDKyGLZ.js → window-C7yY9yp5.js} +2 -2
  339. package/dist/{window-moDKyGLZ.js.map → window-C7yY9yp5.js.map} +1 -1
  340. package/dist/{window-DTgKAQgz.cjs → window-DtUOWiAj.cjs} +1 -1
  341. package/dist/{window-DTgKAQgz.cjs.map → window-DtUOWiAj.cjs.map} +1 -1
  342. package/dist/window.cjs +1 -1
  343. package/dist/window.js +1 -1
  344. package/package.json +2 -3
  345. package/src/agent/helpers.ts +0 -2
  346. package/src/audio/emotional-sounds.ts +0 -2
  347. package/src/audio/sound.service.ts +0 -2
  348. package/src/input/input.ts +2 -2
  349. package/src/notification/notification-service.ts +0 -2
  350. package/src/overlay/overlay.animations.ts +0 -25
  351. package/src/overlay/overlay.stack.ts +0 -6
  352. package/src/state/active-host.ts +53 -19
  353. package/src/state/schmancy-context.ts +47 -1
  354. package/src/state/state.test.ts +50 -2
  355. package/types/src/agent/helpers.d.ts +0 -1
  356. package/types/src/audio/emotional-sounds.d.ts +0 -1
  357. package/types/src/audio/sound.service.d.ts +1 -1
  358. package/types/src/notification/notification-service.d.ts +0 -1
  359. package/types/src/overlay/overlay.animations.d.ts +0 -1
  360. package/types/src/overlay/overlay.stack.d.ts +0 -2
  361. package/types/src/state/active-host.d.ts +5 -0
  362. package/types/src/state/schmancy-context.d.ts +1 -0
  363. package/dist/active-host-0of-L858.cjs +0 -1
  364. package/dist/active-host-0of-L858.cjs.map +0 -1
  365. package/dist/active-host-D-a1X-nq.js.map +0 -1
  366. package/dist/input-ClnkMJgh.js.map +0 -1
  367. package/dist/input-CwFslLcF.cjs +0 -51
  368. package/dist/input-CwFslLcF.cjs.map +0 -1
  369. package/dist/state-BAW3C11I.cjs +0 -1
  370. package/src/agent/index.ts +0 -1
  371. package/types/src/agent/index.d.ts +0 -1
package/dist/mailbox.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./mailbox-B0hZLpF1.cjs`);Object.defineProperty(exports,`SchmancyEmailEditor`,{enumerable:!0,get:function(){return e.r}}),Object.defineProperty(exports,`SchmancyEmailLayoutSelector`,{enumerable:!0,get:function(){return e.i}}),Object.defineProperty(exports,`SchmancyEmailRecipients`,{enumerable:!0,get:function(){return e.t}}),Object.defineProperty(exports,`SchmancyEmailViewer`,{enumerable:!0,get:function(){return e.n}}),Object.defineProperty(exports,`SchmancyMailbox`,{enumerable:!0,get:function(){return e.a}});
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./mailbox-Ct6iYe-4.cjs`);Object.defineProperty(exports,`SchmancyEmailEditor`,{enumerable:!0,get:function(){return e.r}}),Object.defineProperty(exports,`SchmancyEmailLayoutSelector`,{enumerable:!0,get:function(){return e.i}}),Object.defineProperty(exports,`SchmancyEmailRecipients`,{enumerable:!0,get:function(){return e.t}}),Object.defineProperty(exports,`SchmancyEmailViewer`,{enumerable:!0,get:function(){return e.n}}),Object.defineProperty(exports,`SchmancyMailbox`,{enumerable:!0,get:function(){return e.a}});
package/dist/mailbox.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as e, i as t, n, r, t as i } from "./mailbox-DAmejcKa.js";
1
+ import { a as e, i as t, n, r, t as i } from "./mailbox-DsPII8HR.js";
2
2
  export { r as SchmancyEmailEditor, t as SchmancyEmailLayoutSelector, i as SchmancyEmailRecipients, n as SchmancyEmailViewer, e as SchmancyMailbox };
@@ -1,4 +1,4 @@
1
- import { s as e } from "./mixins-CL1krSOE.js";
1
+ import { s as e } from "./mixins-CcIWET41.js";
2
2
  import { t } from "./decorate-23nYs4Le.js";
3
3
  import { EMPTY as n, Observable as r, of as i } from "rxjs";
4
4
  import { catchError as a, finalize as o, shareReplay as s, switchMap as c, takeUntil as l, tap as u } from "rxjs/operators";
@@ -1 +1 @@
1
- {"version":3,"file":"map-BoIu47qU.js","names":[],"sources":["../src/map/map.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { ref, createRef } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { of, EMPTY, Observable } from 'rxjs'\nimport { switchMap, tap, catchError, takeUntil, finalize, shareReplay } from 'rxjs/operators'\n\ninterface GoogleMapsAPI {\n maps: {\n Map: new (element: HTMLElement, options: any) => any\n Marker: new (options: any) => any\n Geocoder: new () => any\n LatLng: new (lat: number, lng: number) => any\n MapTypeId: {\n ROADMAP: string\n SATELLITE: string\n HYBRID: string\n TERRAIN: string\n }\n }\n}\n\ndeclare global {\n interface Window {\n google?: GoogleMapsAPI\n initGoogleMaps?: () => void\n __schmancyGoogleMapsLoading?: Observable<boolean>\n }\n}\n\n// Singleton for managing Google Maps script loading\n// oxlint-disable-next-line typescript/no-extraneous-class\nclass GoogleMapsLoader {\n private static loading$?: Observable<boolean>\n\n static load(apiKey: string): Observable<boolean> {\n // If already loaded, return success\n if (window.google?.maps) {\n return of(true)\n }\n\n // If already loading, return the existing observable\n if (this.loading$) {\n return this.loading$\n }\n\n // Create a new loading observable\n this.loading$ = new Observable<boolean>(observer => {\n // Check again if loaded while waiting\n if (window.google?.maps) {\n observer.next(true)\n observer.complete()\n return\n }\n\n const script = document.createElement('script')\n // Using places library instead of geometry for geocoding\n script.src = `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=places&callback=initGoogleMaps&v=weekly`\n script.async = true\n script.defer = true\n\n window.initGoogleMaps = () => {\n observer.next(true)\n observer.complete()\n }\n\n script.addEventListener('error', (error) => {\n console.error('Google Maps script loading error:', error)\n observer.error(new Error('Failed to load Google Maps. Please check API key configuration and ensure the domain is authorized.'))\n }, { once: true })\n\n document.head.appendChild(script)\n }).pipe(\n shareReplay(1) // Share the result among all subscribers\n )\n\n return this.loading$\n }\n}\n\n/**\n * `<schmancy-map>` component\n *\n * A Google Maps component with an intuitive API for displaying interactive or static maps.\n * Supports both address strings (with automatic geocoding) and precise coordinates.\n *\n * @element schmancy-map\n *\n * @example\n * <!-- Simple address -->\n * <schmancy-map address=\"Times Square, New York\"></schmancy-map>\n *\n * @example\n * <!-- With coordinates -->\n * <schmancy-map latitude=\"40.758\" longitude=\"-73.985\" zoom=\"17\"></schmancy-map>\n *\n * @example\n * <!-- Satellite view -->\n * <schmancy-map address=\"Grand Canyon\" type=\"satellite\" height=\"500px\"></schmancy-map>\n *\n * @example\n * <!-- Static map -->\n * <schmancy-map address=\"Eiffel Tower, Paris\" interactive=\"false\" controls=\"false\"></schmancy-map>\n */\n@customElement('schmancy-map')\nexport default class SchmancyMap extends SchmancyElement {\n\tstatic styles = [css`\n :host {\n display: block;\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background-color: var(--schmancy-sys-color-surface-container);\n color: var(--schmancy-sys-color-surface-on);\n }\n \n :host([height]) {\n height: var(--map-height);\n }\n \n .map-container {\n width: 100%;\n height: 100%;\n min-height: 400px;\n }\n \n .loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 400px;\n background-color: var(--schmancy-sys-color-surface-containerLow);\n }\n \n .error-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 400px;\n padding: 24px;\n text-align: center;\n background-color: var(--schmancy-sys-color-surface-containerLow);\n }\n \n .error-icon {\n width: 48px;\n height: 48px;\n margin-bottom: 16px;\n color: var(--schmancy-sys-color-error-default);\n }\n \n .error-title {\n font-size: 18px;\n font-weight: 600;\n margin-bottom: 8px;\n color: var(--schmancy-sys-color-surface-on);\n }\n \n .error-message {\n font-size: 14px;\n color: var(--schmancy-sys-color-surface-onVariant);\n line-height: 1.5;\n }\n`];\n /**\n * Simple address string that automatically geocodes to display the location.\n * Takes precedence over latitude/longitude if both are provided.\n */\n @property({ type: String })\n address: string = ''\n\n /**\n * Latitude coordinate for precise location.\n * Used when address is not provided.\n */\n @property({ type: Number })\n latitude?: number\n\n /**\n * Longitude coordinate for precise location.\n * Used when address is not provided.\n */\n @property({ type: Number })\n longitude?: number\n\n /**\n * Map zoom level. Higher numbers show more detail.\n * @default 15\n */\n @property({ type: Number })\n zoom: number = 15\n\n /**\n * Height of the map with CSS unit (e.g., \"400px\", \"50vh\").\n * @default \"400px\"\n */\n @property({ type: String, reflect: true })\n height: string = '400px'\n\n /**\n * Whether to show a marker at the location.\n * @default true\n */\n @property({ type: Boolean })\n marker: boolean = true\n\n /**\n * Tooltip text for the location marker.\n */\n @property({ type: String })\n markerTitle: string = ''\n\n /**\n * Map display type.\n * Options: \"roadmap\", \"satellite\", \"hybrid\", \"terrain\"\n * @default \"roadmap\"\n */\n @property({ type: String })\n type: 'roadmap' | 'satellite' | 'hybrid' | 'terrain' = 'roadmap'\n\n /**\n * Whether users can interact with the map (pan, zoom, click).\n * @default true\n */\n @property({ type: Boolean })\n interactive: boolean = true\n\n /**\n * Whether to show map controls (zoom buttons, fullscreen, etc.).\n * @default true\n */\n @property({ type: Boolean })\n controls: boolean = true\n\n /**\n * Google Maps API key. Required for the map to load.\n */\n @property({ type: String })\n apiKey: string = ''\n\n @state() private loading: boolean = false\n @state() private error: string = ''\n\n private mapRef = createRef<HTMLDivElement>()\n private map?: any\n private mapMarker?: any\n private geocoder?: any\n private intersectionObserver?: IntersectionObserver\n private hasLoadedMap = false\n\n connectedCallback() {\n super.connectedCallback()\n \n // Set CSS custom property for height\n this.style.setProperty('--map-height', this.height)\n \n // Only load map when component becomes visible\n this.setupIntersectionObserver()\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n if (this.intersectionObserver) {\n this.intersectionObserver.disconnect()\n }\n }\n\n private setupIntersectionObserver() {\n // Load map only when it's visible in the viewport\n this.intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting && !this.hasLoadedMap) {\n this.hasLoadedMap = true\n this.loadMap()\n // Stop observing after loading\n this.intersectionObserver?.disconnect()\n }\n })\n },\n {\n root: null,\n rootMargin: '50px',\n threshold: 0.01\n }\n )\n \n this.intersectionObserver.observe(this)\n }\n\n private loadMap() {\n of(null).pipe(\n tap(() => {\n this.loading = true\n this.error = ''\n }),\n switchMap(() => {\n if (!this.apiKey) {\n throw new Error('Google Maps API key is required. Please provide it via the apiKey property.')\n }\n return GoogleMapsLoader.load(this.apiKey)\n }),\n switchMap(() => this.getCoordinates()),\n tap((coordinates) => {\n // Store coordinates for later use\n this.pendingCoordinates = coordinates\n }),\n catchError((error) => {\n console.error('Map loading error:', error)\n this.error = error.message || 'Failed to load map'\n return EMPTY\n }),\n finalize(() => {\n this.loading = false\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private pendingCoordinates?: { lat: number; lng: number }\n\n private getCoordinates() {\n if (this.address) {\n return this.geocodeAddress(this.address)\n }\n\n if (this.latitude !== undefined && this.longitude !== undefined) {\n return of({ lat: this.latitude, lng: this.longitude })\n }\n\n throw new Error('Either address or latitude/longitude coordinates are required')\n }\n\n private geocodeAddress(address: string) {\n if (!this.geocoder) {\n this.geocoder = new window.google!.maps.Geocoder()\n }\n\n return new Promise<{ lat: number; lng: number }>((resolve, reject) => {\n this.geocoder.geocode({ address }, (results: any[], status: string) => {\n if (status === 'OK' && results[0]) {\n const location = results[0].geometry.location\n resolve({\n lat: location.lat(),\n lng: location.lng()\n })\n } else {\n reject(new Error(`Geocoding failed: ${status}`))\n }\n })\n })\n }\n\n private initializeMap(coordinates: { lat: number; lng: number }) {\n if (!this.mapRef.value || !window.google?.maps) {\n return\n }\n\n const mapOptions = {\n center: coordinates,\n zoom: this.zoom,\n mapTypeId: this.getMapTypeId(),\n disableDefaultUI: !this.controls,\n gestureHandling: this.interactive ? 'cooperative' : 'none',\n zoomControl: this.controls,\n mapTypeControl: this.controls,\n scaleControl: this.controls,\n streetViewControl: this.controls,\n rotateControl: this.controls,\n fullscreenControl: this.controls,\n styles: this.interactive ? undefined : [\n {\n featureType: 'poi',\n stylers: [{ visibility: 'off' }]\n }\n ]\n }\n\n this.map = new window.google.maps.Map(this.mapRef.value, mapOptions)\n\n if (this.marker) {\n this.addMarker(coordinates)\n }\n }\n\n private getMapTypeId(): string {\n const typeMap = {\n roadmap: window.google!.maps.MapTypeId.ROADMAP,\n satellite: window.google!.maps.MapTypeId.SATELLITE,\n hybrid: window.google!.maps.MapTypeId.HYBRID,\n terrain: window.google!.maps.MapTypeId.TERRAIN\n }\n return typeMap[this.type] || typeMap.roadmap\n }\n\n private addMarker(coordinates: { lat: number; lng: number }) {\n if (!window.google?.maps || !this.map) {\n return\n }\n\n this.mapMarker = new window.google.maps.Marker({\n position: coordinates,\n map: this.map,\n title: this.markerTitle || this.address || 'Location'\n })\n }\n\n protected updated(changedProperties: Map<string, unknown>) {\n super.updated(changedProperties)\n\n if (changedProperties.has('height')) {\n this.style.setProperty('--map-height', this.height)\n }\n\n // Initialize map when loading completes and container is ready\n if (changedProperties.has('loading') && !this.loading && this.pendingCoordinates && !this.map) {\n // Wait for next frame to ensure map container is rendered\n requestAnimationFrame(() => {\n if (this.mapRef.value && this.pendingCoordinates) {\n this.initializeMap(this.pendingCoordinates)\n this.pendingCoordinates = undefined\n }\n })\n }\n\n // Reload map if critical properties change (only if map was already loaded)\n if (\n changedProperties.has('address') ||\n changedProperties.has('latitude') ||\n changedProperties.has('longitude') ||\n changedProperties.has('type') ||\n changedProperties.has('zoom')\n ) {\n if (this.map && this.hasLoadedMap) {\n this.loadMap()\n }\n }\n\n // Update marker title if it changes\n if (changedProperties.has('markerTitle') && this.mapMarker) {\n this.mapMarker.setTitle(this.markerTitle || this.address || 'Location')\n }\n }\n\n protected render() {\n return html`\n ${when(\n this.loading,\n () => html`\n <div class=\"loading-container\">\n <schmancy-spinner></schmancy-spinner>\n </div>\n `,\n () => when(\n this.error,\n () => html`\n <div class=\"error-container\">\n <svg class=\"error-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" \n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z\" />\n </svg>\n <div class=\"error-title\">Map could not be loaded</div>\n <div class=\"error-message\">${this.error}</div>\n </div>\n `,\n () => html`\n <div class=\"map-container\" ${ref(this.mapRef)}></div>\n `\n )\n )}\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-map': SchmancyMap\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"map-Dhy3ta9v.js","names":[],"sources":["../src/map/map.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { ref, createRef } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { of, EMPTY, Observable } from 'rxjs'\nimport { switchMap, tap, catchError, takeUntil, finalize, shareReplay } from 'rxjs/operators'\n\ninterface GoogleMapsAPI {\n maps: {\n Map: new (element: HTMLElement, options: any) => any\n Marker: new (options: any) => any\n Geocoder: new () => any\n LatLng: new (lat: number, lng: number) => any\n MapTypeId: {\n ROADMAP: string\n SATELLITE: string\n HYBRID: string\n TERRAIN: string\n }\n }\n}\n\ndeclare global {\n interface Window {\n google?: GoogleMapsAPI\n initGoogleMaps?: () => void\n __schmancyGoogleMapsLoading?: Observable<boolean>\n }\n}\n\n// Singleton for managing Google Maps script loading\n// oxlint-disable-next-line typescript/no-extraneous-class\nclass GoogleMapsLoader {\n private static loading$?: Observable<boolean>\n\n static load(apiKey: string): Observable<boolean> {\n // If already loaded, return success\n if (window.google?.maps) {\n return of(true)\n }\n\n // If already loading, return the existing observable\n if (this.loading$) {\n return this.loading$\n }\n\n // Create a new loading observable\n this.loading$ = new Observable<boolean>(observer => {\n // Check again if loaded while waiting\n if (window.google?.maps) {\n observer.next(true)\n observer.complete()\n return\n }\n\n const script = document.createElement('script')\n // Using places library instead of geometry for geocoding\n script.src = `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=places&callback=initGoogleMaps&v=weekly`\n script.async = true\n script.defer = true\n\n window.initGoogleMaps = () => {\n observer.next(true)\n observer.complete()\n }\n\n script.addEventListener('error', (error) => {\n console.error('Google Maps script loading error:', error)\n observer.error(new Error('Failed to load Google Maps. Please check API key configuration and ensure the domain is authorized.'))\n }, { once: true })\n\n document.head.appendChild(script)\n }).pipe(\n shareReplay(1) // Share the result among all subscribers\n )\n\n return this.loading$\n }\n}\n\n/**\n * `<schmancy-map>` component\n *\n * A Google Maps component with an intuitive API for displaying interactive or static maps.\n * Supports both address strings (with automatic geocoding) and precise coordinates.\n *\n * @element schmancy-map\n *\n * @example\n * <!-- Simple address -->\n * <schmancy-map address=\"Times Square, New York\"></schmancy-map>\n *\n * @example\n * <!-- With coordinates -->\n * <schmancy-map latitude=\"40.758\" longitude=\"-73.985\" zoom=\"17\"></schmancy-map>\n *\n * @example\n * <!-- Satellite view -->\n * <schmancy-map address=\"Grand Canyon\" type=\"satellite\" height=\"500px\"></schmancy-map>\n *\n * @example\n * <!-- Static map -->\n * <schmancy-map address=\"Eiffel Tower, Paris\" interactive=\"false\" controls=\"false\"></schmancy-map>\n */\n@customElement('schmancy-map')\nexport default class SchmancyMap extends SchmancyElement {\n\tstatic styles = [css`\n :host {\n display: block;\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background-color: var(--schmancy-sys-color-surface-container);\n color: var(--schmancy-sys-color-surface-on);\n }\n \n :host([height]) {\n height: var(--map-height);\n }\n \n .map-container {\n width: 100%;\n height: 100%;\n min-height: 400px;\n }\n \n .loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 400px;\n background-color: var(--schmancy-sys-color-surface-containerLow);\n }\n \n .error-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 400px;\n padding: 24px;\n text-align: center;\n background-color: var(--schmancy-sys-color-surface-containerLow);\n }\n \n .error-icon {\n width: 48px;\n height: 48px;\n margin-bottom: 16px;\n color: var(--schmancy-sys-color-error-default);\n }\n \n .error-title {\n font-size: 18px;\n font-weight: 600;\n margin-bottom: 8px;\n color: var(--schmancy-sys-color-surface-on);\n }\n \n .error-message {\n font-size: 14px;\n color: var(--schmancy-sys-color-surface-onVariant);\n line-height: 1.5;\n }\n`];\n /**\n * Simple address string that automatically geocodes to display the location.\n * Takes precedence over latitude/longitude if both are provided.\n */\n @property({ type: String })\n address: string = ''\n\n /**\n * Latitude coordinate for precise location.\n * Used when address is not provided.\n */\n @property({ type: Number })\n latitude?: number\n\n /**\n * Longitude coordinate for precise location.\n * Used when address is not provided.\n */\n @property({ type: Number })\n longitude?: number\n\n /**\n * Map zoom level. Higher numbers show more detail.\n * @default 15\n */\n @property({ type: Number })\n zoom: number = 15\n\n /**\n * Height of the map with CSS unit (e.g., \"400px\", \"50vh\").\n * @default \"400px\"\n */\n @property({ type: String, reflect: true })\n height: string = '400px'\n\n /**\n * Whether to show a marker at the location.\n * @default true\n */\n @property({ type: Boolean })\n marker: boolean = true\n\n /**\n * Tooltip text for the location marker.\n */\n @property({ type: String })\n markerTitle: string = ''\n\n /**\n * Map display type.\n * Options: \"roadmap\", \"satellite\", \"hybrid\", \"terrain\"\n * @default \"roadmap\"\n */\n @property({ type: String })\n type: 'roadmap' | 'satellite' | 'hybrid' | 'terrain' = 'roadmap'\n\n /**\n * Whether users can interact with the map (pan, zoom, click).\n * @default true\n */\n @property({ type: Boolean })\n interactive: boolean = true\n\n /**\n * Whether to show map controls (zoom buttons, fullscreen, etc.).\n * @default true\n */\n @property({ type: Boolean })\n controls: boolean = true\n\n /**\n * Google Maps API key. Required for the map to load.\n */\n @property({ type: String })\n apiKey: string = ''\n\n @state() private loading: boolean = false\n @state() private error: string = ''\n\n private mapRef = createRef<HTMLDivElement>()\n private map?: any\n private mapMarker?: any\n private geocoder?: any\n private intersectionObserver?: IntersectionObserver\n private hasLoadedMap = false\n\n connectedCallback() {\n super.connectedCallback()\n \n // Set CSS custom property for height\n this.style.setProperty('--map-height', this.height)\n \n // Only load map when component becomes visible\n this.setupIntersectionObserver()\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n if (this.intersectionObserver) {\n this.intersectionObserver.disconnect()\n }\n }\n\n private setupIntersectionObserver() {\n // Load map only when it's visible in the viewport\n this.intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting && !this.hasLoadedMap) {\n this.hasLoadedMap = true\n this.loadMap()\n // Stop observing after loading\n this.intersectionObserver?.disconnect()\n }\n })\n },\n {\n root: null,\n rootMargin: '50px',\n threshold: 0.01\n }\n )\n \n this.intersectionObserver.observe(this)\n }\n\n private loadMap() {\n of(null).pipe(\n tap(() => {\n this.loading = true\n this.error = ''\n }),\n switchMap(() => {\n if (!this.apiKey) {\n throw new Error('Google Maps API key is required. Please provide it via the apiKey property.')\n }\n return GoogleMapsLoader.load(this.apiKey)\n }),\n switchMap(() => this.getCoordinates()),\n tap((coordinates) => {\n // Store coordinates for later use\n this.pendingCoordinates = coordinates\n }),\n catchError((error) => {\n console.error('Map loading error:', error)\n this.error = error.message || 'Failed to load map'\n return EMPTY\n }),\n finalize(() => {\n this.loading = false\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private pendingCoordinates?: { lat: number; lng: number }\n\n private getCoordinates() {\n if (this.address) {\n return this.geocodeAddress(this.address)\n }\n\n if (this.latitude !== undefined && this.longitude !== undefined) {\n return of({ lat: this.latitude, lng: this.longitude })\n }\n\n throw new Error('Either address or latitude/longitude coordinates are required')\n }\n\n private geocodeAddress(address: string) {\n if (!this.geocoder) {\n this.geocoder = new window.google!.maps.Geocoder()\n }\n\n return new Promise<{ lat: number; lng: number }>((resolve, reject) => {\n this.geocoder.geocode({ address }, (results: any[], status: string) => {\n if (status === 'OK' && results[0]) {\n const location = results[0].geometry.location\n resolve({\n lat: location.lat(),\n lng: location.lng()\n })\n } else {\n reject(new Error(`Geocoding failed: ${status}`))\n }\n })\n })\n }\n\n private initializeMap(coordinates: { lat: number; lng: number }) {\n if (!this.mapRef.value || !window.google?.maps) {\n return\n }\n\n const mapOptions = {\n center: coordinates,\n zoom: this.zoom,\n mapTypeId: this.getMapTypeId(),\n disableDefaultUI: !this.controls,\n gestureHandling: this.interactive ? 'cooperative' : 'none',\n zoomControl: this.controls,\n mapTypeControl: this.controls,\n scaleControl: this.controls,\n streetViewControl: this.controls,\n rotateControl: this.controls,\n fullscreenControl: this.controls,\n styles: this.interactive ? undefined : [\n {\n featureType: 'poi',\n stylers: [{ visibility: 'off' }]\n }\n ]\n }\n\n this.map = new window.google.maps.Map(this.mapRef.value, mapOptions)\n\n if (this.marker) {\n this.addMarker(coordinates)\n }\n }\n\n private getMapTypeId(): string {\n const typeMap = {\n roadmap: window.google!.maps.MapTypeId.ROADMAP,\n satellite: window.google!.maps.MapTypeId.SATELLITE,\n hybrid: window.google!.maps.MapTypeId.HYBRID,\n terrain: window.google!.maps.MapTypeId.TERRAIN\n }\n return typeMap[this.type] || typeMap.roadmap\n }\n\n private addMarker(coordinates: { lat: number; lng: number }) {\n if (!window.google?.maps || !this.map) {\n return\n }\n\n this.mapMarker = new window.google.maps.Marker({\n position: coordinates,\n map: this.map,\n title: this.markerTitle || this.address || 'Location'\n })\n }\n\n protected updated(changedProperties: Map<string, unknown>) {\n super.updated(changedProperties)\n\n if (changedProperties.has('height')) {\n this.style.setProperty('--map-height', this.height)\n }\n\n // Initialize map when loading completes and container is ready\n if (changedProperties.has('loading') && !this.loading && this.pendingCoordinates && !this.map) {\n // Wait for next frame to ensure map container is rendered\n requestAnimationFrame(() => {\n if (this.mapRef.value && this.pendingCoordinates) {\n this.initializeMap(this.pendingCoordinates)\n this.pendingCoordinates = undefined\n }\n })\n }\n\n // Reload map if critical properties change (only if map was already loaded)\n if (\n changedProperties.has('address') ||\n changedProperties.has('latitude') ||\n changedProperties.has('longitude') ||\n changedProperties.has('type') ||\n changedProperties.has('zoom')\n ) {\n if (this.map && this.hasLoadedMap) {\n this.loadMap()\n }\n }\n\n // Update marker title if it changes\n if (changedProperties.has('markerTitle') && this.mapMarker) {\n this.mapMarker.setTitle(this.markerTitle || this.address || 'Location')\n }\n }\n\n protected render() {\n return html`\n ${when(\n this.loading,\n () => html`\n <div class=\"loading-container\">\n <schmancy-spinner></schmancy-spinner>\n </div>\n `,\n () => when(\n this.error,\n () => html`\n <div class=\"error-container\">\n <svg class=\"error-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" \n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z\" />\n </svg>\n <div class=\"error-title\">Map could not be loaded</div>\n <div class=\"error-message\">${this.error}</div>\n </div>\n `,\n () => html`\n <div class=\"map-container\" ${ref(this.mapRef)}></div>\n `\n )\n )}\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-map': SchmancyMap\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-BIXF7xkF.cjs`),t=require(`./decorate-DpFmy0nm.cjs`);let n=require(`rxjs`),r=require(`rxjs/operators`),i=require(`lit/decorators.js`),a=require(`lit`),o=require(`lit/directives/ref.js`),s=require(`lit/directives/when.js`);var c=class{static load(e){return window.google?.maps?(0,n.of)(!0):(this.loading$||=new n.Observable(t=>{if(window.google?.maps)return t.next(!0),void t.complete();let n=document.createElement(`script`);n.src=`https://maps.googleapis.com/maps/api/js?key=${e}&libraries=places&callback=initGoogleMaps&v=weekly`,n.async=!0,n.defer=!0,window.initGoogleMaps=()=>{t.next(!0),t.complete()},n.addEventListener(`error`,e=>{t.error(Error(`Failed to load Google Maps. Please check API key configuration and ensure the domain is authorized.`))},{once:!0}),document.head.appendChild(n)}).pipe((0,r.shareReplay)(1)),this.loading$)}},l=class extends e.s{constructor(...e){super(...e),this.address=``,this.zoom=15,this.height=`400px`,this.marker=!0,this.markerTitle=``,this.type=`roadmap`,this.interactive=!0,this.controls=!0,this.apiKey=``,this.loading=!1,this.error=``,this.mapRef=(0,o.createRef)(),this.hasLoadedMap=!1}static{this.styles=[a.css`
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-De3xfjrm.cjs`),t=require(`./decorate-DpFmy0nm.cjs`);let n=require(`rxjs`),r=require(`rxjs/operators`),i=require(`lit/decorators.js`),a=require(`lit`),o=require(`lit/directives/ref.js`),s=require(`lit/directives/when.js`);var c=class{static load(e){return window.google?.maps?(0,n.of)(!0):(this.loading$||=new n.Observable(t=>{if(window.google?.maps)return t.next(!0),void t.complete();let n=document.createElement(`script`);n.src=`https://maps.googleapis.com/maps/api/js?key=${e}&libraries=places&callback=initGoogleMaps&v=weekly`,n.async=!0,n.defer=!0,window.initGoogleMaps=()=>{t.next(!0),t.complete()},n.addEventListener(`error`,e=>{t.error(Error(`Failed to load Google Maps. Please check API key configuration and ensure the domain is authorized.`))},{once:!0}),document.head.appendChild(n)}).pipe((0,r.shareReplay)(1)),this.loading$)}},l=class extends e.s{constructor(...e){super(...e),this.address=``,this.zoom=15,this.height=`400px`,this.marker=!0,this.markerTitle=``,this.type=`roadmap`,this.interactive=!0,this.controls=!0,this.apiKey=``,this.loading=!1,this.error=``,this.mapRef=(0,o.createRef)(),this.hasLoadedMap=!1}static{this.styles=[a.css`
2
2
  :host {
3
3
  display: block;
4
4
  position: relative;
@@ -1 +1 @@
1
- {"version":3,"file":"map-CZ0816EI.cjs","names":[],"sources":["../src/map/map.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { ref, createRef } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { of, EMPTY, Observable } from 'rxjs'\nimport { switchMap, tap, catchError, takeUntil, finalize, shareReplay } from 'rxjs/operators'\n\ninterface GoogleMapsAPI {\n maps: {\n Map: new (element: HTMLElement, options: any) => any\n Marker: new (options: any) => any\n Geocoder: new () => any\n LatLng: new (lat: number, lng: number) => any\n MapTypeId: {\n ROADMAP: string\n SATELLITE: string\n HYBRID: string\n TERRAIN: string\n }\n }\n}\n\ndeclare global {\n interface Window {\n google?: GoogleMapsAPI\n initGoogleMaps?: () => void\n __schmancyGoogleMapsLoading?: Observable<boolean>\n }\n}\n\n// Singleton for managing Google Maps script loading\n// oxlint-disable-next-line typescript/no-extraneous-class\nclass GoogleMapsLoader {\n private static loading$?: Observable<boolean>\n\n static load(apiKey: string): Observable<boolean> {\n // If already loaded, return success\n if (window.google?.maps) {\n return of(true)\n }\n\n // If already loading, return the existing observable\n if (this.loading$) {\n return this.loading$\n }\n\n // Create a new loading observable\n this.loading$ = new Observable<boolean>(observer => {\n // Check again if loaded while waiting\n if (window.google?.maps) {\n observer.next(true)\n observer.complete()\n return\n }\n\n const script = document.createElement('script')\n // Using places library instead of geometry for geocoding\n script.src = `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=places&callback=initGoogleMaps&v=weekly`\n script.async = true\n script.defer = true\n\n window.initGoogleMaps = () => {\n observer.next(true)\n observer.complete()\n }\n\n script.addEventListener('error', (error) => {\n console.error('Google Maps script loading error:', error)\n observer.error(new Error('Failed to load Google Maps. Please check API key configuration and ensure the domain is authorized.'))\n }, { once: true })\n\n document.head.appendChild(script)\n }).pipe(\n shareReplay(1) // Share the result among all subscribers\n )\n\n return this.loading$\n }\n}\n\n/**\n * `<schmancy-map>` component\n *\n * A Google Maps component with an intuitive API for displaying interactive or static maps.\n * Supports both address strings (with automatic geocoding) and precise coordinates.\n *\n * @element schmancy-map\n *\n * @example\n * <!-- Simple address -->\n * <schmancy-map address=\"Times Square, New York\"></schmancy-map>\n *\n * @example\n * <!-- With coordinates -->\n * <schmancy-map latitude=\"40.758\" longitude=\"-73.985\" zoom=\"17\"></schmancy-map>\n *\n * @example\n * <!-- Satellite view -->\n * <schmancy-map address=\"Grand Canyon\" type=\"satellite\" height=\"500px\"></schmancy-map>\n *\n * @example\n * <!-- Static map -->\n * <schmancy-map address=\"Eiffel Tower, Paris\" interactive=\"false\" controls=\"false\"></schmancy-map>\n */\n@customElement('schmancy-map')\nexport default class SchmancyMap extends SchmancyElement {\n\tstatic styles = [css`\n :host {\n display: block;\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background-color: var(--schmancy-sys-color-surface-container);\n color: var(--schmancy-sys-color-surface-on);\n }\n \n :host([height]) {\n height: var(--map-height);\n }\n \n .map-container {\n width: 100%;\n height: 100%;\n min-height: 400px;\n }\n \n .loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 400px;\n background-color: var(--schmancy-sys-color-surface-containerLow);\n }\n \n .error-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 400px;\n padding: 24px;\n text-align: center;\n background-color: var(--schmancy-sys-color-surface-containerLow);\n }\n \n .error-icon {\n width: 48px;\n height: 48px;\n margin-bottom: 16px;\n color: var(--schmancy-sys-color-error-default);\n }\n \n .error-title {\n font-size: 18px;\n font-weight: 600;\n margin-bottom: 8px;\n color: var(--schmancy-sys-color-surface-on);\n }\n \n .error-message {\n font-size: 14px;\n color: var(--schmancy-sys-color-surface-onVariant);\n line-height: 1.5;\n }\n`];\n /**\n * Simple address string that automatically geocodes to display the location.\n * Takes precedence over latitude/longitude if both are provided.\n */\n @property({ type: String })\n address: string = ''\n\n /**\n * Latitude coordinate for precise location.\n * Used when address is not provided.\n */\n @property({ type: Number })\n latitude?: number\n\n /**\n * Longitude coordinate for precise location.\n * Used when address is not provided.\n */\n @property({ type: Number })\n longitude?: number\n\n /**\n * Map zoom level. Higher numbers show more detail.\n * @default 15\n */\n @property({ type: Number })\n zoom: number = 15\n\n /**\n * Height of the map with CSS unit (e.g., \"400px\", \"50vh\").\n * @default \"400px\"\n */\n @property({ type: String, reflect: true })\n height: string = '400px'\n\n /**\n * Whether to show a marker at the location.\n * @default true\n */\n @property({ type: Boolean })\n marker: boolean = true\n\n /**\n * Tooltip text for the location marker.\n */\n @property({ type: String })\n markerTitle: string = ''\n\n /**\n * Map display type.\n * Options: \"roadmap\", \"satellite\", \"hybrid\", \"terrain\"\n * @default \"roadmap\"\n */\n @property({ type: String })\n type: 'roadmap' | 'satellite' | 'hybrid' | 'terrain' = 'roadmap'\n\n /**\n * Whether users can interact with the map (pan, zoom, click).\n * @default true\n */\n @property({ type: Boolean })\n interactive: boolean = true\n\n /**\n * Whether to show map controls (zoom buttons, fullscreen, etc.).\n * @default true\n */\n @property({ type: Boolean })\n controls: boolean = true\n\n /**\n * Google Maps API key. Required for the map to load.\n */\n @property({ type: String })\n apiKey: string = ''\n\n @state() private loading: boolean = false\n @state() private error: string = ''\n\n private mapRef = createRef<HTMLDivElement>()\n private map?: any\n private mapMarker?: any\n private geocoder?: any\n private intersectionObserver?: IntersectionObserver\n private hasLoadedMap = false\n\n connectedCallback() {\n super.connectedCallback()\n \n // Set CSS custom property for height\n this.style.setProperty('--map-height', this.height)\n \n // Only load map when component becomes visible\n this.setupIntersectionObserver()\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n if (this.intersectionObserver) {\n this.intersectionObserver.disconnect()\n }\n }\n\n private setupIntersectionObserver() {\n // Load map only when it's visible in the viewport\n this.intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting && !this.hasLoadedMap) {\n this.hasLoadedMap = true\n this.loadMap()\n // Stop observing after loading\n this.intersectionObserver?.disconnect()\n }\n })\n },\n {\n root: null,\n rootMargin: '50px',\n threshold: 0.01\n }\n )\n \n this.intersectionObserver.observe(this)\n }\n\n private loadMap() {\n of(null).pipe(\n tap(() => {\n this.loading = true\n this.error = ''\n }),\n switchMap(() => {\n if (!this.apiKey) {\n throw new Error('Google Maps API key is required. Please provide it via the apiKey property.')\n }\n return GoogleMapsLoader.load(this.apiKey)\n }),\n switchMap(() => this.getCoordinates()),\n tap((coordinates) => {\n // Store coordinates for later use\n this.pendingCoordinates = coordinates\n }),\n catchError((error) => {\n console.error('Map loading error:', error)\n this.error = error.message || 'Failed to load map'\n return EMPTY\n }),\n finalize(() => {\n this.loading = false\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private pendingCoordinates?: { lat: number; lng: number }\n\n private getCoordinates() {\n if (this.address) {\n return this.geocodeAddress(this.address)\n }\n\n if (this.latitude !== undefined && this.longitude !== undefined) {\n return of({ lat: this.latitude, lng: this.longitude })\n }\n\n throw new Error('Either address or latitude/longitude coordinates are required')\n }\n\n private geocodeAddress(address: string) {\n if (!this.geocoder) {\n this.geocoder = new window.google!.maps.Geocoder()\n }\n\n return new Promise<{ lat: number; lng: number }>((resolve, reject) => {\n this.geocoder.geocode({ address }, (results: any[], status: string) => {\n if (status === 'OK' && results[0]) {\n const location = results[0].geometry.location\n resolve({\n lat: location.lat(),\n lng: location.lng()\n })\n } else {\n reject(new Error(`Geocoding failed: ${status}`))\n }\n })\n })\n }\n\n private initializeMap(coordinates: { lat: number; lng: number }) {\n if (!this.mapRef.value || !window.google?.maps) {\n return\n }\n\n const mapOptions = {\n center: coordinates,\n zoom: this.zoom,\n mapTypeId: this.getMapTypeId(),\n disableDefaultUI: !this.controls,\n gestureHandling: this.interactive ? 'cooperative' : 'none',\n zoomControl: this.controls,\n mapTypeControl: this.controls,\n scaleControl: this.controls,\n streetViewControl: this.controls,\n rotateControl: this.controls,\n fullscreenControl: this.controls,\n styles: this.interactive ? undefined : [\n {\n featureType: 'poi',\n stylers: [{ visibility: 'off' }]\n }\n ]\n }\n\n this.map = new window.google.maps.Map(this.mapRef.value, mapOptions)\n\n if (this.marker) {\n this.addMarker(coordinates)\n }\n }\n\n private getMapTypeId(): string {\n const typeMap = {\n roadmap: window.google!.maps.MapTypeId.ROADMAP,\n satellite: window.google!.maps.MapTypeId.SATELLITE,\n hybrid: window.google!.maps.MapTypeId.HYBRID,\n terrain: window.google!.maps.MapTypeId.TERRAIN\n }\n return typeMap[this.type] || typeMap.roadmap\n }\n\n private addMarker(coordinates: { lat: number; lng: number }) {\n if (!window.google?.maps || !this.map) {\n return\n }\n\n this.mapMarker = new window.google.maps.Marker({\n position: coordinates,\n map: this.map,\n title: this.markerTitle || this.address || 'Location'\n })\n }\n\n protected updated(changedProperties: Map<string, unknown>) {\n super.updated(changedProperties)\n\n if (changedProperties.has('height')) {\n this.style.setProperty('--map-height', this.height)\n }\n\n // Initialize map when loading completes and container is ready\n if (changedProperties.has('loading') && !this.loading && this.pendingCoordinates && !this.map) {\n // Wait for next frame to ensure map container is rendered\n requestAnimationFrame(() => {\n if (this.mapRef.value && this.pendingCoordinates) {\n this.initializeMap(this.pendingCoordinates)\n this.pendingCoordinates = undefined\n }\n })\n }\n\n // Reload map if critical properties change (only if map was already loaded)\n if (\n changedProperties.has('address') ||\n changedProperties.has('latitude') ||\n changedProperties.has('longitude') ||\n changedProperties.has('type') ||\n changedProperties.has('zoom')\n ) {\n if (this.map && this.hasLoadedMap) {\n this.loadMap()\n }\n }\n\n // Update marker title if it changes\n if (changedProperties.has('markerTitle') && this.mapMarker) {\n this.mapMarker.setTitle(this.markerTitle || this.address || 'Location')\n }\n }\n\n protected render() {\n return html`\n ${when(\n this.loading,\n () => html`\n <div class=\"loading-container\">\n <schmancy-spinner></schmancy-spinner>\n </div>\n `,\n () => when(\n this.error,\n () => html`\n <div class=\"error-container\">\n <svg class=\"error-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" \n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z\" />\n </svg>\n <div class=\"error-title\">Map could not be loaded</div>\n <div class=\"error-message\">${this.error}</div>\n </div>\n `,\n () => html`\n <div class=\"map-container\" ${ref(this.mapRef)}></div>\n `\n )\n )}\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-map': SchmancyMap\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"map-WXeVkx2K.cjs","names":[],"sources":["../src/map/map.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { ref, createRef } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { of, EMPTY, Observable } from 'rxjs'\nimport { switchMap, tap, catchError, takeUntil, finalize, shareReplay } from 'rxjs/operators'\n\ninterface GoogleMapsAPI {\n maps: {\n Map: new (element: HTMLElement, options: any) => any\n Marker: new (options: any) => any\n Geocoder: new () => any\n LatLng: new (lat: number, lng: number) => any\n MapTypeId: {\n ROADMAP: string\n SATELLITE: string\n HYBRID: string\n TERRAIN: string\n }\n }\n}\n\ndeclare global {\n interface Window {\n google?: GoogleMapsAPI\n initGoogleMaps?: () => void\n __schmancyGoogleMapsLoading?: Observable<boolean>\n }\n}\n\n// Singleton for managing Google Maps script loading\n// oxlint-disable-next-line typescript/no-extraneous-class\nclass GoogleMapsLoader {\n private static loading$?: Observable<boolean>\n\n static load(apiKey: string): Observable<boolean> {\n // If already loaded, return success\n if (window.google?.maps) {\n return of(true)\n }\n\n // If already loading, return the existing observable\n if (this.loading$) {\n return this.loading$\n }\n\n // Create a new loading observable\n this.loading$ = new Observable<boolean>(observer => {\n // Check again if loaded while waiting\n if (window.google?.maps) {\n observer.next(true)\n observer.complete()\n return\n }\n\n const script = document.createElement('script')\n // Using places library instead of geometry for geocoding\n script.src = `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=places&callback=initGoogleMaps&v=weekly`\n script.async = true\n script.defer = true\n\n window.initGoogleMaps = () => {\n observer.next(true)\n observer.complete()\n }\n\n script.addEventListener('error', (error) => {\n console.error('Google Maps script loading error:', error)\n observer.error(new Error('Failed to load Google Maps. Please check API key configuration and ensure the domain is authorized.'))\n }, { once: true })\n\n document.head.appendChild(script)\n }).pipe(\n shareReplay(1) // Share the result among all subscribers\n )\n\n return this.loading$\n }\n}\n\n/**\n * `<schmancy-map>` component\n *\n * A Google Maps component with an intuitive API for displaying interactive or static maps.\n * Supports both address strings (with automatic geocoding) and precise coordinates.\n *\n * @element schmancy-map\n *\n * @example\n * <!-- Simple address -->\n * <schmancy-map address=\"Times Square, New York\"></schmancy-map>\n *\n * @example\n * <!-- With coordinates -->\n * <schmancy-map latitude=\"40.758\" longitude=\"-73.985\" zoom=\"17\"></schmancy-map>\n *\n * @example\n * <!-- Satellite view -->\n * <schmancy-map address=\"Grand Canyon\" type=\"satellite\" height=\"500px\"></schmancy-map>\n *\n * @example\n * <!-- Static map -->\n * <schmancy-map address=\"Eiffel Tower, Paris\" interactive=\"false\" controls=\"false\"></schmancy-map>\n */\n@customElement('schmancy-map')\nexport default class SchmancyMap extends SchmancyElement {\n\tstatic styles = [css`\n :host {\n display: block;\n position: relative;\n border-radius: 8px;\n overflow: hidden;\n background-color: var(--schmancy-sys-color-surface-container);\n color: var(--schmancy-sys-color-surface-on);\n }\n \n :host([height]) {\n height: var(--map-height);\n }\n \n .map-container {\n width: 100%;\n height: 100%;\n min-height: 400px;\n }\n \n .loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 400px;\n background-color: var(--schmancy-sys-color-surface-containerLow);\n }\n \n .error-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n min-height: 400px;\n padding: 24px;\n text-align: center;\n background-color: var(--schmancy-sys-color-surface-containerLow);\n }\n \n .error-icon {\n width: 48px;\n height: 48px;\n margin-bottom: 16px;\n color: var(--schmancy-sys-color-error-default);\n }\n \n .error-title {\n font-size: 18px;\n font-weight: 600;\n margin-bottom: 8px;\n color: var(--schmancy-sys-color-surface-on);\n }\n \n .error-message {\n font-size: 14px;\n color: var(--schmancy-sys-color-surface-onVariant);\n line-height: 1.5;\n }\n`];\n /**\n * Simple address string that automatically geocodes to display the location.\n * Takes precedence over latitude/longitude if both are provided.\n */\n @property({ type: String })\n address: string = ''\n\n /**\n * Latitude coordinate for precise location.\n * Used when address is not provided.\n */\n @property({ type: Number })\n latitude?: number\n\n /**\n * Longitude coordinate for precise location.\n * Used when address is not provided.\n */\n @property({ type: Number })\n longitude?: number\n\n /**\n * Map zoom level. Higher numbers show more detail.\n * @default 15\n */\n @property({ type: Number })\n zoom: number = 15\n\n /**\n * Height of the map with CSS unit (e.g., \"400px\", \"50vh\").\n * @default \"400px\"\n */\n @property({ type: String, reflect: true })\n height: string = '400px'\n\n /**\n * Whether to show a marker at the location.\n * @default true\n */\n @property({ type: Boolean })\n marker: boolean = true\n\n /**\n * Tooltip text for the location marker.\n */\n @property({ type: String })\n markerTitle: string = ''\n\n /**\n * Map display type.\n * Options: \"roadmap\", \"satellite\", \"hybrid\", \"terrain\"\n * @default \"roadmap\"\n */\n @property({ type: String })\n type: 'roadmap' | 'satellite' | 'hybrid' | 'terrain' = 'roadmap'\n\n /**\n * Whether users can interact with the map (pan, zoom, click).\n * @default true\n */\n @property({ type: Boolean })\n interactive: boolean = true\n\n /**\n * Whether to show map controls (zoom buttons, fullscreen, etc.).\n * @default true\n */\n @property({ type: Boolean })\n controls: boolean = true\n\n /**\n * Google Maps API key. Required for the map to load.\n */\n @property({ type: String })\n apiKey: string = ''\n\n @state() private loading: boolean = false\n @state() private error: string = ''\n\n private mapRef = createRef<HTMLDivElement>()\n private map?: any\n private mapMarker?: any\n private geocoder?: any\n private intersectionObserver?: IntersectionObserver\n private hasLoadedMap = false\n\n connectedCallback() {\n super.connectedCallback()\n \n // Set CSS custom property for height\n this.style.setProperty('--map-height', this.height)\n \n // Only load map when component becomes visible\n this.setupIntersectionObserver()\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n if (this.intersectionObserver) {\n this.intersectionObserver.disconnect()\n }\n }\n\n private setupIntersectionObserver() {\n // Load map only when it's visible in the viewport\n this.intersectionObserver = new IntersectionObserver(\n (entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting && !this.hasLoadedMap) {\n this.hasLoadedMap = true\n this.loadMap()\n // Stop observing after loading\n this.intersectionObserver?.disconnect()\n }\n })\n },\n {\n root: null,\n rootMargin: '50px',\n threshold: 0.01\n }\n )\n \n this.intersectionObserver.observe(this)\n }\n\n private loadMap() {\n of(null).pipe(\n tap(() => {\n this.loading = true\n this.error = ''\n }),\n switchMap(() => {\n if (!this.apiKey) {\n throw new Error('Google Maps API key is required. Please provide it via the apiKey property.')\n }\n return GoogleMapsLoader.load(this.apiKey)\n }),\n switchMap(() => this.getCoordinates()),\n tap((coordinates) => {\n // Store coordinates for later use\n this.pendingCoordinates = coordinates\n }),\n catchError((error) => {\n console.error('Map loading error:', error)\n this.error = error.message || 'Failed to load map'\n return EMPTY\n }),\n finalize(() => {\n this.loading = false\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private pendingCoordinates?: { lat: number; lng: number }\n\n private getCoordinates() {\n if (this.address) {\n return this.geocodeAddress(this.address)\n }\n\n if (this.latitude !== undefined && this.longitude !== undefined) {\n return of({ lat: this.latitude, lng: this.longitude })\n }\n\n throw new Error('Either address or latitude/longitude coordinates are required')\n }\n\n private geocodeAddress(address: string) {\n if (!this.geocoder) {\n this.geocoder = new window.google!.maps.Geocoder()\n }\n\n return new Promise<{ lat: number; lng: number }>((resolve, reject) => {\n this.geocoder.geocode({ address }, (results: any[], status: string) => {\n if (status === 'OK' && results[0]) {\n const location = results[0].geometry.location\n resolve({\n lat: location.lat(),\n lng: location.lng()\n })\n } else {\n reject(new Error(`Geocoding failed: ${status}`))\n }\n })\n })\n }\n\n private initializeMap(coordinates: { lat: number; lng: number }) {\n if (!this.mapRef.value || !window.google?.maps) {\n return\n }\n\n const mapOptions = {\n center: coordinates,\n zoom: this.zoom,\n mapTypeId: this.getMapTypeId(),\n disableDefaultUI: !this.controls,\n gestureHandling: this.interactive ? 'cooperative' : 'none',\n zoomControl: this.controls,\n mapTypeControl: this.controls,\n scaleControl: this.controls,\n streetViewControl: this.controls,\n rotateControl: this.controls,\n fullscreenControl: this.controls,\n styles: this.interactive ? undefined : [\n {\n featureType: 'poi',\n stylers: [{ visibility: 'off' }]\n }\n ]\n }\n\n this.map = new window.google.maps.Map(this.mapRef.value, mapOptions)\n\n if (this.marker) {\n this.addMarker(coordinates)\n }\n }\n\n private getMapTypeId(): string {\n const typeMap = {\n roadmap: window.google!.maps.MapTypeId.ROADMAP,\n satellite: window.google!.maps.MapTypeId.SATELLITE,\n hybrid: window.google!.maps.MapTypeId.HYBRID,\n terrain: window.google!.maps.MapTypeId.TERRAIN\n }\n return typeMap[this.type] || typeMap.roadmap\n }\n\n private addMarker(coordinates: { lat: number; lng: number }) {\n if (!window.google?.maps || !this.map) {\n return\n }\n\n this.mapMarker = new window.google.maps.Marker({\n position: coordinates,\n map: this.map,\n title: this.markerTitle || this.address || 'Location'\n })\n }\n\n protected updated(changedProperties: Map<string, unknown>) {\n super.updated(changedProperties)\n\n if (changedProperties.has('height')) {\n this.style.setProperty('--map-height', this.height)\n }\n\n // Initialize map when loading completes and container is ready\n if (changedProperties.has('loading') && !this.loading && this.pendingCoordinates && !this.map) {\n // Wait for next frame to ensure map container is rendered\n requestAnimationFrame(() => {\n if (this.mapRef.value && this.pendingCoordinates) {\n this.initializeMap(this.pendingCoordinates)\n this.pendingCoordinates = undefined\n }\n })\n }\n\n // Reload map if critical properties change (only if map was already loaded)\n if (\n changedProperties.has('address') ||\n changedProperties.has('latitude') ||\n changedProperties.has('longitude') ||\n changedProperties.has('type') ||\n changedProperties.has('zoom')\n ) {\n if (this.map && this.hasLoadedMap) {\n this.loadMap()\n }\n }\n\n // Update marker title if it changes\n if (changedProperties.has('markerTitle') && this.mapMarker) {\n this.mapMarker.setTitle(this.markerTitle || this.address || 'Location')\n }\n }\n\n protected render() {\n return html`\n ${when(\n this.loading,\n () => html`\n <div class=\"loading-container\">\n <schmancy-spinner></schmancy-spinner>\n </div>\n `,\n () => when(\n this.error,\n () => html`\n <div class=\"error-container\">\n <svg class=\"error-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" \n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L4.082 16.5c-.77.833.192 2.5 1.732 2.5z\" />\n </svg>\n <div class=\"error-title\">Map could not be loaded</div>\n <div class=\"error-message\">${this.error}</div>\n </div>\n `,\n () => html`\n <div class=\"map-container\" ${ref(this.mapRef)}></div>\n `\n )\n )}\n `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-map': SchmancyMap\n }\n}\n"],"mappings":"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"}
package/dist/map.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./map-CZ0816EI.cjs`);exports.SchmancyMap=e.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./map-WXeVkx2K.cjs`);exports.SchmancyMap=e.t;
package/dist/map.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as e } from "./map-BoIu47qU.js";
1
+ import { t as e } from "./map-Dhy3ta9v.js";
2
2
  export { e as SchmancyMap };
@@ -1,4 +1,4 @@
1
- import { s as e } from "./mixins-CL1krSOE.js";
1
+ import { s as e } from "./mixins-CcIWET41.js";
2
2
  import { t } from "./decorate-23nYs4Le.js";
3
3
  import { t as n } from "./dialog-service-DI9PPy4H.js";
4
4
  import { customElement as r, query as i } from "lit/decorators.js";
@@ -1 +1 @@
1
- {"version":3,"file":"menu-BV9_8ys8.js","names":[],"sources":["../src/menu/menu-item.ts","../src/menu/menu.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport { $dialog } from '../dialog/dialog-service'\n\n@customElement('schmancy-menu-item')\nexport default class SchmancyMenuItem extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`]\n\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item @click=${() => $dialog.dismiss()}>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-list-item>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu-item': SchmancyMenuItem\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\nimport { $dialog } from '../dialog/dialog-service'\n\n/**\n * Menu Component\n *\n * CRITICAL: The dialog ONLY renders the raw menu items passed via the default slot.\n * NO <ul> wrapper, NO classes, NO additional markup in the dialog call.\n * The dialog service handles positioning and display - we just pass the pure content.\n *\n * @example Basic menu with auto-dismiss\n * ```typescript\n * <schmancy-menu>\n * <schmancy-button slot=\"trigger\">Actions</schmancy-button>\n * <schmancy-menu-item @click=${() => editItem()}>Edit</schmancy-menu-item>\n * <schmancy-menu-item @click=${() => deleteItem()}>Delete</schmancy-menu-item>\n * </schmancy-menu>\n * ```\n * Note: Dialog auto-dismisses when schmancy-menu-item is clicked\n *\n * @example Custom component (manual dismiss)\n * ```typescript\n * <schmancy-menu>\n * <schmancy-icon-button slot=\"trigger\">settings</schmancy-icon-button>\n * <my-settings-form @submit=${() => $dialog.dismiss()}></my-settings-form>\n * </schmancy-menu>\n * ```\n * Note: Custom components must call $dialog.dismiss() manually\n *\n * @slot trigger - Button to open menu (new naming)\n * @slot button - Button to open menu (backward compatible)\n * @slot default - Menu items or any custom component to display in dialog\n */\n@customElement('schmancy-menu')\nexport default class SchmancyMenu extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t}\n`]\n\n\t@query('slot:not([name])')\n\tprivate menuSlot!: HTMLSlotElement\n\n\tprivate showMenu(event: MouseEvent) {\n\t\tconst menuItems = this.menuSlot?.assignedElements() || []\n\t\tif (menuItems.length === 0) return\n\n\t\t// Create container and move actual elements to preserve full functionality\n\t\tconst dialogContainer = document.createElement('div')\n\t\tmenuItems.forEach(item => dialogContainer.appendChild(item))\n\n\t\t$dialog\n\t\t\t.component(dialogContainer, {\n\t\t\t\tposition: event,\n\t\t\t\thideActions: true,\n\t\t})\n\t\t\t.finally(() => {\n\t\t\t\t// Restore elements as light DOM children (will be projected via slot)\n\t\t\t\tmenuItems.forEach(item => this.appendChild(item))\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<slot name=\"trigger\" @click=${this.showMenu}>\n\t\t\t\t<slot name=\"button\" @click=${this.showMenu}>\n\t\t\t\t\t<schmancy-icon-button>more_vert</schmancy-icon-button>\n\t\t\t\t</slot>\n\t\t\t</slot>\n\t\t\t<div hidden>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu': SchmancyMenu\n\t}\n}\n"],"mappings":";;;;;AAMe,IAAA,IAAA,cAA+B,EAAA;CAAA;AAAA,OAAA,SAC7B,CAAC,CAAG;;;;;;CAOpB,SAAA;AACC,SAAO,CAAI;sCACyB,EAAQ,SAAA,CAAA;;;;;;OAX7C,EAAc,qBAAA,CAAA,EAAqB,EAAA;AC+BrB,IAAA,IAAA,cAA2B,EAAA;CAAA;AAAA,OAAA,SACzB,CAAC,CAAG;;;;;;;CAUpB,SAAiB,GAAA;EAChB,IAAM,IAAY,KAAK,UAAU,kBAAA,IAAsB,EAAA;AACvD,MAAI,EAAU,WAAW,EAAG;EAG5B,IAAM,IAAkB,SAAS,cAAc,MAAA;AAC/C,IAAU,SAAQ,MAAQ,EAAgB,YAAY,EAAA,CAAA,EAEtD,EACE,UAAU,GAAiB;GAC3B,UAAU;GACV,aAAA,CAAa;GAAA,CAAA,CAEb,cAAA;AAEA,KAAU,SAAQ,MAAQ,KAAK,YAAY,EAAA,CAAA;IAAA;;CAI9C,SAAA;AACC,SAAO,CAAI;iCACoB,KAAK,SAAA;iCACL,KAAK,SAAA;;;;;;;;;;GAzBpC,EAAM,mBAAA,CAAA,EAAmB,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CAT1B,EAAc,gBAAA,CAAA,EAAgB,EAAA"}
1
+ {"version":3,"file":"menu-Bhd3EapX.js","names":[],"sources":["../src/menu/menu-item.ts","../src/menu/menu.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport { $dialog } from '../dialog/dialog-service'\n\n@customElement('schmancy-menu-item')\nexport default class SchmancyMenuItem extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`]\n\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item @click=${() => $dialog.dismiss()}>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-list-item>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu-item': SchmancyMenuItem\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\nimport { $dialog } from '../dialog/dialog-service'\n\n/**\n * Menu Component\n *\n * CRITICAL: The dialog ONLY renders the raw menu items passed via the default slot.\n * NO <ul> wrapper, NO classes, NO additional markup in the dialog call.\n * The dialog service handles positioning and display - we just pass the pure content.\n *\n * @example Basic menu with auto-dismiss\n * ```typescript\n * <schmancy-menu>\n * <schmancy-button slot=\"trigger\">Actions</schmancy-button>\n * <schmancy-menu-item @click=${() => editItem()}>Edit</schmancy-menu-item>\n * <schmancy-menu-item @click=${() => deleteItem()}>Delete</schmancy-menu-item>\n * </schmancy-menu>\n * ```\n * Note: Dialog auto-dismisses when schmancy-menu-item is clicked\n *\n * @example Custom component (manual dismiss)\n * ```typescript\n * <schmancy-menu>\n * <schmancy-icon-button slot=\"trigger\">settings</schmancy-icon-button>\n * <my-settings-form @submit=${() => $dialog.dismiss()}></my-settings-form>\n * </schmancy-menu>\n * ```\n * Note: Custom components must call $dialog.dismiss() manually\n *\n * @slot trigger - Button to open menu (new naming)\n * @slot button - Button to open menu (backward compatible)\n * @slot default - Menu items or any custom component to display in dialog\n */\n@customElement('schmancy-menu')\nexport default class SchmancyMenu extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t}\n`]\n\n\t@query('slot:not([name])')\n\tprivate menuSlot!: HTMLSlotElement\n\n\tprivate showMenu(event: MouseEvent) {\n\t\tconst menuItems = this.menuSlot?.assignedElements() || []\n\t\tif (menuItems.length === 0) return\n\n\t\t// Create container and move actual elements to preserve full functionality\n\t\tconst dialogContainer = document.createElement('div')\n\t\tmenuItems.forEach(item => dialogContainer.appendChild(item))\n\n\t\t$dialog\n\t\t\t.component(dialogContainer, {\n\t\t\t\tposition: event,\n\t\t\t\thideActions: true,\n\t\t})\n\t\t\t.finally(() => {\n\t\t\t\t// Restore elements as light DOM children (will be projected via slot)\n\t\t\t\tmenuItems.forEach(item => this.appendChild(item))\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<slot name=\"trigger\" @click=${this.showMenu}>\n\t\t\t\t<slot name=\"button\" @click=${this.showMenu}>\n\t\t\t\t\t<schmancy-icon-button>more_vert</schmancy-icon-button>\n\t\t\t\t</slot>\n\t\t\t</slot>\n\t\t\t<div hidden>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu': SchmancyMenu\n\t}\n}\n"],"mappings":";;;;;AAMe,IAAA,IAAA,cAA+B,EAAA;CAAA;AAAA,OAAA,SAC7B,CAAC,CAAG;;;;;;CAOpB,SAAA;AACC,SAAO,CAAI;sCACyB,EAAQ,SAAA,CAAA;;;;;;OAX7C,EAAc,qBAAA,CAAA,EAAqB,EAAA;AC+BrB,IAAA,IAAA,cAA2B,EAAA;CAAA;AAAA,OAAA,SACzB,CAAC,CAAG;;;;;;;CAUpB,SAAiB,GAAA;EAChB,IAAM,IAAY,KAAK,UAAU,kBAAA,IAAsB,EAAA;AACvD,MAAI,EAAU,WAAW,EAAG;EAG5B,IAAM,IAAkB,SAAS,cAAc,MAAA;AAC/C,IAAU,SAAQ,MAAQ,EAAgB,YAAY,EAAA,CAAA,EAEtD,EACE,UAAU,GAAiB;GAC3B,UAAU;GACV,aAAA,CAAa;GAAA,CAAA,CAEb,cAAA;AAEA,KAAU,SAAQ,MAAQ,KAAK,YAAY,EAAA,CAAA;IAAA;;CAI9C,SAAA;AACC,SAAO,CAAI;iCACoB,KAAK,SAAA;iCACL,KAAK,SAAA;;;;;;;;;;GAzBpC,EAAM,mBAAA,CAAA,EAAmB,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CAT1B,EAAc,gBAAA,CAAA,EAAgB,EAAA"}
@@ -1,4 +1,4 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-BIXF7xkF.cjs`),t=require(`./decorate-DpFmy0nm.cjs`),n=require(`./dialog-service-DJd5L0f5.cjs`);let r=require(`lit/decorators.js`),i=require(`lit`);var a=class extends e.s{static{this.styles=[i.css`
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-De3xfjrm.cjs`),t=require(`./decorate-DpFmy0nm.cjs`),n=require(`./dialog-service-DJd5L0f5.cjs`);let r=require(`lit/decorators.js`),i=require(`lit`);var a=class extends e.s{static{this.styles=[i.css`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"menu-BFHBnp5M.cjs","names":[],"sources":["../src/menu/menu-item.ts","../src/menu/menu.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport { $dialog } from '../dialog/dialog-service'\n\n@customElement('schmancy-menu-item')\nexport default class SchmancyMenuItem extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`]\n\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item @click=${() => $dialog.dismiss()}>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-list-item>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu-item': SchmancyMenuItem\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\nimport { $dialog } from '../dialog/dialog-service'\n\n/**\n * Menu Component\n *\n * CRITICAL: The dialog ONLY renders the raw menu items passed via the default slot.\n * NO <ul> wrapper, NO classes, NO additional markup in the dialog call.\n * The dialog service handles positioning and display - we just pass the pure content.\n *\n * @example Basic menu with auto-dismiss\n * ```typescript\n * <schmancy-menu>\n * <schmancy-button slot=\"trigger\">Actions</schmancy-button>\n * <schmancy-menu-item @click=${() => editItem()}>Edit</schmancy-menu-item>\n * <schmancy-menu-item @click=${() => deleteItem()}>Delete</schmancy-menu-item>\n * </schmancy-menu>\n * ```\n * Note: Dialog auto-dismisses when schmancy-menu-item is clicked\n *\n * @example Custom component (manual dismiss)\n * ```typescript\n * <schmancy-menu>\n * <schmancy-icon-button slot=\"trigger\">settings</schmancy-icon-button>\n * <my-settings-form @submit=${() => $dialog.dismiss()}></my-settings-form>\n * </schmancy-menu>\n * ```\n * Note: Custom components must call $dialog.dismiss() manually\n *\n * @slot trigger - Button to open menu (new naming)\n * @slot button - Button to open menu (backward compatible)\n * @slot default - Menu items or any custom component to display in dialog\n */\n@customElement('schmancy-menu')\nexport default class SchmancyMenu extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t}\n`]\n\n\t@query('slot:not([name])')\n\tprivate menuSlot!: HTMLSlotElement\n\n\tprivate showMenu(event: MouseEvent) {\n\t\tconst menuItems = this.menuSlot?.assignedElements() || []\n\t\tif (menuItems.length === 0) return\n\n\t\t// Create container and move actual elements to preserve full functionality\n\t\tconst dialogContainer = document.createElement('div')\n\t\tmenuItems.forEach(item => dialogContainer.appendChild(item))\n\n\t\t$dialog\n\t\t\t.component(dialogContainer, {\n\t\t\t\tposition: event,\n\t\t\t\thideActions: true,\n\t\t})\n\t\t\t.finally(() => {\n\t\t\t\t// Restore elements as light DOM children (will be projected via slot)\n\t\t\t\tmenuItems.forEach(item => this.appendChild(item))\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<slot name=\"trigger\" @click=${this.showMenu}>\n\t\t\t\t<slot name=\"button\" @click=${this.showMenu}>\n\t\t\t\t\t<schmancy-icon-button>more_vert</schmancy-icon-button>\n\t\t\t\t</slot>\n\t\t\t</slot>\n\t\t\t<div hidden>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu': SchmancyMenu\n\t}\n}\n"],"mappings":"6MAMe,IAAA,EAAA,cAA+B,EAAA,CAAA,CAAA,OAAA,KAAA,OAC7B,CAAC,EAAA,GAAG;;;;GAOpB,QAAA,CACC,MAAO,GAAA,IAAI;oCACyB,EAAA,EAAQ,SAAA,CAAA;;;iCAX/B,qBAAA,CAAA,CAAqB,EAAA,CC+BrB,IAAA,EAAA,cAA2B,EAAA,CAAA,CAAA,OAAA,KAAA,OACzB,CAAC,EAAA,GAAG;;;;;GAUpB,SAAiB,EAAA,CAChB,IAAM,EAAY,KAAK,UAAU,kBAAA,EAAsB,EAAA,CACvD,GAAI,EAAU,SAAW,EAAG,OAG5B,IAAM,EAAkB,SAAS,cAAc,MAAA,CAC/C,EAAU,QAAQ,GAAQ,EAAgB,YAAY,EAAA,CAAA,CAEtD,EAAA,EACE,UAAU,EAAiB,CAC3B,SAAU,EACV,YAAA,CAAa,EAAA,CAAA,CAEb,YAAA,CAEA,EAAU,QAAQ,GAAQ,KAAK,YAAY,EAAA,CAAA,EAAA,CAI9C,QAAA,CACC,MAAO,GAAA,IAAI;iCACoB,KAAK,SAAA;iCACL,KAAK,SAAA;;;;;;;uBAzB9B,mBAAA,CAAA,CAAmB,EAAA,UAAA,WAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eATZ,gBAAA,CAAA,CAAgB,EAAA"}
1
+ {"version":3,"file":"menu-Cg2aaDjs.cjs","names":[],"sources":["../src/menu/menu-item.ts","../src/menu/menu.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport { $dialog } from '../dialog/dialog-service'\n\n@customElement('schmancy-menu-item')\nexport default class SchmancyMenuItem extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`]\n\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item @click=${() => $dialog.dismiss()}>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-list-item>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu-item': SchmancyMenuItem\n\t}\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\nimport { $dialog } from '../dialog/dialog-service'\n\n/**\n * Menu Component\n *\n * CRITICAL: The dialog ONLY renders the raw menu items passed via the default slot.\n * NO <ul> wrapper, NO classes, NO additional markup in the dialog call.\n * The dialog service handles positioning and display - we just pass the pure content.\n *\n * @example Basic menu with auto-dismiss\n * ```typescript\n * <schmancy-menu>\n * <schmancy-button slot=\"trigger\">Actions</schmancy-button>\n * <schmancy-menu-item @click=${() => editItem()}>Edit</schmancy-menu-item>\n * <schmancy-menu-item @click=${() => deleteItem()}>Delete</schmancy-menu-item>\n * </schmancy-menu>\n * ```\n * Note: Dialog auto-dismisses when schmancy-menu-item is clicked\n *\n * @example Custom component (manual dismiss)\n * ```typescript\n * <schmancy-menu>\n * <schmancy-icon-button slot=\"trigger\">settings</schmancy-icon-button>\n * <my-settings-form @submit=${() => $dialog.dismiss()}></my-settings-form>\n * </schmancy-menu>\n * ```\n * Note: Custom components must call $dialog.dismiss() manually\n *\n * @slot trigger - Button to open menu (new naming)\n * @slot button - Button to open menu (backward compatible)\n * @slot default - Menu items or any custom component to display in dialog\n */\n@customElement('schmancy-menu')\nexport default class SchmancyMenu extends SchmancyElement {\n\tstatic styles = [css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: flex;\n\t}\n`]\n\n\t@query('slot:not([name])')\n\tprivate menuSlot!: HTMLSlotElement\n\n\tprivate showMenu(event: MouseEvent) {\n\t\tconst menuItems = this.menuSlot?.assignedElements() || []\n\t\tif (menuItems.length === 0) return\n\n\t\t// Create container and move actual elements to preserve full functionality\n\t\tconst dialogContainer = document.createElement('div')\n\t\tmenuItems.forEach(item => dialogContainer.appendChild(item))\n\n\t\t$dialog\n\t\t\t.component(dialogContainer, {\n\t\t\t\tposition: event,\n\t\t\t\thideActions: true,\n\t\t})\n\t\t\t.finally(() => {\n\t\t\t\t// Restore elements as light DOM children (will be projected via slot)\n\t\t\t\tmenuItems.forEach(item => this.appendChild(item))\n\t\t\t})\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<slot name=\"trigger\" @click=${this.showMenu}>\n\t\t\t\t<slot name=\"button\" @click=${this.showMenu}>\n\t\t\t\t\t<schmancy-icon-button>more_vert</schmancy-icon-button>\n\t\t\t\t</slot>\n\t\t\t</slot>\n\t\t\t<div hidden>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu': SchmancyMenu\n\t}\n}\n"],"mappings":"6MAMe,IAAA,EAAA,cAA+B,EAAA,CAAA,CAAA,OAAA,KAAA,OAC7B,CAAC,EAAA,GAAG;;;;GAOpB,QAAA,CACC,MAAO,GAAA,IAAI;oCACyB,EAAA,EAAQ,SAAA,CAAA;;;iCAX/B,qBAAA,CAAA,CAAqB,EAAA,CC+BrB,IAAA,EAAA,cAA2B,EAAA,CAAA,CAAA,OAAA,KAAA,OACzB,CAAC,EAAA,GAAG;;;;;GAUpB,SAAiB,EAAA,CAChB,IAAM,EAAY,KAAK,UAAU,kBAAA,EAAsB,EAAA,CACvD,GAAI,EAAU,SAAW,EAAG,OAG5B,IAAM,EAAkB,SAAS,cAAc,MAAA,CAC/C,EAAU,QAAQ,GAAQ,EAAgB,YAAY,EAAA,CAAA,CAEtD,EAAA,EACE,UAAU,EAAiB,CAC3B,SAAU,EACV,YAAA,CAAa,EAAA,CAAA,CAEb,YAAA,CAEA,EAAU,QAAQ,GAAQ,KAAK,YAAY,EAAA,CAAA,EAAA,CAI9C,QAAA,CACC,MAAO,GAAA,IAAI;iCACoB,KAAK,SAAA;iCACL,KAAK,SAAA;;;;;;;uBAzB9B,mBAAA,CAAA,CAAmB,EAAA,UAAA,WAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eATZ,gBAAA,CAAA,CAAgB,EAAA"}
package/dist/menu.cjs CHANGED
@@ -1 +1 @@
1
- require(`./menu-BFHBnp5M.cjs`);
1
+ require(`./menu-Cg2aaDjs.cjs`);
package/dist/menu.js CHANGED
@@ -1 +1 @@
1
- import "./menu-BV9_8ys8.js";
1
+ import "./menu-Bhd3EapX.js";
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "./decorate-23nYs4Le.js";
2
- import { t } from "./active-host-D-a1X-nq.js";
2
+ import { t } from "./active-host-CvNYoprt.js";
3
3
  import { Observable as n, Subject as r, fromEvent as i, race as a, timer as o } from "rxjs";
4
4
  import { defaultIfEmpty as s, map as c, take as l, takeUntil as u } from "rxjs/operators";
5
5
  import { classMap as d } from "lit/directives/class-map.js";