@radix-ui/react-slot
Advanced tools
Comparing version 1.0.2 to 1.1.0-rc.1
@@ -1,11 +0,12 @@ | ||
import * as React from "react"; | ||
export interface SlotProps extends React.HTMLAttributes<HTMLElement> { | ||
import * as React from 'react'; | ||
interface SlotProps extends React.HTMLAttributes<HTMLElement> { | ||
children?: React.ReactNode; | ||
} | ||
export const Slot: React.ForwardRefExoticComponent<SlotProps & React.RefAttributes<HTMLElement>>; | ||
export const Slottable: ({ children }: { | ||
declare const Slot: React.ForwardRefExoticComponent<SlotProps & React.RefAttributes<HTMLElement>>; | ||
declare const Slottable: ({ children }: { | ||
children: React.ReactNode; | ||
}) => JSX.Element; | ||
export const Root: React.ForwardRefExoticComponent<SlotProps & React.RefAttributes<HTMLElement>>; | ||
declare const Root: React.ForwardRefExoticComponent<SlotProps & React.RefAttributes<HTMLElement>>; | ||
//# sourceMappingURL=index.d.ts.map | ||
export { Root, Slot, type SlotProps, Slottable }; |
@@ -1,98 +0,97 @@ | ||
var $dAvBt$babelruntimehelpersextends = require("@babel/runtime/helpers/extends"); | ||
var $dAvBt$react = require("react"); | ||
var $dAvBt$radixuireactcomposerefs = require("@radix-ui/react-compose-refs"); | ||
"use strict"; | ||
(() => { | ||
var __create = Object.create; | ||
var __defProp = Object.defineProperty; | ||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | ||
var __getOwnPropNames = Object.getOwnPropertyNames; | ||
var __getProtoOf = Object.getPrototypeOf; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { | ||
get: (a, b) => (typeof require !== "undefined" ? require : a)[b] | ||
}) : x)(function(x) { | ||
if (typeof require !== "undefined") return require.apply(this, arguments); | ||
throw Error('Dynamic require of "' + x + '" is not supported'); | ||
}); | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
return to; | ||
}; | ||
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( | ||
// If the importer is in node compatibility mode or this is not an ESM | ||
// file that has been converted to a CommonJS file using a Babel- | ||
// compatible transform (i.e. "__esModule" has not been set), then set | ||
// "default" to the CommonJS "module.exports" for node compatibility. | ||
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, | ||
mod | ||
)); | ||
function $parcel$export(e, n, v, s) { | ||
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); | ||
} | ||
function $parcel$interopDefault(a) { | ||
return a && a.__esModule ? a.default : a; | ||
} | ||
$parcel$export(module.exports, "Slot", () => $82dc8d030dec7549$export$8c6ed5c666ac1360); | ||
$parcel$export(module.exports, "Slottable", () => $82dc8d030dec7549$export$d9f1ccf0bdb05d45); | ||
$parcel$export(module.exports, "Root", () => $82dc8d030dec7549$export$be92b6f5f03c0fe9); | ||
/* ------------------------------------------------------------------------------------------------- | ||
* Slot | ||
* -----------------------------------------------------------------------------------------------*/ const $82dc8d030dec7549$export$8c6ed5c666ac1360 = /*#__PURE__*/ $dAvBt$react.forwardRef((props, forwardedRef)=>{ | ||
const { children: children , ...slotProps } = props; | ||
const childrenArray = $dAvBt$react.Children.toArray(children); | ||
const slottable = childrenArray.find($82dc8d030dec7549$var$isSlottable); | ||
// packages/react/slot/src/Slot.tsx | ||
var React = __toESM(__require("react")); | ||
var import_react_compose_refs = __require("@radix-ui/react-compose-refs"); | ||
var import_jsx_runtime = __require("react/jsx-runtime"); | ||
var Slot = React.forwardRef((props, forwardedRef) => { | ||
const { children, ...slotProps } = props; | ||
const childrenArray = React.Children.toArray(children); | ||
const slottable = childrenArray.find(isSlottable); | ||
if (slottable) { | ||
// the new element to render is the one passed as a child of `Slottable` | ||
const newElement = slottable.props.children; | ||
const newChildren = childrenArray.map((child)=>{ | ||
if (child === slottable) { | ||
// because the new element will be the one rendered, we are only interested | ||
// in grabbing its children (`newElement.props.children`) | ||
if ($dAvBt$react.Children.count(newElement) > 1) return $dAvBt$react.Children.only(null); | ||
return /*#__PURE__*/ $dAvBt$react.isValidElement(newElement) ? newElement.props.children : null; | ||
} else return child; | ||
}); | ||
return /*#__PURE__*/ $dAvBt$react.createElement($82dc8d030dec7549$var$SlotClone, ($parcel$interopDefault($dAvBt$babelruntimehelpersextends))({}, slotProps, { | ||
ref: forwardedRef | ||
}), /*#__PURE__*/ $dAvBt$react.isValidElement(newElement) ? /*#__PURE__*/ $dAvBt$react.cloneElement(newElement, undefined, newChildren) : null); | ||
const newElement = slottable.props.children; | ||
const newChildren = childrenArray.map((child) => { | ||
if (child === slottable) { | ||
if (React.Children.count(newElement) > 1) return React.Children.only(null); | ||
return React.isValidElement(newElement) ? newElement.props.children : null; | ||
} else { | ||
return child; | ||
} | ||
}); | ||
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null }); | ||
} | ||
return /*#__PURE__*/ $dAvBt$react.createElement($82dc8d030dec7549$var$SlotClone, ($parcel$interopDefault($dAvBt$babelruntimehelpersextends))({}, slotProps, { | ||
ref: forwardedRef | ||
}), children); | ||
}); | ||
$82dc8d030dec7549$export$8c6ed5c666ac1360.displayName = 'Slot'; | ||
/* ------------------------------------------------------------------------------------------------- | ||
* SlotClone | ||
* -----------------------------------------------------------------------------------------------*/ const $82dc8d030dec7549$var$SlotClone = /*#__PURE__*/ $dAvBt$react.forwardRef((props, forwardedRef)=>{ | ||
const { children: children , ...slotProps } = props; | ||
if (/*#__PURE__*/ $dAvBt$react.isValidElement(children)) return /*#__PURE__*/ $dAvBt$react.cloneElement(children, { | ||
...$82dc8d030dec7549$var$mergeProps(slotProps, children.props), | ||
ref: forwardedRef ? $dAvBt$radixuireactcomposerefs.composeRefs(forwardedRef, children.ref) : children.ref | ||
}); | ||
return $dAvBt$react.Children.count(children) > 1 ? $dAvBt$react.Children.only(null) : null; | ||
}); | ||
$82dc8d030dec7549$var$SlotClone.displayName = 'SlotClone'; | ||
/* ------------------------------------------------------------------------------------------------- | ||
* Slottable | ||
* -----------------------------------------------------------------------------------------------*/ const $82dc8d030dec7549$export$d9f1ccf0bdb05d45 = ({ children: children })=>{ | ||
return /*#__PURE__*/ $dAvBt$react.createElement($dAvBt$react.Fragment, null, children); | ||
}; | ||
/* ---------------------------------------------------------------------------------------------- */ function $82dc8d030dec7549$var$isSlottable(child) { | ||
return /*#__PURE__*/ $dAvBt$react.isValidElement(child) && child.type === $82dc8d030dec7549$export$d9f1ccf0bdb05d45; | ||
} | ||
function $82dc8d030dec7549$var$mergeProps(slotProps, childProps) { | ||
// all child props should override | ||
const overrideProps = { | ||
...childProps | ||
}; | ||
for(const propName in childProps){ | ||
const slotPropValue = slotProps[propName]; | ||
const childPropValue = childProps[propName]; | ||
const isHandler = /^on[A-Z]/.test(propName); | ||
if (isHandler) { | ||
// if the handler exists on both, we compose them | ||
if (slotPropValue && childPropValue) overrideProps[propName] = (...args)=>{ | ||
childPropValue(...args); | ||
slotPropValue(...args); | ||
}; | ||
else if (slotPropValue) overrideProps[propName] = slotPropValue; | ||
} else if (propName === 'style') overrideProps[propName] = { | ||
...slotPropValue, | ||
...childPropValue | ||
}; | ||
else if (propName === 'className') overrideProps[propName] = [ | ||
slotPropValue, | ||
childPropValue | ||
].filter(Boolean).join(' '); | ||
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children }); | ||
}); | ||
Slot.displayName = "Slot"; | ||
var SlotClone = React.forwardRef((props, forwardedRef) => { | ||
const { children, ...slotProps } = props; | ||
if (React.isValidElement(children)) { | ||
return React.cloneElement(children, { | ||
...mergeProps(slotProps, children.props), | ||
ref: forwardedRef ? (0, import_react_compose_refs.composeRefs)(forwardedRef, children.ref) : children.ref | ||
}); | ||
} | ||
return { | ||
...slotProps, | ||
...overrideProps | ||
}; | ||
} | ||
const $82dc8d030dec7549$export$be92b6f5f03c0fe9 = $82dc8d030dec7549$export$8c6ed5c666ac1360; | ||
return React.Children.count(children) > 1 ? React.Children.only(null) : null; | ||
}); | ||
SlotClone.displayName = "SlotClone"; | ||
var Slottable = ({ children }) => { | ||
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children }); | ||
}; | ||
function isSlottable(child) { | ||
return React.isValidElement(child) && child.type === Slottable; | ||
} | ||
function mergeProps(slotProps, childProps) { | ||
const overrideProps = { ...childProps }; | ||
for (const propName in childProps) { | ||
const slotPropValue = slotProps[propName]; | ||
const childPropValue = childProps[propName]; | ||
const isHandler = /^on[A-Z]/.test(propName); | ||
if (isHandler) { | ||
if (slotPropValue && childPropValue) { | ||
overrideProps[propName] = (...args) => { | ||
childPropValue(...args); | ||
slotPropValue(...args); | ||
}; | ||
} else if (slotPropValue) { | ||
overrideProps[propName] = slotPropValue; | ||
} | ||
} else if (propName === "style") { | ||
overrideProps[propName] = { ...slotPropValue, ...childPropValue }; | ||
} else if (propName === "className") { | ||
overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(" "); | ||
} | ||
} | ||
return { ...slotProps, ...overrideProps }; | ||
} | ||
var Root = Slot; | ||
})(); | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@radix-ui/react-slot", | ||
"version": "1.0.2", | ||
"version": "1.1.0-rc.1", | ||
"license": "MIT", | ||
@@ -31,4 +31,3 @@ "exports": { | ||
"dependencies": { | ||
"@babel/runtime": "^7.13.10", | ||
"@radix-ui/react-compose-refs": "1.0.1" | ||
"@radix-ui/react-compose-refs": "1.1.0-rc.1" | ||
}, | ||
@@ -51,3 +50,4 @@ "peerDependencies": { | ||
"url": "https://github.com/radix-ui/primitives/issues" | ||
} | ||
}, | ||
"stableVersion": "1.0.2" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
3
21725
8
176
1
3
+ Added@radix-ui/react-compose-refs@1.1.0-rc.1(transitive)
- Removed@babel/runtime@^7.13.10
- Removed@babel/runtime@7.26.0(transitive)
- Removed@radix-ui/react-compose-refs@1.0.1(transitive)
- Removedregenerator-runtime@0.14.1(transitive)