@entur/tooltip 5.2.12 → 5.2.13-beta.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.
@@ -1,329 +1,294 @@
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 (e.includes(n)) continue;
25
- t[n] = r[n];
26
- }
27
- return t;
28
- }
29
-
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";
30
11
  function standardisePlacement(placement) {
31
12
  switch (placement) {
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';
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";
40
21
  default:
41
22
  return placement;
42
23
  }
43
24
  }
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({
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({
91
65
  element: tooltipArrowRef,
92
66
  padding: borderRadiuses.medium
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 () {
67
+ })
68
+ ]
69
+ });
70
+ useEffect(() => {
106
71
  if (showTooltip && elements.reference && elements.floating) {
107
- var cleanup = autoUpdate(elements.reference, elements.floating, update);
72
+ const cleanup = autoUpdate(elements.reference, elements.floating, update);
108
73
  return cleanup;
109
74
  }
110
75
  }, [showTooltip, elements, update]);
111
- var onMouseEnter = function onMouseEnter() {
112
- var _hoverDelay$enter;
76
+ const onMouseEnter = () => {
113
77
  if (isControlled) return;
114
78
  clearTimeout(hoverCloseTimer.current);
115
- hoverOpenTimer.current = setTimeout(function () {
79
+ hoverOpenTimer.current = setTimeout(() => {
116
80
  setShowTooltip(true);
117
- }, (_hoverDelay$enter = hoverDelay == null ? void 0 : hoverDelay.enter) != null ? _hoverDelay$enter : 150);
81
+ }, hoverDelay?.enter ?? 150);
118
82
  };
119
- var onMouseLeave = function onMouseLeave() {
120
- var _hoverDelay$leave;
83
+ const onMouseLeave = () => {
121
84
  if (isControlled) return;
122
85
  clearTimeout(hoverOpenTimer.current);
123
- hoverCloseTimer.current = setTimeout(function () {
86
+ hoverCloseTimer.current = setTimeout(() => {
124
87
  setShowTooltip(false);
125
- }, (_hoverDelay$leave = hoverDelay == null ? void 0 : hoverDelay.leave) != null ? _hoverDelay$leave : 300);
88
+ }, hoverDelay?.leave ?? 300);
126
89
  };
127
- React.useEffect(function () {
128
- return function () {
90
+ React.useEffect(() => {
91
+ return () => {
129
92
  clearTimeout(hoverOpenTimer.current);
130
93
  clearTimeout(hoverCloseTimer.current);
131
94
  };
132
95
  }, []);
133
- React.useEffect(function () {
134
- if (isOpen !== undefined) setShowTooltip(isOpen);
96
+ React.useEffect(() => {
97
+ if (isOpen !== void 0) setShowTooltip(isOpen);
135
98
  }, [isOpen]);
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);
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
+ }
156
115
  }
157
- }
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'
169
- }),
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
116
  },
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
117
+ // clickListner
118
+ ...!disableClickListner && !isControlled && {
119
+ onClick: () => setShowTooltip(!showTooltip)
194
120
  }
195
- })));
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
127
+ }),
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
+ ] });
196
175
  };
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({
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({
213
192
  padding: space.extraSmall,
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 () {
193
+ limiter: limitShift$1({ offset: 8 })
194
+ })
195
+ ]
196
+ });
197
+ useEffect(() => {
227
198
  if (showPopover && elements.reference && elements.floating) {
228
- var cleanup = autoUpdate$1(elements.reference, elements.floating, update);
199
+ const cleanup = autoUpdate$1(elements.reference, elements.floating, update);
229
200
  return cleanup;
230
201
  }
231
202
  }, [showPopover, elements, update]);
232
- useOnClickOutside([refs.floating, refs.reference], function () {
233
- return setShowPopover(false);
234
- });
235
- var popoverTriggerProps = _extends({
236
- 'aria-haspopup': 'dialog',
237
- 'aria-expanded': showPopover,
203
+ useOnClickOutside(
204
+ [refs.floating, refs.reference],
205
+ () => setShowPopover(false)
206
+ );
207
+ const popoverTriggerProps = {
208
+ "aria-haspopup": "dialog",
209
+ "aria-expanded": showPopover,
238
210
  ref: refs.setReference,
239
- type: 'button'
240
- }, !controlled && {
241
- onClick: function onClick() {
242
- return setShowPopover(function (prev) {
243
- return !prev;
244
- });
211
+ type: "button",
212
+ ...!controlled && {
213
+ onClick: () => setShowPopover((prev) => !prev)
245
214
  }
246
- });
247
- var popoverContentProps = {
248
- role: 'dialog',
249
- 'aria-modal': false,
250
- 'aria-hidden': !showPopover,
215
+ };
216
+ const popoverContentProps = {
217
+ role: "dialog",
218
+ "aria-modal": false,
219
+ "aria-hidden": !showPopover,
251
220
  ref: refs.setFloating,
252
- style: _extends({}, !showPopover && {
253
- display: 'none'
254
- }),
255
- onKeyDown: function onKeyDown(event) {
256
- if (event.key === 'Escape') setShowPopover(false);
221
+ style: { ...!showPopover && { display: "none" } },
222
+ onKeyDown: (event) => {
223
+ if (event.key === "Escape") setShowPopover(false);
257
224
  },
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;
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;
265
238
  if (showPopover && popoverShouldClose) setShowPopover(false);
266
239
  }
267
240
  };
268
- var closeButtonProps = {
269
- onClick: function onClick() {
270
- return setShowPopover(false);
271
- },
272
- type: 'button'
241
+ const closeButtonProps = {
242
+ onClick: () => setShowPopover(false),
243
+ type: "button"
273
244
  };
274
- var contextValue = {
275
- showPopover: showPopover,
276
- floatingStyles: floatingStyles,
277
- popoverTriggerProps: popoverTriggerProps,
278
- popoverContentProps: popoverContentProps,
279
- closeButtonProps: closeButtonProps
245
+ const contextValue = {
246
+ showPopover,
247
+ floatingStyles,
248
+ popoverTriggerProps,
249
+ popoverContentProps,
250
+ closeButtonProps
280
251
  };
281
- return React.createElement(PopoverContext.Provider, {
282
- value: contextValue
283
- }, children);
252
+ return /* @__PURE__ */ jsx(PopoverContext.Provider, { value: contextValue, children });
284
253
  };
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);
254
+ const PopoverTrigger = ({ children }) => {
255
+ const { popoverTriggerProps } = usePopoverContext();
256
+ const child = React.Children.only(children);
290
257
  return cloneElement(child, popoverTriggerProps);
291
258
  };
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));
259
+ const PopoverCloseButton = ({
260
+ children,
261
+ ...rest
262
+ }) => {
263
+ const { closeButtonProps } = usePopoverContext();
264
+ return cloneElement(children, { ...closeButtonProps, ...rest });
298
265
  };
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);
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
+ );
313
278
  });
314
- var PopoverContext = /*#__PURE__*/createContext(undefined);
315
- var usePopoverContext = function usePopoverContext() {
316
- var context = useContext(PopoverContext);
279
+ const PopoverContext = createContext(
280
+ void 0
281
+ );
282
+ const usePopoverContext = () => {
283
+ const context = useContext(PopoverContext);
317
284
  if (context == null) {
318
- throw Error('usePopoverContext must be used within <Popover/>');
285
+ throw Error("usePopoverContext must be used within <Popover/>");
319
286
  }
320
287
  return context;
321
288
  };
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;
289
+ const useCustomState = (state, setState) => {
290
+ const [internalState, setInternalState] = React.useState(false);
291
+ const controlled = state !== void 0 && setState !== void 0;
327
292
  if (controlled) return [state, setState, controlled];
328
293
  return [internalState, setInternalState, controlled];
329
294
  };
@@ -331,8 +296,13 @@ function elementContainsElement(parent, child) {
331
296
  if (!parent) return false;
332
297
  return parent === child || parent.contains(child);
333
298
  }
334
-
335
- warnAboutMissingStyles('tooltip');
336
-
337
- export { Popover, PopoverCloseButton, PopoverContent, PopoverTrigger, Tooltip, standardisePlacement };
299
+ warnAboutMissingStyles("tooltip");
300
+ export {
301
+ Popover,
302
+ PopoverCloseButton,
303
+ PopoverContent,
304
+ PopoverTrigger,
305
+ Tooltip,
306
+ standardisePlacement
307
+ };
338
308
  //# sourceMappingURL=tooltip.esm.js.map