ywana-core8 0.0.8 → 0.0.12

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