@udecode/react-utils 40.2.8 → 42.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.
- package/dist/index.d.mts +11 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.js +60 -82
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +56 -82
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/dist/index.d.mts
CHANGED
|
@@ -95,6 +95,16 @@ declare const useIsomorphicLayoutEffect: typeof React.useEffect;
|
|
|
95
95
|
|
|
96
96
|
declare function useMemoOnce<T>(factory: () => T, deps: React.DependencyList): T;
|
|
97
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Re-render only when the selector result changes.
|
|
100
|
+
*
|
|
101
|
+
* @param selector A function that derives a value from deps
|
|
102
|
+
* @param deps Dependencies on which to run the selector
|
|
103
|
+
* @param equalityFn Optional comparison function to detect changes in the
|
|
104
|
+
* derived value
|
|
105
|
+
*/
|
|
106
|
+
declare function useMemoizedSelector<R>(selector: () => R, deps: React.DependencyList, equalityFn?: (a: R, b: R) => boolean): R;
|
|
107
|
+
|
|
98
108
|
declare const DEFAULT_IGNORE_CLASS = "ignore-onclickoutside";
|
|
99
109
|
type UseOnClickOutsideCallback<T extends Event = Event> = (event: T) => void;
|
|
100
110
|
type El = HTMLElement;
|
|
@@ -131,4 +141,4 @@ type InferElementRef<T> = T extends ElementType<any> ? T extends keyof JSX.Intri
|
|
|
131
141
|
*/
|
|
132
142
|
declare function withRef<T extends ElementType, P = {}>(renderFunction: React.ForwardRefRenderFunction<InferElementRef<T>, React.ComponentPropsWithoutRef<T> & P>): ForwardRefComponent<InferElementRef<T>, React.ComponentPropsWithoutRef<T> & P>;
|
|
133
143
|
|
|
134
|
-
export { Box, type BoxProps, CAN_USE_DOM, DEFAULT_IGNORE_CLASS, MemoizedChildren, PortalBody, type PortalBodyProps, Text, type TextProps, type UseOnClickOutsideCallback, type UseOnClickOutsideOptions, type UseOnClickOutsideReturn, composeEventHandlers, composeRefs, createPrimitiveComponent, createPrimitiveElement, createSlotComponent, useComposedRef, useEffectOnce, useIsomorphicLayoutEffect, useMemoOnce, useOnClickOutside, useStableMemo, withProviders, withRef };
|
|
144
|
+
export { Box, type BoxProps, CAN_USE_DOM, DEFAULT_IGNORE_CLASS, MemoizedChildren, PortalBody, type PortalBodyProps, Text, type TextProps, type UseOnClickOutsideCallback, type UseOnClickOutsideOptions, type UseOnClickOutsideReturn, composeEventHandlers, composeRefs, createPrimitiveComponent, createPrimitiveElement, createSlotComponent, useComposedRef, useEffectOnce, useIsomorphicLayoutEffect, useMemoOnce, useMemoizedSelector, useOnClickOutside, useStableMemo, withProviders, withRef };
|
package/dist/index.d.ts
CHANGED
|
@@ -95,6 +95,16 @@ declare const useIsomorphicLayoutEffect: typeof React.useEffect;
|
|
|
95
95
|
|
|
96
96
|
declare function useMemoOnce<T>(factory: () => T, deps: React.DependencyList): T;
|
|
97
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Re-render only when the selector result changes.
|
|
100
|
+
*
|
|
101
|
+
* @param selector A function that derives a value from deps
|
|
102
|
+
* @param deps Dependencies on which to run the selector
|
|
103
|
+
* @param equalityFn Optional comparison function to detect changes in the
|
|
104
|
+
* derived value
|
|
105
|
+
*/
|
|
106
|
+
declare function useMemoizedSelector<R>(selector: () => R, deps: React.DependencyList, equalityFn?: (a: R, b: R) => boolean): R;
|
|
107
|
+
|
|
98
108
|
declare const DEFAULT_IGNORE_CLASS = "ignore-onclickoutside";
|
|
99
109
|
type UseOnClickOutsideCallback<T extends Event = Event> = (event: T) => void;
|
|
100
110
|
type El = HTMLElement;
|
|
@@ -131,4 +141,4 @@ type InferElementRef<T> = T extends ElementType<any> ? T extends keyof JSX.Intri
|
|
|
131
141
|
*/
|
|
132
142
|
declare function withRef<T extends ElementType, P = {}>(renderFunction: React.ForwardRefRenderFunction<InferElementRef<T>, React.ComponentPropsWithoutRef<T> & P>): ForwardRefComponent<InferElementRef<T>, React.ComponentPropsWithoutRef<T> & P>;
|
|
133
143
|
|
|
134
|
-
export { Box, type BoxProps, CAN_USE_DOM, DEFAULT_IGNORE_CLASS, MemoizedChildren, PortalBody, type PortalBodyProps, Text, type TextProps, type UseOnClickOutsideCallback, type UseOnClickOutsideOptions, type UseOnClickOutsideReturn, composeEventHandlers, composeRefs, createPrimitiveComponent, createPrimitiveElement, createSlotComponent, useComposedRef, useEffectOnce, useIsomorphicLayoutEffect, useMemoOnce, useOnClickOutside, useStableMemo, withProviders, withRef };
|
|
144
|
+
export { Box, type BoxProps, CAN_USE_DOM, DEFAULT_IGNORE_CLASS, MemoizedChildren, PortalBody, type PortalBodyProps, Text, type TextProps, type UseOnClickOutsideCallback, type UseOnClickOutsideOptions, type UseOnClickOutsideReturn, composeEventHandlers, composeRefs, createPrimitiveComponent, createPrimitiveElement, createSlotComponent, useComposedRef, useEffectOnce, useIsomorphicLayoutEffect, useMemoOnce, useMemoizedSelector, useOnClickOutside, useStableMemo, withProviders, withRef };
|
package/dist/index.js
CHANGED
|
@@ -1,39 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __create = Object.create;
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
|
-
var __defProps = Object.defineProperties;
|
|
5
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
10
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
-
var __spreadValues = (a, b) => {
|
|
14
|
-
for (var prop in b || (b = {}))
|
|
15
|
-
if (__hasOwnProp.call(b, prop))
|
|
16
|
-
__defNormalProp(a, prop, b[prop]);
|
|
17
|
-
if (__getOwnPropSymbols)
|
|
18
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
19
|
-
if (__propIsEnum.call(b, prop))
|
|
20
|
-
__defNormalProp(a, prop, b[prop]);
|
|
21
|
-
}
|
|
22
|
-
return a;
|
|
23
|
-
};
|
|
24
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
25
|
-
var __objRest = (source, exclude) => {
|
|
26
|
-
var target = {};
|
|
27
|
-
for (var prop in source)
|
|
28
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
29
|
-
target[prop] = source[prop];
|
|
30
|
-
if (source != null && __getOwnPropSymbols)
|
|
31
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
|
32
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
33
|
-
target[prop] = source[prop];
|
|
34
|
-
}
|
|
35
|
-
return target;
|
|
36
|
-
};
|
|
37
8
|
var __export = (target, all) => {
|
|
38
9
|
for (var name in all)
|
|
39
10
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -57,8 +28,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
57
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
58
29
|
|
|
59
30
|
// src/index.ts
|
|
60
|
-
var
|
|
61
|
-
__export(
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
62
33
|
Box: () => Box,
|
|
63
34
|
CAN_USE_DOM: () => CAN_USE_DOM,
|
|
64
35
|
DEFAULT_IGNORE_CLASS: () => DEFAULT_IGNORE_CLASS,
|
|
@@ -74,22 +45,22 @@ __export(src_exports, {
|
|
|
74
45
|
useEffectOnce: () => useEffectOnce,
|
|
75
46
|
useIsomorphicLayoutEffect: () => useIsomorphicLayoutEffect,
|
|
76
47
|
useMemoOnce: () => useMemoOnce,
|
|
48
|
+
useMemoizedSelector: () => useMemoizedSelector,
|
|
77
49
|
useOnClickOutside: () => useOnClickOutside,
|
|
78
50
|
useStableMemo: () => useStableMemo,
|
|
79
51
|
withProviders: () => withProviders,
|
|
80
52
|
withRef: () => withRef
|
|
81
53
|
});
|
|
82
|
-
module.exports = __toCommonJS(
|
|
54
|
+
module.exports = __toCommonJS(index_exports);
|
|
83
55
|
|
|
84
56
|
// src/createSlotComponent.tsx
|
|
85
57
|
var import_react = __toESM(require("react"));
|
|
86
58
|
var import_react_slot = require("@radix-ui/react-slot");
|
|
87
59
|
var createSlotComponent = (element) => (
|
|
88
60
|
// eslint-disable-next-line react/display-name
|
|
89
|
-
import_react.default.forwardRef((
|
|
90
|
-
var _b = _a2, { as, asChild = false } = _b, props = __objRest(_b, ["as", "asChild"]);
|
|
61
|
+
import_react.default.forwardRef(({ as, asChild = false, ...props }, ref) => {
|
|
91
62
|
const Comp = asChild ? import_react_slot.Slot : as || element;
|
|
92
|
-
return /* @__PURE__ */ import_react.default.createElement(Comp,
|
|
63
|
+
return /* @__PURE__ */ import_react.default.createElement(Comp, { ref, ...props });
|
|
93
64
|
})
|
|
94
65
|
);
|
|
95
66
|
|
|
@@ -121,9 +92,9 @@ var Text = createSlotComponent("span");
|
|
|
121
92
|
|
|
122
93
|
// src/composeEventHandlers.ts
|
|
123
94
|
var composeEventHandlers = (originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) => (event) => {
|
|
124
|
-
originalEventHandler
|
|
95
|
+
originalEventHandler?.(event);
|
|
125
96
|
if (checkForDefaultPrevented === false || !event.defaultPrevented) {
|
|
126
|
-
return ourEventHandler
|
|
97
|
+
return ourEventHandler?.(event);
|
|
127
98
|
}
|
|
128
99
|
};
|
|
129
100
|
|
|
@@ -154,21 +125,14 @@ var createPrimitiveComponent = (element) => {
|
|
|
154
125
|
stateHook
|
|
155
126
|
} = {}) => {
|
|
156
127
|
return import_react5.default.forwardRef(
|
|
157
|
-
(
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
"asChild",
|
|
166
|
-
"className",
|
|
167
|
-
"getClassName",
|
|
168
|
-
"options",
|
|
169
|
-
"state"
|
|
170
|
-
]);
|
|
171
|
-
var _a3, _b2;
|
|
128
|
+
({
|
|
129
|
+
asChild,
|
|
130
|
+
className: classNameProp,
|
|
131
|
+
getClassName,
|
|
132
|
+
options,
|
|
133
|
+
state: stateProp,
|
|
134
|
+
...props
|
|
135
|
+
}, ref) => {
|
|
172
136
|
const state = (0, import_utils.isDefined)(stateProp) ? stateProp : stateHook ? stateHook(options) : void 0;
|
|
173
137
|
const {
|
|
174
138
|
hidden,
|
|
@@ -176,18 +140,20 @@ var createPrimitiveComponent = (element) => {
|
|
|
176
140
|
ref: hookRef
|
|
177
141
|
} = propsHook ? propsHook(state) : { hidden: false, props: {}, ref: null };
|
|
178
142
|
const _ref = useComposedRef(ref, hookRef);
|
|
179
|
-
const className = (0, import_utils.isDefined)(hookProps
|
|
180
|
-
const style =
|
|
143
|
+
const className = (0, import_utils.isDefined)(hookProps?.className) || (0, import_utils.isDefined)(classNameProp) ? (0, import_clsx.clsx)(hookProps?.className, classNameProp) : void 0;
|
|
144
|
+
const style = hookProps?.style || props.style ? { ...hookProps?.style, ...props.style } : void 0;
|
|
181
145
|
if (!asChild && hidden) return null;
|
|
182
146
|
return /* @__PURE__ */ import_react5.default.createElement(
|
|
183
147
|
Comp,
|
|
184
|
-
|
|
148
|
+
{
|
|
185
149
|
ref: _ref,
|
|
186
|
-
asChild
|
|
187
|
-
|
|
150
|
+
asChild,
|
|
151
|
+
...hookProps,
|
|
188
152
|
className,
|
|
189
|
-
style
|
|
190
|
-
|
|
153
|
+
style,
|
|
154
|
+
...props,
|
|
155
|
+
...props.setProps?.(hookProps ?? {}) ?? {}
|
|
156
|
+
}
|
|
191
157
|
);
|
|
192
158
|
}
|
|
193
159
|
);
|
|
@@ -199,7 +165,7 @@ var import_react6 = __toESM(require("react"));
|
|
|
199
165
|
function createPrimitiveElement(tag) {
|
|
200
166
|
return import_react6.default.forwardRef(
|
|
201
167
|
function CreateComponent(props, ref) {
|
|
202
|
-
return import_react6.default.createElement(tag,
|
|
168
|
+
return import_react6.default.createElement(tag, { ...props, ref });
|
|
203
169
|
}
|
|
204
170
|
);
|
|
205
171
|
}
|
|
@@ -221,8 +187,7 @@ function useEffectOnce(effect, deps) {
|
|
|
221
187
|
|
|
222
188
|
// src/useIsomorphicLayoutEffect.ts
|
|
223
189
|
var import_react8 = __toESM(require("react"));
|
|
224
|
-
var
|
|
225
|
-
var CAN_USE_DOM = typeof window !== "undefined" && ((_a = window.document) == null ? void 0 : _a.createElement) !== void 0;
|
|
190
|
+
var CAN_USE_DOM = typeof window !== "undefined" && window.document?.createElement !== void 0;
|
|
226
191
|
var useIsomorphicLayoutEffect = CAN_USE_DOM ? import_react8.default.useLayoutEffect : import_react8.default.useEffect;
|
|
227
192
|
|
|
228
193
|
// src/useMemoOnce.ts
|
|
@@ -239,8 +204,23 @@ function useMemoOnce(factory, deps) {
|
|
|
239
204
|
return memoizedValueRef.current;
|
|
240
205
|
}
|
|
241
206
|
|
|
242
|
-
// src/
|
|
207
|
+
// src/useMemoizedSelector.ts
|
|
243
208
|
var import_react10 = __toESM(require("react"));
|
|
209
|
+
function useMemoizedSelector(selector, deps, equalityFn = (a, b) => a === b) {
|
|
210
|
+
const [memoizedValue, setMemoizedValue] = import_react10.default.useState(() => selector());
|
|
211
|
+
const previousValueRef = import_react10.default.useRef(memoizedValue);
|
|
212
|
+
import_react10.default.useEffect(() => {
|
|
213
|
+
const newValue = selector();
|
|
214
|
+
if (!equalityFn(previousValueRef.current, newValue)) {
|
|
215
|
+
setMemoizedValue(newValue);
|
|
216
|
+
previousValueRef.current = newValue;
|
|
217
|
+
}
|
|
218
|
+
}, deps);
|
|
219
|
+
return memoizedValue;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// src/useOnClickOutside.ts
|
|
223
|
+
var import_react11 = __toESM(require("react"));
|
|
244
224
|
var canUsePassiveEvents = () => {
|
|
245
225
|
if (typeof window === "undefined" || typeof window.addEventListener !== "function")
|
|
246
226
|
return false;
|
|
@@ -257,10 +237,7 @@ var canUsePassiveEvents = () => {
|
|
|
257
237
|
return passive;
|
|
258
238
|
};
|
|
259
239
|
var DEFAULT_IGNORE_CLASS = "ignore-onclickoutside";
|
|
260
|
-
var checkClass = (el, cl) =>
|
|
261
|
-
var _a2;
|
|
262
|
-
return (_a2 = el.classList) == null ? void 0 : _a2.contains(cl);
|
|
263
|
-
};
|
|
240
|
+
var checkClass = (el, cl) => el.classList?.contains(cl);
|
|
264
241
|
var hasIgnoreClass = (e, ignoreClass) => {
|
|
265
242
|
let el = e.target || e;
|
|
266
243
|
while (el) {
|
|
@@ -283,16 +260,16 @@ var useOnClickOutside = (callback, {
|
|
|
283
260
|
ignoreClass = DEFAULT_IGNORE_CLASS,
|
|
284
261
|
refs: refsOpt
|
|
285
262
|
} = {}) => {
|
|
286
|
-
const [refsState, setRefsState] =
|
|
287
|
-
const callbackRef =
|
|
263
|
+
const [refsState, setRefsState] = import_react11.default.useState([]);
|
|
264
|
+
const callbackRef = import_react11.default.useRef(callback);
|
|
288
265
|
callbackRef.current = callback;
|
|
289
|
-
const ref =
|
|
266
|
+
const ref = import_react11.default.useCallback(
|
|
290
267
|
(el) => setRefsState((prevState) => [...prevState, { current: el }]),
|
|
291
268
|
[]
|
|
292
269
|
);
|
|
293
|
-
|
|
270
|
+
import_react11.default.useEffect(
|
|
294
271
|
() => {
|
|
295
|
-
if (!
|
|
272
|
+
if (!refsOpt?.length && refsState.length === 0) return;
|
|
296
273
|
const getEls = () => {
|
|
297
274
|
const els = [];
|
|
298
275
|
(refsOpt || refsState).forEach(
|
|
@@ -308,7 +285,7 @@ var useOnClickOutside = (callback, {
|
|
|
308
285
|
// On firefox the iframe becomes document.activeElement in the next event loop
|
|
309
286
|
setTimeout(() => {
|
|
310
287
|
const { activeElement } = document;
|
|
311
|
-
if (
|
|
288
|
+
if (activeElement?.tagName === "IFRAME" && !hasIgnoreClass(activeElement, ignoreClass) && !getEls().includes(activeElement))
|
|
312
289
|
callbackRef.current(e);
|
|
313
290
|
}, 0)
|
|
314
291
|
);
|
|
@@ -347,33 +324,33 @@ var useOnClickOutside = (callback, {
|
|
|
347
324
|
};
|
|
348
325
|
|
|
349
326
|
// src/useStableMemo.ts
|
|
350
|
-
var
|
|
327
|
+
var import_react12 = __toESM(require("react"));
|
|
351
328
|
var useStableMemo = (producer, deps) => {
|
|
352
|
-
const [value, setValue] =
|
|
353
|
-
|
|
329
|
+
const [value, setValue] = import_react12.default.useState(producer);
|
|
330
|
+
import_react12.default.useLayoutEffect(() => {
|
|
354
331
|
setValue(producer);
|
|
355
332
|
}, deps);
|
|
356
333
|
return value;
|
|
357
334
|
};
|
|
358
335
|
|
|
359
336
|
// src/withProviders.tsx
|
|
360
|
-
var
|
|
337
|
+
var import_react13 = __toESM(require("react"));
|
|
361
338
|
var withProviders = (...providers) => (WrappedComponent) => (props) => providers.reduceRight(
|
|
362
339
|
(acc, prov) => {
|
|
363
340
|
let Provider = prov;
|
|
364
341
|
if (Array.isArray(prov)) {
|
|
365
342
|
[Provider] = prov;
|
|
366
|
-
return /* @__PURE__ */
|
|
343
|
+
return /* @__PURE__ */ import_react13.default.createElement(Provider, { ...prov[1] }, acc);
|
|
367
344
|
}
|
|
368
|
-
return /* @__PURE__ */
|
|
345
|
+
return /* @__PURE__ */ import_react13.default.createElement(Provider, null, acc);
|
|
369
346
|
},
|
|
370
|
-
/* @__PURE__ */
|
|
347
|
+
/* @__PURE__ */ import_react13.default.createElement(WrappedComponent, { ...props })
|
|
371
348
|
);
|
|
372
349
|
|
|
373
350
|
// src/withRef.tsx
|
|
374
|
-
var
|
|
351
|
+
var import_react14 = __toESM(require("react"));
|
|
375
352
|
function withRef(renderFunction) {
|
|
376
|
-
return
|
|
353
|
+
return import_react14.default.forwardRef(renderFunction);
|
|
377
354
|
}
|
|
378
355
|
// Annotate the CommonJS export names for ESM import in node:
|
|
379
356
|
0 && (module.exports = {
|
|
@@ -392,6 +369,7 @@ function withRef(renderFunction) {
|
|
|
392
369
|
useEffectOnce,
|
|
393
370
|
useIsomorphicLayoutEffect,
|
|
394
371
|
useMemoOnce,
|
|
372
|
+
useMemoizedSelector,
|
|
395
373
|
useOnClickOutside,
|
|
396
374
|
useStableMemo,
|
|
397
375
|
withProviders,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/createSlotComponent.tsx","../src/Box.tsx","../src/MemoizedChildren.tsx","../src/PortalBody.tsx","../src/Text.tsx","../src/composeEventHandlers.ts","../src/createPrimitiveComponent.tsx","../src/useComposedRef.ts","../src/createPrimitiveElement.tsx","../src/useEffectOnce.ts","../src/useIsomorphicLayoutEffect.ts","../src/useMemoOnce.ts","../src/useOnClickOutside.ts","../src/useStableMemo.ts","../src/withProviders.tsx","../src/withRef.tsx"],"sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from './Box';\nexport * from './MemoizedChildren';\nexport * from './PortalBody';\nexport * from './Text';\nexport * from './composeEventHandlers';\nexport * from './createPrimitiveComponent';\nexport * from './createPrimitiveElement';\nexport * from './createSlotComponent';\nexport * from './useComposedRef';\nexport * from './useEffectOnce';\nexport * from './useIsomorphicLayoutEffect';\nexport * from './useMemoOnce';\nexport * from './useOnClickOutside';\nexport * from './useStableMemo';\nexport * from './withProviders';\nexport * from './withRef';\n","import React from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\n\nexport const createSlotComponent = <\n T extends React.ElementType,\n P extends React.ComponentPropsWithoutRef<T>,\n>(\n element: T\n) =>\n // eslint-disable-next-line react/display-name\n React.forwardRef<\n any,\n {\n as?: React.ElementType;\n asChild?: boolean;\n } & P\n >(({ as, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : (as as T) || element;\n\n return <Comp ref={ref} {...props} />;\n });\n","import type React from 'react';\n\nimport { createSlotComponent } from './createSlotComponent';\n\nexport const Box = createSlotComponent('div');\n\nexport type BoxProps = React.ComponentPropsWithRef<typeof Box>;\n","import React from 'react';\n\nexport const MemoizedChildren = React.memo(\n ({ children }: { children: React.ReactNode }) => {\n return <>{children}</>;\n }\n);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nexport type PortalBodyProps = { children: React.ReactNode; element?: Element };\n\nexport const PortalBody: ({\n children,\n element,\n}: PortalBodyProps) => React.ReactPortal = ({\n children,\n element,\n}: PortalBodyProps) => {\n const container =\n element || typeof window !== 'undefined' ? document.body : undefined;\n\n if (!container) return (<>{children}</>) as any;\n\n return ReactDOM.createPortal(children, element || document.body);\n};\n","import type React from 'react';\n\nimport { createSlotComponent } from './createSlotComponent';\n\nexport const Text = createSlotComponent('span');\n\nexport type TextProps = React.ComponentPropsWithRef<typeof Text>;\n","/** @see https://github.com/radix-ui/primitives/blob/b324ec2d7ddf13a2a115cb5b11478e24d2f45b87/packages/core/primitive/src/primitive.tsx#L1 */\nexport const composeEventHandlers =\n <E>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n ) =>\n (event: E) => {\n originalEventHandler?.(event);\n\n if (\n checkForDefaultPrevented === false ||\n !(event as unknown as Event).defaultPrevented\n ) {\n return ourEventHandler?.(event);\n }\n };\n","/* eslint-disable react/display-name */\n\nimport React from 'react';\n\nimport { isDefined } from '@udecode/utils';\nimport { clsx } from 'clsx';\n\nimport { createSlotComponent } from './createSlotComponent';\nimport { useComposedRef } from './useComposedRef';\n\n/**\n * Primitive component factory. It uses hooks for managing state and props, and\n * forwards references to child components. Component props:\n *\n * - `asChild`: If true, the component will be rendered as a `Slot`\n * {@link https://www.radix-ui.com/docs/primitives/utilities/slot}.\n * - `options`: Options passed to the state hook.\n * - `state`: Provide your state instead of using the state hook.\n * - `className`: Class name to be merged to the component.\n * - `style`: Style object to be merged to the component.\n * - `setProps`: Function to set props from the props hook.\n * - `...props`: Props to be passed to the component. Props hook return value:\n * - `ref`: Reference to be forwarded to the component.\n * - `props`: Props to be passed to the component.\n * - `hidden`: If true, the component will not be rendered.\n *\n * @example\n * const MyButton = createPrimitiveComponent(Button)({\n * stateHook: useButtonState,\n * propsHook: useButton,\n * });\n *\n * @param {React.ElementType} element The base component or native HTML element.\n * @returns {function} A primitive component.\n */\nexport const createPrimitiveComponent = <\n T extends React.ElementType,\n P extends React.ComponentPropsWithoutRef<T>,\n>(\n element: T\n) => {\n const Comp = createSlotComponent<T, P>(element);\n\n return <SH extends (options: any) => any, PH extends (state: any) => any>({\n propsHook,\n stateHook,\n }: {\n propsHook?: PH;\n stateHook?: SH;\n } = {}) => {\n return React.forwardRef<\n any,\n {\n as?: React.ElementType;\n asChild?: boolean;\n className?: string;\n options?: Parameters<SH>[0];\n setProps?: (hookProps: NonNullable<ReturnType<PH>['props']>) => P;\n state?: Parameters<PH>[0];\n style?: React.CSSProperties;\n } & P\n >(\n (\n {\n asChild,\n className: classNameProp,\n getClassName,\n options,\n state: stateProp,\n ...props\n },\n ref\n ) => {\n const state = isDefined(stateProp)\n ? stateProp\n : stateHook\n ? stateHook(options as any)\n : undefined;\n const {\n hidden,\n props: hookProps,\n ref: hookRef,\n } = propsHook\n ? propsHook(state)\n : { hidden: false, props: {}, ref: null };\n\n const _ref = useComposedRef(ref, hookRef);\n const className =\n isDefined(hookProps?.className) || isDefined(classNameProp)\n ? clsx(hookProps?.className, classNameProp)\n : undefined;\n const style =\n hookProps?.style || props.style\n ? { ...hookProps?.style, ...props.style }\n : undefined;\n\n if (!asChild && hidden) return null;\n\n return (\n <Comp\n ref={_ref}\n asChild={asChild}\n {...hookProps}\n className={className}\n style={style}\n {...props}\n {...(props.setProps?.(hookProps ?? {}) ?? {})}\n />\n );\n }\n );\n };\n};\n","import React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value This utility takes care of different types\n * of refs: callback refs and React.RefObject(s)\n */\nconst setRef = <T>(ref: PossibleRef<T>, value: T) => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n (ref as React.MutableRefObject<T>).current = value;\n }\n};\n\n/**\n * A utility to compose multiple refs together Accepts callback refs and\n * React.RefObject(s)\n */\nexport const composeRefs =\n <T>(...refs: PossibleRef<T>[]) =>\n (node: T) =>\n refs.forEach((ref) => setRef(ref, node));\n\n/**\n * A custom hook that composes multiple refs Accepts callback refs and\n * React.RefObject(s)\n */\nexport const useComposedRef = <T>(...refs: PossibleRef<T>[]) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n};\n","import React from 'react';\n\nexport function createPrimitiveElement<T extends keyof HTMLElementTagNameMap>(\n tag: T\n) {\n return React.forwardRef<HTMLElementTagNameMap[T], JSX.IntrinsicElements[T]>(\n function CreateComponent(props, ref) {\n return React.createElement(tag, { ...props, ref });\n }\n );\n}\n","import React from 'react';\n\nexport function useEffectOnce(\n effect: React.EffectCallback,\n deps: React.DependencyList\n) {\n const initialized = React.useRef(false);\n const prevDepsRef = React.useRef(deps);\n\n React.useEffect(() => {\n const depsChanged = deps.some((dep, i) => dep !== prevDepsRef.current[i]);\n\n if (!initialized.current || depsChanged) {\n initialized.current = true;\n prevDepsRef.current = deps;\n effect();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n","import React from 'react';\n\nexport const CAN_USE_DOM =\n typeof window !== 'undefined' && window.document?.createElement !== undefined;\n\n/**\n * Prevent warning on SSR by falling back to React.useEffect when DOM isn't\n * available\n */\nexport const useIsomorphicLayoutEffect = CAN_USE_DOM\n ? React.useLayoutEffect\n : React.useEffect;\n","import React from 'react';\n\nexport function useMemoOnce<T>(\n factory: () => T,\n deps: React.DependencyList\n): T {\n const initialized = React.useRef(false);\n const prevDepsRef = React.useRef(deps);\n const memoizedValueRef = React.useRef<T>();\n\n if (\n !initialized.current ||\n deps.some((dep, i) => dep !== prevDepsRef.current[i])\n ) {\n initialized.current = true;\n prevDepsRef.current = deps;\n memoizedValueRef.current = factory();\n }\n\n return memoizedValueRef.current!;\n}\n","import React from 'react';\n\nconst canUsePassiveEvents = (): boolean => {\n if (\n typeof window === 'undefined' ||\n typeof window.addEventListener !== 'function'\n )\n return false;\n\n let passive = false;\n const options = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line getter-return\n get() {\n passive = true;\n },\n });\n const noop = () => null;\n\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop, options);\n\n return passive;\n};\n\nexport const DEFAULT_IGNORE_CLASS = 'ignore-onclickoutside';\n\nexport type UseOnClickOutsideCallback<T extends Event = Event> = (\n event: T\n) => void;\n\ntype El = HTMLElement;\ntype Refs = React.RefObject<El>[];\n\nexport interface UseOnClickOutsideOptions {\n detectIFrame?: boolean;\n disabled?: boolean;\n eventTypes?: string[];\n excludeScrollbar?: boolean;\n ignoreClass?: string[] | string;\n refs?: Refs;\n}\n\nexport type UseOnClickOutsideReturn = (element: El | null) => void;\n\nconst checkClass = (el: HTMLElement, cl: string): boolean =>\n el.classList?.contains(cl);\n\nconst hasIgnoreClass = (e: any, ignoreClass: string[] | string): boolean => {\n let el = e.target || e;\n\n while (el) {\n if (Array.isArray(ignoreClass)) {\n // eslint-disable-next-line no-loop-func\n if (ignoreClass.some((c) => checkClass(el, c))) return true;\n } else if (checkClass(el, ignoreClass)) {\n return true;\n }\n\n el = el.parentElement;\n }\n\n return false;\n};\n\nconst clickedOnScrollbar = (e: MouseEvent): boolean =>\n document.documentElement.clientWidth <= e.clientX ||\n document.documentElement.clientHeight <= e.clientY;\n\nconst getEventOptions = (type: string): { passive: boolean } | boolean =>\n type.includes('touch') && canUsePassiveEvents() ? { passive: true } : false;\n\nexport const useOnClickOutside = (\n callback: UseOnClickOutsideCallback,\n {\n detectIFrame = true,\n disabled,\n eventTypes = ['mousedown', 'touchstart'],\n excludeScrollbar,\n ignoreClass = DEFAULT_IGNORE_CLASS,\n refs: refsOpt,\n }: UseOnClickOutsideOptions = {}\n): UseOnClickOutsideReturn => {\n const [refsState, setRefsState] = React.useState<Refs>([]);\n const callbackRef = React.useRef(callback);\n callbackRef.current = callback;\n\n const ref: UseOnClickOutsideReturn = React.useCallback(\n (el) => setRefsState((prevState) => [...prevState, { current: el }]),\n []\n );\n\n React.useEffect(\n () => {\n if (!refsOpt?.length && refsState.length === 0) return;\n\n const getEls = () => {\n const els: El[] = [];\n (refsOpt || refsState).forEach(\n ({ current }) => current && els.push(current)\n );\n\n return els;\n };\n\n const handler = (e: any) => {\n if (\n !hasIgnoreClass(e, ignoreClass) &&\n !(excludeScrollbar && clickedOnScrollbar(e)) &&\n getEls().every((el) => !el.contains(e.target))\n )\n callbackRef.current(e);\n };\n\n const blurHandler = (e: FocusEvent) =>\n // On firefox the iframe becomes document.activeElement in the next event loop\n setTimeout(() => {\n const { activeElement } = document;\n\n if (\n activeElement?.tagName === 'IFRAME' &&\n !hasIgnoreClass(activeElement, ignoreClass) &&\n !getEls().includes(activeElement as HTMLIFrameElement)\n )\n callbackRef.current(e);\n }, 0);\n\n const removeEventListener = () => {\n eventTypes.forEach((type) =>\n document.removeEventListener(\n type,\n handler,\n getEventOptions(type) as any\n )\n );\n\n if (detectIFrame) window.removeEventListener('blur', blurHandler);\n };\n\n if (disabled) {\n removeEventListener();\n\n return;\n }\n\n eventTypes.forEach((type) =>\n document.addEventListener(type, handler, getEventOptions(type))\n );\n\n if (detectIFrame) window.addEventListener('blur', blurHandler);\n\n // eslint-disable-next-line consistent-return\n return () => removeEventListener();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n refsState,\n ignoreClass,\n excludeScrollbar,\n disabled,\n detectIFrame,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(eventTypes),\n ]\n );\n\n return ref;\n};\n","import React from 'react';\n\nexport const useStableMemo = <T>(\n producer: () => T,\n deps?: React.DependencyList\n): T => {\n const [value, setValue] = React.useState(producer);\n\n React.useLayoutEffect(() => {\n setValue(producer);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n\n return value;\n};\n","import React from 'react';\n\n/**\n * Wrap a component into multiple providers. If there are any props that you\n * want a provider to receive, you can simply pass an array.\n */\nexport const withProviders =\n (...providers: any[]) =>\n <T,>(WrappedComponent: React.FC<T>) =>\n (props: T) =>\n providers.reduceRight(\n (acc, prov) => {\n let Provider = prov;\n\n if (Array.isArray(prov)) {\n [Provider] = prov;\n\n return <Provider {...prov[1]}>{acc}</Provider>;\n }\n\n return <Provider>{acc}</Provider>;\n },\n <WrappedComponent {...(props as any)} />\n );\n","import React from 'react';\n\ntype ElementType<P = any> =\n | {\n [K in keyof JSX.IntrinsicElements]: P extends JSX.IntrinsicElements[K]\n ? K\n : never;\n }[keyof JSX.IntrinsicElements]\n | React.ComponentType<P>;\n\ntype ForwardRefComponent<T, P = {}> = React.ForwardRefExoticComponent<\n React.PropsWithoutRef<P> & React.RefAttributes<T>\n>;\n\ntype InferElementRef<T> =\n T extends ElementType<any>\n ? T extends keyof JSX.IntrinsicElements\n ? JSX.IntrinsicElements[T] extends React.DetailedHTMLProps<\n React.HTMLAttributes<infer R>,\n any\n >\n ? R\n : never\n : T extends React.ComponentType<any>\n ? T extends React.ComponentClass<any>\n ? InstanceType<T>\n : T extends React.ForwardRefExoticComponent<any>\n ? React.ComponentPropsWithRef<T>['ref'] extends React.Ref<infer R>\n ? R\n : never\n : never\n : never\n : never;\n\n/**\n * Shorter alternative to `React.forwardRef`.\n *\n * @generic1 Component type or element type\n * @generic2 Extended prop types\n */\nexport function withRef<T extends ElementType, P = {}>(\n renderFunction: React.ForwardRefRenderFunction<\n InferElementRef<T>,\n React.ComponentPropsWithoutRef<T> & P\n >\n): ForwardRefComponent<\n InferElementRef<T>,\n React.ComponentPropsWithoutRef<T> & P\n> {\n return React.forwardRef(renderFunction as any) as any;\n}\n"],"mappings":"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","names":["React","_a","import_react","React","import_react","React","ReactDOM","import_react","import_react","React","React","_a","_b","import_react","React","import_react","React","import_react","React","import_react","React","import_react","_a","React","import_react","React","import_react","React","import_react","React"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/createSlotComponent.tsx","../src/Box.tsx","../src/MemoizedChildren.tsx","../src/PortalBody.tsx","../src/Text.tsx","../src/composeEventHandlers.ts","../src/createPrimitiveComponent.tsx","../src/useComposedRef.ts","../src/createPrimitiveElement.tsx","../src/useEffectOnce.ts","../src/useIsomorphicLayoutEffect.ts","../src/useMemoOnce.ts","../src/useMemoizedSelector.ts","../src/useOnClickOutside.ts","../src/useStableMemo.ts","../src/withProviders.tsx","../src/withRef.tsx"],"sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from './Box';\nexport * from './MemoizedChildren';\nexport * from './PortalBody';\nexport * from './Text';\nexport * from './composeEventHandlers';\nexport * from './createPrimitiveComponent';\nexport * from './createPrimitiveElement';\nexport * from './createSlotComponent';\nexport * from './useComposedRef';\nexport * from './useEffectOnce';\nexport * from './useIsomorphicLayoutEffect';\nexport * from './useMemoOnce';\nexport * from './useMemoizedSelector';\nexport * from './useOnClickOutside';\nexport * from './useStableMemo';\nexport * from './withProviders';\nexport * from './withRef';\n","import React from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\n\nexport const createSlotComponent = <\n T extends React.ElementType,\n P extends React.ComponentPropsWithoutRef<T>,\n>(\n element: T\n) =>\n // eslint-disable-next-line react/display-name\n React.forwardRef<\n any,\n {\n as?: React.ElementType;\n asChild?: boolean;\n } & P\n >(({ as, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : (as as T) || element;\n\n return <Comp ref={ref} {...props} />;\n });\n","import type React from 'react';\n\nimport { createSlotComponent } from './createSlotComponent';\n\nexport const Box = createSlotComponent('div');\n\nexport type BoxProps = React.ComponentPropsWithRef<typeof Box>;\n","import React from 'react';\n\nexport const MemoizedChildren = React.memo(\n ({ children }: { children: React.ReactNode }) => {\n return <>{children}</>;\n }\n);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nexport type PortalBodyProps = { children: React.ReactNode; element?: Element };\n\nexport const PortalBody: ({\n children,\n element,\n}: PortalBodyProps) => React.ReactPortal = ({\n children,\n element,\n}: PortalBodyProps) => {\n const container =\n element || typeof window !== 'undefined' ? document.body : undefined;\n\n if (!container) return (<>{children}</>) as any;\n\n return ReactDOM.createPortal(children, element || document.body);\n};\n","import type React from 'react';\n\nimport { createSlotComponent } from './createSlotComponent';\n\nexport const Text = createSlotComponent('span');\n\nexport type TextProps = React.ComponentPropsWithRef<typeof Text>;\n","/** @see https://github.com/radix-ui/primitives/blob/b324ec2d7ddf13a2a115cb5b11478e24d2f45b87/packages/core/primitive/src/primitive.tsx#L1 */\nexport const composeEventHandlers =\n <E>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n ) =>\n (event: E) => {\n originalEventHandler?.(event);\n\n if (\n checkForDefaultPrevented === false ||\n !(event as unknown as Event).defaultPrevented\n ) {\n return ourEventHandler?.(event);\n }\n };\n","/* eslint-disable react/display-name */\n\nimport React from 'react';\n\nimport { isDefined } from '@udecode/utils';\nimport { clsx } from 'clsx';\n\nimport { createSlotComponent } from './createSlotComponent';\nimport { useComposedRef } from './useComposedRef';\n\n/**\n * Primitive component factory. It uses hooks for managing state and props, and\n * forwards references to child components. Component props:\n *\n * - `asChild`: If true, the component will be rendered as a `Slot`\n * {@link https://www.radix-ui.com/docs/primitives/utilities/slot}.\n * - `options`: Options passed to the state hook.\n * - `state`: Provide your state instead of using the state hook.\n * - `className`: Class name to be merged to the component.\n * - `style`: Style object to be merged to the component.\n * - `setProps`: Function to set props from the props hook.\n * - `...props`: Props to be passed to the component. Props hook return value:\n * - `ref`: Reference to be forwarded to the component.\n * - `props`: Props to be passed to the component.\n * - `hidden`: If true, the component will not be rendered.\n *\n * @example\n * const MyButton = createPrimitiveComponent(Button)({\n * stateHook: useButtonState,\n * propsHook: useButton,\n * });\n *\n * @param {React.ElementType} element The base component or native HTML element.\n * @returns {function} A primitive component.\n */\nexport const createPrimitiveComponent = <\n T extends React.ElementType,\n P extends React.ComponentPropsWithoutRef<T>,\n>(\n element: T\n) => {\n const Comp = createSlotComponent<T, P>(element);\n\n return <SH extends (options: any) => any, PH extends (state: any) => any>({\n propsHook,\n stateHook,\n }: {\n propsHook?: PH;\n stateHook?: SH;\n } = {}) => {\n return React.forwardRef<\n any,\n {\n as?: React.ElementType;\n asChild?: boolean;\n className?: string;\n options?: Parameters<SH>[0];\n setProps?: (hookProps: NonNullable<ReturnType<PH>['props']>) => P;\n state?: Parameters<PH>[0];\n style?: React.CSSProperties;\n } & P\n >(\n (\n {\n asChild,\n className: classNameProp,\n getClassName,\n options,\n state: stateProp,\n ...props\n },\n ref\n ) => {\n const state = isDefined(stateProp)\n ? stateProp\n : stateHook\n ? stateHook(options as any)\n : undefined;\n const {\n hidden,\n props: hookProps,\n ref: hookRef,\n } = propsHook\n ? propsHook(state)\n : { hidden: false, props: {}, ref: null };\n\n const _ref = useComposedRef(ref, hookRef);\n const className =\n isDefined(hookProps?.className) || isDefined(classNameProp)\n ? clsx(hookProps?.className, classNameProp)\n : undefined;\n const style =\n hookProps?.style || props.style\n ? { ...hookProps?.style, ...props.style }\n : undefined;\n\n if (!asChild && hidden) return null;\n\n return (\n <Comp\n ref={_ref}\n asChild={asChild}\n {...hookProps}\n className={className}\n style={style}\n {...props}\n {...(props.setProps?.(hookProps ?? {}) ?? {})}\n />\n );\n }\n );\n };\n};\n","import React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value This utility takes care of different types\n * of refs: callback refs and React.RefObject(s)\n */\nconst setRef = <T>(ref: PossibleRef<T>, value: T) => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n (ref as React.MutableRefObject<T>).current = value;\n }\n};\n\n/**\n * A utility to compose multiple refs together Accepts callback refs and\n * React.RefObject(s)\n */\nexport const composeRefs =\n <T>(...refs: PossibleRef<T>[]) =>\n (node: T) =>\n refs.forEach((ref) => setRef(ref, node));\n\n/**\n * A custom hook that composes multiple refs Accepts callback refs and\n * React.RefObject(s)\n */\nexport const useComposedRef = <T>(...refs: PossibleRef<T>[]) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n};\n","import React from 'react';\n\nexport function createPrimitiveElement<T extends keyof HTMLElementTagNameMap>(\n tag: T\n) {\n return React.forwardRef<HTMLElementTagNameMap[T], JSX.IntrinsicElements[T]>(\n function CreateComponent(props, ref) {\n return React.createElement(tag, { ...props, ref });\n }\n );\n}\n","import React from 'react';\n\nexport function useEffectOnce(\n effect: React.EffectCallback,\n deps: React.DependencyList\n) {\n const initialized = React.useRef(false);\n const prevDepsRef = React.useRef(deps);\n\n React.useEffect(() => {\n const depsChanged = deps.some((dep, i) => dep !== prevDepsRef.current[i]);\n\n if (!initialized.current || depsChanged) {\n initialized.current = true;\n prevDepsRef.current = deps;\n effect();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n","import React from 'react';\n\nexport const CAN_USE_DOM =\n typeof window !== 'undefined' && window.document?.createElement !== undefined;\n\n/**\n * Prevent warning on SSR by falling back to React.useEffect when DOM isn't\n * available\n */\nexport const useIsomorphicLayoutEffect = CAN_USE_DOM\n ? React.useLayoutEffect\n : React.useEffect;\n","import React from 'react';\n\nexport function useMemoOnce<T>(\n factory: () => T,\n deps: React.DependencyList\n): T {\n const initialized = React.useRef(false);\n const prevDepsRef = React.useRef(deps);\n const memoizedValueRef = React.useRef<T>();\n\n if (\n !initialized.current ||\n deps.some((dep, i) => dep !== prevDepsRef.current[i])\n ) {\n initialized.current = true;\n prevDepsRef.current = deps;\n memoizedValueRef.current = factory();\n }\n\n return memoizedValueRef.current!;\n}\n","import React from 'react';\n\n/**\n * Re-render only when the selector result changes.\n *\n * @param selector A function that derives a value from deps\n * @param deps Dependencies on which to run the selector\n * @param equalityFn Optional comparison function to detect changes in the\n * derived value\n */\nexport function useMemoizedSelector<R>(\n selector: () => R,\n deps: React.DependencyList,\n equalityFn: (a: R, b: R) => boolean = (a, b) => a === b\n) {\n // Initialize our state with the initial \"selected\" value.\n const [memoizedValue, setMemoizedValue] = React.useState<R>(() => selector());\n\n // Keep a ref of the previous value so we can compare in an effect.\n const previousValueRef = React.useRef<R>(memoizedValue);\n\n React.useEffect(() => {\n // Compute a new value by calling the selector.\n const newValue = selector();\n\n // If different, update state and the ref.\n if (!equalityFn(previousValueRef.current, newValue)) {\n setMemoizedValue(newValue);\n previousValueRef.current = newValue;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n\n return memoizedValue;\n}\n","import React from 'react';\n\nconst canUsePassiveEvents = (): boolean => {\n if (\n typeof window === 'undefined' ||\n typeof window.addEventListener !== 'function'\n )\n return false;\n\n let passive = false;\n const options = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line getter-return\n get() {\n passive = true;\n },\n });\n const noop = () => null;\n\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop, options);\n\n return passive;\n};\n\nexport const DEFAULT_IGNORE_CLASS = 'ignore-onclickoutside';\n\nexport type UseOnClickOutsideCallback<T extends Event = Event> = (\n event: T\n) => void;\n\ntype El = HTMLElement;\ntype Refs = React.RefObject<El>[];\n\nexport interface UseOnClickOutsideOptions {\n detectIFrame?: boolean;\n disabled?: boolean;\n eventTypes?: string[];\n excludeScrollbar?: boolean;\n ignoreClass?: string[] | string;\n refs?: Refs;\n}\n\nexport type UseOnClickOutsideReturn = (element: El | null) => void;\n\nconst checkClass = (el: HTMLElement, cl: string): boolean =>\n el.classList?.contains(cl);\n\nconst hasIgnoreClass = (e: any, ignoreClass: string[] | string): boolean => {\n let el = e.target || e;\n\n while (el) {\n if (Array.isArray(ignoreClass)) {\n // eslint-disable-next-line no-loop-func\n if (ignoreClass.some((c) => checkClass(el, c))) return true;\n } else if (checkClass(el, ignoreClass)) {\n return true;\n }\n\n el = el.parentElement;\n }\n\n return false;\n};\n\nconst clickedOnScrollbar = (e: MouseEvent): boolean =>\n document.documentElement.clientWidth <= e.clientX ||\n document.documentElement.clientHeight <= e.clientY;\n\nconst getEventOptions = (type: string): { passive: boolean } | boolean =>\n type.includes('touch') && canUsePassiveEvents() ? { passive: true } : false;\n\nexport const useOnClickOutside = (\n callback: UseOnClickOutsideCallback,\n {\n detectIFrame = true,\n disabled,\n eventTypes = ['mousedown', 'touchstart'],\n excludeScrollbar,\n ignoreClass = DEFAULT_IGNORE_CLASS,\n refs: refsOpt,\n }: UseOnClickOutsideOptions = {}\n): UseOnClickOutsideReturn => {\n const [refsState, setRefsState] = React.useState<Refs>([]);\n const callbackRef = React.useRef(callback);\n callbackRef.current = callback;\n\n const ref: UseOnClickOutsideReturn = React.useCallback(\n (el) => setRefsState((prevState) => [...prevState, { current: el }]),\n []\n );\n\n React.useEffect(\n () => {\n if (!refsOpt?.length && refsState.length === 0) return;\n\n const getEls = () => {\n const els: El[] = [];\n (refsOpt || refsState).forEach(\n ({ current }) => current && els.push(current)\n );\n\n return els;\n };\n\n const handler = (e: any) => {\n if (\n !hasIgnoreClass(e, ignoreClass) &&\n !(excludeScrollbar && clickedOnScrollbar(e)) &&\n getEls().every((el) => !el.contains(e.target))\n )\n callbackRef.current(e);\n };\n\n const blurHandler = (e: FocusEvent) =>\n // On firefox the iframe becomes document.activeElement in the next event loop\n setTimeout(() => {\n const { activeElement } = document;\n\n if (\n activeElement?.tagName === 'IFRAME' &&\n !hasIgnoreClass(activeElement, ignoreClass) &&\n !getEls().includes(activeElement as HTMLIFrameElement)\n )\n callbackRef.current(e);\n }, 0);\n\n const removeEventListener = () => {\n eventTypes.forEach((type) =>\n document.removeEventListener(\n type,\n handler,\n getEventOptions(type) as any\n )\n );\n\n if (detectIFrame) window.removeEventListener('blur', blurHandler);\n };\n\n if (disabled) {\n removeEventListener();\n\n return;\n }\n\n eventTypes.forEach((type) =>\n document.addEventListener(type, handler, getEventOptions(type))\n );\n\n if (detectIFrame) window.addEventListener('blur', blurHandler);\n\n // eslint-disable-next-line consistent-return\n return () => removeEventListener();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n refsState,\n ignoreClass,\n excludeScrollbar,\n disabled,\n detectIFrame,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(eventTypes),\n ]\n );\n\n return ref;\n};\n","import React from 'react';\n\nexport const useStableMemo = <T>(\n producer: () => T,\n deps?: React.DependencyList\n): T => {\n const [value, setValue] = React.useState(producer);\n\n React.useLayoutEffect(() => {\n setValue(producer);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n\n return value;\n};\n","import React from 'react';\n\n/**\n * Wrap a component into multiple providers. If there are any props that you\n * want a provider to receive, you can simply pass an array.\n */\nexport const withProviders =\n (...providers: any[]) =>\n <T,>(WrappedComponent: React.FC<T>) =>\n (props: T) =>\n providers.reduceRight(\n (acc, prov) => {\n let Provider = prov;\n\n if (Array.isArray(prov)) {\n [Provider] = prov;\n\n return <Provider {...prov[1]}>{acc}</Provider>;\n }\n\n return <Provider>{acc}</Provider>;\n },\n <WrappedComponent {...(props as any)} />\n );\n","import React from 'react';\n\ntype ElementType<P = any> =\n | {\n [K in keyof JSX.IntrinsicElements]: P extends JSX.IntrinsicElements[K]\n ? K\n : never;\n }[keyof JSX.IntrinsicElements]\n | React.ComponentType<P>;\n\ntype ForwardRefComponent<T, P = {}> = React.ForwardRefExoticComponent<\n React.PropsWithoutRef<P> & React.RefAttributes<T>\n>;\n\ntype InferElementRef<T> =\n T extends ElementType<any>\n ? T extends keyof JSX.IntrinsicElements\n ? JSX.IntrinsicElements[T] extends React.DetailedHTMLProps<\n React.HTMLAttributes<infer R>,\n any\n >\n ? R\n : never\n : T extends React.ComponentType<any>\n ? T extends React.ComponentClass<any>\n ? InstanceType<T>\n : T extends React.ForwardRefExoticComponent<any>\n ? React.ComponentPropsWithRef<T>['ref'] extends React.Ref<infer R>\n ? R\n : never\n : never\n : never\n : never;\n\n/**\n * Shorter alternative to `React.forwardRef`.\n *\n * @generic1 Component type or element type\n * @generic2 Extended prop types\n */\nexport function withRef<T extends ElementType, P = {}>(\n renderFunction: React.ForwardRefRenderFunction<\n InferElementRef<T>,\n React.ComponentPropsWithoutRef<T> & P\n >\n): ForwardRefComponent<\n InferElementRef<T>,\n React.ComponentPropsWithoutRef<T> & P\n> {\n return React.forwardRef(renderFunction as any) as any;\n}\n"],"mappings":"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","names":["React","import_react","React","import_react","React","ReactDOM","import_react","import_react","React","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React","import_react","React"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,44 +1,11 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defProps = Object.defineProperties;
|
|
3
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
-
var __spreadValues = (a, b) => {
|
|
9
|
-
for (var prop in b || (b = {}))
|
|
10
|
-
if (__hasOwnProp.call(b, prop))
|
|
11
|
-
__defNormalProp(a, prop, b[prop]);
|
|
12
|
-
if (__getOwnPropSymbols)
|
|
13
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
-
if (__propIsEnum.call(b, prop))
|
|
15
|
-
__defNormalProp(a, prop, b[prop]);
|
|
16
|
-
}
|
|
17
|
-
return a;
|
|
18
|
-
};
|
|
19
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
-
var __objRest = (source, exclude) => {
|
|
21
|
-
var target = {};
|
|
22
|
-
for (var prop in source)
|
|
23
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
24
|
-
target[prop] = source[prop];
|
|
25
|
-
if (source != null && __getOwnPropSymbols)
|
|
26
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
|
27
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
28
|
-
target[prop] = source[prop];
|
|
29
|
-
}
|
|
30
|
-
return target;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
1
|
// src/createSlotComponent.tsx
|
|
34
2
|
import React from "react";
|
|
35
3
|
import { Slot } from "@radix-ui/react-slot";
|
|
36
4
|
var createSlotComponent = (element) => (
|
|
37
5
|
// eslint-disable-next-line react/display-name
|
|
38
|
-
React.forwardRef((
|
|
39
|
-
var _b = _a2, { as, asChild = false } = _b, props = __objRest(_b, ["as", "asChild"]);
|
|
6
|
+
React.forwardRef(({ as, asChild = false, ...props }, ref) => {
|
|
40
7
|
const Comp = asChild ? Slot : as || element;
|
|
41
|
-
return /* @__PURE__ */ React.createElement(Comp,
|
|
8
|
+
return /* @__PURE__ */ React.createElement(Comp, { ref, ...props });
|
|
42
9
|
})
|
|
43
10
|
);
|
|
44
11
|
|
|
@@ -70,9 +37,9 @@ var Text = createSlotComponent("span");
|
|
|
70
37
|
|
|
71
38
|
// src/composeEventHandlers.ts
|
|
72
39
|
var composeEventHandlers = (originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) => (event) => {
|
|
73
|
-
originalEventHandler
|
|
40
|
+
originalEventHandler?.(event);
|
|
74
41
|
if (checkForDefaultPrevented === false || !event.defaultPrevented) {
|
|
75
|
-
return ourEventHandler
|
|
42
|
+
return ourEventHandler?.(event);
|
|
76
43
|
}
|
|
77
44
|
};
|
|
78
45
|
|
|
@@ -103,21 +70,14 @@ var createPrimitiveComponent = (element) => {
|
|
|
103
70
|
stateHook
|
|
104
71
|
} = {}) => {
|
|
105
72
|
return React5.forwardRef(
|
|
106
|
-
(
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
"asChild",
|
|
115
|
-
"className",
|
|
116
|
-
"getClassName",
|
|
117
|
-
"options",
|
|
118
|
-
"state"
|
|
119
|
-
]);
|
|
120
|
-
var _a3, _b2;
|
|
73
|
+
({
|
|
74
|
+
asChild,
|
|
75
|
+
className: classNameProp,
|
|
76
|
+
getClassName,
|
|
77
|
+
options,
|
|
78
|
+
state: stateProp,
|
|
79
|
+
...props
|
|
80
|
+
}, ref) => {
|
|
121
81
|
const state = isDefined(stateProp) ? stateProp : stateHook ? stateHook(options) : void 0;
|
|
122
82
|
const {
|
|
123
83
|
hidden,
|
|
@@ -125,18 +85,20 @@ var createPrimitiveComponent = (element) => {
|
|
|
125
85
|
ref: hookRef
|
|
126
86
|
} = propsHook ? propsHook(state) : { hidden: false, props: {}, ref: null };
|
|
127
87
|
const _ref = useComposedRef(ref, hookRef);
|
|
128
|
-
const className = isDefined(hookProps
|
|
129
|
-
const style =
|
|
88
|
+
const className = isDefined(hookProps?.className) || isDefined(classNameProp) ? clsx(hookProps?.className, classNameProp) : void 0;
|
|
89
|
+
const style = hookProps?.style || props.style ? { ...hookProps?.style, ...props.style } : void 0;
|
|
130
90
|
if (!asChild && hidden) return null;
|
|
131
91
|
return /* @__PURE__ */ React5.createElement(
|
|
132
92
|
Comp,
|
|
133
|
-
|
|
93
|
+
{
|
|
134
94
|
ref: _ref,
|
|
135
|
-
asChild
|
|
136
|
-
|
|
95
|
+
asChild,
|
|
96
|
+
...hookProps,
|
|
137
97
|
className,
|
|
138
|
-
style
|
|
139
|
-
|
|
98
|
+
style,
|
|
99
|
+
...props,
|
|
100
|
+
...props.setProps?.(hookProps ?? {}) ?? {}
|
|
101
|
+
}
|
|
140
102
|
);
|
|
141
103
|
}
|
|
142
104
|
);
|
|
@@ -148,7 +110,7 @@ import React6 from "react";
|
|
|
148
110
|
function createPrimitiveElement(tag) {
|
|
149
111
|
return React6.forwardRef(
|
|
150
112
|
function CreateComponent(props, ref) {
|
|
151
|
-
return React6.createElement(tag,
|
|
113
|
+
return React6.createElement(tag, { ...props, ref });
|
|
152
114
|
}
|
|
153
115
|
);
|
|
154
116
|
}
|
|
@@ -170,8 +132,7 @@ function useEffectOnce(effect, deps) {
|
|
|
170
132
|
|
|
171
133
|
// src/useIsomorphicLayoutEffect.ts
|
|
172
134
|
import React8 from "react";
|
|
173
|
-
var
|
|
174
|
-
var CAN_USE_DOM = typeof window !== "undefined" && ((_a = window.document) == null ? void 0 : _a.createElement) !== void 0;
|
|
135
|
+
var CAN_USE_DOM = typeof window !== "undefined" && window.document?.createElement !== void 0;
|
|
175
136
|
var useIsomorphicLayoutEffect = CAN_USE_DOM ? React8.useLayoutEffect : React8.useEffect;
|
|
176
137
|
|
|
177
138
|
// src/useMemoOnce.ts
|
|
@@ -188,8 +149,23 @@ function useMemoOnce(factory, deps) {
|
|
|
188
149
|
return memoizedValueRef.current;
|
|
189
150
|
}
|
|
190
151
|
|
|
191
|
-
// src/
|
|
152
|
+
// src/useMemoizedSelector.ts
|
|
192
153
|
import React10 from "react";
|
|
154
|
+
function useMemoizedSelector(selector, deps, equalityFn = (a, b) => a === b) {
|
|
155
|
+
const [memoizedValue, setMemoizedValue] = React10.useState(() => selector());
|
|
156
|
+
const previousValueRef = React10.useRef(memoizedValue);
|
|
157
|
+
React10.useEffect(() => {
|
|
158
|
+
const newValue = selector();
|
|
159
|
+
if (!equalityFn(previousValueRef.current, newValue)) {
|
|
160
|
+
setMemoizedValue(newValue);
|
|
161
|
+
previousValueRef.current = newValue;
|
|
162
|
+
}
|
|
163
|
+
}, deps);
|
|
164
|
+
return memoizedValue;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// src/useOnClickOutside.ts
|
|
168
|
+
import React11 from "react";
|
|
193
169
|
var canUsePassiveEvents = () => {
|
|
194
170
|
if (typeof window === "undefined" || typeof window.addEventListener !== "function")
|
|
195
171
|
return false;
|
|
@@ -206,10 +182,7 @@ var canUsePassiveEvents = () => {
|
|
|
206
182
|
return passive;
|
|
207
183
|
};
|
|
208
184
|
var DEFAULT_IGNORE_CLASS = "ignore-onclickoutside";
|
|
209
|
-
var checkClass = (el, cl) =>
|
|
210
|
-
var _a2;
|
|
211
|
-
return (_a2 = el.classList) == null ? void 0 : _a2.contains(cl);
|
|
212
|
-
};
|
|
185
|
+
var checkClass = (el, cl) => el.classList?.contains(cl);
|
|
213
186
|
var hasIgnoreClass = (e, ignoreClass) => {
|
|
214
187
|
let el = e.target || e;
|
|
215
188
|
while (el) {
|
|
@@ -232,16 +205,16 @@ var useOnClickOutside = (callback, {
|
|
|
232
205
|
ignoreClass = DEFAULT_IGNORE_CLASS,
|
|
233
206
|
refs: refsOpt
|
|
234
207
|
} = {}) => {
|
|
235
|
-
const [refsState, setRefsState] =
|
|
236
|
-
const callbackRef =
|
|
208
|
+
const [refsState, setRefsState] = React11.useState([]);
|
|
209
|
+
const callbackRef = React11.useRef(callback);
|
|
237
210
|
callbackRef.current = callback;
|
|
238
|
-
const ref =
|
|
211
|
+
const ref = React11.useCallback(
|
|
239
212
|
(el) => setRefsState((prevState) => [...prevState, { current: el }]),
|
|
240
213
|
[]
|
|
241
214
|
);
|
|
242
|
-
|
|
215
|
+
React11.useEffect(
|
|
243
216
|
() => {
|
|
244
|
-
if (!
|
|
217
|
+
if (!refsOpt?.length && refsState.length === 0) return;
|
|
245
218
|
const getEls = () => {
|
|
246
219
|
const els = [];
|
|
247
220
|
(refsOpt || refsState).forEach(
|
|
@@ -257,7 +230,7 @@ var useOnClickOutside = (callback, {
|
|
|
257
230
|
// On firefox the iframe becomes document.activeElement in the next event loop
|
|
258
231
|
setTimeout(() => {
|
|
259
232
|
const { activeElement } = document;
|
|
260
|
-
if (
|
|
233
|
+
if (activeElement?.tagName === "IFRAME" && !hasIgnoreClass(activeElement, ignoreClass) && !getEls().includes(activeElement))
|
|
261
234
|
callbackRef.current(e);
|
|
262
235
|
}, 0)
|
|
263
236
|
);
|
|
@@ -296,33 +269,33 @@ var useOnClickOutside = (callback, {
|
|
|
296
269
|
};
|
|
297
270
|
|
|
298
271
|
// src/useStableMemo.ts
|
|
299
|
-
import
|
|
272
|
+
import React12 from "react";
|
|
300
273
|
var useStableMemo = (producer, deps) => {
|
|
301
|
-
const [value, setValue] =
|
|
302
|
-
|
|
274
|
+
const [value, setValue] = React12.useState(producer);
|
|
275
|
+
React12.useLayoutEffect(() => {
|
|
303
276
|
setValue(producer);
|
|
304
277
|
}, deps);
|
|
305
278
|
return value;
|
|
306
279
|
};
|
|
307
280
|
|
|
308
281
|
// src/withProviders.tsx
|
|
309
|
-
import
|
|
282
|
+
import React13 from "react";
|
|
310
283
|
var withProviders = (...providers) => (WrappedComponent) => (props) => providers.reduceRight(
|
|
311
284
|
(acc, prov) => {
|
|
312
285
|
let Provider = prov;
|
|
313
286
|
if (Array.isArray(prov)) {
|
|
314
287
|
[Provider] = prov;
|
|
315
|
-
return /* @__PURE__ */
|
|
288
|
+
return /* @__PURE__ */ React13.createElement(Provider, { ...prov[1] }, acc);
|
|
316
289
|
}
|
|
317
|
-
return /* @__PURE__ */
|
|
290
|
+
return /* @__PURE__ */ React13.createElement(Provider, null, acc);
|
|
318
291
|
},
|
|
319
|
-
/* @__PURE__ */
|
|
292
|
+
/* @__PURE__ */ React13.createElement(WrappedComponent, { ...props })
|
|
320
293
|
);
|
|
321
294
|
|
|
322
295
|
// src/withRef.tsx
|
|
323
|
-
import
|
|
296
|
+
import React14 from "react";
|
|
324
297
|
function withRef(renderFunction) {
|
|
325
|
-
return
|
|
298
|
+
return React14.forwardRef(renderFunction);
|
|
326
299
|
}
|
|
327
300
|
export {
|
|
328
301
|
Box,
|
|
@@ -340,6 +313,7 @@ export {
|
|
|
340
313
|
useEffectOnce,
|
|
341
314
|
useIsomorphicLayoutEffect,
|
|
342
315
|
useMemoOnce,
|
|
316
|
+
useMemoizedSelector,
|
|
343
317
|
useOnClickOutside,
|
|
344
318
|
useStableMemo,
|
|
345
319
|
withProviders,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/createSlotComponent.tsx","../src/Box.tsx","../src/MemoizedChildren.tsx","../src/PortalBody.tsx","../src/Text.tsx","../src/composeEventHandlers.ts","../src/createPrimitiveComponent.tsx","../src/useComposedRef.ts","../src/createPrimitiveElement.tsx","../src/useEffectOnce.ts","../src/useIsomorphicLayoutEffect.ts","../src/useMemoOnce.ts","../src/useOnClickOutside.ts","../src/useStableMemo.ts","../src/withProviders.tsx","../src/withRef.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\n\nexport const createSlotComponent = <\n T extends React.ElementType,\n P extends React.ComponentPropsWithoutRef<T>,\n>(\n element: T\n) =>\n // eslint-disable-next-line react/display-name\n React.forwardRef<\n any,\n {\n as?: React.ElementType;\n asChild?: boolean;\n } & P\n >(({ as, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : (as as T) || element;\n\n return <Comp ref={ref} {...props} />;\n });\n","import type React from 'react';\n\nimport { createSlotComponent } from './createSlotComponent';\n\nexport const Box = createSlotComponent('div');\n\nexport type BoxProps = React.ComponentPropsWithRef<typeof Box>;\n","import React from 'react';\n\nexport const MemoizedChildren = React.memo(\n ({ children }: { children: React.ReactNode }) => {\n return <>{children}</>;\n }\n);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nexport type PortalBodyProps = { children: React.ReactNode; element?: Element };\n\nexport const PortalBody: ({\n children,\n element,\n}: PortalBodyProps) => React.ReactPortal = ({\n children,\n element,\n}: PortalBodyProps) => {\n const container =\n element || typeof window !== 'undefined' ? document.body : undefined;\n\n if (!container) return (<>{children}</>) as any;\n\n return ReactDOM.createPortal(children, element || document.body);\n};\n","import type React from 'react';\n\nimport { createSlotComponent } from './createSlotComponent';\n\nexport const Text = createSlotComponent('span');\n\nexport type TextProps = React.ComponentPropsWithRef<typeof Text>;\n","/** @see https://github.com/radix-ui/primitives/blob/b324ec2d7ddf13a2a115cb5b11478e24d2f45b87/packages/core/primitive/src/primitive.tsx#L1 */\nexport const composeEventHandlers =\n <E>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n ) =>\n (event: E) => {\n originalEventHandler?.(event);\n\n if (\n checkForDefaultPrevented === false ||\n !(event as unknown as Event).defaultPrevented\n ) {\n return ourEventHandler?.(event);\n }\n };\n","/* eslint-disable react/display-name */\n\nimport React from 'react';\n\nimport { isDefined } from '@udecode/utils';\nimport { clsx } from 'clsx';\n\nimport { createSlotComponent } from './createSlotComponent';\nimport { useComposedRef } from './useComposedRef';\n\n/**\n * Primitive component factory. It uses hooks for managing state and props, and\n * forwards references to child components. Component props:\n *\n * - `asChild`: If true, the component will be rendered as a `Slot`\n * {@link https://www.radix-ui.com/docs/primitives/utilities/slot}.\n * - `options`: Options passed to the state hook.\n * - `state`: Provide your state instead of using the state hook.\n * - `className`: Class name to be merged to the component.\n * - `style`: Style object to be merged to the component.\n * - `setProps`: Function to set props from the props hook.\n * - `...props`: Props to be passed to the component. Props hook return value:\n * - `ref`: Reference to be forwarded to the component.\n * - `props`: Props to be passed to the component.\n * - `hidden`: If true, the component will not be rendered.\n *\n * @example\n * const MyButton = createPrimitiveComponent(Button)({\n * stateHook: useButtonState,\n * propsHook: useButton,\n * });\n *\n * @param {React.ElementType} element The base component or native HTML element.\n * @returns {function} A primitive component.\n */\nexport const createPrimitiveComponent = <\n T extends React.ElementType,\n P extends React.ComponentPropsWithoutRef<T>,\n>(\n element: T\n) => {\n const Comp = createSlotComponent<T, P>(element);\n\n return <SH extends (options: any) => any, PH extends (state: any) => any>({\n propsHook,\n stateHook,\n }: {\n propsHook?: PH;\n stateHook?: SH;\n } = {}) => {\n return React.forwardRef<\n any,\n {\n as?: React.ElementType;\n asChild?: boolean;\n className?: string;\n options?: Parameters<SH>[0];\n setProps?: (hookProps: NonNullable<ReturnType<PH>['props']>) => P;\n state?: Parameters<PH>[0];\n style?: React.CSSProperties;\n } & P\n >(\n (\n {\n asChild,\n className: classNameProp,\n getClassName,\n options,\n state: stateProp,\n ...props\n },\n ref\n ) => {\n const state = isDefined(stateProp)\n ? stateProp\n : stateHook\n ? stateHook(options as any)\n : undefined;\n const {\n hidden,\n props: hookProps,\n ref: hookRef,\n } = propsHook\n ? propsHook(state)\n : { hidden: false, props: {}, ref: null };\n\n const _ref = useComposedRef(ref, hookRef);\n const className =\n isDefined(hookProps?.className) || isDefined(classNameProp)\n ? clsx(hookProps?.className, classNameProp)\n : undefined;\n const style =\n hookProps?.style || props.style\n ? { ...hookProps?.style, ...props.style }\n : undefined;\n\n if (!asChild && hidden) return null;\n\n return (\n <Comp\n ref={_ref}\n asChild={asChild}\n {...hookProps}\n className={className}\n style={style}\n {...props}\n {...(props.setProps?.(hookProps ?? {}) ?? {})}\n />\n );\n }\n );\n };\n};\n","import React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value This utility takes care of different types\n * of refs: callback refs and React.RefObject(s)\n */\nconst setRef = <T>(ref: PossibleRef<T>, value: T) => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n (ref as React.MutableRefObject<T>).current = value;\n }\n};\n\n/**\n * A utility to compose multiple refs together Accepts callback refs and\n * React.RefObject(s)\n */\nexport const composeRefs =\n <T>(...refs: PossibleRef<T>[]) =>\n (node: T) =>\n refs.forEach((ref) => setRef(ref, node));\n\n/**\n * A custom hook that composes multiple refs Accepts callback refs and\n * React.RefObject(s)\n */\nexport const useComposedRef = <T>(...refs: PossibleRef<T>[]) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n};\n","import React from 'react';\n\nexport function createPrimitiveElement<T extends keyof HTMLElementTagNameMap>(\n tag: T\n) {\n return React.forwardRef<HTMLElementTagNameMap[T], JSX.IntrinsicElements[T]>(\n function CreateComponent(props, ref) {\n return React.createElement(tag, { ...props, ref });\n }\n );\n}\n","import React from 'react';\n\nexport function useEffectOnce(\n effect: React.EffectCallback,\n deps: React.DependencyList\n) {\n const initialized = React.useRef(false);\n const prevDepsRef = React.useRef(deps);\n\n React.useEffect(() => {\n const depsChanged = deps.some((dep, i) => dep !== prevDepsRef.current[i]);\n\n if (!initialized.current || depsChanged) {\n initialized.current = true;\n prevDepsRef.current = deps;\n effect();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n","import React from 'react';\n\nexport const CAN_USE_DOM =\n typeof window !== 'undefined' && window.document?.createElement !== undefined;\n\n/**\n * Prevent warning on SSR by falling back to React.useEffect when DOM isn't\n * available\n */\nexport const useIsomorphicLayoutEffect = CAN_USE_DOM\n ? React.useLayoutEffect\n : React.useEffect;\n","import React from 'react';\n\nexport function useMemoOnce<T>(\n factory: () => T,\n deps: React.DependencyList\n): T {\n const initialized = React.useRef(false);\n const prevDepsRef = React.useRef(deps);\n const memoizedValueRef = React.useRef<T>();\n\n if (\n !initialized.current ||\n deps.some((dep, i) => dep !== prevDepsRef.current[i])\n ) {\n initialized.current = true;\n prevDepsRef.current = deps;\n memoizedValueRef.current = factory();\n }\n\n return memoizedValueRef.current!;\n}\n","import React from 'react';\n\nconst canUsePassiveEvents = (): boolean => {\n if (\n typeof window === 'undefined' ||\n typeof window.addEventListener !== 'function'\n )\n return false;\n\n let passive = false;\n const options = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line getter-return\n get() {\n passive = true;\n },\n });\n const noop = () => null;\n\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop, options);\n\n return passive;\n};\n\nexport const DEFAULT_IGNORE_CLASS = 'ignore-onclickoutside';\n\nexport type UseOnClickOutsideCallback<T extends Event = Event> = (\n event: T\n) => void;\n\ntype El = HTMLElement;\ntype Refs = React.RefObject<El>[];\n\nexport interface UseOnClickOutsideOptions {\n detectIFrame?: boolean;\n disabled?: boolean;\n eventTypes?: string[];\n excludeScrollbar?: boolean;\n ignoreClass?: string[] | string;\n refs?: Refs;\n}\n\nexport type UseOnClickOutsideReturn = (element: El | null) => void;\n\nconst checkClass = (el: HTMLElement, cl: string): boolean =>\n el.classList?.contains(cl);\n\nconst hasIgnoreClass = (e: any, ignoreClass: string[] | string): boolean => {\n let el = e.target || e;\n\n while (el) {\n if (Array.isArray(ignoreClass)) {\n // eslint-disable-next-line no-loop-func\n if (ignoreClass.some((c) => checkClass(el, c))) return true;\n } else if (checkClass(el, ignoreClass)) {\n return true;\n }\n\n el = el.parentElement;\n }\n\n return false;\n};\n\nconst clickedOnScrollbar = (e: MouseEvent): boolean =>\n document.documentElement.clientWidth <= e.clientX ||\n document.documentElement.clientHeight <= e.clientY;\n\nconst getEventOptions = (type: string): { passive: boolean } | boolean =>\n type.includes('touch') && canUsePassiveEvents() ? { passive: true } : false;\n\nexport const useOnClickOutside = (\n callback: UseOnClickOutsideCallback,\n {\n detectIFrame = true,\n disabled,\n eventTypes = ['mousedown', 'touchstart'],\n excludeScrollbar,\n ignoreClass = DEFAULT_IGNORE_CLASS,\n refs: refsOpt,\n }: UseOnClickOutsideOptions = {}\n): UseOnClickOutsideReturn => {\n const [refsState, setRefsState] = React.useState<Refs>([]);\n const callbackRef = React.useRef(callback);\n callbackRef.current = callback;\n\n const ref: UseOnClickOutsideReturn = React.useCallback(\n (el) => setRefsState((prevState) => [...prevState, { current: el }]),\n []\n );\n\n React.useEffect(\n () => {\n if (!refsOpt?.length && refsState.length === 0) return;\n\n const getEls = () => {\n const els: El[] = [];\n (refsOpt || refsState).forEach(\n ({ current }) => current && els.push(current)\n );\n\n return els;\n };\n\n const handler = (e: any) => {\n if (\n !hasIgnoreClass(e, ignoreClass) &&\n !(excludeScrollbar && clickedOnScrollbar(e)) &&\n getEls().every((el) => !el.contains(e.target))\n )\n callbackRef.current(e);\n };\n\n const blurHandler = (e: FocusEvent) =>\n // On firefox the iframe becomes document.activeElement in the next event loop\n setTimeout(() => {\n const { activeElement } = document;\n\n if (\n activeElement?.tagName === 'IFRAME' &&\n !hasIgnoreClass(activeElement, ignoreClass) &&\n !getEls().includes(activeElement as HTMLIFrameElement)\n )\n callbackRef.current(e);\n }, 0);\n\n const removeEventListener = () => {\n eventTypes.forEach((type) =>\n document.removeEventListener(\n type,\n handler,\n getEventOptions(type) as any\n )\n );\n\n if (detectIFrame) window.removeEventListener('blur', blurHandler);\n };\n\n if (disabled) {\n removeEventListener();\n\n return;\n }\n\n eventTypes.forEach((type) =>\n document.addEventListener(type, handler, getEventOptions(type))\n );\n\n if (detectIFrame) window.addEventListener('blur', blurHandler);\n\n // eslint-disable-next-line consistent-return\n return () => removeEventListener();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n refsState,\n ignoreClass,\n excludeScrollbar,\n disabled,\n detectIFrame,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(eventTypes),\n ]\n );\n\n return ref;\n};\n","import React from 'react';\n\nexport const useStableMemo = <T>(\n producer: () => T,\n deps?: React.DependencyList\n): T => {\n const [value, setValue] = React.useState(producer);\n\n React.useLayoutEffect(() => {\n setValue(producer);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n\n return value;\n};\n","import React from 'react';\n\n/**\n * Wrap a component into multiple providers. If there are any props that you\n * want a provider to receive, you can simply pass an array.\n */\nexport const withProviders =\n (...providers: any[]) =>\n <T,>(WrappedComponent: React.FC<T>) =>\n (props: T) =>\n providers.reduceRight(\n (acc, prov) => {\n let Provider = prov;\n\n if (Array.isArray(prov)) {\n [Provider] = prov;\n\n return <Provider {...prov[1]}>{acc}</Provider>;\n }\n\n return <Provider>{acc}</Provider>;\n },\n <WrappedComponent {...(props as any)} />\n );\n","import React from 'react';\n\ntype ElementType<P = any> =\n | {\n [K in keyof JSX.IntrinsicElements]: P extends JSX.IntrinsicElements[K]\n ? K\n : never;\n }[keyof JSX.IntrinsicElements]\n | React.ComponentType<P>;\n\ntype ForwardRefComponent<T, P = {}> = React.ForwardRefExoticComponent<\n React.PropsWithoutRef<P> & React.RefAttributes<T>\n>;\n\ntype InferElementRef<T> =\n T extends ElementType<any>\n ? T extends keyof JSX.IntrinsicElements\n ? JSX.IntrinsicElements[T] extends React.DetailedHTMLProps<\n React.HTMLAttributes<infer R>,\n any\n >\n ? R\n : never\n : T extends React.ComponentType<any>\n ? T extends React.ComponentClass<any>\n ? InstanceType<T>\n : T extends React.ForwardRefExoticComponent<any>\n ? React.ComponentPropsWithRef<T>['ref'] extends React.Ref<infer R>\n ? R\n : never\n : never\n : never\n : never;\n\n/**\n * Shorter alternative to `React.forwardRef`.\n *\n * @generic1 Component type or element type\n * @generic2 Extended prop types\n */\nexport function withRef<T extends ElementType, P = {}>(\n renderFunction: React.ForwardRefRenderFunction<\n InferElementRef<T>,\n React.ComponentPropsWithoutRef<T> & P\n >\n): ForwardRefComponent<\n InferElementRef<T>,\n React.ComponentPropsWithoutRef<T> & P\n> {\n return React.forwardRef(renderFunction as any) as any;\n}\n"],"mappings":"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","names":["_a","React","React","React","React","React","_a","_b","React","React","React","React","React","React","_a","React","React","React","React"]}
|
|
1
|
+
{"version":3,"sources":["../src/createSlotComponent.tsx","../src/Box.tsx","../src/MemoizedChildren.tsx","../src/PortalBody.tsx","../src/Text.tsx","../src/composeEventHandlers.ts","../src/createPrimitiveComponent.tsx","../src/useComposedRef.ts","../src/createPrimitiveElement.tsx","../src/useEffectOnce.ts","../src/useIsomorphicLayoutEffect.ts","../src/useMemoOnce.ts","../src/useMemoizedSelector.ts","../src/useOnClickOutside.ts","../src/useStableMemo.ts","../src/withProviders.tsx","../src/withRef.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Slot } from '@radix-ui/react-slot';\n\nexport const createSlotComponent = <\n T extends React.ElementType,\n P extends React.ComponentPropsWithoutRef<T>,\n>(\n element: T\n) =>\n // eslint-disable-next-line react/display-name\n React.forwardRef<\n any,\n {\n as?: React.ElementType;\n asChild?: boolean;\n } & P\n >(({ as, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : (as as T) || element;\n\n return <Comp ref={ref} {...props} />;\n });\n","import type React from 'react';\n\nimport { createSlotComponent } from './createSlotComponent';\n\nexport const Box = createSlotComponent('div');\n\nexport type BoxProps = React.ComponentPropsWithRef<typeof Box>;\n","import React from 'react';\n\nexport const MemoizedChildren = React.memo(\n ({ children }: { children: React.ReactNode }) => {\n return <>{children}</>;\n }\n);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nexport type PortalBodyProps = { children: React.ReactNode; element?: Element };\n\nexport const PortalBody: ({\n children,\n element,\n}: PortalBodyProps) => React.ReactPortal = ({\n children,\n element,\n}: PortalBodyProps) => {\n const container =\n element || typeof window !== 'undefined' ? document.body : undefined;\n\n if (!container) return (<>{children}</>) as any;\n\n return ReactDOM.createPortal(children, element || document.body);\n};\n","import type React from 'react';\n\nimport { createSlotComponent } from './createSlotComponent';\n\nexport const Text = createSlotComponent('span');\n\nexport type TextProps = React.ComponentPropsWithRef<typeof Text>;\n","/** @see https://github.com/radix-ui/primitives/blob/b324ec2d7ddf13a2a115cb5b11478e24d2f45b87/packages/core/primitive/src/primitive.tsx#L1 */\nexport const composeEventHandlers =\n <E>(\n originalEventHandler?: (event: E) => void,\n ourEventHandler?: (event: E) => void,\n { checkForDefaultPrevented = true } = {}\n ) =>\n (event: E) => {\n originalEventHandler?.(event);\n\n if (\n checkForDefaultPrevented === false ||\n !(event as unknown as Event).defaultPrevented\n ) {\n return ourEventHandler?.(event);\n }\n };\n","/* eslint-disable react/display-name */\n\nimport React from 'react';\n\nimport { isDefined } from '@udecode/utils';\nimport { clsx } from 'clsx';\n\nimport { createSlotComponent } from './createSlotComponent';\nimport { useComposedRef } from './useComposedRef';\n\n/**\n * Primitive component factory. It uses hooks for managing state and props, and\n * forwards references to child components. Component props:\n *\n * - `asChild`: If true, the component will be rendered as a `Slot`\n * {@link https://www.radix-ui.com/docs/primitives/utilities/slot}.\n * - `options`: Options passed to the state hook.\n * - `state`: Provide your state instead of using the state hook.\n * - `className`: Class name to be merged to the component.\n * - `style`: Style object to be merged to the component.\n * - `setProps`: Function to set props from the props hook.\n * - `...props`: Props to be passed to the component. Props hook return value:\n * - `ref`: Reference to be forwarded to the component.\n * - `props`: Props to be passed to the component.\n * - `hidden`: If true, the component will not be rendered.\n *\n * @example\n * const MyButton = createPrimitiveComponent(Button)({\n * stateHook: useButtonState,\n * propsHook: useButton,\n * });\n *\n * @param {React.ElementType} element The base component or native HTML element.\n * @returns {function} A primitive component.\n */\nexport const createPrimitiveComponent = <\n T extends React.ElementType,\n P extends React.ComponentPropsWithoutRef<T>,\n>(\n element: T\n) => {\n const Comp = createSlotComponent<T, P>(element);\n\n return <SH extends (options: any) => any, PH extends (state: any) => any>({\n propsHook,\n stateHook,\n }: {\n propsHook?: PH;\n stateHook?: SH;\n } = {}) => {\n return React.forwardRef<\n any,\n {\n as?: React.ElementType;\n asChild?: boolean;\n className?: string;\n options?: Parameters<SH>[0];\n setProps?: (hookProps: NonNullable<ReturnType<PH>['props']>) => P;\n state?: Parameters<PH>[0];\n style?: React.CSSProperties;\n } & P\n >(\n (\n {\n asChild,\n className: classNameProp,\n getClassName,\n options,\n state: stateProp,\n ...props\n },\n ref\n ) => {\n const state = isDefined(stateProp)\n ? stateProp\n : stateHook\n ? stateHook(options as any)\n : undefined;\n const {\n hidden,\n props: hookProps,\n ref: hookRef,\n } = propsHook\n ? propsHook(state)\n : { hidden: false, props: {}, ref: null };\n\n const _ref = useComposedRef(ref, hookRef);\n const className =\n isDefined(hookProps?.className) || isDefined(classNameProp)\n ? clsx(hookProps?.className, classNameProp)\n : undefined;\n const style =\n hookProps?.style || props.style\n ? { ...hookProps?.style, ...props.style }\n : undefined;\n\n if (!asChild && hidden) return null;\n\n return (\n <Comp\n ref={_ref}\n asChild={asChild}\n {...hookProps}\n className={className}\n style={style}\n {...props}\n {...(props.setProps?.(hookProps ?? {}) ?? {})}\n />\n );\n }\n );\n };\n};\n","import React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value This utility takes care of different types\n * of refs: callback refs and React.RefObject(s)\n */\nconst setRef = <T>(ref: PossibleRef<T>, value: T) => {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n (ref as React.MutableRefObject<T>).current = value;\n }\n};\n\n/**\n * A utility to compose multiple refs together Accepts callback refs and\n * React.RefObject(s)\n */\nexport const composeRefs =\n <T>(...refs: PossibleRef<T>[]) =>\n (node: T) =>\n refs.forEach((ref) => setRef(ref, node));\n\n/**\n * A custom hook that composes multiple refs Accepts callback refs and\n * React.RefObject(s)\n */\nexport const useComposedRef = <T>(...refs: PossibleRef<T>[]) => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n};\n","import React from 'react';\n\nexport function createPrimitiveElement<T extends keyof HTMLElementTagNameMap>(\n tag: T\n) {\n return React.forwardRef<HTMLElementTagNameMap[T], JSX.IntrinsicElements[T]>(\n function CreateComponent(props, ref) {\n return React.createElement(tag, { ...props, ref });\n }\n );\n}\n","import React from 'react';\n\nexport function useEffectOnce(\n effect: React.EffectCallback,\n deps: React.DependencyList\n) {\n const initialized = React.useRef(false);\n const prevDepsRef = React.useRef(deps);\n\n React.useEffect(() => {\n const depsChanged = deps.some((dep, i) => dep !== prevDepsRef.current[i]);\n\n if (!initialized.current || depsChanged) {\n initialized.current = true;\n prevDepsRef.current = deps;\n effect();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n","import React from 'react';\n\nexport const CAN_USE_DOM =\n typeof window !== 'undefined' && window.document?.createElement !== undefined;\n\n/**\n * Prevent warning on SSR by falling back to React.useEffect when DOM isn't\n * available\n */\nexport const useIsomorphicLayoutEffect = CAN_USE_DOM\n ? React.useLayoutEffect\n : React.useEffect;\n","import React from 'react';\n\nexport function useMemoOnce<T>(\n factory: () => T,\n deps: React.DependencyList\n): T {\n const initialized = React.useRef(false);\n const prevDepsRef = React.useRef(deps);\n const memoizedValueRef = React.useRef<T>();\n\n if (\n !initialized.current ||\n deps.some((dep, i) => dep !== prevDepsRef.current[i])\n ) {\n initialized.current = true;\n prevDepsRef.current = deps;\n memoizedValueRef.current = factory();\n }\n\n return memoizedValueRef.current!;\n}\n","import React from 'react';\n\n/**\n * Re-render only when the selector result changes.\n *\n * @param selector A function that derives a value from deps\n * @param deps Dependencies on which to run the selector\n * @param equalityFn Optional comparison function to detect changes in the\n * derived value\n */\nexport function useMemoizedSelector<R>(\n selector: () => R,\n deps: React.DependencyList,\n equalityFn: (a: R, b: R) => boolean = (a, b) => a === b\n) {\n // Initialize our state with the initial \"selected\" value.\n const [memoizedValue, setMemoizedValue] = React.useState<R>(() => selector());\n\n // Keep a ref of the previous value so we can compare in an effect.\n const previousValueRef = React.useRef<R>(memoizedValue);\n\n React.useEffect(() => {\n // Compute a new value by calling the selector.\n const newValue = selector();\n\n // If different, update state and the ref.\n if (!equalityFn(previousValueRef.current, newValue)) {\n setMemoizedValue(newValue);\n previousValueRef.current = newValue;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n\n return memoizedValue;\n}\n","import React from 'react';\n\nconst canUsePassiveEvents = (): boolean => {\n if (\n typeof window === 'undefined' ||\n typeof window.addEventListener !== 'function'\n )\n return false;\n\n let passive = false;\n const options = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line getter-return\n get() {\n passive = true;\n },\n });\n const noop = () => null;\n\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop, options);\n\n return passive;\n};\n\nexport const DEFAULT_IGNORE_CLASS = 'ignore-onclickoutside';\n\nexport type UseOnClickOutsideCallback<T extends Event = Event> = (\n event: T\n) => void;\n\ntype El = HTMLElement;\ntype Refs = React.RefObject<El>[];\n\nexport interface UseOnClickOutsideOptions {\n detectIFrame?: boolean;\n disabled?: boolean;\n eventTypes?: string[];\n excludeScrollbar?: boolean;\n ignoreClass?: string[] | string;\n refs?: Refs;\n}\n\nexport type UseOnClickOutsideReturn = (element: El | null) => void;\n\nconst checkClass = (el: HTMLElement, cl: string): boolean =>\n el.classList?.contains(cl);\n\nconst hasIgnoreClass = (e: any, ignoreClass: string[] | string): boolean => {\n let el = e.target || e;\n\n while (el) {\n if (Array.isArray(ignoreClass)) {\n // eslint-disable-next-line no-loop-func\n if (ignoreClass.some((c) => checkClass(el, c))) return true;\n } else if (checkClass(el, ignoreClass)) {\n return true;\n }\n\n el = el.parentElement;\n }\n\n return false;\n};\n\nconst clickedOnScrollbar = (e: MouseEvent): boolean =>\n document.documentElement.clientWidth <= e.clientX ||\n document.documentElement.clientHeight <= e.clientY;\n\nconst getEventOptions = (type: string): { passive: boolean } | boolean =>\n type.includes('touch') && canUsePassiveEvents() ? { passive: true } : false;\n\nexport const useOnClickOutside = (\n callback: UseOnClickOutsideCallback,\n {\n detectIFrame = true,\n disabled,\n eventTypes = ['mousedown', 'touchstart'],\n excludeScrollbar,\n ignoreClass = DEFAULT_IGNORE_CLASS,\n refs: refsOpt,\n }: UseOnClickOutsideOptions = {}\n): UseOnClickOutsideReturn => {\n const [refsState, setRefsState] = React.useState<Refs>([]);\n const callbackRef = React.useRef(callback);\n callbackRef.current = callback;\n\n const ref: UseOnClickOutsideReturn = React.useCallback(\n (el) => setRefsState((prevState) => [...prevState, { current: el }]),\n []\n );\n\n React.useEffect(\n () => {\n if (!refsOpt?.length && refsState.length === 0) return;\n\n const getEls = () => {\n const els: El[] = [];\n (refsOpt || refsState).forEach(\n ({ current }) => current && els.push(current)\n );\n\n return els;\n };\n\n const handler = (e: any) => {\n if (\n !hasIgnoreClass(e, ignoreClass) &&\n !(excludeScrollbar && clickedOnScrollbar(e)) &&\n getEls().every((el) => !el.contains(e.target))\n )\n callbackRef.current(e);\n };\n\n const blurHandler = (e: FocusEvent) =>\n // On firefox the iframe becomes document.activeElement in the next event loop\n setTimeout(() => {\n const { activeElement } = document;\n\n if (\n activeElement?.tagName === 'IFRAME' &&\n !hasIgnoreClass(activeElement, ignoreClass) &&\n !getEls().includes(activeElement as HTMLIFrameElement)\n )\n callbackRef.current(e);\n }, 0);\n\n const removeEventListener = () => {\n eventTypes.forEach((type) =>\n document.removeEventListener(\n type,\n handler,\n getEventOptions(type) as any\n )\n );\n\n if (detectIFrame) window.removeEventListener('blur', blurHandler);\n };\n\n if (disabled) {\n removeEventListener();\n\n return;\n }\n\n eventTypes.forEach((type) =>\n document.addEventListener(type, handler, getEventOptions(type))\n );\n\n if (detectIFrame) window.addEventListener('blur', blurHandler);\n\n // eslint-disable-next-line consistent-return\n return () => removeEventListener();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n refsState,\n ignoreClass,\n excludeScrollbar,\n disabled,\n detectIFrame,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(eventTypes),\n ]\n );\n\n return ref;\n};\n","import React from 'react';\n\nexport const useStableMemo = <T>(\n producer: () => T,\n deps?: React.DependencyList\n): T => {\n const [value, setValue] = React.useState(producer);\n\n React.useLayoutEffect(() => {\n setValue(producer);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n\n return value;\n};\n","import React from 'react';\n\n/**\n * Wrap a component into multiple providers. If there are any props that you\n * want a provider to receive, you can simply pass an array.\n */\nexport const withProviders =\n (...providers: any[]) =>\n <T,>(WrappedComponent: React.FC<T>) =>\n (props: T) =>\n providers.reduceRight(\n (acc, prov) => {\n let Provider = prov;\n\n if (Array.isArray(prov)) {\n [Provider] = prov;\n\n return <Provider {...prov[1]}>{acc}</Provider>;\n }\n\n return <Provider>{acc}</Provider>;\n },\n <WrappedComponent {...(props as any)} />\n );\n","import React from 'react';\n\ntype ElementType<P = any> =\n | {\n [K in keyof JSX.IntrinsicElements]: P extends JSX.IntrinsicElements[K]\n ? K\n : never;\n }[keyof JSX.IntrinsicElements]\n | React.ComponentType<P>;\n\ntype ForwardRefComponent<T, P = {}> = React.ForwardRefExoticComponent<\n React.PropsWithoutRef<P> & React.RefAttributes<T>\n>;\n\ntype InferElementRef<T> =\n T extends ElementType<any>\n ? T extends keyof JSX.IntrinsicElements\n ? JSX.IntrinsicElements[T] extends React.DetailedHTMLProps<\n React.HTMLAttributes<infer R>,\n any\n >\n ? R\n : never\n : T extends React.ComponentType<any>\n ? T extends React.ComponentClass<any>\n ? InstanceType<T>\n : T extends React.ForwardRefExoticComponent<any>\n ? React.ComponentPropsWithRef<T>['ref'] extends React.Ref<infer R>\n ? R\n : never\n : never\n : never\n : never;\n\n/**\n * Shorter alternative to `React.forwardRef`.\n *\n * @generic1 Component type or element type\n * @generic2 Extended prop types\n */\nexport function withRef<T extends ElementType, P = {}>(\n renderFunction: React.ForwardRefRenderFunction<\n InferElementRef<T>,\n React.ComponentPropsWithoutRef<T> & P\n >\n): ForwardRefComponent<\n InferElementRef<T>,\n React.ComponentPropsWithoutRef<T> & P\n> {\n return React.forwardRef(renderFunction as any) as any;\n}\n"],"mappings":"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","names":["React","React","React","React","React","React","React","React","React","React","React","React","React","React"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@udecode/react-utils",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "42.0.0",
|
|
4
4
|
"description": "Udecode React utils",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"utils"
|
|
@@ -42,12 +42,12 @@
|
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@radix-ui/react-slot": "^1.1.0",
|
|
45
|
-
"@udecode/utils": "
|
|
45
|
+
"@udecode/utils": "42.0.0",
|
|
46
46
|
"clsx": "^2.1.1"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"react": ">=
|
|
50
|
-
"react-dom": ">=
|
|
49
|
+
"react": ">=18.0.0",
|
|
50
|
+
"react-dom": ">=18.0.0"
|
|
51
51
|
},
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|