UNPKG

@isilin/react-slot

Version:

Simple and powerful typed slots for React components

2 lines 1.72 kB
"use strict";var S=Object.create;var m=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,x=Object.prototype.hasOwnProperty;var E=(e,t)=>{for(var s in t)m(e,s,{get:t[s],enumerable:!0})},u=(e,t,s,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of y(t))!x.call(e,l)&&l!==s&&m(e,l,{get:()=>t[l],enumerable:!(a=T(t,l))||a.enumerable});return e};var N=(e,t,s)=>(s=e!=null?S(R(e)):{},u(t||!e||!e.__esModule?m(s,"default",{value:e,enumerable:!0}):s,e)),C=e=>u(m({},"__esModule",{value:!0}),e);var k={};E(k,{defineSlotComponent:()=>P,getDisplayName:()=>c,getSlots:()=>g});module.exports=C(k);function c(e){return typeof e=="function"?e.name||"Component":typeof e=="object"&&e!==null&&"displayName"in e&&e.displayName||"Component"}var d=require("change-case");function P(e,t){let{slots:s,extras:a,rules:l}=t,p=c(e),o=r=>e(r);o.slots=s,l&&(o.rules=t.rules);for(let[r,n]of Object.entries(s)){let i=(0,d.pascalCase)(r);n.displayName||=`${p}.${i}`,o[i]=n}return a&&Object.assign(o,a),o}var f=N(require("react"),1);function g(e,t){let s=t.slots,a=t.rules??{},l={},p=[];for(let o in s)a?.[o]==="multiple"&&(l[o]=[]);return f.default.Children.forEach(e,o=>{if(!f.default.isValidElement(o)){p.push(o);return}let r=o.type,n=Object.entries(s).find(([,i])=>r===i||r.displayName===i.displayName)?.[0];n?(a?.[n]??"single")==="multiple"?l[n].push(o):(l[n]&&process.env.NODE_ENV!=="production"&&console.warn(`Slot "${String(n)}" was provided multiple times but is declared as single. Only the last one will be used.`),l[n]=o):p.push(o)}),{...l,others:p}}0&&(module.exports={defineSlotComponent,getDisplayName,getSlots}); //# sourceMappingURL=index.cjs.map