@hitachivantara/uikit-react-core 5.3.0 → 5.5.0

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 (122) hide show
  1. package/dist/cjs/components/Dialog/Dialog.cjs +1 -1
  2. package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
  3. package/dist/cjs/components/Dialog/Dialog.styles.cjs +3 -3
  4. package/dist/cjs/components/Dialog/Dialog.styles.cjs.map +1 -1
  5. package/dist/cjs/components/Forms/Suggestions/Suggestions.styles.cjs +4 -4
  6. package/dist/cjs/components/Forms/Suggestions/Suggestions.styles.cjs.map +1 -1
  7. package/dist/cjs/components/InlineEditor/InlineEditor.cjs +122 -0
  8. package/dist/cjs/components/InlineEditor/InlineEditor.cjs.map +1 -0
  9. package/dist/cjs/components/InlineEditor/InlineEditor.styles.cjs +74 -0
  10. package/dist/cjs/components/InlineEditor/InlineEditor.styles.cjs.map +1 -0
  11. package/dist/cjs/components/InlineEditor/inlineEditorClasses.cjs +8 -0
  12. package/dist/cjs/components/InlineEditor/inlineEditorClasses.cjs.map +1 -0
  13. package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.cjs +51 -0
  14. package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.cjs.map +1 -0
  15. package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.cjs +54 -0
  16. package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.cjs.map +1 -0
  17. package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/horizontalScrollListItemClasses.cjs +8 -0
  18. package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/horizontalScrollListItemClasses.cjs.map +1 -0
  19. package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.cjs +126 -0
  20. package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.cjs.map +1 -0
  21. package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.styles.cjs +46 -0
  22. package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.styles.cjs.map +1 -0
  23. package/dist/cjs/components/ScrollTo/Horizontal/scrollToHorizontalClasses.cjs +8 -0
  24. package/dist/cjs/components/ScrollTo/Horizontal/scrollToHorizontalClasses.cjs.map +1 -0
  25. package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.cjs +90 -0
  26. package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.cjs.map +1 -0
  27. package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.styles.cjs +43 -0
  28. package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.styles.cjs.map +1 -0
  29. package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.cjs +71 -0
  30. package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.cjs.map +1 -0
  31. package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.cjs +54 -0
  32. package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.cjs.map +1 -0
  33. package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/verticalScrollListItemClasses.cjs +8 -0
  34. package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/verticalScrollListItemClasses.cjs.map +1 -0
  35. package/dist/cjs/components/ScrollTo/Vertical/scrollToVerticalClasses.cjs +8 -0
  36. package/dist/cjs/components/ScrollTo/Vertical/scrollToVerticalClasses.cjs.map +1 -0
  37. package/dist/cjs/components/ScrollTo/useScrollTo.cjs +103 -0
  38. package/dist/cjs/components/ScrollTo/useScrollTo.cjs.map +1 -0
  39. package/dist/cjs/components/ScrollTo/utils.cjs +76 -0
  40. package/dist/cjs/components/ScrollTo/utils.cjs.map +1 -0
  41. package/dist/cjs/components/ScrollTo/withTooltip.cjs +20 -0
  42. package/dist/cjs/components/ScrollTo/withTooltip.cjs.map +1 -0
  43. package/dist/cjs/components/TimeAgo/TimeAgo.cjs +39 -0
  44. package/dist/cjs/components/TimeAgo/TimeAgo.cjs.map +1 -0
  45. package/dist/cjs/components/TimeAgo/formatUtils.cjs +134 -0
  46. package/dist/cjs/components/TimeAgo/formatUtils.cjs.map +1 -0
  47. package/dist/cjs/components/TimeAgo/timeAgoClasses.cjs +8 -0
  48. package/dist/cjs/components/TimeAgo/timeAgoClasses.cjs.map +1 -0
  49. package/dist/cjs/components/TimeAgo/useTimeAgo.cjs +29 -0
  50. package/dist/cjs/components/TimeAgo/useTimeAgo.cjs.map +1 -0
  51. package/dist/cjs/components/TimeAgo/useTimeout.cjs +17 -0
  52. package/dist/cjs/components/TimeAgo/useTimeout.cjs.map +1 -0
  53. package/dist/cjs/hocs/withTooltip.cjs +4 -4
  54. package/dist/cjs/hocs/withTooltip.cjs.map +1 -1
  55. package/dist/cjs/index.cjs +23 -0
  56. package/dist/cjs/index.cjs.map +1 -1
  57. package/dist/cjs/utils/theme.cjs +9 -0
  58. package/dist/cjs/utils/theme.cjs.map +1 -1
  59. package/dist/cjs/utils/wrapperTooltip.cjs +1 -1
  60. package/dist/cjs/utils/wrapperTooltip.cjs.map +1 -1
  61. package/dist/esm/components/Dialog/Dialog.js +2 -2
  62. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  63. package/dist/esm/components/Dialog/Dialog.styles.js +3 -3
  64. package/dist/esm/components/Dialog/Dialog.styles.js.map +1 -1
  65. package/dist/esm/components/Forms/Suggestions/Suggestions.styles.js +5 -5
  66. package/dist/esm/components/Forms/Suggestions/Suggestions.styles.js.map +1 -1
  67. package/dist/esm/components/InlineEditor/InlineEditor.js +122 -0
  68. package/dist/esm/components/InlineEditor/InlineEditor.js.map +1 -0
  69. package/dist/esm/components/InlineEditor/InlineEditor.styles.js +74 -0
  70. package/dist/esm/components/InlineEditor/InlineEditor.styles.js.map +1 -0
  71. package/dist/esm/components/InlineEditor/inlineEditorClasses.js +8 -0
  72. package/dist/esm/components/InlineEditor/inlineEditorClasses.js.map +1 -0
  73. package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.js +51 -0
  74. package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.js.map +1 -0
  75. package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.js +54 -0
  76. package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.js.map +1 -0
  77. package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/horizontalScrollListItemClasses.js +8 -0
  78. package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/horizontalScrollListItemClasses.js.map +1 -0
  79. package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.js +126 -0
  80. package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.js.map +1 -0
  81. package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.styles.js +46 -0
  82. package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.styles.js.map +1 -0
  83. package/dist/esm/components/ScrollTo/Horizontal/scrollToHorizontalClasses.js +8 -0
  84. package/dist/esm/components/ScrollTo/Horizontal/scrollToHorizontalClasses.js.map +1 -0
  85. package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.js +90 -0
  86. package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.js.map +1 -0
  87. package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.styles.js +43 -0
  88. package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.styles.js.map +1 -0
  89. package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.js +71 -0
  90. package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.js.map +1 -0
  91. package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.js +54 -0
  92. package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.js.map +1 -0
  93. package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/verticalScrollListItemClasses.js +8 -0
  94. package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/verticalScrollListItemClasses.js.map +1 -0
  95. package/dist/esm/components/ScrollTo/Vertical/scrollToVerticalClasses.js +8 -0
  96. package/dist/esm/components/ScrollTo/Vertical/scrollToVerticalClasses.js.map +1 -0
  97. package/dist/esm/components/ScrollTo/useScrollTo.js +103 -0
  98. package/dist/esm/components/ScrollTo/useScrollTo.js.map +1 -0
  99. package/dist/esm/components/ScrollTo/utils.js +76 -0
  100. package/dist/esm/components/ScrollTo/utils.js.map +1 -0
  101. package/dist/esm/components/ScrollTo/withTooltip.js +20 -0
  102. package/dist/esm/components/ScrollTo/withTooltip.js.map +1 -0
  103. package/dist/esm/components/TimeAgo/TimeAgo.js +37 -0
  104. package/dist/esm/components/TimeAgo/TimeAgo.js.map +1 -0
  105. package/dist/esm/components/TimeAgo/formatUtils.js +126 -0
  106. package/dist/esm/components/TimeAgo/formatUtils.js.map +1 -0
  107. package/dist/esm/components/TimeAgo/timeAgoClasses.js +8 -0
  108. package/dist/esm/components/TimeAgo/timeAgoClasses.js.map +1 -0
  109. package/dist/esm/components/TimeAgo/useTimeAgo.js +29 -0
  110. package/dist/esm/components/TimeAgo/useTimeAgo.js.map +1 -0
  111. package/dist/esm/components/TimeAgo/useTimeout.js +17 -0
  112. package/dist/esm/components/TimeAgo/useTimeout.js.map +1 -0
  113. package/dist/esm/hocs/withTooltip.js +4 -4
  114. package/dist/esm/hocs/withTooltip.js.map +1 -1
  115. package/dist/esm/index.js +42 -19
  116. package/dist/esm/index.js.map +1 -1
  117. package/dist/esm/utils/theme.js +9 -0
  118. package/dist/esm/utils/theme.js.map +1 -1
  119. package/dist/esm/utils/wrapperTooltip.js +2 -2
  120. package/dist/esm/utils/wrapperTooltip.js.map +1 -1
  121. package/dist/types/index.d.ts +244 -1
  122. package/package.json +6 -6
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ const utils = require("./utils.cjs");
5
+ const useScrollTo = (selectedIndexProp = 0, scrollElementId = void 0, href = false, offset = 0, options = [], onChange = void 0, direction = "column") => {
6
+ const RETRY_MAX = 5;
7
+ const [selectedIndex, setSelectedIndex] = React.useState(selectedIndexProp);
8
+ const scrollEle = React.useRef(window);
9
+ const requestedAnimationFrame = React.useRef(0);
10
+ const lastContainerScrollTop = React.useRef(0);
11
+ const selectedIndexRef = React.useRef(selectedIndex);
12
+ React.useEffect(() => {
13
+ selectedIndexRef.current = selectedIndex;
14
+ }, [selectedIndex]);
15
+ React.useEffect(() => {
16
+ scrollEle.current = scrollElementId && document.getElementById(scrollElementId) || window;
17
+ lastContainerScrollTop.current = utils.verticalScrollOffset(scrollEle.current);
18
+ }, [scrollElementId]);
19
+ const checkScroll = React.useCallback((event) => {
20
+ if (requestedAnimationFrame.current === 0 && (window == null ? void 0 : window.requestAnimationFrame)) {
21
+ requestedAnimationFrame.current = window.requestAnimationFrame(() => {
22
+ requestedAnimationFrame.current = 0;
23
+ const firstVisibleElementIndex = utils.findFirstVisibleElement(scrollEle.current, options, offset);
24
+ let newSelectedIndex = firstVisibleElementIndex;
25
+ if (firstVisibleElementIndex < 0) {
26
+ newSelectedIndex = 0;
27
+ }
28
+ if (newSelectedIndex < options.length - 1 && utils.isScrolledToTheBottom(scrollEle.current)) {
29
+ newSelectedIndex += 1;
30
+ }
31
+ const containerScrollTop = utils.getScrollTop(scrollEle.current);
32
+ const isScrollingDown = containerScrollTop > lastContainerScrollTop.current;
33
+ lastContainerScrollTop.current = containerScrollTop;
34
+ if (isScrollingDown) {
35
+ if (newSelectedIndex < selectedIndexRef.current) {
36
+ newSelectedIndex = selectedIndexRef.current;
37
+ }
38
+ } else if (newSelectedIndex > selectedIndexRef.current) {
39
+ newSelectedIndex = selectedIndexRef.current;
40
+ }
41
+ setSelectedIndex(newSelectedIndex);
42
+ onChange == null ? void 0 : onChange(event, newSelectedIndex);
43
+ });
44
+ }
45
+ }, [offset, options, onChange]);
46
+ React.useEffect(() => {
47
+ if (scrollEle.current) {
48
+ scrollEle.current.addEventListener("scroll", checkScroll, false);
49
+ }
50
+ return () => {
51
+ if (scrollEle.current) {
52
+ scrollEle.current.removeEventListener("scroll", checkScroll);
53
+ }
54
+ if (requestedAnimationFrame.current !== 0) {
55
+ window.cancelAnimationFrame(requestedAnimationFrame.current);
56
+ requestedAnimationFrame.current = 0;
57
+ }
58
+ };
59
+ }, [checkScroll]);
60
+ React.useEffect(() => {
61
+ let checkRenderedInterval;
62
+ if (href) {
63
+ const hashValue = document.location.hash.split("#")[1] || "";
64
+ const option = options.find((o) => o.value === hashValue);
65
+ if (option) {
66
+ let retry = 0;
67
+ checkRenderedInterval = setInterval(() => {
68
+ const ele = document.getElementById(option.value);
69
+ if (ele) {
70
+ utils.scrollElement(ele, scrollEle.current, option.offset || offset);
71
+ clearInterval(checkRenderedInterval);
72
+ } else {
73
+ retry += 1;
74
+ if (retry === RETRY_MAX) {
75
+ clearInterval(checkRenderedInterval);
76
+ }
77
+ }
78
+ }, 1e3);
79
+ }
80
+ }
81
+ return () => {
82
+ clearInterval(checkRenderedInterval);
83
+ };
84
+ }, []);
85
+ const setScrollTo = (event, id, index, wrappedOnChange) => {
86
+ const option = options.find((o) => o.value === id);
87
+ if (option) {
88
+ const ele = document.getElementById(id);
89
+ if (ele) {
90
+ utils.scrollElement(ele, scrollEle.current, option.offset || offset, direction);
91
+ }
92
+ if (href) {
93
+ window.history.pushState({}, "", `#${options[index].value}`);
94
+ }
95
+ setSelectedIndex(index);
96
+ wrappedOnChange == null ? void 0 : wrappedOnChange(index);
97
+ selectedIndexRef.current = index;
98
+ }
99
+ };
100
+ return [selectedIndex, setScrollTo];
101
+ };
102
+ exports.useScrollTo = useScrollTo;
103
+ //# sourceMappingURL=useScrollTo.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollTo.cjs","sources":["../../../../src/components/ScrollTo/useScrollTo.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n findFirstVisibleElement,\n getScrollTop,\n isScrolledToTheBottom,\n scrollElement,\n verticalScrollOffset,\n} from \"./utils\";\nimport { HvScrollToVerticalOption } from \"./Vertical\";\n\nexport const useScrollTo = (\n selectedIndexProp: number = 0,\n scrollElementId: string | undefined = undefined,\n href: boolean = false,\n offset: number = 0,\n options: HvScrollToVerticalOption[] = [],\n onChange:\n | ((\n event:\n | Event\n | React.MouseEvent<HTMLDivElement>\n | React.KeyboardEvent<HTMLDivElement>,\n index: number\n ) => void)\n | undefined = undefined,\n direction: \"column\" | \"row\" = \"column\"\n): [\n number,\n (\n event:\n | React.MouseEvent<HTMLDivElement>\n | React.KeyboardEvent<HTMLDivElement>,\n id: string,\n index: number,\n wrappedOnChange?: (index: number) => void\n ) => void\n] => {\n const RETRY_MAX: number = 5;\n const [selectedIndex, setSelectedIndex] = useState<number>(selectedIndexProp);\n\n const scrollEle = useRef<HTMLElement | (Window & typeof globalThis)>(window);\n const requestedAnimationFrame = useRef(0);\n const lastContainerScrollTop = useRef<number>(0);\n\n // Ref to use a often-changing value in useCallback, as recommended in\n // https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback\n const selectedIndexRef = useRef(selectedIndex);\n\n useEffect(() => {\n selectedIndexRef.current = selectedIndex;\n }, [selectedIndex]);\n\n useEffect(() => {\n scrollEle.current =\n (scrollElementId && document.getElementById(scrollElementId)) || window;\n\n lastContainerScrollTop.current = verticalScrollOffset(scrollEle.current);\n }, [scrollElementId]);\n\n const checkScroll = useCallback(\n (\n event:\n | Event\n | React.MouseEvent<HTMLDivElement>\n | React.KeyboardEvent<HTMLDivElement>\n ) => {\n if (\n requestedAnimationFrame.current === 0 &&\n window?.requestAnimationFrame\n ) {\n requestedAnimationFrame.current = window.requestAnimationFrame(() => {\n requestedAnimationFrame.current = 0;\n\n const firstVisibleElementIndex = findFirstVisibleElement(\n scrollEle.current,\n options,\n offset\n );\n\n let newSelectedIndex = firstVisibleElementIndex;\n\n // select the first element when all elements are bellow the container's top\n if (firstVisibleElementIndex < 0) {\n newSelectedIndex = 0;\n }\n\n // if the user has reached the bottom of the container, select the first nav item still visible\n // (usually this selects the last nav item, when it can't reach the top the container)\n // in theory only needed when scrolling down, but no... because of the Safari bouncing behaviour\n if (\n newSelectedIndex < options.length - 1 &&\n isScrolledToTheBottom(scrollEle.current)\n ) {\n newSelectedIndex += 1;\n }\n\n const containerScrollTop = getScrollTop(scrollEle.current);\n const isScrollingDown =\n containerScrollTop > lastContainerScrollTop.current;\n lastContainerScrollTop.current = containerScrollTop;\n\n // only update the selected item if the scroll direction is moving away from it\n if (isScrollingDown) {\n if (newSelectedIndex < selectedIndexRef.current) {\n newSelectedIndex = selectedIndexRef.current;\n }\n } else if (newSelectedIndex > selectedIndexRef.current) {\n newSelectedIndex = selectedIndexRef.current;\n }\n\n setSelectedIndex(newSelectedIndex);\n onChange?.(event, newSelectedIndex);\n });\n }\n },\n [offset, options, onChange]\n );\n\n // Registers and unregisters the scroll listener\n useEffect(() => {\n if (scrollEle.current) {\n scrollEle.current.addEventListener(\"scroll\", checkScroll, false);\n }\n\n return () => {\n if (scrollEle.current) {\n scrollEle.current.removeEventListener(\"scroll\", checkScroll);\n }\n\n if (requestedAnimationFrame.current !== 0) {\n window.cancelAnimationFrame(requestedAnimationFrame.current);\n requestedAnimationFrame.current = 0;\n }\n };\n }, [checkScroll]);\n\n // Waits for the elements to be rendered and scrolls to the one referenced in the URL hash, if any\n useEffect(() => {\n let checkRenderedInterval;\n\n if (href) {\n const hashValue = document.location.hash.split(\"#\")[1] || \"\";\n\n const option = options.find((o) => o.value === hashValue);\n\n if (option) {\n let retry = 0;\n checkRenderedInterval = setInterval(() => {\n const ele = document.getElementById(option.value);\n\n if (ele) {\n scrollElement(ele, scrollEle.current, option.offset || offset);\n clearInterval(checkRenderedInterval);\n } else {\n retry += 1;\n if (retry === RETRY_MAX) {\n clearInterval(checkRenderedInterval);\n }\n }\n }, 1000);\n }\n }\n\n return () => {\n clearInterval(checkRenderedInterval);\n };\n\n // We really want to run this just in the first load\n // in fact this doesn't even belong here, the logic should be external\n }, []);\n\n const setScrollTo = (\n event:\n | React.MouseEvent<HTMLDivElement>\n | React.KeyboardEvent<HTMLDivElement>,\n id: string,\n index: number,\n wrappedOnChange?: (index: number) => void\n ) => {\n const option = options.find((o) => o.value === id);\n\n if (option) {\n const ele = document.getElementById(id);\n if (ele) {\n scrollElement(\n ele,\n scrollEle.current,\n option.offset || offset,\n direction\n );\n }\n\n if (href) {\n window.history.pushState({}, \"\", `#${options[index].value}`);\n }\n\n setSelectedIndex(index);\n wrappedOnChange?.(index);\n\n // Safari scrolls immediately (no smooth scroll support),\n // so this ref value must be updated asap\n selectedIndexRef.current = index;\n }\n };\n\n return [selectedIndex, setScrollTo];\n};\n"],"names":["useScrollTo","selectedIndexProp","scrollElementId","undefined","href","offset","options","onChange","direction","RETRY_MAX","selectedIndex","setSelectedIndex","useState","scrollEle","useRef","window","requestedAnimationFrame","lastContainerScrollTop","selectedIndexRef","useEffect","current","document","getElementById","verticalScrollOffset","checkScroll","useCallback","event","requestAnimationFrame","firstVisibleElementIndex","findFirstVisibleElement","newSelectedIndex","length","isScrolledToTheBottom","containerScrollTop","getScrollTop","isScrollingDown","addEventListener","removeEventListener","cancelAnimationFrame","checkRenderedInterval","hashValue","location","hash","split","option","find","o","value","retry","setInterval","ele","scrollElement","clearInterval","setScrollTo","id","index","wrappedOnChange","history","pushState"],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const getScrollTop = (c = window) => {
4
+ if (c === window) {
5
+ return window.scrollY || window.pageYOffset || document.documentElement && document.documentElement.scrollTop || document.body.scrollTop;
6
+ }
7
+ return c.scrollTop;
8
+ };
9
+ const verticalScrollOffset = (t, c = window) => {
10
+ var _a;
11
+ if (c === window) {
12
+ return (((_a = t == null ? void 0 : t.getBoundingClientRect) == null ? void 0 : _a.call(t).top) || 0) + (window.scrollY || window.pageYOffset);
13
+ }
14
+ if (getComputedStyle(c).position !== "static") {
15
+ return t.offsetTop;
16
+ }
17
+ return t.offsetTop - c.offsetTop;
18
+ };
19
+ const horizontalScrollOffset = (t, c = window) => {
20
+ var _a;
21
+ if (c === window) {
22
+ return (((_a = t == null ? void 0 : t.getBoundingClientRect) == null ? void 0 : _a.call(t).left) || 0) + (window.scrollX || window.pageXOffset);
23
+ }
24
+ if (getComputedStyle(c).position !== "static") {
25
+ return t.offsetLeft;
26
+ }
27
+ return t.offsetLeft - c.offsetLeft;
28
+ };
29
+ const scrollElement = (element, container, offset = 0, direction) => {
30
+ var _a, _b;
31
+ if (direction === "row") {
32
+ const elemLeft = horizontalScrollOffset(element, container);
33
+ (_a = container == null ? void 0 : container.scrollTo) == null ? void 0 : _a.call(container, {
34
+ left: elemLeft - offset,
35
+ behavior: "smooth"
36
+ });
37
+ } else {
38
+ const elemTop = verticalScrollOffset(element, container);
39
+ (_b = container == null ? void 0 : container.scrollTo) == null ? void 0 : _b.call(container, {
40
+ top: elemTop - offset,
41
+ behavior: "smooth"
42
+ });
43
+ }
44
+ element.focus({
45
+ preventScroll: true
46
+ });
47
+ };
48
+ const isScrolledToTheBottom = (container) => {
49
+ const containerScrollTop = getScrollTop(container);
50
+ if (container === window) {
51
+ const scrollHeight = document.documentElement && document.documentElement.scrollHeight || document.body.scrollHeight;
52
+ return containerScrollTop + window.innerHeight >= scrollHeight;
53
+ }
54
+ return containerScrollTop + container.offsetHeight >= container.scrollHeight;
55
+ };
56
+ const findFirstVisibleElement = (container, options, offset) => {
57
+ const boundsTop = verticalScrollOffset(container);
58
+ let i = 0;
59
+ for (; i < options.length; i += 1) {
60
+ const ele = document.getElementById(options[i].value);
61
+ if (ele) {
62
+ const elemTop = verticalScrollOffset(ele) - (options[i].offset || offset);
63
+ if (elemTop > boundsTop) {
64
+ break;
65
+ }
66
+ }
67
+ }
68
+ return i - 1;
69
+ };
70
+ exports.findFirstVisibleElement = findFirstVisibleElement;
71
+ exports.getScrollTop = getScrollTop;
72
+ exports.horizontalScrollOffset = horizontalScrollOffset;
73
+ exports.isScrolledToTheBottom = isScrolledToTheBottom;
74
+ exports.scrollElement = scrollElement;
75
+ exports.verticalScrollOffset = verticalScrollOffset;
76
+ //# sourceMappingURL=utils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.cjs","sources":["../../../../src/components/ScrollTo/utils.ts"],"sourcesContent":["import { HvScrollToVerticalOption } from \"./Vertical\";\n\ntype ExtendedWindow = Window & typeof globalThis & HTMLElement;\n\nexport const getScrollTop = (\n c: HTMLElement | (Window & typeof globalThis) = window\n) => {\n if (c === window) {\n return (\n window.scrollY ||\n window.pageYOffset ||\n (document.documentElement && document.documentElement.scrollTop) ||\n document.body.scrollTop\n );\n }\n\n return (c as ExtendedWindow).scrollTop;\n};\n\nexport const verticalScrollOffset = (\n t: HTMLElement | (Window & typeof globalThis),\n c: HTMLElement | (Window & typeof globalThis) = window\n) => {\n if (c === window) {\n return (\n ((t as ExtendedWindow)?.getBoundingClientRect?.().top || 0) +\n (window.scrollY || window.pageYOffset)\n );\n }\n if (getComputedStyle(c as ExtendedWindow).position !== \"static\") {\n return (t as ExtendedWindow).offsetTop;\n }\n\n return (t as ExtendedWindow).offsetTop - (c as ExtendedWindow).offsetTop;\n};\n\nexport const horizontalScrollOffset = (\n t: HTMLElement,\n c: HTMLElement | (Window & typeof globalThis) = window\n) => {\n if (c === window) {\n return (\n (t?.getBoundingClientRect?.().left || 0) +\n (window.scrollX || window.pageXOffset)\n );\n }\n if (getComputedStyle(c as ExtendedWindow).position !== \"static\") {\n return t.offsetLeft;\n }\n\n return t.offsetLeft - (c as ExtendedWindow).offsetLeft;\n};\n\nexport const scrollElement = (\n element: HTMLElement,\n container: HTMLElement | (Window & typeof globalThis),\n offset: number = 0,\n direction?: \"row\" | \"column\"\n) => {\n if (direction === \"row\") {\n const elemLeft = horizontalScrollOffset(element, container);\n container?.scrollTo?.({\n left: elemLeft - offset,\n behavior: \"smooth\",\n });\n } else {\n const elemTop = verticalScrollOffset(element, container);\n container?.scrollTo?.({\n top: elemTop - offset,\n behavior: \"smooth\",\n });\n }\n element.focus({ preventScroll: true });\n};\n\nexport const isScrolledToTheBottom = (\n container: HTMLElement | (Window & typeof globalThis)\n) => {\n const containerScrollTop = getScrollTop(container);\n\n if (container === window) {\n // Accounting for cases where html/body are set to height:100%\n const scrollHeight =\n (document.documentElement && document.documentElement.scrollHeight) ||\n document.body.scrollHeight;\n\n return containerScrollTop + window.innerHeight >= scrollHeight;\n }\n\n return (\n containerScrollTop + (container as ExtendedWindow).offsetHeight >=\n (container as ExtendedWindow).scrollHeight\n );\n};\n\nexport const findFirstVisibleElement = (\n container: HTMLElement | (Window & typeof globalThis),\n options: HvScrollToVerticalOption[],\n offset: number\n) => {\n const boundsTop = verticalScrollOffset(container);\n\n let i = 0;\n\n // Find index of first element whose top is still visible inside the container\n for (; i < options.length; i += 1) {\n const ele = document.getElementById(options[i].value);\n\n if (ele) {\n const elemTop = verticalScrollOffset(ele) - (options[i].offset || offset);\n\n if (elemTop > boundsTop) {\n break;\n }\n }\n }\n\n // Return the previous index, the element that last scrolled past the top\n return i - 1;\n};\n"],"names":["getScrollTop","c","window","scrollY","pageYOffset","document","documentElement","scrollTop","body","verticalScrollOffset","t","getBoundingClientRect","top","getComputedStyle","position","offsetTop","horizontalScrollOffset","left","scrollX","pageXOffset","offsetLeft","scrollElement","element","container","offset","direction","elemLeft","scrollTo","behavior","elemTop","focus","preventScroll","isScrolledToTheBottom","containerScrollTop","scrollHeight","innerHeight","offsetHeight","findFirstVisibleElement","options","boundsTop","i","length","ele","getElementById","value"],"mappings":";;AAIaA,MAAAA,eAAeA,CAC1BC,IAAgDC,WAC7C;AACH,MAAID,MAAMC,QAAQ;AAEdA,WAAAA,OAAOC,WACPD,OAAOE,eACNC,SAASC,mBAAmBD,SAASC,gBAAgBC,aACtDF,SAASG,KAAKD;AAAAA,EAElB;AAEA,SAAQN,EAAqBM;AAC/B;AAEO,MAAME,uBAAuBA,CAClCC,GACAT,IAAgDC,WAC7C;;AACH,MAAID,MAAMC,QAAQ;AAChB,cACIQ,4BAAsBC,0BAAtBD,2BAAgDE,QAAO,MACxDV,OAAOC,WAAWD,OAAOE;AAAAA,EAE9B;AACA,MAAIS,iBAAiBZ,GAAqBa,aAAa,UAAU;AAC/D,WAAQJ,EAAqBK;AAAAA,EAC/B;AAEQL,SAAAA,EAAqBK,YAAad,EAAqBc;AACjE;AAEO,MAAMC,yBAAyBA,CACpCN,GACAT,IAAgDC,WAC7C;;AACH,MAAID,MAAMC,QAAQ;AAChB,cACGQ,4BAAGC,0BAAHD,2BAA6BO,SAAQ,MACrCf,OAAOgB,WAAWhB,OAAOiB;AAAAA,EAE9B;AACA,MAAIN,iBAAiBZ,GAAqBa,aAAa,UAAU;AAC/D,WAAOJ,EAAEU;AAAAA,EACX;AAEOV,SAAAA,EAAEU,aAAcnB,EAAqBmB;AAC9C;AAEO,MAAMC,gBAAgBA,CAC3BC,SACAC,WACAC,SAAiB,GACjBC,cACG;;AACH,MAAIA,cAAc,OAAO;AACjBC,UAAAA,WAAWV,uBAAuBM,SAASC,SAAS;AAC1DA,iDAAWI,aAAXJ,mCAAsB;AAAA,MACpBN,MAAMS,WAAWF;AAAAA,MACjBI,UAAU;AAAA,IAAA;AAAA,EACX,OACI;AACCC,UAAAA,UAAUpB,qBAAqBa,SAASC,SAAS;AACvDA,iDAAWI,aAAXJ,mCAAsB;AAAA,MACpBX,KAAKiB,UAAUL;AAAAA,MACfI,UAAU;AAAA,IAAA;AAAA,EAEd;AACAN,UAAQQ,MAAM;AAAA,IAAEC,eAAe;AAAA,EAAA,CAAM;AACvC;AAEaC,MAAAA,wBAAwBA,CACnCT,cACG;AACGU,QAAAA,qBAAqBjC,aAAauB,SAAS;AAEjD,MAAIA,cAAcrB,QAAQ;AAExB,UAAMgC,eACH7B,SAASC,mBAAmBD,SAASC,gBAAgB4B,gBACtD7B,SAASG,KAAK0B;AAETD,WAAAA,qBAAqB/B,OAAOiC,eAAeD;AAAAA,EACpD;AAGED,SAAAA,qBAAsBV,UAA6Ba,gBAClDb,UAA6BW;AAElC;AAEO,MAAMG,0BAA0BA,CACrCd,WACAe,SACAd,WACG;AACGe,QAAAA,YAAY9B,qBAAqBc,SAAS;AAEhD,MAAIiB,IAAI;AAGR,SAAOA,IAAIF,QAAQG,QAAQD,KAAK,GAAG;AACjC,UAAME,MAAMrC,SAASsC,eAAeL,QAAQE,CAAC,EAAEI,KAAK;AAEpD,QAAIF,KAAK;AACP,YAAMb,UAAUpB,qBAAqBiC,GAAG,KAAKJ,QAAQE,CAAC,EAAEhB,UAAUA;AAElE,UAAIK,UAAUU,WAAW;AACvB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,SAAOC,IAAI;AACb;;;;;;;"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("@emotion/react/jsx-runtime");
4
+ const withTooltip$1 = require("../../hocs/withTooltip.cjs");
5
+ const Typography = require("../Typography/Typography.cjs");
6
+ const hideTooltip = (event) => {
7
+ const isOverFlow = event.target.children.length > 1 ? Array.of(...event.target.children).some((child) => child.scrollWidth > child.clientWidth) : event.target.scrollWidth > event.target.clientWidth;
8
+ return !isOverFlow;
9
+ };
10
+ const withTooltip = (label, componentType, tooltipPosition = "top", hideOnOverflow = true) => {
11
+ const component = (props) => /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, {
12
+ component: componentType,
13
+ ...props,
14
+ children: props.children
15
+ });
16
+ const hideTooltipFunc = hideOnOverflow ? hideTooltip : void 0;
17
+ return withTooltip$1.default(component, label, tooltipPosition, hideTooltipFunc);
18
+ };
19
+ exports.withTooltip = withTooltip;
20
+ //# sourceMappingURL=withTooltip.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withTooltip.cjs","sources":["../../../../src/components/ScrollTo/withTooltip.tsx"],"sourcesContent":["import {\n HvScrollToTooltipPositions,\n HvTypography,\n HvTypographyProps,\n} from \"@core/components\";\nimport { withTooltip as withTooltipUtil } from \"@core/hocs\";\n\nconst hideTooltip = (event: React.MouseEvent<HTMLDivElement>) => {\n const isOverFlow =\n (event.target as HTMLDivElement).children.length > 1\n ? Array.of(...(event.target as HTMLDivElement).children).some(\n (child) => child.scrollWidth > child.clientWidth\n )\n : (event.target as HTMLDivElement).scrollWidth >\n (event.target as HTMLDivElement).clientWidth;\n return !isOverFlow;\n};\n\nexport const withTooltip = (\n label: string,\n componentType: React.ElementType,\n tooltipPosition: HvScrollToTooltipPositions = \"top\",\n hideOnOverflow: boolean = true\n) => {\n const component = (props: HvTypographyProps) => (\n <HvTypography component={componentType} {...props}>\n {props.children}\n </HvTypography>\n );\n\n const hideTooltipFunc = hideOnOverflow ? hideTooltip : undefined;\n\n return withTooltipUtil(component, label, tooltipPosition, hideTooltipFunc);\n};\n"],"names":["hideTooltip","event","isOverFlow","target","children","length","Array","of","some","child","scrollWidth","clientWidth","withTooltip","label","componentType","tooltipPosition","hideOnOverflow","component","props","_jsx","HvTypography","hideTooltipFunc","undefined","withTooltipUtil"],"mappings":";;;;;AAOA,MAAMA,cAAcA,CAACC,UAA4C;AACzDC,QAAAA,aACHD,MAAME,OAA0BC,SAASC,SAAS,IAC/CC,MAAMC,GAAG,GAAIN,MAAME,OAA0BC,QAAQ,EAAEI,KACpDC,CAAAA,UAAUA,MAAMC,cAAcD,MAAME,WAAW,IAEjDV,MAAME,OAA0BO,cAChCT,MAAME,OAA0BQ;AACvC,SAAO,CAACT;AACV;AAEO,MAAMU,cAAcA,CACzBC,OACAC,eACAC,kBAA8C,OAC9CC,iBAA0B,SACvB;AACH,QAAMC,YAAYA,CAACC,UACjBC,2BAAAA,IAACC,WAAAA,cAAY;AAAA,IAACH,WAAWH;AAAAA,IAAc,GAAKI;AAAAA,IAAKd,UAC9Cc,MAAMd;AAAAA,EAAAA,CAEV;AAEKiB,QAAAA,kBAAkBL,iBAAiBhB,cAAcsB;AAEvD,SAAOC,cAAgBN,QAAAA,WAAWJ,OAAOE,iBAAiBM,eAAe;AAC3E;;"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const clsx = require("clsx");
4
+ const isEmpty = require("lodash/isEmpty");
5
+ const timeAgoClasses = require("./timeAgoClasses.cjs");
6
+ const useTimeAgo = require("./useTimeAgo.cjs");
7
+ const jsxRuntime = require("@emotion/react/jsx-runtime");
8
+ const Typography = require("../Typography/Typography.cjs");
9
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
10
+ const isEmpty__default = /* @__PURE__ */ _interopDefault(isEmpty);
11
+ const HvTimeAgo = ({
12
+ classes,
13
+ timestamp,
14
+ locale: localeProp = "en",
15
+ component: Component = Typography.HvTypography,
16
+ emptyElement = "—",
17
+ disableRefresh = false,
18
+ showSeconds = false,
19
+ justText = false,
20
+ ...others
21
+ }) => {
22
+ const locale = isEmpty__default.default(localeProp) ? "en" : localeProp;
23
+ const timeAgo = useTimeAgo.default(timestamp, {
24
+ locale,
25
+ disableRefresh,
26
+ showSeconds
27
+ });
28
+ if (justText && timestamp)
29
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {
30
+ children: timeAgo
31
+ });
32
+ return /* @__PURE__ */ jsxRuntime.jsx(Component, {
33
+ className: clsx.clsx(classes == null ? void 0 : classes.root, timeAgoClasses.default.root),
34
+ ...others,
35
+ children: !timestamp ? emptyElement : timeAgo
36
+ });
37
+ };
38
+ exports.HvTimeAgo = HvTimeAgo;
39
+ //# sourceMappingURL=TimeAgo.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeAgo.cjs","sources":["../../../../src/components/TimeAgo/TimeAgo.tsx"],"sourcesContent":["import { HvTypography } from \"@core/components\";\nimport { HvBaseProps } from \"@core/types\";\nimport { clsx } from \"clsx\";\nimport isEmpty from \"lodash/isEmpty\";\nimport timeAgoClasses, { HvTimeAgoClasses } from \"./timeAgoClasses\";\nimport useTimeAgo from \"./useTimeAgo\";\n\nexport interface HvTimeAgoProps extends HvBaseProps<HTMLElement, { children }> {\n /**\n * The timestamp to format, in seconds or milliseconds.\n * Defaults to `emptyElement` if value is null or 0\n */\n timestamp?: number;\n /**\n * The locale to be used. Should be on of the dayjs supported locales and explicitly imported\n * @see https://day.js.org/docs/en/i18n/i18n\n */\n locale?: string;\n /**\n * The component used for the root node. Either a string to use a HTML element or a component.\n * Defaults to `HvTypography`.\n */\n component?: React.ElementType<React.HTMLAttributes<HTMLElement>>;\n /**\n * The element to render when the timestamp is null or 0\n * Defaults to `—` (Em Dash)\n */\n emptyElement?: React.ReactNode;\n /**\n * Disables periodic date refreshes\n */\n disableRefresh?: boolean;\n /**\n * Whether to show seconds in the rendered time\n */\n showSeconds?: boolean;\n /**\n * Whether the component should render just the string\n * Consider using `useTimeAgo` instead\n */\n justText?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvTimeAgoClasses;\n}\n\n/**\n * The HvTimeAgo component implements the Design System relative time format guidelines.\n */\nexport const HvTimeAgo = ({\n classes,\n timestamp,\n locale: localeProp = \"en\",\n component: Component = HvTypography,\n emptyElement = \"—\",\n disableRefresh = false,\n showSeconds = false,\n justText = false,\n ...others\n}: HvTimeAgoProps) => {\n const locale = isEmpty(localeProp) ? \"en\" : localeProp;\n const timeAgo = useTimeAgo(timestamp, {\n locale,\n disableRefresh,\n showSeconds,\n });\n\n if (justText && timestamp) return <>{timeAgo}</>;\n\n return (\n <Component className={clsx(classes?.root, timeAgoClasses.root)} {...others}>\n {!timestamp ? emptyElement : timeAgo}\n </Component>\n );\n};\n"],"names":["HvTimeAgo","classes","timestamp","locale","localeProp","component","Component","HvTypography","emptyElement","disableRefresh","showSeconds","justText","others","isEmpty","timeAgo","useTimeAgo","_Fragment","children","className","clsx","root","timeAgoClasses"],"mappings":";;;;;;;;;;AAgDO,MAAMA,YAAYA,CAAC;AAAA,EACxBC;AAAAA,EACAC;AAAAA,EACAC,QAAQC,aAAa;AAAA,EACrBC,WAAWC,YAAYC,WAAAA;AAAAA,EACvBC,eAAe;AAAA,EACfC,iBAAiB;AAAA,EACjBC,cAAc;AAAA,EACdC,WAAW;AAAA,EACX,GAAGC;AACW,MAAM;AACpB,QAAMT,SAASU,iBAAAA,QAAQT,UAAU,IAAI,OAAOA;AACtCU,QAAAA,UAAUC,mBAAWb,WAAW;AAAA,IACpCC;AAAAA,IACAM;AAAAA,IACAC;AAAAA,EAAAA,CACD;AAED,MAAIC,YAAYT;AAAW,0CAAOc,WAAAA,UAAA;AAAA,MAAAC,UAAGH;AAAAA,IAAAA,CAAW;AAEhD,wCACGR,WAAS;AAAA,IAACY,WAAWC,KAAAA,KAAKlB,mCAASmB,MAAMC,eAAAA,QAAeD,IAAI;AAAA,IAAE,GAAKR;AAAAA,IAAMK,UACvE,CAACf,YAAYM,eAAeM;AAAAA,EAAAA,CACnB;AAEhB;;"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const dayjs = require("dayjs");
4
+ const calendar = require("dayjs/plugin/calendar");
5
+ const duration = require("dayjs/plugin/duration");
6
+ const localeData = require("dayjs/plugin/localeData");
7
+ const localizedFormat = require("dayjs/plugin/localizedFormat");
8
+ const relativeTime = require("dayjs/plugin/relativeTime");
9
+ const updateLocale = require("dayjs/plugin/updateLocale");
10
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
11
+ const dayjs__default = /* @__PURE__ */ _interopDefault(dayjs);
12
+ const calendar__default = /* @__PURE__ */ _interopDefault(calendar);
13
+ const duration__default = /* @__PURE__ */ _interopDefault(duration);
14
+ const localeData__default = /* @__PURE__ */ _interopDefault(localeData);
15
+ const localizedFormat__default = /* @__PURE__ */ _interopDefault(localizedFormat);
16
+ const relativeTime__default = /* @__PURE__ */ _interopDefault(relativeTime);
17
+ const updateLocale__default = /* @__PURE__ */ _interopDefault(updateLocale);
18
+ const thresholds = [{
19
+ l: "s",
20
+ r: 119,
21
+ d: "second"
22
+ }, {
23
+ l: "m",
24
+ r: 1
25
+ }, {
26
+ l: "mm",
27
+ r: 59,
28
+ d: "minute"
29
+ }, {
30
+ l: "h",
31
+ r: 1
32
+ }, {
33
+ l: "hh",
34
+ r: 23,
35
+ d: "hour"
36
+ }, {
37
+ l: "d",
38
+ r: 1
39
+ }, {
40
+ l: "dd",
41
+ r: 29,
42
+ d: "day"
43
+ }, {
44
+ l: "M",
45
+ r: 1
46
+ }, {
47
+ l: "MM",
48
+ r: 11,
49
+ d: "month"
50
+ }, {
51
+ l: "y",
52
+ r: 17
53
+ }, {
54
+ l: "yy",
55
+ d: "year"
56
+ }];
57
+ dayjs__default.default.extend(localeData__default.default);
58
+ dayjs__default.default.extend(duration__default.default);
59
+ dayjs__default.default.extend(calendar__default.default);
60
+ dayjs__default.default.extend(localizedFormat__default.default);
61
+ dayjs__default.default.extend(relativeTime__default.default, {
62
+ thresholds
63
+ });
64
+ dayjs__default.default.extend(updateLocale__default.default);
65
+ const secondsUntilNextDay = (date = /* @__PURE__ */ new Date()) => {
66
+ const midnight = new Date(date.getTime());
67
+ midnight.setDate(midnight.getDate() + 1);
68
+ midnight.setHours(0);
69
+ midnight.setMinutes(0);
70
+ midnight.setSeconds(0);
71
+ midnight.setMilliseconds(0);
72
+ return (midnight.getTime() - date.getTime()) / 1e3;
73
+ };
74
+ const secondsUntilNextWeek = (date = /* @__PURE__ */ new Date()) => {
75
+ const firstMonthDayOfWeek = date.getDate() - date.getDay();
76
+ const firstMonthDayOfNextWeek = firstMonthDayOfWeek + 7;
77
+ const firstDayNextWeek = new Date(date.getTime());
78
+ firstDayNextWeek.setDate(firstMonthDayOfNextWeek);
79
+ firstDayNextWeek.setHours(0);
80
+ firstDayNextWeek.setMinutes(0);
81
+ firstDayNextWeek.setSeconds(0);
82
+ firstDayNextWeek.setMilliseconds(0);
83
+ return (firstDayNextWeek.getTime() - date.getTime()) / 1e3;
84
+ };
85
+ const formatTimeAgo = (date, locale, showSeconds = false, referenceDate = /* @__PURE__ */ new Date()) => {
86
+ const dayReferenceDate = dayjs__default.default(referenceDate);
87
+ const dayDate = dayjs__default.default(date).locale(locale);
88
+ const dayDiffSeconds = dayReferenceDate.diff(dayDate, "second");
89
+ const formatUseSeconds = showSeconds ? "LTS" : "LT";
90
+ if (date.getTime() > referenceDate.getTime()) {
91
+ return {
92
+ timeAgo: dayDate.format(`L ${formatUseSeconds}`),
93
+ delay: (date.getTime() - referenceDate.getTime()) / 1e3
94
+ };
95
+ }
96
+ if (dayDiffSeconds < 120) {
97
+ return {
98
+ timeAgo: dayjs__default.default.duration(dayDiffSeconds, "second").locale(locale).humanize(),
99
+ delay: 120 - dayDiffSeconds
100
+ };
101
+ }
102
+ const dayDiffMinutes = dayReferenceDate.diff(dayDate, "minute");
103
+ if (dayDiffMinutes < 60) {
104
+ return {
105
+ timeAgo: dayjs__default.default.duration(-dayDiffMinutes, "minute").locale(locale).humanize(true),
106
+ delay: 60 * (dayDiffMinutes + 1) - dayDiffSeconds
107
+ };
108
+ }
109
+ if (dayReferenceDate.isSame(dayDate, "day")) {
110
+ return {
111
+ timeAgo: `${dayDate.calendar(dayReferenceDate)}`,
112
+ delay: secondsUntilNextDay(referenceDate)
113
+ };
114
+ }
115
+ if (dayReferenceDate.subtract(1, "day").isSame(dayDate, "day")) {
116
+ return {
117
+ timeAgo: `${dayDate.calendar(dayReferenceDate)}`,
118
+ delay: secondsUntilNextDay(referenceDate)
119
+ };
120
+ }
121
+ if (dayDate.isSame(dayReferenceDate, "week")) {
122
+ return {
123
+ timeAgo: dayDate.format(`ddd, ${formatUseSeconds}`),
124
+ delay: secondsUntilNextWeek(date)
125
+ };
126
+ }
127
+ return {
128
+ timeAgo: dayDate.format(`L ${formatUseSeconds}`),
129
+ delay: 0
130
+ };
131
+ };
132
+ exports.formatTimeAgo = formatTimeAgo;
133
+ exports.secondsUntilNextDay = secondsUntilNextDay;
134
+ //# sourceMappingURL=formatUtils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatUtils.cjs","sources":["../../../../src/components/TimeAgo/formatUtils.ts"],"sourcesContent":["import dayjs from \"dayjs\";\nimport calendar from \"dayjs/plugin/calendar\";\nimport duration from \"dayjs/plugin/duration\";\nimport localeData from \"dayjs/plugin/localeData\";\nimport localizedFormat from \"dayjs/plugin/localizedFormat\";\nimport relativeTime from \"dayjs/plugin/relativeTime\";\nimport updateLocale from \"dayjs/plugin/updateLocale\";\n\n/**\n * Relative time thresholds defined by\n * {@link https://xd.adobe.com/view/1b7df235-5cf8-4b51-a2f0-0be1bb591c55-4e2e/ Design System}\n *\n * Implementation using day.js {@link https://day.js.org/docs/en/customization/relative-time relativeTime}\n */\nconst thresholds = [\n { l: \"s\", r: 119, d: \"second\" },\n { l: \"m\", r: 1 },\n { l: \"mm\", r: 59, d: \"minute\" },\n { l: \"h\", r: 1 },\n { l: \"hh\", r: 23, d: \"hour\" },\n { l: \"d\", r: 1 },\n { l: \"dd\", r: 29, d: \"day\" },\n { l: \"M\", r: 1 },\n { l: \"MM\", r: 11, d: \"month\" },\n { l: \"y\", r: 17 },\n { l: \"yy\", d: \"year\" },\n];\n\ndayjs.extend(localeData);\ndayjs.extend(duration);\ndayjs.extend(calendar);\ndayjs.extend(localizedFormat);\ndayjs.extend(relativeTime, { thresholds });\ndayjs.extend(updateLocale);\n\nexport const secondsUntilNextDay = (date = new Date()) => {\n const midnight = new Date(date.getTime());\n\n midnight.setDate(midnight.getDate() + 1);\n midnight.setHours(0);\n midnight.setMinutes(0);\n midnight.setSeconds(0);\n midnight.setMilliseconds(0);\n\n return (midnight.getTime() - date.getTime()) / 1000;\n};\n\nconst secondsUntilNextWeek = (date = new Date()) => {\n const firstMonthDayOfWeek = date.getDate() - date.getDay();\n const firstMonthDayOfNextWeek = firstMonthDayOfWeek + 7; // auto roll over to next month if needed\n\n const firstDayNextWeek = new Date(date.getTime());\n\n firstDayNextWeek.setDate(firstMonthDayOfNextWeek);\n firstDayNextWeek.setHours(0);\n firstDayNextWeek.setMinutes(0);\n firstDayNextWeek.setSeconds(0);\n firstDayNextWeek.setMilliseconds(0);\n\n return (firstDayNextWeek.getTime() - date.getTime()) / 1000;\n};\n\n/**\n * @typedef {Object} TimeAgo\n * @property {string} timeAgo - the formatted date using the \"time ago format\"\n * @property {number} delay - the time until the date needs to be updated\n */\n\n/**\n * Formats a date to the a relative time format using dayjs.\n *\n * @param {Date} date - date to format.\n * @param {String} locale - locale to use.\n * @param {Boolean} [showSeconds=false] - if seconds should be part of the result.\n * @param {Date} referenceDate - reference date to use when formatting (defaults to current date).\n *\n * @return {TimeAgo} the formatted date using the \"time ago format\" and the time until it needs to be updated\n */\nexport const formatTimeAgo = (\n date,\n locale,\n showSeconds = false,\n referenceDate = new Date()\n) => {\n const dayReferenceDate = dayjs(referenceDate);\n const dayDate = dayjs(date).locale(locale);\n\n const dayDiffSeconds = dayReferenceDate.diff(dayDate, \"second\");\n\n const formatUseSeconds = showSeconds ? \"LTS\" : \"LT\";\n\n // check if the date is after the reference date\n if (date.getTime() > referenceDate.getTime()) {\n return {\n timeAgo: dayDate.format(`L ${formatUseSeconds}`),\n delay: (date.getTime() - referenceDate.getTime()) / 1000,\n };\n }\n\n // just now, until the 2 minutes\n if (dayDiffSeconds < 120) {\n return {\n timeAgo: dayjs\n .duration(dayDiffSeconds, \"second\")\n .locale(locale)\n .humanize(),\n delay: 120 - dayDiffSeconds,\n };\n }\n\n // ago in minutes, until the 1 hour mark\n const dayDiffMinutes = dayReferenceDate.diff(dayDate, \"minute\");\n\n if (dayDiffMinutes < 60) {\n return {\n timeAgo: dayjs\n .duration(-dayDiffMinutes, \"minute\")\n .locale(locale)\n .humanize(true),\n delay: 60 * (dayDiffMinutes + 1) - dayDiffSeconds,\n };\n }\n\n // formatted date with text description for today\n if (dayReferenceDate.isSame(dayDate, \"day\")) {\n return {\n timeAgo: `${dayDate.calendar(dayReferenceDate)}`,\n delay: secondsUntilNextDay(referenceDate),\n };\n }\n\n // formatted date with text description for yesterday\n if (dayReferenceDate.subtract(1, \"day\").isSame(dayDate, \"day\")) {\n return {\n timeAgo: `${dayDate.calendar(dayReferenceDate)}`,\n delay: secondsUntilNextDay(referenceDate),\n };\n }\n\n // formatted date with week during the current week\n if (dayDate.isSame(dayReferenceDate, \"week\")) {\n return {\n timeAgo: dayDate.format(`ddd, ${formatUseSeconds}`),\n delay: secondsUntilNextWeek(date),\n };\n }\n\n // formatted without special gimmicks\n return {\n timeAgo: dayDate.format(`L ${formatUseSeconds}`),\n delay: 0,\n };\n};\n"],"names":["thresholds","l","r","d","dayjs","extend","localeData","duration","calendar","localizedFormat","relativeTime","updateLocale","secondsUntilNextDay","date","Date","midnight","getTime","setDate","getDate","setHours","setMinutes","setSeconds","setMilliseconds","secondsUntilNextWeek","firstMonthDayOfWeek","getDay","firstMonthDayOfNextWeek","firstDayNextWeek","formatTimeAgo","locale","showSeconds","referenceDate","dayReferenceDate","dayDate","dayDiffSeconds","diff","formatUseSeconds","timeAgo","format","delay","humanize","dayDiffMinutes","isSame","subtract"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const classes = require("../../utils/classes.cjs");
4
+ const classKeys = ["root"];
5
+ const timeAgoClasses = classes.getClasses(classKeys, "HvTimeAgo");
6
+ const timeAgoClasses$1 = timeAgoClasses;
7
+ exports.default = timeAgoClasses$1;
8
+ //# sourceMappingURL=timeAgoClasses.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeAgoClasses.cjs","sources":["../../../../src/components/TimeAgo/timeAgoClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvTimeAgoClasses {\n root?: string;\n}\n\nconst classKeys: string[] = [\"root\"];\n\nconst timeAgoClasses = getClasses<HvTimeAgoClasses>(classKeys, \"HvTimeAgo\");\n\nexport default timeAgoClasses;\n"],"names":["classKeys","timeAgoClasses","getClasses"],"mappings":";;;AAMA,MAAMA,YAAsB,CAAC,MAAM;AAEnC,MAAMC,iBAAiBC,QAA6BF,WAAAA,WAAW,WAAW;AAE1E,MAAA,mBAAeC;;"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const React = require("react");
4
+ const useTimeout = require("./useTimeout.cjs");
5
+ const formatUtils = require("./formatUtils.cjs");
6
+ const fmt = (timestamp, locale, showSeconds) => {
7
+ const timestampMs = String(timestamp).length > 11 ? timestamp : timestamp * 1e3;
8
+ return formatUtils.formatTimeAgo(new Date(timestampMs), locale, showSeconds);
9
+ };
10
+ function useTimeAgo(timestamp, options) {
11
+ const {
12
+ locale,
13
+ disableRefresh = false,
14
+ showSeconds = false
15
+ } = options;
16
+ const [timeAgo, setTimeAgo] = React.useState(fmt(timestamp, locale, showSeconds));
17
+ const refreshTime = disableRefresh ? 0 : timeAgo.delay * 1e3;
18
+ React.useEffect(() => {
19
+ const newTimeAgo = fmt(timestamp, locale, showSeconds);
20
+ setTimeAgo(newTimeAgo);
21
+ }, [timestamp, locale, showSeconds]);
22
+ useTimeout.default(() => {
23
+ const newTimeAgo = fmt(timestamp, locale, showSeconds);
24
+ setTimeAgo(newTimeAgo);
25
+ }, refreshTime);
26
+ return timeAgo.timeAgo;
27
+ }
28
+ exports.default = useTimeAgo;
29
+ //# sourceMappingURL=useTimeAgo.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTimeAgo.cjs","sources":["../../../../src/components/TimeAgo/useTimeAgo.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport useTimeout from \"./useTimeout\";\nimport { formatTimeAgo } from \"./formatUtils\";\n\n/**\n * Calls `formatTimeAgo` with timestamp conversion\n */\nconst fmt = (timestamp, locale, showSeconds) => {\n const timestampMs =\n String(timestamp).length > 11 ? timestamp : timestamp * 1000;\n return formatTimeAgo(new Date(timestampMs), locale, showSeconds);\n};\n\nexport default function useTimeAgo(timestamp, options) {\n const { locale, disableRefresh = false, showSeconds = false } = options;\n const [timeAgo, setTimeAgo] = useState(fmt(timestamp, locale, showSeconds));\n const refreshTime = disableRefresh ? 0 : timeAgo.delay * 1000;\n\n useEffect(() => {\n const newTimeAgo = fmt(timestamp, locale, showSeconds);\n setTimeAgo(newTimeAgo);\n }, [timestamp, locale, showSeconds]);\n\n useTimeout(() => {\n const newTimeAgo = fmt(timestamp, locale, showSeconds);\n setTimeAgo(newTimeAgo);\n }, refreshTime);\n\n return timeAgo.timeAgo;\n}\n"],"names":["fmt","timestamp","locale","showSeconds","timestampMs","String","length","formatTimeAgo","Date","useTimeAgo","options","disableRefresh","timeAgo","setTimeAgo","useState","refreshTime","delay","useEffect","newTimeAgo","useTimeout"],"mappings":";;;;;AAOA,MAAMA,MAAMA,CAACC,WAAWC,QAAQC,gBAAgB;AAC9C,QAAMC,cACJC,OAAOJ,SAAS,EAAEK,SAAS,KAAKL,YAAYA,YAAY;AAC1D,SAAOM,YAAAA,cAAc,IAAIC,KAAKJ,WAAW,GAAGF,QAAQC,WAAW;AACjE;AAEwBM,SAAAA,WAAWR,WAAWS,SAAS;AAC/C,QAAA;AAAA,IAAER;AAAAA,IAAQS,iBAAiB;AAAA,IAAOR,cAAc;AAAA,EAAUO,IAAAA;AAC1D,QAAA,CAACE,SAASC,UAAU,IAAIC,eAASd,IAAIC,WAAWC,QAAQC,WAAW,CAAC;AAC1E,QAAMY,cAAcJ,iBAAiB,IAAIC,QAAQI,QAAQ;AAEzDC,QAAAA,UAAU,MAAM;AACd,UAAMC,aAAalB,IAAIC,WAAWC,QAAQC,WAAW;AACrDU,eAAWK,UAAU;AAAA,EACpB,GAAA,CAACjB,WAAWC,QAAQC,WAAW,CAAC;AAEnCgB,aAAAA,QAAW,MAAM;AACf,UAAMD,aAAalB,IAAIC,WAAWC,QAAQC,WAAW;AACrDU,eAAWK,UAAU;AAAA,KACpBH,WAAW;AAEd,SAAOH,QAAQA;AACjB;;"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const React = require("react");
4
+ function useTimeout(callback, delay) {
5
+ const savedCallback = React.useRef(callback);
6
+ React.useEffect(() => {
7
+ savedCallback.current = callback;
8
+ }, [callback]);
9
+ React.useEffect(() => {
10
+ if (!delay)
11
+ return void 0;
12
+ const id = setTimeout(() => savedCallback.current(), delay);
13
+ return () => clearTimeout(id);
14
+ }, [delay]);
15
+ }
16
+ exports.default = useTimeout;
17
+ //# sourceMappingURL=useTimeout.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTimeout.cjs","sources":["../../../../src/components/TimeAgo/useTimeout.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\n\nexport default function useTimeout(callback, delay) {\n const savedCallback = useRef(callback);\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n if (!delay) return undefined;\n\n const id = setTimeout(() => savedCallback.current(), delay);\n return () => clearTimeout(id);\n }, [delay]);\n}\n"],"names":["useTimeout","callback","delay","savedCallback","useRef","useEffect","current","undefined","id","setTimeout","clearTimeout"],"mappings":";;;AAEwBA,SAAAA,WAAWC,UAAUC,OAAO;AAC5CC,QAAAA,gBAAgBC,aAAOH,QAAQ;AAErCI,QAAAA,UAAU,MAAM;AACdF,kBAAcG,UAAUL;AAAAA,EAAAA,GACvB,CAACA,QAAQ,CAAC;AAEbI,QAAAA,UAAU,MAAM;AACd,QAAI,CAACH;AAAcK,aAAAA;AAEnB,UAAMC,KAAKC,WAAW,MAAMN,cAAcG,QAAAA,GAAWJ,KAAK;AACnD,WAAA,MAAMQ,aAAaF,EAAE;AAAA,EAAA,GAC3B,CAACN,KAAK,CAAC;AACZ;;"}
@@ -17,8 +17,8 @@ const withTooltip = (Component, label = "", placement, hideTooltip, tooltipProps
17
17
  const title = /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, {
18
18
  children: label
19
19
  });
20
- const handleMouseEnter = (evt) => {
21
- const isHidden = hideTooltip == null ? void 0 : hideTooltip(evt);
20
+ const handleMouseEnter = (event) => {
21
+ const isHidden = hideTooltip == null ? void 0 : hideTooltip(event);
22
22
  setIsHoverDisabled(isHidden);
23
23
  setOpen(!isHidden);
24
24
  };
@@ -47,6 +47,6 @@ const withTooltip = (Component, label = "", placement, hideTooltip, tooltipProps
47
47
  })
48
48
  });
49
49
  };
50
- const withTooltip$1 = withTooltip;
51
- exports.default = withTooltip$1;
50
+ const withTooltipUtil = withTooltip;
51
+ exports.default = withTooltipUtil;
52
52
  //# sourceMappingURL=withTooltip.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"withTooltip.cjs","sources":["../../../src/hocs/withTooltip.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { HvTypography, HvTooltip } from \"@core/components\";\n\nconst styles = {\n truncate: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n};\n\nconst withTooltip =\n (\n Component,\n // eslint-disable-next-line @typescript-eslint/default-param-last\n label = \"\",\n placement,\n hideTooltip,\n tooltipProps,\n tooltipContainerProps\n ) =>\n (props) => {\n const [isHoverDisabled, setIsHoverDisabled] = useState(false);\n const [open, setOpen] = useState(false);\n\n const title = <HvTypography>{label}</HvTypography>;\n\n const handleMouseEnter = (evt) => {\n const isHidden = hideTooltip?.(evt);\n setIsHoverDisabled(isHidden);\n setOpen(!isHidden);\n };\n\n const handleMouseLeave = () => {\n setIsHoverDisabled(false);\n setOpen(false);\n };\n\n return (\n <HvTooltip\n style={{ ...styles.truncate }}\n disableHoverListener={isHoverDisabled}\n disableFocusListener\n disableTouchListener\n title={title}\n open={open}\n placement={placement}\n {...tooltipProps}\n >\n <div\n {...tooltipContainerProps}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <Component {...props} />\n </div>\n </HvTooltip>\n );\n };\n\nexport default withTooltip;\n"],"names":["styles","truncate","overflow","textOverflow","whiteSpace","withTooltip","Component","label","placement","hideTooltip","tooltipProps","tooltipContainerProps","props","isHoverDisabled","setIsHoverDisabled","useState","open","setOpen","title","HvTypography","children","handleMouseEnter","evt","isHidden","handleMouseLeave","HvTooltip","style","disableHoverListener","disableFocusListener","disableTouchListener","onMouseEnter","onMouseLeave"],"mappings":";;;;;;AAGA,MAAMA,SAAS;AAAA,EACbC,UAAU;AAAA,IACRC,UAAU;AAAA,IACVC,cAAc;AAAA,IACdC,YAAY;AAAA,EACd;AACF;AAEA,MAAMC,cACJA,CACEC,WAEAC,QAAQ,IACRC,WACAC,aACAC,cACAC,0BAEDC,CAAU,UAAA;AACT,QAAM,CAACC,iBAAiBC,kBAAkB,IAAIC,eAAS,KAAK;AAC5D,QAAM,CAACC,MAAMC,OAAO,IAAIF,eAAS,KAAK;AAEhCG,QAAAA,uCAASC,yBAAY;AAAA,IAAAC,UAAEb;AAAAA,EAAAA,CAAqB;AAElD,QAAMc,mBAAoBC,CAAQ,QAAA;AAC1BC,UAAAA,WAAWd,2CAAca;AAC/BR,uBAAmBS,QAAQ;AAC3BN,YAAQ,CAACM,QAAQ;AAAA,EAAA;AAGnB,QAAMC,mBAAmBA,MAAM;AAC7BV,uBAAmB,KAAK;AACxBG,YAAQ,KAAK;AAAA,EAAA;AAGf,wCACGQ,QAAAA,WAAS;AAAA,IACRC,OAAO;AAAA,MAAE,GAAG1B,OAAOC;AAAAA,IAAS;AAAA,IAC5B0B,sBAAsBd;AAAAA,IACtBe,sBAAoB;AAAA,IACpBC,sBAAoB;AAAA,IACpBX;AAAAA,IACAF;AAAAA,IACAR;AAAAA,IAAqB,GACjBE;AAAAA,IAAYU,yCAEhB,OAAA;AAAA,MAAA,GACMT;AAAAA,MACJmB,cAAcT;AAAAA,MACdU,cAAcP;AAAAA,MAAiBJ,yCAE9Bd,WAAS;AAAA,QAAA,GAAKM;AAAAA,MAAAA,CAAK;AAAA,IAAA,CAAI;AAAA,EAAA,CAEhB;AAEhB;AAEF,MAAA,gBAAeP;;"}
1
+ {"version":3,"file":"withTooltip.cjs","sources":["../../../src/hocs/withTooltip.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport {\n HvTypography,\n HvTooltip,\n HvTooltipPlacementType,\n HvTooltipProps,\n} from \"@core/components\";\nimport { HvBaseProps } from \"@core/types\";\n\nconst styles: { truncate: React.CSSProperties } = {\n truncate: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n};\n\nconst withTooltip =\n (\n Component: React.FunctionComponent,\n // eslint-disable-next-line @typescript-eslint/default-param-last\n label = \"\",\n placement: HvTooltipPlacementType,\n hideTooltip?: (event: React.MouseEvent<HTMLDivElement>) => boolean,\n tooltipProps?: HvTooltipProps,\n tooltipContainerProps?: HvBaseProps\n ) =>\n (props) => {\n const [isHoverDisabled, setIsHoverDisabled] = useState<boolean | undefined>(\n false\n );\n const [open, setOpen] = useState<boolean>(false);\n\n const title = <HvTypography>{label}</HvTypography>;\n\n const handleMouseEnter = (event: React.MouseEvent<HTMLDivElement>) => {\n const isHidden = hideTooltip?.(event);\n setIsHoverDisabled(isHidden);\n setOpen(!isHidden);\n };\n\n const handleMouseLeave = () => {\n setIsHoverDisabled(false);\n setOpen(false);\n };\n\n return (\n <HvTooltip\n style={{ ...styles.truncate }}\n disableHoverListener={isHoverDisabled}\n disableFocusListener\n disableTouchListener\n title={title}\n open={open}\n placement={placement}\n {...tooltipProps}\n >\n <div\n {...tooltipContainerProps}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <Component {...props} />\n </div>\n </HvTooltip>\n );\n };\n\nexport default withTooltip;\n"],"names":["styles","truncate","overflow","textOverflow","whiteSpace","withTooltip","Component","label","placement","hideTooltip","tooltipProps","tooltipContainerProps","props","isHoverDisabled","setIsHoverDisabled","useState","open","setOpen","title","HvTypography","children","handleMouseEnter","event","isHidden","handleMouseLeave","HvTooltip","style","disableHoverListener","disableFocusListener","disableTouchListener","onMouseEnter","onMouseLeave"],"mappings":";;;;;;AASA,MAAMA,SAA4C;AAAA,EAChDC,UAAU;AAAA,IACRC,UAAU;AAAA,IACVC,cAAc;AAAA,IACdC,YAAY;AAAA,EACd;AACF;AAEA,MAAMC,cACJA,CACEC,WAEAC,QAAQ,IACRC,WACAC,aACAC,cACAC,0BAEDC,CAAU,UAAA;AACT,QAAM,CAACC,iBAAiBC,kBAAkB,IAAIC,eAC5C,KAAK;AAEP,QAAM,CAACC,MAAMC,OAAO,IAAIF,eAAkB,KAAK;AAEzCG,QAAAA,uCAASC,yBAAY;AAAA,IAAAC,UAAEb;AAAAA,EAAAA,CAAqB;AAE5Cc,QAAAA,mBAAmBA,CAACC,UAA4C;AAC9DC,UAAAA,WAAWd,2CAAca;AAC/BR,uBAAmBS,QAAQ;AAC3BN,YAAQ,CAACM,QAAQ;AAAA,EAAA;AAGnB,QAAMC,mBAAmBA,MAAM;AAC7BV,uBAAmB,KAAK;AACxBG,YAAQ,KAAK;AAAA,EAAA;AAGf,wCACGQ,QAAAA,WAAS;AAAA,IACRC,OAAO;AAAA,MAAE,GAAG1B,OAAOC;AAAAA,IAAS;AAAA,IAC5B0B,sBAAsBd;AAAAA,IACtBe,sBAAoB;AAAA,IACpBC,sBAAoB;AAAA,IACpBX;AAAAA,IACAF;AAAAA,IACAR;AAAAA,IAAqB,GACjBE;AAAAA,IAAYU,yCAEhB,OAAA;AAAA,MAAA,GACMT;AAAAA,MACJmB,cAAcT;AAAAA,MACdU,cAAcP;AAAAA,MAAiBJ,yCAE9Bd,WAAS;AAAA,QAAA,GAAKM;AAAAA,MAAAA,CAAK;AAAA,IAAA,CAAI;AAAA,EAAA,CAEhB;AAEhB;AAEF,MAAA,kBAAeP;;"}
@@ -233,6 +233,17 @@ const Slider = require("./components/Slider/Slider.cjs");
233
233
  const filterGroupClasses = require("./components/FilterGroup/filterGroupClasses.cjs");
234
234
  const FilterGroup = require("./components/FilterGroup/FilterGroup.cjs");
235
235
  const DatePicker = require("./components/DatePicker/DatePicker.cjs");
236
+ const scrollToVerticalClasses = require("./components/ScrollTo/Vertical/scrollToVerticalClasses.cjs");
237
+ const verticalScrollListItemClasses = require("./components/ScrollTo/Vertical/VerticalScrollListItem/verticalScrollListItemClasses.cjs");
238
+ const ScrollToVertical = require("./components/ScrollTo/Vertical/ScrollToVertical.cjs");
239
+ const scrollToHorizontalClasses = require("./components/ScrollTo/Horizontal/scrollToHorizontalClasses.cjs");
240
+ const horizontalScrollListItemClasses = require("./components/ScrollTo/Horizontal/HorizontalScrollListItem/horizontalScrollListItemClasses.cjs");
241
+ const ScrollToHorizontal = require("./components/ScrollTo/Horizontal/ScrollToHorizontal.cjs");
242
+ const useScrollTo = require("./components/ScrollTo/useScrollTo.cjs");
243
+ const inlineEditorClasses = require("./components/InlineEditor/inlineEditorClasses.cjs");
244
+ const InlineEditor = require("./components/InlineEditor/InlineEditor.cjs");
245
+ const timeAgoClasses = require("./components/TimeAgo/timeAgoClasses.cjs");
246
+ const TimeAgo = require("./components/TimeAgo/TimeAgo.cjs");
236
247
  const useUniqueId = require("./hooks/useUniqueId.cjs");
237
248
  const useIsMounted = require("./hooks/useIsMounted.cjs");
238
249
  const useClickOutside = require("./hooks/useClickOutside.cjs");
@@ -557,6 +568,17 @@ exports.HvSlider = Slider.HvSlider;
557
568
  exports.filterGroupClasses = filterGroupClasses.default;
558
569
  exports.HvFilterGroup = FilterGroup.HvFilterGroup;
559
570
  exports.HvDatePicker = DatePicker.HvDatePicker;
571
+ exports.scrollToVerticalClasses = scrollToVerticalClasses.default;
572
+ exports.verticalScrollListItemClasses = verticalScrollListItemClasses.default;
573
+ exports.HvScrollToVertical = ScrollToVertical.HvScrollToVertical;
574
+ exports.scrollToHorizontalClasses = scrollToHorizontalClasses.default;
575
+ exports.horizontalScrollListItemClasses = horizontalScrollListItemClasses.default;
576
+ exports.HvScrollToHorizontal = ScrollToHorizontal.HvScrollToHorizontal;
577
+ exports.useScrollTo = useScrollTo.useScrollTo;
578
+ exports.inlineEditorClasses = inlineEditorClasses.default;
579
+ exports.HvInlineEditor = InlineEditor.HvInlineEditor;
580
+ exports.timeAgoClasses = timeAgoClasses.default;
581
+ exports.HvTimeAgo = TimeAgo.HvTimeAgo;
560
582
  exports.useUniqueId = useUniqueId.default;
561
583
  exports.useIsMounted = useIsMounted.default;
562
584
  exports.useClickOutside = useClickOutside.useClickOutside;
@@ -586,6 +608,7 @@ exports.isKeypress = keyCheck.isKeypress;
586
608
  exports.decreaseSize = sizes.decreaseSize;
587
609
  exports.increaseSize = sizes.increaseSize;
588
610
  exports.createTheme = theme.createTheme;
611
+ exports.getVarValue = theme.getVarValue;
589
612
  exports.processThemes = theme.processThemes;
590
613
  exports.setElementAttrs = theme.setElementAttrs;
591
614
  exports.setId = setId.setId;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}