piral-dashboard
Version:
Plugin for creating a centralized dashboard in Piral.
2 lines (1 loc) • 2.92 kB
JavaScript
var piralDashboard=(()=>{var N=Object.create;var h=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,$=Object.prototype.hasOwnProperty;var s=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var R=(e,r)=>{for(var t in r)h(e,t,{get:r[t],enumerable:!0})},w=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of O(r))!$.call(e,o)&&o!==t&&h(e,o,{get:()=>r[o],enumerable:!(i=j(r,o))||i.enumerable});return e};var A=(e,r,t)=>(t=e!=null?N(_(e)):{},w(r||!e||!e.__esModule?h(t,"default",{value:e,enumerable:!0}):t,e)),q=e=>w(h({},"__esModule",{value:!0}),e);var J={};R(J,{Dashboard:()=>f,PiralDashboardContainer:()=>P,PiralDashboardTile:()=>x,createDashboardApi:()=>H});var g={};R(g,{registerTile:()=>v,unregisterTile:()=>B});var b=s("piral-core");function v(e,r,t){e.dispatch(i=>({...i,registry:{...i.registry,tiles:(0,b.withKey)(i.registry.tiles,r,t)}}))}function B(e,r){e.dispatch(t=>({...t,registry:{...t.registry,tiles:(0,b.withoutKey)(t.registry.tiles,r)}}))}var a=s("piral-core");var T=A(s("react")),S=s("piral-core");var D=s("piral-core"),P=(0,D.getPiralComponent)("DashboardContainer"),x=(0,D.getPiralComponent)("DashboardTile");var f=e=>{let r=(0,S.useGlobalState)(o=>o.registry.tiles),{filter:t=()=>!0}=e,i=Object.keys(r).filter(o=>t(r[o])).map(o=>{let{component:l,preferences:d}=r[o],{initialColumns:p=1,initialRows:u=1,resizable:n=!1}=d;return T.createElement(x,{key:o,columns:p,rows:u,resizable:n,meta:d},T.createElement(l,{columns:p,rows:u}))});return T.createElement(P,{...e,children:i})};f.displayName="Dashboard";var G=A(s("react")),m=s("piral-core"),I=e=>G.createElement(m.ExtensionSlot,{name:"dashboard",params:e,empty:()=>(0,m.defaultRender)(e.children,"default_dashboard")}),F=e=>(0,m.defaultRender)(e.children);function y(e,r={}){return{...e,...r}}function k(e,r){let t={},i=0;for(let{component:o,preferences:l}of e)t[`global-${i++}`]={pilet:void 0,component:o,preferences:y(r,l)};return t}function z(e){return r=>({...r,components:{DashboardTile:F,DashboardContainer:I,...r.components},registry:{...r.registry,tiles:e}})}function E(e){return r=>({...r,routes:{...r.routes,...e.reduce((t,i)=>(t[i]=f,t),{})}})}function H(e={}){let{tiles:r=[],defaultPreferences:t={},routes:i=["/"]}=e;return o=>(o.defineActions(g),o.dispatch((0,a.withAll)(z(k(r,t)),(0,a.withRootExtension)("piral-dashboard",f),E(i))),(l,d)=>{let p=d.name,u=0;return{registerTile(n,c,C){typeof n!="string"&&(C=c,c=n,n=u++);let K=(0,a.buildName)(p,n);return o.registerTile(K,{pilet:p,component:(0,a.withApi)(o,c,l,"tile"),preferences:y(t,C)}),()=>l.unregisterTile(n)},unregisterTile(n){let c=(0,a.buildName)(p,n);o.unregisterTile(c)}}})}return q(J);})();