@data-slot/ui 0.2.81

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 (98) hide show
  1. package/README.md +178 -0
  2. package/dist/accordion.cjs +1 -0
  3. package/dist/accordion.d.cts +2 -0
  4. package/dist/accordion.d.ts +2 -0
  5. package/dist/accordion.js +1 -0
  6. package/dist/collapsible.cjs +1 -0
  7. package/dist/collapsible.d.cts +2 -0
  8. package/dist/collapsible.d.ts +2 -0
  9. package/dist/collapsible.js +1 -0
  10. package/dist/combobox.cjs +1 -0
  11. package/dist/combobox.d.cts +2 -0
  12. package/dist/combobox.d.ts +2 -0
  13. package/dist/combobox.js +1 -0
  14. package/dist/core.cjs +1 -0
  15. package/dist/core.d.cts +2 -0
  16. package/dist/core.d.ts +2 -0
  17. package/dist/core.js +1 -0
  18. package/dist/dialog.cjs +1 -0
  19. package/dist/dialog.d.cts +2 -0
  20. package/dist/dialog.d.ts +2 -0
  21. package/dist/dialog.js +1 -0
  22. package/dist/dropdown-menu.cjs +1 -0
  23. package/dist/dropdown-menu.d.cts +2 -0
  24. package/dist/dropdown-menu.d.ts +2 -0
  25. package/dist/dropdown-menu.js +1 -0
  26. package/dist/events.cjs +1 -0
  27. package/dist/events.js +1 -0
  28. package/dist/hover-card.cjs +1 -0
  29. package/dist/hover-card.d.cts +2 -0
  30. package/dist/hover-card.d.ts +2 -0
  31. package/dist/hover-card.js +1 -0
  32. package/dist/index.cjs +1 -0
  33. package/dist/index.d.cts +48 -0
  34. package/dist/index.d.ts +48 -0
  35. package/dist/index.js +1 -0
  36. package/dist/index2.d.cts +46 -0
  37. package/dist/index2.d.ts +46 -0
  38. package/dist/index3.d.cts +62 -0
  39. package/dist/index3.d.ts +62 -0
  40. package/dist/index4.d.cts +69 -0
  41. package/dist/index4.d.ts +69 -0
  42. package/dist/index5.d.cts +63 -0
  43. package/dist/index5.d.ts +63 -0
  44. package/dist/index6.d.cts +71 -0
  45. package/dist/index6.d.ts +71 -0
  46. package/dist/index7.d.cts +61 -0
  47. package/dist/index7.d.ts +61 -0
  48. package/dist/index8.d.cts +12 -0
  49. package/dist/index8.d.ts +12 -0
  50. package/dist/navigation-menu.cjs +1 -0
  51. package/dist/navigation-menu.d.cts +2 -0
  52. package/dist/navigation-menu.d.ts +2 -0
  53. package/dist/navigation-menu.js +1 -0
  54. package/dist/popover.cjs +1 -0
  55. package/dist/popover.d.cts +2 -0
  56. package/dist/popover.d.ts +2 -0
  57. package/dist/popover.js +1 -0
  58. package/dist/popup.cjs +1 -0
  59. package/dist/popup.d.cts +202 -0
  60. package/dist/popup.d.ts +202 -0
  61. package/dist/popup.js +1 -0
  62. package/dist/scroll.cjs +1 -0
  63. package/dist/scroll.js +1 -0
  64. package/dist/select.cjs +1 -0
  65. package/dist/select.d.cts +2 -0
  66. package/dist/select.d.ts +2 -0
  67. package/dist/select.js +1 -0
  68. package/dist/src.cjs +1 -0
  69. package/dist/src.js +1 -0
  70. package/dist/src2.cjs +1 -0
  71. package/dist/src2.js +1 -0
  72. package/dist/src3.cjs +1 -0
  73. package/dist/src3.js +1 -0
  74. package/dist/src4.cjs +1 -0
  75. package/dist/src4.js +1 -0
  76. package/dist/src5.cjs +1 -0
  77. package/dist/src5.js +1 -0
  78. package/dist/src6.cjs +1 -0
  79. package/dist/src6.js +1 -0
  80. package/dist/src7.cjs +1 -0
  81. package/dist/src7.js +1 -0
  82. package/dist/tabs.cjs +1 -0
  83. package/dist/tabs.d.cts +2 -0
  84. package/dist/tabs.d.ts +2 -0
  85. package/dist/tabs.js +1 -0
  86. package/dist/toggle-group.cjs +1 -0
  87. package/dist/toggle-group.d.cts +2 -0
  88. package/dist/toggle-group.d.ts +2 -0
  89. package/dist/toggle-group.js +1 -0
  90. package/dist/toggle.cjs +1 -0
  91. package/dist/toggle.d.cts +2 -0
  92. package/dist/toggle.d.ts +2 -0
  93. package/dist/toggle.js +1 -0
  94. package/dist/tooltip.cjs +1 -0
  95. package/dist/tooltip.d.cts +2 -0
  96. package/dist/tooltip.d.ts +2 -0
  97. package/dist/tooltip.js +1 -0
  98. package/package.json +198 -0
@@ -0,0 +1,202 @@
1
+ //#region ../core/src/parts.d.ts
2
+ /**
3
+ * Query a single part/slot within a component root
4
+ */
5
+ declare const getPart: <T extends Element = Element>(root: Element, slot: string) => T | null;
6
+ /**
7
+ * Query all parts/slots within a component root
8
+ */
9
+ declare const getParts: <T extends Element = Element>(root: Element, slot: string) => T[];
10
+ /**
11
+ * Find all component roots within a scope by data-slot value
12
+ */
13
+ declare const getRoots: <T extends Element = Element>(scope: ParentNode, slot: string) => T[];
14
+ /**
15
+ * Parse a boolean data attribute.
16
+ * - Present with no value, "true", "1", "yes" → true
17
+ * - "false", "0", "no" → false
18
+ * - Absent or invalid → undefined
19
+ */
20
+ declare function getDataBool(el: Element, key: string): boolean | undefined;
21
+ /**
22
+ * Parse a number data attribute.
23
+ * - Valid finite number → number
24
+ * - Absent, invalid, NaN, Infinity, empty → undefined
25
+ */
26
+ declare function getDataNumber(el: Element, key: string): number | undefined;
27
+ /**
28
+ * Parse a string data attribute.
29
+ * - Present (including empty string) → string
30
+ * - Absent → undefined
31
+ */
32
+ declare function getDataString(el: Element, key: string): string | undefined;
33
+ /**
34
+ * Parse an enum data attribute.
35
+ * - Valid value in allowed array → T
36
+ * - Absent or invalid → undefined
37
+ */
38
+ declare function getDataEnum<T extends string>(el: Element, key: string, allowed: readonly T[]): T | undefined;
39
+ /** Check if target is inside root, including portaled descendants.
40
+ * Follows chained portal ownership for nested portals. */
41
+ declare function containsWithPortals(root: Element, target: Node | null): boolean;
42
+ interface PortalState {
43
+ originalParent: ParentNode | null;
44
+ originalNextSibling: ChildNode | null;
45
+ portaled: boolean;
46
+ }
47
+ declare function portalToBody(el: Element, originRoot: Element, state: PortalState): void;
48
+ declare function restorePortal(el: Element, state: PortalState): void;
49
+ //#endregion
50
+ //#region ../core/src/aria.d.ts
51
+ /**
52
+ * Ensure an element has an id, generating one if needed
53
+ */
54
+ declare const ensureId: (el: Element, prefix: string) => string;
55
+ /**
56
+ * Set or remove an ARIA attribute
57
+ * Note: boolean values are converted to strings, use null to remove
58
+ */
59
+ declare const setAria: (el: Element, name: string, value: string | boolean | null) => void;
60
+ /**
61
+ * Link content element to its label and description via ARIA
62
+ */
63
+ declare const linkLabelledBy: (content: Element, title?: Element | null, description?: Element | null) => void;
64
+ //#endregion
65
+ //#region ../core/src/events.d.ts
66
+ /**
67
+ * Add an event listener and return a cleanup function
68
+ */
69
+ declare function on<K extends keyof HTMLElementEventMap>(el: EventTarget, type: K, fn: (e: HTMLElementEventMap[K]) => void, opts?: AddEventListenerOptions): () => void;
70
+ declare function on(el: EventTarget, type: string, fn: (e: Event) => void, opts?: AddEventListenerOptions): () => void;
71
+ /**
72
+ * Dispatch a custom event with optional detail
73
+ */
74
+ declare const emit: <T = unknown>(el: Element, name: string, detail?: T) => boolean;
75
+ /**
76
+ * Compose multiple event handlers into one
77
+ * Handlers are called in order, stops if event.defaultPrevented
78
+ */
79
+ declare const composeHandlers: <E extends Event>(...handlers: Array<((e: E) => void) | undefined>) => ((e: E) => void);
80
+ //#endregion
81
+ //#region ../core/src/scroll.d.ts
82
+ /**
83
+ * Scroll lock utilities with reference counting.
84
+ * Prevents body scroll when overlays (dialogs, selects, dropdowns) are open.
85
+ * Uses scrollbar-gutter: stable to prevent layout shift.
86
+ */
87
+ /**
88
+ * Lock document scroll. Call when opening an overlay.
89
+ * Uses reference counting - multiple overlays can be open simultaneously.
90
+ */
91
+ declare function lockScroll(): void;
92
+ /**
93
+ * Unlock document scroll. Call when closing an overlay.
94
+ * Only restores scroll when all overlays are closed (ref count reaches 0).
95
+ */
96
+ declare function unlockScroll(): void;
97
+ /**
98
+ * Get current scroll lock count (for testing).
99
+ */
100
+ //#endregion
101
+ //#region ../core/src/popup.d.ts
102
+ type PopupSide = "top" | "right" | "bottom" | "left";
103
+ type PopupAlign = "start" | "center" | "end";
104
+ interface PopupPlacementOptions {
105
+ side: PopupSide;
106
+ align: PopupAlign;
107
+ sideOffset: number;
108
+ alignOffset: number;
109
+ avoidCollisions: boolean;
110
+ collisionPadding: number;
111
+ allowedSides?: readonly PopupSide[];
112
+ }
113
+ interface RectLike {
114
+ top: number;
115
+ right: number;
116
+ bottom: number;
117
+ left: number;
118
+ width: number;
119
+ height: number;
120
+ }
121
+ interface ComputeFloatingPositionInput extends PopupPlacementOptions {
122
+ anchorRect: RectLike;
123
+ contentRect: RectLike;
124
+ viewportWidth?: number;
125
+ viewportHeight?: number;
126
+ }
127
+ interface FloatingPosition {
128
+ x: number;
129
+ y: number;
130
+ side: PopupSide;
131
+ align: PopupAlign;
132
+ }
133
+ declare const focusElement: (el: HTMLElement | null | undefined) => void;
134
+ declare function computeFloatingPosition(input: ComputeFloatingPositionInput): FloatingPosition;
135
+ declare function ensureItemVisibleInContainer(item: HTMLElement, container: HTMLElement, padding?: number): void;
136
+ interface PositionSyncOptions {
137
+ onUpdate: () => void;
138
+ isActive?: () => boolean;
139
+ observedElements?: readonly Element[];
140
+ ignoreScrollTarget?: (target: EventTarget | null) => boolean;
141
+ ancestorScroll?: boolean;
142
+ ancestorResize?: boolean;
143
+ elementResize?: boolean;
144
+ layoutShift?: boolean;
145
+ animationFrame?: boolean;
146
+ win?: Window;
147
+ }
148
+ interface PositionSyncController {
149
+ start(): void;
150
+ stop(): void;
151
+ update(): void;
152
+ }
153
+ declare function createPositionSync(options: PositionSyncOptions): PositionSyncController;
154
+ interface DismissLayerOptions {
155
+ root: Element;
156
+ isOpen: () => boolean;
157
+ onDismiss: () => void;
158
+ closeOnClickOutside?: boolean;
159
+ closeOnEscape?: boolean;
160
+ preventEscapeDefault?: boolean;
161
+ isInside?: (target: Node | null) => boolean;
162
+ }
163
+ declare function createDismissLayer(options: DismissLayerOptions): () => void;
164
+ interface PortalLifecycleOptions {
165
+ content: Element;
166
+ root: Element;
167
+ enabled?: boolean;
168
+ state?: PortalState;
169
+ wrapperSlot?: string;
170
+ /**
171
+ * Optional authored element used for positioning/state attributes.
172
+ * When provided, `container` is always this element.
173
+ */
174
+ container?: Element;
175
+ /**
176
+ * Optional authored element to portal to `document.body`.
177
+ * Defaults to `container` (if provided), otherwise `content`.
178
+ */
179
+ mountTarget?: Element;
180
+ }
181
+ interface PortalLifecycleController {
182
+ readonly state: PortalState;
183
+ readonly container: Element;
184
+ mount(): void;
185
+ restore(): void;
186
+ cleanup(): void;
187
+ }
188
+ declare function createPortalLifecycle(options: PortalLifecycleOptions): PortalLifecycleController;
189
+ interface PresenceLifecycleOptions {
190
+ element: HTMLElement;
191
+ onExitComplete: () => void;
192
+ win?: Window;
193
+ }
194
+ interface PresenceLifecycleController {
195
+ readonly isExiting: boolean;
196
+ enter(): void;
197
+ exit(): void;
198
+ cleanup(): void;
199
+ }
200
+ declare function createPresenceLifecycle(options: PresenceLifecycleOptions): PresenceLifecycleController;
201
+ //#endregion
202
+ export { getDataBool as A, emit as C, setAria as D, linkLabelledBy as E, getParts as F, getRoots as I, portalToBody as L, getDataNumber as M, getDataString as N, PortalState as O, getPart as P, restorePortal as R, composeHandlers as S, ensureId as T, createPresenceLifecycle as _, PopupPlacementOptions as a, lockScroll as b, PortalLifecycleOptions as c, PresenceLifecycleController as d, PresenceLifecycleOptions as f, createPositionSync as g, createPortalLifecycle as h, PopupAlign as i, getDataEnum as j, containsWithPortals as k, PositionSyncController as l, createDismissLayer as m, DismissLayerOptions as n, PopupSide as o, computeFloatingPosition as p, FloatingPosition as r, PortalLifecycleController as s, ComputeFloatingPositionInput as t, PositionSyncOptions as u, ensureItemVisibleInContainer as v, on as w, unlockScroll as x, focusElement as y };
@@ -0,0 +1,202 @@
1
+ //#region ../core/src/parts.d.ts
2
+ /**
3
+ * Query a single part/slot within a component root
4
+ */
5
+ declare const getPart: <T extends Element = Element>(root: Element, slot: string) => T | null;
6
+ /**
7
+ * Query all parts/slots within a component root
8
+ */
9
+ declare const getParts: <T extends Element = Element>(root: Element, slot: string) => T[];
10
+ /**
11
+ * Find all component roots within a scope by data-slot value
12
+ */
13
+ declare const getRoots: <T extends Element = Element>(scope: ParentNode, slot: string) => T[];
14
+ /**
15
+ * Parse a boolean data attribute.
16
+ * - Present with no value, "true", "1", "yes" → true
17
+ * - "false", "0", "no" → false
18
+ * - Absent or invalid → undefined
19
+ */
20
+ declare function getDataBool(el: Element, key: string): boolean | undefined;
21
+ /**
22
+ * Parse a number data attribute.
23
+ * - Valid finite number → number
24
+ * - Absent, invalid, NaN, Infinity, empty → undefined
25
+ */
26
+ declare function getDataNumber(el: Element, key: string): number | undefined;
27
+ /**
28
+ * Parse a string data attribute.
29
+ * - Present (including empty string) → string
30
+ * - Absent → undefined
31
+ */
32
+ declare function getDataString(el: Element, key: string): string | undefined;
33
+ /**
34
+ * Parse an enum data attribute.
35
+ * - Valid value in allowed array → T
36
+ * - Absent or invalid → undefined
37
+ */
38
+ declare function getDataEnum<T extends string>(el: Element, key: string, allowed: readonly T[]): T | undefined;
39
+ /** Check if target is inside root, including portaled descendants.
40
+ * Follows chained portal ownership for nested portals. */
41
+ declare function containsWithPortals(root: Element, target: Node | null): boolean;
42
+ interface PortalState {
43
+ originalParent: ParentNode | null;
44
+ originalNextSibling: ChildNode | null;
45
+ portaled: boolean;
46
+ }
47
+ declare function portalToBody(el: Element, originRoot: Element, state: PortalState): void;
48
+ declare function restorePortal(el: Element, state: PortalState): void;
49
+ //#endregion
50
+ //#region ../core/src/aria.d.ts
51
+ /**
52
+ * Ensure an element has an id, generating one if needed
53
+ */
54
+ declare const ensureId: (el: Element, prefix: string) => string;
55
+ /**
56
+ * Set or remove an ARIA attribute
57
+ * Note: boolean values are converted to strings, use null to remove
58
+ */
59
+ declare const setAria: (el: Element, name: string, value: string | boolean | null) => void;
60
+ /**
61
+ * Link content element to its label and description via ARIA
62
+ */
63
+ declare const linkLabelledBy: (content: Element, title?: Element | null, description?: Element | null) => void;
64
+ //#endregion
65
+ //#region ../core/src/events.d.ts
66
+ /**
67
+ * Add an event listener and return a cleanup function
68
+ */
69
+ declare function on<K extends keyof HTMLElementEventMap>(el: EventTarget, type: K, fn: (e: HTMLElementEventMap[K]) => void, opts?: AddEventListenerOptions): () => void;
70
+ declare function on(el: EventTarget, type: string, fn: (e: Event) => void, opts?: AddEventListenerOptions): () => void;
71
+ /**
72
+ * Dispatch a custom event with optional detail
73
+ */
74
+ declare const emit: <T = unknown>(el: Element, name: string, detail?: T) => boolean;
75
+ /**
76
+ * Compose multiple event handlers into one
77
+ * Handlers are called in order, stops if event.defaultPrevented
78
+ */
79
+ declare const composeHandlers: <E extends Event>(...handlers: Array<((e: E) => void) | undefined>) => ((e: E) => void);
80
+ //#endregion
81
+ //#region ../core/src/scroll.d.ts
82
+ /**
83
+ * Scroll lock utilities with reference counting.
84
+ * Prevents body scroll when overlays (dialogs, selects, dropdowns) are open.
85
+ * Uses scrollbar-gutter: stable to prevent layout shift.
86
+ */
87
+ /**
88
+ * Lock document scroll. Call when opening an overlay.
89
+ * Uses reference counting - multiple overlays can be open simultaneously.
90
+ */
91
+ declare function lockScroll(): void;
92
+ /**
93
+ * Unlock document scroll. Call when closing an overlay.
94
+ * Only restores scroll when all overlays are closed (ref count reaches 0).
95
+ */
96
+ declare function unlockScroll(): void;
97
+ /**
98
+ * Get current scroll lock count (for testing).
99
+ */
100
+ //#endregion
101
+ //#region ../core/src/popup.d.ts
102
+ type PopupSide = "top" | "right" | "bottom" | "left";
103
+ type PopupAlign = "start" | "center" | "end";
104
+ interface PopupPlacementOptions {
105
+ side: PopupSide;
106
+ align: PopupAlign;
107
+ sideOffset: number;
108
+ alignOffset: number;
109
+ avoidCollisions: boolean;
110
+ collisionPadding: number;
111
+ allowedSides?: readonly PopupSide[];
112
+ }
113
+ interface RectLike {
114
+ top: number;
115
+ right: number;
116
+ bottom: number;
117
+ left: number;
118
+ width: number;
119
+ height: number;
120
+ }
121
+ interface ComputeFloatingPositionInput extends PopupPlacementOptions {
122
+ anchorRect: RectLike;
123
+ contentRect: RectLike;
124
+ viewportWidth?: number;
125
+ viewportHeight?: number;
126
+ }
127
+ interface FloatingPosition {
128
+ x: number;
129
+ y: number;
130
+ side: PopupSide;
131
+ align: PopupAlign;
132
+ }
133
+ declare const focusElement: (el: HTMLElement | null | undefined) => void;
134
+ declare function computeFloatingPosition(input: ComputeFloatingPositionInput): FloatingPosition;
135
+ declare function ensureItemVisibleInContainer(item: HTMLElement, container: HTMLElement, padding?: number): void;
136
+ interface PositionSyncOptions {
137
+ onUpdate: () => void;
138
+ isActive?: () => boolean;
139
+ observedElements?: readonly Element[];
140
+ ignoreScrollTarget?: (target: EventTarget | null) => boolean;
141
+ ancestorScroll?: boolean;
142
+ ancestorResize?: boolean;
143
+ elementResize?: boolean;
144
+ layoutShift?: boolean;
145
+ animationFrame?: boolean;
146
+ win?: Window;
147
+ }
148
+ interface PositionSyncController {
149
+ start(): void;
150
+ stop(): void;
151
+ update(): void;
152
+ }
153
+ declare function createPositionSync(options: PositionSyncOptions): PositionSyncController;
154
+ interface DismissLayerOptions {
155
+ root: Element;
156
+ isOpen: () => boolean;
157
+ onDismiss: () => void;
158
+ closeOnClickOutside?: boolean;
159
+ closeOnEscape?: boolean;
160
+ preventEscapeDefault?: boolean;
161
+ isInside?: (target: Node | null) => boolean;
162
+ }
163
+ declare function createDismissLayer(options: DismissLayerOptions): () => void;
164
+ interface PortalLifecycleOptions {
165
+ content: Element;
166
+ root: Element;
167
+ enabled?: boolean;
168
+ state?: PortalState;
169
+ wrapperSlot?: string;
170
+ /**
171
+ * Optional authored element used for positioning/state attributes.
172
+ * When provided, `container` is always this element.
173
+ */
174
+ container?: Element;
175
+ /**
176
+ * Optional authored element to portal to `document.body`.
177
+ * Defaults to `container` (if provided), otherwise `content`.
178
+ */
179
+ mountTarget?: Element;
180
+ }
181
+ interface PortalLifecycleController {
182
+ readonly state: PortalState;
183
+ readonly container: Element;
184
+ mount(): void;
185
+ restore(): void;
186
+ cleanup(): void;
187
+ }
188
+ declare function createPortalLifecycle(options: PortalLifecycleOptions): PortalLifecycleController;
189
+ interface PresenceLifecycleOptions {
190
+ element: HTMLElement;
191
+ onExitComplete: () => void;
192
+ win?: Window;
193
+ }
194
+ interface PresenceLifecycleController {
195
+ readonly isExiting: boolean;
196
+ enter(): void;
197
+ exit(): void;
198
+ cleanup(): void;
199
+ }
200
+ declare function createPresenceLifecycle(options: PresenceLifecycleOptions): PresenceLifecycleController;
201
+ //#endregion
202
+ export { getDataBool as A, emit as C, setAria as D, linkLabelledBy as E, getParts as F, getRoots as I, portalToBody as L, getDataNumber as M, getDataString as N, PortalState as O, getPart as P, restorePortal as R, composeHandlers as S, ensureId as T, createPresenceLifecycle as _, PopupPlacementOptions as a, lockScroll as b, PortalLifecycleOptions as c, PresenceLifecycleController as d, PresenceLifecycleOptions as f, createPositionSync as g, createPortalLifecycle as h, PopupAlign as i, getDataEnum as j, containsWithPortals as k, PositionSyncController as l, createDismissLayer as m, DismissLayerOptions as n, PopupSide as o, computeFloatingPosition as p, FloatingPosition as r, PortalLifecycleController as s, ComputeFloatingPositionInput as t, PositionSyncOptions as u, ensureItemVisibleInContainer as v, on as w, unlockScroll as x, focusElement as y };
package/dist/popup.js ADDED
@@ -0,0 +1 @@
1
+ import{g as e,h as t,r as n,s as r}from"./events.js";const i=[`top`,`right`,`bottom`,`left`],a=e=>{let t=window.visualViewport,n=e.viewportWidth??t?.width,r=e.viewportHeight??t?.height;if(n==null||r==null)throw Error(`computeFloatingPosition requires window.visualViewport when viewport dimensions are not provided`);return{x:t?.offsetLeft??0,y:t?.offsetTop??0,width:n,height:r}},o=(e,t,n,r,i,a)=>{let o=0,s=0;return e===`top`?s=n.top-r.height-i:e===`bottom`?s=n.bottom+i:o=e===`left`?n.left-r.width-i:n.right+i,e===`top`||e===`bottom`?o=t===`start`?n.left+a:t===`center`?n.left+n.width/2-r.width/2+a:n.right-r.width-a:s=t===`start`?n.top+a:t===`center`?n.top+n.height/2-r.height/2+a:n.bottom-r.height-a,{x:o,y:s}},s=e=>{if(e)try{e.focus({preventScroll:!0})}catch{e.focus()}},c=(e,t,n,r,i)=>{let a=r.x+i,o=r.x+r.width-i,s=r.y+i,c=r.y+r.height-i;return e===`top`?Math.max(0,s-t.y):e===`bottom`?Math.max(0,t.y+n.height-c):e===`left`?Math.max(0,a-t.x):Math.max(0,t.x+n.width-o)},l=(e,t,n)=>n<t?t:Math.min(Math.max(e,t),n);function u(e){let t=a(e),n=e.allowedSides?.length?[...new Set(e.allowedSides)]:[...i],r=n.includes(e.side)?e.side:n[0],s=r,u=o(s,e.align,e.anchorRect,e.contentRect,e.sideOffset,e.alignOffset);if(e.avoidCollisions){let i=[r,...n.filter(e=>e!==r)],a=s,d=u,f=1/0;for(let n of i){let r=o(n,e.align,e.anchorRect,e.contentRect,e.sideOffset,e.alignOffset),i=c(n,r,e.contentRect,t,e.collisionPadding);if(i<=0){a=n,d=r,f=i;break}i<f&&(a=n,d=r,f=i)}s=a,u=d;let p=t.x+e.collisionPadding,m=t.x+t.width-e.contentRect.width-e.collisionPadding,h=t.y+e.collisionPadding,g=t.y+t.height-e.contentRect.height-e.collisionPadding;u.x=l(u.x,p,m),u.y=l(u.y,h,g)}return{x:u.x,y:u.y,side:s,align:e.align}}function d(e,t,n=4){if(t.clientHeight<=0)return;let r=Math.max(0,t.scrollHeight-t.clientHeight);if(r<=0)return;let i=e.getBoundingClientRect(),a=t.getBoundingClientRect(),o=i.top-a.top+t.scrollTop,s=o+i.height,c=t.scrollTop+n,l=t.scrollTop+t.clientHeight-n,u=t.scrollTop;o<c?u=o-n:s>l&&(u=s-t.clientHeight+n),u=Math.min(Math.max(u,0),r),u!==t.scrollTop&&(t.scrollTop=u)}const f=e=>({x:e.x,y:e.y,width:e.width,height:e.height}),p=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,m=e=>{let t=getComputedStyle(e),n=`${t.overflow}${t.overflowX}${t.overflowY}`;return/(auto|scroll|overlay)/.test(n)},h=(e,t)=>{let n=new Set([e]),r=e.parentNode;for(;r;){if(r instanceof Element){m(r)&&n.add(r),r=r.parentNode;continue}if(r instanceof Document){r.scrollingElement&&n.add(r.scrollingElement),n.add(r),r.defaultView&&(n.add(r.defaultView),r.defaultView.visualViewport&&n.add(r.defaultView.visualViewport));break}r=null}return n.add(t),t.visualViewport&&n.add(t.visualViewport),[...n]},g=(e,t,n)=>{let r=null,i=null,a=()=>{i!==null&&(n.clearTimeout(i),i=null),r?.disconnect(),r=null},o=(s=!1,c=1)=>{a();let l=e.getBoundingClientRect();if(s||t(),!l.width||!l.height)return;let u=e.ownerDocument.documentElement,d=Math.floor(l.top),m=Math.floor(u.clientWidth-(l.left+l.width)),h=Math.floor(u.clientHeight-(l.top+l.height)),g=Math.floor(l.left),_=`${-d}px ${-m}px ${-h}px ${-g}px`,v=Math.max(0,Math.min(1,c))||1,y=!0;r=new IntersectionObserver(t=>{let r=t[0]?.intersectionRatio??1;if(r!==v){if(!y){o();return}r?o(!1,r):i=n.setTimeout(()=>{o(!1,1e-7)},1e3)}if(r===1&&!p(f(l),f(e.getBoundingClientRect()))){o();return}y=!1},{rootMargin:_,threshold:v}),r.observe(e)};return o(!0),a};function _(e){let t=e.win??window,n=e.isActive??(()=>!0),r=e.observedElements??[],i=e.ancestorScroll??!0,a=e.ancestorResize??!0,o=e.elementResize??typeof ResizeObserver<`u`,s=e.layoutShift??!1,c=e.animationFrame??!1,l=null,u=null,d=!1,m=null,_=null,v=[],y=()=>{l===null&&(l=t.requestAnimationFrame(()=>{l=null,n()&&e.onUpdate()}))},b=()=>y(),x=t=>{e.ignoreScrollTarget?.(t.target)||y()},S=()=>{let e=new Set,n=r.length?r:[];if(n.length===0)return e.add(t),t.visualViewport&&e.add(t.visualViewport),[...e];for(let r of n)for(let n of h(r,t))e.add(n);return[...e]},C=e=>{let n=new Set([t]);t.visualViewport&&n.add(t.visualViewport);for(let r of e)(r===t||r===t.visualViewport)&&n.add(r);return[...n]};return{start:()=>{if(d)return;d=!0;let e=S(),n=C(e);if(i)for(let t of e)t.addEventListener(`scroll`,x,{passive:!0}),v.push(()=>t.removeEventListener(`scroll`,x));if(a)for(let e of n)e.addEventListener(`resize`,b),v.push(()=>e.removeEventListener(`resize`,b));if(o&&typeof ResizeObserver<`u`){m=new ResizeObserver(b);for(let e of r)m.observe(e)}let l=r[0]??null;if(s&&l&&typeof IntersectionObserver<`u`&&(_=g(l,y,t)),c&&l){let e=f(l.getBoundingClientRect()),n=()=>{if(!d)return;let r=f(l.getBoundingClientRect());p(e,r)||y(),e=r,u=t.requestAnimationFrame(n)};u=t.requestAnimationFrame(n)}},stop:()=>{d&&(d=!1,l!==null&&(t.cancelAnimationFrame(l),l=null),u!==null&&(t.cancelAnimationFrame(u),u=null),v.forEach(e=>e()),v=[],m?.disconnect(),m=null,_?.(),_=null)},update:y}}const v=new WeakMap,y=(e,t)=>{let n=t.isOpen();return n&&!t.wasOpen&&(e.openSequence+=1,t.openOrder=e.openSequence),t.wasOpen=n,n},b=(e,t)=>{let n=null;for(let r of e.layers)y(e,r)&&(t&&!t(r)||(!n||r.openOrder>n.openOrder)&&(n=r));return n},x=e=>{let t={layers:[],openSequence:0,cleanup:()=>{}},r=n(e,`pointerdown`,e=>{let n=e.target,r=b(t);!r||!r.closeOnClickOutside||r.isInside(n)||r.onDismiss()}),i=n(e,`keydown`,e=>{if(e.key!==`Escape`||e.defaultPrevented)return;let n=e.target,r=b(t,e=>e.closeOnEscape&&e.isInside(n))??b(t,e=>e.closeOnEscape);r&&(r.preventEscapeDefault&&e.preventDefault(),r.onDismiss())});return t.cleanup=()=>{r(),i(),t.layers.length=0},t},S=e=>{let t=v.get(e);if(t)return t;let n=x(e);return v.set(e,n),n};function C(e){let t=e.root.ownerDocument??document,n=S(t),i={isOpen:e.isOpen,onDismiss:e.onDismiss,isInside:e.isInside??(t=>r(e.root,t)),closeOnClickOutside:e.closeOnClickOutside??!0,closeOnEscape:e.closeOnEscape??!0,preventEscapeDefault:e.preventEscapeDefault??!0,wasOpen:!1,openOrder:0};return y(n,i)&&(i.wasOpen=!0),n.layers.push(i),()=>{let e=n.layers.indexOf(i);e!==-1&&n.layers.splice(e,1),n.layers.length===0&&(n.cleanup(),v.delete(t))}}function w(n){let r=n.enabled??!0,i=n.wrapperSlot,a=n.container,o=n.mountTarget??a??n.content,s=n.state??{originalParent:null,originalNextSibling:null,portaled:!1},c=n.root.ownerDocument??document,l=null,u=()=>{if(l)return l;let e=c.createElement(`div`);return i&&(e.setAttribute(`data-slot`,i),e.style.isolation=`isolate`,e.style.zIndex=`50`),l=e,e},d=()=>{if(s.portaled)return;let e=n.content.parentNode;if(!e)return;let r=u();e.insertBefore(r,n.content),r.appendChild(n.content),t(r,n.root,s)},f=()=>{s.portaled||o.isConnected&&t(o,n.root,s)},p=()=>{if(!s.portaled)return;let t=l;if(!t)return;e(t,s);let r=t.parentNode;r&&r.isConnected?(r.insertBefore(n.content,t),t.remove()):n.content.remove()},m=()=>{s.portaled&&e(o,s)};return{state:s,get container(){return a||(r&&i&&s.portaled&&l?l:n.content)},mount:()=>{if(r){if(a||n.mountTarget){f();return}i?d():t(n.content,n.root,s)}},restore:()=>{if(r){if(a||n.mountTarget){m();return}i?p():e(n.content,s)}},cleanup:()=>{if(r){if(a||n.mountTarget){m();return}i?p():e(n.content,s)}}}}const T=e=>{let t=e.trim().toLowerCase();if(!t)return 0;if(t.endsWith(`ms`)){let e=Number(t.slice(0,-2).trim());return Number.isFinite(e)?e:0}if(t.endsWith(`s`)){let e=Number(t.slice(0,-1).trim());return Number.isFinite(e)?e*1e3:0}let n=Number(t);return Number.isFinite(n)?n:0},E=(e,t)=>{let n=e.split(`,`),r=t.split(`,`),i=Math.max(n.length,r.length),a=0;for(let e=0;e<i;e++){let t=T(n[e]??n[n.length-1]??`0`),i=T(r[e]??r[r.length-1]??`0`);a=Math.max(a,t+i)}return a},D=e=>{let t=getComputedStyle(e),n=E(t.transitionDuration,t.transitionDelay),r=E(t.animationDuration,t.animationDelay);return Math.max(n,r)};function O(e){let t=e.win??window,n=!1,r=null,i=null,a=null,o=null,s=[],c=()=>{a!==null&&(t.cancelAnimationFrame(a),a=null),o!==null&&(t.clearTimeout(o),o=null),s.forEach(e=>e()),s=[]},l=()=>{c(),n=!1,e.element.removeAttribute(`data-ending-style`)},u=()=>{r!==null&&(t.cancelAnimationFrame(r),r=null),i!==null&&(t.cancelAnimationFrame(i),i=null),e.element.removeAttribute(`data-starting-style`)},d=()=>{n&&(c(),n=!1,e.element.removeAttribute(`data-ending-style`),e.onExitComplete())};return{get isExiting(){return n},enter:()=>{l(),u(),e.element.setAttribute(`data-starting-style`,``),r=t.requestAnimationFrame(()=>{r=null,i=t.requestAnimationFrame(()=>{i=null,e.element.removeAttribute(`data-starting-style`)})})},exit:()=>{l(),u(),n=!0,e.element.setAttribute(`data-ending-style`,``);let r=D(e.element);if(r>0){let n=t=>{t.target===e.element&&d()};e.element.addEventListener(`transitionend`,n),e.element.addEventListener(`animationend`,n),s.push(()=>e.element.removeEventListener(`transitionend`,n)),s.push(()=>e.element.removeEventListener(`animationend`,n)),o=t.setTimeout(()=>{o=null,d()},Math.ceil(r)+50)}else a=t.requestAnimationFrame(()=>{a=null,d()})},cleanup:()=>{l(),u()}}}export{O as a,_ as i,C as n,d as o,w as r,s,u as t};
@@ -0,0 +1 @@
1
+ let e=0,t=``,n=``;function r(){if(e===0){let e=document.documentElement;t=e.style.overflow,n=e.style.scrollbarGutter,e.style.overflow=`hidden`,e.style.scrollbarGutter=`stable`}e++}function i(){if(e=Math.max(0,e-1),e===0){let e=document.documentElement;e.style.overflow=t,e.style.scrollbarGutter=n}}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
package/dist/scroll.js ADDED
@@ -0,0 +1 @@
1
+ let e=0,t=``,n=``;function r(){if(e===0){let e=document.documentElement;t=e.style.overflow,n=e.style.scrollbarGutter,e.style.overflow=`hidden`,e.style.scrollbarGutter=`stable`}e++}function i(){if(e=Math.max(0,e-1),e===0){let e=document.documentElement;e.style.overflow=t,e.style.scrollbarGutter=n}}export{i as n,r as t};
@@ -0,0 +1 @@
1
+ var e=require(`@data-slot/select`);Object.keys(e).forEach(function(t){t!==`default`&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:function(){return e[t]}})});
@@ -0,0 +1,2 @@
1
+ export * from "@data-slot/select";
2
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from "@data-slot/select";
2
+ export {};
package/dist/select.js ADDED
@@ -0,0 +1 @@
1
+ export*from"@data-slot/select";export{};
package/dist/src.cjs ADDED
@@ -0,0 +1 @@
1
+ const e=require(`./events.cjs`);function t(t,n={}){let r=e.p(t,`accordion-item`);if(r.length===0)throw Error(`Accordion requires at least one accordion-item`);let i=n.multiple??e.c(t,`multiple`)??!1,a=n.onValueChange,o=n.collapsible??e.c(t,`collapsible`)??!0,s=n.defaultValue??e.d(t,`defaultValue`),c=s?Array.isArray(s)?s:[s]:[],l=new Set(c),u=[],d=[];r.forEach(n=>{let r=n.dataset.value;if(!r)return;let s=e.f(n,`accordion-trigger`),c=e.f(n,`accordion-content`);if(!s||!c)return;d.push(s);let p=e.i(c,`accordion-content`),m=e.i(s,`accordion-trigger`);s.setAttribute(`aria-controls`,p),c.setAttribute(`aria-labelledby`,m),c.setAttribute(`role`,`region`),u.push(e.r(s,`click`,()=>{if(l.has(r)){if(!o&&!i&&l.size===1)return;l.delete(r)}else i?l.add(r):l=new Set([r]);f(),e.n(t,`accordion:change`,{value:[...l]}),a?.([...l])}))}),u.push(e.r(t,`keydown`,e=>{let t=e.target,n=d.indexOf(t);if(n===-1)return;let r=n;switch(e.key){case`ArrowDown`:r=n+1,r>=d.length&&(r=0);break;case`ArrowUp`:r=n-1,r<0&&(r=d.length-1);break;case`Home`:r=0;break;case`End`:r=d.length-1;break;default:return}e.preventDefault(),d[r]?.focus()}));let f=()=>{r.forEach(t=>{let n=t.dataset.value;if(!n)return;let r=e.f(t,`accordion-trigger`),i=e.f(t,`accordion-content`);if(!r||!i)return;let a=l.has(n),o=r.getAttribute(`aria-expanded`)===`true`;if(e.o(r,`expanded`,a),t.setAttribute(`data-state`,a?`open`:`closed`),i.setAttribute(`data-state`,a?`open`:`closed`),a)i.hidden=!1,i._accordionTimeout&&=(clearTimeout(i._accordionTimeout),null);else if(o){i._accordionTimeout&&clearTimeout(i._accordionTimeout);let e=i.parentElement,t=n=>{n.propertyName===`grid-template-rows`&&(i.getAttribute(`data-state`)===`closed`&&(i.hidden=!0),e?.removeEventListener(`transitionend`,t),i._accordionTimeout&&=(clearTimeout(i._accordionTimeout),null))};e?(e.addEventListener(`transitionend`,t),i._accordionTimeout=setTimeout(()=>{i.getAttribute(`data-state`)===`closed`&&(i.hidden=!0),e.removeEventListener(`transitionend`,t),i._accordionTimeout=null},350)):i._accordionTimeout=setTimeout(()=>{i.hidden=!0,i._accordionTimeout=null},300)}else i.hidden=!0})};f(),u.push(e.r(t,`accordion:set`,n=>{let s=n.detail?.value;if(s===void 0)return;let c=(Array.isArray(s)?s:[s]).filter(e=>r.some(t=>t.dataset.value===e)),u=i?new Set(c):new Set(c.slice(0,1));!i&&!o&&u.size===0&&l.size>0||(u.size!==l.size||[...u].some(e=>!l.has(e)))&&(l=u,f(),e.n(t,`accordion:change`,{value:[...l]}),a?.([...l]))}));let p={expand:n=>{l.has(n)||(i?l.add(n):l=new Set([n]),f(),e.n(t,`accordion:change`,{value:[...l]}),a?.([...l]))},collapse:n=>{l.has(n)&&(!o&&!i&&l.size===1||(l.delete(n),f(),e.n(t,`accordion:change`,{value:[...l]}),a?.([...l])))},toggle:e=>{l.has(e)?p.collapse(e):p.expand(e)},get value(){return[...l]},destroy:()=>{u.forEach(e=>e()),u.length=0,r.forEach(t=>{let n=e.f(t,`accordion-content`);n&&n._accordionTimeout&&(clearTimeout(n._accordionTimeout),n._accordionTimeout=null)})}};return p}const n=new WeakSet;function r(r=document){let i=[];for(let a of e.m(r,`accordion`))n.has(a)||(n.add(a),i.push(t(a)));return i}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
package/dist/src.js ADDED
@@ -0,0 +1 @@
1
+ import{c as e,d as t,f as n,i as r,m as i,n as a,o,p as s,r as c}from"./events.js";function l(i,l={}){let u=s(i,`accordion-item`);if(u.length===0)throw Error(`Accordion requires at least one accordion-item`);let d=l.multiple??e(i,`multiple`)??!1,f=l.onValueChange,p=l.collapsible??e(i,`collapsible`)??!0,m=l.defaultValue??t(i,`defaultValue`),h=m?Array.isArray(m)?m:[m]:[],g=new Set(h),_=[],v=[];u.forEach(e=>{let t=e.dataset.value;if(!t)return;let o=n(e,`accordion-trigger`),s=n(e,`accordion-content`);if(!o||!s)return;v.push(o);let l=r(s,`accordion-content`),u=r(o,`accordion-trigger`);o.setAttribute(`aria-controls`,l),s.setAttribute(`aria-labelledby`,u),s.setAttribute(`role`,`region`),_.push(c(o,`click`,()=>{if(g.has(t)){if(!p&&!d&&g.size===1)return;g.delete(t)}else d?g.add(t):g=new Set([t]);y(),a(i,`accordion:change`,{value:[...g]}),f?.([...g])}))}),_.push(c(i,`keydown`,e=>{let t=e.target,n=v.indexOf(t);if(n===-1)return;let r=n;switch(e.key){case`ArrowDown`:r=n+1,r>=v.length&&(r=0);break;case`ArrowUp`:r=n-1,r<0&&(r=v.length-1);break;case`Home`:r=0;break;case`End`:r=v.length-1;break;default:return}e.preventDefault(),v[r]?.focus()}));let y=()=>{u.forEach(e=>{let t=e.dataset.value;if(!t)return;let r=n(e,`accordion-trigger`),i=n(e,`accordion-content`);if(!r||!i)return;let a=g.has(t),s=r.getAttribute(`aria-expanded`)===`true`;if(o(r,`expanded`,a),e.setAttribute(`data-state`,a?`open`:`closed`),i.setAttribute(`data-state`,a?`open`:`closed`),a)i.hidden=!1,i._accordionTimeout&&=(clearTimeout(i._accordionTimeout),null);else if(s){i._accordionTimeout&&clearTimeout(i._accordionTimeout);let e=i.parentElement,t=n=>{n.propertyName===`grid-template-rows`&&(i.getAttribute(`data-state`)===`closed`&&(i.hidden=!0),e?.removeEventListener(`transitionend`,t),i._accordionTimeout&&=(clearTimeout(i._accordionTimeout),null))};e?(e.addEventListener(`transitionend`,t),i._accordionTimeout=setTimeout(()=>{i.getAttribute(`data-state`)===`closed`&&(i.hidden=!0),e.removeEventListener(`transitionend`,t),i._accordionTimeout=null},350)):i._accordionTimeout=setTimeout(()=>{i.hidden=!0,i._accordionTimeout=null},300)}else i.hidden=!0})};y(),_.push(c(i,`accordion:set`,e=>{let t=e.detail?.value;if(t===void 0)return;let n=(Array.isArray(t)?t:[t]).filter(e=>u.some(t=>t.dataset.value===e)),r=d?new Set(n):new Set(n.slice(0,1));!d&&!p&&r.size===0&&g.size>0||(r.size!==g.size||[...r].some(e=>!g.has(e)))&&(g=r,y(),a(i,`accordion:change`,{value:[...g]}),f?.([...g]))}));let b={expand:e=>{g.has(e)||(d?g.add(e):g=new Set([e]),y(),a(i,`accordion:change`,{value:[...g]}),f?.([...g]))},collapse:e=>{g.has(e)&&(!p&&!d&&g.size===1||(g.delete(e),y(),a(i,`accordion:change`,{value:[...g]}),f?.([...g])))},toggle:e=>{g.has(e)?b.collapse(e):b.expand(e)},get value(){return[...g]},destroy:()=>{_.forEach(e=>e()),_.length=0,u.forEach(e=>{let t=n(e,`accordion-content`);t&&t._accordionTimeout&&(clearTimeout(t._accordionTimeout),t._accordionTimeout=null)})}};return b}const u=new WeakSet;function d(e=document){let t=[];for(let n of i(e,`accordion`))u.has(n)||(u.add(n),t.push(l(n)));return t}export{l as n,d as t};
package/dist/src2.cjs ADDED
@@ -0,0 +1 @@
1
+ const e=require(`./events.cjs`),t=require(`./popup.cjs`),n=new WeakSet,r=e=>{let t=e.trim();return t?t.endsWith(`ms`)?Number.parseFloat(t.slice(0,-2))||0:t.endsWith(`s`)?(Number.parseFloat(t.slice(0,-1))||0)*1e3:Number.parseFloat(t)||0:0},i=(e,t)=>{let n=e.split(`,`),i=t.split(`,`),a=Math.max(n.length,i.length),o=0;for(let e=0;e<a;e+=1){let t=r(n[e]??n[n.length-1]??`0`),a=r(i[e]??i[i.length-1]??`0`);o=Math.max(o,t+a)}return o},a=e=>{let t=getComputedStyle(e),n=i(t.transitionDuration,t.transitionDelay),r=i(t.animationDuration,t.animationDelay);return Math.max(n,r)};function o(r,i={}){let o=i.defaultOpen??e.c(r,`defaultOpen`)??!1,s=i.hiddenUntilFound??e.c(r,`hiddenUntilFound`)??!1,c=i.onOpenChange,l=e.f(r,`collapsible-trigger`),u=e.f(r,`collapsible-content`);if(!l||!u)throw Error(`Collapsible requires trigger and content slots`);let d=r.ownerDocument?.defaultView??window,f=o,p=[],m=null,h=null,g=null,_=null,v=[],y=e.i(u,`collapsible-content`),b=e.i(l,`collapsible-trigger`);l.setAttribute(`aria-controls`,y),u.setAttribute(`role`,`region`),u.setAttribute(`aria-labelledby`,b);let x=e=>{r.setAttribute(`data-state`,e),u.setAttribute(`data-state`,e)},S=(e,t)=>{u.style.setProperty(`--collapsible-panel-height`,e),u.style.setProperty(`--collapsible-panel-width`,t)},C=(e,t)=>{S(`${e}px`,`${t}px`)},w=()=>{S(`auto`,`auto`)},T=()=>{C(0,0)},E=()=>{C(u.scrollHeight,u.scrollWidth)},D=()=>{let e=u.style.getPropertyValue(`--collapsible-panel-height`).trim(),t=u.style.getPropertyValue(`--collapsible-panel-width`).trim();return e===`auto`&&t===`auto`},O=()=>{h!==null&&(d.cancelAnimationFrame(h),h=null),g!==null&&(d.clearTimeout(g),g=null),v.forEach(e=>e()),v=[]},k=()=>{_!==null&&(d.cancelAnimationFrame(_),_=null)},A=()=>{O(),k()},j=()=>{u.removeAttribute(`hidden`)},M=()=>{s?u.setAttribute(`hidden`,`until-found`):u.hidden=!0,T()},N=()=>{O(),!(!f||I.isExiting)&&w()},P=()=>{O();let e=a(u);if(e>0){let t=e=>{e.target===u&&N()};u.addEventListener(`transitionend`,t),u.addEventListener(`animationend`,t),v.push(()=>u.removeEventListener(`transitionend`,t)),v.push(()=>u.removeEventListener(`animationend`,t)),g=d.setTimeout(()=>{g=null,N()},Math.ceil(e)+50);return}h=d.requestAnimationFrame(()=>{h=null,N()})},F=()=>{k(),_=d.requestAnimationFrame(()=>{_=null,!f&&I.isExiting&&T()})},I=t.a({element:u,onExitComplete:()=>{k(),M()}}),L=t=>{f!==t&&(f=t,e.o(l,`expanded`,f),x(f?`open`:`closed`),f?(k(),j(),E(),I.enter(),P()):(O(),E(),I.exit(),F()),e.n(r,`collapsible:change`,{open:f}),c?.(f))};return e.o(l,`expanded`,f),f?(j(),E(),P()):M(),x(f?`open`:`closed`),typeof ResizeObserver<`u`&&(m=new ResizeObserver(()=>{!f||I.isExiting||D()||E()}),m.observe(u)),p.push(e.r(l,`click`,()=>{l.hasAttribute(`disabled`)||l.getAttribute(`aria-disabled`)===`true`||L(!f)})),s&&p.push(e.r(u,`beforematch`,()=>{f||L(!0)})),p.push(e.r(r,`collapsible:set`,e=>{if(l.hasAttribute(`disabled`)||l.getAttribute(`aria-disabled`)===`true`)return;let t=e.detail,n;t?.open===void 0?t?.value!==void 0&&(n=t.value):n=t.open,typeof n==`boolean`&&L(n)})),{open:()=>L(!0),close:()=>L(!1),toggle:()=>L(!f),get isOpen(){return f},destroy:()=>{I.cleanup(),A(),m?.disconnect(),m=null,p.forEach(e=>e()),p.length=0,n.delete(r)}}}function s(t=document){let r=[];for(let i of e.m(t,`collapsible`))n.has(i)||(n.add(i),r.push(o(i)));return r}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
package/dist/src2.js ADDED
@@ -0,0 +1 @@
1
+ import{c as e,f as t,i as n,m as r,n as i,o as a,r as o}from"./events.js";import{a as s}from"./popup.js";const c=new WeakSet,l=e=>{let t=e.trim();return t?t.endsWith(`ms`)?Number.parseFloat(t.slice(0,-2))||0:t.endsWith(`s`)?(Number.parseFloat(t.slice(0,-1))||0)*1e3:Number.parseFloat(t)||0:0},u=(e,t)=>{let n=e.split(`,`),r=t.split(`,`),i=Math.max(n.length,r.length),a=0;for(let e=0;e<i;e+=1){let t=l(n[e]??n[n.length-1]??`0`),i=l(r[e]??r[r.length-1]??`0`);a=Math.max(a,t+i)}return a},d=e=>{let t=getComputedStyle(e),n=u(t.transitionDuration,t.transitionDelay),r=u(t.animationDuration,t.animationDelay);return Math.max(n,r)};function f(r,l={}){let u=l.defaultOpen??e(r,`defaultOpen`)??!1,f=l.hiddenUntilFound??e(r,`hiddenUntilFound`)??!1,p=l.onOpenChange,m=t(r,`collapsible-trigger`),h=t(r,`collapsible-content`);if(!m||!h)throw Error(`Collapsible requires trigger and content slots`);let g=r.ownerDocument?.defaultView??window,_=u,v=[],y=null,b=null,x=null,S=null,C=[],w=n(h,`collapsible-content`),T=n(m,`collapsible-trigger`);m.setAttribute(`aria-controls`,w),h.setAttribute(`role`,`region`),h.setAttribute(`aria-labelledby`,T);let E=e=>{r.setAttribute(`data-state`,e),h.setAttribute(`data-state`,e)},D=(e,t)=>{h.style.setProperty(`--collapsible-panel-height`,e),h.style.setProperty(`--collapsible-panel-width`,t)},O=(e,t)=>{D(`${e}px`,`${t}px`)},k=()=>{D(`auto`,`auto`)},A=()=>{O(0,0)},j=()=>{O(h.scrollHeight,h.scrollWidth)},M=()=>{let e=h.style.getPropertyValue(`--collapsible-panel-height`).trim(),t=h.style.getPropertyValue(`--collapsible-panel-width`).trim();return e===`auto`&&t===`auto`},N=()=>{b!==null&&(g.cancelAnimationFrame(b),b=null),x!==null&&(g.clearTimeout(x),x=null),C.forEach(e=>e()),C=[]},P=()=>{S!==null&&(g.cancelAnimationFrame(S),S=null)},F=()=>{N(),P()},I=()=>{h.removeAttribute(`hidden`)},L=()=>{f?h.setAttribute(`hidden`,`until-found`):h.hidden=!0,A()},R=()=>{N(),!(!_||V.isExiting)&&k()},z=()=>{N();let e=d(h);if(e>0){let t=e=>{e.target===h&&R()};h.addEventListener(`transitionend`,t),h.addEventListener(`animationend`,t),C.push(()=>h.removeEventListener(`transitionend`,t)),C.push(()=>h.removeEventListener(`animationend`,t)),x=g.setTimeout(()=>{x=null,R()},Math.ceil(e)+50);return}b=g.requestAnimationFrame(()=>{b=null,R()})},B=()=>{P(),S=g.requestAnimationFrame(()=>{S=null,!_&&V.isExiting&&A()})},V=s({element:h,onExitComplete:()=>{P(),L()}}),H=e=>{_!==e&&(_=e,a(m,`expanded`,_),E(_?`open`:`closed`),_?(P(),I(),j(),V.enter(),z()):(N(),j(),V.exit(),B()),i(r,`collapsible:change`,{open:_}),p?.(_))};return a(m,`expanded`,_),_?(I(),j(),z()):L(),E(_?`open`:`closed`),typeof ResizeObserver<`u`&&(y=new ResizeObserver(()=>{!_||V.isExiting||M()||j()}),y.observe(h)),v.push(o(m,`click`,()=>{m.hasAttribute(`disabled`)||m.getAttribute(`aria-disabled`)===`true`||H(!_)})),f&&v.push(o(h,`beforematch`,()=>{_||H(!0)})),v.push(o(r,`collapsible:set`,e=>{if(m.hasAttribute(`disabled`)||m.getAttribute(`aria-disabled`)===`true`)return;let t=e.detail,n;t?.open===void 0?t?.value!==void 0&&(n=t.value):n=t.open,typeof n==`boolean`&&H(n)})),{open:()=>H(!0),close:()=>H(!1),toggle:()=>H(!_),get isOpen(){return _},destroy:()=>{V.cleanup(),F(),y?.disconnect(),y=null,v.forEach(e=>e()),v.length=0,c.delete(r)}}}function p(e=document){let t=[];for(let n of r(e,`collapsible`))c.has(n)||(c.add(n),t.push(f(n)));return t}export{f as n,p as t};
package/dist/src3.cjs ADDED
@@ -0,0 +1 @@
1
+ const e=require(`./events.cjs`),t=require(`./scroll.cjs`),n=require(`./popup.cjs`),r=`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`,i=[];let a=null;function o(){i.forEach((e,t)=>{let n=String(t);e._overlay&&(e._overlay.setAttribute(`data-stack-index`,n),e._overlay.style.setProperty(`--dialog-stack-index`,n),e._overlay.style.setProperty(`--dialog-overlay-stack-index`,n)),e._content&&(e._content.setAttribute(`data-stack-index`,n),e._content.style.setProperty(`--dialog-stack-index`,n),e._content.style.setProperty(`--dialog-content-stack-index`,n))})}function s(){if(a)return;let t=e.r(document,`keydown`,e=>{if(i.length===0)return;let t=i[i.length-1];!t||!t.isOpen||e.key===`Tab`&&t._handleKeydown&&t._handleKeydown(e)});a=()=>{t(),a=null}}function c(){i.length===0&&a&&a()}function l(a,l={}){let u=l.defaultOpen??e.c(a,`defaultOpen`)??!1,d=l.onOpenChange,f=l.closeOnClickOutside??e.c(a,`closeOnClickOutside`)??!0,p=l.closeOnEscape??e.c(a,`closeOnEscape`)??!0,m=l.lockScroll??e.c(a,`lockScroll`)??!0,h=l.alertDialog??e.c(a,`alertDialog`)??!1,g=e.f(a,`dialog-trigger`),_=e.f(a,`dialog-portal`),v=e.f(a,`dialog-overlay`),y=e.f(a,`dialog-content`),b=e.f(a,`dialog-title`),x=e.f(a,`dialog-description`);if(!y)throw Error(`Dialog requires dialog-content slot`);if(!v)throw Error(`Dialog requires dialog-overlay slot`);let S=!1,C=null,w=[],T=_?n.r({content:_,root:a}):null,E=!1;e.i(y,`dialog-content`),y.setAttribute(`role`,h?`alertdialog`:`dialog`),e.o(y,`modal`,!0),e.a(y,b,x),v.setAttribute(`role`,`presentation`),v.setAttribute(`aria-hidden`,`true`),v.tabIndex=-1,g&&(g.setAttribute(`aria-haspopup`,`dialog`),g.setAttribute(`aria-controls`,y.id),e.o(g,`expanded`,!1));let D=!1,O=()=>{y.hasAttribute(`tabindex`)||(y.tabIndex=-1,D=!0)},k=()=>{D&&=(y.removeAttribute(`tabindex`),!1)},A=()=>{let e=y.querySelector(`[autofocus]`);if(e)return e.focus();let t=y.querySelector(r);if(t)return t.focus();O(),y.focus()},j=()=>{T?.mount()},M=e=>{a.setAttribute(`data-state`,e),_&&_.setAttribute(`data-state`,e),v.setAttribute(`data-state`,e),y.setAttribute(`data-state`,e)},N=()=>{v.removeAttribute(`data-stack-index`),y.removeAttribute(`data-stack-index`),v.style.removeProperty(`--dialog-stack-index`),v.style.removeProperty(`--dialog-overlay-stack-index`),y.style.removeProperty(`--dialog-stack-index`),y.style.removeProperty(`--dialog-content-stack-index`)},P=(r,l=!1)=>{if(!(S===r&&!l)){if(r)j(),C=document.activeElement,i.push(I),s(),o(),m&&!E&&(t.t(),E=!0);else{let e=i.indexOf(I);e!==-1&&i.splice(e,1),c(),N(),o(),E&&=(t.n(),!1),k();let r=C;C=null,requestAnimationFrame(()=>{r&&document.contains(r)&&typeof r.focus==`function`?n.s(r):g&&document.contains(g)&&n.s(g)})}S=r,y.hidden=!S,v.hidden=!S,g&&e.o(g,`expanded`,S),M(S?`open`:`closed`),e.n(a,`dialog:change`,{open:S}),d?.(S),r&&requestAnimationFrame(A)}},F=e=>{if(e.key!==`Tab`)return;let t=y.querySelectorAll(r);if(t.length===0){e.preventDefault(),O(),y.focus();return}let n=t[0],i=t[t.length-1],a=document.activeElement;if(!y.contains(a)){e.preventDefault(),n.focus();return}if(n===i){e.preventDefault();return}e.shiftKey?a===n&&(e.preventDefault(),i.focus()):a===i&&(e.preventDefault(),n.focus())};u?(j(),y.hidden=!1,v.hidden=!1,M(`open`),S=!0,g&&e.o(g,`expanded`,!0)):(y.hidden=!0,v.hidden=!0,M(`closed`)),g&&w.push(e.r(g,`click`,()=>P(!S))),w.push(e.r(y,`click`,e=>{let t=e.target;if(!t)return;let n=t.closest?.(`[data-slot="dialog-close"]`);n&&y.contains(n)&&P(!1)})),f&&w.push(e.r(v,`pointerdown`,e=>{e.target===v&&S&&P(!1)})),w.push(n.n({root:a,isOpen:()=>S,onDismiss:()=>P(!1),closeOnClickOutside:!1,closeOnEscape:p}));let I={open:()=>P(!0),close:()=>P(!1),toggle:()=>P(!S),get isOpen(){return S},destroy:()=>{if(S)P(!1,!0);else{let e=i.indexOf(I);e!==-1&&(i.splice(e,1),o(),c())}k(),w.forEach(e=>e()),w.length=0,T?.cleanup()},_handleKeydown:F,_content:y,_overlay:v};return w.push(e.r(a,`dialog:set`,e=>{let t=e.detail,n;t?.open===void 0?t?.value!==void 0&&(n=t.value):n=t.open,typeof n==`boolean`&&P(n)})),u&&(C=document.activeElement,i.push(I),s(),o(),m&&!E&&(t.t(),E=!0),e.n(a,`dialog:change`,{open:!0}),d?.(!0),requestAnimationFrame(A)),I}const u=new WeakSet;function d(t=document){let n=[];for(let r of e.m(t,`dialog`))u.has(r)||(u.add(r),n.push(l(r)));return n}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return d}});
package/dist/src3.js ADDED
@@ -0,0 +1 @@
1
+ import{a as e,c as t,f as n,i as r,m as i,n as a,o,r as s}from"./events.js";import{n as c,t as l}from"./scroll.js";import{n as u,r as d,s as f}from"./popup.js";const p=`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`,m=[];let h=null;function g(){m.forEach((e,t)=>{let n=String(t);e._overlay&&(e._overlay.setAttribute(`data-stack-index`,n),e._overlay.style.setProperty(`--dialog-stack-index`,n),e._overlay.style.setProperty(`--dialog-overlay-stack-index`,n)),e._content&&(e._content.setAttribute(`data-stack-index`,n),e._content.style.setProperty(`--dialog-stack-index`,n),e._content.style.setProperty(`--dialog-content-stack-index`,n))})}function _(){if(h)return;let e=s(document,`keydown`,e=>{if(m.length===0)return;let t=m[m.length-1];!t||!t.isOpen||e.key===`Tab`&&t._handleKeydown&&t._handleKeydown(e)});h=()=>{e(),h=null}}function v(){m.length===0&&h&&h()}function y(i,h={}){let y=h.defaultOpen??t(i,`defaultOpen`)??!1,b=h.onOpenChange,x=h.closeOnClickOutside??t(i,`closeOnClickOutside`)??!0,S=h.closeOnEscape??t(i,`closeOnEscape`)??!0,C=h.lockScroll??t(i,`lockScroll`)??!0,w=h.alertDialog??t(i,`alertDialog`)??!1,T=n(i,`dialog-trigger`),E=n(i,`dialog-portal`),D=n(i,`dialog-overlay`),O=n(i,`dialog-content`),k=n(i,`dialog-title`),A=n(i,`dialog-description`);if(!O)throw Error(`Dialog requires dialog-content slot`);if(!D)throw Error(`Dialog requires dialog-overlay slot`);let j=!1,M=null,N=[],P=E?d({content:E,root:i}):null,F=!1;r(O,`dialog-content`),O.setAttribute(`role`,w?`alertdialog`:`dialog`),o(O,`modal`,!0),e(O,k,A),D.setAttribute(`role`,`presentation`),D.setAttribute(`aria-hidden`,`true`),D.tabIndex=-1,T&&(T.setAttribute(`aria-haspopup`,`dialog`),T.setAttribute(`aria-controls`,O.id),o(T,`expanded`,!1));let I=!1,L=()=>{O.hasAttribute(`tabindex`)||(O.tabIndex=-1,I=!0)},R=()=>{I&&=(O.removeAttribute(`tabindex`),!1)},z=()=>{let e=O.querySelector(`[autofocus]`);if(e)return e.focus();let t=O.querySelector(p);if(t)return t.focus();L(),O.focus()},B=()=>{P?.mount()},V=e=>{i.setAttribute(`data-state`,e),E&&E.setAttribute(`data-state`,e),D.setAttribute(`data-state`,e),O.setAttribute(`data-state`,e)},H=()=>{D.removeAttribute(`data-stack-index`),O.removeAttribute(`data-stack-index`),D.style.removeProperty(`--dialog-stack-index`),D.style.removeProperty(`--dialog-overlay-stack-index`),O.style.removeProperty(`--dialog-stack-index`),O.style.removeProperty(`--dialog-content-stack-index`)},U=(e,t=!1)=>{if(!(j===e&&!t)){if(e)B(),M=document.activeElement,m.push(G),_(),g(),C&&!F&&(l(),F=!0);else{let e=m.indexOf(G);e!==-1&&m.splice(e,1),v(),H(),g(),F&&=(c(),!1),R();let t=M;M=null,requestAnimationFrame(()=>{t&&document.contains(t)&&typeof t.focus==`function`?f(t):T&&document.contains(T)&&f(T)})}j=e,O.hidden=!j,D.hidden=!j,T&&o(T,`expanded`,j),V(j?`open`:`closed`),a(i,`dialog:change`,{open:j}),b?.(j),e&&requestAnimationFrame(z)}},W=e=>{if(e.key!==`Tab`)return;let t=O.querySelectorAll(p);if(t.length===0){e.preventDefault(),L(),O.focus();return}let n=t[0],r=t[t.length-1],i=document.activeElement;if(!O.contains(i)){e.preventDefault(),n.focus();return}if(n===r){e.preventDefault();return}e.shiftKey?i===n&&(e.preventDefault(),r.focus()):i===r&&(e.preventDefault(),n.focus())};y?(B(),O.hidden=!1,D.hidden=!1,V(`open`),j=!0,T&&o(T,`expanded`,!0)):(O.hidden=!0,D.hidden=!0,V(`closed`)),T&&N.push(s(T,`click`,()=>U(!j))),N.push(s(O,`click`,e=>{let t=e.target;if(!t)return;let n=t.closest?.(`[data-slot="dialog-close"]`);n&&O.contains(n)&&U(!1)})),x&&N.push(s(D,`pointerdown`,e=>{e.target===D&&j&&U(!1)})),N.push(u({root:i,isOpen:()=>j,onDismiss:()=>U(!1),closeOnClickOutside:!1,closeOnEscape:S}));let G={open:()=>U(!0),close:()=>U(!1),toggle:()=>U(!j),get isOpen(){return j},destroy:()=>{if(j)U(!1,!0);else{let e=m.indexOf(G);e!==-1&&(m.splice(e,1),g(),v())}R(),N.forEach(e=>e()),N.length=0,P?.cleanup()},_handleKeydown:W,_content:O,_overlay:D};return N.push(s(i,`dialog:set`,e=>{let t=e.detail,n;t?.open===void 0?t?.value!==void 0&&(n=t.value):n=t.open,typeof n==`boolean`&&U(n)})),y&&(M=document.activeElement,m.push(G),_(),g(),C&&!F&&(l(),F=!0),a(i,`dialog:change`,{open:!0}),b?.(!0),requestAnimationFrame(z)),G}const b=new WeakSet;function x(e=document){let t=[];for(let n of i(e,`dialog`))b.has(n)||(b.add(n),t.push(y(n)));return t}export{y as n,x as t};
package/dist/src4.cjs ADDED
@@ -0,0 +1 @@
1
+ const e=require(`./events.cjs`),t=require(`./popup.cjs`),n=[`top`,`right`,`bottom`,`left`],r=[`start`,`center`,`end`];let i=0;function a(a,o={}){let s=e.f(a,`hover-card-trigger`),c=e.f(a,`hover-card-content`),l=e.f(a,`hover-card-positioner`),u=l&&c&&l.contains(c)?l:null,d=e.f(a,`hover-card-portal`),f=d&&u&&d.contains(u)?d:null;if(!s||!c)throw Error(`Hover-card requires trigger and content slots`);let p=o.open!==void 0,m=o.defaultOpen??e.c(a,`defaultOpen`)??!1,h=o.delay??e.u(a,`delay`)??700,g=o.skipDelayDuration??e.u(a,`skipDelayDuration`)??300,_=o.closeDelay??e.u(a,`closeDelay`)??300,v=o.onOpenChange,y=o.closeOnClickOutside??e.c(a,`closeOnClickOutside`)??!0,b=o.closeOnEscape??e.c(a,`closeOnEscape`)??!0,x=o.portal??e.c(c,`portal`)??e.c(a,`portal`)??!0,S=o.side??e.l(c,`side`,n)??e.l(a,`side`,n)??`bottom`,C=o.align??e.l(c,`align`,r)??e.l(a,`align`,r)??`center`,w=o.sideOffset??e.u(c,`sideOffset`)??e.u(a,`sideOffset`)??4,T=o.alignOffset??e.u(c,`alignOffset`)??e.u(a,`alignOffset`)??0,E=o.avoidCollisions??e.c(c,`avoidCollisions`)??e.c(a,`avoidCollisions`)??!0,D=o.collisionPadding??e.u(c,`collisionPadding`)??e.u(a,`collisionPadding`)??8,O=o.open??m,k=!1,A=!1,j=!1,M=!1,N=null,P=null,F=[],I=t.r({content:c,root:a,enabled:x,wrapperSlot:u?void 0:`hover-card-positioner`,container:u??void 0,mountTarget:u?f??u:void 0}),L=e.i(c,`hover-card-content`);s.setAttribute(`aria-haspopup`,`dialog`),s.setAttribute(`aria-controls`,L),c.setAttribute(`data-side`,S),c.setAttribute(`data-align`,C);let R=()=>s.hasAttribute(`disabled`)||s.getAttribute(`aria-disabled`)===`true`,z=()=>{N&&=(clearTimeout(N),null)},B=()=>{P&&=(clearTimeout(P),null)},V=()=>{z(),B()},H=(t,n)=>{e.n(a,`hover-card:change`,{open:t,reason:n,trigger:s,content:c}),v?.(t)},U=()=>{let e=I.container,n=a.ownerDocument.defaultView??window,r=t.t({anchorRect:s.getBoundingClientRect(),contentRect:c.getBoundingClientRect(),side:S,align:C,sideOffset:w,alignOffset:T,avoidCollisions:E,collisionPadding:D});e.style.position=`absolute`,e.style.top=`0px`,e.style.left=`0px`,e.style.transform=`translate3d(${r.x+n.scrollX}px, ${r.y+n.scrollY}px, 0)`,e.style.willChange=`transform`,e.style.margin=`0`,c.setAttribute(`data-side`,r.side),c.setAttribute(`data-align`,r.align),e!==c&&(e.setAttribute(`data-side`,r.side),e.setAttribute(`data-align`,r.align))},W=e=>{let t=I.container;if(a.setAttribute(`data-state`,e),c.setAttribute(`data-state`,e),t!==c&&t.setAttribute(`data-state`,e),e===`open`){a.setAttribute(`data-open`,``),c.setAttribute(`data-open`,``),t!==c&&t.setAttribute(`data-open`,``),a.removeAttribute(`data-closed`),c.removeAttribute(`data-closed`),t!==c&&t.removeAttribute(`data-closed`);return}a.setAttribute(`data-closed`,``),c.setAttribute(`data-closed`,``),t!==c&&t.setAttribute(`data-closed`,``),a.removeAttribute(`data-open`),c.removeAttribute(`data-open`),t!==c&&t.removeAttribute(`data-open`)},G=t.a({element:c,onExitComplete:()=>{k||(I.restore(),c.hidden=!0)}}),K=t.i({observedElements:[s,c],isActive:()=>O,ancestorScroll:!1,onUpdate:U}),q=(t,n)=>{O!==t&&(!t&&O&&g>0&&(i=Date.now()+g),O=t,e.o(s,`expanded`,O),t?(I.mount(),c.hidden=!1,W(`open`),G.enter(),U(),K.start(),K.update()):(W(`closed`),G.exit(),K.stop()),H(O,n))},J=(e,t)=>{if(O!==e){if(p){H(e,t);return}q(e,t)}},Y=(e,t)=>{q(e,t)},X=e=>{if(B(),z(),g>0&&Date.now()<i){J(!0,e);return}if(h<=0){J(!0,e);return}N=setTimeout(()=>{N=null,J(!0,e)},h)},Z=e=>{if(z(),B(),_<=0){J(!1,e);return}P=setTimeout(()=>{P=null,J(!1,e)},_)},Q=e=>{A||j||M||Z(e)};return e.o(s,`expanded`,O),W(O?`open`:`closed`),c.hidden=!O,O&&(I.mount(),G.enter(),c.hidden=!1,U(),K.start(),K.update()),F.push(e.r(s,`pointerenter`,e=>{e.pointerType!==`touch`&&(A=!0,!R()&&X(`pointer`))}),e.r(s,`pointerleave`,e=>{if(e.pointerType===`touch`)return;A=!1;let t=e.relatedTarget;t&&c.contains(t)||Q(`pointer`)})),F.push(e.r(c,`pointerenter`,e=>{e.pointerType!==`touch`&&(j=!0,B())}),e.r(c,`pointerleave`,e=>{if(e.pointerType===`touch`)return;j=!1;let t=e.relatedTarget;t&&s.contains(t)||Q(`pointer`)})),F.push(e.r(s,`focusin`,()=>{M=!0,!R()&&X(`focus`)}),e.r(s,`focusout`,e=>{let t=e.relatedTarget;t&&(s.contains(t)||c.contains(t))||(M=!1,Q(`blur`))}),e.r(c,`focusin`,()=>{M=!0,B()}),e.r(c,`focusout`,e=>{let t=e.relatedTarget;t&&(s.contains(t)||c.contains(t))||(M=!1,Q(`blur`))})),F.push(t.n({root:a,isOpen:()=>O,onDismiss:()=>J(!1,`dismiss`),closeOnClickOutside:y,closeOnEscape:b})),F.push(e.r(a,`hover-card:set`,e=>{let t=e.detail,n;t?.open===void 0?t?.value!==void 0&&(n=t.value):n=t.open,typeof n==`boolean`&&Y(n,`api`)})),{open:()=>{R()||(V(),J(!0,`api`))},close:()=>{V(),J(!1,`api`)},toggle:()=>{V(),!(!O&&R())&&J(!O,`api`)},setOpen:e=>{V(),Y(e,`api`)},get isOpen(){return O},destroy:()=>{k=!0,V(),K.stop(),G.cleanup(),I.cleanup(),F.forEach(e=>e()),F.length=0}}}const o=new WeakSet;function s(t=document){let n=[];for(let r of e.m(t,`hover-card`))o.has(r)||(o.add(r),n.push(a(r)));return n}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
package/dist/src4.js ADDED
@@ -0,0 +1 @@
1
+ import{c as e,f as t,i as n,l as r,m as i,n as ee,o as a,r as o,u as s}from"./events.js";import{a as c,i as l,n as te,r as u,t as d}from"./popup.js";const f=[`top`,`right`,`bottom`,`left`],p=[`start`,`center`,`end`];let m=0;function h(i,h={}){let g=t(i,`hover-card-trigger`),_=t(i,`hover-card-content`),v=t(i,`hover-card-positioner`),y=v&&_&&v.contains(_)?v:null,b=t(i,`hover-card-portal`),ne=b&&y&&b.contains(y)?b:null;if(!g||!_)throw Error(`Hover-card requires trigger and content slots`);let re=h.open!==void 0,x=h.defaultOpen??e(i,`defaultOpen`)??!1,S=h.delay??s(i,`delay`)??700,C=h.skipDelayDuration??s(i,`skipDelayDuration`)??300,w=h.closeDelay??s(i,`closeDelay`)??300,ie=h.onOpenChange,ae=h.closeOnClickOutside??e(i,`closeOnClickOutside`)??!0,oe=h.closeOnEscape??e(i,`closeOnEscape`)??!0,T=h.portal??e(_,`portal`)??e(i,`portal`)??!0,E=h.side??r(_,`side`,f)??r(i,`side`,f)??`bottom`,D=h.align??r(_,`align`,p)??r(i,`align`,p)??`center`,O=h.sideOffset??s(_,`sideOffset`)??s(i,`sideOffset`)??4,k=h.alignOffset??s(_,`alignOffset`)??s(i,`alignOffset`)??0,se=h.avoidCollisions??e(_,`avoidCollisions`)??e(i,`avoidCollisions`)??!0,ce=h.collisionPadding??s(_,`collisionPadding`)??s(i,`collisionPadding`)??8,A=h.open??x,j=!1,M=!1,N=!1,P=!1,F=null,I=null,L=[],R=u({content:_,root:i,enabled:T,wrapperSlot:y?void 0:`hover-card-positioner`,container:y??void 0,mountTarget:y?ne??y:void 0}),z=n(_,`hover-card-content`);g.setAttribute(`aria-haspopup`,`dialog`),g.setAttribute(`aria-controls`,z),_.setAttribute(`data-side`,E),_.setAttribute(`data-align`,D);let B=()=>g.hasAttribute(`disabled`)||g.getAttribute(`aria-disabled`)===`true`,V=()=>{F&&=(clearTimeout(F),null)},H=()=>{I&&=(clearTimeout(I),null)},U=()=>{V(),H()},W=(e,t)=>{ee(i,`hover-card:change`,{open:e,reason:t,trigger:g,content:_}),ie?.(e)},G=()=>{let e=R.container,t=i.ownerDocument.defaultView??window,n=d({anchorRect:g.getBoundingClientRect(),contentRect:_.getBoundingClientRect(),side:E,align:D,sideOffset:O,alignOffset:k,avoidCollisions:se,collisionPadding:ce});e.style.position=`absolute`,e.style.top=`0px`,e.style.left=`0px`,e.style.transform=`translate3d(${n.x+t.scrollX}px, ${n.y+t.scrollY}px, 0)`,e.style.willChange=`transform`,e.style.margin=`0`,_.setAttribute(`data-side`,n.side),_.setAttribute(`data-align`,n.align),e!==_&&(e.setAttribute(`data-side`,n.side),e.setAttribute(`data-align`,n.align))},K=e=>{let t=R.container;if(i.setAttribute(`data-state`,e),_.setAttribute(`data-state`,e),t!==_&&t.setAttribute(`data-state`,e),e===`open`){i.setAttribute(`data-open`,``),_.setAttribute(`data-open`,``),t!==_&&t.setAttribute(`data-open`,``),i.removeAttribute(`data-closed`),_.removeAttribute(`data-closed`),t!==_&&t.removeAttribute(`data-closed`);return}i.setAttribute(`data-closed`,``),_.setAttribute(`data-closed`,``),t!==_&&t.setAttribute(`data-closed`,``),i.removeAttribute(`data-open`),_.removeAttribute(`data-open`),t!==_&&t.removeAttribute(`data-open`)},q=c({element:_,onExitComplete:()=>{j||(R.restore(),_.hidden=!0)}}),J=l({observedElements:[g,_],isActive:()=>A,ancestorScroll:!1,onUpdate:G}),Y=(e,t)=>{A!==e&&(!e&&A&&C>0&&(m=Date.now()+C),A=e,a(g,`expanded`,A),e?(R.mount(),_.hidden=!1,K(`open`),q.enter(),G(),J.start(),J.update()):(K(`closed`),q.exit(),J.stop()),W(A,t))},X=(e,t)=>{if(A!==e){if(re){W(e,t);return}Y(e,t)}},Z=(e,t)=>{Y(e,t)},Q=e=>{if(H(),V(),C>0&&Date.now()<m){X(!0,e);return}if(S<=0){X(!0,e);return}F=setTimeout(()=>{F=null,X(!0,e)},S)},le=e=>{if(V(),H(),w<=0){X(!1,e);return}I=setTimeout(()=>{I=null,X(!1,e)},w)},$=e=>{M||N||P||le(e)};return a(g,`expanded`,A),K(A?`open`:`closed`),_.hidden=!A,A&&(R.mount(),q.enter(),_.hidden=!1,G(),J.start(),J.update()),L.push(o(g,`pointerenter`,e=>{e.pointerType!==`touch`&&(M=!0,!B()&&Q(`pointer`))}),o(g,`pointerleave`,e=>{if(e.pointerType===`touch`)return;M=!1;let t=e.relatedTarget;t&&_.contains(t)||$(`pointer`)})),L.push(o(_,`pointerenter`,e=>{e.pointerType!==`touch`&&(N=!0,H())}),o(_,`pointerleave`,e=>{if(e.pointerType===`touch`)return;N=!1;let t=e.relatedTarget;t&&g.contains(t)||$(`pointer`)})),L.push(o(g,`focusin`,()=>{P=!0,!B()&&Q(`focus`)}),o(g,`focusout`,e=>{let t=e.relatedTarget;t&&(g.contains(t)||_.contains(t))||(P=!1,$(`blur`))}),o(_,`focusin`,()=>{P=!0,H()}),o(_,`focusout`,e=>{let t=e.relatedTarget;t&&(g.contains(t)||_.contains(t))||(P=!1,$(`blur`))})),L.push(te({root:i,isOpen:()=>A,onDismiss:()=>X(!1,`dismiss`),closeOnClickOutside:ae,closeOnEscape:oe})),L.push(o(i,`hover-card:set`,e=>{let t=e.detail,n;t?.open===void 0?t?.value!==void 0&&(n=t.value):n=t.open,typeof n==`boolean`&&Z(n,`api`)})),{open:()=>{B()||(U(),X(!0,`api`))},close:()=>{U(),X(!1,`api`)},toggle:()=>{U(),!(!A&&B())&&X(!A,`api`)},setOpen:e=>{U(),Z(e,`api`)},get isOpen(){return A},destroy:()=>{j=!0,U(),J.stop(),q.cleanup(),R.cleanup(),L.forEach(e=>e()),L.length=0}}}const g=new WeakSet;function _(e=document){let t=[];for(let n of i(e,`hover-card`))g.has(n)||(g.add(n),t.push(h(n)));return t}export{h as n,_ as t};
package/dist/src5.cjs ADDED
@@ -0,0 +1 @@
1
+ const e=require(`./events.cjs`),t=[`horizontal`,`vertical`],n=[`auto`,`manual`];function r(r,a={}){let o=e.f(r,`tabs-list`),s=e.p(r,`tabs-trigger`),c=e.p(r,`tabs-content`),l=e.f(r,`tabs-indicator`);if(!o||s.length===0)throw Error(`Tabs requires tabs-list and at least one tabs-trigger`);let u=a.onValueChange,d=a.orientation??e.l(r,`orientation`,t)??`horizontal`,f=a.activationMode??e.l(r,`activationMode`,n)??`auto`,p=new Map;for(let e of c){let t=(e.dataset.value||``).trim();t&&p.set(t,e)}let m=[],h=new Map,g=new Map;for(let e of s){let t=(e.dataset.value||``).trim();if(!t)continue;let n={el:e,value:t,disabled:e.hasAttribute(`disabled`)||e.dataset.disabled!==void 0||e.getAttribute(`aria-disabled`)===`true`,panel:p.get(t)};m.push(n),h.set(t,n),g.set(e,n)}let _=m.filter(e=>!e.disabled),v=new Map;_.forEach((e,t)=>v.set(e.value,t));let y=_[0]?.value||``,b=(a.defaultValue??e.d(r,`defaultValue`)??``).trim(),x=h.get(b),S=x&&!x.disabled?b:y,C=[];o.setAttribute(`role`,`tablist`),d===`vertical`&&e.o(o,`orientation`,`vertical`);for(let t of m){let{el:n,disabled:r,panel:i}=t;n.setAttribute(`role`,`tab`);let a=e.i(n,`tab`);if(n.tagName===`BUTTON`&&!n.hasAttribute(`type`)&&(n.type=`button`),r&&(n.setAttribute(`aria-disabled`,`true`),n.tagName===`BUTTON`&&(n.disabled=!0)),i){i.setAttribute(`role`,`tabpanel`),i.tabIndex=-1;let t=e.i(i,`tabpanel`);n.setAttribute(`aria-controls`,t),i.setAttribute(`aria-labelledby`,a)}}let w=()=>{if(!l)return;let e=h.get(S);if(!e)return;let t=o.getBoundingClientRect(),n=e.el.getBoundingClientRect(),r=o.scrollLeft,i=o.scrollTop;l.style.setProperty(`--active-tab-left`,`${n.left-t.left-o.clientLeft+r}px`),l.style.setProperty(`--active-tab-width`,`${n.width}px`),l.style.setProperty(`--active-tab-top`,`${n.top-t.top-o.clientTop+i}px`),l.style.setProperty(`--active-tab-height`,`${n.height}px`)},T=(e,t)=>{let n=m.findIndex(t=>t.value===e),r=m.findIndex(e=>e.value===t);return n<0||r<0||n===r?null:d===`vertical`?r>n?`down`:`up`:r>n?`right`:`left`},E=(t,n=!1)=>{if(t=t.trim(),S===t&&!n)return;let i=h.get(t);if(!i||i.disabled)if(n){if(t=y,!t)return}else return;let a=S,o=a!==t,s=!n&&o?T(a,t):null;S=t;for(let n of m){let r=n.value===t;e.o(n.el,`selected`,r),n.el.tabIndex=r&&!n.disabled?0:-1,n.el.dataset.state=r?`active`:`inactive`}for(let e of c){let n=(e.dataset.value||``).trim();if(!n)continue;let r=n===t;e.hidden=!r,e.dataset.state=r?`active`:`inactive`,s?e.dataset.activationDirection=s:delete e.dataset.activationDirection}r.setAttribute(`data-value`,t),l&&w(),o&&!n&&(e.n(r,`tabs:change`,{value:t}),u?.(t))};if(E(S,!0),l){let t=()=>requestAnimationFrame(w);C.push(e.r(window,`resize`,t)),C.push(e.r(o,`scroll`,t));let n=new ResizeObserver(t);n.observe(o),C.push(()=>n.disconnect())}C.push(e.r(o,`click`,e=>{let t=e.target.closest?.(`[data-slot="tabs-trigger"]`);if(!t)return;let n=g.get(t);n&&!n.disabled&&E(n.value)}));let D=d===`horizontal`,O=D?`ArrowLeft`:`ArrowUp`,k=D?`ArrowRight`:`ArrowDown`;C.push(e.r(o,`keydown`,e=>{let t=e.target.closest?.(`[data-slot="tabs-trigger"]`);if(!t)return;let n=g.get(t);if(!n||_.length===0)return;if(e.key===`Enter`||e.key===` `){e.preventDefault(),n.disabled||E(n.value);return}if(D&&e.key===`ArrowDown`&&n.value===S){let t=n.panel;if(t){e.preventDefault(),(t.querySelector(`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`)||t).focus();return}}let r=v.get(n.value)??-1;r===-1&&(r=v.get(S)??0);let i=r;switch(e.key){case O:i=r-1,i<0&&(i=_.length-1);break;case k:i=r+1,i>=_.length&&(i=0);break;case`Home`:i=0;break;case`End`:i=_.length-1;break;default:return}e.preventDefault();let a=_[i];a&&(a.el.focus(),f===`auto`&&E(a.value))}));let A=e=>{let t=e,n=e.currentTarget,r=t.detail,i=(typeof r==`string`?r:r?.value??n?.dataset?.value)?.trim();i&&E(i)};return C.push(e.r(r,`tabs:set`,A)),C.push(e.r(r,`tabs:select`,A)),{select:e=>E(e),get value(){return S},updateIndicator:w,destroy:()=>{C.forEach(e=>e()),C.length=0,i.delete(r)}}}const i=new WeakSet;function a(t=document){let n=[];for(let a of e.m(t,`tabs`))i.has(a)||(i.add(a),n.push(r(a)));return n}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
package/dist/src5.js ADDED
@@ -0,0 +1 @@
1
+ import{d as e,f as t,i as n,l as r,m as i,n as a,o,p as s,r as c}from"./events.js";const l=[`horizontal`,`vertical`],u=[`auto`,`manual`];function d(i,d={}){let p=t(i,`tabs-list`),m=s(i,`tabs-trigger`),h=s(i,`tabs-content`),g=t(i,`tabs-indicator`);if(!p||m.length===0)throw Error(`Tabs requires tabs-list and at least one tabs-trigger`);let _=d.onValueChange,v=d.orientation??r(i,`orientation`,l)??`horizontal`,y=d.activationMode??r(i,`activationMode`,u)??`auto`,b=new Map;for(let e of h){let t=(e.dataset.value||``).trim();t&&b.set(t,e)}let x=[],S=new Map,C=new Map;for(let e of m){let t=(e.dataset.value||``).trim();if(!t)continue;let n={el:e,value:t,disabled:e.hasAttribute(`disabled`)||e.dataset.disabled!==void 0||e.getAttribute(`aria-disabled`)===`true`,panel:b.get(t)};x.push(n),S.set(t,n),C.set(e,n)}let w=x.filter(e=>!e.disabled),T=new Map;w.forEach((e,t)=>T.set(e.value,t));let E=w[0]?.value||``,D=(d.defaultValue??e(i,`defaultValue`)??``).trim(),O=S.get(D),k=O&&!O.disabled?D:E,A=[];p.setAttribute(`role`,`tablist`),v===`vertical`&&o(p,`orientation`,`vertical`);for(let e of x){let{el:t,disabled:r,panel:i}=e;t.setAttribute(`role`,`tab`);let a=n(t,`tab`);if(t.tagName===`BUTTON`&&!t.hasAttribute(`type`)&&(t.type=`button`),r&&(t.setAttribute(`aria-disabled`,`true`),t.tagName===`BUTTON`&&(t.disabled=!0)),i){i.setAttribute(`role`,`tabpanel`),i.tabIndex=-1;let e=n(i,`tabpanel`);t.setAttribute(`aria-controls`,e),i.setAttribute(`aria-labelledby`,a)}}let j=()=>{if(!g)return;let e=S.get(k);if(!e)return;let t=p.getBoundingClientRect(),n=e.el.getBoundingClientRect(),r=p.scrollLeft,i=p.scrollTop;g.style.setProperty(`--active-tab-left`,`${n.left-t.left-p.clientLeft+r}px`),g.style.setProperty(`--active-tab-width`,`${n.width}px`),g.style.setProperty(`--active-tab-top`,`${n.top-t.top-p.clientTop+i}px`),g.style.setProperty(`--active-tab-height`,`${n.height}px`)},M=(e,t)=>{let n=x.findIndex(t=>t.value===e),r=x.findIndex(e=>e.value===t);return n<0||r<0||n===r?null:v===`vertical`?r>n?`down`:`up`:r>n?`right`:`left`},N=(e,t=!1)=>{if(e=e.trim(),k===e&&!t)return;let n=S.get(e);if(!n||n.disabled)if(t){if(e=E,!e)return}else return;let r=k,s=r!==e,c=!t&&s?M(r,e):null;k=e;for(let t of x){let n=t.value===e;o(t.el,`selected`,n),t.el.tabIndex=n&&!t.disabled?0:-1,t.el.dataset.state=n?`active`:`inactive`}for(let t of h){let n=(t.dataset.value||``).trim();if(!n)continue;let r=n===e;t.hidden=!r,t.dataset.state=r?`active`:`inactive`,c?t.dataset.activationDirection=c:delete t.dataset.activationDirection}i.setAttribute(`data-value`,e),g&&j(),s&&!t&&(a(i,`tabs:change`,{value:e}),_?.(e))};if(N(k,!0),g){let e=()=>requestAnimationFrame(j);A.push(c(window,`resize`,e)),A.push(c(p,`scroll`,e));let t=new ResizeObserver(e);t.observe(p),A.push(()=>t.disconnect())}A.push(c(p,`click`,e=>{let t=e.target.closest?.(`[data-slot="tabs-trigger"]`);if(!t)return;let n=C.get(t);n&&!n.disabled&&N(n.value)}));let P=v===`horizontal`,F=P?`ArrowLeft`:`ArrowUp`,I=P?`ArrowRight`:`ArrowDown`;A.push(c(p,`keydown`,e=>{let t=e.target.closest?.(`[data-slot="tabs-trigger"]`);if(!t)return;let n=C.get(t);if(!n||w.length===0)return;if(e.key===`Enter`||e.key===` `){e.preventDefault(),n.disabled||N(n.value);return}if(P&&e.key===`ArrowDown`&&n.value===k){let t=n.panel;if(t){e.preventDefault(),(t.querySelector(`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`)||t).focus();return}}let r=T.get(n.value)??-1;r===-1&&(r=T.get(k)??0);let i=r;switch(e.key){case F:i=r-1,i<0&&(i=w.length-1);break;case I:i=r+1,i>=w.length&&(i=0);break;case`Home`:i=0;break;case`End`:i=w.length-1;break;default:return}e.preventDefault();let a=w[i];a&&(a.el.focus(),y===`auto`&&N(a.value))}));let L=e=>{let t=e,n=e.currentTarget,r=t.detail,i=(typeof r==`string`?r:r?.value??n?.dataset?.value)?.trim();i&&N(i)};return A.push(c(i,`tabs:set`,L)),A.push(c(i,`tabs:select`,L)),{select:e=>N(e),get value(){return k},updateIndicator:j,destroy:()=>{A.forEach(e=>e()),A.length=0,f.delete(i)}}}const f=new WeakSet;function p(e=document){let t=[];for(let n of i(e,`tabs`))f.has(n)||(f.add(n),t.push(d(n)));return t}export{d as n,p as t};
package/dist/src6.cjs ADDED
@@ -0,0 +1 @@
1
+ const e=require(`./events.cjs`),t=require(`./popup.cjs`),n=[`top`,`right`,`bottom`,`left`],r=[`start`,`center`,`end`];function i(i,a={}){let o=e.f(i,`popover-trigger`),s=e.f(i,`popover-content`),c=e.f(i,`popover-close`),l=e.f(i,`popover-positioner`),u=l&&s&&l.contains(s)?l:null,d=e.f(i,`popover-portal`),f=d&&u&&d.contains(u)?d:null;if(!o||!s)throw Error(`Popover requires trigger and content slots`);let p=a.defaultOpen??e.c(i,`defaultOpen`)??!1,m=a.onOpenChange,h=a.closeOnClickOutside??e.c(i,`closeOnClickOutside`)??!0,g=a.closeOnEscape??e.c(i,`closeOnEscape`)??!0,_=a.portal??e.c(s,`portal`)??e.c(i,`portal`)??!0,v=a.position??e.l(s,`position`,n)??e.l(i,`position`,n),y=a.side??e.l(s,`side`,n)??e.l(i,`side`,n)??v??`bottom`,b=a.align??e.l(s,`align`,r)??e.l(i,`align`,r)??`center`,x=a.sideOffset??e.u(s,`sideOffset`)??e.u(i,`sideOffset`)??4,S=a.alignOffset??e.u(s,`alignOffset`)??e.u(i,`alignOffset`)??0,C=a.avoidCollisions??e.c(s,`avoidCollisions`)??e.c(i,`avoidCollisions`)??!0,w=a.collisionPadding??e.u(s,`collisionPadding`)??e.u(i,`collisionPadding`)??8,T=p,E=[],D=t.r({content:s,root:i,enabled:_,wrapperSlot:u?void 0:`popover-positioner`,container:u??void 0,mountTarget:u?f??u:void 0}),O=!1,k=null,A=!1,j=()=>{A&&=(s.removeAttribute(`tabindex`),!1)},M=()=>{let e=s.querySelector(`[autofocus]`);if(e)return e.focus();let t=s.querySelector(`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`);if(t)return t.focus();s.getAttribute(`tabindex`)||(s.setAttribute(`tabindex`,`-1`),A=!0),s.focus()},N=e.i(s,`popover-content`);o.setAttribute(`aria-haspopup`,`dialog`),o.setAttribute(`aria-controls`,N),s.setAttribute(`data-side`,y),s.setAttribute(`data-align`,b),s.setAttribute(`data-position`,y);let P=()=>{let e=D.container,n=i.ownerDocument.defaultView??window,r=t.t({anchorRect:o.getBoundingClientRect(),contentRect:s.getBoundingClientRect(),side:y,align:b,sideOffset:x,alignOffset:S,avoidCollisions:C,collisionPadding:w});e.style.position=`absolute`,e.style.top=`0px`,e.style.left=`0px`,e.style.transform=`translate3d(${r.x+n.scrollX}px, ${r.y+n.scrollY}px, 0)`,e.style.willChange=`transform`,e.style.margin=`0`,s.setAttribute(`data-side`,r.side),s.setAttribute(`data-align`,r.align),e!==s&&(e.setAttribute(`data-side`,r.side),e.setAttribute(`data-align`,r.align)),s.setAttribute(`data-position`,r.side)},F=e=>{let t=D.container;i.setAttribute(`data-state`,e),s.setAttribute(`data-state`,e),t!==s&&t.setAttribute(`data-state`,e),e===`open`?(i.setAttribute(`data-open`,``),s.setAttribute(`data-open`,``),t!==s&&t.setAttribute(`data-open`,``),i.removeAttribute(`data-closed`),s.removeAttribute(`data-closed`),t!==s&&t.removeAttribute(`data-closed`)):(i.setAttribute(`data-closed`,``),s.setAttribute(`data-closed`,``),t!==s&&t.setAttribute(`data-closed`,``),i.removeAttribute(`data-open`),s.removeAttribute(`data-open`),t!==s&&t.removeAttribute(`data-open`))},I=()=>{requestAnimationFrame(()=>{k&&k.isConnected?t.s(k):t.s(o),k=null})},L=t.a({element:s,onExitComplete:()=>{O||(D.restore(),s.hidden=!0,j(),I())}}),R=t.i({observedElements:[o,s],isActive:()=>T,ancestorScroll:!1,onUpdate:P}),z=t=>{T!==t&&(t&&(k=document.activeElement),T=t,e.o(o,`expanded`,T),t?(D.mount(),s.hidden=!1,F(`open`),L.enter(),P(),R.start(),R.update(),requestAnimationFrame(M)):(F(`closed`),L.exit(),R.stop()),e.n(i,`popover:change`,{open:T}),m?.(T))};return e.o(o,`expanded`,T),F(T?`open`:`closed`),s.hidden=!T,p&&(D.mount(),L.enter(),s.hidden=!1,P(),R.start(),R.update(),requestAnimationFrame(M)),E.push(e.r(o,`click`,()=>z(!T))),c&&E.push(e.r(c,`click`,()=>z(!1))),E.push(t.n({root:i,isOpen:()=>T,onDismiss:()=>z(!1),closeOnClickOutside:h,closeOnEscape:g})),E.push(e.r(i,`popover:set`,e=>{let t=e.detail,n;t?.open===void 0?t?.value!==void 0&&(n=t.value):n=t.open,typeof n==`boolean`&&z(n)})),{open:()=>z(!0),close:()=>z(!1),toggle:()=>z(!T),get isOpen(){return T},destroy:()=>{O=!0,R.stop(),L.cleanup(),D.cleanup(),E.forEach(e=>e()),E.length=0,j()}}}const a=new WeakSet;function o(t=document){let n=[];for(let r of e.m(t,`popover`))a.has(r)||(a.add(r),n.push(i(r)));return n}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
package/dist/src6.js ADDED
@@ -0,0 +1 @@
1
+ import{c as e,f as t,i as n,l as r,m as i,n as a,o,r as s,u as c}from"./events.js";import{a as l,i as u,n as d,r as f,s as p,t as m}from"./popup.js";const h=[`top`,`right`,`bottom`,`left`],g=[`start`,`center`,`end`];function _(i,_={}){let v=t(i,`popover-trigger`),y=t(i,`popover-content`),b=t(i,`popover-close`),x=t(i,`popover-positioner`),S=x&&y&&x.contains(y)?x:null,C=t(i,`popover-portal`),w=C&&S&&C.contains(S)?C:null;if(!v||!y)throw Error(`Popover requires trigger and content slots`);let T=_.defaultOpen??e(i,`defaultOpen`)??!1,E=_.onOpenChange,D=_.closeOnClickOutside??e(i,`closeOnClickOutside`)??!0,O=_.closeOnEscape??e(i,`closeOnEscape`)??!0,k=_.portal??e(y,`portal`)??e(i,`portal`)??!0,A=_.position??r(y,`position`,h)??r(i,`position`,h),j=_.side??r(y,`side`,h)??r(i,`side`,h)??A??`bottom`,M=_.align??r(y,`align`,g)??r(i,`align`,g)??`center`,N=_.sideOffset??c(y,`sideOffset`)??c(i,`sideOffset`)??4,P=_.alignOffset??c(y,`alignOffset`)??c(i,`alignOffset`)??0,F=_.avoidCollisions??e(y,`avoidCollisions`)??e(i,`avoidCollisions`)??!0,I=_.collisionPadding??c(y,`collisionPadding`)??c(i,`collisionPadding`)??8,L=T,R=[],z=f({content:y,root:i,enabled:k,wrapperSlot:S?void 0:`popover-positioner`,container:S??void 0,mountTarget:S?w??S:void 0}),B=!1,V=null,H=!1,U=()=>{H&&=(y.removeAttribute(`tabindex`),!1)},W=()=>{let e=y.querySelector(`[autofocus]`);if(e)return e.focus();let t=y.querySelector(`a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])`);if(t)return t.focus();y.getAttribute(`tabindex`)||(y.setAttribute(`tabindex`,`-1`),H=!0),y.focus()},G=n(y,`popover-content`);v.setAttribute(`aria-haspopup`,`dialog`),v.setAttribute(`aria-controls`,G),y.setAttribute(`data-side`,j),y.setAttribute(`data-align`,M),y.setAttribute(`data-position`,j);let K=()=>{let e=z.container,t=i.ownerDocument.defaultView??window,n=m({anchorRect:v.getBoundingClientRect(),contentRect:y.getBoundingClientRect(),side:j,align:M,sideOffset:N,alignOffset:P,avoidCollisions:F,collisionPadding:I});e.style.position=`absolute`,e.style.top=`0px`,e.style.left=`0px`,e.style.transform=`translate3d(${n.x+t.scrollX}px, ${n.y+t.scrollY}px, 0)`,e.style.willChange=`transform`,e.style.margin=`0`,y.setAttribute(`data-side`,n.side),y.setAttribute(`data-align`,n.align),e!==y&&(e.setAttribute(`data-side`,n.side),e.setAttribute(`data-align`,n.align)),y.setAttribute(`data-position`,n.side)},q=e=>{let t=z.container;i.setAttribute(`data-state`,e),y.setAttribute(`data-state`,e),t!==y&&t.setAttribute(`data-state`,e),e===`open`?(i.setAttribute(`data-open`,``),y.setAttribute(`data-open`,``),t!==y&&t.setAttribute(`data-open`,``),i.removeAttribute(`data-closed`),y.removeAttribute(`data-closed`),t!==y&&t.removeAttribute(`data-closed`)):(i.setAttribute(`data-closed`,``),y.setAttribute(`data-closed`,``),t!==y&&t.setAttribute(`data-closed`,``),i.removeAttribute(`data-open`),y.removeAttribute(`data-open`),t!==y&&t.removeAttribute(`data-open`))},J=()=>{requestAnimationFrame(()=>{V&&V.isConnected?p(V):p(v),V=null})},Y=l({element:y,onExitComplete:()=>{B||(z.restore(),y.hidden=!0,U(),J())}}),X=u({observedElements:[v,y],isActive:()=>L,ancestorScroll:!1,onUpdate:K}),Z=e=>{L!==e&&(e&&(V=document.activeElement),L=e,o(v,`expanded`,L),e?(z.mount(),y.hidden=!1,q(`open`),Y.enter(),K(),X.start(),X.update(),requestAnimationFrame(W)):(q(`closed`),Y.exit(),X.stop()),a(i,`popover:change`,{open:L}),E?.(L))};return o(v,`expanded`,L),q(L?`open`:`closed`),y.hidden=!L,T&&(z.mount(),Y.enter(),y.hidden=!1,K(),X.start(),X.update(),requestAnimationFrame(W)),R.push(s(v,`click`,()=>Z(!L))),b&&R.push(s(b,`click`,()=>Z(!1))),R.push(d({root:i,isOpen:()=>L,onDismiss:()=>Z(!1),closeOnClickOutside:D,closeOnEscape:O})),R.push(s(i,`popover:set`,e=>{let t=e.detail,n;t?.open===void 0?t?.value!==void 0&&(n=t.value):n=t.open,typeof n==`boolean`&&Z(n)})),{open:()=>Z(!0),close:()=>Z(!1),toggle:()=>Z(!L),get isOpen(){return L},destroy:()=>{B=!0,X.stop(),Y.cleanup(),z.cleanup(),R.forEach(e=>e()),R.length=0,U()}}}const v=new WeakSet;function y(e=document){let t=[];for(let n of i(e,`popover`))v.has(n)||(v.add(n),t.push(_(n)));return t}export{_ as n,y as t};
package/dist/src7.cjs ADDED
@@ -0,0 +1 @@
1
+ const e=require(`./events.cjs`),t=require(`./popup.cjs`);let n=0;const r=[`top`,`right`,`bottom`,`left`],i=[`start`,`center`,`end`];function a(a,o={}){let s=e.f(a,`tooltip-trigger`),c=e.f(a,`tooltip-content`);if(!s||!c)throw Error(`Tooltip requires trigger and content slots`);let l=o.delay??e.u(a,`delay`)??300,u=o.skipDelayDuration??e.u(a,`skipDelayDuration`)??300,d=o.onOpenChange,f=o.side??e.l(c,`side`,r)??e.l(a,`side`,r)??`top`,p=o.align??e.l(c,`align`,i)??e.l(a,`align`,i)??`center`,m=!1,h=!1,g=null,_=[],v=e.i(c,`tooltip-content`);c.setAttribute(`role`,`tooltip`),c.setAttribute(`data-side`,f),c.setAttribute(`data-align`,p);let y=()=>s.hasAttribute(`disabled`)||s.getAttribute(`aria-disabled`)===`true`,b=(t,n)=>{if(m===t)return;m=t;let r=m?`open`:`closed`;a.setAttribute(`data-state`,r),c.setAttribute(`data-state`,r),m?(s.setAttribute(`aria-describedby`,v),c.setAttribute(`aria-hidden`,`false`)):(s.removeAttribute(`aria-describedby`),c.setAttribute(`aria-hidden`,`true`)),e.n(a,`tooltip:change`,{open:m,trigger:s,content:c,reason:n}),d?.(m)},x=e=>{if(g&&=(clearTimeout(g),null),Date.now()<n){b(!0,e);return}g=setTimeout(()=>{b(!0,e),g=null},l)},S=e=>{g&&=(clearTimeout(g),null),m&&u>0&&(n=Date.now()+u),b(!1,e)};return c.setAttribute(`aria-hidden`,`true`),a.setAttribute(`data-state`,`closed`),c.setAttribute(`data-state`,`closed`),_.push(e.r(s,`pointerenter`,e=>{e.pointerType!==`touch`&&(y()||x(`pointer`))}),e.r(s,`pointerleave`,e=>{if(e.pointerType===`touch`||h)return;let t=e.relatedTarget;t&&c.contains(t)||S(`pointer`)}),e.r(s,`focus`,()=>{h=!0,!y()&&x(`focus`)}),e.r(s,`blur`,()=>{h=!1,S(`blur`)})),_.push(e.r(c,`pointerleave`,e=>{if(e.pointerType===`touch`||h)return;let t=e.relatedTarget;t&&s.contains(t)||S(`pointer`)})),_.push(e.r(a,`tooltip:set`,e=>{let t=e.detail,n;if(t?.open===void 0?t?.value!==void 0&&(n=t.value):n=t.open,typeof n==`boolean`)if(n){if(y())return;g&&=(clearTimeout(g),null),b(!0,`api`)}else S(`api`)})),_.push(t.n({root:a,isOpen:()=>m,onDismiss:()=>S(`escape`),closeOnClickOutside:!1,closeOnEscape:!0,preventEscapeDefault:!1})),{show:()=>{y()||(g&&=(clearTimeout(g),null),b(!0,`api`))},hide:()=>S(`api`),get isOpen(){return m},destroy:()=>{g&&clearTimeout(g),_.forEach(e=>e()),_.length=0}}}const o=new WeakSet;function s(t=document){let n=[];for(let r of e.m(t,`tooltip`))o.has(r)||(o.add(r),n.push(a(r)));return n}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
package/dist/src7.js ADDED
@@ -0,0 +1 @@
1
+ import{f as e,i as t,l as n,m as r,n as i,r as a,u as o}from"./events.js";import{n as s}from"./popup.js";let c=0;const l=[`top`,`right`,`bottom`,`left`],u=[`start`,`center`,`end`];function d(r,d={}){let f=e(r,`tooltip-trigger`),p=e(r,`tooltip-content`);if(!f||!p)throw Error(`Tooltip requires trigger and content slots`);let m=d.delay??o(r,`delay`)??300,h=d.skipDelayDuration??o(r,`skipDelayDuration`)??300,g=d.onOpenChange,_=d.side??n(p,`side`,l)??n(r,`side`,l)??`top`,v=d.align??n(p,`align`,u)??n(r,`align`,u)??`center`,y=!1,b=!1,x=null,S=[],C=t(p,`tooltip-content`);p.setAttribute(`role`,`tooltip`),p.setAttribute(`data-side`,_),p.setAttribute(`data-align`,v);let w=()=>f.hasAttribute(`disabled`)||f.getAttribute(`aria-disabled`)===`true`,T=(e,t)=>{if(y===e)return;y=e;let n=y?`open`:`closed`;r.setAttribute(`data-state`,n),p.setAttribute(`data-state`,n),y?(f.setAttribute(`aria-describedby`,C),p.setAttribute(`aria-hidden`,`false`)):(f.removeAttribute(`aria-describedby`),p.setAttribute(`aria-hidden`,`true`)),i(r,`tooltip:change`,{open:y,trigger:f,content:p,reason:t}),g?.(y)},E=e=>{if(x&&=(clearTimeout(x),null),Date.now()<c){T(!0,e);return}x=setTimeout(()=>{T(!0,e),x=null},m)},D=e=>{x&&=(clearTimeout(x),null),y&&h>0&&(c=Date.now()+h),T(!1,e)};return p.setAttribute(`aria-hidden`,`true`),r.setAttribute(`data-state`,`closed`),p.setAttribute(`data-state`,`closed`),S.push(a(f,`pointerenter`,e=>{e.pointerType!==`touch`&&(w()||E(`pointer`))}),a(f,`pointerleave`,e=>{if(e.pointerType===`touch`||b)return;let t=e.relatedTarget;t&&p.contains(t)||D(`pointer`)}),a(f,`focus`,()=>{b=!0,!w()&&E(`focus`)}),a(f,`blur`,()=>{b=!1,D(`blur`)})),S.push(a(p,`pointerleave`,e=>{if(e.pointerType===`touch`||b)return;let t=e.relatedTarget;t&&f.contains(t)||D(`pointer`)})),S.push(a(r,`tooltip:set`,e=>{let t=e.detail,n;if(t?.open===void 0?t?.value!==void 0&&(n=t.value):n=t.open,typeof n==`boolean`)if(n){if(w())return;x&&=(clearTimeout(x),null),T(!0,`api`)}else D(`api`)})),S.push(s({root:r,isOpen:()=>y,onDismiss:()=>D(`escape`),closeOnClickOutside:!1,closeOnEscape:!0,preventEscapeDefault:!1})),{show:()=>{w()||(x&&=(clearTimeout(x),null),T(!0,`api`))},hide:()=>D(`api`),get isOpen(){return y},destroy:()=>{x&&clearTimeout(x),S.forEach(e=>e()),S.length=0}}}const f=new WeakSet;function p(e=document){let t=[];for(let n of r(e,`tooltip`))f.has(n)||(f.add(n),t.push(d(n)));return t}export{d as n,p as t};
package/dist/tabs.cjs ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src5.cjs`);exports.create=e.t,exports.createTabs=e.n;
@@ -0,0 +1,2 @@
1
+ import { i as createTabs, n as TabsOptions, r as create, t as TabsController } from "./index5.cjs";
2
+ export { TabsController, TabsOptions, create, createTabs };
package/dist/tabs.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { i as createTabs, n as TabsOptions, r as create, t as TabsController } from "./index5.js";
2
+ export { TabsController, TabsOptions, create, createTabs };
package/dist/tabs.js ADDED
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./src5.js";export{t as create,e as createTabs};
@@ -0,0 +1 @@
1
+ var e=require(`@data-slot/toggle-group`);Object.keys(e).forEach(function(t){t!==`default`&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:function(){return e[t]}})});
@@ -0,0 +1,2 @@
1
+ export * from "@data-slot/toggle-group";
2
+ export {};