UNPKG

react-slottable

Version:

Package that allows to turn react components into slottable ones

23 lines (22 loc) 7.88 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("react"),ae=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},se=ae(d);var $={exports:{}},b={};/** * @license React * react-jsx-runtime.production.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var W;function ce(){if(W)return b;W=1;var t=Symbol.for("react.transitional.element"),u=Symbol.for("react.fragment");function n(i,a,l){var f=null;if(l!==void 0&&(f=""+l),a.key!==void 0&&(f=""+a.key),"key"in a){l={};for(var m in a)m!=="key"&&(l[m]=a[m])}else l=a;return a=l.ref,{$$typeof:t,type:i,key:f,ref:a!==void 0?a:null,props:l}}return b.Fragment=u,b.jsx=n,b.jsxs=n,b}var v={};/** * @license React * react-jsx-runtime.development.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */var V;function le(){return V||(V=1,process.env.NODE_ENV!=="production"&&function(){function t(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===te?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case C:return"Fragment";case X:return"Profiler";case J:return"StrictMode";case Q:return"Suspense";case K:return"SuspenseList";case re:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case G:return"Portal";case H:return e.displayName||"Context";case B:return(e._context.displayName||"Context")+".Consumer";case Z:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case ee:return r=e.displayName||null,r!==null?r:t(e.type)||"Memo";case h:r=e._payload,e=e._init;try{return t(e(r))}catch{}}return null}function u(e){return""+e}function n(e){try{u(e);var r=!1}catch{r=!0}if(r){r=console;var o=r.error,s=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return o.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",s),u(e)}}function i(e){if(e===C)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===h)return"<...>";try{var r=t(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function a(){var e=j.A;return e===null?null:e.getOwner()}function l(){return Error("react-stack-top-frame")}function f(e){if(F.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function m(e,r){function o(){D||(D=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}o.isReactWarning=!0,Object.defineProperty(e,"key",{get:o,configurable:!0})}function R(){var e=t(this.type);return I[e]||(I[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function y(e,r,o,s,k,w){var c=o.ref;return e={$$typeof:Y,type:e,key:r,props:o,_owner:s},(c!==void 0?c:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:R}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:k}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:w}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function S(e,r,o,s,k,w){var c=r.children;if(c!==void 0)if(s)if(ne(c)){for(s=0;s<c.length;s++)E(c[s]);Object.freeze&&Object.freeze(c)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else E(c);if(F.call(r,"key")){c=t(e);var p=Object.keys(r).filter(function(oe){return oe!=="key"});s=0<p.length?"{key: someKey, "+p.join(": ..., ")+": ...}":"{key: someKey}",U[c+s]||(p=0<p.length?"{"+p.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX: let props = %s; <%s {...props} /> React keys must be passed directly to JSX without using spread: let props = %s; <%s key={someKey} {...props} />`,s,c,p,c),U[c+s]=!0)}if(c=null,o!==void 0&&(n(o),c=""+o),f(r)&&(n(r.key),c=""+r.key),"key"in r){o={};for(var x in r)x!=="key"&&(o[x]=r[x])}else o=r;return c&&m(o,typeof e=="function"?e.displayName||e.name||"Unknown":e),y(e,c,o,a(),k,w)}function E(e){T(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===h&&(e._payload.status==="fulfilled"?T(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function T(e){return typeof e=="object"&&e!==null&&e.$$typeof===Y}var g=se.default,Y=Symbol.for("react.transitional.element"),G=Symbol.for("react.portal"),C=Symbol.for("react.fragment"),J=Symbol.for("react.strict_mode"),X=Symbol.for("react.profiler"),B=Symbol.for("react.consumer"),H=Symbol.for("react.context"),Z=Symbol.for("react.forward_ref"),Q=Symbol.for("react.suspense"),K=Symbol.for("react.suspense_list"),ee=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),re=Symbol.for("react.activity"),te=Symbol.for("react.client.reference"),j=g.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,F=Object.prototype.hasOwnProperty,ne=Array.isArray,A=console.createTask?console.createTask:function(){return null};g={react_stack_bottom_frame:function(e){return e()}};var D,I={},M=g.react_stack_bottom_frame.bind(g,l)(),L=A(i(l)),U={};v.Fragment=C,v.jsx=function(e,r,o){var s=1e4>j.recentlyCreatedOwnerStacks++;return S(e,r,o,!1,s?Error("react-stack-top-frame"):M,s?A(i(e)):L)},v.jsxs=function(e,r,o){var s=1e4>j.recentlyCreatedOwnerStacks++;return S(e,r,o,!0,s?Error("react-stack-top-frame"):M,s?A(i(e)):L)}}()),v}(function(t){process.env.NODE_ENV==="production"?t.exports=ce():t.exports=le()})($);const O=$.exports.Fragment,_=$.exports.jsx,P=d.createContext({slots:{},hasSlot:()=>!1,registerSlot:()=>{},getSlot:()=>_(O,{})}),q=({children:t})=>{const[,u]=d.useState(0),n=d.useRef({}),i=f=>f in n,a=(f,m)=>{n.current={...n.current,[f]:m},u(new Date().getTime())},l=f=>n.current[f];return _(P.Provider,{value:{slots:n.current,hasSlot:i,registerSlot:a,getSlot:l},children:t})},N=d.memo(({name:t,children:u})=>{const{registerSlot:n}=d.useContext(P);return d.useEffect(()=>n(t,u),[u]),_(O,{})}),z=t=>{const[u,...n]=t.replace(/[-_\s.]+(.)?/g,(i,a)=>a?a.toUpperCase():"");return`${u.toUpperCase()}${n.join("")}`},ue=(t,u)=>{const n=i=>_(q,{children:_(t,{...i})});return Object.assign(n,{Slot:N}),u.forEach(i=>{const a=z(i);Object.assign(n,{[a]:({children:l})=>_(N,{name:i,children:l})})}),n},ie=(t=!1)=>{const[u,n]=d.useState(t),i=d.useCallback(()=>n(f=>!f),[]),a=d.useCallback(()=>n(!0),[]),l=d.useCallback(()=>n(!1),[]);return[u,{setValue:n,toggle:i,on:a,off:l}]},fe=t=>{const{getSlot:u}=d.useContext(P),[n,{on:i}]=ie(!1);return d.useEffect(i,[]),d.useMemo(()=>t.reduce((l,f)=>{const m=z(f),R=({children:y,...S})=>{const E=u(f),T=typeof E=="function"?E(S):E;return n?_(O,{children:T||y}):_(O,{})};return R.displayName=m,{...l,[m]:R}},{}),[n])};exports.Slot=N;exports.SlotContext=P;exports.SlotProvider=q;exports.useSlots=fe;exports.withSlots=ue;