@mhmo91/schmancy 0.4.73 → 0.4.75

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 (389) hide show
  1. package/ai/area.md +525 -108
  2. package/ai/busy.md +2 -1
  3. package/ai/button.md +4 -0
  4. package/ai/code-highlight.md +2 -1
  5. package/ai/content-drawer.md +2 -1
  6. package/ai/context.md +7 -2
  7. package/ai/countries.md +2 -1
  8. package/ai/date-range-inline.md +262 -0
  9. package/ai/date-range.md +2 -1
  10. package/ai/details.md +194 -0
  11. package/ai/dialog.md +2 -1
  12. package/ai/directives.md +2 -1
  13. package/ai/form.md +10 -10
  14. package/ai/list.md +10 -9
  15. package/ai/mailbox.md +530 -0
  16. package/ai/map.md +2 -1
  17. package/ai/notification.md +14 -12
  18. package/ai/payment-card-form.md +2 -1
  19. package/ai/sheet.md +6 -4
  20. package/ai/steps.md +6 -0
  21. package/ai/store.md +8 -4
  22. package/ai/surface.md +2 -1
  23. package/ai/teleport.md +2 -1
  24. package/ai/theme.md +690 -8
  25. package/ai/timezone.md +2 -1
  26. package/ai/typography.md +2 -1
  27. package/dist/ai/area.md +525 -108
  28. package/dist/ai/busy.md +2 -1
  29. package/dist/ai/button.md +4 -0
  30. package/dist/ai/code-highlight.md +2 -1
  31. package/dist/ai/content-drawer.md +2 -1
  32. package/dist/ai/context.md +7 -2
  33. package/dist/ai/countries.md +2 -1
  34. package/dist/ai/date-range-inline.md +262 -0
  35. package/dist/ai/date-range.md +2 -1
  36. package/dist/ai/details.md +194 -0
  37. package/dist/ai/dialog.md +2 -1
  38. package/dist/ai/directives.md +2 -1
  39. package/dist/ai/form.md +10 -10
  40. package/dist/ai/list.md +10 -9
  41. package/dist/ai/mailbox.md +530 -0
  42. package/dist/ai/map.md +2 -1
  43. package/dist/ai/notification.md +14 -12
  44. package/dist/ai/payment-card-form.md +2 -1
  45. package/dist/ai/sheet.md +6 -4
  46. package/dist/ai/steps.md +6 -0
  47. package/dist/ai/store.md +8 -4
  48. package/dist/ai/surface.md +2 -1
  49. package/dist/ai/teleport.md +2 -1
  50. package/dist/ai/theme.md +690 -8
  51. package/dist/ai/timezone.md +2 -1
  52. package/dist/ai/typography.md +2 -1
  53. package/dist/{animated-text-Dj3HHUD4.js → animated-text-CqpyC7Y0.js} +3 -3
  54. package/dist/{animated-text-Dj3HHUD4.js.map → animated-text-CqpyC7Y0.js.map} +1 -1
  55. package/dist/{animated-text-CPAqO_J3.cjs → animated-text-DlRt6Q09.cjs} +2 -2
  56. package/dist/{animated-text-CPAqO_J3.cjs.map → animated-text-DlRt6Q09.cjs.map} +1 -1
  57. package/dist/animated-text.cjs +1 -1
  58. package/dist/animated-text.js +1 -1
  59. package/dist/area.cjs +1 -1
  60. package/dist/area.js +1 -1
  61. package/dist/{autocomplete-kJ7y028b.js → autocomplete-B-oKMH7m.js} +3 -3
  62. package/dist/{autocomplete-kJ7y028b.js.map → autocomplete-B-oKMH7m.js.map} +1 -1
  63. package/dist/{autocomplete-B3ArCTZl.cjs → autocomplete-BOGG_9iL.cjs} +2 -2
  64. package/dist/{autocomplete-B3ArCTZl.cjs.map → autocomplete-BOGG_9iL.cjs.map} +1 -1
  65. package/dist/autocomplete.cjs +1 -1
  66. package/dist/autocomplete.js +1 -1
  67. package/dist/{avatar-r7OnlyPP.cjs → avatar-C27bnQKE.cjs} +2 -2
  68. package/dist/{avatar-r7OnlyPP.cjs.map → avatar-C27bnQKE.cjs.map} +1 -1
  69. package/dist/{avatar-DI5vtg3k.js → avatar-DKVNl5rX.js} +50 -50
  70. package/dist/{avatar-DI5vtg3k.js.map → avatar-DKVNl5rX.js.map} +1 -1
  71. package/dist/badge.cjs +1 -1
  72. package/dist/badge.js +1 -1
  73. package/dist/{boat-Cp8VgFWP.js → boat-CdR5Pqik.js} +2 -2
  74. package/dist/{boat-Cp8VgFWP.js.map → boat-CdR5Pqik.js.map} +1 -1
  75. package/dist/{boat-COlWXsv8.cjs → boat-DMKcZpZb.cjs} +2 -2
  76. package/dist/{boat-COlWXsv8.cjs.map → boat-DMKcZpZb.cjs.map} +1 -1
  77. package/dist/boat.cjs +1 -1
  78. package/dist/boat.js +1 -1
  79. package/dist/busy.cjs +1 -1
  80. package/dist/busy.js +1 -1
  81. package/dist/button.cjs +1 -1
  82. package/dist/button.js +1 -1
  83. package/dist/card.cjs +1 -1
  84. package/dist/card.js +1 -1
  85. package/dist/{checkbox-Cbkcvj-3.js → checkbox-CVwU3M4h.js} +2 -2
  86. package/dist/{checkbox-Cbkcvj-3.js.map → checkbox-CVwU3M4h.js.map} +1 -1
  87. package/dist/{checkbox-u355dDEB.cjs → checkbox-DP_zX786.cjs} +2 -2
  88. package/dist/{checkbox-u355dDEB.cjs.map → checkbox-DP_zX786.cjs.map} +1 -1
  89. package/dist/checkbox.cjs +1 -1
  90. package/dist/checkbox.js +1 -1
  91. package/dist/{chips-BFn88CJs.cjs → chips-BuMUH3zA.cjs} +2 -2
  92. package/dist/{chips-BFn88CJs.cjs.map → chips-BuMUH3zA.cjs.map} +1 -1
  93. package/dist/{chips-Y5nzkBJw.js → chips-DcCUwYBu.js} +3 -3
  94. package/dist/{chips-Y5nzkBJw.js.map → chips-DcCUwYBu.js.map} +1 -1
  95. package/dist/chips.cjs +1 -1
  96. package/dist/chips.js +1 -1
  97. package/dist/code-highlight.cjs +1 -1
  98. package/dist/code-highlight.js +1 -1
  99. package/dist/{code-preview-D2peRzvQ.js → code-preview-CIXEd04f.js} +3 -3
  100. package/dist/{code-preview-D2peRzvQ.js.map → code-preview-CIXEd04f.js.map} +1 -1
  101. package/dist/{code-preview-CsQWYHL5.cjs → code-preview-CdCzzZTX.cjs} +3 -3
  102. package/dist/{code-preview-CsQWYHL5.cjs.map → code-preview-CdCzzZTX.cjs.map} +1 -1
  103. package/dist/components.cjs +1 -1
  104. package/dist/components.js +1 -1
  105. package/dist/content-drawer.cjs +1 -1
  106. package/dist/content-drawer.js +1 -1
  107. package/dist/{date-range-Ya1J9HQQ.cjs → date-range-CvD9zwK9.cjs} +2 -2
  108. package/dist/{date-range-Ya1J9HQQ.cjs.map → date-range-CvD9zwK9.cjs.map} +1 -1
  109. package/dist/{date-range-inline-Q5qz2lG_.js → date-range-inline-5QP9av94.js} +3 -3
  110. package/dist/{date-range-inline-Q5qz2lG_.js.map → date-range-inline-5QP9av94.js.map} +1 -1
  111. package/dist/{date-range-inline-CXBrxoim.cjs → date-range-inline-CP_a_w01.cjs} +2 -2
  112. package/dist/{date-range-inline-CXBrxoim.cjs.map → date-range-inline-CP_a_w01.cjs.map} +1 -1
  113. package/dist/date-range-inline.cjs +1 -1
  114. package/dist/date-range-inline.js +1 -1
  115. package/dist/{date-range-DnKu_v9b.js → date-range-lJ_fPY4v.js} +4 -4
  116. package/dist/{date-range-DnKu_v9b.js.map → date-range-lJ_fPY4v.js.map} +1 -1
  117. package/dist/date-range.cjs +1 -1
  118. package/dist/date-range.js +1 -1
  119. package/dist/{delay-DVqCtHik.js → delay-BM1jk7XF.js} +2 -2
  120. package/dist/{delay-DVqCtHik.js.map → delay-BM1jk7XF.js.map} +1 -1
  121. package/dist/{delay-Dl6B_yyv.cjs → delay-CB0Wohe7.cjs} +2 -2
  122. package/dist/{delay-Dl6B_yyv.cjs.map → delay-CB0Wohe7.cjs.map} +1 -1
  123. package/dist/delay.cjs +1 -1
  124. package/dist/delay.js +1 -1
  125. package/dist/{details-w1ooWiKA.js → details-B9JrXrCO.js} +2 -2
  126. package/dist/{details-w1ooWiKA.js.map → details-B9JrXrCO.js.map} +1 -1
  127. package/dist/{details-LZ_GGbW-.cjs → details-C22WoRWP.cjs} +2 -2
  128. package/dist/{details-LZ_GGbW-.cjs.map → details-C22WoRWP.cjs.map} +1 -1
  129. package/dist/details.cjs +1 -1
  130. package/dist/details.js +1 -1
  131. package/dist/{dialog-content-B7V_S6GR.js → dialog-content-BHR9cUJ-.js} +4 -4
  132. package/dist/{dialog-content-B7V_S6GR.js.map → dialog-content-BHR9cUJ-.js.map} +1 -1
  133. package/dist/{dialog-content-VroTT22f.cjs → dialog-content-CpxWMPlh.cjs} +2 -2
  134. package/dist/{dialog-content-VroTT22f.cjs.map → dialog-content-CpxWMPlh.cjs.map} +1 -1
  135. package/dist/{dialog-service-Dpz_NIRP.js → dialog-service-DwhuICgc.js} +2 -2
  136. package/dist/dialog-service-DwhuICgc.js.map +1 -0
  137. package/dist/dialog-service-juvsgc5X.cjs +2 -0
  138. package/dist/dialog-service-juvsgc5X.cjs.map +1 -0
  139. package/dist/dialog.cjs +1 -1
  140. package/dist/dialog.js +2 -2
  141. package/dist/{divider-OuCqxcUB.js → divider-Cz4g_Ept.js} +3 -3
  142. package/dist/{divider-OuCqxcUB.js.map → divider-Cz4g_Ept.js.map} +1 -1
  143. package/dist/{divider-CegpMW-2.cjs → divider-DAg0oW4T.cjs} +2 -2
  144. package/dist/{divider-CegpMW-2.cjs.map → divider-DAg0oW4T.cjs.map} +1 -1
  145. package/dist/divider.cjs +1 -1
  146. package/dist/divider.js +1 -1
  147. package/dist/{dropdown-content-BuKCBydD.js → dropdown-content-Bto1swKT.js} +3 -3
  148. package/dist/{dropdown-content-BuKCBydD.js.map → dropdown-content-Bto1swKT.js.map} +1 -1
  149. package/dist/{dropdown-content-f0LuoUKR.cjs → dropdown-content-QvR9QvT0.cjs} +2 -2
  150. package/dist/{dropdown-content-f0LuoUKR.cjs.map → dropdown-content-QvR9QvT0.cjs.map} +1 -1
  151. package/dist/dropdown.cjs +1 -1
  152. package/dist/dropdown.js +1 -1
  153. package/dist/{email-recipients-CvSwxcso.js → email-recipients-C9Yx0eML.js} +7 -7
  154. package/dist/{email-recipients-CvSwxcso.js.map → email-recipients-C9Yx0eML.js.map} +1 -1
  155. package/dist/{email-recipients-BlEtpbdr.cjs → email-recipients-aEI5Hz1y.cjs} +2 -2
  156. package/dist/{email-recipients-BlEtpbdr.cjs.map → email-recipients-aEI5Hz1y.cjs.map} +1 -1
  157. package/dist/extra.cjs +1 -1
  158. package/dist/extra.js +1 -1
  159. package/dist/{flex-HyTTaFX9.js → flex-8Zt64KfZ.js} +2 -2
  160. package/dist/{flex-HyTTaFX9.js.map → flex-8Zt64KfZ.js.map} +1 -1
  161. package/dist/{flex-Cdv04m_E.cjs → flex-BWZv2xik.cjs} +2 -2
  162. package/dist/{flex-Cdv04m_E.cjs.map → flex-BWZv2xik.cjs.map} +1 -1
  163. package/dist/{form-CXRNS-AS.cjs → form-BH43OMu3.cjs} +2 -2
  164. package/dist/{form-CXRNS-AS.cjs.map → form-BH43OMu3.cjs.map} +1 -1
  165. package/dist/{form-BNTXCzQo.js → form-DeoSuBtM.js} +2 -2
  166. package/dist/{form-BNTXCzQo.js.map → form-DeoSuBtM.js.map} +1 -1
  167. package/dist/form.cjs +1 -1
  168. package/dist/form.js +1 -1
  169. package/dist/{formField.mixin-MhetZTeW.js → formField.mixin-BaPL0TYo.js} +2 -2
  170. package/dist/{formField.mixin-MhetZTeW.js.map → formField.mixin-BaPL0TYo.js.map} +1 -1
  171. package/dist/{formField.mixin-zezhhNIA.cjs → formField.mixin-Dta3OeAY.cjs} +2 -2
  172. package/dist/{formField.mixin-zezhhNIA.cjs.map → formField.mixin-Dta3OeAY.cjs.map} +1 -1
  173. package/dist/{icon-C71zn7AW.js → icon-B0JNrBfq.js} +2 -2
  174. package/dist/{icon-C71zn7AW.js.map → icon-B0JNrBfq.js.map} +1 -1
  175. package/dist/{icon-e6XggWlw.cjs → icon-DY2pBLIU.cjs} +2 -2
  176. package/dist/{icon-e6XggWlw.cjs.map → icon-DY2pBLIU.cjs.map} +1 -1
  177. package/dist/{icon-button-CO8rMFUR.cjs → icon-button-D1GjgM8z.cjs} +2 -2
  178. package/dist/{icon-button-CO8rMFUR.cjs.map → icon-button-D1GjgM8z.cjs.map} +1 -1
  179. package/dist/{icon-button-KoYGGW6a.js → icon-button-OZM1xg0D.js} +3 -3
  180. package/dist/{icon-button-KoYGGW6a.js.map → icon-button-OZM1xg0D.js.map} +1 -1
  181. package/dist/icons.cjs +1 -1
  182. package/dist/icons.js +1 -1
  183. package/dist/index.cjs +1 -1
  184. package/dist/index.js +76 -74
  185. package/dist/index.js.map +1 -1
  186. package/dist/{input-LTpT28E4.js → input-CkvjCut5.js} +3 -3
  187. package/dist/{input-LTpT28E4.js.map → input-CkvjCut5.js.map} +1 -1
  188. package/dist/{input-CFvMe_KR.cjs → input-lUWuO40Q.cjs} +2 -2
  189. package/dist/{input-CFvMe_KR.cjs.map → input-lUWuO40Q.cjs.map} +1 -1
  190. package/dist/input.cjs +1 -1
  191. package/dist/input.js +1 -1
  192. package/dist/layout.cjs +1 -1
  193. package/dist/layout.js +1 -1
  194. package/dist/{list-CAJJTrLl.js → list-5rw56k73.js} +2 -2
  195. package/dist/{list-CAJJTrLl.js.map → list-5rw56k73.js.map} +1 -1
  196. package/dist/{list-D2dyHYN9.cjs → list-CIt75CB5.cjs} +2 -2
  197. package/dist/{list-D2dyHYN9.cjs.map → list-CIt75CB5.cjs.map} +1 -1
  198. package/dist/list.cjs +1 -1
  199. package/dist/list.js +1 -1
  200. package/dist/{litElement.mixin-4iclDbF3.cjs → litElement.mixin-BLa7fWsS.cjs} +2 -2
  201. package/dist/{litElement.mixin-4iclDbF3.cjs.map → litElement.mixin-BLa7fWsS.cjs.map} +1 -1
  202. package/dist/{litElement.mixin-SeAIQuRg.js → litElement.mixin-BZErt4H3.js} +2 -2
  203. package/dist/{litElement.mixin-SeAIQuRg.js.map → litElement.mixin-BZErt4H3.js.map} +1 -1
  204. package/dist/mailbox.cjs +1 -1
  205. package/dist/mailbox.js +1 -1
  206. package/dist/{map-CMkosiu4.cjs → map-BY_0W4ER.cjs} +2 -2
  207. package/dist/{map-CMkosiu4.cjs.map → map-BY_0W4ER.cjs.map} +1 -1
  208. package/dist/{map-DwMX_LnY.js → map-BrguuFGa.js} +2 -2
  209. package/dist/{map-DwMX_LnY.js.map → map-BrguuFGa.js.map} +1 -1
  210. package/dist/map.cjs +1 -1
  211. package/dist/map.js +1 -1
  212. package/dist/{media-B98kFRvT.js → media-CLz2t5zS.js} +2 -2
  213. package/dist/{media-B98kFRvT.js.map → media-CLz2t5zS.js.map} +1 -1
  214. package/dist/{media-DxbLFhc5.cjs → media-D6ZtvTjC.cjs} +2 -2
  215. package/dist/{media-DxbLFhc5.cjs.map → media-D6ZtvTjC.cjs.map} +1 -1
  216. package/dist/{menu-ChMwBut9.js → menu-CgDSJpDV.js} +3 -3
  217. package/dist/{menu-ChMwBut9.js.map → menu-CgDSJpDV.js.map} +1 -1
  218. package/dist/{menu-DTRbll_X.cjs → menu-DWD_IywE.cjs} +2 -2
  219. package/dist/{menu-DTRbll_X.cjs.map → menu-DWD_IywE.cjs.map} +1 -1
  220. package/dist/menu.cjs +1 -1
  221. package/dist/menu.js +1 -1
  222. package/dist/nav-drawer.cjs +1 -1
  223. package/dist/nav-drawer.js +1 -1
  224. package/dist/{notification-service-BiEAwrL6.js → notification-service-1HGYK2tM.js} +4 -4
  225. package/dist/{notification-service-BiEAwrL6.js.map → notification-service-1HGYK2tM.js.map} +1 -1
  226. package/dist/{notification-service-h3GuXar7.cjs → notification-service-A3reAJZQ.cjs} +2 -2
  227. package/dist/{notification-service-h3GuXar7.cjs.map → notification-service-A3reAJZQ.cjs.map} +1 -1
  228. package/dist/notification.cjs +1 -1
  229. package/dist/notification.js +2 -2
  230. package/dist/{notify-1NUgv3Qz.js → notify-Bt-KiLeP.js} +2 -2
  231. package/dist/{notify-1NUgv3Qz.js.map → notify-Bt-KiLeP.js.map} +1 -1
  232. package/dist/{notify-CP9929J0.cjs → notify-CVbsMt75.cjs} +2 -2
  233. package/dist/{notify-CP9929J0.cjs.map → notify-CVbsMt75.cjs.map} +1 -1
  234. package/dist/{option-VxlQIYFR.cjs → option-Cd0TxMBE.cjs} +2 -2
  235. package/dist/{option-VxlQIYFR.cjs.map → option-Cd0TxMBE.cjs.map} +1 -1
  236. package/dist/{option-DvEFWkrm.js → option-DvSZ0D0R.js} +2 -2
  237. package/dist/{option-DvEFWkrm.js.map → option-DvSZ0D0R.js.map} +1 -1
  238. package/dist/option.cjs +1 -1
  239. package/dist/option.js +1 -1
  240. package/dist/{payment-card-form-CEd08rns.js → payment-card-form-C6wrIT_X.js} +3 -3
  241. package/dist/{payment-card-form-CEd08rns.js.map → payment-card-form-C6wrIT_X.js.map} +1 -1
  242. package/dist/{payment-card-form-CAPM_YfT.cjs → payment-card-form-CJkWQ3j4.cjs} +2 -2
  243. package/dist/{payment-card-form-CAPM_YfT.cjs.map → payment-card-form-CJkWQ3j4.cjs.map} +1 -1
  244. package/dist/{progress-Bu8wtPRI.cjs → progress-D0iWLtHk.cjs} +2 -2
  245. package/dist/{progress-Bu8wtPRI.cjs.map → progress-D0iWLtHk.cjs.map} +1 -1
  246. package/dist/{progress-CL4SPk5b.js → progress-pOL6OHwT.js} +2 -2
  247. package/dist/{progress-CL4SPk5b.js.map → progress-pOL6OHwT.js.map} +1 -1
  248. package/dist/progress.cjs +1 -1
  249. package/dist/progress.js +1 -1
  250. package/dist/{radio-button-B087BeTl.js → radio-button-C-t6JJsj.js} +3 -3
  251. package/dist/{radio-button-B087BeTl.js.map → radio-button-C-t6JJsj.js.map} +1 -1
  252. package/dist/{radio-button-vz9nLR-m.cjs → radio-button-CSV7-ftB.cjs} +2 -2
  253. package/dist/{radio-button-vz9nLR-m.cjs.map → radio-button-CSV7-ftB.cjs.map} +1 -1
  254. package/dist/radio-group.cjs +1 -1
  255. package/dist/radio-group.js +1 -1
  256. package/dist/route.component-BWVESeW2.cjs +12 -0
  257. package/dist/route.component-BWVESeW2.cjs.map +1 -0
  258. package/dist/route.component-DkPA8FVn.js +348 -0
  259. package/dist/route.component-DkPA8FVn.js.map +1 -0
  260. package/dist/{schmancy-steps-container-CEvpeKIe.js → schmancy-steps-container-AIJ2_ZSN.js} +2 -2
  261. package/dist/{schmancy-steps-container-CEvpeKIe.js.map → schmancy-steps-container-AIJ2_ZSN.js.map} +1 -1
  262. package/dist/{schmancy-steps-container-DvSClSo1.cjs → schmancy-steps-container-CgzGlBCk.cjs} +2 -2
  263. package/dist/{schmancy-steps-container-DvSClSo1.cjs.map → schmancy-steps-container-CgzGlBCk.cjs.map} +1 -1
  264. package/dist/{select-BoUYZPyl.js → select-CwJ4OuVo.js} +3 -3
  265. package/dist/{select-BoUYZPyl.js.map → select-CwJ4OuVo.js.map} +1 -1
  266. package/dist/{select-4VXPMU8r.cjs → select-GBaqnfMC.cjs} +2 -2
  267. package/dist/{select-4VXPMU8r.cjs.map → select-GBaqnfMC.cjs.map} +1 -1
  268. package/dist/select.cjs +1 -1
  269. package/dist/select.js +1 -1
  270. package/dist/{sheet-IfHxyIo_.cjs → sheet-CXd47YKG.cjs} +2 -2
  271. package/dist/{sheet-IfHxyIo_.cjs.map → sheet-CXd47YKG.cjs.map} +1 -1
  272. package/dist/{sheet-C6djCmPV.js → sheet-fT1oxKgG.js} +4 -4
  273. package/dist/{sheet-C6djCmPV.js.map → sheet-fT1oxKgG.js.map} +1 -1
  274. package/dist/sheet.cjs +1 -1
  275. package/dist/sheet.js +2 -2
  276. package/dist/sheet.service-BxvWBGsJ.cjs +2 -0
  277. package/dist/sheet.service-BxvWBGsJ.cjs.map +1 -0
  278. package/dist/{sheet.service-DZGMoIHy.js → sheet.service-lXqUf6n5.js} +2 -2
  279. package/dist/sheet.service-lXqUf6n5.js.map +1 -0
  280. package/dist/{slider-DERHNjqI.js → slider-CYsku-3b.js} +3 -3
  281. package/dist/{slider-DERHNjqI.js.map → slider-CYsku-3b.js.map} +1 -1
  282. package/dist/{slider-BfNNQ6qI.cjs → slider-DxSzFbQe.cjs} +2 -2
  283. package/dist/{slider-BfNNQ6qI.cjs.map → slider-DxSzFbQe.cjs.map} +1 -1
  284. package/dist/slider.cjs +1 -1
  285. package/dist/slider.js +1 -1
  286. package/dist/{spinner-BOdUWwXq.js → spinner-CrK1E8LD.js} +2 -2
  287. package/dist/{spinner-BOdUWwXq.js.map → spinner-CrK1E8LD.js.map} +1 -1
  288. package/dist/{spinner-Bip-lfsc.cjs → spinner-DrG_NQpx.cjs} +2 -2
  289. package/dist/{spinner-Bip-lfsc.cjs.map → spinner-DrG_NQpx.cjs.map} +1 -1
  290. package/dist/steps.cjs +1 -1
  291. package/dist/steps.js +1 -1
  292. package/dist/{surface-CyhVK7JG.js → surface-C64YekDh.js} +2 -2
  293. package/dist/{surface-CyhVK7JG.js.map → surface-C64YekDh.js.map} +1 -1
  294. package/dist/{surface--Nh6Q896.cjs → surface-DVNi8l6T.cjs} +2 -2
  295. package/dist/{surface--Nh6Q896.cjs.map → surface-DVNi8l6T.cjs.map} +1 -1
  296. package/dist/surface.cjs +1 -1
  297. package/dist/surface.js +1 -1
  298. package/dist/{table-x9dbc3AY.cjs → table-B3WKGYlu.cjs} +2 -2
  299. package/dist/{table-x9dbc3AY.cjs.map → table-B3WKGYlu.cjs.map} +1 -1
  300. package/dist/{table-DnPQ0zCd.js → table-DmrYZ1hR.js} +2 -2
  301. package/dist/{table-DnPQ0zCd.js.map → table-DmrYZ1hR.js.map} +1 -1
  302. package/dist/table.cjs +1 -1
  303. package/dist/table.js +1 -1
  304. package/dist/{tabs-compatibility-D3HfZRKv.cjs → tabs-compatibility-Ds7SEeST.cjs} +2 -2
  305. package/dist/{tabs-compatibility-D3HfZRKv.cjs.map → tabs-compatibility-Ds7SEeST.cjs.map} +1 -1
  306. package/dist/{tabs-compatibility-Dazz1g0Q.js → tabs-compatibility-Uetjk25R.js} +2 -2
  307. package/dist/{tabs-compatibility-Dazz1g0Q.js.map → tabs-compatibility-Uetjk25R.js.map} +1 -1
  308. package/dist/tabs.cjs +1 -1
  309. package/dist/tabs.js +1 -1
  310. package/dist/{tailwind.mixin-kvywknTU.js → tailwind.mixin-B6ADeWOc.js} +2 -2
  311. package/dist/{tailwind.mixin-kvywknTU.js.map → tailwind.mixin-B6ADeWOc.js.map} +1 -1
  312. package/dist/{tailwind.mixin-Bwf86oi5.cjs → tailwind.mixin-df9KoZ9x.cjs} +2 -2
  313. package/dist/{tailwind.mixin-Bwf86oi5.cjs.map → tailwind.mixin-df9KoZ9x.cjs.map} +1 -1
  314. package/dist/teleport.cjs +1 -1
  315. package/dist/teleport.js +1 -1
  316. package/dist/{textarea-bHJFDEva.js → textarea-B1Tng7F9.js} +2 -2
  317. package/dist/{textarea-bHJFDEva.js.map → textarea-B1Tng7F9.js.map} +1 -1
  318. package/dist/{textarea-xRo6a5-Y.cjs → textarea-QKNA3oAQ.cjs} +2 -2
  319. package/dist/{textarea-xRo6a5-Y.cjs.map → textarea-QKNA3oAQ.cjs.map} +1 -1
  320. package/dist/textarea.cjs +1 -1
  321. package/dist/textarea.js +1 -1
  322. package/dist/{theme-button-BPFuZSBY.js → theme-button-CYEhS3ub.js} +2 -2
  323. package/dist/{theme-button-BPFuZSBY.js.map → theme-button-CYEhS3ub.js.map} +1 -1
  324. package/dist/{theme-button-lvD9uCTZ.cjs → theme-button-CoCFS3Rx.cjs} +2 -2
  325. package/dist/{theme-button-lvD9uCTZ.cjs.map → theme-button-CoCFS3Rx.cjs.map} +1 -1
  326. package/dist/theme-button.cjs +1 -1
  327. package/dist/theme-button.js +1 -1
  328. package/dist/theme.cjs +1 -1
  329. package/dist/theme.component-C12jLwtB.cjs +3 -0
  330. package/dist/theme.component-C12jLwtB.cjs.map +1 -0
  331. package/dist/{theme.component-C-PfGTcN.js → theme.component-Df731_fn.js} +247 -171
  332. package/dist/theme.component-Df731_fn.js.map +1 -0
  333. package/dist/theme.events-CPSLaOlR.js +6 -0
  334. package/dist/theme.events-CPSLaOlR.js.map +1 -0
  335. package/dist/theme.events-Car6U_SQ.cjs +2 -0
  336. package/dist/theme.events-Car6U_SQ.cjs.map +1 -0
  337. package/dist/theme.interface-C5Kj6WjD.js.map +1 -1
  338. package/dist/theme.interface-Xg5Zi46a.cjs.map +1 -1
  339. package/dist/theme.js +9 -7
  340. package/dist/theme.js.map +1 -1
  341. package/dist/{timezone-OLjylRB7.cjs → timezone-B7bscKFN.cjs} +2 -2
  342. package/dist/{timezone-OLjylRB7.cjs.map → timezone-B7bscKFN.cjs.map} +1 -1
  343. package/dist/{timezone-BDSbTYTk.js → timezone-CdtCVjMF.js} +3 -3
  344. package/dist/{timezone-BDSbTYTk.js.map → timezone-CdtCVjMF.js.map} +1 -1
  345. package/dist/{tooltip-iM0cfzsV.cjs → tooltip-CjoNCIvr.cjs} +2 -2
  346. package/dist/{tooltip-iM0cfzsV.cjs.map → tooltip-CjoNCIvr.cjs.map} +1 -1
  347. package/dist/{tooltip-CWiU3SEA.js → tooltip-JVkexTyf.js} +2 -2
  348. package/dist/{tooltip-CWiU3SEA.js.map → tooltip-JVkexTyf.js.map} +1 -1
  349. package/dist/tooltip.cjs +1 -1
  350. package/dist/tooltip.js +1 -1
  351. package/dist/{tree-CXIrKI2O.cjs → tree-Be48ABq4.cjs} +2 -2
  352. package/dist/{tree-CXIrKI2O.cjs.map → tree-Be48ABq4.cjs.map} +1 -1
  353. package/dist/{tree-JUf2hHiW.js → tree-CaqiNcJJ.js} +2 -2
  354. package/dist/{tree-JUf2hHiW.js.map → tree-CaqiNcJJ.js.map} +1 -1
  355. package/dist/tree.cjs +1 -1
  356. package/dist/tree.js +1 -1
  357. package/dist/{typewriter-DQuULTla.js → typewriter-CoMrmwFJ.js} +8 -8
  358. package/dist/{typewriter-DQuULTla.js.map → typewriter-CoMrmwFJ.js.map} +1 -1
  359. package/dist/{typewriter-YW7NGa6H.cjs → typewriter-DCYDScE9.cjs} +2 -2
  360. package/dist/{typewriter-YW7NGa6H.cjs.map → typewriter-DCYDScE9.cjs.map} +1 -1
  361. package/dist/typewriter.cjs +1 -1
  362. package/dist/typewriter.js +1 -1
  363. package/dist/{typography-CkLztts5.cjs → typography-BQg6J2hD.cjs} +2 -2
  364. package/dist/{typography-CkLztts5.cjs.map → typography-BQg6J2hD.cjs.map} +1 -1
  365. package/dist/{typography-kXb173Io.js → typography-DkJagEoF.js} +2 -2
  366. package/dist/{typography-kXb173Io.js.map → typography-DkJagEoF.js.map} +1 -1
  367. package/dist/typography.cjs +1 -1
  368. package/dist/typography.js +1 -1
  369. package/package.json +1 -1
  370. package/types/src/area/area.component.d.ts +4 -0
  371. package/types/src/theme/context.d.ts +24 -0
  372. package/types/src/theme/index.d.ts +2 -0
  373. package/types/src/theme/theme.component.d.ts +49 -6
  374. package/types/src/theme/theme.events.d.ts +55 -0
  375. package/types/src/theme/theme.interface.d.ts +36 -0
  376. package/types/src/theme/theme.service.d.ts +261 -0
  377. package/dist/dialog-service-Dpz_NIRP.js.map +0 -1
  378. package/dist/dialog-service-Wna1JO09.cjs +0 -2
  379. package/dist/dialog-service-Wna1JO09.cjs.map +0 -1
  380. package/dist/route.component-D1xujH8n.js +0 -343
  381. package/dist/route.component-D1xujH8n.js.map +0 -1
  382. package/dist/route.component-ke_nkgvP.cjs +0 -12
  383. package/dist/route.component-ke_nkgvP.cjs.map +0 -1
  384. package/dist/sheet.service-DR9KJfMa.cjs +0 -2
  385. package/dist/sheet.service-DR9KJfMa.cjs.map +0 -1
  386. package/dist/sheet.service-DZGMoIHy.js.map +0 -1
  387. package/dist/theme.component-C-PfGTcN.js.map +0 -1
  388. package/dist/theme.component-DkcM8QzH.cjs +0 -3
  389. package/dist/theme.component-DkcM8QzH.cjs.map +0 -1
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Theme discovery event system.
3
+ *
4
+ * These events facilitate communication between theme components and consumers,
5
+ * allowing components to discover the nearest theme provider in the DOM hierarchy.
6
+ */
7
+ /**
8
+ * Event dispatched by components to discover the nearest theme provider.
9
+ * Theme components listen for this event and respond with ThemeHereIAmEvent.
10
+ *
11
+ * @event ThemeWhereAreYouEvent
12
+ * @type {CustomEvent<void>}
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * // Dispatch discovery request
17
+ * window.dispatchEvent(
18
+ * new CustomEvent('theme-where-are-you', {
19
+ * bubbles: true,
20
+ * composed: true
21
+ * })
22
+ * )
23
+ * ```
24
+ */
25
+ export type ThemeWhereAreYouEvent = CustomEvent<void>;
26
+ /**
27
+ * Event name constant for theme discovery request.
28
+ * @const {string}
29
+ */
30
+ export declare const ThemeWhereAreYou = "theme-where-are-you";
31
+ /**
32
+ * Event dispatched by theme components in response to discovery requests.
33
+ * Contains reference to the theme component element.
34
+ *
35
+ * @event ThemeHereIAmEvent
36
+ * @type {CustomEvent<{theme: HTMLElement}>}
37
+ * @property {HTMLElement} detail.theme - The theme component element
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * // Listen for theme response
42
+ * window.addEventListener('theme-here-i-am', (event: ThemeHereIAmEvent) => {
43
+ * const themeComponent = event.detail.theme
44
+ * console.log('Found theme component:', themeComponent)
45
+ * })
46
+ * ```
47
+ */
48
+ export type ThemeHereIAmEvent = CustomEvent<{
49
+ theme: HTMLElement;
50
+ }>;
51
+ /**
52
+ * Event name constant for theme discovery response.
53
+ * @const {string}
54
+ */
55
+ export declare const ThemeHereIAm = "theme-here-i-am";
@@ -62,6 +62,42 @@ declare const theme: {
62
62
  };
63
63
  };
64
64
  };
65
+ /**
66
+ * Type definition for the Schmancy theme configuration.
67
+ * Contains all available theme variables including colors, elevations, and outlines.
68
+ *
69
+ * @typedef {Object} TSchmancyTheme
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * import type { TSchmancyTheme } from '@schmancy/theme'
74
+ *
75
+ * const myTheme: Partial<TSchmancyTheme> = {
76
+ * sys: {
77
+ * color: {
78
+ * primary: {
79
+ * default: '#6200ee'
80
+ * }
81
+ * }
82
+ * }
83
+ * }
84
+ * ```
85
+ */
65
86
  export type TSchmancyTheme = (typeof theme)[keyof typeof theme];
87
+ /**
88
+ * Default Schmancy theme configuration object.
89
+ * Provides access to all theme CSS variables through JavaScript.
90
+ *
91
+ * @constant {TSchmancyTheme}
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * import { SchmancyTheme } from '@schmancy/theme'
96
+ *
97
+ * // Access primary color variable
98
+ * const primaryColor = SchmancyTheme.sys.color.primary.default
99
+ * // Returns: 'var(--schmancy-sys-color-primary-default)'
100
+ * ```
101
+ */
66
102
  declare const SchmancyTheme: TSchmancyTheme;
67
103
  export { SchmancyTheme };
@@ -0,0 +1,261 @@
1
+ import { Observable } from 'rxjs';
2
+ import type { SchmancyThemeComponent } from './theme.component';
3
+ import type { TSchmancyTheme } from './theme.interface';
4
+ /**
5
+ * Theme Service - Provides centralized theme management for Schmancy components.
6
+ *
7
+ * This service acts as a singleton interface to interact with the theme system,
8
+ * providing reactive observables for theme state and methods to control theming.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * import { theme } from '@schmancy/theme'
13
+ *
14
+ * // Subscribe to theme changes
15
+ * theme.scheme$.subscribe(scheme => {
16
+ * console.log('Current scheme:', scheme) // 'light' | 'dark' | 'auto'
17
+ * })
18
+ *
19
+ * // Get current values synchronously
20
+ * const currentScheme = theme.scheme
21
+ * const currentColor = theme.color
22
+ *
23
+ * // Toggle between light and dark mode
24
+ * theme.toggleScheme()
25
+ *
26
+ * // Set specific scheme
27
+ * theme.setScheme('dark')
28
+ *
29
+ * // Check if dark mode is active
30
+ * theme.isDarkMode().subscribe(isDark => {
31
+ * console.log('Is dark mode:', isDark)
32
+ * })
33
+ * ```
34
+ */
35
+ declare class ThemeService {
36
+ private static instance;
37
+ private _scheme$;
38
+ private _color$;
39
+ private _theme$;
40
+ private _themeComponent$;
41
+ readonly scheme$: Observable<"auto" | "dark" | "light">;
42
+ readonly color$: Observable<string>;
43
+ readonly theme$: Observable<Partial<{
44
+ sys: {
45
+ color: {
46
+ scrim: string;
47
+ outline: string;
48
+ outlineVariant: string;
49
+ surface: {
50
+ default: string;
51
+ dim: string;
52
+ bright: string;
53
+ container: string;
54
+ low: string;
55
+ high: string;
56
+ highest: string;
57
+ lowest: string;
58
+ on: string;
59
+ onVariant: string;
60
+ };
61
+ primary: {
62
+ default: string;
63
+ on: string;
64
+ container: string;
65
+ onContainer: string;
66
+ };
67
+ secondary: {
68
+ default: string;
69
+ on: string;
70
+ container: string;
71
+ onContainer: string;
72
+ };
73
+ tertiary: {
74
+ default: string;
75
+ on: string;
76
+ container: string;
77
+ onContainer: string;
78
+ };
79
+ error: {
80
+ default: string;
81
+ on: string;
82
+ container: string;
83
+ onContainer: string;
84
+ };
85
+ success: {
86
+ default: string;
87
+ on: string;
88
+ container: string;
89
+ onContainer: string;
90
+ };
91
+ };
92
+ elevation: {
93
+ 0: string;
94
+ 1: string;
95
+ 2: string;
96
+ 3: string;
97
+ 4: string;
98
+ 5: string;
99
+ };
100
+ outline: {
101
+ 1: string;
102
+ };
103
+ };
104
+ }>>;
105
+ readonly themeComponent$: Observable<SchmancyThemeComponent>;
106
+ get scheme(): 'dark' | 'light' | 'auto';
107
+ get color(): string;
108
+ get theme(): Partial<TSchmancyTheme>;
109
+ get themeComponent(): SchmancyThemeComponent | null;
110
+ readonly resolvedScheme$: Observable<"dark" | "light">;
111
+ constructor();
112
+ /**
113
+ * Discover the nearest theme component in the DOM.
114
+ * This method can be called to refresh the theme discovery process.
115
+ *
116
+ * @returns {Observable<SchmancyThemeComponent | null>} Observable that emits the discovered theme component or null
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * theme.discoverTheme().subscribe(component => {
121
+ * if (component) {
122
+ * console.log('Theme component found:', component)
123
+ * } else {
124
+ * console.log('No theme component found')
125
+ * }
126
+ * })
127
+ * ```
128
+ */
129
+ discoverTheme(): Observable<SchmancyThemeComponent | null>;
130
+ /**
131
+ * Register a theme component and subscribe to its changes.
132
+ * This is typically called internally by theme components when they mount or update.
133
+ *
134
+ * @param {SchmancyThemeComponent} component - The theme component to register
135
+ *
136
+ * @internal
137
+ */
138
+ registerThemeComponent(component: SchmancyThemeComponent): void;
139
+ /**
140
+ * Update theme values. Usually called internally by theme components.
141
+ *
142
+ * @param {Object} values - Theme values to update
143
+ * @param {'dark' | 'light' | 'auto'} [values.scheme] - Color scheme to set
144
+ * @param {string} [values.color] - Primary color in hex format
145
+ * @param {Partial<TSchmancyTheme>} [values.theme] - Theme configuration object
146
+ *
147
+ * @internal
148
+ */
149
+ updateTheme(values: {
150
+ scheme?: 'dark' | 'light' | 'auto';
151
+ color?: string;
152
+ theme?: Partial<TSchmancyTheme>;
153
+ }): void;
154
+ /**
155
+ * Set the color scheme for the application.
156
+ *
157
+ * @param {'dark' | 'light' | 'auto'} scheme - The color scheme to set
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * // Set to dark mode
162
+ * theme.setScheme('dark')
163
+ *
164
+ * // Set to auto (follows system preference)
165
+ * theme.setScheme('auto')
166
+ * ```
167
+ */
168
+ setScheme(scheme: 'dark' | 'light' | 'auto'): void;
169
+ /**
170
+ * Set the primary color for the theme.
171
+ *
172
+ * @param {string} color - Primary color in hex format (e.g., '#6200ee')
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * // Set primary color to purple
177
+ * theme.setColor('#6200ee')
178
+ *
179
+ * // Set primary color to blue
180
+ * theme.setColor('#2196f3')
181
+ * ```
182
+ */
183
+ setColor(color: string): void;
184
+ /**
185
+ * Check if dark mode is currently active.
186
+ * This resolves 'auto' scheme to the actual value based on system preference.
187
+ *
188
+ * @returns {Observable<boolean>} Observable that emits true if dark mode is active, false otherwise
189
+ *
190
+ * @example
191
+ * ```typescript
192
+ * theme.isDarkMode().subscribe(isDark => {
193
+ * if (isDark) {
194
+ * console.log('Dark mode is active')
195
+ * } else {
196
+ * console.log('Light mode is active')
197
+ * }
198
+ * })
199
+ * ```
200
+ */
201
+ isDarkMode(): Observable<boolean>;
202
+ /**
203
+ * Toggle between light and dark mode.
204
+ * If currently in 'auto' mode, defaults to 'light'.
205
+ *
206
+ * @example
207
+ * ```typescript
208
+ * // Toggle theme on button click
209
+ * button.addEventListener('click', () => {
210
+ * theme.toggleScheme()
211
+ * })
212
+ * ```
213
+ */
214
+ toggleScheme(): void;
215
+ /**
216
+ * Get the current value of a CSS variable from the theme.
217
+ *
218
+ * @param {string} variableName - Name of the CSS variable (without '--schmancy-' prefix)
219
+ * @returns {string} The CSS variable value or empty string if not found
220
+ *
221
+ * @example
222
+ * ```typescript
223
+ * // Get primary color variable
224
+ * const primaryColor = theme.getCSSVariable('color-primary')
225
+ *
226
+ * // Get surface color
227
+ * const surfaceColor = theme.getCSSVariable('color-surface')
228
+ * ```
229
+ */
230
+ getCSSVariable(variableName: string): string;
231
+ /**
232
+ * Subscribe to changes of a specific CSS variable.
233
+ *
234
+ * @param {string} variableName - Name of the CSS variable to watch (without '--schmancy-' prefix)
235
+ * @returns {Observable<string>} Observable that emits the CSS variable value when it changes
236
+ *
237
+ * @example
238
+ * ```typescript
239
+ * // Watch for primary color changes
240
+ * theme.watchCSSVariable('color-primary').subscribe(color => {
241
+ * console.log('Primary color changed to:', color)
242
+ * })
243
+ *
244
+ * // Watch for surface color changes
245
+ * theme.watchCSSVariable('color-surface').subscribe(color => {
246
+ * console.log('Surface color changed to:', color)
247
+ * })
248
+ * ```
249
+ */
250
+ watchCSSVariable(variableName: string): Observable<string>;
251
+ /**
252
+ * Get the singleton instance of ThemeService.
253
+ *
254
+ * @returns {ThemeService} The singleton ThemeService instance
255
+ *
256
+ * @internal
257
+ */
258
+ static getInstance(): ThemeService;
259
+ }
260
+ export declare const theme: ThemeService;
261
+ export default theme;
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog-service-Dpz_NIRP.js","sources":["../src/dialog/dialog-events.ts","../src/dialog/dialog-service.ts"],"sourcesContent":["// Dialog discovery event constants\r\nexport const DialogWhereAreYouRicky = 'are-you-there-dialog'\r\nexport const DialogHereMorty = 'yes-dialog-here'\r\n\r\n// Event interfaces\r\nexport interface DialogWhereAreYouRickyEvent extends CustomEvent {\r\n detail: {\r\n uid: string\r\n }\r\n}\r\n\r\nexport interface DialogHereMortyEvent extends CustomEvent {\r\n detail: {\r\n dialog: any // Will be schmancy-dialog instance\r\n theme?: any // Will be schmancy-theme instance\r\n }\r\n}","import { render, TemplateResult } from 'lit'\nimport { defaultIfEmpty, forkJoin, fromEvent, map, of, Subject, switchMap, takeUntil, tap, timer } from 'rxjs'\nimport { ThemeHereIAm, ThemeHereIAmEvent, ThemeWhereAreYou } from '../theme/theme.component'\nimport { ConfirmDialog } from './dailog'\nimport { DialogHereMorty, DialogHereMortyEvent, DialogWhereAreYouRicky } from './dialog-events'\n\n/**\n * Dialog service options interface with component support\n */\nexport interface DialogOptions {\n\ttitle?: string\n\tsubtitle?: string\n\tmessage?: string\n\tconfirmText?: string\n\tcancelText?: string\n\tvariant?: 'default' | 'danger'\n\tconfirmColor?: 'primary' | 'error' | 'warning' | 'success' // Button color for confirm action\n\tposition?: { x: number; y: number } | MouseEvent | TouchEvent\n\n\t// New options for component rendering\n\tcontent?: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult)\n\twidth?: string\n\tonConfirm?: () => void\n\tonCancel?: () => void\n\thideActions?: boolean // Set to true to hide all buttons and title\n\ttargetContainer?: HTMLElement // Container to append dialog to (defaults to document.body)\n}\n\ninterface DialogTarget {\n\toptions: DialogOptions\n\ttype: 'confirm' | 'component'\n\tcontent?: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult)\n\tresolve?: (value: boolean) => void\n\treject?: (reason?: any) => void\n}\n\n/**\n * Dialog service for centralized dialog management.\n * Provides a simple API for showing dialogs with optional custom components.\n */\nexport class DialogService {\n\tprivate static instance: DialogService\n\n\t// Default dialog options\n\tprivate static DEFAULT_OPTIONS: Partial<DialogOptions> = {\n\t\ttitle: undefined,\n\t\tsubtitle: undefined,\n\t\tconfirmText: undefined,\n\t\tcancelText: undefined,\n\t\tvariant: 'default',\n\t\twidth: '360px',\n\t}\n\n\t// Track active dialogs to handle dismissing the most recent one\n\tprivate activeDialogs: ConfirmDialog[] = []\n\t\n\t// Track component dialogs (schmancy-dialog instances)\n\tprivate activeRawDialogs: any[] = []\n\t\n\t// Subject for dialog opening requests\n\tprivate dialogSubject = new Subject<DialogTarget>()\n\t\n\t// Subject for dialog dismissal requests\n\tprivate dismissSubject = new Subject<string>()\n\n\t// Private constructor for singleton pattern\n\tprivate constructor() {\n\t\tthis.setupDialogOpeningLogic()\n\t\tthis.setupDialogDismissLogic()\n\t}\n\n\t/**\n\t * Get the singleton instance\n\t */\n\tpublic static getInstance(): DialogService {\n\t\tif (!DialogService.instance) {\n\t\t\tDialogService.instance = new DialogService()\n\t\t}\n\t\treturn DialogService.instance\n\t}\n\t\n\t/**\n\t * Sets up the main dialog opening logic using RxJS pipes\n\t */\n\tprivate setupDialogOpeningLogic() {\n\t\tthis.dialogSubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\t// First ask for existing dialog\n\t\t\t\t\t\tfromEvent<DialogHereMortyEvent>(window, DialogHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(50)),\n\t\t\t\t\t\t\tmap(e => e.detail),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\t// Then find theme container\n\t\t\t\t\t\tfromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(50)),\n\t\t\t\t\t\t\tmap(e => e.detail.theme),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(target).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\tconst uid = target.type === 'confirm' \n\t\t\t\t\t\t\t\t\t? `confirm-dialog-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n\t\t\t\t\t\t\t\t\t: `dialog-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// First ask for existing dialog\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(DialogWhereAreYouRicky, {\n\t\t\t\t\t\t\t\t\t\tdetail: { uid },\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t// Then ask for theme container\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(ThemeWhereAreYou, {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Store uid in target for later use\n\t\t\t\t\t\t\t\t;(target as any).uid = uid\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\tmap(([existingDialog, theme, target]) => {\n\t\t\t\t\tlet dialog = existingDialog?.dialog\n\t\t\t\t\tlet targetContainer: HTMLElement\n\t\t\t\t\t\n\t\t\t\t\tif (dialog) {\n\t\t\t\t\t\t// Use existing dialog\n\t\t\t\t\t\ttargetContainer = dialog.parentElement as HTMLElement\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Determine container - use theme from discovery or fallback\n\t\t\t\t\t\ttargetContainer = theme || target.options.targetContainer || (document.querySelector('schmancy-theme') as HTMLElement) || document.body\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Create appropriate dialog type\n\t\t\t\t\t\tconst uid = (target as any).uid\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (target.type === 'confirm') {\n\t\t\t\t\t\t\tdialog = document.createElement('confirm-dialog') as ConfirmDialog\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdialog = document.createElement('schmancy-dialog')\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tdialog.setAttribute('uid', uid)\n\t\t\t\t\t\ttargetContainer.appendChild(dialog)\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn { dialog, target, targetContainer }\n\t\t\t\t}),\n\t\t\t\ttap(({ dialog, target, targetContainer }) => {\n\t\t\t\t\tif (!dialog) {\n\t\t\t\t\t\t// Create appropriate dialog type\n\t\t\t\t\t\tif (target.type === 'confirm') {\n\t\t\t\t\t\t\tdialog = document.createElement('confirm-dialog') as ConfirmDialog\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdialog = document.createElement('schmancy-dialog')\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tdialog.setAttribute('uid', (target as any).uid)\n\t\t\t\t\t\ttargetContainer.appendChild(dialog)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tmap(({ dialog, target, targetContainer }) => {\n\t\t\t\t\t// Return the actual dialog element that was created\n\t\t\t\t\tif (!dialog) {\n\t\t\t\t\t\tdialog = targetContainer.querySelector(`[uid=\"${(target as any).uid}\"]`)\n\t\t\t\t\t}\n\t\t\t\t\treturn { dialog, target, targetContainer }\n\t\t\t\t}),\n\t\t\t\ttap(({ dialog, target }) => {\n\t\t\t\t\tif (target.type === 'confirm') {\n\t\t\t\t\t\t// Configure confirm dialog\n\t\t\t\t\t\tconst confirmDialog = dialog as ConfirmDialog\n\t\t\t\t\t\tconst options = target.options\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (options.title) confirmDialog.title = options.title\n\t\t\t\t\t\tif (options.subtitle) confirmDialog.subtitle = options.subtitle\n\t\t\t\t\t\tif (options.message) confirmDialog.message = options.message\n\t\t\t\t\t\tif (options.confirmText) confirmDialog.confirmText = options.confirmText\n\t\t\t\t\t\tif (options.cancelText) confirmDialog.cancelText = options.cancelText\n\t\t\t\t\t\tif (options.variant) confirmDialog.variant = options.variant\n\t\t\t\t\t\tif (options.confirmColor) confirmDialog.confirmColor = options.confirmColor\n\t\t\t\t\t\tif (options.width) confirmDialog.style.setProperty('--dialog-width', options.width)\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Handle custom content if provided\n\t\t\t\t\t\tif (options.content) {\n\t\t\t\t\t\t\tconst contentContainer = document.createElement('div')\n\t\t\t\t\t\t\tcontentContainer.slot = 'content'\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (typeof options.content === 'function') {\n\t\t\t\t\t\t\t\tconst result = options.content()\n\t\t\t\t\t\t\t\tif (result instanceof HTMLElement) {\n\t\t\t\t\t\t\t\t\tcontentContainer.appendChild(result)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\trender(result, contentContainer)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (options.content instanceof HTMLElement) {\n\t\t\t\t\t\t\t\tcontentContainer.appendChild(options.content)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trender(options.content, contentContainer)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tconfirmDialog.appendChild(contentContainer)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Add to active dialogs\n\t\t\t\t\t\tthis.activeDialogs.push(confirmDialog)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Configure component dialog\n\t\t\t\t\t\tif (target.content) {\n\t\t\t\t\t\t\tconst directContentContainer = document.createElement('div')\n\t\t\t\t\t\t\tdirectContentContainer.style.height = '100%'\n\t\t\t\t\t\t\tdirectContentContainer.style.width = '100%'\n\t\t\t\t\t\t\tdirectContentContainer.classList.add('schmancy-dialog-content-container')\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Render the content directly\n\t\t\t\t\t\t\tif (typeof target.content === 'function') {\n\t\t\t\t\t\t\t\tconst result = target.content()\n\t\t\t\t\t\t\t\tif (result instanceof HTMLElement) {\n\t\t\t\t\t\t\t\t\tdirectContentContainer.appendChild(result)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\trender(result, directContentContainer)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (target.content instanceof HTMLElement) {\n\t\t\t\t\t\t\t\tdirectContentContainer.appendChild(target.content)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trender(target.content, directContentContainer)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdialog.appendChild(directContentContainer)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Set width from options\n\t\t\t\t\t\tif (target.options.width) {\n\t\t\t\t\t\t\tdialog.style.setProperty('--dialog-width', target.options.width)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Add to active raw dialogs\n\t\t\t\t\t\tthis.activeRawDialogs.push(dialog)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttap(({ dialog, target }) => {\n\t\t\t\t\t// Show dialog and handle promise resolution\n\t\t\t\t\tconst position = target.options.position || this.getCenteredPosition()\n\t\t\t\t\t\n\t\t\t\t\tdialog.show(position).then((result: boolean) => {\n\t\t\t\t\t\tif (target.resolve) {\n\t\t\t\t\t\t\ttarget.resolve(result)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Cleanup\n\t\t\t\t\t\tif (target.type === 'confirm') {\n\t\t\t\t\t\t\tconst index = this.activeDialogs.indexOf(dialog)\n\t\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\t\tthis.activeDialogs.splice(index, 1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Clean up content\n\t\t\t\t\t\t\tconst contentEl = dialog.querySelector('[slot=\"content\"]')\n\t\t\t\t\t\t\tif (contentEl) {\n\t\t\t\t\t\t\t\tdialog.removeChild(contentEl)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst index = this.activeRawDialogs.indexOf(dialog)\n\t\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\t\tthis.activeRawDialogs.splice(index, 1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Clean up content\n\t\t\t\t\t\t\tconst contentContainer = dialog.querySelector('.schmancy-dialog-content-container')\n\t\t\t\t\t\t\tif (contentContainer && contentContainer.parentNode) {\n\t\t\t\t\t\t\t\tcontentContainer.parentNode.removeChild(contentContainer)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Remove dialog from DOM\n\t\t\t\t\t\tif (dialog.parentElement) {\n\t\t\t\t\t\t\tdialog.parentElement.removeChild(dialog)\n\t\t\t\t\t\t}\n\t\t\t\t\t}).catch((error: any) => {\n\t\t\t\t\t\tif (target.reject) {\n\t\t\t\t\t\t\ttarget.reject(error)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t\n\t\t\t\t\t// Set up event listeners for callbacks\n\t\t\t\t\tif (target.options.onConfirm) {\n\t\t\t\t\t\tconst onConfirm = (_e: Event) => {\n\t\t\t\t\t\t\ttarget.options.onConfirm!()\n\t\t\t\t\t\t\tdialog.removeEventListener('confirm', onConfirm)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdialog.addEventListener('confirm', onConfirm)\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (target.options.onCancel) {\n\t\t\t\t\t\tconst onCancel = (_e: Event) => {\n\t\t\t\t\t\t\ttarget.options.onCancel!()\n\t\t\t\t\t\t\tdialog.removeEventListener('cancel', onCancel)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdialog.addEventListener('cancel', onCancel)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\t\n\t/**\n\t * Sets up the dialog dismissal logic\n\t */\n\tprivate setupDialogDismissLogic() {\n\t\tthis.dismissSubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap(uid =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<DialogHereMortyEvent>(window, DialogHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(100)),\n\t\t\t\t\t\t\tmap(e => e.detail),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(uid).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(DialogWhereAreYouRicky, { \n\t\t\t\t\t\t\t\t\t\tdetail: { uid },\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\ttap(([response]) => {\n\t\t\t\t\tif (response?.dialog) {\n\t\t\t\t\t\t// Hide the dialog\n\t\t\t\t\t\tresponse.dialog.hide(false)\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Remove from tracking arrays\n\t\t\t\t\t\tconst confirmIndex = this.activeDialogs.indexOf(response.dialog)\n\t\t\t\t\t\tif (confirmIndex !== -1) {\n\t\t\t\t\t\t\tthis.activeDialogs.splice(confirmIndex, 1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst rawIndex = this.activeRawDialogs.indexOf(response.dialog)\n\t\t\t\t\t\tif (rawIndex !== -1) {\n\t\t\t\t\t\t\tthis.activeRawDialogs.splice(rawIndex, 1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Remove dialog from DOM immediately\n\t\t\t\t\t\tif (response.dialog.parentElement) {\n\t\t\t\t\t\t\tresponse.dialog.parentElement.removeChild(response.dialog)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Show a confirmation dialog\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tpublic confirm(options: DialogOptions): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// Apply default options\n\t\t\tconst completeOptions = {\n\t\t\t\t...DialogService.DEFAULT_OPTIONS,\n\t\t\t\t...options,\n\t\t\t}\n\n\t\t\t// If no position is provided, center the dialog\n\t\t\tif (!completeOptions.position) {\n\t\t\t\tcompleteOptions.position = this.getCenteredPosition()\n\t\t\t}\n\n\t\t\t// Create dialog target and emit to subject\n\t\t\tconst target: DialogTarget = {\n\t\t\t\toptions: completeOptions,\n\t\t\t\ttype: 'confirm',\n\t\t\t\tcontent: completeOptions.content,\n\t\t\t\tresolve,\n\t\t\t\treject,\n\t\t\t}\n\n\t\t\tthis.dialogSubject.next(target)\n\t\t})\n\t}\n\n\t/**\n\t * Show a dialog with custom component content\n\t * Always renders content directly without any headers or action buttons\n\t * @returns Promise that resolves when dialog is closed\n\t */\n\tpublic component(\n\t\tcontent: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult),\n\t\toptions: Omit<DialogOptions, 'content' | 'message'> = {},\n\t): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// If no position is provided, center the dialog\n\t\t\tif (!options.position) {\n\t\t\t\toptions.position = this.getCenteredPosition()\n\t\t\t}\n\n\t\t\t// Create dialog target and emit to subject\n\t\t\tconst target: DialogTarget = {\n\t\t\t\toptions: options as DialogOptions,\n\t\t\t\ttype: 'component',\n\t\t\t\tcontent,\n\t\t\t\tresolve,\n\t\t\t\treject,\n\t\t\t}\n\n\t\t\tthis.dialogSubject.next(target)\n\t\t})\n\t}\n\n\t/**\n\t * Dismiss the most recently opened dialog (either confirm or component type)\n\t * @returns true if a dialog was dismissed, false if no dialogs were open\n\t */\n\tpublic dismiss(): boolean {\n\t\t// Try component dialog first (they're more likely to be on top)\n\t\tif (this.activeRawDialogs.length > 0) {\n\t\t\t// Get the most recently opened raw dialog (last in the array)\n\t\t\tconst dialog = this.activeRawDialogs[this.activeRawDialogs.length - 1]\n\t\t\tconst uid = dialog.getAttribute('uid')\n\t\t\t\n\t\t\tif (uid) {\n\t\t\t\tthis.dismissSubject.next(uid)\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Fall back to confirm dialogs\n\t\tif (this.activeDialogs.length > 0) {\n\t\t\t// Get the most recently opened dialog (last in the array)\n\t\t\tconst dialog = this.activeDialogs[this.activeDialogs.length - 1]\n\t\t\tconst uid = dialog.getAttribute('uid')\n\t\t\t\n\t\t\tif (uid) {\n\t\t\t\tthis.dismissSubject.next(uid)\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\t/**\n\t * Close the most recently opened dialog (alias for dismiss)\n\t * @returns true if a dialog was closed, false if no dialogs were open\n\t */\n\tpublic close(): boolean {\n\t\treturn this.dismiss()\n\t}\n\n\t/**\n\t * Show a simple confirmation dialog with just a message\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tpublic ask(message: string, event?: MouseEvent | TouchEvent): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\tmessage,\n\t\t\tposition: event,\n\t\t})\n\t}\n\n\t/**\n\t * Show a danger confirmation dialog\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tpublic danger(options: Omit<DialogOptions, 'variant'>): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\t...options,\n\t\t\tvariant: 'danger',\n\t\t})\n\t}\n\n\t/**\n\t * Get a centered position for the dialog\n\t */\n\tprivate getCenteredPosition(): { x: number; y: number } {\n\t\treturn {\n\t\t\tx: window.innerWidth / 2,\n\t\t\ty: window.innerHeight / 2,\n\t\t}\n\t}\n\n}\n\n/**\n * Global dialog utility - provides a quick way to show dialogs\n */\nexport const $dialog = {\n\t/**\n\t * Show a confirmation dialog\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tconfirm: (options: DialogOptions): Promise<boolean> => {\n\t\treturn DialogService.getInstance().confirm(options)\n\t},\n\n\t/**\n\t * Show a simple confirmation dialog with just a message\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\task: (message: string, event?: MouseEvent | TouchEvent): Promise<boolean> => {\n\t\treturn DialogService.getInstance().ask(message, event)\n\t},\n\n\t/**\n\t * Show a danger confirmation dialog\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tdanger: (options: Omit<DialogOptions, 'variant'>): Promise<boolean> => {\n\t\treturn DialogService.getInstance().danger(options)\n\t},\n\n\t/**\n\t * Show a dialog with custom component content\n\t * @returns Promise that resolves when dialog is closed\n\t */\n\tcomponent: (\n\t\tcontent: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult),\n\t\toptions?: Omit<DialogOptions, 'content' | 'message'>,\n\t): Promise<boolean> => {\n\t\treturn DialogService.getInstance().component(content, options)\n\t},\n\n\t/**\n\t * Show a simple dialog without title or actions, just content\n\t * This is an alias for component() since all component dialogs are now simple by design\n\t * @returns Promise that resolves when dialog is closed\n\t */\n\tsimple: (\n\t\tcontent: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult),\n\t\toptions?: Omit<DialogOptions, 'content' | 'message' | 'title' | 'confirmText' | 'cancelText'>,\n\t): Promise<boolean> => {\n\t\treturn DialogService.getInstance().component(content, options)\n\t},\n\n\t/**\n\t * Dismiss the most recently opened dialog\n\t * @returns true if a dialog was dismissed, false if no dialogs were open\n\t */\n\tdismiss: (): boolean => {\n\t\treturn DialogService.getInstance().dismiss()\n\t},\n\n\t/**\n\t * Close the most recently opened dialog (alias for dismiss)\n\t * @returns true if a dialog was closed, false if no dialogs were open\n\t */\n\tclose: (): boolean => {\n\t\treturn DialogService.getInstance().close()\n\t},\n}\n\nexport default DialogService"],"names":["DialogWhereAreYouRicky","DialogHereMorty","DialogService","constructor","this","activeDialogs","activeRawDialogs","dialogSubject","Subject","dismissSubject","setupDialogOpeningLogic","setupDialogDismissLogic","getInstance","instance","pipe","switchMap","forkJoin","fromEvent","window","takeUntil","timer","map","e","detail","defaultIfEmpty","ThemeHereIAm","theme","of","target","tap","uid","type","Date","now","Math","random","toString","substring","dispatchEvent","CustomEvent","bubbles","composed","ThemeWhereAreYou","existingDialog","targetContainer","dialog","parentElement","options","document","querySelector","body","createElement","setAttribute","appendChild","confirmDialog","title","subtitle","message","confirmText","cancelText","variant","confirmColor","width","style","setProperty","content","contentContainer","slot","result","HTMLElement","render","push","directContentContainer","height","classList","add","position","getCenteredPosition","show","then","resolve","index","indexOf","splice","contentEl","removeChild","parentNode","catch","error","reject","onConfirm","_e","removeEventListener","addEventListener","onCancel","subscribe","response","hide","confirmIndex","rawIndex","Promise","completeOptions","DEFAULT_OPTIONS","next","dismiss","length","getAttribute","close","event","confirm","x","innerWidth","y","innerHeight","_g","$dialog","ask","danger","component","simple"],"mappings":";;;AACO,MAAMA,IAAyB,wBACzBC,IAAkB,mBCsClBC,IAAN,MAAMA,EAAAA;AAAAA,EA0BJ,cAAAC;AAZRC,SAAQC,gBAAiC,CAAA,GAGzCD,KAAQE,mBAA0B,CAAA,GAGlCF,KAAQG,gBAAgB,IAAIC,KAG5BJ,KAAQK,iBAAiB,IAAID,KAI5BJ,KAAKM,2BACLN,KAAKO,wBAAAA;AAAAA,EACN;AAAA,EAKA,qBAAcC;AAIb,WAHKV,EAAcW,aAClBX,EAAcW,WAAW,IAAIX,MAEvBA,EAAcW;AAAAA,EACtB;AAAA,EAKQ,0BAAAH;AACPN,SAAKG,cACHO,KACAC,SACCC,EAAS,CAERC,EAAgCC,QAAQjB,CAAAA,EAAiBa,KACxDK,EAAUC,EAAM,EAAA,CAAA,GAChBC,EAAIC,OAAKA,EAAEC,MAAAA,GACXC,EAAAA,MAAe,CAAA,GAGhBP,EAA6BC,QAAQO,CAAAA,EAAcX,KAClDK,EAAUC,EAAM,EAAA,CAAA,GAChBC,EAAIC,OAAKA,EAAEC,OAAOG,KAAAA,GAClBF,EAAAA,MAAe,CAAA,GAEhBG,EAAGC,GAAQd,KACVe,EAAI;AACH,YAAMC,IAAMF,EAAOG,SAAS,YACzB,kBAAkBC,KAAKC,IAAAA,CAAAA,IAASC,KAAKC,SAASC,SAAS,EAAA,EAAIC,UAAU,GAAG,CAAA,CAAA,KACxE,UAAUL,KAAKC,IAAAA,CAAAA,IAASC,KAAKC,OAAAA,EAASC,SAAS,EAAA,EAAIC,UAAU,GAAG,CAAA,CAAA;AAGnEnB,aAAOoB,cACN,IAAIC,YAAYvC,GAAwB,EACvCuB,QAAQ,EAAEO,KAAAA,EAAAA,GACVU,SAAAA,IACAC,UAAAA,QAIFvB,OAAOoB,cACN,IAAIC,YAAYG,GAAkB,EACjCF,aACAC,UAAAA,GAAU,CAAA,CAAA,GAKVb,EAAeE,MAAMA;AAAAA,IAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAK3BT,EAAI,CAAA,CAAEsB,GAAgBjB,GAAOE,CAAAA,MAAAA;AAC5B,UACIgB,GADAC,IAASF,GAAgBE;AAG7B,UAAIA,EAEHD,CAAAA,IAAkBC,EAAOC;AAAAA,WACnB;AAENF,QAAAA,IAAkBlB,KAASE,EAAOmB,QAAQH,mBAAoBI,SAASC,cAAc,gBAAA,KAAqCD,SAASE;AAGnI,cAAMpB,IAAOF,EAAeE;AAG3Be,QAAAA,IADGjB,EAAOG,SAAS,YACViB,SAASG,cAAc,gBAAA,IAEvBH,SAASG,cAAc,iBAAA,GAGjCN,EAAOO,aAAa,OAAOtB,CAAAA,GAC3Bc,EAAgBS,YAAYR,CAAAA;AAAAA,MAC7B;AAEA,aAAO,EAAEA,QAAAA,GAAQjB,QAAAA,GAAQgB,iBAAAA,EAAAA;AAAAA,IAAAA,CAAAA,GAE1Bf,EAAI,CAAA,EAAGgB,QAAAA,GAAQjB,WAAQgB,iBAAAA,EAAAA,MAAAA;AACjBC,MAAAA,OAGHA,IADGjB,EAAOG,SAAS,YACViB,SAASG,cAAc,gBAAA,IAEvBH,SAASG,cAAc,iBAAA,GAG1BC,aAAa,OAAQxB,EAAeE,GAAAA,GAC3Cc,EAAgBS,YAAYR,CAAAA;AAAAA,IAAAA,CAAAA,GAG9BxB,EAAI,CAAA,EAAGwB,QAAAA,GAAQjB,QAAAA,GAAQgB,iBAAAA,EAAAA,OAEjBC,MACJA,IAASD,EAAgBK,cAAc,SAAUrB,EAAeE,GAAAA,IAAAA,IAE1D,EAAEe,QAAAA,GAAQjB,WAAQgB,iBAAAA,EAAAA,EAAAA,GAE1Bf,EAAI,CAAA,EAAGgB,QAAAA,GAAQjB,QAAAA,EAAAA,MAAAA;AACd,UAAIA,EAAOG,SAAS,WAAW;AAE9B,cAAMuB,IAAgBT,GAChBE,IAAUnB,EAAOmB;AAYvB,YAVIA,EAAQQ,UAAOD,EAAcC,QAAQR,EAAQQ,QAC7CR,EAAQS,aAAUF,EAAcE,WAAWT,EAAQS,WACnDT,EAAQU,YAASH,EAAcG,UAAUV,EAAQU,UACjDV,EAAQW,gBAAaJ,EAAcI,cAAcX,EAAQW,cACzDX,EAAQY,eAAYL,EAAcK,aAAaZ,EAAQY,aACvDZ,EAAQa,YAASN,EAAcM,UAAUb,EAAQa,UACjDb,EAAQc,iBAAcP,EAAcO,eAAed,EAAQc,eAC3Dd,EAAQe,SAAOR,EAAcS,MAAMC,YAAY,kBAAkBjB,EAAQe,KAAAA,GAGzEf,EAAQkB,SAAS;AACpB,gBAAMC,IAAmBlB,SAASG,cAAc,KAAA;AAGhD,cAFAe,EAAiBC,OAAO,kBAEbpB,EAAQkB,WAAY,YAAY;AAC1C,kBAAMG,IAASrB,EAAQkB,QAAAA;AACnBG,YAAAA,aAAkBC,cACrBH,EAAiBb,YAAYe,CAAAA,IAE7BE,EAAOF,GAAQF,CAAAA;AAAAA,UAEjB,MAAWnB,CAAAA,EAAQkB,mBAAmBI,cACrCH,EAAiBb,YAAYN,EAAQkB,OAAAA,IAErCK,EAAOvB,EAAQkB,SAASC,CAAAA;AAGzBZ,UAAAA,EAAcD,YAAYa,CAAAA;AAAAA,QAC3B;AAGA9D,aAAKC,cAAckE,KAAKjB,CAAAA;AAAAA,MACzB,OAAO;AAEN,YAAI1B,EAAOqC,SAAS;AACnB,gBAAMO,IAAyBxB,SAASG,cAAc,KAAA;AAMtD,cALAqB,EAAuBT,MAAMU,SAAS,QACtCD,EAAuBT,MAAMD,QAAQ,QACrCU,EAAuBE,UAAUC,IAAI,sCAGP,OAAnB/C,EAAOqC,WAAY,YAAY;AACzC,kBAAMG,IAASxC,EAAOqC,QAAAA;AAClBG,yBAAkBC,cACrBG,EAAuBnB,YAAYe,CAAAA,IAEnCE,EAAOF,GAAQI,CAAAA;AAAAA,UAEjB,MAAW5C,CAAAA,EAAOqC,mBAAmBI,cACpCG,EAAuBnB,YAAYzB,EAAOqC,OAAAA,IAE1CK,EAAO1C,EAAOqC,SAASO;AAGxB3B,UAAAA,EAAOQ,YAAYmB,CAAAA;AAAAA,QACpB;AAGI5C,QAAAA,EAAOmB,QAAQe,SAClBjB,EAAOkB,MAAMC,YAAY,kBAAkBpC,EAAOmB,QAAQe,QAI3D1D,KAAKE,iBAAiBiE,KAAK1B,CAAAA;AAAAA,MAC5B;AAAA,IAAA,CAAA,GAEDhB,EAAI,GAAGgB,QAAAA,GAAQjB,QAAAA,EAAAA,MAAAA;AAEd,YAAMgD,IAAWhD,EAAOmB,QAAQ6B,YAAYxE,KAAKyE,oBAAAA;AA2CjD,UAzCAhC,EAAOiC,KAAKF,GAAUG,KAAMX,CAAAA,MAAAA;AAM3B,YALIxC,EAAOoD,WACVpD,EAAOoD,QAAQZ,CAAAA,GAIZxC,EAAOG,SAAS,WAAW;AAC9B,gBAAMkD,IAAQ7E,KAAKC,cAAc6E,QAAQrC,CAAAA;AAAAA,UACrCoC,MADqCpC,MAExCzC,KAAKC,cAAc8E,OAAOF,GAAO,CAAA;AAIlC,gBAAMG,IAAYvC,EAAOI,cAAc,kBAAA;AACnCmC,UAAAA,KACHvC,EAAOwC,YAAYD,CAAAA;AAAAA,QAErB,OAAO;AACN,gBAAMH,IAAQ7E,KAAKE,iBAAiB4E,QAAQrC;UACxCoC,YACH7E,KAAKE,iBAAiB6E,OAAOF,GAAO;AAIrC,gBAAMf,IAAmBrB,EAAOI,cAAc,oCAAA;AAC1CiB,UAAAA,KAAoBA,EAAiBoB,cACxCpB,EAAiBoB,WAAWD,YAAYnB,CAAAA;AAAAA,QAE1C;AAGIrB,QAAAA,EAAOC,iBACVD,EAAOC,cAAcuC,YAAYxC,CAAAA;AAAAA,MAAAA,CAAAA,EAEhC0C,MAAOC,CAAAA;AACL5D,QAAAA,EAAO6D,UACV7D,EAAO6D,OAAOD,CAAAA;AAAAA,MAAAA,CAAAA,GAKZ5D,EAAOmB,QAAQ2C,WAAW;AAC7B,cAAMA,IAAaC,OAAAA;AAClB/D,UAAAA,EAAOmB,QAAQ2C,UAAAA,GACf7C,EAAO+C,oBAAoB,WAAWF,CAAAA;AAAAA,QAAAA;AAEvC7C,QAAAA,EAAOgD,iBAAiB,WAAWH,CAAAA;AAAAA,MACpC;AAEA,UAAI9D,EAAOmB,QAAQ+C,UAAU;AAC5B,cAAMA,IAAYH,OAAAA;AACjB/D,UAAAA,EAAOmB,QAAQ+C,SAAAA,GACfjD,EAAO+C,oBAAoB,UAAUE,CAAAA;AAAAA,QAAAA;AAEtCjD,QAAAA,EAAOgD,iBAAiB,UAAUC,CAAAA;AAAAA,MACnC;AAAA,IAAA,CAAA,CAAA,EAGDC,UAAAA;AAAAA,EACH;AAAA,EAKQ;AACP3F,SAAKK,eACHK,KACAC,SACCC,EAAS,CACRC,EAAgCC,QAAQjB,CAAAA,EAAiBa,KACxDK,EAAUC,EAAM,OAChBC,EAAIC,OAAKA,EAAEC,MAAAA,GACXC,EAAAA,MAAe,CAAA,GAEhBG,EAAGG,CAAAA,EAAKhB,KACPe,EAAI,MAAA;AACHX,aAAOoB,cACN,IAAIC,YAAYvC,GAAwB,EACvCuB,QAAQ,EAAEO,KAAAA,EAAAA,GACVU,aACAC,UAAAA,GAAU,CAAA,CAAA;AAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAOhBZ,EAAI,CAAA,CAAEmE,CAAAA,MAAAA;AACL,UAAIA,GAAUnD,QAAQ;AAErBmD,QAAAA,EAASnD,OAAOoD,KAAAA;AAGhB,cAAMC,IAAe9F,KAAKC,cAAc6E,QAAQc,EAASnD;QACrDqD,YACH9F,KAAKC,cAAc8E,OAAOe,GAAc;AAGzC,cAAMC,IAAW/F,KAAKE,iBAAiB4E,QAAQc,EAASnD;QACpDsD,YACH/F,KAAKE,iBAAiB6E,OAAOgB,GAAU,IAIpCH,EAASnD,OAAOC,iBACnBkD,EAASnD,OAAOC,cAAcuC,YAAYW,EAASnD,MAAAA;AAAAA,MAErD;AAAA,IAAA,CAAA,CAAA,EAGDkD,UAAAA;AAAAA,EACH;AAAA,EAMO,QAAQhD,GAAAA;AACd,WAAO,IAAIqD,QAAQ,CAACpB,GAASS,MAAAA;AAE5B,YAAMY,IAAkB,EAAA,GACpBnG,EAAcoG,iBAAAA,GACdvD;AAICsD,MAAAA,EAAgBzB,aACpByB,EAAgBzB,WAAWxE,KAAKyE,oBAAAA;AAIjC,YAAMjD,IAAuB,EAC5BmB,SAASsD,GACTtE,MAAM,WACNkC,SAASoC,EAAgBpC,SACzBe,SAAAA,GACAS,QAAAA,EAAAA;AAGDrF,WAAKG,cAAcgG,KAAK3E,CAAAA;AAAAA,IAAAA,CAAAA;AAAAA,EAE1B;AAAA,EAOO,UACNqC,GACAlB,IAAsD;AAEtD,WAAO,IAAIqD,QAAQ,CAACpB,GAASS;AAEvB1C,MAAAA,EAAQ6B,aACZ7B,EAAQ6B,WAAWxE,KAAKyE,oBAAAA;AAIzB,YAAMjD,IAAuB,EAC5BmB,SAAAA,GACAhB,MAAM,aACNkC,SAAAA,GACAe,YACAS,QAAAA,EAAAA;AAGDrF,WAAKG,cAAcgG,KAAK3E,CAAAA;AAAAA,IAAAA,CAAAA;AAAAA,EAE1B;AAAA,EAMO,UAAA4E;AAEN,QAAIpG,KAAKE,iBAAiBmG,SAAS,GAAG;AAErC,YACM3E,IADS1B,KAAKE,iBAAiBF,KAAKE,iBAAiBmG,SAAS,CAAA,EACjDC,aAAa,KAAA;AAEhC,UAAI5E,EAEH,QADA1B,KAAKK,eAAe8F,KAAKzE,CAAAA,GAAAA;AAAAA,IAG3B;AAGA,QAAI1B,KAAKC,cAAcoG,SAAS,GAAG;AAElC,YACM3E,IADS1B,KAAKC,cAAcD,KAAKC,cAAcoG,SAAS,CAAA,EAC3CC,aAAa;AAEhC,UAAI5E,EAEH,QADA1B,KAAKK,eAAe8F,KAAKzE,CAAAA,GAAAA;AAAAA,IAG3B;AAEA,WAAA;AAAA,EACD;AAAA,EAMO,QAAA6E;AACN,WAAOvG,KAAKoG,QAAAA;AAAAA,EACb;AAAA,EAMO,IAAI/C,GAAiBmD,GAAAA;AAC3B,WAAOxG,KAAKyG,QAAQ,EACnBpD,YACAmB,UAAUgC,EAAAA,CAAAA;AAAAA,EAEZ;AAAA,EAMO,OAAO7D,GAAAA;AACb,WAAO3C,KAAKyG,QAAQ,EAAA,GAChB9D,GACHa,SAAS,SAAA,CAAA;AAAA,EAEX;AAAA,EAKQ,sBAAAiB;AACP,WAAO,EACNiC,GAAG5F,OAAO6F,aAAa,GACvBC,GAAG9F,OAAO+F,cAAc,EAAA;AAAA,EAE1B;AAAA;AAhcA7G,EAAekG,kBAA0C,EACxD/C,eACAC,UAAAA,QACAE,aAAAA,QACAC,YAAAA,QACAC,SAAS,WACTE,OAAO,QAAA;AAVF,IAAM5D,IAANgH;AA2cA,MAAMC,IAAU,EAKtBN,SAAU9D,CAAAA,MACF7C,EAAcU,YAAAA,EAAciG,QAAQ9D,CAAAA,GAO5CqE,KAAK,CAAC3D,GAAiBmD,MACf1G,EAAcU,cAAcwG,IAAI3D,GAASmD,CAAAA,GAOjDS,QAAStE,CAAAA,MACD7C,EAAcU,cAAcyG,OAAOtE,CAAAA,GAO3CuE,WAAW,CACVrD,GACAlB,MAEO7C,EAAcU,YAAAA,EAAc0G,UAAUrD,GAASlB,CAAAA,GAQvDwE,QAAQ,CACPtD,GACAlB,MAEO7C,EAAcU,YAAAA,EAAc0G,UAAUrD,GAASlB,CAAAA,GAOvDyD,SAAS,MACDtG,EAAcU,YAAAA,EAAc4F,QAAAA,GAOpCG,OAAO,MACCzG,EAAcU,YAAAA,EAAc+F,MAAAA,EAAAA;"}
@@ -1,2 +0,0 @@
1
- "use strict";const d=require("lit"),o=require("rxjs"),g=require("./theme.component-DkcM8QzH.cjs"),m="are-you-there-dialog",p="yes-dialog-here",l=class l{constructor(){this.activeDialogs=[],this.activeRawDialogs=[],this.dialogSubject=new o.Subject,this.dismissSubject=new o.Subject,this.setupDialogOpeningLogic(),this.setupDialogDismissLogic()}static getInstance(){return l.instance||(l.instance=new l),l.instance}setupDialogOpeningLogic(){this.dialogSubject.pipe(o.switchMap(e=>o.forkJoin([o.fromEvent(window,p).pipe(o.takeUntil(o.timer(50)),o.map(t=>t.detail),o.defaultIfEmpty(void 0)),o.fromEvent(window,g.ThemeHereIAm).pipe(o.takeUntil(o.timer(50)),o.map(t=>t.detail.theme),o.defaultIfEmpty(void 0)),o.of(e).pipe(o.tap(()=>{const t=e.type==="confirm"?`confirm-dialog-${Date.now()}-${Math.random().toString(36).substring(2,9)}`:`dialog-${Date.now()}-${Math.random().toString(36).substring(2,9)}`;window.dispatchEvent(new CustomEvent(m,{detail:{uid:t},bubbles:!0,composed:!0})),window.dispatchEvent(new CustomEvent(g.ThemeWhereAreYou,{bubbles:!0,composed:!0})),e.uid=t}))])),o.map(([e,t,n])=>{let i,s=e?.dialog;if(s)i=s.parentElement;else{i=t||n.options.targetContainer||document.querySelector("schmancy-theme")||document.body;const a=n.uid;s=n.type==="confirm"?document.createElement("confirm-dialog"):document.createElement("schmancy-dialog"),s.setAttribute("uid",a),i.appendChild(s)}return{dialog:s,target:n,targetContainer:i}}),o.tap(({dialog:e,target:t,targetContainer:n})=>{e||((e=t.type==="confirm"?document.createElement("confirm-dialog"):document.createElement("schmancy-dialog")).setAttribute("uid",t.uid),n.appendChild(e))}),o.map(({dialog:e,target:t,targetContainer:n})=>(e||(e=n.querySelector(`[uid="${t.uid}"]`)),{dialog:e,target:t,targetContainer:n})),o.tap(({dialog:e,target:t})=>{if(t.type==="confirm"){const n=e,i=t.options;if(i.title&&(n.title=i.title),i.subtitle&&(n.subtitle=i.subtitle),i.message&&(n.message=i.message),i.confirmText&&(n.confirmText=i.confirmText),i.cancelText&&(n.cancelText=i.cancelText),i.variant&&(n.variant=i.variant),i.confirmColor&&(n.confirmColor=i.confirmColor),i.width&&n.style.setProperty("--dialog-width",i.width),i.content){const s=document.createElement("div");if(s.slot="content",typeof i.content=="function"){const a=i.content();a instanceof HTMLElement?s.appendChild(a):d.render(a,s)}else i.content instanceof HTMLElement?s.appendChild(i.content):d.render(i.content,s);n.appendChild(s)}this.activeDialogs.push(n)}else{if(t.content){const n=document.createElement("div");if(n.style.height="100%",n.style.width="100%",n.classList.add("schmancy-dialog-content-container"),typeof t.content=="function"){const i=t.content();i instanceof HTMLElement?n.appendChild(i):d.render(i,n)}else t.content instanceof HTMLElement?n.appendChild(t.content):d.render(t.content,n);e.appendChild(n)}t.options.width&&e.style.setProperty("--dialog-width",t.options.width),this.activeRawDialogs.push(e)}}),o.tap(({dialog:e,target:t})=>{const n=t.options.position||this.getCenteredPosition();if(e.show(n).then(i=>{if(t.resolve&&t.resolve(i),t.type==="confirm"){const s=this.activeDialogs.indexOf(e);s!==-1&&this.activeDialogs.splice(s,1);const a=e.querySelector('[slot="content"]');a&&e.removeChild(a)}else{const s=this.activeRawDialogs.indexOf(e);s!==-1&&this.activeRawDialogs.splice(s,1);const a=e.querySelector(".schmancy-dialog-content-container");a&&a.parentNode&&a.parentNode.removeChild(a)}e.parentElement&&e.parentElement.removeChild(e)}).catch(i=>{t.reject&&t.reject(i)}),t.options.onConfirm){const i=s=>{t.options.onConfirm(),e.removeEventListener("confirm",i)};e.addEventListener("confirm",i)}if(t.options.onCancel){const i=s=>{t.options.onCancel(),e.removeEventListener("cancel",i)};e.addEventListener("cancel",i)}})).subscribe()}setupDialogDismissLogic(){this.dismissSubject.pipe(o.switchMap(e=>o.forkJoin([o.fromEvent(window,p).pipe(o.takeUntil(o.timer(100)),o.map(t=>t.detail),o.defaultIfEmpty(void 0)),o.of(e).pipe(o.tap(()=>{window.dispatchEvent(new CustomEvent(m,{detail:{uid:e},bubbles:!0,composed:!0}))}))])),o.tap(([e])=>{if(e?.dialog){e.dialog.hide(!1);const t=this.activeDialogs.indexOf(e.dialog);t!==-1&&this.activeDialogs.splice(t,1);const n=this.activeRawDialogs.indexOf(e.dialog);n!==-1&&this.activeRawDialogs.splice(n,1),e.dialog.parentElement&&e.dialog.parentElement.removeChild(e.dialog)}})).subscribe()}confirm(e){return new Promise((t,n)=>{const i={...l.DEFAULT_OPTIONS,...e};i.position||(i.position=this.getCenteredPosition());const s={options:i,type:"confirm",content:i.content,resolve:t,reject:n};this.dialogSubject.next(s)})}component(e,t={}){return new Promise((n,i)=>{t.position||(t.position=this.getCenteredPosition());const s={options:t,type:"component",content:e,resolve:n,reject:i};this.dialogSubject.next(s)})}dismiss(){if(this.activeRawDialogs.length>0){const e=this.activeRawDialogs[this.activeRawDialogs.length-1].getAttribute("uid");if(e)return this.dismissSubject.next(e),!0}if(this.activeDialogs.length>0){const e=this.activeDialogs[this.activeDialogs.length-1].getAttribute("uid");if(e)return this.dismissSubject.next(e),!0}return!1}close(){return this.dismiss()}ask(e,t){return this.confirm({message:e,position:t})}danger(e){return this.confirm({...e,variant:"danger"})}getCenteredPosition(){return{x:window.innerWidth/2,y:window.innerHeight/2}}};l.DEFAULT_OPTIONS={title:void 0,subtitle:void 0,confirmText:void 0,cancelText:void 0,variant:"default",width:"360px"};let c=l;const h={confirm:r=>c.getInstance().confirm(r),ask:(r,e)=>c.getInstance().ask(r,e),danger:r=>c.getInstance().danger(r),component:(r,e)=>c.getInstance().component(r,e),simple:(r,e)=>c.getInstance().component(r,e),dismiss:()=>c.getInstance().dismiss(),close:()=>c.getInstance().close()};exports.$dialog=h,exports.DialogHereMorty=p,exports.DialogService=c,exports.DialogWhereAreYouRicky=m;
2
- //# sourceMappingURL=dialog-service-Wna1JO09.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog-service-Wna1JO09.cjs","sources":["../src/dialog/dialog-events.ts","../src/dialog/dialog-service.ts"],"sourcesContent":["// Dialog discovery event constants\r\nexport const DialogWhereAreYouRicky = 'are-you-there-dialog'\r\nexport const DialogHereMorty = 'yes-dialog-here'\r\n\r\n// Event interfaces\r\nexport interface DialogWhereAreYouRickyEvent extends CustomEvent {\r\n detail: {\r\n uid: string\r\n }\r\n}\r\n\r\nexport interface DialogHereMortyEvent extends CustomEvent {\r\n detail: {\r\n dialog: any // Will be schmancy-dialog instance\r\n theme?: any // Will be schmancy-theme instance\r\n }\r\n}","import { render, TemplateResult } from 'lit'\nimport { defaultIfEmpty, forkJoin, fromEvent, map, of, Subject, switchMap, takeUntil, tap, timer } from 'rxjs'\nimport { ThemeHereIAm, ThemeHereIAmEvent, ThemeWhereAreYou } from '../theme/theme.component'\nimport { ConfirmDialog } from './dailog'\nimport { DialogHereMorty, DialogHereMortyEvent, DialogWhereAreYouRicky } from './dialog-events'\n\n/**\n * Dialog service options interface with component support\n */\nexport interface DialogOptions {\n\ttitle?: string\n\tsubtitle?: string\n\tmessage?: string\n\tconfirmText?: string\n\tcancelText?: string\n\tvariant?: 'default' | 'danger'\n\tconfirmColor?: 'primary' | 'error' | 'warning' | 'success' // Button color for confirm action\n\tposition?: { x: number; y: number } | MouseEvent | TouchEvent\n\n\t// New options for component rendering\n\tcontent?: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult)\n\twidth?: string\n\tonConfirm?: () => void\n\tonCancel?: () => void\n\thideActions?: boolean // Set to true to hide all buttons and title\n\ttargetContainer?: HTMLElement // Container to append dialog to (defaults to document.body)\n}\n\ninterface DialogTarget {\n\toptions: DialogOptions\n\ttype: 'confirm' | 'component'\n\tcontent?: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult)\n\tresolve?: (value: boolean) => void\n\treject?: (reason?: any) => void\n}\n\n/**\n * Dialog service for centralized dialog management.\n * Provides a simple API for showing dialogs with optional custom components.\n */\nexport class DialogService {\n\tprivate static instance: DialogService\n\n\t// Default dialog options\n\tprivate static DEFAULT_OPTIONS: Partial<DialogOptions> = {\n\t\ttitle: undefined,\n\t\tsubtitle: undefined,\n\t\tconfirmText: undefined,\n\t\tcancelText: undefined,\n\t\tvariant: 'default',\n\t\twidth: '360px',\n\t}\n\n\t// Track active dialogs to handle dismissing the most recent one\n\tprivate activeDialogs: ConfirmDialog[] = []\n\t\n\t// Track component dialogs (schmancy-dialog instances)\n\tprivate activeRawDialogs: any[] = []\n\t\n\t// Subject for dialog opening requests\n\tprivate dialogSubject = new Subject<DialogTarget>()\n\t\n\t// Subject for dialog dismissal requests\n\tprivate dismissSubject = new Subject<string>()\n\n\t// Private constructor for singleton pattern\n\tprivate constructor() {\n\t\tthis.setupDialogOpeningLogic()\n\t\tthis.setupDialogDismissLogic()\n\t}\n\n\t/**\n\t * Get the singleton instance\n\t */\n\tpublic static getInstance(): DialogService {\n\t\tif (!DialogService.instance) {\n\t\t\tDialogService.instance = new DialogService()\n\t\t}\n\t\treturn DialogService.instance\n\t}\n\t\n\t/**\n\t * Sets up the main dialog opening logic using RxJS pipes\n\t */\n\tprivate setupDialogOpeningLogic() {\n\t\tthis.dialogSubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\t// First ask for existing dialog\n\t\t\t\t\t\tfromEvent<DialogHereMortyEvent>(window, DialogHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(50)),\n\t\t\t\t\t\t\tmap(e => e.detail),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\t// Then find theme container\n\t\t\t\t\t\tfromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(50)),\n\t\t\t\t\t\t\tmap(e => e.detail.theme),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(target).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\tconst uid = target.type === 'confirm' \n\t\t\t\t\t\t\t\t\t? `confirm-dialog-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n\t\t\t\t\t\t\t\t\t: `dialog-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// First ask for existing dialog\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(DialogWhereAreYouRicky, {\n\t\t\t\t\t\t\t\t\t\tdetail: { uid },\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t// Then ask for theme container\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(ThemeWhereAreYou, {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Store uid in target for later use\n\t\t\t\t\t\t\t\t;(target as any).uid = uid\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\tmap(([existingDialog, theme, target]) => {\n\t\t\t\t\tlet dialog = existingDialog?.dialog\n\t\t\t\t\tlet targetContainer: HTMLElement\n\t\t\t\t\t\n\t\t\t\t\tif (dialog) {\n\t\t\t\t\t\t// Use existing dialog\n\t\t\t\t\t\ttargetContainer = dialog.parentElement as HTMLElement\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Determine container - use theme from discovery or fallback\n\t\t\t\t\t\ttargetContainer = theme || target.options.targetContainer || (document.querySelector('schmancy-theme') as HTMLElement) || document.body\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Create appropriate dialog type\n\t\t\t\t\t\tconst uid = (target as any).uid\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (target.type === 'confirm') {\n\t\t\t\t\t\t\tdialog = document.createElement('confirm-dialog') as ConfirmDialog\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdialog = document.createElement('schmancy-dialog')\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tdialog.setAttribute('uid', uid)\n\t\t\t\t\t\ttargetContainer.appendChild(dialog)\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn { dialog, target, targetContainer }\n\t\t\t\t}),\n\t\t\t\ttap(({ dialog, target, targetContainer }) => {\n\t\t\t\t\tif (!dialog) {\n\t\t\t\t\t\t// Create appropriate dialog type\n\t\t\t\t\t\tif (target.type === 'confirm') {\n\t\t\t\t\t\t\tdialog = document.createElement('confirm-dialog') as ConfirmDialog\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdialog = document.createElement('schmancy-dialog')\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tdialog.setAttribute('uid', (target as any).uid)\n\t\t\t\t\t\ttargetContainer.appendChild(dialog)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tmap(({ dialog, target, targetContainer }) => {\n\t\t\t\t\t// Return the actual dialog element that was created\n\t\t\t\t\tif (!dialog) {\n\t\t\t\t\t\tdialog = targetContainer.querySelector(`[uid=\"${(target as any).uid}\"]`)\n\t\t\t\t\t}\n\t\t\t\t\treturn { dialog, target, targetContainer }\n\t\t\t\t}),\n\t\t\t\ttap(({ dialog, target }) => {\n\t\t\t\t\tif (target.type === 'confirm') {\n\t\t\t\t\t\t// Configure confirm dialog\n\t\t\t\t\t\tconst confirmDialog = dialog as ConfirmDialog\n\t\t\t\t\t\tconst options = target.options\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (options.title) confirmDialog.title = options.title\n\t\t\t\t\t\tif (options.subtitle) confirmDialog.subtitle = options.subtitle\n\t\t\t\t\t\tif (options.message) confirmDialog.message = options.message\n\t\t\t\t\t\tif (options.confirmText) confirmDialog.confirmText = options.confirmText\n\t\t\t\t\t\tif (options.cancelText) confirmDialog.cancelText = options.cancelText\n\t\t\t\t\t\tif (options.variant) confirmDialog.variant = options.variant\n\t\t\t\t\t\tif (options.confirmColor) confirmDialog.confirmColor = options.confirmColor\n\t\t\t\t\t\tif (options.width) confirmDialog.style.setProperty('--dialog-width', options.width)\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Handle custom content if provided\n\t\t\t\t\t\tif (options.content) {\n\t\t\t\t\t\t\tconst contentContainer = document.createElement('div')\n\t\t\t\t\t\t\tcontentContainer.slot = 'content'\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (typeof options.content === 'function') {\n\t\t\t\t\t\t\t\tconst result = options.content()\n\t\t\t\t\t\t\t\tif (result instanceof HTMLElement) {\n\t\t\t\t\t\t\t\t\tcontentContainer.appendChild(result)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\trender(result, contentContainer)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (options.content instanceof HTMLElement) {\n\t\t\t\t\t\t\t\tcontentContainer.appendChild(options.content)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trender(options.content, contentContainer)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tconfirmDialog.appendChild(contentContainer)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Add to active dialogs\n\t\t\t\t\t\tthis.activeDialogs.push(confirmDialog)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Configure component dialog\n\t\t\t\t\t\tif (target.content) {\n\t\t\t\t\t\t\tconst directContentContainer = document.createElement('div')\n\t\t\t\t\t\t\tdirectContentContainer.style.height = '100%'\n\t\t\t\t\t\t\tdirectContentContainer.style.width = '100%'\n\t\t\t\t\t\t\tdirectContentContainer.classList.add('schmancy-dialog-content-container')\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Render the content directly\n\t\t\t\t\t\t\tif (typeof target.content === 'function') {\n\t\t\t\t\t\t\t\tconst result = target.content()\n\t\t\t\t\t\t\t\tif (result instanceof HTMLElement) {\n\t\t\t\t\t\t\t\t\tdirectContentContainer.appendChild(result)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\trender(result, directContentContainer)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (target.content instanceof HTMLElement) {\n\t\t\t\t\t\t\t\tdirectContentContainer.appendChild(target.content)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trender(target.content, directContentContainer)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tdialog.appendChild(directContentContainer)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Set width from options\n\t\t\t\t\t\tif (target.options.width) {\n\t\t\t\t\t\t\tdialog.style.setProperty('--dialog-width', target.options.width)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Add to active raw dialogs\n\t\t\t\t\t\tthis.activeRawDialogs.push(dialog)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttap(({ dialog, target }) => {\n\t\t\t\t\t// Show dialog and handle promise resolution\n\t\t\t\t\tconst position = target.options.position || this.getCenteredPosition()\n\t\t\t\t\t\n\t\t\t\t\tdialog.show(position).then((result: boolean) => {\n\t\t\t\t\t\tif (target.resolve) {\n\t\t\t\t\t\t\ttarget.resolve(result)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Cleanup\n\t\t\t\t\t\tif (target.type === 'confirm') {\n\t\t\t\t\t\t\tconst index = this.activeDialogs.indexOf(dialog)\n\t\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\t\tthis.activeDialogs.splice(index, 1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Clean up content\n\t\t\t\t\t\t\tconst contentEl = dialog.querySelector('[slot=\"content\"]')\n\t\t\t\t\t\t\tif (contentEl) {\n\t\t\t\t\t\t\t\tdialog.removeChild(contentEl)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst index = this.activeRawDialogs.indexOf(dialog)\n\t\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\t\tthis.activeRawDialogs.splice(index, 1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Clean up content\n\t\t\t\t\t\t\tconst contentContainer = dialog.querySelector('.schmancy-dialog-content-container')\n\t\t\t\t\t\t\tif (contentContainer && contentContainer.parentNode) {\n\t\t\t\t\t\t\t\tcontentContainer.parentNode.removeChild(contentContainer)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Remove dialog from DOM\n\t\t\t\t\t\tif (dialog.parentElement) {\n\t\t\t\t\t\t\tdialog.parentElement.removeChild(dialog)\n\t\t\t\t\t\t}\n\t\t\t\t\t}).catch((error: any) => {\n\t\t\t\t\t\tif (target.reject) {\n\t\t\t\t\t\t\ttarget.reject(error)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t\n\t\t\t\t\t// Set up event listeners for callbacks\n\t\t\t\t\tif (target.options.onConfirm) {\n\t\t\t\t\t\tconst onConfirm = (_e: Event) => {\n\t\t\t\t\t\t\ttarget.options.onConfirm!()\n\t\t\t\t\t\t\tdialog.removeEventListener('confirm', onConfirm)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdialog.addEventListener('confirm', onConfirm)\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tif (target.options.onCancel) {\n\t\t\t\t\t\tconst onCancel = (_e: Event) => {\n\t\t\t\t\t\t\ttarget.options.onCancel!()\n\t\t\t\t\t\t\tdialog.removeEventListener('cancel', onCancel)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdialog.addEventListener('cancel', onCancel)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\t\n\t/**\n\t * Sets up the dialog dismissal logic\n\t */\n\tprivate setupDialogDismissLogic() {\n\t\tthis.dismissSubject\n\t\t\t.pipe(\n\t\t\t\tswitchMap(uid =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<DialogHereMortyEvent>(window, DialogHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(100)),\n\t\t\t\t\t\t\tmap(e => e.detail),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(uid).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(DialogWhereAreYouRicky, { \n\t\t\t\t\t\t\t\t\t\tdetail: { uid },\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\ttap(([response]) => {\n\t\t\t\t\tif (response?.dialog) {\n\t\t\t\t\t\t// Hide the dialog\n\t\t\t\t\t\tresponse.dialog.hide(false)\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Remove from tracking arrays\n\t\t\t\t\t\tconst confirmIndex = this.activeDialogs.indexOf(response.dialog)\n\t\t\t\t\t\tif (confirmIndex !== -1) {\n\t\t\t\t\t\t\tthis.activeDialogs.splice(confirmIndex, 1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst rawIndex = this.activeRawDialogs.indexOf(response.dialog)\n\t\t\t\t\t\tif (rawIndex !== -1) {\n\t\t\t\t\t\t\tthis.activeRawDialogs.splice(rawIndex, 1)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Remove dialog from DOM immediately\n\t\t\t\t\t\tif (response.dialog.parentElement) {\n\t\t\t\t\t\t\tresponse.dialog.parentElement.removeChild(response.dialog)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Show a confirmation dialog\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tpublic confirm(options: DialogOptions): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// Apply default options\n\t\t\tconst completeOptions = {\n\t\t\t\t...DialogService.DEFAULT_OPTIONS,\n\t\t\t\t...options,\n\t\t\t}\n\n\t\t\t// If no position is provided, center the dialog\n\t\t\tif (!completeOptions.position) {\n\t\t\t\tcompleteOptions.position = this.getCenteredPosition()\n\t\t\t}\n\n\t\t\t// Create dialog target and emit to subject\n\t\t\tconst target: DialogTarget = {\n\t\t\t\toptions: completeOptions,\n\t\t\t\ttype: 'confirm',\n\t\t\t\tcontent: completeOptions.content,\n\t\t\t\tresolve,\n\t\t\t\treject,\n\t\t\t}\n\n\t\t\tthis.dialogSubject.next(target)\n\t\t})\n\t}\n\n\t/**\n\t * Show a dialog with custom component content\n\t * Always renders content directly without any headers or action buttons\n\t * @returns Promise that resolves when dialog is closed\n\t */\n\tpublic component(\n\t\tcontent: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult),\n\t\toptions: Omit<DialogOptions, 'content' | 'message'> = {},\n\t): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// If no position is provided, center the dialog\n\t\t\tif (!options.position) {\n\t\t\t\toptions.position = this.getCenteredPosition()\n\t\t\t}\n\n\t\t\t// Create dialog target and emit to subject\n\t\t\tconst target: DialogTarget = {\n\t\t\t\toptions: options as DialogOptions,\n\t\t\t\ttype: 'component',\n\t\t\t\tcontent,\n\t\t\t\tresolve,\n\t\t\t\treject,\n\t\t\t}\n\n\t\t\tthis.dialogSubject.next(target)\n\t\t})\n\t}\n\n\t/**\n\t * Dismiss the most recently opened dialog (either confirm or component type)\n\t * @returns true if a dialog was dismissed, false if no dialogs were open\n\t */\n\tpublic dismiss(): boolean {\n\t\t// Try component dialog first (they're more likely to be on top)\n\t\tif (this.activeRawDialogs.length > 0) {\n\t\t\t// Get the most recently opened raw dialog (last in the array)\n\t\t\tconst dialog = this.activeRawDialogs[this.activeRawDialogs.length - 1]\n\t\t\tconst uid = dialog.getAttribute('uid')\n\t\t\t\n\t\t\tif (uid) {\n\t\t\t\tthis.dismissSubject.next(uid)\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\t\n\t\t// Fall back to confirm dialogs\n\t\tif (this.activeDialogs.length > 0) {\n\t\t\t// Get the most recently opened dialog (last in the array)\n\t\t\tconst dialog = this.activeDialogs[this.activeDialogs.length - 1]\n\t\t\tconst uid = dialog.getAttribute('uid')\n\t\t\t\n\t\t\tif (uid) {\n\t\t\t\tthis.dismissSubject.next(uid)\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\treturn false\n\t}\n\n\t/**\n\t * Close the most recently opened dialog (alias for dismiss)\n\t * @returns true if a dialog was closed, false if no dialogs were open\n\t */\n\tpublic close(): boolean {\n\t\treturn this.dismiss()\n\t}\n\n\t/**\n\t * Show a simple confirmation dialog with just a message\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tpublic ask(message: string, event?: MouseEvent | TouchEvent): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\tmessage,\n\t\t\tposition: event,\n\t\t})\n\t}\n\n\t/**\n\t * Show a danger confirmation dialog\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tpublic danger(options: Omit<DialogOptions, 'variant'>): Promise<boolean> {\n\t\treturn this.confirm({\n\t\t\t...options,\n\t\t\tvariant: 'danger',\n\t\t})\n\t}\n\n\t/**\n\t * Get a centered position for the dialog\n\t */\n\tprivate getCenteredPosition(): { x: number; y: number } {\n\t\treturn {\n\t\t\tx: window.innerWidth / 2,\n\t\t\ty: window.innerHeight / 2,\n\t\t}\n\t}\n\n}\n\n/**\n * Global dialog utility - provides a quick way to show dialogs\n */\nexport const $dialog = {\n\t/**\n\t * Show a confirmation dialog\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tconfirm: (options: DialogOptions): Promise<boolean> => {\n\t\treturn DialogService.getInstance().confirm(options)\n\t},\n\n\t/**\n\t * Show a simple confirmation dialog with just a message\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\task: (message: string, event?: MouseEvent | TouchEvent): Promise<boolean> => {\n\t\treturn DialogService.getInstance().ask(message, event)\n\t},\n\n\t/**\n\t * Show a danger confirmation dialog\n\t * @returns Promise that resolves to true (confirm) or false (cancel)\n\t */\n\tdanger: (options: Omit<DialogOptions, 'variant'>): Promise<boolean> => {\n\t\treturn DialogService.getInstance().danger(options)\n\t},\n\n\t/**\n\t * Show a dialog with custom component content\n\t * @returns Promise that resolves when dialog is closed\n\t */\n\tcomponent: (\n\t\tcontent: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult),\n\t\toptions?: Omit<DialogOptions, 'content' | 'message'>,\n\t): Promise<boolean> => {\n\t\treturn DialogService.getInstance().component(content, options)\n\t},\n\n\t/**\n\t * Show a simple dialog without title or actions, just content\n\t * This is an alias for component() since all component dialogs are now simple by design\n\t * @returns Promise that resolves when dialog is closed\n\t */\n\tsimple: (\n\t\tcontent: TemplateResult | HTMLElement | (() => HTMLElement | TemplateResult),\n\t\toptions?: Omit<DialogOptions, 'content' | 'message' | 'title' | 'confirmText' | 'cancelText'>,\n\t): Promise<boolean> => {\n\t\treturn DialogService.getInstance().component(content, options)\n\t},\n\n\t/**\n\t * Dismiss the most recently opened dialog\n\t * @returns true if a dialog was dismissed, false if no dialogs were open\n\t */\n\tdismiss: (): boolean => {\n\t\treturn DialogService.getInstance().dismiss()\n\t},\n\n\t/**\n\t * Close the most recently opened dialog (alias for dismiss)\n\t * @returns true if a dialog was closed, false if no dialogs were open\n\t */\n\tclose: (): boolean => {\n\t\treturn DialogService.getInstance().close()\n\t},\n}\n\nexport default DialogService"],"names":["DialogWhereAreYouRicky","DialogHereMorty","DialogService","constructor","this","activeDialogs","activeRawDialogs","dialogSubject","Subject","dismissSubject","setupDialogOpeningLogic","setupDialogDismissLogic","getInstance","instance","pipe","switchMap","forkJoin","fromEvent","window","takeUntil","timer","map","e","detail","defaultIfEmpty","ThemeHereIAm","theme","of","target","tap","uid","type","Date","now","Math","random","toString","substring","dispatchEvent","CustomEvent","bubbles","composed","ThemeWhereAreYou","existingDialog","targetContainer","dialog","parentElement","options","document","querySelector","body","createElement","setAttribute","appendChild","confirmDialog","title","subtitle","message","confirmText","cancelText","variant","confirmColor","width","style","setProperty","content","contentContainer","slot","result","HTMLElement","render","push","directContentContainer","height","classList","add","position","getCenteredPosition","show","then","resolve","index","indexOf","splice","contentEl","removeChild","parentNode","catch","error","reject","onConfirm","_e","removeEventListener","addEventListener","onCancel","subscribe","response","hide","confirmIndex","rawIndex","Promise","completeOptions","DEFAULT_OPTIONS","next","length","getAttribute","close","dismiss","event","confirm","x","innerWidth","y","innerHeight","_s","$dialog","ask","danger","component","simple"],"mappings":"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"}