polpo 0.1.13 → 0.1.16
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.
- package/.turbo/cache/eslint/.cache_16wwsjl +1 -0
- package/.turbo/cache/eslint/.cache_rpznjo +1 -0
- package/.turbo/turbo-build$colon$code.log +49 -0
- package/.turbo/turbo-build$colon$css.log +2 -0
- package/.turbo/turbo-build.log +43 -0
- package/.turbo/turbo-lint.log +2 -0
- package/dist/components.cjs +1 -3655
- package/dist/components.css +2 -2173
- package/dist/components.js +1 -3576
- package/dist/helpers.cjs +1 -311
- package/dist/helpers.d.cts +4 -1
- package/dist/helpers.d.ts +4 -1
- package/dist/helpers.js +1 -276
- package/dist/hooks.cjs +1 -1065
- package/dist/hooks.js +1 -998
- package/dist/layouts.cjs +1 -146
- package/dist/layouts.css +2 -5
- package/dist/layouts.js +1 -119
- package/dist/types.cjs +1 -19
- package/dist/types.js +0 -1
- package/eslint.config.js +4 -0
- package/package.json +16 -11
- package/postcss.config.js +3 -0
- package/src/components/accordion/accordion-item.tsx +123 -0
- package/src/components/accordion/accordion.component.tsx +80 -0
- package/src/components/accordion/accordion.styles.css +41 -0
- package/src/components/accordion/index.ts +2 -0
- package/src/components/button/button.component.tsx +50 -0
- package/src/components/button/button.styles.css +317 -0
- package/src/components/button/index.ts +1 -0
- package/src/components/cards/flip-card/flip-card.component.tsx +66 -0
- package/src/components/cards/flip-card/flip-card.styles.css +50 -0
- package/src/components/cards/flip-card/index.ts +1 -0
- package/src/components/cards/hover-card/hover-card.component.tsx +76 -0
- package/src/components/cards/hover-card/hover-card.styles.css +13 -0
- package/src/components/cards/hover-card/index.ts +1 -0
- package/src/components/cards/index.ts +3 -0
- package/src/components/cards/slide-card/index.ts +1 -0
- package/src/components/cards/slide-card/slide-card.component.tsx +27 -0
- package/src/components/component.types.ts +31 -0
- package/src/components/cursor/cursor.component.tsx +49 -0
- package/src/components/cursor/cursor.styles.css +73 -0
- package/src/components/cursor/index.ts +1 -0
- package/src/components/form/checkbox/checkbox.component.tsx +95 -0
- package/src/components/form/checkbox/checkbox.styles.css +162 -0
- package/src/components/form/checkbox/index.ts +1 -0
- package/src/components/form/controller/controller.component.tsx +42 -0
- package/src/components/form/controller/index.ts +1 -0
- package/src/components/form/date-picker/date-picker.component.tsx +66 -0
- package/src/components/form/date-picker/index.ts +1 -0
- package/src/components/form/field/field.component.tsx +84 -0
- package/src/components/form/field/field.styles.css +98 -0
- package/src/components/form/field/field.types.ts +34 -0
- package/src/components/form/field/index.ts +2 -0
- package/src/components/form/form.types.ts +37 -0
- package/src/components/form/index.ts +14 -0
- package/src/components/form/input/index.ts +1 -0
- package/src/components/form/input/input.component.tsx +75 -0
- package/src/components/form/input-color/index.ts +1 -0
- package/src/components/form/input-color/input-color.component.tsx +170 -0
- package/src/components/form/input-color/input-color.styles.css +92 -0
- package/src/components/form/input-file/index.ts +1 -0
- package/src/components/form/input-file/input-file.component.tsx +221 -0
- package/src/components/form/input-file/input-file.styles.css +143 -0
- package/src/components/form/input-number/index.ts +1 -0
- package/src/components/form/input-number/input-number.component.tsx +144 -0
- package/src/components/form/input-password/index.ts +1 -0
- package/src/components/form/input-password/input-password.component.tsx +77 -0
- package/src/components/form/radio/index.ts +1 -0
- package/src/components/form/radio/radio.component.tsx +92 -0
- package/src/components/form/radio/radio.styles.css +117 -0
- package/src/components/form/select/index.ts +1 -0
- package/src/components/form/select/option.tsx +101 -0
- package/src/components/form/select/options.tsx +165 -0
- package/src/components/form/select/select.component.tsx +317 -0
- package/src/components/form/select/select.styles.css +115 -0
- package/src/components/form/select/select.types.ts +97 -0
- package/src/components/form/slider/index.ts +1 -0
- package/src/components/form/slider/slider.component.tsx +117 -0
- package/src/components/form/slider/slider.styles.css +94 -0
- package/src/components/form/switch/index.ts +1 -0
- package/src/components/form/switch/switch.component.tsx +166 -0
- package/src/components/form/switch/switch.styles.css +165 -0
- package/src/components/form/textarea/index.ts +1 -0
- package/src/components/form/textarea/textarea.component.tsx +80 -0
- package/src/components/form/textarea/textarea.styles.css +7 -0
- package/src/components/image/image.tsx +7 -0
- package/src/components/image/index.ts +1 -0
- package/src/components/index.ts +15 -0
- package/src/components/infinity-scroll/index.ts +1 -0
- package/src/components/infinity-scroll/infinity-scroll.component.tsx +51 -0
- package/src/components/infinity-scroll/infinity-scroll.styles.css +25 -0
- package/src/components/line/index.ts +1 -0
- package/src/components/line/line.component.tsx +77 -0
- package/src/components/line/line.styles.css +61 -0
- package/src/components/modals/action-modal/action-modal.component.tsx +150 -0
- package/src/components/modals/action-modal/action-modal.styles.css +115 -0
- package/src/components/modals/action-modal/index.ts +1 -0
- package/src/components/modals/aside-modal/aside-modal.component.tsx +63 -0
- package/src/components/modals/aside-modal/aside-modal.styles.css +86 -0
- package/src/components/modals/aside-modal/index.ts +1 -0
- package/src/components/modals/confirmation-modal/confirmation-modal.component.tsx +43 -0
- package/src/components/modals/confirmation-modal/confirmation-modal.styles.css +17 -0
- package/src/components/modals/confirmation-modal/index.ts +1 -0
- package/src/components/modals/index.ts +6 -0
- package/src/components/modals/menu/index.ts +1 -0
- package/src/components/modals/menu/menu.component.tsx +194 -0
- package/src/components/modals/menu/menu.styles.css +101 -0
- package/src/components/modals/modal/index.ts +2 -0
- package/src/components/modals/modal/modal.backdrop.tsx +67 -0
- package/src/components/modals/modal/modal.component.tsx +104 -0
- package/src/components/modals/modal/modal.styles.css +70 -0
- package/src/components/modals/portal/index.ts +1 -0
- package/src/components/modals/portal/portal.component.tsx +19 -0
- package/src/components/ripple/index.ts +1 -0
- package/src/components/ripple/ripple.component.tsx +70 -0
- package/src/components/ripple/ripple.styles.css +33 -0
- package/src/components/smart-table/index.ts +2 -0
- package/src/components/smart-table/smart-table.column.tsx +62 -0
- package/src/components/smart-table/smart-table.component.tsx +116 -0
- package/src/components/smart-table/smart-table.helpers.tsx +58 -0
- package/src/components/smart-table/smart-table.hooks.ts +27 -0
- package/src/components/smart-table/smart-table.row.tsx +28 -0
- package/src/components/smart-table/smart-table.styles.css +102 -0
- package/src/components/smart-table/smart-table.types.ts +42 -0
- package/src/components/tabs/index.ts +1 -0
- package/src/components/tabs/tabs-list.tsx +120 -0
- package/src/components/tabs/tabs.styles.css +164 -0
- package/src/components/tabs/tabs.tsx +119 -0
- package/src/components/tag/index.ts +1 -0
- package/src/components/tag/tag.component.tsx +34 -0
- package/src/components/tag/tag.styles.css +50 -0
- package/src/components/tooltips/click-to-copy/click-to-copy.component.tsx +41 -0
- package/src/components/tooltips/click-to-copy/index.ts +1 -0
- package/src/components/tooltips/index.ts +2 -0
- package/src/components/tooltips/tooltip/index.ts +1 -0
- package/src/components/tooltips/tooltip/tooltip.component.tsx +64 -0
- package/src/components/tooltips/tooltip/tooltip.styles.css +91 -0
- package/src/components/typography/index.ts +1 -0
- package/src/components/typography/typography.component.tsx +81 -0
- package/src/components/typography/typography.constants.ts +53 -0
- package/src/components/typography/typography.styles.css +122 -0
- package/src/helpers/cn.ts +6 -0
- package/src/helpers/format-bytes.ts +11 -0
- package/src/helpers/format-dates.ts +47 -0
- package/src/helpers/get-modal-position-relative-to-screen.ts +86 -0
- package/src/helpers/get-modal-position.ts +211 -0
- package/src/helpers/index.ts +6 -0
- package/src/helpers/text/index.ts +1 -0
- package/src/helpers/text/to-capitalize.ts +17 -0
- package/src/hooks/index.ts +30 -0
- package/src/hooks/use-async.ts +88 -0
- package/src/hooks/use-classnames.ts +13 -0
- package/src/hooks/use-click-outside.ts +32 -0
- package/src/hooks/use-constant.ts +3 -0
- package/src/hooks/use-cookie.ts +124 -0
- package/src/hooks/use-debounce-state.ts +13 -0
- package/src/hooks/use-debounce.ts +15 -0
- package/src/hooks/use-dimensions.ts +19 -0
- package/src/hooks/use-dom-container.ts +35 -0
- package/src/hooks/use-event-listener.ts +71 -0
- package/src/hooks/use-file-reader.ts +69 -0
- package/src/hooks/use-geolocation.ts +63 -0
- package/src/hooks/use-hover.ts +17 -0
- package/src/hooks/use-in-view.ts +18 -0
- package/src/hooks/use-input-handlers.ts +52 -0
- package/src/hooks/use-intersection-observer.ts +19 -0
- package/src/hooks/use-media-query.ts +25 -0
- package/src/hooks/use-modal-in-container.ts +85 -0
- package/src/hooks/use-modal-transition.ts +64 -0
- package/src/hooks/use-modal.ts +21 -0
- package/src/hooks/use-mouse-position.ts +64 -0
- package/src/hooks/use-online-status.ts +12 -0
- package/src/hooks/use-render-count.ts +11 -0
- package/src/hooks/use-resize-observer.ts +18 -0
- package/src/hooks/use-safe-dispatch.ts +22 -0
- package/src/hooks/use-scroll.ts +31 -0
- package/src/hooks/use-state-history.ts +22 -0
- package/src/hooks/use-toggle-values.ts +14 -0
- package/src/hooks/use-toggle.ts +11 -0
- package/src/hooks/use-viewport.ts +38 -0
- package/src/index.ts +5 -0
- package/src/layouts/flex/flex.component.tsx +75 -0
- package/src/layouts/flex/index.ts +1 -0
- package/src/layouts/grid/grid.component.tsx +89 -0
- package/src/layouts/grid/grid.styles.css +5 -0
- package/src/layouts/grid/index.ts +1 -0
- package/src/layouts/index.ts +2 -0
- package/src/types/generics.ts +68 -0
- package/src/types/index.ts +1 -0
- package/tsconfig.json +10 -0
- package/tsup.config.cjs +36 -0
- package/dist/components.cjs.map +0 -1
- package/dist/components.css.map +0 -1
- package/dist/components.js.map +0 -1
- package/dist/helpers.cjs.map +0 -1
- package/dist/helpers.js.map +0 -1
- package/dist/hooks.cjs.map +0 -1
- package/dist/hooks.js.map +0 -1
- package/dist/layouts.cjs.map +0 -1
- package/dist/layouts.css.map +0 -1
- package/dist/layouts.js.map +0 -1
- package/dist/types.cjs.map +0 -1
- package/dist/types.js.map +0 -1
package/dist/hooks.cjs
CHANGED
|
@@ -1,1066 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
"use strict";
|
|
3
|
-
var __create = Object.create;
|
|
4
|
-
var __defProp = Object.defineProperty;
|
|
5
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
-
var __export = (target, all) => {
|
|
10
|
-
for (var name in all)
|
|
11
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
-
};
|
|
13
|
-
var __copyProps = (to, from, except, desc) => {
|
|
14
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
-
for (let key of __getOwnPropNames(from))
|
|
16
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
-
}
|
|
19
|
-
return to;
|
|
20
|
-
};
|
|
21
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
-
mod
|
|
28
|
-
));
|
|
29
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
-
|
|
31
|
-
// src/hooks/index.ts
|
|
32
|
-
var hooks_exports = {};
|
|
33
|
-
__export(hooks_exports, {
|
|
34
|
-
FileTypeEnum: () => FileTypeEnum,
|
|
35
|
-
ModalState: () => ModalState,
|
|
36
|
-
useAsync: () => useAsync,
|
|
37
|
-
useClassNames: () => useClassNames,
|
|
38
|
-
useClickOutside: () => useClickOutside,
|
|
39
|
-
useConstant: () => useConstant,
|
|
40
|
-
useCookie: () => useCookie,
|
|
41
|
-
useDebounce: () => useDebounce,
|
|
42
|
-
useDebounceState: () => useDebounceState,
|
|
43
|
-
useDimensions: () => useDimensions,
|
|
44
|
-
useDomContainer: () => useDomContainer,
|
|
45
|
-
useEventListener: () => useEventListener,
|
|
46
|
-
useFileReader: () => useFileReader,
|
|
47
|
-
useGeolocation: () => useGeolocation,
|
|
48
|
-
useHover: () => useHover,
|
|
49
|
-
useInView: () => useInView,
|
|
50
|
-
useInputHandlers: () => useInputHandlers,
|
|
51
|
-
useIntersectionObserver: () => useIntersectionObserver,
|
|
52
|
-
useMediaQuery: () => useMediaQuery,
|
|
53
|
-
useModal: () => useModal,
|
|
54
|
-
useModalInContainer: () => useModalInContainer,
|
|
55
|
-
useModalTransition: () => useModalTransition,
|
|
56
|
-
useMousePosition: () => useMousePosition,
|
|
57
|
-
useOnlineStatus: () => useOnlineStatus,
|
|
58
|
-
useRenderCount: () => useRenderCount,
|
|
59
|
-
useResizeObserver: () => useResizeObserver,
|
|
60
|
-
useSafeDispatch: () => useSafeDispatch,
|
|
61
|
-
useScroll: () => useScroll,
|
|
62
|
-
useStateHistory: () => useStateHistory,
|
|
63
|
-
useToggle: () => useToggle,
|
|
64
|
-
useToggleValues: () => useToggleValues,
|
|
65
|
-
useViewport: () => useViewport
|
|
66
|
-
});
|
|
67
|
-
module.exports = __toCommonJS(hooks_exports);
|
|
68
|
-
|
|
69
|
-
// src/hooks/use-async.ts
|
|
70
|
-
var import_react2 = require("react");
|
|
71
|
-
|
|
72
|
-
// src/hooks/use-safe-dispatch.ts
|
|
73
|
-
var import_react = require("react");
|
|
74
|
-
var useSafeDispatch = (dispatch) => {
|
|
75
|
-
const mounted = (0, import_react.useRef)(false);
|
|
76
|
-
(0, import_react.useLayoutEffect)(() => {
|
|
77
|
-
mounted.current = true;
|
|
78
|
-
return () => {
|
|
79
|
-
mounted.current = false;
|
|
80
|
-
};
|
|
81
|
-
}, []);
|
|
82
|
-
return (0, import_react.useCallback)(
|
|
83
|
-
(...args) => {
|
|
84
|
-
if (mounted.current) {
|
|
85
|
-
dispatch(...args);
|
|
86
|
-
}
|
|
87
|
-
},
|
|
88
|
-
[dispatch]
|
|
89
|
-
);
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
// src/hooks/use-async.ts
|
|
93
|
-
var asyncReducer = (_state, action) => {
|
|
94
|
-
switch (action.type) {
|
|
95
|
-
case "pending": {
|
|
96
|
-
return { status: "pending", data: null, error: null };
|
|
97
|
-
}
|
|
98
|
-
case "resolved": {
|
|
99
|
-
return { status: "resolved", data: action.data, error: null };
|
|
100
|
-
}
|
|
101
|
-
case "rejected": {
|
|
102
|
-
return { status: "rejected", data: null, error: action.error };
|
|
103
|
-
}
|
|
104
|
-
default: {
|
|
105
|
-
throw new Error(`Unhandled action: ${JSON.stringify(action)}`);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
var useAsync = (initialState) => {
|
|
110
|
-
const [asyncState, unsafeDispatch] = (0, import_react2.useReducer)(asyncReducer, {
|
|
111
|
-
status: "idle",
|
|
112
|
-
data: null,
|
|
113
|
-
error: null,
|
|
114
|
-
...initialState
|
|
115
|
-
});
|
|
116
|
-
const dispatch = useSafeDispatch(unsafeDispatch);
|
|
117
|
-
const run = (0, import_react2.useCallback)(
|
|
118
|
-
(promise) => {
|
|
119
|
-
dispatch({ type: "pending" });
|
|
120
|
-
promise.then(
|
|
121
|
-
(data) => {
|
|
122
|
-
dispatch({ type: "resolved", data });
|
|
123
|
-
},
|
|
124
|
-
(error) => {
|
|
125
|
-
dispatch({ type: "rejected", error });
|
|
126
|
-
}
|
|
127
|
-
);
|
|
128
|
-
},
|
|
129
|
-
[dispatch]
|
|
130
|
-
);
|
|
131
|
-
const setData = (0, import_react2.useCallback)((data) => dispatch({ type: "resolved", data }), [dispatch]);
|
|
132
|
-
const setError = (0, import_react2.useCallback)((error) => dispatch({ type: "rejected", error }), [dispatch]);
|
|
133
|
-
return (0, import_react2.useMemo)(
|
|
134
|
-
() => ({
|
|
135
|
-
setData,
|
|
136
|
-
setError,
|
|
137
|
-
run,
|
|
138
|
-
...asyncState
|
|
139
|
-
}),
|
|
140
|
-
[asyncState, run, setData, setError]
|
|
141
|
-
);
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
// src/hooks/use-classnames.ts
|
|
145
|
-
var import_react3 = require("react");
|
|
146
|
-
var useClassNames = (classes) => (0, import_react3.useMemo)(
|
|
147
|
-
() => Object.entries(classes).reduce(
|
|
148
|
-
(compiledClassNames, [classname, value]) => value ? [...compiledClassNames, classname] : compiledClassNames,
|
|
149
|
-
[]
|
|
150
|
-
).join(" "),
|
|
151
|
-
[classes]
|
|
152
|
-
);
|
|
153
|
-
|
|
154
|
-
// src/hooks/use-event-listener.ts
|
|
155
|
-
var import_react4 = require("react");
|
|
156
|
-
function useEventListener(eventName, callback, element, options) {
|
|
157
|
-
const callbackRef = (0, import_react4.useRef)(callback);
|
|
158
|
-
(0, import_react4.useEffect)(() => {
|
|
159
|
-
callbackRef.current = callback;
|
|
160
|
-
}, [callback]);
|
|
161
|
-
(0, import_react4.useLayoutEffect)(() => {
|
|
162
|
-
const targetElement = element?.current ?? window;
|
|
163
|
-
if (!(targetElement && targetElement.addEventListener)) return;
|
|
164
|
-
const listener = (event) => callbackRef.current(event);
|
|
165
|
-
targetElement.addEventListener(eventName, listener, options);
|
|
166
|
-
return () => {
|
|
167
|
-
targetElement.removeEventListener(eventName, listener, options);
|
|
168
|
-
};
|
|
169
|
-
}, [eventName, element, options]);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// src/hooks/use-click-outside.ts
|
|
173
|
-
var checkIsOutside = (ref, target) => {
|
|
174
|
-
return ref.current && !ref.current.contains(target);
|
|
175
|
-
};
|
|
176
|
-
var useClickOutside = (ref, callback) => {
|
|
177
|
-
useEventListener("keydown", (e) => {
|
|
178
|
-
if (e.key === "Escape") {
|
|
179
|
-
callback();
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
useEventListener("mousedown", (event) => {
|
|
183
|
-
const target = event.target;
|
|
184
|
-
if (!target?.isConnected) {
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
|
-
const isOutside = (Array.isArray(ref) ? ref : [ref]).every((r) => checkIsOutside(r, target));
|
|
188
|
-
if (isOutside) {
|
|
189
|
-
callback();
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
};
|
|
193
|
-
|
|
194
|
-
// src/hooks/use-constant.ts
|
|
195
|
-
var import_react5 = require("react");
|
|
196
|
-
var useConstant = (initializer) => (0, import_react5.useState)(initializer)[0];
|
|
197
|
-
|
|
198
|
-
// src/hooks/use-cookie.ts
|
|
199
|
-
var import_react6 = require("react");
|
|
200
|
-
var generateCookieAttributes = (options) => {
|
|
201
|
-
const parts = [];
|
|
202
|
-
if (options.expires instanceof Date) {
|
|
203
|
-
parts.push(`expires=${options.expires.toUTCString()}`);
|
|
204
|
-
} else if (typeof options.days === "number") {
|
|
205
|
-
const date = /* @__PURE__ */ new Date();
|
|
206
|
-
date.setTime(date.getTime() + options.days * 24 * 60 * 60 * 1e3);
|
|
207
|
-
parts.push(`expires=${date.toUTCString()}`);
|
|
208
|
-
}
|
|
209
|
-
if (typeof options.maxAge === "number") {
|
|
210
|
-
parts.push(`max-age=${options.maxAge}`);
|
|
211
|
-
}
|
|
212
|
-
parts.push(`path=${options.path ?? "/"}`);
|
|
213
|
-
if (options.domain) {
|
|
214
|
-
parts.push(`domain=${options.domain}`);
|
|
215
|
-
}
|
|
216
|
-
if (options.secure) {
|
|
217
|
-
parts.push("secure");
|
|
218
|
-
}
|
|
219
|
-
if (options.sameSite) {
|
|
220
|
-
parts.push(`SameSite=${options.sameSite}`);
|
|
221
|
-
}
|
|
222
|
-
return parts.length > 0 ? `; ${parts.join("; ")}` : "";
|
|
223
|
-
};
|
|
224
|
-
var setCookie = (name, value, options = {}) => {
|
|
225
|
-
if (typeof document === "undefined") {
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
const encodedValue = encodeURIComponent(value);
|
|
229
|
-
const attributes = generateCookieAttributes(options);
|
|
230
|
-
document.cookie = `${name}=${encodedValue}${attributes}`;
|
|
231
|
-
};
|
|
232
|
-
var getCookie = (name) => {
|
|
233
|
-
if (typeof document === "undefined") {
|
|
234
|
-
return null;
|
|
235
|
-
}
|
|
236
|
-
const nameEq = `${name}=`;
|
|
237
|
-
const cookies = document.cookie ? document.cookie.split(";") : [];
|
|
238
|
-
for (const cookie of cookies) {
|
|
239
|
-
const cookieTrimmed = cookie.trim();
|
|
240
|
-
if (cookieTrimmed.indexOf(nameEq) === 0) {
|
|
241
|
-
return decodeURIComponent(cookieTrimmed.substring(nameEq.length));
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
return null;
|
|
245
|
-
};
|
|
246
|
-
var deleteCookie = (name, options = {}) => {
|
|
247
|
-
if (typeof document === "undefined") {
|
|
248
|
-
return;
|
|
249
|
-
}
|
|
250
|
-
setCookie(name, "", {
|
|
251
|
-
...options,
|
|
252
|
-
days: -1
|
|
253
|
-
});
|
|
254
|
-
};
|
|
255
|
-
var useCookie = (cookieName, defaultValue, options = {}) => {
|
|
256
|
-
const [cookieValue, setCookieValue] = (0, import_react6.useState)(() => {
|
|
257
|
-
const rawCookie = getCookie(cookieName);
|
|
258
|
-
if (rawCookie !== null) {
|
|
259
|
-
try {
|
|
260
|
-
return JSON.parse(rawCookie);
|
|
261
|
-
} catch {
|
|
262
|
-
return defaultValue;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
return defaultValue;
|
|
266
|
-
});
|
|
267
|
-
const updateCookie = (0, import_react6.useCallback)(
|
|
268
|
-
(value, overrideOptions = {}) => {
|
|
269
|
-
const mergedOptions = { ...options, ...overrideOptions };
|
|
270
|
-
const stringValue = JSON.stringify(value);
|
|
271
|
-
setCookie(cookieName, stringValue, mergedOptions);
|
|
272
|
-
setCookieValue(value);
|
|
273
|
-
},
|
|
274
|
-
[cookieName, options]
|
|
275
|
-
);
|
|
276
|
-
const removeCookie = (0, import_react6.useCallback)(() => {
|
|
277
|
-
deleteCookie(cookieName, options);
|
|
278
|
-
setCookieValue(defaultValue);
|
|
279
|
-
}, [cookieName, defaultValue, options]);
|
|
280
|
-
return [cookieValue, updateCookie, removeCookie];
|
|
281
|
-
};
|
|
282
|
-
|
|
283
|
-
// src/hooks/use-debounce.ts
|
|
284
|
-
var import_react7 = require("react");
|
|
285
|
-
var useDebounce = (value, delay = 500) => {
|
|
286
|
-
const [debouncedValue, setDebouncedValue] = (0, import_react7.useState)(value);
|
|
287
|
-
(0, import_react7.useEffect)(() => {
|
|
288
|
-
const timer = setTimeout(() => setDebouncedValue(value), delay);
|
|
289
|
-
return () => {
|
|
290
|
-
clearTimeout(timer);
|
|
291
|
-
};
|
|
292
|
-
}, [value, delay]);
|
|
293
|
-
return debouncedValue;
|
|
294
|
-
};
|
|
295
|
-
|
|
296
|
-
// src/hooks/use-debounce-state.ts
|
|
297
|
-
var import_react8 = require("react");
|
|
298
|
-
var useDebounceState = (defaultValue, delay = 500) => {
|
|
299
|
-
const [value, setValue] = (0, import_react8.useState)(defaultValue);
|
|
300
|
-
const debouncedValue = useDebounce(value, delay);
|
|
301
|
-
return [value, debouncedValue, setValue];
|
|
302
|
-
};
|
|
303
|
-
|
|
304
|
-
// src/hooks/use-dimensions.ts
|
|
305
|
-
var import_react10 = require("react");
|
|
306
|
-
|
|
307
|
-
// src/hooks/use-resize-observer.ts
|
|
308
|
-
var import_react9 = require("react");
|
|
309
|
-
var useResizeObserver = (ref, callback) => {
|
|
310
|
-
(0, import_react9.useEffect)(() => {
|
|
311
|
-
const refs = Array.isArray(ref) ? ref : [ref];
|
|
312
|
-
const observer = new ResizeObserver(callback);
|
|
313
|
-
refs.forEach((r) => r.current && observer.observe(r.current));
|
|
314
|
-
return () => {
|
|
315
|
-
observer.disconnect();
|
|
316
|
-
};
|
|
317
|
-
}, [ref, callback]);
|
|
318
|
-
};
|
|
319
|
-
|
|
320
|
-
// src/hooks/use-dimensions.ts
|
|
321
|
-
var useDimensions = (ref) => {
|
|
322
|
-
const [dimensions, setDimensions] = (0, import_react10.useState)({ width: 0, height: 0 });
|
|
323
|
-
useResizeObserver(ref, ([entry]) => {
|
|
324
|
-
if ((entry?.borderBoxSize ?? [])[0]) {
|
|
325
|
-
const { inlineSize: width, blockSize: height } = entry.borderBoxSize[0];
|
|
326
|
-
setDimensions({ width, height });
|
|
327
|
-
} else if (entry.contentRect) {
|
|
328
|
-
const { width, height } = entry.contentRect;
|
|
329
|
-
setDimensions({ width, height });
|
|
330
|
-
}
|
|
331
|
-
});
|
|
332
|
-
return dimensions;
|
|
333
|
-
};
|
|
334
|
-
|
|
335
|
-
// src/hooks/use-dom-container.ts
|
|
336
|
-
var import_react11 = require("react");
|
|
337
|
-
var createContainer = (containerID) => {
|
|
338
|
-
let domContainer = document.getElementById(containerID);
|
|
339
|
-
if (domContainer === null) {
|
|
340
|
-
domContainer = document.createElement("div");
|
|
341
|
-
domContainer.setAttribute("id", containerID);
|
|
342
|
-
document.body.appendChild(domContainer);
|
|
343
|
-
}
|
|
344
|
-
return domContainer;
|
|
345
|
-
};
|
|
346
|
-
var useDomContainer = (containerID) => {
|
|
347
|
-
const [container, setContainer] = (0, import_react11.useState)(() => createContainer(containerID));
|
|
348
|
-
(0, import_react11.useEffect)(() => {
|
|
349
|
-
const domContainer = document.getElementById(containerID);
|
|
350
|
-
if (container === null || domContainer === null) {
|
|
351
|
-
const domContainer2 = createContainer(containerID);
|
|
352
|
-
setContainer(domContainer2);
|
|
353
|
-
}
|
|
354
|
-
return () => {
|
|
355
|
-
if (container && container.parentNode && process.env.NODE_ENV === "production") {
|
|
356
|
-
document.body.removeChild(container);
|
|
357
|
-
}
|
|
358
|
-
};
|
|
359
|
-
}, [container, containerID]);
|
|
360
|
-
return container;
|
|
361
|
-
};
|
|
362
|
-
|
|
363
|
-
// src/hooks/use-file-reader.ts
|
|
364
|
-
var import_react12 = require("react");
|
|
365
|
-
|
|
366
|
-
// src/helpers/format-bytes.ts
|
|
367
|
-
var formatBytes = (bytes, decimals = 2) => {
|
|
368
|
-
if (bytes === 0) return "0 Bytes";
|
|
369
|
-
const k = 1e3;
|
|
370
|
-
const dm = decimals < 0 ? 0 : decimals;
|
|
371
|
-
const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
|
|
372
|
-
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
373
|
-
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
|
|
374
|
-
};
|
|
375
|
-
|
|
376
|
-
// src/helpers/get-modal-position.ts
|
|
377
|
-
var getModalPosition = ({ c, m, offset, position }) => {
|
|
378
|
-
let top = c.y + c.h + offset;
|
|
379
|
-
let left = c.x - (m.w - c.w) * (50 / 100);
|
|
380
|
-
switch (position) {
|
|
381
|
-
case "top" /* TOP */:
|
|
382
|
-
case "top center" /* TOP_CENTER */:
|
|
383
|
-
top = c.y - m.h - offset;
|
|
384
|
-
left = c.x - (m.w - c.w) / 2;
|
|
385
|
-
break;
|
|
386
|
-
case "top left" /* TOP_LEFT */:
|
|
387
|
-
top = c.y - m.h - offset;
|
|
388
|
-
left = c.x - m.w + c.w;
|
|
389
|
-
break;
|
|
390
|
-
case "top right" /* TOP_RIGHT */:
|
|
391
|
-
top = c.y - m.h - offset;
|
|
392
|
-
left = c.x;
|
|
393
|
-
break;
|
|
394
|
-
case "bottom" /* BOTTOM */:
|
|
395
|
-
case "bottom center" /* BOTTOM_CENTER */:
|
|
396
|
-
top = c.y + c.h + offset;
|
|
397
|
-
left = c.x - (m.w - c.w) / 2;
|
|
398
|
-
break;
|
|
399
|
-
case "bottom left" /* BOTTOM_LEFT */:
|
|
400
|
-
top = c.y + c.h + offset;
|
|
401
|
-
left = c.x - m.w + c.w;
|
|
402
|
-
break;
|
|
403
|
-
case "bottom right" /* BOTTOM_RIGHT */:
|
|
404
|
-
top = c.y + c.h + offset;
|
|
405
|
-
left = c.x;
|
|
406
|
-
break;
|
|
407
|
-
case "left" /* LEFT */:
|
|
408
|
-
case "left center" /* LEFT_CENTER */:
|
|
409
|
-
top = c.y - (m.h - c.h) / 2;
|
|
410
|
-
left = c.x - m.w - offset;
|
|
411
|
-
break;
|
|
412
|
-
case "left top" /* LEFT_TOP */:
|
|
413
|
-
top = c.y - m.h + c.h;
|
|
414
|
-
left = c.x - m.w - offset;
|
|
415
|
-
break;
|
|
416
|
-
case "left bottom" /* LEFT_BOTTOM */:
|
|
417
|
-
top = c.y;
|
|
418
|
-
left = c.x - m.w - offset;
|
|
419
|
-
break;
|
|
420
|
-
case "right" /* RIGHT */:
|
|
421
|
-
case "right center" /* RIGHT_CENTER */:
|
|
422
|
-
top = c.y - (m.h - c.h) / 2;
|
|
423
|
-
left = c.x + c.w + offset;
|
|
424
|
-
break;
|
|
425
|
-
case "right top" /* RIGHT_TOP */:
|
|
426
|
-
top = c.y - m.h + c.h;
|
|
427
|
-
left = c.x + c.w + offset;
|
|
428
|
-
break;
|
|
429
|
-
case "right bottom" /* RIGHT_BOTTOM */:
|
|
430
|
-
top = c.y;
|
|
431
|
-
left = c.x + c.w + offset;
|
|
432
|
-
break;
|
|
433
|
-
}
|
|
434
|
-
return {
|
|
435
|
-
left: Math.round(left),
|
|
436
|
-
top: Math.round(top)
|
|
437
|
-
};
|
|
438
|
-
};
|
|
439
|
-
var getOppositePosition = ({ top, left }, position, windowOffset, m) => {
|
|
440
|
-
const positions = position.split(" ");
|
|
441
|
-
const newPosition = [];
|
|
442
|
-
const rightOffset = left + m.w + windowOffset - window.innerWidth;
|
|
443
|
-
const bottomOffset = top + m.h + windowOffset - window.innerHeight;
|
|
444
|
-
for (const p of positions) {
|
|
445
|
-
if (p === "top" /* TOP */ && top < windowOffset) {
|
|
446
|
-
newPosition.push("bottom" /* BOTTOM */);
|
|
447
|
-
} else if (p === "left" /* LEFT */ && left < windowOffset) {
|
|
448
|
-
newPosition.push("right" /* RIGHT */);
|
|
449
|
-
} else if (p === "bottom" /* BOTTOM */ && bottomOffset > 0) {
|
|
450
|
-
newPosition.push("top" /* TOP */);
|
|
451
|
-
} else if (p === "right" /* RIGHT */ && rightOffset > 0) {
|
|
452
|
-
newPosition.push("left" /* LEFT */);
|
|
453
|
-
} else {
|
|
454
|
-
newPosition.push(p);
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
return newPosition.join(" ");
|
|
458
|
-
};
|
|
459
|
-
var fixModalPosition = ({ top, left }, m, windowOffset) => {
|
|
460
|
-
const rightOffset = left + m.w + windowOffset - window.innerWidth;
|
|
461
|
-
const bottomOffset = top + m.h + windowOffset - window.innerHeight;
|
|
462
|
-
left = rightOffset > 0 ? left - rightOffset : left;
|
|
463
|
-
top = bottomOffset > 0 ? top - bottomOffset : top;
|
|
464
|
-
left = left < windowOffset ? windowOffset : left;
|
|
465
|
-
top = top < windowOffset ? windowOffset : top;
|
|
466
|
-
return { top, left };
|
|
467
|
-
};
|
|
468
|
-
var getModalPositionRelativeToContainer = ({
|
|
469
|
-
c,
|
|
470
|
-
m,
|
|
471
|
-
offset,
|
|
472
|
-
windowOffset,
|
|
473
|
-
position
|
|
474
|
-
}) => {
|
|
475
|
-
const params = { c, m, offset, position };
|
|
476
|
-
let modalContainerStyle = getModalPosition(params);
|
|
477
|
-
const oppositePosition = getOppositePosition(modalContainerStyle, position, windowOffset, m);
|
|
478
|
-
if (oppositePosition !== position) {
|
|
479
|
-
modalContainerStyle = getModalPosition({
|
|
480
|
-
...params,
|
|
481
|
-
position: oppositePosition
|
|
482
|
-
});
|
|
483
|
-
}
|
|
484
|
-
const fixedPosition = fixModalPosition(modalContainerStyle, m, windowOffset);
|
|
485
|
-
return {
|
|
486
|
-
left: `${fixedPosition.left}px`,
|
|
487
|
-
top: `${fixedPosition.top}px`
|
|
488
|
-
};
|
|
489
|
-
};
|
|
490
|
-
|
|
491
|
-
// src/helpers/get-modal-position-relative-to-screen.ts
|
|
492
|
-
var getModalPositionRelativeToScreen = ({
|
|
493
|
-
position,
|
|
494
|
-
windowOffset
|
|
495
|
-
}) => {
|
|
496
|
-
switch (position) {
|
|
497
|
-
case "center" /* CENTER */:
|
|
498
|
-
return {
|
|
499
|
-
top: "50%",
|
|
500
|
-
left: "50%",
|
|
501
|
-
transform: "translate(-50%, -50%)"
|
|
502
|
-
};
|
|
503
|
-
case "top" /* TOP */:
|
|
504
|
-
case "top center" /* TOP_CENTER */:
|
|
505
|
-
return {
|
|
506
|
-
top: `${windowOffset}px`,
|
|
507
|
-
left: "50%",
|
|
508
|
-
transform: "translateX(-50%)"
|
|
509
|
-
};
|
|
510
|
-
case "top left" /* TOP_LEFT */:
|
|
511
|
-
case "left top" /* LEFT_TOP */:
|
|
512
|
-
return {
|
|
513
|
-
top: `${windowOffset}px`,
|
|
514
|
-
left: `${windowOffset}px`
|
|
515
|
-
};
|
|
516
|
-
case "top right" /* TOP_RIGHT */:
|
|
517
|
-
case "right top" /* RIGHT_TOP */:
|
|
518
|
-
return {
|
|
519
|
-
top: `${windowOffset}px`,
|
|
520
|
-
right: `${windowOffset}px`
|
|
521
|
-
};
|
|
522
|
-
case "bottom" /* BOTTOM */:
|
|
523
|
-
case "bottom center" /* BOTTOM_CENTER */:
|
|
524
|
-
return {
|
|
525
|
-
bottom: `${windowOffset}px`,
|
|
526
|
-
left: "50%",
|
|
527
|
-
transform: "translateX(-50%)"
|
|
528
|
-
};
|
|
529
|
-
case "left bottom" /* LEFT_BOTTOM */:
|
|
530
|
-
case "bottom left" /* BOTTOM_LEFT */:
|
|
531
|
-
return {
|
|
532
|
-
bottom: `${windowOffset}px`,
|
|
533
|
-
left: `${windowOffset}px`
|
|
534
|
-
};
|
|
535
|
-
case "right bottom" /* RIGHT_BOTTOM */:
|
|
536
|
-
case "bottom right" /* BOTTOM_RIGHT */:
|
|
537
|
-
return {
|
|
538
|
-
bottom: `${windowOffset}px`,
|
|
539
|
-
right: `${windowOffset}px`
|
|
540
|
-
};
|
|
541
|
-
case "left" /* LEFT */:
|
|
542
|
-
case "left center" /* LEFT_CENTER */:
|
|
543
|
-
return {
|
|
544
|
-
top: "50%",
|
|
545
|
-
left: `${windowOffset}px`,
|
|
546
|
-
transform: "translateY(-50%)"
|
|
547
|
-
};
|
|
548
|
-
case "right" /* RIGHT */:
|
|
549
|
-
case "right center" /* RIGHT_CENTER */:
|
|
550
|
-
return {
|
|
551
|
-
top: "50%",
|
|
552
|
-
right: `${windowOffset}px`,
|
|
553
|
-
transform: "translateY(-50%)"
|
|
554
|
-
};
|
|
555
|
-
}
|
|
556
|
-
return {
|
|
557
|
-
top: "50%",
|
|
558
|
-
left: "50%",
|
|
559
|
-
transform: "translate(-50%, -50%)"
|
|
560
|
-
};
|
|
561
|
-
};
|
|
562
|
-
|
|
563
|
-
// src/hooks/use-file-reader.ts
|
|
564
|
-
var FileTypeEnum = /* @__PURE__ */ ((FileTypeEnum2) => {
|
|
565
|
-
FileTypeEnum2["PNG"] = "image/png";
|
|
566
|
-
FileTypeEnum2["PDF"] = "application/pdf";
|
|
567
|
-
return FileTypeEnum2;
|
|
568
|
-
})(FileTypeEnum || {});
|
|
569
|
-
var useFileReader = (inputFiles) => {
|
|
570
|
-
const [files, setFiles] = (0, import_react12.useState)([]);
|
|
571
|
-
(0, import_react12.useEffect)(() => {
|
|
572
|
-
const fileReaders = [];
|
|
573
|
-
let isCancel = false;
|
|
574
|
-
if (!Array.isArray(inputFiles) || inputFiles.length === 0) {
|
|
575
|
-
setFiles([]);
|
|
576
|
-
} else {
|
|
577
|
-
const promises = inputFiles.map((file) => {
|
|
578
|
-
return new Promise((resolve, reject) => {
|
|
579
|
-
const fileReader = new FileReader();
|
|
580
|
-
fileReaders.push(fileReader);
|
|
581
|
-
fileReader.onload = (e) => {
|
|
582
|
-
if (e.target?.result) {
|
|
583
|
-
resolve({
|
|
584
|
-
name: file.name,
|
|
585
|
-
size: file.size,
|
|
586
|
-
formatSize: formatBytes(file.size),
|
|
587
|
-
type: file.type,
|
|
588
|
-
url: e.target.result
|
|
589
|
-
});
|
|
590
|
-
}
|
|
591
|
-
};
|
|
592
|
-
fileReader.onabort = () => {
|
|
593
|
-
reject(new Error("File reading aborted"));
|
|
594
|
-
};
|
|
595
|
-
fileReader.onerror = () => {
|
|
596
|
-
reject(new Error("Failed to read file"));
|
|
597
|
-
};
|
|
598
|
-
fileReader.readAsDataURL(file);
|
|
599
|
-
});
|
|
600
|
-
});
|
|
601
|
-
Promise.all(promises).then((files2) => {
|
|
602
|
-
if (!isCancel) {
|
|
603
|
-
setFiles(files2);
|
|
604
|
-
}
|
|
605
|
-
});
|
|
606
|
-
}
|
|
607
|
-
return () => {
|
|
608
|
-
isCancel = true;
|
|
609
|
-
fileReaders.forEach((fileReader) => {
|
|
610
|
-
fileReader.abort();
|
|
611
|
-
});
|
|
612
|
-
};
|
|
613
|
-
}, [inputFiles]);
|
|
614
|
-
return files;
|
|
615
|
-
};
|
|
616
|
-
|
|
617
|
-
// src/hooks/use-geolocation.ts
|
|
618
|
-
var import_react13 = require("react");
|
|
619
|
-
var useGeolocation = () => {
|
|
620
|
-
const [data, setData] = (0, import_react13.useState)(null);
|
|
621
|
-
const [error, setError] = (0, import_react13.useState)(null);
|
|
622
|
-
const [isLoading, setIsLoading] = (0, import_react13.useState)(true);
|
|
623
|
-
const watchIdRef = (0, import_react13.useRef)(null);
|
|
624
|
-
(0, import_react13.useEffect)(() => {
|
|
625
|
-
if (!navigator.geolocation) {
|
|
626
|
-
setError({
|
|
627
|
-
code: 0,
|
|
628
|
-
message: "Geolocation is not supported by your browser."
|
|
629
|
-
});
|
|
630
|
-
setIsLoading(false);
|
|
631
|
-
return;
|
|
632
|
-
}
|
|
633
|
-
const handleSuccess = (position) => {
|
|
634
|
-
setData({
|
|
635
|
-
...position.coords,
|
|
636
|
-
timestamp: position.timestamp
|
|
637
|
-
});
|
|
638
|
-
setIsLoading(false);
|
|
639
|
-
};
|
|
640
|
-
const handleError = (geolocationError) => {
|
|
641
|
-
setError({
|
|
642
|
-
code: geolocationError.code,
|
|
643
|
-
message: geolocationError.message
|
|
644
|
-
});
|
|
645
|
-
setIsLoading(false);
|
|
646
|
-
};
|
|
647
|
-
navigator.geolocation.getCurrentPosition(handleSuccess, handleError);
|
|
648
|
-
watchIdRef.current = navigator.geolocation.watchPosition(handleSuccess, handleError);
|
|
649
|
-
return () => {
|
|
650
|
-
if (watchIdRef.current !== null) {
|
|
651
|
-
navigator.geolocation.clearWatch(watchIdRef.current);
|
|
652
|
-
}
|
|
653
|
-
};
|
|
654
|
-
}, []);
|
|
655
|
-
return { data, error, isLoading };
|
|
656
|
-
};
|
|
657
|
-
|
|
658
|
-
// src/hooks/use-hover.ts
|
|
659
|
-
var import_react14 = require("react");
|
|
660
|
-
var useHover = () => {
|
|
661
|
-
const [isHovered, setIsHovered] = (0, import_react14.useState)(false);
|
|
662
|
-
const ref = (0, import_react14.useRef)(null);
|
|
663
|
-
const handleMouseEnter = (0, import_react14.useCallback)(() => setIsHovered(true), []);
|
|
664
|
-
const handleMouseLeave = (0, import_react14.useCallback)(() => setIsHovered(false), []);
|
|
665
|
-
useEventListener("mouseenter", handleMouseEnter, ref);
|
|
666
|
-
useEventListener("mouseleave", handleMouseLeave, ref);
|
|
667
|
-
return isHovered;
|
|
668
|
-
};
|
|
669
|
-
|
|
670
|
-
// src/hooks/use-in-view.ts
|
|
671
|
-
var import_react16 = require("react");
|
|
672
|
-
|
|
673
|
-
// src/hooks/use-intersection-observer.ts
|
|
674
|
-
var import_react15 = require("react");
|
|
675
|
-
var useIntersectionObserver = (ref, callback, initOptions = {}) => {
|
|
676
|
-
(0, import_react15.useEffect)(() => {
|
|
677
|
-
const refs = Array.isArray(ref) ? ref : [ref];
|
|
678
|
-
const observer = new IntersectionObserver(callback, initOptions);
|
|
679
|
-
refs.forEach((r) => r.current && observer.observe(r.current));
|
|
680
|
-
return () => {
|
|
681
|
-
observer.disconnect();
|
|
682
|
-
};
|
|
683
|
-
}, [callback, initOptions, ref]);
|
|
684
|
-
};
|
|
685
|
-
|
|
686
|
-
// src/hooks/use-in-view.ts
|
|
687
|
-
var useInView = (initOptions = {}) => {
|
|
688
|
-
const [inView, setInView] = (0, import_react16.useState)(false);
|
|
689
|
-
const ref = (0, import_react16.useRef)(null);
|
|
690
|
-
useIntersectionObserver(
|
|
691
|
-
ref,
|
|
692
|
-
([entry]) => {
|
|
693
|
-
setInView(entry.isIntersecting);
|
|
694
|
-
},
|
|
695
|
-
initOptions
|
|
696
|
-
);
|
|
697
|
-
return { ref, inView };
|
|
698
|
-
};
|
|
699
|
-
|
|
700
|
-
// src/hooks/use-input-handlers.ts
|
|
701
|
-
var import_react17 = require("react");
|
|
702
|
-
var useInputHandlers = ({
|
|
703
|
-
onBlur,
|
|
704
|
-
onFocus,
|
|
705
|
-
onChange
|
|
706
|
-
} = {}) => {
|
|
707
|
-
const [isFocus, setIsFocus] = (0, import_react17.useState)(false);
|
|
708
|
-
const handleFocus = (0, import_react17.useCallback)(
|
|
709
|
-
(e) => {
|
|
710
|
-
setIsFocus(true);
|
|
711
|
-
onFocus && onFocus(e);
|
|
712
|
-
},
|
|
713
|
-
[onFocus]
|
|
714
|
-
);
|
|
715
|
-
const handleBlur = (0, import_react17.useCallback)(
|
|
716
|
-
(e) => {
|
|
717
|
-
setIsFocus(false);
|
|
718
|
-
onBlur && onBlur(e);
|
|
719
|
-
},
|
|
720
|
-
[onBlur]
|
|
721
|
-
);
|
|
722
|
-
const handleChange = (0, import_react17.useCallback)(
|
|
723
|
-
(e) => {
|
|
724
|
-
onChange && onChange(e);
|
|
725
|
-
},
|
|
726
|
-
[onChange]
|
|
727
|
-
);
|
|
728
|
-
return {
|
|
729
|
-
isFocus,
|
|
730
|
-
handlers: {
|
|
731
|
-
onFocus: handleFocus,
|
|
732
|
-
onBlur: handleBlur,
|
|
733
|
-
onChange: handleChange
|
|
734
|
-
}
|
|
735
|
-
};
|
|
736
|
-
};
|
|
737
|
-
|
|
738
|
-
// src/hooks/use-media-query.ts
|
|
739
|
-
var import_react18 = require("react");
|
|
740
|
-
var useMediaQuery = (query) => {
|
|
741
|
-
const [matches, setMatches] = (0, import_react18.useState)(false);
|
|
742
|
-
(0, import_react18.useEffect)(() => {
|
|
743
|
-
const media = window.matchMedia(query);
|
|
744
|
-
if (media.matches !== matches) {
|
|
745
|
-
setMatches(media.matches);
|
|
746
|
-
}
|
|
747
|
-
const listener = () => {
|
|
748
|
-
setMatches(media.matches);
|
|
749
|
-
};
|
|
750
|
-
media.addEventListener("change", listener);
|
|
751
|
-
return () => {
|
|
752
|
-
media.removeEventListener("change", listener);
|
|
753
|
-
};
|
|
754
|
-
}, [matches, query]);
|
|
755
|
-
return matches;
|
|
756
|
-
};
|
|
757
|
-
|
|
758
|
-
// src/hooks/use-modal.ts
|
|
759
|
-
var import_react19 = require("react");
|
|
760
|
-
var useModal = () => {
|
|
761
|
-
const containerRef = (0, import_react19.useRef)(null);
|
|
762
|
-
const [isOpen, setIsOpen] = (0, import_react19.useState)(false);
|
|
763
|
-
const openModal = () => {
|
|
764
|
-
setIsOpen(true);
|
|
765
|
-
};
|
|
766
|
-
const closeModal = () => {
|
|
767
|
-
setIsOpen(false);
|
|
768
|
-
};
|
|
769
|
-
return {
|
|
770
|
-
containerRef,
|
|
771
|
-
isOpen,
|
|
772
|
-
openModal,
|
|
773
|
-
closeModal
|
|
774
|
-
};
|
|
775
|
-
};
|
|
776
|
-
|
|
777
|
-
// src/hooks/use-modal-in-container.ts
|
|
778
|
-
var import_react20 = require("react");
|
|
779
|
-
var convertDOMRectToPosition = (rect) => ({
|
|
780
|
-
x: rect.x,
|
|
781
|
-
y: rect.y,
|
|
782
|
-
w: rect.width,
|
|
783
|
-
h: rect.height,
|
|
784
|
-
top: rect.top,
|
|
785
|
-
left: rect.left
|
|
786
|
-
});
|
|
787
|
-
var useModalInContainer = ({
|
|
788
|
-
offset = 0,
|
|
789
|
-
windowOffset = 0,
|
|
790
|
-
position = "bottom" /* BOTTOM */,
|
|
791
|
-
modalRef,
|
|
792
|
-
containerRef,
|
|
793
|
-
isOpen
|
|
794
|
-
}) => {
|
|
795
|
-
const containerTemporalRef = (0, import_react20.useRef)(null);
|
|
796
|
-
const getPosition = (0, import_react20.useCallback)(
|
|
797
|
-
(modalRef2, containerRef2) => {
|
|
798
|
-
const modal = modalRef2.current?.getClientRects()[0];
|
|
799
|
-
const container = containerRef2.current?.getClientRects()[0];
|
|
800
|
-
if (!modal) {
|
|
801
|
-
return;
|
|
802
|
-
}
|
|
803
|
-
const modalStyle = !container ? getModalPositionRelativeToScreen({ position, windowOffset }) : getModalPositionRelativeToContainer({
|
|
804
|
-
c: convertDOMRectToPosition(container),
|
|
805
|
-
m: convertDOMRectToPosition(modal),
|
|
806
|
-
offset,
|
|
807
|
-
windowOffset,
|
|
808
|
-
position
|
|
809
|
-
});
|
|
810
|
-
Object.keys(modalStyle).forEach((key) => {
|
|
811
|
-
modalRef2.current?.style.setProperty(key, modalStyle[key]);
|
|
812
|
-
});
|
|
813
|
-
},
|
|
814
|
-
[position, windowOffset, offset]
|
|
815
|
-
);
|
|
816
|
-
const callback = (0, import_react20.useCallback)(() => {
|
|
817
|
-
if (isOpen) {
|
|
818
|
-
getPosition(modalRef, containerRef ?? containerTemporalRef);
|
|
819
|
-
}
|
|
820
|
-
}, [getPosition, isOpen, containerRef, modalRef]);
|
|
821
|
-
(0, import_react20.useLayoutEffect)(callback, [callback]);
|
|
822
|
-
useResizeObserver(containerRef ?? containerTemporalRef, callback);
|
|
823
|
-
useResizeObserver(modalRef, callback);
|
|
824
|
-
useEventListener("resize", callback);
|
|
825
|
-
useEventListener("scroll", callback, modalRef);
|
|
826
|
-
};
|
|
827
|
-
|
|
828
|
-
// src/hooks/use-modal-transition.ts
|
|
829
|
-
var import_react21 = __toESM(require("react"), 1);
|
|
830
|
-
var ModalState = /* @__PURE__ */ ((ModalState2) => {
|
|
831
|
-
ModalState2["OPENING"] = "OPENING";
|
|
832
|
-
ModalState2["OPEN"] = "OPEN";
|
|
833
|
-
ModalState2["CLOSING"] = "CLOSING";
|
|
834
|
-
ModalState2["CLOSED"] = "CLOSED";
|
|
835
|
-
return ModalState2;
|
|
836
|
-
})(ModalState || {});
|
|
837
|
-
var useModalTransition = ({ transitionDuration = 0, isOpen }) => {
|
|
838
|
-
const [modalState, setModalState] = import_react21.default.useState("CLOSED" /* CLOSED */);
|
|
839
|
-
const isVisible = (0, import_react21.useMemo)(() => {
|
|
840
|
-
return modalState !== "CLOSED" /* CLOSED */;
|
|
841
|
-
}, [modalState]);
|
|
842
|
-
(0, import_react21.useEffect)(() => {
|
|
843
|
-
document.documentElement.style.overflow = isVisible ? "hidden" : "auto";
|
|
844
|
-
}, [isVisible]);
|
|
845
|
-
const closeModal = (0, import_react21.useCallback)(() => {
|
|
846
|
-
if (["OPENING" /* OPENING */, "OPEN" /* OPEN */].includes(modalState)) {
|
|
847
|
-
if (transitionDuration > 0) {
|
|
848
|
-
setModalState("CLOSING" /* CLOSING */);
|
|
849
|
-
setTimeout(() => {
|
|
850
|
-
setModalState("CLOSED" /* CLOSED */);
|
|
851
|
-
}, transitionDuration);
|
|
852
|
-
} else {
|
|
853
|
-
setModalState("CLOSED" /* CLOSED */);
|
|
854
|
-
}
|
|
855
|
-
}
|
|
856
|
-
}, [modalState, transitionDuration]);
|
|
857
|
-
const openModal = (0, import_react21.useCallback)(() => {
|
|
858
|
-
if (["CLOSING" /* CLOSING */, "CLOSED" /* CLOSED */].includes(modalState)) {
|
|
859
|
-
if (transitionDuration > 0) {
|
|
860
|
-
setModalState("OPENING" /* OPENING */);
|
|
861
|
-
setTimeout(() => {
|
|
862
|
-
setModalState("OPEN" /* OPEN */);
|
|
863
|
-
}, transitionDuration);
|
|
864
|
-
} else {
|
|
865
|
-
setModalState("OPEN" /* OPEN */);
|
|
866
|
-
}
|
|
867
|
-
}
|
|
868
|
-
}, [modalState, transitionDuration]);
|
|
869
|
-
(0, import_react21.useLayoutEffect)(() => {
|
|
870
|
-
if (modalState === "CLOSED" /* CLOSED */ && isOpen) {
|
|
871
|
-
openModal();
|
|
872
|
-
} else if (modalState === "OPEN" /* OPEN */ && !isOpen) {
|
|
873
|
-
closeModal();
|
|
874
|
-
}
|
|
875
|
-
}, [isOpen, openModal, closeModal, modalState]);
|
|
876
|
-
return {
|
|
877
|
-
isVisible,
|
|
878
|
-
modalState
|
|
879
|
-
};
|
|
880
|
-
};
|
|
881
|
-
|
|
882
|
-
// src/hooks/use-mouse-position.ts
|
|
883
|
-
var import_react22 = require("react");
|
|
884
|
-
var getMousePosition = (domRect, e) => {
|
|
885
|
-
const { left, top } = domRect;
|
|
886
|
-
const containerPositionX = left + window.scrollX;
|
|
887
|
-
const containerPositionY = top + window.scrollY;
|
|
888
|
-
const containerX = e.pageX - containerPositionX;
|
|
889
|
-
const containerY = e.pageY - containerPositionY;
|
|
890
|
-
return {
|
|
891
|
-
x: e.pageX,
|
|
892
|
-
y: e.pageY,
|
|
893
|
-
elementX: containerX,
|
|
894
|
-
elementY: containerY,
|
|
895
|
-
elementPositionX: containerPositionX,
|
|
896
|
-
elementPositionY: containerPositionY
|
|
897
|
-
};
|
|
898
|
-
};
|
|
899
|
-
var useMousePosition = (containerRef) => {
|
|
900
|
-
const ref = (0, import_react22.useRef)(null);
|
|
901
|
-
const [position, setPosition] = (0, import_react22.useState)({
|
|
902
|
-
x: null,
|
|
903
|
-
y: null,
|
|
904
|
-
elementX: null,
|
|
905
|
-
elementY: null,
|
|
906
|
-
elementPositionX: null,
|
|
907
|
-
elementPositionY: null
|
|
908
|
-
});
|
|
909
|
-
const mouseMove = (e) => {
|
|
910
|
-
const { clientX, clientY } = e;
|
|
911
|
-
setPosition((prev) => ({ ...prev, x: clientX, y: clientY }));
|
|
912
|
-
if (containerRef?.current instanceof Element) {
|
|
913
|
-
const newState = getMousePosition(containerRef.current.getBoundingClientRect(), e);
|
|
914
|
-
setPosition((prev) => ({
|
|
915
|
-
...prev,
|
|
916
|
-
...newState
|
|
917
|
-
}));
|
|
918
|
-
} else if (ref.current instanceof Element) {
|
|
919
|
-
const newState = getMousePosition(ref.current.getBoundingClientRect(), e);
|
|
920
|
-
setPosition((prev) => ({
|
|
921
|
-
...prev,
|
|
922
|
-
...newState
|
|
923
|
-
}));
|
|
924
|
-
}
|
|
925
|
-
};
|
|
926
|
-
useEventListener("mousemove", mouseMove);
|
|
927
|
-
return { ...position, ref };
|
|
928
|
-
};
|
|
929
|
-
|
|
930
|
-
// src/hooks/use-online-status.ts
|
|
931
|
-
var import_react23 = require("react");
|
|
932
|
-
var useOnlineStatus = () => {
|
|
933
|
-
const [online, setOnline] = (0, import_react23.useState)(navigator.onLine);
|
|
934
|
-
useEventListener("online", () => setOnline(navigator.onLine));
|
|
935
|
-
useEventListener("offline", () => setOnline(navigator.onLine));
|
|
936
|
-
return online;
|
|
937
|
-
};
|
|
938
|
-
|
|
939
|
-
// src/hooks/use-render-count.ts
|
|
940
|
-
var import_react24 = require("react");
|
|
941
|
-
var useRenderCount = () => {
|
|
942
|
-
const count = (0, import_react24.useRef)(1);
|
|
943
|
-
(0, import_react24.useEffect)(() => {
|
|
944
|
-
count.current++;
|
|
945
|
-
});
|
|
946
|
-
return count.current;
|
|
947
|
-
};
|
|
948
|
-
|
|
949
|
-
// src/hooks/use-scroll.ts
|
|
950
|
-
var import_react25 = require("react");
|
|
951
|
-
var useScroll = () => {
|
|
952
|
-
const ref = (0, import_react25.useRef)(null);
|
|
953
|
-
const [position, setPosition] = (0, import_react25.useState)([0, 0]);
|
|
954
|
-
(0, import_react25.useEffect)(() => {
|
|
955
|
-
const element = ref.current;
|
|
956
|
-
const handleScroll = () => {
|
|
957
|
-
if (!element) return;
|
|
958
|
-
setPosition([element.scrollLeft, element.scrollTop]);
|
|
959
|
-
};
|
|
960
|
-
if (element) {
|
|
961
|
-
element.addEventListener("scroll", handleScroll);
|
|
962
|
-
}
|
|
963
|
-
return () => {
|
|
964
|
-
if (element) {
|
|
965
|
-
element.removeEventListener("scroll", handleScroll);
|
|
966
|
-
}
|
|
967
|
-
};
|
|
968
|
-
}, []);
|
|
969
|
-
return {
|
|
970
|
-
ref,
|
|
971
|
-
position
|
|
972
|
-
};
|
|
973
|
-
};
|
|
974
|
-
|
|
975
|
-
// src/hooks/use-state-history.ts
|
|
976
|
-
var import_react26 = require("react");
|
|
977
|
-
function useStateHistory(initialState) {
|
|
978
|
-
const [state, setState] = (0, import_react26.useState)(initialState);
|
|
979
|
-
const [history, setHistory] = (0, import_react26.useState)([]);
|
|
980
|
-
(0, import_react26.useEffect)(() => {
|
|
981
|
-
if (state !== void 0) {
|
|
982
|
-
setHistory((prevHistory) => [...prevHistory, state]);
|
|
983
|
-
}
|
|
984
|
-
}, [state]);
|
|
985
|
-
return [state, setState, history];
|
|
986
|
-
}
|
|
987
|
-
|
|
988
|
-
// src/hooks/use-toggle.ts
|
|
989
|
-
var import_react27 = require("react");
|
|
990
|
-
var useToggle = (defaultValue = false) => {
|
|
991
|
-
const [value, setValue] = (0, import_react27.useState)(defaultValue);
|
|
992
|
-
const toggle = (0, import_react27.useCallback)(() => {
|
|
993
|
-
setValue((prev) => !prev);
|
|
994
|
-
}, []);
|
|
995
|
-
return [value, toggle, setValue];
|
|
996
|
-
};
|
|
997
|
-
|
|
998
|
-
// src/hooks/use-toggle-values.ts
|
|
999
|
-
var import_react28 = require("react");
|
|
1000
|
-
var useToggleValues = (values, defaultIndex = 0) => {
|
|
1001
|
-
const [index, setIndex] = (0, import_react28.useState)(defaultIndex);
|
|
1002
|
-
const toggle = (0, import_react28.useCallback)(
|
|
1003
|
-
(index2) => {
|
|
1004
|
-
setIndex(index2 !== void 0 ? index2 : (prev) => (prev + 1) % values.length);
|
|
1005
|
-
},
|
|
1006
|
-
[values.length]
|
|
1007
|
-
);
|
|
1008
|
-
return [values[index], toggle];
|
|
1009
|
-
};
|
|
1010
|
-
|
|
1011
|
-
// src/hooks/use-viewport.ts
|
|
1012
|
-
var import_react29 = require("react");
|
|
1013
|
-
var useViewport = () => {
|
|
1014
|
-
const getData = () => {
|
|
1015
|
-
const { innerWidth, innerHeight } = window;
|
|
1016
|
-
return {
|
|
1017
|
-
width: innerWidth,
|
|
1018
|
-
height: innerHeight,
|
|
1019
|
-
orientation: innerWidth > innerHeight ? "landscape" /* LANDSCAPE */ : "portrait" /* PORTRAIT */
|
|
1020
|
-
};
|
|
1021
|
-
};
|
|
1022
|
-
const [data, setData] = (0, import_react29.useState)(getData);
|
|
1023
|
-
useEventListener("resize", () => {
|
|
1024
|
-
setData(getData());
|
|
1025
|
-
});
|
|
1026
|
-
(0, import_react29.useEffect)(() => {
|
|
1027
|
-
setData(getData());
|
|
1028
|
-
}, []);
|
|
1029
|
-
return data;
|
|
1030
|
-
};
|
|
1031
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
1032
|
-
0 && (module.exports = {
|
|
1033
|
-
FileTypeEnum,
|
|
1034
|
-
ModalState,
|
|
1035
|
-
useAsync,
|
|
1036
|
-
useClassNames,
|
|
1037
|
-
useClickOutside,
|
|
1038
|
-
useConstant,
|
|
1039
|
-
useCookie,
|
|
1040
|
-
useDebounce,
|
|
1041
|
-
useDebounceState,
|
|
1042
|
-
useDimensions,
|
|
1043
|
-
useDomContainer,
|
|
1044
|
-
useEventListener,
|
|
1045
|
-
useFileReader,
|
|
1046
|
-
useGeolocation,
|
|
1047
|
-
useHover,
|
|
1048
|
-
useInView,
|
|
1049
|
-
useInputHandlers,
|
|
1050
|
-
useIntersectionObserver,
|
|
1051
|
-
useMediaQuery,
|
|
1052
|
-
useModal,
|
|
1053
|
-
useModalInContainer,
|
|
1054
|
-
useModalTransition,
|
|
1055
|
-
useMousePosition,
|
|
1056
|
-
useOnlineStatus,
|
|
1057
|
-
useRenderCount,
|
|
1058
|
-
useResizeObserver,
|
|
1059
|
-
useSafeDispatch,
|
|
1060
|
-
useScroll,
|
|
1061
|
-
useStateHistory,
|
|
1062
|
-
useToggle,
|
|
1063
|
-
useToggleValues,
|
|
1064
|
-
useViewport
|
|
1065
|
-
});
|
|
1066
|
-
//# sourceMappingURL=hooks.cjs.map
|
|
2
|
+
"use strict";var ae=Object.create;var h=Object.defineProperty;var ue=Object.getOwnPropertyDescriptor;var ce=Object.getOwnPropertyNames;var le=Object.getPrototypeOf,me=Object.prototype.hasOwnProperty;var pe=(e,t)=>{for(var o in t)h(e,o,{get:t[o],enumerable:!0})},U=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ce(t))!me.call(e,r)&&r!==o&&h(e,r,{get:()=>t[r],enumerable:!(n=ue(t,r))||n.enumerable});return e};var de=(e,t,o)=>(o=e!=null?ae(le(e)):{},U(t||!e||!e.__esModule?h(o,"default",{value:e,enumerable:!0}):o,e)),Te=e=>U(h({},"__esModule",{value:!0}),e);var Je={};pe(Je,{FileTypeEnum:()=>te,ModalState:()=>re,useAsync:()=>Ee,useClassNames:()=>ve,useClickOutside:()=>Me,useConstant:()=>be,useCookie:()=>he,useDebounce:()=>G,useDebounceState:()=>Re,useDimensions:()=>Ce,useDomContainer:()=>Pe,useEventListener:()=>l,useFileReader:()=>Ae,useGeolocation:()=>De,useHover:()=>Ie,useInView:()=>we,useInputHandlers:()=>Ge,useIntersectionObserver:()=>j,useMediaQuery:()=>je,useModal:()=>Be,useModalInContainer:()=>Fe,useModalTransition:()=>$e,useMousePosition:()=>_e,useOnlineStatus:()=>Ue,useRenderCount:()=>ze,useResizeObserver:()=>M,useSafeDispatch:()=>w,useScroll:()=>Ve,useStateHistory:()=>Ye,useToggle:()=>Xe,useToggleValues:()=>We,useViewport:()=>Qe});module.exports=Te(Je);var p=require("react");var v=require("react"),w=e=>{let t=(0,v.useRef)(!1);return(0,v.useLayoutEffect)(()=>(t.current=!0,()=>{t.current=!1}),[]),(0,v.useCallback)((...o)=>{t.current&&e(...o)},[e])};var fe=(e,t)=>{switch(t.type){case"pending":return{status:"pending",data:null,error:null};case"resolved":return{status:"resolved",data:t.data,error:null};case"rejected":return{status:"rejected",data:null,error:t.error};default:throw new Error(`Unhandled action: ${JSON.stringify(t)}`)}},Ee=e=>{let[t,o]=(0,p.useReducer)(fe,{status:"idle",data:null,error:null,...e}),n=w(o),r=(0,p.useCallback)(u=>{n({type:"pending"}),u.then(a=>{n({type:"resolved",data:a})},a=>{n({type:"rejected",error:a})})},[n]),s=(0,p.useCallback)(u=>n({type:"resolved",data:u}),[n]),i=(0,p.useCallback)(u=>n({type:"rejected",error:u}),[n]);return(0,p.useMemo)(()=>({setData:s,setError:i,run:r,...t}),[t,r,s,i])};var z=require("react"),ve=e=>(0,z.useMemo)(()=>Object.entries(e).reduce((t,[o,n])=>n?[...t,o]:t,[]).join(" "),[e]);var x=require("react");function l(e,t,o,n){let r=(0,x.useRef)(t);(0,x.useEffect)(()=>{r.current=t},[t]),(0,x.useLayoutEffect)(()=>{let s=o?.current??window;if(!(s&&s.addEventListener))return;let i=u=>r.current(u);return s.addEventListener(e,i,n),()=>{s.removeEventListener(e,i,n)}},[e,o,n])}var xe=(e,t)=>e.current&&!e.current.contains(t),Me=(e,t)=>{l("keydown",o=>{o.key==="Escape"&&t()}),l("mousedown",o=>{let n=o.target;if(!n?.isConnected)return;(Array.isArray(e)?e:[e]).every(s=>xe(s,n))&&t()})};var V=require("react"),be=e=>(0,V.useState)(e)[0];var O=require("react"),ge=e=>{let t=[];if(e.expires instanceof Date)t.push(`expires=${e.expires.toUTCString()}`);else if(typeof e.days=="number"){let o=new Date;o.setTime(o.getTime()+e.days*24*60*60*1e3),t.push(`expires=${o.toUTCString()}`)}return typeof e.maxAge=="number"&&t.push(`max-age=${e.maxAge}`),t.push(`path=${e.path??"/"}`),e.domain&&t.push(`domain=${e.domain}`),e.secure&&t.push("secure"),e.sameSite&&t.push(`SameSite=${e.sameSite}`),t.length>0?`; ${t.join("; ")}`:""},Y=(e,t,o={})=>{if(typeof document>"u")return;let n=encodeURIComponent(t),r=ge(o);document.cookie=`${e}=${n}${r}`},Oe=e=>{if(typeof document>"u")return null;let t=`${e}=`,o=document.cookie?document.cookie.split(";"):[];for(let n of o){let r=n.trim();if(r.indexOf(t)===0)return decodeURIComponent(r.substring(t.length))}return null},ye=(e,t={})=>{typeof document>"u"||Y(e,"",{...t,days:-1})},he=(e,t,o={})=>{let[n,r]=(0,O.useState)(()=>{let u=Oe(e);if(u!==null)try{return JSON.parse(u)}catch{return t}return t}),s=(0,O.useCallback)((u,a={})=>{let c={...o,...a},E=JSON.stringify(u);Y(e,E,c),r(u)},[e,o]),i=(0,O.useCallback)(()=>{ye(e,o),r(t)},[e,t,o]);return[n,s,i]};var R=require("react"),G=(e,t=500)=>{let[o,n]=(0,R.useState)(e);return(0,R.useEffect)(()=>{let r=setTimeout(()=>n(e),t);return()=>{clearTimeout(r)}},[e,t]),o};var X=require("react");var Re=(e,t=500)=>{let[o,n]=(0,X.useState)(e),r=G(o,t);return[o,r,n]};var Q=require("react");var W=require("react"),M=(e,t)=>{(0,W.useEffect)(()=>{let o=Array.isArray(e)?e:[e],n=new ResizeObserver(t);return o.forEach(r=>r.current&&n.observe(r.current)),()=>{n.disconnect()}},[e,t])};var Ce=e=>{let[t,o]=(0,Q.useState)({width:0,height:0});return M(e,([n])=>{if((n?.borderBoxSize??[])[0]){let{inlineSize:r,blockSize:s}=n.borderBoxSize[0];o({width:r,height:s})}else if(n.contentRect){let{width:r,height:s}=n.contentRect;o({width:r,height:s})}}),t};var C=require("react"),J=e=>{let t=document.getElementById(e);return t===null&&(t=document.createElement("div"),t.setAttribute("id",e),document.body.appendChild(t)),t},Pe=e=>{let[t,o]=(0,C.useState)(()=>J(e));return(0,C.useEffect)(()=>{let n=document.getElementById(e);if(t===null||n===null){let r=J(e);o(r)}return()=>{t&&t.parentNode&&process.env.NODE_ENV==="production"&&document.body.removeChild(t)}},[t,e]),t};var P=require("react");var Se=require("clsx"),Le=require("tailwind-merge");var K=(e,t=2)=>{if(e===0)return"0 Bytes";let o=1e3,n=t<0?0:t,r=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],s=Math.floor(Math.log(e)/Math.log(o));return parseFloat((e/Math.pow(o,s)).toFixed(n))+" "+r[s]};var Z=({c:e,m:t,offset:o,position:n})=>{let r=e.y+e.h+o,s=e.x-(t.w-e.w)*(50/100);switch(n){case"top":case"top center":r=e.y-t.h-o,s=e.x-(t.w-e.w)/2;break;case"top left":r=e.y-t.h-o,s=e.x-t.w+e.w;break;case"top right":r=e.y-t.h-o,s=e.x;break;case"bottom":case"bottom center":r=e.y+e.h+o,s=e.x-(t.w-e.w)/2;break;case"bottom left":r=e.y+e.h+o,s=e.x-t.w+e.w;break;case"bottom right":r=e.y+e.h+o,s=e.x;break;case"left":case"left center":r=e.y-(t.h-e.h)/2,s=e.x-t.w-o;break;case"left top":r=e.y-t.h+e.h,s=e.x-t.w-o;break;case"left bottom":r=e.y,s=e.x-t.w-o;break;case"right":case"right center":r=e.y-(t.h-e.h)/2,s=e.x+e.w+o;break;case"right top":r=e.y-t.h+e.h,s=e.x+e.w+o;break;case"right bottom":r=e.y,s=e.x+e.w+o;break}return{left:Math.round(s),top:Math.round(r)}},Ne=({top:e,left:t},o,n,r)=>{let s=o.split(" "),i=[],u=t+r.w+n-window.innerWidth,a=e+r.h+n-window.innerHeight;for(let c of s)c==="top"&&e<n?i.push("bottom"):c==="left"&&t<n?i.push("right"):c==="bottom"&&a>0?i.push("top"):c==="right"&&u>0?i.push("left"):i.push(c);return i.join(" ")},ke=({top:e,left:t},o,n)=>{let r=t+o.w+n-window.innerWidth,s=e+o.h+n-window.innerHeight;return t=r>0?t-r:t,e=s>0?e-s:e,t=t<n?n:t,e=e<n?n:e,{top:e,left:t}},q=({c:e,m:t,offset:o,windowOffset:n,position:r})=>{let s={c:e,m:t,offset:o,position:r},i=Z(s),u=Ne(i,r,n,t);u!==r&&(i=Z({...s,position:u}));let a=ke(i,t,n);return{left:`${a.left}px`,top:`${a.top}px`}};var ee=({position:e,windowOffset:t})=>{switch(e){case"center":return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"};case"top":case"top center":return{top:`${t}px`,left:"50%",transform:"translateX(-50%)"};case"top left":case"left top":return{top:`${t}px`,left:`${t}px`};case"top right":case"right top":return{top:`${t}px`,right:`${t}px`};case"bottom":case"bottom center":return{bottom:`${t}px`,left:"50%",transform:"translateX(-50%)"};case"left bottom":case"bottom left":return{bottom:`${t}px`,left:`${t}px`};case"right bottom":case"bottom right":return{bottom:`${t}px`,right:`${t}px`};case"left":case"left center":return{top:"50%",left:`${t}px`,transform:"translateY(-50%)"};case"right":case"right center":return{top:"50%",right:`${t}px`,transform:"translateY(-50%)"}}return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"}};var te=(o=>(o.PNG="image/png",o.PDF="application/pdf",o))(te||{}),Ae=e=>{let[t,o]=(0,P.useState)([]);return(0,P.useEffect)(()=>{let n=[],r=!1;if(!Array.isArray(e)||e.length===0)o([]);else{let s=e.map(i=>new Promise((u,a)=>{let c=new FileReader;n.push(c),c.onload=E=>{E.target?.result&&u({name:i.name,size:i.size,formatSize:K(i.size),type:i.type,url:E.target.result})},c.onabort=()=>{a(new Error("File reading aborted"))},c.onerror=()=>{a(new Error("Failed to read file"))},c.readAsDataURL(i)}));Promise.all(s).then(i=>{r||o(i)})}return()=>{r=!0,n.forEach(s=>{s.abort()})}},[e]),t};var d=require("react"),De=()=>{let[e,t]=(0,d.useState)(null),[o,n]=(0,d.useState)(null),[r,s]=(0,d.useState)(!0),i=(0,d.useRef)(null);return(0,d.useEffect)(()=>{if(!navigator.geolocation){n({code:0,message:"Geolocation is not supported by your browser."}),s(!1);return}let u=c=>{t({...c.coords,timestamp:c.timestamp}),s(!1)},a=c=>{n({code:c.code,message:c.message}),s(!1)};return navigator.geolocation.getCurrentPosition(u,a),i.current=navigator.geolocation.watchPosition(u,a),()=>{i.current!==null&&navigator.geolocation.clearWatch(i.current)}},[]),{data:e,error:o,isLoading:r}};var T=require("react");var Ie=()=>{let[e,t]=(0,T.useState)(!1),o=(0,T.useRef)(null),n=(0,T.useCallback)(()=>t(!0),[]),r=(0,T.useCallback)(()=>t(!1),[]);return l("mouseenter",n,o),l("mouseleave",r,o),e};var S=require("react");var oe=require("react"),j=(e,t,o={})=>{(0,oe.useEffect)(()=>{let n=Array.isArray(e)?e:[e],r=new IntersectionObserver(t,o);return n.forEach(s=>s.current&&r.observe(s.current)),()=>{r.disconnect()}},[t,o,e])};var we=(e={})=>{let[t,o]=(0,S.useState)(!1),n=(0,S.useRef)(null);return j(n,([r])=>{o(r.isIntersecting)},e),{ref:n,inView:t}};var b=require("react"),Ge=({onBlur:e,onFocus:t,onChange:o}={})=>{let[n,r]=(0,b.useState)(!1),s=(0,b.useCallback)(a=>{r(!0),t&&t(a)},[t]),i=(0,b.useCallback)(a=>{r(!1),e&&e(a)},[e]),u=(0,b.useCallback)(a=>{o&&o(a)},[o]);return{isFocus:n,handlers:{onFocus:s,onBlur:i,onChange:u}}};var L=require("react"),je=e=>{let[t,o]=(0,L.useState)(!1);return(0,L.useEffect)(()=>{let n=window.matchMedia(e);n.matches!==t&&o(n.matches);let r=()=>{o(n.matches)};return n.addEventListener("change",r),()=>{n.removeEventListener("change",r)}},[t,e]),t};var N=require("react"),Be=()=>{let e=(0,N.useRef)(null),[t,o]=(0,N.useState)(!1);return{containerRef:e,isOpen:t,openModal:()=>{o(!0)},closeModal:()=>{o(!1)}}};var f=require("react");var ne=e=>({x:e.x,y:e.y,w:e.width,h:e.height,top:e.top,left:e.left}),Fe=({offset:e=0,windowOffset:t=0,position:o="bottom",modalRef:n,containerRef:r,isOpen:s})=>{let i=(0,f.useRef)(null),u=(0,f.useCallback)((c,E)=>{let B=c.current?.getClientRects()[0],F=E.current?.getClientRects()[0];if(!B)return;let $=F?q({c:ne(F),m:ne(B),offset:e,windowOffset:t,position:o}):ee({position:o,windowOffset:t});Object.keys($).forEach(_=>{c.current?.style.setProperty(_,$[_])})},[o,t,e]),a=(0,f.useCallback)(()=>{s&&u(n,r??i)},[u,s,r,n]);(0,f.useLayoutEffect)(a,[a]),M(r??i,a),M(n,a),l("resize",a),l("scroll",a,n)};var m=de(require("react"),1),re=(r=>(r.OPENING="OPENING",r.OPEN="OPEN",r.CLOSING="CLOSING",r.CLOSED="CLOSED",r))(re||{}),$e=({transitionDuration:e=0,isOpen:t})=>{let[o,n]=m.default.useState("CLOSED"),r=(0,m.useMemo)(()=>o!=="CLOSED",[o]);(0,m.useEffect)(()=>{document.documentElement.style.overflow=r?"hidden":"auto"},[r]);let s=(0,m.useCallback)(()=>{["OPENING","OPEN"].includes(o)&&(e>0?(n("CLOSING"),setTimeout(()=>{n("CLOSED")},e)):n("CLOSED"))},[o,e]),i=(0,m.useCallback)(()=>{["CLOSING","CLOSED"].includes(o)&&(e>0?(n("OPENING"),setTimeout(()=>{n("OPEN")},e)):n("OPEN"))},[o,e]);return(0,m.useLayoutEffect)(()=>{o==="CLOSED"&&t?i():o==="OPEN"&&!t&&s()},[t,i,s,o]),{isVisible:r,modalState:o}};var k=require("react");var se=(e,t)=>{let{left:o,top:n}=e,r=o+window.scrollX,s=n+window.scrollY,i=t.pageX-r,u=t.pageY-s;return{x:t.pageX,y:t.pageY,elementX:i,elementY:u,elementPositionX:r,elementPositionY:s}},_e=e=>{let t=(0,k.useRef)(null),[o,n]=(0,k.useState)({x:null,y:null,elementX:null,elementY:null,elementPositionX:null,elementPositionY:null});return l("mousemove",s=>{let{clientX:i,clientY:u}=s;if(n(a=>({...a,x:i,y:u})),e?.current instanceof Element){let a=se(e.current.getBoundingClientRect(),s);n(c=>({...c,...a}))}else if(t.current instanceof Element){let a=se(t.current.getBoundingClientRect(),s);n(c=>({...c,...a}))}}),{...o,ref:t}};var ie=require("react");var Ue=()=>{let[e,t]=(0,ie.useState)(navigator.onLine);return l("online",()=>t(navigator.onLine)),l("offline",()=>t(navigator.onLine)),e};var H=require("react"),ze=()=>{let e=(0,H.useRef)(1);return(0,H.useEffect)(()=>{e.current++}),e.current};var g=require("react"),Ve=()=>{let e=(0,g.useRef)(null),[t,o]=(0,g.useState)([0,0]);return(0,g.useEffect)(()=>{let n=e.current,r=()=>{n&&o([n.scrollLeft,n.scrollTop])};return n&&n.addEventListener("scroll",r),()=>{n&&n.removeEventListener("scroll",r)}},[]),{ref:e,position:t}};var y=require("react");function Ye(e){let[t,o]=(0,y.useState)(e),[n,r]=(0,y.useState)([]);return(0,y.useEffect)(()=>{t!==void 0&&r(s=>[...s,t])},[t]),[t,o,n]}var A=require("react"),Xe=(e=!1)=>{let[t,o]=(0,A.useState)(e),n=(0,A.useCallback)(()=>{o(r=>!r)},[]);return[t,n,o]};var D=require("react"),We=(e,t=0)=>{let[o,n]=(0,D.useState)(t),r=(0,D.useCallback)(s=>{n(s!==void 0?s:i=>(i+1)%e.length)},[e.length]);return[e[o],r]};var I=require("react");var Qe=()=>{let e=()=>{let{innerWidth:n,innerHeight:r}=window;return{width:n,height:r,orientation:n>r?"landscape":"portrait"}},[t,o]=(0,I.useState)(e);return l("resize",()=>{o(e())}),(0,I.useEffect)(()=>{o(e())},[]),t};0&&(module.exports={FileTypeEnum,ModalState,useAsync,useClassNames,useClickOutside,useConstant,useCookie,useDebounce,useDebounceState,useDimensions,useDomContainer,useEventListener,useFileReader,useGeolocation,useHover,useInView,useInputHandlers,useIntersectionObserver,useMediaQuery,useModal,useModalInContainer,useModalTransition,useMousePosition,useOnlineStatus,useRenderCount,useResizeObserver,useSafeDispatch,useScroll,useStateHistory,useToggle,useToggleValues,useViewport});
|