ywana-core8 0.0.11 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,4087 @@
1
- import"material-design-icons-iconfont/dist/material-design-icons.css";import e,{useContext as n,useState as t,useEffect as i,Fragment as o,useRef as r,Children as l,useMemo as a}from"react";import c from"deep-equal";import u from"resumablejs";var s=function(e,n,t,i){void 0===t&&(t=null);try{console.log("FETCH",e,n);var o={method:e,mode:"cors",headers:{Accept:"application/json","Content-Type":"application/json","x-access-token":i},body:t};return Promise.resolve(function(e,t){try{var i=Promise.resolve(fetch(n,o)).then(function(e){var n;function t(t){if(n)return t;throw e}var i=function(){if(e.ok)return Promise.resolve(e.json()).then(function(e){return n=1,e})}();return i&&i.then?i.then(t):t(i)})}catch(e){return t(e)}return i&&i.then?i.then(void 0,t):i}(0,function(e){if(e instanceof Error)throw{error:e};return Promise.resolve(e.json()).then(function(e){throw{success:!1,message:e.message}})}))}catch(e){return Promise.reject(e)}},d=function(e,n){return{GET:function(t){var i=n?n.token():null;return s("GET",e+t,void 0,i)},POST:function(t,i){var o=n?n.token():null;return s("POST",e+t,i,o)},PUT:function(t,i){var o=n?n.token():null;return s("PUT",e+t,i,o)},PATCH:function(t,i){var o=n?n.token():null;return s("PATCH",e+t,i,o)},DELETE:function(t){var i=n?n.token():null;return s("DELETE",e+t,void 0,i)}}},f=process.env.REACT_APP_SESSION||window&&window.SESSION?window.SESSION:"YWANA-CORE6-SESSION",v={token:function(){return(sessionStorage.getItem(f)?JSON.parse(sessionStorage.getItem(f)):{}).token},me:function(){return(sessionStorage.getItem(f)?JSON.parse(sessionStorage.getItem(f)):{}).me},init:function(e,n){sessionStorage.setItem(f,JSON.stringify({token:e,me:n}))},refresh:function(e){var n=this.me();sessionStorage.setItem(f,JSON.stringify({token:e,me:n}))},isLoggedIn:function(){return!!sessionStorage.DSSession},logout:function(){sessionStorage.removeItem(f)}},m=function(e){var n=e.size,t=e.clickable,i=e.action;return h("i",{className:"icon "+(void 0===n?"normal":n)+" "+(void 0!==t&&t?"clickable":"")+" material-icons",onClick:function(e){e.stopPropagation(),e.preventDefault(),i&&i()}},e.icon)},p=function(e){var n=e.label,t=e.icon,i=e.action,o=e.disabled,r=void 0!==o&&o,l=e.raised?"raised":e.outlined?"outlined":"normal";return r&&(l+=" disabled"),h("button",{className:"btn "+l,onClick:function(e){r||(e.stopPropagation(),e.preventDefault(),i&&i())}},t?h(m,{icon:t,size:"small"}):null,h("span",null,n))},g=e.createContext({}),b=function(e){var t=e.children,i=n(g);if(i){var o=i.dictionary,r=(void 0===o?{}:o)[t],l=r?r[i.lang]:t;return l?h("span",null,l):""}return t?h("span",null,t):""},y=function(e){var n=e.id,t=e.label,i=e.placeholder,o=e.value,r=e.onChange;function l(e){r&&r(n,e.target.checked)}var a=h(b,null,t);return console.log(t,o),!0===o?h("div",{className:"checkbox",key:n+"1"},h("input",{id:n,type:"checkbox",placeholder:i,checked:!0,value:o,onChange:l}),h("span",{class:"checkmark"}),h("label",{htmlFor:n},a)):h("div",{className:"checkbox",key:n+"0"},h("input",{id:n,type:"checkbox",placeholder:i,value:o,onChange:l}),h("span",{class:"checkmark"}),h("label",{htmlFor:n},a))},N=function(e){var n=e.id,t=e.icon,i=e.label,o=e.action,r=e.onSelect,l=e.outlined?"outlined":"normal";return e.selected&&(l+=" selected"),h("div",{className:"chip "+l,onClick:function(e){e.stopPropagation(),e.preventDefault(),r&&r(n)}},t?h(m,{icon:t,size:"small"}):null,h("main",null,h(b,null,i)),o?h("span",{className:"meta"},o):null)},C=function(e){return h("div",{className:"chips"},e.children)},k=function(n){var r=n.title,l=n.columns,a=void 0===l?1:l,c=n.children,u=n.outlined,s=n.onChange,d=t([]),f=d[0],v=d[1],m=function(e){return null==e||""===e};i(function(){var n=e.Children.toArray(c).filter(function(e){return null!==e&&""!==e}).map(function(e){var n=e.props,t=n.id,i=n.value,o=n.required,r=void 0!==o&&o,l=n.validation,a=!r||(l?l(i):!m(i));return{id:t,value:i,required:r,validation:l,valid:a}}).filter(function(e){return void 0!==e.id});v(n)},[]),i(function(){if(s){var e=f.every(function(e){return!0===e.valid}),n=f.reduce(function(e,n){var t=n.value;return(t||!1===t)&&(e[n.id]=t),e},{});s(n,e)}},[f]);var p=function(e,n){var t=f.find(function(n){return n.id===e});if(t){var i=!t.required||(t.validation?t.validation(n):!m(n));Object.assign(t,{value:n,valid:i}),v(f.slice())}},g=e.Children.toArray(c).filter(function(e){return null!==e&&""!==e}).map(function(n){var t=n.props.span,i=void 0===t?1:t,o=e.cloneElement(n,{onChange:p,outlined:!!u});return h(O,{style:{gridColumn:"span "+i}},o)}),y={gridTemplateColumns:"repeat("+a+", 1fr)"};return h(o,null,r?h("header",{className:"form-header"},h(b,{use:"headline6"},r)):"",h("form",{className:"form-grid",style:y},g))},O=function(e){return h("div",{className:"field-wrapper",style:e.style},e.children)},P=function(e){var n=e.caption?"caption":"",t=e.prominent?"prominent":"",i=e.dense?"dense":"",o=e.primary?"primary":"";o=e.secondary?"secondary":o;var r=e.icon?h(m,{icon:e.icon,clickable:e.clickable,action:e.action}):"";r=e.iconSrc?h("img",{className:"header-icon",src:e.iconSrc}):r;var l=e.img?{backgroundImage:"url("+e.img+")"}:{},a=h(b,null,e.title);return h("header",{className:"header "+n+" "+t+" "+i+" "+o+" "+e.className,style:l},r,e.title?h("label",null,a):null,h("span",{className:"actions"},e.children))};function S(){return S=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])}return e},S.apply(this,arguments)}var E=function(e){var n=e.items,t=void 0===n?[]:n,i=e.children,o=e.onSelect;function r(e){o&&o(e)}return e.groupBy?h(w,S({},e,{onSelect:r})):h("div",{className:"list"},h("ul",null,t.map(function(e){return h(j,{key:e.id,item:e,onSelect:r})})),i)},w=function(e){var n=e.items,t=e.children,i=e.onSelect,r=e.groupBy,l=(void 0===n?[]:n).reduce(function(e,n){var t=e.find(function(e){return e.name===n.content[r]});return t||e.push(t={name:n.content[r],items:[]}),t.items.push(n),e},[]);return h("div",{className:"list"},l.map(function(e){return h(o,{key:e.name},h("header",{key:e.name+"-header"},h(b,null,e.name)),h("ul",{key:e.name+"-ul"},e.items.map(function(e){return h(j,{key:e.id,item:e,onSelect:i})})))}),t)},j=function(e){var n=e.item,t=e.onSelect,i=n.id,o=n.icon,r=n.line1,l=n.line2,a=n.meta;return h("li",{id:i,onClick:function(){t&&t(i)}},o?h(m,{icon:o,size:"small"}):null,h("main",null,h("div",{className:"primary-line"},h(b,null,r)),l?h("div",{className:"secondary-line"},h(b,null,l)):null),a?h("div",{className:"meta"},a):null)},A=e.createContext({}),T=function(e){return h("ul",null,e.children)},x=function(e){var n=e.icon,i=void 0===n?"more_vert":n,o=e.children,r=e.align,l=t(!1),a=l[0],c=l[1];function u(){c(!a)}return h(A.Provider,{value:[a,c]},h("div",{className:"menu-icon"},h(m,{icon:i,clickable:!0,action:u}),a?h("menu",{className:""+r},o):null,a?h("div",{className:"overlay",onClick:u}):null))},_=function(e){var t=e.icon,i=e.label,o=e.meta,r=e.onSelect,l=n(A)[1];return h("li",{className:"menu-item",onClick:function(){r&&r(),l(!1)}},t?h(m,{icon:t}):null,h("label",null,i),o?h("div",{className:"meta"},o):null)},D=function(e){return h("li",null,"menuSeparator")},I=function(e){return h("div",{className:"circular-progress"},h(m,{icon:"refresh",size:"small"}))},R=function(e){var n=e.progress,t=e.max;return h("div",{className:"linear-progress"},h("progress",{value:void 0===n?0:n,max:void 0===t?100:t}))},L=function(e){var n=e.value;return h("div",{className:"property"},h("div",{className:"property-name"},e.name),h("div",{className:"property-value"},n))},B=function(e){var n=e.id,t=e.name,i=e.placeholder,o=e.value,r=e.onChange,l=h(b,null,e.label);return h("div",{className:"radio"},h("input",{id:n,name:t,type:"radio",placeholder:i,value:o,onClick:function(e){r&&r(n,e.target.value)}}),h("span",{class:"checkmark"}),h("label",{htmlFor:n},l))},F=function(e){var n=e.icon,o=e.title,r=void 0===o?"":o,l=e.canCollapse,a=void 0===l||l,c=e.open,u=void 0!==c&&c,s=e.actions,d=e.children,f=e.className,v=t(u),p=v[0],g=v[1];return i(function(){g(u)},[u]),h("section",{className:"section2 "+f},h(P,{icon:{icon:n},title:r},s,a?h(m,{icon:"expand_more",onIcon:"expand_less",clickable:!0,action:function(){g(!u)}}):""),p?h("main",null,d):"")},z=function(n){var t=n.selected,i=n.onChange,o=e.Children.map(n.children,function(n,o){return e.cloneElement(n,{selected:o===t,onSelect:function(){i&&i(o)}})});return h("div",{class:"tabs"},o,h("div",{class:"tab-filler"}))},K=function(e){var n=e.onSelect;return h("div",{className:"tab "+(e.selected?"selected":""),onClick:function(){n&&n()}},e.label,e.actions||null)},U=function(n){var t=n.selected,i=void 0===t?0:t,r=e.Children.toArray(n.children).filter(function(e,n){return n===i})[0];return h(o,null,r)},Y=function(e){var t=n(g),i=e.id,o=e.type,r=void 0===o?"text":o,l=e.label,a=e.placeholder,c=e.value,u=e.readOnly,s=void 0!==u&&u,d=e.onChange,f=e.onEnter,v=e.onClick,m=(l?"":"no-label")+" "+(e.outlined?"textfield-outlined":"textfield"),p=h(b,null,l);return h("div",{className:""+m,onClick:v},h("input",{id:i,type:r,placeholder:a,value:c,required:!0,onChange:function(e){e.stopPropagation(),e.preventDefault(),d&&d(i,e.target.value)},onKeyDown:function(e){13==(e.charCode?e.charCode:e.keyCode?e.keyCode:0)&&f()},onFocus:function(){t&&t.changeFocus({lose:function(){}})},readOnly:s}),h("span",{className:"bar"}),l?h("label",null,p):null)},q=function(e){var o=n(g),r=e.id,l=e.options,a=void 0===l?[]:l,c=e.value,u=e.onChange,s=t(!1),d=s[0],f=s[1],v=t(),p=v[0],b=v[1];function y(){o&&o.changeFocus({lose:function(){f(!1)}}),f(!d)}return i(function(){if(Array.isArray(a)){var e=a.find(function(e){return e.value===c});e&&b(e.label)}},[c]),h("div",{className:"dropdown"},h(Y,S({},e,{onClick:y,value:p})),h(m,{icon:"expand_more",clickable:!0,size:"small",action:y}),1==d?h("menu",null,h("ul",{onClick:function(e){var n=e.target.getAttribute("value"),t=a.find(function(e){return e.value===n});u&&u(r,n),b(t.label),f(!1)}},Array.isArray(a)?a.map(function(e){return h("li",{key:e.value,value:e.value},e.label)}):null)):null)},M=function(e){var n=e.columns,i=void 0===n?[]:n,o=e.rows,r=void 0===o?[]:o,l=e.onRowSelection,a=e.onSort,c=e.editable,u=e.outlined,s=t({})[0];function d(e,n){l&&l(e,n)}function f(e,n){a&&a(e,n)}return h("div",{className:"datatable8 "+(u?"outlined":"")},h("table",null,h("thead",null,h("tr",null,i.map(function(e){var n=e.sortable;return h("th",null,h(b,null,e.label),n?h(m,{icon:"arrow_up",size:"small",clickable:!0}):null)}))),h("tbody",null,function(e,n){void 0===n&&(n={});var t=Object.keys(n);if(!t.length)return e;var i=function(e,n,t){return t=null!==t?t:1,e===n?0:e>n?t:-1*t};return e.sort(function(e,o){for(var r=0,l=0;0===r&&l<t.length;){var a=t[l];a&&(r=i(e[a],o[a],n[a]),l++)}return r})}(r,s).map(function(e){return h(G,{key:e.id,row:e,columns:i,onSelect:d,onDrop:f,editable:c})}))))},G=function(e){var n,i=e.row,r=e.columns,l=void 0===r?[]:r,a=e.onSelect,c=e.editable,u=t(!1),s=u[0],d=u[1],f=s?"expand_more":"expand_less";return h(o,null,h("tr",{onClick:function(e){return a(i,e)}},l.map(function(e){return h(J,{row:i,column:e,cell:i[e.id],editable:c})}),i.info?h(m,{icon:f,clickable:!0,action:function(){return d(!s)}}):null),i.info&&s?h("tr",{className:"table-row-info"},(n=i.info)&&("[object Function]"===Object.prototype.toString.call(n)||"function"==typeof n||n instanceof Function)?i.info():i.info):null)},J=function(e){var n=e.row,t=e.column,i=e.cell,o=e.editable;return h("td",{className:t.id},function(e){var r=t.id,l=t.disabled,a=void 0!==l&&l,c=t.min,u=t.max,s=t.onChange,d=t.options;if(o&&s)switch(e){case"ICON":return h(m,{icon:i});case"BOOLEAN":case"Boolean":return h(y,{id:r,value:i,onChange:function(e,t){return s(n.id,e,t)},disabled:a});case"SELECTION":return h(q,{id:r,value:i,placeholder:"--Select--",options:d,onChange:function(e,t){return s(n.id,e,t)}});case"CHECK":return h(y,{id:r,value:i,onChange:function(e,t){return s(n.id,e,t)},disabled:n.disabled});case"CHECKABLE":return i&&i.value?h(y,{id:r,value:i.checked||!1,label:i.value,onChange:function(e,t){return s(n.id,e,i.value,t,i)}}):"";case"TEXTFIELD":return h(Y,{id:r,value:i,onChange:function(e,t){return s(n.id,e,t)}});case"String":return h(W,{id:r,value:i,options:d,onChange:function(e,t){return s(n.id,e,t)}});case"Number":return h(Y,{id:r,type:"number",value:i,min:c,max:u,onChange:function(e,t){return s(n.id,e,t)}});default:return i}else switch(e){case"ICON":return h(m,{icon:i});case"Boolean":return h(H,{id:r,value:i});case"String":return h(V,{id:r,value:i,options:d});default:return i}}(t.type))},H=function(e){var n=e.value;return h(m,{icon:!0===(void 0!==n&&n)?"check_box":"check_box_outline_blank"})},V=function(e){var n=e.value,t=e.options,i=t?t.find(function(e){return e.value===n}):null;return h("div",{className:"field-editor string-editor"},i?i.label:n)},W=function(e){var n=e.id,t=e.value,i=void 0===t?"":t,o=e.options,r=e.onChange;function l(e,n){r&&r(e,n)}return h("div",{className:"field-editor string-editor"},o?h(q,{outlined:!0,id:n,value:i,onChange:l,options:o}):h(Y,{outlined:!0,id:n,value:i,onChange:l}))},X=function(e){var n=e.id,o=e.label,l=e.init,a=e.onChange,c=r(!1),u=t(),s=u[0],d=u[1],f=t(l),v=f[0],m=f[1];return i(function(){c.current?a&&v&&a(n,v):c.current=!0},[v]),h("div",{className:"tokenField"},h("label",null,o),v.map(function(e,n){return h(Q,{text:e,onDelete:function(){return function(e){var n=v.slice();n.splice(e,1),m(n)}(n)}})}),h("input",{type:"text",value:s,onChange:function(e){d(e.target.value)},onKeyDown:function(e){if("Enter"===e.key){e.preventDefault(),e.stopPropagation();var n=v.concat(e.target.value);m(n),d("")}if(""===s&&v.length>0&&"Backspace"===e.key){var t=v.slice(0,-1);m(t)}}}))},Q=function(e){var n=e.onDelete;return h("div",{className:"token"},h(b,{use:"caption",tag:"div"},e.text),h(m,{icon:"close",clickable:!0,action:n,size:"small"}))},Z=function(e){var n=e.nodes;return h("div",{className:"tree"},void 0===n?[]:n,e.children)},$=function(e){var n=e.icon,t=void 0===n?"folder":n,i=e.label,o=e.open,r=e.children,l=e.actions;return h("details",{className:"tree-node",open:void 0!==o&&o},h("summary",{className:"tree-item"},t?h(m,{icon:t,size:"small",small:!0}):null,h("div",{className:"label"},i),h("div",{className:"actions"},l)),r)},ee=function(e){var n=e.id,t=e.icon,i=e.label,o=e.actions,r=e.onSelect;return h("div",{className:"tree-item final",onClick:function(){r&&r(n)}},h(m,{icon:void 0===t?"description":t,size:"small",small:!0}),h("div",{className:"label"},i),h("div",{className:"actions"},o))},ne=function(e){var n=e.logo,i=e.title,o=e.userLabel,r=void 0===o?"User":o,l=e.passwordLabel,a=void 0===l?"Password":l,c=e.loginLabel,u=void 0===c?"Log In":c,s=e.onOK,d=e.forgotLabel,f=void 0===d?"Forgot Password ?":d,v=e.onForgot,g=e.message,y=e.loading,N=t(""),C=N[0],k=N[1],O=t(""),P=O[0],S=O[1];function E(){return C&&C.length>0&&P&&P.length>0}function w(e){s&&E()&&s(C,e||P)}function j(e){return h(b,null,e)}return h("div",{className:"login-box"},h("header",null,n?h("img",{src:n}):"",h("div",{className:"title"},h(b,null,i))),h("main",null,h(Y,{label:j(r),value:C,onChange:function(e,n){k(n)},onEnter:w,outlined:!0}),h(Y,{label:j(a),value:P,onChange:function(e,n){S(n)},onEnter:w,type:"password",outlined:!0})),h("footer",null,v?h(p,{label:j(f),action:function(){v&&v(C)},disabled:!(C&&C.length>0)}):null,y?h("div",{className:"load-box"},h(m,{icon:"refresh"})):h(p,{label:j(u),action:w,disabled:!E(),raised:!0}),g?h("div",{className:"message"},h(b,null,g)):null))},te=function(e){var n=e.logo,i=e.title,o=e.children,r=e.onOK,l=e.onClose,a=t({}),c=a[0],u=a[1],s=t(),d=s[0],f=s[1];function v(){return c.password1&&c.password2}function m(e,n){var t,i=Object.assign({},c,((t={})[e]=n,t));u(i)}function g(){r&&v()&&(c.password1===c.password2?(f(null),r(c)):f("New Password and Confirm New Password do not match"))}return h("div",{className:"reset-password-box"},h("header",null,n?h("img",{src:n}):null,i?h("div",{className:"title"},h(b,null,i)):null,o),h("main",null,h(b,{use:"headline6"},"Change Password"),h(Y,{id:"password1",outlined:!0,icon:"lock",type:"password",label:"New Password",lapse:100,onChange:m,onEnter:g}),h(Y,{id:"password2",outlined:!0,icon:"lock",type:"password",label:"Confirm New Password",lapse:100,onChange:m,onEnter:g}),d?h("div",{className:"error"},d):null),h("footer",null,h(p,{label:"Close",action:function(){l&&l()}}),h(p,{label:"OK",raised:!0,disabled:!v(),action:g})))},ie=function(e){var n=e.title,i=e.src,o=e.info,r=e.actions,l=void 0===r?[]:r,a=e.tools,c=void 0!==a&&a,u=e.onClose,s=t(!1),d=s[0],f=s[1];function v(){f(!d)}var p=h(b,{use:"headline6"},n);return h("div",{className:"viewer"},h(P,{icon:{icon:"close",clickable:!0,action:u},title:p},d?"":h(m,{icon:"info",clickable:!0,action:v}),l),h("main",null,h("div",{className:"resizer"},h("picture",null,h("img",{src:i})))),h("aside",{className:d?"open":""},h(P,{title:"Detalles"},h(m,{icon:"close",clickable:!0,action:v})),h("main",null,o)),c?h("footer",null,h(m,{clickable:!0,icon:"zoom_out"}),h(m,{clickable:!0,icon:"zoom_out_map"}),h(m,{clickable:!0,icon:"zoom_in"})):null)},oe=function(e){return h("div",{className:"kanban"},e.children)},re=function(e){var n=e.id,i=e.icon,o=e.title,r=e.subtitle,l=e.badge,a=e.children,c=e.minified,u=e.disabled,s=void 0!==u&&u,d=t(void 0!==c&&c),f=d[0],v=d[1];function p(){v(!f)}return f?h("div",{className:"kanban-column "+n+" min"},h("main",null,o),h("footer",null,h(m,{icon:"toggle_off",onIcon:"toggle_on",clickable:!0,action:p}))):h("div",{className:"kanban-column "+n+" "+(s?"disabled":"")},h("header",null,h(m,{icon:i}),h("div",{className:"title"},h(b,{use:"headline6"},o),h(b,{className:"secondary-text",use:"body2"},r)),h("div",{className:"badge"},l)),h("main",null,a),h("footer",null,h(m,{icon:"toggle_off",onIcon:"toggle_on",clickable:!0,action:p})))},le=function(e){return h("div",{className:"kanban-card "+e.color},e.children)},ae=e.createContext({}),ce=function(e){var n=e.context,i=e.children,o=t(void 0===n?{}:n);return h(ae.Provider,{value:[o[0],o[1]]},i)},ue=function(e){var n=e.layout,t=e.context;return h(ce,{context:void 0===t?{}:t},h("article",{className:"page6 "+(void 0===n?"simple":n)},e.children))},se=function(e){var n=e.children,i=e.siteDictionary,o=t(e.siteLang),r=o[0],l=o[1],a=t(i),c=a[0],u=a[1],s=t("max"),d=s[0],f=s[1],v=t(!1),m=v[0],p=v[1],b=t(null),y=b[0],N=b[1],C=t(!1),k=C[0],O=C[1],P=t(),S=P[0],E=P[1],w=t(),j=w[0],A=w[1],T=t(),x=T[0],_=T[1],D=t(),I=D[0],R=D[1],L=t(),B=L[0],F=L[1],z={lang:r,setLang:l,dictionary:c,setDictionary:u,focused:B,changeFocus:function(e){B&&B.lose(),F(e)},sideNav:d,setSideNav:f,showNav:m,setShowNav:p,info:y,openInfo:function(e){N(e)},closeInfo:function(){N(null)},console:k,toggleConsole:function(){O(!k)},breadcrumb:I,setBreadcrumb:R,page:S,goto:function(e){E(e)},dialog:j,openDialog:function(e){A(e)},closeDialog:function(){A(null)},preview:x,openPreview:function(e){_(e)},closePreview:function(){_(null)}};return h(g.Provider,{value:z},n)},de=function(e){var n=e.logo,t=e.title,i=e.toolbar,o=e.children,r=e.init,l=e.min;return h(se,{siteLang:e.lang,siteDictionary:e.dictionary},h("div",{className:"site6"},h(he,{icon:e.icon}),h(fe,null,i),h(me,{logo:n,title:t,min:l},o),h(pe,{init:r},o,h(ue,{id:"EMPTY"},"EMPTY")),h(ve,null),h(ye,null),h(ge,null),h(be,null)))},he=function(e){var n=e.icon;return h(P,{icon:void 0===n?"equalizer":n,title:e.title})},fe=function(e){var t=e.children;return n(g),h("nav",null,t)},ve=function(){var e=n(g);return e.info?h("aside",null,e.info):""},me=function(e){var t=e.children,r=e.min,a=n(g),c=a.showNav;i(function(){r&&a.setSideNav("min")},[]);var u=t?l.toArray(t).reduce(function(e,n){var t=n.props?n.props.section:"...";e[t]||(e[t]=[]);var i=n.props,o=i.title;return o&&e[t].push({id:i.id,icon:i.icon,title:o}),e},{}):{};return h("menu",{className:"min "+(c?"show":"")},h("main",null,Object.keys(u).map(function(e){return h(o,{key:e},u[e].map(function(e){var n=e.id,t=e.icon;return h(m,{key:n,icon:void 0===t?"info":t,clickable:!0,checked:n===a.page,action:function(){return function(e){a.setShowNav(!1),a.goto(e)}(n)}})}),h("div",{className:"section-divider"}))})))},pe=function(t){var o=t.children,r=t.init,l=n(g),a=l.page;return i(function(){l.goto(r||"EMPTY")},[]),h("main",null,e.Children.toArray(o).filter(function(e){return!!e.props&&e.props.id===a}))},ge=function(){var e=n(g);return e.dialog?e.dialog:""},be=function(){var e=n(g);return e.preview?h("div",{className:"site-preview"},e.preview):""},ye=function(){return n(g).console?h("footer",{className:"site-console"},h(P,null,h(z,null,h(K,{label:"Console"}))),h("main",null)):""},Ne=function(e){var t=n(g),i=e.icon,r=e.title,l=void 0===r?"Dialog":r,a=e.children,c=e.actions;return h(o,null,h("div",{className:"overlay"}),h("div",{className:"dialog",onClick:function(){t.closeDialog()}},h("div",{className:"dialog-panel",onClick:function(e){e.preventDefault(),e.stopPropagation()}},h("header",null,i?h(x,{icon:i}):null,h(b,null,l)),h("main",null,a),h("footer",null,c))))},Ce={STRING:"String",NUMBER:"Number",DATE:"Date",BOOLEAN:"Boolean",ARRAY:"Array",ENTITY:"Object",FUNCTION:"Function",EMAIL:"String"},ke=Object.values(Ce).reduce(function(e,n){return e["is"+n]=function(e){return toString.call(e)=="[object "+n+"]"},e},{}),Oe=/*#__PURE__*/function(){function e(e){this._schema=e}var n=e.prototype;return n.checkType=function(n,t){var i=n.type,o=n.item,r=!0,l=!0;if(o){var a=new e(o);switch(i){case Ce.ARRAY:r=ke["is"+i](t),l=t.every(function(e){return a.validate(e)});break;case Ce.ENTITY:r=ke["is"+i](t),l=a.validate(t);break;case Ce.NUMBER:r=ke["is"+i](t.value),l=!0;break;default:r=!0,l=!0}}return r&&l},n.validate=function(e){var n=this;return Object.entries(this._schema).filter(function(e){return!0===e[1].required}).every(function(t){var i=t[0];return void 0!==e[i]&&n.checkType(t[1],e[i])})},n.form=function(e){return Object.entries(this._schema).reduce(function(n,t){var i=t[0];return n[i]=Object.assign({},t[1],{value:e[i]}),n},{})},n.sections=function(e){var n=this.form(e),t=Object.values(n).reduce(function(e,n){var t=n.section||"";return e.hasOwnProperty(t)||(e[t]={title:t,fields:[]}),e[t].fields.push(n),e},{});return Object.values(t)},n.value=function(n){return Object.entries(this._schema).reduce(function(t,i){var o=i[0],r=i[1],l=r.item,a=n?n[o]:null;switch(r.type){case Ce.STRING:case Ce.NUMBER:case Ce.BOOLEAN:t[o]=a||r.default;break;case Ce.ENTITY:var c=new e(l);t[o]=c.value(a);break;case Ce.ARRAY:if(l===Ce.STRING)t[o]=a||[];else{var u=new e(l);t[o]=a?a.map(function(e){return u.value(e)}):[]}break;default:t[o]=r}return t},{})},e}(),Pe=/*#__PURE__*/function(){function e(e,n){this.type=e,this._type=new Oe(e),this._value=n}var n=e.prototype;return n.isValid=function(){return this._type.validate(this._value)},n.value=function(){return this._type.value(this._value)},n.form=function(){return this._type.form(this._value)},n.sections=function(){return this._type.sections(this._value)},n.update=function(e){this._value=e},e}(),Se=function(e){var n=e.columns,t=void 0===n?1:n,i=e.filter,o=e.onChange,r=e.content.form();console.log(r);var l=Object.keys(r).map(function(e){return r[e]}).filter(function(e){return!i||i(e)});return console.log(l),h(k,{className:"content-form",columns:t,outlined:!0,onChange:o},l.map(function(e){return h(Ee,S({key:e.id},e))}))},Ee=function(e){switch(e.type){case Ce.BOOLEAN:return h(y,S({key:e.id},e));case Ce.NUMBER:return h(je,S({key:e.id},e));default:return h(we,S({key:e.id},e))}},we=function(e){var n,t=e.id,i=e.type,o=e.label,r=e.options,l=e.textarea,a=e.required,c=void 0!==a&&a,u=e.value,s=e.onChange,d=e.outlined,f=((n={})[Ce.NUMBER]="number",n[Ce.DATE]="date",n)[i]||"text";return r?h(q,{key:t,id:t,label:o,value:u,onChange:s,options:"function"==typeof r?r():r,outlined:d}):h(Y,{key:t,id:t,type:f,label:o,value:u,onChange:s,required:c,outlined:d,textarea:l})},je=function(e){var n=e.id,t=e.label,i=e.options,o=e.required,r=void 0!==o&&o,l=e.value,a=e.onChange,c=e.outlined;function u(e,n){a&&a(e,+n?+n:n)}return i?h(q,{key:n,id:n,label:t,value:l,onChange:u,options:i,outlined:c}):h(Y,{key:n,id:n,type:"number",label:t,value:l,onChange:u,required:r,outlined:c})},Ae=function(e){var n=e.content,t=e.filter,i=e.onChange;function o(e,t){var o,r=Object.assign({},n.value(),((o={})[e]=t,o));i&&i(r)}var r=n.sections();return h("div",{className:"content-editor"},r.map(function(e){var i=e.title,r=e.fields;return h("section",{key:i},h("header",null,i),h("main",null,r.filter(function(e){return"id"!==e.id}).filter(function(e){return!t||t(e,n)}).map(function(e){return h(_e,{key:e.id,field:e,onChange:o})})))}))},Te=function(e){var n=e.content,i=e.filter,r=e.grouped,l=void 0!==r&&r,a=e.onChange,c=t(0),u=c[0],s=c[1];function d(e,t){var i,o=Object.assign({},n.value(),((i={})[e]=t,i));a&&a(o)}var f=n.sections();return h("div",{className:"content-editor tabbed"},h(z,{selected:u,onChange:function(e){s(e)}},f.map(function(e){return h(K,{label:e.title})})),h(U,{selected:u},f.map(function(e){var t=e.fields;return h("section",{key:e.title},h("nav",null," "),h("main",null,l?function(e){var n=e.fields,t=(void 0===n?[]:n).reduce(function(e,n){var t=n.group||"",i=e[t]||{name:t,fields:[]};return i.fields.push(n),e[t]=i,e},{});return Object.values(t)}(e).map(function(e){return h(o,null,e.name.length>0?h("div",{className:"group-caption"},e.name):null,e.fields.filter(function(e){return"id"!==e.id}).filter(function(e){return!i||i(e)}).map(function(e){return h(_e,{key:e.id,field:e,onChange:d,content:n})}))}):t.filter(function(e){return"id"!==e.id}).filter(function(e){return!i||i(e)}).map(function(e){return h(_e,{key:e.id,field:e,onChange:d,content:n})})))})))},xe=function(e){var n=e.content,i=e.onChange,o=n.value(),r=Object.values(n.type).filter(function(e){return e.type===Ce.ARRAY}),l=t(),a=l[0],c=l[1];function u(){}return h("div",{className:"content-editor treeded-editor"},h("menu",null,h("header",null,h(b,{use:"caption"},"Tree Editor")),h(Z,null,r.map(function(e,n){return h($,{icon:"folder",label:e.label,actions:[h(m,{small:!0,icon:"add",clickable:!0,action:u})]},o[e.id]?o[e.id].map(function(n,t){return h(ee,{icon:n.icon||"description",label:n.name||n.label,onSelect:function(){return function(e,n,t){var i=new Pe(t.item,n);c({index:e,item:i,node:t,value:o[t.id]})}(t,n,e)}})}):null)}))),h("div",null,a?h(Te,{content:a.item,onChange:function(e){var n,t=a.value.slice();t[a.index]=e;var r=Object.assign({},o,((n={})[a.node.id]=t,n));i&&i(r)}}):"select"))},_e=function(e){var n=e.field,t=e.onChange,i=e.content,o=e.outlined,r=void 0!==o&&o,l=n.id,a=n.type,c=n.item,u=n.label,s=n.editable,d=n.options;function f(e,n){t&&t(e,n)}return function(){var e=n.value?n.value:n.default;switch(a){case Ce.ENTITY:return h(De,{field:n,value:e,onChange:f});case Ce.STRING:return h(Ie,{outlined:r,field:n,value:e,onChange:f,content:i});case Ce.BOOLEAN:return h(y,{outlined:!0,id:l,label:u,value:e,onChange:f});case Ce.DATE:return h(Y,{outlined:r,id:l,type:"date",label:u,value:e,onChange:f,disabled:s});case Ce.NUMBER:return h(Re,{outlined:r,field:n,value:e,onChange:f});case Ce.ARRAY:return c===Ce.STRING?d?h(Be,{content:i,field:n,value:e,onChange:f}):h(Le,{field:n,value:e,onChange:f}):h(Fe,{field:n,value:e,onChange:f});default:return h("div",null,u)}}()},De=function(e){var n=e.field,t=e.value,i=e.onChange,o=n.id,r=n.label,l=new Pe(n.item,void 0===t?{}:t);function a(e,n){var t,r=Object.assign({},l.value(),((t={})[e]=n,t));i&&i(o,r)}var c=l.form(),u=Object.keys(c).map(function(e){return c[e]});return h("div",{className:"entity-editor"},h("header",null,h(b,{use:"caption"},r)),h("main",null,u.map(function(e){return h(_e,{key:e.id,field:e,onChange:a})})))},Ie=function(e){var n=e.field,t=e.value,i=void 0===t?"":t,o=e.onChange,r=e.outlined,l=n.id,a=n.label,c=n.options,u=n.editable;function s(e,n){o&&o(e,n)}return h("div",{className:"field-editor string-editor"},void 0===u||u?c?h(q,{outlined:r,id:l,label:a,value:i,onChange:s,options:"function"==typeof c?c(n,e.content):c}):h(Y,{outlined:r,id:l,label:a,value:i,onChange:s}):h(Y,{outlined:r,id:l,label:a,value:i,onChange:s,readOnly:!0}))},Re=function(e){var n=e.field,t=e.onChange,i=n.editable;return h("div",{className:"field-editor number-editor"},h(Y,{outlined:!0,id:n.id,label:n.label,type:"NUMBER",value:e.value||n.default,max:n.max,min:n.min,onChange:function(e,n){t&&t(e,n)},disabled:!(void 0===i||i)}))},Le=function(e){var n=e.field,t=e.value,i=e.onChange;return h("div",{className:"list-editor"},h(X,{id:n.id,label:n.label,init:void 0===t?[]:t,onChange:function(e,n){i&&i(e,n)}}))},Be=function(e){var n=e.field,t=e.value,i=void 0===t?[]:t,o=e.content,r=e.onChange,l=n.id,a=n.options;return h("div",{className:"multiselection-editor"},h("label",null,n.label),("function"==typeof a?a(n,o):a).map(function(e){var n=i.includes(e.value);return h(y,{value:n,label:e.label,onChange:function(){return(t=i.indexOf(n=e.value))>=0?i.splice(t,1):i.push(n),void(r&&r(l,i));var n,t}})}))},Fe=function(e){var n=e.field,t=e.value,i=void 0===t?[]:t,o=e.onChange,r=n.id,l=n.item,a=n.label,c=n.Feeder,u=n.Renderer,s=n.Adder,d=void 0===s||s,f=n.editable,v=void 0===f||f;function p(e){if(o){var n=i.concat(e);o(r,n)}}function g(e){if(o){var n=i.filter(function(n,t){return t!==e});o(r,n)}}function y(e,n,t){if(o){var l=i.slice();l[e][n]=t,o(r,l)}}var N=Object.values(l).map(function(e){return S({},e,{onChange:y})});N.push({id:"actions",label:"Actions"});var C=i.map(function(e,n){return S({},e,{id:n,actions:[h(m,{icon:"delete",clickable:!0,action:function(){return g(n)},small:!0})]})}),k={columns:N,rows:C};return h("div",{className:"collection-editor"},h("header",null,h(b,{use:"caption"},a),h("div",{className:"actions"},c?h(c,{onAdd:p}):null)),u?h(u,{field:n,value:i,onRemove:g,onChange:o}):h(M,S({},k,{editable:v})),h("footer",null,d?h(ze,{item:l,onAdd:p}):null))},ze=function(e){var n=e.item,i=e.onAdd,o=t(!1),r=o[0],l=o[1],a=t({}),c=a[0],u=a[1];function s(){l(!r)}function d(e,n,t){if(i){var o,r=Object.assign({},c,((o={})[n]=t,o));u(r)}}var f=Object.values(n).map(function(e){return S({},e,{type:"String",onChange:d})});f.push({id:"actions",label:""});var v=[{actions:[h(m,{icon:"done",clickable:!0,action:function(){i&&i([c]),s()}}),h(m,{icon:"close",clickable:!0,action:s})]}];return v[0]=Object.assign({},c,v[0]),h("div",{className:"collection-adder"},r?h(M,S({},{columns:f,rows:v},{editable:!0})):h(p,{icon:"add",label:"Add",action:s}))},Ke=function(e){var i=e.label,r=e.type,l=e.validator,a=e.onOK,c=e.onActionClose,u=void 0===c||c,s=n(g),d=t({}),f=d[0],v=d[1],m=t(!1),y=m[0],N=m[1],C=t([]),k=C[0],O=C[1];function P(e){"OK"===e&&a&&a(f),"CLOSE"!==e&&!0!==u||s.closeDialog()}var S=h(o,null,h(p,{label:"CLOSE",action:function(){return P("CLOSE")}}),h(p,{label:"OK",action:function(){return P("OK")},disabled:!y,raised:!0})),E=h(b,{use:"headline6"},i),w=new Pe(r,f);return h(Ne,{title:E,open:!0,onAction:P,actions:S},h(Se,{content:w,filter:function(e){return function(e){var n=e.required;return void 0!==n&&n}(e)||function(e){var n=e.creation;return void 0!==n&&n}(e)},onChange:function(e,n){if(v(e),l){var t=l(e),i=t.errors,o=void 0===i?[]:i;N(n&&t.validation),O(o)}else N(n)}}),k.map(function(e){return h(b,{use:"overline",tag:"div",className:"error"},e)}))},Ue=function(e){var i=e.label,r=e.type,l=e.value,a=void 0===l?{}:l,c=e.filter,u=e.validator,s=e.onOK,d=n(g),f=t(a),v=f[0],m=f[1],y=t(!1),N=y[0],C=y[1],k=t([]),O=k[0],P=k[1];function S(e){"OK"===e&&s&&s(Object.assign({},a,v)),d.closeDialog()}var E=h(o,null,h(p,{label:"CLOSE",action:function(){return S("CLOSE")}}),h("div",{className:"expand"}),h(p,{label:"OK",action:function(){return S("OK")},disabled:!N,raised:!0})),w=h(b,{use:"headline6"},i),j=new Pe(r,v);return h(Ne,{title:w,open:!0,onAction:S,actions:E},h(Ae,{content:j,onChange:function(e){if(m(e),u){var n=u(e),t=n.errors,i=void 0===t?[]:t;C(n.validation),P(i)}else C(!0)},filter:c}),O.map(function(e){return h(b,{use:"overline",tag:"div",className:"error"},e)}))};function Ye(e,n){try{var t=e()}catch(e){return n(e)}return t&&t.then?t.then(void 0,n):t}var qe=d(window.API||process.env.REACT_APP_API,v),Me=function(e){var t=n(g),r=e.id,l=void 0===r?"collection":r,a=e.icon,c=e.title,u=e.name,s=void 0===u?"Collection 1":u,d=e.schema,f=e.url,v=e.groupBy,m=e.editor,y=e.field,N=e.autosave,C=void 0!==N&&N,k=e.delay,O=void 0===k?1e3:k,S=e.actions,E=e.levels,w=n(ae),j=w[0],A=w[1],T=Ve(f,y);return i(function(){try{return Promise.resolve(T.load()).then(function(){A(T)})}catch(e){return Promise.reject(e)}},[]),h(o,null,h(P,{className:"collection-page",title:h(b,null,c)},h(p,{icon:"add",label:"Add",action:function(){t.openDialog(h(Ue,{label:"Crear "+s,type:d,onOK:function(e){try{return Promise.resolve(j.create(e)).then(function(){A(Object.assign({},j))})}catch(e){return Promise.reject(e)}}}))}}),h(p,{icon:"refresh",label:"Reload",action:function(){try{return Promise.resolve(j.load()).then(function(){A(Object.assign({},j))})}catch(e){return Promise.reject(e)}}}),S),h("menu",{className:"collection-page"},h(P,{title:h(b,null,"Lista de ",s)}),E?h(Je,{levels:E}):h(Ge,{groupBy:v})),h("main",{key:l,className:"collection-page"},h(He,{icon:a,schema:d,layout:m,autosave:C,delay:O})))},Ge=function(e){var t=e.groupBy,i=n(ae),o=i[0],r=i[1],l=o.all,a=void 0===l?[]:l,c=a?a.map(function(e){return{id:e.id,line1:e.name,line2:e.description,content:e}}):[];return h(E,{items:c,onSelect:function(e){try{return o.clear(),r(Object.assign({},o)),Promise.resolve(o.select(e)).then(function(){r(Object.assign({},o))})}catch(e){return Promise.reject(e)}},groupBy:t})},Je=function(e){var t=function(e){try{return r.clear(),l(Object.assign({},r)),Promise.resolve(r.select(e)).then(function(){l(Object.assign({},r))})}catch(e){return Promise.reject(e)}},i=e.levels,o=n(ae),r=o[0],l=o[1],a=r.all,c=function e(n,t){var i=function(e,n){return e.reduce(function(e,t){var i=e.find(function(e){return e.name===t[n]});return i||e.push(i={name:t[n],items:[],field:n}),i.items.push(t),e},[])}(t,n[0]);return n.length>1&&i.forEach(function(t){return t.nodes=e(n.slice(1),t.items)}),i}(i,void 0===a?[]:a);return h("main",null,h(Z,null,function e(n){return n.map(function(n){return h($,{key:n.name,icon:null,label:"boolean"==typeof n.name?n.field+" = "+n.name:n.name,open:!0},n.nodes?e(n.nodes):n.items.map(function(e){return h(ee,{key:e.id,id:e.id,label:e.name,onSelect:t},"item")}))})}(c)))},He=function(e){var l=function(){try{return console.log("saving....."),Promise.resolve(u.update(w)).then(function(){s(Object.assign({},u))})}catch(e){return Promise.reject(e)}},a=n(ae),u=a[0],s=a[1],d=u.selected,f=e.icon,v=e.schema,g=e.layout,y=e.autosave,N=void 0!==y&&y,C=e.delay,k=void 0===C?1e3:C,O=r(null),E=t(d),w=E[0],j=E[1];function A(e){j(e)}function D(){return!c(w,d)}return i(function(){j(d)},[d]),i(function(){N&&(clearTimeout(O.current),O.current=setTimeout(function(){D()&&l()},k))},[w]),d&&w?h(o,null,h(P,{icon:f,title:h(b,null,d.name)},h(m,{icon:"close",clickable:!0,action:function(){u.clear(),s(Object.assign({},u))}}),h(x,{align:"alignRight"},h(T,null,h(_,{label:"Eliminar",onSelect:function(){try{return Promise.resolve(u.remove(d.id)).then(function(){u.clear(),s(Object.assign({},u))})}catch(e){return Promise.reject(e)}}}))),!0===N?null:h(p,{icon:"save",label:"Guardar Cambios",raised:!0,disabled:!D(),action:l})),function(){var n=new Pe(v,w);switch(g){case"TABBED":return h(Te,S({},e,{content:n,onChange:A}));case"TREEDED":return h(xe,S({},e,{content:n,onChange:A}));default:return h(Ae,S({},e,{content:n,onChange:A}))}}()):null},Ve=function(e,n){var t=We(e);return{all:[],selected:null,load:function(){try{var e=this,i=Ye(function(){return Promise.resolve(t.all()).then(function(t){e.all=n?t[n]:t})},function(e){console.log(e)});return Promise.resolve(i&&i.then?i.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},select:function(e){var n=this.all.find(function(n){return n.id===e});this.selected=n},clear:function(){this.selected=null},create:function(e){try{var n=this,i=Ye(function(){return Promise.resolve(t.create(e)).then(function(){return Promise.resolve(n.load()).then(function(){})})},function(e){console.log("CREATE ERROR",e)});return Promise.resolve(i&&i.then?i.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},update:function(e){try{var n=this,i=Ye(function(){return Promise.resolve(t.update(e)).then(function(){return Promise.resolve(n.load()).then(function(){})})},function(e){console.log(e)});return Promise.resolve(i&&i.then?i.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},patch:function(e,n){try{var i=this,o=Ye(function(){return Promise.resolve(t.patch(e,n)).then(function(){return Promise.resolve(i.load()).then(function(){})})},function(e){console.log(e)});return Promise.resolve(o&&o.then?o.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},updateProperty:function(e,n,i){try{var o=this,r=Ye(function(){return Promise.resolve(t.updateProperty(e,n,i)).then(function(){return Promise.resolve(o.load()).then(function(){})})},function(e){console.log(e)});return Promise.resolve(r&&r.then?r.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},remove:function(e){try{var n=this,i=Ye(function(){return Promise.resolve(t.remove(e)).then(function(){return Promise.resolve(n.load()).then(function(){})})},function(e){console.log(e)});return Promise.resolve(i&&i.then?i.then(function(){}):void 0)}catch(e){return Promise.reject(e)}}}},We=function(e){return{all:function(){return qe.GET(e)},find:function(n){return qe.GET(e+"/"+n)},create:function(n){var t=JSON.stringify(n);return qe.POST(e,t)},update:function(n){var t=JSON.stringify(n);return qe.PUT(e+"/"+n.id,t)},patch:function(n,t){var i=JSON.stringify(t);return qe.PATCH(e+"/"+n,i)},updateProperty:function(n,t,i){var o=JSON.stringify(i);return qe.PUT(e+"/"+n+"/"+t,o)},remove:function(n){return qe.DELETE(e+"/"+n)}}},Xe=function(e){var n=r(),o=t(!1),l=o[0],a=o[1];i(function(){var t=e.resumable;t&&n&&t.assignDrop(n.current)},[]);var c=e.state,u=void 0===c?0:c,s=e.label,d=void 0===s?"Add file or drop file here...":s,f=e.error;return h("div",{className:"upload-area6 "+(!0===l?"drag-over":""),onDragOver:function(){a(!0)},onDragLeave:function(){a(!1)},ref:n},0===u?h(Qe,{resumable:e.resumable}):"",0===u?h("label",null,d):"",1===u?h(I,{size:"xlarge"}):"",2===u?h(m,{icon:"done_all"}):"",3===u?h(b,{use:"body1"},f):"",e.children)},Qe=function(e){var n=e.resumable,t=r();return i(function(){n&&t&&n.assignBrowse(t.current)},[]),h("div",{className:"upload-icon",ref:t},h(m,{icon:"folder_open",clickable:!0}))},Ze=function(e){var n=e.label,i=e.target,o=e.accept,r=e.className,l=e.onSuccess,c=e.onError,s=e.onComplete,d=a(function(){var e=new u({target:i,chunkSize:1048576,simultaneousUploads:1,testChunks:!1,throttleProgressCallbacks:1,fileType:o});return e.on("fileAdded",O),e.on("fileProgress",P),e.on("fileSuccess",S),e.on("fileError",E),e.on("complete",w),e},[]),f=t(0)[1],v=t(0),m=v[0],p=v[1],g=t(),b=g[0],y=g[1],N=t([]),C=N[0],k=N[1];function O(e){C.push(e),k(C),d.upload()}function P(e){var n=e.progress();f(n)}function S(e,n){p(2),l&&l(e,n)}function E(e,n){y(n),p(3),c&&c(e,n)}function w(){p(0),s&&s(C)}return h("div",{className:"uploader "+r},h(Xe,{resumable:d,state:m,label:n,error:b}))},$e=function(e){var n=e.file,t=e.state,i=e.progress,r=e.error,l=r?h(m,{icon:"image",className:"error"}):h(m,{icon:"image"});return 0!==t?h(o,null,h("div",{className:"upload-file"},l,h(b,{use:"body1",tag:"label"},n.fileName),1===t?h(R,{progress:i}):"",1===t?h(m,{icon:"close",clickable:!0}):"",2===t?h(m,{icon:"done"}):"",3===t?h(m,{icon:"error"}):""),r?h("div",{className:"error"},h(b,{use:"overline"},r)):""):""},en=function(e){var i=e.label,r=e.target,l=e.accept,a=e.onSuccess,c=e.onClose,u=e.onActionClose,s=void 0===u||u,d=n(g),f=t(),v=f[0],m=f[1],y=t([])[0];function N(e){"CLOSE"!==e&&!0!==s||(d.closeDialog(),c())}var C=h(o,null,h(p,{label:"CLOSE",action:function(){return N("CLOSE")}})),k=h(b,{use:"headline6"},i);return h(Ne,{title:k,open:!0,onAction:N,actions:C},v?h($e,{file:v}):h(Ze,{label:i,accept:l,target:r,onComplete:function(e){m(e[0]),a&&a(e[0])}}),y.map(function(e){return h(b,{use:"overline",tag:"div",className:"error"},e)}))},nn=function(e){return e&&("[object Function]"===Object.prototype.toString.call(e)||"function"==typeof e||e instanceof Function)};export{p as Button,y as CheckBox,N as Chip,C as Chips,I as CircularProgress,Ve as CollectionContext,Fe as CollectionEditor,Me as CollectionPage,Pe as Content,Ae as ContentEditor,Se as ContentForm,Ke as CreateContentDialog,M as DataTable,Ne as Dialog,q as DropDown,Ue as EditContentDialog,_e as FieldEditor,k as Form,d as HTTPClient,P as Header,m as Icon,oe as Kanban,le as KanbanCard,re as KanbanColumn,R as LinearProgress,E as List,Le as ListEditor,ne as LoginBox,T as Menu,x as MenuIcon,_ as MenuItem,D as MenuSeparator,ue as Page,ae as PageContext,ce as PageProvider,L as Property,B as RadioButton,te as ResetPasswordBox,F as Section,v as Session,de as Site,g as SiteContext,se as SiteProvider,U as Stack,Ce as TYPES,K as Tab,Te as TabbedContentEditor,z as Tabs,b as Text,Y as TextField,X as TokenField,Z as Tree,ee as TreeItem,$ as TreeNode,xe as TreededContentEditor,Xe as UploadArea,en as UploadDialog,$e as UploadFile,Ze as Uploader,ie as Viewer,nn as isFunction};
1
+ import 'material-design-icons-iconfont/dist/material-design-icons.css';
2
+ import React, { useContext, useState, useEffect, Fragment, useRef, Children, useMemo } from 'react';
3
+ import equal from 'deep-equal';
4
+ import ResumableJS from 'resumablejs';
5
+
6
+ function _catch$1(body, recover) {
7
+ try {
8
+ var result = body();
9
+ } catch (e) {
10
+ return recover(e);
11
+ }
12
+
13
+ if (result && result.then) {
14
+ return result.then(void 0, recover);
15
+ }
16
+
17
+ return result;
18
+ }
19
+
20
+ var fetchAsync = function fetchAsync(method, URL, body, token) {
21
+ if (body === void 0) {
22
+ body = null;
23
+ }
24
+
25
+ try {
26
+ console.log('FETCH', method, URL);
27
+ var request = {
28
+ method: method,
29
+ mode: 'cors',
30
+ headers: {
31
+ "Accept": "application/json",
32
+ "Content-Type": "application/json",
33
+ "x-access-token": token
34
+ },
35
+ body: body
36
+ };
37
+ return Promise.resolve(_catch$1(function () {
38
+ return Promise.resolve(fetch(URL, request)).then(function (response) {
39
+ var _exit;
40
+
41
+ function _temp2(_result) {
42
+ if (_exit) return _result;
43
+ throw response;
44
+ }
45
+
46
+ var _temp = function () {
47
+ if (response.ok) {
48
+ return Promise.resolve(response.json()).then(function (json) {
49
+ _exit = 1;
50
+ return json;
51
+ });
52
+ }
53
+ }();
54
+
55
+ return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
56
+ });
57
+ }, function (error) {
58
+ if (error instanceof Error) {
59
+ throw {
60
+ error: error
61
+ };
62
+ }
63
+
64
+ return Promise.resolve(error.json()).then(function (json) {
65
+ throw {
66
+ success: false,
67
+ message: json.message
68
+ };
69
+ });
70
+ }));
71
+ } catch (e) {
72
+ return Promise.reject(e);
73
+ }
74
+ };
75
+
76
+ var HTTPClient = function HTTPClient(domain, securityCtx) {
77
+ return {
78
+ GET: function GET(URL) {
79
+ var token = securityCtx ? securityCtx.token() : null;
80
+ return fetchAsync('GET', domain + URL, undefined, token);
81
+ },
82
+ POST: function POST(URL, body) {
83
+ var token = securityCtx ? securityCtx.token() : null;
84
+ return fetchAsync('POST', domain + URL, body, token);
85
+ },
86
+ PUT: function PUT(URL, body) {
87
+ var token = securityCtx ? securityCtx.token() : null;
88
+ return fetchAsync('PUT', domain + URL, body, token);
89
+ },
90
+ PATCH: function PATCH(URL, body) {
91
+ var token = securityCtx ? securityCtx.token() : null;
92
+ return fetchAsync('PATCH', domain + URL, body, token);
93
+ },
94
+ DELETE: function DELETE(URL) {
95
+ var token = securityCtx ? securityCtx.token() : null;
96
+ return fetchAsync('DELETE', domain + URL, undefined, token);
97
+ }
98
+ };
99
+ };
100
+
101
+ /**
102
+ * Session store
103
+ * implements securityCtx methods
104
+ */
105
+ var SESSION_NAME = process.env.REACT_APP_SESSION || window && window.SESSION ? window.SESSION : 'YWANA-CORE6-SESSION';
106
+ var Session = {
107
+ token: function token() {
108
+ var item = sessionStorage.getItem(SESSION_NAME);
109
+ var json = item ? JSON.parse(sessionStorage.getItem(SESSION_NAME)) : {};
110
+ return json.token;
111
+ },
112
+ me: function me() {
113
+ var item = sessionStorage.getItem(SESSION_NAME);
114
+ var json = item ? JSON.parse(sessionStorage.getItem(SESSION_NAME)) : {};
115
+ return json.me;
116
+ },
117
+ init: function init(token, me) {
118
+ sessionStorage.setItem(SESSION_NAME, JSON.stringify({
119
+ token: token,
120
+ me: me
121
+ }));
122
+ },
123
+ refresh: function refresh(token) {
124
+ var me = this.me();
125
+ sessionStorage.setItem(SESSION_NAME, JSON.stringify({
126
+ token: token,
127
+ me: me
128
+ }));
129
+ },
130
+ isLoggedIn: function isLoggedIn() {
131
+ return !!sessionStorage.DSSession;
132
+ },
133
+ logout: function logout() {
134
+ sessionStorage.removeItem(SESSION_NAME);
135
+ }
136
+ };
137
+
138
+ /**
139
+ * Icon
140
+ */
141
+
142
+ var Icon = function Icon(_ref) {
143
+ var icon = _ref.icon,
144
+ _ref$size = _ref.size,
145
+ size = _ref$size === void 0 ? "normal" : _ref$size,
146
+ _ref$clickable = _ref.clickable,
147
+ clickable = _ref$clickable === void 0 ? false : _ref$clickable,
148
+ action = _ref.action;
149
+
150
+ function click(event) {
151
+ event.stopPropagation();
152
+ event.preventDefault();
153
+ if (action) action();
154
+ }
155
+
156
+ var clicker = clickable ? "clickable" : "";
157
+ return /*#__PURE__*/React.createElement("i", {
158
+ className: "icon " + size + " " + clicker + " material-icons",
159
+ onClick: click
160
+ }, icon);
161
+ };
162
+
163
+ /**
164
+ * HTML Button
165
+ */
166
+
167
+ var Button = function Button(_ref) {
168
+ var label = _ref.label,
169
+ icon = _ref.icon,
170
+ action = _ref.action,
171
+ _ref$disabled = _ref.disabled,
172
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
173
+ outlined = _ref.outlined,
174
+ raised = _ref.raised;
175
+
176
+ function click(event) {
177
+ if (!disabled) {
178
+ event.stopPropagation();
179
+ event.preventDefault();
180
+ if (action) action();
181
+ }
182
+ }
183
+
184
+ var style = raised ? 'raised' : outlined ? 'outlined' : 'normal';
185
+ if (disabled) style = style + " disabled";
186
+ return /*#__PURE__*/React.createElement("button", {
187
+ className: "btn " + style,
188
+ onClick: click
189
+ }, icon ? /*#__PURE__*/React.createElement(Icon, {
190
+ icon: icon,
191
+ size: "small"
192
+ }) : null, /*#__PURE__*/React.createElement("span", null, label));
193
+ };
194
+
195
+ /**
196
+ * Site Context
197
+ */
198
+
199
+ var SiteContext = React.createContext({});
200
+
201
+ /**
202
+ * Text
203
+ */
204
+
205
+ var Text = function Text(_ref) {
206
+ var children = _ref.children;
207
+ var site = useContext(SiteContext);
208
+
209
+ if (site) {
210
+ var lang = site.lang,
211
+ _site$dictionary = site.dictionary,
212
+ dictionary = _site$dictionary === void 0 ? {} : _site$dictionary;
213
+ var term = dictionary[children];
214
+ var text = term ? term[lang] : children;
215
+ return text ? /*#__PURE__*/React.createElement("span", null, text) : '';
216
+ }
217
+
218
+ return children ? /*#__PURE__*/React.createElement("span", null, children) : '';
219
+ };
220
+
221
+ /**
222
+ * CheckBox
223
+ */
224
+
225
+ var CheckBox = function CheckBox(props) {
226
+ var id = props.id,
227
+ label = props.label,
228
+ placeholder = props.placeholder,
229
+ value = props.value,
230
+ onChange = props.onChange;
231
+
232
+ function change(event) {
233
+ var value = event.target.checked;
234
+ if (onChange) onChange(id, value);
235
+ }
236
+
237
+ var labelTxt = /*#__PURE__*/React.createElement(Text, null, label);
238
+ console.log(label, value);
239
+ return value === true ? /*#__PURE__*/React.createElement("div", {
240
+ className: "checkbox",
241
+ key: id + "1"
242
+ }, /*#__PURE__*/React.createElement("input", {
243
+ id: id,
244
+ type: "checkbox",
245
+ placeholder: placeholder,
246
+ checked: true,
247
+ value: value,
248
+ onChange: change
249
+ }), /*#__PURE__*/React.createElement("span", {
250
+ "class": "checkmark"
251
+ }), /*#__PURE__*/React.createElement("label", {
252
+ htmlFor: id
253
+ }, labelTxt)) : /*#__PURE__*/React.createElement("div", {
254
+ className: "checkbox",
255
+ key: id + "0"
256
+ }, /*#__PURE__*/React.createElement("input", {
257
+ id: id,
258
+ type: "checkbox",
259
+ placeholder: placeholder,
260
+ value: value,
261
+ onChange: change
262
+ }), /*#__PURE__*/React.createElement("span", {
263
+ "class": "checkmark"
264
+ }), /*#__PURE__*/React.createElement("label", {
265
+ htmlFor: id
266
+ }, labelTxt));
267
+ };
268
+
269
+ /**
270
+ * Chip
271
+ */
272
+
273
+ var Chip = function Chip(props) {
274
+ var id = props.id,
275
+ icon = props.icon,
276
+ label = props.label,
277
+ action = props.action,
278
+ outlined = props.outlined,
279
+ selected = props.selected,
280
+ onSelect = props.onSelect;
281
+
282
+ function select(event) {
283
+ event.stopPropagation();
284
+ event.preventDefault();
285
+ if (onSelect) onSelect(id);
286
+ }
287
+
288
+ var style = outlined ? "outlined" : "normal";
289
+ if (selected) style = style + " selected";
290
+ return /*#__PURE__*/React.createElement("div", {
291
+ className: "chip " + style,
292
+ onClick: select
293
+ }, icon ? /*#__PURE__*/React.createElement(Icon, {
294
+ icon: icon,
295
+ size: "small"
296
+ }) : null, /*#__PURE__*/React.createElement("main", null, /*#__PURE__*/React.createElement(Text, null, label)), action ? /*#__PURE__*/React.createElement("span", {
297
+ className: "meta"
298
+ }, action) : null);
299
+ };
300
+ /**
301
+ * Chips
302
+ */
303
+
304
+ var Chips = function Chips(props) {
305
+ var children = props.children;
306
+ return /*#__PURE__*/React.createElement("div", {
307
+ className: "chips"
308
+ }, children);
309
+ };
310
+
311
+ /**
312
+ * Form
313
+ */
314
+
315
+ var Form = function Form(_ref) {
316
+ var title = _ref.title,
317
+ _ref$columns = _ref.columns,
318
+ columns = _ref$columns === void 0 ? 1 : _ref$columns,
319
+ children = _ref.children,
320
+ outlined = _ref.outlined,
321
+ onChange = _ref.onChange;
322
+
323
+ var _useState = useState([]),
324
+ fields = _useState[0],
325
+ setFields = _useState[1];
326
+
327
+ var isEmpty = function isEmpty(value) {
328
+ return value === void 0 || value === null || value === '';
329
+ };
330
+
331
+ useEffect(function () {
332
+ var initFields = React.Children.toArray(children).filter(function (child) {
333
+ return child !== null && child !== '';
334
+ }).map(function (child) {
335
+ var _child$props = child.props,
336
+ id = _child$props.id,
337
+ value = _child$props.value,
338
+ _child$props$required = _child$props.required,
339
+ required = _child$props$required === void 0 ? false : _child$props$required,
340
+ validation = _child$props.validation;
341
+ var valid = required ? validation ? validation(value) : !isEmpty(value) : true;
342
+ return {
343
+ id: id,
344
+ value: value,
345
+ required: required,
346
+ validation: validation,
347
+ valid: valid
348
+ };
349
+ }).filter(function (field) {
350
+ return field.id !== void 0;
351
+ });
352
+ setFields(initFields);
353
+ }, []);
354
+ useEffect(function () {
355
+ if (onChange) {
356
+ var valid = fields.every(function (_ref2) {
357
+ var valid = _ref2.valid;
358
+ return valid === true;
359
+ });
360
+ var form = fields.reduce(function (form, _ref3) {
361
+ var id = _ref3.id,
362
+ value = _ref3.value;
363
+ if (value || value === false) form[id] = value;
364
+ return form;
365
+ }, {});
366
+ onChange(form, valid);
367
+ }
368
+ }, [fields]);
369
+
370
+ var changeField = function changeField(id, value) {
371
+ var field = fields.find(function (f) {
372
+ return f.id === id;
373
+ });
374
+
375
+ if (field) {
376
+ var valid = field.required ? field.validation ? field.validation(value) : !isEmpty(value) : true;
377
+ Object.assign(field, {
378
+ value: value,
379
+ valid: valid
380
+ });
381
+ setFields(fields.slice());
382
+ }
383
+ };
384
+
385
+ var items = React.Children.toArray(children).filter(function (child) {
386
+ return child !== null && child !== '';
387
+ }).map(function (child) {
388
+ var _child$props$span = child.props.span,
389
+ span = _child$props$span === void 0 ? 1 : _child$props$span;
390
+ var field = React.cloneElement(child, {
391
+ onChange: changeField,
392
+ outlined: !!outlined
393
+ });
394
+ var columnLayout = {
395
+ gridColumn: "span " + span
396
+ };
397
+ return /*#__PURE__*/React.createElement(FieldWrapper, {
398
+ style: columnLayout
399
+ }, field);
400
+ });
401
+ var gridLayout = {
402
+ gridTemplateColumns: "repeat(" + columns + ", 1fr)"
403
+ };
404
+ return /*#__PURE__*/React.createElement(Fragment, null, title ? /*#__PURE__*/React.createElement("header", {
405
+ className: "form-header"
406
+ }, /*#__PURE__*/React.createElement(Text, {
407
+ use: "headline6"
408
+ }, title)) : '', /*#__PURE__*/React.createElement("form", {
409
+ className: "form-grid",
410
+ style: gridLayout
411
+ }, items));
412
+ };
413
+ /**
414
+ * Form Field Wrapper
415
+ */
416
+
417
+ var FieldWrapper = function FieldWrapper(_ref4) {
418
+ var style = _ref4.style,
419
+ children = _ref4.children;
420
+ return /*#__PURE__*/React.createElement("div", {
421
+ className: "field-wrapper",
422
+ style: style
423
+ }, children);
424
+ };
425
+
426
+ /**
427
+ * Header
428
+ */
429
+
430
+ var Header = function Header(props) {
431
+ var caption = props.caption ? 'caption' : '';
432
+ var prominent = props.prominent ? 'prominent' : '';
433
+ var dense = props.dense ? 'dense' : '';
434
+ var theme = props.primary ? 'primary' : '';
435
+ theme = props.secondary ? 'secondary' : theme;
436
+ var icon = props.icon ? /*#__PURE__*/React.createElement(Icon, {
437
+ icon: props.icon,
438
+ clickable: props.clickable,
439
+ action: props.action
440
+ }) : '';
441
+ icon = props.iconSrc ? /*#__PURE__*/React.createElement("img", {
442
+ className: "header-icon",
443
+ src: props.iconSrc
444
+ }) : icon;
445
+ var style = props.img ? {
446
+ backgroundImage: "url(" + props.img + ")"
447
+ } : {};
448
+ var title = /*#__PURE__*/React.createElement(Text, null, props.title);
449
+ return /*#__PURE__*/React.createElement("header", {
450
+ className: "header " + caption + " " + prominent + " " + dense + " " + theme + " " + props.className,
451
+ style: style
452
+ }, icon, props.title ? /*#__PURE__*/React.createElement("label", null, title) : null, /*#__PURE__*/React.createElement("span", {
453
+ className: "actions"
454
+ }, props.children));
455
+ };
456
+
457
+ function _extends() {
458
+ _extends = Object.assign || function (target) {
459
+ for (var i = 1; i < arguments.length; i++) {
460
+ var source = arguments[i];
461
+
462
+ for (var key in source) {
463
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
464
+ target[key] = source[key];
465
+ }
466
+ }
467
+ }
468
+
469
+ return target;
470
+ };
471
+
472
+ return _extends.apply(this, arguments);
473
+ }
474
+
475
+ /**
476
+ * List
477
+ */
478
+
479
+ var List = function List(props) {
480
+ var _props$items = props.items,
481
+ items = _props$items === void 0 ? [] : _props$items,
482
+ children = props.children,
483
+ onSelect = props.onSelect,
484
+ groupBy = props.groupBy;
485
+
486
+ function select(id) {
487
+ if (onSelect) onSelect(id);
488
+ }
489
+
490
+ return groupBy ? /*#__PURE__*/React.createElement(GroupedList, _extends({}, props, {
491
+ onSelect: select
492
+ })) : /*#__PURE__*/React.createElement("div", {
493
+ className: "list"
494
+ }, /*#__PURE__*/React.createElement("ul", null, items.map(function (item) {
495
+ return /*#__PURE__*/React.createElement(ListItem, {
496
+ key: item.id,
497
+ item: item,
498
+ onSelect: select
499
+ });
500
+ })), children);
501
+ };
502
+ /**
503
+ * Grouped List
504
+ */
505
+
506
+ var GroupedList = function GroupedList(props) {
507
+ var _props$items2 = props.items,
508
+ items = _props$items2 === void 0 ? [] : _props$items2,
509
+ children = props.children,
510
+ onSelect = props.onSelect,
511
+ groupBy = props.groupBy;
512
+ var groups = items.reduce(function (groups, item) {
513
+ var group = groups.find(function (g) {
514
+ return g.name === item.content[groupBy];
515
+ });
516
+
517
+ if (!group) {
518
+ group = {
519
+ name: item.content[groupBy],
520
+ items: []
521
+ };
522
+ groups.push(group);
523
+ }
524
+
525
+ group.items.push(item);
526
+ return groups;
527
+ }, []);
528
+ return /*#__PURE__*/React.createElement("div", {
529
+ className: "list"
530
+ }, groups.map(function (group) {
531
+ return /*#__PURE__*/React.createElement(Fragment, {
532
+ key: group.name
533
+ }, /*#__PURE__*/React.createElement("header", {
534
+ key: group.name + "-header"
535
+ }, /*#__PURE__*/React.createElement(Text, null, group.name)), /*#__PURE__*/React.createElement("ul", {
536
+ key: group.name + "-ul"
537
+ }, group.items.map(function (item) {
538
+ return /*#__PURE__*/React.createElement(ListItem, {
539
+ key: item.id,
540
+ item: item,
541
+ onSelect: onSelect
542
+ });
543
+ })));
544
+ }), children);
545
+ };
546
+ /**
547
+ * List Item
548
+ */
549
+
550
+
551
+ var ListItem = function ListItem(_ref) {
552
+ var item = _ref.item,
553
+ onSelect = _ref.onSelect;
554
+ var id = item.id,
555
+ icon = item.icon,
556
+ line1 = item.line1,
557
+ line2 = item.line2,
558
+ meta = item.meta;
559
+
560
+ function select() {
561
+ if (onSelect) onSelect(id);
562
+ }
563
+
564
+ return /*#__PURE__*/React.createElement("li", {
565
+ id: id,
566
+ onClick: select
567
+ }, icon ? /*#__PURE__*/React.createElement(Icon, {
568
+ icon: icon,
569
+ size: "small"
570
+ }) : null, /*#__PURE__*/React.createElement("main", null, /*#__PURE__*/React.createElement("div", {
571
+ className: "primary-line"
572
+ }, /*#__PURE__*/React.createElement(Text, null, line1)), line2 ? /*#__PURE__*/React.createElement("div", {
573
+ className: "secondary-line"
574
+ }, /*#__PURE__*/React.createElement(Text, null, line2)) : null), meta ? /*#__PURE__*/React.createElement("div", {
575
+ className: "meta"
576
+ }, meta) : null);
577
+ };
578
+
579
+ /**
580
+ * Page Context
581
+ */
582
+
583
+ var MenuContext = React.createContext({});
584
+ /**
585
+ * Menu
586
+ **/
587
+
588
+ var Menu = function Menu(props) {
589
+ var children = props.children;
590
+ return /*#__PURE__*/React.createElement("ul", null, children);
591
+ };
592
+ /**
593
+ * Menu Icon
594
+ */
595
+
596
+ var MenuIcon = function MenuIcon(props) {
597
+ var _props$icon = props.icon,
598
+ icon = _props$icon === void 0 ? "more_vert" : _props$icon,
599
+ children = props.children,
600
+ align = props.align;
601
+
602
+ var _useState = useState(false),
603
+ open = _useState[0],
604
+ setOpen = _useState[1];
605
+
606
+ function toggle() {
607
+ setOpen(!open);
608
+ }
609
+
610
+ return /*#__PURE__*/React.createElement(MenuContext.Provider, {
611
+ value: [open, setOpen]
612
+ }, /*#__PURE__*/React.createElement("div", {
613
+ className: "menu-icon"
614
+ }, /*#__PURE__*/React.createElement(Icon, {
615
+ icon: icon,
616
+ clickable: true,
617
+ action: toggle
618
+ }), open ? /*#__PURE__*/React.createElement("menu", {
619
+ className: "" + align
620
+ }, children) : null, open ? /*#__PURE__*/React.createElement("div", {
621
+ className: "overlay",
622
+ onClick: toggle
623
+ }) : null));
624
+ };
625
+ /**
626
+ * Menu Item
627
+ */
628
+
629
+ var MenuItem = function MenuItem(props) {
630
+ var icon = props.icon,
631
+ label = props.label,
632
+ meta = props.meta,
633
+ onSelect = props.onSelect;
634
+
635
+ var _useContext = useContext(MenuContext),
636
+ setOpen = _useContext[1];
637
+
638
+ function select() {
639
+ if (onSelect) onSelect();
640
+ setOpen(false);
641
+ }
642
+
643
+ return /*#__PURE__*/React.createElement("li", {
644
+ className: "menu-item",
645
+ onClick: select
646
+ }, icon ? /*#__PURE__*/React.createElement(Icon, {
647
+ icon: icon
648
+ }) : null, /*#__PURE__*/React.createElement("label", null, label), meta ? /*#__PURE__*/React.createElement("div", {
649
+ className: "meta"
650
+ }, meta) : null);
651
+ };
652
+ /**
653
+ * Menu Separator
654
+ */
655
+
656
+ var MenuSeparator = function MenuSeparator(props) {
657
+ return /*#__PURE__*/React.createElement("li", null, "menuSeparator");
658
+ };
659
+
660
+ /**
661
+ * Circular Progress
662
+ */
663
+
664
+ var CircularProgress = function CircularProgress(props) {
665
+ return /*#__PURE__*/React.createElement("div", {
666
+ className: "circular-progress"
667
+ }, /*#__PURE__*/React.createElement(Icon, {
668
+ icon: "refresh",
669
+ size: "small"
670
+ }));
671
+ };
672
+ /**
673
+ * Linear Progress
674
+ */
675
+
676
+ var LinearProgress = function LinearProgress(props) {
677
+ var _props$progress = props.progress,
678
+ progress = _props$progress === void 0 ? 0 : _props$progress,
679
+ _props$max = props.max,
680
+ max = _props$max === void 0 ? 100 : _props$max;
681
+ return /*#__PURE__*/React.createElement("div", {
682
+ className: "linear-progress"
683
+ }, /*#__PURE__*/React.createElement("progress", {
684
+ value: progress,
685
+ max: max
686
+ }));
687
+ };
688
+
689
+ /**
690
+ * Property
691
+ */
692
+
693
+ var Property = function Property(props) {
694
+ var name = props.name,
695
+ value = props.value;
696
+ return /*#__PURE__*/React.createElement("div", {
697
+ className: "property"
698
+ }, /*#__PURE__*/React.createElement("div", {
699
+ className: "property-name"
700
+ }, name), /*#__PURE__*/React.createElement("div", {
701
+ className: "property-value"
702
+ }, value));
703
+ };
704
+
705
+ /**
706
+ * Radio Button
707
+ */
708
+
709
+ var RadioButton = function RadioButton(props) {
710
+ var id = props.id,
711
+ name = props.name,
712
+ label = props.label,
713
+ placeholder = props.placeholder,
714
+ value = props.value,
715
+ onChange = props.onChange;
716
+
717
+ function change(event) {
718
+ var value = event.target.value;
719
+ if (onChange) onChange(id, value);
720
+ }
721
+
722
+ var labelTxt = /*#__PURE__*/React.createElement(Text, null, label);
723
+ return /*#__PURE__*/React.createElement("div", {
724
+ className: "radio"
725
+ }, /*#__PURE__*/React.createElement("input", {
726
+ id: id,
727
+ name: name,
728
+ type: "radio",
729
+ placeholder: placeholder,
730
+ value: value,
731
+ onClick: change
732
+ }), /*#__PURE__*/React.createElement("span", {
733
+ "class": "checkmark"
734
+ }), /*#__PURE__*/React.createElement("label", {
735
+ htmlFor: id
736
+ }, labelTxt));
737
+ };
738
+
739
+ /**
740
+ * Section
741
+ */
742
+
743
+ var Section = function Section(props) {
744
+ var icon = props.icon,
745
+ _props$title = props.title,
746
+ title = _props$title === void 0 ? '' : _props$title,
747
+ _props$canCollapse = props.canCollapse,
748
+ canCollapse = _props$canCollapse === void 0 ? true : _props$canCollapse,
749
+ _props$open = props.open,
750
+ open = _props$open === void 0 ? false : _props$open,
751
+ actions = props.actions,
752
+ children = props.children,
753
+ className = props.className;
754
+
755
+ var _useState = useState(open),
756
+ isOpen = _useState[0],
757
+ setOpen = _useState[1];
758
+
759
+ useEffect(function () {
760
+ setOpen(open);
761
+ }, [open]);
762
+
763
+ var toggle = function toggle() {
764
+ setOpen(!open);
765
+ };
766
+
767
+ return /*#__PURE__*/React.createElement("section", {
768
+ className: "section2 " + className
769
+ }, /*#__PURE__*/React.createElement(Header, {
770
+ icon: {
771
+ icon: icon
772
+ },
773
+ title: title
774
+ }, actions, canCollapse ? /*#__PURE__*/React.createElement(Icon, {
775
+ icon: "expand_more",
776
+ onIcon: "expand_less",
777
+ clickable: true,
778
+ action: toggle
779
+ }) : ''), isOpen ? /*#__PURE__*/React.createElement("main", null, children) : '');
780
+ };
781
+
782
+ /**
783
+ * Tabs
784
+ */
785
+
786
+ var Tabs = function Tabs(props) {
787
+ var children = props.children,
788
+ selected = props.selected,
789
+ onChange = props.onChange;
790
+ var tabs = React.Children.map(children, function (child, index) {
791
+ function select() {
792
+ if (onChange) onChange(index);
793
+ }
794
+
795
+ return React.cloneElement(child, {
796
+ selected: index === selected,
797
+ onSelect: select
798
+ });
799
+ });
800
+ return /*#__PURE__*/React.createElement("div", {
801
+ "class": "tabs"
802
+ }, tabs, /*#__PURE__*/React.createElement("div", {
803
+ "class": "tab-filler"
804
+ }));
805
+ };
806
+ /**
807
+ * Tab
808
+ */
809
+
810
+ var Tab = function Tab(props) {
811
+ var label = props.label,
812
+ selected = props.selected,
813
+ actions = props.actions,
814
+ onSelect = props.onSelect;
815
+
816
+ function select() {
817
+ if (onSelect) onSelect();
818
+ }
819
+
820
+ var style = selected ? "selected" : "";
821
+ return /*#__PURE__*/React.createElement("div", {
822
+ className: "tab " + style,
823
+ onClick: select
824
+ }, label, actions ? actions : null);
825
+ };
826
+ /**
827
+ * Stack
828
+ */
829
+
830
+ var Stack = function Stack(props) {
831
+ var _props$selected = props.selected,
832
+ selected = _props$selected === void 0 ? 0 : _props$selected;
833
+ var child = React.Children.toArray(props.children).filter(function (child, index) {
834
+ return index === selected;
835
+ })[0];
836
+ return /*#__PURE__*/React.createElement(Fragment, null, child);
837
+ };
838
+
839
+ /**
840
+ * Text Field
841
+ */
842
+
843
+ var TextField = function TextField(props) {
844
+ var site = useContext(SiteContext);
845
+ var id = props.id,
846
+ _props$type = props.type,
847
+ type = _props$type === void 0 ? 'text' : _props$type,
848
+ label = props.label,
849
+ placeholder = props.placeholder,
850
+ value = props.value,
851
+ outlined = props.outlined,
852
+ _props$readOnly = props.readOnly,
853
+ readOnly = _props$readOnly === void 0 ? false : _props$readOnly,
854
+ onChange = props.onChange,
855
+ onEnter = props.onEnter,
856
+ onClick = props.onClick;
857
+
858
+ function onKeyPress(event) {
859
+ var key = event.charCode ? event.charCode : event.keyCode ? event.keyCode : 0;
860
+
861
+ if (key == 13) {
862
+ onEnter();
863
+ }
864
+ }
865
+
866
+ function change(event) {
867
+ event.stopPropagation();
868
+ event.preventDefault();
869
+ var value = event.target.value;
870
+ if (onChange) onChange(id, value);
871
+ }
872
+
873
+ function focus() {
874
+ if (site) {
875
+ site.changeFocus({
876
+ lose: function lose() {// DO NOTHING
877
+ }
878
+ });
879
+ }
880
+ }
881
+
882
+ var borderStyle = outlined ? "textfield-outlined" : "textfield";
883
+ var labelStyle = label ? "" : "no-label";
884
+ var style = labelStyle + " " + borderStyle;
885
+ var labelTxt = /*#__PURE__*/React.createElement(Text, null, label);
886
+ return /*#__PURE__*/React.createElement("div", {
887
+ className: "" + style,
888
+ onClick: onClick
889
+ }, /*#__PURE__*/React.createElement("input", {
890
+ id: id,
891
+ type: type,
892
+ placeholder: placeholder,
893
+ value: value,
894
+ required: true,
895
+ onChange: change,
896
+ onKeyDown: onKeyPress,
897
+ onFocus: focus,
898
+ readOnly: readOnly
899
+ }), /*#__PURE__*/React.createElement("span", {
900
+ className: "bar"
901
+ }), label ? /*#__PURE__*/React.createElement("label", null, labelTxt) : null);
902
+ };
903
+ /**
904
+ * Dropdown
905
+ */
906
+
907
+ var DropDown = function DropDown(props) {
908
+ var site = useContext(SiteContext);
909
+ var id = props.id,
910
+ _props$options = props.options,
911
+ options = _props$options === void 0 ? [] : _props$options,
912
+ value = props.value,
913
+ onChange = props.onChange;
914
+
915
+ var _useState = useState(false),
916
+ open = _useState[0],
917
+ setOpen = _useState[1];
918
+
919
+ var _useState2 = useState(),
920
+ label = _useState2[0],
921
+ setLabel = _useState2[1];
922
+
923
+ useEffect(function () {
924
+ if (Array.isArray(options)) {
925
+ var option = options.find(function (option) {
926
+ return option.value === value;
927
+ });
928
+ if (option) setLabel(option.label);
929
+ }
930
+ }, [value]);
931
+
932
+ function toggle() {
933
+ if (site) {
934
+ site.changeFocus({
935
+ lose: function lose() {
936
+ setOpen(false);
937
+ }
938
+ });
939
+ }
940
+
941
+ setOpen(!open);
942
+ }
943
+
944
+ function select(event) {
945
+ var next = event.target.getAttribute("value");
946
+ var option = options.find(function (option) {
947
+ return option.value === next;
948
+ });
949
+ if (onChange) onChange(id, next);
950
+ setLabel(option.label);
951
+ setOpen(false);
952
+ }
953
+
954
+ return /*#__PURE__*/React.createElement("div", {
955
+ className: "dropdown"
956
+ }, /*#__PURE__*/React.createElement(TextField, _extends({}, props, {
957
+ onClick: toggle,
958
+ value: label
959
+ })), /*#__PURE__*/React.createElement(Icon, {
960
+ icon: "expand_more",
961
+ clickable: true,
962
+ size: "small",
963
+ action: toggle
964
+ }), open == true ? /*#__PURE__*/React.createElement("menu", null, /*#__PURE__*/React.createElement("ul", {
965
+ onClick: select
966
+ }, Array.isArray(options) ? options.map(function (option) {
967
+ return /*#__PURE__*/React.createElement("li", {
968
+ key: option.value,
969
+ value: option.value
970
+ }, option.label);
971
+ }) : null)) : null);
972
+ };
973
+
974
+ /**
975
+ * DataTable
976
+ */
977
+
978
+ var DataTable = function DataTable(props) {
979
+ var _props$columns = props.columns,
980
+ columns = _props$columns === void 0 ? [] : _props$columns,
981
+ _props$rows = props.rows,
982
+ rows = _props$rows === void 0 ? [] : _props$rows,
983
+ onRowSelection = props.onRowSelection,
984
+ onSort = props.onSort,
985
+ editable = props.editable,
986
+ outlined = props.outlined;
987
+
988
+ var _useState = useState({}),
989
+ sortDir = _useState[0];
990
+
991
+ function multiSort(array, sortObject) {
992
+ if (sortObject === void 0) {
993
+ sortObject = {};
994
+ }
995
+
996
+ var sortKeys = Object.keys(sortObject);
997
+
998
+ if (!sortKeys.length) {
999
+ return array;
1000
+ }
1001
+
1002
+ var keySort = function keySort(a, b, direction) {
1003
+ direction = direction !== null ? direction : 1;
1004
+
1005
+ if (a === b) {
1006
+ // If the values are the same, do not switch positions.
1007
+ return 0;
1008
+ } // If b > a, multiply by -1 to get the reverse direction.
1009
+
1010
+
1011
+ return a > b ? direction : -1 * direction;
1012
+ };
1013
+
1014
+ return array.sort(function (a, b) {
1015
+ var sorted = 0;
1016
+ var index = 0; // Loop until sorted (-1 or 1) or until the sort keys have been processed.
1017
+
1018
+ while (sorted === 0 && index < sortKeys.length) {
1019
+ var key = sortKeys[index];
1020
+
1021
+ if (key) {
1022
+ var direction = sortObject[key];
1023
+ sorted = keySort(a[key], b[key], direction);
1024
+ index++;
1025
+ }
1026
+ }
1027
+
1028
+ return sorted;
1029
+ });
1030
+ }
1031
+
1032
+ function select(row, event) {
1033
+ if (onRowSelection) onRowSelection(row, event);
1034
+ }
1035
+
1036
+ function sort(dragged, dropped) {
1037
+ if (onSort) onSort(dragged, dropped);
1038
+ }
1039
+
1040
+ var style = outlined ? "outlined" : "";
1041
+ return /*#__PURE__*/React.createElement("div", {
1042
+ className: "datatable8 " + style
1043
+ }, /*#__PURE__*/React.createElement("table", null, /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, columns.map(function (_ref) {
1044
+ var label = _ref.label,
1045
+ sortable = _ref.sortable;
1046
+ return /*#__PURE__*/React.createElement("th", null, /*#__PURE__*/React.createElement(Text, null, label), sortable ? /*#__PURE__*/React.createElement(Icon, {
1047
+ icon: "arrow_up",
1048
+ size: "small",
1049
+ clickable: true
1050
+ }) : null);
1051
+ }))), /*#__PURE__*/React.createElement("tbody", null, multiSort(rows, sortDir).map(function (row) {
1052
+ return /*#__PURE__*/React.createElement(DataTableRow, {
1053
+ key: row.id,
1054
+ row: row,
1055
+ columns: columns,
1056
+ onSelect: select,
1057
+ onDrop: sort,
1058
+ editable: editable
1059
+ });
1060
+ }))));
1061
+ };
1062
+ /**
1063
+ * DataTable Row
1064
+ */
1065
+
1066
+ var DataTableRow = function DataTableRow(props) {
1067
+ var row = props.row,
1068
+ _props$columns2 = props.columns,
1069
+ columns = _props$columns2 === void 0 ? [] : _props$columns2,
1070
+ onSelect = props.onSelect,
1071
+ editable = props.editable;
1072
+
1073
+ var _useState2 = useState(false),
1074
+ isInfoOpen = _useState2[0],
1075
+ toggleInfo = _useState2[1];
1076
+
1077
+ var infoIcon = isInfoOpen ? 'expand_more' : 'expand_less';
1078
+
1079
+ var isFunction = function isFunction(value) {
1080
+ return value && (Object.prototype.toString.call(value) === "[object Function]" || "function" === typeof value || value instanceof Function);
1081
+ };
1082
+
1083
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("tr", {
1084
+ onClick: function onClick(ev) {
1085
+ return onSelect(row, ev);
1086
+ }
1087
+ }, columns.map(function (column) {
1088
+ return /*#__PURE__*/React.createElement(DataTableCell, {
1089
+ row: row,
1090
+ column: column,
1091
+ cell: row[column.id],
1092
+ editable: editable
1093
+ });
1094
+ }), row.info ? /*#__PURE__*/React.createElement(Icon, {
1095
+ icon: infoIcon,
1096
+ clickable: true,
1097
+ action: function action() {
1098
+ return toggleInfo(!isInfoOpen);
1099
+ }
1100
+ }) : null), row.info && isInfoOpen ? /*#__PURE__*/React.createElement("tr", {
1101
+ className: "table-row-info"
1102
+ }, isFunction(row.info) ? row.info() : row.info) : null);
1103
+ };
1104
+ /**
1105
+ * DataTable Cell
1106
+ */
1107
+
1108
+
1109
+ var DataTableCell = function DataTableCell(_ref2) {
1110
+ var row = _ref2.row,
1111
+ column = _ref2.column,
1112
+ cell = _ref2.cell,
1113
+ editable = _ref2.editable;
1114
+
1115
+ var render = function render(type) {
1116
+ var id = column.id,
1117
+ _column$disabled = column.disabled,
1118
+ disabled = _column$disabled === void 0 ? false : _column$disabled,
1119
+ min = column.min,
1120
+ max = column.max,
1121
+ _onChange = column.onChange,
1122
+ options = column.options;
1123
+
1124
+ if (editable && _onChange) {
1125
+ switch (type) {
1126
+ case "ICON":
1127
+ return /*#__PURE__*/React.createElement(Icon, {
1128
+ icon: cell
1129
+ });
1130
+
1131
+ case "BOOLEAN":
1132
+ return /*#__PURE__*/React.createElement(CheckBox, {
1133
+ id: id,
1134
+ value: cell,
1135
+ onChange: function onChange(id, value) {
1136
+ return _onChange(row.id, id, value);
1137
+ },
1138
+ disabled: disabled
1139
+ });
1140
+
1141
+ case "Boolean":
1142
+ return /*#__PURE__*/React.createElement(CheckBox, {
1143
+ id: id,
1144
+ value: cell,
1145
+ onChange: function onChange(id, value) {
1146
+ return _onChange(row.id, id, value);
1147
+ },
1148
+ disabled: disabled
1149
+ });
1150
+
1151
+ case "SELECTION":
1152
+ return /*#__PURE__*/React.createElement(DropDown, {
1153
+ id: id,
1154
+ value: cell,
1155
+ placeholder: "--Select--",
1156
+ options: options,
1157
+ onChange: function onChange(id, value) {
1158
+ return _onChange(row.id, id, value);
1159
+ }
1160
+ });
1161
+
1162
+ case "CHECK":
1163
+ return /*#__PURE__*/React.createElement(CheckBox, {
1164
+ id: id,
1165
+ value: cell,
1166
+ onChange: function onChange(id, value) {
1167
+ return _onChange(row.id, id, value);
1168
+ },
1169
+ disabled: row.disabled
1170
+ });
1171
+
1172
+ case "CHECKABLE":
1173
+ return cell && cell.value ? /*#__PURE__*/React.createElement(CheckBox, {
1174
+ id: id,
1175
+ value: cell.checked || false,
1176
+ label: cell.value,
1177
+ onChange: function onChange(id, checked) {
1178
+ return _onChange(row.id, id, cell.value, checked, cell);
1179
+ }
1180
+ }) : '';
1181
+
1182
+ case "TEXTFIELD":
1183
+ return /*#__PURE__*/React.createElement(TextField, {
1184
+ id: id,
1185
+ value: cell,
1186
+ onChange: function onChange(id, value) {
1187
+ return _onChange(row.id, id, value);
1188
+ }
1189
+ });
1190
+
1191
+ case "String":
1192
+ return /*#__PURE__*/React.createElement(StringCellEditor, {
1193
+ id: id,
1194
+ value: cell,
1195
+ options: options,
1196
+ onChange: function onChange(id, value) {
1197
+ return _onChange(row.id, id, value);
1198
+ }
1199
+ });
1200
+
1201
+ case "Number":
1202
+ return /*#__PURE__*/React.createElement(TextField, {
1203
+ id: id,
1204
+ type: "number",
1205
+ value: cell,
1206
+ min: min,
1207
+ max: max,
1208
+ onChange: function onChange(id, value) {
1209
+ return _onChange(row.id, id, value);
1210
+ }
1211
+ });
1212
+
1213
+ default:
1214
+ return cell;
1215
+ }
1216
+ } else {
1217
+ switch (type) {
1218
+ case "ICON":
1219
+ return /*#__PURE__*/React.createElement(Icon, {
1220
+ icon: cell
1221
+ });
1222
+
1223
+ case "Boolean":
1224
+ return /*#__PURE__*/React.createElement(BooleanCellViewer, {
1225
+ id: id,
1226
+ value: cell
1227
+ });
1228
+
1229
+ case "String":
1230
+ return /*#__PURE__*/React.createElement(StringCellViewer, {
1231
+ id: id,
1232
+ value: cell,
1233
+ options: options
1234
+ });
1235
+
1236
+ default:
1237
+ return cell;
1238
+ }
1239
+ }
1240
+ };
1241
+
1242
+ return /*#__PURE__*/React.createElement("td", {
1243
+ className: column.id
1244
+ }, render(column.type));
1245
+ };
1246
+ /**
1247
+ * Boolean Cell Viewer
1248
+ */
1249
+
1250
+
1251
+ var BooleanCellViewer = function BooleanCellViewer(_ref3) {
1252
+ var _ref3$value = _ref3.value,
1253
+ value = _ref3$value === void 0 ? false : _ref3$value;
1254
+ var icon = value === true ? "check_box" : "check_box_outline_blank";
1255
+ return /*#__PURE__*/React.createElement(Icon, {
1256
+ icon: icon
1257
+ });
1258
+ };
1259
+ /**
1260
+ * String Cell Viewer
1261
+ */
1262
+
1263
+
1264
+ var StringCellViewer = function StringCellViewer(_ref4) {
1265
+ var value = _ref4.value,
1266
+ options = _ref4.options;
1267
+ var option = options ? options.find(function (o) {
1268
+ return o.value === value;
1269
+ }) : null;
1270
+ var text = option ? option.label : value;
1271
+ return /*#__PURE__*/React.createElement("div", {
1272
+ className: "field-editor string-editor"
1273
+ }, text);
1274
+ };
1275
+ /**
1276
+ * String Cell Editor
1277
+ */
1278
+
1279
+
1280
+ var StringCellEditor = function StringCellEditor(_ref5) {
1281
+ var id = _ref5.id,
1282
+ _ref5$value = _ref5.value,
1283
+ value = _ref5$value === void 0 ? '' : _ref5$value,
1284
+ options = _ref5.options,
1285
+ onChange = _ref5.onChange;
1286
+
1287
+ function change(id, value) {
1288
+ if (onChange) onChange(id, value);
1289
+ }
1290
+
1291
+ return /*#__PURE__*/React.createElement("div", {
1292
+ className: "field-editor string-editor"
1293
+ }, options ? /*#__PURE__*/React.createElement(DropDown, {
1294
+ outlined: true,
1295
+ id: id,
1296
+ value: value,
1297
+ onChange: change,
1298
+ options: options
1299
+ }) : /*#__PURE__*/React.createElement(TextField, {
1300
+ outlined: true,
1301
+ id: id,
1302
+ value: value,
1303
+ onChange: change
1304
+ }));
1305
+ };
1306
+
1307
+ /**
1308
+ * Token Field
1309
+ */
1310
+
1311
+ var TokenField = function TokenField(_ref) {
1312
+ var id = _ref.id,
1313
+ label = _ref.label,
1314
+ init = _ref.init,
1315
+ onChange = _ref.onChange;
1316
+ var mounted = useRef(false);
1317
+
1318
+ var _useState = useState(),
1319
+ value = _useState[0],
1320
+ setValue = _useState[1];
1321
+
1322
+ var _useState2 = useState(init),
1323
+ tokens = _useState2[0],
1324
+ setTokens = _useState2[1];
1325
+
1326
+ useEffect(function () {
1327
+ if (mounted.current) {
1328
+ if (onChange) {
1329
+ if (tokens) onChange(id, tokens);
1330
+ }
1331
+ } else {
1332
+ mounted.current = true;
1333
+ }
1334
+ }, [tokens]);
1335
+
1336
+ function remove(index) {
1337
+ var next = tokens.slice();
1338
+ next.splice(index, 1);
1339
+ setTokens(next);
1340
+ }
1341
+
1342
+ function change(event) {
1343
+ var value = event.target.value;
1344
+ setValue(value);
1345
+ }
1346
+
1347
+ function onEnter(event) {
1348
+ if (event.key === 'Enter') {
1349
+ event.preventDefault();
1350
+ event.stopPropagation();
1351
+ var token = event.target.value;
1352
+ var next = tokens.concat(token);
1353
+ setTokens(next);
1354
+ setValue('');
1355
+ }
1356
+
1357
+ if (value === '' && tokens.length > 0 && event.key === 'Backspace') {
1358
+ var _next = tokens.slice(0, -1);
1359
+
1360
+ setTokens(_next);
1361
+ }
1362
+ }
1363
+
1364
+ return /*#__PURE__*/React.createElement("div", {
1365
+ className: "tokenField"
1366
+ }, /*#__PURE__*/React.createElement("label", null, label), tokens.map(function (text, index) {
1367
+ return /*#__PURE__*/React.createElement(Token, {
1368
+ text: text,
1369
+ onDelete: function onDelete() {
1370
+ return remove(index);
1371
+ }
1372
+ });
1373
+ }), /*#__PURE__*/React.createElement("input", {
1374
+ type: "text",
1375
+ value: value,
1376
+ onChange: change,
1377
+ onKeyDown: onEnter
1378
+ }));
1379
+ };
1380
+ /**
1381
+ * Token
1382
+ */
1383
+
1384
+ var Token = function Token(_ref2) {
1385
+ var text = _ref2.text,
1386
+ onDelete = _ref2.onDelete;
1387
+ return /*#__PURE__*/React.createElement("div", {
1388
+ className: "token"
1389
+ }, /*#__PURE__*/React.createElement(Text, {
1390
+ use: "caption",
1391
+ tag: "div"
1392
+ }, text), /*#__PURE__*/React.createElement(Icon, {
1393
+ icon: "close",
1394
+ clickable: true,
1395
+ action: onDelete,
1396
+ size: "small"
1397
+ }));
1398
+ };
1399
+
1400
+ /**
1401
+ * Tree
1402
+ */
1403
+
1404
+ var Tree = function Tree(_ref) {
1405
+ var _ref$nodes = _ref.nodes,
1406
+ nodes = _ref$nodes === void 0 ? [] : _ref$nodes,
1407
+ children = _ref.children;
1408
+ return /*#__PURE__*/React.createElement("div", {
1409
+ className: "tree"
1410
+ }, nodes, children);
1411
+ };
1412
+ /**
1413
+ * Tree Node
1414
+ */
1415
+
1416
+ var TreeNode = function TreeNode(_ref2) {
1417
+ var _ref2$icon = _ref2.icon,
1418
+ icon = _ref2$icon === void 0 ? 'folder' : _ref2$icon,
1419
+ label = _ref2.label,
1420
+ _ref2$open = _ref2.open,
1421
+ open = _ref2$open === void 0 ? false : _ref2$open,
1422
+ children = _ref2.children,
1423
+ actions = _ref2.actions;
1424
+ return /*#__PURE__*/React.createElement("details", {
1425
+ className: "tree-node",
1426
+ open: open
1427
+ }, /*#__PURE__*/React.createElement("summary", {
1428
+ className: "tree-item"
1429
+ }, icon ? /*#__PURE__*/React.createElement(Icon, {
1430
+ icon: icon,
1431
+ size: "small",
1432
+ small: true
1433
+ }) : null, /*#__PURE__*/React.createElement("div", {
1434
+ className: "label"
1435
+ }, label), /*#__PURE__*/React.createElement("div", {
1436
+ className: "actions"
1437
+ }, actions)), children);
1438
+ };
1439
+ /**
1440
+ * Tree Item
1441
+ */
1442
+
1443
+ var TreeItem = function TreeItem(_ref3) {
1444
+ var id = _ref3.id,
1445
+ _ref3$icon = _ref3.icon,
1446
+ icon = _ref3$icon === void 0 ? 'description' : _ref3$icon,
1447
+ label = _ref3.label,
1448
+ actions = _ref3.actions,
1449
+ onSelect = _ref3.onSelect;
1450
+
1451
+ function select() {
1452
+ if (onSelect) onSelect(id);
1453
+ }
1454
+
1455
+ return /*#__PURE__*/React.createElement("div", {
1456
+ className: "tree-item final",
1457
+ onClick: select
1458
+ }, /*#__PURE__*/React.createElement(Icon, {
1459
+ icon: icon,
1460
+ size: "small",
1461
+ small: true
1462
+ }), /*#__PURE__*/React.createElement("div", {
1463
+ className: "label"
1464
+ }, label), /*#__PURE__*/React.createElement("div", {
1465
+ className: "actions"
1466
+ }, actions));
1467
+ };
1468
+
1469
+ /**
1470
+ * Login Box
1471
+ */
1472
+
1473
+ var LoginBox = function LoginBox(_ref) {
1474
+ var logo = _ref.logo,
1475
+ title = _ref.title,
1476
+ _ref$userLabel = _ref.userLabel,
1477
+ userLabel = _ref$userLabel === void 0 ? "User" : _ref$userLabel,
1478
+ _ref$passwordLabel = _ref.passwordLabel,
1479
+ passwordLabel = _ref$passwordLabel === void 0 ? "Password" : _ref$passwordLabel,
1480
+ _ref$loginLabel = _ref.loginLabel,
1481
+ loginLabel = _ref$loginLabel === void 0 ? "Log In" : _ref$loginLabel,
1482
+ onOK = _ref.onOK,
1483
+ _ref$forgotLabel = _ref.forgotLabel,
1484
+ forgotLabel = _ref$forgotLabel === void 0 ? "Forgot Password ?" : _ref$forgotLabel,
1485
+ onForgot = _ref.onForgot,
1486
+ message = _ref.message,
1487
+ loading = _ref.loading;
1488
+
1489
+ var _useState = useState(''),
1490
+ user = _useState[0],
1491
+ setUser = _useState[1];
1492
+
1493
+ var _useState2 = useState(''),
1494
+ password = _useState2[0],
1495
+ setPassword = _useState2[1];
1496
+
1497
+ function canOK() {
1498
+ return user && user.length > 0 && password && password.length > 0;
1499
+ }
1500
+
1501
+ function ok(forcedPwd) {
1502
+ if (onOK && canOK()) onOK(user, forcedPwd || password);
1503
+ }
1504
+
1505
+ function canForgot() {
1506
+ return user && user.length > 0;
1507
+ }
1508
+
1509
+ function forgot() {
1510
+ if (onForgot) onForgot(user);
1511
+ }
1512
+
1513
+ function tx(txt) {
1514
+ return /*#__PURE__*/React.createElement(Text, null, txt);
1515
+ }
1516
+
1517
+ function changeUser(id, value) {
1518
+ setUser(value);
1519
+ }
1520
+
1521
+ function changePassword(id, value) {
1522
+ setPassword(value);
1523
+ }
1524
+
1525
+ return /*#__PURE__*/React.createElement("div", {
1526
+ className: "login-box"
1527
+ }, /*#__PURE__*/React.createElement("header", null, logo ? /*#__PURE__*/React.createElement("img", {
1528
+ src: logo
1529
+ }) : '', /*#__PURE__*/React.createElement("div", {
1530
+ className: "title"
1531
+ }, /*#__PURE__*/React.createElement(Text, null, title))), /*#__PURE__*/React.createElement("main", null, /*#__PURE__*/React.createElement(TextField, {
1532
+ label: tx(userLabel),
1533
+ value: user,
1534
+ onChange: changeUser,
1535
+ onEnter: ok,
1536
+ outlined: true
1537
+ }), /*#__PURE__*/React.createElement(TextField, {
1538
+ label: tx(passwordLabel),
1539
+ value: password,
1540
+ onChange: changePassword,
1541
+ onEnter: ok,
1542
+ type: "password",
1543
+ outlined: true
1544
+ })), /*#__PURE__*/React.createElement("footer", null, onForgot ? /*#__PURE__*/React.createElement(Button, {
1545
+ label: tx(forgotLabel),
1546
+ action: forgot,
1547
+ disabled: !canForgot()
1548
+ }) : null, loading ? /*#__PURE__*/React.createElement("div", {
1549
+ className: "load-box"
1550
+ }, /*#__PURE__*/React.createElement(Icon, {
1551
+ icon: "refresh"
1552
+ })) : /*#__PURE__*/React.createElement(Button, {
1553
+ label: tx(loginLabel),
1554
+ action: ok,
1555
+ disabled: !canOK(),
1556
+ raised: true
1557
+ }), message ? /*#__PURE__*/React.createElement("div", {
1558
+ className: "message"
1559
+ }, /*#__PURE__*/React.createElement(Text, null, message)) : null));
1560
+ };
1561
+
1562
+ /**
1563
+ * Reset Password
1564
+ */
1565
+
1566
+ var ResetPasswordBox = function ResetPasswordBox(_ref) {
1567
+ var logo = _ref.logo,
1568
+ title = _ref.title,
1569
+ children = _ref.children,
1570
+ onOK = _ref.onOK,
1571
+ onClose = _ref.onClose;
1572
+
1573
+ var _useState = useState({}),
1574
+ form = _useState[0],
1575
+ setForm = _useState[1];
1576
+
1577
+ var _useState2 = useState(),
1578
+ error = _useState2[0],
1579
+ setError = _useState2[1];
1580
+
1581
+ function canOK() {
1582
+ return form.password1 && form.password2;
1583
+ }
1584
+
1585
+ function changeField(id, value) {
1586
+ var _Object$assign;
1587
+
1588
+ var next = Object.assign({}, form, (_Object$assign = {}, _Object$assign[id] = value, _Object$assign));
1589
+ setForm(next);
1590
+ }
1591
+
1592
+ function ok() {
1593
+ if (onOK && canOK()) {
1594
+ if (form.password1 === form.password2) {
1595
+ setError(null);
1596
+ onOK(form);
1597
+ } else {
1598
+ setError("New Password and Confirm New Password do not match");
1599
+ }
1600
+ }
1601
+ }
1602
+
1603
+ function close() {
1604
+ if (onClose) onClose();
1605
+ }
1606
+
1607
+ return /*#__PURE__*/React.createElement("div", {
1608
+ className: "reset-password-box"
1609
+ }, /*#__PURE__*/React.createElement("header", null, logo ? /*#__PURE__*/React.createElement("img", {
1610
+ src: logo
1611
+ }) : null, title ? /*#__PURE__*/React.createElement("div", {
1612
+ className: "title"
1613
+ }, /*#__PURE__*/React.createElement(Text, null, title)) : null, children), /*#__PURE__*/React.createElement("main", null, /*#__PURE__*/React.createElement(Text, {
1614
+ use: "headline6"
1615
+ }, "Change Password"), /*#__PURE__*/React.createElement(TextField, {
1616
+ id: "password1",
1617
+ outlined: true,
1618
+ icon: "lock",
1619
+ type: "password",
1620
+ label: "New Password",
1621
+ lapse: 100,
1622
+ onChange: changeField,
1623
+ onEnter: ok
1624
+ }), /*#__PURE__*/React.createElement(TextField, {
1625
+ id: "password2",
1626
+ outlined: true,
1627
+ icon: "lock",
1628
+ type: "password",
1629
+ label: "Confirm New Password",
1630
+ lapse: 100,
1631
+ onChange: changeField,
1632
+ onEnter: ok
1633
+ }), error ? /*#__PURE__*/React.createElement("div", {
1634
+ className: "error"
1635
+ }, error) : null), /*#__PURE__*/React.createElement("footer", null, /*#__PURE__*/React.createElement(Button, {
1636
+ label: "Close",
1637
+ action: close
1638
+ }), /*#__PURE__*/React.createElement(Button, {
1639
+ label: "OK",
1640
+ raised: true,
1641
+ disabled: !canOK(),
1642
+ action: ok
1643
+ })));
1644
+ };
1645
+
1646
+ /**
1647
+ * Viewer
1648
+ */
1649
+
1650
+ var Viewer = function Viewer(_ref) {
1651
+ var title = _ref.title,
1652
+ src = _ref.src,
1653
+ info = _ref.info,
1654
+ _ref$actions = _ref.actions,
1655
+ actions = _ref$actions === void 0 ? [] : _ref$actions,
1656
+ _ref$tools = _ref.tools,
1657
+ tools = _ref$tools === void 0 ? false : _ref$tools,
1658
+ onClose = _ref.onClose;
1659
+
1660
+ var _useState = useState(false),
1661
+ showDetails = _useState[0],
1662
+ setShowDetails = _useState[1];
1663
+
1664
+ function toggleDetails() {
1665
+ setShowDetails(!showDetails);
1666
+ }
1667
+
1668
+ var headerTitle = /*#__PURE__*/React.createElement(Text, {
1669
+ use: "headline6"
1670
+ }, title);
1671
+ return /*#__PURE__*/React.createElement("div", {
1672
+ className: "viewer"
1673
+ }, /*#__PURE__*/React.createElement(Header, {
1674
+ icon: {
1675
+ icon: 'close',
1676
+ clickable: true,
1677
+ action: onClose
1678
+ },
1679
+ title: headerTitle
1680
+ }, showDetails ? '' : /*#__PURE__*/React.createElement(Icon, {
1681
+ icon: "info",
1682
+ clickable: true,
1683
+ action: toggleDetails
1684
+ }), actions), /*#__PURE__*/React.createElement("main", null, /*#__PURE__*/React.createElement("div", {
1685
+ className: "resizer"
1686
+ }, /*#__PURE__*/React.createElement("picture", null, /*#__PURE__*/React.createElement("img", {
1687
+ src: src
1688
+ })))), /*#__PURE__*/React.createElement("aside", {
1689
+ className: "" + (showDetails ? 'open' : '')
1690
+ }, /*#__PURE__*/React.createElement(Header, {
1691
+ title: "Detalles"
1692
+ }, /*#__PURE__*/React.createElement(Icon, {
1693
+ icon: "close",
1694
+ clickable: true,
1695
+ action: toggleDetails
1696
+ })), /*#__PURE__*/React.createElement("main", null, info)), tools ? /*#__PURE__*/React.createElement("footer", null, /*#__PURE__*/React.createElement(Icon, {
1697
+ clickable: true,
1698
+ icon: "zoom_out"
1699
+ }), /*#__PURE__*/React.createElement(Icon, {
1700
+ clickable: true,
1701
+ icon: "zoom_out_map"
1702
+ }), /*#__PURE__*/React.createElement(Icon, {
1703
+ clickable: true,
1704
+ icon: "zoom_in"
1705
+ })) : null);
1706
+ };
1707
+
1708
+ /**
1709
+ * Kanban
1710
+ */
1711
+
1712
+ var Kanban = function Kanban(_ref) {
1713
+ var children = _ref.children;
1714
+ return /*#__PURE__*/React.createElement("div", {
1715
+ className: "kanban"
1716
+ }, children);
1717
+ };
1718
+ /**
1719
+ * Kanban Column
1720
+ */
1721
+
1722
+ var KanbanColumn = function KanbanColumn(_ref2) {
1723
+ var id = _ref2.id,
1724
+ icon = _ref2.icon,
1725
+ title = _ref2.title,
1726
+ subtitle = _ref2.subtitle,
1727
+ badge = _ref2.badge,
1728
+ children = _ref2.children,
1729
+ _ref2$minified = _ref2.minified,
1730
+ minified = _ref2$minified === void 0 ? false : _ref2$minified,
1731
+ _ref2$disabled = _ref2.disabled,
1732
+ disabled = _ref2$disabled === void 0 ? false : _ref2$disabled;
1733
+
1734
+ var _useState = useState(minified),
1735
+ min = _useState[0],
1736
+ setMin = _useState[1];
1737
+
1738
+ function toggle() {
1739
+ setMin(!min);
1740
+ }
1741
+
1742
+ return min ? /*#__PURE__*/React.createElement("div", {
1743
+ className: "kanban-column " + id + " min"
1744
+ }, /*#__PURE__*/React.createElement("main", null, title), /*#__PURE__*/React.createElement("footer", null, /*#__PURE__*/React.createElement(Icon, {
1745
+ icon: "toggle_off",
1746
+ onIcon: "toggle_on",
1747
+ clickable: true,
1748
+ action: toggle
1749
+ }))) : /*#__PURE__*/React.createElement("div", {
1750
+ className: "kanban-column " + id + " " + (disabled ? 'disabled' : '')
1751
+ }, /*#__PURE__*/React.createElement("header", null, /*#__PURE__*/React.createElement(Icon, {
1752
+ icon: icon
1753
+ }), /*#__PURE__*/React.createElement("div", {
1754
+ className: "title"
1755
+ }, /*#__PURE__*/React.createElement(Text, {
1756
+ use: "headline6"
1757
+ }, title), /*#__PURE__*/React.createElement(Text, {
1758
+ className: "secondary-text",
1759
+ use: "body2"
1760
+ }, subtitle)), /*#__PURE__*/React.createElement("div", {
1761
+ className: "badge"
1762
+ }, badge)), /*#__PURE__*/React.createElement("main", null, children), /*#__PURE__*/React.createElement("footer", null, /*#__PURE__*/React.createElement(Icon, {
1763
+ icon: "toggle_off",
1764
+ onIcon: "toggle_on",
1765
+ clickable: true,
1766
+ action: toggle
1767
+ })));
1768
+ };
1769
+ /**
1770
+ * Kanban Card
1771
+ */
1772
+
1773
+ var KanbanCard = function KanbanCard(_ref3) {
1774
+ var color = _ref3.color,
1775
+ children = _ref3.children;
1776
+ return /*#__PURE__*/React.createElement("div", {
1777
+ className: "kanban-card " + color
1778
+ }, children);
1779
+ };
1780
+
1781
+ /**
1782
+ * Page Context
1783
+ */
1784
+
1785
+ var PageContext = React.createContext({});
1786
+ /**
1787
+ * Page Provider
1788
+ */
1789
+
1790
+ var PageProvider = function PageProvider(_ref) {
1791
+ var _ref$context = _ref.context,
1792
+ context = _ref$context === void 0 ? {} : _ref$context,
1793
+ children = _ref.children;
1794
+
1795
+ var _useState = useState(context),
1796
+ pageCtx = _useState[0],
1797
+ setPageCtx = _useState[1];
1798
+
1799
+ return /*#__PURE__*/React.createElement(PageContext.Provider, {
1800
+ value: [pageCtx, setPageCtx]
1801
+ }, children);
1802
+ };
1803
+ /**
1804
+ * Page
1805
+ */
1806
+
1807
+ var Page = function Page(props) {
1808
+ var children = props.children,
1809
+ _props$layout = props.layout,
1810
+ layout = _props$layout === void 0 ? "simple" : _props$layout,
1811
+ _props$context = props.context,
1812
+ context = _props$context === void 0 ? {} : _props$context;
1813
+ return /*#__PURE__*/React.createElement(PageProvider, {
1814
+ context: context
1815
+ }, /*#__PURE__*/React.createElement("article", {
1816
+ className: "page6 " + layout
1817
+ }, children));
1818
+ };
1819
+
1820
+ /**
1821
+ * Site Provider
1822
+ */
1823
+
1824
+ var SiteProvider = function SiteProvider(_ref) {
1825
+ var children = _ref.children,
1826
+ siteLang = _ref.siteLang,
1827
+ siteDictionary = _ref.siteDictionary;
1828
+
1829
+ var _useState = useState(siteLang),
1830
+ lang = _useState[0],
1831
+ setLang = _useState[1];
1832
+
1833
+ var _useState2 = useState(siteDictionary),
1834
+ dictionary = _useState2[0],
1835
+ setDictionary = _useState2[1];
1836
+
1837
+ var _useState3 = useState('max'),
1838
+ sideNav = _useState3[0],
1839
+ setSideNav = _useState3[1];
1840
+
1841
+ var _useState4 = useState(false),
1842
+ showNav = _useState4[0],
1843
+ setShowNav = _useState4[1];
1844
+
1845
+ var _useState5 = useState(null),
1846
+ info = _useState5[0],
1847
+ setInfo = _useState5[1];
1848
+
1849
+ var _useState6 = useState(false),
1850
+ console = _useState6[0],
1851
+ setConsole = _useState6[1];
1852
+
1853
+ var _useState7 = useState(),
1854
+ page = _useState7[0],
1855
+ setPage = _useState7[1];
1856
+
1857
+ var _useState8 = useState(),
1858
+ dialog = _useState8[0],
1859
+ setDialog = _useState8[1];
1860
+
1861
+ var _useState9 = useState(),
1862
+ preview = _useState9[0],
1863
+ setPreview = _useState9[1];
1864
+
1865
+ var _useState10 = useState(),
1866
+ breadcrumb = _useState10[0],
1867
+ setBreadcrumb = _useState10[1];
1868
+
1869
+ var _useState11 = useState(),
1870
+ focused = _useState11[0],
1871
+ setFocused = _useState11[1];
1872
+
1873
+ var value = {
1874
+ lang: lang,
1875
+ setLang: setLang,
1876
+ dictionary: dictionary,
1877
+ setDictionary: setDictionary,
1878
+ focused: focused,
1879
+ changeFocus: function changeFocus(next) {
1880
+ if (focused) focused.lose();
1881
+ setFocused(next);
1882
+ },
1883
+ sideNav: sideNav,
1884
+ setSideNav: setSideNav,
1885
+ showNav: showNav,
1886
+ setShowNav: setShowNav,
1887
+ info: info,
1888
+ openInfo: function openInfo(info) {
1889
+ setInfo(info);
1890
+ },
1891
+ closeInfo: function closeInfo() {
1892
+ setInfo(null);
1893
+ },
1894
+ console: console,
1895
+ toggleConsole: function toggleConsole() {
1896
+ setConsole(!console);
1897
+ },
1898
+ breadcrumb: breadcrumb,
1899
+ setBreadcrumb: setBreadcrumb,
1900
+ page: page,
1901
+ "goto": function goto(id) {
1902
+ setPage(id);
1903
+ },
1904
+ dialog: dialog,
1905
+ openDialog: function openDialog(dialog) {
1906
+ setDialog(dialog);
1907
+ },
1908
+ closeDialog: function closeDialog() {
1909
+ setDialog(null);
1910
+ },
1911
+ preview: preview,
1912
+ openPreview: function openPreview(preview) {
1913
+ setPreview(preview);
1914
+ },
1915
+ closePreview: function closePreview() {
1916
+ setPreview(null);
1917
+ }
1918
+ };
1919
+ return /*#__PURE__*/React.createElement(SiteContext.Provider, {
1920
+ value: value
1921
+ }, children);
1922
+ };
1923
+ /**
1924
+ * Site
1925
+ */
1926
+
1927
+ var Site = function Site(_ref2) {
1928
+ var icon = _ref2.icon,
1929
+ logo = _ref2.logo,
1930
+ title = _ref2.title,
1931
+ toolbar = _ref2.toolbar,
1932
+ children = _ref2.children,
1933
+ init = _ref2.init,
1934
+ min = _ref2.min,
1935
+ lang = _ref2.lang,
1936
+ dictionary = _ref2.dictionary;
1937
+ return /*#__PURE__*/React.createElement(SiteProvider, {
1938
+ siteLang: lang,
1939
+ siteDictionary: dictionary
1940
+ }, /*#__PURE__*/React.createElement("div", {
1941
+ className: "site6"
1942
+ }, /*#__PURE__*/React.createElement(SiteHeader, {
1943
+ icon: icon
1944
+ }), /*#__PURE__*/React.createElement(SiteToolBar, null, toolbar), /*#__PURE__*/React.createElement(SiteMenu, {
1945
+ logo: logo,
1946
+ title: title,
1947
+ min: min
1948
+ }, children), /*#__PURE__*/React.createElement(SitePage, {
1949
+ init: init
1950
+ }, children, /*#__PURE__*/React.createElement(Page, {
1951
+ id: "EMPTY"
1952
+ }, "EMPTY")), /*#__PURE__*/React.createElement(SiteAside, null), /*#__PURE__*/React.createElement(SiteConsole, null), /*#__PURE__*/React.createElement(SiteDialog, null), /*#__PURE__*/React.createElement(SitePreview, null)));
1953
+ };
1954
+ /**
1955
+ * Site Header
1956
+ */
1957
+
1958
+ var SiteHeader = function SiteHeader(props) {
1959
+ var _props$icon = props.icon,
1960
+ icon = _props$icon === void 0 ? "equalizer" : _props$icon,
1961
+ title = props.title;
1962
+ return /*#__PURE__*/React.createElement(Header, {
1963
+ icon: icon,
1964
+ title: title
1965
+ });
1966
+ };
1967
+ /**
1968
+ * Site ToolBar
1969
+ */
1970
+
1971
+
1972
+ var SiteToolBar = function SiteToolBar(_ref3) {
1973
+ var children = _ref3.children;
1974
+ useContext(SiteContext);
1975
+ return /*#__PURE__*/React.createElement("nav", null, children);
1976
+ };
1977
+ /**
1978
+ * Site Aside
1979
+ */
1980
+
1981
+
1982
+ var SiteAside = function SiteAside() {
1983
+ var context = useContext(SiteContext);
1984
+ return context.info ? /*#__PURE__*/React.createElement("aside", null, context.info) : '';
1985
+ };
1986
+ /**
1987
+ * SiteMenu
1988
+ */
1989
+
1990
+
1991
+ var SiteMenu = function SiteMenu(_ref4) {
1992
+ var children = _ref4.children,
1993
+ min = _ref4.min;
1994
+ var context = useContext(SiteContext);
1995
+ var showNav = context.showNav;
1996
+ useEffect(function () {
1997
+ if (min) context.setSideNav('min');
1998
+ }, []);
1999
+
2000
+ var _goto = function _goto(id) {
2001
+ context.setShowNav(false);
2002
+ context["goto"](id);
2003
+ };
2004
+
2005
+ var sections = children ? Children.toArray(children).reduce(function (sections, page) {
2006
+ var section = page.props ? page.props.section : '...';
2007
+ if (!sections[section]) sections[section] = [];
2008
+ var _page$props = page.props,
2009
+ id = _page$props.id,
2010
+ icon = _page$props.icon,
2011
+ title = _page$props.title;
2012
+ if (title) sections[section].push({
2013
+ id: id,
2014
+ icon: icon,
2015
+ title: title
2016
+ });
2017
+ return sections;
2018
+ }, {}) : {};
2019
+ return /*#__PURE__*/React.createElement("menu", {
2020
+ className: "min " + (showNav ? 'show' : '')
2021
+ }, /*#__PURE__*/React.createElement("main", null, Object.keys(sections).map(function (title) {
2022
+ return /*#__PURE__*/React.createElement(Fragment, {
2023
+ key: title
2024
+ }, sections[title].map(function (_ref5) {
2025
+ var id = _ref5.id,
2026
+ _ref5$icon = _ref5.icon,
2027
+ icon = _ref5$icon === void 0 ? 'info' : _ref5$icon;
2028
+ return /*#__PURE__*/React.createElement(Icon, {
2029
+ key: id,
2030
+ icon: icon,
2031
+ clickable: true,
2032
+ checked: id === context.page,
2033
+ action: function action() {
2034
+ return _goto(id);
2035
+ }
2036
+ });
2037
+ }), /*#__PURE__*/React.createElement("div", {
2038
+ className: "section-divider"
2039
+ }));
2040
+ })));
2041
+ };
2042
+ /**
2043
+ * SitePage
2044
+ */
2045
+
2046
+
2047
+ var SitePage = function SitePage(_ref6) {
2048
+ var children = _ref6.children,
2049
+ init = _ref6.init;
2050
+ var context = useContext(SiteContext);
2051
+ var page = context.page;
2052
+ useEffect(function () {
2053
+ if (init) {
2054
+ context["goto"](init);
2055
+ } else {
2056
+ context["goto"]("EMPTY");
2057
+ }
2058
+ }, []);
2059
+ return /*#__PURE__*/React.createElement("main", null, React.Children.toArray(children).filter(function (child) {
2060
+ return child.props ? child.props.id === page : false;
2061
+ }));
2062
+ };
2063
+ /**
2064
+ * Site Dialog
2065
+ */
2066
+
2067
+
2068
+ var SiteDialog = function SiteDialog() {
2069
+ var context = useContext(SiteContext);
2070
+ return context.dialog ? context.dialog : '';
2071
+ };
2072
+ /**
2073
+ * Site Preview
2074
+ */
2075
+
2076
+
2077
+ var SitePreview = function SitePreview() {
2078
+ var context = useContext(SiteContext);
2079
+ return context.preview ? /*#__PURE__*/React.createElement("div", {
2080
+ className: "site-preview"
2081
+ }, context.preview) : '';
2082
+ };
2083
+ /**
2084
+ * Site Console
2085
+ */
2086
+
2087
+
2088
+ var SiteConsole = function SiteConsole() {
2089
+ var context = useContext(SiteContext);
2090
+ return context.console ? /*#__PURE__*/React.createElement("footer", {
2091
+ className: "site-console"
2092
+ }, /*#__PURE__*/React.createElement(Header, null, /*#__PURE__*/React.createElement(Tabs, null, /*#__PURE__*/React.createElement(Tab, {
2093
+ label: "Console"
2094
+ }))), /*#__PURE__*/React.createElement("main", null)) : '';
2095
+ };
2096
+
2097
+ /**
2098
+ * Dialog
2099
+ *
2100
+ * <Dialog title={title} open={true} onAction={onAction} actions={actions}>
2101
+ */
2102
+
2103
+ var Dialog = function Dialog(props) {
2104
+ var site = useContext(SiteContext);
2105
+ var icon = props.icon,
2106
+ _props$title = props.title,
2107
+ title = _props$title === void 0 ? "Dialog" : _props$title,
2108
+ children = props.children,
2109
+ actions = props.actions;
2110
+
2111
+ function close() {
2112
+ site.closeDialog();
2113
+ }
2114
+
2115
+ function prevent(e) {
2116
+ e.preventDefault();
2117
+ e.stopPropagation();
2118
+ }
2119
+
2120
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", {
2121
+ className: "overlay"
2122
+ }), /*#__PURE__*/React.createElement("div", {
2123
+ className: "dialog",
2124
+ onClick: close
2125
+ }, /*#__PURE__*/React.createElement("div", {
2126
+ className: "dialog-panel",
2127
+ onClick: prevent
2128
+ }, /*#__PURE__*/React.createElement("header", null, icon ? /*#__PURE__*/React.createElement(MenuIcon, {
2129
+ icon: icon
2130
+ }) : null, /*#__PURE__*/React.createElement(Text, null, title)), /*#__PURE__*/React.createElement("main", null, children), /*#__PURE__*/React.createElement("footer", null, actions))));
2131
+ };
2132
+
2133
+ /**
2134
+ * TYPES
2135
+ */
2136
+ var TYPES = {
2137
+ STRING: 'String',
2138
+ NUMBER: 'Number',
2139
+ DATE: 'Date',
2140
+ BOOLEAN: 'Boolean',
2141
+ ARRAY: 'Array',
2142
+ ENTITY: 'Object',
2143
+ FUNCTION: 'Function',
2144
+ EMAIL: 'String'
2145
+ };
2146
+ /**
2147
+ * CHECK
2148
+ */
2149
+
2150
+ var CHECK = Object.values(TYPES).reduce(function (obj, name) {
2151
+ obj['is' + name] = function (x) {
2152
+ return toString.call(x) == '[object ' + name + ']';
2153
+ };
2154
+
2155
+ return obj;
2156
+ }, {});
2157
+ /**
2158
+ * Content Type
2159
+ */
2160
+
2161
+ var ContentType = /*#__PURE__*/function () {
2162
+ function ContentType(schema) {
2163
+ this._schema = schema;
2164
+ }
2165
+
2166
+ var _proto = ContentType.prototype;
2167
+
2168
+ _proto.checkType = function checkType(_ref, data) {
2169
+ var type = _ref.type,
2170
+ item = _ref.item;
2171
+ var valid = true;
2172
+ var validChildren = true;
2173
+
2174
+ if (item) {
2175
+ var child = new ContentType(item);
2176
+
2177
+ switch (type) {
2178
+ case TYPES.ARRAY:
2179
+ valid = CHECK['is' + type](data);
2180
+ validChildren = data.every(function (element) {
2181
+ return child.validate(element);
2182
+ });
2183
+ break;
2184
+
2185
+ case TYPES.ENTITY:
2186
+ valid = CHECK['is' + type](data);
2187
+ validChildren = child.validate(data);
2188
+ break;
2189
+
2190
+ case TYPES.NUMBER:
2191
+ valid = CHECK['is' + type](data.value);
2192
+ validChildren = true;
2193
+ break;
2194
+
2195
+ default:
2196
+ valid = true;
2197
+ validChildren = true;
2198
+ }
2199
+ }
2200
+
2201
+ return valid && validChildren;
2202
+ }
2203
+ /**
2204
+ * Validate entity data
2205
+ * - Inspect required attributes only
2206
+ * - Check attributes type
2207
+ */
2208
+ ;
2209
+
2210
+ _proto.validate = function validate(data) {
2211
+ var _this = this;
2212
+
2213
+ var attributes = Object.entries(this._schema);
2214
+ return attributes.filter(function (_ref2) {
2215
+ var attr = _ref2[1];
2216
+ return attr.required === true;
2217
+ }).every(function (_ref3) {
2218
+ var name = _ref3[0],
2219
+ attr = _ref3[1];
2220
+ return data[name] !== undefined ? _this.checkType(attr, data[name]) : false;
2221
+ });
2222
+ }
2223
+ /**
2224
+ * Content Type Form
2225
+ */
2226
+ ;
2227
+
2228
+ _proto.form = function form(data) {
2229
+ var entries = Object.entries(this._schema);
2230
+ var form = entries.reduce(function (form, _ref4) {
2231
+ var id = _ref4[0],
2232
+ field = _ref4[1];
2233
+ form[id] = Object.assign({}, field, {
2234
+ value: data[id]
2235
+ });
2236
+ return form;
2237
+ }, {});
2238
+ return form;
2239
+ }
2240
+ /**
2241
+ * Content Type Sections
2242
+ */
2243
+ ;
2244
+
2245
+ _proto.sections = function sections(data) {
2246
+ var form = this.form(data);
2247
+ var fields = Object.values(form);
2248
+ var sections = fields.reduce(function (sections, field) {
2249
+ var section = field.section;
2250
+ var title = section ? section : '';
2251
+ if (!sections.hasOwnProperty(title)) sections[title] = {
2252
+ title: title,
2253
+ fields: []
2254
+ };
2255
+ sections[title].fields.push(field);
2256
+ return sections;
2257
+ }, {});
2258
+ return Object.values(sections);
2259
+ }
2260
+ /**
2261
+ * value
2262
+ */
2263
+ ;
2264
+
2265
+ _proto.value = function value(data) {
2266
+ var fields = Object.entries(this._schema);
2267
+ var next = fields.reduce(function (next, _ref5) {
2268
+ var name = _ref5[0],
2269
+ field = _ref5[1];
2270
+ var type = field.type,
2271
+ item = field.item;
2272
+ var entryData = data ? data[name] : null;
2273
+
2274
+ switch (type) {
2275
+ case TYPES.STRING:
2276
+ next[name] = entryData || field["default"];
2277
+ break;
2278
+
2279
+ case TYPES.NUMBER:
2280
+ next[name] = entryData || field["default"];
2281
+ break;
2282
+
2283
+ case TYPES.BOOLEAN:
2284
+ next[name] = entryData || field["default"];
2285
+ break;
2286
+
2287
+ case TYPES.ENTITY:
2288
+ var child1 = new ContentType(item);
2289
+ next[name] = child1.value(entryData);
2290
+ break;
2291
+
2292
+ case TYPES.ARRAY:
2293
+ if (item === TYPES.STRING) {
2294
+ next[name] = entryData ? entryData : [];
2295
+ } else {
2296
+ var child2 = new ContentType(item);
2297
+ next[name] = entryData ? entryData.map(function (data2) {
2298
+ return child2.value(data2);
2299
+ }) : [];
2300
+ }
2301
+
2302
+ break;
2303
+
2304
+ default:
2305
+ next[name] = field;
2306
+ break;
2307
+ }
2308
+
2309
+ return next;
2310
+ }, {});
2311
+ return next;
2312
+ };
2313
+
2314
+ return ContentType;
2315
+ }();
2316
+ /**
2317
+ * Content
2318
+ */
2319
+
2320
+ var Content = /*#__PURE__*/function () {
2321
+ function Content(type, value) {
2322
+ this.type = type;
2323
+ this._type = new ContentType(type);
2324
+ this._value = value;
2325
+ }
2326
+
2327
+ var _proto2 = Content.prototype;
2328
+
2329
+ _proto2.isValid = function isValid() {
2330
+ return this._type.validate(this._value);
2331
+ };
2332
+
2333
+ _proto2.value = function value() {
2334
+ return this._type.value(this._value);
2335
+ };
2336
+
2337
+ _proto2.form = function form() {
2338
+ return this._type.form(this._value);
2339
+ };
2340
+
2341
+ _proto2.sections = function sections() {
2342
+ return this._type.sections(this._value);
2343
+ };
2344
+
2345
+ _proto2.update = function update(value) {
2346
+ this._value = value;
2347
+ };
2348
+
2349
+ return Content;
2350
+ }();
2351
+
2352
+ /**
2353
+ * Content Form
2354
+ */
2355
+
2356
+ var ContentForm = function ContentForm(_ref) {
2357
+ var content = _ref.content,
2358
+ _ref$columns = _ref.columns,
2359
+ columns = _ref$columns === void 0 ? 1 : _ref$columns,
2360
+ filter = _ref.filter,
2361
+ onChange = _ref.onChange;
2362
+ var form = content.form();
2363
+ console.log(form);
2364
+ var fields = Object.keys(form).map(function (key) {
2365
+ return form[key];
2366
+ }).filter(function (field) {
2367
+ return filter ? filter(field) : true;
2368
+ });
2369
+ console.log(fields);
2370
+ return /*#__PURE__*/React.createElement(Form, {
2371
+ className: "content-form",
2372
+ columns: columns,
2373
+ outlined: true,
2374
+ onChange: onChange
2375
+ }, fields.map(function (field) {
2376
+ return /*#__PURE__*/React.createElement(ContentFormField, _extends({
2377
+ key: field.id
2378
+ }, field));
2379
+ }));
2380
+ };
2381
+ /**
2382
+ * Content Form Field
2383
+ */
2384
+
2385
+ var ContentFormField = function ContentFormField(props) {
2386
+ var type = props.type;
2387
+
2388
+ switch (type) {
2389
+ case TYPES.BOOLEAN:
2390
+ return /*#__PURE__*/React.createElement(CheckBox, _extends({
2391
+ key: props.id
2392
+ }, props));
2393
+
2394
+ case TYPES.NUMBER:
2395
+ return /*#__PURE__*/React.createElement(NumberField, _extends({
2396
+ key: props.id
2397
+ }, props));
2398
+
2399
+ default:
2400
+ return /*#__PURE__*/React.createElement(StringField, _extends({
2401
+ key: props.id
2402
+ }, props));
2403
+ }
2404
+ };
2405
+ /**
2406
+ * String Editor
2407
+ */
2408
+
2409
+
2410
+ var StringField = function StringField(_ref2) {
2411
+ var _fieldTypes;
2412
+
2413
+ var id = _ref2.id,
2414
+ type = _ref2.type,
2415
+ label = _ref2.label,
2416
+ options = _ref2.options,
2417
+ textarea = _ref2.textarea,
2418
+ _ref2$required = _ref2.required,
2419
+ required = _ref2$required === void 0 ? false : _ref2$required,
2420
+ value = _ref2.value,
2421
+ onChange = _ref2.onChange,
2422
+ outlined = _ref2.outlined;
2423
+ var fieldTypes = (_fieldTypes = {}, _fieldTypes[TYPES.NUMBER] = 'number', _fieldTypes[TYPES.DATE] = 'date', _fieldTypes);
2424
+
2425
+ function buildOptions() {
2426
+ var opts = typeof options === 'function' ? options() : options;
2427
+ return opts;
2428
+ }
2429
+
2430
+ var fieldType = fieldTypes[type] || 'text';
2431
+ if (options) return /*#__PURE__*/React.createElement(DropDown, {
2432
+ key: id,
2433
+ id: id,
2434
+ label: label,
2435
+ value: value,
2436
+ onChange: onChange,
2437
+ options: buildOptions(),
2438
+ outlined: outlined
2439
+ });
2440
+ return /*#__PURE__*/React.createElement(TextField, {
2441
+ key: id,
2442
+ id: id,
2443
+ type: fieldType,
2444
+ label: label,
2445
+ value: value,
2446
+ onChange: onChange,
2447
+ required: required,
2448
+ outlined: outlined,
2449
+ textarea: textarea
2450
+ });
2451
+ };
2452
+ /**
2453
+ * Number Editor
2454
+ */
2455
+
2456
+ var NumberField = function NumberField(_ref3) {
2457
+ var id = _ref3.id,
2458
+ label = _ref3.label,
2459
+ options = _ref3.options,
2460
+ _ref3$required = _ref3.required,
2461
+ required = _ref3$required === void 0 ? false : _ref3$required,
2462
+ value = _ref3.value,
2463
+ onChange = _ref3.onChange,
2464
+ outlined = _ref3.outlined;
2465
+
2466
+ function change(id, value) {
2467
+ var num = !!+value ? +value : value;
2468
+ if (onChange) onChange(id, num);
2469
+ }
2470
+
2471
+ if (options) return /*#__PURE__*/React.createElement(DropDown, {
2472
+ key: id,
2473
+ id: id,
2474
+ label: label,
2475
+ value: value,
2476
+ onChange: change,
2477
+ options: options,
2478
+ outlined: outlined
2479
+ });
2480
+ return /*#__PURE__*/React.createElement(TextField, {
2481
+ key: id,
2482
+ id: id,
2483
+ type: "number",
2484
+ label: label,
2485
+ value: value,
2486
+ onChange: change,
2487
+ required: required,
2488
+ outlined: outlined
2489
+ });
2490
+ };
2491
+
2492
+ /**
2493
+ * Content Editor
2494
+ */
2495
+
2496
+ var ContentEditor = function ContentEditor(_ref) {
2497
+ var content = _ref.content,
2498
+ filter = _ref.filter,
2499
+ onChange = _ref.onChange;
2500
+
2501
+ function change(id, value) {
2502
+ var _Object$assign;
2503
+
2504
+ var nextValue = Object.assign({}, content.value(), (_Object$assign = {}, _Object$assign[id] = value, _Object$assign));
2505
+ if (onChange) onChange(nextValue);
2506
+ }
2507
+
2508
+ var sections = content.sections();
2509
+ return /*#__PURE__*/React.createElement("div", {
2510
+ className: "content-editor"
2511
+ }, sections.map(function (section) {
2512
+ var title = section.title,
2513
+ fields = section.fields;
2514
+ return /*#__PURE__*/React.createElement("section", {
2515
+ key: title
2516
+ }, /*#__PURE__*/React.createElement("header", null, title), /*#__PURE__*/React.createElement("main", null, fields.filter(function (field) {
2517
+ return field.id !== 'id';
2518
+ }).filter(function (field) {
2519
+ return filter ? filter(field, content) : true;
2520
+ }).map(function (field) {
2521
+ return /*#__PURE__*/React.createElement(FieldEditor, {
2522
+ key: field.id,
2523
+ field: field,
2524
+ onChange: change
2525
+ });
2526
+ })));
2527
+ }));
2528
+ };
2529
+ /**
2530
+ * Tabbed Content Editor
2531
+ */
2532
+
2533
+ var TabbedContentEditor = function TabbedContentEditor(_ref2) {
2534
+ var content = _ref2.content,
2535
+ filter = _ref2.filter,
2536
+ _ref2$grouped = _ref2.grouped,
2537
+ grouped = _ref2$grouped === void 0 ? false : _ref2$grouped,
2538
+ onChange = _ref2.onChange;
2539
+
2540
+ var _useState = useState(0),
2541
+ tab = _useState[0],
2542
+ setTab = _useState[1];
2543
+
2544
+ function change(id, value) {
2545
+ var _Object$assign2;
2546
+
2547
+ var nextValue = Object.assign({}, content.value(), (_Object$assign2 = {}, _Object$assign2[id] = value, _Object$assign2));
2548
+ if (onChange) onChange(nextValue);
2549
+ }
2550
+
2551
+ function changeTab(tab) {
2552
+ setTab(tab);
2553
+ }
2554
+
2555
+ function group(section) {
2556
+ var _section$fields = section.fields,
2557
+ fields = _section$fields === void 0 ? [] : _section$fields;
2558
+ var groups = fields.reduce(function (groups, field) {
2559
+ var groupName = field.group || "";
2560
+ var group = groups[groupName] || {
2561
+ name: groupName,
2562
+ fields: []
2563
+ };
2564
+ group.fields.push(field);
2565
+ groups[groupName] = group;
2566
+ return groups;
2567
+ }, {});
2568
+ return Object.values(groups);
2569
+ }
2570
+
2571
+ var sections = content.sections();
2572
+ return /*#__PURE__*/React.createElement("div", {
2573
+ className: "content-editor tabbed"
2574
+ }, /*#__PURE__*/React.createElement(Tabs, {
2575
+ selected: tab,
2576
+ onChange: changeTab
2577
+ }, sections.map(function (section) {
2578
+ return /*#__PURE__*/React.createElement(Tab, {
2579
+ label: section.title
2580
+ });
2581
+ })), /*#__PURE__*/React.createElement(Stack, {
2582
+ selected: tab
2583
+ }, sections.map(function (section) {
2584
+ var title = section.title,
2585
+ fields = section.fields;
2586
+ return /*#__PURE__*/React.createElement("section", {
2587
+ key: title
2588
+ }, /*#__PURE__*/React.createElement("nav", null, "\xA0"), /*#__PURE__*/React.createElement("main", null, grouped ? group(section).map(function (group) {
2589
+ return /*#__PURE__*/React.createElement(Fragment, null, group.name.length > 0 ? /*#__PURE__*/React.createElement("div", {
2590
+ className: "group-caption"
2591
+ }, group.name) : null, group.fields.filter(function (field) {
2592
+ return field.id !== 'id';
2593
+ }).filter(function (field) {
2594
+ return filter ? filter(field) : true;
2595
+ }).map(function (field) {
2596
+ return /*#__PURE__*/React.createElement(FieldEditor, {
2597
+ key: field.id,
2598
+ field: field,
2599
+ onChange: change,
2600
+ content: content
2601
+ });
2602
+ }));
2603
+ }) : fields.filter(function (field) {
2604
+ return field.id !== 'id';
2605
+ }).filter(function (field) {
2606
+ return filter ? filter(field) : true;
2607
+ }).map(function (field) {
2608
+ return /*#__PURE__*/React.createElement(FieldEditor, {
2609
+ key: field.id,
2610
+ field: field,
2611
+ onChange: change,
2612
+ content: content
2613
+ });
2614
+ })));
2615
+ })));
2616
+ };
2617
+ /**
2618
+ * TreededContentEditor
2619
+ */
2620
+
2621
+ var TreededContentEditor = function TreededContentEditor(_ref3) {
2622
+ var content = _ref3.content,
2623
+ onChange = _ref3.onChange;
2624
+ var value = content.value();
2625
+ var nodes = Object.values(content.type).filter(function (field) {
2626
+ return field.type === TYPES.ARRAY;
2627
+ });
2628
+
2629
+ var _useState2 = useState(),
2630
+ selected = _useState2[0],
2631
+ setSelected = _useState2[1];
2632
+
2633
+ function select(index, field, node) {
2634
+ var item = new Content(node.item, field);
2635
+ setSelected({
2636
+ index: index,
2637
+ item: item,
2638
+ node: node,
2639
+ value: value[node.id]
2640
+ });
2641
+ }
2642
+
2643
+ function change(form) {
2644
+ var _Object$assign3;
2645
+
2646
+ var nextNode = selected.value.slice();
2647
+ nextNode[selected.index] = form;
2648
+ var nextContent = Object.assign({}, value, (_Object$assign3 = {}, _Object$assign3[selected.node.id] = nextNode, _Object$assign3));
2649
+ if (onChange) onChange(nextContent);
2650
+ }
2651
+
2652
+ function add() {//TODO
2653
+ }
2654
+
2655
+ return /*#__PURE__*/React.createElement("div", {
2656
+ className: "content-editor treeded-editor"
2657
+ }, /*#__PURE__*/React.createElement("menu", null, /*#__PURE__*/React.createElement("header", null, /*#__PURE__*/React.createElement(Text, {
2658
+ use: "caption"
2659
+ }, "Tree Editor")), /*#__PURE__*/React.createElement(Tree, null, nodes.map(function (node, index) {
2660
+ return /*#__PURE__*/React.createElement(TreeNode, {
2661
+ icon: "folder",
2662
+ label: node.label,
2663
+ actions: [/*#__PURE__*/React.createElement(Icon, {
2664
+ small: true,
2665
+ icon: "add",
2666
+ clickable: true,
2667
+ action: add
2668
+ })]
2669
+ }, value[node.id] ? value[node.id].map(function (field, index) {
2670
+ return /*#__PURE__*/React.createElement(TreeItem, {
2671
+ icon: field.icon || "description",
2672
+ label: field.name || field.label,
2673
+ onSelect: function onSelect() {
2674
+ return select(index, field, node);
2675
+ }
2676
+ });
2677
+ }) : null);
2678
+ }))), /*#__PURE__*/React.createElement("div", null, selected ? /*#__PURE__*/React.createElement(TabbedContentEditor, {
2679
+ content: selected.item,
2680
+ onChange: change
2681
+ }) : "select"));
2682
+ };
2683
+ /**
2684
+ * FieldEditor
2685
+ */
2686
+
2687
+ var FieldEditor = function FieldEditor(_ref4) {
2688
+ var field = _ref4.field,
2689
+ onChange = _ref4.onChange,
2690
+ content = _ref4.content,
2691
+ _ref4$outlined = _ref4.outlined,
2692
+ outlined = _ref4$outlined === void 0 ? false : _ref4$outlined;
2693
+ var id = field.id,
2694
+ type = field.type,
2695
+ item = field.item,
2696
+ label = field.label,
2697
+ editable = field.editable,
2698
+ options = field.options;
2699
+
2700
+ function change(id, value) {
2701
+ if (onChange) onChange(id, value);
2702
+ }
2703
+
2704
+ function renderField() {
2705
+ var value1 = field.value ? field.value : field["default"];
2706
+
2707
+ switch (type) {
2708
+ case TYPES.ENTITY:
2709
+ return /*#__PURE__*/React.createElement(EntityEditor, {
2710
+ field: field,
2711
+ value: value1,
2712
+ onChange: change
2713
+ });
2714
+
2715
+ case TYPES.STRING:
2716
+ return /*#__PURE__*/React.createElement(StringEditor, {
2717
+ outlined: outlined,
2718
+ field: field,
2719
+ value: value1,
2720
+ onChange: change,
2721
+ content: content
2722
+ });
2723
+
2724
+ case TYPES.BOOLEAN:
2725
+ return /*#__PURE__*/React.createElement(CheckBox, {
2726
+ outlined: true,
2727
+ id: id,
2728
+ label: label,
2729
+ value: value1,
2730
+ onChange: change
2731
+ });
2732
+
2733
+ case TYPES.DATE:
2734
+ return /*#__PURE__*/React.createElement(TextField, {
2735
+ outlined: outlined,
2736
+ id: id,
2737
+ type: "date",
2738
+ label: label,
2739
+ value: value1,
2740
+ onChange: change,
2741
+ disabled: editable
2742
+ });
2743
+
2744
+ case TYPES.NUMBER:
2745
+ return /*#__PURE__*/React.createElement(NumberEditor, {
2746
+ outlined: outlined,
2747
+ field: field,
2748
+ value: value1,
2749
+ onChange: change
2750
+ });
2751
+
2752
+ case TYPES.ARRAY:
2753
+ return item === TYPES.STRING ? options ? /*#__PURE__*/React.createElement(MultiSelectionEditor, {
2754
+ content: content,
2755
+ field: field,
2756
+ value: value1,
2757
+ onChange: change
2758
+ }) : /*#__PURE__*/React.createElement(ListEditor, {
2759
+ field: field,
2760
+ value: value1,
2761
+ onChange: change
2762
+ }) : /*#__PURE__*/React.createElement(CollectionEditor$1, {
2763
+ field: field,
2764
+ value: value1,
2765
+ onChange: change
2766
+ });
2767
+
2768
+ default:
2769
+ return /*#__PURE__*/React.createElement("div", null, label);
2770
+ }
2771
+ }
2772
+
2773
+ return renderField();
2774
+ };
2775
+ /**
2776
+ * Entity Editor
2777
+ */
2778
+
2779
+ var EntityEditor = function EntityEditor(_ref5) {
2780
+ var field = _ref5.field,
2781
+ _ref5$value = _ref5.value,
2782
+ value = _ref5$value === void 0 ? {} : _ref5$value,
2783
+ onChange = _ref5.onChange;
2784
+ var id = field.id,
2785
+ item = field.item,
2786
+ label = field.label;
2787
+ var content = new Content(item, value);
2788
+
2789
+ function change(fid, value) {
2790
+ var _Object$assign4;
2791
+
2792
+ var next = Object.assign({}, content.value(), (_Object$assign4 = {}, _Object$assign4[fid] = value, _Object$assign4));
2793
+ if (onChange) onChange(id, next);
2794
+ }
2795
+
2796
+ var form = content.form();
2797
+ var fields = Object.keys(form).map(function (key) {
2798
+ return form[key];
2799
+ });
2800
+ return /*#__PURE__*/React.createElement("div", {
2801
+ className: "entity-editor"
2802
+ }, /*#__PURE__*/React.createElement("header", null, /*#__PURE__*/React.createElement(Text, {
2803
+ use: "caption"
2804
+ }, label)), /*#__PURE__*/React.createElement("main", null, fields.map(function (field) {
2805
+ return /*#__PURE__*/React.createElement(FieldEditor, {
2806
+ key: field.id,
2807
+ field: field,
2808
+ onChange: change
2809
+ });
2810
+ })));
2811
+ };
2812
+ /**
2813
+ * String Editor
2814
+ */
2815
+
2816
+
2817
+ var StringEditor = function StringEditor(_ref6) {
2818
+ var field = _ref6.field,
2819
+ _ref6$value = _ref6.value,
2820
+ value = _ref6$value === void 0 ? '' : _ref6$value,
2821
+ onChange = _ref6.onChange,
2822
+ content = _ref6.content,
2823
+ outlined = _ref6.outlined;
2824
+ var id = field.id,
2825
+ label = field.label,
2826
+ options = field.options,
2827
+ _field$editable = field.editable,
2828
+ editable = _field$editable === void 0 ? true : _field$editable;
2829
+
2830
+ function change(id, value) {
2831
+ if (onChange) onChange(id, value);
2832
+ }
2833
+
2834
+ function buildOptions() {
2835
+ var opts = typeof options === 'function' ? options(field, content) : options;
2836
+ return opts;
2837
+ }
2838
+
2839
+ return /*#__PURE__*/React.createElement("div", {
2840
+ className: "field-editor string-editor"
2841
+ }, editable ? options ? /*#__PURE__*/React.createElement(DropDown, {
2842
+ outlined: outlined,
2843
+ id: id,
2844
+ label: label,
2845
+ value: value,
2846
+ onChange: change,
2847
+ options: buildOptions()
2848
+ }) : /*#__PURE__*/React.createElement(TextField, {
2849
+ outlined: outlined,
2850
+ id: id,
2851
+ label: label,
2852
+ value: value,
2853
+ onChange: change
2854
+ }) : /*#__PURE__*/React.createElement(TextField, {
2855
+ outlined: outlined,
2856
+ id: id,
2857
+ label: label,
2858
+ value: value,
2859
+ onChange: change,
2860
+ readOnly: true
2861
+ }));
2862
+ };
2863
+ /**
2864
+ * Number Editor
2865
+ */
2866
+
2867
+ var NumberEditor = function NumberEditor(_ref7) {
2868
+ var field = _ref7.field,
2869
+ value = _ref7.value,
2870
+ onChange = _ref7.onChange;
2871
+ var id = field.id,
2872
+ label = field.label,
2873
+ _field$editable2 = field.editable,
2874
+ editable = _field$editable2 === void 0 ? true : _field$editable2;
2875
+
2876
+ function change(id, value) {
2877
+ if (onChange) onChange(id, value);
2878
+ }
2879
+
2880
+ var val = value || field["default"];
2881
+ var min = field.min;
2882
+ var max = field.max;
2883
+ var disabled = !editable;
2884
+ return /*#__PURE__*/React.createElement("div", {
2885
+ className: "field-editor number-editor"
2886
+ }, /*#__PURE__*/React.createElement(TextField, {
2887
+ outlined: true,
2888
+ id: id,
2889
+ label: label,
2890
+ type: "NUMBER",
2891
+ value: val,
2892
+ max: max,
2893
+ min: min,
2894
+ onChange: change,
2895
+ disabled: disabled
2896
+ }));
2897
+ };
2898
+ /**
2899
+ * List Editor
2900
+ */
2901
+
2902
+
2903
+ var ListEditor = function ListEditor(_ref8) {
2904
+ var field = _ref8.field,
2905
+ _ref8$value = _ref8.value,
2906
+ value = _ref8$value === void 0 ? [] : _ref8$value,
2907
+ onChange = _ref8.onChange;
2908
+ var label = field.label;
2909
+
2910
+ function change(id, value) {
2911
+ if (onChange) onChange(id, value);
2912
+ }
2913
+
2914
+ return /*#__PURE__*/React.createElement("div", {
2915
+ className: "list-editor"
2916
+ }, /*#__PURE__*/React.createElement(TokenField, {
2917
+ id: field.id,
2918
+ label: label,
2919
+ init: value,
2920
+ onChange: change
2921
+ }));
2922
+ };
2923
+ /**
2924
+ * Multi Selection Editor
2925
+ */
2926
+
2927
+ var MultiSelectionEditor = function MultiSelectionEditor(_ref9) {
2928
+ var field = _ref9.field,
2929
+ _ref9$value = _ref9.value,
2930
+ value = _ref9$value === void 0 ? [] : _ref9$value,
2931
+ content = _ref9.content,
2932
+ onChange = _ref9.onChange;
2933
+ var id = field.id,
2934
+ label = field.label,
2935
+ options = field.options;
2936
+
2937
+ function change(v) {
2938
+ var index = value.indexOf(v);
2939
+
2940
+ if (index >= 0) {
2941
+ value.splice(index, 1);
2942
+ } else {
2943
+ value.push(v);
2944
+ }
2945
+
2946
+ if (onChange) onChange(id, value);
2947
+ }
2948
+
2949
+ function buildOptions() {
2950
+ var opts = typeof options === 'function' ? options(field, content) : options;
2951
+ return opts;
2952
+ }
2953
+
2954
+ return /*#__PURE__*/React.createElement("div", {
2955
+ className: "multiselection-editor"
2956
+ }, /*#__PURE__*/React.createElement("label", null, label), buildOptions().map(function (option) {
2957
+ var checked = value.includes(option.value);
2958
+ return /*#__PURE__*/React.createElement(CheckBox, {
2959
+ value: checked,
2960
+ label: option.label,
2961
+ onChange: function onChange() {
2962
+ return change(option.value);
2963
+ }
2964
+ });
2965
+ }));
2966
+ };
2967
+ /**
2968
+ * Collection Editor
2969
+ */
2970
+
2971
+ var CollectionEditor$1 = function CollectionEditor(_ref10) {
2972
+ var field = _ref10.field,
2973
+ _ref10$value = _ref10.value,
2974
+ value = _ref10$value === void 0 ? [] : _ref10$value,
2975
+ onChange = _ref10.onChange;
2976
+ var id = field.id,
2977
+ item = field.item,
2978
+ label = field.label,
2979
+ Feeder = field.Feeder,
2980
+ Renderer = field.Renderer,
2981
+ _field$Adder = field.Adder,
2982
+ Adder = _field$Adder === void 0 ? true : _field$Adder,
2983
+ _field$editable3 = field.editable,
2984
+ editable = _field$editable3 === void 0 ? true : _field$editable3;
2985
+
2986
+ function add(rows) {
2987
+ if (onChange) {
2988
+ var next = value.concat(rows);
2989
+ onChange(id, next);
2990
+ }
2991
+ }
2992
+
2993
+ function remove(index) {
2994
+ if (onChange) {
2995
+ var next = value.filter(function (item, i) {
2996
+ return i !== index;
2997
+ });
2998
+ onChange(id, next);
2999
+ }
3000
+ }
3001
+
3002
+ function change(index, cellId, cellValue) {
3003
+ if (onChange) {
3004
+ var next = value.slice();
3005
+ next[index][cellId] = cellValue;
3006
+ onChange(id, next);
3007
+ }
3008
+ }
3009
+
3010
+ var columns = Object.values(item).map(function (item) {
3011
+ return _extends({}, item, {
3012
+ onChange: change
3013
+ });
3014
+ });
3015
+ columns.push({
3016
+ id: 'actions',
3017
+ label: 'Actions'
3018
+ });
3019
+ var rows = value.map(function (item, index) {
3020
+ return _extends({}, item, {
3021
+ id: index,
3022
+ actions: [/*#__PURE__*/React.createElement(Icon, {
3023
+ icon: "delete",
3024
+ clickable: true,
3025
+ action: function action() {
3026
+ return remove(index);
3027
+ },
3028
+ small: true
3029
+ })]
3030
+ });
3031
+ });
3032
+ var table = {
3033
+ columns: columns,
3034
+ rows: rows
3035
+ };
3036
+ return /*#__PURE__*/React.createElement("div", {
3037
+ className: "collection-editor"
3038
+ }, /*#__PURE__*/React.createElement("header", null, /*#__PURE__*/React.createElement(Text, {
3039
+ use: "caption"
3040
+ }, label), /*#__PURE__*/React.createElement("div", {
3041
+ className: "actions"
3042
+ }, Feeder ? /*#__PURE__*/React.createElement(Feeder, {
3043
+ onAdd: add
3044
+ }) : null)), Renderer ? /*#__PURE__*/React.createElement(Renderer, {
3045
+ field: field,
3046
+ value: value,
3047
+ onRemove: remove,
3048
+ onChange: onChange
3049
+ }) : /*#__PURE__*/React.createElement(DataTable, _extends({}, table, {
3050
+ editable: editable
3051
+ })), /*#__PURE__*/React.createElement("footer", null, Adder ? /*#__PURE__*/React.createElement(CollectionAdder, {
3052
+ item: item,
3053
+ onAdd: add
3054
+ }) : null));
3055
+ };
3056
+ /**
3057
+ * Collection Adder
3058
+ */
3059
+
3060
+ var CollectionAdder = function CollectionAdder(_ref11) {
3061
+ var item = _ref11.item,
3062
+ onAdd = _ref11.onAdd;
3063
+
3064
+ var _useState3 = useState(false),
3065
+ edit = _useState3[0],
3066
+ setEdit = _useState3[1];
3067
+
3068
+ var _useState4 = useState({}),
3069
+ form = _useState4[0],
3070
+ setForm = _useState4[1];
3071
+
3072
+ function toggle() {
3073
+ setEdit(!edit);
3074
+ }
3075
+
3076
+ function change(index, cellId, cellValue) {
3077
+ if (onAdd) {
3078
+ var _Object$assign5;
3079
+
3080
+ var next = Object.assign({}, form, (_Object$assign5 = {}, _Object$assign5[cellId] = cellValue, _Object$assign5));
3081
+ setForm(next);
3082
+ }
3083
+ }
3084
+
3085
+ function save() {
3086
+ if (onAdd) onAdd([form]);
3087
+ toggle();
3088
+ }
3089
+
3090
+ var columns = Object.values(item).map(function (item) {
3091
+ return _extends({}, item, {
3092
+ type: 'String',
3093
+ onChange: change
3094
+ });
3095
+ });
3096
+ columns.push({
3097
+ id: 'actions',
3098
+ label: ''
3099
+ });
3100
+ var rows = [{
3101
+ actions: [/*#__PURE__*/React.createElement(Icon, {
3102
+ icon: "done",
3103
+ clickable: true,
3104
+ action: save
3105
+ }), /*#__PURE__*/React.createElement(Icon, {
3106
+ icon: "close",
3107
+ clickable: true,
3108
+ action: toggle
3109
+ })]
3110
+ }];
3111
+ rows[0] = Object.assign({}, form, rows[0]);
3112
+ var table = {
3113
+ columns: columns,
3114
+ rows: rows
3115
+ };
3116
+ return /*#__PURE__*/React.createElement("div", {
3117
+ className: "collection-adder"
3118
+ }, edit ? /*#__PURE__*/React.createElement(DataTable, _extends({}, table, {
3119
+ editable: true
3120
+ })) : /*#__PURE__*/React.createElement(Button, {
3121
+ icon: "add",
3122
+ label: "Add",
3123
+ action: toggle
3124
+ }));
3125
+ };
3126
+
3127
+ /**
3128
+ * Create Content Dialog
3129
+ */
3130
+
3131
+ var CreateContentDialog = function CreateContentDialog(_ref) {
3132
+ var label = _ref.label,
3133
+ type = _ref.type,
3134
+ validator = _ref.validator,
3135
+ onOK = _ref.onOK,
3136
+ _ref$onActionClose = _ref.onActionClose,
3137
+ onActionClose = _ref$onActionClose === void 0 ? true : _ref$onActionClose;
3138
+ var site = useContext(SiteContext);
3139
+
3140
+ var _useState = useState({}),
3141
+ form = _useState[0],
3142
+ setForm = _useState[1];
3143
+
3144
+ var _useState2 = useState(false),
3145
+ isValid = _useState2[0],
3146
+ setValid = _useState2[1];
3147
+
3148
+ var _useState3 = useState([]),
3149
+ errors = _useState3[0],
3150
+ setErrors = _useState3[1];
3151
+
3152
+ function change(form, validForm) {
3153
+ setForm(form);
3154
+
3155
+ if (validator) {
3156
+ var _validator = validator(form),
3157
+ validation = _validator.validation,
3158
+ _validator$errors = _validator.errors,
3159
+ _errors = _validator$errors === void 0 ? [] : _validator$errors;
3160
+
3161
+ setValid(validForm && validation);
3162
+ setErrors(_errors);
3163
+ } else {
3164
+ setValid(validForm);
3165
+ }
3166
+ }
3167
+
3168
+ function onAction(action) {
3169
+ if (action === 'OK' && onOK) onOK(form);
3170
+ if (action === 'CLOSE' || onActionClose === true) site.closeDialog();
3171
+ }
3172
+
3173
+ function isRequired(field) {
3174
+ var _field$required = field.required,
3175
+ required = _field$required === void 0 ? false : _field$required;
3176
+ return required;
3177
+ }
3178
+
3179
+ function isOptional(field) {
3180
+ var _field$creation = field.creation,
3181
+ creation = _field$creation === void 0 ? false : _field$creation;
3182
+ return creation;
3183
+ }
3184
+
3185
+ var actions = /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Button, {
3186
+ label: "CLOSE",
3187
+ action: function action() {
3188
+ return onAction("CLOSE");
3189
+ }
3190
+ }), /*#__PURE__*/React.createElement(Button, {
3191
+ label: "OK",
3192
+ action: function action() {
3193
+ return onAction("OK");
3194
+ },
3195
+ disabled: !isValid,
3196
+ raised: true
3197
+ }));
3198
+ var title = /*#__PURE__*/React.createElement(Text, {
3199
+ use: "headline6"
3200
+ }, label);
3201
+ var content = new Content(type, form);
3202
+ return /*#__PURE__*/React.createElement(Dialog, {
3203
+ title: title,
3204
+ open: true,
3205
+ onAction: onAction,
3206
+ actions: actions
3207
+ }, /*#__PURE__*/React.createElement(ContentForm, {
3208
+ content: content,
3209
+ filter: function filter(field) {
3210
+ return isRequired(field) || isOptional(field);
3211
+ },
3212
+ onChange: change
3213
+ }), errors.map(function (error) {
3214
+ return /*#__PURE__*/React.createElement(Text, {
3215
+ use: "overline",
3216
+ tag: "div",
3217
+ className: "error"
3218
+ }, error);
3219
+ }));
3220
+ };
3221
+
3222
+ /**
3223
+ * Edit Content Dialog
3224
+ */
3225
+
3226
+ var EditContentDialog = function EditContentDialog(_ref) {
3227
+ var label = _ref.label,
3228
+ type = _ref.type,
3229
+ _ref$value = _ref.value,
3230
+ value = _ref$value === void 0 ? {} : _ref$value,
3231
+ filter = _ref.filter,
3232
+ validator = _ref.validator,
3233
+ onOK = _ref.onOK;
3234
+ var site = useContext(SiteContext);
3235
+
3236
+ var _useState = useState(value),
3237
+ form = _useState[0],
3238
+ setForm = _useState[1];
3239
+
3240
+ var _useState2 = useState(false),
3241
+ isValid = _useState2[0],
3242
+ setValid = _useState2[1];
3243
+
3244
+ var _useState3 = useState([]),
3245
+ errors = _useState3[0],
3246
+ setErrors = _useState3[1];
3247
+
3248
+ function change(form) {
3249
+ setForm(form);
3250
+
3251
+ if (validator) {
3252
+ var _validator = validator(form),
3253
+ validation = _validator.validation,
3254
+ _validator$errors = _validator.errors,
3255
+ _errors = _validator$errors === void 0 ? [] : _validator$errors;
3256
+
3257
+ setValid(validation);
3258
+ setErrors(_errors);
3259
+ } else {
3260
+ setValid(true);
3261
+ }
3262
+ }
3263
+
3264
+ function onAction(action) {
3265
+ if (action === 'OK' && onOK) onOK(Object.assign({}, value, form));
3266
+ site.closeDialog();
3267
+ }
3268
+
3269
+ var actions = /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Button, {
3270
+ label: "CLOSE",
3271
+ action: function action() {
3272
+ return onAction("CLOSE");
3273
+ }
3274
+ }), /*#__PURE__*/React.createElement("div", {
3275
+ className: "expand"
3276
+ }), /*#__PURE__*/React.createElement(Button, {
3277
+ label: "OK",
3278
+ action: function action() {
3279
+ return onAction("OK");
3280
+ },
3281
+ disabled: !isValid,
3282
+ raised: true
3283
+ }));
3284
+ var title = /*#__PURE__*/React.createElement(Text, {
3285
+ use: "headline6"
3286
+ }, label);
3287
+ var content = new Content(type, form);
3288
+ return /*#__PURE__*/React.createElement(Dialog, {
3289
+ title: title,
3290
+ open: true,
3291
+ onAction: onAction,
3292
+ actions: actions
3293
+ }, /*#__PURE__*/React.createElement(ContentEditor, {
3294
+ content: content,
3295
+ onChange: change,
3296
+ filter: filter
3297
+ }), errors.map(function (error) {
3298
+ return /*#__PURE__*/React.createElement(Text, {
3299
+ use: "overline",
3300
+ tag: "div",
3301
+ className: "error"
3302
+ }, error);
3303
+ }));
3304
+ };
3305
+
3306
+ function _catch(body, recover) {
3307
+ try {
3308
+ var result = body();
3309
+ } catch (e) {
3310
+ return recover(e);
3311
+ }
3312
+
3313
+ if (result && result.then) {
3314
+ return result.then(void 0, recover);
3315
+ }
3316
+
3317
+ return result;
3318
+ }
3319
+
3320
+ var http = HTTPClient(window.API || process.env.REACT_APP_API, Session);
3321
+ /**
3322
+ * Collection Page
3323
+ */
3324
+
3325
+ var CollectionPage = function CollectionPage(props) {
3326
+ var reload = function reload() {
3327
+ try {
3328
+ return Promise.resolve(pageContext.load()).then(function () {
3329
+ setPageContext(Object.assign({}, pageContext));
3330
+ });
3331
+ } catch (e) {
3332
+ return Promise.reject(e);
3333
+ }
3334
+ };
3335
+
3336
+ var site = useContext(SiteContext);
3337
+ var _props$id = props.id,
3338
+ id = _props$id === void 0 ? "collection" : _props$id,
3339
+ icon = props.icon,
3340
+ title = props.title,
3341
+ _props$name = props.name,
3342
+ name = _props$name === void 0 ? "Collection 1" : _props$name,
3343
+ schema = props.schema,
3344
+ url = props.url,
3345
+ groupBy = props.groupBy,
3346
+ editor = props.editor,
3347
+ field = props.field,
3348
+ _props$autosave = props.autosave,
3349
+ autosave = _props$autosave === void 0 ? false : _props$autosave,
3350
+ _props$delay = props.delay,
3351
+ delay = _props$delay === void 0 ? 1000 : _props$delay,
3352
+ actions = props.actions,
3353
+ levels = props.levels;
3354
+
3355
+ var _useContext = useContext(PageContext),
3356
+ pageContext = _useContext[0],
3357
+ setPageContext = _useContext[1];
3358
+
3359
+ var context = CollectionContext(url, field);
3360
+ useEffect(function () {
3361
+ try {
3362
+ return Promise.resolve(context.load()).then(function () {
3363
+ setPageContext(context);
3364
+ });
3365
+ } catch (e) {
3366
+ return Promise.reject(e);
3367
+ }
3368
+ }, []);
3369
+
3370
+ function add() {
3371
+ var onOK = function onOK(form) {
3372
+ try {
3373
+ return Promise.resolve(pageContext.create(form)).then(function () {
3374
+ setPageContext(Object.assign({}, pageContext));
3375
+ });
3376
+ } catch (e) {
3377
+ return Promise.reject(e);
3378
+ }
3379
+ };
3380
+
3381
+ site.openDialog( /*#__PURE__*/React.createElement(EditContentDialog, {
3382
+ label: "Crear " + name,
3383
+ type: schema,
3384
+ onOK: onOK
3385
+ }));
3386
+ }
3387
+
3388
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Header, {
3389
+ className: "collection-page",
3390
+ title: /*#__PURE__*/React.createElement(Text, null, title)
3391
+ }, /*#__PURE__*/React.createElement(Button, {
3392
+ icon: "add",
3393
+ label: "Add",
3394
+ action: add
3395
+ }), /*#__PURE__*/React.createElement(Button, {
3396
+ icon: "refresh",
3397
+ label: "Reload",
3398
+ action: reload
3399
+ }), actions), /*#__PURE__*/React.createElement("menu", {
3400
+ className: "collection-page"
3401
+ }, /*#__PURE__*/React.createElement(Header, {
3402
+ title: /*#__PURE__*/React.createElement(Text, null, "Lista de ", name)
3403
+ }), levels ? /*#__PURE__*/React.createElement(CollectionTree, {
3404
+ levels: levels
3405
+ }) : /*#__PURE__*/React.createElement(CollectionList, {
3406
+ groupBy: groupBy
3407
+ })), /*#__PURE__*/React.createElement("main", {
3408
+ key: id,
3409
+ className: "collection-page"
3410
+ }, /*#__PURE__*/React.createElement(CollectionEditor, {
3411
+ icon: icon,
3412
+ schema: schema,
3413
+ layout: editor,
3414
+ autosave: autosave,
3415
+ delay: delay
3416
+ })));
3417
+ };
3418
+ /**
3419
+ * Collection List
3420
+ */
3421
+
3422
+ var CollectionList = function CollectionList(props) {
3423
+ var select = function select(id) {
3424
+ try {
3425
+ clear();
3426
+ return Promise.resolve(pageContext.select(id)).then(function () {
3427
+ setPageContext(Object.assign({}, pageContext));
3428
+ });
3429
+ } catch (e) {
3430
+ return Promise.reject(e);
3431
+ }
3432
+ };
3433
+
3434
+ var groupBy = props.groupBy;
3435
+
3436
+ var _useContext2 = useContext(PageContext),
3437
+ pageContext = _useContext2[0],
3438
+ setPageContext = _useContext2[1];
3439
+
3440
+ var _pageContext$all = pageContext.all,
3441
+ all = _pageContext$all === void 0 ? [] : _pageContext$all;
3442
+
3443
+ function clear() {
3444
+ pageContext.clear();
3445
+ setPageContext(Object.assign({}, pageContext));
3446
+ }
3447
+
3448
+ var items = all ? all.map(function (content) {
3449
+ return {
3450
+ id: content.id,
3451
+ line1: content.name,
3452
+ line2: content.description,
3453
+ content: content
3454
+ };
3455
+ }) : [];
3456
+ return /*#__PURE__*/React.createElement(List, {
3457
+ items: items,
3458
+ onSelect: select,
3459
+ groupBy: groupBy
3460
+ });
3461
+ };
3462
+ /**
3463
+ * Collection Tree
3464
+ */
3465
+
3466
+
3467
+ var CollectionTree = function CollectionTree(props) {
3468
+ var select = function select(id) {
3469
+ try {
3470
+ clear();
3471
+ return Promise.resolve(pageContext.select(id)).then(function () {
3472
+ setPageContext(Object.assign({}, pageContext));
3473
+ });
3474
+ } catch (e) {
3475
+ return Promise.reject(e);
3476
+ }
3477
+ };
3478
+
3479
+ var levels = props.levels;
3480
+
3481
+ var _useContext3 = useContext(PageContext),
3482
+ pageContext = _useContext3[0],
3483
+ setPageContext = _useContext3[1];
3484
+
3485
+ var _pageContext$all2 = pageContext.all,
3486
+ all = _pageContext$all2 === void 0 ? [] : _pageContext$all2;
3487
+
3488
+ function clear() {
3489
+ pageContext.clear();
3490
+ setPageContext(Object.assign({}, pageContext));
3491
+ }
3492
+
3493
+ function group(items, by) {
3494
+ return items.reduce(function (nodes, field) {
3495
+ var node = nodes.find(function (n) {
3496
+ return n.name === field[by];
3497
+ });
3498
+
3499
+ if (!node) {
3500
+ var name = field[by];
3501
+ node = {
3502
+ name: name,
3503
+ items: [],
3504
+ field: by
3505
+ };
3506
+ nodes.push(node);
3507
+ }
3508
+
3509
+ node.items.push(field);
3510
+ return nodes;
3511
+ }, []);
3512
+ }
3513
+
3514
+ function generateNodes(levels, items) {
3515
+ var by = levels[0];
3516
+ var nodes = group(items, by);
3517
+ if (levels.length > 1) nodes.forEach(function (node) {
3518
+ return node.nodes = generateNodes(levels.slice(1), node.items);
3519
+ });
3520
+ return nodes;
3521
+ }
3522
+
3523
+ function renderNodes(nodes) {
3524
+ return nodes.map(function (node) {
3525
+ var title = typeof node.name === 'boolean' ? node.field + " = " + node.name : node.name;
3526
+ return /*#__PURE__*/React.createElement(TreeNode, {
3527
+ key: node.name,
3528
+ icon: null,
3529
+ label: title,
3530
+ open: true
3531
+ }, node.nodes ? renderNodes(node.nodes) : node.items.map(function (item) {
3532
+ return /*#__PURE__*/React.createElement(TreeItem, {
3533
+ key: item.id,
3534
+ id: item.id,
3535
+ label: item.name,
3536
+ onSelect: select
3537
+ }, "item");
3538
+ }));
3539
+ });
3540
+ }
3541
+
3542
+ var nodes = generateNodes(levels, all);
3543
+ return /*#__PURE__*/React.createElement("main", null, /*#__PURE__*/React.createElement(Tree, null, renderNodes(nodes)));
3544
+ };
3545
+ /**
3546
+ * Collection Editor
3547
+ */
3548
+
3549
+
3550
+ var CollectionEditor = function CollectionEditor(props) {
3551
+ var save = function save() {
3552
+ try {
3553
+ console.log('saving.....');
3554
+ return Promise.resolve(pageContext.update(form)).then(function () {
3555
+ setPageContext(Object.assign({}, pageContext));
3556
+ });
3557
+ } catch (e) {
3558
+ return Promise.reject(e);
3559
+ }
3560
+ };
3561
+
3562
+ var remove = function remove() {
3563
+ try {
3564
+ return Promise.resolve(pageContext.remove(selected.id)).then(function () {
3565
+ pageContext.clear();
3566
+ setPageContext(Object.assign({}, pageContext));
3567
+ });
3568
+ } catch (e) {
3569
+ return Promise.reject(e);
3570
+ }
3571
+ };
3572
+
3573
+ var _useContext4 = useContext(PageContext),
3574
+ pageContext = _useContext4[0],
3575
+ setPageContext = _useContext4[1];
3576
+
3577
+ var selected = pageContext.selected;
3578
+ var icon = props.icon,
3579
+ schema = props.schema,
3580
+ layout = props.layout,
3581
+ _props$autosave2 = props.autosave,
3582
+ autosave = _props$autosave2 === void 0 ? false : _props$autosave2,
3583
+ _props$delay2 = props.delay,
3584
+ delay = _props$delay2 === void 0 ? 1000 : _props$delay2;
3585
+ var timer = useRef(null);
3586
+
3587
+ var _useState = useState(selected),
3588
+ form = _useState[0],
3589
+ setForm = _useState[1];
3590
+
3591
+ useEffect(function () {
3592
+ setForm(selected);
3593
+ }, [selected]);
3594
+ useEffect(function () {
3595
+ if (autosave) {
3596
+ clearTimeout(timer.current);
3597
+ timer.current = setTimeout(function () {
3598
+ if (canSave()) save();
3599
+ }, delay);
3600
+ }
3601
+ }, [form]);
3602
+
3603
+ function clear() {
3604
+ pageContext.clear();
3605
+ setPageContext(Object.assign({}, pageContext));
3606
+ }
3607
+
3608
+ function change(next) {
3609
+ setForm(next);
3610
+ }
3611
+
3612
+ function canSave() {
3613
+ var can = !equal(form, selected);
3614
+ return can;
3615
+ }
3616
+
3617
+ function renderEditor() {
3618
+ var content = new Content(schema, form);
3619
+
3620
+ switch (layout) {
3621
+ case 'TABBED':
3622
+ return /*#__PURE__*/React.createElement(TabbedContentEditor, _extends({}, props, {
3623
+ content: content,
3624
+ onChange: change
3625
+ }));
3626
+
3627
+ case 'TREEDED':
3628
+ return /*#__PURE__*/React.createElement(TreededContentEditor, _extends({}, props, {
3629
+ content: content,
3630
+ onChange: change
3631
+ }));
3632
+
3633
+ default:
3634
+ return /*#__PURE__*/React.createElement(ContentEditor, _extends({}, props, {
3635
+ content: content,
3636
+ onChange: change
3637
+ }));
3638
+ }
3639
+ }
3640
+
3641
+ return selected && form ? /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Header, {
3642
+ icon: icon,
3643
+ title: /*#__PURE__*/React.createElement(Text, null, selected.name)
3644
+ }, /*#__PURE__*/React.createElement(Icon, {
3645
+ icon: "close",
3646
+ clickable: true,
3647
+ action: clear
3648
+ }), /*#__PURE__*/React.createElement(MenuIcon, {
3649
+ align: "alignRight"
3650
+ }, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement(MenuItem, {
3651
+ label: "Eliminar",
3652
+ onSelect: remove
3653
+ }))), autosave === true ? null : /*#__PURE__*/React.createElement(Button, {
3654
+ icon: "save",
3655
+ label: "Guardar Cambios",
3656
+ raised: true,
3657
+ disabled: !canSave(),
3658
+ action: save
3659
+ })), renderEditor()) : null;
3660
+ };
3661
+ /**
3662
+ * Collection Context
3663
+ */
3664
+
3665
+
3666
+ var CollectionContext = function CollectionContext(url, field) {
3667
+ var API = CollectionAPI(url);
3668
+ return {
3669
+ all: [],
3670
+ selected: null,
3671
+ load: function load() {
3672
+ try {
3673
+ var _this2 = this;
3674
+
3675
+ var _temp2 = _catch(function () {
3676
+ return Promise.resolve(API.all()).then(function (data) {
3677
+ _this2.all = field ? data[field] : data;
3678
+ });
3679
+ }, function (error) {
3680
+ console.log(error);
3681
+ });
3682
+
3683
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
3684
+ } catch (e) {
3685
+ return Promise.reject(e);
3686
+ }
3687
+ },
3688
+ select: function select(id) {
3689
+ var result = this.all.find(function (item) {
3690
+ return item.id === id;
3691
+ });
3692
+ this.selected = result;
3693
+ },
3694
+ clear: function clear() {
3695
+ this.selected = null;
3696
+ },
3697
+ create: function create(form) {
3698
+ try {
3699
+ var _this4 = this;
3700
+
3701
+ var _temp4 = _catch(function () {
3702
+ return Promise.resolve(API.create(form)).then(function () {
3703
+ return Promise.resolve(_this4.load()).then(function () {});
3704
+ });
3705
+ }, function (error) {
3706
+ console.log("CREATE ERROR", error);
3707
+ });
3708
+
3709
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
3710
+ } catch (e) {
3711
+ return Promise.reject(e);
3712
+ }
3713
+ },
3714
+ update: function update(form) {
3715
+ try {
3716
+ var _this6 = this;
3717
+
3718
+ var _temp6 = _catch(function () {
3719
+ return Promise.resolve(API.update(form)).then(function () {
3720
+ return Promise.resolve(_this6.load()).then(function () {});
3721
+ });
3722
+ }, function (error) {
3723
+ console.log(error);
3724
+ });
3725
+
3726
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
3727
+ } catch (e) {
3728
+ return Promise.reject(e);
3729
+ }
3730
+ },
3731
+ patch: function patch(id, form) {
3732
+ try {
3733
+ var _this8 = this;
3734
+
3735
+ var _temp8 = _catch(function () {
3736
+ return Promise.resolve(API.patch(id, form)).then(function () {
3737
+ return Promise.resolve(_this8.load()).then(function () {});
3738
+ });
3739
+ }, function (error) {
3740
+ console.log(error);
3741
+ });
3742
+
3743
+ return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(function () {}) : void 0);
3744
+ } catch (e) {
3745
+ return Promise.reject(e);
3746
+ }
3747
+ },
3748
+ updateProperty: function updateProperty(id, propertyName, form) {
3749
+ try {
3750
+ var _this10 = this;
3751
+
3752
+ var _temp10 = _catch(function () {
3753
+ return Promise.resolve(API.updateProperty(id, propertyName, form)).then(function () {
3754
+ return Promise.resolve(_this10.load()).then(function () {});
3755
+ });
3756
+ }, function (error) {
3757
+ console.log(error);
3758
+ });
3759
+
3760
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(function () {}) : void 0);
3761
+ } catch (e) {
3762
+ return Promise.reject(e);
3763
+ }
3764
+ },
3765
+ remove: function remove(id) {
3766
+ try {
3767
+ var _this12 = this;
3768
+
3769
+ var _temp12 = _catch(function () {
3770
+ return Promise.resolve(API.remove(id)).then(function () {
3771
+ return Promise.resolve(_this12.load()).then(function () {});
3772
+ });
3773
+ }, function (error) {
3774
+ console.log(error);
3775
+ });
3776
+
3777
+ return Promise.resolve(_temp12 && _temp12.then ? _temp12.then(function () {}) : void 0);
3778
+ } catch (e) {
3779
+ return Promise.reject(e);
3780
+ }
3781
+ }
3782
+ };
3783
+ };
3784
+ /**
3785
+ * Collection API
3786
+ */
3787
+
3788
+ var CollectionAPI = function CollectionAPI(url) {
3789
+ return {
3790
+ all: function all() {
3791
+ return http.GET(url);
3792
+ },
3793
+ find: function find(id) {
3794
+ return http.GET(url + "/" + id);
3795
+ },
3796
+ create: function create(form) {
3797
+ var body = JSON.stringify(form);
3798
+ return http.POST(url, body);
3799
+ },
3800
+ update: function update(form) {
3801
+ var body = JSON.stringify(form);
3802
+ return http.PUT(url + "/" + form.id, body);
3803
+ },
3804
+ patch: function patch(id, form) {
3805
+ var body = JSON.stringify(form);
3806
+ return http.PATCH(url + "/" + id, body);
3807
+ },
3808
+ updateProperty: function updateProperty(id, propertyName, form) {
3809
+ var body = JSON.stringify(form);
3810
+ return http.PUT(url + "/" + id + "/" + propertyName, body);
3811
+ },
3812
+ remove: function remove(id) {
3813
+ return http.DELETE(url + "/" + id);
3814
+ }
3815
+ };
3816
+ };
3817
+
3818
+ /**
3819
+ * Component
3820
+ */
3821
+
3822
+ var UploadArea = function UploadArea(props) {
3823
+ var STATES = {
3824
+ 'IDLE': 0,
3825
+ 'RUNNING': 1,
3826
+ 'SUCCESS': 2,
3827
+ 'ERROR': 3
3828
+ };
3829
+ var areaElement = useRef();
3830
+
3831
+ var _useState = useState(false),
3832
+ drag = _useState[0],
3833
+ setDrag = _useState[1];
3834
+
3835
+ useEffect(function () {
3836
+ var resumable = props.resumable;
3837
+ if (resumable && areaElement) resumable.assignDrop(areaElement.current);
3838
+ }, []);
3839
+
3840
+ var onDragOver = function onDragOver() {
3841
+ setDrag(true);
3842
+ };
3843
+
3844
+ var onDragLeave = function onDragLeave() {
3845
+ setDrag(false);
3846
+ };
3847
+
3848
+ var _props$state = props.state,
3849
+ state = _props$state === void 0 ? STATES.IDLE : _props$state,
3850
+ _props$label = props.label,
3851
+ label = _props$label === void 0 ? 'Add file or drop file here...' : _props$label,
3852
+ error = props.error;
3853
+ var dragging = drag === true ? 'drag-over' : '';
3854
+ return /*#__PURE__*/React.createElement("div", {
3855
+ className: "upload-area6 " + dragging,
3856
+ onDragOver: onDragOver,
3857
+ onDragLeave: onDragLeave,
3858
+ ref: areaElement
3859
+ }, state === STATES.IDLE ? /*#__PURE__*/React.createElement(UploadIcon, {
3860
+ resumable: props.resumable
3861
+ }) : '', state === STATES.IDLE ? /*#__PURE__*/React.createElement("label", null, label) : '', state === STATES.RUNNING ? /*#__PURE__*/React.createElement(CircularProgress, {
3862
+ size: "xlarge"
3863
+ }) : '', state === STATES.SUCCESS ? /*#__PURE__*/React.createElement(Icon, {
3864
+ icon: "done_all"
3865
+ }) : '', state === STATES.ERROR ? /*#__PURE__*/React.createElement(Text, {
3866
+ use: "body1"
3867
+ }, error) : '', props.children);
3868
+ };
3869
+ /**
3870
+ * Component
3871
+ */
3872
+
3873
+ var UploadIcon = function UploadIcon(_ref) {
3874
+ var resumable = _ref.resumable;
3875
+ var iconElement = useRef();
3876
+ useEffect(function () {
3877
+ if (resumable && iconElement) resumable.assignBrowse(iconElement.current);
3878
+ }, []);
3879
+ return /*#__PURE__*/React.createElement("div", {
3880
+ className: "upload-icon",
3881
+ ref: iconElement
3882
+ }, /*#__PURE__*/React.createElement(Icon, {
3883
+ icon: "folder_open",
3884
+ clickable: true
3885
+ }));
3886
+ };
3887
+
3888
+ /**
3889
+ * Uploader
3890
+ */
3891
+
3892
+ var Uploader = function Uploader(_ref) {
3893
+ var label = _ref.label,
3894
+ target = _ref.target,
3895
+ accept = _ref.accept,
3896
+ className = _ref.className,
3897
+ onSuccess = _ref.onSuccess,
3898
+ onError = _ref.onError,
3899
+ onComplete = _ref.onComplete;
3900
+ var STATES = {
3901
+ 'IDLE': 0,
3902
+ 'RUNNING': 1,
3903
+ 'SUCCESS': 2,
3904
+ 'ERROR': 3,
3905
+ 'COMPLETED': 4
3906
+ };
3907
+ var resumable = useMemo(function () {
3908
+ var config = {
3909
+ target: target,
3910
+ chunkSize: 1 * 1024 * 1024,
3911
+ simultaneousUploads: 1,
3912
+ testChunks: false,
3913
+ throttleProgressCallbacks: 1,
3914
+ fileType: accept
3915
+ };
3916
+ var resumable = new ResumableJS(config);
3917
+ resumable.on('fileAdded', onFileAdded);
3918
+ resumable.on('fileProgress', onFileProgress);
3919
+ resumable.on('fileSuccess', onFileSuccess);
3920
+ resumable.on('fileError', onFileError);
3921
+ resumable.on('complete', onAllComplete);
3922
+ return resumable;
3923
+ }, []);
3924
+
3925
+ var _useState = useState(0),
3926
+ setProgress = _useState[1];
3927
+
3928
+ var _useState2 = useState(STATES.IDLE),
3929
+ state = _useState2[0],
3930
+ setState = _useState2[1];
3931
+
3932
+ var _useState3 = useState(),
3933
+ error = _useState3[0],
3934
+ setError = _useState3[1];
3935
+
3936
+ var _useState4 = useState([]),
3937
+ files = _useState4[0],
3938
+ setFiles = _useState4[1];
3939
+
3940
+ function onFileAdded(file) {
3941
+ files.push(file);
3942
+ setFiles(files);
3943
+ resumable.upload();
3944
+ }
3945
+
3946
+ function onFileProgress(file) {
3947
+ var progress = file.progress();
3948
+ setProgress(progress);
3949
+ }
3950
+
3951
+ function onFileSuccess(file, message) {
3952
+ setState(STATES.SUCCESS);
3953
+ if (onSuccess) onSuccess(file, message);
3954
+ }
3955
+
3956
+ function onFileError(file, message) {
3957
+ setError(message);
3958
+ setState(STATES.ERROR);
3959
+ if (onError) onError(file, message);
3960
+ }
3961
+
3962
+ function onAllComplete() {
3963
+ setState(STATES.IDLE);
3964
+ if (onComplete) onComplete(files);
3965
+ }
3966
+
3967
+ return /*#__PURE__*/React.createElement("div", {
3968
+ className: "uploader " + className
3969
+ }, /*#__PURE__*/React.createElement(UploadArea, {
3970
+ resumable: resumable,
3971
+ state: state,
3972
+ label: label,
3973
+ error: error
3974
+ }));
3975
+ };
3976
+
3977
+ /**
3978
+ * Upload File
3979
+ */
3980
+
3981
+ var UploadFile = function UploadFile(_ref) {
3982
+ var file = _ref.file,
3983
+ state = _ref.state,
3984
+ progress = _ref.progress,
3985
+ error = _ref.error;
3986
+ var STATES = {
3987
+ 'IDLE': 0,
3988
+ 'RUNNING': 1,
3989
+ 'SUCCESS': 2,
3990
+ 'ERROR': 3
3991
+ };
3992
+ var icon = error ? /*#__PURE__*/React.createElement(Icon, {
3993
+ icon: "image",
3994
+ className: "error"
3995
+ }) : /*#__PURE__*/React.createElement(Icon, {
3996
+ icon: "image"
3997
+ });
3998
+ return state !== STATES.IDLE ? /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement("div", {
3999
+ className: "upload-file"
4000
+ }, icon, /*#__PURE__*/React.createElement(Text, {
4001
+ use: "body1",
4002
+ tag: "label"
4003
+ }, file.fileName), state === STATES.RUNNING ? /*#__PURE__*/React.createElement(LinearProgress, {
4004
+ progress: progress
4005
+ }) : '', state === STATES.RUNNING ? /*#__PURE__*/React.createElement(Icon, {
4006
+ icon: "close",
4007
+ clickable: true
4008
+ }) : '', state === STATES.SUCCESS ? /*#__PURE__*/React.createElement(Icon, {
4009
+ icon: "done"
4010
+ }) : '', state === STATES.ERROR ? /*#__PURE__*/React.createElement(Icon, {
4011
+ icon: "error"
4012
+ }) : ''), error ? /*#__PURE__*/React.createElement("div", {
4013
+ className: "error"
4014
+ }, /*#__PURE__*/React.createElement(Text, {
4015
+ use: "overline"
4016
+ }, error)) : '') : '';
4017
+ };
4018
+
4019
+ /**
4020
+ * Upload Dialog
4021
+ */
4022
+
4023
+ var UploadDialog = function UploadDialog(_ref) {
4024
+ var label = _ref.label,
4025
+ target = _ref.target,
4026
+ accept = _ref.accept,
4027
+ onSuccess = _ref.onSuccess,
4028
+ onClose = _ref.onClose,
4029
+ _ref$onActionClose = _ref.onActionClose,
4030
+ onActionClose = _ref$onActionClose === void 0 ? true : _ref$onActionClose;
4031
+ var site = useContext(SiteContext);
4032
+
4033
+ var _useState = useState(),
4034
+ file = _useState[0],
4035
+ setFile = _useState[1];
4036
+
4037
+ var _useState2 = useState([]),
4038
+ errors = _useState2[0];
4039
+
4040
+ function onComplete(uploads) {
4041
+ setFile(uploads[0]);
4042
+ if (onSuccess) onSuccess(uploads[0]);
4043
+ }
4044
+
4045
+ function onAction(action) {
4046
+ if (action === 'CLOSE' || onActionClose === true) {
4047
+ site.closeDialog();
4048
+ onClose();
4049
+ }
4050
+ }
4051
+
4052
+ var actions = /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Button, {
4053
+ label: "CLOSE",
4054
+ action: function action() {
4055
+ return onAction("CLOSE");
4056
+ }
4057
+ }));
4058
+ var title = /*#__PURE__*/React.createElement(Text, {
4059
+ use: "headline6"
4060
+ }, label);
4061
+ return /*#__PURE__*/React.createElement(Dialog, {
4062
+ title: title,
4063
+ open: true,
4064
+ onAction: onAction,
4065
+ actions: actions
4066
+ }, file ? /*#__PURE__*/React.createElement(UploadFile, {
4067
+ file: file
4068
+ }) : /*#__PURE__*/React.createElement(Uploader, {
4069
+ label: label,
4070
+ accept: accept,
4071
+ target: target,
4072
+ onComplete: onComplete
4073
+ }), errors.map(function (error) {
4074
+ return /*#__PURE__*/React.createElement(Text, {
4075
+ use: "overline",
4076
+ tag: "div",
4077
+ className: "error"
4078
+ }, error);
4079
+ }));
4080
+ };
4081
+
4082
+ var isFunction = function isFunction(value) {
4083
+ return value && (Object.prototype.toString.call(value) === "[object Function]" || "function" === typeof value || value instanceof Function);
4084
+ };
4085
+
4086
+ export { Button, CheckBox, Chip, Chips, CircularProgress, CollectionContext, CollectionEditor$1 as CollectionEditor, CollectionPage, Content, ContentEditor, ContentForm, CreateContentDialog, DataTable, Dialog, DropDown, EditContentDialog, FieldEditor, Form, HTTPClient, Header, Icon, Kanban, KanbanCard, KanbanColumn, LinearProgress, List, ListEditor, LoginBox, Menu, MenuIcon, MenuItem, MenuSeparator, Page, PageContext, PageProvider, Property, RadioButton, ResetPasswordBox, Section, Session, Site, SiteContext, SiteProvider, Stack, TYPES, Tab, TabbedContentEditor, Tabs, Text, TextField, TokenField, Tree, TreeItem, TreeNode, TreededContentEditor, UploadArea, UploadDialog, UploadFile, Uploader, Viewer, isFunction };
2
4087
  //# sourceMappingURL=index.modern.js.map