UNPKG

create-slots

Version:
2 lines 2.59 kB
"use strict";var g=Object.create;var u=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var M=(e,n)=>{for(var t in n)u(e,t,{get:n[t],enumerable:!0})},d=(e,n,t,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of h(n))!N.call(e,s)&&s!==t&&u(e,s,{get:()=>n[s],enumerable:!(o=w(n,s))||o.enumerable});return e};var i=(e,n,t)=>(t=e!=null?g(v(e)):{},d(n||!e||!e.__esModule?u(t,"default",{value:e,enumerable:!0}):t,e)),P=e=>d(u({},"__esModule",{value:!0}),e);var U={};M(U,{HostSlots:()=>C,createHost:()=>L,createSlot:()=>O});module.exports=P(U);var r=i(require("react"),1);var p=i(require("react"),1),m=typeof window>"u"?p.useEffect:p.useLayoutEffect,R=e=>{let n=p.createContext(e);return n.displayName="SlotsContext",n},S=e=>typeof e=="string"?e:e.displayName||e.name||"Component",$=["$$typeof","render","displayName","defaultProps"],T=(e,n)=>{if(typeof n=="string")return e;let t=Object.getOwnPropertyNames(n).reduce((o,s)=>($.includes(s)||(o[s]=n[s]),o),{});return Object.assign(e,t)};var c=i(require("react"),1);var f="slots-wrapper",D=new RegExp(`^<${f}>.*</${f}>$`),y=({name:e,forceUpdate:n,children:t})=>{let o=c.useRef(null),s=c.useRef(!1);return m(()=>{var a;if(!s.current&&((a=o.current)==null?void 0:a.innerHTML)){let l=o.current.innerHTML;l&&!D.test(l)&&console.warn(`Unwrapped children found in "${e}", either wrap them in slots or remove`)}s.current=!0,n()},[e]),s.current?c.createElement(c.Fragment,null,t):c.createElement(f,{ref:o},t)};var x=e=>{let n=new Map;return{register(t,o){n.set(t,o)},update(t,o){n.set(t,o),e(t)},unmount(t){n.delete(t),e(t)},get(t){return n.get(t)},getProps(t){let o=n.get(t);if(!o)return;let{ref:s,props:a}=o;return s?{...a,ref:s}:a}}};var E=R(void 0),H=({children:e})=>e(),C=({children:e,callback:n})=>{let t=r.useReducer(()=>[],[])[1],o=r.useMemo(()=>x(t),[t]);return r.createElement(r.Fragment,null,r.createElement(E.Provider,{value:o},process.env.NODE_ENV==="production"?e:r.createElement(y,{name:"HostSlots",forceUpdate:t},e)),r.createElement(H,null,()=>n(o)))},L=(e,n)=>r.createElement(C,{children:e,callback:n}),O=e=>{let n=(o,s)=>{let a=r.useContext(E);if(!a)return e?r.createElement(e,{ref:s,...o}):null;let l=r.createElement(t,{ref:s,...o});return r.useState(()=>a.register(t,l)),r.useEffect(()=>a.update(t,l)),r.useEffect(()=>()=>a.unmount(t),[a]),null};n.displayName=e?`Slot(${S(e)})`:"Slot";let t=r.forwardRef(n);return e?T(t,e):t};0&&(module.exports={HostSlots,createHost,createSlot}); //# sourceMappingURL=index.cjs.map