react-restyle-components 0.4.45 → 0.4.47

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 (233) hide show
  1. package/lib/index.js +1 -3
  2. package/lib/src/core-components/index.js +1 -1
  3. package/lib/src/core-components/src/components/Accordion/AccordionSection/Accordion.js +1 -15
  4. package/lib/src/core-components/src/components/Accordion/AccordionSection/AccordionContext.js +1 -6
  5. package/lib/src/core-components/src/components/Accordion/AccordionSection/AccordionSection.js +1 -39
  6. package/lib/src/core-components/src/components/Accordion/AccordionSection/Header.js +1 -39
  7. package/lib/src/core-components/src/components/Accordion/AccordionSection/elements.js +57 -94
  8. package/lib/src/core-components/src/components/Accordion/AccordionSection/hooks/useCurrentAccordionIndex.js +1 -13
  9. package/lib/src/core-components/src/components/Accordion/AccordionSection/index.js +1 -3
  10. package/lib/src/core-components/src/components/Accordion/AccordionSection/types.js +1 -9
  11. package/lib/src/core-components/src/components/Accordion/Collapsible/Collapsible2.component.js +1 -249
  12. package/lib/src/core-components/src/components/Action/types.js +1 -8
  13. package/lib/src/core-components/src/components/AlertBanner/AlertBanner.js +1 -45
  14. package/lib/src/core-components/src/components/AlertBanner/elements.js +45 -120
  15. package/lib/src/core-components/src/components/AlertBanner/index.js +1 -2
  16. package/lib/src/core-components/src/components/AlertBanner/types.js +1 -10
  17. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-group-by-multiple-select-multiple-fields-display/auto-complete-filter-group-by-multiple-select-multiple-fields-display.component.js +1 -451
  18. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-multi-select-multi-fields-display-drag-drop/auto-complete-filter-multi-select-multi-fields-display-drag-drop.component.js +1 -229
  19. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-multi-select-selected-top-display/auto-complete-filter-multi-select-selected-top-display.component.js +1 -174
  20. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-multiple-select-multiple-fields-display/auto-complete-filter-multiple-select-multiple-fields-display.component.js +2 -129
  21. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-single-select/auto-complete-filter-single-select.component.js +1 -55
  22. package/lib/src/core-components/src/components/AutoComplete/auto-complete-filter-single-select-multiple-fields-display/auto-complete-filter-single-select-multiple-fields-display.component.js +2 -308
  23. package/lib/src/core-components/src/components/AutoComplete/auto-complete-group-by/auto-complete-group-by.component.js +1 -115
  24. package/lib/src/core-components/src/components/AutoComplete/autocomplete/autocomplete.js +2 -442
  25. package/lib/src/core-components/src/components/AutoComplete/index.js +1 -8
  26. package/lib/src/core-components/src/components/Avatar/Avatar.js +14 -148
  27. package/lib/src/core-components/src/components/Badge/Badge.js +2 -25
  28. package/lib/src/core-components/src/components/Badge/InnerBadge/Inline.js +1 -25
  29. package/lib/src/core-components/src/components/Badge/InnerBadge/InnerBadge.js +1 -25
  30. package/lib/src/core-components/src/components/Badge/InnerBadge/elements.js +32 -78
  31. package/lib/src/core-components/src/components/Badge/InnerBadge/index.js +1 -1
  32. package/lib/src/core-components/src/components/Badge/index.js +1 -1
  33. package/lib/src/core-components/src/components/Badge/types.js +1 -5
  34. package/lib/src/core-components/src/components/Breadcrumb/Breadcrumb.js +1 -83
  35. package/lib/src/core-components/src/components/Breadcrumb/elements.js +94 -166
  36. package/lib/src/core-components/src/components/Breadcrumb/index.js +1 -3
  37. package/lib/src/core-components/src/components/Breadcrumb/types.js +1 -3
  38. package/lib/src/core-components/src/components/Button/button.component.js +1 -18
  39. package/lib/src/core-components/src/components/Button/buttonGroup/buttonGroup.component.js +1 -4
  40. package/lib/src/core-components/src/components/Button/index.js +1 -2
  41. package/lib/src/core-components/src/components/Button/types.js +1 -1
  42. package/lib/src/core-components/src/components/Chip/Chip.js +1 -64
  43. package/lib/src/core-components/src/components/Chip/elements.js +48 -148
  44. package/lib/src/core-components/src/components/Chip/index.js +1 -2
  45. package/lib/src/core-components/src/components/Chip/types.js +1 -4
  46. package/lib/src/core-components/src/components/Divider/Divider.js +1 -25
  47. package/lib/src/core-components/src/components/Divider/elements.js +31 -68
  48. package/lib/src/core-components/src/components/Divider/index.js +1 -2
  49. package/lib/src/core-components/src/components/Divider/types.js +1 -4
  50. package/lib/src/core-components/src/components/DynamicGrid/DynamicGrid.js +1 -147
  51. package/lib/src/core-components/src/components/DynamicGrid/GridContainer.js +17 -24
  52. package/lib/src/core-components/src/components/DynamicGrid/elements.js +100 -162
  53. package/lib/src/core-components/src/components/DynamicGrid/index.js +1 -3
  54. package/lib/src/core-components/src/components/DynamicGrid/types.js +1 -28
  55. package/lib/src/core-components/src/components/DynamicGrid/utils.js +1 -193
  56. package/lib/src/core-components/src/components/FormField/FormField.js +1 -103
  57. package/lib/src/core-components/src/components/FormField/components/CheckboxGroupInput.js +1 -37
  58. package/lib/src/core-components/src/components/FormField/components/CheckboxInput.js +1 -8
  59. package/lib/src/core-components/src/components/FormField/components/CssMultilineInput.js +1 -192
  60. package/lib/src/core-components/src/components/FormField/components/DatePickerInput.js +1 -99
  61. package/lib/src/core-components/src/components/FormField/components/DropdownInput.js +1 -70
  62. package/lib/src/core-components/src/components/FormField/components/OtpInput.js +1 -81
  63. package/lib/src/core-components/src/components/FormField/components/PasswordInput.js +1 -40
  64. package/lib/src/core-components/src/components/FormField/components/PinInput.js +1 -75
  65. package/lib/src/core-components/src/components/FormField/components/RadioInput.js +1 -54
  66. package/lib/src/core-components/src/components/FormField/components/TextDropdownInput.js +1 -94
  67. package/lib/src/core-components/src/components/FormField/components/ToggleInput.js +1 -36
  68. package/lib/src/core-components/src/components/FormField/components/index.js +1 -11
  69. package/lib/src/core-components/src/components/FormField/css-properties.js +1 -161
  70. package/lib/src/core-components/src/components/FormField/index.js +1 -2
  71. package/lib/src/core-components/src/components/Icon/Icon.js +1 -159
  72. package/lib/src/core-components/src/components/Icon/index.js +1 -2
  73. package/lib/src/core-components/src/components/Icon/types.js +1 -9
  74. package/lib/src/core-components/src/components/Loader/loader.component.js +2 -215
  75. package/lib/src/core-components/src/components/Masonry/Masonry.js +1 -73
  76. package/lib/src/core-components/src/components/Masonry/elements.js +29 -46
  77. package/lib/src/core-components/src/components/Masonry/hooks.js +1 -100
  78. package/lib/src/core-components/src/components/Masonry/index.js +1 -3
  79. package/lib/src/core-components/src/components/Masonry/types.js +1 -1
  80. package/lib/src/core-components/src/components/Modal/BasicModal/modal.component.js +1 -116
  81. package/lib/src/core-components/src/components/Modal/index.js +1 -2
  82. package/lib/src/core-components/src/components/Modal/modal-confirm/modal-confirm.component.js +1 -147
  83. package/lib/src/core-components/src/components/Picker/color-picker/color-picker.component.js +1 -12
  84. package/lib/src/core-components/src/components/Picker/color-picker-modal/color-picker-modal.component.js +1 -40
  85. package/lib/src/core-components/src/components/Picker/index.js +1 -2
  86. package/lib/src/core-components/src/components/Selection/index.js +1 -4
  87. package/lib/src/core-components/src/components/Selection/multi-select/multi-select.component.js +1 -49
  88. package/lib/src/core-components/src/components/Selection/multi-select-with-field/multi-select-with-field.component.js +1 -58
  89. package/lib/src/core-components/src/components/Selection/multi-selection-dropdown/multi-selection-dropdown.component.js +1 -43
  90. package/lib/src/core-components/src/components/Selection/single-select/single-select.component.js +1 -87
  91. package/lib/src/core-components/src/components/Skeleton/Skeleton.js +1 -51
  92. package/lib/src/core-components/src/components/Skeleton/elements.js +54 -143
  93. package/lib/src/core-components/src/components/Skeleton/index.js +1 -2
  94. package/lib/src/core-components/src/components/Skeleton/types.js +1 -4
  95. package/lib/src/core-components/src/components/SpeedDial/SpeedDial.js +1 -128
  96. package/lib/src/core-components/src/components/SpeedDial/elements.js +62 -132
  97. package/lib/src/core-components/src/components/SpeedDial/index.js +1 -2
  98. package/lib/src/core-components/src/components/SpeedDial/types.js +1 -3
  99. package/lib/src/core-components/src/components/Stepper2/stepper.component.js +1 -139
  100. package/lib/src/core-components/src/components/Switch/Switch.js +1 -26
  101. package/lib/src/core-components/src/components/Switch/elements.js +34 -103
  102. package/lib/src/core-components/src/components/Switch/index.js +1 -2
  103. package/lib/src/core-components/src/components/Switch/types.js +1 -3
  104. package/lib/src/core-components/src/components/Table/Table.js +1 -1497
  105. package/lib/src/core-components/src/components/Table/columnReorder.js +36 -332
  106. package/lib/src/core-components/src/components/Table/columnResize.js +21 -284
  107. package/lib/src/core-components/src/components/Table/elements.d.ts +6 -1
  108. package/lib/src/core-components/src/components/Table/elements.js +203 -275
  109. package/lib/src/core-components/src/components/Table/filters.js +30 -555
  110. package/lib/src/core-components/src/components/Table/hooks.js +2 -536
  111. package/lib/src/core-components/src/components/Table/index.js +1 -6
  112. package/lib/src/core-components/src/components/Table/types.d.ts +1 -1
  113. package/lib/src/core-components/src/components/Table/types.js +1 -1
  114. package/lib/src/core-components/src/components/Tabs/tabs.component.js +1 -22
  115. package/lib/src/core-components/src/components/Tags1/Tags.component.js +1 -118
  116. package/lib/src/core-components/src/components/Tags1/types.js +1 -20
  117. package/lib/src/core-components/src/components/Timer1/timer.component.js +1 -76
  118. package/lib/src/core-components/src/components/Toast/Toast.js +1 -50
  119. package/lib/src/core-components/src/components/Toast/elements.js +41 -122
  120. package/lib/src/core-components/src/components/Toast/index.js +1 -2
  121. package/lib/src/core-components/src/components/Toast/types.js +1 -9
  122. package/lib/src/core-components/src/components/Tooltip/Tooltip.js +1 -200
  123. package/lib/src/core-components/src/components/Tooltip/elements.js +55 -117
  124. package/lib/src/core-components/src/components/Tooltip/index.js +1 -2
  125. package/lib/src/core-components/src/components/Tooltip/types.js +1 -17
  126. package/lib/src/core-components/src/components/Tooltip/utils.js +1 -140
  127. package/lib/src/core-components/src/components/TreeSelect/TreeSelect.js +1 -303
  128. package/lib/src/core-components/src/components/TreeSelect/elements.js +117 -216
  129. package/lib/src/core-components/src/components/TreeSelect/hooks.js +1 -252
  130. package/lib/src/core-components/src/components/TreeSelect/index.js +1 -3
  131. package/lib/src/core-components/src/components/TreeSelect/types.js +1 -1
  132. package/lib/src/core-components/src/components/ag-grid/AgGrid.js +1 -1057
  133. package/lib/src/core-components/src/components/ag-grid/elements.js +396 -790
  134. package/lib/src/core-components/src/components/ag-grid/hooks.js +4 -1220
  135. package/lib/src/core-components/src/components/ag-grid/index.js +1 -15
  136. package/lib/src/core-components/src/components/ag-grid/types.js +1 -6
  137. package/lib/src/core-components/src/components/index.js +1 -31
  138. package/lib/src/core-components/src/components/pdf/pdf-images.components.js +1 -7
  139. package/lib/src/core-components/src/components/pdf/pdf-table.components.js +5 -48
  140. package/lib/src/core-components/src/components/pdf/pdf-typography.components.js +1 -70
  141. package/lib/src/core-components/src/components/pdf/pdf-wrapped-view.components.js +1 -50
  142. package/lib/src/core-components/src/core-components/Avatar.js +4 -33
  143. package/lib/src/core-components/src/core-components/CoreButton/CoreButton.js +1 -10
  144. package/lib/src/core-components/src/core-components/CoreButton/elements.js +67 -176
  145. package/lib/src/core-components/src/core-components/CoreButton/index.js +1 -3
  146. package/lib/src/core-components/src/core-components/CoreButton/types.js +1 -6
  147. package/lib/src/core-components/src/core-components/CoreButton/utils.js +1 -12
  148. package/lib/src/core-components/src/core-components/Divider/Divider.js +4 -19
  149. package/lib/src/core-components/src/core-components/Divider/index.js +1 -1
  150. package/lib/src/core-components/src/core-components/SelectionCardStrip/index.js +1 -1
  151. package/lib/src/core-components/src/core-components/SelectionCardStrip/selectionCardStrip.js +10 -33
  152. package/lib/src/core-components/src/core-components/StateLayer.js +3 -5
  153. package/lib/src/core-components/src/core-components/ToggleCore/elements.js +25 -50
  154. package/lib/src/core-components/src/core-components/ToggleCore/index.js +1 -2
  155. package/lib/src/core-components/src/core-components/ToggleCore/toggleCore.js +1 -14
  156. package/lib/src/core-components/src/core-components/atoms/Input/Input.js +1 -22
  157. package/lib/src/core-components/src/core-components/atoms/Label/Label.js +1 -21
  158. package/lib/src/core-components/src/core-components/atoms/Textarea/Textarea.js +1 -19
  159. package/lib/src/core-components/src/core-components/index.js +1 -3
  160. package/lib/src/core-components/src/helpers/constants.js +1 -11
  161. package/lib/src/core-components/src/hooks/index.js +1 -1
  162. package/lib/src/core-components/src/hooks/outside.hook.js +1 -28
  163. package/lib/src/core-components/src/index.js +1 -12
  164. package/lib/src/core-components/src/tc.global.css +3 -0
  165. package/lib/src/core-components/src/utils/abstracts/breakpoints/index.js +1 -28
  166. package/lib/src/core-components/src/utils/abstracts/colors/index.js +1 -49
  167. package/lib/src/core-components/src/utils/abstracts/index.js +1 -5
  168. package/lib/src/core-components/src/utils/abstracts/space/index.js +1 -26
  169. package/lib/src/core-components/src/utils/abstracts/theme/ThemeBoundary.js +1 -8
  170. package/lib/src/core-components/src/utils/abstracts/theme/default-themes.js +1 -30
  171. package/lib/src/core-components/src/utils/abstracts/theme/index.js +1 -3
  172. package/lib/src/core-components/src/utils/abstracts/theme/theme.js +1 -30
  173. package/lib/src/core-components/src/utils/abstracts/theme/types.js +1 -1
  174. package/lib/src/core-components/src/utils/abstracts/theme/useTheme.js +1 -17
  175. package/lib/src/core-components/src/utils/abstracts/typography/index.js +1 -25
  176. package/lib/src/core-components/src/utils/context/DefaultsProvider.js +1 -8
  177. package/lib/src/core-components/src/utils/context/InternalProvider.js +1 -24
  178. package/lib/src/core-components/src/utils/context/index.js +1 -2
  179. package/lib/src/core-components/src/utils/designTokens.js +1 -128
  180. package/lib/src/core-components/src/utils/helpers/attachSubComponents.js +1 -23
  181. package/lib/src/core-components/src/utils/helpers/flattenChildren.js +1 -11
  182. package/lib/src/core-components/src/utils/helpers/getChildByType.js +1 -3
  183. package/lib/src/core-components/src/utils/helpers/index.js +1 -5
  184. package/lib/src/core-components/src/utils/helpers/isComponentType.js +1 -16
  185. package/lib/src/core-components/src/utils/helpers/separateChildrenByType.js +1 -12
  186. package/lib/src/core-components/src/utils/hooks/index.js +1 -18
  187. package/lib/src/core-components/src/utils/hooks/useClickOutside.js +1 -18
  188. package/lib/src/core-components/src/utils/hooks/useCombinedRefs.js +1 -17
  189. package/lib/src/core-components/src/utils/hooks/useDebouncedCallback.js +1 -12
  190. package/lib/src/core-components/src/utils/hooks/useDebouncedValue.js +1 -20
  191. package/lib/src/core-components/src/utils/hooks/useDeprecation.js +1 -40
  192. package/lib/src/core-components/src/utils/hooks/useDeviceDetect.js +1 -10
  193. package/lib/src/core-components/src/utils/hooks/useDeviceForm.js +1 -24
  194. package/lib/src/core-components/src/utils/hooks/useDisableBodyScroll.js +1 -16
  195. package/lib/src/core-components/src/utils/hooks/useHoverState.js +1 -36
  196. package/lib/src/core-components/src/utils/hooks/useId.js +1 -7
  197. package/lib/src/core-components/src/utils/hooks/useIsBrowser.js +1 -11
  198. package/lib/src/core-components/src/utils/hooks/useMediaQuery.js +1 -16
  199. package/lib/src/core-components/src/utils/hooks/useOverflow.js +1 -22
  200. package/lib/src/core-components/src/utils/hooks/useSafeLayoutEffect.js +1 -5
  201. package/lib/src/core-components/src/utils/hooks/useScrollingUp.js +1 -18
  202. package/lib/src/core-components/src/utils/hooks/useTrapFocus.js +1 -30
  203. package/lib/src/core-components/src/utils/hooks/useWindowDimensions.js +1 -23
  204. package/lib/src/core-components/src/utils/index.js +1 -9
  205. package/lib/src/core-components/src/utils/stories/Wrappers.js +8 -23
  206. package/lib/src/core-components/src/utils/stories/cleanProps.js +1 -5
  207. package/lib/src/core-components/src/utils/stories/index.js +1 -4
  208. package/lib/src/core-components/src/utils/stories/sleep.js +1 -4
  209. package/lib/src/core-components/src/utils/stories/view-ports.js +1 -50
  210. package/lib/src/core-components/src/utils/styling/calcWidthOfColumns.js +1 -5
  211. package/lib/src/core-components/src/utils/styling/createGridContainer.js +6 -12
  212. package/lib/src/core-components/src/utils/styling/createTransition.js +2 -7
  213. package/lib/src/core-components/src/utils/styling/forwardProps.js +1 -10
  214. package/lib/src/core-components/src/utils/styling/index.js +1 -5
  215. package/lib/src/core-components/src/utils/styling/pxToRem.js +1 -6
  216. package/lib/src/core-components/src/utils/testing/getComputedStyle.js +1 -3
  217. package/lib/src/core-components/src/utils/testing/index.js +1 -1
  218. package/lib/src/core-components/src/utils/utility.util.js +1 -14
  219. package/lib/src/core-components/tailwind.config.js +1 -233
  220. package/lib/src/core-hooks/index.js +1 -3
  221. package/lib/src/core-hooks/src/useClickOutside/useClickOutside.hook.js +1 -46
  222. package/lib/src/core-hooks/src/useDebounce/useDebounce.hook.js +1 -30
  223. package/lib/src/core-hooks/src/usePreventEKey/usePreventEKey.hook.js +1 -8
  224. package/lib/src/core-utils/index.js +1 -7
  225. package/lib/src/core-utils/src/calculation/calculation.util.js +1 -89
  226. package/lib/src/core-utils/src/colors/color.util.js +1 -15
  227. package/lib/src/core-utils/src/convert/numberToWords/numToWords.util.js +1 -145
  228. package/lib/src/core-utils/src/convert/typography/camelCaseToTitleCase.util.js +1 -5
  229. package/lib/src/core-utils/src/form-helper/form-helper.util.js +1 -82
  230. package/lib/src/core-utils/src/index.js +1 -7
  231. package/lib/src/core-utils/src/utility/utility.util.js +1 -12
  232. package/lib/src/core-utils/src/uuid/uuid.util.js +1 -8
  233. package/package.json +1 -1
@@ -1,200 +1 @@
1
- 'use client';
2
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { forwardRef, useState, useRef, useCallback, useEffect, useMemo, } from 'react';
4
- import { createPortal } from 'react-dom';
5
- import { TooltipTrigger, TooltipContent, TooltipArrow, TooltipPortal } from './elements';
6
- import { calculateTooltipPosition, getAlternatePosition, clampToViewport, sideAlignToPosition, } from './utils';
7
- export const Tooltip = forwardRef(function TooltipComponent(props, ref) {
8
- const { children, content, position: positionProp, side, align = 'center', variant = 'dark', size = 'medium', delay = 200, hideDelay = 0, offset = 8, sideOffset, maxWidth = 280, showArrow = true, disabled = false, trigger = ['hover', 'focus'], open: controlledOpen, onOpenChange, avoidCollisions = true, portal = true, animated = true, classNames = {}, styles = {}, className, zIndex = 9999, ariaLabel, ...rest } = props;
9
- // Refs
10
- const triggerRef = useRef(null);
11
- const tooltipRef = useRef(null);
12
- const showTimeoutRef = useRef(null);
13
- const hideTimeoutRef = useRef(null);
14
- // State
15
- const [isOpen, setIsOpen] = useState(false);
16
- const [coords, setCoords] = useState({ top: -9999, left: -9999 });
17
- const [actualPosition, setActualPosition] = useState('top');
18
- const [isMounted, setIsMounted] = useState(false);
19
- // Check if mounted (for SSR)
20
- useEffect(() => {
21
- setIsMounted(true);
22
- }, []);
23
- // Controlled vs uncontrolled
24
- const isControlled = controlledOpen !== undefined;
25
- const open = isControlled ? controlledOpen : isOpen;
26
- // Determine position from props
27
- const desiredPosition = useMemo(() => {
28
- if (positionProp)
29
- return positionProp;
30
- if (side)
31
- return sideAlignToPosition(side, align);
32
- return 'top';
33
- }, [positionProp, side, align]);
34
- // Get final offset
35
- const finalOffset = sideOffset ?? offset;
36
- // Trigger modes
37
- const triggers = useMemo(() => {
38
- return Array.isArray(trigger) ? trigger : [trigger];
39
- }, [trigger]);
40
- // Calculate position
41
- const updatePosition = useCallback(() => {
42
- if (!triggerRef.current || !tooltipRef.current)
43
- return;
44
- const triggerRect = triggerRef.current.getBoundingClientRect();
45
- const tooltipRect = tooltipRef.current.getBoundingClientRect();
46
- const viewportWidth = window.innerWidth;
47
- const viewportHeight = window.innerHeight;
48
- const dimensions = {
49
- width: tooltipRect.width,
50
- height: tooltipRect.height,
51
- };
52
- let newPosition = desiredPosition;
53
- let newCoords = calculateTooltipPosition(desiredPosition, triggerRect, dimensions, finalOffset);
54
- // Collision detection
55
- if (avoidCollisions) {
56
- const alternatePosition = getAlternatePosition(desiredPosition, newCoords, dimensions, viewportWidth, viewportHeight);
57
- if (alternatePosition) {
58
- newPosition = alternatePosition;
59
- newCoords = calculateTooltipPosition(alternatePosition, triggerRect, dimensions, finalOffset);
60
- }
61
- // Clamp to viewport
62
- newCoords = clampToViewport(newCoords, dimensions, viewportWidth, viewportHeight);
63
- }
64
- setActualPosition(newPosition);
65
- setCoords(newCoords);
66
- }, [desiredPosition, finalOffset, avoidCollisions]);
67
- // Show tooltip
68
- const show = useCallback(() => {
69
- if (disabled || !content)
70
- return;
71
- if (hideTimeoutRef.current) {
72
- clearTimeout(hideTimeoutRef.current);
73
- hideTimeoutRef.current = null;
74
- }
75
- showTimeoutRef.current = setTimeout(() => {
76
- if (isControlled) {
77
- onOpenChange?.(true);
78
- }
79
- else {
80
- setIsOpen(true);
81
- }
82
- }, delay);
83
- }, [disabled, content, delay, isControlled, onOpenChange]);
84
- // Hide tooltip
85
- const hide = useCallback(() => {
86
- if (showTimeoutRef.current) {
87
- clearTimeout(showTimeoutRef.current);
88
- showTimeoutRef.current = null;
89
- }
90
- hideTimeoutRef.current = setTimeout(() => {
91
- if (isControlled) {
92
- onOpenChange?.(false);
93
- }
94
- else {
95
- setIsOpen(false);
96
- }
97
- }, hideDelay);
98
- }, [hideDelay, isControlled, onOpenChange]);
99
- // Toggle for click trigger
100
- const toggle = useCallback(() => {
101
- if (open) {
102
- hide();
103
- }
104
- else {
105
- show();
106
- }
107
- }, [open, show, hide]);
108
- // Update position when open changes
109
- useEffect(() => {
110
- if (open) {
111
- // Use multiple RAF to ensure DOM is ready
112
- requestAnimationFrame(() => {
113
- requestAnimationFrame(() => {
114
- updatePosition();
115
- });
116
- });
117
- // Update on scroll/resize
118
- const handleUpdate = () => {
119
- requestAnimationFrame(updatePosition);
120
- };
121
- window.addEventListener('scroll', handleUpdate, true);
122
- window.addEventListener('resize', handleUpdate);
123
- return () => {
124
- window.removeEventListener('scroll', handleUpdate, true);
125
- window.removeEventListener('resize', handleUpdate);
126
- };
127
- }
128
- }, [open, updatePosition]);
129
- // Escape key handler
130
- useEffect(() => {
131
- if (!open)
132
- return;
133
- const handleEscape = (e) => {
134
- if (e.key === 'Escape') {
135
- hide();
136
- }
137
- };
138
- document.addEventListener('keydown', handleEscape);
139
- return () => document.removeEventListener('keydown', handleEscape);
140
- }, [open, hide]);
141
- // Click outside handler for click trigger
142
- useEffect(() => {
143
- if (!open || !triggers.includes('click'))
144
- return;
145
- const handleClickOutside = (e) => {
146
- if (triggerRef.current &&
147
- !triggerRef.current.contains(e.target) &&
148
- tooltipRef.current &&
149
- !tooltipRef.current.contains(e.target)) {
150
- hide();
151
- }
152
- };
153
- document.addEventListener('mousedown', handleClickOutside);
154
- return () => document.removeEventListener('mousedown', handleClickOutside);
155
- }, [open, triggers, hide]);
156
- // Cleanup timeouts
157
- useEffect(() => {
158
- return () => {
159
- if (showTimeoutRef.current)
160
- clearTimeout(showTimeoutRef.current);
161
- if (hideTimeoutRef.current)
162
- clearTimeout(hideTimeoutRef.current);
163
- };
164
- }, []);
165
- // Event handlers
166
- const handleMouseEnter = triggers.includes('hover') ? show : undefined;
167
- const handleMouseLeave = triggers.includes('hover') ? hide : undefined;
168
- const handleFocus = triggers.includes('focus') ? show : undefined;
169
- const handleBlur = triggers.includes('focus') ? hide : undefined;
170
- const handleClick = triggers.includes('click') ? toggle : undefined;
171
- // Don't render if no content
172
- if (!content) {
173
- return _jsx(_Fragment, { children: children });
174
- }
175
- // Generate unique ID for accessibility
176
- const tooltipId = useMemo(() => `tooltip-${Math.random().toString(36).substr(2, 9)}`, []);
177
- // Tooltip element
178
- const tooltipElement = open && (_jsxs(TooltipContent, { ref: tooltipRef, role: "tooltip", id: tooltipId, "aria-label": ariaLabel, "$variant": variant, "$size": size, "$maxWidth": maxWidth, "$animated": animated, "$isVisible": open, "$position": actualPosition, className: classNames.content, style: {
179
- top: coords.top,
180
- left: coords.left,
181
- ...styles.content,
182
- }, children: [content, showArrow && (_jsx(TooltipArrow, { "$variant": variant, "$position": actualPosition, className: classNames.arrow, style: styles.arrow }))] }));
183
- return (_jsxs(_Fragment, { children: [_jsx(TooltipTrigger, { ref: (node) => {
184
- // Handle both refs
185
- triggerRef.current = node;
186
- if (typeof ref === 'function') {
187
- ref(node);
188
- }
189
- else if (ref) {
190
- ref.current = node;
191
- }
192
- }, className: className || classNames.trigger, style: styles.trigger, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onFocus: handleFocus, onBlur: handleBlur, onClick: handleClick, "aria-describedby": open ? tooltipId : undefined, "data-state": open ? 'open' : 'closed', ...rest, children: children }), portal && isMounted
193
- ? createPortal(_jsx(TooltipPortal, { "$zIndex": zIndex, children: tooltipElement }), document.body)
194
- : tooltipElement] }));
195
- });
196
- Tooltip.displayName = 'Tooltip';
197
- // Simple provider for compatibility (no longer needed but kept for migration)
198
- export const TooltipProvider = ({ children }) => {
199
- return _jsx(_Fragment, { children: children });
200
- };
1
+ "use strict";"use client";import{Fragment as b,jsx as d,jsxs as K}from"react/jsx-runtime";import{forwardRef as ye,useState as y,useRef as E,useCallback as C,useEffect as f,useMemo as M}from"react";import{createPortal as Ee}from"react-dom";import{TooltipTrigger as Ce,TooltipContent as Pe,TooltipArrow as Le,TooltipPortal as ke}from"./elements";import{calculateTooltipPosition as Q,getAlternatePosition as xe,clampToViewport as Ae,sideAlignToPosition as Re}from"./utils";export const Tooltip=ye(function(X,m){const{children:O,content:p,position:P,side:L,align:z="center",variant:N="dark",size:Y="medium",delay:I=200,hideDelay:j=0,offset:Z=8,sideOffset:ee,maxWidth:te=280,showArrow:ne=!0,disabled:B=!1,trigger:h=["hover","focus"],open:W,onOpenChange:g,avoidCollisions:q=!0,portal:oe=!0,animated:re=!0,classNames:k={},styles:x={},className:ie,zIndex:se=9999,ariaLabel:ce,...le}=X,c=E(null),l=E(null),i=E(null),s=E(null),[ue,_]=y(!1),[H,ae]=y({top:-9999,left:-9999}),[S,de]=y("top"),[fe,me]=y(!1);f(()=>{me(!0)},[]);const u=W!==void 0,t=u?W:ue,w=M(()=>P||(L?Re(L,z):"top"),[P,L,z]),A=ee??Z,o=M(()=>Array.isArray(h)?h:[h],[h]),R=C(()=>{if(!c.current||!l.current)return;const e=c.current.getBoundingClientRect(),r=l.current.getBoundingClientRect(),U=window.innerWidth,G=window.innerHeight,T={width:r.width,height:r.height};let J=w,a=Q(w,e,T,A);if(q){const $=xe(w,a,T,U,G);$&&(J=$,a=Q($,e,T,A)),a=Ae(a,T,U,G)}de(J),ae(a)},[w,A,q]),v=C(()=>{B||!p||(s.current&&(clearTimeout(s.current),s.current=null),i.current=setTimeout(()=>{u?g?.(!0):_(!0)},I))},[B,p,I,u,g]),n=C(()=>{i.current&&(clearTimeout(i.current),i.current=null),s.current=setTimeout(()=>{u?g?.(!1):_(!1)},j)},[j,u,g]),pe=C(()=>{t?n():v()},[t,v,n]);f(()=>{if(t){requestAnimationFrame(()=>{requestAnimationFrame(()=>{R()})});const e=()=>{requestAnimationFrame(R)};return window.addEventListener("scroll",e,!0),window.addEventListener("resize",e),()=>{window.removeEventListener("scroll",e,!0),window.removeEventListener("resize",e)}}},[t,R]),f(()=>{if(!t)return;const e=r=>{r.key==="Escape"&&n()};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[t,n]),f(()=>{if(!t||!o.includes("click"))return;const e=r=>{c.current&&!c.current.contains(r.target)&&l.current&&!l.current.contains(r.target)&&n()};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[t,o,n]),f(()=>()=>{i.current&&clearTimeout(i.current),s.current&&clearTimeout(s.current)},[]);const he=o.includes("hover")?v:void 0,ge=o.includes("hover")?n:void 0,we=o.includes("focus")?v:void 0,ve=o.includes("focus")?n:void 0,Te=o.includes("click")?pe:void 0;if(!p)return d(b,{children:O});const V=M(()=>`tooltip-${Math.random().toString(36).substr(2,9)}`,[]),D=t&&K(Pe,{ref:l,role:"tooltip",id:V,"aria-label":ce,$variant:N,$size:Y,$maxWidth:te,$animated:re,$isVisible:t,$position:S,className:k.content,style:{top:H.top,left:H.left,...x.content},children:[p,ne&&d(Le,{$variant:N,$position:S,className:k.arrow,style:x.arrow})]});return K(b,{children:[d(Ce,{ref:e=>{c.current=e,typeof m=="function"?m(e):m&&(m.current=e)},className:ie||k.trigger,style:x.trigger,onMouseEnter:he,onMouseLeave:ge,onFocus:we,onBlur:ve,onClick:Te,"aria-describedby":t?V:void 0,"data-state":t?"open":"closed",...le,children:O}),oe&&fe?Ee(d(ke,{$zIndex:se,children:D}),document.body):D]})});Tooltip.displayName="Tooltip";export const TooltipProvider=({children:F})=>d(b,{children:F});
@@ -1,6 +1,4 @@
1
- import { styled, css, keyframes } from 'styled-components';
2
- // Animations
3
- const fadeIn = keyframes `
1
+ "use strict";import{styled as d,css as o,keyframes as l}from"styled-components";const s=l`
4
2
  from {
5
3
  opacity: 0;
6
4
  transform: scale(0.96);
@@ -9,70 +7,34 @@ const fadeIn = keyframes `
9
7
  opacity: 1;
10
8
  transform: scale(1);
11
9
  }
12
- `;
13
- // Variant colors
14
- const variantStyles = {
15
- dark: {
16
- bg: '#1f2937',
17
- text: '#f9fafb',
18
- border: '#374151',
19
- },
20
- light: {
21
- bg: '#ffffff',
22
- text: '#1f2937',
23
- border: '#e5e7eb',
24
- },
25
- };
26
- // Size styles
27
- const sizeStyles = {
28
- small: {
29
- padding: '4px 8px',
30
- fontSize: '12px',
31
- borderRadius: '4px',
32
- },
33
- medium: {
34
- padding: '8px 12px',
35
- fontSize: '13px',
36
- borderRadius: '6px',
37
- },
38
- large: {
39
- padding: '12px 16px',
40
- fontSize: '14px',
41
- borderRadius: '8px',
42
- },
43
- };
44
- // Arrow size
45
- const ARROW_SIZE = 6;
46
- export const TooltipTrigger = styled.span `
10
+ `,e={dark:{bg:"#1f2937",text:"#f9fafb",border:"#374151"},light:{bg:"#ffffff",text:"#1f2937",border:"#e5e7eb"}},a={small:{padding:"4px 8px",fontSize:"12px",borderRadius:"4px"},medium:{padding:"8px 12px",fontSize:"13px",borderRadius:"6px"},large:{padding:"12px 16px",fontSize:"14px",borderRadius:"8px"}},r=6;export const TooltipTrigger=d.span`
47
11
  display: inline-flex;
48
12
  cursor: default;
49
- `;
50
- export const TooltipPortal = styled.div `
13
+ `,TooltipPortal=d.div`
51
14
  position: fixed;
52
15
  top: 0;
53
16
  left: 0;
54
17
  width: 0;
55
18
  height: 0;
56
- z-index: ${({ $zIndex }) => $zIndex};
57
- `;
58
- export const TooltipContent = styled.div `
19
+ z-index: ${({$zIndex:t})=>t};
20
+ `,TooltipContent=d.div`
59
21
  position: fixed;
60
22
  pointer-events: none;
61
23
  box-sizing: border-box;
62
24
 
63
25
  /* Variant */
64
- background: ${({ $variant }) => variantStyles[$variant].bg};
65
- color: ${({ $variant }) => variantStyles[$variant].text};
66
- border: 1px solid ${({ $variant }) => variantStyles[$variant].border};
26
+ background: ${({$variant:t})=>e[t].bg};
27
+ color: ${({$variant:t})=>e[t].text};
28
+ border: 1px solid ${({$variant:t})=>e[t].border};
67
29
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
68
30
 
69
31
  /* Size */
70
- padding: ${({ $size }) => sizeStyles[$size].padding};
71
- font-size: ${({ $size }) => sizeStyles[$size].fontSize};
72
- border-radius: ${({ $size }) => sizeStyles[$size].borderRadius};
32
+ padding: ${({$size:t})=>a[t].padding};
33
+ font-size: ${({$size:t})=>a[t].fontSize};
34
+ border-radius: ${({$size:t})=>a[t].borderRadius};
73
35
 
74
36
  /* Layout */
75
- max-width: ${({ $maxWidth }) => ($maxWidth ? `${$maxWidth}px` : '280px')};
37
+ max-width: ${({$maxWidth:t})=>t?`${t}px`:"280px"};
76
38
  width: max-content;
77
39
  text-align: left;
78
40
  line-height: 1.5;
@@ -81,115 +43,91 @@ export const TooltipContent = styled.div `
81
43
 
82
44
  /* Animation */
83
45
  opacity: 0;
84
- ${({ $animated, $isVisible }) => $isVisible &&
85
- ($animated
86
- ? css `
87
- animation: ${fadeIn} 0.15s ease-out forwards;
88
- `
89
- : css `
46
+ ${({$animated:t,$isVisible:i})=>i&&(t?o`
47
+ animation: ${s} 0.15s ease-out forwards;
48
+ `:o`
90
49
  opacity: 1;
91
50
  `)}
92
51
 
93
52
  /* Accessibility */
94
53
  @media (prefers-reduced-motion: reduce) {
95
54
  animation: none;
96
- opacity: ${({ $isVisible }) => ($isVisible ? 1 : 0)};
55
+ opacity: ${({$isVisible:t})=>t?1:0};
97
56
  }
98
- `;
99
- export const TooltipArrow = styled.div `
57
+ `,TooltipArrow=d.div`
100
58
  position: absolute;
101
59
  width: 0;
102
60
  height: 0;
103
- border: ${ARROW_SIZE}px solid transparent;
61
+ border: ${r}px solid transparent;
104
62
 
105
63
  /* Position and color based on tooltip position */
106
- ${({ $position, $variant }) => {
107
- const color = variantStyles[$variant].bg;
108
- const borderColor = variantStyles[$variant].border;
109
- // Top positions - arrow at bottom
110
- if ($position.startsWith('top')) {
111
- return css `
64
+ ${({$position:t,$variant:i})=>{const p=e[i].bg,n=e[i].border;return t.startsWith("top")?o`
112
65
  top: 100%;
113
- border-top-color: ${color};
66
+ border-top-color: ${p};
114
67
 
115
68
  &::before {
116
69
  content: '';
117
70
  position: absolute;
118
- top: -${ARROW_SIZE + 1}px;
119
- left: -${ARROW_SIZE}px;
120
- border: ${ARROW_SIZE}px solid transparent;
121
- border-top-color: ${borderColor};
71
+ top: -${r+1}px;
72
+ left: -${r}px;
73
+ border: ${r}px solid transparent;
74
+ border-top-color: ${n};
122
75
  z-index: -1;
123
76
  }
124
77
 
125
- ${$position === 'top' && css `left: 50%; margin-left: -${ARROW_SIZE}px;`}
126
- ${$position === 'top-start' && css `left: 12px;`}
127
- ${$position === 'top-end' && css `right: 12px;`}
128
- `;
129
- }
130
- // Bottom positions - arrow at top
131
- if ($position.startsWith('bottom')) {
132
- return css `
78
+ ${t==="top"&&o`left: 50%; margin-left: -${r}px;`}
79
+ ${t==="top-start"&&o`left: 12px;`}
80
+ ${t==="top-end"&&o`right: 12px;`}
81
+ `:t.startsWith("bottom")?o`
133
82
  bottom: 100%;
134
- border-bottom-color: ${color};
83
+ border-bottom-color: ${p};
135
84
 
136
85
  &::before {
137
86
  content: '';
138
87
  position: absolute;
139
- bottom: -${ARROW_SIZE + 1}px;
140
- left: -${ARROW_SIZE}px;
141
- border: ${ARROW_SIZE}px solid transparent;
142
- border-bottom-color: ${borderColor};
88
+ bottom: -${r+1}px;
89
+ left: -${r}px;
90
+ border: ${r}px solid transparent;
91
+ border-bottom-color: ${n};
143
92
  z-index: -1;
144
93
  }
145
94
 
146
- ${$position === 'bottom' && css `left: 50%; margin-left: -${ARROW_SIZE}px;`}
147
- ${$position === 'bottom-start' && css `left: 12px;`}
148
- ${$position === 'bottom-end' && css `right: 12px;`}
149
- `;
150
- }
151
- // Left positions - arrow at right
152
- if ($position.startsWith('left')) {
153
- return css `
95
+ ${t==="bottom"&&o`left: 50%; margin-left: -${r}px;`}
96
+ ${t==="bottom-start"&&o`left: 12px;`}
97
+ ${t==="bottom-end"&&o`right: 12px;`}
98
+ `:t.startsWith("left")?o`
154
99
  left: 100%;
155
- border-left-color: ${color};
100
+ border-left-color: ${p};
156
101
 
157
102
  &::before {
158
103
  content: '';
159
104
  position: absolute;
160
- left: -${ARROW_SIZE - 1}px;
161
- top: -${ARROW_SIZE}px;
162
- border: ${ARROW_SIZE}px solid transparent;
163
- border-left-color: ${borderColor};
105
+ left: -${r-1}px;
106
+ top: -${r}px;
107
+ border: ${r}px solid transparent;
108
+ border-left-color: ${n};
164
109
  z-index: -1;
165
110
  }
166
111
 
167
- ${$position === 'left' && css `top: 50%; margin-top: -${ARROW_SIZE}px;`}
168
- ${$position === 'left-start' && css `top: 12px;`}
169
- ${$position === 'left-end' && css `bottom: 12px;`}
170
- `;
171
- }
172
- // Right positions - arrow at left
173
- if ($position.startsWith('right')) {
174
- return css `
112
+ ${t==="left"&&o`top: 50%; margin-top: -${r}px;`}
113
+ ${t==="left-start"&&o`top: 12px;`}
114
+ ${t==="left-end"&&o`bottom: 12px;`}
115
+ `:t.startsWith("right")?o`
175
116
  right: 100%;
176
- border-right-color: ${color};
117
+ border-right-color: ${p};
177
118
 
178
119
  &::before {
179
120
  content: '';
180
121
  position: absolute;
181
- right: -${ARROW_SIZE - 1}px;
182
- top: -${ARROW_SIZE}px;
183
- border: ${ARROW_SIZE}px solid transparent;
184
- border-right-color: ${borderColor};
122
+ right: -${r-1}px;
123
+ top: -${r}px;
124
+ border: ${r}px solid transparent;
125
+ border-right-color: ${n};
185
126
  z-index: -1;
186
127
  }
187
128
 
188
- ${$position === 'right' && css `top: 50%; margin-top: -${ARROW_SIZE}px;`}
189
- ${$position === 'right-start' && css `top: 12px;`}
190
- ${$position === 'right-end' && css `bottom: 12px;`}
191
- `;
192
- }
193
- return '';
194
- }}
129
+ ${t==="right"&&o`top: 50%; margin-top: -${r}px;`}
130
+ ${t==="right-start"&&o`top: 12px;`}
131
+ ${t==="right-end"&&o`bottom: 12px;`}
132
+ `:""}}
195
133
  `;
@@ -1,2 +1 @@
1
- export { Tooltip, TooltipProvider } from './Tooltip';
2
- export * from './types';
1
+ "use strict";export{Tooltip,TooltipProvider}from"./Tooltip";export*from"./types";
@@ -1,17 +1 @@
1
- export const TOOLTIP_POSITIONS = [
2
- 'top',
3
- 'top-start',
4
- 'top-end',
5
- 'bottom',
6
- 'bottom-start',
7
- 'bottom-end',
8
- 'left',
9
- 'left-start',
10
- 'left-end',
11
- 'right',
12
- 'right-start',
13
- 'right-end',
14
- ];
15
- export const TOOLTIP_VARIANTS = ['dark', 'light'];
16
- export const TOOLTIP_SIZES = ['small', 'medium', 'large'];
17
- export const TOOLTIP_TRIGGERS = ['hover', 'click', 'focus', 'manual'];
1
+ "use strict";export const TOOLTIP_POSITIONS=["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end"],TOOLTIP_VARIANTS=["dark","light"],TOOLTIP_SIZES=["small","medium","large"],TOOLTIP_TRIGGERS=["hover","click","focus","manual"];
@@ -1,140 +1 @@
1
- const ARROW_SIZE = 6;
2
- /**
3
- * Calculate tooltip position relative to viewport (for fixed positioning)
4
- */
5
- export const calculateTooltipPosition = (position, targetRect, tooltipDimensions, offset = 8) => {
6
- const { top, left, width, height } = targetRect;
7
- const { width: tooltipWidth, height: tooltipHeight } = tooltipDimensions;
8
- let coords = { top: 0, left: 0 };
9
- const totalOffset = offset + ARROW_SIZE;
10
- switch (position) {
11
- // Top positions
12
- case 'top':
13
- coords = {
14
- top: top - tooltipHeight - totalOffset,
15
- left: left + width / 2 - tooltipWidth / 2,
16
- };
17
- break;
18
- case 'top-start':
19
- coords = {
20
- top: top - tooltipHeight - totalOffset,
21
- left: left,
22
- };
23
- break;
24
- case 'top-end':
25
- coords = {
26
- top: top - tooltipHeight - totalOffset,
27
- left: left + width - tooltipWidth,
28
- };
29
- break;
30
- // Bottom positions
31
- case 'bottom':
32
- coords = {
33
- top: top + height + totalOffset,
34
- left: left + width / 2 - tooltipWidth / 2,
35
- };
36
- break;
37
- case 'bottom-start':
38
- coords = {
39
- top: top + height + totalOffset,
40
- left: left,
41
- };
42
- break;
43
- case 'bottom-end':
44
- coords = {
45
- top: top + height + totalOffset,
46
- left: left + width - tooltipWidth,
47
- };
48
- break;
49
- // Left positions
50
- case 'left':
51
- coords = {
52
- top: top + height / 2 - tooltipHeight / 2,
53
- left: left - tooltipWidth - totalOffset,
54
- };
55
- break;
56
- case 'left-start':
57
- coords = {
58
- top: top,
59
- left: left - tooltipWidth - totalOffset,
60
- };
61
- break;
62
- case 'left-end':
63
- coords = {
64
- top: top + height - tooltipHeight,
65
- left: left - tooltipWidth - totalOffset,
66
- };
67
- break;
68
- // Right positions
69
- case 'right':
70
- coords = {
71
- top: top + height / 2 - tooltipHeight / 2,
72
- left: left + width + totalOffset,
73
- };
74
- break;
75
- case 'right-start':
76
- coords = {
77
- top: top,
78
- left: left + width + totalOffset,
79
- };
80
- break;
81
- case 'right-end':
82
- coords = {
83
- top: top + height - tooltipHeight,
84
- left: left + width + totalOffset,
85
- };
86
- break;
87
- default:
88
- coords = calculateTooltipPosition('top', targetRect, tooltipDimensions, offset);
89
- }
90
- return coords;
91
- };
92
- /**
93
- * Get alternate position when collision detected
94
- */
95
- export const getAlternatePosition = (position, coords, tooltipDimensions, viewportWidth, viewportHeight) => {
96
- const { top, left } = coords;
97
- const { width, height } = tooltipDimensions;
98
- const padding = 8;
99
- // Check if current position has collision
100
- const leftOverflow = left < padding;
101
- const rightOverflow = left + width > viewportWidth - padding;
102
- const topOverflow = top < padding;
103
- const bottomOverflow = top + height > viewportHeight - padding;
104
- if (!leftOverflow && !rightOverflow && !topOverflow && !bottomOverflow) {
105
- return null;
106
- }
107
- // Determine alternate position
108
- if (position.startsWith('top') && topOverflow) {
109
- return position.replace('top', 'bottom');
110
- }
111
- if (position.startsWith('bottom') && bottomOverflow) {
112
- return position.replace('bottom', 'top');
113
- }
114
- if (position.startsWith('left') && leftOverflow) {
115
- return position.replace('left', 'right');
116
- }
117
- if (position.startsWith('right') && rightOverflow) {
118
- return position.replace('right', 'left');
119
- }
120
- return null;
121
- };
122
- /**
123
- * Clamp coords within viewport
124
- */
125
- export const clampToViewport = (coords, tooltipDimensions, viewportWidth, viewportHeight) => {
126
- const { width, height } = tooltipDimensions;
127
- const padding = 8;
128
- return {
129
- top: Math.max(padding, Math.min(coords.top, viewportHeight - height - padding)),
130
- left: Math.max(padding, Math.min(coords.left, viewportWidth - width - padding)),
131
- };
132
- };
133
- /**
134
- * Convert side + align to position
135
- */
136
- export const sideAlignToPosition = (side, align) => {
137
- if (align === 'center')
138
- return side;
139
- return `${side}-${align}`;
140
- };
1
+ "use strict";const d=6;export const calculateTooltipPosition=(o,s,p,h=8)=>{const{top:r,left:t,width:a,height:f}=s,{width:n,height:c}=p;let e={top:0,left:0};const l=h+6;switch(o){case"top":e={top:r-c-l,left:t+a/2-n/2};break;case"top-start":e={top:r-c-l,left:t};break;case"top-end":e={top:r-c-l,left:t+a-n};break;case"bottom":e={top:r+f+l,left:t+a/2-n/2};break;case"bottom-start":e={top:r+f+l,left:t};break;case"bottom-end":e={top:r+f+l,left:t+a-n};break;case"left":e={top:r+f/2-c/2,left:t-n-l};break;case"left-start":e={top:r,left:t-n-l};break;case"left-end":e={top:r+f-c,left:t-n-l};break;case"right":e={top:r+f/2-c/2,left:t+a+l};break;case"right-start":e={top:r,left:t+a+l};break;case"right-end":e={top:r+f-c,left:t+a+l};break;default:e=calculateTooltipPosition("top",s,p,h)}return e},getAlternatePosition=(o,s,p,h,r)=>{const{top:t,left:a}=s,{width:f,height:n}=p,c=8,e=a<c,l=a+f>h-c,i=t<c,b=t+n>r-c;return!e&&!l&&!i&&!b?null:o.startsWith("top")&&i?o.replace("top","bottom"):o.startsWith("bottom")&&b?o.replace("bottom","top"):o.startsWith("left")&&e?o.replace("left","right"):o.startsWith("right")&&l?o.replace("right","left"):null},clampToViewport=(o,s,p,h)=>{const{width:r,height:t}=s,a=8;return{top:Math.max(a,Math.min(o.top,h-t-a)),left:Math.max(a,Math.min(o.left,p-r-a))}},sideAlignToPosition=(o,s)=>s==="center"?o:`${o}-${s}`;