UNPKG

@loke/ui

Version:
2 lines (1 loc) 4.45 kB
var __create=Object.create;var{getPrototypeOf:__getProtoOf,defineProperty:__defProp,getOwnPropertyNames:__getOwnPropNames,getOwnPropertyDescriptor:__getOwnPropDesc}=Object,__hasOwnProp=Object.prototype.hasOwnProperty;function __accessProp(key){return this[key]}var __toESMCache_node,__toESMCache_esm,__toESM=(mod,isNodeMode,target)=>{var canCache=mod!=null&&typeof mod==="object";if(canCache){var cache=isNodeMode?__toESMCache_node??=new WeakMap:__toESMCache_esm??=new WeakMap,cached=cache.get(mod);if(cached)return cached}target=mod!=null?__create(__getProtoOf(mod)):{};let to=isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target;for(let key of __getOwnPropNames(mod))if(!__hasOwnProp.call(to,key))__defProp(to,key,{get:__accessProp.bind(mod,key),enumerable:!0});if(canCache)cache.set(mod,to);return to},__toCommonJS=(from)=>{var entry=(__moduleCache??=new WeakMap).get(from),desc;if(entry)return entry;if(entry=__defProp({},"__esModule",{value:!0}),from&&typeof from==="object"||typeof from==="function"){for(var key of __getOwnPropNames(from))if(!__hasOwnProp.call(entry,key))__defProp(entry,key,{get:__accessProp.bind(from,key),enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return __moduleCache.set(from,entry),entry},__moduleCache;var __returnValue=(v)=>v;function __exportSetter(name,newValue){this[name]=__returnValue.bind(null,newValue)}var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0,configurable:!0,set:__exportSetter.bind(all,name)})};var exports_context={};__export(exports_context,{createContextScope:()=>createContextScope,createContext:()=>createContext});module.exports=__toCommonJS(exports_context);var import_react=require("react"),jsx_runtime=require("react/jsx-runtime");function createContext(rootComponentName,defaultContext){let LokeContext=import_react.createContext(defaultContext),Provider=(props)=>{let{children,...context}=props,value=import_react.useMemo(()=>context,Object.values(context));return jsx_runtime.jsx(LokeContext.Provider,{value,children})};Provider.displayName=`${rootComponentName}Provider`;function useContext(consumerName){let context=import_react.useContext(LokeContext);if(context)return context;if(defaultContext!==void 0)return defaultContext;throw Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``)}return[Provider,useContext]}function createContextScope(scopeName,createContextScopeDeps=[]){let defaultContexts=[];function createScopedContext(rootComponentName,defaultContext){let BaseContext=import_react.createContext(defaultContext),index=defaultContexts.length;defaultContexts=[...defaultContexts,defaultContext];let Provider=(props)=>{let{scope,children,...context}=props,LokeContext=scope?.[scopeName]?.[index]||BaseContext,value=import_react.useMemo(()=>context,Object.values(context));return jsx_runtime.jsx(LokeContext.Provider,{value,children})};Provider.displayName=`${rootComponentName}Provider`;function useContext(consumerName,scope){let LokeContext=scope?.[scopeName]?.[index]||BaseContext,context=import_react.useContext(LokeContext);if(context)return context;if(defaultContext!==void 0)return defaultContext;throw Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``)}return[Provider,useContext]}let createScope=()=>{let scopeContexts=defaultContexts.map((defaultContext)=>{return import_react.createContext(defaultContext)});return function(scope){let contexts=scope?.[scopeName]||scopeContexts;return import_react.useMemo(()=>({[`__scope${scopeName}`]:{...scope,[scopeName]:contexts}}),[scope,contexts])}};return createScope.scopeName=scopeName,[createScopedContext,composeContextScopes(createScope,...createContextScopeDeps)]}function composeContextScopes(...scopes){let baseScope=scopes[0];if(!baseScope)throw Error("composeContextScopes must be called with at least one scope");if(scopes.length===1)return baseScope;let createScope=()=>{let scopeHooks=scopes.map((scopeFactory)=>({scopeName:scopeFactory.scopeName,useScope:scopeFactory()}));return function(overrideScopes){let nextScopes=scopeHooks.reduce((accumulatedScopes,{useScope,scopeName})=>{let currentScope=useScope(overrideScopes)[`__scope${scopeName}`];return{...accumulatedScopes,...currentScope}},{});return import_react.useMemo(()=>({[`__scope${baseScope.scopeName}`]:nextScopes}),[nextScopes])}};return createScope.scopeName=baseScope.scopeName,createScope}