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,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of O(r))!$.call(e,i)&&i!==t&&h(e,i,{get:()=>r[i],enumerable:!(o=j(r,i))||o.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:()=>p,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(o=>({...o,registry:{...o.registry,tiles:(0,b.withKey)(o.registry.tiles,r,t)}}))}function B(e,r){e.dispatch(t=>({...t,registry:{...t.registry,tiles:(0,b.withoutKey)(t.registry.tiles,r)}}))}var n=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 p=e=>{let r=(0,S.useGlobalState)(i=>i.registry.tiles),{filter:t=()=>!0}=e,o=Object.keys(r).filter(i=>t(r[i])).map(i=>{let{component:l,preferences:d}=r[i],{initialColumns:f=1,initialRows:u=1,resizable:a=!1}=d;return T.createElement(x,{key:i,columns:f,rows:u,resizable:a,meta:d},T.createElement(l,{columns:f,rows:u}))});return T.createElement(P,{...e,children:o})};p.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={},o=0;for(let{component:i,preferences:l}of e)t[`global-${o++}`]={pilet:void 0,component:i,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,o)=>(t[o]=p,t),{})}})}function H(e={}){let{tiles:r=[],defaultPreferences:t={},routes:o=["/"]}=e;return i=>(i.defineActions(g),i.dispatch((0,n.withAll)(z(k(r,t)),(0,n.withRootExtension)("piral-dashboard",p),E(o))),(l,d)=>{let f=d.name,u=0;return{registerTile(a,c,C){typeof a!="string"&&(C=c,c=a,a=u++);let K=(0,n.buildName)(f,a);return i.registerTile(K,{pilet:f,component:(0,n.withApi)(i,c,l,"tile"),preferences:y(t,C)}),()=>l.unregisterTile(a)},unregisterTile(a){let c=(0,n.buildName)(f,a);i.unregisterTile(c)}}})}return q(J);})();