@nextui-org/react-utils
Advanced tools
Comparing version 0.0.0-dev-v2-20230428203230 to 0.0.0-dev-v2-20230613212244
@@ -1,2 +0,4 @@ | ||
export { CSSTransition, CSSTransitionProps } from './css-transition.js'; | ||
export { CreateContextOptions, CreateContextReturn, createContext } from './context.js'; | ||
export { getValidChildren, pickChildren } from './children.js'; | ||
export { ReactRef, assignRef, mergeRefs } from './refs.js'; | ||
import 'react'; |
@@ -0,1 +1,2 @@ | ||
"use client"; | ||
"use strict"; | ||
@@ -29,76 +30,83 @@ var __create = Object.create; | ||
__export(src_exports, { | ||
CSSTransition: () => CSSTransition | ||
assignRef: () => assignRef, | ||
createContext: () => createContext2, | ||
getValidChildren: () => getValidChildren, | ||
mergeRefs: () => mergeRefs, | ||
pickChildren: () => pickChildren | ||
}); | ||
module.exports = __toCommonJS(src_exports); | ||
// src/css-transition.tsx | ||
var import_react = __toESM(require("react")); | ||
// src/context.ts | ||
var React = __toESM(require("react")); | ||
function createContext2(options = {}) { | ||
const { | ||
strict = true, | ||
errorMessage = "useContext: `context` is undefined. Seems you forgot to wrap component within the Provider", | ||
name | ||
} = options; | ||
const Context = React.createContext(void 0); | ||
Context.displayName = name; | ||
function useContext2() { | ||
var _a; | ||
const context = React.useContext(Context); | ||
if (!context && strict) { | ||
const error = new Error(errorMessage); | ||
error.name = "ContextError"; | ||
(_a = Error.captureStackTrace) == null ? void 0 : _a.call(Error, error, useContext2); | ||
throw error; | ||
} | ||
return context; | ||
} | ||
return [Context.Provider, useContext2, Context]; | ||
} | ||
// src/children.ts | ||
var import_react = require("react"); | ||
function getValidChildren(children) { | ||
return import_react.Children.toArray(children).filter( | ||
(child) => (0, import_react.isValidElement)(child) | ||
); | ||
} | ||
var pickChildren = (children, targetChild) => { | ||
let target = []; | ||
const withoutTargetChildren = import_react.Children.map(children, (item) => { | ||
if (!(0, import_react.isValidElement)(item)) | ||
return item; | ||
if (item.type === targetChild) { | ||
target.push(item); | ||
return null; | ||
} | ||
return item; | ||
}); | ||
const targetChildren = target.length >= 0 ? target : void 0; | ||
return [withoutTargetChildren, targetChildren]; | ||
}; | ||
// src/refs.ts | ||
var import_shared_utils = require("@nextui-org/shared-utils"); | ||
var CSSTransition = import_react.default.memo( | ||
({ | ||
children, | ||
onExited, | ||
onEntered, | ||
className, | ||
childrenRef, | ||
enterTime = 60, | ||
leaveTime = 60, | ||
clearTime = 60, | ||
isVisible = false, | ||
name = "transition", | ||
...otherProps | ||
}) => { | ||
const [classes, setClasses] = (0, import_react.useState)(""); | ||
const [statusClassName, setStatusClassName] = (0, import_react.useState)(""); | ||
const [renderable, setRenderable] = (0, import_react.useState)(isVisible); | ||
(0, import_react.useLayoutEffect)(() => { | ||
const statusClassName2 = isVisible ? "enter" : "leave"; | ||
if (isVisible && !renderable) | ||
setRenderable(true); | ||
setClasses(`${name}-${statusClassName2}`); | ||
setStatusClassName(statusClassName2); | ||
const time = isVisible ? enterTime : leaveTime; | ||
const timer = setTimeout(() => { | ||
setClasses(`${name}-${statusClassName2} ${name}-${statusClassName2}-active`); | ||
setStatusClassName(`${statusClassName2}-active`); | ||
if (statusClassName2 === "leave") { | ||
onExited == null ? void 0 : onExited(); | ||
} else { | ||
onEntered == null ? void 0 : onEntered(); | ||
} | ||
clearTimeout(timer); | ||
}, time); | ||
const clearClassesTimer = setTimeout(() => { | ||
if (!isVisible) { | ||
setClasses(""); | ||
setRenderable(false); | ||
} | ||
clearTimeout(clearClassesTimer); | ||
}, time + clearTime); | ||
return () => { | ||
clearTimeout(timer); | ||
clearTimeout(clearClassesTimer); | ||
}; | ||
}, [isVisible, renderable]); | ||
(0, import_react.useEffect)(() => { | ||
if (!(childrenRef == null ? void 0 : childrenRef.current)) | ||
return; | ||
const classesArr = classes.split(" "); | ||
const refClassesArr = childrenRef.current.className.split(" "); | ||
const newRefClassesArr = refClassesArr.filter((item) => !item.includes(name)); | ||
childrenRef.current.className = (0, import_shared_utils.clsx)(newRefClassesArr, classesArr); | ||
}, [childrenRef, classes]); | ||
if (!import_react.default.isValidElement(children) || !renderable) | ||
return null; | ||
return import_react.default.cloneElement(children, { | ||
...otherProps, | ||
"data-transition": statusClassName, | ||
className: (0, import_shared_utils.clsx)(children.props.className, className, !(childrenRef == null ? void 0 : childrenRef.current) && classes) | ||
}); | ||
function assignRef(ref, value) { | ||
if (ref == null) | ||
return; | ||
if ((0, import_shared_utils.isFunction)(ref)) { | ||
ref(value); | ||
return; | ||
} | ||
); | ||
CSSTransition.displayName = "NextUI.CSSTransition"; | ||
try { | ||
ref.current = value; | ||
} catch (error) { | ||
throw new Error(`Cannot assign value '${value}' to ref '${ref}'`); | ||
} | ||
} | ||
function mergeRefs(...refs) { | ||
return (node) => { | ||
refs.forEach((ref) => assignRef(ref, node)); | ||
}; | ||
} | ||
// Annotate the CommonJS export names for ESM import in node: | ||
0 && (module.exports = { | ||
CSSTransition | ||
assignRef, | ||
createContext, | ||
getValidChildren, | ||
mergeRefs, | ||
pickChildren | ||
}); |
{ | ||
"name": "@nextui-org/react-utils", | ||
"version": "0.0.0-dev-v2-20230428203230", | ||
"description": "A package for sharing react components and utilities", | ||
"version": "0.0.0-dev-v2-20230613212244", | ||
"description": "A set of utilities for react on client side", | ||
"keywords": [ | ||
@@ -27,9 +27,8 @@ "react-utils" | ||
}, | ||
"dependencies": { | ||
"@nextui-org/system": "0.0.0-dev-v2-20230428203230", | ||
"@nextui-org/shared-utils": "0.0.0-dev-v2-20230428203230" | ||
}, | ||
"peerDependencies": { | ||
"react": ">=18" | ||
}, | ||
"dependencies": { | ||
"@nextui-org/shared-utils": "0.0.0-dev-v2-20230613212244" | ||
}, | ||
"devDependencies": { | ||
@@ -40,10 +39,2 @@ "clean-package": "2.2.0", | ||
"clean-package": "../../../clean-package.config.json", | ||
"tsup": { | ||
"clean": true, | ||
"target": "es2019", | ||
"format": [ | ||
"cjs", | ||
"esm" | ||
] | ||
}, | ||
"module": "dist/index.mjs", | ||
@@ -61,7 +52,7 @@ "types": "dist/index.d.ts", | ||
"build": "tsup src --dts", | ||
"build:fast": "tsup src", | ||
"dev": "yarn build:fast -- --watch", | ||
"clean": "rimraf dist .turbo", | ||
"typecheck": "tsc --noEmit", | ||
"build:fast": "tsup src" | ||
"typecheck": "tsc --noEmit" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
16605
2
18
444
1
+ Added@nextui-org/shared-utils@0.0.0-dev-v2-20230613212244(transitive)
- Removed@formatjs/ecma402-abstract@2.3.2(transitive)
- Removed@formatjs/fast-memoize@2.2.6(transitive)
- Removed@formatjs/icu-messageformat-parser@2.11.0(transitive)
- Removed@formatjs/icu-skeleton-parser@1.8.12(transitive)
- Removed@formatjs/intl-localematcher@0.5.10(transitive)
- Removed@internationalized/date@3.7.0(transitive)
- Removed@internationalized/message@3.1.6(transitive)
- Removed@internationalized/number@3.6.0(transitive)
- Removed@internationalized/string@3.2.5(transitive)
- Removed@nextui-org/shared-utils@0.0.0-dev-v2-20230428203230(transitive)
- Removed@nextui-org/system@0.0.0-dev-v2-20230428203230(transitive)
- Removed@react-aria/focus@3.19.1(transitive)
- Removed@react-aria/i18n@3.12.5(transitive)
- Removed@react-aria/interactions@3.23.0(transitive)
- Removed@react-aria/overlays@3.25.0(transitive)
- Removed@react-aria/ssr@3.9.7(transitive)
- Removed@react-aria/utils@3.27.0(transitive)
- Removed@react-aria/visually-hidden@3.8.19(transitive)
- Removed@react-stately/overlays@3.6.13(transitive)
- Removed@react-stately/utils@3.10.5(transitive)
- Removed@react-types/button@3.10.2(transitive)
- Removed@react-types/overlays@3.8.12(transitive)
- Removed@react-types/shared@3.27.0(transitive)
- Removed@swc/helpers@0.5.15(transitive)
- Removedclsx@2.1.1(transitive)
- Removeddecimal.js@10.5.0(transitive)
- Removedintl-messageformat@10.7.14(transitive)
- Removedreact-dom@19.0.0(transitive)
- Removedscheduler@0.25.0(transitive)
- Removedtslib@2.8.1(transitive)