@ariakit/core 0.1.5 → 0.2.1

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,67 @@
1
1
  # @ariakit/core
2
2
 
3
+ ## 0.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Fixed `useHovercardStore` and `useTooltipStore` not updating the state when the `timeout`, `showTimeout` or `hideTimeout` props changed. ([#2421](https://github.com/ariakit/ariakit/pull/2421))
8
+
9
+ ## 0.2.0
10
+
11
+ ### Minor Changes
12
+
13
+ - **BREAKING**: Moved props from the `usePopoverStore` hook to the `Popover` component: `fixed`, `gutter`, `shift`, `flip`, `slide`, `overlap`, `sameWidth`, `fitViewport`, `arrowPadding`, `overflowPadding`, `getAnchorRect`, `renderCallback` (renamed to `updatePosition`). ([#2279](https://github.com/ariakit/ariakit/pull/2279))
14
+
15
+ The exception is the `placement` prop that should still be passed to the store.
16
+
17
+ **Before**:
18
+
19
+ ```jsx
20
+ const popover = usePopoverStore({
21
+ placement: "bottom",
22
+ fixed: true,
23
+ gutter: 8,
24
+ shift: 8,
25
+ flip: true,
26
+ slide: true,
27
+ overlap: true,
28
+ sameWidth: true,
29
+ fitViewport: true,
30
+ arrowPadding: 8,
31
+ overflowPadding: 8,
32
+ getAnchorRect: (anchor) => anchor?.getBoundingClientRect(),
33
+ renderCallback: (props) => props.defaultRenderCallback(),
34
+ });
35
+
36
+ <Popover store={popover} />;
37
+ ```
38
+
39
+ **After**:
40
+
41
+ ```jsx
42
+ const popover = usePopoverStore({ placement: "bottom" });
43
+
44
+ <Popover
45
+ store={popover}
46
+ fixed
47
+ gutter={8}
48
+ shift={8}
49
+ flip
50
+ slide
51
+ overlap
52
+ sameWidth
53
+ fitViewport
54
+ arrowPadding={8}
55
+ overflowPadding={8}
56
+ getAnchorRect={(anchor) => anchor?.getBoundingClientRect()}
57
+ updatePosition={(props) => props.updatePosition()}
58
+ />;
59
+ ```
60
+
61
+ This change affects all the hooks and components that use `usePopoverStore` and `Popover` underneath: `useComboboxStore`, `ComboboxPopover`, `useHovercardStore`, `Hovercard`, `useMenuStore`, `Menu`, `useSelectStore`, `SelectPopover`, `useTooltipStore`, `Tooltip`.
62
+
63
+ With this change, the underlying `@floating-ui/dom` dependency has been also moved to the `Popover` component, which means it can be lazy loaded. See the [Lazy Popover](https://ariakit.org/examples/popover-lazy) example.
64
+
3
65
  ## 0.1.5
4
66
 
5
67
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _SDBF6KIYcjs = require('./SDBF6KIY.cjs');
3
+ var _RD3S4VKYcjs = require('./RD3S4VKY.cjs');
4
4
 
5
5
 
6
6
  var _6SPJEESBcjs = require('./6SPJEESB.cjs');
@@ -16,38 +16,21 @@ var _6455U47Tcjs = require('./6455U47T.cjs');
16
16
  function createHovercardStore(props = {}) {
17
17
  var _a;
18
18
  const syncState = (_a = props.store) == null ? void 0 : _a.getState();
19
- const timeout = _M6ZA7XUPcjs.defaultValue.call(void 0, props.timeout, syncState == null ? void 0 : syncState.timeout, 500);
20
- const popover = _SDBF6KIYcjs.createPopoverStore.call(void 0, _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, props), {
19
+ const popover = _RD3S4VKYcjs.createPopoverStore.call(void 0, _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, props), {
21
20
  placement: _M6ZA7XUPcjs.defaultValue.call(void 0,
22
21
  props.placement,
23
22
  syncState == null ? void 0 : syncState.placement,
24
23
  "bottom"
25
24
  )
26
25
  }));
26
+ const timeout = _M6ZA7XUPcjs.defaultValue.call(void 0, props.timeout, syncState == null ? void 0 : syncState.timeout, 500);
27
27
  const initialState = _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, popover.getState()), {
28
28
  timeout,
29
- showTimeout: _M6ZA7XUPcjs.defaultValue.call(void 0,
30
- props.showTimeout,
31
- syncState == null ? void 0 : syncState.showTimeout,
32
- timeout
33
- ),
34
- hideTimeout: _M6ZA7XUPcjs.defaultValue.call(void 0,
35
- props.hideTimeout,
36
- syncState == null ? void 0 : syncState.hideTimeout,
37
- timeout
38
- ),
29
+ showTimeout: _M6ZA7XUPcjs.defaultValue.call(void 0, props.showTimeout, syncState == null ? void 0 : syncState.showTimeout),
30
+ hideTimeout: _M6ZA7XUPcjs.defaultValue.call(void 0, props.hideTimeout, syncState == null ? void 0 : syncState.hideTimeout),
39
31
  autoFocusOnShow: _M6ZA7XUPcjs.defaultValue.call(void 0, syncState == null ? void 0 : syncState.autoFocusOnShow, false)
40
32
  });
41
33
  const hovercard = _6SPJEESBcjs.createStore.call(void 0, initialState, popover, props.store);
42
- hovercard.setup(
43
- () => hovercard.sync(
44
- (state) => {
45
- hovercard.setState("showTimeout", (value) => value != null ? value : state.timeout);
46
- hovercard.setState("hideTimeout", (value) => value != null ? value : state.timeout);
47
- },
48
- ["timeout"]
49
- )
50
- );
51
34
  return _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, popover), hovercard), {
52
35
  setAutoFocusOnShow: (value) => hovercard.setState("autoFocusOnShow", value)
53
36
  });
@@ -0,0 +1,60 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _HEFJPUYDcjs = require('./HEFJPUYD.cjs');
4
+
5
+
6
+
7
+ var _6SPJEESBcjs = require('./6SPJEESB.cjs');
8
+
9
+
10
+ var _M6ZA7XUPcjs = require('./M6ZA7XUP.cjs');
11
+
12
+
13
+
14
+
15
+ var _6455U47Tcjs = require('./6455U47T.cjs');
16
+
17
+ // src/popover/popover-store.ts
18
+ function createPopoverStore(_a = {}) {
19
+ var _b = _a, {
20
+ popover: otherPopover
21
+ } = _b, props = _6455U47Tcjs.__objRest.call(void 0, _b, [
22
+ "popover"
23
+ ]);
24
+ const store = _6SPJEESBcjs.mergeStore.call(void 0,
25
+ props.store,
26
+ otherPopover == null ? void 0 : otherPopover.omit(
27
+ "arrowElement",
28
+ "anchorElement",
29
+ "contentElement",
30
+ "popoverElement",
31
+ "disclosureElement"
32
+ )
33
+ );
34
+ const syncState = store == null ? void 0 : store.getState();
35
+ const dialog = _HEFJPUYDcjs.createDialogStore.call(void 0, _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, props), { store }));
36
+ const placement = _M6ZA7XUPcjs.defaultValue.call(void 0,
37
+ props.placement,
38
+ syncState == null ? void 0 : syncState.placement,
39
+ "bottom"
40
+ );
41
+ const initialState = _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, dialog.getState()), {
42
+ placement,
43
+ currentPlacement: placement,
44
+ anchorElement: _M6ZA7XUPcjs.defaultValue.call(void 0, syncState == null ? void 0 : syncState.anchorElement, null),
45
+ popoverElement: _M6ZA7XUPcjs.defaultValue.call(void 0, syncState == null ? void 0 : syncState.popoverElement, null),
46
+ arrowElement: _M6ZA7XUPcjs.defaultValue.call(void 0, syncState == null ? void 0 : syncState.arrowElement, null),
47
+ rendered: Symbol("rendered")
48
+ });
49
+ const popover = _6SPJEESBcjs.createStore.call(void 0, initialState, dialog, store);
50
+ return _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, dialog), popover), {
51
+ setAnchorElement: (element) => popover.setState("anchorElement", element),
52
+ setPopoverElement: (element) => popover.setState("popoverElement", element),
53
+ setArrowElement: (element) => popover.setState("arrowElement", element),
54
+ render: () => popover.setState("rendered", Symbol("rendered"))
55
+ });
56
+ }
57
+
58
+
59
+
60
+ exports.createPopoverStore = createPopoverStore;
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _SDBF6KIYcjs = require('../__chunks/SDBF6KIY.cjs');
3
+ var _RD3S4VKYcjs = require('../__chunks/RD3S4VKY.cjs');
4
4
  require('../__chunks/HEFJPUYD.cjs');
5
5
  require('../__chunks/27ZAGOYG.cjs');
6
6
 
@@ -86,7 +86,7 @@ function createComboboxStore(_a = {}) {
86
86
  !isSafariOnMobile
87
87
  )
88
88
  }));
89
- const popover = _SDBF6KIYcjs.createPopoverStore.call(void 0, _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, props), {
89
+ const popover = _RD3S4VKYcjs.createPopoverStore.call(void 0, _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, props), {
90
90
  store,
91
91
  placement: _M6ZA7XUPcjs.defaultValue.call(void 0,
92
92
  props.placement,
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _SDBF6KIYcjs = require('../__chunks/SDBF6KIY.cjs');
3
+ var _RD3S4VKYcjs = require('../__chunks/RD3S4VKY.cjs');
4
4
  require('../__chunks/HEFJPUYD.cjs');
5
5
  require('../__chunks/27ZAGOYG.cjs');
6
6
  require('../__chunks/6SPJEESB.cjs');
@@ -9,7 +9,7 @@ require('../__chunks/6455U47T.cjs');
9
9
 
10
10
  // src/composite/composite-overflow-store.ts
11
11
  function createCompositeOverflowStore(props = {}) {
12
- return _SDBF6KIYcjs.createPopoverStore.call(void 0, props);
12
+ return _RD3S4VKYcjs.createPopoverStore.call(void 0, props);
13
13
  }
14
14
 
15
15
 
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _LBTLD2RBcjs = require('../__chunks/LBTLD2RB.cjs');
4
- require('../__chunks/SDBF6KIY.cjs');
3
+ var _NFVTF24Ycjs = require('../__chunks/NFVTF24Y.cjs');
4
+ require('../__chunks/RD3S4VKY.cjs');
5
5
  require('../__chunks/HEFJPUYD.cjs');
6
6
  require('../__chunks/27ZAGOYG.cjs');
7
7
  require('../__chunks/6SPJEESB.cjs');
@@ -9,4 +9,4 @@ require('../__chunks/M6ZA7XUP.cjs');
9
9
  require('../__chunks/6455U47T.cjs');
10
10
 
11
11
 
12
- exports.createHovercardStore = _LBTLD2RBcjs.createHovercardStore;
12
+ exports.createHovercardStore = _NFVTF24Ycjs.createHovercardStore;
@@ -11,8 +11,9 @@ export interface HovercardStoreState extends PopoverStoreState {
11
11
  */
12
12
  placement: PopoverStoreState["placement"];
13
13
  /**
14
- * The amount of time in milliseconds to wait before showing or hiding the
15
- * popover.
14
+ * The amount of time in milliseconds to wait before showing and hiding the
15
+ * popover. To control the delay for showing and hiding separately, use
16
+ * `showTimeout` and `hideTimeout`.
16
17
  * @default 500
17
18
  */
18
19
  timeout: number;
@@ -20,12 +21,12 @@ export interface HovercardStoreState extends PopoverStoreState {
20
21
  * The amount of time in milliseconds to wait before **showing** the popover.
21
22
  * It defaults to the value passed to `timeout`.
22
23
  */
23
- showTimeout: number;
24
+ showTimeout?: number;
24
25
  /**
25
26
  * The amount of time in milliseconds to wait before **hiding** the popover.
26
27
  * It defaults to the value passed to `timeout`.
27
28
  */
28
- hideTimeout: number;
29
+ hideTimeout?: number;
29
30
  /**
30
31
  * Whether the popover or an element inside it should be focused when it is
31
32
  * shown.
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _LBTLD2RBcjs = require('../__chunks/LBTLD2RB.cjs');
4
- require('../__chunks/SDBF6KIY.cjs');
3
+ var _NFVTF24Ycjs = require('../__chunks/NFVTF24Y.cjs');
4
+ require('../__chunks/RD3S4VKY.cjs');
5
5
  require('../__chunks/HEFJPUYD.cjs');
6
6
  require('../__chunks/27ZAGOYG.cjs');
7
7
 
@@ -50,7 +50,7 @@ function createMenuStore(_a = {}) {
50
50
  "vertical"
51
51
  )
52
52
  }));
53
- const hovercard = _LBTLD2RBcjs.createHovercardStore.call(void 0, _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, props), {
53
+ const hovercard = _NFVTF24Ycjs.createHovercardStore.call(void 0, _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, props), {
54
54
  store,
55
55
  placement: _M6ZA7XUPcjs.defaultValue.call(void 0,
56
56
  props.placement,
@@ -8,18 +8,6 @@ export declare function createMenuStore<T extends Values = Values>(props: PickRe
8
8
  export declare function createMenuStore(props?: MenuStoreProps): MenuStore;
9
9
  export type MenuStoreValues = Record<string, string | boolean | number | Array<string | number>>;
10
10
  export interface MenuStoreState<T extends Values = Values> extends CompositeStoreState, HovercardStoreState {
11
- /**
12
- * @default "vertical"
13
- */
14
- orientation: CompositeStoreState["orientation"];
15
- /**
16
- * @default "bottom-start"
17
- */
18
- placement: HovercardStoreState["placement"];
19
- /**
20
- * @default 0
21
- */
22
- hideTimeout: HovercardStoreState["hideTimeout"];
23
11
  /**
24
12
  * Determines the element that should be focused when the menu is opened.
25
13
  */
@@ -29,6 +17,12 @@ export interface MenuStoreState<T extends Values = Values> extends CompositeStor
29
17
  * `MenuItemRadio` components.
30
18
  */
31
19
  values: T;
20
+ /** @default "vertical" */
21
+ orientation: CompositeStoreState["orientation"];
22
+ /** @default "bottom-start" */
23
+ placement: HovercardStoreState["placement"];
24
+ /** @default 0 */
25
+ hideTimeout?: HovercardStoreState["hideTimeout"];
32
26
  }
33
27
  export interface MenuStoreFunctions<T extends Values = Values> extends CompositeStoreFunctions, HovercardStoreFunctions {
34
28
  /**
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _SDBF6KIYcjs = require('../__chunks/SDBF6KIY.cjs');
3
+ var _RD3S4VKYcjs = require('../__chunks/RD3S4VKY.cjs');
4
4
  require('../__chunks/HEFJPUYD.cjs');
5
5
  require('../__chunks/27ZAGOYG.cjs');
6
6
  require('../__chunks/6SPJEESB.cjs');
@@ -8,4 +8,4 @@ require('../__chunks/M6ZA7XUP.cjs');
8
8
  require('../__chunks/6455U47T.cjs');
9
9
 
10
10
 
11
- exports.createPopoverStore = _SDBF6KIYcjs.createPopoverStore;
11
+ exports.createPopoverStore = _RD3S4VKYcjs.createPopoverStore;
@@ -3,27 +3,10 @@ import type { Store, StoreOptions, StoreProps } from "../utils/store.js";
3
3
  import type { SetState } from "../utils/types.js";
4
4
  type BasePlacement = "top" | "bottom" | "left" | "right";
5
5
  type Placement = BasePlacement | `${BasePlacement}-start` | `${BasePlacement}-end`;
6
- type AnchorRect = {
7
- x?: number;
8
- y?: number;
9
- width?: number;
10
- height?: number;
11
- };
12
6
  /**
13
7
  * Creates a popover store.
14
8
  */
15
- export declare function createPopoverStore({ getAnchorRect, renderCallback, popover: otherPopover, ...props }?: PopoverStoreProps): PopoverStore;
16
- export interface PopoverStoreRenderCallbackProps extends Pick<PopoverStoreState, "anchorElement" | "popoverElement" | "arrowElement" | "mounted" | "placement" | "fixed" | "gutter" | "shift" | "overlap" | "flip" | "sameWidth" | "fitViewport" | "arrowPadding" | "overflowPadding"> {
17
- /**
18
- * A method that updates the `currentPlacement` state.
19
- */
20
- setPlacement: SetState<Placement>;
21
- /**
22
- * The default render callback that will be called when the `renderCallback`
23
- * prop is not provided.
24
- */
25
- defaultRenderCallback: () => () => void;
26
- }
9
+ export declare function createPopoverStore({ popover: otherPopover, ...props }?: PopoverStoreProps): PopoverStore;
27
10
  export interface PopoverStoreState extends DialogStoreState {
28
11
  /**
29
12
  * The anchor element.
@@ -49,64 +32,10 @@ export interface PopoverStoreState extends DialogStoreState {
49
32
  */
50
33
  placement: Placement;
51
34
  /**
52
- * Whether the popover has `position: fixed` or not.
53
- * @default false
54
- */
55
- fixed: boolean;
56
- /**
57
- * The distance between the popover and the anchor element. By default, it's 0
58
- * plus half of the arrow offset, if it exists.
35
+ * A symbol that's used to recompute the popover position when the `render`
36
+ * method is called.
59
37
  */
60
- gutter: number | undefined;
61
- /**
62
- * The skidding of the popover along the anchor element.
63
- * @default 0
64
- */
65
- shift: number;
66
- /**
67
- * Controls the behavior of the popover when it overflows the viewport:
68
- * - If a `boolean`, specifies whether the popover should flip to the
69
- * opposite side when it overflows.
70
- * - If a `string`, indicates the preferred fallback placements when it
71
- * overflows. The placements must be spaced-delimited, e.g. "top left".
72
- * @default true
73
- */
74
- flip: boolean | string;
75
- /**
76
- * Whether the popover should slide when it overflows.
77
- * @default true
78
- */
79
- slide: boolean;
80
- /**
81
- * Whether the popover can overlap the anchor element when it overflows.
82
- * @default false
83
- */
84
- overlap: boolean;
85
- /**
86
- * Whether the popover should have the same width as the anchor element. This
87
- * will be exposed to CSS as `--popover-anchor-width`.
88
- * @default false
89
- */
90
- sameWidth: boolean;
91
- /**
92
- * Whether the popover should fit the viewport. If this is set to true, the
93
- * popover wrapper will have `maxWidth` and `maxHeight` set to the viewport
94
- * size. This will be exposed to CSS as `--popover-available-width` and
95
- * `--popover-available-height`.
96
- * @default false
97
- */
98
- fitViewport: boolean;
99
- /**
100
- * The minimum padding between the arrow and the popover corner.
101
- * @default 4
102
- */
103
- arrowPadding: number;
104
- /**
105
- * The minimum padding between the popover and the viewport edge. This will be
106
- * exposed to CSS as `--popover-overflow-padding`.
107
- * @default 8
108
- */
109
- overflowPadding: number;
38
+ rendered: symbol;
110
39
  }
111
40
  export interface PopoverStoreFunctions extends DialogStoreFunctions {
112
41
  /**
@@ -122,23 +51,13 @@ export interface PopoverStoreFunctions extends DialogStoreFunctions {
122
51
  */
123
52
  setArrowElement: SetState<PopoverStoreState["arrowElement"]>;
124
53
  /**
125
- * Function that returns the anchor element's DOMRect. If this is explicitly
126
- * passed, it will override the anchor `getBoundingClientRect` method.
127
- * @param anchor The anchor element.
128
- */
129
- getAnchorRect?: (anchor: HTMLElement | null) => AnchorRect | null;
130
- /**
131
- * A function that will be called when the popover needs to calculate its
132
- * styles. It will override the internal behavior.
133
- */
134
- renderCallback?: (props: PopoverStoreRenderCallbackProps) => void | (() => void);
135
- /**
136
- * A function that can be used to recompute the popover styles. This is useful
137
- * when the popover anchor changes in a way that affects the popover position.
54
+ * A function that can be used to recompute the popover position. This is
55
+ * useful when the popover anchor changes in a way that affects the popover
56
+ * position.
138
57
  */
139
58
  render: () => void;
140
59
  }
141
- export interface PopoverStoreOptions extends StoreOptions<PopoverStoreState, "placement" | "fixed" | "gutter" | "shift" | "flip" | "slide" | "overlap" | "sameWidth" | "fitViewport" | "arrowPadding" | "overflowPadding">, Partial<Pick<PopoverStoreFunctions, "getAnchorRect" | "renderCallback">>, DialogStoreOptions {
60
+ export interface PopoverStoreOptions extends StoreOptions<PopoverStoreState, "placement">, DialogStoreOptions {
142
61
  /**
143
62
  * A reference to another popover store that's controlling another popover to
144
63
  * keep them in sync.
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _SDBF6KIYcjs = require('../__chunks/SDBF6KIY.cjs');
3
+ var _RD3S4VKYcjs = require('../__chunks/RD3S4VKY.cjs');
4
4
  require('../__chunks/HEFJPUYD.cjs');
5
5
  require('../__chunks/27ZAGOYG.cjs');
6
6
 
@@ -70,7 +70,7 @@ function createSelectStore(_a = {}) {
70
70
  "vertical"
71
71
  )
72
72
  }));
73
- const popover = _SDBF6KIYcjs.createPopoverStore.call(void 0, _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, props), {
73
+ const popover = _RD3S4VKYcjs.createPopoverStore.call(void 0, _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, props), {
74
74
  store,
75
75
  placement: _M6ZA7XUPcjs.defaultValue.call(void 0,
76
76
  props.placement,
@@ -1,10 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _SDBF6KIYcjs = require('../__chunks/SDBF6KIY.cjs');
3
+ var _NFVTF24Ycjs = require('../__chunks/NFVTF24Y.cjs');
4
+ require('../__chunks/RD3S4VKY.cjs');
4
5
  require('../__chunks/HEFJPUYD.cjs');
5
-
6
-
7
- var _27ZAGOYGcjs = require('../__chunks/27ZAGOYG.cjs');
6
+ require('../__chunks/27ZAGOYG.cjs');
8
7
 
9
8
 
10
9
  var _6SPJEESBcjs = require('../__chunks/6SPJEESB.cjs');
@@ -17,80 +16,23 @@ var _M6ZA7XUPcjs = require('../__chunks/M6ZA7XUP.cjs');
17
16
  var _6455U47Tcjs = require('../__chunks/6455U47T.cjs');
18
17
 
19
18
  // src/tooltip/tooltip-store.ts
20
- var tooltips = _6SPJEESBcjs.createStore.call(void 0, { activeRef: null });
21
- function afterTimeout(timeoutMs, cb) {
22
- const timeoutId = setTimeout(cb, timeoutMs);
23
- return () => clearTimeout(timeoutId);
24
- }
25
19
  function createTooltipStore(props = {}) {
26
20
  var _a;
27
21
  const syncState = (_a = props.store) == null ? void 0 : _a.getState();
28
- const open = _M6ZA7XUPcjs.defaultValue.call(void 0, props.open, syncState == null ? void 0 : syncState.open, false);
29
- const disclosure = _27ZAGOYGcjs.createDisclosureStore.call(void 0, _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, props), { open }));
30
- const popover = _SDBF6KIYcjs.createPopoverStore.call(void 0, _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, props), {
31
- open,
22
+ const hovercard = _NFVTF24Ycjs.createHovercardStore.call(void 0, _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, props), {
32
23
  placement: _M6ZA7XUPcjs.defaultValue.call(void 0,
33
24
  props.placement,
34
25
  syncState == null ? void 0 : syncState.placement,
35
26
  "top"
36
27
  ),
37
- gutter: _M6ZA7XUPcjs.defaultValue.call(void 0, props.gutter, syncState == null ? void 0 : syncState.gutter, 8)
28
+ hideTimeout: _M6ZA7XUPcjs.defaultValue.call(void 0, props.hideTimeout, syncState == null ? void 0 : syncState.hideTimeout, 0)
38
29
  }));
39
- const initialState = _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, popover.getState()), {
40
- timeout: _M6ZA7XUPcjs.defaultValue.call(void 0, props.timeout, syncState == null ? void 0 : syncState.timeout, 0)
41
- });
42
- const tooltip = _6SPJEESBcjs.createStore.call(void 0,
43
- initialState,
44
- popover,
45
- disclosure.omit("open", "mounted"),
46
- props.store
47
- );
48
- const ref = Symbol();
49
- tooltip.setup(
50
- () => disclosure.sync(
51
- (state, prev) => {
52
- const { timeout } = tooltip.getState();
53
- const { activeRef } = tooltips.getState();
54
- if (state.open) {
55
- if (!timeout || activeRef) {
56
- tooltips.setState("activeRef", ref);
57
- tooltip.setState("open", true);
58
- return;
59
- } else {
60
- tooltips.setState("activeRef", null);
61
- return afterTimeout(timeout, () => {
62
- tooltips.setState("activeRef", ref);
63
- });
64
- }
65
- } else if (state.open !== prev.open) {
66
- tooltip.setState("open", false);
67
- return afterTimeout(timeout, () => {
68
- tooltips.setState(
69
- "activeRef",
70
- (activeRef2) => activeRef2 === ref ? null : activeRef2
71
- );
72
- });
73
- }
74
- return;
75
- },
76
- ["open"]
77
- )
78
- );
79
- tooltip.setup(
80
- () => tooltips.sync(
81
- (state) => {
82
- tooltip.setState("open", state.activeRef === ref);
83
- },
84
- ["activeRef"]
85
- )
86
- );
87
- tooltip.setup(() => () => {
88
- tooltips.setState(
89
- "activeRef",
90
- (activeRef) => activeRef === ref ? null : activeRef
91
- );
30
+ const initialState = _6455U47Tcjs.__spreadProps.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, hovercard.getState()), {
31
+ type: _M6ZA7XUPcjs.defaultValue.call(void 0, props.type, syncState == null ? void 0 : syncState.type, "description"),
32
+ skipTimeout: _M6ZA7XUPcjs.defaultValue.call(void 0, props.skipTimeout, syncState == null ? void 0 : syncState.skipTimeout, 300)
92
33
  });
93
- return _6455U47Tcjs.__spreadValues.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, popover), disclosure), tooltip);
34
+ const tooltip = _6SPJEESBcjs.createStore.call(void 0, initialState, hovercard, props.store);
35
+ return _6455U47Tcjs.__spreadValues.call(void 0, _6455U47Tcjs.__spreadValues.call(void 0, {}, hovercard), tooltip);
94
36
  }
95
37
 
96
38
 
@@ -1,28 +1,29 @@
1
- import type { PopoverStoreFunctions, PopoverStoreOptions, PopoverStoreState } from "../popover/popover-store.js";
1
+ import type { HovercardStoreFunctions, HovercardStoreOptions, HovercardStoreState } from "../hovercard/hovercard-store.js";
2
2
  import type { Store, StoreOptions, StoreProps } from "../utils/store.js";
3
3
  /**
4
4
  * Creates a tooltip store.
5
5
  */
6
6
  export declare function createTooltipStore(props?: TooltipStoreProps): TooltipStore;
7
- export interface TooltipStoreState extends PopoverStoreState {
7
+ export interface TooltipStoreState extends HovercardStoreState {
8
8
  /**
9
- * @default "top"
9
+ * Determines whether the tooltip is being used as a label or a description
10
+ * for the anchor element.
11
+ * @default "description"
10
12
  */
11
- placement: PopoverStoreState["placement"];
13
+ type: "label" | "description";
12
14
  /**
13
- * @default 8
15
+ * The amount of time after a tooltip is hidden while all tooltips on the
16
+ * page can be shown immediately, without waiting for the show timeout.
17
+ * @default 300
14
18
  */
15
- gutter: PopoverStoreState["gutter"];
16
- /**
17
- * The amount in milliseconds to wait before showing the tooltip. When there's
18
- * already an open tooltip in the page, this value will be ignored and other
19
- * tooltips will be shown immediately.
20
- * @default 0
21
- */
22
- timeout: number;
19
+ skipTimeout: number;
20
+ /** @default "top" */
21
+ placement: HovercardStoreState["placement"];
22
+ /** @default 0 */
23
+ hideTimeout?: HovercardStoreState["hideTimeout"];
23
24
  }
24
- export type TooltipStoreFunctions = PopoverStoreFunctions;
25
- export interface TooltipStoreOptions extends StoreOptions<TooltipStoreState, "placement" | "gutter" | "timeout">, PopoverStoreOptions {
25
+ export type TooltipStoreFunctions = HovercardStoreFunctions;
26
+ export interface TooltipStoreOptions extends StoreOptions<TooltipStoreState, "type" | "placement" | "timeout" | "showTimeout" | "hideTimeout" | "skipTimeout">, HovercardStoreOptions {
26
27
  }
27
28
  export type TooltipStoreProps = TooltipStoreOptions & StoreProps<TooltipStoreState>;
28
29
  export type TooltipStore = TooltipStoreFunctions & Store<TooltipStoreState>;