piral-menu
Version:
Plugin for the integration of menu items in Piral.
2 lines (1 loc) • 2.76 kB
JavaScript
var piralMenu=(()=>{var k=Object.create;var M=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty;var u=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var S=(e,t)=>{for(var n in t)M(e,n,{get:t[n],enumerable:!0})},x=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of K(t))!T.call(e,r)&&r!==n&&M(e,r,{get:()=>t[r],enumerable:!(i=E(t,r))||i.enumerable});return e};var h=(e,t,n)=>(n=e!=null?k(N(e)):{},x(t||!e||!e.__esModule?M(n,"default",{value:e,enumerable:!0}):n,e)),_=e=>x(M({},"__esModule",{value:!0}),e);var z={};S(z,{Menu:()=>c,PiralMenuContainer:()=>C,PiralMenuItem:()=>d,createMenuApi:()=>v});var I={};S(I,{registerMenuItem:()=>$,unregisterMenuItem:()=>j});var g=u("piral-core");function $(e,t,n){e.dispatch(i=>({...i,registry:{...i.registry,menuItems:(0,g.withKey)(i.registry.menuItems,t,n)}}))}function j(e,t){e.dispatch(n=>({...n,registry:{...n.registry,menuItems:(0,g.withoutKey)(n.registry.menuItems,t)}}))}var o=u("piral-core");var R=h(u("react")),l=u("piral-core"),b=e=>R.createElement(l.ExtensionSlot,{name:`menu_${e.type}`,params:e,empty:()=>(0,l.defaultRender)(e.children,"default_menu")}),A=e=>(0,l.defaultRender)(e.children);var f=h(u("react")),D=u("piral-core");var y=u("piral-core"),C=(0,y.getPiralComponent)("MenuContainer"),d=(0,y.getPiralComponent)("MenuItem");var c=({type:e="general"})=>{let t=(0,D.useGlobalState)(r=>r.registry.menuItems),i=Object.keys(t).filter(r=>t[r].settings.type===e).map(r=>({name:r,Component:t[r].component,meta:t[r].settings})).map(({name:r,Component:s,meta:a})=>f.createElement(d,{key:r,type:e,meta:a},f.createElement(s,null)));return f.createElement(C,{type:e},i)};c.displayName="Menu";function G(e,t={}){return{type:"general",...e,...t}}function O(e,t){let n={},i=0;for(let{component:r,settings:s}of e)n[`global-${i++}`]={pilet:void 0,component:r,settings:G(t,s)};return n}function q(e){return t=>({...t,components:{MenuContainer:b,MenuItem:A,...t.components},registry:{...t.registry,menuItems:e}})}function v(e={}){let{items:t=[],defaultSettings:n={}}=e;return i=>(i.defineActions(I),i.dispatch((0,o.withAll)(q(O(t,n)),(0,o.withRootExtension)("piral-menu",c))),(r,s)=>{let a=s.name,w=0;return{registerMenu(m,p,P){typeof m!="string"&&(P=p,p=m,m=w++);let F=(0,o.buildName)(a,m);return i.registerMenuItem(F,{pilet:a,component:(0,o.withApi)(i,p,r,"menu"),settings:G(n,P)}),()=>r.unregisterMenu(m)},unregisterMenu(m){let p=(0,o.buildName)(a,m);i.unregisterMenuItem(p)}}})}return _(z);})();