tocco-admin 1.0.44 → 1.0.47
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/changelog.md +11 -0
- package/dist/chunk-135.a2f32a62486e579d897b.js +1 -0
- package/dist/{chunk-143.07fb6e3ab17c62d06e0e.js → chunk-143.9ba390e4606dc477dbdb.js} +1 -2
- package/dist/{chunk-383.3bea29cae95f2d47b418.js → chunk-383.aa4aad85c4802ddbd3a9.js} +1 -2
- package/dist/{chunk-399.355bc76f23887d9a37b3.js → chunk-399.03d6b40ef2591128a669.js} +1 -2
- package/dist/{chunk-44.bf59c78f5a5d21755958.js → chunk-44.e3196f993039e3b60173.js} +1 -2
- package/dist/{chunk-813.4998affef210c5dbd815.js → chunk-498.4934250eb7477bdacd04.js} +7 -8
- package/dist/{chunk-611.26848ba322eb3c41ce8b.js → chunk-611.a41cc743af6f875068f3.js} +1 -2
- package/dist/{chunk-633.9552786aee4e7f99f623.js → chunk-633.42a7aa51f1557a183a9b.js} +1 -2
- package/dist/{chunk-701.8b1211e0545b404ca702.js → chunk-701.3662adf1a6b672e52f16.js} +1 -2
- package/dist/{chunk-884.ce155145c201a7fd4e8b.js → chunk-884.4ded078b91383b749516.js} +1 -2
- package/dist/{chunk-949.505f8d4e1df3d922358f.js → chunk-949.353a8ded32aea5ad11d7.js} +1 -2
- package/dist/{chunk-actions.218163a53759832011b1.js → chunk-actions.400ef33beac096e0c968.js} +1 -2
- package/dist/chunk-code-editor.a23fc9febce5842514d0.js +1 -0
- package/dist/chunk-phone-formatter.918582677a5684e3737b.js +1 -0
- package/dist/chunk-vendor-icons.0e61490cf9910c0a490f.js +1 -0
- package/dist/index.js +10 -11
- package/package.json +1 -1
- package/dist/chunk-143.07fb6e3ab17c62d06e0e.js.map +0 -1
- package/dist/chunk-18.e1b24b703c97426d790a.js +0 -2
- package/dist/chunk-18.e1b24b703c97426d790a.js.map +0 -1
- package/dist/chunk-383.3bea29cae95f2d47b418.js.map +0 -1
- package/dist/chunk-399.355bc76f23887d9a37b3.js.map +0 -1
- package/dist/chunk-44.bf59c78f5a5d21755958.js.map +0 -1
- package/dist/chunk-611.26848ba322eb3c41ce8b.js.map +0 -1
- package/dist/chunk-633.9552786aee4e7f99f623.js.map +0 -1
- package/dist/chunk-701.8b1211e0545b404ca702.js.map +0 -1
- package/dist/chunk-813.4998affef210c5dbd815.js.map +0 -1
- package/dist/chunk-884.ce155145c201a7fd4e8b.js.map +0 -1
- package/dist/chunk-949.505f8d4e1df3d922358f.js.map +0 -1
- package/dist/chunk-actions.218163a53759832011b1.js.map +0 -1
- package/dist/chunk-code-editor.5079bb8da3a832f77b2c.js +0 -2
- package/dist/chunk-code-editor.5079bb8da3a832f77b2c.js.map +0 -1
- package/dist/chunk-phone-formatter.9a315c77d97352ad918e.js +0 -2
- package/dist/chunk-phone-formatter.9a315c77d97352ad918e.js.map +0 -1
- package/dist/chunk-vendor-icons.5c5ab8af221c75ca9bc9.js +0 -1
- package/dist/index.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunktocco_admin=self.webpackChunktocco_admin||[]).push([[85],{8156:(e,t,n)=>{n.d(t,{Z:()=>vt});var r,o=n(45697),i=n.n(o),a=n(50600),c=n(34871),s=n(45430),l=n(47490),u=n(73665),d=n(74806),f=n(46458),p="root/LOAD_DIALOG_INFO",y="delete/SET_DELETE_DIALOG_INFO",m="delete/DO_DELETE",h="delete/SET_DELETING_IN_PROGRESS",g="delete/ON_CANCEL",v="delete/SET_ENTITIES_TO_DELETE",b=function(e){return{type:y,payload:{dialogInfo:e}}},k=function(){return{type:m}},x=function(e){return{type:v,payload:{entitiesToDelete:e}}},O=n(1024),j=n.n(O),w=n(50258),Z=n(44012),P=n(93235),E=n(34206),D=n(319),S=n.n(D),_=n(63038),N=n.n(_),R=n(28655),C=n.n(R),I=n(32678),T=n(76791),M=n(85893);const L=function(e){var t=e.relatedEntity,n=e.children,o=e.maxCountLink;if(t.keys.length<o&&0===t.keysOtherBu.length)return n;var i=(0,M.jsxs)(M.Fragment,{children:[t.keys.length>o&&(r||(r=(0,M.jsx)(E.ZP.P,{children:(0,M.jsx)(Z.Z,{id:"client.delete.tooManyRecords"})}))),t.keysOtherBu.length>0&&(0,M.jsx)(E.ZP.P,{children:(0,M.jsx)(Z.Z,{id:"client.delete.recordInOtherBU",values:{count:t.keysOtherBu.length}})})]});return(0,M.jsx)(T.Z,{content:i,placement:"top",children:n})};var A,B,F=I.ZP.span.withConfig({displayName:"NonBreakingText"})(A||(A=C()(["\n white-space: nowrap;\n"])));const q=function(e){var t=e.rootEntities,n=e.relatedEntities,r=e.maxCountLink,o=e.navigationStrategy;return(0,M.jsxs)(E.ZP.Span,{children:[(0,M.jsx)(E.ZP.B,{children:Object.entries(t).map((function(e){var t=N()(e,2),n=t[0],r=t[1];return(0,M.jsxs)("span",{children:[r.entityLabel," (",r.keys.length>0&&o.ListLink?(0,M.jsx)(o.ListLink,{entityName:n,entityKeys:r.keys,children:r.keys.length}):(0,M.jsx)(E.ZP.Span,{children:r.keys.length}),")"]},"root-entity-".concat(n))})).reduce((function(e,t){return[e,", ",t]}))}),Object.keys(n).length>0&&(0,M.jsxs)(M.Fragment,{children:[B||(B=(0,M.jsx)("span",{children:" / "})),Object.keys(n).map((function(e){var t=n[e],i=[].concat(S()(t.keys),S()(t.keysOtherBu)).length,a=t.keys.length>0&&o.ListLink?(0,M.jsx)(o.ListLink,{entityName:e,entityKeys:t.keys.slice(0,r),children:i}):(0,M.jsx)(E.ZP.Span,{children:i}),c=(0,M.jsx)(L,{relatedEntity:t,maxCountLink:r,children:a});return(0,M.jsx)(j().Fragment,{children:(0,M.jsxs)(F,{children:[t.entityLabel," (",c,")"]})},"entity-info-"+e)})).reduce((function(e,t){return[e,", ",t]}))]})]})};var z,U,$,W=n(7281),V=I.ZP.div.withConfig({displayName:"StyledIconWrapper"})(z||(z=C()(["\n margin-bottom: ",";\n"])),W.Z.space(.2));const G=function(e){var t=e.dialogInfo,n=e.navigationStrategy;return(0,M.jsxs)(M.Fragment,{children:[U||(U=(0,M.jsx)(V,{children:(0,M.jsx)(P.Z,{size:"30px"})})),$||($=(0,M.jsx)(E.ZP.P,{children:(0,M.jsx)(Z.Z,{id:"client.delete.deleteInProgress"})})),(0,M.jsx)(q,{rootEntities:t.rootEntitiesDeletable,relatedEntities:t.relatedDeletable,maxCountLink:100,navigationStrategy:n},"infopart-deletable")]})};var H={doDelete:k};const K=(0,f.connect)((function(e,t){return{dialogInfo:e.del.dialogInfo,navigationStrategy:e.input.navigationStrategy}}),H)((0,d.ZP)(G));var Y,J,Q=n(78958),X=n(91411),ee=n(46927),te=n(32884),ne=n.n(te),re=n(54581),oe=n(88601),ie=n(58664),ae=[Q.Z.condition.BASE,Q.Z.condition.DANGER,Q.Z.condition.SUCCESS,Q.Z.condition.WARNING],ce=(Y={},(0,ee.Z)(Y,Q.Z.condition.DANGER,oe.Z.color("signal.danger.paper")),(0,ee.Z)(Y,Q.Z.condition.SUCCESS,oe.Z.color("signal.success.paper")),(0,ee.Z)(Y,Q.Z.condition.WARNING,oe.Z.color("signal.warning.paper")),(0,ee.Z)(Y,Q.Z.condition.BASE,(function(e){return(0,ie.HO)(ne()(e.theme,"colors.paper"),1)})),Y),se=I.ZP.div.withConfig({displayName:"StyledSignalBox"})(J||(J=(0,X.Z)(["\n && {\n background-color: ",";\n padding: ",";\n margin-bottom: ",";\n border-radius: ",";\n\n &:last-child {\n margin-bottom: 0;\n }\n\n "," {\n color: inherit;\n }\n }\n"])),(function(e){return function(e){return ce[e.condition]||(0,ie.HO)(ne()(e.theme,"colors.paper"),1)}(e)}),W.Z.space(-1),W.Z.space(-1),oe.Z.radii("radii.regular"),re.Z);se.propTypes={condition:Q.Z.oneOfPropTypeAndCompletelyMapped(ae,ce)};var le=function(e){return(0,M.jsxs)(se,{condition:e.condition,children:[e.title&&(0,M.jsx)(E.ZP.H5,{children:e.title}),j().Children.map(e.children,(function(e){return j().cloneElement(e)})),e.meta&&(0,M.jsx)(E.ZP.Small,{children:e.meta})]})};le.defaultProps={condition:Q.Z.condition.BASE};const ue=le;var de,fe,pe,ye,me,he,ge,ve=n(65035),be=n(36589),ke=I.ZP.div.withConfig({displayName:"StyledSectionWrapper"})(de||(de=C()(["\n padding-top: ",";\n"])),W.Z.space(.6)),xe=I.ZP.div.withConfig({displayName:"StyledButtonsWrapper"})(fe||(fe=C()(["\n display: flex;\n justify-content: flex-end;\n\n "," {\n margin-right: 0;\n }\n"])),be.Z);const Oe=function(e){var t=e.dialogInfo,n=t.rootEntitiesDeletable,r=t.rootEntitiesNotDeletable,o=t.relatedDeletable,i=t.relatedNotDeletable,a=t.hasUnreadableEntities,c=e.doDelete,s=e.onCancel,l=e.navigationStrategy;return(0,M.jsxs)(M.Fragment,{children:[pe||(pe=(0,M.jsx)(E.ZP.P,{children:(0,M.jsx)(Z.Z,{id:"client.delete.confirmText"})})),(0,M.jsx)(q,{rootEntities:n,relatedEntities:o,maxCountLink:100,navigationStrategy:l},"infopart-deletable"),Object.keys(r).length>0&&(0,M.jsxs)(ke,{children:[ye||(ye=(0,M.jsx)(E.ZP.P,{children:(0,M.jsx)(Z.Z,{id:"client.delete.textNotDeletable"})})),(0,M.jsx)(q,{rootEntities:r,relatedEntities:i,maxCountLink:100,navigationStrategy:l},"infopart-notdeletable")]}),a&&(me||(me=(0,M.jsx)(ke,{children:(0,M.jsx)(ue,{condition:"warning",children:(0,M.jsx)(E.ZP.Span,{children:(0,M.jsx)(Z.Z,{id:"client.delete.unreadableEntities"})})})}))),(0,M.jsx)(ke,{children:(0,M.jsxs)(xe,{children:[(0,M.jsx)(ve.Z,{onClick:c,disabled:Object.keys(n).every((function(e){return 0===n[e].keys.length})),children:he||(he=(0,M.jsx)(Z.Z,{id:"client.delete.deleteButton"}))}),(0,M.jsx)(ve.Z,{ink:"primary",onClick:s,children:ge||(ge=(0,M.jsx)(Z.Z,{id:"client.delete.cancelButton"}))})]})})]})};var je={doDelete:k,onCancel:function(){return{type:g}}};const we=(0,f.connect)((function(e,t){return{dialogInfo:e.del.dialogInfo,navigationStrategy:e.input.navigationStrategy}}),je)((0,d.ZP)(Oe));var Ze,Pe;const Ee=function(e){var t=e.loadDialogInfo,n=e.dialogInfo,r=e.deletingInProgress,o=e.intl;(0,O.useEffect)((function(){t()}),[t]);var i;return r?Ze||(Ze=(0,M.jsx)(K,{})):(0,M.jsx)(w.Z,{required:[n],loadingText:(i="client.delete.loadingText",o.formatMessage({id:i})),children:n&&(Pe||(Pe=(0,M.jsx)(we,{})))})};var De={loadDialogInfo:function(){return{type:p}}};const Se=(0,f.connect)((function(e,t){return{dialogInfo:e.del.dialogInfo,deletingInProgress:e.del.deletingInProgress}}),De)((0,d.ZP)(Ee));var _e,Ne=n(59713),Re=n.n(Ne),Ce=n(81770),Ie=(_e={},Re()(_e,y,Ce.Z.singleTransferReducer("dialogInfo")),Re()(_e,v,Ce.Z.singleTransferReducer("entitiesToDelete")),Re()(_e,h,Ce.Z.singleTransferReducer("deletingInProgress")),_e),Te={dialogInfo:null,entitiesToDelete:null,deletingInProgress:!1};var Me=n(87757),Le=n.n(Me),Ae=n(34857),Be=n(63094),Fe=n(27361),qe=n.n(Fe);function ze(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ue(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ze(Object(n),!0).forEach((function(t){Re()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ze(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var $e="DELETABLE",We=function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=t.rootEntity,o=r.entityName,i=r.entityLabel,a=r.key;if(a.includes("/")){var c=a.split("/"),s=N()(c,2),l=s[0],u=s[1];return Ue(Ue({},e),{},Re()({},l,{entityLabel:i,keys:[].concat(S()(qe()(e,[l,"keys"],[])),S()(n?[u]:[]))}))}return Ue(Ue({},e),{},Re()({},o,{entityLabel:i,keys:[].concat(S()(qe()(e,[o,"keys"],[])),S()(n?[a]:[]))}))},Ve=function(e){return e.rootEntity.deleteStatus===$e&&!e.affectedEntities.find((function(e){return e.deleteStatus!==$e}))},Ge=function(e,t){var n=e.entitiesToDelete;return n.reduce((function(e,n){var r=Ve(n),o=r?"relatedDeletable":"relatedNotDeletable";return Ue(Ue(Ue({},e),{},{rootEntitiesDeletable:We(e.rootEntitiesDeletable,n,r)},!r&&{rootEntitiesNotDeletable:We(e.rootEntitiesNotDeletable,n)}),{},Re()({},o,function(e,t,n,r){return Ue({},t.affectedEntities.reduce((function(e,t){return Ue(Ue({},e),n||t.deleteStatus!==$e?Re()({},t.entityName,Ue(Ue({},qe()(e,t.entityName,{keys:[],keysOtherBu:[],entityLabel:t.entityLabel})),null===t.businessUnitId||t.businessUnitId===r?{keys:Array.from(new Set([].concat(S()(qe()(e,[t.entityName,"keys"],[])),[t.key])))}:{keysOtherBu:Array.from(new Set([].concat(S()(qe()(e,[t.entityName,"keysOtherBu"],[])),[t.key])))})):{})}),Ue({},e)))}(e[o],n,r,t)))}),{rootEntitiesDeletable:{},rootEntitiesNotDeletable:{},relatedDeletable:{},relatedNotDeletable:{},hasUnreadableEntities:!!n.find((function(e){return e.unreadableEntities}))})},He=function(e){var t=e.entitiesToDelete;return{entityName:qe()(t,"[0].rootEntity.entityName"),keys:t.reduce((function(e,t){return[].concat(S()(e),S()(Ve(t)?[t.rootEntity.key]:[]))}),[])}},Ke=i().shape({entityLabel:i().string,keys:i().arrayOf(i().string),keysOtherBu:i().arrayOf(i().string)}),Ye=(i().shape({rootEntitiesDeletable:i().objectOf(Ke).isRequired,rootEntitiesNotDeletable:i().objectOf(Ke).isRequired,relatedDeletable:i().objectOf(Ke).isRequired,relatedNotDeletable:i().objectOf(Ke).isRequired,hasUnreadableEntities:i().bool}),Le().mark(it)),Je=Le().mark(at),Qe=Le().mark(ct),Xe=Le().mark(st),et=Le().mark(lt),tt=Le().mark(ut),nt=function(e){return e.input},rt=function(e){return e.intl.messages},ot=function(e){return e.del.entitiesToDelete};function it(){var e,t,n;return Le().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,(0,Ae.Ys)(nt);case 2:return e=r.sent,t=e.selection,r.next=6,(0,Ae.RE)(u.Z.getEntities,t,Be.Z.fetchEntities);case 6:return n=r.sent,r.abrupt("return",{entityModel:n.entityName,keys:n.keys});case 8:case"end":return r.stop()}}),Ye)}function at(){var e,t;return Le().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,(0,Ae.Ys)(nt);case 2:return e=n.sent,t=e.customDeleteEndpoint,n.abrupt("return",t||"client/delete");case 5:case"end":return n.stop()}}),Je)}function ct(){var e,t,n,r,o,i,a,c;return Le().wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return s.next=2,(0,Ae.RE)(it);case 2:return e=s.sent,s.next=5,(0,Ae.RE)(at);case 5:return t=s.sent,s.next=8,(0,Ae.$6)([(0,Ae.RE)(Be.Z.requestSaga,"".concat(t,"/dialog"),{method:"POST",body:e}),(0,Ae.RE)(Be.Z.fetchPrincipal)]);case 8:return n=s.sent,r=N()(n,2),o=r[0],i=r[1],s.next=14,(0,Ae.RE)(Ge,o.body,i.currentBusinessUnit.id);case 14:return a=s.sent,s.next=17,(0,Ae.gz)(b(a));case 17:return s.next=19,(0,Ae.RE)(He,o.body);case 19:return c=s.sent,s.next=22,(0,Ae.gz)(x(c));case 22:case"end":return s.stop()}}),Qe)}function st(){var e,t,n,r,o,i,a,c;return Le().wrap((function(l){for(;;)switch(l.prev=l.next){case 0:return l.next=2,(0,Ae.Ys)(ot);case 2:return e=l.sent,l.next=5,(0,Ae.gz)({type:h,payload:{deletingInProgress:!0}});case 5:return t={entityModel:e.entityName,keys:e.keys},l.next=8,(0,Ae.RE)(at);case 8:return n=l.sent,l.next=11,(0,Ae.RE)(Be.Z.requestSaga,n,{method:"POST",body:t,acceptedStatusCodes:[409]});case 11:return r=l.sent,l.next=14,(0,Ae.Ys)(rt);case 14:if(o=l.sent,!r.ok){l.next=23;break}return i=r.body,a=Object.keys(i.deletedEntities).reduce((function(e,t){return[].concat(S()(e),S()(i.deletedEntities[t].map((function(e){return{entityName:t,key:e}}))))}),[]),c=[{type:"entity-delete-event",payload:{entities:a}}],l.next=21,(0,Ae.gz)(s.Z.fireExternalEvent("onSuccess",{message:o["client.delete.successfullyMessage"],remoteEvents:c}));case 21:case 26:l.next=30;break;case 23:if(409!==r.status||!r.body.information){l.next=28;break}return l.next=26,(0,Ae.gz)(s.Z.fireExternalEvent("onError",{message:r.body.information}));case 28:return l.next=30,(0,Ae.gz)(s.Z.fireExternalEvent("onError",{message:o["client.delete.errorMessage"]}));case 30:case"end":return l.stop()}}),Xe)}function lt(){return Le().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,Ae.gz)(s.Z.fireExternalEvent("onCancel"));case 2:case"end":return e.stop()}}),et)}function ut(){return Le().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,Ae.$6)([(0,Ae.Fm)(p,ct),(0,Ae.Fm)(m,st),(0,Ae.Fm)(g,lt)]);case 2:case"end":return e.stop()}}),tt)}const dt={del:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Te,t=arguments.length>1?arguments[1]:void 0,n=Ie[t.type];return n?n(e,t):e}};var ft,pt=[ut],yt="delete",mt=["onSuccess","onCancel","onError","emitAction"],ht=function(e,t,n,r){var o=ft||(ft=(0,M.jsx)(Se,{})),i=c.Z.createStore(dt,pt,t,yt);a.Z.addToStore(i,n.emitAction);var u=!n.emitAction;return l.Z.addToStore(i,u),s.Z.addToStore(i,n),c.Z.createApp(yt,o,i,{input:t,events:n,actions:[],publicPath:r,textResourceModules:["component","common",yt]})};c.Z.registerAppInRegistry(yt,ht);var gt=function(e){return c.Z.useApp({initApp:ht,props:e,packageName:yt,externalEvents:mt}).component};gt.propTypes={selection:u.Z.propType.isRequired,customDeleteEndpoint:i().string};const vt=gt},57387:(e,t,n)=>{n.r(t),n.d(t,{default:()=>k});var r=n(27361),o=n.n(r),i=n(74806),a=n(46458),c=n(29785),s=n(59713),l=n.n(s),u=(n(9230),n(17563)),d=n(94884),f=n(6699),p=n(90169),y=n(85893);function m(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function h(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?m(Object(n),!0).forEach((function(t){l()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):m(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var g=function(e){var t=e.entityName,n=e.entityKeys,r=e.children,o=n.map((function(e){return{entityName:t,key:e}}));return(0,y.jsx)(f.Z,{to:"/docs?rootNodes=".concat(JSON.stringify(o)),target:"_blank",children:r})};const v=function(e){var t=u.parse(e.history.location.search);return(0,y.jsx)(d.default,h(h(h({},e),{},{routerType:"inherit",navigationStrategy:{ListLink:g,DetailLink:p.z2}},t.rootNodes&&{rootNodes:JSON.parse(t.rootNodes)}),{},{searchFormCollapsed:e.searchFormCollapsed,onSearchFormCollapsedChange:function(t){var n=t.collapsed;e.saveUserPreferences({"admin.list.searchFormCollapsed":n})},scrollBehaviour:"inline"}))};var b={saveUserPreferences:c.RK};const k={container:(0,a.connect)((function(e,t){return{searchFormCollapsed:o()(e.preferences.userPreferences,"admin.list.searchFormCollapsed",null)}}),b)((0,i.ZP)(v))}},73665:(e,t,n)=>{n.d(t,{Z:()=>v});var r=n(45697),o=n.n(r);const i={ID:"ID",QUERY:"QUERY"},a=o().shape({entityName:o().string.isRequired,ids:function(e,t,n){if(e.selection&&e.selection.type===i.ID&&!e.selection[t])return new Error("Selection.ids prop not defined. Component: ".concat(n,"'."))},query:function(e,t,n){if(e.selection&&e.selection.type===i.QUERY&&!e.selection[t])return new Error("Selection.query prop not defined. Component: ".concat(n,"'."))},type:o().oneOf(Object.keys(i)).isRequired,count:o().number});var c=n(59713),s=n.n(c),l=n(87757),u=n.n(l),d=n(34857),f=n(44759),p=u().mark(g);function y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?y(Object(n),!0).forEach((function(t){s()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):y(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var h=1e5;function g(e,t){var n,r;return u().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(n=e.entityName,e.type!==i.QUERY){o.next=9;break}return o.next=4,(0,d.RE)(t,e.entityName,m(m({},e.query),{},{limit:h}));case 4:if(!((r=o.sent).length>h)){o.next=8;break}return o.next=8,(0,d.RE)(f.Z.logError,"Selected records exceed limit of ".concat(h));case 8:return o.abrupt("return",{entityName:n,keys:r.map((function(e){return e.key}))});case 9:return o.abrupt("return",{entityName:n,keys:e.ids});case 10:case"end":return o.stop()}}),p)}const v={getEntities:g,getSingleKey:function(e,t){if(e.entityName!==t)throw new Error("Only selection of ".concat(t," supported"));if("ID"!==e.type)throw new Error("Only ID selection type supported");if(!e.ids||1!==e.ids.length)throw new Error("Exactly one ".concat(t," must be selected"));return e.ids[0]},propType:a,selectionTypes:i}},81749:(e,t,n)=>{n.d(t,{Z:()=>a,b:()=>i});var r=n(4932),o={NONE:"none",FULLTEXT:"fulltext",SIMPLE:"simple",SIMPLE_ADVANCED:"simple_advanced",ADVANCED:"advanced",ADMIN:"admin"},i=n.n(r)().oneOf(Object.values(o));const a=o},13025:(e,t,n)=>{n.d(t,{Z:()=>o,l:()=>i});var r=n(4932),o={SINGLE:"single",MULTI:"multi",MULTI_EXPLICIT:"multi_explicit",NONE:"none"},i=n.n(r)().oneOf(Object.keys(o).map((function(e){return o[e]})))},6699:(e,t,n)=>{n.d(t,{Z:()=>d});var r,o,i=n(91411),a=n(96559),c=n(32678),s=n(30759),l=n(88601),u=(0,c.iv)(r||(r=(0,i.Z)(["\n ","\n color: ",";\n\n * {\n color: ",";\n text-decoration: ",";\n }\n\n &:hover,\n &:hover *,\n &:focus,\n &:focus * {\n text-decoration: ",";\n }\n\n &:active,\n &:active * {\n text-decoration: ",";\n }\n"])),(0,s.Z)(),l.Z.color("text"),l.Z.color("text"),(function(e){return e.neutral?"none":"underline"}),(function(e){return e.neutral?"none":"underline"}),(function(e){return e.neutral?"none":"underline"}));const d=(0,c.ZP)(a.rU).withConfig({shouldForwardProp:function(e,t){return!["neutral"].includes(e)&&t(e)}})(o||(o=(0,i.Z)(["\n ","\n"])),u)},65234:(e,t,n)=>{n.d(t,{Z:()=>N});var r,o,i,a,c,s,l,u=n(46927),d=n(45915),f=n(64593),p=n(6699),y=n(88162),m=n(34206),h=n(56315),g=n(91411),v=n(1024),b=n.n(v),k=n(32678),x=n(88601),O=["component"],j=k.ZP.div.withConfig({displayName:"StyledBreadcrumbs"})(r||(r=(0,g.Z)(["\n background-color: ",";\n width: 100%;\n padding: 0.8rem 1.7rem;\n position: relative;\n z-index: 2; // higher than StyledTether to prevent cover on scroll\n\n span:nth-child(even) {\n margin-left: 0.9rem;\n margin-right: 0.9rem;\n }\n"])),(function(e){return e.backgroundColor||x.Z.color("backgroundBreadcrumbs")(e)})),w=(0,k.ZP)((function(e){var t=e.component,n=(0,h.Z)(e,O);return b().cloneElement(t,n)})).withConfig({displayName:"StyledBreadcrumbsLink"})(o||(o=(0,g.Z)(["\n font-weight: ",";\n text-decoration: none;\n color: ",";\n cursor: pointer;\n\n & * {\n font-weight: ",";\n text-decoration: none;\n color: ",";\n margin-right: 0.5rem;\n }\n\n &:hover,\n &:hover * {\n color: ",";\n }\n\n &:focus,\n &:active,\n &:focus *,\n &:active * {\n color: ",";\n }\n"])),x.Z.fontWeight("bold"),(function(e){return e.active&&x.Z.color("primary")}),x.Z.fontWeight("bold"),(function(e){return e.active&&x.Z.color("primary")}),x.Z.color("secondaryLight"),x.Z.color("primary")),Z=k.ZP.span.withConfig({displayName:"StyledBreadcrumbsTitle"})(i||(i=(0,g.Z)(["\n font-weight: ",";\n text-decoration: none;\n color: ",";\n\n & * {\n font-weight: ",";\n text-decoration: none;\n color: ",";\n margin-right: 0.5rem;\n }\n\n &:active * {\n color: ",";\n }\n"])),x.Z.fontWeight("bold"),(function(e){return e.active&&x.Z.color("primary")}),x.Z.fontWeight("bold"),(function(e){return e.active&&x.Z.color("primary")}),x.Z.color("primary")),P=n(85893);function E(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function D(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?E(Object(n),!0).forEach((function(t){(0,u.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):E(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var S=function(e){return e.slice(e.length-2).map((function(e){return e.title||e.display})).reverse().join(" - ")},_=function(e){var t,n=e.pathPrefix,r=e.breadcrumbsInfo,o=e.currentView,i=e.backgroundColor,u=e.onClick,h=e.linkComp,g=[].concat((0,d.Z)(r||[]),(0,d.Z)(o?[o]:[]));if(0===g.length)return null;return(0,P.jsxs)(j,{backgroundColor:i,children:[(0,P.jsx)(f.q,{defer:!1,children:(0,P.jsx)("title",{children:S(g)})}),(0,P.jsxs)("div",{children:[" ",g.map((function(e,r){var o,i=e.display||"",l=r===g.length-1?Z:w;return(0,P.jsx)(m.ZP.Span,{children:(0,P.jsxs)(l,D(D(D({neutral:!0},r===g.length-1&&{active:"true"}),void 0!==e.path?{to:"".concat(n,"/").concat(e.path)}:{}),{},{onClick:(o=e,function(){u&&u(o)}),component:h?t||(t=(0,P.jsx)(h,{})):a||(a=(0,P.jsx)(p.Z,{})),children:["list"===e.type&&(c||(c=(0,P.jsx)(y.Z,{icon:"list"}))),"error"===e.type&&(s||(s=(0,P.jsx)(y.Z,{icon:"exclamation-circle"}))),i]}))},"breadcrumbItem-".concat(r))})).reduce((function(e,t,n){return[e,(0,P.jsxs)(m.ZP.Span,{children:[" ",l||(l=(0,P.jsx)(y.Z,{icon:"chevron-right"}))," "]},"icon"+n),t]}))]})]})};_.defaultProps={pathPrefix:""};const N=_},24295:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ke});var r=n(68957),o=n(91411),i=n(86249),a=n.n(i),c=(n(58900),n(78634)),s=n(84100),l=n(60131),u=n(48230),d=n(64952),f=n(469),p=n(81896),y=n(46940),m=n(32884),h=n.n(m),g=n(40021),v=n.n(g),b=n(11203),k=n.n(b),x=n(72730),O=n.n(x),j=n(1024),w=n(32678),Z=(n(39335),n(28212),n(6488),n(32510),n(79657),n(20844),n(41030),n(98827),n(37363),n(53299),n(54159)),P=function(e){return Z.Z.executeRequest("rest/".concat(e))},E=function(e){return 200===e.status?e.json():null},D=n(44822),S=n(11259),_=n(32208),N=n(88098),R=n(19241),C=(n(70646),n(74085)),I=n.n(C),T=n(77654),M=n.n(T),L=["==","!=","<=",">=","<",">","~="],A=["true","false","null"],B=["string","long","serial","bool","boolean","double","float","time","timestamp","char","varchar","date","datetime"],F=["now_date","yesterday_date","tomorrow_date","today_date","now_start","yesterday_start","tomorrow_start","today_start","now","yesterday","tomorrow","today","currentUsername","currentUser","currentBu"],q=["in","dateadd","datetimeadd","duedate","birthdayin","fulltext","likeall","distance","inboundingbox"];function z(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=(0,R.Z)(e);if(t){var o=(0,R.Z)(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return(0,N.Z)(this,n)}}const U=function(e){return function(t){(0,_.Z)(r,t);var n=z(r);function r(){var t;(0,S.Z)(this,r),t=n.call(this);var o=[{token:"keyword.operator.conjunction",regex:/(\s*)(and|or|not)($|\s+)/,caseInsensitive:!0},{token:"support.class.relation",regex:/rel/,push:"model"},{token:"keyword.exists",regex:/exists\s*/,push:"exists",caseInsensitive:!0},{token:"keyword.count",regex:/count\s*/,push:"count",caseInsensitive:!0},{token:["keyword.function.nice_function","paren.lparen.function_arguments","text.function_arguments","paren.rparen","text.whitespace"],regex:"((?:".concat(q.join("|"),")\\s*)(\\()(.*?)(\\))($|\\s+)"),caseInsensitive:!0},{token:"keyword.other.chaining",regex:/\./},{token:"support.function.field",regex:/([a-z_]+)($|\s+)/,push:"comparison"}],i={start:e?[{token:"keyword.where",regex:/\s*/,next:"rootwhere",caseInsensitive:!0}]:[{token:"keyword.find",regex:/find($|\s+)/,push:"model",caseInsensitive:!0},{token:"keyword.where",regex:/where($|\s+)/,next:"rootwhere",caseInsensitive:!0}],model:[{token:"support.class.model",regex:/[A-Z][a-z_0-9]*\s*/,next:"pop"}],rootwhere:[{token:"keyword.order_by",regex:/order by($|\s+)/,next:"order",caseInsensitive:!0}].concat(o),comparison:[{token:"keyword.operator.comparison",regex:"(".concat(L.join("|"),")\\s*"),next:"value"}],value:[{token:"string",regex:/".*?"\s*/,next:"pop"},{token:"constant.numeric",regex:/\d+(.\d+)?\s*/,next:"pop"},{token:"constant.language.tocco_placeholder",regex:"\\:(".concat(F.join("|"),")\\s*"),next:"pop",caseInsensitive:!0},{token:"constant.language",regex:"(".concat(A.join("|"),")\\s*"),next:"pop",caseInsensitive:!0},{token:"support.type",regex:"(".concat(B.join("|"),"):\\s*"),caseInsensitive:!0}],exists:[{token:"paren.lparen",regex:/\(\s*/},{token:"support.class.relation",regex:/rel/,push:"model"},{token:"keyword.other.chaining",regex:/\./},{token:"keyword.where",regex:/where($|\s+)/,next:"existswhere",caseInsensitive:!0},{token:"paren.rparen",regex:/\)\s*/,next:"pop"}],existswhere:[].concat(o,[{token:"paren.rparen",regex:/\)\s*/,next:"pop"}]),count:[{token:"paren.lparen",regex:/\(\s*/},{token:"support.class.relation",regex:/rel/,push:"model"},{token:"keyword.other.chaining",regex:/\./},{token:"keyword.where",regex:/where($|\s+)/,next:"countwhere",caseInsensitive:!0},{token:"paren.rparen",regex:/\)\s*/,next:"comparison"}],countwhere:[].concat(o,[{token:"paren.rparen",regex:/\)\s*/,next:"comparison"}]),order:[{token:"support.class.relation",regex:/rel/,push:"model"},{token:"keyword.other.chaining",regex:/\./},{token:["support.function.field","keyword.direction","separator"],regex:/([a-z_]+\s*)(asc|desc)?($|,|\s+)/}]};return t.$rules=M()(t.$rules,i,(function(e,t){return I()(e)?e.concat(t):void 0})),t.normalizeRules(),t}return(0,D.Z)(r)}(a().require("ace/mode/text_highlight_rules").TextHighlightRules)};function $(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=(0,R.Z)(e);if(t){var o=(0,R.Z)(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return(0,N.Z)(this,n)}}var W=function(e){(0,_.Z)(n,e);var t=$(n);function n(){var e;(0,S.Z)(this,n);return(e=t.call(this)).$rules={start:[{token:"constant.character.entity",regex:/&[^;]+;/},{token:"support.function",regex:"\\?(\\?|substring|cap_first|uncap_first|capitalize|chop_linebreak|date|time|datetime|ends_with|html|groups|index_of|j_string|js_string|json_string|last_index_of|length|lower_case|left_pad|right_pad|contains|matches|number|replace|rtf|url|split|starts_with|string|trim|upper_case|word_list|xhtml|xmlc|round|floor|ceilingiso_[a-z_]+first|last|seq_contains|seq_index_of|seq_last_index_of|reverse|size|sort|sort_by|chunkkeys|valueschildren|parent|root|ancestors|node_name|node_type|node_namespacebyte|double|float|int|long|short|number_to_date|number_to_time|number_to_datetime|eval|has_content|interpret|is_[a-z_]+|namespacenew)"},{token:"support.function.deprecated",regex:"\\?(default|exists|if_exists|web_safe)"},{token:"language.variable",regex:"\\.(?:data_model|error|globals|lang|locale|locals|main|namespace|node|current_node|now|output_encoding|template_name|url_escaping_charset|vars|version)"},{token:"constant.language",regex:"\\b(true|false)\\b"},{token:"keyword.operator",regex:"\\b(?:gt|gte|lt|lte|as|in|using)\\b"},{token:"entity.other.attribute-name",regex:"encoding|parse|locale|number_format|date_format|time_format|datetime_format|time_zone|url_escaping_charset|classic_compatible|strip_whitespace|strip_text|strict_syntax|ns_prefixes|attributes"},{token:"string",regex:/['"]/,next:"qstring"},{token:function(e){return e.match("^[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?$")?"constant.numeric":"variable"},regex:/[\w.+-]+/},{token:"keyword.operator",regex:"!|\\.|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qstring:[{token:"constant.character.escape",regex:'\\\\[nrtvef\\\\"$]'},{token:"string",regex:/['"]/,next:"start"},{defaultToken:"string"}]},e}return(0,D.Z)(n)}(a().require("ace/mode/text_highlight_rules").TextHighlightRules),V=function(e){(0,_.Z)(n,e);var t=$(n);function n(){var e;(0,S.Z)(this,n),e=t.call(this);var r=["query","queryCount"],o=[{token:"keyword.function",regex:"\\[@(".concat(r.join("|"),").*?]"),push:"tql-start"},{token:"comment",regex:"\\[#--",next:"ftl-dcomment"},{token:"string.interpolated",regex:"\\${",push:"ftl-start"},{token:"keyword.function",regex:"\\[/?#(assign|attempt|break|case|compress|default|elseif|else|escape|fallback|function|flush|ftl|global|if|import|include|list|local|lt|macro|nested|noescape|noparse|nt|recover|recurse|return|rt|setting|stop|switch|t|visit)",push:"ftl-start"},{token:"keyword.other",regex:"\\[/?@[a-zA-Z\\.]+",push:"ftl-start"}];for(var i in e.$rules)e.$rules[i].unshift.apply(e.$rules[i],o);e.embedRules(W,"ftl-",[{token:"keyword",regex:"/?\\]",next:"pop"},{token:"string.interpolated",regex:"}",next:"pop"}],["start"]),e.addRules({"ftl-dcomment":[{token:"comment",regex:"--\\]",next:"pop"},{defaultToken:"comment"}]});var a=[{token:"keyword.function",regex:"\\[/@(".concat(r.join("|"),")]"),next:"pop"}];e.embedRules(U(),"tql-",a,["start"]);var c={"tql-rootwhere":[{token:"keyword.function",regex:"\\[/@(".concat(r.join("|"),")]"),next:"pop"}],"tql-order":[{token:"keyword.function",regex:"\\[/@(".concat(r.join("|"),")]"),next:"pop"}]};return e.$rules=M()(e.$rules,c,(function(e,t){return I()(e)?e.concat(t):void 0})),e.normalizeRules(),e}return(0,D.Z)(n)}(a().require("ace/mode/html_highlight_rules").HtmlHighlightRules),G=n(52902),H=n(45915),K=a().require("ace/token_iterator").TokenIterator,Y=function(e){return e?e.type.substring(e.type.lastIndexOf(".")+1):null},J=function(e,t){return Y(e.getCurrentToken())===t},Q=function(e){if(J(e,"model")&&e.stepBackward(),(J(e,"field")||J(e,"relation"))&&e.stepBackward(),!J(e,"chaining"))return null;if(e.stepBackward(),J(e,"model")){var t=e.getCurrentToken();return e.stepBackward(),e.stepBackward(),t?t.value.trim():null}return null},X=function(e,t){for(;!J(e,t);)if(!e.stepBackward())return!1;return!0},ee=function(e,t){return J(e,"rparen")?1:t>0&&J(e,"lparen")?(e.stepBackward(),-1):0},te=function(e){for(var t=0;e.getCurrentToken();){if(0===t&&J(e,"where")){var n=e.stepBackward();return n?[n.value.trim()].concat((0,H.Z)(re(e))):[]}if(J(e,"order_by")){if(X(e,"find")){var r=e.stepForward();return r?r.value.trim():[]}return[]}if(t+=ee(e,t),!e.stepBackward())return null}return null},ne=function(e,t){for(var n=[],r=t(e);r;)Array.isArray(r)?r.forEach((function(e){return n.unshift(e)})):n.unshift(r),r=t(e);return n},re=function(e){return ne(e,Q)},oe=function(e){return ne(e,te)},ie=1e3,ae=function(e,t,n){var r=function(e,t){if(t){var n=oe(e());return{baseModel:t,modelScope:(0,G.Z)(n).slice(0)}}var r=oe(e()),o=(0,G.Z)(r);return{baseModel:o[0],modelScope:o.slice(1)}}(e,n),o=r.baseModel,i=r.modelScope;if(o){var a=re(e()),c=[].concat((0,H.Z)(i),(0,H.Z)(a)).map((function(e){return"rel".concat(e)}));(function(e){var t=(0,G.Z)(e),n=t[0],r=t.slice(1);return P(function(e,t){var n=t.length>0?"/resolve?path="+t.join("."):"";return"entities/".concat(e,"/model").concat(n)}(n,r)).then(E).then((function(e){if(!e)return[];var t=e.fields||[],n=e.relations||[];return[].concat((0,H.Z)(t.map((function(e){return{label:(t=e,t.label?"".concat(t.fieldName," (").concat(t.label,")"):t.fieldName),value:e.fieldName,meta:e.type};var t}))),(0,H.Z)(n.map((function(e){return{label:(t=e,t.label?"".concat(t.relationName," (").concat(t.label,")"):t.relationName),value:e.relationName,meta:e.targetEntity};var t}))))}))})([o].concat((0,H.Z)(c))).then((function(e){var n=e.map((function(e){return{caption:e.label,value:e.value,meta:e.meta,score:ie}}));t(null,n)})).catch((function(e){return t(e)}))}},ce=function(e,t){return t?"".concat(e," (").concat(t,")"):e},se=function(e){return P("entities").then(E).then((function(e){return e?e.entities:{}})).then((function(e){return e?Object.values(e):[]})).then((function(e){return e.map((function(e){return e.metaData}))})).then((function(t){var n=t.map((function(e){var t=e.modelName,n=e.label;return{caption:ce(t,n),value:t,score:ie}}));e(null,n)})).catch((function(t){return e(t)}))},le=function(){return q.map((function(e){return e.toUpperCase()})).map((function(e){return{caption:e,value:"".concat(e,"()"),meta:"function",score:970}}))};const ue=function(e){return{getCompletions:function(t,n,r,o,i){var a=function(){return new K(n,r.row,r.column)},c=a(),s=c.getCurrentToken(),l=c.stepBackward()?c.getCurrentToken():null;switch(Y(s)){case"chaining":case"relation":case"separator":case"order_by":case"count":case"exists":case"field":case"function_arguments":ae(a,i,e);break;case"where":case"conjunction":ae(a,i,e),i(null,le());break;case"nice_function":i(null,le());break;case"find":se(i);break;case"type":case"tocco_placeholder":case"comparison":i(null,B.map((function(e){return{caption:e,value:"".concat(e,":"),meta:"type",score:980}}))),i(null,F.map((function(e){return{caption:e,value:":".concat(e),meta:"placeholder",score:990}})));break;case"model":ae(a,i,e),l&&"relation"!==Y(l)&&se(i);break;case null:e&&ae(a,i,e),i(null,le())}}}};function de(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=(0,R.Z)(e);if(t){var o=(0,R.Z)(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return(0,N.Z)(this,n)}}var fe=function(e){(0,_.Z)(n,e);var t=de(n);function n(){var e;return(0,S.Z)(this,n),(e=t.call(this)).HighlightRules=V,e.completer=ue(),e}return(0,D.Z)(n)}(a().require("ace/mode/ftl").Mode);function pe(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=(0,R.Z)(e);if(t){var o=(0,R.Z)(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return(0,N.Z)(this,n)}}var ye,me=function(e){(0,_.Z)(n,e);var t=pe(n);function n(e){var r,o=e.implicitModelName;return(0,S.Z)(this,n),(r=t.call(this)).HighlightRules=U(o),r.completer=ue(o),r.snippedIdField=null,r}return(0,D.Z)(n)}(a().require("ace/mode/text").Mode),he=n(85893),ge=w.ZP.div.withConfig({displayName:"StyledEditor"})(ye||(ye=(0,o.Z)(["\n width: 100%;\n z-index: 0; /* gutter lays over menu otherwise */\n"]))),ve={groovy:function(){return new s.Mode},html:function(){return new l.Mode},xml:function(){return new y.Mode},properties:function(){return new f.Mode},json:function(){return new u.Mode},htmlmixed:function(){return new fe},freemarkermixed:function(){return new fe},ftl:function(){return new fe},tql:function(e){return new me(e)},less:function(){return new d.Mode},drools:function(){return new c.Mode},text:function(){return new p.Mode}},be=function(e,t){var n=t.mode,o=t.theme,i=t.showGutter,a=t.editorOptions,c=void 0===a?{}:a;(function(e){return O()(e)?Promise.resolve(e):k()(e)?P("entities/2.0/".concat(e.entityModel,"/").concat(e.key,"?_paths=").concat(e.field)).then(E).then((function(e){return h()(e,["paths","entity_name","value"],null)})):Promise.resolve(null)})(t.implicitModel).then((function(e){return function(e,t){return h()(ve,e,e)(t)}(n,{implicitModelName:e})})).then((function(t){return e.getSession().setMode(t)})),e.setTheme("ace/theme/".concat(o)),Object.entries(c).forEach((function(t){var n=(0,r.Z)(t,2),o=n[0],i=n[1];e.setOption(o,i)})),e.renderer.setShowGutter(i),e.resize()};const ke=function(e){var t=e.mode,n=e.theme,r=void 0===n?"textmate":n,o=e.value,i=e.onChange,c=e.showGutter,s=void 0===c||c,l=e.editorOptions,u=void 0===l?{}:l,d=e.implicitModel,f=(0,j.useRef)(null),p=(0,j.useRef)(null),y=(0,j.useMemo)((function(){return{mode:t,theme:r,showGutter:s,editorOptions:u,implicitModel:d}}),[t,r,s,u,d]);return(0,j.useEffect)((function(){var e=a().edit(f.current);return e.getSession().setValue(o||""),e.on("change",(function(){return i(e.getValue())})),be(e,y),p.current=e,function(){return e.destroy()}}),[]),(0,j.useEffect)((function(){p.current&&be(p.current,y)}),[y]),(0,j.useEffect)((function(){p.current&&!v()(o)&&o!==p.current.getValue()&&p.current.getSession().setValue(o)}),[o]),(0,he.jsx)(ge,{ref:f})}},94897:(e,t,n)=>{n.r(t),n.d(t,{DatePicker:()=>p,default:()=>y});var r,o=n(1024),i=n(74806),a=n(32678),c=n(88601),s=n(91411),l=n(7281),u=a.ZP.div.withConfig({displayName:"StyledWrapper"})(r||(r=(0,s.Z)(["\n cursor: pointer;\n\n .flatpickr-calendar.open {\n margin-top: ",";\n }\n\n .flatpickr-calendar.arrowTop:before,\n .flatpickr-calendar.arrowTop:after {\n left: 83%;\n }\n"])),l.Z.space(1.2)),d=n(36461),f=n(85893),p=function(e){var t,n=e.value,r=e.children,i=e.intl,a=e.onChange,s=(0,o.useRef)(null),l=i.locale,p=c.Z.fontFamily("regular")(e),y=(0,d.F)(s,{value:n,onChange:a,fontFamily:p,locale:l,flatpickrOptions:{},shouldAppend:!0});return(0,o.useEffect)((function(){s.current&&y()}),[]),(0,f.jsx)(f.Fragment,{children:(0,f.jsx)(u,{"data-wrap":!0,ref:s,children:(0,f.jsxs)("div",{"data-toggle":!0,children:[(0,f.jsx)("input",{style:{display:"none"},type:"text","data-input":!0,"aria-label":(t="client.component.datePicker.label",i.formatMessage({id:t}))}),r]})})})};const y=(0,a.Zz)((0,i.ZP)(p))},36461:(e,t,n)=>{n.d(t,{F:()=>h});var r=n(68957),o=n(46927),i=(n(66991),n(29214)),a=n(57413),c=n(53528),s=n(36258),l=n(1024),u=n(35997),d=n(70696);function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function p(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?f(Object(n),!0).forEach((function(t){(0,o.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):f(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var y={"de-CH":a.German,de:a.German,fr:c.French,it:s.Italian},m=function(e){return function(t){t&&t.length>0?e(t[0].toISOString()):e(null)}},h=function(e,t){var n=t.value,o=t.locale,a=t.flatpickrOptions,c=(0,l.useRef)(null),s=u.Z.usePrevious(a);return(0,l.useEffect)((function(){return function(){c.current&&c.current.destroy()}}),[]),(0,l.useEffect)((function(){c.current&&(c.current.setDate(n,!1),c.current.redraw())}),[JSON.stringify(n)]),(0,l.useEffect)((function(){var e,t,n=y[o]||(null===(e=c.current)||void 0===e||null===(t=e.l10ns)||void 0===t?void 0:t.en);c.current&&n&&(c.current.localize(n),c.current.set("locale",n),c.current.redraw())}),[o]),(0,l.useEffect)((function(){if(c.current){var e=d.Z.difference(a,s);Object.keys(e).length>0&&(Object.entries(e).forEach((function(e){var t=(0,r.Z)(e,2),n=t[0],o=t[1];c.current.set(n,o)})),c.current.redraw())}}),[a]),function(){return c.current=function(e,t){var n=t.shouldAppend,r=t.onChange,o=t.value,a=t.fontFamily,c=t.locale,s=t.flatpickrOptions,l=y[c],u=p(p(p({wrap:!0,onChange:m(r),altInput:!1,enableTime:!1,defaultDate:o},n?{appendTo:e.current,static:!0}:{}),l?{locale:l}:{}),s),d=(0,i.Z)(e.current,u);return a&&(d.calendarContainer.style.fontFamily=a),d}(e,t),c.current}}},86167:(e,t,n)=>{n.r(t),n.d(t,{default:()=>P});var r,o,i,a,c=n(46927),s=n(68957),l=n(1024),u=n(74806),d=n(32678),f=n(80470),p=n(36461),y=n(88601),m=n(91411),h=n(40953),g=n(51032),v=d.ZP.input.withConfig({displayName:"StyledDatePickerInput"})(r||(r=(0,m.Z)(["\n &&& {\n ","\n margin: 0;\n }\n"])),g.k9),b=d.ZP.div.withConfig({displayName:"StyledDatePickerValue"})(o||(o=(0,m.Z)(["\n && {\n ","\n display: flex;\n align-items: center;\n ","\n }\n"])),g.k9,(function(e){return!e.hasValue&&"\n justify-content: center;\n color: ".concat(h.v.shade1(e),";\n ")})),k=d.ZP.div.withConfig({displayName:"StyledDatePickerOuterWrapper"})(i||(i=(0,m.Z)(["\n outline: ",";\n"])),(function(e){return e.immutable?0:"initial"})),x=d.ZP.div.withConfig({displayName:"StyledDatePickerWrapper"})(a||(a=(0,m.Z)(["\n && {\n ","\n\n input {\n display: ",";\n\n &:last-of-type {\n display: ",";\n }\n }\n }\n"])),g.yP,(function(e){return e.immutable?"none":"block"}),(function(e){return e.immutable?"block":"none"})),O=n(85893);function j(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function w(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?j(Object(n),!0).forEach((function(t){(0,c.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):j(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Z=function(e){var t=e.querySelector('input.flatpickr-input:not([type="hidden"])');t&&t.focus()};const P=(0,d.Zz)((0,u.ZP)((function(e){var t,n,r=e.immutable,o=e.id,i=e.options,a=e.value,c=e.onChange,u=e.formatDate,d=e.intl,m=e.placeholder,h=(0,l.useState)(!1),g=(0,s.Z)(h,2),j=g[0],P=g[1],E=(0,l.useRef)(null),D=(0,l.useRef)(null),S=d.locale,_=y.Z.fontFamily("regular")(e),N=w({altInput:!0,altInputClass:"",clickOpens:!r},i?i.flatpickrOptions:{}),R=(0,p.F)(D,{value:a,onChange:function(e){e&&c([e])},fontFamily:_,locale:S,flatpickrOptions:N}),C=(null===(t=E.current)||void 0===t||null===(n=t.altInput)||void 0===n?void 0:n.value)||"",I=function(){j?Z(D.current):(E.current=R(),E.current.calendarContainer.classList.add("tocco-ui-theme"),E.current.calendarContainer.addEventListener("keydown",T),P(!0),setTimeout((function(){Z(D.current)})))},T=function(e){(e.target.classList.contains("flatpickr-hour")||"Tab"!==e.key||e.shiftKey)&&"Enter"!==e.key||setTimeout((function(){E.current.close()})),"Enter"===e.key&&(e.preventDefault(),e.stopPropagation())},M=a&&a.length>0&&a.every((function(e){return e}));return(0,O.jsx)(O.Fragment,{children:(0,O.jsx)(k,{immutable:r,id:o,tabIndex:"-1",onFocus:function(){I(),E.current&&E.current.open()},onKeyDown:T,children:(0,O.jsxs)(x,{"data-wrap":!0,immutable:r,ref:D,children:[(0,O.jsx)(v,w(w({},r?{disabled:"disabled"}:{}),{},{type:"hidden","data-input":!0,immutable:r,className:"flatpickr-input",placeholder:m})),!j&&(0,O.jsx)(b,{tabIndex:0,hasValue:M,children:M?u(a[0]):m}),(0,O.jsx)(v,{disabled:!0,immutable:r,value:C,placeholder:m}),!r&&M&&(0,O.jsx)(f.Z,{icon:"times",tabIndex:-1,"aria-label":function(e){return d.formatMessage({id:e})}("client.component.dateAbstract.clearDateLabel"),onMouseDown:function(e){e.preventDefault(),c(null)}})]})})})})))},47580:(e,t,n)=>{n.d(t,{Z:()=>b});var r,o,i=n(91411),a=n(32678),c=n(88601),s=n(7281),l=n(30759),u=270,d=c.Z.color("secondaryLight"),f=c.Z.color("secondary"),p=c.Z.color("paper"),y=c.Z.color("text"),m=c.Z.fontWeight("regular"),h=s.Z.space(-2),g=(0,a.vJ)(r||(r=(0,i.Z)(["\n .flatpickr-calendar {\n && {\n ","\n width: ","px;\n border: 1px solid ",";\n border-radius: 0;\n }\n\n &.open {\n z-index: 999999 !important; // higher than StyledModalHolder\n }\n\n &.arrowTop:before,\n &.arrowTop:after {\n border-bottom-color: "," !important;\n }\n\n &.arrowBottom:before,\n &.arrowBottom:after {\n border-top-color: "," !important;\n }\n\n .flatpickr-rContainer {\n width: 100%;\n }\n\n .dayContainer {\n padding-top: ",";\n padding-right: ",";\n padding-bottom: ",";\n width: ","px;\n min-width: ","px;\n max-width: ","px;\n }\n\n .numInput.cur-year,\n .flatpickr-current-month span.cur-month{\n font-weight: ",";\n }\n\n .flatpickr-current-month .numInputWrapper {\n span.arrowUp:after {\n border-bottom-color: ",";\n }\n\n span.arrowDown:after {\n border-top-color: ",";\n }\n }\n\n .flatpickr-weekday {\n font-size: ",";\n font-weight: ",";\n }\n\n .flatpickr-days {\n width: ","px;\n }\n\n .flatpickr-day.today {\n border-color: ",";\n font-weight: ",";\n }\n\n .flatpickr-day {\n max-width: 34px;\n height: 34px;\n line-height: 34px;\n margin-bottom: ",";\n font-weight: ",";\n }\n\n .flatpickr-months .flatpickr-month {\n border-radius: 0;\n }\n\n .flatpickr-months .flatpickr-month,\n .flatpickr-months .flatpickr-monthDropdown-months,\n .flatpickr-weekdays,\n .flatpickr-weekday {\n background-color: ",";\n color: ",";\n }\n\n // month select options in Firefox\n .flatpickr-months .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {\n color: ",";\n }\n\n .flatpickr-day.selected,\n .flatpickr-day.startRange,\n .flatpickr-day.endRange,\n .flatpickr-day.selected.inRange,\n .flatpickr-day.startRange.inRange,\n .flatpickr-day.endRange.inRange,\n .flatpickr-day.selected:focus,\n .flatpickr-day.startRange:focus,\n .flatpickr-day.endRange:focus,\n .flatpickr-day.selected:hover,\n .flatpickr-day.startRange:hover,\n .flatpickr-day.endRange:hover,\n .flatpickr-day.selected.prevMonthDay,\n .flatpickr-day.startRange.prevMonthDay,\n .flatpickr-day.endRange.prevMonthDay,\n .flatpickr-day.selected.nextMonthDay,\n .flatpickr-day.startRange.nextMonthDay,\n .flatpickr-day.endRange.nextMonthDay,\n .flatpickr-day.today:hover,\n .flatpickr-day.today:focus {\n background-color: ",";\n border-color: ",";\n }\n\n .flatpickr-day.inRange,\n .flatpickr-day.prevMonthDay.inRange,\n .flatpickr-day.nextMonthDay.inRange,\n .flatpickr-day.today.inRange,\n .flatpickr-day.prevMonthDay.today.inRange,\n .flatpickr-day.nextMonthDay.today.inRange,\n .flatpickr-day:hover,\n .flatpickr-day.prevMonthDay:hover,\n .flatpickr-day.nextMonthDay:hover,\n .flatpickr-day:focus,\n .flatpickr-day.prevMonthDay:focus,\n .flatpickr-day.nextMonthDay:focus {\n background-color: ",";\n border-color: ",";\n color: ",";\n }\n\n .flatpickr-months .flatpickr-prev-month,\n .flatpickr-months .flatpickr-next-month {\n color: ",";\n fill: ",";\n\n &:hover svg {\n color: ",";\n fill: ",";\n }\n }\n }\n"])),(0,l.Z)(),u,d,d,d,h,h,h,u,u,u,m,p,p,s.Z.font(-2),m,u,f,c.Z.fontWeight("bold"),h,m,d,p,y,f,f,d,d,p,p,p,f,f),v=n(85893);const b=function(){return(0,v.jsx)(v.Fragment,{children:o||(o=(0,v.jsx)(g,{}))})}},81251:(e,t,n)=>{n.r(t),n.d(t,{default:()=>l});var r=n(46927),o=n(70457),i=n(30963),a=n(85893);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){(0,r.Z)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const l=function(e){var t=e.size,n=e.style;return(0,a.jsx)(i.G,s(s({},n),{},{style:{fontSize:t},spin:!0,icon:o.IJ7}))}},36498:(e,t,n)=>{n.d(t,{$s:()=>c,BF:()=>l,az:()=>s});var r=n(46444),o=n.n(r),i=n(8358),a=o().oneOfType([o().string,o().number]),c=o().shape({__key:a}),s=(o().arrayOf(c),o().oneOf(Object.keys(i.P).map((function(e){return i.P[e]})))),l=o().shape({id:o().string.isRequired,label:o().string,sorting:o().shape({sortable:o().bool,sortRank:o().number,order:o().oneOf(["asc","desc"])}),resizable:o().bool,width:o().number,HeaderRenderer:o().elementType,CellRenderer:o().elementType,rightAligned:o().bool})},8358:(e,t,n)=>{n.d(t,{P:()=>r});var r={INLINE:"inline",NONE:"none"}},41654:(e,t,n)=>{n.d(t,{Z:()=>c});var r=n(319),o=n.n(r),i=n(44759),a=function(e){return void 0!==e};const c={getDispatchActions:function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return t.reduce((function(t,r){return a(e[r.name])?t.push(r.action.apply(r,o()(r.argsFactory(e)))):r.mandatory&&n&&i.Z.logError("Mandatory field '".concat(r.name,"' not set in input")),t}),[])}}},65378:(e,t,n)=>{n.d(t,{Z:()=>a});var r=n(45697),o=n.n(r),i=n(98773);const a={propTypes:o().shape({embedType:o().oneOf(i.Nc),widgetConfigKey:function(e,t,n){if("widget"===e.embedType&&!e[t])return new Error("Prop `"+t+"` is missing for `"+n+"`. Validation failed.")}})}},96801:(e,t,n)=>{n.d(t,{Z:()=>E});var r=n(59713),o=n.n(r),i=n(49943),a=n.n(i);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){o()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var l=n(81770),u=n(24688),d=n(63038),f=n.n(d),p=n(1024),y=n.n(p),m=n(85893);function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function g(e){return function(t){var n=(0,p.useState)(null),r=f()(n,2),i=r[0],a=r[1],c=(0,p.useRef)(!0);return(0,p.useEffect)((function(){return e().then((function(e){return c.current?a((function(){return e})):null})),function(){c.current=!1}}),[]),null!==i?(0,m.jsx)(i,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?h(Object(n),!0).forEach((function(t){o()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},t)):null}}var v=n(44759);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function k(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach((function(t){o()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var x={},O=n(80467),j=function(e){return function(t){if(e.component)return(0,m.jsx)(e.component,{router:t,routes:e.routes});if(e.render){var n={router:t,routes:e.routes};return e.render(n)}}};const w=function(e){return(0,m.jsx)(O.AW,{path:e.path,exact:e.exact,render:j(e)})};function Z(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}const P=function(e){var t=e.history,n=e.routes;return(0,m.jsx)(O.F0,{history:t,children:(0,m.jsx)(y().Fragment,{children:n.map((function(e,t){return(0,m.jsx)(w,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Z(Object(n),!0).forEach((function(t){o()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Z(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},e),t)}))})})},E={loadRoute:function(e,t,n,r){return function(o){if(r&&x[r]){var i=x[r];return(0,m.jsx)(i,k({},o))}var a=g((function(){return new Promise((function(r){n().then((function(n){var o=n.default;o.reducers&&l.Z.injectReducers(e,o.reducers),o.sagas&&o.sagas.forEach((function(t){u.Z.injectSaga(e,t)})),o.inputDispatches&&o.inputDispatches.forEach((function(n){!function(e,t,n){var r=n.key,o=n.actionCreator,i=n.mandatory,a=void 0!==i&&i,c=n.defaultValue,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:v.Z.logError;if(Object.prototype.hasOwnProperty.call(t,r)||c){var l=o(t[r]||c);e.dispatch(l)}else!0===a&&s("EntityBrowser: Mandatory field '".concat(r,"' not set in input"))}(e,t,n)})),r(o.container)}))}))}));return r&&(x[r]=a),(0,m.jsx)(a,k({},o))}},Router:P,RouteWithSubRoutes:w,extractParamsFromPath:function(e,t){var n=[],r=a()(e,n).exec(t);return null!==r?n.reduce((function(e,t,n){return s(s({},e),{},o()({},t.name,r[n+1]))}),{}):null}}},6756:(e,t,n)=>{function r(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,c=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return c=e.done,e},e:function(e){s=!0,a=e},f:function(){try{c||null==n.return||n.return()}finally{if(s)throw a}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{Z:()=>a});var i=function(e){return Object.keys(e).length>=1?e[Object.keys(e)[0]]:void 0};const a={getErrorCompact:function(e){var t,n=r(e);try{for(n.s();!(t=n.n()).done;){var o=t.value;if(o.entityValidatorErrors)return i(o.entityValidatorErrors)[0];if(o.paths)return i(i(o.paths))[0]}}catch(e){n.e(e)}finally{n.f()}return null}}},29441:(e,t,n)=>{n.d(t,{Z:()=>u});var r=n(59713),o=n.n(r),i=n(27361),a=n.n(i);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){o()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var l={};const u={persistViewInfo:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;l=s(s({},l),{},o()({},e,{level:n,info:s(s({},a()(l,[e,"info"],{})),t)}))},viewInfoSelector:function(e){return a()(l,[e,"info"],{})},clearPersistedViews:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;l=s({},Object.keys(l).reduce((function(t,n){var r=l[n];return s(s({},t),r.level<e&&o()({},n,r))}),{}))}}},67210:(e,t,n)=>{n.r(t),n.d(t,{default:()=>l});var r=n(74806),o=n(37606),i=n(25660),a=n(80722),c=n(20247),s=n(85893);const l=(0,c.U)((0,r.ZP)((function(e){var t=e.path,n=e.context,r=e.onSuccess,c=e.intl,l=e.locale,u=e.emitAction,d=(0,a.Z)(t),f=d?[{id:"rel".concat(d.model),value:d.key}]:[],p=(0,i.Z)(n,"Domain");return(0,s.jsx)(o.ZP,{entityName:"Domain",formName:p,mode:"create",defaultValues:f,locale:l,onEntityCreated:function(e){var t=e.id,n=[{type:"entity-create-event",payload:{entities:[{entityName:"Docs_list_item",key:"Domain/".concat(t)}]}}];r({title:c.formatMessage({id:"client.docs-browser.createDomainSuccessful"}),remoteEvents:n})},emitAction:function(e){(function(e){var t,n;return"client.entity-detail.createSuccessfulTitle"===(null===(t=e.payload)||void 0===t||null===(n=t.toaster)||void 0===n?void 0:n.title)})(e)||u(e)}})})))},36340:(e,t,n)=>{n.r(t),n.d(t,{default:()=>l});var r=n(74806),o=n(37606),i=n(25660),a=n(80722),c=n(20247),s=n(85893);const l=(0,c.U)((0,r.ZP)((function(e){var t=e.context,n=e.path,r=e.onSuccess,c=e.intl,l=e.locale,u=e.emitAction,d=(0,a.Z)(n),f=d?[{id:"rel".concat(d.model),value:d.key}]:[],p=(0,i.Z)(t,"Folder");return(0,s.jsx)(o.ZP,{entityName:"Folder",formName:p,mode:"create",defaultValues:f,locale:l,onEntityCreated:function(e){var t=e.id,n=[{type:"entity-create-event",payload:{entities:[{entityName:"Docs_list_item",key:"Folder/".concat(t)}]}}];r({title:c.formatMessage({id:"client.docs-browser.createFolderSuccessful"}),remoteEvents:n})},emitAction:function(e){(function(e){var t,n;return"client.entity-detail.createSuccessfulTitle"===(null===(t=e.payload)||void 0===t||null===(n=t.toaster)||void 0===n?void 0:n.title)})(e)||u(e)}})})))},96954:(e,t,n)=>{n.r(t),n.d(t,{default:()=>l});var r=n(59713),o=n.n(r),i=n(8156),a=n(85893);function c(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c(Object(n),!0).forEach((function(t){o()(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}const l=function(e){return(0,a.jsx)(i.Z,s(s({},e),{},{customDeleteEndpoint:"documents/delete"}))}},90100:(e,t,n)=>{n.r(t),n.d(t,{default:()=>l});var r=n(63038),o=n.n(r),i=n(37606),a=n(25660),c=n(20247),s=n(85893);const l=(0,c.U)((function(e){var t=e.selection,n=e.onSuccess,r=e.onCancel,c=e.locale,l=e.context,u=e.emitAction,d=e.navigate,f=t.ids[0].split("/"),p=o()(f,2),y=p[0],m=p[1];"Resource"===y&&(d("/docs/doc/".concat(m,"/detail")),r());var h=(0,a.Z)(l,y);return(0,s.jsx)(i.ZP,{entityName:y,formName:h,entityId:m,mode:"update",locale:c,onEntityUpdated:function(){var e=[{type:"entity-update-event",payload:{entities:[{entityName:"Docs_list_item",key:t.ids[0]}]}}];n({title:null,remoteEvents:e})},onEntityDeleted:function(){var e=[{type:"entity-delete-event",payload:{entities:[{entityName:"Docs_list_item",key:t.ids[0]}]}}];n({title:null,remoteEvents:e})},emitAction:function(e){(function(e){var t,n;return"client.entity-detail.createSuccessfulTitle"===(null===(t=e.payload)||void 0===t||null===(n=t.toaster)||void 0===n?void 0:n.title)})(e)||u(e)}})}))},4505:(e,t,n)=>{n.r(t),n.d(t,{default:()=>D});var r,o,i,a=n(74806),c=n(46458),s=n(30081),l=n(20247),u=n(63038),d=n.n(u),f=n(28655),p=n.n(f),y=n(18446),m=n.n(y),h=n(1024),g=n(44012),v=n(32678),b=n(36589),k=n(50258),x=n(65035),O=n(94884),j=n(80722),w=n(85893),Z=v.ZP.div.withConfig({displayName:"StyledButtonsWrapper"})(r||(r=p()(["\n display: flex;\n justify-content: flex-end;\n\n "," {\n margin-right: 0;\n }\n"])),b.Z),P=(0,v.ZP)(k.Z).withConfig({displayName:"StyledLoadMask"})(o||(o=p()(["\n height: auto;\n"]))),E={initialize:s.j2,moveElements:s.w6};const D=(0,l.U)((0,c.connect)((function(e){return{isWaiting:e.docs.move.isWaiting,domainTypes:e.input.domainTypes,rootNodes:e.input.rootNodes,businessUnit:e.input.businessUnit,locale:e.intl.locale}}),E)((0,a.ZP)((function(e){var t=e.selection,n=e.onSuccess,r=e.onError,o=e.path,a=e.initialize,c=e.moveElements,s=e.isWaiting,l=e.domainTypes,u=e.rootNodes,f=e.businessUnit,p=e.locale,y=e.emitAction,v=(0,j.Z)(o),b={model:"Docs_list_item",key:"".concat(v.model,"/").concat(v.key)},k=(0,h.useState)(b),E=d()(k,2),D=E[0],S=E[1];(0,h.useEffect)((function(){a(t,n,r)}),[]);var _=function(e,t){switch(e){case"Domain":return"/docs/domain/".concat(t,"/list");case"Folder":return"/docs/folder/".concat(t,"/list");case"Resource":return;default:throw new Error("Unexpected model: ".concat(e))}};return(0,w.jsxs)(P,{required:[!s],children:[(0,w.jsx)(O.default,{routerType:"routerless",initialLocation:function(){if(null===D)return null;var e=D.key.split("/"),t=d()(e,2),n=t[0],r=t[1];return _(n,r)}(),listLimit:10,selectionStyle:"none",searchFormType:"none",disableViewPersistor:!0,getListFormName:function(e){return null===e?"Move_root_docs_list_item":"Move_docs_list_item"},onListParentChange:function(e){return S(e)},getCustomLocation:_,navigationStrategy:{},embedded:!0,emitAction:y,noLeftPadding:!0,domainTypes:l,rootNodes:u,businessUnit:f,sortable:!1,scrollBehaviour:"none",locale:p}),(0,w.jsx)(Z,{children:(0,w.jsx)(x.Z,{onClick:function(){return c(D.key,t.ids)},look:"raised",ink:"primary",disabled:null===D||m()(D,b),children:i||(i=(0,w.jsx)(g.Z,{id:"client.actions.dms-move.button"}))})})]})}))))},77840:(e,t,n)=>{n.r(t),n.d(t,{default:()=>r.ZP});var r=n(79217)},82445:(e,t,n)=>{n.r(t),n.d(t,{default:()=>r.ZP});var r=n(37606)},25660:(e,t,n)=>{n.d(t,{Z:()=>r});const r=function(e,t){return e.detailFormNames&&e.detailFormNames[t]?e.detailFormNames[t]:"Dms".concat(t)}}}]);
|
|
2
|
-
//# sourceMappingURL=chunk-code-editor.5079bb8da3a832f77b2c.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///./packages/actions/delete/src/modules/delete/actions.js","webpack:///./packages/actions/delete/src/components/InfoPart/LinkPopOver.js","webpack:///./packages/actions/delete/src/components/InfoPart/InfoPart.js","webpack:///./packages/actions/delete/src/components/DeleteProgress/StyledComponents.js","webpack:///./packages/actions/delete/src/components/DeleteProgress/DeleteProgress.js","webpack:///./packages/actions/delete/src/components/DeleteProgress/DeleteProgressContainer.js","webpack:///./packages/actions/delete/src/components/DeleteProgress/index.js","webpack:///./packages/core/tocco-ui/src/SignalBox/StyledSignalBox.js","webpack:///./packages/core/tocco-ui/src/SignalBox/SignalBox.js","webpack:///./packages/actions/delete/src/components/Dialog/StyledComponents.js","webpack:///./packages/actions/delete/src/components/Dialog/Dialog.js","webpack:///./packages/actions/delete/src/components/Dialog/DialogContainer.js","webpack:///./packages/actions/delete/src/components/Delete/Delete.js","webpack:///./packages/actions/delete/src/components/Delete/DeleteContainer.js","webpack:///./packages/actions/delete/src/components/Delete/index.js","webpack:///./packages/actions/delete/src/modules/delete/reducer.js","webpack:///./packages/actions/delete/src/utils/deleteRequestParser.js","webpack:///./packages/actions/delete/src/modules/delete/sagas.js","webpack:///./packages/actions/delete/src/modules/reducers.js","webpack:///./packages/actions/delete/src/main.js","webpack:///./packages/apps/admin/src/routes/docs/components/DocsBrowserApp/DocsBrowserApp.js","webpack:///./packages/apps/admin/src/routes/docs/components/DocsBrowserApp/DocsBrowserAppContainer.js","webpack:///./packages/apps/admin/src/routes/docs/route.js","webpack:///./packages/core/app-extensions/src/selection/selectionTypes.js","webpack:///./packages/core/app-extensions/src/selection/proptype.js","webpack:///./packages/core/app-extensions/src/selection/selection.js","webpack:///./packages/core/app-extensions/src/selection/index.js","webpack:///./packages/core/entity-list/src/util/searchFormTypes.js","webpack:///./packages/core/entity-list/src/util/selectionStyles.js","webpack:///./packages/core/tocco-ui/src/AdminLink/linkStyle.js","webpack:///./packages/core/tocco-ui/src/AdminLink/StyledLink.js","webpack:///./packages/core/tocco-ui/src/Breadcrumbs/StyledBreadcrumbs.js","webpack:///./packages/core/tocco-ui/src/Breadcrumbs/Breadcrumbs.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/requestHelper.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/TqlConstants.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/TqlHighlighter.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/FtlHighlighter.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/TqlAutoCompleter.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/ToccoFtlMode.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/TqlMode.js","webpack:///./packages/core/tocco-ui/src/CodeEditor/AceEditor.js","webpack:///./packages/core/tocco-ui/src/DatePicker/StyledDatePicker.js","webpack:///./packages/core/tocco-ui/src/DatePicker/DatePicker.js","webpack:///./packages/core/tocco-ui/src/DatePicker/useDatePickr.js","webpack:///./packages/core/tocco-ui/src/EditableValue/typeEditors/StyledDatePicker.js","webpack:///./packages/core/tocco-ui/src/EditableValue/typeEditors/DatePicker.js","webpack:///./packages/core/tocco-ui/src/DatePicker/GlobalDatePickerStyles.js","webpack:///./packages/core/tocco-ui/src/GlobalStyles/GlobalStyles.js","webpack:///./packages/core/tocco-ui/src/LoadingSpinner/LoadingSpinner.js","webpack:///./packages/core/tocco-ui/src/Table/propTypes.js","webpack:///./packages/core/tocco-ui/src/Table/scrollBehaviour.js","webpack:///./packages/core/tocco-util/src/action/dispatchActions.js","webpack:///./packages/core/tocco-util/src/action/index.js","webpack:///./packages/core/tocco-util/src/appContext/index.js","webpack:///./packages/core/tocco-util/src/appContext/appContext.js","webpack:///./packages/core/tocco-util/src/route/path.js","webpack:///./packages/core/tocco-util/src/route/asyncRoute.js","webpack:///./packages/core/tocco-util/src/route/route.js","webpack:///./packages/core/tocco-util/src/route/RouteWithSubRoutes.js","webpack:///./packages/core/tocco-util/src/route/Router.js","webpack:///./packages/core/tocco-util/src/route/index.js","webpack:///./packages/core/tocco-util/src/route/input.js","webpack:///./packages/core/tocco-util/src/validation/validation.js","webpack:///./packages/core/tocco-util/src/validation/index.js","webpack:///./packages/core/tocco-util/src/viewPersistor/viewPersistor.js","webpack:///./packages/core/tocco-util/src/viewPersistor/index.js","webpack:///./packages/widgets/docs-browser/src/components/Action/actions/CreateDomain.js","webpack:///./packages/widgets/docs-browser/src/components/Action/actions/CreateFolder.js","webpack:///./packages/widgets/docs-browser/src/components/Action/actions/Delete.js","webpack:///./packages/widgets/docs-browser/src/components/Action/actions/Edit.js","webpack:///./packages/widgets/docs-browser/src/components/Action/actions/Move.js","webpack:///./packages/widgets/docs-browser/src/components/Action/actions/MoveContainer.js","webpack:///./packages/widgets/docs-browser/src/utils/getDetailFormName.js"],"names":["LOAD_DIALOG_INFO","SET_DIALOG_INFO","DO_DELETE","SET_DELETING_IN_PROGRESS","ON_CANCEL","SET_ENTITIES_TO_DELETE","setDeleteDialogInfo","dialogInfo","type","payload","doDelete","setEntitiesToDelete","entitiesToDelete","relatedEntity","children","maxCountLink","keys","length","keysOtherBu","content","Typography","id","values","count","Popover","placement","NonBreakingText","styled","rootEntities","relatedEntities","navigationStrategy","Object","entries","map","rootEntityName","rootEntity","entityLabel","ListLink","entityName","entityKeys","reduce","prev","curr","linkText","Count","slice","Content","StyledIconWrapper","scale","size","rootEntitiesDeletable","relatedDeletable","mapActionCreators","connect","state","props","del","input","injectIntl","DeleteProgress","ALLOWED_CONDITIONS","design","COLORS","theme","shadeColor","_get","StyledSignalBox","condition","getColor","StyledSignalListItem","propTypes","SignalBox","title","React","child","meta","defaultProps","StyledSectionWrapper","StyledButtonsWrapper","StyledButton","rootEntitiesNotDeletable","relatedNotDeletable","hasUnreadableEntities","onCancel","Button","onClick","disabled","every","entity","ink","Dialog","loadDialogInfo","deletingInProgress","intl","useEffect","LoadMask","required","loadingText","formatMessage","Delete","ACTION_HANDLERS","actions","reducerUtil","initialState","deleteStatus","transformRootEntity","applyKeys","key","includes","split","entityNameReal","keyReal","isEntityDeletable","entityToDelete","affectedEntities","find","affectedEntity","getDialogInfo","response","currentBuId","acc","deletable","relatedAttr","businessUnitId","Array","from","Set","transformRelatedEntities","e","unreadableEntities","getEntitiesToDelete","deleteEntityPropType","PropTypes","isRequired","getDeleteBodyFromSelection","getDeleteEndpoint","mainSagas","inputSelector","textResourceSelector","messages","entitiesToDeleteSelector","select","selection","call","selectionUtil","rest","entities","entityModel","customDeleteEndpoint","body","deleteEndpoint","all","method","deleteResponse","principal","currentBusinessUnit","put","acceptedStatusCodes","textResources","ok","deletedEntities","remoteEvents","externalEvents","message","status","information","takeLatest","action","handler","sagas","deleteSagas","packageName","EXTERNAL_EVENTS","initApp","events","publicPath","store","appFactory","reducers","actionEmitter","emitAction","handleNotifications","notification","textResourceModules","DeleteApp","component","rootNodes","StyledLink","to","JSON","stringify","target","queryParams","queryString","history","location","search","routerType","DetailLink","parse","searchFormCollapsed","onSearchFormCollapsedChange","collapsed","saveUserPreferences","scrollBehaviour","container","preferences","userPreferences","DocsBrowserApp","ID","QUERY","ids","propName","componentName","selectionTypes","Error","query","getEntities","limit","fetchEntities","consoleLogger","getSingleKey","expectedEntityName","propType","searchFormTypes","NONE","FULLTEXT","SIMPLE","SIMPLE_ADVANCED","ADVANCED","ADMIN","searchFormTypePropTypes","selectionStyles","SINGLE","MULTI","MULTI_EXPLICIT","selectionStylePropType","linkStyle","css","declareFont","neutral","Link","withConfig","shouldForwardProp","prop","defaultValidatorFn","StyledBreadcrumbs","backgroundColor","StyledBreadcrumbsLink","active","StyledBreadcrumbsTitle","getTitle","breadcrumbsInfo","breadcrumb","display","reverse","join","Breadcrumbs","pathPrefix","currentView","LinkComp","linkComp","breadcrumbs","Helmet","defer","b","idx","breadcrumbsItem","Comp","path","icon","sendRequest","endpoint","request","extractBody","json","operators","atoms","types","placeholders","functions","implicitModel","commonWhere","token","regex","caseInsensitive","push","customRules","start","next","model","rootwhere","comparison","value","exists","existswhere","countwhere","order","$rules","_mergeWith","objValue","srcValue","_isArray","concat","undefined","normalizeRules","ace","TextHighlightRules","ToccoFtlLangHighlightRules","match","qstring","defaultToken","ToccoFtlHighlightRules","tqlDirectives","startRules","unshift","apply","embedRules","addRules","tqlEndRules","TqlHighlighter","mergingRules","HtmlHighlightRules","TokenIterator","getTokenType","substring","lastIndexOf","isCurrentTokenOfType","iterator","getCurrentToken","findLastPathStep","stepBackward","modelToken","trim","stepBackUntilToken","handleParentheses","parenCount","findLastModelScope","findCurrentPath","stepForward","backtrack","stepBack","steps","lastStep","isArray","forEach","step","findCurrentModelScope","defaultScore","determineAvailablePaths","createIterator","callback","baseModel","modelScope","determineModelScope","currentPath","relationSteps","sourceModel","resolvePart","buildResolveUrl","then","fields","relations","f","label","field","fieldName","r","relation","relationName","targetEntity","resolvePath","paths","pathCompletions","caption","score","errors","buildModelLabel","modelName","loadAllAvailableModels","models","metaData","modelCompletions","getAvailableFunctions","toUpperCase","getCompletions","editor","session","pos","prefix","createIteratorAtCurrentPosition","row","column","currentToken","previousToken","placeholder","ToccoFtlMode","HighlightRules","completer","TqlAutoCompleter","Mode","TqlMode","implicitModelName","snippedIdField","StyledEditor","modeMappings","groovy","GroovyMode","html","HtmlMode","xml","XmlMode","properties","PropertiesMode","JsonMode","htmlmixed","freemarkermixed","ftl","tql","less","LessMode","drools","DroolsMode","text","TextMode","setEditorConfiguration","mode","showGutter","editorOptions","_isString","Promise","resolve","_isObject","moduleEntity","loadImplicitModel","getMode","editorMode","getSession","setMode","setTheme","k","v","setOption","renderer","setShowGutter","resize","onChange","containerReference","useRef","editorReference","editorConfig","useMemo","aceEditor","current","setValue","on","getValue","destroy","_isNil","ref","StyledWrapper","DatePicker","wrapperElement","locale","fontFamily","initializeFlatPickr","useDatePickr","flatpickrOptions","shouldAppend","style","withTheme","localeMap","German","de","fr","French","it","Italian","handleOnChange","selectedDates","toISOString","element","config","flatpickr","prevFlatpickrOptions","react","setDate","redraw","calendarLocale","l10ns","en","localize","set","optionsDiff","js","options","wrap","altInput","enableTime","defaultDate","appendTo","static","flatpickrInstance","calendarContainer","StyledDatePickerInput","StyledInputCss","StyledDatePickerValue","hasValue","colorizeText","StyledDatePickerOuterWrapper","immutable","StyledDatePickerWrapper","StyledEditableWrapperCss","focusFlatpickrInput","wrapper","inputElement","querySelector","focus","formatDate","useState","initialized","setInitialized","altInputClass","clickOpens","val","focusInput","classList","add","addEventListener","handleConfirmKey","setTimeout","contains","shiftKey","close","preventDefault","stopPropagation","tabIndex","onFocus","open","onKeyDown","className","Ball","msg","onMouseDown","calendarWidth","secondaryLight","secondary","paper","regular","baseSpace","GlobalDatePickerStyles","createGlobalStyle","fontSize","spin","faCircleNotch","keyPropType","rowDataPropType","__key","scrollBehaviourPropType","ScrollBehaviour","columnPropType","sorting","sortable","sortRank","resizable","width","HeaderRenderer","CellRenderer","rightAligned","INLINE","isDefined","getDispatchActions","actionSettings","checkMandatory","actionSetting","name","argsFactory","mandatory","embedType","ALLOWED_EMBED_TYPES","widgetConfigKey","asyncRoute","getComponent","Component","setComponent","mounted","result","loadedComponents","getRenderFn","route","router","routes","render","exact","i","loadRoute","importRouteDependencies","imported","saga","sagaUtil","inputDispatches","inputDispatch","actionCreator","defaultValue","logger","prototype","hasOwnProperty","dispatch","dispatchInput","Router","RouteWithSubRoutes","extractParamsFromPath","pathRegex","pathParts","res","pathToRegexp","exec","pathPart","getFirstElement","obj","getErrorCompact","error","entityValidatorErrors","persistedViews","persistViewInfo","info","level","viewInfoSelector","clearPersistedViews","persistedView","withRouterTypeCompProvider","context","onSuccess","parent","getNode","defaultValues","formName","getDetailFormName","onEntityCreated","toaster","isActionBlocked","navigate","entityKey","entityId","onEntityUpdated","onEntityDeleted","StyledLoadMask","initialize","moveElements","isWaiting","docs","move","domainTypes","businessUnit","onError","initialNode","initialParent","setParent","getCustomLocation","initialLocation","getInitialLocation","listLimit","selectionStyle","searchFormType","disableViewPersistor","getListFormName","onListParentChange","embedded","noLeftPadding","look","_isEqual","detailFormNames"],"mappings":"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nB,SACA,OACA,SACA,OACA,UACA,SACA,QACA,OACA,YACA,OACA,UACA,OACA,YAEWC,EAAe,CAC1B,WACA,iBACA,gBACA,aACA,YACA,kBACA,iBACA,cACA,MACA,YACA,WACA,QACA,kBACA,cACA,aAEWC,EAAY,CACvB,KACA,UACA,cACA,UACA,aACA,WACA,UACA,WACA,iB,wbCpCF,iBAAeC,GAAa,2CAExB,aAAc,sBACZ,eAEA,IAAMC,EAAc,CAClB,CACEC,MAAO,+BACPC,MAAO,2BACPC,iBAAiB,GAEnB,CACEF,MAAO,yBACPC,MAAO,MACPE,KAAM,SAER,CACEH,MAAO,iBACPC,MAAO,YACPE,KAAM,SACND,iBAAiB,GAEnB,CACEF,MAAO,gBACPC,MAAO,WACPE,KAAM,QACND,iBAAiB,GAEnB,CACEF,MAAO,CACL,iCACA,kCACA,0BACA,eACA,mBAEFC,MAAO,OAAF,OAASJ,EAAUA,KAAK,KAAxB,iCACLK,iBAAiB,GAEnB,CACEF,MAAO,yBACPC,MAAO,MAET,CACED,MAAO,yBACPC,MAAO,mBACPE,KAAM,eAIJC,EAAc,CAClBC,MAAOP,EACH,CACE,CACEE,MAAO,gBACPC,MAAO,MACPK,KAAM,YACNJ,iBAAiB,IAGrB,CACE,CACEF,MAAO,eACPC,MAAO,cACPE,KAAM,QACND,iBAAiB,GAEnB,CACEF,MAAO,gBACPC,MAAO,eACPK,KAAM,YACNJ,iBAAiB,IAGzBK,MAAO,CACL,CACEP,MAAO,sBACPC,MAAO,qBACPK,KAAM,QAGVE,UAAW,CACT,CACER,MAAO,mBACPC,MAAO,kBACPK,KAAM,QACNJ,iBAAiB,IALZ,OAOJH,GAELU,WAAY,CACV,CACET,MAAO,8BACPC,MAAO,IAAF,OAAMR,EAAUA,KAAK,KAArB,SACLa,KAAM,UAGVI,MAAO,CACL,CACEV,MAAO,SACPC,MAAO,WACPK,KAAM,OAER,CACEN,MAAO,mBACPC,MAAO,gBACPK,KAAM,OAER,CACEN,MAAO,sCACPC,MAAO,OAAF,OAASL,EAAaA,KAAK,KAA3B,SACLU,KAAM,MACNJ,iBAAiB,GAEnB,CACEF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","file":"chunk-code-editor.5079bb8da3a832f77b2c.js","sourcesContent":["export const LOAD_DIALOG_INFO = 'root/LOAD_DIALOG_INFO'\nexport const SET_DIALOG_INFO = 'delete/SET_DELETE_DIALOG_INFO'\nexport const DO_DELETE = 'delete/DO_DELETE'\nexport const SET_DELETING_IN_PROGRESS = 'delete/SET_DELETING_IN_PROGRESS'\nexport const ON_CANCEL = 'delete/ON_CANCEL'\nexport const SET_ENTITIES_TO_DELETE = 'delete/SET_ENTITIES_TO_DELETE'\n\nexport const loadDialogInfo = () => ({\n type: LOAD_DIALOG_INFO\n})\n\nexport const setDeleteDialogInfo = dialogInfo => ({\n type: SET_DIALOG_INFO,\n payload: {\n dialogInfo\n }\n})\n\nexport const doDelete = () => ({\n type: DO_DELETE\n})\n\nexport const setDeletingInProgress = deletingInProgress => ({\n type: SET_DELETING_IN_PROGRESS,\n payload: {\n deletingInProgress\n }\n})\n\nexport const onCancel = () => ({\n type: ON_CANCEL\n})\n\nexport const setEntitiesToDelete = entitiesToDelete => ({\n type: SET_ENTITIES_TO_DELETE,\n payload: {\n entitiesToDelete\n }\n})\n","import PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {Popover, Typography} from 'tocco-ui'\n\nimport {deleteEntityPropType} from '../../utils/deleteRequestParser'\n\nconst LinkPopOver = ({relatedEntity, children, maxCountLink}) => {\n if (relatedEntity.keys.length < maxCountLink && relatedEntity.keysOtherBu.length === 0) {\n return children\n }\n\n const content = (\n <>\n {relatedEntity.keys.length > maxCountLink && (\n <Typography.P>\n <FormattedMessage id=\"client.delete.tooManyRecords\" />\n </Typography.P>\n )}\n {relatedEntity.keysOtherBu.length > 0 && (\n <Typography.P>\n <FormattedMessage id=\"client.delete.recordInOtherBU\" values={{count: relatedEntity.keysOtherBu.length}} />\n </Typography.P>\n )}\n </>\n )\n\n return (\n <Popover content={content} placement=\"top\">\n {children}\n </Popover>\n )\n}\n\nLinkPopOver.propTypes = {\n relatedEntity: deleteEntityPropType.isRequired,\n maxCountLink: PropTypes.number.isRequired,\n children: PropTypes.element\n}\n\nexport default LinkPopOver\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport styled from 'styled-components'\nimport {Typography} from 'tocco-ui'\nimport {navigationStrategy} from 'tocco-util'\n\nimport {deleteEntityPropType} from '../../utils/deleteRequestParser'\nimport LinkPopOver from './LinkPopOver'\n\nconst NonBreakingText = styled.span`\n white-space: nowrap;\n`\n\nconst InfoPart = ({rootEntities, relatedEntities, maxCountLink, navigationStrategy}) => (\n <Typography.Span>\n <Typography.B>\n {Object.entries(rootEntities)\n .map(([rootEntityName, rootEntity]) => (\n <span key={`root-entity-${rootEntityName}`}>\n {rootEntity.entityLabel} (\n {rootEntity.keys.length > 0 && navigationStrategy.ListLink ? (\n <navigationStrategy.ListLink entityName={rootEntityName} entityKeys={rootEntity.keys}>\n {rootEntity.keys.length}\n </navigationStrategy.ListLink>\n ) : (\n <Typography.Span>{rootEntity.keys.length}</Typography.Span>\n )}\n )\n </span>\n ))\n .reduce((prev, curr) => [prev, ', ', curr])}\n </Typography.B>\n {Object.keys(relatedEntities).length > 0 && (\n <>\n <span> / </span>\n {Object.keys(relatedEntities)\n .map(entityName => {\n const relatedEntity = relatedEntities[entityName]\n const linkText = [...relatedEntity.keys, ...relatedEntity.keysOtherBu].length\n\n const Count =\n relatedEntity.keys.length > 0 && navigationStrategy.ListLink ? (\n <navigationStrategy.ListLink\n entityName={entityName}\n entityKeys={relatedEntity.keys.slice(0, maxCountLink)}\n >\n {linkText}\n </navigationStrategy.ListLink>\n ) : (\n <Typography.Span>{linkText}</Typography.Span>\n )\n\n const Content = (\n <LinkPopOver relatedEntity={relatedEntity} maxCountLink={maxCountLink}>\n {Count}\n </LinkPopOver>\n )\n\n return (\n <React.Fragment key={'entity-info-' + entityName}>\n <NonBreakingText>\n {relatedEntity.entityLabel} ({Content})\n </NonBreakingText>\n </React.Fragment>\n )\n })\n .reduce((prev, curr) => [prev, ', ', curr])}\n </>\n )}\n </Typography.Span>\n)\n\nInfoPart.propTypes = {\n rootEntities: PropTypes.objectOf(\n PropTypes.shape({\n entityLabel: PropTypes.string.isRequired,\n keys: PropTypes.arrayOf(PropTypes.string).isRequired\n })\n ).isRequired,\n relatedEntities: PropTypes.objectOf(deleteEntityPropType).isRequired,\n maxCountLink: PropTypes.number,\n navigationStrategy: navigationStrategy.propTypes\n}\n\nexport default InfoPart\n","import styled from 'styled-components'\nimport {scale} from 'tocco-ui'\n\nexport const StyledIconWrapper = styled.div`\n margin-bottom: ${scale.space(0.2)};\n`\n","import PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {LoadingSpinner, Typography} from 'tocco-ui'\nimport {navigationStrategy} from 'tocco-util'\n\nimport {deleteInfoPropType} from '../../utils/deleteRequestParser'\nimport InfoPart from '../InfoPart'\nimport {StyledIconWrapper} from './StyledComponents'\n\nconst DeleteProgress = ({dialogInfo, navigationStrategy}) => {\n return (\n <>\n <StyledIconWrapper>\n <LoadingSpinner size=\"30px\" />\n </StyledIconWrapper>\n <Typography.P>\n <FormattedMessage id=\"client.delete.deleteInProgress\" />\n </Typography.P>\n <InfoPart\n key=\"infopart-deletable\"\n rootEntities={dialogInfo.rootEntitiesDeletable}\n relatedEntities={dialogInfo.relatedDeletable}\n maxCountLink={100}\n navigationStrategy={navigationStrategy}\n />\n </>\n )\n}\n\nDeleteProgress.propTypes = {\n dialogInfo: deleteInfoPropType.isRequired,\n intl: PropTypes.object.isRequired,\n navigationStrategy: navigationStrategy.propTypes\n}\n\nexport default DeleteProgress\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\n\nimport {doDelete} from '../../modules/delete/actions'\nimport DeleteProgress from './DeleteProgress'\n\nconst mapActionCreators = {\n doDelete\n}\n\nconst mapStateToProps = (state, props) => ({\n dialogInfo: state.del.dialogInfo,\n navigationStrategy: state.input.navigationStrategy\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(DeleteProgress))\n","import DeleteProgress from './DeleteProgressContainer'\n\nexport default DeleteProgress\n","import _get from 'lodash/get'\nimport styled from 'styled-components'\n\nimport {StyledSignalListItem} from '../SignalList'\nimport {design, scale, shadeColor, theme} from '../utilStyles'\n\nconst ALLOWED_CONDITIONS = [\n design.condition.BASE,\n design.condition.DANGER,\n design.condition.SUCCESS,\n design.condition.WARNING\n]\n\nconst COLORS = {\n [design.condition.DANGER]: theme.color('signal.danger.paper'),\n [design.condition.SUCCESS]: theme.color('signal.success.paper'),\n [design.condition.WARNING]: theme.color('signal.warning.paper'),\n [design.condition.BASE]: props => shadeColor(_get(props.theme, 'colors.paper'), 1)\n}\n\nconst getColor = props => {\n const color = COLORS[props.condition]\n return color || shadeColor(_get(props.theme, 'colors.paper'), 1)\n}\n\nconst StyledSignalBox = styled.div`\n && {\n background-color: ${props => getColor(props)};\n padding: ${scale.space(-1)};\n margin-bottom: ${scale.space(-1)};\n border-radius: ${theme.radii('radii.regular')};\n\n &:last-child {\n margin-bottom: 0;\n }\n\n ${StyledSignalListItem} {\n color: inherit;\n }\n }\n`\n\nStyledSignalBox.propTypes = {\n condition: design.oneOfPropTypeAndCompletelyMapped(ALLOWED_CONDITIONS, COLORS)\n}\n\nexport {ALLOWED_CONDITIONS, StyledSignalBox as default}\n","import PropTypes from 'prop-types'\nimport React from 'react'\n\nimport Typography from '../Typography'\nimport {design} from '../utilStyles'\nimport StyledSignalBox, {ALLOWED_CONDITIONS} from './StyledSignalBox'\n\n/**\n * Emphasize important information by context. Group them by utilizing several instances of <SignalBox/>.\n */\nconst SignalBox = props => (\n <StyledSignalBox condition={props.condition}>\n {props.title && <Typography.H5>{props.title}</Typography.H5>}\n {React.Children.map(props.children, child => React.cloneElement(child))}\n {props.meta && <Typography.Small>{props.meta}</Typography.Small>}\n </StyledSignalBox>\n)\n\nSignalBox.defaultProps = {\n condition: design.condition.BASE\n}\n\nSignalBox.propTypes = {\n /**\n * Prefer <SignalList.List/> and <SignalList.Item/> to list items over any other typographic component.\n */\n children: PropTypes.node,\n /**\n * Background is colorized according condition. Default value is 'base'.\n * Possible values: base|danger|success|warning\n */\n condition: PropTypes.oneOf(ALLOWED_CONDITIONS),\n /**\n * Add loosely related but still important information as meta text (e.g. date, id, type).\n */\n meta: PropTypes.string,\n /**\n * Summarize information from whole signal box concise.\n */\n title: PropTypes.string\n}\n\nexport default SignalBox\n","import styled from 'styled-components'\nimport {StyledButton, scale} from 'tocco-ui'\n\nexport const StyledSectionWrapper = styled.div`\n padding-top: ${scale.space(0.6)};\n`\n\nexport const StyledButtonsWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n\n ${StyledButton} {\n margin-right: 0;\n }\n`\n","import PropTypes from 'prop-types'\nimport {FormattedMessage} from 'react-intl'\nimport {Button, Typography, SignalBox} from 'tocco-ui'\nimport {navigationStrategy} from 'tocco-util'\n\nimport {deleteInfoPropType} from '../../utils/deleteRequestParser'\nimport InfoPart from '../InfoPart'\nimport {StyledSectionWrapper, StyledButtonsWrapper} from './StyledComponents'\n\nconst Dialog = ({\n dialogInfo: {\n rootEntitiesDeletable,\n rootEntitiesNotDeletable,\n relatedDeletable,\n relatedNotDeletable,\n hasUnreadableEntities\n },\n doDelete,\n onCancel,\n navigationStrategy\n}) => (\n <>\n <Typography.P>\n <FormattedMessage id=\"client.delete.confirmText\" />\n </Typography.P>\n <InfoPart\n key=\"infopart-deletable\"\n rootEntities={rootEntitiesDeletable}\n relatedEntities={relatedDeletable}\n maxCountLink={100}\n navigationStrategy={navigationStrategy}\n />\n {Object.keys(rootEntitiesNotDeletable).length > 0 && (\n <StyledSectionWrapper>\n <Typography.P>\n <FormattedMessage id=\"client.delete.textNotDeletable\" />\n </Typography.P>\n <InfoPart\n key=\"infopart-notdeletable\"\n rootEntities={rootEntitiesNotDeletable}\n relatedEntities={relatedNotDeletable}\n maxCountLink={100}\n navigationStrategy={navigationStrategy}\n />\n </StyledSectionWrapper>\n )}\n {hasUnreadableEntities && (\n <StyledSectionWrapper>\n <SignalBox condition=\"warning\">\n <Typography.Span>\n <FormattedMessage id=\"client.delete.unreadableEntities\" />\n </Typography.Span>\n </SignalBox>\n </StyledSectionWrapper>\n )}\n <StyledSectionWrapper>\n <StyledButtonsWrapper>\n <Button\n onClick={doDelete}\n disabled={Object.keys(rootEntitiesDeletable).every(entity => rootEntitiesDeletable[entity].keys.length === 0)}\n >\n <FormattedMessage id=\"client.delete.deleteButton\" />\n </Button>\n <Button ink=\"primary\" onClick={onCancel}>\n <FormattedMessage id=\"client.delete.cancelButton\" />\n </Button>\n </StyledButtonsWrapper>\n </StyledSectionWrapper>\n </>\n)\n\nDialog.propTypes = {\n onCancel: PropTypes.func.isRequired,\n doDelete: PropTypes.func.isRequired,\n dialogInfo: deleteInfoPropType.isRequired,\n navigationStrategy: navigationStrategy.propTypes\n}\n\nexport default Dialog\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\n\nimport {doDelete, onCancel} from '../../modules/delete/actions'\nimport Dialog from './Dialog'\n\nconst mapActionCreators = {\n doDelete,\n onCancel\n}\n\nconst mapStateToProps = (state, props) => ({\n dialogInfo: state.del.dialogInfo,\n navigationStrategy: state.input.navigationStrategy\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Dialog))\n","import PropTypes from 'prop-types'\nimport {useEffect} from 'react'\nimport {LoadMask} from 'tocco-ui'\n\nimport {deleteInfoPropType} from '../../utils/deleteRequestParser'\nimport DeleteProgress from '../DeleteProgress'\nimport Dialog from '../Dialog'\n\nconst Delete = ({loadDialogInfo, dialogInfo, deletingInProgress, intl}) => {\n useEffect(() => {\n loadDialogInfo()\n }, [loadDialogInfo])\n\n const msg = id => intl.formatMessage({id})\n\n if (deletingInProgress) {\n return <DeleteProgress />\n }\n\n return (\n <LoadMask required={[dialogInfo]} loadingText={msg('client.delete.loadingText')}>\n {dialogInfo && <Dialog />}\n </LoadMask>\n )\n}\n\nDelete.propTypes = {\n loadDialogInfo: PropTypes.func.isRequired,\n dialogInfo: deleteInfoPropType,\n deletingInProgress: PropTypes.bool,\n intl: PropTypes.object.isRequired\n}\n\nexport default Delete\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\n\nimport {loadDialogInfo} from '../../modules/delete/actions'\nimport Delete from './Delete'\n\nconst mapActionCreators = {\n loadDialogInfo\n}\n\nconst mapStateToProps = (state, props) => ({\n dialogInfo: state.del.dialogInfo,\n deletingInProgress: state.del.deletingInProgress\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(Delete))\n","import Delete from './DeleteContainer'\n\nexport default Delete\n","import {reducer as reducerUtil} from 'tocco-util'\n\nimport * as actions from './actions'\n\nconst ACTION_HANDLERS = {\n [actions.SET_DIALOG_INFO]: reducerUtil.singleTransferReducer('dialogInfo'),\n [actions.SET_ENTITIES_TO_DELETE]: reducerUtil.singleTransferReducer('entitiesToDelete'),\n [actions.SET_DELETING_IN_PROGRESS]: reducerUtil.singleTransferReducer('deletingInProgress')\n}\n\nconst initialState = {\n dialogInfo: null,\n entitiesToDelete: null,\n deletingInProgress: false\n}\n\nexport default function reducer(state = initialState, action) {\n const handler = ACTION_HANDLERS[action.type]\n return handler ? handler(state, action) : state\n}\n","import _get from 'lodash/get'\nimport PropTypes from 'prop-types'\n\nconst deleteStatus = {\n DELETABLE: 'DELETABLE',\n DENIED_BY_CASCADE: 'DENIED_BY_CASCADE',\n NO_DELETE_PERMISSION: 'NO_DELETE_PERMISSION'\n}\n\nconst transformRelatedEntities = (relatedEntities, entityToDelete, deletable, currentBuId) => ({\n ...entityToDelete.affectedEntities.reduce(\n (acc, affectedEntity) => ({\n ...acc,\n ...(deletable || affectedEntity.deleteStatus !== deleteStatus.DELETABLE\n ? {\n [affectedEntity.entityName]: {\n ..._get(acc, affectedEntity.entityName, {\n keys: [],\n keysOtherBu: [],\n entityLabel: affectedEntity.entityLabel\n }),\n ...(affectedEntity.businessUnitId === null || affectedEntity.businessUnitId === currentBuId\n ? {\n keys: Array.from(\n new Set([..._get(acc, [affectedEntity.entityName, 'keys'], []), affectedEntity.key])\n )\n }\n : {\n keysOtherBu: Array.from(\n new Set([..._get(acc, [affectedEntity.entityName, 'keysOtherBu'], []), affectedEntity.key])\n )\n })\n }\n }\n : {})\n }),\n {...relatedEntities}\n )\n})\n\nconst transformRootEntity = (rootEntities, entity, applyKeys = true) => {\n const {entityName, entityLabel, key} = entity.rootEntity\n if (key.includes('/')) {\n const [entityNameReal, keyReal] = key.split('/')\n return {\n ...rootEntities,\n [entityNameReal]: {\n entityLabel,\n keys: [..._get(rootEntities, [entityNameReal, 'keys'], []), ...(applyKeys ? [keyReal] : [])]\n }\n }\n } else {\n return {\n ...rootEntities,\n [entityName]: {\n entityLabel,\n keys: [..._get(rootEntities, [entityName, 'keys'], []), ...(applyKeys ? [key] : [])]\n }\n }\n }\n}\n\nconst isEntityDeletable = entityToDelete =>\n entityToDelete.rootEntity.deleteStatus === deleteStatus.DELETABLE &&\n !entityToDelete.affectedEntities.find(affectedEntity => affectedEntity.deleteStatus !== deleteStatus.DELETABLE)\n\nexport const getDialogInfo = (response, currentBuId) => {\n const {entitiesToDelete} = response\n\n return entitiesToDelete.reduce(\n (acc, entityToDelete) => {\n const deletable = isEntityDeletable(entityToDelete)\n const relatedAttr = deletable ? 'relatedDeletable' : 'relatedNotDeletable'\n return {\n ...acc,\n rootEntitiesDeletable: transformRootEntity(acc.rootEntitiesDeletable, entityToDelete, deletable),\n ...(!deletable && {\n rootEntitiesNotDeletable: transformRootEntity(acc.rootEntitiesNotDeletable, entityToDelete)\n }),\n [relatedAttr]: transformRelatedEntities(acc[relatedAttr], entityToDelete, deletable, currentBuId)\n }\n },\n {\n rootEntitiesDeletable: {},\n rootEntitiesNotDeletable: {},\n relatedDeletable: {},\n relatedNotDeletable: {},\n hasUnreadableEntities: !!entitiesToDelete.find(e => e.unreadableEntities)\n }\n )\n}\n\nexport const getEntitiesToDelete = ({entitiesToDelete}) => ({\n entityName: _get(entitiesToDelete, '[0].rootEntity.entityName'),\n keys: entitiesToDelete.reduce(\n (acc, entityToDelete) => [...acc, ...(isEntityDeletable(entityToDelete) ? [entityToDelete.rootEntity.key] : [])],\n []\n )\n})\n\nexport const deleteEntityPropType = PropTypes.shape({\n entityLabel: PropTypes.string,\n keys: PropTypes.arrayOf(PropTypes.string),\n keysOtherBu: PropTypes.arrayOf(PropTypes.string)\n})\n\nexport const deleteInfoPropType = PropTypes.shape({\n rootEntitiesDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n rootEntitiesNotDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n relatedDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n relatedNotDeletable: PropTypes.objectOf(deleteEntityPropType).isRequired,\n hasUnreadableEntities: PropTypes.bool\n})\n","import {takeLatest, all, call, put, select} from 'redux-saga/effects'\nimport {rest, externalEvents, selection as selectionUtil} from 'tocco-app-extensions'\n\nimport {getDialogInfo, getEntitiesToDelete} from '../../utils/deleteRequestParser'\nimport * as actions from './actions'\n\nexport const inputSelector = state => state.input\nexport const textResourceSelector = state => state.intl.messages\nexport const entitiesToDeleteSelector = state => state.del.entitiesToDelete\n\nexport function* getDeleteBodyFromSelection() {\n const {selection} = yield select(inputSelector)\n\n const entities = yield call(selectionUtil.getEntities, selection, rest.fetchEntities)\n\n return {\n entityModel: entities.entityName,\n keys: entities.keys\n }\n}\n\nexport function* getDeleteEndpoint() {\n const {customDeleteEndpoint} = yield select(inputSelector)\n return customDeleteEndpoint || 'client/delete'\n}\n\nexport function* loadDialogInfo() {\n const body = yield call(getDeleteBodyFromSelection)\n const deleteEndpoint = yield call(getDeleteEndpoint)\n\n const [deleteResponse, principal] = yield all([\n call(rest.requestSaga, `${deleteEndpoint}/dialog`, {method: 'POST', body}),\n call(rest.fetchPrincipal)\n ])\n\n const dialogInfo = yield call(getDialogInfo, deleteResponse.body, principal.currentBusinessUnit.id)\n yield put(actions.setDeleteDialogInfo(dialogInfo))\n\n const entitiesToDelete = yield call(getEntitiesToDelete, deleteResponse.body)\n yield put(actions.setEntitiesToDelete(entitiesToDelete))\n}\n\nexport function* doDelete() {\n const entitiesToDelete = yield select(entitiesToDeleteSelector)\n\n yield put(actions.setDeletingInProgress(true))\n const body = {\n entityModel: entitiesToDelete.entityName,\n keys: entitiesToDelete.keys\n }\n\n const deleteEndpoint = yield call(getDeleteEndpoint)\n\n const response = yield call(rest.requestSaga, deleteEndpoint, {\n method: 'POST',\n body,\n acceptedStatusCodes: [409]\n })\n\n const textResources = yield select(textResourceSelector)\n if (response.ok) {\n const {body} = response\n\n const entities = Object.keys(body.deletedEntities).reduce((acc, entityName) => {\n return [...acc, ...body.deletedEntities[entityName].map(key => ({entityName, key}))]\n }, [])\n\n const remoteEvents = [\n {\n type: 'entity-delete-event',\n payload: {\n entities\n }\n }\n ]\n\n yield put(\n externalEvents.fireExternalEvent('onSuccess', {\n message: textResources['client.delete.successfullyMessage'],\n remoteEvents\n })\n )\n } else {\n if (response.status === 409 && response.body.information) {\n yield put(externalEvents.fireExternalEvent('onError', {message: response.body.information}))\n } else {\n yield put(externalEvents.fireExternalEvent('onError', {message: textResources['client.delete.errorMessage']}))\n }\n }\n}\n\nexport function* onCancel() {\n yield put(externalEvents.fireExternalEvent('onCancel'))\n}\n\nexport default function* mainSagas() {\n yield all([\n takeLatest(actions.LOAD_DIALOG_INFO, loadDialogInfo),\n takeLatest(actions.DO_DELETE, doDelete),\n takeLatest(actions.ON_CANCEL, onCancel)\n ])\n}\n","import del, {sagas as deleteSagas} from './delete'\n\nexport default {\n del\n}\n\nexport const sagas = [deleteSagas]\n","import PropTypes from 'prop-types'\nimport {actionEmitter, appFactory, externalEvents, notification, selection} from 'tocco-app-extensions'\nimport {reducer as reducerUtil} from 'tocco-util'\n\nimport Delete from './components/Delete'\nimport reducers, {sagas} from './modules/reducers'\n\nconst packageName = 'delete'\n\nconst EXTERNAL_EVENTS = ['onSuccess', 'onCancel', 'onError', 'emitAction']\n\nconst initApp = (id, input, events, publicPath) => {\n const content = <Delete />\n\n const store = appFactory.createStore(reducers, sagas, input, packageName)\n actionEmitter.addToStore(store, events.emitAction)\n const handleNotifications = !events.emitAction\n notification.addToStore(store, handleNotifications)\n externalEvents.addToStore(store, events)\n\n return appFactory.createApp(packageName, content, store, {\n input,\n events,\n actions: [],\n publicPath,\n textResourceModules: ['component', 'common', packageName]\n })\n}\n\n;(() => {\n if (__DEV__ && __PACKAGE_NAME__ === packageName) {\n const input = require('./dev/input.json')\n\n if (!__NO_MOCK__) {\n const fetchMock = require('fetch-mock').default\n fetchMock.config.overwriteRoutes = false\n const setupFetchMocks = require('./dev/fetchMocks').default\n setupFetchMocks(packageName, fetchMock)\n fetchMock.spy()\n }\n\n const app = initApp(packageName, input)\n\n if (module.hot) {\n module.hot.accept('./modules/reducers', () => {\n const reducers = require('./modules/reducers').default\n reducerUtil.hotReloadReducers(app.store, reducers)\n })\n }\n\n appFactory.renderApp(app.component)\n } else {\n appFactory.registerAppInRegistry(packageName, initApp)\n }\n})()\n\nconst DeleteApp = props => {\n const {component} = appFactory.useApp({initApp, props, packageName, externalEvents: EXTERNAL_EVENTS})\n return component\n}\n\nDeleteApp.propTypes = {\n selection: selection.propType.isRequired,\n customDeleteEndpoint: PropTypes.string\n}\n\nexport default DeleteApp\n","import PropTypes from 'prop-types'\nimport queryString from 'query-string'\nimport DocsBrowser from 'tocco-docs-browser/src/main'\nimport {AdminLink as StyledLink} from 'tocco-ui'\n\nimport {DetailLink} from '../../../entities/utils/navigationStrategy'\n\nexport const ListLink = ({entityName, entityKeys, children}) => {\n const rootNodes = entityKeys.map(key => ({entityName, key}))\n return (\n <StyledLink to={`/docs?rootNodes=${JSON.stringify(rootNodes)}`} target=\"_blank\">\n {children}\n </StyledLink>\n )\n}\n\nListLink.propTypes = {\n entityName: PropTypes.string.isRequired,\n children: PropTypes.any.isRequired,\n entityKeys: PropTypes.arrayOf(PropTypes.string)\n}\n\nconst DocsBrowserApp = props => {\n const queryParams = queryString.parse(props.history.location.search)\n\n return (\n <DocsBrowser\n {...props}\n routerType=\"inherit\"\n navigationStrategy={{\n ListLink,\n DetailLink\n }}\n {...(queryParams.rootNodes && {rootNodes: JSON.parse(queryParams.rootNodes)})}\n searchFormCollapsed={props.searchFormCollapsed}\n onSearchFormCollapsedChange={({collapsed}) => {\n props.saveUserPreferences({'admin.list.searchFormCollapsed': collapsed})\n }}\n scrollBehaviour=\"inline\"\n />\n )\n}\n\nDocsBrowserApp.propTypes = {\n history: PropTypes.object.isRequired,\n searchFormCollapsed: PropTypes.bool,\n saveUserPreferences: PropTypes.func\n}\n\nexport default DocsBrowserApp\n","import _get from 'lodash/get'\nimport {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\n\nimport {saveUserPreferences} from '../../../../modules/preferences/actions'\nimport DocsBrowserApp from './DocsBrowserApp'\n\nconst mapActionCreators = {\n saveUserPreferences\n}\n\nconst mapStateToProps = (state, props) => ({\n searchFormCollapsed: _get(state.preferences.userPreferences, 'admin.list.searchFormCollapsed', null)\n})\n\nexport default connect(mapStateToProps, mapActionCreators)(injectIntl(DocsBrowserApp))\n","import DocsBrowserApp from './components/DocsBrowserApp'\n\nexport default {\n container: DocsBrowserApp\n}\n","export default {\n ID: 'ID',\n QUERY: 'QUERY'\n}\n","import PropTypes from 'prop-types'\n\nimport selectionTypes from './selectionTypes'\n\nexport default PropTypes.shape({\n entityName: PropTypes.string.isRequired,\n ids: (props, propName, componentName) => {\n if (props.selection && props.selection.type === selectionTypes.ID && !props.selection[propName]) {\n return new Error(`Selection.ids prop not defined. Component: ${componentName}'.`)\n }\n },\n query: (props, propName, componentName) => {\n if (props.selection && props.selection.type === selectionTypes.QUERY && !props.selection[propName]) {\n return new Error(`Selection.query prop not defined. Component: ${componentName}'.`)\n }\n },\n type: PropTypes.oneOf(Object.keys(selectionTypes)).isRequired,\n count: PropTypes.number\n})\n","import {call} from 'redux-saga/effects'\nimport {consoleLogger} from 'tocco-util'\n\nimport selectionTypes from './selectionTypes'\n\nconst limit = 100000\n/**\n * Helper to get all entitiy keys of a selection.\n * @param {object} selection - selection object\n * @param {function} fetchEntities - rest helper function\n * @returns {object} Object containing entityName and an array of keys (limited if selection is query)\n */\nexport function* getEntities(selection, fetchEntities) {\n const {entityName} = selection\n if (selection.type === selectionTypes.QUERY) {\n const entities = yield call(fetchEntities, selection.entityName, {...selection.query, limit})\n\n if (entities.length > limit) {\n yield call(consoleLogger.logError, `Selected records exceed limit of ${limit}`)\n }\n\n return {\n entityName,\n keys: entities.map(e => e.key)\n }\n }\n\n return {\n entityName,\n keys: selection.ids\n }\n}\n\n/**\n * Helper to get single entity key of a seletion.\n * Throws error\n * - if wront entity is selected\n * - if `selection.type` is not `ID`\n * - if none or more than one entity is selected\n * @param {object} selection - selection object\n * @param {string} expectedEntityName - selected entityName\n * @returns {string} ID of single selected entity\n */\nexport const getSingleKey = (selection, expectedEntityName) => {\n if (selection.entityName !== expectedEntityName) {\n throw new Error(`Only selection of ${expectedEntityName} supported`)\n }\n if (selection.type !== 'ID') {\n throw new Error('Only ID selection type supported')\n }\n if (!selection.ids || selection.ids.length !== 1) {\n throw new Error(`Exactly one ${expectedEntityName} must be selected`)\n }\n return selection.ids[0]\n}\n","import propType from './proptype'\nimport {getEntities, getSingleKey} from './selection'\nimport selectionTypes from './selectionTypes'\nexport default {\n getEntities,\n getSingleKey,\n propType,\n selectionTypes\n}\n","import PropTypes from 'prop-types'\nconst searchFormTypes = {\n NONE: 'none',\n FULLTEXT: 'fulltext',\n SIMPLE: 'simple',\n SIMPLE_ADVANCED: 'simple_advanced',\n ADVANCED: 'advanced',\n ADMIN: 'admin'\n}\n\nexport const searchFormTypePropTypes = PropTypes.oneOf(Object.values(searchFormTypes))\n\nexport default searchFormTypes\n","import PropTypes from 'prop-types'\n\nconst selectionStyles = {\n SINGLE: 'single',\n MULTI: 'multi',\n MULTI_EXPLICIT: 'multi_explicit',\n NONE: 'none'\n}\n\nconst selectionStylePropType = PropTypes.oneOf(Object.keys(selectionStyles).map(key => selectionStyles[key]))\n\nexport {selectionStyles as default, selectionStylePropType}\n","import {css} from 'styled-components'\n\nimport {declareFont, theme} from '../utilStyles'\n\nexport const linkStyle = css`\n ${declareFont()}\n color: ${theme.color('text')};\n\n * {\n color: ${theme.color('text')};\n text-decoration: ${({neutral}) => (neutral ? 'none' : 'underline')};\n }\n\n &:hover,\n &:hover *,\n &:focus,\n &:focus * {\n text-decoration: ${({neutral}) => (neutral ? 'none' : 'underline')};\n }\n\n &:active,\n &:active * {\n text-decoration: ${({neutral}) => (neutral ? 'none' : 'underline')};\n }\n`\n","import {Link} from 'react-router-dom'\nimport styled from 'styled-components'\n\nimport {linkStyle} from './linkStyle'\n\nexport default styled(Link).withConfig({\n // do not forward `neutral` prop to HTML\n shouldForwardProp: (prop, defaultValidatorFn) => !['neutral'].includes(prop) && defaultValidatorFn(prop)\n})`\n ${linkStyle}\n`\n","/* stylelint-disable no-descending-specificity */\nimport React from 'react'\nimport styled from 'styled-components'\n\nimport {theme} from '../utilStyles'\n\nexport const StyledBreadcrumbs = styled.div`\n background-color: ${props => props.backgroundColor || theme.color('backgroundBreadcrumbs')(props)};\n width: 100%;\n padding: 0.8rem 1.7rem;\n position: relative;\n z-index: 2; // higher than StyledTether to prevent cover on scroll\n\n span:nth-child(even) {\n margin-left: 0.9rem;\n margin-right: 0.9rem;\n }\n`\n\nexport const StyledBreadcrumbsLink = styled(({component, ...props}) => React.cloneElement(component, props))`\n font-weight: ${theme.fontWeight('bold')};\n text-decoration: none;\n color: ${({active}) => active && theme.color('primary')};\n cursor: pointer;\n\n & * {\n font-weight: ${theme.fontWeight('bold')};\n text-decoration: none;\n color: ${({active}) => active && theme.color('primary')};\n margin-right: 0.5rem;\n }\n\n &:hover,\n &:hover * {\n color: ${theme.color('secondaryLight')};\n }\n\n &:focus,\n &:active,\n &:focus *,\n &:active * {\n color: ${theme.color('primary')};\n }\n`\n\n// noinspection Stylelint\nexport const StyledBreadcrumbsTitle = styled.span`\n font-weight: ${theme.fontWeight('bold')};\n text-decoration: none;\n color: ${({active}) => active && theme.color('primary')};\n\n & * {\n font-weight: ${theme.fontWeight('bold')};\n text-decoration: none;\n color: ${({active}) => active && theme.color('primary')};\n margin-right: 0.5rem;\n }\n\n &:active * {\n color: ${theme.color('primary')};\n }\n`\n","import PropTypes from 'prop-types'\nimport {Helmet} from 'react-helmet'\n\nimport {AdminLink as StyledLink} from '../AdminLink'\nimport Icon from '../Icon'\nimport Typography from '../Typography'\nimport {StyledBreadcrumbs, StyledBreadcrumbsLink, StyledBreadcrumbsTitle} from './StyledBreadcrumbs'\n\nconst getTitle = breadcrumbsInfo =>\n breadcrumbsInfo\n .slice(breadcrumbsInfo.length - 2)\n .map(breadcrumb => breadcrumb.title || breadcrumb.display)\n .reverse()\n .join(' - ')\n\nconst Breadcrumbs = ({pathPrefix, breadcrumbsInfo, currentView, backgroundColor, onClick, linkComp: LinkComp}) => {\n const breadcrumbs = [...(breadcrumbsInfo || []), ...(currentView ? [currentView] : [])]\n\n if (breadcrumbs.length === 0) {\n return null\n }\n\n const handleClick = breadcrumbsItem => () => {\n if (onClick) {\n onClick(breadcrumbsItem)\n }\n }\n\n return (\n <StyledBreadcrumbs backgroundColor={backgroundColor}>\n <Helmet defer={false}>\n <title>{getTitle(breadcrumbs)}</title>\n </Helmet>\n <div>\n {' '}\n {breadcrumbs\n .map((b, idx) => {\n const display = b.display || ''\n const Comp = idx === breadcrumbs.length - 1 ? StyledBreadcrumbsTitle : StyledBreadcrumbsLink\n return (\n <Typography.Span key={`breadcrumbItem-${idx}`}>\n <Comp\n neutral\n {...(idx === breadcrumbs.length - 1 && {active: 'true'})}\n {...(typeof b.path !== 'undefined' ? {to: `${pathPrefix}/${b.path}`} : {})}\n onClick={handleClick(b)}\n component={LinkComp ? <LinkComp /> : <StyledLink />}\n >\n {b.type === 'list' && <Icon icon=\"list\" />}\n {b.type === 'error' && <Icon icon=\"exclamation-circle\" />}\n {display}\n </Comp>\n </Typography.Span>\n )\n })\n .reduce((prev, curr, idx) => [\n prev,\n <Typography.Span key={'icon' + idx}>\n {' '}\n <Icon icon=\"chevron-right\" />{' '}\n </Typography.Span>,\n curr\n ])}\n </div>\n </StyledBreadcrumbs>\n )\n}\n\nBreadcrumbs.defaultProps = {\n pathPrefix: ''\n}\n\nBreadcrumbs.propTypes = {\n pathPrefix: PropTypes.string,\n match: PropTypes.object,\n breadcrumbsInfo: PropTypes.arrayOf(\n PropTypes.shape({\n display: PropTypes.string,\n title: PropTypes.string,\n path: PropTypes.string,\n type: PropTypes.string\n })\n ),\n currentView: PropTypes.shape({\n display: PropTypes.string,\n title: PropTypes.string\n }),\n backgroundColor: PropTypes.string,\n onClick: PropTypes.func,\n linkComp: PropTypes.any\n}\n\nexport default Breadcrumbs\n","import {request} from 'tocco-util'\n\nexport const sendRequest = endpoint => request.executeRequest(`rest/${endpoint}`)\n\nexport const extractBody = response => (response.status === 200 ? response.json() : null)\n","export const operators = ['==', '!=', '<=', '>=', '<', '>', '~=']\nexport const atoms = ['true', 'false', 'null']\nexport const types = [\n 'string',\n 'long',\n 'serial',\n 'bool',\n 'boolean',\n 'double',\n 'float',\n 'time',\n 'timestamp',\n 'char',\n 'varchar',\n 'date',\n 'datetime'\n]\nexport const placeholders = [\n 'now_date',\n 'yesterday_date',\n 'tomorrow_date',\n 'today_date',\n 'now_start',\n 'yesterday_start',\n 'tomorrow_start',\n 'today_start',\n 'now',\n 'yesterday',\n 'tomorrow',\n 'today',\n 'currentUsername',\n 'currentUser',\n 'currentBu'\n]\nexport const functions = [\n 'in',\n 'dateadd',\n 'datetimeadd',\n 'duedate',\n 'birthdayin',\n 'fulltext',\n 'likeall',\n 'distance',\n 'inboundingbox'\n]\n","import ace from 'ace-builds/src-min-noconflict/ace'\nimport 'ace-builds/src-min-noconflict/mode-text'\nimport _isArray from 'lodash/isArray'\nimport _mergeWith from 'lodash/mergeWith'\n\nimport {atoms, functions, operators, placeholders, types} from './TqlConstants'\n\nexport default implicitModel =>\n class TqlHighlightRules extends ace.require('ace/mode/text_highlight_rules').TextHighlightRules {\n constructor() {\n super()\n\n const commonWhere = [\n {\n token: 'keyword.operator.conjunction',\n regex: /(\\s*)(and|or|not)($|\\s+)/,\n caseInsensitive: true\n },\n {\n token: 'support.class.relation',\n regex: /rel/,\n push: 'model'\n },\n {\n token: 'keyword.exists',\n regex: /exists\\s*/,\n push: 'exists',\n caseInsensitive: true\n },\n {\n token: 'keyword.count',\n regex: /count\\s*/,\n push: 'count',\n caseInsensitive: true\n },\n {\n token: [\n 'keyword.function.nice_function',\n 'paren.lparen.function_arguments',\n 'text.function_arguments',\n 'paren.rparen',\n 'text.whitespace'\n ],\n regex: `((?:${functions.join('|')})\\\\s*)(\\\\()(.*?)(\\\\))($|\\\\s+)`,\n caseInsensitive: true\n },\n {\n token: 'keyword.other.chaining',\n regex: /\\./\n },\n {\n token: 'support.function.field',\n regex: /([a-z_]+)($|\\s+)/,\n push: 'comparison'\n }\n ]\n\n const customRules = {\n start: implicitModel\n ? [\n {\n token: 'keyword.where',\n regex: /\\s*/,\n next: 'rootwhere',\n caseInsensitive: true\n }\n ]\n : [\n {\n token: 'keyword.find',\n regex: /find($|\\s+)/,\n push: 'model',\n caseInsensitive: true\n },\n {\n token: 'keyword.where',\n regex: /where($|\\s+)/,\n next: 'rootwhere',\n caseInsensitive: true\n }\n ],\n model: [\n {\n token: 'support.class.model',\n regex: /[A-Z][a-z_0-9]*\\s*/,\n next: 'pop'\n }\n ],\n rootwhere: [\n {\n token: 'keyword.order_by',\n regex: /order by($|\\s+)/,\n next: 'order',\n caseInsensitive: true\n },\n ...commonWhere\n ],\n comparison: [\n {\n token: 'keyword.operator.comparison',\n regex: `(${operators.join('|')})\\\\s*`,\n next: 'value'\n }\n ],\n value: [\n {\n token: 'string',\n regex: /\".*?\"\\s*/,\n next: 'pop'\n },\n {\n token: 'constant.numeric',\n regex: /\\d+(.\\d+)?\\s*/,\n next: 'pop'\n },\n {\n token: 'constant.language.tocco_placeholder',\n regex: `\\\\:(${placeholders.join('|')})\\\\s*`,\n next: 'pop',\n caseInsensitive: true\n },\n {\n token: 'constant.language',\n regex: `(${atoms.join('|')})\\\\s*`,\n next: 'pop',\n caseInsensitive: true\n },\n {\n token: 'support.type',\n regex: `(${types.join('|')}):\\\\s*`,\n caseInsensitive: true\n }\n ],\n exists: [\n {\n token: 'paren.lparen',\n regex: /\\(\\s*/\n },\n {\n token: 'support.class.relation',\n regex: /rel/,\n push: 'model'\n },\n {\n token: 'keyword.other.chaining',\n regex: /\\./\n },\n {\n token: 'keyword.where',\n regex: /where($|\\s+)/,\n next: 'existswhere',\n caseInsensitive: true\n },\n {\n token: 'paren.rparen',\n regex: /\\)\\s*/,\n next: 'pop'\n }\n ],\n existswhere: [\n ...commonWhere,\n {\n token: 'paren.rparen',\n regex: /\\)\\s*/,\n next: 'pop'\n }\n ],\n count: [\n {\n token: 'paren.lparen',\n regex: /\\(\\s*/\n },\n {\n token: 'support.class.relation',\n regex: /rel/,\n push: 'model'\n },\n {\n token: 'keyword.other.chaining',\n regex: /\\./\n },\n {\n token: 'keyword.where',\n regex: /where($|\\s+)/,\n next: 'countwhere',\n caseInsensitive: true\n },\n {\n token: 'paren.rparen',\n regex: /\\)\\s*/,\n next: 'comparison'\n }\n ],\n countwhere: [\n ...commonWhere,\n {\n token: 'paren.rparen',\n regex: /\\)\\s*/,\n next: 'comparison'\n }\n ],\n order: [\n {\n token: 'support.class.relation',\n regex: /rel/,\n push: 'model'\n },\n {\n token: 'keyword.other.chaining',\n regex: /\\./\n },\n {\n token: ['support.function.field', 'keyword.direction', 'separator'],\n regex: /([a-z_]+\\s*)(asc|desc)?($|,|\\s+)/\n }\n ]\n }\n this.$rules = _mergeWith(this.$rules, customRules, (objValue, srcValue) =>\n _isArray(objValue) ? objValue.concat(srcValue) : undefined\n )\n\n this.normalizeRules()\n }\n }\n","import ace from 'ace-builds/src-min-noconflict/ace'\nimport 'ace-builds/src-min-noconflict/mode-text'\nimport 'ace-builds/src-min-noconflict/mode-html'\nimport _isArray from 'lodash/isArray'\nimport _mergeWith from 'lodash/mergeWith'\n\nimport TqlHighlighter from './TqlHighlighter'\n\n/** this is a copy from https://github.com/ajaxorg/ace/blob/master/lib/ace/mode/ftl_highlight_rules.js but with angled\n * brackets replaced with square brackets as described in\n * https://freemarker.apache.org/docs/dgui_misc_alternativesyntax.html\n *\n * TODO add auto-complete? only for tocco functions? TOCDEV-4496\n * TODO implement possibility to switch between the two and open PR with ACE repository? TOCDEV-4495\n **/\nexport class ToccoFtlLangHighlightRules extends ace.require('ace/mode/text_highlight_rules').TextHighlightRules {\n constructor() {\n super()\n\n const stringBuiltIns =\n '\\\\?|substring|cap_first|uncap_first|capitalize|chop_linebreak|date|time|datetime|' +\n 'ends_with|html|groups|index_of|j_string|js_string|json_string|last_index_of|length|lower_case|' +\n 'left_pad|right_pad|contains|matches|number|replace|rtf|url|split|starts_with|string|trim|' +\n 'upper_case|word_list|xhtml|xml'\n const numberBuiltIns = 'c|round|floor|ceiling'\n const dateBuiltIns = 'iso_[a-z_]+'\n const seqBuiltIns = 'first|last|seq_contains|seq_index_of|seq_last_index_of|reverse|size|sort|sort_by|chunk'\n const hashBuiltIns = 'keys|values'\n const xmlBuiltIns = 'children|parent|root|ancestors|node_name|node_type|node_namespace'\n const expertBuiltIns =\n 'byte|double|float|int|long|short|number_to_date|number_to_time|number_to_datetime|' +\n 'eval|has_content|interpret|is_[a-z_]+|namespacenew'\n const allBuiltIns =\n stringBuiltIns + numberBuiltIns + dateBuiltIns + seqBuiltIns + hashBuiltIns + xmlBuiltIns + expertBuiltIns\n\n const deprecatedBuiltIns = 'default|exists|if_exists|web_safe'\n\n const variables =\n 'data_model|error|globals|lang|locale|locals|main|namespace|node|current_node|' +\n 'now|output_encoding|template_name|url_escaping_charset|vars|version'\n\n const operators = 'gt|gte|lt|lte|as|in|using'\n\n const reserved = 'true|false'\n\n const attributes =\n 'encoding|parse|locale|number_format|date_format|time_format|datetime_format|time_zone|' +\n 'url_escaping_charset|classic_compatible|strip_whitespace|strip_text|strict_syntax|ns_prefixes|' +\n 'attributes'\n\n this.$rules = {\n start: [\n {\n token: 'constant.character.entity',\n regex: /&[^;]+;/\n },\n {\n token: 'support.function',\n regex: '\\\\?(' + allBuiltIns + ')'\n },\n {\n token: 'support.function.deprecated',\n regex: '\\\\?(' + deprecatedBuiltIns + ')'\n },\n {\n token: 'language.variable',\n regex: '\\\\.(?:' + variables + ')'\n },\n {\n token: 'constant.language',\n regex: '\\\\b(' + reserved + ')\\\\b'\n },\n {\n token: 'keyword.operator',\n regex: '\\\\b(?:' + operators + ')\\\\b'\n },\n {\n token: 'entity.other.attribute-name',\n regex: attributes\n },\n {\n token: 'string', //\n regex: /['\"]/,\n next: 'qstring'\n },\n {\n // Deal with variable names that contains number\n // e.g. <#if var42 == 42 >\n token: function (value) {\n if (value.match('^[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?$')) {\n return 'constant.numeric'\n } else {\n return 'variable'\n }\n },\n regex: /[\\w.+-]+/\n },\n {\n token: 'keyword.operator',\n regex:\n '!|\\\\.|\\\\$|%|&|\\\\*|\\\\-\\\\-|\\\\-|\\\\+\\\\+|\\\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|&&|\\\\|\\\\||\\\\?\\\\:' +\n '|\\\\*=|%=|\\\\+=|\\\\-=|&=|\\\\^='\n },\n {\n token: 'paren.lparen',\n regex: '[[({]'\n },\n {\n token: 'paren.rparen',\n regex: '[\\\\])}]'\n },\n {\n token: 'text',\n regex: '\\\\s+'\n }\n ],\n\n qstring: [\n {\n token: 'constant.character.escape',\n regex: '\\\\\\\\[nrtvef\\\\\\\\\"$]'\n },\n {\n token: 'string',\n regex: /['\"]/,\n next: 'start'\n },\n {\n defaultToken: 'string'\n }\n ]\n }\n }\n}\n\nexport default class ToccoFtlHighlightRules extends ace.require('ace/mode/html_highlight_rules').HtmlHighlightRules {\n constructor() {\n super()\n\n const directives =\n 'assign|attempt|break|case|compress|default|elseif|else|escape|fallback|function|flush|' +\n 'ftl|global|if|import|include|list|local|lt|macro|nested|noescape|noparse|nt|recover|recurse|return|rt|' +\n 'setting|stop|switch|t|visit'\n\n const tqlDirectives = ['query', 'queryCount']\n\n const startRules = [\n {\n token: 'keyword.function',\n regex: `\\\\[@(${tqlDirectives.join('|')}).*?]`,\n push: 'tql-start'\n },\n {\n token: 'comment',\n regex: '\\\\[#--',\n next: 'ftl-dcomment'\n },\n {\n token: 'string.interpolated',\n regex: '\\\\${',\n push: 'ftl-start'\n },\n {\n token: 'keyword.function',\n regex: '\\\\[/?#(' + directives + ')',\n push: 'ftl-start'\n },\n {\n token: 'keyword.other',\n regex: '\\\\[/?@[a-zA-Z\\\\.]+',\n push: 'ftl-start'\n }\n ]\n\n const endRules = [\n {\n token: 'keyword',\n regex: '/?\\\\]',\n next: 'pop'\n },\n {\n token: 'string.interpolated',\n regex: '}',\n next: 'pop'\n }\n ]\n\n for (const key in this.$rules) {\n this.$rules[key].unshift.apply(this.$rules[key], startRules)\n }\n\n this.embedRules(ToccoFtlLangHighlightRules, 'ftl-', endRules, ['start'])\n\n this.addRules({\n 'ftl-dcomment': [\n {\n token: 'comment',\n regex: '--\\\\]',\n next: 'pop'\n },\n {\n defaultToken: 'comment'\n }\n ]\n })\n\n const tqlEndRules = [\n {\n token: 'keyword.function',\n regex: `\\\\[/@(${tqlDirectives.join('|')})]`,\n next: 'pop'\n }\n ]\n\n this.embedRules(TqlHighlighter(), 'tql-', tqlEndRules, ['start'])\n\n const mergingRules = {\n 'tql-rootwhere': [\n {\n token: 'keyword.function',\n regex: `\\\\[/@(${tqlDirectives.join('|')})]`,\n next: 'pop'\n }\n ],\n 'tql-order': [\n {\n token: 'keyword.function',\n regex: `\\\\[/@(${tqlDirectives.join('|')})]`,\n next: 'pop'\n }\n ]\n }\n this.$rules = _mergeWith(this.$rules, mergingRules, (objValue, srcValue) =>\n _isArray(objValue) ? objValue.concat(srcValue) : undefined\n )\n\n this.normalizeRules()\n }\n}\n","import ace from 'ace-builds/src-min-noconflict/ace'\n\nimport {extractBody, sendRequest} from './requestHelper'\nimport {functions, placeholders, types} from './TqlConstants'\n\nconst TokenIterator = ace.require('ace/token_iterator').TokenIterator\nconst getTokenType = token => (token ? token.type.substring(token.type.lastIndexOf('.') + 1) : null)\n\nconst isCurrentTokenOfType = (iterator, type) => getTokenType(iterator.getCurrentToken()) === type\n\nconst findLastPathStep = iterator => {\n if (isCurrentTokenOfType(iterator, 'model')) {\n iterator.stepBackward()\n }\n if (isCurrentTokenOfType(iterator, 'field') || isCurrentTokenOfType(iterator, 'relation')) {\n iterator.stepBackward()\n }\n if (isCurrentTokenOfType(iterator, 'chaining')) {\n iterator.stepBackward()\n } else {\n return null\n }\n\n if (isCurrentTokenOfType(iterator, 'model')) {\n const modelToken = iterator.getCurrentToken()\n iterator.stepBackward()\n iterator.stepBackward()\n return modelToken ? modelToken.value.trim() : null\n } else {\n return null\n }\n}\n\nconst stepBackUntilToken = (iterator, type) => {\n while (!isCurrentTokenOfType(iterator, type)) {\n if (!iterator.stepBackward()) {\n return false\n }\n }\n return true\n}\n\nconst handleParentheses = (iterator, parenCount) => {\n if (isCurrentTokenOfType(iterator, 'rparen')) {\n return 1\n } else if (parenCount > 0 && isCurrentTokenOfType(iterator, 'lparen')) {\n iterator.stepBackward()\n return -1\n } else {\n return 0\n }\n}\n\nconst findLastModelScope = iterator => {\n let parenCount = 0\n while (iterator.getCurrentToken()) {\n if (parenCount === 0 && isCurrentTokenOfType(iterator, 'where')) {\n const modelToken = iterator.stepBackward()\n return modelToken ? [modelToken.value.trim(), ...findCurrentPath(iterator)] : []\n }\n if (isCurrentTokenOfType(iterator, 'order_by')) {\n if (stepBackUntilToken(iterator, 'find')) {\n const modelToken = iterator.stepForward()\n return modelToken ? modelToken.value.trim() : []\n } else {\n return []\n }\n }\n parenCount += handleParentheses(iterator, parenCount)\n if (!iterator.stepBackward()) {\n return null\n }\n }\n return null\n}\n\nconst backtrack = (iterator, stepBack) => {\n const steps = []\n let lastStep = stepBack(iterator)\n while (lastStep) {\n if (Array.isArray(lastStep)) {\n lastStep.forEach(step => steps.unshift(step))\n } else {\n steps.unshift(lastStep)\n }\n lastStep = stepBack(iterator)\n }\n return steps\n}\n\nexport const findCurrentPath = iterator => backtrack(iterator, findLastPathStep)\nexport const findCurrentModelScope = iterator => backtrack(iterator, findLastModelScope)\n\n/**\n * built-in language completions use 1000000, which also seems to just be some magic number\n * keyword and local completions seem to be somewhere around 100 based on some experiments with ordering\n **/\nconst defaultScore = 1000\n\nconst loadModels = () =>\n sendRequest('entities')\n .then(extractBody)\n .then(body => (body ? body.entities : {}))\n .then(entities => (entities ? Object.values(entities) : []))\n .then(models => models.map(({metaData}) => metaData))\n\nconst buildFieldLabel = field => (field.label ? `${field.fieldName} (${field.label})` : field.fieldName)\n\nconst buildRelationLabel = relation =>\n relation.label ? `${relation.relationName} (${relation.label})` : relation.relationName\n\nconst buildResolveUrl = (sourceModel, relationSteps) => {\n const resolvePart = relationSteps.length > 0 ? '/resolve?path=' + relationSteps.join('.') : ''\n return `entities/${sourceModel}/model${resolvePart}`\n}\n\nconst resolvePath = ([sourceModel, ...relationSteps]) =>\n sendRequest(buildResolveUrl(sourceModel, relationSteps))\n .then(extractBody)\n .then(body => {\n if (!body) {\n return []\n }\n const fields = body.fields || []\n const relations = body.relations || []\n return [\n ...fields.map(f => ({\n label: buildFieldLabel(f),\n value: f.fieldName,\n meta: f.type\n })),\n ...relations.map(r => ({\n label: buildRelationLabel(r),\n value: r.relationName,\n meta: r.targetEntity\n }))\n ]\n })\n\nconst determineModelScope = (createIterator, implicitModel) => {\n if (implicitModel) {\n const [...modelScope] = findCurrentModelScope(createIterator())\n return {baseModel: implicitModel, modelScope}\n } else {\n const [baseModel, ...modelScope] = findCurrentModelScope(createIterator())\n return {baseModel, modelScope}\n }\n}\n\nconst determineAvailablePaths = (createIterator, callback, implicitModel) => {\n const {baseModel, modelScope} = determineModelScope(createIterator, implicitModel)\n if (!baseModel) {\n return\n }\n const currentPath = findCurrentPath(createIterator())\n const relationSteps = [...modelScope, ...currentPath].map(model => `rel${model}`)\n const fullPath = [baseModel, ...relationSteps]\n resolvePath(fullPath)\n .then(paths => {\n const pathCompletions = paths.map(path => ({\n caption: path.label,\n value: path.value,\n meta: path.meta,\n score: defaultScore\n }))\n callback(null, pathCompletions)\n })\n .catch(errors => callback(errors))\n}\n\nconst buildModelLabel = (modelName, label) => (label ? `${modelName} (${label})` : modelName)\n\nconst loadAllAvailableModels = callback =>\n loadModels()\n .then(models => {\n const modelCompletions = models.map(({modelName, label}) => ({\n caption: buildModelLabel(modelName, label),\n value: modelName,\n score: defaultScore\n }))\n callback(null, modelCompletions)\n })\n .catch(errors => callback(errors))\n\nconst getAvailableFunctions = () =>\n functions\n .map(f => f.toUpperCase())\n .map(f => ({\n caption: f,\n value: `${f}()`,\n meta: 'function',\n score: defaultScore - 30\n }))\n\nconst getAvailableTypes = () =>\n types.map(type => ({\n caption: type,\n value: `${type}:`,\n meta: 'type',\n score: defaultScore - 20\n }))\n\nconst getAvailablePlaceholders = () =>\n placeholders.map(placeholder => ({\n caption: placeholder,\n value: `:${placeholder}`,\n meta: 'placeholder',\n score: defaultScore - 10\n }))\n\nexport default implicitModel => ({\n getCompletions: (editor, session, pos, prefix, callback) => {\n const createIteratorAtCurrentPosition = () => new TokenIterator(session, pos.row, pos.column)\n\n const iterator = createIteratorAtCurrentPosition()\n const currentToken = iterator.getCurrentToken()\n const previousToken = iterator.stepBackward() ? iterator.getCurrentToken() : null\n switch (getTokenType(currentToken)) {\n case 'chaining':\n case 'relation':\n case 'separator':\n case 'order_by':\n case 'count':\n case 'exists':\n case 'field':\n case 'function_arguments':\n determineAvailablePaths(createIteratorAtCurrentPosition, callback, implicitModel)\n break\n case 'where':\n case 'conjunction':\n determineAvailablePaths(createIteratorAtCurrentPosition, callback, implicitModel)\n callback(null, getAvailableFunctions())\n break\n case 'nice_function':\n callback(null, getAvailableFunctions())\n break\n case 'find':\n loadAllAvailableModels(callback)\n break\n case 'type':\n case 'tocco_placeholder':\n case 'comparison':\n callback(null, getAvailableTypes())\n callback(null, getAvailablePlaceholders())\n break\n case 'model':\n determineAvailablePaths(createIteratorAtCurrentPosition, callback, implicitModel)\n if (previousToken && getTokenType(previousToken) !== 'relation') {\n loadAllAvailableModels(callback)\n }\n break\n case null:\n // this happens when nothing has been entered, which is a valid start with an implicit model, treat like where\n if (implicitModel) {\n determineAvailablePaths(createIteratorAtCurrentPosition, callback, implicitModel)\n }\n callback(null, getAvailableFunctions())\n break\n }\n }\n})\n","import ace from 'ace-builds/src-min-noconflict/ace'\nimport 'ace-builds/src-min-noconflict/mode-ftl'\n\nimport ToccoFtlHighlightRules from './FtlHighlighter'\nimport TqlAutoCompleter from './TqlAutoCompleter'\n\nexport default class ToccoFtlMode extends ace.require('ace/mode/ftl').Mode {\n constructor() {\n super()\n this.HighlightRules = ToccoFtlHighlightRules\n this.completer = TqlAutoCompleter()\n }\n}\n","import ace from 'ace-builds/src-min-noconflict/ace'\nimport 'ace-builds/src-min-noconflict/mode-text'\n\nimport TqlAutoCompleter from './TqlAutoCompleter'\nimport TqlHighlighter from './TqlHighlighter'\n\nexport default class TqlMode extends ace.require('ace/mode/text').Mode {\n constructor({implicitModelName}) {\n super()\n this.HighlightRules = TqlHighlighter(implicitModelName)\n this.completer = TqlAutoCompleter(implicitModelName)\n this.snippedIdField = null // TODO implement? TOCDEV-4499\n }\n}\n","import ace from 'ace-builds/src-min-noconflict/ace'\nimport 'ace-builds/webpack-resolver'\nimport {Mode as DroolsMode} from 'ace-builds/src-min-noconflict/mode-drools'\nimport {Mode as GroovyMode} from 'ace-builds/src-min-noconflict/mode-groovy'\nimport {Mode as HtmlMode} from 'ace-builds/src-min-noconflict/mode-html'\nimport {Mode as JsonMode} from 'ace-builds/src-min-noconflict/mode-json'\nimport {Mode as LessMode} from 'ace-builds/src-min-noconflict/mode-less'\nimport {Mode as PropertiesMode} from 'ace-builds/src-min-noconflict/mode-properties'\nimport {Mode as TextMode} from 'ace-builds/src-min-noconflict/mode-text'\nimport {Mode as XmlMode} from 'ace-builds/src-min-noconflict/mode-xml'\nimport _get from 'lodash/get'\nimport _isNil from 'lodash/isNil'\nimport _isObject from 'lodash/isObject'\nimport _isString from 'lodash/isString'\nimport {useEffect, useMemo, useRef} from 'react'\nimport styled from 'styled-components'\n\nimport AceEditorPropTypes from './AceEditorPropTypes'\nimport 'ace-builds/src-min-noconflict/snippets/ftl'\nimport 'ace-builds/src-min-noconflict/snippets/groovy'\nimport 'ace-builds/src-min-noconflict/snippets/html'\nimport 'ace-builds/src-min-noconflict/snippets/less'\nimport 'ace-builds/src-min-noconflict/snippets/xml'\nimport 'ace-builds/src-min-noconflict/snippets/properties'\nimport 'ace-builds/src-min-noconflict/snippets/json'\nimport 'ace-builds/src-min-noconflict/snippets/drools'\nimport 'ace-builds/src-min-noconflict/theme-textmate'\nimport 'ace-builds/src-min-noconflict/ext-language_tools'\nimport {extractBody, sendRequest} from './requestHelper'\nimport ToccoFtlMode from './ToccoFtlMode'\nimport TqlMode from './TqlMode'\n\nconst StyledEditor = styled.div`\n width: 100%;\n z-index: 0; /* gutter lays over menu otherwise */\n`\n\nconst modeMappings = {\n groovy: () => new GroovyMode(),\n html: () => new HtmlMode(),\n xml: () => new XmlMode(),\n properties: () => new PropertiesMode(),\n json: () => new JsonMode(),\n htmlmixed: () => new ToccoFtlMode(),\n freemarkermixed: () => new ToccoFtlMode(),\n ftl: () => new ToccoFtlMode(),\n tql: props => new TqlMode(props),\n less: () => new LessMode(),\n drools: () => new DroolsMode(),\n text: () => new TextMode()\n}\n\nconst getMode = (mode, props) => _get(modeMappings, mode, mode)(props)\n\nconst loadImplicitModel = implicitModel => {\n if (_isString(implicitModel)) {\n return Promise.resolve(implicitModel)\n } else if (_isObject(implicitModel)) {\n return sendRequest(`entities/2.0/${implicitModel.entityModel}/${implicitModel.key}?_paths=${implicitModel.field}`)\n .then(extractBody)\n .then(moduleEntity => _get(moduleEntity, ['paths', 'entity_name', 'value'], null))\n } else {\n return Promise.resolve(null)\n }\n}\n\nconst setEditorConfiguration = (editor, {mode, theme, showGutter, editorOptions = {}, implicitModel}) => {\n loadImplicitModel(implicitModel)\n .then(implicitModelName => getMode(mode, {implicitModelName}))\n .then(editorMode => editor.getSession().setMode(editorMode))\n editor.setTheme(`ace/theme/${theme}`)\n Object.entries(editorOptions).forEach(([k, v]) => {\n editor.setOption(k, v)\n })\n editor.renderer.setShowGutter(showGutter)\n editor.resize()\n}\n\nconst AceEditor = props => {\n const {mode, theme = 'textmate', value, onChange, showGutter = true, editorOptions = {}, implicitModel} = props\n const containerReference = useRef(null)\n const editorReference = useRef(null)\n\n const editorConfig = useMemo(\n () => ({mode, theme, showGutter, editorOptions, implicitModel}),\n [mode, theme, showGutter, editorOptions, implicitModel]\n )\n\n // only on mount\n useEffect(() => {\n const aceEditor = ace.edit(containerReference.current)\n aceEditor.getSession().setValue(value || '')\n aceEditor.on('change', () => onChange(aceEditor.getValue()))\n setEditorConfiguration(aceEditor, editorConfig)\n editorReference.current = aceEditor\n\n return () => aceEditor.destroy()\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n if (editorReference.current) {\n setEditorConfiguration(editorReference.current, editorConfig)\n }\n }, [editorConfig])\n useEffect(() => {\n /* ace handles its state internally, always resetting the value confuses it.\n * this way we only set the value when it is different from the current state, i.e. when it is overwritten through\n * code. feel free to rewrite this with better ideas.\n */\n if (editorReference.current && !_isNil(value) && value !== editorReference.current.getValue()) {\n editorReference.current.getSession().setValue(value)\n }\n }, [value])\n\n return <StyledEditor ref={containerReference} />\n}\n\nAceEditor.propTypes = AceEditorPropTypes\n\nexport default AceEditor\n","import styled from 'styled-components'\n\nimport {scale} from '../utilStyles'\n\nexport const StyledWrapper = styled.div`\n cursor: pointer;\n\n .flatpickr-calendar.open {\n margin-top: ${scale.space(1.2)};\n }\n\n .flatpickr-calendar.arrowTop:before,\n .flatpickr-calendar.arrowTop:after {\n left: 83%;\n }\n`\n","import PropTypes from 'prop-types'\nimport {useEffect, useRef} from 'react'\nimport {injectIntl} from 'react-intl'\nimport {withTheme} from 'styled-components'\n\nimport {theme} from '../utilStyles'\nimport {StyledWrapper} from './StyledDatePicker'\nimport {useDatePickr} from './useDatePickr'\n\nexport const DatePicker = props => {\n const {value, children, intl, onChange} = props\n const wrapperElement = useRef(null)\n const locale = intl.locale\n const msg = id => intl.formatMessage({id})\n\n const fontFamily = theme.fontFamily('regular')(props)\n\n const flatpickrOptions = {}\n const initializeFlatPickr = useDatePickr(wrapperElement, {\n value,\n onChange,\n fontFamily,\n locale,\n flatpickrOptions,\n shouldAppend: true\n })\n\n // only on mount\n useEffect(() => {\n if (wrapperElement.current) {\n initializeFlatPickr()\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <>\n <StyledWrapper data-wrap ref={wrapperElement}>\n <div data-toggle>\n <input\n style={{display: 'none'}}\n type=\"text\"\n data-input\n aria-label={msg('client.component.datePicker.label')}\n />\n {children}\n </div>\n </StyledWrapper>\n </>\n )\n}\n\nDatePicker.propTypes = {\n /**\n * Any content to wrap a onclick around to open a calendar\n */\n children: PropTypes.node.isRequired,\n /**\n * Function triggered on every date selection. First parameter is the picked date as iso string.\n */\n onChange: PropTypes.func.isRequired,\n /**\n * To set the selected date from outside the component.\n */\n value: PropTypes.any,\n intl: PropTypes.object.isRequired\n}\n\nexport default withTheme(injectIntl(DatePicker))\n","import '!style-loader!css-loader!flatpickr/dist/themes/light.css'\nimport flatpickr from 'flatpickr'\nimport {German} from 'flatpickr/dist/l10n/de.js'\nimport {French} from 'flatpickr/dist/l10n/fr.js'\nimport {Italian} from 'flatpickr/dist/l10n/it.js'\nimport {useEffect, useRef} from 'react'\nimport {react, js} from 'tocco-util'\n\nconst localeMap = {\n 'de-CH': German,\n de: German,\n fr: French,\n it: Italian\n}\n\nconst handleOnChange = onChange => selectedDates => {\n if (selectedDates && selectedDates.length > 0) {\n onChange(selectedDates[0].toISOString())\n } else {\n onChange(null)\n }\n}\n\nconst initializeFlatPickr = (element, {shouldAppend, onChange, value, fontFamily, locale, flatpickrOptions}) => {\n const calendarLocale = localeMap[locale]\n\n const options = {\n wrap: true,\n onChange: handleOnChange(onChange),\n altInput: false,\n enableTime: false,\n defaultDate: value,\n\n ...(shouldAppend ? {appendTo: element.current, static: true} : {}),\n ...(calendarLocale ? {locale: calendarLocale} : {}),\n ...flatpickrOptions\n }\n\n const flatpickrInstance = flatpickr(element.current, options)\n\n if (fontFamily) {\n flatpickrInstance.calendarContainer.style.fontFamily = fontFamily\n }\n\n return flatpickrInstance\n}\n\nexport const useDatePickr = (element, config) => {\n const {value, locale, flatpickrOptions} = config\n const flatpickr = useRef(null)\n\n const prevFlatpickrOptions = react.usePrevious(flatpickrOptions)\n\n const init = () => {\n flatpickr.current = initializeFlatPickr(element, config)\n return flatpickr.current\n }\n\n useEffect(() => {\n return () => {\n if (flatpickr.current) {\n flatpickr.current.destroy()\n }\n }\n }, []) // only on unmount\n\n // only trigger useEffect when value array changed (deep comparison workaround)\n useEffect(() => {\n if (flatpickr.current) {\n flatpickr.current.setDate(value, false)\n flatpickr.current.redraw()\n }\n }, [JSON.stringify(value)]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n const calendarLocale = localeMap[locale] || flatpickr.current?.l10ns?.en // fallback to english\n if (flatpickr.current && calendarLocale) {\n flatpickr.current.localize(calendarLocale)\n flatpickr.current.set('locale', calendarLocale)\n flatpickr.current.redraw()\n }\n }, [locale])\n\n // prevFlatpickrOptions can be ignored\n useEffect(() => {\n if (flatpickr.current) {\n const optionsDiff = js.difference(flatpickrOptions, prevFlatpickrOptions)\n if (Object.keys(optionsDiff).length > 0) {\n Object.entries(optionsDiff).forEach(([key, value]) => {\n flatpickr.current.set(key, value)\n })\n flatpickr.current.redraw()\n }\n }\n }, [flatpickrOptions]) // eslint-disable-line react-hooks/exhaustive-deps\n\n return init\n}\n","import styled from 'styled-components'\n\nimport {colorizeText} from '../../utilStyles'\nimport {StyledEditableWrapperCss, StyledInputCss} from '../StyledEditableValue'\n\nexport const StyledDatePickerInput = styled.input`\n &&& {\n ${StyledInputCss}\n margin: 0;\n }\n`\n\nexport const StyledDatePickerValue = styled.div`\n && {\n ${StyledInputCss}\n display: flex;\n align-items: center;\n ${props =>\n !props.hasValue &&\n `\n justify-content: center;\n color: ${colorizeText.shade1(props)};\n `}\n }\n`\n\nexport const StyledDatePickerOuterWrapper = styled.div`\n outline: ${({immutable}) => (immutable ? 0 : 'initial')};\n`\n\nexport const StyledDatePickerWrapper = styled.div`\n && {\n ${StyledEditableWrapperCss}\n\n input {\n display: ${({immutable}) => (immutable ? 'none' : 'block')};\n\n &:last-of-type {\n display: ${({immutable}) => (immutable ? 'block' : 'none')};\n }\n }\n }\n`\n","import PropTypes from 'prop-types'\nimport {useRef, useState} from 'react'\nimport {injectIntl} from 'react-intl'\nimport {withTheme} from 'styled-components'\n\nimport Ball from '../../Ball'\nimport {useDatePickr} from '../../DatePicker/useDatePickr'\nimport {theme} from '../../utilStyles'\nimport {\n StyledDatePickerInput,\n StyledDatePickerWrapper,\n StyledDatePickerOuterWrapper,\n StyledDatePickerValue\n} from './StyledDatePicker'\n\nconst focusFlatpickrInput = wrapper => {\n // flatpickr add two input in the DOM. One for the actual value (hidden) and one for the altInput\n const inputElement = wrapper.querySelector('input.flatpickr-input:not([type=\"hidden\"])')\n if (inputElement) {\n inputElement.focus()\n }\n}\n\nconst DatePicker = props => {\n const {immutable, id, options, value, onChange, formatDate, intl, placeholder} = props\n const [initialized, setInitialized] = useState(false)\n const flatpickr = useRef(null)\n const wrapper = useRef(null)\n const locale = intl.locale\n const msg = id => intl.formatMessage({id})\n\n const fontFamily = theme.fontFamily('regular')(props)\n\n const handleOnChange = val => {\n if (val) {\n onChange([val])\n }\n }\n\n const flatpickrOptions = {\n altInput: true,\n altInputClass: '',\n clickOpens: !immutable,\n ...(options ? options.flatpickrOptions : {})\n }\n const initializeFlatPickr = useDatePickr(wrapper, {\n value,\n onChange: handleOnChange,\n fontFamily,\n locale,\n flatpickrOptions\n })\n\n const init = () => {\n flatpickr.current = initializeFlatPickr()\n\n flatpickr.current.calendarContainer.classList.add('tocco-ui-theme')\n flatpickr.current.calendarContainer.addEventListener('keydown', handleConfirmKey)\n setInitialized(true)\n }\n\n const altInput = flatpickr.current?.altInput?.value || ''\n\n const focusInput = () => {\n if (!initialized) {\n init()\n\n /**\n * Workaround:\n * To be sure that the initialized state has been updated\n * before we change the focus we delay this to the next tick.\n */\n setTimeout(() => {\n focusFlatpickrInput(wrapper.current)\n })\n } else {\n focusFlatpickrInput(wrapper.current)\n }\n }\n\n const handleConfirmKey = e => {\n if ((!e.target.classList.contains('flatpickr-hour') && e.key === 'Tab' && !e.shiftKey) || e.key === 'Enter') {\n setTimeout(() => {\n flatpickr.current.close()\n })\n }\n if (e.key === 'Enter') {\n e.preventDefault()\n e.stopPropagation()\n }\n }\n\n const hasValue = value && value.length > 0 && value.every(v => v)\n\n return (\n <>\n <StyledDatePickerOuterWrapper\n immutable={immutable}\n id={id}\n tabIndex=\"-1\"\n onFocus={() => {\n focusInput()\n\n if (flatpickr.current) {\n flatpickr.current.open()\n }\n }}\n onKeyDown={handleConfirmKey}\n >\n <StyledDatePickerWrapper data-wrap immutable={immutable} ref={wrapper}>\n <StyledDatePickerInput\n {...(immutable ? {disabled: 'disabled'} : {})}\n type=\"hidden\"\n data-input\n immutable={immutable}\n className=\"flatpickr-input\"\n placeholder={placeholder}\n />\n {!initialized && (\n <StyledDatePickerValue tabIndex={0} hasValue={hasValue}>\n {hasValue ? formatDate(value[0]) : placeholder}\n </StyledDatePickerValue>\n )}\n <StyledDatePickerInput disabled immutable={immutable} value={altInput} placeholder={placeholder} />\n {!immutable && hasValue && (\n <Ball\n icon=\"times\"\n tabIndex={-1}\n aria-label={msg('client.component.dateAbstract.clearDateLabel')}\n onMouseDown={e => {\n e.preventDefault()\n onChange(null)\n }}\n />\n )}\n </StyledDatePickerWrapper>\n </StyledDatePickerOuterWrapper>\n </>\n )\n}\n\nDatePicker.propTypes = {\n id: PropTypes.string,\n intl: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.arrayOf(PropTypes.string),\n options: PropTypes.shape({\n flatpickrOptions: PropTypes.object\n }),\n placeholder: PropTypes.string,\n parseDate: PropTypes.func,\n formatDate: PropTypes.func,\n immutable: PropTypes.bool,\n initialized: PropTypes.func,\n events: PropTypes.shape({\n onFocus: PropTypes.func\n })\n}\n\nexport default withTheme(injectIntl(DatePicker))\n","import {createGlobalStyle} from 'styled-components'\n\nimport {theme, declareFont, scale} from '../utilStyles'\n\nconst calendarWidth = 270\nconst secondaryLight = theme.color('secondaryLight')\nconst secondary = theme.color('secondary')\nconst paper = theme.color('paper')\nconst text = theme.color('text')\nconst regular = theme.fontWeight('regular')\nconst baseSpace = scale.space(-2)\n\nexport const GlobalDatePickerStyles = createGlobalStyle`\n .flatpickr-calendar {\n && {\n ${declareFont()}\n width: ${calendarWidth}px;\n border: 1px solid ${secondaryLight};\n border-radius: 0;\n }\n\n &.open {\n z-index: 999999 !important; // higher than StyledModalHolder\n }\n\n &.arrowTop:before,\n &.arrowTop:after {\n border-bottom-color: ${secondaryLight} !important;\n }\n\n &.arrowBottom:before,\n &.arrowBottom:after {\n border-top-color: ${secondaryLight} !important;\n }\n\n .flatpickr-rContainer {\n width: 100%;\n }\n\n .dayContainer {\n padding-top: ${baseSpace};\n padding-right: ${baseSpace};\n padding-bottom: ${baseSpace};\n width: ${calendarWidth}px;\n min-width: ${calendarWidth}px;\n max-width: ${calendarWidth}px;\n }\n\n .numInput.cur-year,\n .flatpickr-current-month span.cur-month{\n font-weight: ${regular};\n }\n\n .flatpickr-current-month .numInputWrapper {\n span.arrowUp:after {\n border-bottom-color: ${paper};\n }\n\n span.arrowDown:after {\n border-top-color: ${paper};\n }\n }\n\n .flatpickr-weekday {\n font-size: ${scale.font(-2)};\n font-weight: ${regular};\n }\n\n .flatpickr-days {\n width: ${calendarWidth}px;\n }\n\n .flatpickr-day.today {\n border-color: ${secondary};\n font-weight: ${theme.fontWeight('bold')};\n }\n\n .flatpickr-day {\n max-width: 34px;\n height: 34px;\n line-height: 34px;\n margin-bottom: ${baseSpace};\n font-weight: ${regular};\n }\n\n .flatpickr-months .flatpickr-month {\n border-radius: 0;\n }\n\n .flatpickr-months .flatpickr-month,\n .flatpickr-months .flatpickr-monthDropdown-months,\n .flatpickr-weekdays,\n .flatpickr-weekday {\n background-color: ${secondaryLight};\n color: ${paper};\n }\n\n // month select options in Firefox\n .flatpickr-months .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {\n color: ${text};\n }\n\n .flatpickr-day.selected,\n .flatpickr-day.startRange,\n .flatpickr-day.endRange,\n .flatpickr-day.selected.inRange,\n .flatpickr-day.startRange.inRange,\n .flatpickr-day.endRange.inRange,\n .flatpickr-day.selected:focus,\n .flatpickr-day.startRange:focus,\n .flatpickr-day.endRange:focus,\n .flatpickr-day.selected:hover,\n .flatpickr-day.startRange:hover,\n .flatpickr-day.endRange:hover,\n .flatpickr-day.selected.prevMonthDay,\n .flatpickr-day.startRange.prevMonthDay,\n .flatpickr-day.endRange.prevMonthDay,\n .flatpickr-day.selected.nextMonthDay,\n .flatpickr-day.startRange.nextMonthDay,\n .flatpickr-day.endRange.nextMonthDay,\n .flatpickr-day.today:hover,\n .flatpickr-day.today:focus {\n background-color: ${secondary};\n border-color: ${secondary};\n }\n\n .flatpickr-day.inRange,\n .flatpickr-day.prevMonthDay.inRange,\n .flatpickr-day.nextMonthDay.inRange,\n .flatpickr-day.today.inRange,\n .flatpickr-day.prevMonthDay.today.inRange,\n .flatpickr-day.nextMonthDay.today.inRange,\n .flatpickr-day:hover,\n .flatpickr-day.prevMonthDay:hover,\n .flatpickr-day.nextMonthDay:hover,\n .flatpickr-day:focus,\n .flatpickr-day.prevMonthDay:focus,\n .flatpickr-day.nextMonthDay:focus {\n background-color: ${secondaryLight};\n border-color: ${secondaryLight};\n color: ${paper};\n }\n\n .flatpickr-months .flatpickr-prev-month,\n .flatpickr-months .flatpickr-next-month {\n color: ${paper};\n fill: ${paper};\n\n &:hover svg {\n color: ${secondary};\n fill: ${secondary};\n }\n }\n }\n`\n","import {GlobalDatePickerStyles} from '../DatePicker'\n\nconst GlobalStyles = () => {\n return (\n <>\n <GlobalDatePickerStyles />\n </>\n )\n}\n\nexport default GlobalStyles\n","import {faCircleNotch} from '@fortawesome/pro-solid-svg-icons'\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome'\nimport PropTypes from 'prop-types'\n\n/**\n * Spinner that indicates a loading process\n */\nconst LoadingSpinner = ({size, style}) => (\n <FontAwesomeIcon {...style} style={{fontSize: size}} spin icon={faCircleNotch} />\n)\n\nLoadingSpinner.propTypes = {\n /**\n * Specify width and height.\n */\n size: PropTypes.string,\n /**\n * css properties object. color can be used to set the color of the spinner\n */\n style: PropTypes.object\n}\n\nexport default LoadingSpinner\n","import PropTypes from 'prop-types'\n\nimport {ScrollBehaviour} from './scrollBehaviour'\n\nexport const keyPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n\nexport const rowDataPropType = PropTypes.shape({\n __key: keyPropType\n})\n\nexport const dataPropType = PropTypes.arrayOf(rowDataPropType)\n\nexport const scrollBehaviourPropType = PropTypes.oneOf(Object.keys(ScrollBehaviour).map(key => ScrollBehaviour[key]))\n\nexport const columnPropType = PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string,\n sorting: PropTypes.shape({\n sortable: PropTypes.bool,\n sortRank: PropTypes.number,\n order: PropTypes.oneOf(['asc', 'desc'])\n }),\n resizable: PropTypes.bool,\n width: PropTypes.number,\n HeaderRenderer: PropTypes.elementType,\n CellRenderer: PropTypes.elementType,\n rightAligned: PropTypes.bool\n})\n","export const ScrollBehaviour = {\n INLINE: 'inline',\n NONE: 'none'\n}\n","import consoleLogger from '../consoleLogger'\n\nconst isDefined = value => value !== undefined\n\nexport const getDispatchActions = (input, actionSettings, checkMandatory = true) =>\n actionSettings.reduce((acc, actionSetting) => {\n if (isDefined(input[actionSetting.name])) {\n acc.push(actionSetting.action(...actionSetting.argsFactory(input)))\n } else if (actionSetting.mandatory && checkMandatory) {\n consoleLogger.logError(`Mandatory field '${actionSetting.name}' not set in input`)\n }\n return acc\n }, [])\n","import {getDispatchActions} from './dispatchActions'\n\nexport default {getDispatchActions}\n","import {propTypes} from './appContext'\n\nexport default {propTypes}\n","import PropTypes from 'prop-types'\n\nimport {ALLOWED_EMBED_TYPES} from '../env/env'\n\nexport const propTypes = PropTypes.shape({\n embedType: PropTypes.oneOf(ALLOWED_EMBED_TYPES),\n widgetConfigKey: (props, propName, componentName) => {\n // widgetConfigKey is only required for widgets\n if (props.embedType === 'widget' && !props[propName]) {\n return new Error('Prop `' + propName + '` is missing for ' + ' `' + componentName + '`. Validation failed.')\n }\n }\n})\n","import pathToRegexp from 'path-to-regexp'\n\nexport const extractParamsFromPath = (pathRegex, path) => {\n const pathParts = []\n const re = pathToRegexp(pathRegex, pathParts)\n const res = re.exec(path)\n\n if (res !== null) {\n return pathParts.reduce(\n (acc, pathPart, idx) => ({\n ...acc,\n [pathPart.name]: res[idx + 1]\n }),\n {}\n )\n }\n\n return null\n}\n","import {useEffect, useRef, useState} from 'react'\n\nexport default function asyncRoute(getComponent) {\n return props => {\n const [Component, setComponent] = useState(null)\n const mounted = useRef(true)\n\n useEffect(() => {\n getComponent().then(result => (mounted.current ? setComponent(() => result) : null))\n return () => {\n mounted.current = false\n }\n }, [])\n\n if (Component !== null) {\n return <Component {...props} />\n }\n\n return null\n }\n}\n","import reducerUtil from '../reducer'\nimport sagaUtil from '../saga'\nimport asyncRoute from './asyncRoute'\nimport {dispatchInput} from './input'\n\nconst loadedComponents = {}\n\nexport const loadRoute = (store, input, importRouteDependencies, key) => props => {\n if (key && loadedComponents[key]) {\n const Component = loadedComponents[key]\n return <Component {...props} />\n }\n\n const Component = asyncRoute(\n () =>\n new Promise(resolve => {\n importRouteDependencies().then(imported => {\n const route = imported.default\n\n if (route.reducers) {\n reducerUtil.injectReducers(store, route.reducers)\n }\n\n if (route.sagas) {\n route.sagas.forEach(saga => {\n sagaUtil.injectSaga(store, saga)\n })\n }\n\n if (route.inputDispatches) {\n route.inputDispatches.forEach(inputDispatch => {\n dispatchInput(store, input, inputDispatch)\n })\n }\n\n resolve(route.container)\n })\n })\n )\n\n if (key) {\n loadedComponents[key] = Component\n }\n\n return <Component {...props} />\n}\n","import {Route} from 'react-router'\n\nconst getRenderFn = route => router => {\n if (route.component) {\n return <route.component router={router} routes={route.routes} />\n }\n\n if (route.render) {\n const props = {\n router,\n routes: route.routes\n }\n return route.render(props)\n }\n}\n\nconst RouteWithSubRoutes = route => <Route path={route.path} exact={route.exact} render={getRenderFn(route)} />\n\nexport default RouteWithSubRoutes\n","import PropTypes from 'prop-types'\nimport React from 'react'\nimport {Router as ReactRouter} from 'react-router'\n\nimport RouteWithSubRoutes from './RouteWithSubRoutes'\n\nconst Router = ({history, routes}) => (\n <ReactRouter history={history}>\n <React.Fragment>\n {routes.map((route, i) => (\n <RouteWithSubRoutes key={i} {...route} />\n ))}\n </React.Fragment>\n </ReactRouter>\n)\n\nRouter.propTypes = {\n routes: PropTypes.array.isRequired,\n history: PropTypes.object\n}\n\nexport default Router\n","import {extractParamsFromPath} from './path'\nimport {loadRoute} from './route'\nimport Router from './Router'\nimport RouteWithSubRoutes from './RouteWithSubRoutes'\n\nexport default {\n loadRoute,\n Router,\n RouteWithSubRoutes,\n extractParamsFromPath\n}\n","import consoleLogger from '../consoleLogger'\n\nexport const dispatchInput = (\n store,\n input,\n {key, actionCreator, mandatory = false, defaultValue},\n logger = consoleLogger.logError\n) => {\n if (Object.prototype.hasOwnProperty.call(input, key) || defaultValue) {\n const action = actionCreator(input[key] || defaultValue)\n store.dispatch(action)\n } else if (mandatory === true) {\n logger(`EntityBrowser: Mandatory field '${key}' not set in input`)\n }\n}\n","/**\n * extracts the first error message of a validation failed response object\n */\nexport const getErrorCompact = errors => {\n for (const error of errors) {\n if (error.entityValidatorErrors) {\n return getFirstElement(error.entityValidatorErrors)[0]\n }\n\n if (error.paths) {\n return getFirstElement(getFirstElement(error.paths))[0]\n }\n }\n\n return null\n}\n\nconst getFirstElement = obj => (Object.keys(obj).length >= 1 ? obj[Object.keys(obj)[0]] : undefined)\n","import {getErrorCompact} from './validation'\n\nexport default {getErrorCompact}\n","import _get from 'lodash/get'\n\nlet persistedViews = {}\n\nexport const viewInfoSelector = location => _get(persistedViews, [location, 'info'], {})\n\nexport const persistViewInfo = (location, info, level = 0) => {\n persistedViews = {\n ...persistedViews,\n [location]: {\n level,\n info: {..._get(persistedViews, [location, 'info'], {}), ...info}\n }\n }\n}\n\nexport const clearPersistedViews = (level = 0) => {\n persistedViews = {\n ...Object.keys(persistedViews).reduce((acc, key) => {\n const persistedView = persistedViews[key]\n return {...acc, ...(persistedView.level < level && {[key]: persistedView})}\n }, {})\n }\n}\n","import {viewInfoSelector, persistViewInfo, clearPersistedViews} from './viewPersistor'\n\nexport default {persistViewInfo, viewInfoSelector, clearPersistedViews}\n","import PropTypes from 'prop-types'\nimport {injectIntl} from 'react-intl'\nimport EntityDetailApp from 'tocco-entity-detail/src/main'\n\nimport getDetailFormName from '../../../utils/getDetailFormName'\nimport getNode from '../../../utils/getNode'\nimport {withRouterTypeCompProvider} from '../../../utils/withRouterTypeCompProvider'\n\nconst CreateDomain = ({path, context, onSuccess, intl, locale, emitAction}) => {\n const isActionBlocked = action => action.payload?.toaster?.title === 'client.entity-detail.createSuccessfulTitle'\n\n const emitActionBarrier = action => {\n if (!isActionBlocked(action)) {\n emitAction(action)\n }\n }\n\n const handleEntityCreated = ({id}) => {\n const remoteEvents = [\n {\n type: 'entity-create-event',\n payload: {\n entities: [\n {\n entityName: 'Docs_list_item',\n key: `Domain/${id}`\n }\n ]\n }\n }\n ]\n\n onSuccess({\n title: intl.formatMessage({id: 'client.docs-browser.createDomainSuccessful'}),\n remoteEvents\n })\n }\n\n const parent = getNode(path)\n const defaultValues = parent ? [{id: `rel${parent.model}`, value: parent.key}] : []\n\n const formName = getDetailFormName(context, 'Domain')\n\n return (\n <EntityDetailApp\n entityName=\"Domain\"\n formName={formName}\n mode=\"create\"\n defaultValues={defaultValues}\n locale={locale}\n onEntityCreated={handleEntityCreated}\n emitAction={emitActionBarrier}\n />\n )\n}\n\nCreateDomain.propTypes = {\n path: PropTypes.string.isRequired,\n context: PropTypes.shape({\n detailFormNames: PropTypes.object.isRequired\n }).isRequired,\n onSuccess: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n locale: PropTypes.string,\n emitAction: PropTypes.func.isRequired\n}\n\nexport default withRouterTypeCompProvider(injectIntl(CreateDomain))\n","import PropTypes from 'prop-types'\nimport {injectIntl} from 'react-intl'\nimport EntityDetailApp from 'tocco-entity-detail/src/main'\n\nimport getDetailFormName from '../../../utils/getDetailFormName'\nimport getNode from '../../../utils/getNode'\nimport {withRouterTypeCompProvider} from '../../../utils/withRouterTypeCompProvider'\n\nconst CreateFolder = ({context, path, onSuccess, intl, locale, emitAction}) => {\n const isActionBlocked = action => action.payload?.toaster?.title === 'client.entity-detail.createSuccessfulTitle'\n\n const emitActionBarrier = action => {\n if (!isActionBlocked(action)) {\n emitAction(action)\n }\n }\n\n const handleEntityCreated = ({id}) => {\n const remoteEvents = [\n {\n type: 'entity-create-event',\n payload: {\n entities: [\n {\n entityName: 'Docs_list_item',\n key: `Folder/${id}`\n }\n ]\n }\n }\n ]\n\n onSuccess({\n title: intl.formatMessage({id: 'client.docs-browser.createFolderSuccessful'}),\n remoteEvents\n })\n }\n\n const parent = getNode(path)\n const defaultValues = parent ? [{id: `rel${parent.model}`, value: parent.key}] : []\n\n const formName = getDetailFormName(context, 'Folder')\n\n return (\n <EntityDetailApp\n entityName=\"Folder\"\n formName={formName}\n mode=\"create\"\n defaultValues={defaultValues}\n locale={locale}\n onEntityCreated={handleEntityCreated}\n emitAction={emitActionBarrier}\n />\n )\n}\n\nCreateFolder.propTypes = {\n path: PropTypes.string.isRequired,\n context: PropTypes.shape({\n detailFormNames: PropTypes.object.isRequired\n }).isRequired,\n onSuccess: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n locale: PropTypes.string,\n emitAction: PropTypes.func.isRequired\n}\n\nexport default withRouterTypeCompProvider(injectIntl(CreateFolder))\n","import DeleteApp from 'tocco-delete/src/main'\n\nexport default props => <DeleteApp {...props} customDeleteEndpoint={'documents/delete'} />\n","import PropTypes from 'prop-types'\nimport {selection} from 'tocco-app-extensions'\nimport EntityDetailApp from 'tocco-entity-detail/src/main'\n\nimport getDetailFormName from '../../../utils/getDetailFormName'\nimport {withRouterTypeCompProvider} from '../../../utils/withRouterTypeCompProvider'\n\nconst EditAction = ({selection, onSuccess, onCancel, locale, context, emitAction, navigate}) => {\n const isActionBlocked = action => action.payload?.toaster?.title === 'client.entity-detail.createSuccessfulTitle'\n\n const emitActionBarrier = action => {\n if (!isActionBlocked(action)) {\n emitAction(action)\n }\n }\n\n const [entityName, entityKey] = selection.ids[0].split('/')\n\n if (entityName === 'Resource') {\n navigate(`/docs/doc/${entityKey}/detail`)\n onCancel()\n }\n\n const handleEntityUpdated = () => {\n const remoteEvents = [\n {\n type: 'entity-update-event',\n payload: {\n entities: [\n {\n entityName: 'Docs_list_item',\n key: selection.ids[0]\n }\n ]\n }\n }\n ]\n\n onSuccess({\n title: null,\n remoteEvents\n })\n }\n\n const handleEntityDeleted = () => {\n const remoteEvents = [\n {\n type: 'entity-delete-event',\n payload: {\n entities: [\n {\n entityName: 'Docs_list_item',\n key: selection.ids[0]\n }\n ]\n }\n }\n ]\n\n onSuccess({\n title: null,\n remoteEvents\n })\n }\n\n const formName = getDetailFormName(context, entityName)\n\n return (\n <EntityDetailApp\n entityName={entityName}\n formName={formName}\n entityId={entityKey}\n mode=\"update\"\n locale={locale}\n onEntityUpdated={handleEntityUpdated}\n onEntityDeleted={handleEntityDeleted}\n emitAction={emitActionBarrier}\n />\n )\n}\n\nEditAction.propTypes = {\n selection: selection.propType,\n context: PropTypes.object.isRequired,\n onSuccess: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n locale: PropTypes.string,\n emitAction: PropTypes.func.isRequired,\n navigate: PropTypes.func.isRequired\n}\n\nexport default withRouterTypeCompProvider(EditAction)\n","import _isEqual from 'lodash/isEqual'\nimport PropTypes from 'prop-types'\nimport {useEffect, useState} from 'react'\nimport {FormattedMessage} from 'react-intl'\nimport styled from 'styled-components'\nimport {selection} from 'tocco-app-extensions'\nimport {Button, LoadMask, StyledButton} from 'tocco-ui'\n\nimport DocsBrowser from '../../../main'\nimport getNode from '../../../utils/getNode'\n\nconst StyledButtonsWrapper = styled.div`\n display: flex;\n justify-content: flex-end;\n\n ${StyledButton} {\n margin-right: 0;\n }\n`\n\n/* for being able to scroll whole modal content on smaller screens */\nconst StyledLoadMask = styled(LoadMask)`\n height: auto;\n`\n\nexport const MoveAction = ({\n selection,\n onSuccess,\n onError,\n path,\n initialize,\n moveElements,\n isWaiting,\n domainTypes,\n rootNodes,\n businessUnit,\n locale,\n emitAction\n}) => {\n const initialNode = getNode(path)\n const initialParent = {model: 'Docs_list_item', key: `${initialNode.model}/${initialNode.key}`}\n const [parent, setParent] = useState(initialParent)\n\n // call only on mount\n useEffect(() => {\n initialize(selection, onSuccess, onError)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n const getCustomLocation = (model, key) => {\n switch (model) {\n case 'Domain':\n return `/docs/domain/${key}/list`\n case 'Folder':\n return `/docs/folder/${key}/list`\n case 'Resource':\n return\n default:\n throw new Error(`Unexpected model: ${model}`)\n }\n }\n\n const getInitialLocation = () => {\n if (parent === null) {\n return null\n }\n const [model, key] = parent.key.split('/')\n return getCustomLocation(model, key)\n }\n\n return (\n <StyledLoadMask required={[!isWaiting]}>\n <DocsBrowser\n routerType=\"routerless\"\n initialLocation={getInitialLocation()}\n listLimit={10}\n selectionStyle=\"none\"\n searchFormType=\"none\"\n disableViewPersistor={true}\n getListFormName={parent => (parent === null ? 'Move_root_docs_list_item' : 'Move_docs_list_item')}\n onListParentChange={parent => setParent(parent)}\n getCustomLocation={getCustomLocation}\n navigationStrategy={{}}\n embedded={true}\n emitAction={emitAction}\n noLeftPadding={true}\n domainTypes={domainTypes}\n rootNodes={rootNodes}\n businessUnit={businessUnit}\n sortable={false}\n scrollBehaviour=\"none\"\n locale={locale}\n />\n <StyledButtonsWrapper>\n <Button\n onClick={() => moveElements(parent.key, selection.ids)}\n look=\"raised\"\n ink=\"primary\"\n disabled={parent === null || _isEqual(parent, initialParent)}\n >\n <FormattedMessage id=\"client.actions.dms-move.button\" />\n </Button>\n </StyledButtonsWrapper>\n </StyledLoadMask>\n )\n}\n\nMoveAction.propTypes = {\n selection: selection.propType,\n onSuccess: PropTypes.func.isRequired,\n onError: PropTypes.func.isRequired,\n path: PropTypes.string.isRequired,\n initialize: PropTypes.func.isRequired,\n moveElements: PropTypes.func.isRequired,\n isWaiting: PropTypes.bool.isRequired,\n domainTypes: PropTypes.arrayOf(PropTypes.string),\n rootNodes: PropTypes.arrayOf(\n PropTypes.shape({\n entityName: PropTypes.string,\n key: PropTypes.string\n })\n ),\n businessUnit: PropTypes.string,\n locale: PropTypes.string,\n emitAction: PropTypes.func.isRequired\n}\n","import {injectIntl} from 'react-intl'\nimport {connect} from 'react-redux'\n\nimport {initialize, moveElements} from '../../../modules/move/actions'\nimport {withRouterTypeCompProvider} from '../../../utils/withRouterTypeCompProvider'\nimport {MoveAction} from './Move'\n\nconst mapActionCreators = {\n initialize,\n moveElements\n}\n\nconst mapStateToProps = state => ({\n isWaiting: state.docs.move.isWaiting,\n domainTypes: state.input.domainTypes,\n rootNodes: state.input.rootNodes,\n businessUnit: state.input.businessUnit,\n locale: state.intl.locale\n})\n\nexport default withRouterTypeCompProvider(connect(mapStateToProps, mapActionCreators)(injectIntl(MoveAction)))\n","const getDetailFormName = (context, entityName) =>\n context.detailFormNames && context.detailFormNames[entityName]\n ? context.detailFormNames[entityName]\n : `Dms${entityName}`\n\nexport default getDetailFormName\n"],"sourceRoot":""}
|