@entur/tooltip 5.2.13-beta.1 → 5.2.13-beta.10

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.
@@ -1,294 +1,329 @@
1
- import { useRandomId, mergeRefs, useOnClickOutside, warnAboutMissingStyles } from "@entur/utils";
2
- import { jsxs, Fragment, jsx } from "react/jsx-runtime";
3
- import React, { useState, useRef, useEffect, cloneElement, createContext, useContext } from "react";
4
- import classNames from "classnames";
5
- import { useFloating, offset, flip, shift, arrow, limitShift, autoUpdate } from "@floating-ui/react";
6
- import { CloseIcon } from "@entur/icons";
7
- import { IconButton } from "@entur/button";
8
- import { space, borderRadiuses } from "@entur/tokens";
9
- import { useFloating as useFloating$1, offset as offset$1, flip as flip$1, shift as shift$1, limitShift as limitShift$1, autoUpdate as autoUpdate$1 } from "@floating-ui/react-dom";
10
- import { Contrast } from "@entur/layout";
1
+ import { useRandomId, useOnClickOutside, mergeRefs, warnAboutMissingStyles } from '@entur/utils';
2
+ import React, { useState, useRef, useEffect, cloneElement, createContext, useContext } from 'react';
3
+ import classNames from 'classnames';
4
+ import { useFloating, offset, flip, shift, limitShift, arrow, autoUpdate } from '@floating-ui/react';
5
+ import { CloseIcon } from '@entur/icons';
6
+ import { IconButton } from '@entur/button';
7
+ import { space, borderRadiuses } from '@entur/tokens';
8
+ import { useFloating as useFloating$1, offset as offset$1, flip as flip$1, shift as shift$1, limitShift as limitShift$1, autoUpdate as autoUpdate$1 } from '@floating-ui/react-dom';
9
+ import { Contrast } from '@entur/layout';
10
+
11
+ function _extends() {
12
+ return _extends = Object.assign ? Object.assign.bind() : function (n) {
13
+ for (var e = 1; e < arguments.length; e++) {
14
+ var t = arguments[e];
15
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
16
+ }
17
+ return n;
18
+ }, _extends.apply(null, arguments);
19
+ }
20
+ function _objectWithoutPropertiesLoose(r, e) {
21
+ if (null == r) return {};
22
+ var t = {};
23
+ for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
24
+ if (-1 !== e.indexOf(n)) continue;
25
+ t[n] = r[n];
26
+ }
27
+ return t;
28
+ }
29
+
11
30
  function standardisePlacement(placement) {
12
31
  switch (placement) {
13
- case "top-left":
14
- return "top-start";
15
- case "top-right":
16
- return "top-end";
17
- case "bottom-left":
18
- return "bottom-start";
19
- case "bottom-right":
20
- return "bottom-end";
32
+ case 'top-left':
33
+ return 'top-start';
34
+ case 'top-right':
35
+ return 'top-end';
36
+ case 'bottom-left':
37
+ return 'bottom-start';
38
+ case 'bottom-right':
39
+ return 'bottom-end';
21
40
  default:
22
41
  return placement;
23
42
  }
24
43
  }
25
- const error = "error";
26
- const Tooltip = ({
27
- placement,
28
- content,
29
- children,
30
- className,
31
- isOpen,
32
- onClickCloseButton = () => void 0,
33
- disableHoverListener = false,
34
- disableFocusListener = false,
35
- disableKeyboardListener = true,
36
- disableClickListner = true,
37
- showCloseButton = true,
38
- variant,
39
- hoverDelay,
40
- style,
41
- ...rest
42
- }) => {
43
- const [showTooltip, setShowTooltip] = useState(isOpen ?? false);
44
- const tooltipArrowRef = useRef(null);
45
- const tooltipId = useRandomId("eds-tooltip");
46
- const hoverOpenTimer = useRef();
47
- const hoverCloseTimer = useRef();
48
- const isControlled = isOpen !== void 0;
49
- const {
50
- refs,
51
- floatingStyles,
52
- middlewareData,
53
- placement: actualPlacement,
54
- isPositioned,
55
- update,
56
- elements
57
- } = useFloating({
58
- placement: standardisePlacement(placement),
59
- open: showTooltip,
60
- middleware: [
61
- offset(space.extraSmall),
62
- flip(),
63
- shift({ padding: space.extraSmall, limiter: limitShift({ offset: 8 }) }),
64
- arrow({
44
+
45
+ var _excluded$1 = ["placement", "content", "children", "className", "isOpen", "onClickCloseButton", "disableHoverListener", "disableFocusListener", "disableKeyboardListener", "disableClickListner", "showCloseButton", "variant", "hoverDelay", "style"];
46
+ /** @deprecated use variant="negative" instead */
47
+ var error = 'error';
48
+ var Tooltip = function Tooltip(_ref) {
49
+ var _actualPlacement$spli, _middlewareData$arrow, _middlewareData$arrow2;
50
+ var placement = _ref.placement,
51
+ content = _ref.content,
52
+ children = _ref.children,
53
+ className = _ref.className,
54
+ isOpen = _ref.isOpen,
55
+ _ref$onClickCloseButt = _ref.onClickCloseButton,
56
+ onClickCloseButton = _ref$onClickCloseButt === void 0 ? function () {
57
+ return undefined;
58
+ } : _ref$onClickCloseButt,
59
+ _ref$disableHoverList = _ref.disableHoverListener,
60
+ disableHoverListener = _ref$disableHoverList === void 0 ? false : _ref$disableHoverList,
61
+ _ref$disableFocusList = _ref.disableFocusListener,
62
+ disableFocusListener = _ref$disableFocusList === void 0 ? false : _ref$disableFocusList,
63
+ _ref$disableKeyboardL = _ref.disableKeyboardListener,
64
+ disableKeyboardListener = _ref$disableKeyboardL === void 0 ? true : _ref$disableKeyboardL,
65
+ _ref$disableClickList = _ref.disableClickListner,
66
+ disableClickListner = _ref$disableClickList === void 0 ? true : _ref$disableClickList,
67
+ _ref$showCloseButton = _ref.showCloseButton,
68
+ showCloseButton = _ref$showCloseButton === void 0 ? true : _ref$showCloseButton,
69
+ variant = _ref.variant,
70
+ hoverDelay = _ref.hoverDelay,
71
+ style = _ref.style,
72
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
73
+ var _useState = useState(isOpen != null ? isOpen : false),
74
+ showTooltip = _useState[0],
75
+ setShowTooltip = _useState[1];
76
+ var tooltipArrowRef = useRef(null);
77
+ var tooltipId = useRandomId('eds-tooltip');
78
+ var hoverOpenTimer = useRef();
79
+ var hoverCloseTimer = useRef();
80
+ var isControlled = isOpen !== undefined;
81
+ // calculations for floating-UI tooltip position
82
+ var _useFloating = useFloating({
83
+ placement: standardisePlacement(placement),
84
+ open: showTooltip,
85
+ middleware: [offset(space.extraSmall), flip(), shift({
86
+ padding: space.extraSmall,
87
+ limiter: limitShift({
88
+ offset: 8
89
+ })
90
+ }), arrow({
65
91
  element: tooltipArrowRef,
66
92
  padding: borderRadiuses.medium
67
- })
68
- ]
69
- });
70
- useEffect(() => {
93
+ })]
94
+ }),
95
+ refs = _useFloating.refs,
96
+ floatingStyles = _useFloating.floatingStyles,
97
+ middlewareData = _useFloating.middlewareData,
98
+ actualPlacement = _useFloating.placement,
99
+ isPositioned = _useFloating.isPositioned,
100
+ update = _useFloating.update,
101
+ elements = _useFloating.elements;
102
+ // Since we use CSS instead of conditional rendering when hiding tooltip
103
+ // we can't use the whileElementsMounted option and need to handle
104
+ // cleanup ourselves. See https://floating-ui.com/docs/autoupdate
105
+ useEffect(function () {
71
106
  if (showTooltip && elements.reference && elements.floating) {
72
- const cleanup = autoUpdate(elements.reference, elements.floating, update);
107
+ var cleanup = autoUpdate(elements.reference, elements.floating, update);
73
108
  return cleanup;
74
109
  }
75
110
  }, [showTooltip, elements, update]);
76
- const onMouseEnter = () => {
111
+ var onMouseEnter = function onMouseEnter() {
112
+ var _hoverDelay$enter;
77
113
  if (isControlled) return;
78
114
  clearTimeout(hoverCloseTimer.current);
79
- hoverOpenTimer.current = setTimeout(() => {
115
+ hoverOpenTimer.current = setTimeout(function () {
80
116
  setShowTooltip(true);
81
- }, hoverDelay?.enter ?? 150);
117
+ }, (_hoverDelay$enter = hoverDelay == null ? void 0 : hoverDelay.enter) != null ? _hoverDelay$enter : 150);
82
118
  };
83
- const onMouseLeave = () => {
119
+ var onMouseLeave = function onMouseLeave() {
120
+ var _hoverDelay$leave;
84
121
  if (isControlled) return;
85
122
  clearTimeout(hoverOpenTimer.current);
86
- hoverCloseTimer.current = setTimeout(() => {
123
+ hoverCloseTimer.current = setTimeout(function () {
87
124
  setShowTooltip(false);
88
- }, hoverDelay?.leave ?? 300);
125
+ }, (_hoverDelay$leave = hoverDelay == null ? void 0 : hoverDelay.leave) != null ? _hoverDelay$leave : 300);
89
126
  };
90
- React.useEffect(() => {
91
- return () => {
127
+ React.useEffect(function () {
128
+ return function () {
92
129
  clearTimeout(hoverOpenTimer.current);
93
130
  clearTimeout(hoverCloseTimer.current);
94
131
  };
95
132
  }, []);
96
- React.useEffect(() => {
97
- if (isOpen !== void 0) setShowTooltip(isOpen);
133
+ React.useEffect(function () {
134
+ if (isOpen !== undefined) setShowTooltip(isOpen);
98
135
  }, [isOpen]);
99
- const referenceListenerProps = {
100
- "aria-describedby": showTooltip ? tooltipId : void 0,
101
- // focusListner
102
- ...!disableFocusListener && !isControlled && { onFocus: () => setShowTooltip(true) },
103
- ...!disableFocusListener && !isControlled && { onBlur: () => setShowTooltip(false) },
104
- // hoverListner
105
- ...!disableHoverListener && !isControlled && { onMouseEnter },
106
- ...!disableHoverListener && !isControlled && { onMouseLeave },
107
- // keyboardListner
108
- ...!disableKeyboardListener && !isControlled && {
109
- onKeyDown: (e) => {
110
- if (e.key === "Escape") setShowTooltip(false);
111
- if (e.key === " " || e.key === "Enter") {
112
- e.preventDefault();
113
- setShowTooltip(!showTooltip);
114
- }
136
+ var referenceListenerProps = _extends({
137
+ 'aria-describedby': showTooltip ? tooltipId : undefined
138
+ }, !disableFocusListener && !isControlled && {
139
+ onFocus: function onFocus() {
140
+ return setShowTooltip(true);
141
+ }
142
+ }, !disableFocusListener && !isControlled && {
143
+ onBlur: function onBlur() {
144
+ return setShowTooltip(false);
145
+ }
146
+ }, !disableHoverListener && !isControlled && {
147
+ onMouseEnter: onMouseEnter
148
+ }, !disableHoverListener && !isControlled && {
149
+ onMouseLeave: onMouseLeave
150
+ }, !disableKeyboardListener && !isControlled && {
151
+ onKeyDown: function onKeyDown(e) {
152
+ if (e.key === 'Escape') setShowTooltip(false);
153
+ if (e.key === ' ' || e.key === 'Enter') {
154
+ e.preventDefault();
155
+ setShowTooltip(!showTooltip);
115
156
  }
116
- },
117
- // clickListner
118
- ...!disableClickListner && !isControlled && {
119
- onClick: () => setShowTooltip(!showTooltip)
120
157
  }
121
- };
122
- const displayTooltipStyle = (!isControlled || isPositioned) && showTooltip && content ? void 0 : "none";
123
- return /* @__PURE__ */ jsxs(Fragment, { children: [
124
- cloneElement(children, {
125
- ref: refs.setReference,
126
- ...referenceListenerProps
158
+ }, !disableClickListner && !isControlled && {
159
+ onClick: function onClick() {
160
+ return setShowTooltip(!showTooltip);
161
+ }
162
+ });
163
+ var displayTooltipStyle = (!isControlled || isPositioned) && showTooltip && content ? undefined : 'none';
164
+ return React.createElement(React.Fragment, null, cloneElement(children, _extends({
165
+ ref: refs.setReference
166
+ }, referenceListenerProps)), React.createElement("div", _extends({
167
+ className: classNames(className, 'eds-tooltip', {
168
+ 'eds-tooltip--negative': variant === error || variant === 'negative'
127
169
  }),
128
- /* @__PURE__ */ jsxs(
129
- "div",
130
- {
131
- className: classNames(className, "eds-tooltip", {
132
- "eds-tooltip--negative": variant === error || variant === "negative"
133
- }),
134
- ref: refs.setFloating,
135
- style: {
136
- ...floatingStyles,
137
- display: displayTooltipStyle,
138
- ...style
139
- },
140
- role: "tooltip",
141
- id: tooltipId,
142
- onMouseEnter: !disableHoverListener ? onMouseEnter : void 0,
143
- onMouseLeave: !disableHoverListener ? onMouseLeave : void 0,
144
- ...rest,
145
- children: [
146
- content,
147
- isOpen && showCloseButton && /* @__PURE__ */ jsx(
148
- IconButton,
149
- {
150
- className: "eds-tooltip__close-button",
151
- onClick: () => {
152
- setShowTooltip(false);
153
- onClickCloseButton();
154
- },
155
- type: "button",
156
- "aria-label": "Lukk tooltip",
157
- children: /* @__PURE__ */ jsx(CloseIcon, { "aria-hidden": "true" })
158
- }
159
- ),
160
- /* @__PURE__ */ jsx(
161
- "div",
162
- {
163
- className: `eds-tooltip__arrow--${actualPlacement?.split("-")?.[0]}`,
164
- ref: tooltipArrowRef,
165
- style: {
166
- left: middlewareData.arrow?.x,
167
- top: middlewareData.arrow?.y
168
- }
169
- }
170
- )
171
- ]
172
- }
173
- )
174
- ] });
170
+ ref: refs.setFloating,
171
+ style: _extends({}, floatingStyles, {
172
+ display: displayTooltipStyle
173
+ }, style),
174
+ role: "tooltip",
175
+ id: tooltipId,
176
+ onMouseEnter: !disableHoverListener ? onMouseEnter : undefined,
177
+ onMouseLeave: !disableHoverListener ? onMouseLeave : undefined
178
+ }, rest), content, isOpen && showCloseButton && React.createElement(IconButton, {
179
+ className: "eds-tooltip__close-button",
180
+ onClick: function onClick() {
181
+ setShowTooltip(false);
182
+ onClickCloseButton();
183
+ },
184
+ type: "button",
185
+ "aria-label": "Lukk tooltip"
186
+ }, React.createElement(CloseIcon, {
187
+ "aria-hidden": "true"
188
+ })), React.createElement("div", {
189
+ className: "eds-tooltip__arrow--" + (actualPlacement == null || (_actualPlacement$spli = actualPlacement.split('-')) == null ? void 0 : _actualPlacement$spli[0]),
190
+ ref: tooltipArrowRef,
191
+ style: {
192
+ left: (_middlewareData$arrow = middlewareData.arrow) == null ? void 0 : _middlewareData$arrow.x,
193
+ top: (_middlewareData$arrow2 = middlewareData.arrow) == null ? void 0 : _middlewareData$arrow2.y
194
+ }
195
+ })));
175
196
  };
176
- const Popover = ({
177
- children,
178
- placement = "bottom-start",
179
- showPopover: controlledState,
180
- setShowPopover: setControlledState
181
- }) => {
182
- const [showPopover, setShowPopover, controlled] = useCustomState(
183
- controlledState,
184
- setControlledState
185
- );
186
- const { refs, floatingStyles, elements, update } = useFloating$1({
187
- placement: standardisePlacement(placement),
188
- middleware: [
189
- offset$1(space.extraSmall),
190
- flip$1(),
191
- shift$1({
197
+
198
+ var _excluded = ["children"];
199
+ var Popover = function Popover(_ref) {
200
+ var children = _ref.children,
201
+ _ref$placement = _ref.placement,
202
+ placement = _ref$placement === void 0 ? 'bottom-start' : _ref$placement,
203
+ controlledState = _ref.showPopover,
204
+ setControlledState = _ref.setShowPopover;
205
+ var _useCustomState = useCustomState(controlledState, setControlledState),
206
+ showPopover = _useCustomState[0],
207
+ setShowPopover = _useCustomState[1],
208
+ controlled = _useCustomState[2];
209
+ // calculations for floating-UI popover position
210
+ var _useFloating = useFloating$1({
211
+ placement: standardisePlacement(placement),
212
+ middleware: [offset$1(space.extraSmall), flip$1(), shift$1({
192
213
  padding: space.extraSmall,
193
- limiter: limitShift$1({ offset: 8 })
194
- })
195
- ]
196
- });
197
- useEffect(() => {
214
+ limiter: limitShift$1({
215
+ offset: 8
216
+ })
217
+ })]
218
+ }),
219
+ refs = _useFloating.refs,
220
+ floatingStyles = _useFloating.floatingStyles,
221
+ elements = _useFloating.elements,
222
+ update = _useFloating.update;
223
+ // Since we use CSS instead of conditional rendering when hiding dropdownlist
224
+ // we can't use the whileElementsMounted option and need to handle
225
+ // cleanup ourselves. See https://floating-ui.com/docs/autoupdate
226
+ useEffect(function () {
198
227
  if (showPopover && elements.reference && elements.floating) {
199
- const cleanup = autoUpdate$1(elements.reference, elements.floating, update);
228
+ var cleanup = autoUpdate$1(elements.reference, elements.floating, update);
200
229
  return cleanup;
201
230
  }
202
231
  }, [showPopover, elements, update]);
203
- useOnClickOutside(
204
- [refs.floating, refs.reference],
205
- () => setShowPopover(false)
206
- );
207
- const popoverTriggerProps = {
208
- "aria-haspopup": "dialog",
209
- "aria-expanded": showPopover,
232
+ useOnClickOutside([refs.floating, refs.reference], function () {
233
+ return setShowPopover(false);
234
+ });
235
+ var popoverTriggerProps = _extends({
236
+ 'aria-haspopup': 'dialog',
237
+ 'aria-expanded': showPopover,
210
238
  ref: refs.setReference,
211
- type: "button",
212
- ...!controlled && {
213
- onClick: () => setShowPopover((prev) => !prev)
239
+ type: 'button'
240
+ }, !controlled && {
241
+ onClick: function onClick() {
242
+ return setShowPopover(function (prev) {
243
+ return !prev;
244
+ });
214
245
  }
215
- };
216
- const popoverContentProps = {
217
- role: "dialog",
218
- "aria-modal": false,
219
- "aria-hidden": !showPopover,
246
+ });
247
+ var popoverContentProps = {
248
+ role: 'dialog',
249
+ 'aria-modal': false,
250
+ 'aria-hidden': !showPopover,
220
251
  ref: refs.setFloating,
221
- style: { ...!showPopover && { display: "none" } },
222
- onKeyDown: (event) => {
223
- if (event.key === "Escape") setShowPopover(false);
252
+ style: _extends({}, !showPopover && {
253
+ display: 'none'
254
+ }),
255
+ onKeyDown: function onKeyDown(event) {
256
+ if (event.key === 'Escape') setShowPopover(false);
224
257
  },
225
- onBlur: (event) => {
226
- const elementReceivingFocus = event.relatedTarget;
227
- if (!elementReceivingFocus || elementReceivingFocus.getAttribute("tabindex") === "-1")
228
- return;
229
- const focusedElementIsPopover = elementContainsElement(
230
- refs.floating.current,
231
- elementReceivingFocus
232
- );
233
- const focusedElementIsTrigger = elementContainsElement(
234
- refs.reference.current,
235
- elementReceivingFocus
236
- );
237
- const popoverShouldClose = !focusedElementIsPopover && !focusedElementIsTrigger;
258
+ onBlur: function onBlur(event) {
259
+ var elementReceivingFocus = event.relatedTarget;
260
+ // The check for 'tabindex=-1' is a special case for focus handling in Docz
261
+ if (!elementReceivingFocus || elementReceivingFocus.getAttribute('tabindex') === '-1') return;
262
+ var focusedElementIsPopover = elementContainsElement(refs.floating.current, elementReceivingFocus);
263
+ var focusedElementIsTrigger = elementContainsElement(refs.reference.current, elementReceivingFocus);
264
+ var popoverShouldClose = !focusedElementIsPopover && !focusedElementIsTrigger;
238
265
  if (showPopover && popoverShouldClose) setShowPopover(false);
239
266
  }
240
267
  };
241
- const closeButtonProps = {
242
- onClick: () => setShowPopover(false),
243
- type: "button"
268
+ var closeButtonProps = {
269
+ onClick: function onClick() {
270
+ return setShowPopover(false);
271
+ },
272
+ type: 'button'
244
273
  };
245
- const contextValue = {
246
- showPopover,
247
- floatingStyles,
248
- popoverTriggerProps,
249
- popoverContentProps,
250
- closeButtonProps
274
+ var contextValue = {
275
+ showPopover: showPopover,
276
+ floatingStyles: floatingStyles,
277
+ popoverTriggerProps: popoverTriggerProps,
278
+ popoverContentProps: popoverContentProps,
279
+ closeButtonProps: closeButtonProps
251
280
  };
252
- return /* @__PURE__ */ jsx(PopoverContext.Provider, { value: contextValue, children });
281
+ return React.createElement(PopoverContext.Provider, {
282
+ value: contextValue
283
+ }, children);
253
284
  };
254
- const PopoverTrigger = ({ children }) => {
255
- const { popoverTriggerProps } = usePopoverContext();
256
- const child = React.Children.only(children);
285
+ var PopoverTrigger = function PopoverTrigger(_ref2) {
286
+ var children = _ref2.children;
287
+ var _usePopoverContext = usePopoverContext(),
288
+ popoverTriggerProps = _usePopoverContext.popoverTriggerProps;
289
+ var child = React.Children.only(children);
257
290
  return cloneElement(child, popoverTriggerProps);
258
291
  };
259
- const PopoverCloseButton = ({
260
- children,
261
- ...rest
262
- }) => {
263
- const { closeButtonProps } = usePopoverContext();
264
- return cloneElement(children, { ...closeButtonProps, ...rest });
292
+ var PopoverCloseButton = function PopoverCloseButton(_ref3) {
293
+ var children = _ref3.children,
294
+ rest = _objectWithoutPropertiesLoose(_ref3, _excluded);
295
+ var _usePopoverContext2 = usePopoverContext(),
296
+ closeButtonProps = _usePopoverContext2.closeButtonProps;
297
+ return cloneElement(children, _extends({}, closeButtonProps, rest));
265
298
  };
266
- const PopoverContent = React.forwardRef(({ children, className, style }, ref) => {
267
- const { floatingStyles, popoverContentProps } = usePopoverContext();
268
- return /* @__PURE__ */ jsx(
269
- Contrast,
270
- {
271
- className: classNames(className, "eds-popover"),
272
- ...popoverContentProps,
273
- style: { ...floatingStyles, ...popoverContentProps.style, ...style },
274
- ref: mergeRefs(popoverContentProps.ref, ref),
275
- children
276
- }
277
- );
299
+ var PopoverContent = /*#__PURE__*/React.forwardRef(function (_ref4, ref) {
300
+ var children = _ref4.children,
301
+ className = _ref4.className,
302
+ style = _ref4.style;
303
+ var _usePopoverContext3 = usePopoverContext(),
304
+ floatingStyles = _usePopoverContext3.floatingStyles,
305
+ popoverContentProps = _usePopoverContext3.popoverContentProps;
306
+ return React.createElement(Contrast, _extends({
307
+ className: classNames(className, 'eds-popover')
308
+ }, popoverContentProps, {
309
+ style: _extends({}, floatingStyles, popoverContentProps.style, style),
310
+ // @ts-expect-error correct type for floating cannot be set via useFloating
311
+ ref: mergeRefs(popoverContentProps.ref, ref)
312
+ }), children);
278
313
  });
279
- const PopoverContext = createContext(
280
- void 0
281
- );
282
- const usePopoverContext = () => {
283
- const context = useContext(PopoverContext);
314
+ var PopoverContext = /*#__PURE__*/createContext(undefined);
315
+ var usePopoverContext = function usePopoverContext() {
316
+ var context = useContext(PopoverContext);
284
317
  if (context == null) {
285
- throw Error("usePopoverContext must be used within <Popover/>");
318
+ throw Error('usePopoverContext must be used within <Popover/>');
286
319
  }
287
320
  return context;
288
321
  };
289
- const useCustomState = (state, setState) => {
290
- const [internalState, setInternalState] = React.useState(false);
291
- const controlled = state !== void 0 && setState !== void 0;
322
+ var useCustomState = function useCustomState(state, setState) {
323
+ var _React$useState = React.useState(false),
324
+ internalState = _React$useState[0],
325
+ setInternalState = _React$useState[1];
326
+ var controlled = state !== undefined && setState !== undefined;
292
327
  if (controlled) return [state, setState, controlled];
293
328
  return [internalState, setInternalState, controlled];
294
329
  };
@@ -296,13 +331,8 @@ function elementContainsElement(parent, child) {
296
331
  if (!parent) return false;
297
332
  return parent === child || parent.contains(child);
298
333
  }
299
- warnAboutMissingStyles("tooltip");
300
- export {
301
- Popover,
302
- PopoverCloseButton,
303
- PopoverContent,
304
- PopoverTrigger,
305
- Tooltip,
306
- standardisePlacement
307
- };
334
+
335
+ warnAboutMissingStyles('tooltip');
336
+
337
+ export { Popover, PopoverCloseButton, PopoverContent, PopoverTrigger, Tooltip, standardisePlacement };
308
338
  //# sourceMappingURL=tooltip.esm.js.map