@yamada-ui/utils 1.5.1 → 1.5.2-dev-20240923054911

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.
@@ -67,23 +67,52 @@ function getValidChildren(children) {
67
67
  function isValidElement2(child) {
68
68
  return React.isValidElement(child) || isString(child) || isNumber(child);
69
69
  }
70
+ function isSomeElement(child, type) {
71
+ var _a, _b;
72
+ if (child.type === type) return true;
73
+ if (!!child.__ui__ && !!type.__ui__) {
74
+ if (child.__ui__ === type.__ui__) return true;
75
+ }
76
+ const payload = child.type._payload;
77
+ if (!!((_a = payload == null ? void 0 : payload.value) == null ? void 0 : _a.__ui__) && !!type.__ui__) {
78
+ if (((_b = payload == null ? void 0 : payload.value) == null ? void 0 : _b.__ui__) === type.__ui__) return true;
79
+ }
80
+ return false;
81
+ }
70
82
  function findChildren(children, ...types) {
71
- return children.find((child) => types.some((type) => child.type === type)) ? children.sort(
72
- (a, b) => types.some((type) => a.type === type) ? -1 : types.some((type) => b.type === type) ? 1 : 0
73
- ) : [void 0, ...children];
83
+ const child = children.find(
84
+ (child2) => types.some((type) => isSomeElement(child2, type))
85
+ );
86
+ if (child) {
87
+ return children.sort((a, b) => {
88
+ if (types.some((type) => isSomeElement(a, type))) {
89
+ return -1;
90
+ } else if (types.some((type) => isSomeElement(b, type))) {
91
+ return 1;
92
+ } else {
93
+ return 0;
94
+ }
95
+ });
96
+ } else {
97
+ return [void 0, ...children];
98
+ }
74
99
  }
75
100
  function includesChildren(children, ...types) {
76
101
  return children.some((child) => {
77
- if (types.some((type) => child.type === type)) return true;
102
+ if (types.some((type) => isSomeElement(child, type))) return true;
78
103
  const children2 = getValidChildren(child.props.children);
79
104
  return children2.length ? includesChildren(children2, ...types) : false;
80
105
  });
81
106
  }
82
107
  function omitChildren(children, ...types) {
83
- return children.filter((child) => types.every((type) => child.type !== type));
108
+ return children.filter(
109
+ (child) => types.every((type) => !isSomeElement(child, type))
110
+ );
84
111
  }
85
112
  function pickChildren(children, ...types) {
86
- return children.filter((child) => types.every((type) => child.type === type));
113
+ return children.filter(
114
+ (child) => types.every((type) => isSomeElement(child, type))
115
+ );
87
116
  }
88
117
  function cx(...classNames) {
89
118
  return classNames.filter(Boolean).join(" ");
@@ -198,6 +227,7 @@ export {
198
227
  useIsMounted,
199
228
  getValidChildren,
200
229
  isValidElement2 as isValidElement,
230
+ isSomeElement,
201
231
  findChildren,
202
232
  includesChildren,
203
233
  omitChildren,
@@ -214,4 +244,4 @@ export {
214
244
  useAsyncRetry,
215
245
  createId
216
246
  };
217
- //# sourceMappingURL=chunk-2AWPBKLQ.mjs.map
247
+ //# sourceMappingURL=chunk-CVXUYRXJ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { isNumber, isObject, isString } from \"./assertion\"\n\nexport type MaybeRenderProp<Y> =\n | React.ReactNode\n | ((props: Y) => React.ReactNode)\n\ninterface Options<ContextType extends any = any> {\n strict?: boolean\n errorMessage?: string\n name?: string\n defaultValue?: ContextType\n}\n\ntype CreateContextReturn<T> = [React.Provider<T>, () => T, React.Context<T>]\n\nexport function createContext<ContextType extends any = any>({\n strict = true,\n errorMessage = \"useContext: `context` is undefined. Seems you forgot to wrap component within the Provider\",\n name,\n defaultValue,\n}: Options<ContextType> = {}) {\n const Context = React.createContext<ContextType | undefined>(defaultValue)\n\n Context.displayName = name\n\n const useContext = () => {\n const context = React.useContext(Context)\n\n if (!context && strict) {\n const error = new Error(errorMessage)\n error.name = \"ContextError\"\n Error.captureStackTrace?.(error, useContext)\n throw error\n }\n\n return context\n }\n\n return [\n Context.Provider,\n useContext,\n Context,\n ] as CreateContextReturn<ContextType>\n}\n\nexport const useSafeLayoutEffect = Boolean(globalThis?.document)\n ? React.useLayoutEffect\n : React.useEffect\n\nexport function useUnmountEffect(callback: () => void) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useEffect(() => () => callback(), [])\n}\n\nexport interface UseIsMountedProps {\n rerender?: boolean\n delay?: number\n}\n\nexport function useIsMounted({\n rerender = false,\n delay = 0,\n}: UseIsMountedProps = {}): [() => boolean, boolean] {\n const isMountedRef = React.useRef(false)\n const [isMounted, setIsMounted] = React.useState(false)\n\n useSafeLayoutEffect(() => {\n isMountedRef.current = true\n\n let timeoutId: any = null\n\n if (rerender) {\n if (delay > 0) {\n timeoutId = setTimeout(() => setIsMounted(true), delay)\n } else {\n setIsMounted(true)\n }\n }\n\n return () => {\n isMountedRef.current = false\n\n if (rerender) setIsMounted(false)\n\n if (timeoutId) clearTimeout(timeoutId)\n }\n }, [delay, rerender])\n\n return [React.useCallback(() => isMountedRef.current, []), isMounted]\n}\n\nexport type UseIsMountedReturn = ReturnType<typeof useIsMounted>\n\nexport function getValidChildren(\n children: React.ReactNode,\n): React.ReactElement[] {\n return React.Children.toArray(children).filter((child) =>\n React.isValidElement(child),\n )\n}\n\nexport function isValidElement(child: any): child is React.ReactNode {\n return React.isValidElement(child) || isString(child) || isNumber(child)\n}\n\nexport function isSomeElement(child: any, type: any): boolean {\n if (child.type === type) return true\n\n if (!!child.__ui__ && !!type.__ui__) {\n if (child.__ui__ === type.__ui__) return true\n }\n\n const payload = child.type._payload\n\n if (!!payload?.value?.__ui__ && !!type.__ui__) {\n if (payload?.value?.__ui__ === type.__ui__) return true\n }\n\n return false\n}\n\nexport function findChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): [React.ReactElement | undefined, ...React.ReactElement[]] {\n const child = children.find((child) =>\n types.some((type) => isSomeElement(child, type)),\n )\n\n if (child) {\n return children.sort((a, b) => {\n if (types.some((type) => isSomeElement(a, type))) {\n return -1\n } else if (types.some((type) => isSomeElement(b, type))) {\n return 1\n } else {\n return 0\n }\n }) as [React.ReactElement | undefined, ...React.ReactElement[]]\n } else {\n return [undefined, ...children]\n }\n}\n\nexport function includesChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): boolean {\n return children.some((child) => {\n if (types.some((type) => isSomeElement(child, type))) return true\n\n const children = getValidChildren(child.props.children)\n\n return children.length ? includesChildren(children, ...types) : false\n })\n}\n\nexport function omitChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): React.ReactElement[] {\n return children.filter((child) =>\n types.every((type) => !isSomeElement(child, type)),\n )\n}\n\nexport function pickChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): React.ReactElement[] {\n return children.filter((child) =>\n types.every((type) => isSomeElement(child, type)),\n )\n}\n\nexport function cx(...classNames: (string | undefined)[]) {\n return classNames.filter(Boolean).join(\" \")\n}\n\ntype ReactRef<T> = React.Ref<T> | React.MutableRefObject<T> | React.LegacyRef<T>\n\nexport function isRefObject(val: any): val is { current: any } {\n return isObject(val) && \"current\" in val\n}\n\nexport function assignRef<T extends any = any>(\n ref: ReactRef<T> | undefined,\n value: T,\n) {\n if (ref == null) return\n\n if (typeof ref === \"function\") {\n ref(value)\n\n return\n }\n\n try {\n // @ts-ignore\n ref.current = value\n } catch {\n throw new Error(`Cannot assign value '${value}' to ref '${ref}'`)\n }\n}\n\nexport function mergeRefs<T extends any = any>(\n ...refs: (ReactRef<T> | null | undefined)[]\n) {\n return function (node: T | null) {\n return refs.forEach((ref) => {\n assignRef(ref, node)\n })\n }\n}\n\nexport function useMergeRefs<T extends any = any>(\n ...refs: (ReactRef<T> | undefined)[]\n) {\n return React.useMemo(() => mergeRefs(...refs), [refs])\n}\n\nexport function useCallbackRef<T extends (...args: any[]) => any>(\n callback: T | undefined,\n deps: React.DependencyList = [],\n) {\n const callbackRef = React.useRef(callback)\n\n React.useEffect(() => {\n callbackRef.current = callback\n })\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(\n ((...args) => callbackRef.current?.(...args)) as T,\n deps,\n )\n}\n\n/**\n * `useUpdateEffect` is a custom hook that skips side effects on the initial render, and only runs them when the dependency array changes.\n *\n * @see Docs https://yamada-ui.com/hooks/use-update-effect\n */\nexport function useUpdateEffect(\n callback: React.EffectCallback,\n deps: React.DependencyList,\n) {\n const renderCycleRef = React.useRef(false)\n const effectCycleRef = React.useRef(false)\n\n React.useEffect(() => {\n const mounted = renderCycleRef.current\n const run = mounted && effectCycleRef.current\n\n if (run) return callback()\n\n effectCycleRef.current = true\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n\n React.useEffect(() => {\n renderCycleRef.current = true\n\n return () => {\n renderCycleRef.current = false\n }\n }, [])\n}\n\nexport type FunctionReturningPromise = (...args: any[]) => Promise<any>\n\n/**\n * `useAsync` is a custom hook that executes an asynchronous function and tracks its state.\n *\n * @see Docs https://yamada-ui.com/hooks/use-async\n */\nexport function useAsync<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n) {\n const [state, callback] = useAsyncFunc(func, deps, { loading: true })\n\n React.useEffect(() => {\n callback()\n }, [callback])\n\n return state\n}\n\nexport type AsyncState<T> =\n | {\n loading: boolean\n error?: undefined\n value?: undefined\n }\n | {\n loading: true\n error?: Error | undefined\n value?: T\n }\n | {\n loading: false\n error: Error\n value?: undefined\n }\n | {\n loading: false\n error?: undefined\n value: T\n }\n\nexport type PromiseType<P extends Promise<any>> =\n P extends Promise<infer T> ? T : never\n\ntype StateFromFunctionReturningPromise<T extends FunctionReturningPromise> =\n AsyncState<PromiseType<ReturnType<T>>>\n\nexport type AsyncFnReturn<\n T extends FunctionReturningPromise = FunctionReturningPromise,\n> = [StateFromFunctionReturningPromise<T>, T]\n\nexport function useAsyncFunc<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n initialState: StateFromFunctionReturningPromise<T> = { loading: false },\n): AsyncFnReturn<T> {\n const lastCallId = React.useRef(0)\n const [isMounted] = useIsMounted()\n const [state, setState] =\n React.useState<StateFromFunctionReturningPromise<T>>(initialState)\n\n const callback = React.useCallback(\n (...args: Parameters<T>): ReturnType<T> => {\n const callId = ++lastCallId.current\n\n if (!state.loading)\n setState((prevState) => ({ ...prevState, loading: true }))\n\n return func(...args).then(\n (value) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ value, loading: false })\n\n return value\n },\n (error) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ error, loading: false })\n\n return error\n },\n ) as ReturnType<T>\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps,\n )\n\n return [state, callback as unknown as T]\n}\n\nexport type AsyncStateRetry<T> = AsyncState<T> & {\n retry(): void\n}\n\nexport function useAsyncRetry<T>(\n func: () => Promise<T>,\n deps: React.DependencyList = [],\n) {\n const [attempt, setAttempt] = React.useState<number>(0)\n const state = useAsync(func, [...deps, attempt])\n\n const stateLoading = state.loading\n\n const retry = React.useCallback(() => {\n if (stateLoading) return\n\n setAttempt((currentAttempt) => currentAttempt + 1)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [...deps, stateLoading])\n\n return { ...state, retry }\n}\n\nlet createIdCounter: number = 0\n\nexport function createId(prefix: string) {\n return `${prefix}-${++createIdCounter}-${new Date().getTime()}`\n}\n"],"mappings":"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","names":["createContext","useContext","isValidElement","child","children"]}
package/dist/index.d.mts CHANGED
@@ -2,7 +2,7 @@ export { Dict, Length, Merge, MergeIfDefined, ObjectLiteral, Path, Primitive, Re
2
2
  export { cast, is, isArray, isBoolean, isEmpty, isFunction, isNotNumber, isNull, isNumber, isNumeric, isObject, isString, isUndefined, isUnit } from './assertion.mjs';
3
3
  export { FlattenObjectOptions, assignAfter, filterObject, filterUndefined, flattenObject, getMemoizedObject, getObject, keysFormObject, memoizeObject, merge, objectFromEntries, omitObject, pickObject, replaceObject, splitObject } from './object.mjs';
4
4
  export { funcAll, handlerAll, noop, runIfFunc } from './function.mjs';
5
- export { AsyncFnReturn, AsyncState, AsyncStateRetry, FunctionReturningPromise, MaybeRenderProp, PromiseType, UseIsMountedProps, UseIsMountedReturn, assignRef, createContext, createId, cx, findChildren, getValidChildren, includesChildren, isRefObject, isValidElement, mergeRefs, omitChildren, pickChildren, useAsync, useAsyncFunc, useAsyncRetry, useCallbackRef, useIsMounted, useMergeRefs, useSafeLayoutEffect, useUnmountEffect, useUpdateEffect } from './react.mjs';
5
+ export { AsyncFnReturn, AsyncState, AsyncStateRetry, FunctionReturningPromise, MaybeRenderProp, PromiseType, UseIsMountedProps, UseIsMountedReturn, assignRef, createContext, createId, cx, findChildren, getValidChildren, includesChildren, isRefObject, isSomeElement, isValidElement, mergeRefs, omitChildren, pickChildren, useAsync, useAsyncFunc, useAsyncRetry, useCallbackRef, useIsMounted, useMergeRefs, useSafeLayoutEffect, useUnmountEffect, useUpdateEffect } from './react.mjs';
6
6
  export { FocusableElement, ariaAttr, createdDom, dataAttr, getActiveElement, getAllFocusable, getEventRelatedTarget, getOwnerDocument, getOwnerWindow, getPlatform, getPx, hasNegativeTabIndex, hasTabIndex, isActiveElement, isApple, isContains, isContentEditable, isDisabled, isElement, isFocusable, isHTMLElement, isHidden, isMac, isSafari, isTabbable, isTouchDevice, platform, vendor } from './dom.mjs';
7
7
  export { antonym, escape, toCamelCase, toKebabCase, toTitleCase } from './string.mjs';
8
8
  export { Operand, calc } from './calc.mjs';
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { Dict, Length, Merge, MergeIfDefined, ObjectLiteral, Path, Primitive, Re
2
2
  export { cast, is, isArray, isBoolean, isEmpty, isFunction, isNotNumber, isNull, isNumber, isNumeric, isObject, isString, isUndefined, isUnit } from './assertion.js';
3
3
  export { FlattenObjectOptions, assignAfter, filterObject, filterUndefined, flattenObject, getMemoizedObject, getObject, keysFormObject, memoizeObject, merge, objectFromEntries, omitObject, pickObject, replaceObject, splitObject } from './object.js';
4
4
  export { funcAll, handlerAll, noop, runIfFunc } from './function.js';
5
- export { AsyncFnReturn, AsyncState, AsyncStateRetry, FunctionReturningPromise, MaybeRenderProp, PromiseType, UseIsMountedProps, UseIsMountedReturn, assignRef, createContext, createId, cx, findChildren, getValidChildren, includesChildren, isRefObject, isValidElement, mergeRefs, omitChildren, pickChildren, useAsync, useAsyncFunc, useAsyncRetry, useCallbackRef, useIsMounted, useMergeRefs, useSafeLayoutEffect, useUnmountEffect, useUpdateEffect } from './react.js';
5
+ export { AsyncFnReturn, AsyncState, AsyncStateRetry, FunctionReturningPromise, MaybeRenderProp, PromiseType, UseIsMountedProps, UseIsMountedReturn, assignRef, createContext, createId, cx, findChildren, getValidChildren, includesChildren, isRefObject, isSomeElement, isValidElement, mergeRefs, omitChildren, pickChildren, useAsync, useAsyncFunc, useAsyncRetry, useCallbackRef, useIsMounted, useMergeRefs, useSafeLayoutEffect, useUnmountEffect, useUpdateEffect } from './react.js';
6
6
  export { FocusableElement, ariaAttr, createdDom, dataAttr, getActiveElement, getAllFocusable, getEventRelatedTarget, getOwnerDocument, getOwnerWindow, getPlatform, getPx, hasNegativeTabIndex, hasTabIndex, isActiveElement, isApple, isContains, isContentEditable, isDisabled, isElement, isFocusable, isHTMLElement, isHidden, isMac, isSafari, isTabbable, isTouchDevice, platform, vendor } from './dom.js';
7
7
  export { antonym, escape, toCamelCase, toKebabCase, toTitleCase } from './string.js';
8
8
  export { Operand, calc } from './calc.js';
package/dist/index.js CHANGED
@@ -108,6 +108,7 @@ __export(src_exports, {
108
108
  isObject: () => isObject,
109
109
  isRefObject: () => isRefObject,
110
110
  isSafari: () => isSafari,
111
+ isSomeElement: () => isSomeElement,
111
112
  isString: () => isString,
112
113
  isTabbable: () => isTabbable,
113
114
  isTone: () => isTone,
@@ -454,23 +455,52 @@ function getValidChildren(children) {
454
455
  function isValidElement2(child) {
455
456
  return React.isValidElement(child) || isString(child) || isNumber(child);
456
457
  }
458
+ function isSomeElement(child, type) {
459
+ var _a, _b;
460
+ if (child.type === type) return true;
461
+ if (!!child.__ui__ && !!type.__ui__) {
462
+ if (child.__ui__ === type.__ui__) return true;
463
+ }
464
+ const payload = child.type._payload;
465
+ if (!!((_a = payload == null ? void 0 : payload.value) == null ? void 0 : _a.__ui__) && !!type.__ui__) {
466
+ if (((_b = payload == null ? void 0 : payload.value) == null ? void 0 : _b.__ui__) === type.__ui__) return true;
467
+ }
468
+ return false;
469
+ }
457
470
  function findChildren(children, ...types) {
458
- return children.find((child) => types.some((type) => child.type === type)) ? children.sort(
459
- (a, b) => types.some((type) => a.type === type) ? -1 : types.some((type) => b.type === type) ? 1 : 0
460
- ) : [void 0, ...children];
471
+ const child = children.find(
472
+ (child2) => types.some((type) => isSomeElement(child2, type))
473
+ );
474
+ if (child) {
475
+ return children.sort((a, b) => {
476
+ if (types.some((type) => isSomeElement(a, type))) {
477
+ return -1;
478
+ } else if (types.some((type) => isSomeElement(b, type))) {
479
+ return 1;
480
+ } else {
481
+ return 0;
482
+ }
483
+ });
484
+ } else {
485
+ return [void 0, ...children];
486
+ }
461
487
  }
462
488
  function includesChildren(children, ...types) {
463
489
  return children.some((child) => {
464
- if (types.some((type) => child.type === type)) return true;
490
+ if (types.some((type) => isSomeElement(child, type))) return true;
465
491
  const children2 = getValidChildren(child.props.children);
466
492
  return children2.length ? includesChildren(children2, ...types) : false;
467
493
  });
468
494
  }
469
495
  function omitChildren(children, ...types) {
470
- return children.filter((child) => types.every((type) => child.type !== type));
496
+ return children.filter(
497
+ (child) => types.every((type) => !isSomeElement(child, type))
498
+ );
471
499
  }
472
500
  function pickChildren(children, ...types) {
473
- return children.filter((child) => types.every((type) => child.type === type));
501
+ return children.filter(
502
+ (child) => types.every((type) => isSomeElement(child, type))
503
+ );
474
504
  }
475
505
  function cx(...classNames) {
476
506
  return classNames.filter(Boolean).join(" ");
@@ -1312,6 +1342,7 @@ function interopDefault(module2) {
1312
1342
  isObject,
1313
1343
  isRefObject,
1314
1344
  isSafari,
1345
+ isSomeElement,
1315
1346
  isString,
1316
1347
  isTabbable,
1317
1348
  isTone,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/assertion.ts","../src/object.ts","../src/function.ts","../src/react.tsx","../src/dom.ts","../src/string.ts","../src/calc.ts","../src/color.ts","../src/array.ts","../src/number.ts","../src/event.ts","../src/module.ts"],"sourcesContent":["export * from \"./index.types\"\nexport * from \"./assertion\"\nexport * from \"./object\"\nexport * from \"./function\"\nexport * from \"./react\"\nexport * from \"./dom\"\nexport * from \"./string\"\nexport * from \"./calc\"\nexport * from \"./color\"\nexport * from \"./array\"\nexport * from \"./number\"\nexport * from \"./event\"\nexport * from \"./module\"\n","import type { Dict } from \"./index.types\"\n\nexport function is(x: any, y: any) {\n return (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === \"number\"\n}\n\nexport function isNotNumber(value: any): boolean {\n return (\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n )\n}\n\nexport function isNumeric(value: any): boolean {\n return (\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n )\n}\n\nexport function isString(value: any): value is string {\n return Object.prototype.toString.call(value) === \"[object String]\"\n}\n\nexport function isBoolean(value: any): value is boolean {\n return typeof value === \"boolean\"\n}\n\nexport function isUndefined(value: any): value is undefined {\n return typeof value === \"undefined\" && value === undefined\n}\n\nexport function isNull(value: any): value is null {\n return value === null\n}\n\nexport function isObject<T extends Dict>(value: any): value is T {\n return (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n )\n}\n\nexport function isArray<T extends any[]>(value: any): value is T {\n return Array.isArray(value)\n}\n\nexport function isEmpty(value: any): boolean {\n return !isArray(value) || !value.length || value.every((v) => v == null)\n}\n\nexport function isFunction<T extends Function = Function>(\n value: any,\n): value is T {\n return typeof value === \"function\"\n}\n\nexport function isUnit(value: any): boolean {\n return /[0-9].*(em|rem|ex|rex|cap|rcap|ch|rch|ic|ric|lh|rlh|vw|svw|lvw|dvw|vh|svh|lvh|dvh|vi|svi|lvi|dvi|vb|svb|lvb|dvb|vmin|svmin|lvmin|dvmin|vmax|svmax|lvmax|dvmax|cm|mm|Q|in|pc|pt|px|%|cqw|cqh|cqi|cqb|cqmin|cqmax)$/.test(\n value,\n )\n}\n\nexport function cast<T>(value: any) {\n return value as T\n}\n","import {\n isObject,\n isArray,\n isFunction,\n isString,\n isUndefined,\n} from \"./assertion\"\nimport type { Dict } from \"./index.types\"\n\nfunction omitObjectHelper<Y extends Dict, M extends keyof Y>(\n obj: Y,\n path: M[] | readonly M[],\n): any {\n if (!path.length) return obj\n\n const [primaryKey, ...restKeys] = path\n\n if (restKeys.length === 0 && primaryKey in obj) {\n const { [primaryKey]: _, ...rest } = obj\n\n return rest\n }\n\n if (obj[primaryKey] && isObject(obj[primaryKey])) {\n return {\n ...obj,\n [primaryKey]: omitObjectHelper(obj[primaryKey], restKeys),\n }\n }\n\n return obj\n}\n\nexport function omitObject<\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D = any,\n>(obj: Y, keys: M[] | readonly M[]) {\n return (keys as M[]).reduce((prev, key) => {\n const path = (isString(key) ? key.split(\".\") : []) as M[]\n\n return omitObjectHelper(prev, path)\n }, obj) as unknown as D extends unknown ? Omit<Y, M> : D\n}\n\nexport function pickObject<\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D = any,\n>(obj: Y, keys: M[] | readonly M[], fallbackValue = \"__fallback\") {\n return (keys as M[]).reduce((prev, key) => {\n const path = isString(key) ? key.split(\".\") : []\n\n if (!path.length) return prev\n\n const value = getMemoizedObject(obj, key as string, fallbackValue)\n\n if (value === fallbackValue) return prev\n\n prev = merge(\n prev,\n path.reduceRight(\n (prev, key) => ({ [key]: key === path.at(-1) ? value : prev }),\n {},\n ),\n )\n\n return prev\n }, {}) as D extends unknown ? { [H in M]: Y[H] } : D\n}\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n for (const [key, value] of Object.entries(obj)) {\n if (keys.includes(key as Y[M])) {\n picked[key] = value\n } else {\n omitted[key] = value\n }\n }\n\n return [picked, omitted] as [{ [P in M]: Y[P] }, Omit<Y, M>]\n}\n\nexport function filterObject<Y extends Dict, M extends Dict>(\n obj: Y,\n func: (key: keyof Y, value: Y[keyof Y], obj: Y) => boolean,\n): M {\n const result: Dict = {}\n\n Object.entries(obj).forEach(([key, value]) => {\n const shouldPass = func(key, value, obj)\n\n if (shouldPass) result[key] = value\n })\n\n return result as M\n}\n\nexport function filterUndefined<Y extends Dict>(obj: Y): Y {\n return filterObject(obj, (_, val) => val !== null && val !== undefined)\n}\n\nexport function merge<Y extends Dict>(\n target: any,\n source: any,\n mergeArray: boolean = false,\n): Y {\n let result = Object.assign({}, target)\n\n if (isObject(source)) {\n if (isObject(target)) {\n for (const [sourceKey, sourceValue] of Object.entries(source)) {\n const targetValue: any = target[sourceKey]\n\n if (mergeArray && isArray(sourceValue) && isArray(targetValue)) {\n result[sourceKey] = targetValue.concat(...sourceValue)\n } else if (\n !isFunction(sourceValue) &&\n isObject(sourceValue) &&\n target.hasOwnProperty(sourceKey)\n ) {\n result[sourceKey] = merge(targetValue, sourceValue, mergeArray)\n } else {\n Object.assign(result, { [sourceKey]: sourceValue })\n }\n }\n } else {\n result = source\n }\n }\n\n return result as Y\n}\n\nexport interface FlattenObjectOptions {\n maxDepth?: number\n omitKeys?: string[]\n separator?: string\n shouldProcess?: (obj: any) => boolean\n}\n\nexport function flattenObject<Y extends Dict>(\n obj: any,\n { maxDepth, omitKeys, separator, shouldProcess }: FlattenObjectOptions = {},\n): Y {\n maxDepth ??= Infinity\n omitKeys ??= []\n separator ??= \".\"\n\n if ((!isObject(obj) && !isArray(obj)) || !maxDepth) return obj\n\n return Object.entries(obj).reduce((result, [key, value]) => {\n if (\n isObject(value) &&\n !Object.keys(value).some((key) => omitKeys?.includes(key)) &&\n (!shouldProcess || shouldProcess(value))\n ) {\n Object.entries(\n flattenObject(value, {\n maxDepth: maxDepth - 1,\n omitKeys,\n separator,\n shouldProcess,\n }),\n ).forEach(([childKey, childValue]) => {\n result[`${key}${separator}${childKey}`] = childValue\n })\n } else {\n result[key] = value\n }\n\n return result\n }, {} as any) as Y\n}\n\nexport function objectFromEntries<Y extends Dict>(entries: any[][]): Y {\n return entries.reduce((result, [key, value]) => {\n result[key] = value\n\n return result\n }, {} as any) as Y\n}\n\nexport function keysFormObject<Y extends object>(obj: Y): (keyof Y)[] {\n return Object.keys(obj) as (keyof Y)[]\n}\n\nexport function replaceObject<Y = any>(\n objOrArray: Y,\n callBack: (value: any) => any,\n): Y {\n if (isArray(objOrArray)) {\n return objOrArray.map(callBack) as Y\n } else if (isObject(objOrArray)) {\n return Object.entries(objOrArray).reduce((obj, [key, value]) => {\n obj[key] = callBack(value)\n\n return obj\n }, {} as Dict) as Y\n } else {\n return callBack(objOrArray)\n }\n}\n\nexport function getObject(\n obj: Dict,\n path: string | number,\n fallback?: any,\n i?: number,\n) {\n const k = isString(path) ? path.split(/\\[(.*?)\\]|\\./).filter(Boolean) : [path]\n\n for (i = 0; i < k.length; i += 1) {\n if (!obj) break\n\n obj = obj[k[i]]\n }\n\n return obj === undefined ? fallback : obj\n}\n\nexport function memoizeObject(func: typeof getObject) {\n const cache = new WeakMap()\n\n function memoizedFunc<Y>(\n obj: Dict,\n path: string | number,\n fallback?: any,\n i?: number,\n ): Y {\n if (isUndefined(obj)) return func(obj, path, fallback)\n\n if (!cache.has(obj)) cache.set(obj, new Map())\n\n const map = cache.get(obj)\n\n if (map.has(path)) return map.get(path)\n\n const value = func(obj, path, fallback, i)\n\n map.set(path, value)\n\n return value as Y\n }\n\n return memoizedFunc\n}\n\nexport const getMemoizedObject = memoizeObject(getObject)\n\nexport function assignAfter(target: { [key: string]: any }, ...sources: any[]) {\n if (target == null)\n throw new TypeError(\"Cannot convert undefined or null to object\")\n\n const result: { [key: string]: unknown } = { ...target }\n\n for (const nextSource of sources) {\n if (nextSource == null) continue\n\n for (const nextKey in nextSource) {\n if (!Object.prototype.hasOwnProperty.call(nextSource, nextKey)) continue\n\n if (nextKey in result) delete result[nextKey]\n\n result[nextKey] = nextSource[nextKey]\n }\n }\n\n return result\n}\n","import { isFunction } from \"./assertion\"\n\nexport const noop = () => {}\n\nexport function runIfFunc<T, U extends any[]>(\n valOrFunc: T | ((...funcArgs: U) => T),\n ...args: U\n): T {\n return isFunction(valOrFunc) ? valOrFunc(...args) : valOrFunc\n}\n\nexport function handlerAll<T extends (event: any, ...args: any[]) => void>(\n ...funcs: (T | undefined)[]\n) {\n return function (\n event: T extends (event: infer R, ...args: any[]) => any ? R : never,\n ...args: T extends (event: any, ...args: infer R) => any ? R : never\n ) {\n funcs.some((func) => {\n func?.(event, ...args)\n\n return event?.defaultPrevented\n })\n }\n}\n\nexport function funcAll<T extends (...args: any[]) => any>(\n ...funcs: (T | undefined)[]\n) {\n return function (...args: T extends (...args: infer R) => any ? R : never) {\n return funcs.forEach((func) => func?.(...args))\n }\n}\n","import * as React from \"react\"\nimport { isNumber, isObject, isString } from \"./assertion\"\n\nexport type MaybeRenderProp<Y> =\n | React.ReactNode\n | ((props: Y) => React.ReactNode)\n\ninterface Options<ContextType extends any = any> {\n strict?: boolean\n errorMessage?: string\n name?: string\n defaultValue?: ContextType\n}\n\ntype CreateContextReturn<T> = [React.Provider<T>, () => T, React.Context<T>]\n\nexport function createContext<ContextType extends any = any>({\n strict = true,\n errorMessage = \"useContext: `context` is undefined. Seems you forgot to wrap component within the Provider\",\n name,\n defaultValue,\n}: Options<ContextType> = {}) {\n const Context = React.createContext<ContextType | undefined>(defaultValue)\n\n Context.displayName = name\n\n const useContext = () => {\n const context = React.useContext(Context)\n\n if (!context && strict) {\n const error = new Error(errorMessage)\n error.name = \"ContextError\"\n Error.captureStackTrace?.(error, useContext)\n throw error\n }\n\n return context\n }\n\n return [\n Context.Provider,\n useContext,\n Context,\n ] as CreateContextReturn<ContextType>\n}\n\nexport const useSafeLayoutEffect = Boolean(globalThis?.document)\n ? React.useLayoutEffect\n : React.useEffect\n\nexport function useUnmountEffect(callback: () => void) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useEffect(() => () => callback(), [])\n}\n\nexport interface UseIsMountedProps {\n rerender?: boolean\n delay?: number\n}\n\nexport function useIsMounted({\n rerender = false,\n delay = 0,\n}: UseIsMountedProps = {}): [() => boolean, boolean] {\n const isMountedRef = React.useRef(false)\n const [isMounted, setIsMounted] = React.useState(false)\n\n useSafeLayoutEffect(() => {\n isMountedRef.current = true\n\n let timeoutId: any = null\n\n if (rerender) {\n if (delay > 0) {\n timeoutId = setTimeout(() => setIsMounted(true), delay)\n } else {\n setIsMounted(true)\n }\n }\n\n return () => {\n isMountedRef.current = false\n\n if (rerender) setIsMounted(false)\n\n if (timeoutId) clearTimeout(timeoutId)\n }\n }, [delay, rerender])\n\n return [React.useCallback(() => isMountedRef.current, []), isMounted]\n}\n\nexport type UseIsMountedReturn = ReturnType<typeof useIsMounted>\n\nexport function getValidChildren(\n children: React.ReactNode,\n): React.ReactElement[] {\n return React.Children.toArray(children).filter((child) =>\n React.isValidElement(child),\n ) as React.ReactElement[]\n}\n\nexport function isValidElement(child: any): child is React.ReactNode {\n return React.isValidElement(child) || isString(child) || isNumber(child)\n}\n\nexport function findChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): [React.ReactElement | undefined, ...React.ReactElement[]] {\n return (\n children.find((child) => types.some((type) => child.type === type))\n ? children.sort((a, b) =>\n types.some((type) => a.type === type)\n ? -1\n : types.some((type) => b.type === type)\n ? 1\n : 0,\n )\n : [undefined, ...children]\n ) as [React.ReactElement | undefined, ...React.ReactElement[]]\n}\n\nexport function includesChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): boolean {\n return children.some((child) => {\n if (types.some((type) => child.type === type)) return true\n\n const children = getValidChildren(child.props.children)\n\n return children.length ? includesChildren(children, ...types) : false\n })\n}\n\nexport function omitChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): React.ReactElement[] {\n return children.filter((child) => types.every((type) => child.type !== type))\n}\n\nexport function pickChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): React.ReactElement[] {\n return children.filter((child) => types.every((type) => child.type === type))\n}\n\nexport function cx(...classNames: (string | undefined)[]) {\n return classNames.filter(Boolean).join(\" \")\n}\n\ntype ReactRef<T> = React.Ref<T> | React.MutableRefObject<T> | React.LegacyRef<T>\n\nexport function isRefObject(val: any): val is { current: any } {\n return isObject(val) && \"current\" in val\n}\n\nexport function assignRef<T extends any = any>(\n ref: ReactRef<T> | undefined,\n value: T,\n) {\n if (ref == null) return\n\n if (typeof ref === \"function\") {\n ref(value)\n\n return\n }\n\n try {\n // @ts-ignore\n ref.current = value\n } catch {\n throw new Error(`Cannot assign value '${value}' to ref '${ref}'`)\n }\n}\n\nexport function mergeRefs<T extends any = any>(\n ...refs: (ReactRef<T> | null | undefined)[]\n) {\n return function (node: T | null) {\n return refs.forEach((ref) => {\n assignRef(ref, node)\n })\n }\n}\n\nexport function useMergeRefs<T extends any = any>(\n ...refs: (ReactRef<T> | undefined)[]\n) {\n return React.useMemo(() => mergeRefs(...refs), [refs])\n}\n\nexport function useCallbackRef<T extends (...args: any[]) => any>(\n callback: T | undefined,\n deps: React.DependencyList = [],\n) {\n const callbackRef = React.useRef(callback)\n\n React.useEffect(() => {\n callbackRef.current = callback\n })\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(\n ((...args) => callbackRef.current?.(...args)) as T,\n deps,\n )\n}\n\n/**\n * `useUpdateEffect` is a custom hook that skips side effects on the initial render, and only runs them when the dependency array changes.\n *\n * @see Docs https://yamada-ui.com/hooks/use-update-effect\n */\nexport function useUpdateEffect(\n callback: React.EffectCallback,\n deps: React.DependencyList,\n) {\n const renderCycleRef = React.useRef(false)\n const effectCycleRef = React.useRef(false)\n\n React.useEffect(() => {\n const mounted = renderCycleRef.current\n const run = mounted && effectCycleRef.current\n\n if (run) return callback()\n\n effectCycleRef.current = true\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n\n React.useEffect(() => {\n renderCycleRef.current = true\n\n return () => {\n renderCycleRef.current = false\n }\n }, [])\n}\n\nexport type FunctionReturningPromise = (...args: any[]) => Promise<any>\n\n/**\n * `useAsync` is a custom hook that executes an asynchronous function and tracks its state.\n *\n * @see Docs https://yamada-ui.com/hooks/use-async\n */\nexport function useAsync<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n) {\n const [state, callback] = useAsyncFunc(func, deps, { loading: true })\n\n React.useEffect(() => {\n callback()\n }, [callback])\n\n return state\n}\n\nexport type AsyncState<T> =\n | {\n loading: boolean\n error?: undefined\n value?: undefined\n }\n | {\n loading: true\n error?: Error | undefined\n value?: T\n }\n | {\n loading: false\n error: Error\n value?: undefined\n }\n | {\n loading: false\n error?: undefined\n value: T\n }\n\nexport type PromiseType<P extends Promise<any>> =\n P extends Promise<infer T> ? T : never\n\ntype StateFromFunctionReturningPromise<T extends FunctionReturningPromise> =\n AsyncState<PromiseType<ReturnType<T>>>\n\nexport type AsyncFnReturn<\n T extends FunctionReturningPromise = FunctionReturningPromise,\n> = [StateFromFunctionReturningPromise<T>, T]\n\nexport function useAsyncFunc<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n initialState: StateFromFunctionReturningPromise<T> = { loading: false },\n): AsyncFnReturn<T> {\n const lastCallId = React.useRef(0)\n const [isMounted] = useIsMounted()\n const [state, setState] =\n React.useState<StateFromFunctionReturningPromise<T>>(initialState)\n\n const callback = React.useCallback(\n (...args: Parameters<T>): ReturnType<T> => {\n const callId = ++lastCallId.current\n\n if (!state.loading)\n setState((prevState) => ({ ...prevState, loading: true }))\n\n return func(...args).then(\n (value) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ value, loading: false })\n\n return value\n },\n (error) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ error, loading: false })\n\n return error\n },\n ) as ReturnType<T>\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps,\n )\n\n return [state, callback as unknown as T]\n}\n\nexport type AsyncStateRetry<T> = AsyncState<T> & {\n retry(): void\n}\n\nexport function useAsyncRetry<T>(\n func: () => Promise<T>,\n deps: React.DependencyList = [],\n) {\n const [attempt, setAttempt] = React.useState<number>(0)\n const state = useAsync(func, [...deps, attempt])\n\n const stateLoading = state.loading\n\n const retry = React.useCallback(() => {\n if (stateLoading) return\n\n setAttempt((currentAttempt) => currentAttempt + 1)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [...deps, stateLoading])\n\n return { ...state, retry }\n}\n\nlet createIdCounter: number = 0\n\nexport function createId(prefix: string) {\n return `${prefix}-${++createIdCounter}-${new Date().getTime()}`\n}\n","import type React from \"react\"\nimport { isNumber, isUndefined } from \"./assertion\"\n\nexport function createdDom(): boolean {\n return !!(\n typeof window !== \"undefined\" &&\n window.document &&\n window.document.createElement\n )\n}\n\nexport function getPlatform(): string {\n return (navigator as any).userAgentData?.platform ?? navigator.platform\n}\n\nexport function vendor(v: RegExp): boolean {\n return createdDom() && v.test(navigator.vendor)\n}\n\nexport function platform(v: RegExp): boolean {\n return createdDom() && v.test(getPlatform())\n}\n\nexport function isMac(): boolean {\n return platform(/^mac/i)\n}\n\nexport function isApple(): boolean {\n return platform(/mac|iphone|ipad|ipod/i)\n}\n\nexport function isSafari(): boolean {\n return isApple() && vendor(/apple/i)\n}\n\nexport function isElement(el: any): el is Element {\n return (\n el != null &&\n typeof el == \"object\" &&\n \"nodeType\" in el &&\n el.nodeType === Node.ELEMENT_NODE\n )\n}\n\nexport function isHTMLElement(el: any): el is HTMLElement {\n if (!isElement(el)) return false\n\n const win = el.ownerDocument.defaultView ?? window\n\n return el instanceof win.HTMLElement\n}\n\nexport function isHidden(el: HTMLElement): boolean {\n if (el.parentElement && isHidden(el.parentElement)) return true\n\n return el.hidden\n}\n\nexport function isDisabled(el: HTMLElement): boolean {\n return (\n Boolean(el.getAttribute(\"disabled\")) === true ||\n Boolean(el.getAttribute(\"data-disabled\")) === true ||\n Boolean(el.getAttribute(\"aria-disabled\")) === true\n )\n}\n\nfunction isVisible(el: HTMLElement) {\n return el.offsetWidth > 0 && el.offsetHeight > 0\n}\n\nexport function hasTabIndex(el: HTMLElement): boolean {\n return el.hasAttribute(\"tabindex\")\n}\n\nexport function isContentEditable(el: HTMLElement): boolean {\n const value = el.getAttribute(\"contenteditable\")\n\n return value !== \"false\" && value != null\n}\n\nexport function isContains(\n parent: HTMLElement | null,\n child: HTMLElement | null,\n): boolean | undefined {\n return parent === child || parent?.contains(child)\n}\n\nexport function getPx(value: string | number | undefined): number {\n if (isNumber(value)) return value\n\n if (isUndefined(value)) return 0\n\n if (value.includes(\"px\")) return parseFloat(value)\n\n const isBrowser = createdDom()\n let fontSize = 16\n\n if (isBrowser) {\n const style = window.getComputedStyle(document.documentElement)\n\n const computedFontSize = parseFloat(style.fontSize)\n\n if (!isNaN(computedFontSize)) fontSize = computedFontSize\n }\n\n return parseFloat(value) * fontSize\n}\n\nexport function getEventRelatedTarget(ev: React.FocusEvent | React.MouseEvent) {\n return (ev.relatedTarget ??\n ev.currentTarget.ownerDocument.activeElement) as HTMLElement | null\n}\n\ntype Booleanish = boolean | \"true\" | \"false\"\n\nexport function dataAttr(condition: boolean | undefined) {\n return (condition ? \"\" : undefined) as Booleanish\n}\n\nexport function ariaAttr(condition: boolean | undefined): boolean | undefined {\n return condition ? true : undefined\n}\n\nexport interface FocusableElement {\n focus: (options?: FocusOptions) => void\n}\n\nconst focusableElList = [\n \"input:not(:disabled):not([disabled])\",\n \"select:not(:disabled):not([disabled])\",\n \"textarea:not(:disabled):not([disabled])\",\n \"embed\",\n \"iframe\",\n \"object\",\n \"a[href]\",\n \"area[href]\",\n \"button:not(:disabled):not([disabled])\",\n \"[tabindex]\",\n \"audio[controls]\",\n \"video[controls]\",\n \"*[tabindex]:not([aria-disabled])\",\n \"*[contenteditable]\",\n]\n\nconst focusableElSelector: string = focusableElList.join()\n\nexport function getAllFocusable<T extends HTMLElement>(container: T): T[] {\n const focusableEls: T[] = Array.from(\n container.querySelectorAll<T>(focusableElSelector),\n )\n\n focusableEls.unshift(container)\n\n return focusableEls.filter((el) => isFocusable(el) && isVisible(el))\n}\n\nexport function isFocusable(el: HTMLElement): boolean {\n if (!isHTMLElement(el) || isHidden(el) || isDisabled(el)) {\n return false\n }\n\n const { localName } = el\n const focusableTags = [\"input\", \"select\", \"textarea\", \"button\"]\n\n if (focusableTags.indexOf(localName) >= 0) return true\n\n const others = {\n a: () => el.hasAttribute(\"href\"),\n audio: () => el.hasAttribute(\"controls\"),\n video: () => el.hasAttribute(\"controls\"),\n }\n\n if (localName in others) return others[localName as keyof typeof others]()\n\n if (isContentEditable(el)) return true\n\n return hasTabIndex(el)\n}\n\nexport function hasNegativeTabIndex(el: HTMLElement): boolean {\n return hasTabIndex(el) && el.tabIndex === -1\n}\n\nexport function isTabbable(el?: HTMLElement | null): boolean {\n return el\n ? isHTMLElement(el) && isFocusable(el) && !hasNegativeTabIndex(el)\n : false\n}\n\nexport function isTouchDevice(): boolean {\n return \"ontouchstart\" in window\n}\n\nexport function getOwnerWindow(\n node?: Element | null,\n): Window & typeof globalThis {\n return getOwnerDocument(node)?.defaultView ?? window\n}\n\nexport function getOwnerDocument(el?: Element | null): Document {\n return isElement(el) ? el.ownerDocument : document\n}\n\nexport function getActiveElement(el?: HTMLElement): HTMLElement {\n return getOwnerDocument(el).activeElement as HTMLElement\n}\n\nexport function isActiveElement(el: HTMLElement): boolean {\n return getActiveElement(el) === el\n}\n","import type { StringLiteral } from \"./index.types\"\n\nexport function escape(value: string, replaceValue: string = \"\"): string {\n return value.replace(/\\s+/g, replaceValue)\n}\n\nexport function antonym(value: string): string {\n switch (value) {\n case \"top\":\n return \"bottom\"\n\n case \"bottom\":\n return \"top\"\n\n case \"left\":\n return \"right\"\n\n case \"right\":\n return \"left\"\n\n case \"start\":\n return \"end\"\n\n case \"end\":\n return \"start\"\n\n case \"x\":\n return \"y\"\n\n case \"y\":\n return \"x\"\n\n case \"enter\":\n return \"exit\"\n\n case \"exit\":\n return \"enter\"\n\n case \"vertical\":\n return \"horizontal\"\n\n case \"horizontal\":\n return \"vertical\"\n\n case \"up\":\n return \"down\"\n\n case \"down\":\n return \"up\"\n\n case \"block\":\n return \"inline\"\n\n case \"inline\":\n return \"block\"\n\n default:\n return value\n }\n}\n\nexport function toCamelCase(value: StringLiteral): string {\n return value\n .toLowerCase()\n .replace(/[_-](.)/g, (_, val) => val.toUpperCase())\n .replace(/^(.)/, (_, val) => val.toUpperCase())\n}\n\nexport function toKebabCase(value: StringLiteral): string {\n return value\n .replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, \"$1-$2\")\n .toLowerCase()\n .replace(/^-/, \"\")\n}\n\nexport function toTitleCase(value: StringLiteral): string {\n return value\n .replace(/([A-Z])/g, \" $1\")\n .replace(/[_-](.)/g, (_, val) => ` ${val.toUpperCase()}`)\n .replace(/^./, (str) => str.toUpperCase())\n .trim()\n}\n","type Operator = \"+\" | \"-\" | \"*\" | \"/\"\n\nexport type Operand = string | number\n\nfunction toExpression(operator: Operator, ...args: Operand[]) {\n return args.join(` ${operator} `).replace(/calc/g, \"\")\n}\n\nfunction add(...args: Operand[]) {\n return `calc(${toExpression(\"+\", ...args)})`\n}\n\nfunction subtract(...args: Operand[]) {\n return `calc(${toExpression(\"-\", ...args)})`\n}\n\nfunction multiply(...args: Operand[]) {\n return `calc(${toExpression(\"*\", ...args)})`\n}\n\nfunction divide(...args: Operand[]) {\n return `calc(${toExpression(\"/\", ...args)})`\n}\n\nfunction negate(value: Operand) {\n if (value != null && !isNaN(parseFloat(value.toString())))\n return String(value).startsWith(\"-\") ? String(value).slice(1) : `-${value}`\n\n return multiply(value, -1)\n}\n\ninterface Calc {\n add: (...args: Operand[]) => Calc\n subtract: (...args: Operand[]) => Calc\n multiply: (...args: Operand[]) => Calc\n divide: (...args: Operand[]) => Calc\n negate: () => Calc\n toString: () => string\n}\n\nexport const calc = Object.assign(\n (x: Operand): Calc => ({\n add: (...args) => calc(add(x, ...args)),\n subtract: (...args) => calc(subtract(x, ...args)),\n multiply: (...args) => calc(multiply(x, ...args)),\n divide: (...args) => calc(divide(x, ...args)),\n negate: () => calc(negate(x)),\n toString: () => x.toString(),\n }),\n {\n add,\n subtract,\n multiply,\n divide,\n negate,\n },\n)\n","import * as c from \"color2k\"\nimport { isArray, isNumber, isObject } from \"./assertion\"\nimport type { Dict, StringLiteral } from \"./index.types\"\nimport { getMemoizedObject as get } from \"./object\"\n\ntype ThemeValue = string | number\ntype Breakpoint = \"base\" | StringLiteral\ntype ColorMode = \"light\" | \"dark\"\n\nexport type ColorFormat = \"hex\" | \"hexa\" | \"rgba\" | \"rgb\" | \"hsl\" | \"hsla\"\n\nexport const SEMANTIC_COLOR_SCHEMES = [\n \"mono\",\n \"primary\",\n \"secondary\",\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"link\",\n] as const\n\nexport const COLOR_SCHEMES = [\n \"gray\",\n \"neutral\",\n \"red\",\n \"rose\",\n \"pink\",\n \"flashy\",\n \"orange\",\n \"amber\",\n \"yellow\",\n \"lime\",\n \"green\",\n \"emerald\",\n \"teal\",\n \"cyan\",\n \"sky\",\n \"blue\",\n \"indigo\",\n \"violet\",\n \"purple\",\n \"fuchsia\",\n] as const\n\nexport type SemanticColorScheme =\n | (typeof SEMANTIC_COLOR_SCHEMES)[number]\n | StringLiteral\nexport type ColorScheme = (typeof COLOR_SCHEMES)[number] | StringLiteral\n\nexport const TONES = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n] as const\n\nexport function isGray(colorScheme: string) {\n return colorScheme === \"gray\" || colorScheme === \"neutral\"\n}\n\nexport function isAccessible(colorScheme: string) {\n return (\n colorScheme === \"yellow\" || colorScheme === \"cyan\" || colorScheme === \"lime\"\n )\n}\n\nexport function getColor(color: string, fallback: string = \"#000000\") {\n return function (\n theme: Dict = {},\n colorMode: ColorMode = \"light\",\n breakpoint: Breakpoint = \"base\",\n ) {\n const [token, tone] = color.split(\".\")\n\n if (tone) {\n const [, relatedToken] =\n Object.entries<string>(theme.semantics?.colorSchemes ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedToken) color = `${relatedToken}.${tone}`\n } else {\n const [, relatedColor] =\n Object.entries<string>(theme.semantics?.colors ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedColor) color = relatedColor\n }\n\n const hex = get<ThemeValue | [ThemeValue, ThemeValue] | Dict<ThemeValue>>(\n theme,\n `colors.${color}`,\n color,\n )\n\n try {\n if (isArray(hex)) {\n return c.toHex(String(hex[colorMode !== \"dark\" ? 0 : 1]))\n } else if (isObject(hex)) {\n return c.toHex(String(hex[breakpoint]))\n } else {\n return c.toHex(String(hex))\n }\n } catch {\n try {\n return c.toHex(fallback)\n } catch {\n return \"#000000\"\n }\n }\n }\n}\n\nexport function lightenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.lighten(raw, amount / 100))\n }\n}\n\nexport function darkenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.darken(raw, amount / 100))\n }\n}\n\nexport function tintColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#fff\", amount / 100))\n }\n}\n\nexport function shadeColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#000\", amount / 100))\n }\n}\n\nexport function transparentizeColor(color: string, alpha: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.transparentize(raw, 1 - alpha)\n }\n}\n\nexport function randomColor({\n string,\n colors,\n}: { string?: string; colors?: string[] } = {}) {\n const fallback = randomHex()\n\n if (string && colors) return randomColorFromList(string, colors)\n\n if (string && !colors) return randomColorFromString(string)\n\n if (colors && !string) return randomFromList(colors)\n\n return fallback\n}\n\nfunction randomHex() {\n return `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padEnd(6, \"0\")}`\n}\n\nfunction randomColorFromString(str: string) {\n let hash = 0\n\n if (str.length === 0) return hash.toString()\n\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash)\n hash = hash & hash\n }\n\n let color = \"#\"\n\n for (let j = 0; j < 3; j += 1) {\n const value = (hash >> (j * 8)) & 255\n\n color += `00${value.toString(16)}`.substr(-2)\n }\n\n return color\n}\n\nfunction randomColorFromList(str: string, list: string[]) {\n let index = 0\n\n if (str.length === 0) return list[0]\n\n for (let i = 0; i < str.length; i += 1) {\n index = str.charCodeAt(i) + ((index << 5) - index)\n\n index = index & index\n }\n\n index = ((index % list.length) + list.length) % list.length\n\n return list[index]\n}\n\nfunction randomFromList(list: string[]) {\n return list[Math.floor(Math.random() * list.length)]\n}\n\nfunction getBrightness(color: string) {\n const [r, g, b] = c.parseToRgba(color)\n\n return (r * 299 + g * 587 + b * 114) / 1000\n}\n\nexport function isTone(color: string) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = theme ? getColor(color)(theme, colorMode, breakpoint) : color\n\n const brightness = getBrightness(raw)\n\n const isDark = brightness < 128\n\n return isDark ? \"dark\" : \"light\"\n }\n}\n\nexport function isLight(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"dark\"\n }\n}\n\nexport function isDark(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"light\"\n }\n}\n\nexport function convertColor(color: string, fallback?: string) {\n return function (format: ColorFormat): string | undefined {\n try {\n const isAlpha = format.endsWith(\"a\")\n\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n if (format.startsWith(\"hex\")) {\n let hexa = c.toHex(color)\n\n if (isAlpha) {\n if (hexa.length === 7) hexa += \"ff\"\n } else {\n hexa = hexa.replace(/(?<=^#([0-9a-fA-F]{6}))[0-9a-fA-F]{2}$/, \"\")\n }\n\n return hexa\n } else if (format.startsWith(\"hsl\")) {\n let hsla = c.toHsla(color)\n\n if (!isAlpha) {\n hsla = hsla.replace(/hsla/, \"hsl\")\n hsla = hsla.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return hsla\n } else {\n let rgba = c.toRgba(color)\n\n if (!isAlpha) {\n rgba = rgba.replace(/rgba/, \"rgb\")\n rgba = rgba.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return rgba\n }\n } catch {\n if (fallback) return convertColor(fallback)(format)\n }\n }\n}\n\nexport function calcFormat(color: string): ColorFormat {\n if (color.startsWith(\"hsl\")) {\n return color.startsWith(\"hsla\") ? \"hsla\" : \"hsl\"\n } else if (color.startsWith(\"rgb\")) {\n return color.startsWith(\"rgba\") ? \"rgba\" : \"rgb\"\n } else {\n return color.length === 9 ? \"hexa\" : \"hex\"\n }\n}\n\nexport function getAlpha(color: string) {\n return c.parseToRgba(color)[3]\n}\n\nexport function alphaToHex(a: number) {\n if (0 > a) a = 0\n if (1 < a) a = 1\n\n return Math.round(a * 255)\n .toString(16)\n .padStart(2, \"0\")\n}\n\nexport function parseToRgba(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToRgba(color)\n } catch {\n if (fallback) return c.parseToRgba(fallback)\n }\n}\n\nexport function parseToHsla(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToHsla(color)\n } catch {\n if (fallback) return c.parseToHsla(fallback)\n }\n}\n\nexport function parseToHsv(\n color: string,\n fallback?: string,\n): [number, number, number, number] {\n let [r, g, b, a] = parseToRgba(color, fallback) ?? [255, 255, 255, 1]\n\n r = r / 255\n g = g / 255\n b = b / 255\n\n const [min, max] = [Math.min(r, g, b), Math.max(r, g, b)]\n const delta = max - min\n\n let [h, v, s] = [0, max, max == 0 ? 0 : delta / max]\n\n switch (min) {\n case max:\n h = 0\n break\n\n case r:\n h = 60 * ((b - g) / delta) + 180\n break\n\n case g:\n h = 60 * ((r - b) / delta) + 300\n break\n\n case b:\n h = 60 * ((g - r) / delta) + 60\n break\n }\n\n return [h, s, v, a]\n}\n\nexport function rgbaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.rgba(r, g, b, a), fallback)(format)\n }\n}\n\nexport function hslaTo(\n [h, s, l, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.hsla(h, s, l, a), fallback)(format)\n }\n}\n\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\"): string | undefined {\n h = h / 60\n\n let rgb: [number, number, number] = [v, v, v]\n\n let i = Math.floor(h)\n let f = h - i\n let p = v * (1 - s)\n let q = v * (1 - s * f)\n let t = v * (1 - s * (1 - f))\n\n switch (i) {\n case 0:\n case 6:\n rgb = [v, t, p]\n break\n\n case 1:\n rgb = [q, v, p]\n break\n\n case 2:\n rgb = [p, v, t]\n break\n\n case 3:\n rgb = [p, q, v]\n break\n\n case 4:\n rgb = [t, p, v]\n break\n\n case 5:\n rgb = [v, p, q]\n break\n }\n\n let color = `rgb(${rgb.map((v) => Math.round(v * 255)).join(\", \")})`\n\n if (isNumber(a)) color = color.replace(/\\)$/, `, ${a})`)\n\n return convertColor(color, fallback)(format)\n }\n}\n\nexport function sameColor(\n color: string | undefined,\n comparison: string | undefined,\n) {\n if (!color) return false\n if (!comparison) return false\n\n const a = parseToRgba(color) ?? []\n const b = parseToRgba(comparison) ?? []\n\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]\n}\n","export function filterEmpty<T extends any[]>(array: T) {\n return array.filter((value) => value != null)\n}\n","export function toNumber(n: any): number {\n const num = parseFloat(n)\n\n return typeof num !== \"number\" || Number.isNaN(num) ? 0 : num\n}\n\nexport function toPrecision(n: number, precision?: number): string {\n n = toNumber(n)\n\n const scale = 10 ** (precision ?? 10)\n\n n = Math.round(n * scale) / scale\n\n return precision ? n.toFixed(precision) : n.toString()\n}\n\nexport function countDecimal(n: number): number {\n if (!Number.isFinite(n)) return 0\n\n let e = 1\n let p = 0\n\n while (Math.round(n * e) / e !== n) {\n e *= 10\n p += 1\n }\n\n return p\n}\n\nexport function roundNumberToStep(n: number, from: number, step: number) {\n const nextValue = Math.round((n - from) / step) * step + from\n\n const precision = countDecimal(step)\n\n return toPrecision(nextValue, precision)\n}\n\nexport function valueToPercent(n: number, min: number, max: number): number {\n return ((n - min) * 100) / (max - min)\n}\n\nexport function percentToValue(n: number, min: number, max: number) {\n return (max - min) * n + min\n}\n\nexport function clampNumber(n: number, min: number, max: number): number {\n return Math.min(Math.max(n, min), max)\n}\n","export type AnyPointerEvent = MouseEvent | TouchEvent | PointerEvent\n\nexport type PointType = \"page\" | \"client\"\n\nexport interface Point {\n x: number\n y: number\n}\n\nexport interface PointerEventInfo {\n point: Point\n}\n\nexport type MixedEventListener = (\n e: AnyPointerEvent,\n info: PointerEventInfo,\n) => void\n\nexport function isMouseEvent(ev: any): ev is MouseEvent {\n const win = getEventWindow(ev)\n\n if (typeof win.PointerEvent !== \"undefined\" && ev instanceof win.PointerEvent)\n return !!(ev.pointerType === \"mouse\")\n\n return ev instanceof win.MouseEvent\n}\n\nexport function isTouchEvent(ev: AnyPointerEvent): ev is TouchEvent {\n return !!(ev as TouchEvent).touches\n}\n\nexport function isMultiTouchEvent(ev: AnyPointerEvent) {\n return isTouchEvent(ev) && ev.touches.length > 1\n}\n\nexport function getEventWindow(ev: Event): typeof globalThis {\n return ((ev as UIEvent).view ?? window) as unknown as typeof globalThis\n}\n\nexport function pointFromTouch(e: TouchEvent, type: PointType = \"page\") {\n const point = e.touches[0] || e.changedTouches[0]\n\n return { x: point[`${type}X`], y: point[`${type}Y`] }\n}\n\nexport function pointFromMouse(\n point: MouseEvent | PointerEvent,\n type: PointType = \"page\",\n) {\n return {\n x: point[`${type}X`],\n y: point[`${type}Y`],\n }\n}\n\nexport function getEventPoint(ev: AnyPointerEvent, type: PointType = \"page\") {\n return isTouchEvent(ev) ? pointFromTouch(ev, type) : pointFromMouse(ev, type)\n}\n\nexport function addDomEvent(\n target: EventTarget,\n type: string,\n cb: EventListener,\n options?: AddEventListenerOptions,\n) {\n target.addEventListener(type, cb, options)\n\n return () => {\n target.removeEventListener(type, cb, options)\n }\n}\n\nfunction filter(cb: EventListener): EventListener {\n return function (ev: Event) {\n const isMouse = isMouseEvent(ev)\n\n if (!isMouse || (isMouse && ev.button === 0)) cb(ev)\n }\n}\n\nfunction wrap(cb: MixedEventListener, filterPrimary = false): EventListener {\n function listener(ev: any) {\n return cb(ev, { point: getEventPoint(ev) })\n }\n\n const fn = filterPrimary ? filter(listener) : listener\n\n return fn as EventListener\n}\n\nexport function addPointerEvent(\n target: EventTarget,\n type: string,\n cb: MixedEventListener,\n options?: AddEventListenerOptions,\n) {\n return addDomEvent(target, type, wrap(cb, type === \"pointerdown\"), options)\n}\n","export function interopDefault<T>(module: T): T {\n return (module as { default: T }).default || module\n}\n"],"mappings":"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","names":["createContext","isValidElement","parseToHsla","parseToRgba","prev","key","createContext","useContext","isValidElement","children","isDark","hsla","rgba","parseToRgba","parseToHsla","v","module"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/assertion.ts","../src/object.ts","../src/function.ts","../src/react.tsx","../src/dom.ts","../src/string.ts","../src/calc.ts","../src/color.ts","../src/array.ts","../src/number.ts","../src/event.ts","../src/module.ts"],"sourcesContent":["export * from \"./index.types\"\nexport * from \"./assertion\"\nexport * from \"./object\"\nexport * from \"./function\"\nexport * from \"./react\"\nexport * from \"./dom\"\nexport * from \"./string\"\nexport * from \"./calc\"\nexport * from \"./color\"\nexport * from \"./array\"\nexport * from \"./number\"\nexport * from \"./event\"\nexport * from \"./module\"\n","import type { Dict } from \"./index.types\"\n\nexport function is(x: any, y: any) {\n return (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === \"number\"\n}\n\nexport function isNotNumber(value: any): boolean {\n return (\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n )\n}\n\nexport function isNumeric(value: any): boolean {\n return (\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n )\n}\n\nexport function isString(value: any): value is string {\n return Object.prototype.toString.call(value) === \"[object String]\"\n}\n\nexport function isBoolean(value: any): value is boolean {\n return typeof value === \"boolean\"\n}\n\nexport function isUndefined(value: any): value is undefined {\n return typeof value === \"undefined\" && value === undefined\n}\n\nexport function isNull(value: any): value is null {\n return value === null\n}\n\nexport function isObject<T extends Dict>(value: any): value is T {\n return (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n )\n}\n\nexport function isArray<T extends any[]>(value: any): value is T {\n return Array.isArray(value)\n}\n\nexport function isEmpty(value: any): boolean {\n return !isArray(value) || !value.length || value.every((v) => v == null)\n}\n\nexport function isFunction<T extends Function = Function>(\n value: any,\n): value is T {\n return typeof value === \"function\"\n}\n\nexport function isUnit(value: any): boolean {\n return /[0-9].*(em|rem|ex|rex|cap|rcap|ch|rch|ic|ric|lh|rlh|vw|svw|lvw|dvw|vh|svh|lvh|dvh|vi|svi|lvi|dvi|vb|svb|lvb|dvb|vmin|svmin|lvmin|dvmin|vmax|svmax|lvmax|dvmax|cm|mm|Q|in|pc|pt|px|%|cqw|cqh|cqi|cqb|cqmin|cqmax)$/.test(\n value,\n )\n}\n\nexport function cast<T>(value: any) {\n return value as T\n}\n","import {\n isObject,\n isArray,\n isFunction,\n isString,\n isUndefined,\n} from \"./assertion\"\nimport type { Dict } from \"./index.types\"\n\nfunction omitObjectHelper<Y extends Dict, M extends keyof Y>(\n obj: Y,\n path: M[] | readonly M[],\n): any {\n if (!path.length) return obj\n\n const [primaryKey, ...restKeys] = path\n\n if (restKeys.length === 0 && primaryKey in obj) {\n const { [primaryKey]: _, ...rest } = obj\n\n return rest\n }\n\n if (obj[primaryKey] && isObject(obj[primaryKey])) {\n return {\n ...obj,\n [primaryKey]: omitObjectHelper(obj[primaryKey], restKeys),\n }\n }\n\n return obj\n}\n\nexport function omitObject<\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D = any,\n>(obj: Y, keys: M[] | readonly M[]) {\n return (keys as M[]).reduce((prev, key) => {\n const path = (isString(key) ? key.split(\".\") : []) as M[]\n\n return omitObjectHelper(prev, path)\n }, obj) as unknown as D extends unknown ? Omit<Y, M> : D\n}\n\nexport function pickObject<\n Y extends Dict,\n M extends keyof Y = keyof Y,\n D = any,\n>(obj: Y, keys: M[] | readonly M[], fallbackValue = \"__fallback\") {\n return (keys as M[]).reduce((prev, key) => {\n const path = isString(key) ? key.split(\".\") : []\n\n if (!path.length) return prev\n\n const value = getMemoizedObject(obj, key as string, fallbackValue)\n\n if (value === fallbackValue) return prev\n\n prev = merge(\n prev,\n path.reduceRight(\n (prev, key) => ({ [key]: key === path.at(-1) ? value : prev }),\n {},\n ),\n )\n\n return prev\n }, {}) as D extends unknown ? { [H in M]: Y[H] } : D\n}\n\nexport function splitObject<Y extends Dict, M extends keyof Y>(\n obj: Y,\n keys: M[] | readonly M[],\n) {\n const picked: Dict = {}\n const omitted: Dict = {}\n\n for (const [key, value] of Object.entries(obj)) {\n if (keys.includes(key as Y[M])) {\n picked[key] = value\n } else {\n omitted[key] = value\n }\n }\n\n return [picked, omitted] as [{ [P in M]: Y[P] }, Omit<Y, M>]\n}\n\nexport function filterObject<Y extends Dict, M extends Dict>(\n obj: Y,\n func: (key: keyof Y, value: Y[keyof Y], obj: Y) => boolean,\n): M {\n const result: Dict = {}\n\n Object.entries(obj).forEach(([key, value]) => {\n const shouldPass = func(key, value, obj)\n\n if (shouldPass) result[key] = value\n })\n\n return result as M\n}\n\nexport function filterUndefined<Y extends Dict>(obj: Y): Y {\n return filterObject(obj, (_, val) => val !== null && val !== undefined)\n}\n\nexport function merge<Y extends Dict>(\n target: any,\n source: any,\n mergeArray: boolean = false,\n): Y {\n let result = Object.assign({}, target)\n\n if (isObject(source)) {\n if (isObject(target)) {\n for (const [sourceKey, sourceValue] of Object.entries(source)) {\n const targetValue: any = target[sourceKey]\n\n if (mergeArray && isArray(sourceValue) && isArray(targetValue)) {\n result[sourceKey] = targetValue.concat(...sourceValue)\n } else if (\n !isFunction(sourceValue) &&\n isObject(sourceValue) &&\n target.hasOwnProperty(sourceKey)\n ) {\n result[sourceKey] = merge(targetValue, sourceValue, mergeArray)\n } else {\n Object.assign(result, { [sourceKey]: sourceValue })\n }\n }\n } else {\n result = source\n }\n }\n\n return result as Y\n}\n\nexport interface FlattenObjectOptions {\n maxDepth?: number\n omitKeys?: string[]\n separator?: string\n shouldProcess?: (obj: any) => boolean\n}\n\nexport function flattenObject<Y extends Dict>(\n obj: any,\n { maxDepth, omitKeys, separator, shouldProcess }: FlattenObjectOptions = {},\n): Y {\n maxDepth ??= Infinity\n omitKeys ??= []\n separator ??= \".\"\n\n if ((!isObject(obj) && !isArray(obj)) || !maxDepth) return obj\n\n return Object.entries(obj).reduce((result, [key, value]) => {\n if (\n isObject(value) &&\n !Object.keys(value).some((key) => omitKeys?.includes(key)) &&\n (!shouldProcess || shouldProcess(value))\n ) {\n Object.entries(\n flattenObject(value, {\n maxDepth: maxDepth - 1,\n omitKeys,\n separator,\n shouldProcess,\n }),\n ).forEach(([childKey, childValue]) => {\n result[`${key}${separator}${childKey}`] = childValue\n })\n } else {\n result[key] = value\n }\n\n return result\n }, {} as any) as Y\n}\n\nexport function objectFromEntries<Y extends Dict>(entries: any[][]): Y {\n return entries.reduce((result, [key, value]) => {\n result[key] = value\n\n return result\n }, {} as any) as Y\n}\n\nexport function keysFormObject<Y extends object>(obj: Y): (keyof Y)[] {\n return Object.keys(obj) as (keyof Y)[]\n}\n\nexport function replaceObject<Y = any>(\n objOrArray: Y,\n callBack: (value: any) => any,\n): Y {\n if (isArray(objOrArray)) {\n return objOrArray.map(callBack) as Y\n } else if (isObject(objOrArray)) {\n return Object.entries(objOrArray).reduce((obj, [key, value]) => {\n obj[key] = callBack(value)\n\n return obj\n }, {} as Dict) as Y\n } else {\n return callBack(objOrArray)\n }\n}\n\nexport function getObject(\n obj: Dict,\n path: string | number,\n fallback?: any,\n i?: number,\n) {\n const k = isString(path) ? path.split(/\\[(.*?)\\]|\\./).filter(Boolean) : [path]\n\n for (i = 0; i < k.length; i += 1) {\n if (!obj) break\n\n obj = obj[k[i]]\n }\n\n return obj === undefined ? fallback : obj\n}\n\nexport function memoizeObject(func: typeof getObject) {\n const cache = new WeakMap()\n\n function memoizedFunc<Y>(\n obj: Dict,\n path: string | number,\n fallback?: any,\n i?: number,\n ): Y {\n if (isUndefined(obj)) return func(obj, path, fallback)\n\n if (!cache.has(obj)) cache.set(obj, new Map())\n\n const map = cache.get(obj)\n\n if (map.has(path)) return map.get(path)\n\n const value = func(obj, path, fallback, i)\n\n map.set(path, value)\n\n return value as Y\n }\n\n return memoizedFunc\n}\n\nexport const getMemoizedObject = memoizeObject(getObject)\n\nexport function assignAfter(target: { [key: string]: any }, ...sources: any[]) {\n if (target == null)\n throw new TypeError(\"Cannot convert undefined or null to object\")\n\n const result: { [key: string]: unknown } = { ...target }\n\n for (const nextSource of sources) {\n if (nextSource == null) continue\n\n for (const nextKey in nextSource) {\n if (!Object.prototype.hasOwnProperty.call(nextSource, nextKey)) continue\n\n if (nextKey in result) delete result[nextKey]\n\n result[nextKey] = nextSource[nextKey]\n }\n }\n\n return result\n}\n","import { isFunction } from \"./assertion\"\n\nexport const noop = () => {}\n\nexport function runIfFunc<T, U extends any[]>(\n valOrFunc: T | ((...funcArgs: U) => T),\n ...args: U\n): T {\n return isFunction(valOrFunc) ? valOrFunc(...args) : valOrFunc\n}\n\nexport function handlerAll<T extends (event: any, ...args: any[]) => void>(\n ...funcs: (T | undefined)[]\n) {\n return function (\n event: T extends (event: infer R, ...args: any[]) => any ? R : never,\n ...args: T extends (event: any, ...args: infer R) => any ? R : never\n ) {\n funcs.some((func) => {\n func?.(event, ...args)\n\n return event?.defaultPrevented\n })\n }\n}\n\nexport function funcAll<T extends (...args: any[]) => any>(\n ...funcs: (T | undefined)[]\n) {\n return function (...args: T extends (...args: infer R) => any ? R : never) {\n return funcs.forEach((func) => func?.(...args))\n }\n}\n","import * as React from \"react\"\nimport { isNumber, isObject, isString } from \"./assertion\"\n\nexport type MaybeRenderProp<Y> =\n | React.ReactNode\n | ((props: Y) => React.ReactNode)\n\ninterface Options<ContextType extends any = any> {\n strict?: boolean\n errorMessage?: string\n name?: string\n defaultValue?: ContextType\n}\n\ntype CreateContextReturn<T> = [React.Provider<T>, () => T, React.Context<T>]\n\nexport function createContext<ContextType extends any = any>({\n strict = true,\n errorMessage = \"useContext: `context` is undefined. Seems you forgot to wrap component within the Provider\",\n name,\n defaultValue,\n}: Options<ContextType> = {}) {\n const Context = React.createContext<ContextType | undefined>(defaultValue)\n\n Context.displayName = name\n\n const useContext = () => {\n const context = React.useContext(Context)\n\n if (!context && strict) {\n const error = new Error(errorMessage)\n error.name = \"ContextError\"\n Error.captureStackTrace?.(error, useContext)\n throw error\n }\n\n return context\n }\n\n return [\n Context.Provider,\n useContext,\n Context,\n ] as CreateContextReturn<ContextType>\n}\n\nexport const useSafeLayoutEffect = Boolean(globalThis?.document)\n ? React.useLayoutEffect\n : React.useEffect\n\nexport function useUnmountEffect(callback: () => void) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useEffect(() => () => callback(), [])\n}\n\nexport interface UseIsMountedProps {\n rerender?: boolean\n delay?: number\n}\n\nexport function useIsMounted({\n rerender = false,\n delay = 0,\n}: UseIsMountedProps = {}): [() => boolean, boolean] {\n const isMountedRef = React.useRef(false)\n const [isMounted, setIsMounted] = React.useState(false)\n\n useSafeLayoutEffect(() => {\n isMountedRef.current = true\n\n let timeoutId: any = null\n\n if (rerender) {\n if (delay > 0) {\n timeoutId = setTimeout(() => setIsMounted(true), delay)\n } else {\n setIsMounted(true)\n }\n }\n\n return () => {\n isMountedRef.current = false\n\n if (rerender) setIsMounted(false)\n\n if (timeoutId) clearTimeout(timeoutId)\n }\n }, [delay, rerender])\n\n return [React.useCallback(() => isMountedRef.current, []), isMounted]\n}\n\nexport type UseIsMountedReturn = ReturnType<typeof useIsMounted>\n\nexport function getValidChildren(\n children: React.ReactNode,\n): React.ReactElement[] {\n return React.Children.toArray(children).filter((child) =>\n React.isValidElement(child),\n )\n}\n\nexport function isValidElement(child: any): child is React.ReactNode {\n return React.isValidElement(child) || isString(child) || isNumber(child)\n}\n\nexport function isSomeElement(child: any, type: any): boolean {\n if (child.type === type) return true\n\n if (!!child.__ui__ && !!type.__ui__) {\n if (child.__ui__ === type.__ui__) return true\n }\n\n const payload = child.type._payload\n\n if (!!payload?.value?.__ui__ && !!type.__ui__) {\n if (payload?.value?.__ui__ === type.__ui__) return true\n }\n\n return false\n}\n\nexport function findChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): [React.ReactElement | undefined, ...React.ReactElement[]] {\n const child = children.find((child) =>\n types.some((type) => isSomeElement(child, type)),\n )\n\n if (child) {\n return children.sort((a, b) => {\n if (types.some((type) => isSomeElement(a, type))) {\n return -1\n } else if (types.some((type) => isSomeElement(b, type))) {\n return 1\n } else {\n return 0\n }\n }) as [React.ReactElement | undefined, ...React.ReactElement[]]\n } else {\n return [undefined, ...children]\n }\n}\n\nexport function includesChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): boolean {\n return children.some((child) => {\n if (types.some((type) => isSomeElement(child, type))) return true\n\n const children = getValidChildren(child.props.children)\n\n return children.length ? includesChildren(children, ...types) : false\n })\n}\n\nexport function omitChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): React.ReactElement[] {\n return children.filter((child) =>\n types.every((type) => !isSomeElement(child, type)),\n )\n}\n\nexport function pickChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): React.ReactElement[] {\n return children.filter((child) =>\n types.every((type) => isSomeElement(child, type)),\n )\n}\n\nexport function cx(...classNames: (string | undefined)[]) {\n return classNames.filter(Boolean).join(\" \")\n}\n\ntype ReactRef<T> = React.Ref<T> | React.MutableRefObject<T> | React.LegacyRef<T>\n\nexport function isRefObject(val: any): val is { current: any } {\n return isObject(val) && \"current\" in val\n}\n\nexport function assignRef<T extends any = any>(\n ref: ReactRef<T> | undefined,\n value: T,\n) {\n if (ref == null) return\n\n if (typeof ref === \"function\") {\n ref(value)\n\n return\n }\n\n try {\n // @ts-ignore\n ref.current = value\n } catch {\n throw new Error(`Cannot assign value '${value}' to ref '${ref}'`)\n }\n}\n\nexport function mergeRefs<T extends any = any>(\n ...refs: (ReactRef<T> | null | undefined)[]\n) {\n return function (node: T | null) {\n return refs.forEach((ref) => {\n assignRef(ref, node)\n })\n }\n}\n\nexport function useMergeRefs<T extends any = any>(\n ...refs: (ReactRef<T> | undefined)[]\n) {\n return React.useMemo(() => mergeRefs(...refs), [refs])\n}\n\nexport function useCallbackRef<T extends (...args: any[]) => any>(\n callback: T | undefined,\n deps: React.DependencyList = [],\n) {\n const callbackRef = React.useRef(callback)\n\n React.useEffect(() => {\n callbackRef.current = callback\n })\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(\n ((...args) => callbackRef.current?.(...args)) as T,\n deps,\n )\n}\n\n/**\n * `useUpdateEffect` is a custom hook that skips side effects on the initial render, and only runs them when the dependency array changes.\n *\n * @see Docs https://yamada-ui.com/hooks/use-update-effect\n */\nexport function useUpdateEffect(\n callback: React.EffectCallback,\n deps: React.DependencyList,\n) {\n const renderCycleRef = React.useRef(false)\n const effectCycleRef = React.useRef(false)\n\n React.useEffect(() => {\n const mounted = renderCycleRef.current\n const run = mounted && effectCycleRef.current\n\n if (run) return callback()\n\n effectCycleRef.current = true\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n\n React.useEffect(() => {\n renderCycleRef.current = true\n\n return () => {\n renderCycleRef.current = false\n }\n }, [])\n}\n\nexport type FunctionReturningPromise = (...args: any[]) => Promise<any>\n\n/**\n * `useAsync` is a custom hook that executes an asynchronous function and tracks its state.\n *\n * @see Docs https://yamada-ui.com/hooks/use-async\n */\nexport function useAsync<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n) {\n const [state, callback] = useAsyncFunc(func, deps, { loading: true })\n\n React.useEffect(() => {\n callback()\n }, [callback])\n\n return state\n}\n\nexport type AsyncState<T> =\n | {\n loading: boolean\n error?: undefined\n value?: undefined\n }\n | {\n loading: true\n error?: Error | undefined\n value?: T\n }\n | {\n loading: false\n error: Error\n value?: undefined\n }\n | {\n loading: false\n error?: undefined\n value: T\n }\n\nexport type PromiseType<P extends Promise<any>> =\n P extends Promise<infer T> ? T : never\n\ntype StateFromFunctionReturningPromise<T extends FunctionReturningPromise> =\n AsyncState<PromiseType<ReturnType<T>>>\n\nexport type AsyncFnReturn<\n T extends FunctionReturningPromise = FunctionReturningPromise,\n> = [StateFromFunctionReturningPromise<T>, T]\n\nexport function useAsyncFunc<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n initialState: StateFromFunctionReturningPromise<T> = { loading: false },\n): AsyncFnReturn<T> {\n const lastCallId = React.useRef(0)\n const [isMounted] = useIsMounted()\n const [state, setState] =\n React.useState<StateFromFunctionReturningPromise<T>>(initialState)\n\n const callback = React.useCallback(\n (...args: Parameters<T>): ReturnType<T> => {\n const callId = ++lastCallId.current\n\n if (!state.loading)\n setState((prevState) => ({ ...prevState, loading: true }))\n\n return func(...args).then(\n (value) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ value, loading: false })\n\n return value\n },\n (error) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ error, loading: false })\n\n return error\n },\n ) as ReturnType<T>\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps,\n )\n\n return [state, callback as unknown as T]\n}\n\nexport type AsyncStateRetry<T> = AsyncState<T> & {\n retry(): void\n}\n\nexport function useAsyncRetry<T>(\n func: () => Promise<T>,\n deps: React.DependencyList = [],\n) {\n const [attempt, setAttempt] = React.useState<number>(0)\n const state = useAsync(func, [...deps, attempt])\n\n const stateLoading = state.loading\n\n const retry = React.useCallback(() => {\n if (stateLoading) return\n\n setAttempt((currentAttempt) => currentAttempt + 1)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [...deps, stateLoading])\n\n return { ...state, retry }\n}\n\nlet createIdCounter: number = 0\n\nexport function createId(prefix: string) {\n return `${prefix}-${++createIdCounter}-${new Date().getTime()}`\n}\n","import type React from \"react\"\nimport { isNumber, isUndefined } from \"./assertion\"\n\nexport function createdDom(): boolean {\n return !!(\n typeof window !== \"undefined\" &&\n window.document &&\n window.document.createElement\n )\n}\n\nexport function getPlatform(): string {\n return (navigator as any).userAgentData?.platform ?? navigator.platform\n}\n\nexport function vendor(v: RegExp): boolean {\n return createdDom() && v.test(navigator.vendor)\n}\n\nexport function platform(v: RegExp): boolean {\n return createdDom() && v.test(getPlatform())\n}\n\nexport function isMac(): boolean {\n return platform(/^mac/i)\n}\n\nexport function isApple(): boolean {\n return platform(/mac|iphone|ipad|ipod/i)\n}\n\nexport function isSafari(): boolean {\n return isApple() && vendor(/apple/i)\n}\n\nexport function isElement(el: any): el is Element {\n return (\n el != null &&\n typeof el == \"object\" &&\n \"nodeType\" in el &&\n el.nodeType === Node.ELEMENT_NODE\n )\n}\n\nexport function isHTMLElement(el: any): el is HTMLElement {\n if (!isElement(el)) return false\n\n const win = el.ownerDocument.defaultView ?? window\n\n return el instanceof win.HTMLElement\n}\n\nexport function isHidden(el: HTMLElement): boolean {\n if (el.parentElement && isHidden(el.parentElement)) return true\n\n return el.hidden\n}\n\nexport function isDisabled(el: HTMLElement): boolean {\n return (\n Boolean(el.getAttribute(\"disabled\")) === true ||\n Boolean(el.getAttribute(\"data-disabled\")) === true ||\n Boolean(el.getAttribute(\"aria-disabled\")) === true\n )\n}\n\nfunction isVisible(el: HTMLElement) {\n return el.offsetWidth > 0 && el.offsetHeight > 0\n}\n\nexport function hasTabIndex(el: HTMLElement): boolean {\n return el.hasAttribute(\"tabindex\")\n}\n\nexport function isContentEditable(el: HTMLElement): boolean {\n const value = el.getAttribute(\"contenteditable\")\n\n return value !== \"false\" && value != null\n}\n\nexport function isContains(\n parent: HTMLElement | null,\n child: HTMLElement | null,\n): boolean | undefined {\n return parent === child || parent?.contains(child)\n}\n\nexport function getPx(value: string | number | undefined): number {\n if (isNumber(value)) return value\n\n if (isUndefined(value)) return 0\n\n if (value.includes(\"px\")) return parseFloat(value)\n\n const isBrowser = createdDom()\n let fontSize = 16\n\n if (isBrowser) {\n const style = window.getComputedStyle(document.documentElement)\n\n const computedFontSize = parseFloat(style.fontSize)\n\n if (!isNaN(computedFontSize)) fontSize = computedFontSize\n }\n\n return parseFloat(value) * fontSize\n}\n\nexport function getEventRelatedTarget(ev: React.FocusEvent | React.MouseEvent) {\n return (ev.relatedTarget ??\n ev.currentTarget.ownerDocument.activeElement) as HTMLElement | null\n}\n\ntype Booleanish = boolean | \"true\" | \"false\"\n\nexport function dataAttr(condition: boolean | undefined) {\n return (condition ? \"\" : undefined) as Booleanish\n}\n\nexport function ariaAttr(condition: boolean | undefined): boolean | undefined {\n return condition ? true : undefined\n}\n\nexport interface FocusableElement {\n focus: (options?: FocusOptions) => void\n}\n\nconst focusableElList = [\n \"input:not(:disabled):not([disabled])\",\n \"select:not(:disabled):not([disabled])\",\n \"textarea:not(:disabled):not([disabled])\",\n \"embed\",\n \"iframe\",\n \"object\",\n \"a[href]\",\n \"area[href]\",\n \"button:not(:disabled):not([disabled])\",\n \"[tabindex]\",\n \"audio[controls]\",\n \"video[controls]\",\n \"*[tabindex]:not([aria-disabled])\",\n \"*[contenteditable]\",\n]\n\nconst focusableElSelector: string = focusableElList.join()\n\nexport function getAllFocusable<T extends HTMLElement>(container: T): T[] {\n const focusableEls: T[] = Array.from(\n container.querySelectorAll<T>(focusableElSelector),\n )\n\n focusableEls.unshift(container)\n\n return focusableEls.filter((el) => isFocusable(el) && isVisible(el))\n}\n\nexport function isFocusable(el: HTMLElement): boolean {\n if (!isHTMLElement(el) || isHidden(el) || isDisabled(el)) {\n return false\n }\n\n const { localName } = el\n const focusableTags = [\"input\", \"select\", \"textarea\", \"button\"]\n\n if (focusableTags.indexOf(localName) >= 0) return true\n\n const others = {\n a: () => el.hasAttribute(\"href\"),\n audio: () => el.hasAttribute(\"controls\"),\n video: () => el.hasAttribute(\"controls\"),\n }\n\n if (localName in others) return others[localName as keyof typeof others]()\n\n if (isContentEditable(el)) return true\n\n return hasTabIndex(el)\n}\n\nexport function hasNegativeTabIndex(el: HTMLElement): boolean {\n return hasTabIndex(el) && el.tabIndex === -1\n}\n\nexport function isTabbable(el?: HTMLElement | null): boolean {\n return el\n ? isHTMLElement(el) && isFocusable(el) && !hasNegativeTabIndex(el)\n : false\n}\n\nexport function isTouchDevice(): boolean {\n return \"ontouchstart\" in window\n}\n\nexport function getOwnerWindow(\n node?: Element | null,\n): Window & typeof globalThis {\n return getOwnerDocument(node)?.defaultView ?? window\n}\n\nexport function getOwnerDocument(el?: Element | null): Document {\n return isElement(el) ? el.ownerDocument : document\n}\n\nexport function getActiveElement(el?: HTMLElement): HTMLElement {\n return getOwnerDocument(el).activeElement as HTMLElement\n}\n\nexport function isActiveElement(el: HTMLElement): boolean {\n return getActiveElement(el) === el\n}\n","import type { StringLiteral } from \"./index.types\"\n\nexport function escape(value: string, replaceValue: string = \"\"): string {\n return value.replace(/\\s+/g, replaceValue)\n}\n\nexport function antonym(value: string): string {\n switch (value) {\n case \"top\":\n return \"bottom\"\n\n case \"bottom\":\n return \"top\"\n\n case \"left\":\n return \"right\"\n\n case \"right\":\n return \"left\"\n\n case \"start\":\n return \"end\"\n\n case \"end\":\n return \"start\"\n\n case \"x\":\n return \"y\"\n\n case \"y\":\n return \"x\"\n\n case \"enter\":\n return \"exit\"\n\n case \"exit\":\n return \"enter\"\n\n case \"vertical\":\n return \"horizontal\"\n\n case \"horizontal\":\n return \"vertical\"\n\n case \"up\":\n return \"down\"\n\n case \"down\":\n return \"up\"\n\n case \"block\":\n return \"inline\"\n\n case \"inline\":\n return \"block\"\n\n default:\n return value\n }\n}\n\nexport function toCamelCase(value: StringLiteral): string {\n return value\n .toLowerCase()\n .replace(/[_-](.)/g, (_, val) => val.toUpperCase())\n .replace(/^(.)/, (_, val) => val.toUpperCase())\n}\n\nexport function toKebabCase(value: StringLiteral): string {\n return value\n .replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, \"$1-$2\")\n .toLowerCase()\n .replace(/^-/, \"\")\n}\n\nexport function toTitleCase(value: StringLiteral): string {\n return value\n .replace(/([A-Z])/g, \" $1\")\n .replace(/[_-](.)/g, (_, val) => ` ${val.toUpperCase()}`)\n .replace(/^./, (str) => str.toUpperCase())\n .trim()\n}\n","type Operator = \"+\" | \"-\" | \"*\" | \"/\"\n\nexport type Operand = string | number\n\nfunction toExpression(operator: Operator, ...args: Operand[]) {\n return args.join(` ${operator} `).replace(/calc/g, \"\")\n}\n\nfunction add(...args: Operand[]) {\n return `calc(${toExpression(\"+\", ...args)})`\n}\n\nfunction subtract(...args: Operand[]) {\n return `calc(${toExpression(\"-\", ...args)})`\n}\n\nfunction multiply(...args: Operand[]) {\n return `calc(${toExpression(\"*\", ...args)})`\n}\n\nfunction divide(...args: Operand[]) {\n return `calc(${toExpression(\"/\", ...args)})`\n}\n\nfunction negate(value: Operand) {\n if (value != null && !isNaN(parseFloat(value.toString())))\n return String(value).startsWith(\"-\") ? String(value).slice(1) : `-${value}`\n\n return multiply(value, -1)\n}\n\ninterface Calc {\n add: (...args: Operand[]) => Calc\n subtract: (...args: Operand[]) => Calc\n multiply: (...args: Operand[]) => Calc\n divide: (...args: Operand[]) => Calc\n negate: () => Calc\n toString: () => string\n}\n\nexport const calc = Object.assign(\n (x: Operand): Calc => ({\n add: (...args) => calc(add(x, ...args)),\n subtract: (...args) => calc(subtract(x, ...args)),\n multiply: (...args) => calc(multiply(x, ...args)),\n divide: (...args) => calc(divide(x, ...args)),\n negate: () => calc(negate(x)),\n toString: () => x.toString(),\n }),\n {\n add,\n subtract,\n multiply,\n divide,\n negate,\n },\n)\n","import * as c from \"color2k\"\nimport { isArray, isNumber, isObject } from \"./assertion\"\nimport type { Dict, StringLiteral } from \"./index.types\"\nimport { getMemoizedObject as get } from \"./object\"\n\ntype ThemeValue = string | number\ntype Breakpoint = \"base\" | StringLiteral\ntype ColorMode = \"light\" | \"dark\"\n\nexport type ColorFormat = \"hex\" | \"hexa\" | \"rgba\" | \"rgb\" | \"hsl\" | \"hsla\"\n\nexport const SEMANTIC_COLOR_SCHEMES = [\n \"mono\",\n \"primary\",\n \"secondary\",\n \"info\",\n \"success\",\n \"warning\",\n \"danger\",\n \"link\",\n] as const\n\nexport const COLOR_SCHEMES = [\n \"gray\",\n \"neutral\",\n \"red\",\n \"rose\",\n \"pink\",\n \"flashy\",\n \"orange\",\n \"amber\",\n \"yellow\",\n \"lime\",\n \"green\",\n \"emerald\",\n \"teal\",\n \"cyan\",\n \"sky\",\n \"blue\",\n \"indigo\",\n \"violet\",\n \"purple\",\n \"fuchsia\",\n] as const\n\nexport type SemanticColorScheme =\n | (typeof SEMANTIC_COLOR_SCHEMES)[number]\n | StringLiteral\nexport type ColorScheme = (typeof COLOR_SCHEMES)[number] | StringLiteral\n\nexport const TONES = [\n 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950,\n] as const\n\nexport function isGray(colorScheme: string) {\n return colorScheme === \"gray\" || colorScheme === \"neutral\"\n}\n\nexport function isAccessible(colorScheme: string) {\n return (\n colorScheme === \"yellow\" || colorScheme === \"cyan\" || colorScheme === \"lime\"\n )\n}\n\nexport function getColor(color: string, fallback: string = \"#000000\") {\n return function (\n theme: Dict = {},\n colorMode: ColorMode = \"light\",\n breakpoint: Breakpoint = \"base\",\n ) {\n const [token, tone] = color.split(\".\")\n\n if (tone) {\n const [, relatedToken] =\n Object.entries<string>(theme.semantics?.colorSchemes ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedToken) color = `${relatedToken}.${tone}`\n } else {\n const [, relatedColor] =\n Object.entries<string>(theme.semantics?.colors ?? {}).find(\n ([semanticToken]) => token === semanticToken,\n ) ?? []\n\n if (relatedColor) color = relatedColor\n }\n\n const hex = get<ThemeValue | [ThemeValue, ThemeValue] | Dict<ThemeValue>>(\n theme,\n `colors.${color}`,\n color,\n )\n\n try {\n if (isArray(hex)) {\n return c.toHex(String(hex[colorMode !== \"dark\" ? 0 : 1]))\n } else if (isObject(hex)) {\n return c.toHex(String(hex[breakpoint]))\n } else {\n return c.toHex(String(hex))\n }\n } catch {\n try {\n return c.toHex(fallback)\n } catch {\n return \"#000000\"\n }\n }\n }\n}\n\nexport function lightenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.lighten(raw, amount / 100))\n }\n}\n\nexport function darkenColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.darken(raw, amount / 100))\n }\n}\n\nexport function tintColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#fff\", amount / 100))\n }\n}\n\nexport function shadeColor(color: string, amount: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.toHex(c.mix(raw, \"#000\", amount / 100))\n }\n}\n\nexport function transparentizeColor(color: string, alpha: number) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = getColor(color, color)(theme, colorMode, breakpoint)\n\n return c.transparentize(raw, 1 - alpha)\n }\n}\n\nexport function randomColor({\n string,\n colors,\n}: { string?: string; colors?: string[] } = {}) {\n const fallback = randomHex()\n\n if (string && colors) return randomColorFromList(string, colors)\n\n if (string && !colors) return randomColorFromString(string)\n\n if (colors && !string) return randomFromList(colors)\n\n return fallback\n}\n\nfunction randomHex() {\n return `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padEnd(6, \"0\")}`\n}\n\nfunction randomColorFromString(str: string) {\n let hash = 0\n\n if (str.length === 0) return hash.toString()\n\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash)\n hash = hash & hash\n }\n\n let color = \"#\"\n\n for (let j = 0; j < 3; j += 1) {\n const value = (hash >> (j * 8)) & 255\n\n color += `00${value.toString(16)}`.substr(-2)\n }\n\n return color\n}\n\nfunction randomColorFromList(str: string, list: string[]) {\n let index = 0\n\n if (str.length === 0) return list[0]\n\n for (let i = 0; i < str.length; i += 1) {\n index = str.charCodeAt(i) + ((index << 5) - index)\n\n index = index & index\n }\n\n index = ((index % list.length) + list.length) % list.length\n\n return list[index]\n}\n\nfunction randomFromList(list: string[]) {\n return list[Math.floor(Math.random() * list.length)]\n}\n\nfunction getBrightness(color: string) {\n const [r, g, b] = c.parseToRgba(color)\n\n return (r * 299 + g * 587 + b * 114) / 1000\n}\n\nexport function isTone(color: string) {\n return function (\n theme?: Dict,\n colorMode?: ColorMode,\n breakpoint?: Breakpoint,\n ) {\n const raw = theme ? getColor(color)(theme, colorMode, breakpoint) : color\n\n const brightness = getBrightness(raw)\n\n const isDark = brightness < 128\n\n return isDark ? \"dark\" : \"light\"\n }\n}\n\nexport function isLight(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"dark\"\n }\n}\n\nexport function isDark(color: string) {\n return function (theme?: Dict, colorMode?: ColorMode) {\n return isTone(color)(theme, colorMode) === \"light\"\n }\n}\n\nexport function convertColor(color: string, fallback?: string) {\n return function (format: ColorFormat): string | undefined {\n try {\n const isAlpha = format.endsWith(\"a\")\n\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n if (format.startsWith(\"hex\")) {\n let hexa = c.toHex(color)\n\n if (isAlpha) {\n if (hexa.length === 7) hexa += \"ff\"\n } else {\n hexa = hexa.replace(/(?<=^#([0-9a-fA-F]{6}))[0-9a-fA-F]{2}$/, \"\")\n }\n\n return hexa\n } else if (format.startsWith(\"hsl\")) {\n let hsla = c.toHsla(color)\n\n if (!isAlpha) {\n hsla = hsla.replace(/hsla/, \"hsl\")\n hsla = hsla.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return hsla\n } else {\n let rgba = c.toRgba(color)\n\n if (!isAlpha) {\n rgba = rgba.replace(/rgba/, \"rgb\")\n rgba = rgba.replace(/,\\s*\\d+(\\.\\d+)?\\)$/, \")\")\n }\n\n return rgba\n }\n } catch {\n if (fallback) return convertColor(fallback)(format)\n }\n }\n}\n\nexport function calcFormat(color: string): ColorFormat {\n if (color.startsWith(\"hsl\")) {\n return color.startsWith(\"hsla\") ? \"hsla\" : \"hsl\"\n } else if (color.startsWith(\"rgb\")) {\n return color.startsWith(\"rgba\") ? \"rgba\" : \"rgb\"\n } else {\n return color.length === 9 ? \"hexa\" : \"hex\"\n }\n}\n\nexport function getAlpha(color: string) {\n return c.parseToRgba(color)[3]\n}\n\nexport function alphaToHex(a: number) {\n if (0 > a) a = 0\n if (1 < a) a = 1\n\n return Math.round(a * 255)\n .toString(16)\n .padStart(2, \"0\")\n}\n\nexport function parseToRgba(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToRgba(color)\n } catch {\n if (fallback) return c.parseToRgba(fallback)\n }\n}\n\nexport function parseToHsla(color: string, fallback?: string) {\n try {\n if (/^[0-9a-fA-F]{6}$/.test(color)) color = \"#\" + color\n\n return c.parseToHsla(color)\n } catch {\n if (fallback) return c.parseToHsla(fallback)\n }\n}\n\nexport function parseToHsv(\n color: string,\n fallback?: string,\n): [number, number, number, number] {\n let [r, g, b, a] = parseToRgba(color, fallback) ?? [255, 255, 255, 1]\n\n r = r / 255\n g = g / 255\n b = b / 255\n\n const [min, max] = [Math.min(r, g, b), Math.max(r, g, b)]\n const delta = max - min\n\n let [h, v, s] = [0, max, max == 0 ? 0 : delta / max]\n\n switch (min) {\n case max:\n h = 0\n break\n\n case r:\n h = 60 * ((b - g) / delta) + 180\n break\n\n case g:\n h = 60 * ((r - b) / delta) + 300\n break\n\n case b:\n h = 60 * ((g - r) / delta) + 60\n break\n }\n\n return [h, s, v, a]\n}\n\nexport function rgbaTo(\n [r, g, b, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.rgba(r, g, b, a), fallback)(format)\n }\n}\n\nexport function hslaTo(\n [h, s, l, a]: [number, number, number, number],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\") {\n return convertColor(c.hsla(h, s, l, a), fallback)(format)\n }\n}\n\nexport function hsvTo(\n [h, s, v, a]: [number, number, number, number?],\n fallback?: string,\n) {\n return function (format: ColorFormat = \"hex\"): string | undefined {\n h = h / 60\n\n let rgb: [number, number, number] = [v, v, v]\n\n let i = Math.floor(h)\n let f = h - i\n let p = v * (1 - s)\n let q = v * (1 - s * f)\n let t = v * (1 - s * (1 - f))\n\n switch (i) {\n case 0:\n case 6:\n rgb = [v, t, p]\n break\n\n case 1:\n rgb = [q, v, p]\n break\n\n case 2:\n rgb = [p, v, t]\n break\n\n case 3:\n rgb = [p, q, v]\n break\n\n case 4:\n rgb = [t, p, v]\n break\n\n case 5:\n rgb = [v, p, q]\n break\n }\n\n let color = `rgb(${rgb.map((v) => Math.round(v * 255)).join(\", \")})`\n\n if (isNumber(a)) color = color.replace(/\\)$/, `, ${a})`)\n\n return convertColor(color, fallback)(format)\n }\n}\n\nexport function sameColor(\n color: string | undefined,\n comparison: string | undefined,\n) {\n if (!color) return false\n if (!comparison) return false\n\n const a = parseToRgba(color) ?? []\n const b = parseToRgba(comparison) ?? []\n\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3]\n}\n","export function filterEmpty<T extends any[]>(array: T) {\n return array.filter((value) => value != null)\n}\n","export function toNumber(n: any): number {\n const num = parseFloat(n)\n\n return typeof num !== \"number\" || Number.isNaN(num) ? 0 : num\n}\n\nexport function toPrecision(n: number, precision?: number): string {\n n = toNumber(n)\n\n const scale = 10 ** (precision ?? 10)\n\n n = Math.round(n * scale) / scale\n\n return precision ? n.toFixed(precision) : n.toString()\n}\n\nexport function countDecimal(n: number): number {\n if (!Number.isFinite(n)) return 0\n\n let e = 1\n let p = 0\n\n while (Math.round(n * e) / e !== n) {\n e *= 10\n p += 1\n }\n\n return p\n}\n\nexport function roundNumberToStep(n: number, from: number, step: number) {\n const nextValue = Math.round((n - from) / step) * step + from\n\n const precision = countDecimal(step)\n\n return toPrecision(nextValue, precision)\n}\n\nexport function valueToPercent(n: number, min: number, max: number): number {\n return ((n - min) * 100) / (max - min)\n}\n\nexport function percentToValue(n: number, min: number, max: number) {\n return (max - min) * n + min\n}\n\nexport function clampNumber(n: number, min: number, max: number): number {\n return Math.min(Math.max(n, min), max)\n}\n","export type AnyPointerEvent = MouseEvent | TouchEvent | PointerEvent\n\nexport type PointType = \"page\" | \"client\"\n\nexport interface Point {\n x: number\n y: number\n}\n\nexport interface PointerEventInfo {\n point: Point\n}\n\nexport type MixedEventListener = (\n e: AnyPointerEvent,\n info: PointerEventInfo,\n) => void\n\nexport function isMouseEvent(ev: any): ev is MouseEvent {\n const win = getEventWindow(ev)\n\n if (typeof win.PointerEvent !== \"undefined\" && ev instanceof win.PointerEvent)\n return !!(ev.pointerType === \"mouse\")\n\n return ev instanceof win.MouseEvent\n}\n\nexport function isTouchEvent(ev: AnyPointerEvent): ev is TouchEvent {\n return !!(ev as TouchEvent).touches\n}\n\nexport function isMultiTouchEvent(ev: AnyPointerEvent) {\n return isTouchEvent(ev) && ev.touches.length > 1\n}\n\nexport function getEventWindow(ev: Event): typeof globalThis {\n return ((ev as UIEvent).view ?? window) as unknown as typeof globalThis\n}\n\nexport function pointFromTouch(e: TouchEvent, type: PointType = \"page\") {\n const point = e.touches[0] || e.changedTouches[0]\n\n return { x: point[`${type}X`], y: point[`${type}Y`] }\n}\n\nexport function pointFromMouse(\n point: MouseEvent | PointerEvent,\n type: PointType = \"page\",\n) {\n return {\n x: point[`${type}X`],\n y: point[`${type}Y`],\n }\n}\n\nexport function getEventPoint(ev: AnyPointerEvent, type: PointType = \"page\") {\n return isTouchEvent(ev) ? pointFromTouch(ev, type) : pointFromMouse(ev, type)\n}\n\nexport function addDomEvent(\n target: EventTarget,\n type: string,\n cb: EventListener,\n options?: AddEventListenerOptions,\n) {\n target.addEventListener(type, cb, options)\n\n return () => {\n target.removeEventListener(type, cb, options)\n }\n}\n\nfunction filter(cb: EventListener): EventListener {\n return function (ev: Event) {\n const isMouse = isMouseEvent(ev)\n\n if (!isMouse || (isMouse && ev.button === 0)) cb(ev)\n }\n}\n\nfunction wrap(cb: MixedEventListener, filterPrimary = false): EventListener {\n function listener(ev: any) {\n return cb(ev, { point: getEventPoint(ev) })\n }\n\n const fn = filterPrimary ? filter(listener) : listener\n\n return fn as EventListener\n}\n\nexport function addPointerEvent(\n target: EventTarget,\n type: string,\n cb: MixedEventListener,\n options?: AddEventListenerOptions,\n) {\n return addDomEvent(target, type, wrap(cb, type === \"pointerdown\"), options)\n}\n","export function interopDefault<T>(module: T): T {\n return (module as { default: T }).default || module\n}\n"],"mappings":"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","names":["createContext","isValidElement","parseToHsla","parseToRgba","prev","key","createContext","useContext","isValidElement","child","children","isDark","hsla","rgba","parseToRgba","parseToHsla","v","module"]}
package/dist/index.mjs CHANGED
@@ -20,6 +20,7 @@ import {
20
20
  getValidChildren,
21
21
  includesChildren,
22
22
  isRefObject,
23
+ isSomeElement,
23
24
  isValidElement,
24
25
  mergeRefs,
25
26
  omitChildren,
@@ -33,7 +34,7 @@ import {
33
34
  useSafeLayoutEffect,
34
35
  useUnmountEffect,
35
36
  useUpdateEffect
36
- } from "./chunk-2AWPBKLQ.mjs";
37
+ } from "./chunk-CVXUYRXJ.mjs";
37
38
  import {
38
39
  antonym,
39
40
  escape,
@@ -232,6 +233,7 @@ export {
232
233
  isObject,
233
234
  isRefObject,
234
235
  isSafari,
236
+ isSomeElement,
235
237
  isString,
236
238
  isTabbable,
237
239
  isTone,
package/dist/react.d.mts CHANGED
@@ -19,6 +19,7 @@ declare function useIsMounted({ rerender, delay, }?: UseIsMountedProps): [() =>
19
19
  type UseIsMountedReturn = ReturnType<typeof useIsMounted>;
20
20
  declare function getValidChildren(children: React.ReactNode): React.ReactElement[];
21
21
  declare function isValidElement(child: any): child is React.ReactNode;
22
+ declare function isSomeElement(child: any, type: any): boolean;
22
23
  declare function findChildren(children: React.ReactElement[], ...types: (string | React.JSXElementConstructor<any>)[]): [React.ReactElement | undefined, ...React.ReactElement[]];
23
24
  declare function includesChildren(children: React.ReactElement[], ...types: (string | React.JSXElementConstructor<any>)[]): boolean;
24
25
  declare function omitChildren(children: React.ReactElement[], ...types: (string | React.JSXElementConstructor<any>)[]): React.ReactElement[];
@@ -92,4 +93,4 @@ declare function useAsyncRetry<T>(func: () => Promise<T>, deps?: React.Dependenc
92
93
  };
93
94
  declare function createId(prefix: string): string;
94
95
 
95
- export { type AsyncFnReturn, type AsyncState, type AsyncStateRetry, type FunctionReturningPromise, type MaybeRenderProp, type PromiseType, type UseIsMountedProps, type UseIsMountedReturn, assignRef, createContext, createId, cx, findChildren, getValidChildren, includesChildren, isRefObject, isValidElement, mergeRefs, omitChildren, pickChildren, useAsync, useAsyncFunc, useAsyncRetry, useCallbackRef, useIsMounted, useMergeRefs, useSafeLayoutEffect, useUnmountEffect, useUpdateEffect };
96
+ export { type AsyncFnReturn, type AsyncState, type AsyncStateRetry, type FunctionReturningPromise, type MaybeRenderProp, type PromiseType, type UseIsMountedProps, type UseIsMountedReturn, assignRef, createContext, createId, cx, findChildren, getValidChildren, includesChildren, isRefObject, isSomeElement, isValidElement, mergeRefs, omitChildren, pickChildren, useAsync, useAsyncFunc, useAsyncRetry, useCallbackRef, useIsMounted, useMergeRefs, useSafeLayoutEffect, useUnmountEffect, useUpdateEffect };
package/dist/react.d.ts CHANGED
@@ -19,6 +19,7 @@ declare function useIsMounted({ rerender, delay, }?: UseIsMountedProps): [() =>
19
19
  type UseIsMountedReturn = ReturnType<typeof useIsMounted>;
20
20
  declare function getValidChildren(children: React.ReactNode): React.ReactElement[];
21
21
  declare function isValidElement(child: any): child is React.ReactNode;
22
+ declare function isSomeElement(child: any, type: any): boolean;
22
23
  declare function findChildren(children: React.ReactElement[], ...types: (string | React.JSXElementConstructor<any>)[]): [React.ReactElement | undefined, ...React.ReactElement[]];
23
24
  declare function includesChildren(children: React.ReactElement[], ...types: (string | React.JSXElementConstructor<any>)[]): boolean;
24
25
  declare function omitChildren(children: React.ReactElement[], ...types: (string | React.JSXElementConstructor<any>)[]): React.ReactElement[];
@@ -92,4 +93,4 @@ declare function useAsyncRetry<T>(func: () => Promise<T>, deps?: React.Dependenc
92
93
  };
93
94
  declare function createId(prefix: string): string;
94
95
 
95
- export { type AsyncFnReturn, type AsyncState, type AsyncStateRetry, type FunctionReturningPromise, type MaybeRenderProp, type PromiseType, type UseIsMountedProps, type UseIsMountedReturn, assignRef, createContext, createId, cx, findChildren, getValidChildren, includesChildren, isRefObject, isValidElement, mergeRefs, omitChildren, pickChildren, useAsync, useAsyncFunc, useAsyncRetry, useCallbackRef, useIsMounted, useMergeRefs, useSafeLayoutEffect, useUnmountEffect, useUpdateEffect };
96
+ export { type AsyncFnReturn, type AsyncState, type AsyncStateRetry, type FunctionReturningPromise, type MaybeRenderProp, type PromiseType, type UseIsMountedProps, type UseIsMountedReturn, assignRef, createContext, createId, cx, findChildren, getValidChildren, includesChildren, isRefObject, isSomeElement, isValidElement, mergeRefs, omitChildren, pickChildren, useAsync, useAsyncFunc, useAsyncRetry, useCallbackRef, useIsMounted, useMergeRefs, useSafeLayoutEffect, useUnmountEffect, useUpdateEffect };
package/dist/react.js CHANGED
@@ -38,6 +38,7 @@ __export(react_exports, {
38
38
  getValidChildren: () => getValidChildren,
39
39
  includesChildren: () => includesChildren,
40
40
  isRefObject: () => isRefObject,
41
+ isSomeElement: () => isSomeElement,
41
42
  isValidElement: () => isValidElement2,
42
43
  mergeRefs: () => mergeRefs,
43
44
  omitChildren: () => omitChildren,
@@ -131,23 +132,52 @@ function getValidChildren(children) {
131
132
  function isValidElement2(child) {
132
133
  return React.isValidElement(child) || isString(child) || isNumber(child);
133
134
  }
135
+ function isSomeElement(child, type) {
136
+ var _a, _b;
137
+ if (child.type === type) return true;
138
+ if (!!child.__ui__ && !!type.__ui__) {
139
+ if (child.__ui__ === type.__ui__) return true;
140
+ }
141
+ const payload = child.type._payload;
142
+ if (!!((_a = payload == null ? void 0 : payload.value) == null ? void 0 : _a.__ui__) && !!type.__ui__) {
143
+ if (((_b = payload == null ? void 0 : payload.value) == null ? void 0 : _b.__ui__) === type.__ui__) return true;
144
+ }
145
+ return false;
146
+ }
134
147
  function findChildren(children, ...types) {
135
- return children.find((child) => types.some((type) => child.type === type)) ? children.sort(
136
- (a, b) => types.some((type) => a.type === type) ? -1 : types.some((type) => b.type === type) ? 1 : 0
137
- ) : [void 0, ...children];
148
+ const child = children.find(
149
+ (child2) => types.some((type) => isSomeElement(child2, type))
150
+ );
151
+ if (child) {
152
+ return children.sort((a, b) => {
153
+ if (types.some((type) => isSomeElement(a, type))) {
154
+ return -1;
155
+ } else if (types.some((type) => isSomeElement(b, type))) {
156
+ return 1;
157
+ } else {
158
+ return 0;
159
+ }
160
+ });
161
+ } else {
162
+ return [void 0, ...children];
163
+ }
138
164
  }
139
165
  function includesChildren(children, ...types) {
140
166
  return children.some((child) => {
141
- if (types.some((type) => child.type === type)) return true;
167
+ if (types.some((type) => isSomeElement(child, type))) return true;
142
168
  const children2 = getValidChildren(child.props.children);
143
169
  return children2.length ? includesChildren(children2, ...types) : false;
144
170
  });
145
171
  }
146
172
  function omitChildren(children, ...types) {
147
- return children.filter((child) => types.every((type) => child.type !== type));
173
+ return children.filter(
174
+ (child) => types.every((type) => !isSomeElement(child, type))
175
+ );
148
176
  }
149
177
  function pickChildren(children, ...types) {
150
- return children.filter((child) => types.every((type) => child.type === type));
178
+ return children.filter(
179
+ (child) => types.every((type) => isSomeElement(child, type))
180
+ );
151
181
  }
152
182
  function cx(...classNames) {
153
183
  return classNames.filter(Boolean).join(" ");
@@ -264,6 +294,7 @@ function createId(prefix) {
264
294
  getValidChildren,
265
295
  includesChildren,
266
296
  isRefObject,
297
+ isSomeElement,
267
298
  isValidElement,
268
299
  mergeRefs,
269
300
  omitChildren,
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/react.tsx","../src/assertion.ts"],"sourcesContent":["import * as React from \"react\"\nimport { isNumber, isObject, isString } from \"./assertion\"\n\nexport type MaybeRenderProp<Y> =\n | React.ReactNode\n | ((props: Y) => React.ReactNode)\n\ninterface Options<ContextType extends any = any> {\n strict?: boolean\n errorMessage?: string\n name?: string\n defaultValue?: ContextType\n}\n\ntype CreateContextReturn<T> = [React.Provider<T>, () => T, React.Context<T>]\n\nexport function createContext<ContextType extends any = any>({\n strict = true,\n errorMessage = \"useContext: `context` is undefined. Seems you forgot to wrap component within the Provider\",\n name,\n defaultValue,\n}: Options<ContextType> = {}) {\n const Context = React.createContext<ContextType | undefined>(defaultValue)\n\n Context.displayName = name\n\n const useContext = () => {\n const context = React.useContext(Context)\n\n if (!context && strict) {\n const error = new Error(errorMessage)\n error.name = \"ContextError\"\n Error.captureStackTrace?.(error, useContext)\n throw error\n }\n\n return context\n }\n\n return [\n Context.Provider,\n useContext,\n Context,\n ] as CreateContextReturn<ContextType>\n}\n\nexport const useSafeLayoutEffect = Boolean(globalThis?.document)\n ? React.useLayoutEffect\n : React.useEffect\n\nexport function useUnmountEffect(callback: () => void) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useEffect(() => () => callback(), [])\n}\n\nexport interface UseIsMountedProps {\n rerender?: boolean\n delay?: number\n}\n\nexport function useIsMounted({\n rerender = false,\n delay = 0,\n}: UseIsMountedProps = {}): [() => boolean, boolean] {\n const isMountedRef = React.useRef(false)\n const [isMounted, setIsMounted] = React.useState(false)\n\n useSafeLayoutEffect(() => {\n isMountedRef.current = true\n\n let timeoutId: any = null\n\n if (rerender) {\n if (delay > 0) {\n timeoutId = setTimeout(() => setIsMounted(true), delay)\n } else {\n setIsMounted(true)\n }\n }\n\n return () => {\n isMountedRef.current = false\n\n if (rerender) setIsMounted(false)\n\n if (timeoutId) clearTimeout(timeoutId)\n }\n }, [delay, rerender])\n\n return [React.useCallback(() => isMountedRef.current, []), isMounted]\n}\n\nexport type UseIsMountedReturn = ReturnType<typeof useIsMounted>\n\nexport function getValidChildren(\n children: React.ReactNode,\n): React.ReactElement[] {\n return React.Children.toArray(children).filter((child) =>\n React.isValidElement(child),\n ) as React.ReactElement[]\n}\n\nexport function isValidElement(child: any): child is React.ReactNode {\n return React.isValidElement(child) || isString(child) || isNumber(child)\n}\n\nexport function findChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): [React.ReactElement | undefined, ...React.ReactElement[]] {\n return (\n children.find((child) => types.some((type) => child.type === type))\n ? children.sort((a, b) =>\n types.some((type) => a.type === type)\n ? -1\n : types.some((type) => b.type === type)\n ? 1\n : 0,\n )\n : [undefined, ...children]\n ) as [React.ReactElement | undefined, ...React.ReactElement[]]\n}\n\nexport function includesChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): boolean {\n return children.some((child) => {\n if (types.some((type) => child.type === type)) return true\n\n const children = getValidChildren(child.props.children)\n\n return children.length ? includesChildren(children, ...types) : false\n })\n}\n\nexport function omitChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): React.ReactElement[] {\n return children.filter((child) => types.every((type) => child.type !== type))\n}\n\nexport function pickChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): React.ReactElement[] {\n return children.filter((child) => types.every((type) => child.type === type))\n}\n\nexport function cx(...classNames: (string | undefined)[]) {\n return classNames.filter(Boolean).join(\" \")\n}\n\ntype ReactRef<T> = React.Ref<T> | React.MutableRefObject<T> | React.LegacyRef<T>\n\nexport function isRefObject(val: any): val is { current: any } {\n return isObject(val) && \"current\" in val\n}\n\nexport function assignRef<T extends any = any>(\n ref: ReactRef<T> | undefined,\n value: T,\n) {\n if (ref == null) return\n\n if (typeof ref === \"function\") {\n ref(value)\n\n return\n }\n\n try {\n // @ts-ignore\n ref.current = value\n } catch {\n throw new Error(`Cannot assign value '${value}' to ref '${ref}'`)\n }\n}\n\nexport function mergeRefs<T extends any = any>(\n ...refs: (ReactRef<T> | null | undefined)[]\n) {\n return function (node: T | null) {\n return refs.forEach((ref) => {\n assignRef(ref, node)\n })\n }\n}\n\nexport function useMergeRefs<T extends any = any>(\n ...refs: (ReactRef<T> | undefined)[]\n) {\n return React.useMemo(() => mergeRefs(...refs), [refs])\n}\n\nexport function useCallbackRef<T extends (...args: any[]) => any>(\n callback: T | undefined,\n deps: React.DependencyList = [],\n) {\n const callbackRef = React.useRef(callback)\n\n React.useEffect(() => {\n callbackRef.current = callback\n })\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(\n ((...args) => callbackRef.current?.(...args)) as T,\n deps,\n )\n}\n\n/**\n * `useUpdateEffect` is a custom hook that skips side effects on the initial render, and only runs them when the dependency array changes.\n *\n * @see Docs https://yamada-ui.com/hooks/use-update-effect\n */\nexport function useUpdateEffect(\n callback: React.EffectCallback,\n deps: React.DependencyList,\n) {\n const renderCycleRef = React.useRef(false)\n const effectCycleRef = React.useRef(false)\n\n React.useEffect(() => {\n const mounted = renderCycleRef.current\n const run = mounted && effectCycleRef.current\n\n if (run) return callback()\n\n effectCycleRef.current = true\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n\n React.useEffect(() => {\n renderCycleRef.current = true\n\n return () => {\n renderCycleRef.current = false\n }\n }, [])\n}\n\nexport type FunctionReturningPromise = (...args: any[]) => Promise<any>\n\n/**\n * `useAsync` is a custom hook that executes an asynchronous function and tracks its state.\n *\n * @see Docs https://yamada-ui.com/hooks/use-async\n */\nexport function useAsync<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n) {\n const [state, callback] = useAsyncFunc(func, deps, { loading: true })\n\n React.useEffect(() => {\n callback()\n }, [callback])\n\n return state\n}\n\nexport type AsyncState<T> =\n | {\n loading: boolean\n error?: undefined\n value?: undefined\n }\n | {\n loading: true\n error?: Error | undefined\n value?: T\n }\n | {\n loading: false\n error: Error\n value?: undefined\n }\n | {\n loading: false\n error?: undefined\n value: T\n }\n\nexport type PromiseType<P extends Promise<any>> =\n P extends Promise<infer T> ? T : never\n\ntype StateFromFunctionReturningPromise<T extends FunctionReturningPromise> =\n AsyncState<PromiseType<ReturnType<T>>>\n\nexport type AsyncFnReturn<\n T extends FunctionReturningPromise = FunctionReturningPromise,\n> = [StateFromFunctionReturningPromise<T>, T]\n\nexport function useAsyncFunc<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n initialState: StateFromFunctionReturningPromise<T> = { loading: false },\n): AsyncFnReturn<T> {\n const lastCallId = React.useRef(0)\n const [isMounted] = useIsMounted()\n const [state, setState] =\n React.useState<StateFromFunctionReturningPromise<T>>(initialState)\n\n const callback = React.useCallback(\n (...args: Parameters<T>): ReturnType<T> => {\n const callId = ++lastCallId.current\n\n if (!state.loading)\n setState((prevState) => ({ ...prevState, loading: true }))\n\n return func(...args).then(\n (value) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ value, loading: false })\n\n return value\n },\n (error) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ error, loading: false })\n\n return error\n },\n ) as ReturnType<T>\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps,\n )\n\n return [state, callback as unknown as T]\n}\n\nexport type AsyncStateRetry<T> = AsyncState<T> & {\n retry(): void\n}\n\nexport function useAsyncRetry<T>(\n func: () => Promise<T>,\n deps: React.DependencyList = [],\n) {\n const [attempt, setAttempt] = React.useState<number>(0)\n const state = useAsync(func, [...deps, attempt])\n\n const stateLoading = state.loading\n\n const retry = React.useCallback(() => {\n if (stateLoading) return\n\n setAttempt((currentAttempt) => currentAttempt + 1)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [...deps, stateLoading])\n\n return { ...state, retry }\n}\n\nlet createIdCounter: number = 0\n\nexport function createId(prefix: string) {\n return `${prefix}-${++createIdCounter}-${new Date().getTime()}`\n}\n","import type { Dict } from \"./index.types\"\n\nexport function is(x: any, y: any) {\n return (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === \"number\"\n}\n\nexport function isNotNumber(value: any): boolean {\n return (\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n )\n}\n\nexport function isNumeric(value: any): boolean {\n return (\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n )\n}\n\nexport function isString(value: any): value is string {\n return Object.prototype.toString.call(value) === \"[object String]\"\n}\n\nexport function isBoolean(value: any): value is boolean {\n return typeof value === \"boolean\"\n}\n\nexport function isUndefined(value: any): value is undefined {\n return typeof value === \"undefined\" && value === undefined\n}\n\nexport function isNull(value: any): value is null {\n return value === null\n}\n\nexport function isObject<T extends Dict>(value: any): value is T {\n return (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n )\n}\n\nexport function isArray<T extends any[]>(value: any): value is T {\n return Array.isArray(value)\n}\n\nexport function isEmpty(value: any): boolean {\n return !isArray(value) || !value.length || value.every((v) => v == null)\n}\n\nexport function isFunction<T extends Function = Function>(\n value: any,\n): value is T {\n return typeof value === \"function\"\n}\n\nexport function isUnit(value: any): boolean {\n return /[0-9].*(em|rem|ex|rex|cap|rcap|ch|rch|ic|ric|lh|rlh|vw|svw|lvw|dvw|vh|svh|lvh|dvh|vi|svi|lvi|dvi|vb|svb|lvb|dvb|vmin|svmin|lvmin|dvmin|vmax|svmax|lvmax|dvmax|cm|mm|Q|in|pc|pt|px|%|cqw|cqh|cqi|cqb|cqmin|cqmax)$/.test(\n value,\n )\n}\n\nexport function cast<T>(value: any) {\n return value as T\n}\n"],"mappings":"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","names":["createContext","isValidElement","createContext","useContext","isValidElement","children"]}
1
+ {"version":3,"sources":["../src/react.tsx","../src/assertion.ts"],"sourcesContent":["import * as React from \"react\"\nimport { isNumber, isObject, isString } from \"./assertion\"\n\nexport type MaybeRenderProp<Y> =\n | React.ReactNode\n | ((props: Y) => React.ReactNode)\n\ninterface Options<ContextType extends any = any> {\n strict?: boolean\n errorMessage?: string\n name?: string\n defaultValue?: ContextType\n}\n\ntype CreateContextReturn<T> = [React.Provider<T>, () => T, React.Context<T>]\n\nexport function createContext<ContextType extends any = any>({\n strict = true,\n errorMessage = \"useContext: `context` is undefined. Seems you forgot to wrap component within the Provider\",\n name,\n defaultValue,\n}: Options<ContextType> = {}) {\n const Context = React.createContext<ContextType | undefined>(defaultValue)\n\n Context.displayName = name\n\n const useContext = () => {\n const context = React.useContext(Context)\n\n if (!context && strict) {\n const error = new Error(errorMessage)\n error.name = \"ContextError\"\n Error.captureStackTrace?.(error, useContext)\n throw error\n }\n\n return context\n }\n\n return [\n Context.Provider,\n useContext,\n Context,\n ] as CreateContextReturn<ContextType>\n}\n\nexport const useSafeLayoutEffect = Boolean(globalThis?.document)\n ? React.useLayoutEffect\n : React.useEffect\n\nexport function useUnmountEffect(callback: () => void) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useEffect(() => () => callback(), [])\n}\n\nexport interface UseIsMountedProps {\n rerender?: boolean\n delay?: number\n}\n\nexport function useIsMounted({\n rerender = false,\n delay = 0,\n}: UseIsMountedProps = {}): [() => boolean, boolean] {\n const isMountedRef = React.useRef(false)\n const [isMounted, setIsMounted] = React.useState(false)\n\n useSafeLayoutEffect(() => {\n isMountedRef.current = true\n\n let timeoutId: any = null\n\n if (rerender) {\n if (delay > 0) {\n timeoutId = setTimeout(() => setIsMounted(true), delay)\n } else {\n setIsMounted(true)\n }\n }\n\n return () => {\n isMountedRef.current = false\n\n if (rerender) setIsMounted(false)\n\n if (timeoutId) clearTimeout(timeoutId)\n }\n }, [delay, rerender])\n\n return [React.useCallback(() => isMountedRef.current, []), isMounted]\n}\n\nexport type UseIsMountedReturn = ReturnType<typeof useIsMounted>\n\nexport function getValidChildren(\n children: React.ReactNode,\n): React.ReactElement[] {\n return React.Children.toArray(children).filter((child) =>\n React.isValidElement(child),\n )\n}\n\nexport function isValidElement(child: any): child is React.ReactNode {\n return React.isValidElement(child) || isString(child) || isNumber(child)\n}\n\nexport function isSomeElement(child: any, type: any): boolean {\n if (child.type === type) return true\n\n if (!!child.__ui__ && !!type.__ui__) {\n if (child.__ui__ === type.__ui__) return true\n }\n\n const payload = child.type._payload\n\n if (!!payload?.value?.__ui__ && !!type.__ui__) {\n if (payload?.value?.__ui__ === type.__ui__) return true\n }\n\n return false\n}\n\nexport function findChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): [React.ReactElement | undefined, ...React.ReactElement[]] {\n const child = children.find((child) =>\n types.some((type) => isSomeElement(child, type)),\n )\n\n if (child) {\n return children.sort((a, b) => {\n if (types.some((type) => isSomeElement(a, type))) {\n return -1\n } else if (types.some((type) => isSomeElement(b, type))) {\n return 1\n } else {\n return 0\n }\n }) as [React.ReactElement | undefined, ...React.ReactElement[]]\n } else {\n return [undefined, ...children]\n }\n}\n\nexport function includesChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): boolean {\n return children.some((child) => {\n if (types.some((type) => isSomeElement(child, type))) return true\n\n const children = getValidChildren(child.props.children)\n\n return children.length ? includesChildren(children, ...types) : false\n })\n}\n\nexport function omitChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): React.ReactElement[] {\n return children.filter((child) =>\n types.every((type) => !isSomeElement(child, type)),\n )\n}\n\nexport function pickChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): React.ReactElement[] {\n return children.filter((child) =>\n types.every((type) => isSomeElement(child, type)),\n )\n}\n\nexport function cx(...classNames: (string | undefined)[]) {\n return classNames.filter(Boolean).join(\" \")\n}\n\ntype ReactRef<T> = React.Ref<T> | React.MutableRefObject<T> | React.LegacyRef<T>\n\nexport function isRefObject(val: any): val is { current: any } {\n return isObject(val) && \"current\" in val\n}\n\nexport function assignRef<T extends any = any>(\n ref: ReactRef<T> | undefined,\n value: T,\n) {\n if (ref == null) return\n\n if (typeof ref === \"function\") {\n ref(value)\n\n return\n }\n\n try {\n // @ts-ignore\n ref.current = value\n } catch {\n throw new Error(`Cannot assign value '${value}' to ref '${ref}'`)\n }\n}\n\nexport function mergeRefs<T extends any = any>(\n ...refs: (ReactRef<T> | null | undefined)[]\n) {\n return function (node: T | null) {\n return refs.forEach((ref) => {\n assignRef(ref, node)\n })\n }\n}\n\nexport function useMergeRefs<T extends any = any>(\n ...refs: (ReactRef<T> | undefined)[]\n) {\n return React.useMemo(() => mergeRefs(...refs), [refs])\n}\n\nexport function useCallbackRef<T extends (...args: any[]) => any>(\n callback: T | undefined,\n deps: React.DependencyList = [],\n) {\n const callbackRef = React.useRef(callback)\n\n React.useEffect(() => {\n callbackRef.current = callback\n })\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(\n ((...args) => callbackRef.current?.(...args)) as T,\n deps,\n )\n}\n\n/**\n * `useUpdateEffect` is a custom hook that skips side effects on the initial render, and only runs them when the dependency array changes.\n *\n * @see Docs https://yamada-ui.com/hooks/use-update-effect\n */\nexport function useUpdateEffect(\n callback: React.EffectCallback,\n deps: React.DependencyList,\n) {\n const renderCycleRef = React.useRef(false)\n const effectCycleRef = React.useRef(false)\n\n React.useEffect(() => {\n const mounted = renderCycleRef.current\n const run = mounted && effectCycleRef.current\n\n if (run) return callback()\n\n effectCycleRef.current = true\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n\n React.useEffect(() => {\n renderCycleRef.current = true\n\n return () => {\n renderCycleRef.current = false\n }\n }, [])\n}\n\nexport type FunctionReturningPromise = (...args: any[]) => Promise<any>\n\n/**\n * `useAsync` is a custom hook that executes an asynchronous function and tracks its state.\n *\n * @see Docs https://yamada-ui.com/hooks/use-async\n */\nexport function useAsync<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n) {\n const [state, callback] = useAsyncFunc(func, deps, { loading: true })\n\n React.useEffect(() => {\n callback()\n }, [callback])\n\n return state\n}\n\nexport type AsyncState<T> =\n | {\n loading: boolean\n error?: undefined\n value?: undefined\n }\n | {\n loading: true\n error?: Error | undefined\n value?: T\n }\n | {\n loading: false\n error: Error\n value?: undefined\n }\n | {\n loading: false\n error?: undefined\n value: T\n }\n\nexport type PromiseType<P extends Promise<any>> =\n P extends Promise<infer T> ? T : never\n\ntype StateFromFunctionReturningPromise<T extends FunctionReturningPromise> =\n AsyncState<PromiseType<ReturnType<T>>>\n\nexport type AsyncFnReturn<\n T extends FunctionReturningPromise = FunctionReturningPromise,\n> = [StateFromFunctionReturningPromise<T>, T]\n\nexport function useAsyncFunc<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n initialState: StateFromFunctionReturningPromise<T> = { loading: false },\n): AsyncFnReturn<T> {\n const lastCallId = React.useRef(0)\n const [isMounted] = useIsMounted()\n const [state, setState] =\n React.useState<StateFromFunctionReturningPromise<T>>(initialState)\n\n const callback = React.useCallback(\n (...args: Parameters<T>): ReturnType<T> => {\n const callId = ++lastCallId.current\n\n if (!state.loading)\n setState((prevState) => ({ ...prevState, loading: true }))\n\n return func(...args).then(\n (value) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ value, loading: false })\n\n return value\n },\n (error) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ error, loading: false })\n\n return error\n },\n ) as ReturnType<T>\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps,\n )\n\n return [state, callback as unknown as T]\n}\n\nexport type AsyncStateRetry<T> = AsyncState<T> & {\n retry(): void\n}\n\nexport function useAsyncRetry<T>(\n func: () => Promise<T>,\n deps: React.DependencyList = [],\n) {\n const [attempt, setAttempt] = React.useState<number>(0)\n const state = useAsync(func, [...deps, attempt])\n\n const stateLoading = state.loading\n\n const retry = React.useCallback(() => {\n if (stateLoading) return\n\n setAttempt((currentAttempt) => currentAttempt + 1)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [...deps, stateLoading])\n\n return { ...state, retry }\n}\n\nlet createIdCounter: number = 0\n\nexport function createId(prefix: string) {\n return `${prefix}-${++createIdCounter}-${new Date().getTime()}`\n}\n","import type { Dict } from \"./index.types\"\n\nexport function is(x: any, y: any) {\n return (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y)\n}\n\nexport function isNumber(value: any): value is number {\n return typeof value === \"number\"\n}\n\nexport function isNotNumber(value: any): boolean {\n return (\n typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value)\n )\n}\n\nexport function isNumeric(value: any): boolean {\n return (\n !isNaN(parseFloat(String(value))) &&\n isFinite(Number(value)) &&\n /^-?\\d*\\.?\\d+$/.test(String(value))\n )\n}\n\nexport function isString(value: any): value is string {\n return Object.prototype.toString.call(value) === \"[object String]\"\n}\n\nexport function isBoolean(value: any): value is boolean {\n return typeof value === \"boolean\"\n}\n\nexport function isUndefined(value: any): value is undefined {\n return typeof value === \"undefined\" && value === undefined\n}\n\nexport function isNull(value: any): value is null {\n return value === null\n}\n\nexport function isObject<T extends Dict>(value: any): value is T {\n return (\n value !== null &&\n (typeof value === \"object\" || typeof value === \"function\") &&\n !isArray(value)\n )\n}\n\nexport function isArray<T extends any[]>(value: any): value is T {\n return Array.isArray(value)\n}\n\nexport function isEmpty(value: any): boolean {\n return !isArray(value) || !value.length || value.every((v) => v == null)\n}\n\nexport function isFunction<T extends Function = Function>(\n value: any,\n): value is T {\n return typeof value === \"function\"\n}\n\nexport function isUnit(value: any): boolean {\n return /[0-9].*(em|rem|ex|rex|cap|rcap|ch|rch|ic|ric|lh|rlh|vw|svw|lvw|dvw|vh|svh|lvh|dvh|vi|svi|lvi|dvi|vb|svb|lvb|dvb|vmin|svmin|lvmin|dvmin|vmax|svmax|lvmax|dvmax|cm|mm|Q|in|pc|pt|px|%|cqw|cqh|cqi|cqb|cqmin|cqmax)$/.test(\n value,\n )\n}\n\nexport function cast<T>(value: any) {\n return value as T\n}\n"],"mappings":"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","names":["createContext","isValidElement","createContext","useContext","isValidElement","child","children"]}
package/dist/react.mjs CHANGED
@@ -7,6 +7,7 @@ import {
7
7
  getValidChildren,
8
8
  includesChildren,
9
9
  isRefObject,
10
+ isSomeElement,
10
11
  isValidElement,
11
12
  mergeRefs,
12
13
  omitChildren,
@@ -20,7 +21,7 @@ import {
20
21
  useSafeLayoutEffect,
21
22
  useUnmountEffect,
22
23
  useUpdateEffect
23
- } from "./chunk-2AWPBKLQ.mjs";
24
+ } from "./chunk-CVXUYRXJ.mjs";
24
25
  import "./chunk-Z4AGSEWZ.mjs";
25
26
  export {
26
27
  assignRef,
@@ -31,6 +32,7 @@ export {
31
32
  getValidChildren,
32
33
  includesChildren,
33
34
  isRefObject,
35
+ isSomeElement,
34
36
  isValidElement,
35
37
  mergeRefs,
36
38
  omitChildren,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yamada-ui/utils",
3
- "version": "1.5.1",
3
+ "version": "1.5.2-dev-20240923054911",
4
4
  "description": "Yamada UI utils",
5
5
  "keywords": [
6
6
  "utils",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/react.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { isNumber, isObject, isString } from \"./assertion\"\n\nexport type MaybeRenderProp<Y> =\n | React.ReactNode\n | ((props: Y) => React.ReactNode)\n\ninterface Options<ContextType extends any = any> {\n strict?: boolean\n errorMessage?: string\n name?: string\n defaultValue?: ContextType\n}\n\ntype CreateContextReturn<T> = [React.Provider<T>, () => T, React.Context<T>]\n\nexport function createContext<ContextType extends any = any>({\n strict = true,\n errorMessage = \"useContext: `context` is undefined. Seems you forgot to wrap component within the Provider\",\n name,\n defaultValue,\n}: Options<ContextType> = {}) {\n const Context = React.createContext<ContextType | undefined>(defaultValue)\n\n Context.displayName = name\n\n const useContext = () => {\n const context = React.useContext(Context)\n\n if (!context && strict) {\n const error = new Error(errorMessage)\n error.name = \"ContextError\"\n Error.captureStackTrace?.(error, useContext)\n throw error\n }\n\n return context\n }\n\n return [\n Context.Provider,\n useContext,\n Context,\n ] as CreateContextReturn<ContextType>\n}\n\nexport const useSafeLayoutEffect = Boolean(globalThis?.document)\n ? React.useLayoutEffect\n : React.useEffect\n\nexport function useUnmountEffect(callback: () => void) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useEffect(() => () => callback(), [])\n}\n\nexport interface UseIsMountedProps {\n rerender?: boolean\n delay?: number\n}\n\nexport function useIsMounted({\n rerender = false,\n delay = 0,\n}: UseIsMountedProps = {}): [() => boolean, boolean] {\n const isMountedRef = React.useRef(false)\n const [isMounted, setIsMounted] = React.useState(false)\n\n useSafeLayoutEffect(() => {\n isMountedRef.current = true\n\n let timeoutId: any = null\n\n if (rerender) {\n if (delay > 0) {\n timeoutId = setTimeout(() => setIsMounted(true), delay)\n } else {\n setIsMounted(true)\n }\n }\n\n return () => {\n isMountedRef.current = false\n\n if (rerender) setIsMounted(false)\n\n if (timeoutId) clearTimeout(timeoutId)\n }\n }, [delay, rerender])\n\n return [React.useCallback(() => isMountedRef.current, []), isMounted]\n}\n\nexport type UseIsMountedReturn = ReturnType<typeof useIsMounted>\n\nexport function getValidChildren(\n children: React.ReactNode,\n): React.ReactElement[] {\n return React.Children.toArray(children).filter((child) =>\n React.isValidElement(child),\n ) as React.ReactElement[]\n}\n\nexport function isValidElement(child: any): child is React.ReactNode {\n return React.isValidElement(child) || isString(child) || isNumber(child)\n}\n\nexport function findChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): [React.ReactElement | undefined, ...React.ReactElement[]] {\n return (\n children.find((child) => types.some((type) => child.type === type))\n ? children.sort((a, b) =>\n types.some((type) => a.type === type)\n ? -1\n : types.some((type) => b.type === type)\n ? 1\n : 0,\n )\n : [undefined, ...children]\n ) as [React.ReactElement | undefined, ...React.ReactElement[]]\n}\n\nexport function includesChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): boolean {\n return children.some((child) => {\n if (types.some((type) => child.type === type)) return true\n\n const children = getValidChildren(child.props.children)\n\n return children.length ? includesChildren(children, ...types) : false\n })\n}\n\nexport function omitChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): React.ReactElement[] {\n return children.filter((child) => types.every((type) => child.type !== type))\n}\n\nexport function pickChildren(\n children: React.ReactElement[],\n ...types: (string | React.JSXElementConstructor<any>)[]\n): React.ReactElement[] {\n return children.filter((child) => types.every((type) => child.type === type))\n}\n\nexport function cx(...classNames: (string | undefined)[]) {\n return classNames.filter(Boolean).join(\" \")\n}\n\ntype ReactRef<T> = React.Ref<T> | React.MutableRefObject<T> | React.LegacyRef<T>\n\nexport function isRefObject(val: any): val is { current: any } {\n return isObject(val) && \"current\" in val\n}\n\nexport function assignRef<T extends any = any>(\n ref: ReactRef<T> | undefined,\n value: T,\n) {\n if (ref == null) return\n\n if (typeof ref === \"function\") {\n ref(value)\n\n return\n }\n\n try {\n // @ts-ignore\n ref.current = value\n } catch {\n throw new Error(`Cannot assign value '${value}' to ref '${ref}'`)\n }\n}\n\nexport function mergeRefs<T extends any = any>(\n ...refs: (ReactRef<T> | null | undefined)[]\n) {\n return function (node: T | null) {\n return refs.forEach((ref) => {\n assignRef(ref, node)\n })\n }\n}\n\nexport function useMergeRefs<T extends any = any>(\n ...refs: (ReactRef<T> | undefined)[]\n) {\n return React.useMemo(() => mergeRefs(...refs), [refs])\n}\n\nexport function useCallbackRef<T extends (...args: any[]) => any>(\n callback: T | undefined,\n deps: React.DependencyList = [],\n) {\n const callbackRef = React.useRef(callback)\n\n React.useEffect(() => {\n callbackRef.current = callback\n })\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(\n ((...args) => callbackRef.current?.(...args)) as T,\n deps,\n )\n}\n\n/**\n * `useUpdateEffect` is a custom hook that skips side effects on the initial render, and only runs them when the dependency array changes.\n *\n * @see Docs https://yamada-ui.com/hooks/use-update-effect\n */\nexport function useUpdateEffect(\n callback: React.EffectCallback,\n deps: React.DependencyList,\n) {\n const renderCycleRef = React.useRef(false)\n const effectCycleRef = React.useRef(false)\n\n React.useEffect(() => {\n const mounted = renderCycleRef.current\n const run = mounted && effectCycleRef.current\n\n if (run) return callback()\n\n effectCycleRef.current = true\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n\n React.useEffect(() => {\n renderCycleRef.current = true\n\n return () => {\n renderCycleRef.current = false\n }\n }, [])\n}\n\nexport type FunctionReturningPromise = (...args: any[]) => Promise<any>\n\n/**\n * `useAsync` is a custom hook that executes an asynchronous function and tracks its state.\n *\n * @see Docs https://yamada-ui.com/hooks/use-async\n */\nexport function useAsync<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n) {\n const [state, callback] = useAsyncFunc(func, deps, { loading: true })\n\n React.useEffect(() => {\n callback()\n }, [callback])\n\n return state\n}\n\nexport type AsyncState<T> =\n | {\n loading: boolean\n error?: undefined\n value?: undefined\n }\n | {\n loading: true\n error?: Error | undefined\n value?: T\n }\n | {\n loading: false\n error: Error\n value?: undefined\n }\n | {\n loading: false\n error?: undefined\n value: T\n }\n\nexport type PromiseType<P extends Promise<any>> =\n P extends Promise<infer T> ? T : never\n\ntype StateFromFunctionReturningPromise<T extends FunctionReturningPromise> =\n AsyncState<PromiseType<ReturnType<T>>>\n\nexport type AsyncFnReturn<\n T extends FunctionReturningPromise = FunctionReturningPromise,\n> = [StateFromFunctionReturningPromise<T>, T]\n\nexport function useAsyncFunc<T extends FunctionReturningPromise>(\n func: T,\n deps: React.DependencyList = [],\n initialState: StateFromFunctionReturningPromise<T> = { loading: false },\n): AsyncFnReturn<T> {\n const lastCallId = React.useRef(0)\n const [isMounted] = useIsMounted()\n const [state, setState] =\n React.useState<StateFromFunctionReturningPromise<T>>(initialState)\n\n const callback = React.useCallback(\n (...args: Parameters<T>): ReturnType<T> => {\n const callId = ++lastCallId.current\n\n if (!state.loading)\n setState((prevState) => ({ ...prevState, loading: true }))\n\n return func(...args).then(\n (value) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ value, loading: false })\n\n return value\n },\n (error) => {\n if (isMounted() && callId === lastCallId.current)\n setState({ error, loading: false })\n\n return error\n },\n ) as ReturnType<T>\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n deps,\n )\n\n return [state, callback as unknown as T]\n}\n\nexport type AsyncStateRetry<T> = AsyncState<T> & {\n retry(): void\n}\n\nexport function useAsyncRetry<T>(\n func: () => Promise<T>,\n deps: React.DependencyList = [],\n) {\n const [attempt, setAttempt] = React.useState<number>(0)\n const state = useAsync(func, [...deps, attempt])\n\n const stateLoading = state.loading\n\n const retry = React.useCallback(() => {\n if (stateLoading) return\n\n setAttempt((currentAttempt) => currentAttempt + 1)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [...deps, stateLoading])\n\n return { ...state, retry }\n}\n\nlet createIdCounter: number = 0\n\nexport function createId(prefix: string) {\n return `${prefix}-${++createIdCounter}-${new Date().getTime()}`\n}\n"],"mappings":"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","names":["createContext","useContext","isValidElement","children"]}