@ecopages/radiant-ui 0.1.0-beta.3 → 0.1.0-beta.6

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 (185) hide show
  1. package/dist/components/ui/autocomplete/autocomplete.css +135 -0
  2. package/dist/components/ui/autocomplete/autocomplete.d.ts +21 -0
  3. package/dist/components/ui/autocomplete/autocomplete.script.d.ts +42 -0
  4. package/dist/components/ui/autocomplete/index.d.ts +2 -0
  5. package/dist/components/ui/autocomplete/index.js +2 -0
  6. package/dist/components/ui/autocomplete/index.js.map +7 -0
  7. package/dist/components/ui/avatar/avatar.css +58 -0
  8. package/dist/components/ui/avatar/avatar.d.ts +13 -0
  9. package/dist/components/ui/avatar/index.d.ts +1 -0
  10. package/dist/components/ui/avatar/index.js +2 -0
  11. package/dist/components/ui/avatar/index.js.map +7 -0
  12. package/dist/components/ui/button-group/button-group.css +16 -0
  13. package/dist/components/ui/button-group/button-group.d.ts +10 -0
  14. package/dist/components/ui/button-group/index.d.ts +1 -0
  15. package/dist/components/ui/button-group/index.js +2 -0
  16. package/dist/components/ui/button-group/index.js.map +7 -0
  17. package/dist/components/ui/calendar/calendar.css +318 -0
  18. package/dist/components/ui/calendar/calendar.d.ts +5 -0
  19. package/dist/components/ui/calendar/calendar.script.d.ts +89 -0
  20. package/dist/components/ui/calendar/index.d.ts +2 -0
  21. package/dist/components/ui/calendar/index.js +2 -0
  22. package/dist/components/ui/calendar/index.js.map +7 -0
  23. package/dist/components/ui/chip/chip.css +47 -0
  24. package/dist/components/ui/chip/chip.d.ts +11 -0
  25. package/dist/components/ui/chip/index.d.ts +1 -0
  26. package/dist/components/ui/chip/index.js +2 -0
  27. package/dist/components/ui/chip/index.js.map +7 -0
  28. package/dist/components/ui/chip-list/chip-list.css +15 -0
  29. package/dist/components/ui/chip-list/chip-list.d.ts +10 -0
  30. package/dist/components/ui/chip-list/index.d.ts +1 -0
  31. package/dist/components/ui/chip-list/index.js +2 -0
  32. package/dist/components/ui/chip-list/index.js.map +7 -0
  33. package/dist/components/ui/combobox/combobox.css +42 -80
  34. package/dist/components/ui/combobox/combobox.d.ts +12 -20
  35. package/dist/components/ui/combobox/combobox.script.d.ts +15 -14
  36. package/dist/components/ui/combobox/index.d.ts +2 -1
  37. package/dist/components/ui/combobox/index.js +1 -1
  38. package/dist/components/ui/combobox/index.js.map +4 -4
  39. package/dist/components/ui/date-field/date-field.css +184 -0
  40. package/dist/components/ui/date-field/date-field.d.ts +10 -0
  41. package/dist/components/ui/date-field/date-field.script.d.ts +108 -0
  42. package/dist/components/ui/date-field/index.d.ts +2 -0
  43. package/dist/components/ui/date-field/index.js +2 -0
  44. package/dist/components/ui/date-field/index.js.map +7 -0
  45. package/dist/components/ui/date-range-picker/date-range-picker.css +194 -0
  46. package/dist/components/ui/date-range-picker/date-range-picker.d.ts +10 -0
  47. package/dist/components/ui/date-range-picker/date-range-picker.script.d.ts +99 -0
  48. package/dist/components/ui/date-range-picker/index.d.ts +2 -0
  49. package/dist/components/ui/date-range-picker/index.js +2 -0
  50. package/dist/components/ui/date-range-picker/index.js.map +7 -0
  51. package/dist/components/ui/dialog/dialog.css +1 -1
  52. package/dist/components/ui/feed/feed.css +169 -5
  53. package/dist/components/ui/feed/feed.d.ts +54 -11
  54. package/dist/components/ui/feed/index.d.ts +1 -2
  55. package/dist/components/ui/feed/index.js +1 -1
  56. package/dist/components/ui/feed/index.js.map +4 -4
  57. package/dist/components/ui/field/index.js +1 -1
  58. package/dist/components/ui/field/index.js.map +3 -3
  59. package/dist/components/ui/form/form-field.test.d.ts +1 -0
  60. package/dist/components/ui/form/index.js +1 -1
  61. package/dist/components/ui/form/index.js.map +3 -3
  62. package/dist/components/ui/heading/heading.css +107 -0
  63. package/dist/components/ui/heading/heading.d.ts +30 -0
  64. package/dist/components/ui/heading/index.d.ts +1 -0
  65. package/dist/components/ui/heading/index.js +2 -0
  66. package/dist/components/ui/heading/index.js.map +7 -0
  67. package/dist/components/ui/headline/headline.css +43 -0
  68. package/dist/components/ui/headline/headline.d.ts +16 -0
  69. package/dist/components/ui/headline/index.d.ts +1 -0
  70. package/dist/components/ui/headline/index.js +2 -0
  71. package/dist/components/ui/headline/index.js.map +7 -0
  72. package/dist/components/ui/input/index.js +1 -1
  73. package/dist/components/ui/input/index.js.map +4 -4
  74. package/dist/components/ui/input/input.d.ts +8 -1
  75. package/dist/components/ui/label/index.js +1 -1
  76. package/dist/components/ui/label/index.js.map +2 -2
  77. package/dist/components/ui/listbox/index.d.ts +1 -1
  78. package/dist/components/ui/listbox/index.js +1 -1
  79. package/dist/components/ui/listbox/index.js.map +4 -4
  80. package/dist/components/ui/listbox/listbox.css +34 -10
  81. package/dist/components/ui/listbox/listbox.d.ts +12 -4
  82. package/dist/components/ui/listbox/listbox.script.d.ts +12 -0
  83. package/dist/components/ui/menu-button/index.js +1 -1
  84. package/dist/components/ui/menu-button/index.js.map +4 -4
  85. package/dist/components/ui/menu-button/menu-button.css +24 -8
  86. package/dist/components/ui/menu-button/menu-button.script.d.ts +3 -4
  87. package/dist/components/ui/menubar/index.js +1 -1
  88. package/dist/components/ui/menubar/index.js.map +4 -4
  89. package/dist/components/ui/menubar/menubar.css +40 -22
  90. package/dist/components/ui/menubar/menubar.script.d.ts +6 -1
  91. package/dist/components/ui/number-field/index.d.ts +2 -0
  92. package/dist/components/ui/number-field/index.js +2 -0
  93. package/dist/components/ui/number-field/index.js.map +7 -0
  94. package/dist/components/ui/number-field/number-field.css +185 -0
  95. package/dist/components/ui/number-field/number-field.d.ts +43 -0
  96. package/dist/components/ui/number-field/number-field.script.d.ts +104 -0
  97. package/dist/components/ui/popover/index.d.ts +4 -0
  98. package/dist/components/ui/popover/index.js +2 -0
  99. package/dist/components/ui/popover/index.js.map +7 -0
  100. package/dist/components/ui/popover/popover.css +132 -0
  101. package/dist/components/ui/popover/popover.d.ts +15 -0
  102. package/dist/components/ui/popover/popover.script.d.ts +85 -0
  103. package/dist/components/ui/select/index.d.ts +3 -0
  104. package/dist/components/ui/select/index.js +2 -0
  105. package/dist/components/ui/select/index.js.map +7 -0
  106. package/dist/components/ui/select/select.css +216 -0
  107. package/dist/components/ui/select/select.d.ts +54 -0
  108. package/dist/components/ui/select/select.script.d.ts +106 -0
  109. package/dist/components/ui/shared/collection-navigation.d.ts +8 -0
  110. package/dist/components/ui/shared/collection-navigation.test.d.ts +1 -0
  111. package/dist/components/ui/shared/control-toggle.css +132 -0
  112. package/dist/components/ui/shared/field-label.d.ts +9 -0
  113. package/dist/components/ui/shared/floating-position.d.ts +13 -2
  114. package/dist/components/ui/shared/listbox-popover-behavior.d.ts +47 -0
  115. package/dist/components/ui/shared/listbox-popover-behavior.test.d.ts +1 -0
  116. package/dist/components/ui/shared/multi-value.d.ts +4 -0
  117. package/dist/components/ui/shared/popover-controller.d.ts +35 -0
  118. package/dist/components/ui/shared/popover-controller.test.d.ts +1 -0
  119. package/dist/components/ui/shared/popover.css +123 -0
  120. package/dist/components/ui/shared/portal.d.ts +7 -0
  121. package/dist/components/ui/shared/portal.test.d.ts +1 -0
  122. package/dist/components/ui/sidebar/index.js +1 -1
  123. package/dist/components/ui/sidebar/index.js.map +3 -3
  124. package/dist/components/ui/slider/index.js +1 -1
  125. package/dist/components/ui/slider/index.js.map +3 -3
  126. package/dist/components/ui/slider/slider.script.d.ts +5 -12
  127. package/dist/components/ui/tag-group/index.d.ts +2 -0
  128. package/dist/components/ui/tag-group/index.js +2 -0
  129. package/dist/components/ui/tag-group/index.js.map +7 -0
  130. package/dist/components/ui/tag-group/tag-group.css +184 -0
  131. package/dist/components/ui/tag-group/tag-group.d.ts +28 -0
  132. package/dist/components/ui/tag-group/tag-group.script.d.ts +65 -0
  133. package/dist/components/ui/textarea/index.js +1 -1
  134. package/dist/components/ui/textarea/index.js.map +2 -2
  135. package/dist/components/ui/toc/index.js +1 -1
  136. package/dist/components/ui/toc/index.js.map +3 -3
  137. package/dist/components/ui/toc/toc.css +1 -1
  138. package/dist/components/ui/toc/toc.ssr.test.d.ts +1 -0
  139. package/dist/components/ui/toc/toc.test.d.ts +1 -0
  140. package/dist/components/ui/tooltip/index.js +1 -1
  141. package/dist/components/ui/tooltip/index.js.map +3 -3
  142. package/dist/index.d.ts +14 -1
  143. package/dist/index.js +1 -1
  144. package/dist/index.js.map +4 -4
  145. package/dist/lib/icons/calendar.d.ts +3 -0
  146. package/dist/lib/icons/chevron-down.d.ts +3 -0
  147. package/dist/lib/icons/index.d.ts +3 -0
  148. package/dist/lib/icons/types.d.ts +4 -0
  149. package/dist/lib/intl/locale.d.ts +3 -0
  150. package/dist/lib/intl-date/calendar.d.ts +25 -0
  151. package/dist/lib/intl-date/formatters.d.ts +13 -0
  152. package/dist/lib/intl-date/index.d.ts +12 -0
  153. package/dist/lib/intl-date/iso.d.ts +6 -0
  154. package/dist/lib/intl-date/months.d.ts +12 -0
  155. package/dist/lib/intl-date/parts.d.ts +15 -0
  156. package/dist/lib/intl-date/parts.test.d.ts +1 -0
  157. package/dist/lib/intl-date/segments.d.ts +32 -0
  158. package/dist/lib/intl-date/segments.test.d.ts +1 -0
  159. package/dist/lib/intl-date/selection.d.ts +39 -0
  160. package/dist/lib/intl-date/selection.test.d.ts +1 -0
  161. package/dist/lib/intl-date/types.d.ts +17 -0
  162. package/dist/lib/intl-number/format.d.ts +9 -0
  163. package/dist/lib/intl-number/index.d.ts +2 -0
  164. package/dist/lib/intl-number/range.d.ts +3 -0
  165. package/dist/lib/intrinsic.d.ts +13 -0
  166. package/dist/lib/mask/date-mask.d.ts +29 -0
  167. package/dist/lib/mask/date-mask.test.d.ts +1 -0
  168. package/dist/lib/mask/index.d.ts +4 -0
  169. package/dist/lib/mask/input-mask.d.ts +52 -0
  170. package/dist/lib/mask/input-mask.test.d.ts +1 -0
  171. package/dist/lib/text-filter.d.ts +7 -0
  172. package/dist/lib/text-filter.test.d.ts +1 -0
  173. package/dist/styles/radiant-ui-core.css +131 -1
  174. package/dist/styles/radiant-ui.css +142 -1
  175. package/dist/styles/styles.css +4504 -2395
  176. package/dist/styles/tailwind.css +142 -1
  177. package/dist/styles/tokens/typography/default.css +8 -0
  178. package/package.json +106 -15
  179. package/dist/components/ui/feed/feed.script.d.ts +0 -22
  180. package/dist/components/ui/spinbutton/index.d.ts +0 -2
  181. package/dist/components/ui/spinbutton/index.js +0 -2
  182. package/dist/components/ui/spinbutton/index.js.map +0 -7
  183. package/dist/components/ui/spinbutton/spinbutton.css +0 -69
  184. package/dist/components/ui/spinbutton/spinbutton.d.ts +0 -5
  185. package/dist/components/ui/spinbutton/spinbutton.script.d.ts +0 -64
@@ -5,21 +5,18 @@ rui-listbox {
5
5
  }
6
6
  @layer components {
7
7
  .rui-listbox {
8
+ display: grid;
8
9
  max-height: calc(var(--spacing, 0.25rem) * 60);
10
+ gap: calc(var(--spacing, 0.25rem) * 0.5);
9
11
  overflow: auto;
12
+ background-color: var(--color-background, var(--background));
13
+ padding: var(--spacing-1, var(--space-1));
14
+ }
15
+ .rui-listbox--bordered {
10
16
  border-radius: var(--radius-container, var(--radius-container));
11
17
  border-style: var(--tw-border-style);
12
18
  border-width: 1px;
13
19
  border-color: var(--color-border, var(--border));
14
- background-color: var(--color-background, var(--background));
15
- @media (forced-colors: active) {
16
- background-image: none;
17
- }
18
- background-image: var(--sheen-image);
19
- @media (forced-colors: active) {
20
- background-image: none;
21
- }
22
- padding: var(--spacing-1, var(--space-1));
23
20
  }
24
21
  .rui-listbox__option {
25
22
  cursor: pointer;
@@ -28,8 +25,20 @@ rui-listbox {
28
25
  padding-block: var(--spacing-2, var(--space-2));
29
26
  font-size: var(--text-sm, var(--text-sm));
30
27
  line-height: var(--tw-leading, var(--text-sm--line-height, calc(1.25 / 0.875)));
28
+ color: var(--color-on-background, var(--on-background));
31
29
  }
32
- .rui-listbox__option[aria-selected='true'] {
30
+ .rui-listbox__option[aria-disabled='true'] {
31
+ cursor: not-allowed;
32
+ opacity: var(--opacity-muted, var(--opacity-muted));
33
+ }
34
+ .rui-listbox__option:hover:not([aria-disabled='true']):not([data-active]):not([aria-selected='true']) {
35
+ background-color: var(--color-surface-container-low, var(--surface-container-low));
36
+ }
37
+ .rui-listbox__option[data-active]:not([aria-selected='true']):not([aria-disabled='true']) {
38
+ background-color: var(--color-surface-container, var(--surface-container));
39
+ color: var(--color-on-background, var(--on-background));
40
+ }
41
+ .rui-listbox__option[aria-selected='true']:not([aria-disabled='true']) {
33
42
  background-color: var(--color-primary, var(--primary));
34
43
  @media (forced-colors: active) {
35
44
  background-image: none;
@@ -40,13 +49,28 @@ rui-listbox {
40
49
  }
41
50
  color: var(--color-on-primary, var(--on-primary));
42
51
  }
52
+ .rui-listbox__option[aria-selected='true'][data-active]:not([aria-disabled='true']) {
53
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
54
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
55
+ --tw-ring-color: var(--color-on-primary, var(--on-primary));
56
+ @supports (color: color-mix(in lab, red, red)) {
57
+ --tw-ring-color: color-mix(in oklab, var(--color-on-primary, var(--on-primary)) 40%, transparent);
58
+ }
59
+ --tw-ring-inset: inset;
60
+ }
43
61
  .rui-listbox__option:focus-visible {
62
+ background-color: var(--color-surface-container, var(--surface-container));
44
63
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
45
64
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
46
65
  --tw-ring-color: var(--color-focus-ring, var(--focus-ring));
47
66
  --tw-outline-style: none;
48
67
  outline-style: none;
49
68
  }
69
+ .rui-listbox__option[aria-selected='true']:focus-visible {
70
+ background-color: var(--color-primary, var(--primary));
71
+ color: var(--color-on-primary, var(--on-primary));
72
+ --tw-ring-color: var(--color-focus-ring, var(--focus-ring));
73
+ }
50
74
  }
51
75
  @property --tw-border-style {
52
76
  syntax: "*";
@@ -1,11 +1,19 @@
1
- import type { JsxHtmlProps, JsxRenderable } from '@ecopages/jsx';
1
+ import type { JsxHtmlPropsWithChildren, JsxRenderable } from '@ecopages/jsx';
2
2
  import type { RuiListboxProps } from './listbox.script';
3
- export type RuiListboxOption = {
3
+ export type RuiListboxOptionProps = JsxHtmlPropsWithChildren<{
4
+ value: string;
5
+ /** Text used for accessibility and parent display when selected. Defaults to `children` text. */
6
+ label?: string;
7
+ disabled?: boolean;
8
+ }>;
9
+ /** Option placed inside `RuiListbox`. */
10
+ export declare function RuiListboxOption({ value, label, children, class: className, disabled, ...props }: RuiListboxOptionProps): JsxRenderable;
11
+ export type RuiListboxOptionData = {
4
12
  value: string;
5
13
  label: JsxRenderable;
6
14
  disabled?: boolean;
7
15
  };
8
- export declare const RuiListbox: import("@/lib/radiant-view").RadiantViewComponent<JsxHtmlProps<RuiListboxProps & {
16
+ export declare const RuiListbox: import("@/lib/radiant-view").RadiantViewComponent<JsxHtmlPropsWithChildren<RuiListboxProps & {
9
17
  slot?: string;
10
- options: RuiListboxOption[];
18
+ options?: RuiListboxOptionData[];
11
19
  }>>;
@@ -4,6 +4,14 @@ export type RuiListboxProps = {
4
4
  value?: string;
5
5
  label?: string;
6
6
  disabled?: boolean;
7
+ /**
8
+ * When true, the listbox is owned by a parent (e.g. `rui-select`). Selection and
9
+ * keyboard interaction are handled by the parent; border chrome is omitted so the
10
+ * parent popup can provide it.
11
+ */
12
+ embedded?: boolean;
13
+ /** When set, overrides the default border (`true` when standalone, `false` when embedded). */
14
+ bordered?: boolean;
7
15
  };
8
16
  export type RuiListboxChangeDetail = {
9
17
  value: string;
@@ -25,6 +33,8 @@ export declare class RuiListbox extends RadiantElement<RuiListboxBindings> {
25
33
  value: string;
26
34
  label: string;
27
35
  disabled: boolean;
36
+ embedded: boolean;
37
+ bordered: boolean | undefined;
28
38
  changeEvent: EventEmitter<RuiListboxChangeDetail>;
29
39
  private readonly resolvedAriaLabel;
30
40
  private readonly resolvedAriaDisabled;
@@ -35,6 +45,8 @@ export declare class RuiListbox extends RadiantElement<RuiListboxBindings> {
35
45
  private select;
36
46
  onOptionClick(event: Event): void;
37
47
  onOptionKeydown(event: KeyboardEvent): void;
48
+ private isBordered;
49
+ private syncPresentation;
38
50
  render(): import("@ecopages/jsx").JsxRenderable;
39
51
  }
40
52
  export {};
@@ -1,2 +1,2 @@
1
- import{jsx as L,jsxs as Tt}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as kt,bound as Gt,customElement as Xt,event as Mt,onEvent as S,onUpdated as Yt,prop as Ot,query as It}from"@ecopages/radiant";var Ft={top:"bottom",bottom:"top",left:"right",right:"left"},jt=8;function Bt(e){let t=e.indexOf("-");if(t===-1)return{side:e,align:"center"};let n=e.slice(0,t),i=e.slice(t+1);return{side:n,align:i==="start"||i==="end"?i:"center"}}function at(e){return e==="top"||e==="bottom"?"y":"x"}function ot(e,t,n,i,r){let{width:a,height:c}=t,o=0,h=0;switch(n){case"top":h=e.top-c-r;break;case"bottom":h=e.bottom+r;break;case"left":o=e.left-a-r;break;case"right":o=e.right+r;break}return at(n)==="y"?i==="start"?o=e.left:i==="end"?o=e.right-a:o=e.left+(e.width-a)/2:i==="start"?h=e.top:i==="end"?h=e.bottom-c:h=e.top+(e.height-c)/2,{x:o,y:h}}function Vt(e,t,n,i){let{padding:r,width:a,height:c}=i;return n==="top"?Math.max(0,r-e.y):n==="bottom"?Math.max(0,e.y+t.height-(c-r)):n==="left"?Math.max(0,r-e.x):Math.max(0,e.x+t.width-(a-r))}function st(e,t,n,i){let{padding:r,width:a,height:c}=i;return n==="top"?e.top-r-t.height:n==="bottom"?c-r-t.height-e.bottom:n==="left"?e.left-r-t.width:a-r-t.width-e.right}function Lt(e,t,n,i){let{padding:r,width:a,height:c}=i;if(at(n)==="y"){let h=Math.max(r,a-r-t.width);return{x:Math.min(Math.max(e.x,r),h),y:e.y}}let o=Math.max(r,c-r-t.height);return{x:e.x,y:Math.min(Math.max(e.y,r),o)}}function Ut(e,t,n,i,r={width:typeof window>"u"?0:window.innerWidth,height:typeof window>"u"?0:window.innerHeight,padding:jt}){let{side:a,align:c}=Bt(n),o=ot(e,t,a,c,i),h=Vt(o,t,a,r),O=a,E=o;if(h>0){let T=Ft[a],k=ot(e,t,T,c,i),R=st(e,t,a,r);st(e,t,T,r)>R&&(O=T,E=k)}return Lt(E,t,O,r)}function Kt(e,t,n,i){let r=Ut(e.getBoundingClientRect(),{width:t.offsetWidth,height:t.offsetHeight},n,i);Object.assign(t.style,{position:"fixed",left:`${r.x}px`,top:`${r.y}px`,right:"auto",bottom:"auto",visibility:"visible"})}function ut({anchor:e,floating:t,getPlacement:n,gap:i}){let r=()=>{t.hidden||Kt(e,t,n(),i)};r(),window.addEventListener("resize",r),window.addEventListener("scroll",r,!0);let a=new ResizeObserver(r);return a.observe(e),a.observe(t),()=>{window.removeEventListener("resize",r),window.removeEventListener("scroll",r,!0),a.disconnect()}}var ct,lt,ft,dt,ht,pt,gt,mt,bt,yt,vt,wt,_t,xt;function Pt(e,t,n,i,r,a){var c,o,h,O,E,T,k,R=Symbol.metadata||Symbol.for("Symbol.metadata"),K=Object.defineProperty,P=Object.create,Y=[P(null),P(null)],H=t.length;function C(s,b,g){return function(u,l){b&&(l=u,u=e);for(var y=0;y<s.length;y++)l=s[y].apply(u,g?[l]:[]);return g?l:u}}function _(s,b,g,u){if(typeof s!="function"&&(u||s!==void 0))throw new TypeError(b+" must "+(g||"be")+" a function"+(u?"":" or undefined"));return s}function J(s,b,g,u,l,y,M,m,v,w,Z){function W(d){if(!Z(d))throw new TypeError("Attempted to access private element on non-instance")}var q=[].concat(b[0]),N=b[3],$=!M,D=l===1,z=l===3,tt=l===4,F=l===2;function j(d,I,it){return function(V,rt){return I&&(rt=V,V=s),it&&it(V),f[d].call(V,rt)}}if(!$){var f={},G=[],x=z?"get":tt||D?"set":"value";if(v?(w||D?f={get:Et(function(){return N(this)},u,"get"),set:function(d){b[4](this,d)}}:f[x]=N,w||Et(f[x],u,F?"":x)):w||(f=Object.getOwnPropertyDescriptor(s,u)),!w&&!v){if((o=Y[+m][u])&&(o^l)!==7)throw Error("Decorating two elements with the same name ("+f[x].name+") is not supported yet");Y[+m][u]=l<3?1:l}}for(var p=s,B=q.length-1;B>=0;B-=g?2:1){var et=_(q[B],"A decorator","be",!0),nt=g?q[B-1]:void 0,X={},A={kind:["field","accessor","method","getter","setter","class"][l],name:u,metadata:c,addInitializer:function(d,I){if(d.v)throw new TypeError("attempted to call addInitializer after decoration was finished");_(I,"An initializer","be",!0),y.push(I)}.bind(null,X)};if($)o=et.call(nt,p,A),X.v=1,_(o,"class decorators","return")&&(p=o);else if(A.static=m,A.private=v,o=A.access={has:v?Z.bind():function(d){return u in d}},tt||(o.get=v?F?function(d){return W(d),f.value}:j("get",0,W):function(d){return d[u]}),F||z||(o.set=v?j("set",0,W):function(d,I){d[u]=I}),p=et.call(nt,D?{get:f.get,set:f.set}:f[x],A),X.v=1,D){if(typeof p=="object"&&p)(o=_(p.get,"accessor.get"))&&(f.get=o),(o=_(p.set,"accessor.set"))&&(f.set=o),(o=_(p.init,"accessor.init"))&&G.unshift(o);else if(p!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else _(p,(w?"field":"method")+" decorators","return")&&(w?G.unshift(p):f[x]=p)}return l<2&&M.push(C(G,m,1),C(y,m,0)),w||$||(v?D?M.splice(-1,0,j("get",m),j("set",m)):M.push(F?f[x]:_.call.bind(f[x])):K(s,u,f)),p}function Q(s){return K(s,R,{configurable:!0,enumerable:!0,value:c})}return a!==void 0&&(c=a[R]),c=P(c??null),E=[],T=function(s){s&&E.push(C(s))},k=function(s,b){for(var g=0;g<n.length;g++){var u=n[g],l=u[1],y=7&l;if((8&l)==s&&!y==b){var M=u[2],m=!!u[3],v=16&l;J(s?e:e.prototype,u,v,m?"#"+M:Wt(M),y,y<2?[]:s?O=O||[]:h=h||[],E,!!s,m,b,s&&m?function(w){return $t(w)===e}:r)}}},k(8,0),k(0,0),k(8,1),k(0,1),T(h),T(O),o=E,H||Q(e),{e:o,get c(){var s=[];return H&&[Q(e=J(e,[t],i,e.name,5,s)),C(s,1)]}}}function Wt(e){var t=qt(e,"string");return typeof t=="symbol"?t:t+""}function qt(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var i=n.call(e,t||"default");if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Et(e,t,n){typeof t=="symbol"&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:n?n+" "+t:t})}catch{}return e}function $t(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(e!==null?typeof e:"null"));return e}var Ht=6,U,Dt=class extends kt{static{({e:[ft,dt,ht,pt,gt,mt,bt,yt,vt,wt,_t,xt,ct],c:[U,lt]}=Pt(this,[Xt("rui-menu-button")],[[Ot({type:Boolean,reflect:!0,defaultValue:!1}),0,"open"],[Ot({type:String,defaultValue:"bottom-start"}),0,"placement"],[It({ref:"trigger"}),0,"triggerTarget"],[It({ref:"menu"}),0,"menuTarget"],[Mt({name:"rui-change",bubbles:!0,composed:!0}),0,"changeEvent"],[Mt({name:"rui-close",bubbles:!0,composed:!0}),0,"closeEvent"],[[Gt,Yt(["open","placement"])],2,"syncOpenState"],[S({document:!0,type:"click"}),2,"onDocumentClick"],[S({ref:"trigger",type:"click"}),2,"onTriggerClick"],[S({ref:"trigger",type:"keydown"}),2,"onTriggerKeydown"],[S({ref:"menu",type:"keydown"}),2,"onMenuKeydown"],[S({selector:'[role="menuitem"]',type:"click"}),2,"onItemClick"]],0,void 0,kt))}open=(ct(this),ft(this));placement=(dt(this),ht(this));triggerTarget=(pt(this),gt(this));menuTarget=(mt(this),bt(this));changeEvent=(yt(this),vt(this));closeEvent=(wt(this),_t(this));menuId=(xt(this),`rui-menu-${Math.random().toString(36).slice(2,9)}`);cleanupFloating=null;pendingFocus=null;connectedCallback(){super.connectedCallback(),queueMicrotask(()=>this.syncOpenState())}disconnectedCallback(){this.teardownFloating(),super.disconnectedCallback()}getItems(){return Array.from(this.menuTarget?.querySelectorAll('[role="menuitem"]')??[]).filter(t=>t.getAttribute("aria-disabled")!=="true")}teardownFloating(){this.cleanupFloating?.(),this.cleanupFloating=null}attachFloating(){!this.triggerTarget||!this.menuTarget||(this.teardownFloating(),this.cleanupFloating=ut({anchor:this.triggerTarget,floating:this.menuTarget,getPlacement:()=>this.placement,gap:Ht}))}syncOpenState(){if(!this.triggerTarget||!this.menuTarget)return;this.menuTarget.id=this.menuId,this.triggerTarget.setAttribute("aria-controls",this.menuId),this.triggerTarget.setAttribute("aria-haspopup","menu"),this.triggerTarget.setAttribute("aria-expanded",String(this.open)),this.menuTarget.hidden=!this.open,this.open?this.attachFloating():this.teardownFloating();let t=this.pendingFocus;if(this.pendingFocus=null,!!t){if(t==="first"&&this.getItems()[0]?.focus(),t==="last"){let n=this.getItems();n[n.length-1]?.focus()}t==="trigger"&&this.triggerTarget?.focus()}}setOpen(t,n=null){let i=this.open;this.pendingFocus=n,this.open=t,i&&!t&&this.closeEvent.emit(),i===t&&this.syncOpenState()}onDocumentClick(t){if(!this.open)return;let n=t.target;this.triggerTarget?.contains(n)||this.menuTarget?.contains(n)||this.setOpen(!1)}onTriggerClick(){this.setOpen(!this.open,this.open?null:"first")}onTriggerKeydown(t){switch(t.key){case"ArrowDown":case"Enter":case" ":t.preventDefault(),this.setOpen(!0,"first");break;case"ArrowUp":t.preventDefault(),this.setOpen(!0,"last");break;default:break}}onMenuKeydown(t){let n=this.getItems(),i=document.activeElement,r=i?n.indexOf(i):-1;switch(t.key){case"ArrowDown":{t.preventDefault(),n[(r+1)%n.length]?.focus();break}case"ArrowUp":{t.preventDefault(),n[(r-1+n.length)%n.length]?.focus();break}case"Home":t.preventDefault(),n[0]?.focus();break;case"End":t.preventDefault(),n[n.length-1]?.focus();break;case"Escape":t.preventDefault(),this.setOpen(!1,"trigger");break;case"Tab":this.setOpen(!1);break;case"Enter":case" ":i&&n.includes(i)&&(t.preventDefault(),this.activateItem(i));break;default:break}}onItemClick(t){let n=t.target.closest('[role="menuitem"]');!n||!this.contains(n)||this.activateItem(n)}activateItem(t){let n=t.getAttribute("data-value")||t.textContent?.trim()||"";this.changeEvent.emit({value:n}),this.setOpen(!1,"trigger")}render(){return Tt("div",{class:"rui-menu-button",children:[Tt("button",{type:"button","data-ref":"trigger",class:"rui-button rui-button--primary rui-button--md rui-menu-button__trigger","aria-haspopup":"menu","aria-expanded":"false",children:[L("slot",{name:"trigger"}),L("span",{class:"rui-menu-button__chevron","aria-hidden":"true"})]}),L("div",{"data-ref":"menu",class:"rui-menu-button__menu rui-floating",role:"menu",hidden:!0,children:L("slot",{})})]})}static{lt()}};import{jsx as Ct,jsxs as Zt}from"@ecopages/jsx/jsx-runtime";var Jt=Symbol.for("@ecopages/storybook-radiant.viewElement"),At=Symbol.for("@ecopages/storybook-radiant.scriptModule"),St=Symbol.for("@ecopages/storybook-radiant.scriptExport");function Qt(e,t){e[Jt]=t;let n=t[At];n&&(e[At]=n,e[St]=t[St]??t.name)}function Rt(e,t,n){let i=r=>t(r);return Qt(i,e),i}var Nt=Rt(U,({trigger:e,items:t,...n})=>Zt("rui-menu-button",{...n,children:[Ct("span",{slot:"trigger",children:e}),t.map(i=>Ct("button",{type:"button",class:"rui-menu-button__item",role:"menuitem","data-value":i.value,"aria-disabled":i.disabled?"true":void 0,tabindex:-1,children:i.label}))]}),{stylesheets:["./menu-button.css"]});export{Nt as RuiMenuButton,U as RuiMenuButtonElement};
1
+ import{jsx as W,jsxs as Ct}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as Dt,bound as Nt,customElement as Qt,event as Mt,onEvent as I,onUpdated as Zt,prop as It,query as St}from"@ecopages/radiant";var Ht={top:"bottom",bottom:"top",left:"right",right:"left"},Wt=8;function Vt(e){let t=e.indexOf("-");if(t===-1)return{side:e,align:"center"};let n=e.slice(0,t),r=e.slice(t+1);return{side:n,align:r==="start"||r==="end"?r:"center"}}function ut(e){return e==="top"||e==="bottom"?"y":"x"}function st(e,t,n,r,i){let{width:o,height:a}=t,s=0,d=0;switch(n){case"top":d=e.top-a-i;break;case"bottom":d=e.bottom+i;break;case"left":s=e.left-o-i;break;case"right":s=e.right+i;break}return ut(n)==="y"?r==="start"?s=e.left:r==="end"?s=e.right-o:s=e.left+(e.width-o)/2:r==="start"?d=e.top:r==="end"?d=e.bottom-a:d=e.top+(e.height-a)/2,{x:s,y:d}}function Lt(e,t,n,r){let{padding:i,width:o,height:a}=r;return n==="top"?Math.max(0,i-e.y):n==="bottom"?Math.max(0,e.y+t.height-(a-i)):n==="left"?Math.max(0,i-e.x):Math.max(0,e.x+t.width-(o-i))}function at(e,t,n,r){let{padding:i,width:o,height:a}=r;return n==="top"?e.top-i-t.height:n==="bottom"?a-i-t.height-e.bottom:n==="left"?e.left-i-t.width:o-i-t.width-e.right}function Ut(e,t){return t==="center"?e:`${e}-${t}`}function $t(e,t,n,r){let{padding:i,width:o,height:a}=r;if(ut(n)==="y"){let d=Math.max(i,o-i-t.width);return{x:Math.min(Math.max(e.x,i),d),y:e.y}}let s=Math.max(i,a-i-t.height);return{x:e.x,y:Math.min(Math.max(e.y,i),s)}}function Kt(e,t,n,r,i={width:typeof window>"u"?0:window.innerWidth,height:typeof window>"u"?0:window.innerHeight,padding:Wt}){let{side:o,align:a}=Vt(n),s=st(e,t,o,a,r),d=Lt(s,t,o,i),E=o,T=s;if(d>0){let k=Ht[o],A=st(e,t,k,a,r),S=at(e,t,o,i);at(e,t,k,i)>S&&(E=k,T=A)}return{coords:$t(T,t,E,i),placement:Ut(E,a)}}function qt(e,t,n,r,i={}){let{coords:o,placement:a}=Kt(e.getBoundingClientRect(),{width:t.offsetWidth,height:t.offsetHeight},n,r);return Object.assign(t.style,{position:"fixed",left:`${o.x}px`,top:`${o.y}px`,right:"auto",bottom:"auto",visibility:"visible"}),i.matchAnchorWidth&&(t.style.width=`${e.offsetWidth}px`),t.setAttribute("data-placement",a),a}function lt({anchor:e,floating:t,getPlacement:n,gap:r,matchAnchorWidth:i}){let o=()=>{t.hidden||qt(e,t,n(),r,{matchAnchorWidth:i})};o(),window.addEventListener("resize",o),window.addEventListener("scroll",o,!0);let a=new ResizeObserver(o);return a.observe(e),a.observe(t),()=>{window.removeEventListener("resize",o),window.removeEventListener("scroll",o,!0),a.disconnect()}}function ct(e,t=document.body){let n=e.parentNode;if(!n)return{unmount:()=>{}};let r=document.createComment("rui-portal");return n.insertBefore(r,e),t.appendChild(e),{unmount:()=>{let i=r.parentNode;i&&(i.insertBefore(e,r),r.remove())}}}function pt(e,t,n){return n?!!(e?.contains(n)||t?.contains(n)):!1}function ft(e,t,n){return!pt(e,t,n)}var H=class{config;cleanupFloating=null;portalHandle=null;floatingElement=null;constructor(t){this.config=t}updateConfig(t){this.config={...this.config,...t}}sync(){let t=this.resolveFloating();if(!t)return;if(!this.config.getOpen()){this.teardown(),t.hidden=!0;return}let r=this.config.getAnchor();if(!r)return;t.hidden=!1,this.config.portal!==!1?this.portalHandle||(this.portalHandle=ct(t,this.config.portalContainer??document.body)):this.portalHandle&&(this.portalHandle.unmount(),this.portalHandle=null),this.teardownFloating(),this.cleanupFloating=lt({anchor:r,floating:t,getPlacement:this.config.getPlacement,gap:this.config.gap??8,matchAnchorWidth:this.config.matchAnchorWidth})}contains(t){return pt(this.config.getAnchor(),this.resolveFloating(),t)}getFloatingElement(){return this.resolveFloating()}teardown(){this.teardownFloating(),this.portalHandle&&(this.portalHandle.unmount(),this.portalHandle=null)}destroy(){this.teardown(),this.floatingElement=null}resolveFloating(){let t=this.config.getFloating();return t&&(this.floatingElement=t),t??this.floatingElement}teardownFloating(){this.cleanupFloating?.(),this.cleanupFloating=null}};var dt,ht,gt,mt,bt,vt,yt,wt,xt,_t,Et,Tt,kt,At;function Gt(e,t,n,r,i,o){var a,s,d,E,T,k,A,S=Symbol.metadata||Symbol.for("Symbol.metadata"),L=Object.defineProperty,U=Object.create,Y=[U(null),U(null)],J=t.length;function F(u,b,g){return function(l,c){b&&(c=l,l=e);for(var v=0;v<u.length;v++)c=u[v].apply(l,g?[c]:[]);return g?c:l}}function x(u,b,g,l){if(typeof u!="function"&&(l||u!==void 0))throw new TypeError(b+" must "+(g||"be")+" a function"+(l?"":" or undefined"));return u}function N(u,b,g,l,c,v,O,m,y,w,Z){function $(f){if(!Z(f))throw new TypeError("Attempted to access private element on non-instance")}var K=[].concat(b[0]),z=b[3],q=!O,D=c===1,tt=c===3,et=c===4,P=c===2;function R(f,C,it){return function(B,ot){return C&&(ot=B,B=u),it&&it(B),p[f].call(B,ot)}}if(!q){var p={},G=[],_=tt?"get":et||D?"set":"value";if(y?(w||D?p={get:Ot(function(){return z(this)},l,"get"),set:function(f){b[4](this,f)}}:p[_]=z,w||Ot(p[_],l,P?"":_)):w||(p=Object.getOwnPropertyDescriptor(u,l)),!w&&!y){if((s=Y[+m][l])&&(s^c)!==7)throw Error("Decorating two elements with the same name ("+p[_].name+") is not supported yet");Y[+m][l]=c<3?1:c}}for(var h=u,j=K.length-1;j>=0;j-=g?2:1){var nt=x(K[j],"A decorator","be",!0),rt=g?K[j-1]:void 0,X={},M={kind:["field","accessor","method","getter","setter","class"][c],name:l,metadata:a,addInitializer:function(f,C){if(f.v)throw new TypeError("attempted to call addInitializer after decoration was finished");x(C,"An initializer","be",!0),v.push(C)}.bind(null,X)};if(q)s=nt.call(rt,h,M),X.v=1,x(s,"class decorators","return")&&(h=s);else if(M.static=m,M.private=y,s=M.access={has:y?Z.bind():function(f){return l in f}},et||(s.get=y?P?function(f){return $(f),p.value}:R("get",0,$):function(f){return f[l]}),P||tt||(s.set=y?R("set",0,$):function(f,C){f[l]=C}),h=nt.call(rt,D?{get:p.get,set:p.set}:p[_],M),X.v=1,D){if(typeof h=="object"&&h)(s=x(h.get,"accessor.get"))&&(p.get=s),(s=x(h.set,"accessor.set"))&&(p.set=s),(s=x(h.init,"accessor.init"))&&G.unshift(s);else if(h!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else x(h,(w?"field":"method")+" decorators","return")&&(w?G.unshift(h):p[_]=h)}return c<2&&O.push(F(G,m,1),F(v,m,0)),w||q||(y?D?O.splice(-1,0,R("get",m),R("set",m)):O.push(P?p[_]:x.call.bind(p[_])):L(u,l,p)),h}function Q(u){return L(u,S,{configurable:!0,enumerable:!0,value:a})}return o!==void 0&&(a=o[S]),a=U(a??null),T=[],k=function(u){u&&T.push(F(u))},A=function(u,b){for(var g=0;g<n.length;g++){var l=n[g],c=l[1],v=7&c;if((8&c)==u&&!v==b){var O=l[2],m=!!l[3],y=16&c;N(u?e:e.prototype,l,y,m?"#"+O:Xt(O),v,v<2?[]:u?E=E||[]:d=d||[],T,!!u,m,b,u&&m?function(w){return Jt(w)===e}:i)}}},A(8,0),A(0,0),A(8,1),A(0,1),k(d),k(E),s=T,J||Q(e),{e:s,get c(){var u=[];return J&&[Q(e=N(e,[t],r,e.name,5,u)),F(u,1)]}}}function Xt(e){var t=Yt(e,"string");return typeof t=="symbol"?t:t+""}function Yt(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Ot(e,t,n){typeof t=="symbol"&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:n?n+" "+t:t})}catch{}return e}function Jt(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(e!==null?typeof e:"null"));return e}var zt=6,V,Ft=class extends Dt{static{({e:[gt,mt,bt,vt,yt,wt,xt,_t,Et,Tt,kt,At,dt],c:[V,ht]}=Gt(this,[Qt("rui-menu-button")],[[It({type:Boolean,reflect:!0,defaultValue:!1}),0,"open"],[It({type:String,defaultValue:"bottom-start"}),0,"placement"],[St({ref:"trigger"}),0,"triggerTarget"],[St({ref:"menu"}),0,"menuTarget"],[Mt({name:"rui-change",bubbles:!0,composed:!0}),0,"changeEvent"],[Mt({name:"rui-close",bubbles:!0,composed:!0}),0,"closeEvent"],[[Nt,Zt(["open","placement"])],2,"syncOpenState"],[I({document:!0,type:"pointerdown"}),2,"onDocumentPointerDown"],[I({ref:"trigger",type:"click"}),2,"onTriggerClick"],[I({ref:"trigger",type:"keydown"}),2,"onTriggerKeydown"],[I({ref:"menu",type:"keydown"}),2,"onMenuKeydown"],[I({selector:'[role="menuitem"]',type:"click"}),2,"onItemClick"]],0,void 0,Dt))}open=(dt(this),gt(this));placement=(mt(this),bt(this));triggerTarget=(vt(this),yt(this));menuTarget=(wt(this),xt(this));changeEvent=(_t(this),Et(this));closeEvent=(Tt(this),kt(this));menuId=(At(this),`rui-menu-${Math.random().toString(36).slice(2,9)}`);popoverController=null;pendingFocus=null;connectedCallback(){super.connectedCallback(),queueMicrotask(()=>this.syncOpenState())}disconnectedCallback(){this.popoverController?.destroy(),this.popoverController=null,super.disconnectedCallback()}getItems(){return Array.from(this.menuTarget?.querySelectorAll('[role="menuitem"]')??[]).filter(t=>!t.hidden&&t.getAttribute("aria-disabled")!=="true")}ensurePopoverController(){return this.popoverController||(this.popoverController=new H({getAnchor:()=>this.triggerTarget,getFloating:()=>this.menuTarget,getOpen:()=>this.open,getPlacement:()=>this.placement,gap:zt,portal:!1})),this.popoverController}syncOpenState(){if(!this.triggerTarget||!this.menuTarget)return;this.menuTarget.id=this.menuId,this.triggerTarget.setAttribute("aria-controls",this.menuId),this.triggerTarget.setAttribute("aria-haspopup","menu"),this.triggerTarget.setAttribute("aria-expanded",String(this.open)),this.menuTarget.hidden=!this.open;let t=this.ensurePopoverController();t.updateConfig({getPlacement:()=>this.placement,getOpen:()=>this.open}),t.sync();let n=this.pendingFocus;if(this.pendingFocus=null,!!n){if(n==="first"&&this.getItems()[0]?.focus(),n==="last"){let r=this.getItems();r[r.length-1]?.focus()}n==="trigger"&&this.triggerTarget?.focus()}}setOpen(t,n=null){let r=this.open;this.pendingFocus=n,this.open=t,r&&!t&&this.closeEvent.emit(),r===t&&this.syncOpenState()}onDocumentPointerDown(t){if(!this.open)return;let n=t.target;ft(this.triggerTarget,this.menuTarget,n)&&this.setOpen(!1)}onTriggerClick(){this.setOpen(!this.open,this.open?null:"first")}onTriggerKeydown(t){switch(t.key){case"ArrowDown":case"Enter":case" ":t.preventDefault(),this.setOpen(!0,"first");break;case"ArrowUp":t.preventDefault(),this.setOpen(!0,"last");break;default:break}}onMenuKeydown(t){let n=this.getItems(),r=document.activeElement,i=r?n.indexOf(r):-1;switch(t.key){case"ArrowDown":{t.preventDefault(),n[(i+1)%n.length]?.focus();break}case"ArrowUp":{t.preventDefault(),n[(i-1+n.length)%n.length]?.focus();break}case"Home":t.preventDefault(),n[0]?.focus();break;case"End":t.preventDefault(),n[n.length-1]?.focus();break;case"Escape":t.preventDefault(),this.setOpen(!1,"trigger");break;case"Tab":this.setOpen(!1);break;case"Enter":case" ":r&&n.includes(r)&&(t.preventDefault(),this.activateItem(r));break;default:break}}onItemClick(t){let n=t.target.closest('[role="menuitem"]');!n||!this.contains(n)||this.activateItem(n)}activateItem(t){let n=t.getAttribute("data-value")||t.textContent?.trim()||"";this.changeEvent.emit({value:n}),this.setOpen(!1,"trigger")}render(){return Ct("div",{class:"rui-menu-button",children:[Ct("button",{type:"button","data-ref":"trigger",class:"rui-button rui-button--primary rui-button--md rui-menu-button__trigger","aria-haspopup":"menu","aria-expanded":"false",children:[W("slot",{name:"trigger"}),W("span",{class:"rui-menu-button__chevron","aria-hidden":"true"})]}),W("div",{"data-ref":"menu",class:"rui-menu-button__menu rui-popover rui-floating",role:"menu",hidden:!0,children:W("slot",{})})]})}static{ht()}};import{jsx as Bt,jsxs as ne}from"@ecopages/jsx/jsx-runtime";var te=Symbol.for("@ecopages/storybook-radiant.viewElement"),Pt=Symbol.for("@ecopages/storybook-radiant.scriptModule"),Rt=Symbol.for("@ecopages/storybook-radiant.scriptExport");function ee(e,t){e[te]=t;let n=t[Pt];n&&(e[Pt]=n,e[Rt]=t[Rt]??t.name)}function jt(e,t,n){let r=i=>t(i);return ee(r,e),r}var re=jt(V,({trigger:e,items:t,...n})=>ne("rui-menu-button",{...n,children:[Bt("span",{slot:"trigger",children:e}),t.map(r=>Bt("button",{type:"button",class:"rui-menu-button__item",role:"menuitem","data-value":r.value,"aria-disabled":r.disabled?"true":void 0,tabindex:-1,children:r.label}))]}),{stylesheets:["./menu-button.css"]});export{re as RuiMenuButton,V as RuiMenuButtonElement};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/components/ui/menu-button/menu-button.script.tsx", "../../../../src/components/ui/shared/floating-position.ts", "../../../../src/components/ui/menu-button/menu-button.tsx", "../../../../src/lib/radiant-view.ts"],
4
- "sourcesContent": ["let _initProto, _initClass, _init_open, _init_extra_open, _init_placement, _init_extra_placement, _init_triggerTarget, _init_extra_triggerTarget, _init_menuTarget, _init_extra_menuTarget, _init_changeEvent, _init_extra_changeEvent, _init_closeEvent, _init_extra_closeEvent;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { RadiantElement, bound, customElement, event, onEvent, onUpdated, prop, query } from \"@ecopages/radiant\";\nimport { attachFloating } from \"../shared/floating-position\";\nconst MENU_GAP = 6;\nlet _RuiMenuButton;\nclass RuiMenuButton extends RadiantElement {\n static {\n ({\n e: [_init_open, _init_extra_open, _init_placement, _init_extra_placement, _init_triggerTarget, _init_extra_triggerTarget, _init_menuTarget, _init_extra_menuTarget, _init_changeEvent, _init_extra_changeEvent, _init_closeEvent, _init_extra_closeEvent, _initProto],\n c: [_RuiMenuButton, _initClass]\n } = _applyDecs(this, [customElement(\"rui-menu-button\")], [[prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"open\"], [prop({\n type: String,\n defaultValue: \"bottom-start\"\n }), 0, \"placement\"], [query({\n ref: \"trigger\"\n }), 0, \"triggerTarget\"], [query({\n ref: \"menu\"\n }), 0, \"menuTarget\"], [event({\n name: \"rui-change\",\n bubbles: true,\n composed: true\n }), 0, \"changeEvent\"], [event({\n name: \"rui-close\",\n bubbles: true,\n composed: true\n }), 0, \"closeEvent\"], [[bound, onUpdated([\"open\", \"placement\"])], 2, \"syncOpenState\"], [onEvent({\n document: true,\n type: \"click\"\n }), 2, \"onDocumentClick\"], [onEvent({\n ref: \"trigger\",\n type: \"click\"\n }), 2, \"onTriggerClick\"], [onEvent({\n ref: \"trigger\",\n type: \"keydown\"\n }), 2, \"onTriggerKeydown\"], [onEvent({\n ref: \"menu\",\n type: \"keydown\"\n }), 2, \"onMenuKeydown\"], [onEvent({\n selector: '[role=\"menuitem\"]',\n type: \"click\"\n }), 2, \"onItemClick\"]], 0, void 0, RadiantElement));\n }\n open = (_initProto(this), _init_open(this));\n placement = (_init_extra_open(this), _init_placement(this));\n triggerTarget = (_init_extra_placement(this), _init_triggerTarget(this));\n menuTarget = (_init_extra_triggerTarget(this), _init_menuTarget(this));\n changeEvent = (_init_extra_menuTarget(this), _init_changeEvent(this));\n closeEvent = (_init_extra_changeEvent(this), _init_closeEvent(this));\n menuId = (_init_extra_closeEvent(this), `rui-menu-${Math.random().toString(36).slice(2, 9)}`);\n cleanupFloating = null;\n pendingFocus = null;\n connectedCallback() {\n super.connectedCallback();\n queueMicrotask(() => this.syncOpenState());\n }\n disconnectedCallback() {\n this.teardownFloating();\n super.disconnectedCallback();\n }\n getItems() {\n return Array.from(this.menuTarget?.querySelectorAll('[role=\"menuitem\"]') ?? []).filter(item => item.getAttribute(\"aria-disabled\") !== \"true\");\n }\n teardownFloating() {\n this.cleanupFloating?.();\n this.cleanupFloating = null;\n }\n attachFloating() {\n if (!this.triggerTarget || !this.menuTarget) return;\n this.teardownFloating();\n this.cleanupFloating = attachFloating({\n anchor: this.triggerTarget,\n floating: this.menuTarget,\n getPlacement: () => this.placement,\n gap: MENU_GAP\n });\n }\n syncOpenState() {\n if (!this.triggerTarget || !this.menuTarget) return;\n this.menuTarget.id = this.menuId;\n this.triggerTarget.setAttribute(\"aria-controls\", this.menuId);\n this.triggerTarget.setAttribute(\"aria-haspopup\", \"menu\");\n this.triggerTarget.setAttribute(\"aria-expanded\", String(this.open));\n this.menuTarget.hidden = !this.open;\n if (this.open) this.attachFloating();else this.teardownFloating();\n const focus = this.pendingFocus;\n this.pendingFocus = null;\n if (!focus) return;\n if (focus === \"first\") this.getItems()[0]?.focus();\n if (focus === \"last\") {\n const items = this.getItems();\n items[items.length - 1]?.focus();\n }\n if (focus === \"trigger\") this.triggerTarget?.focus();\n }\n setOpen(next, focus = null) {\n const wasOpen = this.open;\n this.pendingFocus = focus;\n this.open = next;\n if (wasOpen && !next) this.closeEvent.emit();\n if (wasOpen === next) this.syncOpenState();\n }\n onDocumentClick(event2) {\n if (!this.open) return;\n const target = event2.target;\n if (this.triggerTarget?.contains(target) || this.menuTarget?.contains(target)) return;\n this.setOpen(false);\n }\n onTriggerClick() {\n this.setOpen(!this.open, this.open ? null : \"first\");\n }\n onTriggerKeydown(event2) {\n switch (event2.key) {\n case \"ArrowDown\":\n case \"Enter\":\n case \" \":\n event2.preventDefault();\n this.setOpen(true, \"first\");\n break;\n case \"ArrowUp\":\n event2.preventDefault();\n this.setOpen(true, \"last\");\n break;\n default:\n break;\n }\n }\n onMenuKeydown(event2) {\n const items = this.getItems();\n const current = document.activeElement;\n const index = current ? items.indexOf(current) : -1;\n switch (event2.key) {\n case \"ArrowDown\":\n {\n event2.preventDefault();\n const next = items[(index + 1) % items.length];\n next?.focus();\n break;\n }\n case \"ArrowUp\":\n {\n event2.preventDefault();\n const prev = items[(index - 1 + items.length) % items.length];\n prev?.focus();\n break;\n }\n case \"Home\":\n event2.preventDefault();\n items[0]?.focus();\n break;\n case \"End\":\n event2.preventDefault();\n items[items.length - 1]?.focus();\n break;\n case \"Escape\":\n event2.preventDefault();\n this.setOpen(false, \"trigger\");\n break;\n case \"Tab\":\n this.setOpen(false);\n break;\n case \"Enter\":\n case \" \":\n if (current && items.includes(current)) {\n event2.preventDefault();\n this.activateItem(current);\n }\n break;\n default:\n break;\n }\n }\n onItemClick(event2) {\n const item = event2.target.closest('[role=\"menuitem\"]');\n if (!item || !this.contains(item)) return;\n this.activateItem(item);\n }\n activateItem(item) {\n const value = item.getAttribute(\"data-value\") || item.textContent?.trim() || \"\";\n this.changeEvent.emit({\n value\n });\n this.setOpen(false, \"trigger\");\n }\n render() {\n return /* @__PURE__ */jsxs(\"div\", {\n class: \"rui-menu-button\",\n children: [/* @__PURE__ */jsxs(\"button\", {\n type: \"button\",\n \"data-ref\": \"trigger\",\n class: \"rui-button rui-button--primary rui-button--md rui-menu-button__trigger\",\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": \"false\",\n children: [/* @__PURE__ */jsx(\"slot\", {\n name: \"trigger\"\n }), /* @__PURE__ */jsx(\"span\", {\n class: \"rui-menu-button__chevron\",\n \"aria-hidden\": \"true\"\n })]\n }), /* @__PURE__ */jsx(\"div\", {\n \"data-ref\": \"menu\",\n class: \"rui-menu-button__menu rui-floating\",\n role: \"menu\",\n hidden: true,\n children: /* @__PURE__ */jsx(\"slot\", {})\n })]\n });\n }\n static {\n _initClass();\n }\n}\nexport { _RuiMenuButton as RuiMenuButton };", "const OPPOSITE = {\n top: \"bottom\",\n bottom: \"top\",\n left: \"right\",\n right: \"left\"\n};\nconst DEFAULT_VIEWPORT_PADDING = 8;\nfunction parsePlacement(placement) {\n const dash = placement.indexOf(\"-\");\n if (dash === -1) return {\n side: placement,\n align: \"center\"\n };\n const side = placement.slice(0, dash);\n const align = placement.slice(dash + 1);\n return {\n side,\n align: align === \"start\" || align === \"end\" ? align : \"center\"\n };\n}\nfunction primaryAxis(side) {\n return side === \"top\" || side === \"bottom\" ? \"y\" : \"x\";\n}\nfunction coordsFor(anchor, size, side, align, gap) {\n const {\n width,\n height\n } = size;\n let x = 0;\n let y = 0;\n switch (side) {\n case \"top\":\n y = anchor.top - height - gap;\n break;\n case \"bottom\":\n y = anchor.bottom + gap;\n break;\n case \"left\":\n x = anchor.left - width - gap;\n break;\n case \"right\":\n x = anchor.right + gap;\n break;\n }\n if (primaryAxis(side) === \"y\") {\n if (align === \"start\") x = anchor.left;else if (align === \"end\") x = anchor.right - width;else x = anchor.left + (anchor.width - width) / 2;\n } else {\n if (align === \"start\") y = anchor.top;else if (align === \"end\") y = anchor.bottom - height;else y = anchor.top + (anchor.height - height) / 2;\n }\n return {\n x,\n y\n };\n}\nfunction overflowOnPrimary(coords, size, side, viewport) {\n const {\n padding,\n width: vw,\n height: vh\n } = viewport;\n if (side === \"top\") return Math.max(0, padding - coords.y);\n if (side === \"bottom\") return Math.max(0, coords.y + size.height - (vh - padding));\n if (side === \"left\") return Math.max(0, padding - coords.x);\n return Math.max(0, coords.x + size.width - (vw - padding));\n}\nfunction freeSpaceOnSide(anchor, size, side, viewport) {\n const {\n padding,\n width: vw,\n height: vh\n } = viewport;\n if (side === \"top\") return anchor.top - padding - size.height;\n if (side === \"bottom\") return vh - padding - size.height - anchor.bottom;\n if (side === \"left\") return anchor.left - padding - size.width;\n return vw - padding - size.width - anchor.right;\n}\nfunction clampCrossAxis(coords, size, side, viewport) {\n const {\n padding,\n width: vw,\n height: vh\n } = viewport;\n if (primaryAxis(side) === \"y\") {\n const maxX = Math.max(padding, vw - padding - size.width);\n return {\n x: Math.min(Math.max(coords.x, padding), maxX),\n y: coords.y\n };\n }\n const maxY = Math.max(padding, vh - padding - size.height);\n return {\n x: coords.x,\n y: Math.min(Math.max(coords.y, padding), maxY)\n };\n}\nexport function computeFloatingCoords(anchor, size, placement, gap, viewport = {\n width: typeof window === \"undefined\" ? 0 : window.innerWidth,\n height: typeof window === \"undefined\" ? 0 : window.innerHeight,\n padding: DEFAULT_VIEWPORT_PADDING\n}) {\n const {\n side: preferred,\n align\n } = parsePlacement(placement);\n const preferredCoords = coordsFor(anchor, size, preferred, align, gap);\n const preferredOverflow = overflowOnPrimary(preferredCoords, size, preferred, viewport);\n let side = preferred;\n let coords = preferredCoords;\n if (preferredOverflow > 0) {\n const flipped = OPPOSITE[preferred];\n const flippedCoords = coordsFor(anchor, size, flipped, align, gap);\n const preferredFree = freeSpaceOnSide(anchor, size, preferred, viewport);\n const flippedFree = freeSpaceOnSide(anchor, size, flipped, viewport);\n if (flippedFree > preferredFree) {\n side = flipped;\n coords = flippedCoords;\n }\n }\n return clampCrossAxis(coords, size, side, viewport);\n}\nexport function applyFloatingPosition(anchor, floating, placement, gap) {\n const coords = computeFloatingCoords(anchor.getBoundingClientRect(), {\n width: floating.offsetWidth,\n height: floating.offsetHeight\n }, placement, gap);\n Object.assign(floating.style, {\n position: \"fixed\",\n left: `${coords.x}px`,\n top: `${coords.y}px`,\n right: \"auto\",\n bottom: \"auto\",\n visibility: \"visible\"\n });\n}\nexport function attachFloating({\n anchor,\n floating,\n getPlacement,\n gap\n}) {\n const update = () => {\n if (floating.hidden) return;\n applyFloatingPosition(anchor, floating, getPlacement(), gap);\n };\n update();\n window.addEventListener(\"resize\", update);\n window.addEventListener(\"scroll\", update, true);\n const observer = new ResizeObserver(update);\n observer.observe(anchor);\n observer.observe(floating);\n return () => {\n window.removeEventListener(\"resize\", update);\n window.removeEventListener(\"scroll\", update, true);\n observer.disconnect();\n };\n}", "import { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { defineRadiantView } from \"@/lib/radiant-view\";\nimport { RuiMenuButton as RuiMenuButtonElement } from \"./menu-button.script\";\nexport const RuiMenuButton = defineRadiantView(RuiMenuButtonElement, ({\n trigger,\n items,\n ...props\n}) => /* @__PURE__ */jsxs(\"rui-menu-button\", {\n ...props,\n children: [/* @__PURE__ */jsx(\"span\", {\n slot: \"trigger\",\n children: trigger\n }), items.map(item => /* @__PURE__ */jsx(\"button\", {\n type: \"button\",\n class: \"rui-menu-button__item\",\n role: \"menuitem\",\n \"data-value\": item.value,\n \"aria-disabled\": item.disabled ? \"true\" : void 0,\n tabindex: -1,\n children: item.label\n }))]\n}), {\n stylesheets: [\"./menu-button.css\"]\n});", "const RADIANT_VIEW_ELEMENT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewElement\");\nconst RADIANT_SCRIPT_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptModule\");\nconst RADIANT_SCRIPT_EXPORT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptExport\");\nconst RADIANT_VIEW_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewModule\");\nfunction linkViewToElement(view, element) {\n view[RADIANT_VIEW_ELEMENT] = element;\n const ssrModule = element[RADIANT_SCRIPT_MODULE];\n if (ssrModule) {\n view[RADIANT_SCRIPT_MODULE] = ssrModule;\n view[RADIANT_SCRIPT_EXPORT] = element[RADIANT_SCRIPT_EXPORT] ?? element.name;\n }\n}\nexport function defineRadiantView(element, render, _options) {\n const view = args => render(args);\n linkViewToElement(view, element);\n return view;\n}\nexport function attachRadiantStylesheets(target, _stylesheets, moduleUrl) {\n const view = target;\n view[RADIANT_VIEW_MODULE] = moduleUrl;\n return target;\n}\nexport function syncRadiantViewMetadata(view) {\n const element = view[RADIANT_VIEW_ELEMENT];\n if (element) {\n linkViewToElement(view, element);\n }\n}"],
5
- "mappings": "AAMA,OAAS,OAAAA,EAAK,QAAAC,OAAY,4BAC1B,OAAS,kBAAAC,GAAgB,SAAAC,GAAO,iBAAAC,GAAe,SAAAC,GAAO,WAAAC,EAAS,aAAAC,GAAW,QAAAC,GAAM,SAAAC,OAAa,oBCP7F,IAAMC,GAAW,CACf,IAAK,SACL,OAAQ,MACR,KAAM,QACN,MAAO,MACT,EACMC,GAA2B,EACjC,SAASC,GAAeC,EAAW,CACjC,IAAMC,EAAOD,EAAU,QAAQ,GAAG,EAClC,GAAIC,IAAS,GAAI,MAAO,CACtB,KAAMD,EACN,MAAO,QACT,EACA,IAAME,EAAOF,EAAU,MAAM,EAAGC,CAAI,EAC9BE,EAAQH,EAAU,MAAMC,EAAO,CAAC,EACtC,MAAO,CACL,KAAAC,EACA,MAAOC,IAAU,SAAWA,IAAU,MAAQA,EAAQ,QACxD,CACF,CACA,SAASC,GAAYF,EAAM,CACzB,OAAOA,IAAS,OAASA,IAAS,SAAW,IAAM,GACrD,CACA,SAASG,GAAUC,EAAQC,EAAML,EAAMC,EAAOK,EAAK,CACjD,GAAM,CACJ,MAAAC,EACA,OAAAC,CACF,EAAIH,EACAI,EAAI,EACJC,EAAI,EACR,OAAQV,EAAM,CACZ,IAAK,MACHU,EAAIN,EAAO,IAAMI,EAASF,EAC1B,MACF,IAAK,SACHI,EAAIN,EAAO,OAASE,EACpB,MACF,IAAK,OACHG,EAAIL,EAAO,KAAOG,EAAQD,EAC1B,MACF,IAAK,QACHG,EAAIL,EAAO,MAAQE,EACnB,KACJ,CACA,OAAIJ,GAAYF,CAAI,IAAM,IACpBC,IAAU,QAASQ,EAAIL,EAAO,KAAcH,IAAU,MAAOQ,EAAIL,EAAO,MAAQG,EAAWE,EAAIL,EAAO,MAAQA,EAAO,MAAQG,GAAS,EAEtIN,IAAU,QAASS,EAAIN,EAAO,IAAaH,IAAU,MAAOS,EAAIN,EAAO,OAASI,EAAYE,EAAIN,EAAO,KAAOA,EAAO,OAASI,GAAU,EAEvI,CACL,EAAAC,EACA,EAAAC,CACF,CACF,CACA,SAASC,GAAkBC,EAAQP,EAAML,EAAMa,EAAU,CACvD,GAAM,CACJ,QAAAC,EACA,MAAOC,EACP,OAAQC,CACV,EAAIH,EACJ,OAAIb,IAAS,MAAc,KAAK,IAAI,EAAGc,EAAUF,EAAO,CAAC,EACrDZ,IAAS,SAAiB,KAAK,IAAI,EAAGY,EAAO,EAAIP,EAAK,QAAUW,EAAKF,EAAQ,EAC7Ed,IAAS,OAAe,KAAK,IAAI,EAAGc,EAAUF,EAAO,CAAC,EACnD,KAAK,IAAI,EAAGA,EAAO,EAAIP,EAAK,OAASU,EAAKD,EAAQ,CAC3D,CACA,SAASG,GAAgBb,EAAQC,EAAML,EAAMa,EAAU,CACrD,GAAM,CACJ,QAAAC,EACA,MAAOC,EACP,OAAQC,CACV,EAAIH,EACJ,OAAIb,IAAS,MAAcI,EAAO,IAAMU,EAAUT,EAAK,OACnDL,IAAS,SAAiBgB,EAAKF,EAAUT,EAAK,OAASD,EAAO,OAC9DJ,IAAS,OAAeI,EAAO,KAAOU,EAAUT,EAAK,MAClDU,EAAKD,EAAUT,EAAK,MAAQD,EAAO,KAC5C,CACA,SAASc,GAAeN,EAAQP,EAAML,EAAMa,EAAU,CACpD,GAAM,CACJ,QAAAC,EACA,MAAOC,EACP,OAAQC,CACV,EAAIH,EACJ,GAAIX,GAAYF,CAAI,IAAM,IAAK,CAC7B,IAAMmB,EAAO,KAAK,IAAIL,EAASC,EAAKD,EAAUT,EAAK,KAAK,EACxD,MAAO,CACL,EAAG,KAAK,IAAI,KAAK,IAAIO,EAAO,EAAGE,CAAO,EAAGK,CAAI,EAC7C,EAAGP,EAAO,CACZ,CACF,CACA,IAAMQ,EAAO,KAAK,IAAIN,EAASE,EAAKF,EAAUT,EAAK,MAAM,EACzD,MAAO,CACL,EAAGO,EAAO,EACV,EAAG,KAAK,IAAI,KAAK,IAAIA,EAAO,EAAGE,CAAO,EAAGM,CAAI,CAC/C,CACF,CACO,SAASC,GAAsBjB,EAAQC,EAAMP,EAAWQ,EAAKO,EAAW,CAC7E,MAAO,OAAO,OAAW,IAAc,EAAI,OAAO,WAClD,OAAQ,OAAO,OAAW,IAAc,EAAI,OAAO,YACnD,QAASjB,EACX,EAAG,CACD,GAAM,CACJ,KAAM0B,EACN,MAAArB,CACF,EAAIJ,GAAeC,CAAS,EACtByB,EAAkBpB,GAAUC,EAAQC,EAAMiB,EAAWrB,EAAOK,CAAG,EAC/DkB,EAAoBb,GAAkBY,EAAiBlB,EAAMiB,EAAWT,CAAQ,EAClFb,EAAOsB,EACPV,EAASW,EACb,GAAIC,EAAoB,EAAG,CACzB,IAAMC,EAAU9B,GAAS2B,CAAS,EAC5BI,EAAgBvB,GAAUC,EAAQC,EAAMoB,EAASxB,EAAOK,CAAG,EAC3DqB,EAAgBV,GAAgBb,EAAQC,EAAMiB,EAAWT,CAAQ,EACnDI,GAAgBb,EAAQC,EAAMoB,EAASZ,CAAQ,EACjDc,IAChB3B,EAAOyB,EACPb,EAASc,EAEb,CACA,OAAOR,GAAeN,EAAQP,EAAML,EAAMa,CAAQ,CACpD,CACO,SAASe,GAAsBxB,EAAQyB,EAAU/B,EAAWQ,EAAK,CACtE,IAAMM,EAASS,GAAsBjB,EAAO,sBAAsB,EAAG,CACnE,MAAOyB,EAAS,YAChB,OAAQA,EAAS,YACnB,EAAG/B,EAAWQ,CAAG,EACjB,OAAO,OAAOuB,EAAS,MAAO,CAC5B,SAAU,QACV,KAAM,GAAGjB,EAAO,CAAC,KACjB,IAAK,GAAGA,EAAO,CAAC,KAChB,MAAO,OACP,OAAQ,OACR,WAAY,SACd,CAAC,CACH,CACO,SAASkB,GAAe,CAC7B,OAAA1B,EACA,SAAAyB,EACA,aAAAE,EACA,IAAAzB,CACF,EAAG,CACD,IAAM0B,EAAS,IAAM,CACfH,EAAS,QACbD,GAAsBxB,EAAQyB,EAAUE,EAAa,EAAGzB,CAAG,CAC7D,EACA0B,EAAO,EACP,OAAO,iBAAiB,SAAUA,CAAM,EACxC,OAAO,iBAAiB,SAAUA,EAAQ,EAAI,EAC9C,IAAMC,EAAW,IAAI,eAAeD,CAAM,EAC1C,OAAAC,EAAS,QAAQ7B,CAAM,EACvB6B,EAAS,QAAQJ,CAAQ,EAClB,IAAM,CACX,OAAO,oBAAoB,SAAUG,CAAM,EAC3C,OAAO,oBAAoB,SAAUA,EAAQ,EAAI,EACjDC,EAAS,WAAW,CACtB,CACF,CD3JA,IAAIC,GAAYC,GAAYC,GAAYC,GAAkBC,GAAiBC,GAAuBC,GAAqBC,GAA2BC,GAAkBC,GAAwBC,GAAmBC,GAAyBC,GAAkBC,GAC1P,SAASC,GAAW,EAAG,EAAG,EAAGC,EAAGC,EAAGC,EAAG,CAAE,IAAIC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAI,OAAO,UAAY,OAAO,IAAI,iBAAiB,EAAGC,EAAI,OAAO,eAAgBC,EAAI,OAAO,OAAQC,EAAI,CAACD,EAAE,IAAI,EAAGA,EAAE,IAAI,CAAC,EAAGE,EAAI,EAAE,OAAQ,SAASC,EAAEC,EAAGC,EAAGjB,EAAG,CAAE,OAAO,SAAUC,EAAGC,EAAG,CAAEe,IAAMf,EAAID,EAAGA,EAAI,GAAI,QAASE,EAAI,EAAGA,EAAIa,EAAE,OAAQb,IAAKD,EAAIc,EAAEb,CAAC,EAAE,MAAMF,EAAGD,EAAI,CAACE,CAAC,EAAI,CAAC,CAAC,EAAG,OAAOF,EAAIE,EAAID,CAAG,CAAG,CAAE,SAASiB,EAAEC,EAAGH,EAAGC,EAAGjB,EAAG,CAAE,GAAkB,OAAOmB,GAArB,aAA2BnB,GAAgBmB,IAAX,QAAe,MAAM,IAAI,UAAUH,EAAI,UAAYC,GAAK,MAAQ,eAAiBjB,EAAI,GAAK,gBAAgB,EAAG,OAAOmB,CAAG,CAAE,SAASC,EAASD,EAAGH,EAAGC,EAAGjB,EAAGC,EAAGC,EAAGG,EAAGC,EAAGC,EAAGC,EAAGC,EAAG,CAAE,SAASC,EAAES,EAAG,CAAE,GAAI,CAACV,EAAEU,CAAC,EAAG,MAAM,IAAI,UAAU,qDAAqD,CAAG,CAAE,IAAIP,EAAI,CAAC,EAAE,OAAOI,EAAE,CAAC,CAAC,EAAGF,EAAIE,EAAE,CAAC,EAAGK,EAAI,CAAChB,EAAG,EAAUJ,IAAN,EAASqB,EAAUrB,IAAN,EAASsB,GAAUtB,IAAN,EAASuB,EAAUvB,IAAN,EAAS,SAASwB,EAAET,EAAGC,EAAGjB,GAAG,CAAE,OAAO,SAAUC,EAAGC,GAAG,CAAE,OAAOe,IAAMf,GAAID,EAAGA,EAAIkB,GAAInB,IAAKA,GAAEC,CAAC,EAAGyB,EAAEV,CAAC,EAAE,KAAKf,EAAGC,EAAC,CAAG,CAAG,CAAE,GAAI,CAACmB,EAAG,CAAE,IAAIK,EAAI,CAAC,EAAGC,EAAI,CAAC,EAAGC,EAAIN,EAAI,MAAQC,IAAK,EAAI,MAAQ,QAAS,GAAIhB,GAAKC,GAAK,EAAIkB,EAAI,CAAE,IAAKG,GAAiB,UAAY,CAAE,OAAOf,EAAE,IAAI,CAAG,EAAGd,EAAG,KAAK,EAAG,IAAK,SAAUmB,EAAG,CAAEH,EAAE,CAAC,EAAE,KAAMG,CAAC,CAAG,CAAE,EAAIO,EAAEE,CAAC,EAAId,EAAGN,GAAKqB,GAAiBH,EAAEE,CAAC,EAAG5B,EAAGwB,EAAI,GAAKI,CAAC,GAAKpB,IAAMkB,EAAI,OAAO,yBAAyBP,EAAGnB,CAAC,GAAI,CAACQ,GAAK,CAACD,EAAG,CAAE,IAAKH,EAAIS,EAAE,CAACP,CAAC,EAAEN,CAAC,KAAaI,EAAIH,KAAX,EAAe,MAAM,MAAM,+CAAiDyB,EAAEE,CAAC,EAAE,KAAO,wBAAwB,EAAGf,EAAE,CAACP,CAAC,EAAEN,CAAC,EAAIC,EAAI,EAAI,EAAIA,CAAG,CAAE,CAAE,QAAS6B,EAAIX,EAAGY,EAAInB,EAAE,OAAS,EAAGmB,GAAK,EAAGA,GAAKd,EAAI,EAAI,EAAG,CAAE,IAAIe,GAAId,EAAEN,EAAEmB,CAAC,EAAG,cAAe,KAAM,EAAE,EAAGE,GAAIhB,EAAIL,EAAEmB,EAAI,CAAC,EAAI,OAAQG,EAAI,CAAC,EAAGC,EAAI,CAAE,KAAM,CAAC,QAAS,WAAY,SAAU,SAAU,SAAU,OAAO,EAAElC,CAAC,EAAG,KAAMD,EAAG,SAAUG,EAAG,eAAgB,SAAUgB,EAAGH,EAAG,CAAE,GAAIG,EAAE,EAAG,MAAM,IAAI,UAAU,gEAAgE,EAAGD,EAAEF,EAAG,iBAAkB,KAAM,EAAE,EAAGd,EAAE,KAAKc,CAAC,CAAG,EAAE,KAAK,KAAMkB,CAAC,CAAE,EAAG,GAAIb,EAAGjB,EAAI4B,GAAE,KAAKC,GAAGH,EAAGK,CAAC,EAAGD,EAAE,EAAI,EAAGhB,EAAEd,EAAG,mBAAoB,QAAQ,IAAM0B,EAAI1B,WAAY+B,EAAE,OAAS7B,EAAG6B,EAAE,QAAU5B,EAAGH,EAAI+B,EAAE,OAAS,CAAE,IAAK5B,EAAIE,EAAE,KAAK,EAAI,SAAUU,EAAG,CAAE,OAAOnB,KAAKmB,CAAG,CAAE,EAAGI,KAAMnB,EAAE,IAAMG,EAAIiB,EAAI,SAAUL,EAAG,CAAE,OAAOT,EAAES,CAAC,EAAGO,EAAE,KAAO,EAAID,EAAE,MAAO,EAAGf,CAAC,EAAI,SAAUS,EAAG,CAAE,OAAOA,EAAEnB,CAAC,CAAG,GAAIwB,GAAKF,IAAMlB,EAAE,IAAMG,EAAIkB,EAAE,MAAO,EAAGf,CAAC,EAAI,SAAUS,EAAGH,EAAG,CAAEG,EAAEnB,CAAC,EAAIgB,CAAG,GAAIc,EAAIE,GAAE,KAAKC,GAAG,EAAI,CAAE,IAAKP,EAAE,IAAK,IAAKA,EAAE,GAAI,EAAIA,EAAEE,CAAC,EAAGO,CAAC,EAAGD,EAAE,EAAI,EAAG,GAAK,GAAgB,OAAOJ,GAAnB,UAAwBA,GAAI1B,EAAIc,EAAEY,EAAE,IAAK,cAAc,KAAOJ,EAAE,IAAMtB,IAAKA,EAAIc,EAAEY,EAAE,IAAK,cAAc,KAAOJ,EAAE,IAAMtB,IAAKA,EAAIc,EAAEY,EAAE,KAAM,eAAe,IAAMH,EAAE,QAAQvB,CAAC,UAAsB0B,IAAX,OAAc,MAAM,IAAI,UAAU,0FAA0F,OAAUZ,EAAEY,GAAItB,EAAI,QAAU,UAAY,cAAe,QAAQ,IAAMA,EAAImB,EAAE,QAAQG,CAAC,EAAIJ,EAAEE,CAAC,EAAIE,EAAI,CAAE,OAAO7B,EAAI,GAAKI,EAAE,KAAKU,EAAEY,EAAGrB,EAAG,CAAC,EAAGS,EAAEb,EAAGI,EAAG,CAAC,CAAC,EAAGE,GAAKa,IAAMd,EAAI,EAAIF,EAAE,OAAO,GAAI,EAAGoB,EAAE,MAAOnB,CAAC,EAAGmB,EAAE,MAAOnB,CAAC,CAAC,EAAID,EAAE,KAAKmB,EAAIE,EAAEE,CAAC,EAAIV,EAAE,KAAK,KAAKQ,EAAEE,CAAC,CAAC,CAAC,EAAIjB,EAAEQ,EAAGnB,EAAG0B,CAAC,GAAII,CAAG,CAAE,SAAST,EAAEF,EAAG,CAAE,OAAOR,EAAEQ,EAAGT,EAAG,CAAE,aAAc,GAAI,WAAY,GAAI,MAAOP,CAAE,CAAC,CAAG,CAAE,OAAkBD,IAAX,SAAiBC,EAAID,EAAEQ,CAAC,GAAIP,EAAIS,EAAUT,GAAI,IAAQ,EAAGI,EAAI,CAAC,EAAGC,EAAI,SAAUW,EAAG,CAAEA,GAAKZ,EAAE,KAAKQ,EAAEI,CAAC,CAAC,CAAG,EAAGV,EAAI,SAAUO,EAAGhB,EAAG,CAAE,QAASE,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAAK,CAAE,IAAIC,EAAI,EAAED,CAAC,EAAGE,EAAID,EAAE,CAAC,EAAGK,EAAI,EAAIJ,EAAG,IAAK,EAAIA,IAAMY,GAAK,CAACR,GAAKR,EAAG,CAAE,IAAIS,EAAIN,EAAE,CAAC,EAAGO,EAAI,CAAC,CAACP,EAAE,CAAC,EAAGQ,EAAI,GAAKP,EAAGgB,EAASJ,EAAI,EAAI,EAAE,UAAWb,EAAGQ,EAAGD,EAAI,IAAMD,EAAI2B,GAAe3B,CAAC,EAAGD,EAAGA,EAAI,EAAI,CAAC,EAAIQ,EAAIV,EAAIA,GAAK,CAAC,EAAID,EAAIA,GAAK,CAAC,EAAGE,EAAG,CAAC,CAACS,EAAGN,EAAGV,EAAGgB,GAAKN,EAAI,SAAUM,EAAG,CAAE,OAAOqB,GAAYrB,CAAC,IAAM,CAAG,EAAIf,CAAC,CAAG,CAAE,CAAE,EAAGQ,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGA,EAAE,EAAG,CAAC,EAAGD,EAAEH,CAAC,EAAGG,EAAEF,CAAC,EAAGF,EAAIG,EAAGO,GAAKO,EAAE,CAAC,EAAG,CAAE,EAAGjB,EAAG,IAAI,GAAI,CAAE,IAAIa,EAAI,CAAC,EAAG,OAAOH,GAAK,CAACO,EAAE,EAAID,EAAS,EAAG,CAAC,CAAC,EAAGpB,EAAG,EAAE,KAAM,EAAGiB,CAAC,CAAC,EAAGF,EAAEE,EAAG,CAAC,CAAC,CAAG,CAAE,CAAG,CACn/G,SAASmB,GAAepB,EAAG,CAAE,IAAId,EAAIoC,GAAatB,EAAG,QAAQ,EAAG,OAAmB,OAAOd,GAAnB,SAAuBA,EAAIA,EAAI,EAAI,CAC1G,SAASoC,GAAatB,EAAGhB,EAAG,CAAE,GAAgB,OAAOgB,GAAnB,UAAwB,CAACA,EAAG,OAAOA,EAAG,IAAIG,EAAIH,EAAE,OAAO,WAAW,EAAG,GAAeG,IAAX,OAAc,CAAE,IAAI,EAAIA,EAAE,KAAKH,EAAGhB,GAAK,SAAS,EAAG,GAAgB,OAAO,GAAnB,SAAsB,OAAO,EAAG,MAAM,IAAI,UAAU,8CAA8C,CAAG,CAAE,OAAqBA,IAAb,SAAiB,OAAS,QAAQgB,CAAC,CAAG,CACvT,SAASa,GAAiB,EAAG,EAAG,EAAG,CAAc,OAAO,GAAnB,WAAyB,GAAK,EAAI,EAAE,aAAe,IAAM,EAAI,IAAM,IAAK,GAAI,CAAE,OAAO,eAAe,EAAG,OAAQ,CAAE,aAAc,GAAI,MAAO,EAAI,EAAI,IAAM,EAAI,CAAE,CAAC,CAAG,MAAY,CAAC,CAAE,OAAO,CAAG,CAChO,SAASQ,GAAY,EAAG,CAAE,GAAI,OAAO,CAAC,IAAM,EAAG,MAAM,UAAU,qDAAgE,IAAT,KAAa,OAAO,EAAI,OAAO,EAAG,OAAO,CAAG,CAIlK,IAAME,GAAW,EACbC,EACEC,GAAN,cAA4BC,EAAe,CACzC,MAAO,EACJ,CACC,EAAG,CAACvD,GAAYC,GAAkBC,GAAiBC,GAAuBC,GAAqBC,GAA2BC,GAAkBC,GAAwBC,GAAmBC,GAAyBC,GAAkBC,GAAwBb,EAAU,EACpQ,EAAG,CAACuD,EAAgBtD,EAAU,CAChC,EAAIa,GAAW,KAAM,CAAC4C,GAAc,iBAAiB,CAAC,EAAG,CAAC,CAACC,GAAK,CAC9D,KAAM,QACN,QAAS,GACT,aAAc,EAChB,CAAC,EAAG,EAAG,MAAM,EAAG,CAACA,GAAK,CACpB,KAAM,OACN,aAAc,cAChB,CAAC,EAAG,EAAG,WAAW,EAAG,CAACC,GAAM,CAC1B,IAAK,SACP,CAAC,EAAG,EAAG,eAAe,EAAG,CAACA,GAAM,CAC9B,IAAK,MACP,CAAC,EAAG,EAAG,YAAY,EAAG,CAACC,GAAM,CAC3B,KAAM,aACN,QAAS,GACT,SAAU,EACZ,CAAC,EAAG,EAAG,aAAa,EAAG,CAACA,GAAM,CAC5B,KAAM,YACN,QAAS,GACT,SAAU,EACZ,CAAC,EAAG,EAAG,YAAY,EAAG,CAAC,CAACC,GAAOC,GAAU,CAAC,OAAQ,WAAW,CAAC,CAAC,EAAG,EAAG,eAAe,EAAG,CAACC,EAAQ,CAC9F,SAAU,GACV,KAAM,OACR,CAAC,EAAG,EAAG,iBAAiB,EAAG,CAACA,EAAQ,CAClC,IAAK,UACL,KAAM,OACR,CAAC,EAAG,EAAG,gBAAgB,EAAG,CAACA,EAAQ,CACjC,IAAK,UACL,KAAM,SACR,CAAC,EAAG,EAAG,kBAAkB,EAAG,CAACA,EAAQ,CACnC,IAAK,OACL,KAAM,SACR,CAAC,EAAG,EAAG,eAAe,EAAG,CAACA,EAAQ,CAChC,SAAU,oBACV,KAAM,OACR,CAAC,EAAG,EAAG,aAAa,CAAC,EAAG,EAAG,OAAQP,EAAc,EACnD,CACA,MAAQzD,GAAW,IAAI,EAAGE,GAAW,IAAI,GACzC,WAAaC,GAAiB,IAAI,EAAGC,GAAgB,IAAI,GACzD,eAAiBC,GAAsB,IAAI,EAAGC,GAAoB,IAAI,GACtE,YAAcC,GAA0B,IAAI,EAAGC,GAAiB,IAAI,GACpE,aAAeC,GAAuB,IAAI,EAAGC,GAAkB,IAAI,GACnE,YAAcC,GAAwB,IAAI,EAAGC,GAAiB,IAAI,GAClE,QAAUC,GAAuB,IAAI,EAAG,YAAY,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAG,CAAC,CAAC,IAC1F,gBAAkB,KAClB,aAAe,KACf,mBAAoB,CAClB,MAAM,kBAAkB,EACxB,eAAe,IAAM,KAAK,cAAc,CAAC,CAC3C,CACA,sBAAuB,CACrB,KAAK,iBAAiB,EACtB,MAAM,qBAAqB,CAC7B,CACA,UAAW,CACT,OAAO,MAAM,KAAK,KAAK,YAAY,iBAAiB,mBAAmB,GAAK,CAAC,CAAC,EAAE,OAAOoD,GAAQA,EAAK,aAAa,eAAe,IAAM,MAAM,CAC9I,CACA,kBAAmB,CACjB,KAAK,kBAAkB,EACvB,KAAK,gBAAkB,IACzB,CACA,gBAAiB,CACX,CAAC,KAAK,eAAiB,CAAC,KAAK,aACjC,KAAK,iBAAiB,EACtB,KAAK,gBAAkBC,GAAe,CACpC,OAAQ,KAAK,cACb,SAAU,KAAK,WACf,aAAc,IAAM,KAAK,UACzB,IAAKZ,EACP,CAAC,EACH,CACA,eAAgB,CACd,GAAI,CAAC,KAAK,eAAiB,CAAC,KAAK,WAAY,OAC7C,KAAK,WAAW,GAAK,KAAK,OAC1B,KAAK,cAAc,aAAa,gBAAiB,KAAK,MAAM,EAC5D,KAAK,cAAc,aAAa,gBAAiB,MAAM,EACvD,KAAK,cAAc,aAAa,gBAAiB,OAAO,KAAK,IAAI,CAAC,EAClE,KAAK,WAAW,OAAS,CAAC,KAAK,KAC3B,KAAK,KAAM,KAAK,eAAe,EAAO,KAAK,iBAAiB,EAChE,IAAMa,EAAQ,KAAK,aAEnB,GADA,KAAK,aAAe,KAChB,EAACA,EAEL,IADIA,IAAU,SAAS,KAAK,SAAS,EAAE,CAAC,GAAG,MAAM,EAC7CA,IAAU,OAAQ,CACpB,IAAMC,EAAQ,KAAK,SAAS,EAC5BA,EAAMA,EAAM,OAAS,CAAC,GAAG,MAAM,CACjC,CACID,IAAU,WAAW,KAAK,eAAe,MAAM,EACrD,CACA,QAAQE,EAAMF,EAAQ,KAAM,CAC1B,IAAMG,EAAU,KAAK,KACrB,KAAK,aAAeH,EACpB,KAAK,KAAOE,EACRC,GAAW,CAACD,GAAM,KAAK,WAAW,KAAK,EACvCC,IAAYD,GAAM,KAAK,cAAc,CAC3C,CACA,gBAAgBE,EAAQ,CACtB,GAAI,CAAC,KAAK,KAAM,OAChB,IAAMC,EAASD,EAAO,OAClB,KAAK,eAAe,SAASC,CAAM,GAAK,KAAK,YAAY,SAASA,CAAM,GAC5E,KAAK,QAAQ,EAAK,CACpB,CACA,gBAAiB,CACf,KAAK,QAAQ,CAAC,KAAK,KAAM,KAAK,KAAO,KAAO,OAAO,CACrD,CACA,iBAAiBD,EAAQ,CACvB,OAAQA,EAAO,IAAK,CAClB,IAAK,YACL,IAAK,QACL,IAAK,IACHA,EAAO,eAAe,EACtB,KAAK,QAAQ,GAAM,OAAO,EAC1B,MACF,IAAK,UACHA,EAAO,eAAe,EACtB,KAAK,QAAQ,GAAM,MAAM,EACzB,MACF,QACE,KACJ,CACF,CACA,cAAcA,EAAQ,CACpB,IAAMH,EAAQ,KAAK,SAAS,EACtBK,EAAU,SAAS,cACnBC,EAAQD,EAAUL,EAAM,QAAQK,CAAO,EAAI,GACjD,OAAQF,EAAO,IAAK,CAClB,IAAK,YACH,CACEA,EAAO,eAAe,EACTH,GAAOM,EAAQ,GAAKN,EAAM,MAAM,GACvC,MAAM,EACZ,KACF,CACF,IAAK,UACH,CACEG,EAAO,eAAe,EACTH,GAAOM,EAAQ,EAAIN,EAAM,QAAUA,EAAM,MAAM,GACtD,MAAM,EACZ,KACF,CACF,IAAK,OACHG,EAAO,eAAe,EACtBH,EAAM,CAAC,GAAG,MAAM,EAChB,MACF,IAAK,MACHG,EAAO,eAAe,EACtBH,EAAMA,EAAM,OAAS,CAAC,GAAG,MAAM,EAC/B,MACF,IAAK,SACHG,EAAO,eAAe,EACtB,KAAK,QAAQ,GAAO,SAAS,EAC7B,MACF,IAAK,MACH,KAAK,QAAQ,EAAK,EAClB,MACF,IAAK,QACL,IAAK,IACCE,GAAWL,EAAM,SAASK,CAAO,IACnCF,EAAO,eAAe,EACtB,KAAK,aAAaE,CAAO,GAE3B,MACF,QACE,KACJ,CACF,CACA,YAAYF,EAAQ,CAClB,IAAMN,EAAOM,EAAO,OAAO,QAAQ,mBAAmB,EAClD,CAACN,GAAQ,CAAC,KAAK,SAASA,CAAI,GAChC,KAAK,aAAaA,CAAI,CACxB,CACA,aAAaA,EAAM,CACjB,IAAMU,EAAQV,EAAK,aAAa,YAAY,GAAKA,EAAK,aAAa,KAAK,GAAK,GAC7E,KAAK,YAAY,KAAK,CACpB,MAAAU,CACF,CAAC,EACD,KAAK,QAAQ,GAAO,SAAS,CAC/B,CACA,QAAS,CACP,OAAsBC,GAAK,MAAO,CAChC,MAAO,kBACP,SAAU,CAAgBA,GAAK,SAAU,CACvC,KAAM,SACN,WAAY,UACZ,MAAO,yEACP,gBAAiB,OACjB,gBAAiB,QACjB,SAAU,CAAgBC,EAAI,OAAQ,CACpC,KAAM,SACR,CAAC,EAAkBA,EAAI,OAAQ,CAC7B,MAAO,2BACP,cAAe,MACjB,CAAC,CAAC,CACJ,CAAC,EAAkBA,EAAI,MAAO,CAC5B,WAAY,OACZ,MAAO,qCACP,KAAM,OACN,OAAQ,GACR,SAAyBA,EAAI,OAAQ,CAAC,CAAC,CACzC,CAAC,CAAC,CACJ,CAAC,CACH,CACA,MAAO,CACL5E,GAAW,CACb,CACF,EE5NA,OAAS,OAAA6E,GAAK,QAAAC,OAAY,4BCA1B,IAAMC,GAAsC,OAAO,IAAI,yCAAyC,EAC1FC,GAAuC,OAAO,IAAI,0CAA0C,EAC5FC,GAAuC,OAAO,IAAI,0CAA0C,EAElG,SAASC,GAAkBC,EAAMC,EAAS,CACxCD,EAAKE,EAAoB,EAAID,EAC7B,IAAME,EAAYF,EAAQG,EAAqB,EAC3CD,IACFH,EAAKI,EAAqB,EAAID,EAC9BH,EAAKK,EAAqB,EAAIJ,EAAQI,EAAqB,GAAKJ,EAAQ,KAE5E,CACO,SAASK,GAAkBL,EAASM,EAAQC,EAAU,CAC3D,IAAMR,EAAOS,GAAQF,EAAOE,CAAI,EAChC,OAAAV,GAAkBC,EAAMC,CAAO,EACxBD,CACT,CDbO,IAAMU,GAAgBC,GAAkBC,EAAsB,CAAC,CACpE,QAAAC,EACA,MAAAC,EACA,GAAGC,CACL,IAAqBC,GAAK,kBAAmB,CAC3C,GAAGD,EACH,SAAU,CAAgBE,GAAI,OAAQ,CACpC,KAAM,UACN,SAAUJ,CACZ,CAAC,EAAGC,EAAM,IAAII,GAAuBD,GAAI,SAAU,CACjD,KAAM,SACN,MAAO,wBACP,KAAM,WACN,aAAcC,EAAK,MACnB,gBAAiBA,EAAK,SAAW,OAAS,OAC1C,SAAU,GACV,SAAUA,EAAK,KACjB,CAAC,CAAC,CAAC,CACL,CAAC,EAAG,CACF,YAAa,CAAC,mBAAmB,CACnC,CAAC",
6
- "names": ["jsx", "jsxs", "RadiantElement", "bound", "customElement", "event", "onEvent", "onUpdated", "prop", "query", "OPPOSITE", "DEFAULT_VIEWPORT_PADDING", "parsePlacement", "placement", "dash", "side", "align", "primaryAxis", "coordsFor", "anchor", "size", "gap", "width", "height", "x", "y", "overflowOnPrimary", "coords", "viewport", "padding", "vw", "vh", "freeSpaceOnSide", "clampCrossAxis", "maxX", "maxY", "computeFloatingCoords", "preferred", "preferredCoords", "preferredOverflow", "flipped", "flippedCoords", "preferredFree", "applyFloatingPosition", "floating", "attachFloating", "getPlacement", "update", "observer", "_initProto", "_initClass", "_init_open", "_init_extra_open", "_init_placement", "_init_extra_placement", "_init_triggerTarget", "_init_extra_triggerTarget", "_init_menuTarget", "_init_extra_menuTarget", "_init_changeEvent", "_init_extra_changeEvent", "_init_closeEvent", "_init_extra_closeEvent", "_applyDecs", "r", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "t", "n", "b", "e", "applyDec", "w", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "MENU_GAP", "_RuiMenuButton", "RuiMenuButton", "RadiantElement", "customElement", "prop", "query", "event", "bound", "onUpdated", "onEvent", "item", "attachFloating", "focus", "items", "next", "wasOpen", "event2", "target", "current", "index", "value", "jsxs", "jsx", "jsx", "jsxs", "RADIANT_VIEW_ELEMENT", "RADIANT_SCRIPT_MODULE", "RADIANT_SCRIPT_EXPORT", "linkViewToElement", "view", "element", "RADIANT_VIEW_ELEMENT", "ssrModule", "RADIANT_SCRIPT_MODULE", "RADIANT_SCRIPT_EXPORT", "defineRadiantView", "render", "_options", "args", "RuiMenuButton", "defineRadiantView", "_RuiMenuButton", "trigger", "items", "props", "jsxs", "jsx", "item"]
3
+ "sources": ["../../../../src/components/ui/menu-button/menu-button.script.tsx", "../../../../src/components/ui/shared/floating-position.ts", "../../../../src/components/ui/shared/portal.ts", "../../../../src/components/ui/shared/popover-controller.ts", "../../../../src/components/ui/menu-button/menu-button.tsx", "../../../../src/lib/radiant-view.ts"],
4
+ "sourcesContent": ["let _initProto, _initClass, _init_open, _init_extra_open, _init_placement, _init_extra_placement, _init_triggerTarget, _init_extra_triggerTarget, _init_menuTarget, _init_extra_menuTarget, _init_changeEvent, _init_extra_changeEvent, _init_closeEvent, _init_extra_closeEvent;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { RadiantElement, bound, customElement, event, onEvent, onUpdated, prop, query } from \"@ecopages/radiant\";\nimport { PopoverController, shouldDismissPopoverPointer } from \"../shared/popover-controller\";\nconst MENU_GAP = 6;\nlet _RuiMenuButton;\nclass RuiMenuButton extends RadiantElement {\n static {\n ({\n e: [_init_open, _init_extra_open, _init_placement, _init_extra_placement, _init_triggerTarget, _init_extra_triggerTarget, _init_menuTarget, _init_extra_menuTarget, _init_changeEvent, _init_extra_changeEvent, _init_closeEvent, _init_extra_closeEvent, _initProto],\n c: [_RuiMenuButton, _initClass]\n } = _applyDecs(this, [customElement(\"rui-menu-button\")], [[prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"open\"], [prop({\n type: String,\n defaultValue: \"bottom-start\"\n }), 0, \"placement\"], [query({\n ref: \"trigger\"\n }), 0, \"triggerTarget\"], [query({\n ref: \"menu\"\n }), 0, \"menuTarget\"], [event({\n name: \"rui-change\",\n bubbles: true,\n composed: true\n }), 0, \"changeEvent\"], [event({\n name: \"rui-close\",\n bubbles: true,\n composed: true\n }), 0, \"closeEvent\"], [[bound, onUpdated([\"open\", \"placement\"])], 2, \"syncOpenState\"], [onEvent({\n document: true,\n type: \"pointerdown\"\n }), 2, \"onDocumentPointerDown\"], [onEvent({\n ref: \"trigger\",\n type: \"click\"\n }), 2, \"onTriggerClick\"], [onEvent({\n ref: \"trigger\",\n type: \"keydown\"\n }), 2, \"onTriggerKeydown\"], [onEvent({\n ref: \"menu\",\n type: \"keydown\"\n }), 2, \"onMenuKeydown\"], [onEvent({\n selector: '[role=\"menuitem\"]',\n type: \"click\"\n }), 2, \"onItemClick\"]], 0, void 0, RadiantElement));\n }\n open = (_initProto(this), _init_open(this));\n placement = (_init_extra_open(this), _init_placement(this));\n triggerTarget = (_init_extra_placement(this), _init_triggerTarget(this));\n menuTarget = (_init_extra_triggerTarget(this), _init_menuTarget(this));\n changeEvent = (_init_extra_menuTarget(this), _init_changeEvent(this));\n closeEvent = (_init_extra_changeEvent(this), _init_closeEvent(this));\n menuId = (_init_extra_closeEvent(this), `rui-menu-${Math.random().toString(36).slice(2, 9)}`);\n popoverController = null;\n pendingFocus = null;\n connectedCallback() {\n super.connectedCallback();\n queueMicrotask(() => this.syncOpenState());\n }\n disconnectedCallback() {\n this.popoverController?.destroy();\n this.popoverController = null;\n super.disconnectedCallback();\n }\n getItems() {\n return Array.from(this.menuTarget?.querySelectorAll('[role=\"menuitem\"]') ?? []).filter(item => !item.hidden && item.getAttribute(\"aria-disabled\") !== \"true\");\n }\n ensurePopoverController() {\n if (!this.popoverController) {\n this.popoverController = new PopoverController({\n getAnchor: () => this.triggerTarget,\n getFloating: () => this.menuTarget,\n getOpen: () => this.open,\n getPlacement: () => this.placement,\n gap: MENU_GAP,\n portal: false\n });\n }\n return this.popoverController;\n }\n syncOpenState() {\n if (!this.triggerTarget || !this.menuTarget) return;\n this.menuTarget.id = this.menuId;\n this.triggerTarget.setAttribute(\"aria-controls\", this.menuId);\n this.triggerTarget.setAttribute(\"aria-haspopup\", \"menu\");\n this.triggerTarget.setAttribute(\"aria-expanded\", String(this.open));\n this.menuTarget.hidden = !this.open;\n const controller = this.ensurePopoverController();\n controller.updateConfig({\n getPlacement: () => this.placement,\n getOpen: () => this.open\n });\n controller.sync();\n const focus = this.pendingFocus;\n this.pendingFocus = null;\n if (!focus) return;\n if (focus === \"first\") this.getItems()[0]?.focus();\n if (focus === \"last\") {\n const items = this.getItems();\n items[items.length - 1]?.focus();\n }\n if (focus === \"trigger\") this.triggerTarget?.focus();\n }\n setOpen(next, focus = null) {\n const wasOpen = this.open;\n this.pendingFocus = focus;\n this.open = next;\n if (wasOpen && !next) this.closeEvent.emit();\n if (wasOpen === next) this.syncOpenState();\n }\n onDocumentPointerDown(event2) {\n if (!this.open) return;\n const target = event2.target;\n if (!shouldDismissPopoverPointer(this.triggerTarget, this.menuTarget, target)) return;\n this.setOpen(false);\n }\n onTriggerClick() {\n this.setOpen(!this.open, this.open ? null : \"first\");\n }\n onTriggerKeydown(event2) {\n switch (event2.key) {\n case \"ArrowDown\":\n case \"Enter\":\n case \" \":\n event2.preventDefault();\n this.setOpen(true, \"first\");\n break;\n case \"ArrowUp\":\n event2.preventDefault();\n this.setOpen(true, \"last\");\n break;\n default:\n break;\n }\n }\n onMenuKeydown(event2) {\n const items = this.getItems();\n const current = document.activeElement;\n const index = current ? items.indexOf(current) : -1;\n switch (event2.key) {\n case \"ArrowDown\":\n {\n event2.preventDefault();\n const next = items[(index + 1) % items.length];\n next?.focus();\n break;\n }\n case \"ArrowUp\":\n {\n event2.preventDefault();\n const prev = items[(index - 1 + items.length) % items.length];\n prev?.focus();\n break;\n }\n case \"Home\":\n event2.preventDefault();\n items[0]?.focus();\n break;\n case \"End\":\n event2.preventDefault();\n items[items.length - 1]?.focus();\n break;\n case \"Escape\":\n event2.preventDefault();\n this.setOpen(false, \"trigger\");\n break;\n case \"Tab\":\n this.setOpen(false);\n break;\n case \"Enter\":\n case \" \":\n if (current && items.includes(current)) {\n event2.preventDefault();\n this.activateItem(current);\n }\n break;\n default:\n break;\n }\n }\n onItemClick(event2) {\n const item = event2.target.closest('[role=\"menuitem\"]');\n if (!item || !this.contains(item)) return;\n this.activateItem(item);\n }\n activateItem(item) {\n const value = item.getAttribute(\"data-value\") || item.textContent?.trim() || \"\";\n this.changeEvent.emit({\n value\n });\n this.setOpen(false, \"trigger\");\n }\n render() {\n return /* @__PURE__ */jsxs(\"div\", {\n class: \"rui-menu-button\",\n children: [/* @__PURE__ */jsxs(\"button\", {\n type: \"button\",\n \"data-ref\": \"trigger\",\n class: \"rui-button rui-button--primary rui-button--md rui-menu-button__trigger\",\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": \"false\",\n children: [/* @__PURE__ */jsx(\"slot\", {\n name: \"trigger\"\n }), /* @__PURE__ */jsx(\"span\", {\n class: \"rui-menu-button__chevron\",\n \"aria-hidden\": \"true\"\n })]\n }), /* @__PURE__ */jsx(\"div\", {\n \"data-ref\": \"menu\",\n class: \"rui-menu-button__menu rui-popover rui-floating\",\n role: \"menu\",\n hidden: true,\n children: /* @__PURE__ */jsx(\"slot\", {})\n })]\n });\n }\n static {\n _initClass();\n }\n}\nexport { _RuiMenuButton as RuiMenuButton };", "const OPPOSITE = {\n top: \"bottom\",\n bottom: \"top\",\n left: \"right\",\n right: \"left\"\n};\nconst DEFAULT_VIEWPORT_PADDING = 8;\nfunction parsePlacement(placement) {\n const dash = placement.indexOf(\"-\");\n if (dash === -1) return {\n side: placement,\n align: \"center\"\n };\n const side = placement.slice(0, dash);\n const align = placement.slice(dash + 1);\n return {\n side,\n align: align === \"start\" || align === \"end\" ? align : \"center\"\n };\n}\nfunction primaryAxis(side) {\n return side === \"top\" || side === \"bottom\" ? \"y\" : \"x\";\n}\nfunction coordsFor(anchor, size, side, align, gap) {\n const {\n width,\n height\n } = size;\n let x = 0;\n let y = 0;\n switch (side) {\n case \"top\":\n y = anchor.top - height - gap;\n break;\n case \"bottom\":\n y = anchor.bottom + gap;\n break;\n case \"left\":\n x = anchor.left - width - gap;\n break;\n case \"right\":\n x = anchor.right + gap;\n break;\n }\n if (primaryAxis(side) === \"y\") {\n if (align === \"start\") x = anchor.left;else if (align === \"end\") x = anchor.right - width;else x = anchor.left + (anchor.width - width) / 2;\n } else {\n if (align === \"start\") y = anchor.top;else if (align === \"end\") y = anchor.bottom - height;else y = anchor.top + (anchor.height - height) / 2;\n }\n return {\n x,\n y\n };\n}\nfunction overflowOnPrimary(coords, size, side, viewport) {\n const {\n padding,\n width: vw,\n height: vh\n } = viewport;\n if (side === \"top\") return Math.max(0, padding - coords.y);\n if (side === \"bottom\") return Math.max(0, coords.y + size.height - (vh - padding));\n if (side === \"left\") return Math.max(0, padding - coords.x);\n return Math.max(0, coords.x + size.width - (vw - padding));\n}\nfunction freeSpaceOnSide(anchor, size, side, viewport) {\n const {\n padding,\n width: vw,\n height: vh\n } = viewport;\n if (side === \"top\") return anchor.top - padding - size.height;\n if (side === \"bottom\") return vh - padding - size.height - anchor.bottom;\n if (side === \"left\") return anchor.left - padding - size.width;\n return vw - padding - size.width - anchor.right;\n}\nfunction toPlacement(side, align) {\n if (align === \"center\") {\n return side;\n }\n return `${side}-${align}`;\n}\nfunction clampCrossAxis(coords, size, side, viewport) {\n const {\n padding,\n width: vw,\n height: vh\n } = viewport;\n if (primaryAxis(side) === \"y\") {\n const maxX = Math.max(padding, vw - padding - size.width);\n return {\n x: Math.min(Math.max(coords.x, padding), maxX),\n y: coords.y\n };\n }\n const maxY = Math.max(padding, vh - padding - size.height);\n return {\n x: coords.x,\n y: Math.min(Math.max(coords.y, padding), maxY)\n };\n}\nexport function computeFloatingCoords(anchor, size, placement, gap, viewport = {\n width: typeof window === \"undefined\" ? 0 : window.innerWidth,\n height: typeof window === \"undefined\" ? 0 : window.innerHeight,\n padding: DEFAULT_VIEWPORT_PADDING\n}) {\n return computeFloatingPosition(anchor, size, placement, gap, viewport).coords;\n}\nexport function computeFloatingPosition(anchor, size, placement, gap, viewport = {\n width: typeof window === \"undefined\" ? 0 : window.innerWidth,\n height: typeof window === \"undefined\" ? 0 : window.innerHeight,\n padding: DEFAULT_VIEWPORT_PADDING\n}) {\n const {\n side: preferred,\n align\n } = parsePlacement(placement);\n const preferredCoords = coordsFor(anchor, size, preferred, align, gap);\n const preferredOverflow = overflowOnPrimary(preferredCoords, size, preferred, viewport);\n let side = preferred;\n let coords = preferredCoords;\n if (preferredOverflow > 0) {\n const flipped = OPPOSITE[preferred];\n const flippedCoords = coordsFor(anchor, size, flipped, align, gap);\n const preferredFree = freeSpaceOnSide(anchor, size, preferred, viewport);\n const flippedFree = freeSpaceOnSide(anchor, size, flipped, viewport);\n if (flippedFree > preferredFree) {\n side = flipped;\n coords = flippedCoords;\n }\n }\n return {\n coords: clampCrossAxis(coords, size, side, viewport),\n placement: toPlacement(side, align)\n };\n}\nexport function applyFloatingPosition(anchor, floating, placement, gap, options = {}) {\n const {\n coords,\n placement: resolved\n } = computeFloatingPosition(anchor.getBoundingClientRect(), {\n width: floating.offsetWidth,\n height: floating.offsetHeight\n }, placement, gap);\n Object.assign(floating.style, {\n position: \"fixed\",\n left: `${coords.x}px`,\n top: `${coords.y}px`,\n right: \"auto\",\n bottom: \"auto\",\n visibility: \"visible\"\n });\n if (options.matchAnchorWidth) {\n floating.style.width = `${anchor.offsetWidth}px`;\n }\n floating.setAttribute(\"data-placement\", resolved);\n return resolved;\n}\nexport function attachFloating({\n anchor,\n floating,\n getPlacement,\n gap,\n matchAnchorWidth\n}) {\n const update = () => {\n if (floating.hidden) return;\n applyFloatingPosition(anchor, floating, getPlacement(), gap, {\n matchAnchorWidth\n });\n };\n update();\n window.addEventListener(\"resize\", update);\n window.addEventListener(\"scroll\", update, true);\n const observer = new ResizeObserver(update);\n observer.observe(anchor);\n observer.observe(floating);\n return () => {\n window.removeEventListener(\"resize\", update);\n window.removeEventListener(\"scroll\", update, true);\n observer.disconnect();\n };\n}", "export function mountPortal(node, container = document.body) {\n const parent = node.parentNode;\n if (!parent) {\n return {\n unmount: () => {}\n };\n }\n const placeholder = document.createComment(\"rui-portal\");\n parent.insertBefore(placeholder, node);\n container.appendChild(node);\n return {\n unmount: () => {\n const restoreParent = placeholder.parentNode;\n if (!restoreParent) {\n return;\n }\n restoreParent.insertBefore(node, placeholder);\n placeholder.remove();\n }\n };\n}", "import { attachFloating } from \"./floating-position\";\nimport { mountPortal } from \"./portal\";\nexport function popoverContains(anchor, floating, node) {\n if (!node) {\n return false;\n }\n return Boolean(anchor?.contains(node) || floating?.contains(node));\n}\nexport function shouldDismissPopoverFocus(anchor, floating, relatedTarget) {\n if (!(relatedTarget instanceof Node)) {\n return true;\n }\n return !popoverContains(anchor, floating, relatedTarget);\n}\nexport function shouldDismissPopoverPointer(anchor, floating, target) {\n return !popoverContains(anchor, floating, target);\n}\nexport class PopoverController {\n config;\n cleanupFloating = null;\n portalHandle = null;\n floatingElement = null;\n constructor(config) {\n this.config = config;\n }\n updateConfig(patch) {\n this.config = {\n ...this.config,\n ...patch\n };\n }\n sync() {\n const floating = this.resolveFloating();\n if (!floating) {\n return;\n }\n const open = this.config.getOpen();\n if (!open) {\n this.teardown();\n floating.hidden = true;\n return;\n }\n const anchor = this.config.getAnchor();\n if (!anchor) {\n return;\n }\n floating.hidden = false;\n const usePortal = this.config.portal !== false;\n if (usePortal) {\n if (!this.portalHandle) {\n this.portalHandle = mountPortal(floating, this.config.portalContainer ?? document.body);\n }\n } else if (this.portalHandle) {\n this.portalHandle.unmount();\n this.portalHandle = null;\n }\n this.teardownFloating();\n this.cleanupFloating = attachFloating({\n anchor,\n floating,\n getPlacement: this.config.getPlacement,\n gap: this.config.gap ?? 8,\n matchAnchorWidth: this.config.matchAnchorWidth\n });\n }\n contains(node) {\n return popoverContains(this.config.getAnchor(), this.resolveFloating(), node);\n }\n getFloatingElement() {\n return this.resolveFloating();\n }\n teardown() {\n this.teardownFloating();\n if (this.portalHandle) {\n this.portalHandle.unmount();\n this.portalHandle = null;\n }\n }\n destroy() {\n this.teardown();\n this.floatingElement = null;\n }\n resolveFloating() {\n const configuredFloating = this.config.getFloating();\n if (configuredFloating) {\n this.floatingElement = configuredFloating;\n }\n return configuredFloating ?? this.floatingElement;\n }\n teardownFloating() {\n this.cleanupFloating?.();\n this.cleanupFloating = null;\n }\n}", "import { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { defineRadiantView } from \"@/lib/radiant-view\";\nimport { RuiMenuButton as RuiMenuButtonElement } from \"./menu-button.script\";\nexport const RuiMenuButton = defineRadiantView(RuiMenuButtonElement, ({\n trigger,\n items,\n ...props\n}) => /* @__PURE__ */jsxs(\"rui-menu-button\", {\n ...props,\n children: [/* @__PURE__ */jsx(\"span\", {\n slot: \"trigger\",\n children: trigger\n }), items.map(item => /* @__PURE__ */jsx(\"button\", {\n type: \"button\",\n class: \"rui-menu-button__item\",\n role: \"menuitem\",\n \"data-value\": item.value,\n \"aria-disabled\": item.disabled ? \"true\" : void 0,\n tabindex: -1,\n children: item.label\n }))]\n}), {\n stylesheets: [\"./menu-button.css\"]\n});", "const RADIANT_VIEW_ELEMENT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewElement\");\nconst RADIANT_SCRIPT_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptModule\");\nconst RADIANT_SCRIPT_EXPORT = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.scriptExport\");\nconst RADIANT_VIEW_MODULE = /* @__PURE__ */Symbol.for(\"@ecopages/storybook-radiant.viewModule\");\nfunction linkViewToElement(view, element) {\n view[RADIANT_VIEW_ELEMENT] = element;\n const ssrModule = element[RADIANT_SCRIPT_MODULE];\n if (ssrModule) {\n view[RADIANT_SCRIPT_MODULE] = ssrModule;\n view[RADIANT_SCRIPT_EXPORT] = element[RADIANT_SCRIPT_EXPORT] ?? element.name;\n }\n}\nexport function defineRadiantView(element, render, _options) {\n const view = args => render(args);\n linkViewToElement(view, element);\n return view;\n}\nexport function attachRadiantStylesheets(target, _stylesheets, moduleUrl) {\n const view = target;\n view[RADIANT_VIEW_MODULE] = moduleUrl;\n return target;\n}\nexport function syncRadiantViewMetadata(view) {\n const element = view[RADIANT_VIEW_ELEMENT];\n if (element) {\n linkViewToElement(view, element);\n }\n}"],
5
+ "mappings": "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",
6
+ "names": ["jsx", "jsxs", "RadiantElement", "bound", "customElement", "event", "onEvent", "onUpdated", "prop", "query", "OPPOSITE", "DEFAULT_VIEWPORT_PADDING", "parsePlacement", "placement", "dash", "side", "align", "primaryAxis", "coordsFor", "anchor", "size", "gap", "width", "height", "x", "y", "overflowOnPrimary", "coords", "viewport", "padding", "vw", "vh", "freeSpaceOnSide", "toPlacement", "clampCrossAxis", "maxX", "maxY", "computeFloatingPosition", "anchor", "size", "placement", "gap", "viewport", "DEFAULT_VIEWPORT_PADDING", "preferred", "align", "parsePlacement", "preferredCoords", "coordsFor", "preferredOverflow", "overflowOnPrimary", "side", "coords", "flipped", "OPPOSITE", "flippedCoords", "preferredFree", "freeSpaceOnSide", "clampCrossAxis", "toPlacement", "applyFloatingPosition", "floating", "options", "resolved", "attachFloating", "getPlacement", "matchAnchorWidth", "update", "observer", "mountPortal", "node", "container", "parent", "placeholder", "restoreParent", "popoverContains", "anchor", "floating", "node", "shouldDismissPopoverPointer", "anchor", "floating", "target", "popoverContains", "PopoverController", "config", "patch", "mountPortal", "attachFloating", "node", "configuredFloating", "_initProto", "_initClass", "_init_open", "_init_extra_open", "_init_placement", "_init_extra_placement", "_init_triggerTarget", "_init_extra_triggerTarget", "_init_menuTarget", "_init_extra_menuTarget", "_init_changeEvent", "_init_extra_changeEvent", "_init_closeEvent", "_init_extra_closeEvent", "_applyDecs", "o", "i", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "t", "n", "r", "a", "b", "e", "applyDec", "w", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "MENU_GAP", "_RuiMenuButton", "RuiMenuButton", "RadiantElement", "customElement", "prop", "query", "event", "bound", "onUpdated", "onEvent", "item", "PopoverController", "controller", "focus", "items", "next", "wasOpen", "event2", "target", "shouldDismissPopoverPointer", "current", "index", "value", "jsxs", "jsx", "jsx", "jsxs", "RADIANT_VIEW_ELEMENT", "RADIANT_SCRIPT_MODULE", "RADIANT_SCRIPT_EXPORT", "linkViewToElement", "view", "element", "RADIANT_VIEW_ELEMENT", "ssrModule", "RADIANT_SCRIPT_MODULE", "RADIANT_SCRIPT_EXPORT", "defineRadiantView", "render", "_options", "args", "RuiMenuButton", "defineRadiantView", "_RuiMenuButton", "trigger", "items", "props", "jsxs", "jsx", "item"]
7
7
  }
@@ -5,6 +5,30 @@
5
5
  position: fixed;
6
6
  visibility: hidden;
7
7
  }
8
+ .rui-popover {
9
+ z-index: var(--z-index-popover, var(--z-popover));
10
+ overflow: auto;
11
+ border-radius: var(--radius-container, var(--radius-container));
12
+ border-style: var(--tw-border-style);
13
+ border-width: 1px;
14
+ border-color: var(--color-border, var(--border));
15
+ background-color: var(--color-background, var(--background));
16
+ --tw-shadow: var(--shadow-overlay);
17
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
18
+ }
19
+ .rui-popover--listbox {
20
+ display: flex;
21
+ width: 100%;
22
+ flex-direction: column;
23
+ overflow: hidden;
24
+ padding: 0px;
25
+ }
26
+ .rui-popover[hidden] {
27
+ display: none;
28
+ }
29
+ .rui-popover-trigger {
30
+ display: inline-flex;
31
+ }
8
32
  }
9
33
  rui-menu-button {
10
34
  display: inline-flex;
@@ -29,16 +53,8 @@ rui-menu-button {
29
53
  height: 0;
30
54
  }
31
55
  .rui-menu-button__menu {
32
- z-index: var(--z-index-popover, var(--z-popover));
33
56
  min-width: calc(var(--spacing, 0.25rem) * 40);
34
- border-radius: var(--radius-container, var(--radius-container));
35
- border-style: var(--tw-border-style);
36
- border-width: 1px;
37
- border-color: var(--color-border, var(--border));
38
- background-color: var(--color-background, var(--background));
39
57
  padding: var(--spacing-1, var(--space-1));
40
- --tw-shadow: var(--shadow-overlay);
41
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
42
58
  }
43
59
  .rui-menu-button__menu[hidden] {
44
60
  display: none;
@@ -45,16 +45,15 @@ export declare class RuiMenuButton extends RadiantElement {
45
45
  changeEvent: EventEmitter<RuiMenuButtonSelectDetail>;
46
46
  closeEvent: EventEmitter<void>;
47
47
  private menuId;
48
- private cleanupFloating;
48
+ private popoverController;
49
49
  private pendingFocus;
50
50
  connectedCallback(): void;
51
51
  disconnectedCallback(): void;
52
52
  private getItems;
53
- private teardownFloating;
54
- private attachFloating;
53
+ private ensurePopoverController;
55
54
  syncOpenState(): void;
56
55
  private setOpen;
57
- onDocumentClick(event: MouseEvent): void;
56
+ onDocumentPointerDown(event: PointerEvent): void;
58
57
  onTriggerClick(): void;
59
58
  onTriggerKeydown(event: KeyboardEvent): void;
60
59
  onMenuKeydown(event: KeyboardEvent): void;
@@ -1,2 +1,2 @@
1
- import{jsx as pe}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as he,customElement as ke,event as Ae,onEvent as I,prop as Te}from"@ecopages/radiant";function L(n,e){n.forEach((t,r)=>{t.tabIndex=r===e?0:-1})}function Me(n,e){if(!n.length)return null;let t=Math.max(0,Math.min(n.length-1,e));return L(n,t),n[t]?.focus(),n[t]??null}function xe(n,e){return n==="Home"?"first":n==="End"?"last":e==="horizontal"?n==="ArrowRight"?"next":n==="ArrowLeft"?"prev":null:n==="ArrowDown"?"next":n==="ArrowUp"?"prev":null}function V(n){let{items:e,current:t,key:r,orientation:l="horizontal",wrap:y=!0}=n;if(!e.length||!t)return{handled:!1};let c=e.indexOf(t);if(c<0)return{handled:!1};let i=xe(r,l);if(!i)return{handled:!1};let m=c;i==="first"?m=0:i==="last"?m=e.length-1:i==="next"?m=y?(c+1)%e.length:Math.min(e.length-1,c+1):m=y?(c-1+e.length)%e.length:Math.max(0,c-1);let R=Me(e,m);return R?{handled:!0,index:m,item:R}:{handled:!1}}var ue,se,le,ce,fe,me;function we(n,e,t,r,l,y){var c,i,m,R,D,U,k,J=Symbol.metadata||Symbol.for("Symbol.metadata"),Q=Object.defineProperty,W=Object.create,Y=[W(null),W(null)],Z=e.length;function S(o,b,p){return function(a,u){b&&(u=a,a=n);for(var g=0;g<o.length;g++)u=o[g].apply(a,p?[u]:[]);return p?u:a}}function x(o,b,p,a){if(typeof o!="function"&&(a||o!==void 0))throw new TypeError(b+" must "+(p||"be")+" a function"+(a?"":" or undefined"));return o}function H(o,b,p,a,u,g,E,h,v,M,N){function F(f){if(!N(f))throw new TypeError("Attempted to access private element on non-instance")}var X=[].concat(b[0]),ee=b[3],$=!E,A=u===1,te=u===3,ne=u===4,O=u===2;function j(f,_,ie){return function(q,ae){return _&&(ae=q,q=o),ie&&ie(q),s[f].call(q,ae)}}if(!$){var s={},B=[],w=te?"get":ne||A?"set":"value";if(v?(M||A?s={get:de(function(){return ee(this)},a,"get"),set:function(f){b[4](this,f)}}:s[w]=ee,M||de(s[w],a,O?"":w)):M||(s=Object.getOwnPropertyDescriptor(o,a)),!M&&!v){if((i=Y[+h][a])&&(i^u)!==7)throw Error("Decorating two elements with the same name ("+s[w].name+") is not supported yet");Y[+h][a]=u<3?1:u}}for(var d=o,C=X.length-1;C>=0;C-=p?2:1){var re=x(X[C],"A decorator","be",!0),oe=p?X[C-1]:void 0,G={},T={kind:["field","accessor","method","getter","setter","class"][u],name:a,metadata:c,addInitializer:function(f,_){if(f.v)throw new TypeError("attempted to call addInitializer after decoration was finished");x(_,"An initializer","be",!0),g.push(_)}.bind(null,G)};if($)i=re.call(oe,d,T),G.v=1,x(i,"class decorators","return")&&(d=i);else if(T.static=h,T.private=v,i=T.access={has:v?N.bind():function(f){return a in f}},ne||(i.get=v?O?function(f){return F(f),s.value}:j("get",0,F):function(f){return f[a]}),O||te||(i.set=v?j("set",0,F):function(f,_){f[a]=_}),d=re.call(oe,A?{get:s.get,set:s.set}:s[w],T),G.v=1,A){if(typeof d=="object"&&d)(i=x(d.get,"accessor.get"))&&(s.get=i),(i=x(d.set,"accessor.set"))&&(s.set=i),(i=x(d.init,"accessor.init"))&&B.unshift(i);else if(d!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else x(d,(M?"field":"method")+" decorators","return")&&(M?B.unshift(d):s[w]=d)}return u<2&&E.push(S(B,h,1),S(g,h,0)),M||$||(v?A?E.splice(-1,0,j("get",h),j("set",h)):E.push(O?s[w]:x.call.bind(s[w])):Q(o,a,s)),d}function P(o){return Q(o,J,{configurable:!0,enumerable:!0,value:c})}return y!==void 0&&(c=y[J]),c=W(c??null),D=[],U=function(o){o&&D.push(S(o))},k=function(o,b){for(var p=0;p<t.length;p++){var a=t[p],u=a[1],g=7&u;if((8&u)==o&&!g==b){var E=a[2],h=!!a[3],v=16&u;H(o?n:n.prototype,a,v,h?"#"+E:Ee(E),g,g<2?[]:o?R=R||[]:m=m||[],D,!!o,h,b,o&&h?function(M){return _e(M)===n}:l)}}},k(8,0),k(0,0),k(8,1),k(0,1),U(m),U(R),i=D,Z||P(n),{e:i,get c(){var o=[];return Z&&[P(n=H(n,[e],r,n.name,5,o)),S(o,1)]}}}function Ee(n){var e=Re(n,"string");return typeof e=="symbol"?e:e+""}function Re(n,e){if(typeof n!="object"||!n)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var r=t.call(n,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}function de(n,e,t){typeof e=="symbol"&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(n,"name",{configurable:!0,value:t?t+" "+e:e})}catch{}return n}function _e(n){if(Object(n)!==n)throw TypeError("right-hand side of 'in' should be an object, got "+(n!==null?typeof n:"null"));return n}var z,be=class extends he{static{({e:[le,ce,fe,me,ue],c:[z,se]}=we(this,[ke("rui-menubar")],[[Te({type:String,defaultValue:""}),0,"label"],[Ae({name:"rui-change",bubbles:!0,composed:!0}),0,"changeEvent"],[I({document:!0,type:"click"}),2,"onDocumentClick"],[I({selector:'[data-ref="menubar"] > [data-ref="menubar-root"] > [role="menuitem"]',type:"keydown"}),2,"onTopKeydown"],[I({selector:'[data-ref="menubar"] > [data-ref="menubar-root"] > [role="menuitem"]',type:"click"}),2,"onTopClick"],[I({selector:'[role="menu"] > [role="menuitem"]',type:"keydown"}),2,"onMenuKeydown"],[I({selector:'[role="menu"] > [role="menuitem"]',type:"click"}),2,"onMenuItemClick"]],0,void 0,he))}label=(ue(this),le(this));changeEvent=(ce(this),fe(this));resolvedAriaLabel=(me(this),this.$.label.map(e=>e||void 0));openRoot=null;getTopItems(){return Array.from(this.querySelectorAll('[data-ref="menubar"] > [data-ref="menubar-root"] > [role="menuitem"]'))}getMenuFor(e){return e.closest('[data-ref="menubar-root"]')?.querySelector(':scope > [role="menu"]')??null}getMenuItems(e){return Array.from(e.querySelectorAll(':scope > [role="menuitem"]')).filter(t=>t.getAttribute("aria-disabled")!=="true")}connectedCallback(){super.connectedCallback(),queueMicrotask(()=>L(this.getTopItems(),0))}closeOpenMenu(e=!1){if(!this.openRoot)return;let t=this.openRoot.querySelector(':scope > [role="menuitem"]'),r=this.openRoot.querySelector(':scope > [role="menu"]');t&&t.setAttribute("aria-expanded","false"),r&&(r.hidden=!0),this.openRoot=null,e&&t&&t.focus()}openMenu(e,t="first"){let r=e.closest('[data-ref="menubar-root"]'),l=this.getMenuFor(e);if(!(!r||!l)&&(this.openRoot&&this.openRoot!==r&&this.closeOpenMenu(),e.setAttribute("aria-expanded","true"),l.hidden=!1,this.openRoot=r,t==="first")){let y=this.getMenuItems(l);L(y,0),y[0]?.focus()}}onDocumentClick(e){this.openRoot&&(this.contains(e.target)||this.closeOpenMenu())}onTopKeydown(e){let t=this.getTopItems(),r=e.target.closest('[role="menuitem"]');if(!r||!t.includes(r))return;if(e.key==="ArrowDown"||e.key==="Enter"||e.key===" "){this.getMenuFor(r)&&(e.preventDefault(),this.openMenu(r,"first"));return}if(e.key==="Escape"){e.preventDefault(),this.closeOpenMenu(!0);return}let l=V({items:t,current:r,key:e.key,orientation:"horizontal"});l.handled&&(e.preventDefault(),this.openRoot&&(this.getMenuFor(l.item)?this.openMenu(l.item,"first"):this.closeOpenMenu()))}onTopClick(e){let t=e.target.closest('[role="menuitem"]');if(!t||!this.getTopItems().includes(t))return;if(!this.getMenuFor(t)){this.closeOpenMenu();return}t.getAttribute("aria-expanded")==="true"?this.closeOpenMenu():this.openMenu(t,"first")}onMenuKeydown(e){let t=e.target.closest('[role="menu"]'),r=e.target.closest('[role="menuitem"]');if(!t||!r||!this.contains(t))return;let l=this.getMenuItems(t);if(e.key==="Escape"){e.preventDefault(),this.closeOpenMenu(!0);return}if(e.key==="Enter"||e.key===" "){e.preventDefault(),this.activateItem(r);return}if(e.key==="ArrowLeft"||e.key==="ArrowRight"){let c=this.getTopItems(),i=t.parentElement?.querySelector(':scope > [role="menuitem"]');if(!i)return;e.preventDefault();let m=V({items:c,current:i,key:e.key,orientation:"horizontal"});m.handled&&this.getMenuFor(m.item)&&this.openMenu(m.item,"first");return}V({items:l,current:r,key:e.key,orientation:"vertical"}).handled&&e.preventDefault()}onMenuItemClick(e){let t=e.target.closest('[role="menuitem"]');!t||!this.contains(t)||t.parentElement?.getAttribute("role")==="menu"&&this.activateItem(t)}activateItem(e){let t=e.getAttribute("data-value")||e.textContent?.trim()||"";this.changeEvent.emit({value:t}),this.closeOpenMenu(!0)}render(){return pe("div",{class:"rui-menubar","data-ref":"menubar",role:"menubar","aria-label":this.resolvedAriaLabel,children:pe("slot",{})})}static{se()}};import{jsx as K,jsxs as Se}from"@ecopages/jsx/jsx-runtime";var Ie=Symbol.for("@ecopages/storybook-radiant.viewElement"),ge=Symbol.for("@ecopages/storybook-radiant.scriptModule"),ye=Symbol.for("@ecopages/storybook-radiant.scriptExport");function De(n,e){n[Ie]=e;let t=e[ge];t&&(n[ge]=t,n[ye]=e[ye]??e.name)}function ve(n,e,t){let r=l=>e(l);return De(r,n),r}var Oe=ve(z,({items:n,...e})=>K("rui-menubar",{...e,children:n.map(t=>Se("div",{class:"rui-menubar__root","data-ref":"menubar-root",children:[K("button",{type:"button",class:"rui-menubar__item",role:"menuitem",tabindex:-1,"aria-haspopup":t.items?.length?"true":void 0,"aria-expanded":t.items?.length?"false":void 0,children:t.label}),t.items?.length?K("div",{class:"rui-menubar__menu",role:"menu",hidden:!0,children:t.items.map(r=>K("button",{type:"button",class:"rui-menubar__menu-item",role:"menuitem","data-value":r.id,tabindex:-1,children:r.label}))}):null]}))}),{stylesheets:["./menubar.css"]});export{Oe as RuiMenubar,z as RuiMenubarElement};
1
+ import{jsx as Me}from"@ecopages/jsx/jsx-runtime";import{RadiantElement as Ee,customElement as Be,event as Ke,onEvent as D,prop as $e}from"@ecopages/radiant";function H(t,e){t.forEach((n,o)=>{n.tabIndex=o===e?0:-1})}function ke(t,e){if(!t.length)return null;let n=Math.max(0,Math.min(t.length-1,e));return H(t,n),t[n]?.focus(),t[n]??null}function Ce(t,e){return t==="Home"?"first":t==="End"?"last":e==="horizontal"?t==="ArrowRight"?"next":t==="ArrowLeft"?"prev":null:t==="ArrowDown"?"next":t==="ArrowUp"?"prev":null}function W(t){let{items:e,current:n,key:o,orientation:r="horizontal",wrap:a=!0}=t;if(!e.length||!n)return{handled:!1};let i=e.indexOf(n);if(i<0)return{handled:!1};let s=Ce(o,r);if(!s)return{handled:!1};let u=i;s==="first"?u=0:s==="last"?u=e.length-1:s==="next"?u=a?(i+1)%e.length:Math.min(e.length-1,i+1):u=a?(i-1+e.length)%e.length:Math.max(0,i-1);let b=ke(e,u);return b?{handled:!0,index:u,item:b}:{handled:!1}}var Se={top:"bottom",bottom:"top",left:"right",right:"left"},De=8;function Te(t){let e=t.indexOf("-");if(e===-1)return{side:t,align:"center"};let n=t.slice(0,e),o=t.slice(e+1);return{side:n,align:o==="start"||o==="end"?o:"center"}}function ce(t){return t==="top"||t==="bottom"?"y":"x"}function ue(t,e,n,o,r){let{width:a,height:i}=e,s=0,u=0;switch(n){case"top":u=t.top-i-r;break;case"bottom":u=t.bottom+r;break;case"left":s=t.left-a-r;break;case"right":s=t.right+r;break}return ce(n)==="y"?o==="start"?s=t.left:o==="end"?s=t.right-a:s=t.left+(t.width-a)/2:o==="start"?u=t.top:o==="end"?u=t.bottom-i:u=t.top+(t.height-i)/2,{x:s,y:u}}function Fe(t,e,n,o){let{padding:r,width:a,height:i}=o;return n==="top"?Math.max(0,r-t.y):n==="bottom"?Math.max(0,t.y+e.height-(i-r)):n==="left"?Math.max(0,r-t.x):Math.max(0,t.x+e.width-(a-r))}function le(t,e,n,o){let{padding:r,width:a,height:i}=o;return n==="top"?t.top-r-e.height:n==="bottom"?i-r-e.height-t.bottom:n==="left"?t.left-r-e.width:a-r-e.width-t.right}function Ie(t,e){return e==="center"?t:`${t}-${e}`}function Pe(t,e,n,o){let{padding:r,width:a,height:i}=o;if(ce(n)==="y"){let u=Math.max(r,a-r-e.width);return{x:Math.min(Math.max(t.x,r),u),y:t.y}}let s=Math.max(r,i-r-e.height);return{x:t.x,y:Math.min(Math.max(t.y,r),s)}}function je(t,e,n,o,r={width:typeof window>"u"?0:window.innerWidth,height:typeof window>"u"?0:window.innerHeight,padding:De}){let{side:a,align:i}=Te(n),s=ue(t,e,a,i,o),u=Fe(s,e,a,r),b=a,R=s;if(u>0){let A=Se[a],O=ue(t,e,A,i,o),T=le(t,e,a,r);le(t,e,A,r)>T&&(b=A,R=O)}return{coords:Pe(R,e,b,r),placement:Ie(b,i)}}function Le(t,e,n,o,r={}){let{coords:a,placement:i}=je(t.getBoundingClientRect(),{width:e.offsetWidth,height:e.offsetHeight},n,o);return Object.assign(e.style,{position:"fixed",left:`${a.x}px`,top:`${a.y}px`,right:"auto",bottom:"auto",visibility:"visible"}),r.matchAnchorWidth&&(e.style.width=`${t.offsetWidth}px`),e.setAttribute("data-placement",i),i}function fe({anchor:t,floating:e,getPlacement:n,gap:o,matchAnchorWidth:r}){let a=()=>{e.hidden||Le(t,e,n(),o,{matchAnchorWidth:r})};a(),window.addEventListener("resize",a),window.addEventListener("scroll",a,!0);let i=new ResizeObserver(a);return i.observe(t),i.observe(e),()=>{window.removeEventListener("resize",a),window.removeEventListener("scroll",a,!0),i.disconnect()}}function pe(t,e=document.body){let n=t.parentNode;if(!n)return{unmount:()=>{}};let o=document.createComment("rui-portal");return n.insertBefore(o,t),e.appendChild(t),{unmount:()=>{let r=o.parentNode;r&&(r.insertBefore(t,o),o.remove())}}}function he(t,e,n){return n?!!(t?.contains(n)||e?.contains(n)):!1}function de(t,e,n){return!he(t,e,n)}var q=class{config;cleanupFloating=null;portalHandle=null;floatingElement=null;constructor(e){this.config=e}updateConfig(e){this.config={...this.config,...e}}sync(){let e=this.resolveFloating();if(!e)return;if(!this.config.getOpen()){this.teardown(),e.hidden=!0;return}let o=this.config.getAnchor();if(!o)return;e.hidden=!1,this.config.portal!==!1?this.portalHandle||(this.portalHandle=pe(e,this.config.portalContainer??document.body)):this.portalHandle&&(this.portalHandle.unmount(),this.portalHandle=null),this.teardownFloating(),this.cleanupFloating=fe({anchor:o,floating:e,getPlacement:this.config.getPlacement,gap:this.config.gap??8,matchAnchorWidth:this.config.matchAnchorWidth})}contains(e){return he(this.config.getAnchor(),this.resolveFloating(),e)}getFloatingElement(){return this.resolveFloating()}teardown(){this.teardownFloating(),this.portalHandle&&(this.portalHandle.unmount(),this.portalHandle=null)}destroy(){this.teardown(),this.floatingElement=null}resolveFloating(){let e=this.config.getFloating();return e&&(this.floatingElement=e),e??this.floatingElement}teardownFloating(){this.cleanupFloating?.(),this.cleanupFloating=null}};var me,ge,be,ye,we,ve;function He(t,e,n,o,r,a){var i,s,u,b,R,A,O,T=Symbol.metadata||Symbol.for("Symbol.metadata"),K=Object.defineProperty,$=Object.create,Q=[$(null),$(null)],Z=e.length;function F(l,y,m){return function(c,f){y&&(f=c,c=t);for(var w=0;w<l.length;w++)f=l[w].apply(c,m?[f]:[]);return m?f:c}}function M(l,y,m,c){if(typeof l!="function"&&(c||l!==void 0))throw new TypeError(y+" must "+(m||"be")+" a function"+(c?"":" or undefined"));return l}function z(l,y,m,c,f,w,_,g,v,x,ee){function U(h){if(!ee(h))throw new TypeError("Attempted to access private element on non-instance")}var X=[].concat(y[0]),te=y[3],G=!_,C=f===1,ne=f===3,oe=f===4,I=f===2;function P(h,k,se){return function(L,ae){return k&&(ae=L,L=l),se&&se(L),p[h].call(L,ae)}}if(!G){var p={},Y=[],E=ne?"get":oe||C?"set":"value";if(v?(x||C?p={get:xe(function(){return te(this)},c,"get"),set:function(h){y[4](this,h)}}:p[E]=te,x||xe(p[E],c,I?"":E)):x||(p=Object.getOwnPropertyDescriptor(l,c)),!x&&!v){if((s=Q[+g][c])&&(s^f)!==7)throw Error("Decorating two elements with the same name ("+p[E].name+") is not supported yet");Q[+g][c]=f<3?1:f}}for(var d=l,j=X.length-1;j>=0;j-=m?2:1){var re=M(X[j],"A decorator","be",!0),ie=m?X[j-1]:void 0,J={},S={kind:["field","accessor","method","getter","setter","class"][f],name:c,metadata:i,addInitializer:function(h,k){if(h.v)throw new TypeError("attempted to call addInitializer after decoration was finished");M(k,"An initializer","be",!0),w.push(k)}.bind(null,J)};if(G)s=re.call(ie,d,S),J.v=1,M(s,"class decorators","return")&&(d=s);else if(S.static=g,S.private=v,s=S.access={has:v?ee.bind():function(h){return c in h}},oe||(s.get=v?I?function(h){return U(h),p.value}:P("get",0,U):function(h){return h[c]}),I||ne||(s.set=v?P("set",0,U):function(h,k){h[c]=k}),d=re.call(ie,C?{get:p.get,set:p.set}:p[E],S),J.v=1,C){if(typeof d=="object"&&d)(s=M(d.get,"accessor.get"))&&(p.get=s),(s=M(d.set,"accessor.set"))&&(p.set=s),(s=M(d.init,"accessor.init"))&&Y.unshift(s);else if(d!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else M(d,(x?"field":"method")+" decorators","return")&&(x?Y.unshift(d):p[E]=d)}return f<2&&_.push(F(Y,g,1),F(w,g,0)),x||G||(v?C?_.splice(-1,0,P("get",g),P("set",g)):_.push(I?p[E]:M.call.bind(p[E])):K(l,c,p)),d}function N(l){return K(l,T,{configurable:!0,enumerable:!0,value:i})}return a!==void 0&&(i=a[T]),i=$(i??null),R=[],A=function(l){l&&R.push(F(l))},O=function(l,y){for(var m=0;m<n.length;m++){var c=n[m],f=c[1],w=7&f;if((8&f)==l&&!w==y){var _=c[2],g=!!c[3],v=16&f;z(l?t:t.prototype,c,v,g?"#"+_:We(_),w,w<2?[]:l?b=b||[]:u=u||[],R,!!l,g,y,l&&g?function(x){return Ve(x)===t}:r)}}},O(8,0),O(0,0),O(8,1),O(0,1),A(u),A(b),s=R,Z||N(t),{e:s,get c(){var l=[];return Z&&[N(t=z(t,[e],o,t.name,5,l)),F(l,1)]}}}function We(t){var e=qe(t,"string");return typeof e=="symbol"?e:e+""}function qe(t,e){if(typeof t!="object"||!t)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var o=n.call(t,e||"default");if(typeof o!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function xe(t,e,n){typeof e=="symbol"&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(t,"name",{configurable:!0,value:n?n+" "+e:e})}catch{}return t}function Ve(t){if(Object(t)!==t)throw TypeError("right-hand side of 'in' should be an object, got "+(t!==null?typeof t:"null"));return t}var V,Re=class extends Ee{static{({e:[be,ye,we,ve,me],c:[V,ge]}=He(this,[Be("rui-menubar")],[[$e({type:String,defaultValue:""}),0,"label"],[Ke({name:"rui-change",bubbles:!0,composed:!0}),0,"changeEvent"],[D({document:!0,type:"pointerdown"}),2,"onDocumentPointerDown"],[D({selector:'[data-ref="menubar"] > [data-ref="menubar-root"] > [role="menuitem"]',type:"keydown"}),2,"onTopKeydown"],[D({selector:'[data-ref="menubar"] > [data-ref="menubar-root"] > [role="menuitem"]',type:"click"}),2,"onTopClick"],[D({selector:'[role="menu"] > [role="menuitem"]',type:"keydown"}),2,"onMenuKeydown"],[D({selector:'[role="menu"] > [role="menuitem"]',type:"click"}),2,"onMenuItemClick"]],0,void 0,Ee))}label=(me(this),be(this));changeEvent=(ye(this),we(this));resolvedAriaLabel=(ve(this),this.$.label.map(e=>e||void 0));openRoot=null;popoverController=null;getTopItems(){return Array.from(this.querySelectorAll('[data-ref="menubar"] > [data-ref="menubar-root"] > [role="menuitem"]'))}getMenuFor(e){return e.closest('[data-ref="menubar-root"]')?.querySelector(':scope > [role="menu"]')??null}getMenuItems(e){return Array.from(e.querySelectorAll(':scope > [role="menuitem"]')).filter(n=>n.getAttribute("aria-disabled")!=="true")}connectedCallback(){super.connectedCallback(),queueMicrotask(()=>H(this.getTopItems(),0))}disconnectedCallback(){this.popoverController?.destroy(),this.popoverController=null,super.disconnectedCallback()}getOpenMenuAnchor(){return this.openRoot?this.openRoot.querySelector(':scope > [role="menuitem"]'):null}getOpenMenuSurface(){return this.openRoot?this.openRoot.querySelector(':scope > [role="menu"]'):null}syncOpenMenuPosition(){let e=this.getOpenMenuAnchor(),n=this.getOpenMenuSurface();!e||!n||(this.popoverController||(this.popoverController=new q({getAnchor:()=>this.getOpenMenuAnchor(),getFloating:()=>this.getOpenMenuSurface(),getOpen:()=>!!this.openRoot,getPlacement:()=>"bottom-start",gap:6,portal:!1})),this.popoverController.updateConfig({getAnchor:()=>this.getOpenMenuAnchor(),getFloating:()=>this.getOpenMenuSurface(),getOpen:()=>!!this.openRoot}),this.popoverController.sync())}closeOpenMenu(e=!1){if(!this.openRoot)return;let n=this.openRoot.querySelector(':scope > [role="menuitem"]'),o=this.openRoot.querySelector(':scope > [role="menu"]');n&&n.setAttribute("aria-expanded","false"),o&&(o.hidden=!0),this.openRoot=null,this.popoverController?.teardown(),e&&n&&n.focus()}openMenu(e,n="first"){let o=e.closest('[data-ref="menubar-root"]'),r=this.getMenuFor(e);if(!(!o||!r)&&(this.openRoot&&this.openRoot!==o&&this.closeOpenMenu(),e.setAttribute("aria-expanded","true"),r.hidden=!1,this.openRoot=o,this.syncOpenMenuPosition(),n==="first")){let a=this.getMenuItems(r);H(a,0),a[0]?.focus()}}onDocumentPointerDown(e){this.openRoot&&de(this.getOpenMenuAnchor(),this.getOpenMenuSurface(),e.target)&&this.closeOpenMenu()}onTopKeydown(e){let n=this.getTopItems(),o=e.target.closest('[role="menuitem"]');if(!o||!n.includes(o))return;if(e.key==="ArrowDown"||e.key==="Enter"||e.key===" "){this.getMenuFor(o)&&(e.preventDefault(),this.openMenu(o,"first"));return}if(e.key==="Escape"){e.preventDefault(),this.closeOpenMenu(!0);return}let r=W({items:n,current:o,key:e.key,orientation:"horizontal"});r.handled&&(e.preventDefault(),this.openRoot&&(this.getMenuFor(r.item)?this.openMenu(r.item,"first"):this.closeOpenMenu()))}onTopClick(e){let n=e.target.closest('[role="menuitem"]');if(!n||!this.getTopItems().includes(n))return;if(!this.getMenuFor(n)){this.closeOpenMenu();return}n.getAttribute("aria-expanded")==="true"?this.closeOpenMenu():this.openMenu(n,"first")}onMenuKeydown(e){let n=e.target.closest('[role="menu"]'),o=e.target.closest('[role="menuitem"]');if(!n||!o||!this.contains(n))return;let r=this.getMenuItems(n);if(e.key==="Escape"){e.preventDefault(),this.closeOpenMenu(!0);return}if(e.key==="Enter"||e.key===" "){e.preventDefault(),this.activateItem(o);return}if(e.key==="ArrowLeft"||e.key==="ArrowRight"){let i=this.getTopItems(),s=n.parentElement?.querySelector(':scope > [role="menuitem"]');if(!s)return;e.preventDefault();let u=W({items:i,current:s,key:e.key,orientation:"horizontal"});u.handled&&this.getMenuFor(u.item)&&this.openMenu(u.item,"first");return}W({items:r,current:o,key:e.key,orientation:"vertical"}).handled&&e.preventDefault()}onMenuItemClick(e){let n=e.target.closest('[role="menuitem"]');!n||!this.contains(n)||n.parentElement?.getAttribute("role")==="menu"&&this.activateItem(n)}activateItem(e){let n=e.getAttribute("data-value")||e.textContent?.trim()||"";this.changeEvent.emit({value:n}),this.closeOpenMenu(!0)}render(){return Me("div",{class:"rui-menubar","data-ref":"menubar",role:"menubar","aria-label":this.resolvedAriaLabel,children:Me("slot",{})})}static{ge()}};import{jsx as B,jsxs as Ge}from"@ecopages/jsx/jsx-runtime";var Ue=Symbol.for("@ecopages/storybook-radiant.viewElement"),Ae=Symbol.for("@ecopages/storybook-radiant.scriptModule"),Oe=Symbol.for("@ecopages/storybook-radiant.scriptExport");function Xe(t,e){t[Ue]=e;let n=e[Ae];n&&(t[Ae]=n,t[Oe]=e[Oe]??e.name)}function _e(t,e,n){let o=r=>e(r);return Xe(o,t),o}var Ye=_e(V,({items:t,...e})=>B("rui-menubar",{...e,children:t.map(n=>Ge("div",{class:"rui-menubar__root","data-ref":"menubar-root",children:[B("button",{type:"button",class:"rui-menubar__item",role:"menuitem",tabindex:-1,"aria-haspopup":n.items?.length?"true":void 0,"aria-expanded":n.items?.length?"false":void 0,children:n.label}),n.items?.length?B("div",{class:"rui-menubar__menu rui-popover rui-floating",role:"menu",hidden:!0,children:n.items.map(o=>B("button",{type:"button",class:"rui-menubar__menu-item",role:"menuitem","data-value":o.id,tabindex:-1,children:o.label}))}):null]}))}),{stylesheets:["./menubar.css"]});export{Ye as RuiMenubar,V as RuiMenubarElement};
2
2
  //# sourceMappingURL=index.js.map