@helpdice/theme 1.0.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 (134) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +37 -0
  3. package/dist/css-baseline/css-baseline.d.ts +9 -0
  4. package/dist/css-baseline/index.d.ts +1 -0
  5. package/dist/css-baseline/index.js +868 -0
  6. package/dist/index.d.ts +12 -0
  7. package/dist/index.js +1516 -0
  8. package/dist/shared/css-transition.d.ts +13 -0
  9. package/dist/styled-jsx.cjs.js +748 -0
  10. package/dist/themes/index.d.ts +4 -0
  11. package/dist/themes/index.js +299 -0
  12. package/dist/themes/presets/dark.d.ts +8 -0
  13. package/dist/themes/presets/default.d.ts +8 -0
  14. package/dist/themes/presets/index.d.ts +90 -0
  15. package/dist/themes/presets/shared.d.ts +4 -0
  16. package/dist/themes/themes.d.ts +18 -0
  17. package/dist/ui-provider/index.d.ts +3 -0
  18. package/dist/ui-provider/index.js +1425 -0
  19. package/dist/ui-provider/theme-provider.d.ts +8 -0
  20. package/dist/ui-provider/ui-provider.d.ts +8 -0
  21. package/dist/use-all-themes/all-themes-context.d.ts +7 -0
  22. package/dist/use-all-themes/index.d.ts +3 -0
  23. package/dist/use-all-themes/index.js +311 -0
  24. package/dist/use-classes/index.d.ts +2 -0
  25. package/dist/use-classes/index.js +48 -0
  26. package/dist/use-classes/use-classes.d.ts +4 -0
  27. package/dist/use-current-state/index.d.ts +2 -0
  28. package/dist/use-current-state/index.js +72 -0
  29. package/dist/use-current-state/use-current-state.d.ts +4 -0
  30. package/dist/use-media-query/index.js +444 -0
  31. package/dist/use-theme/index.d.ts +2 -0
  32. package/dist/use-theme/index.js +309 -0
  33. package/dist/use-theme/theme-context.d.ts +4 -0
  34. package/dist/use-toasts/helpers.d.ts +18 -0
  35. package/dist/use-toasts/index.js +204 -0
  36. package/dist/use-toasts/toast-container.d.ts +3 -0
  37. package/dist/use-toasts/toast-item.d.ts +8 -0
  38. package/dist/use-toasts/use-toast.d.ts +40 -0
  39. package/dist/utils/collections.d.ts +15 -0
  40. package/dist/utils/layouts.d.ts +20 -0
  41. package/dist/utils/prop-types.d.ts +19 -0
  42. package/dist/utils/types.d.ts +3 -0
  43. package/dist/utils/use-current-state.d.ts +2 -0
  44. package/dist/utils/use-hd-ui-context.d.ts +16 -0
  45. package/dist/utils/use-portal.d.ts +2 -0
  46. package/dist/utils/use-ssr.d.ts +6 -0
  47. package/esm/css-baseline/css-baseline.d.ts +9 -0
  48. package/esm/css-baseline/css-baseline.js +23 -0
  49. package/esm/css-baseline/index.d.ts +1 -0
  50. package/esm/css-baseline/index.js +2 -0
  51. package/esm/index.d.ts +12 -0
  52. package/esm/index.js +11 -0
  53. package/esm/shared/backdrop.js +66 -0
  54. package/esm/shared/css-transition.d.ts +13 -0
  55. package/esm/shared/css-transition.js +65 -0
  56. package/esm/shared/dropdown.js +99 -0
  57. package/esm/shared/ellipsis.js +13 -0
  58. package/esm/shared/expand.js +86 -0
  59. package/esm/shared/highlight.js +46 -0
  60. package/esm/styled-jsx-server.es.js +5 -0
  61. package/esm/styled-jsx.es.js +737 -0
  62. package/esm/themes/index.d.ts +4 -0
  63. package/esm/themes/index.js +2 -0
  64. package/esm/themes/presets/dark.d.ts +8 -0
  65. package/esm/themes/presets/dark.js +64 -0
  66. package/esm/themes/presets/default.d.ts +8 -0
  67. package/esm/themes/presets/default.js +64 -0
  68. package/esm/themes/presets/index.d.ts +90 -0
  69. package/esm/themes/presets/index.js +1 -0
  70. package/esm/themes/presets/shared.d.ts +4 -0
  71. package/esm/themes/presets/shared.js +42 -0
  72. package/esm/themes/themes.d.ts +18 -0
  73. package/esm/themes/themes.js +77 -0
  74. package/esm/ui-provider/index.d.ts +3 -0
  75. package/esm/ui-provider/index.js +4 -0
  76. package/esm/ui-provider/theme-provider.d.ts +8 -0
  77. package/esm/ui-provider/theme-provider.js +45 -0
  78. package/esm/ui-provider/ui-provider.d.ts +8 -0
  79. package/esm/ui-provider/ui-provider.js +55 -0
  80. package/esm/use-all-themes/all-themes-context.d.ts +7 -0
  81. package/esm/use-all-themes/all-themes-context.js +11 -0
  82. package/esm/use-all-themes/index.d.ts +3 -0
  83. package/esm/use-all-themes/index.js +2 -0
  84. package/esm/use-classes/index.d.ts +2 -0
  85. package/esm/use-classes/index.js +2 -0
  86. package/esm/use-classes/use-classes.d.ts +4 -0
  87. package/esm/use-classes/use-classes.js +34 -0
  88. package/esm/use-current-state/index.d.ts +2 -0
  89. package/esm/use-current-state/index.js +2 -0
  90. package/esm/use-current-state/use-current-state.d.ts +4 -0
  91. package/esm/use-current-state/use-current-state.js +23 -0
  92. package/esm/use-media-query/index.js +2 -0
  93. package/esm/use-media-query/use-media-query.js +81 -0
  94. package/esm/use-theme/index.d.ts +2 -0
  95. package/esm/use-theme/index.js +2 -0
  96. package/esm/use-theme/theme-context.d.ts +4 -0
  97. package/esm/use-theme/theme-context.js +9 -0
  98. package/esm/use-toasts/helpers.d.ts +18 -0
  99. package/esm/use-toasts/helpers.js +66 -0
  100. package/esm/use-toasts/index.js +2 -0
  101. package/esm/use-toasts/toast-container.d.ts +3 -0
  102. package/esm/use-toasts/toast-container.js +120 -0
  103. package/esm/use-toasts/toast-item.d.ts +8 -0
  104. package/esm/use-toasts/toast-item.js +45 -0
  105. package/esm/use-toasts/use-toast.d.ts +40 -0
  106. package/esm/use-toasts/use-toast.js +103 -0
  107. package/esm/utils/calculations.js +29 -0
  108. package/esm/utils/collections.d.ts +15 -0
  109. package/esm/utils/collections.js +128 -0
  110. package/esm/utils/color.js +35 -0
  111. package/esm/utils/layouts.d.ts +20 -0
  112. package/esm/utils/layouts.js +73 -0
  113. package/esm/utils/prop-types.d.ts +19 -0
  114. package/esm/utils/prop-types.js +20 -0
  115. package/esm/utils/types.d.ts +3 -0
  116. package/esm/utils/types.js +1 -0
  117. package/esm/utils/use-click-anywhere.js +15 -0
  118. package/esm/utils/use-context-state/create-ui-context.js +50 -0
  119. package/esm/utils/use-context-state/use-context-state.js +40 -0
  120. package/esm/utils/use-current-state.d.ts +2 -0
  121. package/esm/utils/use-current-state.js +2 -0
  122. package/esm/utils/use-default-props.js +17 -0
  123. package/esm/utils/use-dom-observer.js +26 -0
  124. package/esm/utils/use-hd-ui-context.d.ts +16 -0
  125. package/esm/utils/use-hd-ui-context.js +27 -0
  126. package/esm/utils/use-portal.d.ts +2 -0
  127. package/esm/utils/use-portal.js +34 -0
  128. package/esm/utils/use-previous.js +11 -0
  129. package/esm/utils/use-real-shape.js +47 -0
  130. package/esm/utils/use-resize.js +19 -0
  131. package/esm/utils/use-ssr.d.ts +6 -0
  132. package/esm/utils/use-ssr.js +19 -0
  133. package/esm/utils/use-warning.js +13 -0
  134. package/package.json +111 -0
@@ -0,0 +1,128 @@
1
+ /* "use client" */
2
+
3
+ import React from 'react';
4
+ export var getId = function getId() {
5
+ return Math.random().toString(32).slice(2, 10);
6
+ };
7
+ export var capitalize = function capitalize(str) {
8
+ var safeStr = String(str).trim();
9
+ return safeStr.charAt(0).toUpperCase() + safeStr.slice(1);
10
+ };
11
+ export var hasChild = function hasChild(children, child) {
12
+ var types = React.Children.map(children, function (item) {
13
+ if (! /*#__PURE__*/React.isValidElement(item)) return null;
14
+ return item.type;
15
+ });
16
+ return (types || []).includes(child);
17
+ };
18
+ export var pickChild = function pickChild(children, targetChild) {
19
+ var target = [];
20
+ var withoutTargetChildren = React.Children.map(children, function (item) {
21
+ if (! /*#__PURE__*/React.isValidElement(item)) return item;
22
+ if (item.type === targetChild) {
23
+ target.push(item);
24
+ return null;
25
+ }
26
+ return item;
27
+ });
28
+ var targetChildren = target.length >= 0 ? target : undefined;
29
+ return [withoutTargetChildren, targetChildren];
30
+ };
31
+ export var pickChildByProps = function pickChildByProps(children, key, value) {
32
+ var target = [];
33
+ var isArray = Array.isArray(value);
34
+ var withoutPropChildren = React.Children.map(children, function (item) {
35
+ if (! /*#__PURE__*/React.isValidElement(item)) return null;
36
+ if (!item.props) return item;
37
+ if (isArray) {
38
+ if (value.includes(item.props[key])) {
39
+ target.push(item);
40
+ return null;
41
+ }
42
+ return item;
43
+ }
44
+ if (item.props[key] === value) {
45
+ target.push(item);
46
+ return null;
47
+ }
48
+ return item;
49
+ });
50
+ var targetChildren = target.length >= 0 ? target : undefined;
51
+ return [withoutPropChildren, targetChildren];
52
+ };
53
+ export var pickChildrenFirst = function pickChildrenFirst(children) {
54
+ return React.Children.toArray(children)[0];
55
+ };
56
+ export var setChildrenProps = function setChildrenProps(children, props) {
57
+ var targetComponents = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
58
+ if (React.Children.count(children) === 0) return [];
59
+ var allowAll = targetComponents.length === 0;
60
+ var clone = function clone(child) {
61
+ var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
62
+ return /*#__PURE__*/React.cloneElement(child, props);
63
+ };
64
+ return React.Children.map(children, function (item) {
65
+ if (! /*#__PURE__*/React.isValidElement(item)) return item;
66
+ if (allowAll) return clone(item, props);
67
+ var isAllowed = targetComponents.find(function (child) {
68
+ return child === item.type;
69
+ });
70
+ if (isAllowed) return clone(item, props);
71
+ return item;
72
+ });
73
+ };
74
+ export var setChildrenIndex = function setChildrenIndex(children) {
75
+ var targetComponents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
76
+ if (React.Children.count(children) === 0) return [];
77
+ var allowAll = targetComponents.length === 0;
78
+ var clone = function clone(child) {
79
+ var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
80
+ return /*#__PURE__*/React.cloneElement(child, props);
81
+ };
82
+ var index = 0;
83
+ return React.Children.map(children, function (item) {
84
+ if (! /*#__PURE__*/React.isValidElement(item)) return item;
85
+ index = index + 1;
86
+ if (allowAll) return clone(item, {
87
+ index: index
88
+ });
89
+ var isAllowed = targetComponents.find(function (child) {
90
+ return child === item.type;
91
+ });
92
+ if (isAllowed) return clone(item, {
93
+ index: index
94
+ });
95
+ index = index - 1;
96
+ return item;
97
+ });
98
+ };
99
+ export var getReactNode = function getReactNode(node) {
100
+ if (!node) return null;
101
+ if (typeof node !== 'function') return node;
102
+ return node();
103
+ };
104
+ export var isChildElement = function isChildElement(parent, child) {
105
+ if (!parent || !child) return false;
106
+ var node = child;
107
+ while (node) {
108
+ if (node === parent) return true;
109
+ node = node.parentNode;
110
+ }
111
+ return false;
112
+ };
113
+ export var isUiElement = function isUiElement(el) {
114
+ if (!el) return false;
115
+ if (el !== null && el !== void 0 && el.dataset && el !== null && el !== void 0 && el.dataset['helpdice']) return true;
116
+ el.attributes.getNamedItem('data-helpdice');
117
+ return !!el.attributes.getNamedItem('data-helpdice');
118
+ };
119
+ export var isBrowser = function isBrowser() {
120
+ return Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);
121
+ };
122
+ export var isMac = function isMac() {
123
+ if (!isBrowser()) return false;
124
+ return navigator.platform.toUpperCase().indexOf('MAC') >= 0;
125
+ };
126
+ export var isCSSNumberValue = function isCSSNumberValue(value) {
127
+ return value !== undefined && !Number.isNaN(+value);
128
+ };
@@ -0,0 +1,35 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ var hexToRgb = function hexToRgb(color) {
3
+ var fullReg = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
4
+ var full = color.replace(fullReg, function (_, r, g, b) {
5
+ return "".concat(r).concat(r).concat(g).concat(g).concat(b).concat(b);
6
+ });
7
+ var values = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(full);
8
+ if (!values) {
9
+ throw new Error("Helpdice UI: Unsupported ".concat(color, " color."));
10
+ }
11
+ return [Number.parseInt(values[1], 16), Number.parseInt(values[2], 16), Number.parseInt(values[3], 16)];
12
+ };
13
+ export var colorToRgbValues = function colorToRgbValues(color) {
14
+ if (color.charAt(0) === '#') return hexToRgb(color);
15
+ var safeColor = color.replace(/ /g, '');
16
+ var colorType = color.substr(0, 4);
17
+ var regArray = safeColor.match(/\((.+)\)/);
18
+ if (!colorType.startsWith('rgb') || !regArray) {
19
+ console.log(color);
20
+ throw new Error("Helpdice UI: Only support [\"RGB\", \"RGBA\", \"HEX\"] color.");
21
+ }
22
+ return regArray[1].split(',').map(function (str) {
23
+ return Number.parseFloat(str);
24
+ });
25
+ };
26
+ export var addColorAlpha = function addColorAlpha(color, alpha) {
27
+ if (!/^#|rgb|RGB/.test(color)) return color;
28
+ var _colorToRgbValues = colorToRgbValues(color),
29
+ _colorToRgbValues2 = _slicedToArray(_colorToRgbValues, 3),
30
+ r = _colorToRgbValues2[0],
31
+ g = _colorToRgbValues2[1],
32
+ b = _colorToRgbValues2[2];
33
+ var safeAlpha = alpha > 1 ? 1 : alpha < 0 ? 0 : alpha;
34
+ return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(safeAlpha, ")");
35
+ };
@@ -0,0 +1,20 @@
1
+ import { MouseEvent, FocusEvent, MutableRefObject } from 'react';
2
+ export declare const getElementOffset: (el?: HTMLElement | null | undefined) => {
3
+ top: number;
4
+ left: number;
5
+ };
6
+ export interface ReactiveDomReact {
7
+ top: number;
8
+ left: number;
9
+ right: number;
10
+ width: number;
11
+ height: number;
12
+ elementTop: number;
13
+ }
14
+ export declare const isUnplacedRect: (rect?: ReactiveDomReact) => boolean;
15
+ export declare const getRefRect: (ref?: MutableRefObject<HTMLElement | null>, getContainer?: () => HTMLElement | null) => ReactiveDomReact;
16
+ export declare const getEventRect: (event?: MouseEvent<HTMLElement> | FocusEvent<HTMLElement>, getContainer?: () => HTMLElement | null) => ReactiveDomReact;
17
+ export declare const useRect: (initialState?: ReactiveDomReact | (() => ReactiveDomReact)) => {
18
+ rect: ReactiveDomReact;
19
+ setRect: (eventOrRef: MouseEvent<HTMLElement> | FocusEvent<HTMLElement> | MutableRefObject<HTMLElement | null>, getContainer?: () => HTMLElement | null) => void;
20
+ };
@@ -0,0 +1,73 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ /* "use client" */
4
+
5
+ import { useState } from 'react';
6
+ export var getElementOffset = function getElementOffset(el) {
7
+ if (!el) return {
8
+ top: 0,
9
+ left: 0
10
+ };
11
+ var _el$getBoundingClient = el.getBoundingClientRect(),
12
+ top = _el$getBoundingClient.top,
13
+ left = _el$getBoundingClient.left;
14
+ return {
15
+ top: top,
16
+ left: left
17
+ };
18
+ };
19
+ var defaultRect = {
20
+ top: -1000,
21
+ left: -1000,
22
+ right: -1000,
23
+ width: 0,
24
+ height: 0,
25
+ elementTop: -1000
26
+ };
27
+ var getRectFromDOMWithContainer = function getRectFromDOMWithContainer(domRect, getContainer) {
28
+ if (!domRect) return defaultRect;
29
+ var container = getContainer ? getContainer() : null;
30
+ var scrollElement = container || document.documentElement;
31
+ var _getElementOffset = getElementOffset(container),
32
+ offsetTop = _getElementOffset.top,
33
+ offsetLeft = _getElementOffset.left;
34
+ return _extends({}, domRect, {
35
+ width: domRect.width || domRect.right - domRect.left,
36
+ height: domRect.height || domRect.top - domRect.bottom,
37
+ top: domRect.bottom + scrollElement.scrollTop - offsetTop,
38
+ left: domRect.left + scrollElement.scrollLeft - offsetLeft,
39
+ elementTop: domRect.top + scrollElement.scrollTop - offsetTop
40
+ });
41
+ };
42
+ export var isUnplacedRect = function isUnplacedRect(rect) {
43
+ if (!rect) return true;
44
+ return rect.top === defaultRect.top && rect.left === defaultRect.left;
45
+ };
46
+ export var getRefRect = function getRefRect(ref, getContainer) {
47
+ if (!ref || !ref.current) return defaultRect;
48
+ var rect = ref.current.getBoundingClientRect();
49
+ return getRectFromDOMWithContainer(rect, getContainer);
50
+ };
51
+ export var getEventRect = function getEventRect(event, getContainer) {
52
+ var _event$target;
53
+ var rect = event === null || event === void 0 || (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.getBoundingClientRect();
54
+ if (!rect) return defaultRect;
55
+ return getRectFromDOMWithContainer(rect, getContainer);
56
+ };
57
+ var isRefTarget = function isRefTarget(eventOrRef) {
58
+ return typeof (eventOrRef === null || eventOrRef === void 0 ? void 0 : eventOrRef.target) === 'undefined';
59
+ };
60
+ export var useRect = function useRect(initialState) {
61
+ var _useState = useState(initialState || defaultRect),
62
+ _useState2 = _slicedToArray(_useState, 2),
63
+ rect = _useState2[0],
64
+ setRect = _useState2[1];
65
+ var updateRect = function updateRect(eventOrRef, getContainer) {
66
+ if (isRefTarget(eventOrRef)) return setRect(getRefRect(eventOrRef, getContainer));
67
+ setRect(getEventRect(eventOrRef, getContainer));
68
+ };
69
+ return {
70
+ rect: rect,
71
+ setRect: updateRect
72
+ };
73
+ };
@@ -0,0 +1,19 @@
1
+ export declare const tuple: <T extends string[]>(...args: T) => T;
2
+ export declare const tupleNumber: <T extends number[]>(...args: T) => T;
3
+ declare const buttonTypes: ["default", "secondary", "success", "warning", "error", "abort", "secondary-light", "success-light", "warning-light", "error-light"];
4
+ declare const normalTypes: ["default", "secondary", "success", "warning", "error"];
5
+ declare const snippetTypes: ["default", "secondary", "success", "warning", "error", "dark", "lite"];
6
+ declare const cardTypes: ["default", "secondary", "success", "warning", "error", "dark", "lite", "alert", "purple", "violet", "cyan"];
7
+ declare const copyTypes: ["default", "silent", "prevent"];
8
+ declare const triggerTypes: ["hover", "click"];
9
+ declare const placement: ["top", "topStart", "topEnd", "left", "leftStart", "leftEnd", "bottom", "bottomStart", "bottomEnd", "right", "rightStart", "rightEnd"];
10
+ declare const dividerAlign: ["start", "center", "end", "left", "right"];
11
+ export type ButtonTypes = typeof buttonTypes[number];
12
+ export type NormalTypes = typeof normalTypes[number];
13
+ export type SnippetTypes = typeof snippetTypes[number];
14
+ export type CardTypes = typeof cardTypes[number];
15
+ export type CopyTypes = typeof copyTypes[number];
16
+ export type TriggerTypes = typeof triggerTypes[number];
17
+ export type Placement = typeof placement[number];
18
+ export type DividerAlign = typeof dividerAlign[number];
19
+ export {};
@@ -0,0 +1,20 @@
1
+ export var tuple = function tuple() {
2
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
3
+ args[_key] = arguments[_key];
4
+ }
5
+ return args;
6
+ };
7
+ export var tupleNumber = function tupleNumber() {
8
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
9
+ args[_key2] = arguments[_key2];
10
+ }
11
+ return args;
12
+ };
13
+ var buttonTypes = tuple('default', 'secondary', 'success', 'warning', 'error', 'abort', 'secondary-light', 'success-light', 'warning-light', 'error-light');
14
+ var normalTypes = tuple('default', 'secondary', 'success', 'warning', 'error');
15
+ var snippetTypes = tuple('default', 'secondary', 'success', 'warning', 'error', 'dark', 'lite');
16
+ var cardTypes = tuple('default', 'secondary', 'success', 'warning', 'error', 'dark', 'lite', 'alert', 'purple', 'violet', 'cyan');
17
+ var copyTypes = tuple('default', 'silent', 'prevent');
18
+ var triggerTypes = tuple('hover', 'click');
19
+ var placement = tuple('top', 'topStart', 'topEnd', 'left', 'leftStart', 'leftEnd', 'bottom', 'bottomStart', 'bottomEnd', 'right', 'rightStart', 'rightEnd');
20
+ var dividerAlign = tuple('start', 'center', 'end', 'left', 'right');
@@ -0,0 +1,3 @@
1
+ export type DeepPartial<T> = {
2
+ [P in keyof T]?: T[P] extends Record<string, any> ? DeepPartial<T[P]> : T[P];
3
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ /* "use client" */
2
+
3
+ import { useEffect } from 'react';
4
+ var useClickAnyWhere = function useClickAnyWhere(handler) {
5
+ useEffect(function () {
6
+ var callback = function callback(event) {
7
+ return handler(event);
8
+ };
9
+ document.addEventListener('click', callback);
10
+ return function () {
11
+ return document.removeEventListener('click', callback);
12
+ };
13
+ }, [handler]);
14
+ };
15
+ export default useClickAnyWhere;
@@ -0,0 +1,50 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
+ /* "use client" */
5
+
6
+ import React, { useImperativeHandle } from 'react';
7
+ import useContextState from './use-context-state';
8
+ import { capitalize } from '../collections';
9
+ var makeVirtualValues = function makeVirtualValues(values) {
10
+ var keys = Object.keys(values);
11
+ var handlers = keys.reduce(function (pre, current) {
12
+ var updateHandler = _defineProperty({}, "set".concat(capitalize(current)), function set(_next) {});
13
+ return _extends({}, pre, updateHandler);
14
+ }, {});
15
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
16
+ var update = function update(_key, _next) {};
17
+ return _extends({
18
+ update: update
19
+ }, values, handlers);
20
+ };
21
+ export var createHelpdiceContext = function createHelpdiceContext(name, initialStates) {
22
+ var virtualValues = makeVirtualValues(initialStates);
23
+ var Context = /*#__PURE__*/React.createContext(virtualValues);
24
+ var HelpdiceContext = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
25
+ var defaultValues = _ref.defaultValues,
26
+ children = _ref.children,
27
+ onChange = _ref.onChange,
28
+ onChangeBefore = _ref.onChangeBefore;
29
+ var initialValues = typeof defaultValues === 'function' ? defaultValues() : defaultValues;
30
+ var mergedValues = _extends({}, initialStates, initialValues);
31
+ var _useContextState = useContextState(mergedValues, {
32
+ onChange: onChange ? onChange : function () {},
33
+ filter: onChangeBefore ? onChangeBefore : function () {
34
+ return true;
35
+ }
36
+ }),
37
+ _useContextState2 = _slicedToArray(_useContextState, 3),
38
+ states = _useContextState2[0],
39
+ statesRef = _useContextState2[2];
40
+ useImperativeHandle(ref, function () {
41
+ return statesRef.current;
42
+ }, [statesRef.current]);
43
+ return /*#__PURE__*/React.createElement(Context.Provider, {
44
+ value: states
45
+ }, children);
46
+ });
47
+ return _defineProperty(_defineProperty({}, "".concat(capitalize(name), "Provider"), HelpdiceContext), "use".concat(capitalize(name), "Context"), function useContext() {
48
+ return React.useContext(Context);
49
+ });
50
+ };
@@ -0,0 +1,40 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
+ /* "use client" */
5
+
6
+ import { useMemo } from 'react';
7
+ import useCurrentState from '../use-current-state';
8
+ import { capitalize } from '../collections';
9
+ var useContextState = function useContextState(initialState, options) {
10
+ var _useCurrentState = useCurrentState(initialState),
11
+ _useCurrentState2 = _slicedToArray(_useCurrentState, 3),
12
+ state = _useCurrentState2[0],
13
+ setState = _useCurrentState2[1],
14
+ stateRef = _useCurrentState2[2];
15
+ var update = function update(key, next) {
16
+ var allowChange = options !== null && options !== void 0 && options.filter ? options === null || options === void 0 ? void 0 : options.filter(key, next) : true;
17
+ if (!allowChange) return;
18
+ setState(function (last) {
19
+ return _extends({}, last, _defineProperty({}, key, next));
20
+ });
21
+ (options === null || options === void 0 ? void 0 : options.onChange) && (options === null || options === void 0 ? void 0 : options.onChange(key, next));
22
+ };
23
+ var makeUpdates = function makeUpdates() {
24
+ var keys = Object.keys(state);
25
+ return keys.reduce(function (pre, current) {
26
+ var updateHandler = _defineProperty({}, "set".concat(capitalize(current)), function set(nextValue) {
27
+ update(current, nextValue);
28
+ });
29
+ return _extends({}, pre, updateHandler);
30
+ }, {});
31
+ };
32
+ var updates = makeUpdates();
33
+ var stateMemo = useMemo(function () {
34
+ return _extends({
35
+ update: update
36
+ }, state, updates);
37
+ }, [state]);
38
+ return [stateMemo, setState, stateRef];
39
+ };
40
+ export default useContextState;
@@ -0,0 +1,2 @@
1
+ import useCurrentState from '../use-current-state';
2
+ export default useCurrentState;
@@ -0,0 +1,2 @@
1
+ import useCurrentState from '../use-current-state';
2
+ export default useCurrentState;
@@ -0,0 +1,17 @@
1
+ var useDefaultProps = function useDefaultProps(props, defaultProps) {
2
+ var nextProps = {};
3
+ var propsKeys = Object.keys(props || {});
4
+ var defaultKeys = Object.keys(defaultProps || {});
5
+ for (var _i = 0, _propsKeys = propsKeys; _i < _propsKeys.length; _i++) {
6
+ var propsName = _propsKeys[_i];
7
+ nextProps[propsName] = props[propsName];
8
+ }
9
+ for (var _i2 = 0, _defaultKeys = defaultKeys; _i2 < _defaultKeys.length; _i2++) {
10
+ var defaultName = _defaultKeys[_i2];
11
+ if (props[defaultName] === undefined) {
12
+ nextProps[defaultName] = defaultProps[defaultName];
13
+ }
14
+ }
15
+ return nextProps;
16
+ };
17
+ export default useDefaultProps;
@@ -0,0 +1,26 @@
1
+ /* "use client" */
2
+
3
+ import { useEffect } from 'react';
4
+ var useDOMObserver = function useDOMObserver(ref) {
5
+ var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
6
+ var config = {
7
+ attributes: false,
8
+ childList: true,
9
+ subtree: true
10
+ };
11
+ useEffect(function () {
12
+ if (!ref || !ref.current) return;
13
+ var unmount = false;
14
+ var done = function done() {
15
+ if (unmount) return;
16
+ callback.apply(void 0, arguments);
17
+ };
18
+ var observer = new MutationObserver(done);
19
+ observer.observe(ref.current, config);
20
+ return function () {
21
+ unmount = true;
22
+ observer.disconnect();
23
+ };
24
+ }, [ref]);
25
+ };
26
+ export default useDOMObserver;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import type { ToastLayout, Toast } from '../use-toasts/use-toast';
3
+ export declare const defaultToastLayout: Required<ToastLayout>;
4
+ export type UpdateToastsFunction = (fn: (toasts: Array<Toast>) => Array<Toast>) => any;
5
+ export type UpdateToastsLayoutFunction = (fn: (layout: Required<ToastLayout>) => Required<ToastLayout>) => any;
6
+ export type UpdateToastsIDFunction = (fn: () => string | null) => any;
7
+ export interface HUIContextParams {
8
+ toasts: Array<Toast>;
9
+ updateToasts: UpdateToastsFunction;
10
+ toastLayout: Required<ToastLayout>;
11
+ updateToastLayout: UpdateToastsLayoutFunction;
12
+ lastUpdateToastId: string | null;
13
+ updateLastToastId: UpdateToastsIDFunction;
14
+ }
15
+ export declare const HUIContent: React.Context<HUIContextParams>;
16
+ export declare const useHUIContext: () => HUIContextParams;
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ export var defaultToastLayout = {
3
+ padding: '12px 16px',
4
+ margin: '8px 0',
5
+ width: '420px',
6
+ maxWidth: '90vw',
7
+ maxHeight: '75px',
8
+ placement: 'bottomRight'
9
+ };
10
+ var defaultParams = {
11
+ toasts: [],
12
+ toastLayout: defaultToastLayout,
13
+ updateToastLayout: function updateToastLayout(t) {
14
+ return t;
15
+ },
16
+ updateToasts: function updateToasts(t) {
17
+ return t;
18
+ },
19
+ lastUpdateToastId: null,
20
+ updateLastToastId: function updateLastToastId() {
21
+ return null;
22
+ }
23
+ };
24
+ export var HUIContent = /*#__PURE__*/React.createContext(defaultParams);
25
+ export var useHUIContext = function useHUIContext() {
26
+ return React.useContext(HUIContent);
27
+ };
@@ -0,0 +1,2 @@
1
+ declare const usePortal: (selectId?: string, getContainer?: () => HTMLElement | null) => HTMLElement | null;
2
+ export default usePortal;
@@ -0,0 +1,34 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ /* "use client" */
3
+
4
+ import { useEffect, useState } from 'react';
5
+ import useSSR from '../utils/use-ssr';
6
+ import { getId } from './collections';
7
+ var createElement = function createElement(id) {
8
+ var el = document.createElement('div');
9
+ el.setAttribute('id', id);
10
+ return el;
11
+ };
12
+ var usePortal = function usePortal() {
13
+ var selectId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getId();
14
+ var getContainer = arguments.length > 1 ? arguments[1] : undefined;
15
+ var id = "helpdice-ui-".concat(selectId);
16
+ var _useSSR = useSSR(),
17
+ isBrowser = _useSSR.isBrowser;
18
+ var _useState = useState(isBrowser ? createElement(id) : null),
19
+ _useState2 = _slicedToArray(_useState, 2),
20
+ elSnapshot = _useState2[0],
21
+ setElSnapshot = _useState2[1];
22
+ useEffect(function () {
23
+ var customContainer = getContainer ? getContainer() : null;
24
+ var parentElement = customContainer || document.body;
25
+ var hasElement = parentElement.querySelector("#".concat(id));
26
+ var el = hasElement || createElement(id);
27
+ if (!hasElement) {
28
+ parentElement.appendChild(el);
29
+ }
30
+ setElSnapshot(el);
31
+ }, []);
32
+ return elSnapshot;
33
+ };
34
+ export default usePortal;
@@ -0,0 +1,11 @@
1
+ /* "use client" */
2
+
3
+ import { useEffect, useRef } from 'react';
4
+ var usePrevious = function usePrevious(state) {
5
+ var ref = useRef(null);
6
+ useEffect(function () {
7
+ ref.current = state;
8
+ });
9
+ return ref ? ref.current : null;
10
+ };
11
+ export default usePrevious;
@@ -0,0 +1,47 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ /* "use client" */
3
+
4
+ import { useEffect, useState } from 'react';
5
+ export var getRealShape = function getRealShape(el) {
6
+ var defaultShape = {
7
+ width: 0,
8
+ height: 0
9
+ };
10
+ if (!el || typeof window === 'undefined') return defaultShape;
11
+ var rect = el.getBoundingClientRect();
12
+ var _window$getComputedSt = window.getComputedStyle(el),
13
+ width = _window$getComputedSt.width,
14
+ height = _window$getComputedSt.height;
15
+ var getCSSStyleVal = function getCSSStyleVal(str, parentNum) {
16
+ if (!str) return 0;
17
+ var strVal = str.includes('px') ? +str.split('px')[0] : str.includes('%') ? +str.split('%')[0] * parentNum * 0.01 : str;
18
+ return Number.isNaN(+strVal) ? 0 : +strVal;
19
+ };
20
+ return {
21
+ width: getCSSStyleVal("".concat(width), rect.width),
22
+ height: getCSSStyleVal("".concat(height), rect.height)
23
+ };
24
+ };
25
+ var useRealShape = function useRealShape(ref) {
26
+ var _useState = useState({
27
+ width: 0,
28
+ height: 0
29
+ }),
30
+ _useState2 = _slicedToArray(_useState, 2),
31
+ state = _useState2[0],
32
+ setState = _useState2[1];
33
+ var update = function update() {
34
+ var _getRealShape = getRealShape(ref.current),
35
+ width = _getRealShape.width,
36
+ height = _getRealShape.height;
37
+ setState({
38
+ width: width,
39
+ height: height
40
+ });
41
+ };
42
+ useEffect(function () {
43
+ return update();
44
+ }, [ref.current]);
45
+ return [state, update];
46
+ };
47
+ export default useRealShape;
@@ -0,0 +1,19 @@
1
+ /* "use client" */
2
+
3
+ import { useEffect } from 'react';
4
+ var useResize = function useResize(callback) {
5
+ var immediatelyInvoke = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
6
+ useEffect(function () {
7
+ var fn = function fn() {
8
+ return callback();
9
+ };
10
+ if (immediatelyInvoke) {
11
+ fn();
12
+ }
13
+ window.addEventListener('resize', fn);
14
+ return function () {
15
+ return window.removeEventListener('resize', fn);
16
+ };
17
+ }, []);
18
+ };
19
+ export default useResize;
@@ -0,0 +1,6 @@
1
+ export type SSRState = {
2
+ isBrowser: boolean;
3
+ isServer: boolean;
4
+ };
5
+ declare const useSSR: () => SSRState;
6
+ export default useSSR;
@@ -0,0 +1,19 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ /* "use client" */
3
+
4
+ import { useEffect, useState } from 'react';
5
+ import { isBrowser } from './collections';
6
+ var useSSR = function useSSR() {
7
+ var _useState = useState(false),
8
+ _useState2 = _slicedToArray(_useState, 2),
9
+ browser = _useState2[0],
10
+ setBrowser = _useState2[1];
11
+ useEffect(function () {
12
+ setBrowser(isBrowser());
13
+ }, []);
14
+ return {
15
+ isBrowser: browser,
16
+ isServer: !browser
17
+ };
18
+ };
19
+ export default useSSR;