@mhmo91/schmancy 0.10.18 → 0.10.19

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 (164) hide show
  1. package/dist/agent/{flow-CvG1fLW5.js.map → flow-3RrZM-e7.js.map} +1 -1
  2. package/dist/agent/overlay.confirm-body-D3jQyXgA.js +2863 -0
  3. package/dist/agent/overlay.confirm-body-D3jQyXgA.js.map +1 -0
  4. package/dist/agent/{rolldown-runtime-DsMetpgY.js → rolldown-runtime-BIIoCavz.js} +9 -2
  5. package/dist/agent/schmancy.agent.js +3870 -5769
  6. package/dist/agent/schmancy.agent.js.map +1 -1
  7. package/dist/agent/{vendor-material-color-DcL7ZPxx.js.map → vendor-material-color-33Mj762T.js.map} +1 -1
  8. package/dist/{audio-D-TZzpXF.cjs → audio-Cvmemu84.cjs} +1 -1
  9. package/dist/{audio-D-TZzpXF.cjs.map → audio-Cvmemu84.cjs.map} +1 -1
  10. package/dist/{audio-DS43uoRA.js → audio-CxO5a2HL.js} +1 -1
  11. package/dist/{audio-DS43uoRA.js.map → audio-CxO5a2HL.js.map} +1 -1
  12. package/dist/audio.cjs +1 -1
  13. package/dist/audio.js +2 -2
  14. package/dist/badge.cjs +1 -1
  15. package/dist/badge.js +1 -1
  16. package/dist/{boat-cuoSkhGI.js → boat-CNWIQPA1.js} +1 -1
  17. package/dist/{boat-cuoSkhGI.js.map → boat-CNWIQPA1.js.map} +1 -1
  18. package/dist/{boat-DN1_tyvx.cjs → boat-OatK_MGh.cjs} +1 -1
  19. package/dist/{boat-DN1_tyvx.cjs.map → boat-OatK_MGh.cjs.map} +1 -1
  20. package/dist/boat.cjs +1 -1
  21. package/dist/boat.js +1 -1
  22. package/dist/{chips-m2NPN480.js → chips-D1kJrbzo.js} +1 -1
  23. package/dist/{chips-m2NPN480.js.map → chips-D1kJrbzo.js.map} +1 -1
  24. package/dist/{chips-DSdvCpmi.cjs → chips-Dx_WvOGk.cjs} +1 -1
  25. package/dist/{chips-DSdvCpmi.cjs.map → chips-Dx_WvOGk.cjs.map} +1 -1
  26. package/dist/chips.cjs +1 -1
  27. package/dist/chips.js +1 -1
  28. package/dist/connectivity.cjs +1 -1
  29. package/dist/connectivity.js +1 -1
  30. package/dist/content-drawer.cjs +1 -1
  31. package/dist/content-drawer.js +1 -1
  32. package/dist/{date-range-D98QcCHl.js → date-range-Dv-DM6mB.js} +1 -1
  33. package/dist/{date-range-D98QcCHl.js.map → date-range-Dv-DM6mB.js.map} +1 -1
  34. package/dist/{date-range-DxS3Agbj.cjs → date-range-H903Vt_r.cjs} +1 -1
  35. package/dist/{date-range-DxS3Agbj.cjs.map → date-range-H903Vt_r.cjs.map} +1 -1
  36. package/dist/date-range.cjs +1 -1
  37. package/dist/date-range.js +1 -1
  38. package/dist/directives.cjs +1 -1
  39. package/dist/directives.js +1 -1
  40. package/dist/{float-B8NcSE3a.cjs → float-CfbQM_2v.cjs} +1 -1
  41. package/dist/{float-B8NcSE3a.cjs.map → float-CfbQM_2v.cjs.map} +1 -1
  42. package/dist/{float-C-glc-3u.js → float-KmbhaQHA.js} +1 -1
  43. package/dist/{float-C-glc-3u.js.map → float-KmbhaQHA.js.map} +1 -1
  44. package/dist/float.cjs +1 -1
  45. package/dist/float.js +1 -1
  46. package/dist/{form-DJvxIyfW.js → form-8IcmP8uV.js} +2 -2
  47. package/dist/{form-DJvxIyfW.js.map → form-8IcmP8uV.js.map} +1 -1
  48. package/dist/{form-St_IwR7y.cjs → form-CuBIrKOA.cjs} +1 -1
  49. package/dist/{form-St_IwR7y.cjs.map → form-CuBIrKOA.cjs.map} +1 -1
  50. package/dist/form.cjs +1 -1
  51. package/dist/form.js +2 -2
  52. package/dist/handover/agent-runtime-followups.md +1 -1
  53. package/dist/handover/agent-runtime-v1.md +3 -3
  54. package/dist/index.cjs +1 -1
  55. package/dist/index.js +56 -53
  56. package/dist/json.cjs +1 -1
  57. package/dist/json.js +1 -1
  58. package/dist/{layout-Delq-QvR.cjs → layout-BbCIfIgo.cjs} +1 -1
  59. package/dist/{layout-Delq-QvR.cjs.map → layout-BbCIfIgo.cjs.map} +1 -1
  60. package/dist/{layout-BH28sKGc.js → layout-Dq2oeOTS.js} +1 -1
  61. package/dist/{layout-BH28sKGc.js.map → layout-Dq2oeOTS.js.map} +1 -1
  62. package/dist/{menu-Dag0cuWV.cjs → menu-BqKQ-s0C.cjs} +1 -1
  63. package/dist/{menu-Dag0cuWV.cjs.map → menu-BqKQ-s0C.cjs.map} +1 -1
  64. package/dist/{menu-B_-weNpZ.js → menu-C5ksITpG.js} +1 -1
  65. package/dist/{menu-B_-weNpZ.js.map → menu-C5ksITpG.js.map} +1 -1
  66. package/dist/menu.cjs +1 -1
  67. package/dist/menu.js +1 -1
  68. package/dist/nav-drawer.cjs +1 -1
  69. package/dist/nav-drawer.js +1 -1
  70. package/dist/navigation-bar.cjs +1 -1
  71. package/dist/navigation-bar.js +1 -1
  72. package/dist/{notification-yd2KeHjd.cjs → notification-DR3gvWt8.cjs} +1 -1
  73. package/dist/{notification-yd2KeHjd.cjs.map → notification-DR3gvWt8.cjs.map} +1 -1
  74. package/dist/{notification-DySnvQeO.js → notification-eZxtr3NN.js} +1 -1
  75. package/dist/{notification-DySnvQeO.js.map → notification-eZxtr3NN.js.map} +1 -1
  76. package/dist/notification.cjs +1 -1
  77. package/dist/notification.js +1 -1
  78. package/dist/overlay-DG6EeyKt.cjs +80 -0
  79. package/dist/overlay-DG6EeyKt.cjs.map +1 -0
  80. package/dist/overlay-oxM9OLXP.js +745 -0
  81. package/dist/overlay-oxM9OLXP.js.map +1 -0
  82. package/dist/overlay.cjs +1 -80
  83. package/dist/{overlay.confirm-body-sUmd_zVy.cjs.map → overlay.confirm-body-78e1WrN9.cjs.map} +1 -1
  84. package/dist/{overlay.confirm-body-DESGpbru.js.map → overlay.confirm-body-D_P2e7l6.js.map} +1 -1
  85. package/dist/overlay.js +5 -746
  86. package/dist/{overlay.service-DV_o_xQ0.js → overlay.service-C8NwO4Bx.js} +2 -2
  87. package/dist/{overlay.service-DV_o_xQ0.js.map → overlay.service-C8NwO4Bx.js.map} +1 -1
  88. package/dist/{overlay.service-BxtEFFSH.cjs → overlay.service-DQkGPUY7.cjs} +1 -1
  89. package/dist/{overlay.service-BxtEFFSH.cjs.map → overlay.service-DQkGPUY7.cjs.map} +1 -1
  90. package/dist/page.cjs +1 -1
  91. package/dist/page.js +2 -2
  92. package/dist/{rxjs-utils-Dv9T9IpA.js.map → rxjs-utils-Cs6XGwF6.js.map} +1 -1
  93. package/dist/{rxjs-utils-BKB2UM_j.cjs.map → rxjs-utils-Dsj75cJy.cjs.map} +1 -1
  94. package/dist/rxjs-utils.cjs +1 -1
  95. package/dist/rxjs-utils.js +1 -1
  96. package/dist/{sound.service-DyY78ukR.cjs → sound.service-DVJZb9ox.cjs} +1 -1
  97. package/dist/{sound.service-DyY78ukR.cjs.map → sound.service-DVJZb9ox.cjs.map} +1 -1
  98. package/dist/{sound.service-BIN2W7Rv.js → sound.service-v_jqCkos.js} +1 -1
  99. package/dist/{sound.service-BIN2W7Rv.js.map → sound.service-v_jqCkos.js.map} +1 -1
  100. package/dist/{splash-screen-25PTDqnp.cjs.map → splash-screen-BvaDkvJU.cjs.map} +1 -1
  101. package/dist/{splash-screen-bGW_sS4i.js.map → splash-screen-ChMkAPLU.js.map} +1 -1
  102. package/dist/splash-screen.cjs +1 -1
  103. package/dist/splash-screen.js +1 -1
  104. package/dist/{src-Blm9PNcf.cjs → src-BIlD63Cz.cjs} +1 -1
  105. package/dist/{src-Blm9PNcf.cjs.map → src-BIlD63Cz.cjs.map} +1 -1
  106. package/dist/{src-olrlFt4e.js → src-DnunCC4X.js} +18 -17
  107. package/dist/{src-olrlFt4e.js.map → src-DnunCC4X.js.map} +1 -1
  108. package/dist/{state-nm8yzMPp.js → state-CHbIt2Dw.js} +198 -202
  109. package/dist/{state-nm8yzMPp.js.map → state-CHbIt2Dw.js.map} +1 -1
  110. package/dist/state-DcGj-pJJ.cjs +1 -0
  111. package/dist/{state-avic94Ft.cjs.map → state-DcGj-pJJ.cjs.map} +1 -1
  112. package/dist/state.cjs +1 -1
  113. package/dist/state.js +1 -1
  114. package/dist/{tabs-BVC_qn8S.js.map → tabs-CkDNLbiS.js.map} +1 -1
  115. package/dist/{tabs-Dc3_Ox2B.cjs.map → tabs-lxQHWEb7.cjs.map} +1 -1
  116. package/dist/tabs.cjs +1 -1
  117. package/dist/tabs.js +1 -1
  118. package/dist/teleport.cjs +1 -1
  119. package/dist/teleport.js +1 -1
  120. package/dist/{theme-DCybsrfv.cjs → theme-CMyXTDht.cjs} +1 -1
  121. package/dist/{theme-DCybsrfv.cjs.map → theme-CMyXTDht.cjs.map} +1 -1
  122. package/dist/{theme-BiCwFfCf.js → theme-CNWRYdfn.js} +2 -2
  123. package/dist/{theme-BiCwFfCf.js.map → theme-CNWRYdfn.js.map} +1 -1
  124. package/dist/{theme-button-DqiA0rJg.js.map → theme-button-CixloLin.js.map} +1 -1
  125. package/dist/{theme-button-cZGRyQRK.cjs.map → theme-button-kMhsX5Oe.cjs.map} +1 -1
  126. package/dist/theme-button.cjs +1 -1
  127. package/dist/theme-button.js +1 -1
  128. package/dist/theme.cjs +1 -1
  129. package/dist/theme.js +2 -2
  130. package/dist/{theme.service-BOWIT_5k.js → theme.service-CSzNkqBB.js} +1 -1
  131. package/dist/{theme.service-BOWIT_5k.js.map → theme.service-CSzNkqBB.js.map} +1 -1
  132. package/dist/{theme.service-DkdH1t60.cjs → theme.service-CnFUmUpc.cjs} +1 -1
  133. package/dist/{theme.service-DkdH1t60.cjs.map → theme.service-CnFUmUpc.cjs.map} +1 -1
  134. package/dist/{utils-D2QUu4-g.cjs.map → utils-C-Q8ePtG.cjs.map} +1 -1
  135. package/dist/{utils-Cj_nRRyx.js.map → utils-DXE5fBBd.js.map} +1 -1
  136. package/dist/utils.cjs +1 -1
  137. package/dist/utils.js +1 -1
  138. package/dist/{window-DMy5Gsgu.js → window-BcvDNi9D.js} +1 -1
  139. package/dist/{window-DMy5Gsgu.js.map → window-BcvDNi9D.js.map} +1 -1
  140. package/dist/{window-BMecbTzs.cjs → window-qaGFMn_4.cjs} +1 -1
  141. package/dist/{window-BMecbTzs.cjs.map → window-qaGFMn_4.cjs.map} +1 -1
  142. package/dist/window.cjs +1 -1
  143. package/dist/window.js +1 -1
  144. package/package.json +1 -1
  145. package/src/index.ts +8 -0
  146. package/src/state/index.ts +31 -9
  147. package/types/src/index.d.ts +1 -0
  148. package/dist/overlay.cjs.map +0 -1
  149. package/dist/overlay.js.map +0 -1
  150. package/dist/state-avic94Ft.cjs +0 -1
  151. /package/dist/agent/{flow-CvG1fLW5.js → flow-3RrZM-e7.js} +0 -0
  152. /package/dist/agent/{vendor-material-color-DcL7ZPxx.js → vendor-material-color-33Mj762T.js} +0 -0
  153. /package/dist/{overlay.confirm-body-sUmd_zVy.cjs → overlay.confirm-body-78e1WrN9.cjs} +0 -0
  154. /package/dist/{overlay.confirm-body-DESGpbru.js → overlay.confirm-body-D_P2e7l6.js} +0 -0
  155. /package/dist/{rxjs-utils-Dv9T9IpA.js → rxjs-utils-Cs6XGwF6.js} +0 -0
  156. /package/dist/{rxjs-utils-BKB2UM_j.cjs → rxjs-utils-Dsj75cJy.cjs} +0 -0
  157. /package/dist/{splash-screen-25PTDqnp.cjs → splash-screen-BvaDkvJU.cjs} +0 -0
  158. /package/dist/{splash-screen-bGW_sS4i.js → splash-screen-ChMkAPLU.js} +0 -0
  159. /package/dist/{tabs-BVC_qn8S.js → tabs-CkDNLbiS.js} +0 -0
  160. /package/dist/{tabs-Dc3_Ox2B.cjs → tabs-lxQHWEb7.cjs} +0 -0
  161. /package/dist/{theme-button-DqiA0rJg.js → theme-button-CixloLin.js} +0 -0
  162. /package/dist/{theme-button-cZGRyQRK.cjs → theme-button-kMhsX5Oe.cjs} +0 -0
  163. /package/dist/{utils-D2QUu4-g.cjs → utils-C-Q8ePtG.cjs} +0 -0
  164. /package/dist/{utils-Cj_nRRyx.js → utils-DXE5fBBd.js} +0 -0
package/dist/index.js CHANGED
@@ -2,64 +2,67 @@ import { f as ee } from "./mixins-DCVXqL1Q.js";
2
2
  import { t as te } from "./active-host-BP0zy_Y9.js";
3
3
  import { C as ne, S as e, _ as t, a as n, b as r, c as i, d as a, f as o, g as s, h as c, i as l, l as u, m as d, n as f, o as p, p as m, r as h, s as g, t as _, u as v, v as y, x as b, y as x } from "./area-BIipuSyO.js";
4
4
  import { t as S } from "./lazy-D-bO2r4m.js";
5
- import { a as C, c as w, i as T, n as E, o as D, r as O, s as k, t as A } from "./state-nm8yzMPp.js";
6
- import { n as j, t as M } from "./sound.service-BIN2W7Rv.js";
7
- import { n as N, t as P } from "./audio-DS43uoRA.js";
5
+ import { a as C, c as w, i as T, n as E, o as D, r as O, s as k, t as A } from "./state-CHbIt2Dw.js";
6
+ import { n as j, t as M } from "./sound.service-v_jqCkos.js";
7
+ import { n as N, t as P } from "./audio-CxO5a2HL.js";
8
8
  import { t as F } from "./search-MvIBA93K.js";
9
9
  import { t as I } from "./input-chip-c5n547tg.js";
10
10
  import { _ as L, a as R, c as z, d as B, f as V, g as H, h as U, i as W, l as G, m as K, n as q, o as J, p as Y, r as X, s as Z, t as re, u as ie, v as ae, y as oe } from "./animation-DCznELuT.js";
11
11
  import { t as se } from "./reduced-motion-D7LqTUMn.js";
12
12
  import { t as ce } from "./cursor-glow-Cs2XLDB9.js";
13
- import { i as le, n as ue, r as de, t as fe } from "./theme.service-BOWIT_5k.js";
14
- import { n as pe, r as me, t as he } from "./layout-BH28sKGc.js";
13
+ import { i as le, n as ue, r as de, t as fe } from "./theme.service-CSzNkqBB.js";
14
+ import { n as pe, r as me, t as he } from "./layout-Dq2oeOTS.js";
15
15
  import { t as ge } from "./magnetic-DxvoEz8_.js";
16
16
  import { DragDirective as _e, DropDirective as ve, animateText as ye, color as be, confirmClick as xe, cycleText as Se, depthOfField as Ce, drag as we, drop as Te, gravity as Ee, intersect as De, liquid as Oe, livingBorder as ke, longPress as Ae, nebula as je, reveal as Me, ripple as Ne } from "./directives.js";
17
- import { C as Pe, S as Fe, T as Ie, _ as Le, a as Re, b as ze, c as Be, d as Ve, f as He, g as Ue, h as We, i as Ge, l as Ke, m as qe, n as Je, o as Ye, p as Xe, r as Ze, s as Qe, t as $e, u as et, v as tt, w as nt, x as rt, y as it } from "./src-olrlFt4e.js";
18
- import { t as at } from "./boat-cuoSkhGI.js";
19
- import { SchmancyButton as Q, SchmnacyIconButton as ot } from "./button.js";
20
- import { t as st } from "./checkbox-8hNsBejz.js";
21
- import { n as $, r as ct, t as lt } from "./chips-m2NPN480.js";
17
+ import { C as Pe, S as Fe, T as Ie, _ as Le, a as Re, b as ze, c as Be, d as Ve, f as He, g as Ue, h as We, i as Ge, l as Ke, m as qe, n as Je, o as Ye, p as Xe, r as Ze, s as Qe, t as $e, u as et, v as tt, w as nt, x as rt, y as it } from "./src-DnunCC4X.js";
18
+ import { t as at } from "./boat-CNWIQPA1.js";
19
+ import { SchmancyButton as ot, SchmnacyIconButton as st } from "./button.js";
20
+ import { t as ct } from "./checkbox-8hNsBejz.js";
21
+ import { n as Q, r as $, t as lt } from "./chips-D1kJrbzo.js";
22
22
  import { SchmancyConnectivityStatus as ut } from "./connectivity.js";
23
- import { n as dt, t as ft } from "./date-range-D98QcCHl.js";
24
- import { t as pt } from "./date-range-inline-TWWnTZlw.js";
25
- import { SchmancyDelay as mt, delayContext as ht } from "./delay.js";
26
- import { t as gt } from "./details-Cpg8sH2F.js";
27
- import { DISCOVER_EVENT as _t, DISCOVER_RESPONSE_EVENT as vt, discover as yt, discoverAllElements as bt, discoverAnyComponent as xt, discoverComponent as St, discoverElement as Ct } from "./discovery.js";
28
- import { SchmancyDropdown as wt, SchmancyDropdownContent as Tt } from "./dropdown.js";
29
- import { n as Et, t as Dt } from "./surface-DCRy-EyT.js";
30
- import { n as Ot, t as kt } from "./expand-CtoffNNj.js";
31
- import { t as At } from "./overlay-stack-BR4iYivO.js";
32
- import { n as jt, t as Mt } from "./window-DMy5Gsgu.js";
33
- import { t as Nt } from "./float-C-glc-3u.js";
34
- import { n as Pt, r as Ft, t as It } from "./form-DJvxIyfW.js";
35
- import { n as Lt, t as Rt } from "./input-DC6ap_uN.js";
36
- import { n as zt, t as Bt } from "./radio-group-DB9D2ZkA.js";
37
- import { SchmancyRange as Vt } from "./range.js";
38
- import { t as Ht } from "./theme.interface-C2XNgsLB.js";
39
- import { t as Ut } from "./select-UU2pB67h.js";
40
- import { SchmancySwitch as Wt } from "./switch.js";
41
- import { t as Gt } from "./iframe-DAbgW9tT.js";
42
- import { i as Kt, n as qt, r as Jt, t as Yt } from "./notification-DySnvQeO.js";
43
- import { SchmancyJson as Xt } from "./json.js";
44
- import { t as Zt } from "./scroll-C1klVgSQ.js";
45
- import { i as Qt, n as $t, r as en, t as tn } from "./lightbox-CNX9Eg3U.js";
46
- import { n as nn, r as rn, t as an } from "./list-C76Pb-c1.js";
47
- import { SchmancyNavigationRail as on, SchmancyNavigationRailItem as sn } from "./navigation-rail.js";
48
- import { SchmancyPage as cn } from "./page.js";
49
- import { t as ln } from "./rxjs-utils-Dv9T9IpA.js";
50
- import { SchmancySlide as un, SchmancySlider as dn } from "./slider.js";
51
- import { SchmancyStep as fn, SchmancyStepsContainer as pn, StepsController as mn, stepsContext as hn } from "./steps.js";
52
- import { SchmancyDataTable as gn, SchmancyTableRow as _n } from "./table.js";
53
- import { a as vn, c as yn, i as bn, l as xn, n as Sn, o as Cn, r as wn, s as Tn, t as En } from "./theme-BiCwFfCf.js";
54
- import { tooltip as Dn } from "./tooltip.js";
55
- import { SchmancyTree as On } from "./tree.js";
56
- import { SchmancyEvents as kn } from "./types.js";
57
- import { typewriter as An } from "./typewriter.js";
58
- import { SchmancyTypography as jn } from "./typography.js";
59
- import { n as Mn, t as Nn } from "./utils-Cj_nRRyx.js";
60
- import { SchmancyAvatar as Pn } from "./avatar.js";
61
- import { SchmancyBreadcrumb as Fn, SchmancyBreadcrumbItem as In } from "./breadcrumb.js";
62
- import { SchmancyKbd as Ln } from "./kbd.js";
63
- import { SchmancySkeleton as Rn } from "./skeleton.js";
64
- import { SchmancyVisuallyHidden as zn } from "./visually-hidden.js";
65
- export { Xe as $drawer, Jt as $notify, P as $sounds, re as ANIMATION_CSS_VARS, q as BLACKBIRD_EASING, _t as DISCOVER_EVENT, vt as DISCOVER_RESPONSE_EVENT, X as DURATION_BACKDROP, W as DURATION_ENTER, R as DURATION_EXIT, _e as DragDirective, ve as DropDirective, J as EASE_IN, Z as EASE_OUT, N as EmotionalSoundGenerator, r as FINDING_MORTIES, z as GRID_ANIMATION_CSS, b as HERE_RICKY, y as HISTORY_STRATEGY, Je as HereMorty, an as List, Nn as Numbers, Bt as RadioButton, zt as RadioGroup, kt as SCHMANCY_EXPAND_REQUEST_CLOSE, G as SPRING_BOUNCY, ie as SPRING_GENTLE, B as SPRING_SMOOTH, V as SPRING_SNAPPY, nt as ScBadgeV2, t as SchmancyArea, ct as SchmancyAssistChip, Pn as SchmancyAvatar, Ie as SchmancyBadgeV2, at as SchmancyBoat, Fn as SchmancyBreadcrumb, In as SchmancyBreadcrumbItem, Q as SchmancyButton, st as SchmancyCheckbox, $ as SchmancyChip, $ as SchmancyFilterChip, ut as SchmancyConnectivityStatus, Le as SchmancyContentDrawer, tt as SchmancyContentDrawerID, Ue as SchmancyContentDrawerMain, it as SchmancyContentDrawerMaxHeight, ze as SchmancyContentDrawerMinWidth, We as SchmancyContentDrawerSheet, rt as SchmancyContentDrawerSheetMode, Fe as SchmancyContentDrawerSheetState, w as SchmancyContext, gn as SchmancyDataTable, ft as SchmancyDateRange, pt as SchmancyDateRangeInline, mt as SchmancyDelay, gt as SchmancyDetails, He as SchmancyDrawerAppbar, Ke as SchmancyDrawerNavbarMode, et as SchmancyDrawerNavbarState, wt as SchmancyDropdown, Tt as SchmancyDropdownContent, kn as SchmancyEvents, Ot as SchmancyExpandRoot, Nt as SchmancyFloat, Pt as SchmancyForm, It as SchmancyFormSummary, Sn as SchmancyGenerateMoodAudioEvent, Gt as SchmancyIframe, Lt as SchmancyInput, I as SchmancyInputChip, Rt as SchmancyInputCompat, Xt as SchmancyJson, Ln as SchmancyKbd, Qt as SchmancyLightbox, nn as SchmancyListItem, rn as SchmancyListTypeContext, Re as SchmancyNavigationBar, Ye as SchmancyNavigationBarItem, Be as SchmancyNavigationDrawer, Ve as SchmancyNavigationDrawerContent, Qe as SchmancyNavigationDrawerSidebar, on as SchmancyNavigationRail, sn as SchmancyNavigationRailItem, Kt as SchmancyNotification, cn as SchmancyPage, Vt as SchmancyRange, x as SchmancyRoute, Zt as SchmancyScroll, Ut as SchmancySelect, Rn as SchmancySkeleton, un as SchmancySlide, dn as SchmancySlider, fn as SchmancyStep, pn as SchmancyStepsContainer, lt as SchmancySuggestionChip, Dt as SchmancySurface, Et as SchmancySurfaceTypeContext, Wt as SchmancySwitch, _n as SchmancyTableRow, $e as SchmancyTeleportation, Ht as SchmancyTheme, wn as SchmancyThemeAudioPlayer, vn as SchmancyThemeComponent, bn as SchmancyThemeController, En as SchmancyThemeControllerBoat, On as SchmancyTree, jn as SchmancyTypography, zn as SchmancyVisuallyHidden, Mt as SchmancyWindow, ot as SchmnacyIconButton, A as Signal, mn as StepsController, de as ThemeHereIAm, le as ThemeWhereAreYou, Ze as WhereAreYouRicky, te as _activeHost, ye as animateText, e as area, E as bindState, _ as buildQueryString, be as color, f as compareActiveRoutes, h as compareCustomElementConstructors, l as compareRouteActions, O as computed, xe as confirmClick, Y as createAnimation, Tn as createDarkTonalPaletteFromBaseColor, K as createDismissAnimation, yn as createLightTonalPaletteFromBaseColor, U as createRevealAnimation, n as createRouteCacheKey, H as createScaleAnimation, ce as cursorGlow, Se as cycleText, p as debounce, c as decodeData, g as decodeRouteState, i as deepMerge, ht as delayContext, Ce as depthOfField, yt as discover, bt as discoverAllElements, xt as discoverAnyComponent, St as discoverComponent, Ct as discoverElement, we as drag, Te as drop, T as effect, s as encodeData, u as encodeRouteState, v as extractQueryParams, en as flip, Ft as formSubmitState, xn as formatTheme, he as fromResizeObserver, pe as fullHeight, me as fullWidth, L as getEasing, a as getTagName, Ee as gravity, De as intersect, Mn as intersection$, o as isObject, S as lazy, tn as lightbox, $t as lightboxDirective, Oe as liquid, ke as livingBorder, Ae as longPress, ge as magnetic, ln as mutationObserver, je as nebula, m as normalizeTagName, Yt as notify, qt as notifyProgress, C as observe, At as overlayStack, ae as prefersReducedMotion, se as reducedMotion$, Me as reveal, Ne as ripple, ne as routerHistory, d as sanitizeRouteState, Pe as schmancyContentDrawer, qe as schmancyNavDrawer, M as schmancySound, fe as schmancyTheme, F as similarity, j as sound, D as state, k as stateFromObservable, hn as stepsContext, oe as tailwindAnimations, Cn as tailwindStyles, Ge as teleport, ue as theme, ee as themeContext, Dn as tooltip, An as typewriter, dt as validateInitialDateRange, jt as windowManager };
23
+ import { a as dt, i as ft, n as pt, o as mt, r as ht, t as gt } from "./overlay.service-C8NwO4Bx.js";
24
+ import { n as _t, t as vt } from "./date-range-Dv-DM6mB.js";
25
+ import { t as yt } from "./date-range-inline-TWWnTZlw.js";
26
+ import { SchmancyDelay as bt, delayContext as xt } from "./delay.js";
27
+ import { t as St } from "./details-Cpg8sH2F.js";
28
+ import { DISCOVER_EVENT as Ct, DISCOVER_RESPONSE_EVENT as wt, discover as Tt, discoverAllElements as Et, discoverAnyComponent as Dt, discoverComponent as Ot, discoverElement as kt } from "./discovery.js";
29
+ import { SchmancyDropdown as At, SchmancyDropdownContent as jt } from "./dropdown.js";
30
+ import { n as Mt, t as Nt } from "./surface-DCRy-EyT.js";
31
+ import { n as Pt, t as Ft } from "./expand-CtoffNNj.js";
32
+ import { t as It } from "./overlay-stack-BR4iYivO.js";
33
+ import { n as Lt, t as Rt } from "./window-BcvDNi9D.js";
34
+ import { t as zt } from "./float-KmbhaQHA.js";
35
+ import { n as Bt, r as Vt, t as Ht } from "./form-8IcmP8uV.js";
36
+ import { n as Ut, t as Wt } from "./input-DC6ap_uN.js";
37
+ import { n as Gt, t as Kt } from "./radio-group-DB9D2ZkA.js";
38
+ import { SchmancyRange as qt } from "./range.js";
39
+ import { t as Jt } from "./theme.interface-C2XNgsLB.js";
40
+ import { t as Yt } from "./select-UU2pB67h.js";
41
+ import { SchmancySwitch as Xt } from "./switch.js";
42
+ import { t as Zt } from "./iframe-DAbgW9tT.js";
43
+ import { i as Qt, n as $t, r as en, t as tn } from "./notification-eZxtr3NN.js";
44
+ import { SchmancyJson as nn } from "./json.js";
45
+ import { t as rn } from "./scroll-C1klVgSQ.js";
46
+ import { i as an, n as on, r as sn, t as cn } from "./lightbox-CNX9Eg3U.js";
47
+ import { n as ln, r as un, t as dn } from "./list-C76Pb-c1.js";
48
+ import { SchmancyNavigationRail as fn, SchmancyNavigationRailItem as pn } from "./navigation-rail.js";
49
+ import { t as mn } from "./overlay-oxM9OLXP.js";
50
+ import { t as hn } from "./overlay.confirm-body-D_P2e7l6.js";
51
+ import { SchmancyPage as gn } from "./page.js";
52
+ import { t as _n } from "./rxjs-utils-Cs6XGwF6.js";
53
+ import { SchmancySlide as vn, SchmancySlider as yn } from "./slider.js";
54
+ import { SchmancyStep as bn, SchmancyStepsContainer as xn, StepsController as Sn, stepsContext as Cn } from "./steps.js";
55
+ import { SchmancyDataTable as wn, SchmancyTableRow as Tn } from "./table.js";
56
+ import { a as En, c as Dn, i as On, l as kn, n as An, o as jn, r as Mn, s as Nn, t as Pn } from "./theme-CNWRYdfn.js";
57
+ import { tooltip as Fn } from "./tooltip.js";
58
+ import { SchmancyTree as In } from "./tree.js";
59
+ import { SchmancyEvents as Ln } from "./types.js";
60
+ import { typewriter as Rn } from "./typewriter.js";
61
+ import { SchmancyTypography as zn } from "./typography.js";
62
+ import { n as Bn, t as Vn } from "./utils-DXE5fBBd.js";
63
+ import { SchmancyAvatar as Hn } from "./avatar.js";
64
+ import { SchmancyBreadcrumb as Un, SchmancyBreadcrumbItem as Wn } from "./breadcrumb.js";
65
+ import { SchmancyKbd as Gn } from "./kbd.js";
66
+ import { SchmancySkeleton as Kn } from "./skeleton.js";
67
+ import { SchmancyVisuallyHidden as qn } from "./visually-hidden.js";
68
+ export { Xe as $drawer, en as $notify, P as $sounds, re as ANIMATION_CSS_VARS, q as BLACKBIRD_EASING, Ct as DISCOVER_EVENT, wt as DISCOVER_RESPONSE_EVENT, X as DURATION_BACKDROP, W as DURATION_ENTER, R as DURATION_EXIT, _e as DragDirective, ve as DropDirective, J as EASE_IN, Z as EASE_OUT, N as EmotionalSoundGenerator, r as FINDING_MORTIES, z as GRID_ANIMATION_CSS, b as HERE_RICKY, y as HISTORY_STRATEGY, Je as HereMorty, dn as List, Vn as Numbers, Kt as RadioButton, Gt as RadioGroup, Ft as SCHMANCY_EXPAND_REQUEST_CLOSE, G as SPRING_BOUNCY, ie as SPRING_GENTLE, B as SPRING_SMOOTH, V as SPRING_SNAPPY, nt as ScBadgeV2, t as SchmancyArea, $ as SchmancyAssistChip, Hn as SchmancyAvatar, Ie as SchmancyBadgeV2, at as SchmancyBoat, Un as SchmancyBreadcrumb, Wn as SchmancyBreadcrumbItem, ot as SchmancyButton, ct as SchmancyCheckbox, Q as SchmancyChip, Q as SchmancyFilterChip, ut as SchmancyConnectivityStatus, Le as SchmancyContentDrawer, tt as SchmancyContentDrawerID, Ue as SchmancyContentDrawerMain, it as SchmancyContentDrawerMaxHeight, ze as SchmancyContentDrawerMinWidth, We as SchmancyContentDrawerSheet, rt as SchmancyContentDrawerSheetMode, Fe as SchmancyContentDrawerSheetState, w as SchmancyContext, wn as SchmancyDataTable, vt as SchmancyDateRange, yt as SchmancyDateRangeInline, bt as SchmancyDelay, St as SchmancyDetails, He as SchmancyDrawerAppbar, Ke as SchmancyDrawerNavbarMode, et as SchmancyDrawerNavbarState, At as SchmancyDropdown, jt as SchmancyDropdownContent, Ln as SchmancyEvents, Pt as SchmancyExpandRoot, zt as SchmancyFloat, Bt as SchmancyForm, Ht as SchmancyFormSummary, An as SchmancyGenerateMoodAudioEvent, Zt as SchmancyIframe, Ut as SchmancyInput, I as SchmancyInputChip, Wt as SchmancyInputCompat, nn as SchmancyJson, Gn as SchmancyKbd, an as SchmancyLightbox, ln as SchmancyListItem, un as SchmancyListTypeContext, Re as SchmancyNavigationBar, Ye as SchmancyNavigationBarItem, Be as SchmancyNavigationDrawer, Ve as SchmancyNavigationDrawerContent, Qe as SchmancyNavigationDrawerSidebar, fn as SchmancyNavigationRail, pn as SchmancyNavigationRailItem, Qt as SchmancyNotification, mn as SchmancyOverlay, hn as SchmancyOverlayPromptBody, gn as SchmancyPage, qt as SchmancyRange, x as SchmancyRoute, rn as SchmancyScroll, Yt as SchmancySelect, Kn as SchmancySkeleton, vn as SchmancySlide, yn as SchmancySlider, bn as SchmancyStep, xn as SchmancyStepsContainer, lt as SchmancySuggestionChip, Nt as SchmancySurface, Mt as SchmancySurfaceTypeContext, Xt as SchmancySwitch, Tn as SchmancyTableRow, $e as SchmancyTeleportation, Jt as SchmancyTheme, Mn as SchmancyThemeAudioPlayer, En as SchmancyThemeComponent, On as SchmancyThemeController, Pn as SchmancyThemeControllerBoat, In as SchmancyTree, zn as SchmancyTypography, qn as SchmancyVisuallyHidden, Rt as SchmancyWindow, st as SchmnacyIconButton, A as Signal, Sn as StepsController, de as ThemeHereIAm, le as ThemeWhereAreYou, Ze as WhereAreYouRicky, te as _activeHost, ye as animateText, e as area, E as bindState, _ as buildQueryString, be as color, f as compareActiveRoutes, h as compareCustomElementConstructors, l as compareRouteActions, O as computed, gt as confirm, xe as confirmClick, Y as createAnimation, Nn as createDarkTonalPaletteFromBaseColor, K as createDismissAnimation, Dn as createLightTonalPaletteFromBaseColor, U as createRevealAnimation, n as createRouteCacheKey, H as createScaleAnimation, ce as cursorGlow, Se as cycleText, p as debounce, c as decodeData, g as decodeRouteState, i as deepMerge, xt as delayContext, Ce as depthOfField, Tt as discover, Et as discoverAllElements, Dt as discoverAnyComponent, Ot as discoverComponent, kt as discoverElement, pt as dismissAll, we as drag, Te as drop, T as effect, s as encodeData, u as encodeRouteState, v as extractQueryParams, sn as flip, Vt as formSubmitState, kn as formatTheme, he as fromResizeObserver, pe as fullHeight, me as fullWidth, L as getEasing, a as getTagName, Ee as gravity, De as intersect, Bn as intersection$, o as isObject, S as lazy, cn as lightbox, on as lightboxDirective, Oe as liquid, ke as livingBorder, Ae as longPress, ge as magnetic, _n as mutationObserver, je as nebula, m as normalizeTagName, tn as notify, $t as notifyProgress, C as observe, ht as openOverlays$, ft as overlayEvents, It as overlayStack, ae as prefersReducedMotion, dt as prompt, se as reducedMotion$, Me as reveal, Ne as ripple, ne as routerHistory, d as sanitizeRouteState, Pe as schmancyContentDrawer, qe as schmancyNavDrawer, M as schmancySound, fe as schmancyTheme, mt as show, F as similarity, j as sound, D as state, k as stateFromObservable, Cn as stepsContext, oe as tailwindAnimations, jn as tailwindStyles, Ge as teleport, ue as theme, ee as themeContext, Fn as tooltip, Rn as typewriter, _t as validateInitialDateRange, Lt as windowManager };
package/dist/json.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-Du9HMrIG.cjs`),t=require(`./active-host-jH3iloCR.cjs`),n=require(`./notification-yd2KeHjd.cjs`);let r=require(`lit/decorators.js`),i=require(`lit`),a=require(`lit/directives/unsafe-html.js`);var o=class extends e.c{constructor(...e){super(...e),this.data={},this.highlightKeys=[],this.compact=!1}static{this.styles=[i.css`:host { display: block }`]}highlightChanges(e,t){let n=e;return t.forEach(e=>{let t=RegExp(`("${e}":\\s*)([^,\\n}]+)`,`g`);n=n.replace(t,(e,t,n)=>`${t}<span class="text-warning-default font-bold">${n}</span>`)}),n}async copyJSON(){try{await navigator.clipboard.writeText(JSON.stringify(this.data,null,2)),n.r.success(`JSON copied to clipboard`)}catch{n.r.error(`Failed to copy JSON`)}}render(){let e=JSON.stringify(this.data,null,this.compact?0:2),t=this.highlightKeys.length>0?this.highlightChanges(e,this.highlightKeys):e;return i.html`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-Du9HMrIG.cjs`),t=require(`./active-host-jH3iloCR.cjs`),n=require(`./notification-DR3gvWt8.cjs`);let r=require(`lit/decorators.js`),i=require(`lit`),a=require(`lit/directives/unsafe-html.js`);var o=class extends e.c{constructor(...e){super(...e),this.data={},this.highlightKeys=[],this.compact=!1}static{this.styles=[i.css`:host { display: block }`]}highlightChanges(e,t){let n=e;return t.forEach(e=>{let t=RegExp(`("${e}":\\s*)([^,\\n}]+)`,`g`);n=n.replace(t,(e,t,n)=>`${t}<span class="text-warning-default font-bold">${n}</span>`)}),n}async copyJSON(){try{await navigator.clipboard.writeText(JSON.stringify(this.data,null,2)),n.r.success(`JSON copied to clipboard`)}catch{n.r.error(`Failed to copy JSON`)}}render(){let e=JSON.stringify(this.data,null,this.compact?0:2),t=this.highlightKeys.length>0?this.highlightChanges(e,this.highlightKeys):e;return i.html`
2
2
  <div
3
3
  class="bg-surface-container rounded-lg p-2 font-mono overflow-auto cursor-pointer hover:bg-surface-container-high transition-colors"
4
4
  @click=${this.copyJSON}
package/dist/json.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { c as e } from "./mixins-DCVXqL1Q.js";
2
2
  import { a as t } from "./active-host-BP0zy_Y9.js";
3
- import { r as n } from "./notification-DySnvQeO.js";
3
+ import { r as n } from "./notification-eZxtr3NN.js";
4
4
  import { customElement as r, property as i } from "lit/decorators.js";
5
5
  import { css as a, html as o } from "lit";
6
6
  import { unsafeHTML as s } from "lit/directives/unsafe-html.js";
@@ -1 +1 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./theme.service-DkdH1t60.cjs`);let t=require(`rxjs`),n=require(`rxjs/operators`),r=require(`lit/async-directive.js`),i=require(`lit/directive.js`);function a(){let e=window.visualViewport;return!!e&&Math.abs(e.scale-1)>.01}var o=null,s=null,c=0;function l(){if(!o){o=new t.Subject;let e=(0,t.fromEvent)(window,`resize`,{passive:!0});s=(0,t.merge)(e,window.visualViewport?(0,t.merge)((0,t.fromEvent)(window.visualViewport,`resize`,{passive:!0}),(0,t.fromEvent)(window.visualViewport,`scroll`,{passive:!0})):e,(0,t.fromEvent)(window,`orientationchange`),(0,t.fromEvent)(document,`focusout`,{passive:!0}).pipe((0,n.switchMap)(()=>(0,t.timer)(100)))).pipe((0,n.debounceTime)(16)).subscribe(()=>o.next())}return o}function u(){c===0&&s&&(s.unsubscribe(),s=null,o=null)}function d(e){return new t.Observable(t=>{let n=new ResizeObserver(e=>t.next(e));return n.observe(e),()=>n.disconnect()})}var f=class extends r.AsyncDirective{constructor(...e){super(...e),this.element=null,this.disconnecting$=new t.Subject}calculateHeight(){if(!this.element)return 0;let e=window.visualViewport?.height??window.innerHeight,t=this.element.getBoundingClientRect().top;return Math.max(0,e-t)}applyStyles(e,t){this.element&&(this.element.style.boxSizing=`border-box`,this.element.style.height=`${e}px`,this.element.style.paddingBottom=`${t}px`)}setupHeightStream(){if(!this.element)return;let r=this.element;(0,t.combineLatest)([(0,t.merge)(r.parentElement?d(r.parentElement):t.EMPTY,l()).pipe((0,n.startWith)(null)),e.n.bottomOffset$,e.n.fullscreen$]).pipe((0,n.filter)(()=>!a()),(0,n.map)(([,e,t])=>({height:this.calculateHeight(),padding:t?0:e})),(0,n.distinctUntilChanged)((e,t)=>e.height===t.height&&e.padding===t.padding),(0,n.tap)(({height:e,padding:t})=>this.applyStyles(e,t)),(0,n.takeUntil)(this.disconnecting$)).subscribe()}render(){}update(e){if(e.type!==i.PartType.ELEMENT)throw Error(`fullHeight directive can only be used on elements`);let t=e.element;this.element!==t&&(this.element=t,c++,this.setupHeightStream())}disconnected(){this.disconnecting$.next(),c--,u(),this.element=null}reconnected(){this.element&&(c++,this.disconnecting$=new t.Subject,this.setupHeightStream())}},p=(0,i.directive)(f),m=class extends r.AsyncDirective{constructor(...e){super(...e),this.element=null,this.disconnecting$=new t.Subject}calculateWidth(){if(!this.element)return 0;let e=window.visualViewport?.width??window.innerWidth,t=this.element.getBoundingClientRect().left;return Math.max(0,e-t)}applyStyles(e){this.element&&(this.element.style.boxSizing=`border-box`,this.element.style.maxWidth=`${e}px`)}setupWidthStream(){if(!this.element)return;let r=this.element;(0,t.combineLatest)([(0,t.merge)(d(r),r.parentElement?d(r.parentElement):t.EMPTY,l()).pipe((0,n.startWith)(null)),e.n.fullscreen$]).pipe((0,n.filter)(()=>!a()),(0,n.map)(()=>this.calculateWidth()),(0,n.distinctUntilChanged)(),(0,n.tap)(e=>this.applyStyles(e)),(0,n.takeUntil)(this.disconnecting$)).subscribe()}render(){}update(e){if(e.type!==i.PartType.ELEMENT)throw Error(`fullWidth directive can only be used on elements`);let t=e.element;this.element!==t&&(this.element=t,c++,this.setupWidthStream())}disconnected(){this.disconnecting$.next(),c--,u(),this.element=null}reconnected(){this.element&&(c++,this.disconnecting$=new t.Subject,this.setupWidthStream())}},h=(0,i.directive)(m);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return d}});
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./theme.service-CnFUmUpc.cjs`);let t=require(`rxjs`),n=require(`rxjs/operators`),r=require(`lit/async-directive.js`),i=require(`lit/directive.js`);function a(){let e=window.visualViewport;return!!e&&Math.abs(e.scale-1)>.01}var o=null,s=null,c=0;function l(){if(!o){o=new t.Subject;let e=(0,t.fromEvent)(window,`resize`,{passive:!0});s=(0,t.merge)(e,window.visualViewport?(0,t.merge)((0,t.fromEvent)(window.visualViewport,`resize`,{passive:!0}),(0,t.fromEvent)(window.visualViewport,`scroll`,{passive:!0})):e,(0,t.fromEvent)(window,`orientationchange`),(0,t.fromEvent)(document,`focusout`,{passive:!0}).pipe((0,n.switchMap)(()=>(0,t.timer)(100)))).pipe((0,n.debounceTime)(16)).subscribe(()=>o.next())}return o}function u(){c===0&&s&&(s.unsubscribe(),s=null,o=null)}function d(e){return new t.Observable(t=>{let n=new ResizeObserver(e=>t.next(e));return n.observe(e),()=>n.disconnect()})}var f=class extends r.AsyncDirective{constructor(...e){super(...e),this.element=null,this.disconnecting$=new t.Subject}calculateHeight(){if(!this.element)return 0;let e=window.visualViewport?.height??window.innerHeight,t=this.element.getBoundingClientRect().top;return Math.max(0,e-t)}applyStyles(e,t){this.element&&(this.element.style.boxSizing=`border-box`,this.element.style.height=`${e}px`,this.element.style.paddingBottom=`${t}px`)}setupHeightStream(){if(!this.element)return;let r=this.element;(0,t.combineLatest)([(0,t.merge)(r.parentElement?d(r.parentElement):t.EMPTY,l()).pipe((0,n.startWith)(null)),e.n.bottomOffset$,e.n.fullscreen$]).pipe((0,n.filter)(()=>!a()),(0,n.map)(([,e,t])=>({height:this.calculateHeight(),padding:t?0:e})),(0,n.distinctUntilChanged)((e,t)=>e.height===t.height&&e.padding===t.padding),(0,n.tap)(({height:e,padding:t})=>this.applyStyles(e,t)),(0,n.takeUntil)(this.disconnecting$)).subscribe()}render(){}update(e){if(e.type!==i.PartType.ELEMENT)throw Error(`fullHeight directive can only be used on elements`);let t=e.element;this.element!==t&&(this.element=t,c++,this.setupHeightStream())}disconnected(){this.disconnecting$.next(),c--,u(),this.element=null}reconnected(){this.element&&(c++,this.disconnecting$=new t.Subject,this.setupHeightStream())}},p=(0,i.directive)(f),m=class extends r.AsyncDirective{constructor(...e){super(...e),this.element=null,this.disconnecting$=new t.Subject}calculateWidth(){if(!this.element)return 0;let e=window.visualViewport?.width??window.innerWidth,t=this.element.getBoundingClientRect().left;return Math.max(0,e-t)}applyStyles(e){this.element&&(this.element.style.boxSizing=`border-box`,this.element.style.maxWidth=`${e}px`)}setupWidthStream(){if(!this.element)return;let r=this.element;(0,t.combineLatest)([(0,t.merge)(d(r),r.parentElement?d(r.parentElement):t.EMPTY,l()).pipe((0,n.startWith)(null)),e.n.fullscreen$]).pipe((0,n.filter)(()=>!a()),(0,n.map)(()=>this.calculateWidth()),(0,n.distinctUntilChanged)(),(0,n.tap)(e=>this.applyStyles(e)),(0,n.takeUntil)(this.disconnecting$)).subscribe()}render(){}update(e){if(e.type!==i.PartType.ELEMENT)throw Error(`fullWidth directive can only be used on elements`);let t=e.element;this.element!==t&&(this.element=t,c++,this.setupWidthStream())}disconnected(){this.disconnecting$.next(),c--,u(),this.element=null}reconnected(){this.element&&(c++,this.disconnecting$=new t.Subject,this.setupWidthStream())}},h=(0,i.directive)(m);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return d}});
@@ -1 +1 @@
1
- {"version":3,"file":"layout-Delq-QvR.cjs","names":[],"sources":["../src/directives/layout.ts"],"sourcesContent":["import { directive, ElementPart, PartType } from 'lit/directive.js'\nimport { AsyncDirective } from 'lit/async-directive.js'\nimport { Subject, fromEvent, merge, Observable, EMPTY, timer, combineLatest } from 'rxjs'\nimport { debounceTime, switchMap, takeUntil, distinctUntilChanged, map, tap, startWith, filter } from 'rxjs/operators'\n\n/** Returns true if user is pinch-zoomed (scale !== 1) */\nfunction isZoomed(): boolean {\n\tconst vv = window.visualViewport\n\treturn vv ? Math.abs(vv.scale - 1) > 0.01 : false\n}\nimport { theme } from '../theme/theme.service'\n\n// Shared global update stream (lazy-initialized, cleaned up when no elements use it)\nlet update$: Subject<void> | null = null\nlet updateSub: { unsubscribe: () => void } | null = null\nlet elementCount = 0\n\nfunction getUpdateStream(): Subject<void> {\n\tif (!update$) {\n\t\tupdate$ = new Subject<void>()\n\n\t\tconst windowResize$ = fromEvent(window, 'resize', { passive: true })\n\n\t\tconst viewportEvents$ = window.visualViewport\n\t\t\t? merge(\n\t\t\t\t\tfromEvent(window.visualViewport, 'resize', { passive: true }),\n\t\t\t\t\tfromEvent(window.visualViewport, 'scroll', { passive: true })\n\t\t\t\t)\n\t\t\t: windowResize$\n\n\t\tconst orientation$ = fromEvent(window, 'orientationchange')\n\n\t\t// iOS Safari: force recalc after keyboard dismissal\n\t\tconst focusOut$ = fromEvent(document, 'focusout', { passive: true }).pipe(\n\t\t\tswitchMap(() => timer(100))\n\t\t)\n\n\t\tupdateSub = merge(windowResize$, viewportEvents$, orientation$, focusOut$)\n\t\t\t.pipe(debounceTime(16))\n\t\t\t.subscribe(() => update$!.next())\n\t}\n\treturn update$\n}\n\nfunction cleanup() {\n\tif (elementCount === 0 && updateSub) {\n\t\tupdateSub.unsubscribe()\n\t\tupdateSub = null\n\t\tupdate$ = null\n\t}\n}\n\n\n/**\n * RxJS wrapper for ResizeObserver - auto-cleans on unsubscribe\n */\nexport function fromResizeObserver(element: Element): Observable<ResizeObserverEntry[]> {\n\treturn new Observable(subscriber => {\n\t\tconst observer = new ResizeObserver(entries => subscriber.next(entries))\n\t\tobserver.observe(element)\n\t\treturn () => observer.disconnect()\n\t})\n}\n\n/**\n * fullHeight directive - fills remaining viewport space\n *\n * Reactive sources:\n * - Parent ResizeObserver (layout shifts)\n * - Window resize / visualViewport (viewport changes)\n * - Orientation change (device rotation)\n * - Focus out (mobile keyboard dismiss)\n * - Theme fullscreen toggle\n *\n * Performance:\n * - distinctUntilChanged prevents redundant style writes\n * - debounceTime(16) batches rapid events (~60fps)\n * - Single shared stream for global events\n */\nclass FullHeight extends AsyncDirective {\n\tprivate element: HTMLElement | null = null\n\tprivate disconnecting$ = new Subject<void>()\n\n\tprivate calculateHeight(): number {\n\t\tif (!this.element) return 0\n\t\tconst viewportHeight = window.visualViewport?.height ?? window.innerHeight\n\t\tconst topOffset = this.element.getBoundingClientRect().top\n\t\treturn Math.max(0, viewportHeight - topOffset)\n\t}\n\n\tprivate applyStyles(height: number, bottomPadding: number) {\n\t\tif (this.element) {\n\t\t\tthis.element.style.boxSizing = 'border-box'\n\t\t\tthis.element.style.height = `${height}px`\n\t\t\tthis.element.style.paddingBottom = `${bottomPadding}px`\n\t\t}\n\t}\n\n\tprivate setupHeightStream() {\n\t\tif (!this.element) return\n\n\t\tconst element = this.element\n\n\t\t// Parent resize detects layout shifts (e.g., header rendering after load)\n\t\tconst parentResize$ = element.parentElement\n\t\t\t? fromResizeObserver(element.parentElement)\n\t\t\t: EMPTY\n\n\t\t// Global events (resize, viewport, orientation, fullscreen)\n\t\tconst globalEvents$ = getUpdateStream()\n\n\t\t// Combine all sources, calculate height and padding, dedupe, apply\n\t\t// Skip updates while pinch-zoomed to prevent layout thrashing\n\t\tcombineLatest([\n\t\t\tmerge(parentResize$, globalEvents$).pipe(startWith(null)),\n\t\t\ttheme.bottomOffset$,\n\t\t\ttheme.fullscreen$\n\t\t]).pipe(\n\t\t\tfilter(() => !isZoomed()),\n\t\t\tmap(([, bottomOffset, isFullscreen]) => ({\n\t\t\t\theight: this.calculateHeight(),\n\t\t\t\tpadding: isFullscreen ? 0 : bottomOffset\n\t\t\t})),\n\t\t\tdistinctUntilChanged((a, b) => a.height === b.height && a.padding === b.padding),\n\t\t\ttap(({ height, padding }) => this.applyStyles(height, padding)),\n\t\t\ttakeUntil(this.disconnecting$)\n\t\t).subscribe()\n\n\t}\n\n\trender() {\n\t\treturn\n\t}\n\n\tupdate(part: ElementPart) {\n\t\tif (part.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('fullHeight directive can only be used on elements')\n\t\t}\n\t\tconst el = part.element as HTMLElement\n\t\tif (this.element !== el) {\n\t\t\tthis.element = el\n\t\t\telementCount++\n\t\t\tthis.setupHeightStream()\n\t\t}\n\t}\n\n\tdisconnected() {\n\t\tthis.disconnecting$.next()\n\t\telementCount--\n\t\tcleanup()\n\t\tthis.element = null\n\t}\n\n\treconnected() {\n\t\tif (this.element) {\n\t\t\telementCount++\n\t\t\tthis.disconnecting$ = new Subject<void>()\n\t\t\tthis.setupHeightStream()\n\t\t}\n\t}\n}\n\nexport const fullHeight = directive(FullHeight)\n\n/**\n * fullWidth directive - fills remaining horizontal viewport space\n *\n * Reactive sources:\n * - Element ResizeObserver (detects when element moves/resizes)\n * - Parent ResizeObserver (layout shifts, e.g., sidebar)\n * - Window resize / visualViewport (viewport changes)\n * - Orientation change (device rotation)\n * - Theme fullscreen toggle (sidebar visibility)\n *\n * Performance:\n * - distinctUntilChanged prevents redundant style writes\n * - debounceTime(16) batches rapid events (~60fps)\n * - Single shared stream for global events\n */\nclass FullWidth extends AsyncDirective {\n\tprivate element: HTMLElement | null = null\n\tprivate disconnecting$ = new Subject<void>()\n\n\tprivate calculateWidth(): number {\n\t\tif (!this.element) return 0\n\t\tconst viewportWidth = window.visualViewport?.width ?? window.innerWidth\n\t\tconst leftOffset = this.element.getBoundingClientRect().left\n\t\treturn Math.max(0, viewportWidth - leftOffset)\n\t}\n\n\tprivate applyStyles(width: number) {\n\t\tif (this.element) {\n\t\t\tthis.element.style.boxSizing = 'border-box'\n\t\t\tthis.element.style.maxWidth = `${width}px`\n\t\t}\n\t}\n\n\tprivate setupWidthStream() {\n\t\tif (!this.element) return\n\n\t\tconst element = this.element\n\n\t\t// Element resize detects when element itself moves (e.g., after layout settles)\n\t\tconst elementResize$ = fromResizeObserver(element)\n\n\t\t// Parent resize detects layout shifts (e.g., sidebar opening/closing)\n\t\tconst parentResize$ = element.parentElement\n\t\t\t? fromResizeObserver(element.parentElement)\n\t\t\t: EMPTY\n\n\t\t// Global events (resize, viewport, orientation)\n\t\tconst globalEvents$ = getUpdateStream()\n\n\t\t// Combine all sources with theme observables for synchronous initial emission\n\t\t// theme.fullscreen$ has shareReplay(1) ensuring immediate emission on subscribe\n\t\t// Skip updates while pinch-zoomed to prevent layout thrashing\n\t\tcombineLatest([\n\t\t\tmerge(elementResize$, parentResize$, globalEvents$).pipe(startWith(null)),\n\t\t\ttheme.fullscreen$\n\t\t]).pipe(\n\t\t\tfilter(() => !isZoomed()),\n\t\t\tmap(() => this.calculateWidth()),\n\t\t\tdistinctUntilChanged(),\n\t\t\ttap(width => this.applyStyles(width)),\n\t\t\ttakeUntil(this.disconnecting$)\n\t\t).subscribe()\n\t}\n\n\trender() {\n\t\treturn\n\t}\n\n\tupdate(part: ElementPart) {\n\t\tif (part.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('fullWidth directive can only be used on elements')\n\t\t}\n\t\tconst el = part.element as HTMLElement\n\t\tif (this.element !== el) {\n\t\t\tthis.element = el\n\t\t\telementCount++\n\t\t\tthis.setupWidthStream()\n\t\t}\n\t}\n\n\tdisconnected() {\n\t\tthis.disconnecting$.next()\n\t\telementCount--\n\t\tcleanup()\n\t\tthis.element = null\n\t}\n\n\treconnected() {\n\t\tif (this.element) {\n\t\t\telementCount++\n\t\t\tthis.disconnecting$ = new Subject<void>()\n\t\t\tthis.setupWidthStream()\n\t\t}\n\t}\n}\n\nexport const fullWidth = directive(FullWidth)\n"],"mappings":"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"}
1
+ {"version":3,"file":"layout-BbCIfIgo.cjs","names":[],"sources":["../src/directives/layout.ts"],"sourcesContent":["import { directive, ElementPart, PartType } from 'lit/directive.js'\nimport { AsyncDirective } from 'lit/async-directive.js'\nimport { Subject, fromEvent, merge, Observable, EMPTY, timer, combineLatest } from 'rxjs'\nimport { debounceTime, switchMap, takeUntil, distinctUntilChanged, map, tap, startWith, filter } from 'rxjs/operators'\n\n/** Returns true if user is pinch-zoomed (scale !== 1) */\nfunction isZoomed(): boolean {\n\tconst vv = window.visualViewport\n\treturn vv ? Math.abs(vv.scale - 1) > 0.01 : false\n}\nimport { theme } from '../theme/theme.service'\n\n// Shared global update stream (lazy-initialized, cleaned up when no elements use it)\nlet update$: Subject<void> | null = null\nlet updateSub: { unsubscribe: () => void } | null = null\nlet elementCount = 0\n\nfunction getUpdateStream(): Subject<void> {\n\tif (!update$) {\n\t\tupdate$ = new Subject<void>()\n\n\t\tconst windowResize$ = fromEvent(window, 'resize', { passive: true })\n\n\t\tconst viewportEvents$ = window.visualViewport\n\t\t\t? merge(\n\t\t\t\t\tfromEvent(window.visualViewport, 'resize', { passive: true }),\n\t\t\t\t\tfromEvent(window.visualViewport, 'scroll', { passive: true })\n\t\t\t\t)\n\t\t\t: windowResize$\n\n\t\tconst orientation$ = fromEvent(window, 'orientationchange')\n\n\t\t// iOS Safari: force recalc after keyboard dismissal\n\t\tconst focusOut$ = fromEvent(document, 'focusout', { passive: true }).pipe(\n\t\t\tswitchMap(() => timer(100))\n\t\t)\n\n\t\tupdateSub = merge(windowResize$, viewportEvents$, orientation$, focusOut$)\n\t\t\t.pipe(debounceTime(16))\n\t\t\t.subscribe(() => update$!.next())\n\t}\n\treturn update$\n}\n\nfunction cleanup() {\n\tif (elementCount === 0 && updateSub) {\n\t\tupdateSub.unsubscribe()\n\t\tupdateSub = null\n\t\tupdate$ = null\n\t}\n}\n\n\n/**\n * RxJS wrapper for ResizeObserver - auto-cleans on unsubscribe\n */\nexport function fromResizeObserver(element: Element): Observable<ResizeObserverEntry[]> {\n\treturn new Observable(subscriber => {\n\t\tconst observer = new ResizeObserver(entries => subscriber.next(entries))\n\t\tobserver.observe(element)\n\t\treturn () => observer.disconnect()\n\t})\n}\n\n/**\n * fullHeight directive - fills remaining viewport space\n *\n * Reactive sources:\n * - Parent ResizeObserver (layout shifts)\n * - Window resize / visualViewport (viewport changes)\n * - Orientation change (device rotation)\n * - Focus out (mobile keyboard dismiss)\n * - Theme fullscreen toggle\n *\n * Performance:\n * - distinctUntilChanged prevents redundant style writes\n * - debounceTime(16) batches rapid events (~60fps)\n * - Single shared stream for global events\n */\nclass FullHeight extends AsyncDirective {\n\tprivate element: HTMLElement | null = null\n\tprivate disconnecting$ = new Subject<void>()\n\n\tprivate calculateHeight(): number {\n\t\tif (!this.element) return 0\n\t\tconst viewportHeight = window.visualViewport?.height ?? window.innerHeight\n\t\tconst topOffset = this.element.getBoundingClientRect().top\n\t\treturn Math.max(0, viewportHeight - topOffset)\n\t}\n\n\tprivate applyStyles(height: number, bottomPadding: number) {\n\t\tif (this.element) {\n\t\t\tthis.element.style.boxSizing = 'border-box'\n\t\t\tthis.element.style.height = `${height}px`\n\t\t\tthis.element.style.paddingBottom = `${bottomPadding}px`\n\t\t}\n\t}\n\n\tprivate setupHeightStream() {\n\t\tif (!this.element) return\n\n\t\tconst element = this.element\n\n\t\t// Parent resize detects layout shifts (e.g., header rendering after load)\n\t\tconst parentResize$ = element.parentElement\n\t\t\t? fromResizeObserver(element.parentElement)\n\t\t\t: EMPTY\n\n\t\t// Global events (resize, viewport, orientation, fullscreen)\n\t\tconst globalEvents$ = getUpdateStream()\n\n\t\t// Combine all sources, calculate height and padding, dedupe, apply\n\t\t// Skip updates while pinch-zoomed to prevent layout thrashing\n\t\tcombineLatest([\n\t\t\tmerge(parentResize$, globalEvents$).pipe(startWith(null)),\n\t\t\ttheme.bottomOffset$,\n\t\t\ttheme.fullscreen$\n\t\t]).pipe(\n\t\t\tfilter(() => !isZoomed()),\n\t\t\tmap(([, bottomOffset, isFullscreen]) => ({\n\t\t\t\theight: this.calculateHeight(),\n\t\t\t\tpadding: isFullscreen ? 0 : bottomOffset\n\t\t\t})),\n\t\t\tdistinctUntilChanged((a, b) => a.height === b.height && a.padding === b.padding),\n\t\t\ttap(({ height, padding }) => this.applyStyles(height, padding)),\n\t\t\ttakeUntil(this.disconnecting$)\n\t\t).subscribe()\n\n\t}\n\n\trender() {\n\t\treturn\n\t}\n\n\tupdate(part: ElementPart) {\n\t\tif (part.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('fullHeight directive can only be used on elements')\n\t\t}\n\t\tconst el = part.element as HTMLElement\n\t\tif (this.element !== el) {\n\t\t\tthis.element = el\n\t\t\telementCount++\n\t\t\tthis.setupHeightStream()\n\t\t}\n\t}\n\n\tdisconnected() {\n\t\tthis.disconnecting$.next()\n\t\telementCount--\n\t\tcleanup()\n\t\tthis.element = null\n\t}\n\n\treconnected() {\n\t\tif (this.element) {\n\t\t\telementCount++\n\t\t\tthis.disconnecting$ = new Subject<void>()\n\t\t\tthis.setupHeightStream()\n\t\t}\n\t}\n}\n\nexport const fullHeight = directive(FullHeight)\n\n/**\n * fullWidth directive - fills remaining horizontal viewport space\n *\n * Reactive sources:\n * - Element ResizeObserver (detects when element moves/resizes)\n * - Parent ResizeObserver (layout shifts, e.g., sidebar)\n * - Window resize / visualViewport (viewport changes)\n * - Orientation change (device rotation)\n * - Theme fullscreen toggle (sidebar visibility)\n *\n * Performance:\n * - distinctUntilChanged prevents redundant style writes\n * - debounceTime(16) batches rapid events (~60fps)\n * - Single shared stream for global events\n */\nclass FullWidth extends AsyncDirective {\n\tprivate element: HTMLElement | null = null\n\tprivate disconnecting$ = new Subject<void>()\n\n\tprivate calculateWidth(): number {\n\t\tif (!this.element) return 0\n\t\tconst viewportWidth = window.visualViewport?.width ?? window.innerWidth\n\t\tconst leftOffset = this.element.getBoundingClientRect().left\n\t\treturn Math.max(0, viewportWidth - leftOffset)\n\t}\n\n\tprivate applyStyles(width: number) {\n\t\tif (this.element) {\n\t\t\tthis.element.style.boxSizing = 'border-box'\n\t\t\tthis.element.style.maxWidth = `${width}px`\n\t\t}\n\t}\n\n\tprivate setupWidthStream() {\n\t\tif (!this.element) return\n\n\t\tconst element = this.element\n\n\t\t// Element resize detects when element itself moves (e.g., after layout settles)\n\t\tconst elementResize$ = fromResizeObserver(element)\n\n\t\t// Parent resize detects layout shifts (e.g., sidebar opening/closing)\n\t\tconst parentResize$ = element.parentElement\n\t\t\t? fromResizeObserver(element.parentElement)\n\t\t\t: EMPTY\n\n\t\t// Global events (resize, viewport, orientation)\n\t\tconst globalEvents$ = getUpdateStream()\n\n\t\t// Combine all sources with theme observables for synchronous initial emission\n\t\t// theme.fullscreen$ has shareReplay(1) ensuring immediate emission on subscribe\n\t\t// Skip updates while pinch-zoomed to prevent layout thrashing\n\t\tcombineLatest([\n\t\t\tmerge(elementResize$, parentResize$, globalEvents$).pipe(startWith(null)),\n\t\t\ttheme.fullscreen$\n\t\t]).pipe(\n\t\t\tfilter(() => !isZoomed()),\n\t\t\tmap(() => this.calculateWidth()),\n\t\t\tdistinctUntilChanged(),\n\t\t\ttap(width => this.applyStyles(width)),\n\t\t\ttakeUntil(this.disconnecting$)\n\t\t).subscribe()\n\t}\n\n\trender() {\n\t\treturn\n\t}\n\n\tupdate(part: ElementPart) {\n\t\tif (part.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('fullWidth directive can only be used on elements')\n\t\t}\n\t\tconst el = part.element as HTMLElement\n\t\tif (this.element !== el) {\n\t\t\tthis.element = el\n\t\t\telementCount++\n\t\t\tthis.setupWidthStream()\n\t\t}\n\t}\n\n\tdisconnected() {\n\t\tthis.disconnecting$.next()\n\t\telementCount--\n\t\tcleanup()\n\t\tthis.element = null\n\t}\n\n\treconnected() {\n\t\tif (this.element) {\n\t\t\telementCount++\n\t\t\tthis.disconnecting$ = new Subject<void>()\n\t\t\tthis.setupWidthStream()\n\t\t}\n\t}\n}\n\nexport const fullWidth = directive(FullWidth)\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { n as e } from "./theme.service-BOWIT_5k.js";
1
+ import { n as e } from "./theme.service-CSzNkqBB.js";
2
2
  import { EMPTY as t, Observable as n, Subject as r, combineLatest as i, fromEvent as a, merge as o, timer as s } from "rxjs";
3
3
  import { debounceTime as c, distinctUntilChanged as l, filter as u, map as d, startWith as f, switchMap as p, takeUntil as m, tap as h } from "rxjs/operators";
4
4
  import { AsyncDirective as g } from "lit/async-directive.js";
@@ -1 +1 @@
1
- {"version":3,"file":"layout-BH28sKGc.js","names":[],"sources":["../src/directives/layout.ts"],"sourcesContent":["import { directive, ElementPart, PartType } from 'lit/directive.js'\nimport { AsyncDirective } from 'lit/async-directive.js'\nimport { Subject, fromEvent, merge, Observable, EMPTY, timer, combineLatest } from 'rxjs'\nimport { debounceTime, switchMap, takeUntil, distinctUntilChanged, map, tap, startWith, filter } from 'rxjs/operators'\n\n/** Returns true if user is pinch-zoomed (scale !== 1) */\nfunction isZoomed(): boolean {\n\tconst vv = window.visualViewport\n\treturn vv ? Math.abs(vv.scale - 1) > 0.01 : false\n}\nimport { theme } from '../theme/theme.service'\n\n// Shared global update stream (lazy-initialized, cleaned up when no elements use it)\nlet update$: Subject<void> | null = null\nlet updateSub: { unsubscribe: () => void } | null = null\nlet elementCount = 0\n\nfunction getUpdateStream(): Subject<void> {\n\tif (!update$) {\n\t\tupdate$ = new Subject<void>()\n\n\t\tconst windowResize$ = fromEvent(window, 'resize', { passive: true })\n\n\t\tconst viewportEvents$ = window.visualViewport\n\t\t\t? merge(\n\t\t\t\t\tfromEvent(window.visualViewport, 'resize', { passive: true }),\n\t\t\t\t\tfromEvent(window.visualViewport, 'scroll', { passive: true })\n\t\t\t\t)\n\t\t\t: windowResize$\n\n\t\tconst orientation$ = fromEvent(window, 'orientationchange')\n\n\t\t// iOS Safari: force recalc after keyboard dismissal\n\t\tconst focusOut$ = fromEvent(document, 'focusout', { passive: true }).pipe(\n\t\t\tswitchMap(() => timer(100))\n\t\t)\n\n\t\tupdateSub = merge(windowResize$, viewportEvents$, orientation$, focusOut$)\n\t\t\t.pipe(debounceTime(16))\n\t\t\t.subscribe(() => update$!.next())\n\t}\n\treturn update$\n}\n\nfunction cleanup() {\n\tif (elementCount === 0 && updateSub) {\n\t\tupdateSub.unsubscribe()\n\t\tupdateSub = null\n\t\tupdate$ = null\n\t}\n}\n\n\n/**\n * RxJS wrapper for ResizeObserver - auto-cleans on unsubscribe\n */\nexport function fromResizeObserver(element: Element): Observable<ResizeObserverEntry[]> {\n\treturn new Observable(subscriber => {\n\t\tconst observer = new ResizeObserver(entries => subscriber.next(entries))\n\t\tobserver.observe(element)\n\t\treturn () => observer.disconnect()\n\t})\n}\n\n/**\n * fullHeight directive - fills remaining viewport space\n *\n * Reactive sources:\n * - Parent ResizeObserver (layout shifts)\n * - Window resize / visualViewport (viewport changes)\n * - Orientation change (device rotation)\n * - Focus out (mobile keyboard dismiss)\n * - Theme fullscreen toggle\n *\n * Performance:\n * - distinctUntilChanged prevents redundant style writes\n * - debounceTime(16) batches rapid events (~60fps)\n * - Single shared stream for global events\n */\nclass FullHeight extends AsyncDirective {\n\tprivate element: HTMLElement | null = null\n\tprivate disconnecting$ = new Subject<void>()\n\n\tprivate calculateHeight(): number {\n\t\tif (!this.element) return 0\n\t\tconst viewportHeight = window.visualViewport?.height ?? window.innerHeight\n\t\tconst topOffset = this.element.getBoundingClientRect().top\n\t\treturn Math.max(0, viewportHeight - topOffset)\n\t}\n\n\tprivate applyStyles(height: number, bottomPadding: number) {\n\t\tif (this.element) {\n\t\t\tthis.element.style.boxSizing = 'border-box'\n\t\t\tthis.element.style.height = `${height}px`\n\t\t\tthis.element.style.paddingBottom = `${bottomPadding}px`\n\t\t}\n\t}\n\n\tprivate setupHeightStream() {\n\t\tif (!this.element) return\n\n\t\tconst element = this.element\n\n\t\t// Parent resize detects layout shifts (e.g., header rendering after load)\n\t\tconst parentResize$ = element.parentElement\n\t\t\t? fromResizeObserver(element.parentElement)\n\t\t\t: EMPTY\n\n\t\t// Global events (resize, viewport, orientation, fullscreen)\n\t\tconst globalEvents$ = getUpdateStream()\n\n\t\t// Combine all sources, calculate height and padding, dedupe, apply\n\t\t// Skip updates while pinch-zoomed to prevent layout thrashing\n\t\tcombineLatest([\n\t\t\tmerge(parentResize$, globalEvents$).pipe(startWith(null)),\n\t\t\ttheme.bottomOffset$,\n\t\t\ttheme.fullscreen$\n\t\t]).pipe(\n\t\t\tfilter(() => !isZoomed()),\n\t\t\tmap(([, bottomOffset, isFullscreen]) => ({\n\t\t\t\theight: this.calculateHeight(),\n\t\t\t\tpadding: isFullscreen ? 0 : bottomOffset\n\t\t\t})),\n\t\t\tdistinctUntilChanged((a, b) => a.height === b.height && a.padding === b.padding),\n\t\t\ttap(({ height, padding }) => this.applyStyles(height, padding)),\n\t\t\ttakeUntil(this.disconnecting$)\n\t\t).subscribe()\n\n\t}\n\n\trender() {\n\t\treturn\n\t}\n\n\tupdate(part: ElementPart) {\n\t\tif (part.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('fullHeight directive can only be used on elements')\n\t\t}\n\t\tconst el = part.element as HTMLElement\n\t\tif (this.element !== el) {\n\t\t\tthis.element = el\n\t\t\telementCount++\n\t\t\tthis.setupHeightStream()\n\t\t}\n\t}\n\n\tdisconnected() {\n\t\tthis.disconnecting$.next()\n\t\telementCount--\n\t\tcleanup()\n\t\tthis.element = null\n\t}\n\n\treconnected() {\n\t\tif (this.element) {\n\t\t\telementCount++\n\t\t\tthis.disconnecting$ = new Subject<void>()\n\t\t\tthis.setupHeightStream()\n\t\t}\n\t}\n}\n\nexport const fullHeight = directive(FullHeight)\n\n/**\n * fullWidth directive - fills remaining horizontal viewport space\n *\n * Reactive sources:\n * - Element ResizeObserver (detects when element moves/resizes)\n * - Parent ResizeObserver (layout shifts, e.g., sidebar)\n * - Window resize / visualViewport (viewport changes)\n * - Orientation change (device rotation)\n * - Theme fullscreen toggle (sidebar visibility)\n *\n * Performance:\n * - distinctUntilChanged prevents redundant style writes\n * - debounceTime(16) batches rapid events (~60fps)\n * - Single shared stream for global events\n */\nclass FullWidth extends AsyncDirective {\n\tprivate element: HTMLElement | null = null\n\tprivate disconnecting$ = new Subject<void>()\n\n\tprivate calculateWidth(): number {\n\t\tif (!this.element) return 0\n\t\tconst viewportWidth = window.visualViewport?.width ?? window.innerWidth\n\t\tconst leftOffset = this.element.getBoundingClientRect().left\n\t\treturn Math.max(0, viewportWidth - leftOffset)\n\t}\n\n\tprivate applyStyles(width: number) {\n\t\tif (this.element) {\n\t\t\tthis.element.style.boxSizing = 'border-box'\n\t\t\tthis.element.style.maxWidth = `${width}px`\n\t\t}\n\t}\n\n\tprivate setupWidthStream() {\n\t\tif (!this.element) return\n\n\t\tconst element = this.element\n\n\t\t// Element resize detects when element itself moves (e.g., after layout settles)\n\t\tconst elementResize$ = fromResizeObserver(element)\n\n\t\t// Parent resize detects layout shifts (e.g., sidebar opening/closing)\n\t\tconst parentResize$ = element.parentElement\n\t\t\t? fromResizeObserver(element.parentElement)\n\t\t\t: EMPTY\n\n\t\t// Global events (resize, viewport, orientation)\n\t\tconst globalEvents$ = getUpdateStream()\n\n\t\t// Combine all sources with theme observables for synchronous initial emission\n\t\t// theme.fullscreen$ has shareReplay(1) ensuring immediate emission on subscribe\n\t\t// Skip updates while pinch-zoomed to prevent layout thrashing\n\t\tcombineLatest([\n\t\t\tmerge(elementResize$, parentResize$, globalEvents$).pipe(startWith(null)),\n\t\t\ttheme.fullscreen$\n\t\t]).pipe(\n\t\t\tfilter(() => !isZoomed()),\n\t\t\tmap(() => this.calculateWidth()),\n\t\t\tdistinctUntilChanged(),\n\t\t\ttap(width => this.applyStyles(width)),\n\t\t\ttakeUntil(this.disconnecting$)\n\t\t).subscribe()\n\t}\n\n\trender() {\n\t\treturn\n\t}\n\n\tupdate(part: ElementPart) {\n\t\tif (part.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('fullWidth directive can only be used on elements')\n\t\t}\n\t\tconst el = part.element as HTMLElement\n\t\tif (this.element !== el) {\n\t\t\tthis.element = el\n\t\t\telementCount++\n\t\t\tthis.setupWidthStream()\n\t\t}\n\t}\n\n\tdisconnected() {\n\t\tthis.disconnecting$.next()\n\t\telementCount--\n\t\tcleanup()\n\t\tthis.element = null\n\t}\n\n\treconnected() {\n\t\tif (this.element) {\n\t\t\telementCount++\n\t\t\tthis.disconnecting$ = new Subject<void>()\n\t\t\tthis.setupWidthStream()\n\t\t}\n\t}\n}\n\nexport const fullWidth = directive(FullWidth)\n"],"mappings":"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"}
1
+ {"version":3,"file":"layout-Dq2oeOTS.js","names":[],"sources":["../src/directives/layout.ts"],"sourcesContent":["import { directive, ElementPart, PartType } from 'lit/directive.js'\nimport { AsyncDirective } from 'lit/async-directive.js'\nimport { Subject, fromEvent, merge, Observable, EMPTY, timer, combineLatest } from 'rxjs'\nimport { debounceTime, switchMap, takeUntil, distinctUntilChanged, map, tap, startWith, filter } from 'rxjs/operators'\n\n/** Returns true if user is pinch-zoomed (scale !== 1) */\nfunction isZoomed(): boolean {\n\tconst vv = window.visualViewport\n\treturn vv ? Math.abs(vv.scale - 1) > 0.01 : false\n}\nimport { theme } from '../theme/theme.service'\n\n// Shared global update stream (lazy-initialized, cleaned up when no elements use it)\nlet update$: Subject<void> | null = null\nlet updateSub: { unsubscribe: () => void } | null = null\nlet elementCount = 0\n\nfunction getUpdateStream(): Subject<void> {\n\tif (!update$) {\n\t\tupdate$ = new Subject<void>()\n\n\t\tconst windowResize$ = fromEvent(window, 'resize', { passive: true })\n\n\t\tconst viewportEvents$ = window.visualViewport\n\t\t\t? merge(\n\t\t\t\t\tfromEvent(window.visualViewport, 'resize', { passive: true }),\n\t\t\t\t\tfromEvent(window.visualViewport, 'scroll', { passive: true })\n\t\t\t\t)\n\t\t\t: windowResize$\n\n\t\tconst orientation$ = fromEvent(window, 'orientationchange')\n\n\t\t// iOS Safari: force recalc after keyboard dismissal\n\t\tconst focusOut$ = fromEvent(document, 'focusout', { passive: true }).pipe(\n\t\t\tswitchMap(() => timer(100))\n\t\t)\n\n\t\tupdateSub = merge(windowResize$, viewportEvents$, orientation$, focusOut$)\n\t\t\t.pipe(debounceTime(16))\n\t\t\t.subscribe(() => update$!.next())\n\t}\n\treturn update$\n}\n\nfunction cleanup() {\n\tif (elementCount === 0 && updateSub) {\n\t\tupdateSub.unsubscribe()\n\t\tupdateSub = null\n\t\tupdate$ = null\n\t}\n}\n\n\n/**\n * RxJS wrapper for ResizeObserver - auto-cleans on unsubscribe\n */\nexport function fromResizeObserver(element: Element): Observable<ResizeObserverEntry[]> {\n\treturn new Observable(subscriber => {\n\t\tconst observer = new ResizeObserver(entries => subscriber.next(entries))\n\t\tobserver.observe(element)\n\t\treturn () => observer.disconnect()\n\t})\n}\n\n/**\n * fullHeight directive - fills remaining viewport space\n *\n * Reactive sources:\n * - Parent ResizeObserver (layout shifts)\n * - Window resize / visualViewport (viewport changes)\n * - Orientation change (device rotation)\n * - Focus out (mobile keyboard dismiss)\n * - Theme fullscreen toggle\n *\n * Performance:\n * - distinctUntilChanged prevents redundant style writes\n * - debounceTime(16) batches rapid events (~60fps)\n * - Single shared stream for global events\n */\nclass FullHeight extends AsyncDirective {\n\tprivate element: HTMLElement | null = null\n\tprivate disconnecting$ = new Subject<void>()\n\n\tprivate calculateHeight(): number {\n\t\tif (!this.element) return 0\n\t\tconst viewportHeight = window.visualViewport?.height ?? window.innerHeight\n\t\tconst topOffset = this.element.getBoundingClientRect().top\n\t\treturn Math.max(0, viewportHeight - topOffset)\n\t}\n\n\tprivate applyStyles(height: number, bottomPadding: number) {\n\t\tif (this.element) {\n\t\t\tthis.element.style.boxSizing = 'border-box'\n\t\t\tthis.element.style.height = `${height}px`\n\t\t\tthis.element.style.paddingBottom = `${bottomPadding}px`\n\t\t}\n\t}\n\n\tprivate setupHeightStream() {\n\t\tif (!this.element) return\n\n\t\tconst element = this.element\n\n\t\t// Parent resize detects layout shifts (e.g., header rendering after load)\n\t\tconst parentResize$ = element.parentElement\n\t\t\t? fromResizeObserver(element.parentElement)\n\t\t\t: EMPTY\n\n\t\t// Global events (resize, viewport, orientation, fullscreen)\n\t\tconst globalEvents$ = getUpdateStream()\n\n\t\t// Combine all sources, calculate height and padding, dedupe, apply\n\t\t// Skip updates while pinch-zoomed to prevent layout thrashing\n\t\tcombineLatest([\n\t\t\tmerge(parentResize$, globalEvents$).pipe(startWith(null)),\n\t\t\ttheme.bottomOffset$,\n\t\t\ttheme.fullscreen$\n\t\t]).pipe(\n\t\t\tfilter(() => !isZoomed()),\n\t\t\tmap(([, bottomOffset, isFullscreen]) => ({\n\t\t\t\theight: this.calculateHeight(),\n\t\t\t\tpadding: isFullscreen ? 0 : bottomOffset\n\t\t\t})),\n\t\t\tdistinctUntilChanged((a, b) => a.height === b.height && a.padding === b.padding),\n\t\t\ttap(({ height, padding }) => this.applyStyles(height, padding)),\n\t\t\ttakeUntil(this.disconnecting$)\n\t\t).subscribe()\n\n\t}\n\n\trender() {\n\t\treturn\n\t}\n\n\tupdate(part: ElementPart) {\n\t\tif (part.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('fullHeight directive can only be used on elements')\n\t\t}\n\t\tconst el = part.element as HTMLElement\n\t\tif (this.element !== el) {\n\t\t\tthis.element = el\n\t\t\telementCount++\n\t\t\tthis.setupHeightStream()\n\t\t}\n\t}\n\n\tdisconnected() {\n\t\tthis.disconnecting$.next()\n\t\telementCount--\n\t\tcleanup()\n\t\tthis.element = null\n\t}\n\n\treconnected() {\n\t\tif (this.element) {\n\t\t\telementCount++\n\t\t\tthis.disconnecting$ = new Subject<void>()\n\t\t\tthis.setupHeightStream()\n\t\t}\n\t}\n}\n\nexport const fullHeight = directive(FullHeight)\n\n/**\n * fullWidth directive - fills remaining horizontal viewport space\n *\n * Reactive sources:\n * - Element ResizeObserver (detects when element moves/resizes)\n * - Parent ResizeObserver (layout shifts, e.g., sidebar)\n * - Window resize / visualViewport (viewport changes)\n * - Orientation change (device rotation)\n * - Theme fullscreen toggle (sidebar visibility)\n *\n * Performance:\n * - distinctUntilChanged prevents redundant style writes\n * - debounceTime(16) batches rapid events (~60fps)\n * - Single shared stream for global events\n */\nclass FullWidth extends AsyncDirective {\n\tprivate element: HTMLElement | null = null\n\tprivate disconnecting$ = new Subject<void>()\n\n\tprivate calculateWidth(): number {\n\t\tif (!this.element) return 0\n\t\tconst viewportWidth = window.visualViewport?.width ?? window.innerWidth\n\t\tconst leftOffset = this.element.getBoundingClientRect().left\n\t\treturn Math.max(0, viewportWidth - leftOffset)\n\t}\n\n\tprivate applyStyles(width: number) {\n\t\tif (this.element) {\n\t\t\tthis.element.style.boxSizing = 'border-box'\n\t\t\tthis.element.style.maxWidth = `${width}px`\n\t\t}\n\t}\n\n\tprivate setupWidthStream() {\n\t\tif (!this.element) return\n\n\t\tconst element = this.element\n\n\t\t// Element resize detects when element itself moves (e.g., after layout settles)\n\t\tconst elementResize$ = fromResizeObserver(element)\n\n\t\t// Parent resize detects layout shifts (e.g., sidebar opening/closing)\n\t\tconst parentResize$ = element.parentElement\n\t\t\t? fromResizeObserver(element.parentElement)\n\t\t\t: EMPTY\n\n\t\t// Global events (resize, viewport, orientation)\n\t\tconst globalEvents$ = getUpdateStream()\n\n\t\t// Combine all sources with theme observables for synchronous initial emission\n\t\t// theme.fullscreen$ has shareReplay(1) ensuring immediate emission on subscribe\n\t\t// Skip updates while pinch-zoomed to prevent layout thrashing\n\t\tcombineLatest([\n\t\t\tmerge(elementResize$, parentResize$, globalEvents$).pipe(startWith(null)),\n\t\t\ttheme.fullscreen$\n\t\t]).pipe(\n\t\t\tfilter(() => !isZoomed()),\n\t\t\tmap(() => this.calculateWidth()),\n\t\t\tdistinctUntilChanged(),\n\t\t\ttap(width => this.applyStyles(width)),\n\t\t\ttakeUntil(this.disconnecting$)\n\t\t).subscribe()\n\t}\n\n\trender() {\n\t\treturn\n\t}\n\n\tupdate(part: ElementPart) {\n\t\tif (part.type !== PartType.ELEMENT) {\n\t\t\tthrow new Error('fullWidth directive can only be used on elements')\n\t\t}\n\t\tconst el = part.element as HTMLElement\n\t\tif (this.element !== el) {\n\t\t\tthis.element = el\n\t\t\telementCount++\n\t\t\tthis.setupWidthStream()\n\t\t}\n\t}\n\n\tdisconnected() {\n\t\tthis.disconnecting$.next()\n\t\telementCount--\n\t\tcleanup()\n\t\tthis.element = null\n\t}\n\n\treconnected() {\n\t\tif (this.element) {\n\t\t\telementCount++\n\t\t\tthis.disconnecting$ = new Subject<void>()\n\t\t\tthis.setupWidthStream()\n\t\t}\n\t}\n}\n\nexport const fullWidth = directive(FullWidth)\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-Du9HMrIG.cjs`),t=require(`./active-host-jH3iloCR.cjs`),n=require(`./overlay.service-BxtEFFSH.cjs`);let r=require(`rxjs`),i=require(`lit/decorators.js`),a=require(`lit`);var o=class extends e.c{constructor(...e){super(...e),this.dismissParentMenu=()=>{this.dispatchEvent(new CustomEvent(`close`,{bubbles:!0,composed:!0}))}}static{this.styles=[a.css`
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-Du9HMrIG.cjs`),t=require(`./active-host-jH3iloCR.cjs`),n=require(`./overlay.service-DQkGPUY7.cjs`);let r=require(`rxjs`),i=require(`lit/decorators.js`),a=require(`lit`);var o=class extends e.c{constructor(...e){super(...e),this.dismissParentMenu=()=>{this.dispatchEvent(new CustomEvent(`close`,{bubbles:!0,composed:!0}))}}static{this.styles=[a.css`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"menu-Dag0cuWV.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'\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\tprivate dismissParentMenu = (): void => {\n\t\t// Bubbling 'close' is the protocol the overlay `show()` watches; the\n\t\t// enclosing `<schmancy-menu>` opens the menu via `show()` and this\n\t\t// completes the subscription, so the overlay tears itself down.\n\t\tthis.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))\n\t}\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item @click=${this.dismissParentMenu}>\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 { takeUntil } from 'rxjs'\nimport { show } from '../overlay/overlay.service'\n\n/**\n * Menu Component\n *\n * The overlay renders ONLY the raw menu items passed via the default slot.\n * NO <ul> wrapper, NO classes, NO additional markup. The overlay system\n * handles positioning (anchored at the trigger click) and dismissal.\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: `<schmancy-menu-item>` dispatches a bubbling 'close' event on click;\n * the overlay `show()` observable completes and the menu tears down.\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\n * @submit=${(e) => e.target.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))}\n * ></my-settings-form>\n * </schmancy-menu>\n * ```\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 the overlay\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): void => {\n\t\tconst menuItems = this.menuSlot?.assignedElements() || []\n\t\tif (menuItems.length === 0) return\n\n\t\t// Move slot items into a fresh container so the overlay can adopt them\n\t\t// without leaving stale references in our shadow tree.\n\t\tconst overlayContainer = document.createElement('div')\n\t\tmenuItems.forEach(item => overlayContainer.appendChild(item))\n\n\t\t// Anchor at the click so the overlay system positions the menu\n\t\t// adjacent to the trigger; subscription completion (any dismissal —\n\t\t// item click → bubbling 'close', backdrop, Esc, disconnect) restores\n\t\t// the items as light DOM so the next open re-projects them.\n\t\tshow(overlayContainer, { anchor: event })\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tcomplete: () => menuItems.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":"mOAKe,IAAA,EAAA,cAA+B,EAAA,CAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,EAAA,CAAA,KAAA,sBAAA,CAW5C,KAAK,cAAc,IAAI,YAAY,QAAS,CAAE,QAAA,CAAS,EAAM,SAAA,CAAU,EAAA,CAAA,CAAA,EAAA,OAAA,KAAA,OAVxD,CAAC,EAAA,GAAG;;;;GAapB,QAAA,CACC,MAAO,GAAA,IAAI;gCACmB,KAAK,kBAAA;;;iCAjBtB,qBAAA,CAAA,CAAqB,EAAA,CCmCrB,IAAA,EAAA,cAA2B,EAAA,CAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,EAAA,CAAA,KAAA,SAWrB,GAAA,CACnB,IAAM,EAAY,KAAK,UAAU,kBAAA,EAAsB,EAAA,CACvD,GAAI,EAAU,SAAW,EAAG,OAI5B,IAAM,EAAmB,SAAS,cAAc,MAAA,CAChD,EAAU,QAAQ,GAAQ,EAAiB,YAAY,EAAA,CAAA,CAMvD,EAAA,EAAK,EAAkB,CAAE,OAAQ,EAAA,CAAA,CAC/B,MAAA,EAAA,EAAA,WAAe,KAAK,cAAA,CAAA,CACpB,UAAU,CACV,aAAgB,EAAU,QAAQ,GAAQ,KAAK,YAAY,EAAA,CAAA,CAAA,CAAA,EAAA,OAAA,KAAA,OA1B9C,CAAC,EAAA,GAAG;;;;;GA8BpB,QAAA,CACC,MAAO,GAAA,IAAI;iCACoB,KAAK,SAAA;iCACL,KAAK,SAAA;;;;;;;uBA1B9B,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-BqKQ-s0C.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'\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\tprivate dismissParentMenu = (): void => {\n\t\t// Bubbling 'close' is the protocol the overlay `show()` watches; the\n\t\t// enclosing `<schmancy-menu>` opens the menu via `show()` and this\n\t\t// completes the subscription, so the overlay tears itself down.\n\t\tthis.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))\n\t}\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item @click=${this.dismissParentMenu}>\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 { takeUntil } from 'rxjs'\nimport { show } from '../overlay/overlay.service'\n\n/**\n * Menu Component\n *\n * The overlay renders ONLY the raw menu items passed via the default slot.\n * NO <ul> wrapper, NO classes, NO additional markup. The overlay system\n * handles positioning (anchored at the trigger click) and dismissal.\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: `<schmancy-menu-item>` dispatches a bubbling 'close' event on click;\n * the overlay `show()` observable completes and the menu tears down.\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\n * @submit=${(e) => e.target.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))}\n * ></my-settings-form>\n * </schmancy-menu>\n * ```\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 the overlay\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): void => {\n\t\tconst menuItems = this.menuSlot?.assignedElements() || []\n\t\tif (menuItems.length === 0) return\n\n\t\t// Move slot items into a fresh container so the overlay can adopt them\n\t\t// without leaving stale references in our shadow tree.\n\t\tconst overlayContainer = document.createElement('div')\n\t\tmenuItems.forEach(item => overlayContainer.appendChild(item))\n\n\t\t// Anchor at the click so the overlay system positions the menu\n\t\t// adjacent to the trigger; subscription completion (any dismissal —\n\t\t// item click → bubbling 'close', backdrop, Esc, disconnect) restores\n\t\t// the items as light DOM so the next open re-projects them.\n\t\tshow(overlayContainer, { anchor: event })\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tcomplete: () => menuItems.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":"mOAKe,IAAA,EAAA,cAA+B,EAAA,CAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,EAAA,CAAA,KAAA,sBAAA,CAW5C,KAAK,cAAc,IAAI,YAAY,QAAS,CAAE,QAAA,CAAS,EAAM,SAAA,CAAU,EAAA,CAAA,CAAA,EAAA,OAAA,KAAA,OAVxD,CAAC,EAAA,GAAG;;;;GAapB,QAAA,CACC,MAAO,GAAA,IAAI;gCACmB,KAAK,kBAAA;;;iCAjBtB,qBAAA,CAAA,CAAqB,EAAA,CCmCrB,IAAA,EAAA,cAA2B,EAAA,CAAA,CAAA,YAAA,GAAA,EAAA,CAAA,MAAA,GAAA,EAAA,CAAA,KAAA,SAWrB,GAAA,CACnB,IAAM,EAAY,KAAK,UAAU,kBAAA,EAAsB,EAAA,CACvD,GAAI,EAAU,SAAW,EAAG,OAI5B,IAAM,EAAmB,SAAS,cAAc,MAAA,CAChD,EAAU,QAAQ,GAAQ,EAAiB,YAAY,EAAA,CAAA,CAMvD,EAAA,EAAK,EAAkB,CAAE,OAAQ,EAAA,CAAA,CAC/B,MAAA,EAAA,EAAA,WAAe,KAAK,cAAA,CAAA,CACpB,UAAU,CACV,aAAgB,EAAU,QAAQ,GAAQ,KAAK,YAAY,EAAA,CAAA,CAAA,CAAA,EAAA,OAAA,KAAA,OA1B9C,CAAC,EAAA,GAAG;;;;;GA8BpB,QAAA,CACC,MAAO,GAAA,IAAI;iCACoB,KAAK,SAAA;iCACL,KAAK,SAAA;;;;;;;uBA1B9B,mBAAA,CAAA,CAAmB,EAAA,UAAA,WAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eATZ,gBAAA,CAAA,CAAgB,EAAA"}
@@ -1,6 +1,6 @@
1
1
  import { c as e } from "./mixins-DCVXqL1Q.js";
2
2
  import { a as t } from "./active-host-BP0zy_Y9.js";
3
- import { o as n } from "./overlay.service-DV_o_xQ0.js";
3
+ import { o as n } from "./overlay.service-C8NwO4Bx.js";
4
4
  import { takeUntil as r } from "rxjs";
5
5
  import { customElement as i, query as a } from "lit/decorators.js";
6
6
  import { css as o, html as s } from "lit";
@@ -1 +1 @@
1
- {"version":3,"file":"menu-B_-weNpZ.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'\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\tprivate dismissParentMenu = (): void => {\n\t\t// Bubbling 'close' is the protocol the overlay `show()` watches; the\n\t\t// enclosing `<schmancy-menu>` opens the menu via `show()` and this\n\t\t// completes the subscription, so the overlay tears itself down.\n\t\tthis.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))\n\t}\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item @click=${this.dismissParentMenu}>\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 { takeUntil } from 'rxjs'\nimport { show } from '../overlay/overlay.service'\n\n/**\n * Menu Component\n *\n * The overlay renders ONLY the raw menu items passed via the default slot.\n * NO <ul> wrapper, NO classes, NO additional markup. The overlay system\n * handles positioning (anchored at the trigger click) and dismissal.\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: `<schmancy-menu-item>` dispatches a bubbling 'close' event on click;\n * the overlay `show()` observable completes and the menu tears down.\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\n * @submit=${(e) => e.target.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))}\n * ></my-settings-form>\n * </schmancy-menu>\n * ```\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 the overlay\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): void => {\n\t\tconst menuItems = this.menuSlot?.assignedElements() || []\n\t\tif (menuItems.length === 0) return\n\n\t\t// Move slot items into a fresh container so the overlay can adopt them\n\t\t// without leaving stale references in our shadow tree.\n\t\tconst overlayContainer = document.createElement('div')\n\t\tmenuItems.forEach(item => overlayContainer.appendChild(item))\n\n\t\t// Anchor at the click so the overlay system positions the menu\n\t\t// adjacent to the trigger; subscription completion (any dismissal —\n\t\t// item click → bubbling 'close', backdrop, Esc, disconnect) restores\n\t\t// the items as light DOM so the next open re-projects them.\n\t\tshow(overlayContainer, { anchor: event })\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tcomplete: () => menuItems.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":";;;;;;AAKe,IAAA,IAAA,cAA+B,EAAA;CAAA,YAAA,GAAA,GAAA;EAAA,MAAA,GAAA,EAAA,EAAA,KAAA,0BAAA;GAW5C,KAAK,cAAc,IAAI,YAAY,SAAS;IAAE,SAAA,CAAS;IAAM,UAAA,CAAU;IAAA,CAAA,CAAA;;;CAAA;EAAA,KAAA,SAVxD,CAAC,CAAG;;;;;;CAapB,SAAA;EACC,OAAO,CAAI;gCACmB,KAAK,kBAAA;;;;;;OAjBpC,EAAc,qBAAA,CAAA,EAAqB,EAAA;ACmCrB,IAAA,IAAA,cAA2B,EAAA;CAAA,YAAA,GAAA,GAAA;EAAA,MAAA,GAAA,EAAA,EAAA,KAAA,YAWrB,MAAA;GACnB,IAAM,IAAY,KAAK,UAAU,kBAAA,IAAsB,EAAA;GACvD,IAAI,EAAU,WAAW,GAAG;GAI5B,IAAM,IAAmB,SAAS,cAAc,MAAA;GAChD,EAAU,SAAQ,MAAQ,EAAiB,YAAY,EAAA,CAAA,EAMvD,EAAK,GAAkB,EAAE,QAAQ,GAAA,CAAA,CAC/B,KAAK,EAAU,KAAK,cAAA,CAAA,CACpB,UAAU,EACV,gBAAgB,EAAU,SAAQ,MAAQ,KAAK,YAAY,EAAA,CAAA,EAAA,CAAA;;;CAAA;EAAA,KAAA,SA1B9C,CAAC,CAAG;;;;;;;CA8BpB,SAAA;EACC,OAAO,CAAI;iCACoB,KAAK,SAAA;iCACL,KAAK,SAAA;;;;;;;;;;GA1BpC,EAAM,mBAAA,CAAA,EAAmB,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CAT1B,EAAc,gBAAA,CAAA,EAAgB,EAAA"}
1
+ {"version":3,"file":"menu-C5ksITpG.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'\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\tprivate dismissParentMenu = (): void => {\n\t\t// Bubbling 'close' is the protocol the overlay `show()` watches; the\n\t\t// enclosing `<schmancy-menu>` opens the menu via `show()` and this\n\t\t// completes the subscription, so the overlay tears itself down.\n\t\tthis.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))\n\t}\n\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item @click=${this.dismissParentMenu}>\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 { takeUntil } from 'rxjs'\nimport { show } from '../overlay/overlay.service'\n\n/**\n * Menu Component\n *\n * The overlay renders ONLY the raw menu items passed via the default slot.\n * NO <ul> wrapper, NO classes, NO additional markup. The overlay system\n * handles positioning (anchored at the trigger click) and dismissal.\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: `<schmancy-menu-item>` dispatches a bubbling 'close' event on click;\n * the overlay `show()` observable completes and the menu tears down.\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\n * @submit=${(e) => e.target.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }))}\n * ></my-settings-form>\n * </schmancy-menu>\n * ```\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 the overlay\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): void => {\n\t\tconst menuItems = this.menuSlot?.assignedElements() || []\n\t\tif (menuItems.length === 0) return\n\n\t\t// Move slot items into a fresh container so the overlay can adopt them\n\t\t// without leaving stale references in our shadow tree.\n\t\tconst overlayContainer = document.createElement('div')\n\t\tmenuItems.forEach(item => overlayContainer.appendChild(item))\n\n\t\t// Anchor at the click so the overlay system positions the menu\n\t\t// adjacent to the trigger; subscription completion (any dismissal —\n\t\t// item click → bubbling 'close', backdrop, Esc, disconnect) restores\n\t\t// the items as light DOM so the next open re-projects them.\n\t\tshow(overlayContainer, { anchor: event })\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe({\n\t\t\t\tcomplete: () => menuItems.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":";;;;;;AAKe,IAAA,IAAA,cAA+B,EAAA;CAAA,YAAA,GAAA,GAAA;EAAA,MAAA,GAAA,EAAA,EAAA,KAAA,0BAAA;GAW5C,KAAK,cAAc,IAAI,YAAY,SAAS;IAAE,SAAA,CAAS;IAAM,UAAA,CAAU;IAAA,CAAA,CAAA;;;CAAA;EAAA,KAAA,SAVxD,CAAC,CAAG;;;;;;CAapB,SAAA;EACC,OAAO,CAAI;gCACmB,KAAK,kBAAA;;;;;;OAjBpC,EAAc,qBAAA,CAAA,EAAqB,EAAA;ACmCrB,IAAA,IAAA,cAA2B,EAAA;CAAA,YAAA,GAAA,GAAA;EAAA,MAAA,GAAA,EAAA,EAAA,KAAA,YAWrB,MAAA;GACnB,IAAM,IAAY,KAAK,UAAU,kBAAA,IAAsB,EAAA;GACvD,IAAI,EAAU,WAAW,GAAG;GAI5B,IAAM,IAAmB,SAAS,cAAc,MAAA;GAChD,EAAU,SAAQ,MAAQ,EAAiB,YAAY,EAAA,CAAA,EAMvD,EAAK,GAAkB,EAAE,QAAQ,GAAA,CAAA,CAC/B,KAAK,EAAU,KAAK,cAAA,CAAA,CACpB,UAAU,EACV,gBAAgB,EAAU,SAAQ,MAAQ,KAAK,YAAY,EAAA,CAAA,EAAA,CAAA;;;CAAA;EAAA,KAAA,SA1B9C,CAAC,CAAG;;;;;;;CA8BpB,SAAA;EACC,OAAO,CAAI;iCACoB,KAAK,SAAA;iCACL,KAAK,SAAA;;;;;;;;;;GA1BpC,EAAM,mBAAA,CAAA,EAAmB,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CAT1B,EAAc,gBAAA,CAAA,EAAgB,EAAA"}
package/dist/menu.cjs CHANGED
@@ -1 +1 @@
1
- require(`./menu-Dag0cuWV.cjs`);
1
+ require(`./menu-BqKQ-s0C.cjs`);
package/dist/menu.js CHANGED
@@ -1 +1 @@
1
- import "./menu-B_-weNpZ.js";
1
+ import "./menu-C5ksITpG.js";
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-Blm9PNcf.cjs`);exports.$drawer=e.p,Object.defineProperty(exports,`SchmancyDrawerAppbar`,{enumerable:!0,get:function(){return e.f}}),exports.SchmancyDrawerNavbarMode=e.l,exports.SchmancyDrawerNavbarState=e.u,Object.defineProperty(exports,`SchmancyNavigationDrawer`,{enumerable:!0,get:function(){return e.c}}),Object.defineProperty(exports,`SchmancyNavigationDrawerContent`,{enumerable:!0,get:function(){return e.d}}),Object.defineProperty(exports,`SchmancyNavigationDrawerSidebar`,{enumerable:!0,get:function(){return e.s}}),exports.schmancyNavDrawer=e.m;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-BIlD63Cz.cjs`);exports.$drawer=e.p,Object.defineProperty(exports,`SchmancyDrawerAppbar`,{enumerable:!0,get:function(){return e.f}}),exports.SchmancyDrawerNavbarMode=e.l,exports.SchmancyDrawerNavbarState=e.u,Object.defineProperty(exports,`SchmancyNavigationDrawer`,{enumerable:!0,get:function(){return e.c}}),Object.defineProperty(exports,`SchmancyNavigationDrawerContent`,{enumerable:!0,get:function(){return e.d}}),Object.defineProperty(exports,`SchmancyNavigationDrawerSidebar`,{enumerable:!0,get:function(){return e.s}}),exports.schmancyNavDrawer=e.m;
@@ -1,2 +1,2 @@
1
- import { c as e, d as t, f as n, l as r, m as i, p as a, s as o, u as s } from "./src-olrlFt4e.js";
1
+ import { c as e, d as t, f as n, l as r, m as i, p as a, s as o, u as s } from "./src-DnunCC4X.js";
2
2
  export { a as $drawer, n as SchmancyDrawerAppbar, r as SchmancyDrawerNavbarMode, s as SchmancyDrawerNavbarState, e as SchmancyNavigationDrawer, t as SchmancyNavigationDrawerContent, o as SchmancyNavigationDrawerSidebar, i as schmancyNavDrawer };
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-Blm9PNcf.cjs`);Object.defineProperty(exports,`SchmancyNavigationBar`,{enumerable:!0,get:function(){return e.a}}),Object.defineProperty(exports,`SchmancyNavigationBarItem`,{enumerable:!0,get:function(){return e.o}});
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-BIlD63Cz.cjs`);Object.defineProperty(exports,`SchmancyNavigationBar`,{enumerable:!0,get:function(){return e.a}}),Object.defineProperty(exports,`SchmancyNavigationBarItem`,{enumerable:!0,get:function(){return e.o}});
@@ -1,2 +1,2 @@
1
- import { a as e, o as t } from "./src-olrlFt4e.js";
1
+ import { a as e, o as t } from "./src-DnunCC4X.js";
2
2
  export { e as SchmancyNavigationBar, t as SchmancyNavigationBarItem };
@@ -1,4 +1,4 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-Du9HMrIG.cjs`),t=require(`./active-host-jH3iloCR.cjs`),n=require(`./audio-D-TZzpXF.cjs`);require(`./progress-CMSst_2U.cjs`);let r=require(`rxjs`),i=require(`rxjs/operators`),a=require(`lit/decorators.js`),o=require(`lit`);var s=class extends e.c{constructor(...e){super(...e),this.title=``,this.message=``,this.type=`info`,this.closable=!0,this.duration=5e3,this.id=`notification-${Date.now()}-${Math.floor(1e4*Math.random())}`,this.playSound=!0,this.showProgress=!1,this.startPosition={x:0,y:0},this._visible=!0,this._progress=100,this._hovered=!1,this._closing=!1,this.paused$=new r.BehaviorSubject(!1),this.startTime=0,this.pausedAt=0,this.elapsedBeforePause=0}static{this.styles=[(0,o.unsafeCSS)(`:host{display:block}.notification{background:var(--schmancy-sys-color-surface-container);border-radius:var(--schmancy-sys-shape-corner-extraLarge,16px);color:var(--schmancy-sys-color-surface-on);--notification-glow-color:var(--schmancy-sys-color-primary-default);max-width:320px;box-shadow:0 4px 24px -6px color-mix(in srgb, var(--notification-glow-color) 18%, transparent);align-items:flex-start;gap:10px;padding:12px 32px 12px 12px;transition:box-shadow .3s,transform .3s cubic-bezier(.34,1.56,.64,1);display:flex;position:relative;overflow:hidden}.notification.info{--notification-glow-color:var(--schmancy-sys-color-primary-default)}.notification.success{--notification-glow-color:var(--schmancy-sys-color-success-default)}.notification.warning{--notification-glow-color:var(--schmancy-sys-color-warning-default)}.notification.error{--notification-glow-color:var(--schmancy-sys-color-error-default)}.notification.hovered{box-shadow:0 8px 32px -4px color-mix(in srgb, var(--notification-glow-color) 28%, transparent);transform:translateY(-2px)}@media (prefers-reduced-motion:reduce){.notification{transition:box-shadow .2s}.notification.hovered{transform:none}}.emoji{flex-shrink:0;margin-top:1px;font-size:20px;line-height:1}.content{flex:1;min-width:0}.title{letter-spacing:.01em;margin-bottom:2px;font-size:13px;font-weight:500;line-height:1.4}.info .title{color:var(--schmancy-sys-color-primary-default)}.success .title{color:var(--schmancy-sys-color-success-default)}.warning .title{color:var(--schmancy-sys-color-tertiary-default)}.error .title{color:var(--schmancy-sys-color-error-default)}.message{opacity:.75;letter-spacing:.01em;font-size:13px;line-height:1.4}.close{color:var(--schmancy-sys-color-surface-onVariant);cursor:pointer;opacity:.4;border-radius:var(--schmancy-sys-shape-corner-full,50%);background:0 0;border:none;padding:4px 6px;font-size:16px;font-weight:300;line-height:1;transition:opacity .2s;position:absolute;top:8px;right:6px}.close:hover{opacity:.8}.close:focus-visible{opacity:1;box-shadow:0 0 0 2px var(--schmancy-sys-color-primary-default), 0 0 8px -2px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 25%, transparent);outline:none}.progress{position:absolute;bottom:0;left:0;right:0}`)]}connectedCallback(){super.connectedCallback(),this.style.position=`fixed`,this.style.top=`16px`,this.style.right=`16px`,this.style.zIndex=`10001`,this.style.opacity=`0`,this.updateComplete.then(()=>{this.animateIn()}),this.duration>0&&(this.setupAutoClose(),this.setupProgressUpdates()),this.playSound&&this._playSound()}async animateIn(){let e=this.getBoundingClientRect(),t=e.left+e.width/2,n=e.top+e.height/2,r=function(e,t,n=`up`,r=.3){let i=(e.x+t.x)/2,a=(e.y+t.y)/2,o=Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2),s=Math.min(o*r,150);return{x:i,y:n===`up`?a-s:a+s}}(this.startPosition,{x:t,y:n},`up`,.3);await this.animate([{transform:`translate(${this.startPosition.x-t}px, ${this.startPosition.y-n}px) scale(0.1)`,opacity:0},{transform:`translate(${r.x-t}px, ${r.y-n}px) scale(0.6)`,opacity:.9,offset:.5},{transform:`translate(0, 0) scale(1)`,opacity:1}],{duration:400,easing:`cubic-bezier(0.34, 1.2, 0.64, 1)`,fill:`forwards`}).finished}setupAutoClose(){this.duration<=0||(this.startTime=Date.now(),this.elapsedBeforePause=0,this.paused$.pipe((0,i.switchMap)(e=>{if(e)return this.pausedAt=Date.now(),this.elapsedBeforePause+=this.pausedAt-this.startTime,r.NEVER;{this.startTime=Date.now();let e=this.duration-this.elapsedBeforePause;return e<=0?(this.close(),r.NEVER):(0,r.timer)(e)}}),(0,i.takeUntil)(this.disconnecting)).subscribe(()=>this.close()))}setupProgressUpdates(){this.duration<=0||(0,r.interval)(16).pipe((0,i.switchMap)(()=>this.paused$.pipe((0,i.map)(e=>{if(e)return this._progress;let t=this.elapsedBeforePause+(Date.now()-this.startTime);return Math.max(0,this.duration-t)/this.duration*100}))),(0,i.distinctUntilChanged)(),(0,i.tap)(e=>{this._progress=e}),(0,i.takeUntil)(this.disconnecting)).subscribe()}_playSound(){this.dispatchEvent(new CustomEvent(`playsound`,{detail:{type:this.type},bubbles:!0,composed:!0}))}_handleMouseEnter(){this._hovered=!0,this.paused$.next(!0)}_handleMouseLeave(){this._hovered=!1,this.paused$.next(!1)}async close(){this._closing||(this._closing=!0,this._visible=!1,await this.animate([{transform:`translate(0, 0) scale(1)`,opacity:1},{transform:`translate(0, -20px) scale(0.8)`,opacity:0}],{duration:200,easing:`cubic-bezier(0.4, 0, 1, 1)`,fill:`forwards`}).finished,this.dispatchEvent(new CustomEvent(`close`,{detail:{id:this.id},bubbles:!0,composed:!0})))}_getEmoji(){switch(this.type){case`success`:return`✅`;case`warning`:return`⚠️`;case`error`:return`❌`;default:return`💡`}}render(){return!this._visible&&this._closing?o.html``:o.html`
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./mixins-Du9HMrIG.cjs`),t=require(`./active-host-jH3iloCR.cjs`),n=require(`./audio-Cvmemu84.cjs`);require(`./progress-CMSst_2U.cjs`);let r=require(`rxjs`),i=require(`rxjs/operators`),a=require(`lit/decorators.js`),o=require(`lit`);var s=class extends e.c{constructor(...e){super(...e),this.title=``,this.message=``,this.type=`info`,this.closable=!0,this.duration=5e3,this.id=`notification-${Date.now()}-${Math.floor(1e4*Math.random())}`,this.playSound=!0,this.showProgress=!1,this.startPosition={x:0,y:0},this._visible=!0,this._progress=100,this._hovered=!1,this._closing=!1,this.paused$=new r.BehaviorSubject(!1),this.startTime=0,this.pausedAt=0,this.elapsedBeforePause=0}static{this.styles=[(0,o.unsafeCSS)(`:host{display:block}.notification{background:var(--schmancy-sys-color-surface-container);border-radius:var(--schmancy-sys-shape-corner-extraLarge,16px);color:var(--schmancy-sys-color-surface-on);--notification-glow-color:var(--schmancy-sys-color-primary-default);max-width:320px;box-shadow:0 4px 24px -6px color-mix(in srgb, var(--notification-glow-color) 18%, transparent);align-items:flex-start;gap:10px;padding:12px 32px 12px 12px;transition:box-shadow .3s,transform .3s cubic-bezier(.34,1.56,.64,1);display:flex;position:relative;overflow:hidden}.notification.info{--notification-glow-color:var(--schmancy-sys-color-primary-default)}.notification.success{--notification-glow-color:var(--schmancy-sys-color-success-default)}.notification.warning{--notification-glow-color:var(--schmancy-sys-color-warning-default)}.notification.error{--notification-glow-color:var(--schmancy-sys-color-error-default)}.notification.hovered{box-shadow:0 8px 32px -4px color-mix(in srgb, var(--notification-glow-color) 28%, transparent);transform:translateY(-2px)}@media (prefers-reduced-motion:reduce){.notification{transition:box-shadow .2s}.notification.hovered{transform:none}}.emoji{flex-shrink:0;margin-top:1px;font-size:20px;line-height:1}.content{flex:1;min-width:0}.title{letter-spacing:.01em;margin-bottom:2px;font-size:13px;font-weight:500;line-height:1.4}.info .title{color:var(--schmancy-sys-color-primary-default)}.success .title{color:var(--schmancy-sys-color-success-default)}.warning .title{color:var(--schmancy-sys-color-tertiary-default)}.error .title{color:var(--schmancy-sys-color-error-default)}.message{opacity:.75;letter-spacing:.01em;font-size:13px;line-height:1.4}.close{color:var(--schmancy-sys-color-surface-onVariant);cursor:pointer;opacity:.4;border-radius:var(--schmancy-sys-shape-corner-full,50%);background:0 0;border:none;padding:4px 6px;font-size:16px;font-weight:300;line-height:1;transition:opacity .2s;position:absolute;top:8px;right:6px}.close:hover{opacity:.8}.close:focus-visible{opacity:1;box-shadow:0 0 0 2px var(--schmancy-sys-color-primary-default), 0 0 8px -2px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 25%, transparent);outline:none}.progress{position:absolute;bottom:0;left:0;right:0}`)]}connectedCallback(){super.connectedCallback(),this.style.position=`fixed`,this.style.top=`16px`,this.style.right=`16px`,this.style.zIndex=`10001`,this.style.opacity=`0`,this.updateComplete.then(()=>{this.animateIn()}),this.duration>0&&(this.setupAutoClose(),this.setupProgressUpdates()),this.playSound&&this._playSound()}async animateIn(){let e=this.getBoundingClientRect(),t=e.left+e.width/2,n=e.top+e.height/2,r=function(e,t,n=`up`,r=.3){let i=(e.x+t.x)/2,a=(e.y+t.y)/2,o=Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2),s=Math.min(o*r,150);return{x:i,y:n===`up`?a-s:a+s}}(this.startPosition,{x:t,y:n},`up`,.3);await this.animate([{transform:`translate(${this.startPosition.x-t}px, ${this.startPosition.y-n}px) scale(0.1)`,opacity:0},{transform:`translate(${r.x-t}px, ${r.y-n}px) scale(0.6)`,opacity:.9,offset:.5},{transform:`translate(0, 0) scale(1)`,opacity:1}],{duration:400,easing:`cubic-bezier(0.34, 1.2, 0.64, 1)`,fill:`forwards`}).finished}setupAutoClose(){this.duration<=0||(this.startTime=Date.now(),this.elapsedBeforePause=0,this.paused$.pipe((0,i.switchMap)(e=>{if(e)return this.pausedAt=Date.now(),this.elapsedBeforePause+=this.pausedAt-this.startTime,r.NEVER;{this.startTime=Date.now();let e=this.duration-this.elapsedBeforePause;return e<=0?(this.close(),r.NEVER):(0,r.timer)(e)}}),(0,i.takeUntil)(this.disconnecting)).subscribe(()=>this.close()))}setupProgressUpdates(){this.duration<=0||(0,r.interval)(16).pipe((0,i.switchMap)(()=>this.paused$.pipe((0,i.map)(e=>{if(e)return this._progress;let t=this.elapsedBeforePause+(Date.now()-this.startTime);return Math.max(0,this.duration-t)/this.duration*100}))),(0,i.distinctUntilChanged)(),(0,i.tap)(e=>{this._progress=e}),(0,i.takeUntil)(this.disconnecting)).subscribe()}_playSound(){this.dispatchEvent(new CustomEvent(`playsound`,{detail:{type:this.type},bubbles:!0,composed:!0}))}_handleMouseEnter(){this._hovered=!0,this.paused$.next(!0)}_handleMouseLeave(){this._hovered=!1,this.paused$.next(!1)}async close(){this._closing||(this._closing=!0,this._visible=!1,await this.animate([{transform:`translate(0, 0) scale(1)`,opacity:1},{transform:`translate(0, -20px) scale(0.8)`,opacity:0}],{duration:200,easing:`cubic-bezier(0.4, 0, 1, 1)`,fill:`forwards`}).finished,this.dispatchEvent(new CustomEvent(`close`,{detail:{id:this.id},bubbles:!0,composed:!0})))}_getEmoji(){switch(this.type){case`success`:return`✅`;case`warning`:return`⚠️`;case`error`:return`❌`;default:return`💡`}}render(){return!this._visible&&this._closing?o.html``:o.html`
2
2
  <div
3
3
  class="notification ${this.type} ${this._closing?`closing`:``} ${this._hovered?`hovered`:``}"
4
4
  role="alert"