@gisce/react-ooui 1.2.9 → 1.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/react-ooui.es.js +3625 -3619
- package/dist/react-ooui.es.js.map +1 -1
- package/dist/react-ooui.umd.js +14 -14
- package/dist/react-ooui.umd.js.map +1 -1
- package/dist/widgets/base/one2many/One2manyInput.d.ts.map +1 -1
- package/dist/widgets/modals/FormModal.d.ts.map +1 -1
- package/dist/widgets/views/Form.d.ts +1 -0
- package/dist/widgets/views/Form.d.ts.map +1 -1
- package/dist/widgets/views/Tree.d.ts +1 -0
- package/dist/widgets/views/Tree.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/widgets/base/one2many/One2manyInput.tsx +1 -0
- package/src/widgets/modals/FormModal.tsx +4 -2
- package/src/widgets/views/Form.tsx +5 -1
- package/src/widgets/views/Tree.tsx +3 -0
package/dist/react-ooui.umd.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
(function(G,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("react"),require("antd"),require("@gisce/ooui"),require("@ant-design/icons"),require("interweave"),require("react/jsx-runtime"),require("@tabler/icons-react"),require("antd/lib/input/TextArea"),require("styled-components"),require("react-measure"),require("antd/lib/typography/Title"),require("@ant-design/plots"),require("use-deep-compare-effect"),require("@gisce/react-formiga-table"),require("file-type-buffer-browser"),require("antd/lib/_util/colors"),require("@gisce/fiber-diagram"),require("@gisce/react-formiga-components"),require("validator/lib/isURL"),require("validator/lib/isEmail"),require("react-hotkeys-hook"),require("react-markdown"),require("@monaco-editor/react"),require("react-grid-layout"),require("react-grid-layout/css/styles.css"),require("uuid")):typeof define=="function"&&define.amd?define(["exports","react","antd","@gisce/ooui","@ant-design/icons","interweave","react/jsx-runtime","@tabler/icons-react","antd/lib/input/TextArea","styled-components","react-measure","antd/lib/typography/Title","@ant-design/plots","use-deep-compare-effect","@gisce/react-formiga-table","file-type-buffer-browser","antd/lib/_util/colors","@gisce/fiber-diagram","@gisce/react-formiga-components","validator/lib/isURL","validator/lib/isEmail","react-hotkeys-hook","react-markdown","@monaco-editor/react","react-grid-layout","react-grid-layout/css/styles.css","uuid"],l):(G=typeof globalThis<"u"?globalThis:G||self,l(G["react-ooui"]={},G.React,G.antd,G.ooui,G.AntIcons,G.interweave,G.jsxRuntime,G.TablerIcons,G.TextArea$1,G.styled,G.Measure,G.Title$3,G.plots,G.useDeepCompareEffect,G.reactFormigaTable,G.fileTypeBufferBrowser,G.colors,G.fiberDiagram,G.reactFormigaComponents,G.isURL,G.isEmail,G.reactHotkeysHook,G.ReactMarkdown,G.Editor,G.reactGridLayout,null,G.uuid))})(this,function(G,l,p,se,K,Bt,e,eo,to,ro,no,oo,Ht,so,io,ao,lo,co,hr,uo,fo,ho,po,go,pr,Oc,gr){"use strict";const Ye=t=>t&&typeof t=="object"&&"default"in t?t:{default:t};function mr(t){if(t&&t.__esModule)return t;const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const s=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(r,n,s.get?s:{enumerable:!0,get:()=>t[n]})}}return r.default=t,Object.freeze(r)}const Pe=Ye(l),yr=mr(K),wr=Ye(K),vr=mr(eo),mo=Ye(to),pt=Ye(ro),Kt=Ye(no),Yt=Ye(oo),et=Ye(so),yo=Ye(uo),wo=Ye(fo),vo=Ye(po),Co=Ye(go),{Text:So,Title:bo}=p.Typography,{useToken:xo}=p.theme,To={left:"justify-start",center:"justify-center",right:"justify-end"},gt=t=>{const{ooui:r,align:n,responsiveBehaviour:s}=t,{label:o,tooltip:i,fieldForLabel:a,labelSize:c,labelType:f}=r,h=a!==null&&o.length>1?o+" :":o,g=n||(a?s?"left":"right":"left"),{token:C}=xo(),y=c===void 0?So:bo;return e.jsxs("div",{className:`flex flex-row items-center pb-1 pt-1 ${To[g]}`,children:[i&&e.jsx(p.Tooltip,{title:i,children:e.jsx(K.QuestionCircleOutlined,{className:"pr-1 text-xs",style:{color:C.colorPrimary}})}),e.jsx("span",{className:"pr-2",children:e.jsx(y,{level:c,type:f,children:e.jsx(Bt.Interweave,{content:h})})})]})},Fo={ca_ES:{true:"S\xED",false:"No",simple_search:"B\xFAsqueda simple",advanced_search:"B\xFAsqueda avan\xE7ada",search:"Buscar",parameters:"Par\xE0metres",limit:"Limit",first:"Primer",no_results:"No hi ha resultats",summary:"Mostrant resultats des de {from} fins {to} d'un total de {total} registres",welcome:"Benvingut",attachments:"Adjunts",addNewAttachment:"Afegir nou adjunt",listAllAttachments:"Veure tots els adjunts",viewAs:"Veure com",confirmRemoveItem:"Est\xE0s segur de volguer eliminar aquest item?",save:"Desar",delete:"Eliminar",refresh:"Refrescar",previous:"Anterior",next:"Seg\xFCent",actions:"Accions",reports:"Informes",related:"Relacionat",new:"Nou",fillRequiredField:"Siusplau, omple aquest camp obligatori",fillRequiredFields:"Siusplau, omple tots els camps obligatoris",generatingReport:"Generant informe...",confirmation:"Confirmaci\xF3",ok:"D'acord",cancel:"Cancel\xB7lar",formHasErrors:"El formulari t\xE9 errors",unsavedChanges:"Hi ha canvis sense guardar",confirmRefreshWithoutSave:"Est\xE0s segur de volguer refrescar la p\xE0gina sense guardar els canvis?",discardAndRefresh:"Descarta els canvis i refresca",removeItems:"Elimina el registre/s",confirmRemove:"Est\xE0s segur de volguer eliminar els registre/s seleccionats?",yesConfirmRemove:"S\xED, elimina",unlinkItems:"Desenlla\xE7a registre/s",confirmUnlink:"Est\xE0s segur de volguer desenlla\xE7ar els registre/s seleccionats?",yesConfirmUnlink:"S\xED, desenlla\xE7a",confirmCloseWithoutSave:"Est\xE0s segur de volguer tancar aquesta finestra sense guardar?",closeWithoutSaving:"Tancar sense guardar",action:"Acci\xF3",report:"Informe",selectAction:"Selecciona una acci\xF3",download:"Descarrega",clear:"Neteja",open:"Obre",uploadNewImage:"Puja una nova imatge",noCurrentEntries:"No hi ha registres",duplicate:"Duplicar",downloadingAttachment:"Descarregant adjunt...",tree:"llista",form:"formulari",favorites:"Els meus favorits",edit_favorites:"Edita els favorits",no_favorites:"No tens favorits guardats",register:"Registre",of:"de",editingDocument:"Editant document",showLogs:"Veure logs",createdBy:"Creat per l'usuari",creationDate:"Data creaci\xF3",lastUpdatedBy:"\xDAltima modificaci\xF3 per",lastUpdatedDate:"Data \xFAltima modificaci\xF3",goToResourceId:"V\xE9s al recurs amb ID",searchId:"ID de cerca:",idNotFound:"No es troba aquesta id de recurs per l'objecte",selectedRegisters:"registres seleccionats",translate:"Tradu\xEFr",enterTextBeforeTranslate:"Introdueix algun text al camp abans d'afegir traduccions",saveBeforeTranslate:"Heu de desar el registre abans d'afegir les traduccions",configDashboard:"Configurar panell",moveDashboard:"Moure items del panell",openAttachment:"Veure detall de l'adjunt",openAttachmentLink:"Obrir enlla\xE7 de l'adjunt",uninformed:"Sense informar",totalRegisters:"Registres totals:",export:"Exportar",selectAtLeastOneField:"Selecciona almenys un camp per a l'exportaci\xF3",printScreen:"Imprimir pantalla",advancedExport:"Exportaci\xF3 avan\xE7ada",savedRegisters:"Registre guardat correctament",errorWhileSavingForm:"Error en guardar el formulari"},en_US:{true:"Yes",false:"No",simple_search:"Simple search",advanced_search:"Advanced search",search:"Search",parameters:"Parameters",limit:"Limit",first:"First",no_results:"No results",summary:"Showing registers from {from} to {to} of {total} registers",welcome:"Welcome",attachments:"Attachments",addNewAttachment:"Add new attachment",listAllAttachments:"View all the attachments",viewAs:"View as",confirmRemoveItem:"Are you sure to remove this item?",save:"Save",delete:"Delete",refresh:"Refresh",previous:"Previous",next:"Next",actions:"Actions",reports:"Reports",related:"Related",new:"New",fillRequiredField:"Please fill this required field",fillRequiredFields:"Please fill all the required fields",generatingReport:"Generating report...",confirmation:"Confirmation",ok:"OK",cancel:"Cancel",formHasErrors:"Form has errors",unsavedChanges:"There are unsaved changes",confirmRefreshWithoutSave:"Do you really want to refresh this window without saving?",discardAndRefresh:"Discard changes and refresh",removeItems:"Remove item/s",confirmRemove:"Are you sure you want to remove the selected item/s?",yesConfirmRemove:"Yes, remove",unlinkItems:"Unlink item/s",confirmUnlink:"Are you sure you want to unlink the selected item/s?",yesConfirmUnlink:"Yes, unlink",confirmCloseWithoutSave:"Do you really want to close this window without saving?",closeWithoutSaving:"Close without saving",action:"Action",report:"Report",selectAction:"Select an action",download:"Download",clear:"Clear",open:"Open",uploadNewImage:"Upload new image",noCurrentEntries:"No current entries",duplicate:"Duplicate",downloadingAttachment:"Downloading attachment...",tree:"list",form:"form",favorites:"My shortcuts",edit_favorites:"Edit shortcuts",no_favorites:"You don't have any shortcuts saved yet",register:"Register",of:"of",editingDocument:"Editing document",showLogs:"Show logs",createdBy:"Created by user",creationDate:"Creation date",lastUpdatedBy:"Last modified by",lastUpdatedDate:"Date of last modification",goToResourceId:"Go to resource ID",searchId:"Search ID:",idNotFound:"Resource ID does not exist for this object!",selectedRegisters:"selected registers",translate:"Translate",enterTextBeforeTranslate:"Enter some text to the related field before adding translations",saveBeforeTranslate:"You must save the record before adding translations",configDashboard:"Setup dashboard",moveDashboard:"Move dashboard items",openAttachment:"Open attachment detail",openAttachmentLink:"Open attachment link",uninformed:"Uninformed",totalRegisters:"Total registers:",export:"Export",selectAtLeastOneField:"Select at least one field for the export",printScreen:"Print screen",advancedExport:"Advanced export",savedRegisters:"Record successfully saved",errorWhileSavingForm:"Error while saving form"},es_ES:{true:"S\xED",false:"No",simple_search:"B\xFAsqueda simple",advanced_search:"B\xFAsqueda avanzada",search:"Buscar",parameters:"Parametros",limit:"L\xEDmite",first:"Primero",no_results:"No hay resultados",summary:"Mostrando resultado desde {from} hasta {to} de un total de {total} registros",welcome:"Bienvenido",attachments:"Adjuntos",addNewAttachment:"A\xF1adir nuevo adjunto",listAllAttachments:"Ver todos los adjuntos",viewAs:"Ver c\xF3mo",confirmRemoveItem:"Est\xE1s seguro de querer eliminar \xE9ste registro?",save:"Guardar",delete:"Eliminar",refresh:"Refrescar",previous:"Anterior",next:"Siguiente",actions:"Acciones",reports:"Informes",related:"Relacionado",new:"Nuevo",fillRequiredField:"Por favor, rellena \xE9ste campo obligatorio",fillRequiredFields:"Por favor, rellena todos los campos obligatorios",generatingReport:"Generando informe...",confirmation:"Confirmaci\xF3m",ok:"De acuerdo",cancel:"Cancelar",formHasErrors:"El formulario tiene errores",unsavedChanges:"Hay cambios sin guardar",confirmRefreshWithoutSave:"Est\xE1s seguro de querer refrescar la p\xE1gina sin guardar los cambios?",discardAndRefresh:"Descarta los cambios y refresca",removeItems:"Eliminar el registro/s",confirmRemove:"Est\xE1s seguro de querer eliminar los registro/s seleccionados?",yesConfirmRemove:"S\xED, elimina",unlinkItems:"Desenlaza registro/s",confirmUnlink:"Est\xE1s seguro de querer desenlazar los registro/s seleccionados?",yesConfirmUnlink:"S\xED, desenlaza",confirmCloseWithoutSave:"Est\xE1s seguro de querer cerrar \xE9sta ventana sin cerrar?",closeWithoutSaving:"Cerrar sin guardar",action:"Acci\xF3n",report:"Informe",selectAction:"Selecciona una acci\xF3n",download:"Descarga",clear:"Limpiar",open:"Abrir",uploadNewImage:"Subir una nueva im\xE1gen",noCurrentEntries:"No hay registros",duplicate:"Duplicar",downloadingAttachment:"Descargando adjunto...",tree:"lista",form:"formulario",favorites:"Mis favoritos",edit_favorites:"Edita los favoritos",no_favorites:"No tienes favoritos guardados",register:"Registro",of:"de",editingDocument:"Editando documento",showLogs:"Ver logs",createdBy:"Creado por el usuario",creationDate:"Fecha creaci\xF3n",lastUpdatedBy:"\xDAltima modificaci\xF3n por",lastUpdatedDate:"Fecha \xFAltima modificaci\xF3n",goToResourceId:"Ir al recurso con ID",searchId:"ID de b\xFAsqueda:",idNotFound:"No se encuentra \xE9sta ID de recursos para el objeto",selectedRegisters:"registros seleccionados",translate:"Traducir",enterTextBeforeTranslate:"Introduce algun texto en el campo antes de a\xF1adir traducciones",saveBeforeTranslate:"Tienes que guardar el registro antes de a\xF1adir las traducciones",configDashboard:"Configurar panel",moveDashboard:"Mover items del panel",openAttachment:"Ver detalle del adjunto",openAttachmentLink:"Abrir enlace del adjunto",uninformed:"Sin informar",totalRegisters:"Registros totales:",export:"Exportar",selectAtLeastOneField:"Selecciona al menos un campo para la exportaci\xF3n",printScreen:"Imprimir pantalla",advancedExport:"Exportaci\xF3n avanzada",savedRegisters:"Registro guardado correctamente",errorWhileSavingForm:"Error al guardar el formulario"}},ge=Pe.default.createContext(null),Oo=t=>{const{children:r,lang:n}=t;function s(o){return be(o,n)}return e.jsx(ge.Provider,{value:{lang:n,t:s},children:r})},be=(t,r)=>{var s;return((s=Fo[r])==null?void 0:s[t])||t};function me({ooui:t,children:r,layout:n="horizontal",valuePropName:s,showLabel:o=!1,alignLabel:i="left",required:a=!1,type:c,validator:f}){const{id:d,label:h,tooltip:u}=t,{t:g}=l.useContext(ge),C=a?[{required:!0,message:g("fillRequiredField"),type:c,validator:f}]:void 0,y=()=>e.jsx(p.Form.Item,{className:"mb-0",name:d,valuePropName:s,rules:C,children:r});if(!o)return y();const m=e.jsx(gt,{ooui:new se.Label({name:d+"_label",string:h,help:u,fieldForLabel:d}),align:i});return n==="horizontal"?(()=>e.jsxs(p.Row,{align:"middle",className:"pb-1 pt-1",children:[e.jsx(p.Col,{className:"ml-2",flex:"7rem",children:e.jsx("div",{className:"flex flex-col items-end",children:m})}),e.jsx(p.Col,{flex:"auto",children:y()})]}))():(()=>e.jsxs(e.Fragment,{children:[m,y()]}))()}const{confirm:_o}=p.Modal,rt=({onOk:t,confirmMessage:r,lang:n})=>{_o({title:be("confirmation",n),icon:e.jsx(K.ExclamationCircleOutlined,{}),centered:!0,content:r,okText:be("ok",n),cancelText:be("cancel",n),onOk:t})},_e=Pe.default.createContext(null),Do=t=>{const{children:r,activeId:n,activeModel:s,setFieldValue:o,getFieldValue:i,executeButtonAction:a,getContext:c,getValues:f,getPlainValues:d,domain:h,submitForm:u,fetchValues:g,formHasChanges:C,elementHasLostFocus:y,getFields:m}=t;return e.jsx(_e.Provider,{value:{domain:h,getValues:f,getPlainValues:d,getFields:m,activeId:n,activeModel:s,setFieldValue:o,getFieldValue:i,executeButtonAction:a,getContext:c,submitForm:u,fetchValues:g,formHasChanges:C,elementHasLostFocus:y},children:r})},Cr={"terp-purchase":"ShoppingCart","terp-graph":"PieChart","terp-crm":"Contacts","terp-hr":"Friends","terp-account":"BuildingBank","terp-project":"Checklist","terp-administration":"Adjustments","terp-partner":"Team","terp-mrp":"Build","terp-product":"Shopping",STOCK_JUSTIFY_FILL:"UnorderedList",STOCK_INDENT:"IndentIncrease",STOCK_HELP:"Question",STOCK_GO_UP:"ArrowUp",STOCK_SORT_DESCENDING:"SortDescending",STOCK_ADD:"Plus",STOCK_GOTO_LAST:"FastForward",STOCK_FIND:"Search",STOCK_PROPERTIES:"Control",STOCK_DIALOG_INFO:"Info",STOCK_FLOPPY:"Usb",STOCK_JUSTIFY_CENTER:"AlignCenter",STOCK_GO_BACK:"ArrowLeft",STOCK_UNDERLINE:"Underline",STOCK_BOLD:"Bold",STOCK_APPLY:"Check",STOCK_ZOOM_OUT:"ZoomOut",STOCK_STRIKETHROUGH:"Strikethrough",STOCK_MEDIA_REWIND:"Backward",STOCK_PRINT:"Printer",STOCK_NO:"Close",STOCK_GOTO_FIRST:"FastBackward",STOCK_CLOSE:"Close",STOCK_REMOVE:"Minus",STOCK_CUT:"Scissor",STOCK_DIALOG_AUTHENTICATION:"Safety",STOCK_ZOOM_FIT:"Expand",STOCK_JUMP_TO:"Select",STOCK_HARDDISK:"Hdd",STOCK_SAVE_AS:"Save",STOCK_UNDO:"Undo",STOCK_JUSTIFY_RIGHT:"AlignRight",STOCK_DIALOG_ERROR:"CloseCircle",STOCK_INDEX:"Profile",STOCK_GOTO_BOTTOM:"VerticalAlignBottom",STOCK_MEDIA_NEXT:"StepForward",STOCK_REDO:"Redo",STOCK_COPY:"Copy",STOCK_MEDIA_PAUSE:"Pause",STOCK_GO_FORWARD:"ArrowRight",STOCK_UNDELETE:"Undo",STOCK_EXECUTE:"Setting",STOCK_SAVE:"Save",STOCK_DIALOG_QUESTION:"QuestionCircle",STOCK_SORT_ASCENDING:"SortAscending",STOCK_REFRESH:"Reload",STOCK_MEDIA_FORWARD:"Forward",STOCK_STOP:"Border",STOCK_PRINT_PREVIEW:"Printer",STOCK_HOME:"Home",STOCK_PASTE:"CarryOut",STOCK_ZOOM_100:"ZoomIn",STOCK_FIND_AND_REPLACE:"FileSearch",STOCK_DIALOG_WARNING:"Warning",STOCK_ZOOM_IN:"ZoomIn",STOCK_CONVERT:"Export",STOCK_ITALIC:"Italic",STOCK_YES:"Check",STOCK_MEDIA_PLAY:"PlayCircle",STOCK_MEDIA_RECORD:"VideoCamera",STOCK_MEDIA_PREVIOUS:"StepBackward",STOCK_NEW:"FileAdd",STOCK_CANCEL:"Close",STOCK_DISCONNECT:"Api",STOCK_JUSTIFY_LEFT:"AlignLeft",STOCK_FILE:"File",STOCK_QUIT:"Logout",STOCK_EDIT:"Edit",STOCK_CONNECT:"Api",STOCK_GO_DOWN:"CaretDown",STOCK_NETWORK:"Apartment",STOCK_OK:"Check",STOCK_GOTO_TOP:"VerticalAlignTop",STOCK_ABOUT:"Star",STOCK_COLOR_PICKER:"Aim",STOCK_SELECT_FONT:"FontSize",STOCK_DELETE:"Delete",STOCK_DND:"FileText",STOCK_CLEAR:"CloseSquare",STOCK_UNINDENT:"AlignLeft",STOCK_PREFERENCES:"Setting"},We=(t,r)=>(t.indexOf("gtk-")!==-1&&(t=`STOCK_${t.replace("gtk-","").replace(/\-/g,"_").toUpperCase()}`),Cr.hasOwnProperty(t)?Sr(Cr[t],r):Sr(t,r));function ko(t){return`${t.split("-").map(r=>r.replace(/\w\S*/g,n=>n.charAt(0).toUpperCase()+n.slice(1).toLowerCase())).join("")}`}function Sr(t,r){let n=t.charAt(0).toUpperCase()+t.slice(1);n.indexOf("-")!==-1&&(n=ko(n));const s=`${n}Outlined`;if(yr[s])return()=>Pe.default.createElement(yr[s],{...r});const o=`Icon${n}`;if(vr[o]){const i=()=>Pe.default.createElement(vr[o],{fill:"transparent",height:17,width:17});return()=>Pe.default.createElement(wr.default,{component:i,...r})}}const Wt=t=>{const{ooui:r}=t,{id:n,label:s,activated:o,buttonType:i,confirmMessage:a,icon:c,context:f,readOnly:d}=r,h=l.useContext(_e),{executeButtonAction:u}=h||{},[g,C]=l.useState(!1),{lang:y}=l.useContext(ge);async function m(){C(!0),await u({type:i,action:n,context:f}),C(!1)}function w(){if(a){rt({confirmMessage:a,lang:y,onOk:()=>{m()}});return}m()}function v(){if(g)return e.jsx(K.LoadingOutlined,{});if(c){const _=We(c);return _&&e.jsx(_,{})}}return e.jsx(me,{ooui:r,children:e.jsx(p.Button,{block:!0,disabled:!o||d,onClick:w,icon:v(),type:r.primary?"primary":"default",danger:r.danger,style:{whiteSpace:"normal",height:"auto"},children:s})})},br=t=>{const{ooui:r}=t,{defaultButton:n,secondaryButtons:s}=r,{id:o,caption:i,activated:a,buttonType:c,confirmMessage:f,icon:d,primary:h,danger:u,context:g,readOnly:C}=n||{},y=l.useContext(_e),{executeButtonAction:m}=y||{},[w,v]=l.useState(!1),{lang:_}=l.useContext(ge);function D(){if(w)return e.jsx(K.LoadingOutlined,{});if(d){const k=We(d);return k&&e.jsx(k,{})}}async function b(){c&&o&&(v(!0),await m({type:c,action:o,context:g}),v(!1))}function E(){if(f){rt({confirmMessage:f,lang:_,onOk:()=>{b()}});return}b()}if(r.buttons.length===0)return null;if(r.buttons.length>1)return e.jsx(me,{ooui:new se.Field({ooui:r}),children:e.jsxs(p.Dropdown.Button,{disabled:!a||C,onClick:E,icon:e.jsx(K.DownOutlined,{}),type:h?"primary":void 0,overlay:e.jsx(Mo,{ooui:s,executeButtonAction:m,lang:_}),children:[D(),i]})});if(n)return e.jsx(Wt,{ooui:n})},Mo=t=>{const{ooui:r,executeButtonAction:n,lang:s}=t;if(!r)return null;const o=r.map(i=>{const{id:a,caption:c,activated:f,buttonType:d,confirmMessage:h,icon:u,context:g,readOnly:C,danger:y}=i,[m,w]=l.useState(!1);async function v(){w(!0),await n({type:d,action:a,context:g}),w(!1)}function _(){if(h){rt({confirmMessage:h,lang:s,onOk:()=>{v()}});return}v()}function D(){if(m)return e.jsx(K.LoadingOutlined,{});if(u){const b=We(u);return b&&e.jsx(b,{})}}return e.jsx(p.Menu.Item,{disabled:!f||C,onClick:_,icon:D(),danger:y,children:c})});return e.jsx(p.Menu,{children:o})},Vo=.7;function xr(){const{innerWidth:t,innerHeight:r}=window;return{width:t,height:r}}function xt(){const[t,r]=l.useState(xr());return l.useEffect(()=>{function n(){r(xr())}return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]),{modalWidth:t.width*Vo,modalHeight:t.height,width:t.width,height:t.height}}class Y{static init(r){Y.handler=r}static getHandler(){if(!Y.handler)throw"Must call init() first with a valid ConnectionProvider instance";return Y.handler}}const Tr=t=>{let r,n,s;if(typeof t=="string"&&t.indexOf(" -- ")!==-1&&t.indexOf(`
|
|
1
|
+
(function(G,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("react"),require("antd"),require("@gisce/ooui"),require("@ant-design/icons"),require("interweave"),require("react/jsx-runtime"),require("@tabler/icons-react"),require("antd/lib/input/TextArea"),require("styled-components"),require("react-measure"),require("antd/lib/typography/Title"),require("@ant-design/plots"),require("use-deep-compare-effect"),require("@gisce/react-formiga-table"),require("file-type-buffer-browser"),require("antd/lib/_util/colors"),require("@gisce/fiber-diagram"),require("@gisce/react-formiga-components"),require("validator/lib/isURL"),require("validator/lib/isEmail"),require("react-hotkeys-hook"),require("react-markdown"),require("@monaco-editor/react"),require("react-grid-layout"),require("react-grid-layout/css/styles.css"),require("uuid")):typeof define=="function"&&define.amd?define(["exports","react","antd","@gisce/ooui","@ant-design/icons","interweave","react/jsx-runtime","@tabler/icons-react","antd/lib/input/TextArea","styled-components","react-measure","antd/lib/typography/Title","@ant-design/plots","use-deep-compare-effect","@gisce/react-formiga-table","file-type-buffer-browser","antd/lib/_util/colors","@gisce/fiber-diagram","@gisce/react-formiga-components","validator/lib/isURL","validator/lib/isEmail","react-hotkeys-hook","react-markdown","@monaco-editor/react","react-grid-layout","react-grid-layout/css/styles.css","uuid"],l):(G=typeof globalThis<"u"?globalThis:G||self,l(G["react-ooui"]={},G.React,G.antd,G.ooui,G.AntIcons,G.interweave,G.jsxRuntime,G.TablerIcons,G.TextArea$1,G.styled,G.Measure,G.Title$3,G.plots,G.useDeepCompareEffect,G.reactFormigaTable,G.fileTypeBufferBrowser,G.colors,G.fiberDiagram,G.reactFormigaComponents,G.isURL,G.isEmail,G.reactHotkeysHook,G.ReactMarkdown,G.Editor,G.reactGridLayout,null,G.uuid))})(this,function(G,l,p,oe,H,Ht,e,ro,no,oo,so,io,Kt,ao,lo,co,uo,fo,pr,ho,po,go,mo,yo,gr,Dc,mr){"use strict";const Ye=t=>t&&typeof t=="object"&&"default"in t?t:{default:t};function yr(t){if(t&&t.__esModule)return t;const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const s=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(r,n,s.get?s:{enumerable:!0,get:()=>t[n]})}}return r.default=t,Object.freeze(r)}const Be=Ye(l),wr=yr(H),vr=Ye(H),Cr=yr(ro),wo=Ye(no),pt=Ye(oo),Yt=Ye(so),Wt=Ye(io),Re=Ye(ao),vo=Ye(ho),Co=Ye(po),So=Ye(mo),bo=Ye(yo),{Text:xo,Title:To}=p.Typography,{useToken:Fo}=p.theme,Oo={left:"justify-start",center:"justify-center",right:"justify-end"},gt=t=>{const{ooui:r,align:n,responsiveBehaviour:s}=t,{label:o,tooltip:i,fieldForLabel:a,labelSize:c,labelType:f}=r,h=a!==null&&o.length>1?o+" :":o,g=n||(a?s?"left":"right":"left"),{token:C}=Fo(),y=c===void 0?xo:To;return e.jsxs("div",{className:`flex flex-row items-center pb-1 pt-1 ${Oo[g]}`,children:[i&&e.jsx(p.Tooltip,{title:i,children:e.jsx(H.QuestionCircleOutlined,{className:"pr-1 text-xs",style:{color:C.colorPrimary}})}),e.jsx("span",{className:"pr-2",children:e.jsx(y,{level:c,type:f,children:e.jsx(Ht.Interweave,{content:h})})})]})},_o={ca_ES:{true:"S\xED",false:"No",simple_search:"B\xFAsqueda simple",advanced_search:"B\xFAsqueda avan\xE7ada",search:"Buscar",parameters:"Par\xE0metres",limit:"Limit",first:"Primer",no_results:"No hi ha resultats",summary:"Mostrant resultats des de {from} fins {to} d'un total de {total} registres",welcome:"Benvingut",attachments:"Adjunts",addNewAttachment:"Afegir nou adjunt",listAllAttachments:"Veure tots els adjunts",viewAs:"Veure com",confirmRemoveItem:"Est\xE0s segur de volguer eliminar aquest item?",save:"Desar",delete:"Eliminar",refresh:"Refrescar",previous:"Anterior",next:"Seg\xFCent",actions:"Accions",reports:"Informes",related:"Relacionat",new:"Nou",fillRequiredField:"Siusplau, omple aquest camp obligatori",fillRequiredFields:"Siusplau, omple tots els camps obligatoris",generatingReport:"Generant informe...",confirmation:"Confirmaci\xF3",ok:"D'acord",cancel:"Cancel\xB7lar",formHasErrors:"El formulari t\xE9 errors",unsavedChanges:"Hi ha canvis sense guardar",confirmRefreshWithoutSave:"Est\xE0s segur de volguer refrescar la p\xE0gina sense guardar els canvis?",discardAndRefresh:"Descarta els canvis i refresca",removeItems:"Elimina el registre/s",confirmRemove:"Est\xE0s segur de volguer eliminar els registre/s seleccionats?",yesConfirmRemove:"S\xED, elimina",unlinkItems:"Desenlla\xE7a registre/s",confirmUnlink:"Est\xE0s segur de volguer desenlla\xE7ar els registre/s seleccionats?",yesConfirmUnlink:"S\xED, desenlla\xE7a",confirmCloseWithoutSave:"Est\xE0s segur de volguer tancar aquesta finestra sense guardar?",closeWithoutSaving:"Tancar sense guardar",action:"Acci\xF3",report:"Informe",selectAction:"Selecciona una acci\xF3",download:"Descarrega",clear:"Neteja",open:"Obre",uploadNewImage:"Puja una nova imatge",noCurrentEntries:"No hi ha registres",duplicate:"Duplicar",downloadingAttachment:"Descarregant adjunt...",tree:"llista",form:"formulari",favorites:"Els meus favorits",edit_favorites:"Edita els favorits",no_favorites:"No tens favorits guardats",register:"Registre",of:"de",editingDocument:"Editant document",showLogs:"Veure logs",createdBy:"Creat per l'usuari",creationDate:"Data creaci\xF3",lastUpdatedBy:"\xDAltima modificaci\xF3 per",lastUpdatedDate:"Data \xFAltima modificaci\xF3",goToResourceId:"V\xE9s al recurs amb ID",searchId:"ID de cerca:",idNotFound:"No es troba aquesta id de recurs per l'objecte",selectedRegisters:"registres seleccionats",translate:"Tradu\xEFr",enterTextBeforeTranslate:"Introdueix algun text al camp abans d'afegir traduccions",saveBeforeTranslate:"Heu de desar el registre abans d'afegir les traduccions",configDashboard:"Configurar panell",moveDashboard:"Moure items del panell",openAttachment:"Veure detall de l'adjunt",openAttachmentLink:"Obrir enlla\xE7 de l'adjunt",uninformed:"Sense informar",totalRegisters:"Registres totals:",export:"Exportar",selectAtLeastOneField:"Selecciona almenys un camp per a l'exportaci\xF3",printScreen:"Imprimir pantalla",advancedExport:"Exportaci\xF3 avan\xE7ada",savedRegisters:"Registre guardat correctament",errorWhileSavingForm:"Error en guardar el formulari"},en_US:{true:"Yes",false:"No",simple_search:"Simple search",advanced_search:"Advanced search",search:"Search",parameters:"Parameters",limit:"Limit",first:"First",no_results:"No results",summary:"Showing registers from {from} to {to} of {total} registers",welcome:"Welcome",attachments:"Attachments",addNewAttachment:"Add new attachment",listAllAttachments:"View all the attachments",viewAs:"View as",confirmRemoveItem:"Are you sure to remove this item?",save:"Save",delete:"Delete",refresh:"Refresh",previous:"Previous",next:"Next",actions:"Actions",reports:"Reports",related:"Related",new:"New",fillRequiredField:"Please fill this required field",fillRequiredFields:"Please fill all the required fields",generatingReport:"Generating report...",confirmation:"Confirmation",ok:"OK",cancel:"Cancel",formHasErrors:"Form has errors",unsavedChanges:"There are unsaved changes",confirmRefreshWithoutSave:"Do you really want to refresh this window without saving?",discardAndRefresh:"Discard changes and refresh",removeItems:"Remove item/s",confirmRemove:"Are you sure you want to remove the selected item/s?",yesConfirmRemove:"Yes, remove",unlinkItems:"Unlink item/s",confirmUnlink:"Are you sure you want to unlink the selected item/s?",yesConfirmUnlink:"Yes, unlink",confirmCloseWithoutSave:"Do you really want to close this window without saving?",closeWithoutSaving:"Close without saving",action:"Action",report:"Report",selectAction:"Select an action",download:"Download",clear:"Clear",open:"Open",uploadNewImage:"Upload new image",noCurrentEntries:"No current entries",duplicate:"Duplicate",downloadingAttachment:"Downloading attachment...",tree:"list",form:"form",favorites:"My shortcuts",edit_favorites:"Edit shortcuts",no_favorites:"You don't have any shortcuts saved yet",register:"Register",of:"of",editingDocument:"Editing document",showLogs:"Show logs",createdBy:"Created by user",creationDate:"Creation date",lastUpdatedBy:"Last modified by",lastUpdatedDate:"Date of last modification",goToResourceId:"Go to resource ID",searchId:"Search ID:",idNotFound:"Resource ID does not exist for this object!",selectedRegisters:"selected registers",translate:"Translate",enterTextBeforeTranslate:"Enter some text to the related field before adding translations",saveBeforeTranslate:"You must save the record before adding translations",configDashboard:"Setup dashboard",moveDashboard:"Move dashboard items",openAttachment:"Open attachment detail",openAttachmentLink:"Open attachment link",uninformed:"Uninformed",totalRegisters:"Total registers:",export:"Export",selectAtLeastOneField:"Select at least one field for the export",printScreen:"Print screen",advancedExport:"Advanced export",savedRegisters:"Record successfully saved",errorWhileSavingForm:"Error while saving form"},es_ES:{true:"S\xED",false:"No",simple_search:"B\xFAsqueda simple",advanced_search:"B\xFAsqueda avanzada",search:"Buscar",parameters:"Parametros",limit:"L\xEDmite",first:"Primero",no_results:"No hay resultados",summary:"Mostrando resultado desde {from} hasta {to} de un total de {total} registros",welcome:"Bienvenido",attachments:"Adjuntos",addNewAttachment:"A\xF1adir nuevo adjunto",listAllAttachments:"Ver todos los adjuntos",viewAs:"Ver c\xF3mo",confirmRemoveItem:"Est\xE1s seguro de querer eliminar \xE9ste registro?",save:"Guardar",delete:"Eliminar",refresh:"Refrescar",previous:"Anterior",next:"Siguiente",actions:"Acciones",reports:"Informes",related:"Relacionado",new:"Nuevo",fillRequiredField:"Por favor, rellena \xE9ste campo obligatorio",fillRequiredFields:"Por favor, rellena todos los campos obligatorios",generatingReport:"Generando informe...",confirmation:"Confirmaci\xF3m",ok:"De acuerdo",cancel:"Cancelar",formHasErrors:"El formulario tiene errores",unsavedChanges:"Hay cambios sin guardar",confirmRefreshWithoutSave:"Est\xE1s seguro de querer refrescar la p\xE1gina sin guardar los cambios?",discardAndRefresh:"Descarta los cambios y refresca",removeItems:"Eliminar el registro/s",confirmRemove:"Est\xE1s seguro de querer eliminar los registro/s seleccionados?",yesConfirmRemove:"S\xED, elimina",unlinkItems:"Desenlaza registro/s",confirmUnlink:"Est\xE1s seguro de querer desenlazar los registro/s seleccionados?",yesConfirmUnlink:"S\xED, desenlaza",confirmCloseWithoutSave:"Est\xE1s seguro de querer cerrar \xE9sta ventana sin cerrar?",closeWithoutSaving:"Cerrar sin guardar",action:"Acci\xF3n",report:"Informe",selectAction:"Selecciona una acci\xF3n",download:"Descarga",clear:"Limpiar",open:"Abrir",uploadNewImage:"Subir una nueva im\xE1gen",noCurrentEntries:"No hay registros",duplicate:"Duplicar",downloadingAttachment:"Descargando adjunto...",tree:"lista",form:"formulario",favorites:"Mis favoritos",edit_favorites:"Edita los favoritos",no_favorites:"No tienes favoritos guardados",register:"Registro",of:"de",editingDocument:"Editando documento",showLogs:"Ver logs",createdBy:"Creado por el usuario",creationDate:"Fecha creaci\xF3n",lastUpdatedBy:"\xDAltima modificaci\xF3n por",lastUpdatedDate:"Fecha \xFAltima modificaci\xF3n",goToResourceId:"Ir al recurso con ID",searchId:"ID de b\xFAsqueda:",idNotFound:"No se encuentra \xE9sta ID de recursos para el objeto",selectedRegisters:"registros seleccionados",translate:"Traducir",enterTextBeforeTranslate:"Introduce algun texto en el campo antes de a\xF1adir traducciones",saveBeforeTranslate:"Tienes que guardar el registro antes de a\xF1adir las traducciones",configDashboard:"Configurar panel",moveDashboard:"Mover items del panel",openAttachment:"Ver detalle del adjunto",openAttachmentLink:"Abrir enlace del adjunto",uninformed:"Sin informar",totalRegisters:"Registros totales:",export:"Exportar",selectAtLeastOneField:"Selecciona al menos un campo para la exportaci\xF3n",printScreen:"Imprimir pantalla",advancedExport:"Exportaci\xF3n avanzada",savedRegisters:"Registro guardado correctamente",errorWhileSavingForm:"Error al guardar el formulario"}},ge=Be.default.createContext(null),Do=t=>{const{children:r,lang:n}=t;function s(o){return Se(o,n)}return e.jsx(ge.Provider,{value:{lang:n,t:s},children:r})},Se=(t,r)=>{var s;return((s=_o[r])==null?void 0:s[t])||t};function me({ooui:t,children:r,layout:n="horizontal",valuePropName:s,showLabel:o=!1,alignLabel:i="left",required:a=!1,type:c,validator:f}){const{id:d,label:h,tooltip:u}=t,{t:g}=l.useContext(ge),C=a?[{required:!0,message:g("fillRequiredField"),type:c,validator:f}]:void 0,y=()=>e.jsx(p.Form.Item,{className:"mb-0",name:d,valuePropName:s,rules:C,children:r});if(!o)return y();const m=e.jsx(gt,{ooui:new oe.Label({name:d+"_label",string:h,help:u,fieldForLabel:d}),align:i});return n==="horizontal"?(()=>e.jsxs(p.Row,{align:"middle",className:"pb-1 pt-1",children:[e.jsx(p.Col,{className:"ml-2",flex:"7rem",children:e.jsx("div",{className:"flex flex-col items-end",children:m})}),e.jsx(p.Col,{flex:"auto",children:y()})]}))():(()=>e.jsxs(e.Fragment,{children:[m,y()]}))()}const{confirm:ko}=p.Modal,rt=({onOk:t,confirmMessage:r,lang:n})=>{ko({title:Se("confirmation",n),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:r,okText:Se("ok",n),cancelText:Se("cancel",n),onOk:t})},ke=Be.default.createContext(null),Mo=t=>{const{children:r,activeId:n,activeModel:s,setFieldValue:o,getFieldValue:i,executeButtonAction:a,getContext:c,getValues:f,getPlainValues:d,domain:h,submitForm:u,fetchValues:g,formHasChanges:C,elementHasLostFocus:y,getFields:m}=t;return e.jsx(ke.Provider,{value:{domain:h,getValues:f,getPlainValues:d,getFields:m,activeId:n,activeModel:s,setFieldValue:o,getFieldValue:i,executeButtonAction:a,getContext:c,submitForm:u,fetchValues:g,formHasChanges:C,elementHasLostFocus:y},children:r})},Sr={"terp-purchase":"ShoppingCart","terp-graph":"PieChart","terp-crm":"Contacts","terp-hr":"Friends","terp-account":"BuildingBank","terp-project":"Checklist","terp-administration":"Adjustments","terp-partner":"Team","terp-mrp":"Build","terp-product":"Shopping",STOCK_JUSTIFY_FILL:"UnorderedList",STOCK_INDENT:"IndentIncrease",STOCK_HELP:"Question",STOCK_GO_UP:"ArrowUp",STOCK_SORT_DESCENDING:"SortDescending",STOCK_ADD:"Plus",STOCK_GOTO_LAST:"FastForward",STOCK_FIND:"Search",STOCK_PROPERTIES:"Control",STOCK_DIALOG_INFO:"Info",STOCK_FLOPPY:"Usb",STOCK_JUSTIFY_CENTER:"AlignCenter",STOCK_GO_BACK:"ArrowLeft",STOCK_UNDERLINE:"Underline",STOCK_BOLD:"Bold",STOCK_APPLY:"Check",STOCK_ZOOM_OUT:"ZoomOut",STOCK_STRIKETHROUGH:"Strikethrough",STOCK_MEDIA_REWIND:"Backward",STOCK_PRINT:"Printer",STOCK_NO:"Close",STOCK_GOTO_FIRST:"FastBackward",STOCK_CLOSE:"Close",STOCK_REMOVE:"Minus",STOCK_CUT:"Scissor",STOCK_DIALOG_AUTHENTICATION:"Safety",STOCK_ZOOM_FIT:"Expand",STOCK_JUMP_TO:"Select",STOCK_HARDDISK:"Hdd",STOCK_SAVE_AS:"Save",STOCK_UNDO:"Undo",STOCK_JUSTIFY_RIGHT:"AlignRight",STOCK_DIALOG_ERROR:"CloseCircle",STOCK_INDEX:"Profile",STOCK_GOTO_BOTTOM:"VerticalAlignBottom",STOCK_MEDIA_NEXT:"StepForward",STOCK_REDO:"Redo",STOCK_COPY:"Copy",STOCK_MEDIA_PAUSE:"Pause",STOCK_GO_FORWARD:"ArrowRight",STOCK_UNDELETE:"Undo",STOCK_EXECUTE:"Setting",STOCK_SAVE:"Save",STOCK_DIALOG_QUESTION:"QuestionCircle",STOCK_SORT_ASCENDING:"SortAscending",STOCK_REFRESH:"Reload",STOCK_MEDIA_FORWARD:"Forward",STOCK_STOP:"Border",STOCK_PRINT_PREVIEW:"Printer",STOCK_HOME:"Home",STOCK_PASTE:"CarryOut",STOCK_ZOOM_100:"ZoomIn",STOCK_FIND_AND_REPLACE:"FileSearch",STOCK_DIALOG_WARNING:"Warning",STOCK_ZOOM_IN:"ZoomIn",STOCK_CONVERT:"Export",STOCK_ITALIC:"Italic",STOCK_YES:"Check",STOCK_MEDIA_PLAY:"PlayCircle",STOCK_MEDIA_RECORD:"VideoCamera",STOCK_MEDIA_PREVIOUS:"StepBackward",STOCK_NEW:"FileAdd",STOCK_CANCEL:"Close",STOCK_DISCONNECT:"Api",STOCK_JUSTIFY_LEFT:"AlignLeft",STOCK_FILE:"File",STOCK_QUIT:"Logout",STOCK_EDIT:"Edit",STOCK_CONNECT:"Api",STOCK_GO_DOWN:"CaretDown",STOCK_NETWORK:"Apartment",STOCK_OK:"Check",STOCK_GOTO_TOP:"VerticalAlignTop",STOCK_ABOUT:"Star",STOCK_COLOR_PICKER:"Aim",STOCK_SELECT_FONT:"FontSize",STOCK_DELETE:"Delete",STOCK_DND:"FileText",STOCK_CLEAR:"CloseSquare",STOCK_UNINDENT:"AlignLeft",STOCK_PREFERENCES:"Setting"},We=(t,r)=>(t.indexOf("gtk-")!==-1&&(t=`STOCK_${t.replace("gtk-","").replace(/\-/g,"_").toUpperCase()}`),Sr.hasOwnProperty(t)?br(Sr[t],r):br(t,r));function Vo(t){return`${t.split("-").map(r=>r.replace(/\w\S*/g,n=>n.charAt(0).toUpperCase()+n.slice(1).toLowerCase())).join("")}`}function br(t,r){let n=t.charAt(0).toUpperCase()+t.slice(1);n.indexOf("-")!==-1&&(n=Vo(n));const s=`${n}Outlined`;if(wr[s])return()=>Be.default.createElement(wr[s],{...r});const o=`Icon${n}`;if(Cr[o]){const i=()=>Be.default.createElement(Cr[o],{fill:"transparent",height:17,width:17});return()=>Be.default.createElement(vr.default,{component:i,...r})}}const qt=t=>{const{ooui:r}=t,{id:n,label:s,activated:o,buttonType:i,confirmMessage:a,icon:c,context:f,readOnly:d}=r,h=l.useContext(ke),{executeButtonAction:u}=h||{},[g,C]=l.useState(!1),{lang:y}=l.useContext(ge);async function m(){C(!0),await u({type:i,action:n,context:f}),C(!1)}function w(){if(a){rt({confirmMessage:a,lang:y,onOk:()=>{m()}});return}m()}function v(){if(g)return e.jsx(H.LoadingOutlined,{});if(c){const O=We(c);return O&&e.jsx(O,{})}}return e.jsx(me,{ooui:r,children:e.jsx(p.Button,{block:!0,disabled:!o||d,onClick:w,icon:v(),type:r.primary?"primary":"default",danger:r.danger,style:{whiteSpace:"normal",height:"auto"},children:s})})},xr=t=>{const{ooui:r}=t,{defaultButton:n,secondaryButtons:s}=r,{id:o,caption:i,activated:a,buttonType:c,confirmMessage:f,icon:d,primary:h,danger:u,context:g,readOnly:C}=n||{},y=l.useContext(ke),{executeButtonAction:m}=y||{},[w,v]=l.useState(!1),{lang:O}=l.useContext(ge);function D(){if(w)return e.jsx(H.LoadingOutlined,{});if(d){const k=We(d);return k&&e.jsx(k,{})}}async function S(){c&&o&&(v(!0),await m({type:c,action:o,context:g}),v(!1))}function V(){if(f){rt({confirmMessage:f,lang:O,onOk:()=>{S()}});return}S()}if(r.buttons.length===0)return null;if(r.buttons.length>1)return e.jsx(me,{ooui:new oe.Field({ooui:r}),children:e.jsxs(p.Dropdown.Button,{disabled:!a||C,onClick:V,icon:e.jsx(H.DownOutlined,{}),type:h?"primary":void 0,overlay:e.jsx(Eo,{ooui:s,executeButtonAction:m,lang:O}),children:[D(),i]})});if(n)return e.jsx(qt,{ooui:n})},Eo=t=>{const{ooui:r,executeButtonAction:n,lang:s}=t;if(!r)return null;const o=r.map(i=>{const{id:a,caption:c,activated:f,buttonType:d,confirmMessage:h,icon:u,context:g,readOnly:C,danger:y}=i,[m,w]=l.useState(!1);async function v(){w(!0),await n({type:d,action:a,context:g}),w(!1)}function O(){if(h){rt({confirmMessage:h,lang:s,onOk:()=>{v()}});return}v()}function D(){if(m)return e.jsx(H.LoadingOutlined,{});if(u){const S=We(u);return S&&e.jsx(S,{})}}return e.jsx(p.Menu.Item,{disabled:!f||C,onClick:O,icon:D(),danger:y,children:c})});return e.jsx(p.Menu,{children:o})},Io=.7;function Tr(){const{innerWidth:t,innerHeight:r}=window;return{width:t,height:r}}function Tt(){const[t,r]=l.useState(Tr());return l.useEffect(()=>{function n(){r(Tr())}return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]),{modalWidth:t.width*Io,modalHeight:t.height,width:t.width,height:t.height}}class Y{static init(r){Y.handler=r}static getHandler(){if(!Y.handler)throw"Must call init() first with a valid ConnectionProvider instance";return Y.handler}}const Fr=t=>{let r,n,s;if(typeof t=="string"&&t.indexOf(" -- ")!==-1&&t.indexOf(`
|
|
2
2
|
|
|
3
3
|
`)!==-1){const o=t.split(`
|
|
4
4
|
|
|
5
|
-
`);r=o[1].replace(/\n/g,"<br />");const i=o[0].split(" -- ");n=i[0],s=i[1]}else r=t,n="error",s="Error";return{type:n,message:r,title:s}},{error
|
|
5
|
+
`);r=o[1].replace(/\n/g,"<br />");const i=o[0].split(" -- ");n=i[0],s=i[1]}else r=t,n="error",s="Error";return{type:n,message:r,title:s}},{error:$o,warning:Ao}=p.Modal,Ae=t=>{const{message:r,type:n,title:s}=Fr(t),o=n==="error"?e.jsx(H.ExclamationCircleOutlined,{}):e.jsx(H.WarningOutlined,{});(n==="error"?$o:Ao)({title:s,icon:o,centered:!0,content:r})},Or=t=>{const{visible:r,onCloseModal:n,model:s,id:o,field:i,onSubmitSucceed:a}=t,{modalWidth:c}=Tt(),{t:f}=l.useContext(ge),[d,h]=l.useState([]),[u,g]=l.useState(!1),[C,y]=l.useState(!1),[m,w]=l.useState({}),v=l.useRef();l.useEffect(()=>{r?O():w({})},[r]);async function O(){g(!0);try{const x=await D();await S(x)}catch(x){Ae(x)}g(!1)}async function D(){const b=(await Y.getHandler().search({params:[["translatable","=","1"]],fields:["code","name"],model:"res.lang"})).map(_=>({code:_.code,name:_.name}));return h==null||h(b),b}async function S(x){const b={};for(const _ of x){const T=(await Y.getHandler().readObjects({model:s,ids:[o],fieldsToRetrieve:[i],context:{lang:_.code}}))[0];b[_.code]=T[i]||""}v.current=b,w(b)}function V(){return d.map((x,b)=>e.jsxs(p.Row,{style:{paddingBottom:20},children:[e.jsx(p.Col,{flex:"8rem",style:{paddingRight:10},children:x.name}),e.jsx(p.Col,{flex:"auto",children:e.jsx(wo.default,{rows:4,value:m[x.code]||"",onChange:_=>{w({...m,[x.code]:_.target.value})},disabled:C})})]},b))}async function k(){y(!0);try{for(const x of Object.keys(m))m[x]!==v.current[x]&&await Y.getHandler().update({model:s,id:o,values:{[i]:m[x]},context:{lang:x},fields:{}})}catch(x){Ae(x)}y(!1),a()}function L(){return u?e.jsx(p.Spin,{}):e.jsxs(e.Fragment,{children:[V(),e.jsx(p.Divider,{}),e.jsx(p.Row,{justify:"end",children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.CloseOutlined,{}),onClick:n,disabled:C,children:f("cancel")}),e.jsx(p.Button,{icon:C?e.jsx(H.LoadingOutlined,{}):e.jsx(H.CheckOutlined,{}),disabled:C,onClick:k,style:{marginLeft:15},type:"primary",children:f("ok")})]})})]})}return e.jsx(p.Modal,{title:f("translate"),centered:!0,width:c,open:r,closable:!0,onCancel:n,footer:null,destroyOnClose:!0,maskClosable:!1,children:L()})};function Le(t){const{tooltip:r,...n}=t;return e.jsx(p.Tooltip,{title:r,children:e.jsx(p.Button,{...n})})}const{info:Lo}=p.Modal,Ue=t=>{Lo({title:"",centered:!0,content:t})},{useToken:No}=p.theme,Gt=t=>{const{ooui:r,isSearchField:n=!1}=t,{id:s,readOnly:o,isPassword:i,required:a,translatable:c}=r,{token:f}=No(),d=a&&!o?{backgroundColor:f.colorPrimaryBg}:void 0,h=l.useContext(ke),{elementHasLostFocus:u}=h||{};let g=e.jsx(p.Input,{disabled:o||c&&!n,id:s,style:d,maxLength:r.size,onBlur:u});return i&&(g=e.jsx(p.Input.Password,{disabled:o,id:s,onBlur:u})),c&&!o&&!n&&(g=e.jsx(Po,{field:s,requiredStyle:d})),e.jsx(me,{required:a,...t,children:g})},Po=({value:t,field:r,requiredStyle:n,onChange:s})=>{const o=l.useContext(ke),{activeId:i,activeModel:a,fetchValues:c,formHasChanges:f,elementHasLostFocus:d}=o||{},[h,u]=l.useState(!1),{t:g}=l.useContext(ge);return i?e.jsxs(e.Fragment,{children:[e.jsx("div",{onClick:()=>{if(f!=null&&f()){Ue(g("saveBeforeTranslate"));return}h||u(!0)},children:e.jsx(p.Input,{value:t,disabled:!0,id:r,onChange:C=>{s==null||s(C.target.value)},onBlur:d,style:{cursor:"pointer",...n}})}),e.jsx(Or,{id:i,model:a,field:r,visible:h,onCloseModal:()=>{u(!1)},onSubmitSucceed:()=>{u(!1),c==null||c()}})]}):e.jsx(e.Fragment,{children:e.jsxs(p.Row,{gutter:8,wrap:!1,children:[e.jsx(p.Col,{flex:"auto",children:e.jsx(p.Input,{value:t,id:r,style:n,onChange:C=>{s==null||s(C.target.value)},onBlur:d})}),e.jsx(p.Col,{flex:"32px",children:e.jsx(Le,{tooltip:g("translate"),icon:e.jsx(H.TranslationOutlined,{}),onClick:async()=>{f!=null&&f()?Ue(g("saveBeforeTranslate")):Ue(g("enterTextBeforeTranslate"))},children:g("translate")})})]})})},{defaultAlgorithm:Bo,defaultSeed:Ho}=p.theme,Ko=Bo(Ho),{Option:Yo}=p.Select,Ut=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(_r,{...t})})},_r=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,required:a}=r,c=Array.from(o.entries()),f=c&&c.length&&c.map(h=>{const[u,g]=h;return e.jsx(Yo,{value:u,children:g},u)}),d=a&&!i?Wo:p.Select;return e.jsx(d,{disabled:i,onChange:n,value:s,optionFilterProp:"children",filterOption:(h,u)=>u.children.toLowerCase().indexOf(h.toLowerCase())>=0,showSearch:!0,children:f})},Wo=pt.default(p.Select)`
|
|
6
6
|
&.ant-select:not(.ant-select-customize-input) .ant-select-selector {
|
|
7
|
-
background-color: ${
|
|
7
|
+
background-color: ${Ko.colorPrimaryBg};
|
|
8
8
|
}
|
|
9
|
-
`,{defaultAlgorithm:
|
|
9
|
+
`,{defaultAlgorithm:qo,defaultSeed:Go}=p.theme,Dr=qo(Go),kr=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o}=r;return e.jsx(me,{...t,valuePropName:"checked",children:e.jsx(Uo,{id:n,readOnly:s,required:o})})},Uo=t=>{const{required:r,readOnly:n,...s}=t,o=r&&!n?jo:p.Checkbox;return e.jsx("div",{className:"flex flex-row",children:e.jsx(o,{disabled:n,...s})})},jo=pt.default(p.Checkbox)`
|
|
10
10
|
.ant-checkbox-inner {
|
|
11
|
-
background-color: ${
|
|
11
|
+
background-color: ${Dr.colorPrimaryBg};
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
.ant-checkbox-checked .ant-checkbox-inner {
|
|
15
|
-
background-color: ${
|
|
15
|
+
background-color: ${Dr.colorPrimary};
|
|
16
16
|
}
|
|
17
|
-
`;var Qe=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Uo(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}var kr=Uo,jo=typeof Qe=="object"&&Qe&&Qe.Object===Object&&Qe,zo=jo,Jo=zo,Zo=typeof self=="object"&&self&&self.Object===Object&&self,Xo=Jo||Zo||Function("return this")(),Mr=Xo,Qo=Mr,Ro=function(){return Qo.Date.now()},es=Ro,ts=/\s/;function rs(t){for(var r=t.length;r--&&ts.test(t.charAt(r)););return r}var ns=rs,os=ns,ss=/^\s+/;function is(t){return t&&t.slice(0,os(t)+1).replace(ss,"")}var as=is,ls=Mr,cs=ls.Symbol,Vr=cs,Er=Vr,Ir=Object.prototype,ds=Ir.hasOwnProperty,us=Ir.toString,mt=Er?Er.toStringTag:void 0;function fs(t){var r=ds.call(t,mt),n=t[mt];try{t[mt]=void 0;var s=!0}catch{}var o=us.call(t);return s&&(r?t[mt]=n:delete t[mt]),o}var hs=fs,ps=Object.prototype,gs=ps.toString;function ms(t){return gs.call(t)}var ys=ms,$r=Vr,ws=hs,vs=ys,Cs="[object Null]",Ss="[object Undefined]",Ar=$r?$r.toStringTag:void 0;function bs(t){return t==null?t===void 0?Ss:Cs:Ar&&Ar in Object(t)?ws(t):vs(t)}var xs=bs;function Ts(t){return t!=null&&typeof t=="object"}var Fs=Ts,Os=xs,_s=Fs,Ds="[object Symbol]";function ks(t){return typeof t=="symbol"||_s(t)&&Os(t)==Ds}var Ms=ks,Vs=as,Lr=kr,Es=Ms,Nr=0/0,Is=/^[-+]0x[0-9a-f]+$/i,$s=/^0b[01]+$/i,As=/^0o[0-7]+$/i,Ls=parseInt;function Ns(t){if(typeof t=="number")return t;if(Es(t))return Nr;if(Lr(t)){var r=typeof t.valueOf=="function"?t.valueOf():t;t=Lr(r)?r+"":r}if(typeof t!="string")return t===0?t:+t;t=Vs(t);var n=$s.test(t);return n||As.test(t)?Ls(t.slice(2),n?2:8):Is.test(t)?Nr:+t}var Ps=Ns,Bs=kr,Ut=es,Pr=Ps,Hs="Expected a function",Ks=Math.max,Ys=Math.min;function Ws(t,r,n){var s,o,i,a,c,f,d=0,h=!1,u=!1,g=!0;if(typeof t!="function")throw new TypeError(Hs);r=Pr(r)||0,Bs(n)&&(h=!!n.leading,u="maxWait"in n,i=u?Ks(Pr(n.maxWait)||0,r):i,g="trailing"in n?!!n.trailing:g);function C(k){var A=s,S=o;return s=o=void 0,d=k,a=t.apply(S,A),a}function y(k){return d=k,c=setTimeout(v,r),h?C(k):a}function m(k){var A=k-f,S=k-d,x=r-A;return u?Ys(x,i-S):x}function w(k){var A=k-f,S=k-d;return f===void 0||A>=r||A<0||u&&S>=i}function v(){var k=Ut();if(w(k))return _(k);c=setTimeout(v,m(k))}function _(k){return c=void 0,g&&s?C(k):(s=o=void 0,a)}function D(){c!==void 0&&clearTimeout(c),d=0,s=f=o=c=void 0}function b(){return c===void 0?a:_(Ut())}function E(){var k=Ut(),A=w(k);if(s=arguments,o=this,f=k,A){if(c===void 0)return y(f);if(u)return clearTimeout(c),c=setTimeout(v,r),C(f)}return c===void 0&&(c=setTimeout(v,r)),a}return E.cancel=D,E.flush=b,E}var qs=Ws;function Gs(t){const n=Buffer.from(t,"base64").length/1e3;return`${Math.round((n+Number.EPSILON)*100)/100} KB`}async function nt(t){const r=await ao.fileTypeFromBuffer(Buffer.from(t,"base64"));return r||{mime:"text/plain",ext:"txt"}}const Br=t=>new Promise((r,n)=>{const s=new FileReader;s.readAsDataURL(t),s.onload=o=>r(o.target.result.split(",")[1]),s.onerror=o=>n(o)});function Tt(t,r){for(var n=atob(t),s=new Array(n.length),o=0;o<n.length;o++)s[o]=n.charCodeAt(o);var i=new Uint8Array(s),a=new Blob([i],{type:r+";base64"}),c=URL.createObjectURL(a);window.open(c)}const Hr=t=>{const{ooui:r}=t,{required:n,id:s}=r,o=We(s);return o?e.jsx(o,{}):e.jsx(me,{required:n,...t,children:e.jsx(Us,{ooui:r})})},Us=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o}=r,i=l.useRef(null),{t:a}=l.useContext(ge),c=u=>{s==null||s(u)};async function f(){const u=await nt(n),g=`data:${u==null?void 0:u.mime};base64,${n}`,C=document.createElement("a");C.href=g,C.download=`image.${u==null?void 0:u.ext}`,C.click()}async function d(u){u.stopPropagation(),u.preventDefault();const g=u.target.files[0],C=await Br(g);c(C)}function h(){c(void 0)}return e.jsxs(e.Fragment,{children:[e.jsxs(p.Row,{gutter:8,wrap:!1,justify:"center",children:[n&&e.jsx("img",{src:`data:image/*;base64,${n}`,style:{maxWidth:"100px"}}),e.jsx("input",{type:"file",id:"file",ref:i,accept:"image/*",style:{display:"none"},onChange:d})]}),e.jsx(p.Row,{gutter:8,wrap:!1,justify:"center",className:"pt-5",children:e.jsxs(p.Space,{children:[e.jsx(Le,{tooltip:a("uploadNewImage"),icon:e.jsx(K.FolderOpenOutlined,{}),disabled:o,onClick:()=>{i.current.click()}}),e.jsx(Le,{tooltip:a("download"),disabled:!n,onClick:f,icon:e.jsx(K.DownloadOutlined,{})}),e.jsx(Le,{tooltip:a("clear"),disabled:o||!n,onClick:h,icon:e.jsx(K.ClearOutlined,{})})]})})]})},js=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(zs,{})})},zs=t=>{const{value:r,onChange:n}=t;if(!r)return null;try{JSON.parse(r)}catch(s){return console.log(s),null}return e.jsx(co.GridUi,{inputJson:r,onChange:s=>{n&&n(s)}})},ot=t=>{const r=t.arch,n=t.fields,s=new se.Tree(n);return s.parse(r),s},Js=(t,r,n)=>t.columns.map(o=>{const i=o.type,a=o.id,c=r==null?void 0:r[i];let f;return c&&(f=d=>c(d,a,o,n)),{key:a,dataIndex:a,title:o.label,render:f,sorter:(d,h)=>{var C,y;let u=d[a]||"",g=h[a]||"";return i==="many2one"&&(u=((C=d[a])==null?void 0:C.value)||"",g=((y=h[a])==null?void 0:y.value)||""),u<g?-1:u>g?1:0}}}),Kr=(t,r)=>r.map(s=>{const o={};return Object.keys(s).map(i=>{if(i==="id")o[i]=s[i];else{const a=t.findById(i);a instanceof se.Reference||a instanceof se.Selection?o[i]=s[i]:a instanceof se.Many2one?o[i]=s[i]&&Array.isArray(s[i])&&s[i].length===2&&{model:a.relation,id:s[i][0],value:s[i][1]}:a instanceof se.Boolean?o[i]=s[i]:a?o[i]=s[i]===!1?"":s[i]:o[i]=s[i]}}),o});function Ft(t){if(!t)return;const r={};return t.forEach(n=>{r[n.id]=n.colors}),r}function st({resultsToSort:t,sorter:r,fields:n}){if(!r)return t;const{id:s,desc:o}=r,i=o===!1?"ascend":"descend",a=n[s].type,c=(f,d)=>{var g,C;let h=f[s]||"",u=d[s]||"";return a==="many2one"&&(h=((g=f[s])==null?void 0:g[1])||"",u=((C=d[s])==null?void 0:C[1])||""),h===u?0:i==="ascend"?h>u?1:-1:h<u?1:-1};return t.sort(c)}const jt=async t=>{var y;const{items:r,model:n,formView:s,treeView:o,context:i,currentView:a={}}=t,c=r.filter(m=>m.operation!=="original"),f=r.filter(m=>m.operation==="original").map(m=>m.id),d={form:s.fields,tree:o.fields};let h=[],u;if(a==="tree"&&(o==null?void 0:o.arch)){const m=(y=ot(o))==null?void 0:y.colors,w=await Y.getHandler().readEvalUiObjects({model:n,ids:f,arch:o==null?void 0:o.arch,fields:o.fields,context:i,attrs:m&&{colors:m}});h=w[0],u=Ft(w[1])}else h=await Y.getHandler().readObjects({model:n,ids:f,fields:d[a],context:i});const g=h.map(m=>{const w={};return Object.keys(m).forEach(v=>{(d[a].hasOwnProperty(v)||v==="id")&&(w[v]=m[v])}),w});return[r.map(m=>{const w=g.find(_=>_.id===m.id),v={...m};return a==="form"?v.values=w:a==="tree"&&(v.treeValues=w),v}).concat(c),u]},Zs=t=>{const r=t.filter(n=>n.id&&n.id<0).map(n=>n.id);return r.length===0?-1:Math.min(...r)-1},Xs=(t,r)=>{const n={};return Object.keys(t).forEach(s=>{var o;r.hasOwnProperty(s)&&(r[s].type==="one2many"||r[s].type==="many2many")&&t[s]&&((o=t[s])==null?void 0:o.items)?n[s]=t[s].items.filter(i=>i.operation!=="pendingRemove"):n[s]=t[s]}),n},Qs=t=>{const{ooui:r}=t,{relation:n,context:s,views:o}=r,[i,a]=l.useState(!0),[c,f]=l.useState(),[d,h]=l.useState(new Map),u=l.useContext(_e),{getContext:g}=u||{};et.default(()=>{y()},[r]);const C=async m=>o&&o[m]?o[m]:await Y.getHandler().getView({model:n,type:m,context:{...g==null?void 0:g(),...s}}),y=async()=>{a(!0),f(void 0);try{const m=await C("form"),w=await C("tree");d.set("form",m),d.set("tree",w),h(d)}catch(m){f(m)}finally{a(!1)}};return i?e.jsx(p.Spin,{}):c?e.jsx(p.Alert,{className:"mt-10",message:c,type:"error",banner:!0}):e.jsx(me,{type:"array",...t,children:e.jsx(Rs,{ooui:r,views:d})})},Rs=t=>{const{value:r,views:n,ooui:s,onChange:o}=t,{items:i=[]}=r||{},[a,c]=l.useState(!1),[f,d]=l.useState(),[h,u]=l.useState(!1),[g,C]=l.useState(),{relation:y,context:m,readOnly:w,summaryField:v,titleField:_}=s,D=i.filter(S=>S.values),b=l.useContext(_e),{getContext:E}=b||{};et.default(()=>{A()},[i]);const k=S=>{o==null||o({items:S})};async function A(){c(!0),d(void 0);try{const[S]=await jt({treeView:{fields:n.get("tree").fields,arch:n.get("tree").arch},formView:{fields:n.get("form").fields},model:y,items:i,context:{...E==null?void 0:E(),...m},currentView:"form"});k(S)}catch(S){d(S)}finally{c(!1)}}return f?e.jsx(p.Alert,{className:"mt-10",message:f,type:"error",banner:!0}):a?e.jsx(p.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(p.Timeline,{style:{padding:"1rem"},children:D.map((S,x)=>{var O,T;return e.jsx("div",{children:e.jsxs(p.Timeline.Item,{children:[e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{C(D.find(P=>S.id===P.id)),u(!0)},children:e.jsx("strong",{children:(O=S.values)==null?void 0:O[_]})}),e.jsx("br",{}),e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{C(D.find(P=>S.id===P.id)),u(!0)},children:(T=S.values)==null?void 0:T[v]})]},x)},x)})}),e.jsx(dt,{formView:n.get("form"),model:y,id:g==null?void 0:g.id,values:g==null?void 0:g.values,defaultValues:g==null?void 0:g.defaultValues,visible:h,onSubmitSucceed:()=>{u(!1)},parentContext:{...E==null?void 0:E(),...m},onCancel:()=>{u(!1)},readOnly:w,postSaveAction:A})]})},{useToken:ei}=p.theme,ti=t=>{const{ooui:r}=t;return e.jsx(me,{ooui:r,children:e.jsx(ri,{ooui:r})})},ri=t=>{const{token:r}=ei(),{ooui:n,value:s}=t,o=e.jsxs(e.Fragment,{children:[e.jsxs("span",{children:[n.label," "]}),n.tooltip&&e.jsx(p.Tooltip,{title:n.tooltip,children:e.jsx(K.QuestionCircleOutlined,{className:"pr-1 text-xs",style:{color:r.colorPrimaryBg}})})]}),i=We(n.icon);let a=s;n.selectionValues.size?a=n.selectionValues.get(s):Array.isArray(s)&&(a=s[1]);const c=e.jsx(p.Statistic,{title:o,prefix:i&&e.jsx(i,{}),suffix:n.suffix,value:a});return n.card?e.jsx(p.Card,{children:c}):c},ni=(t,r)=>{if(!r)return t;const n={};return Object.keys(t).forEach(s=>{if(r[s]===void 0)n[s]=t[s];else if(!(t[s]===!1&&r[s].type!=="boolean"))if(r[s].type==="boolean"){const o=t[s];o===0?n[s]=!1:o===1?n[s]=!0:n[s]=t[s]}else n[s]=t[s]}),n},it=(t,r)=>ni(t,r),zt=({source:t,target:r,fields:n})=>{const s={};return Object.keys(r).forEach(o=>{var a,c;if(n[o]?n[o].type==="one2many"||n[o].type==="many2many":!1){const f=JSON.stringify(t[o]),d=JSON.stringify(r[o]);if(f===d)return;(((c=(a=r[o])==null?void 0:a.items)==null?void 0:c.filter(u=>u.operation!=="original"))||[]).length>0&&(s[o]=r[o])}else if(Array.isArray(r[o]))if(t[o]===void 0)s[o]=r[o];else if(n[o].type==="many2one")if(Array.isArray(t[o])){const f=JSON.stringify(t[o]),d=JSON.stringify(r[o]);f!==d&&(s[o]=r[o])}else{const f=t[o],[d]=r[o];f!==d&&(s[o]=r[o])}else{const f=JSON.stringify(t[o]),d=JSON.stringify(r[o]);f!==d&&(s[o]=r[o])}else t[o]!==r[o]&&(r[o]===void 0?s[o]=null:s[o]=r[o])}),s},oi=({changedFields:t,formOoui:r,types:n})=>t.map(o=>{var a;const i=(a=r==null?void 0:r.findById(o))==null?void 0:a.type;return n.includes(i)}).some(o=>o===!0),si=({fieldsDomain:t,fields:r})=>{const n={};return Object.keys(r).forEach(s=>{n[s]=r[s],t[s]&&(n[s].domain=t[s])}),n},ii=t=>{const r={};return!t||!Array.isArray(t)||(t==null?void 0:t.length)===0?{}:(t.forEach(n=>{(n==null?void 0:n[1])==="="&&(r[n[0]]=n[2])}),r)},ai=({onChangeFieldActionArgs:t,values:r,parentValues:n={}})=>{const s={};return t.forEach(o=>{const i=o.split("");if(o==="True")s[o]=!0;else if(o==="False")s[o]=!1;else if(r[o])s[o]=r[o];else if(i[0]==="'"&&i[i.length-1]==="'"&&i.filter(a=>a==="'").length===2)s[o]=o.replace(/'/g,"");else if(i.includes("'"))s[o]=o;else if(o.indexOf("parent.")!==-1){const a=o.replace("parent.","");s[o]=n[a]||!1}else s[o]=!1}),s},Yr=t=>{const r={primary:[],secondary:[]};return t.forEach(n=>{!n||(r.primary=r.primary.concat(n.primary),r.secondary=r.secondary.concat(n.secondary))}),{primary:r.primary.filter(Wr),secondary:r.secondary.filter(Wr)}};function Wr(t,r,n){return n.indexOf(t)===r}const at=({values:t,fields:r})=>{let n={};return Object.keys(t).forEach(s=>{const o=t[s];r[s]&&r[s].type==="many2one"&&o&&Array.isArray(o)&&o.length===2?n[s]=o[0]:n[s]=o}),n},Ot=t=>{let r=0;t=t.toString().padEnd(10,"0");for(let o=0;o<t.length;o++)r=t.charCodeAt(o)+((r<<5)-r);let n="#";for(let o=0;o<3;o++){var s=r>>o*8&255;n+=("00"+s.toString(16)).slice(-2)}return n},qr=t=>{function r(a){return parseInt(a,16)||parseInt(a)}function n(a){return r(a)/255<=.03928?r(a)/255/12.92:Math.pow((r(a)/255+.055)/1.055,2.4)}function s(a){return .2126*n(a.substr(1,2))+.7152*n(a.substr(3,2))+.0722*n(a.substr(-2))}function o(a,c){const f=s(a),d=s(c);return(Math.max(f,d)+.05)/(Math.min(f,d)+.05)}function i(a){const c=o(a,"#ffffff"),f=o(a,"#000000");return c>f?"#ffffff":"#000000"}return i(t)},li=t=>{const r=Ot(t);return{backgroundColor:r,textColor:qr(r)}},Gr=t=>{const{ooui:r}=t;return e.jsx(me,{type:"array",...t,children:e.jsx(ci,{ooui:r})})},ci=t=>{const{value:r,ooui:n,onChange:s}=t,{items:o=[]}=r||{},i=o.filter(k=>k.operation!=="pendingRemove").map(k=>k.id),[a,c]=l.useState([]),[f,d]=l.useState(),[h,u]=l.useState(!1),{relation:g,context:C,readOnly:y,field:m}=n,w=l.useContext(_e),{getContext:v}=w||{};et.default(()=>{D()},[o]);const _=k=>{s==null||s({items:k})};async function D(){u(!0);let k=[];try{if(y&&(k=[["id","in",i]]),n.domain){const x=await Y.getHandler().evalDomain({domain:n.domain,values:at({fields:w==null?void 0:w.getFields(),values:w.getPlainValues()}),fields:w==null?void 0:w.getFields(),context:w.getContext()});k=[...k,...x]}const S=(await Y.getHandler().search({model:g,params:k,fields:[m],context:{...v==null?void 0:v(),...C}})).map(x=>{const O=x[m];let T=O;return Array.isArray(O)&&(T=O[1]),{label:T,value:x.id}});c(S)}catch(A){d(A)}finally{u(!1)}}const b=k=>{const A=o.map(x=>k.includes(x.id)?x.operation=="pendingRemove"?{...x,operation:"pendingLink"}:x:{id:x.id,operation:"pendingRemove"}),S=A.map(x=>x.id);k.filter(x=>!S.includes(x)).map(x=>{A.push({id:x,operation:"pendingLink"})}),_(A)},E=k=>{const{label:A,closable:S,onClose:x}=k,O=P=>{P.preventDefault(),P.stopPropagation()},T=li(A);return e.jsx(p.Tag,{color:T.backgroundColor,onMouseDown:O,style:{margin:"5px",color:T.textColor},closable:S,onClose:x,children:A})};return f?e.jsx(p.Alert,{className:"mt-10",message:f,type:"error",banner:!0}):e.jsx(e.Fragment,{children:e.jsx("div",{className:"flex flex-row",children:e.jsx(p.Select,{mode:"multiple",value:a.length?i:[],tagRender:E,bordered:!y,disabled:y,options:a,onChange:b,loading:h})})})},di=t=>{switch(t){case"form":return ct;case"tree":return Ct;case"notebook":return bn;case"group":return rr;case"label":return gt;case"char":return qt;case"text":return xn;case"button":return Wt;case"buttonGroup":return br;case"selection":return Gt;case"many2one":return hn;case"boolean":return Dr;case"integer":return vt;case"float":return Zt;case"progressbar":return en;case"date":return Dn;case"datetime":return kn;case"time":return Vn;case"one2many":case"one2many_list":case"many2many":return Cn;case"separator":return Tn;case"reference":return En;case"binary":return In;case"image":return Hr;case"url":return Bn;case"email":return Hn;case"float_time":return Sn;case"fiber_grid":return js;case"timeline":return Qs;case"indicator":return ti;case"tags":return Gr;case"tag":return on;case"multicheckbox":return jn;case"markdown":return zn;case"radio":return Jn;case"switch":return Zn;case"steps":return Xn;case"codeeditor":return Qn;default:return}},ui=t=>{const{ooui:r}=t,{type:n}=r,s=di(n);return s?Pe.default.createElement(s,t):null},fi=({item:t,responsiveBehaviour:r})=>({gridColumnStart:"span "+(r?1:t.colspan)}),hi=({row:t,mustFillWithEmpties:r,numberOfColumns:n})=>{const s=[];let o=0;const i=a=>a+1===t.length&&o<n&&!r;return t.map((a,c)=>{if(o+=a.colspan,i(c)){const f=n-o;a.colspan=a.colspan+f,o+=f}if(s.push(a),i(c)){const f=n-o;for(let d=0;d<f;d+=1)s.push(new se.Label({string:""}))}}),s},pi=({row:t,numberOfColumns:r})=>t.map(n=>(n._mustExpand&&(n.colspan=r),n)),gi=(t,r)=>{const n=t.map(s=>s instanceof se.Label&&s.fieldForLabel||s instanceof se.Container?"auto":"1fr");if(n.length<r){const s=r-n.length;for(let o=0;o<s;o++)n.push("1fr")}return n.join(" ")},mi=(t,r)=>{const n=r?"1fr":"auto",s="auto";let o="";for(let i=0;i<t;i++)o+=i%2?n:s,i+1<t&&(o+=" ");return o},yi=t=>t.map(n=>n.reduce((s,o)=>s+o.colspan,0)).reduce((n,s)=>Math.max(n,s)),Jt=t=>{const{container:r,responsiveBehaviour:n}=t,{rows:s}=r;let{columns:o}=r;const i=yi(s);i<o&&(o=i);let a=!1,c=[];const f=s.map((u,g)=>{const C=u.filter(w=>!w.invisible),y=pi({row:C,numberOfColumns:o});let m=y;return(g===0||!(u.length===1&&u.some(w=>w.type==="group")))&&(m=hi({row:y,numberOfColumns:o,mustFillWithEmpties:n}),c=c.concat(m)),m.map(w=>(w instanceof se.Label&&w.fieldForLabel&&(a=!0),e.jsx("div",{style:{...fi({item:w,responsiveBehaviour:n}),minWidth:0},children:ui({ooui:w,responsiveBehaviour:n})},w.key)))}),d=s.length===1?gi(c,o):mi(o,a),h={display:"grid",gridTemplateColumns:n?"auto":d,gap:"1rem",minHeight:0,minWidth:0};return e.jsx("div",{style:h,children:f})},{confirm:wi}=p.Modal,yt=({onOk:t,onCancel:r,lang:n})=>{wi({title:be("unsavedChanges",n),icon:e.jsx(K.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmCloseWithoutSave",n),okText:be("closeWithoutSaving",n),onOk:t,onCancel:r,cancelText:be("cancel",n)})},{error:vi}=p.Modal,Ur=t=>{vi({title:be("formHasErrors",t),icon:e.jsx(K.ExclamationCircleOutlined,{}),centered:!0,content:be("fillRequiredFields",t)})},{warning:Ci}=p.Modal,Si=(t,r,n)=>{Ci({title:t,icon:e.jsx(K.WarningOutlined,{}),centered:!0,content:r,onOk:n})},jr=Pe.default.createContext(null),bi=t=>{const{children:r,setTitle:n}=t;return e.jsx(jr.Provider,{value:{setTitle:n},children:r})},zr=t=>typeof t=="string"&&t==="true"||t==="false"?t==="true":t,xi=(t,r)=>{const n=ki(t),s=_i(n),o=Di(s,r);return[...Object.keys(o).map(c=>Ti(c,o[c],r))].reduce((c,f)=>Array.isArray(f[0])?c.concat(f):[...c,f],[])},Ti=(t,r,n)=>{var i;const s=t.split("#")[0],o=(i=n.findById(s))==null?void 0:i.type;if(o==="char"||o==="text"||o==="many2one"||o==="many2many"||o==="one2many")return[t,"ilike",r];if(o==="float"||o==="integer"||o==="float_time"||o==="progressbar"){const a=t.indexOf("#from")!==-1?">=":"<=";return[s,a,r]}else if(o==="date"){const a=t.indexOf("#from")!==-1?">=":"<=";return[s,a,r.format("YYYY-MM-DD")]}else if(o==="datetime"){const a=[];return r[0]&&a.push([s,">=",r[0]]),r[1]&&a.push([s,"<=",r[1]]),a}else return o==="selection"?[t,"in",r.map(a=>zr(a))]:[t,"=",zr(r)]},Fi=t=>Object.keys(t).filter(r=>r.indexOf("#date")!==-1),Oi=t=>{const r={...t};return Object.keys(r).forEach(n=>(n.indexOf("#time")!==-1||n.indexOf("#date")!==-1)&&delete r[n]),r},_i=t=>{const r={...Oi(t)};return Fi(t).forEach(s=>{const o=t[s],i=s.split("#")[0],a=i+"#time",c=t[a];let f,d;if(o[0]!==null&&(f=o[0].format("YYYY-MM-DD"),c&&c[0]!==null)){const u=c[0].format("HH:mm:ss");f=f+" "+u}if(o[1]!==null&&(d=o[1].format("YYYY-MM-DD"),c&&c[1]!==null)){const u=c[1].format("HH:mm:ss");d=d+" "+u}r[i+"#datetime"]=[f,d]}),r},Di=(t,r)=>{const n=Object.keys(t).filter(o=>{const i=r.findById(o);return i&&i.type==="date"});let s={...t};return n.forEach(o=>{delete s[o],t[o][0]!==null&&(s[o+"#from"]=t[o][0]),t[o][1]!==null&&(s[o+"#to"]=t[o][1])}),s},ki=t=>{const r={...t};return Object.keys(r).forEach(n=>(r[n]===void 0||r[n]===null||r[n]==="")&&delete r[n]),r},Mi=t=>{const r={};return t.forEach(n=>{Array.isArray(n)&&n[0]?r[n[0]]=!0:r[n]=!0}),Object.keys(r)},_t=(t,r)=>{const n=[...t],s=Mi(t);return r.forEach(o=>{Array.isArray(o)&&o[0]?s.includes(o[0])||n.push(o):s.includes(o)||n.push(o)}),n},wt=80,Jr=t=>{const{model:r,setSearchTreeNameSearch:n,setSelectedRowItems:s,setSearchParams:o,setSearchVisible:i,setTreeIsLoading:a,nameSearch:c,searchNameGetDoneRef:f,context:d,setActionViewTotalItems:h,treeView:u,formView:g,sorter:C,setSorter:y,setCurrentItemIndex:m,setResultsActionView:w,resultsActionView:v,domain:_,currentId:D,limit:b,setLimit:E,searchParams:k=[],setSearchValues:A}=t,[S,x]=l.useState(!1),[O,T]=l.useState(!1),[P,F]=l.useState(),[$,V]=l.useState(1),[L,M]=l.useState(0),[I,B]=l.useState(),[W,U]=l.useState([]),[q,Z]=l.useState(void 0),J=l.useRef(b||wt),N=l.useRef([]),H=l.useCallback(oe=>{w==null||w([...oe]),U([...oe])},[]),R=l.useCallback(()=>v||W,[v,W]),ie=l.useCallback(async()=>{const oe=await Y.getHandler().nameSearch({model:r,payload:c,limit:J.current,attrs:_,context:d});if(B(oe.length),h==null||h(oe.length),oe.length>0){const Se=oe.map(Ie=>Ie==null?void 0:Ie[0]),{colors:we}=ot(u),xe=await Y.getHandler().readEvalUiObjects({model:r,ids:Se,arch:u==null?void 0:u.arch,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d,attrs:we&&{colors:we}}),Ee=xe[0];N.current=[...Ee],Z(Ft(xe[1]));const Me=Ee.map(Ie=>Ie.id),He=C!==void 0?st({resultsToSort:Ee,sorter:C,fields:{...u.fields,...g.fields}}):[...N.current];H(He),Me.length>0?m==null||m(0):m==null||m(void 0)}else H([]),m==null||m(void 0);x(!1),f.current=!0},[H,f,c,r,d,_,u,g,C,m,h]),ae=l.useCallback(async oe=>{const{params:Se,newOffset:we}=oe||{},xe=_t(Se||k,_),{colors:Ee}=ot(u),{totalItems:Me,results:He,attrsEvaluated:Ie}=await Y.getHandler().searchForTree({params:xe,limit:J.current,offset:we||L,model:r,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d,attrs:Ee&&{colors:Ee}});Z(Ft(Ie)),N.current=[...He];const te=C!==void 0?st({resultsToSort:He,sorter:C,fields:{...u.fields,...g.fields}}):[...N.current];if(H(te),v&&te.length>0){const ve=te.findIndex(Ve=>D===Ve.id);ve===-1?m==null||m(0):m==null||m(ve)}else m==null||m(void 0);x(!1);const ue=await Me;B(ue),h==null||h(ue)},[m,v,H,D,r,d,_,u,g,C,h,b,L,k]),ee=l.useCallback(async oe=>{try{x(!0),a==null||a(!0),c&&!f.current?await ie():await ae(oe)}catch(Se){F(Se.message)}finally{T(!1),a==null||a(!1)}},[d,D,_,g,b,r,c,L,v,f,h,m,H,F,T,x,a,C,u]),X=l.useCallback(oe=>{y==null||y(oe);const Se=oe!==void 0?st({resultsToSort:R(),sorter:oe,fields:{...u.fields,...g.fields}}):[...N.current];H(Se)},[y,R,u,g,H]),pe=l.useCallback(oe=>{const{params:Se,searchValues:we,limit:xe,offset:Ee}=oe;S||(n==null||n(void 0),s==null||s([]),A==null||A(we),o==null||o(Se),i==null||i(!1),T(!0),F(void 0),V(1),xe&&(J.current=xe,E==null||E(xe)),Ee&&M(Ee),ee({params:Se,newOffset:Ee}))},[S,n,s,o,i,T,F,V,E,M,ee]),ye=l.useCallback(oe=>{x(!0),V(oe),M((oe-1)*b)},[x,b,M,V]),De=l.useCallback(()=>{S||(n==null||n(void 0),o==null||o([]),A==null||A({}),F(void 0),M(0),V(1),E==null||E(b||wt))},[S,n,o,F,M,V,E,b]),de=l.useCallback(async oe=>{const Se=oe[(u==null?void 0:u.field_parent)||"child_id"],we=await Y.getHandler().readObjects({model:r,ids:Se,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d});return H([...R(),...we]),Kr(ot(u),we)},[u,r,d,R,H]);return{submit:pe,clear:De,fetchResults:ee,tableRefreshing:S,searchFilterLoading:O,searchError:P,page:$,offset:L,limit:b,getResults:R,requestPageChange:ye,changeSort:X,fetchChildrenForRecord:de,colorsForResults:q,totalItems:I}},Be=Pe.default.createContext(null),Vi=t=>{const{children:r,currentView:n,title:s,setCurrentView:o,availableViews:i,formRef:a,searchTreeRef:c,onNewClicked:f,currentId:d,setCurrentId:h,setResults:u,results:g,currentItemIndex:C,setCurrentItemIndex:y,currentModel:m,sorter:w,setSorter:v,totalItems:_,setTotalItems:D,setSelectedRowItems:b,selectedRowItems:E,searchTreeNameSearch:k,setSearchTreeNameSearch:A,goToResourceId:S,limit:x}=t,[O,T]=l.useState(!1),[P,F]=l.useState(!1),[$,V]=l.useState(!1),[L,M]=l.useState(!0),[I,B]=l.useState(!0),[W,U]=l.useState([]),[q,Z]=l.useState(!1),[J,N]=l.useState([]),[H,R]=l.useState(!1),[ie,ae]=l.useState(!0),[ee,X]=l.useState(),[pe,ye]=l.useState({}),[De,de]=l.useState(x!==void 0?x:wt),[oe,Se]=l.useState(s);l.useEffect(()=>{g&&g.length>0&&!C&&(y==null||y(0),h==null||h(g[0].id))},[g]),l.useEffect(()=>{de(x!==void 0?x:wt)},[x]),l.useEffect(()=>{i.length===1?X(i[0]):i.length>1&&X(i.filter(xe=>xe.view_id!==n.view_id)[0])},[i]),l.useEffect(()=>{(ee==null?void 0:ee.view_id)===n.view_id&&i.length>1&&X(i.filter(xe=>xe.view_id!==n.view_id)[0])},[n]);const we=async()=>{var xe;return await((xe=a.current)==null?void 0:xe.submitForm())};return e.jsx(Be.Provider,{value:{title:oe,currentView:n,setCurrentView:o,availableViews:i,formIsSaving:O,setFormIsSaving:T,formHasChanges:P,setFormHasChanges:F,formRef:a,searchTreeRef:c,onFormSave:we,onNewClicked:f,currentId:d,setCurrentId:h,currentItemIndex:C,setCurrentItemIndex:y,results:g,setResults:u,currentModel:m,removingItem:$,setRemovingItem:V,formIsLoading:L,setFormIsLoading:M,treeIsLoading:I,setTreeIsLoading:B,attachments:W,setAttachments:U,selectedRowItems:E,setSelectedRowItems:b,duplicatingItem:q,setDuplicatingItem:Z,setSearchParams:N,searchParams:J,searchVisible:H,setSearchVisible:R,sorter:w,setSorter:v,totalItems:_,setTotalItems:D,searchTreeNameSearch:k,setSearchTreeNameSearch:A,setGraphIsLoading:ae,graphIsLoading:ie,previousView:ee,setPreviousView:X,goToResourceId:S,searchValues:pe,setSearchValues:ye,limit:De,setLimit:de,setTitle:Se},children:r})},qe=Pe.default.createContext(null),Ei=t=>{const{children:r,openAction:n,openRelate:s,openDefaultActionForModel:o,openShortcut:i,activeKey:a,onChangeTab:c,onRemoveTab:f,tabs:d}=t,[h,u]=l.useState(),[g,C]=l.useState();return e.jsx(qe.Provider,{value:{openAction:n,openRelate:s,openDefaultActionForModel:o,activeKey:a,openShortcut:i,onChangeTab:c,onRemoveTab:f,tabs:d,currentId:g,currentView:h,setCurrentId:C,setCurrentView:u},children:r})},lt=Pe.default.createContext(null),Zr=async t=>{var r;for(let n=0;n<t.length;n++)await((r=t==null?void 0:t[n])==null?void 0:r.call(t))},Ii=(t,r)=>{const{children:n,globalValues:s={}}=t,o=l.useRef(),i=l.useRef(),[a,c]=l.useState(!1),f=l.useContext(qe),{openAction:d}=f||{},h=l.useRef([]),{t:u}=l.useContext(ge);l.useImperativeHandle(r,()=>({openActionModal:b}));const[g,C]=l.useState(!1),[y,m]=l.useState({context:{}});async function w(A){const{reportData:S,fields:x,values:O,context:T={}}=A,{context:P,model:F,datas:$={},report_name:V,type:L}=S;if(L!=="ir.actions.report.xml"){$e(`${L} action not supported`);return}const{ids:M}=$||{};let I=M||[];const B=typeof P=="string"?se.parseContext({context:P,fields:x,values:O}):P;try{const W=await Y.getHandler().createReport({model:F,name:V,datas:$,ids:I,context:{...T,...B}});c(!0),i.current=!0,o.current=setInterval(()=>{v(W)},1e3)}catch(W){i.current=!1,clearInterval(o.current),$e(W),c(!1)}}async function v(A){let S;try{if(S=await Y.getHandler().getReport({id:A}),S.state&&i.current===!0){i.current=!1,clearInterval(o.current),c(!1);const x=await nt(S.result);Tt(S.result,x.mime)}}catch(x){i.current=!1,clearInterval(o.current),c(!1),$e(x.exception||x)}}async function _({actionData:A,fields:S,values:x,context:O,onRefreshParentValues:T}){const{type:P}=A;return h.current.push(T),P==="ir.actions.report.xml"?await w({reportData:A,fields:S,values:x,context:O}):P==="ir.actions.act_window"?await D({actionData:A,fields:S,values:x,context:O}):($e(`${P} action not supported`),{})}async function D({actionData:A,fields:S={},values:x={},context:O={}}){var V;let T=A;A.res_model||(T=(await Y.getHandler().readObjects({model:"ir.actions.act_window",ids:[parseInt(A.id)],context:O}))[0]);const F={...typeof(T==null?void 0:T.context)=="string"?se.parseContext({context:T.context,fields:S,values:{...x,...s}}):T.context,...O};let $=[];if(T.domain&&($=await Y.getHandler().evalDomain({domain:T.domain,values:at({fields:S,values:{...x,...s}}),fields:S,context:F})),T.target==="new"){const L=await Y.getHandler().getView({model:T.res_model,type:"form",id:((V=T==null?void 0:T.view_id)==null?void 0:V[0])||void 0,context:F});return b({domain:$,model:T.res_model,formView:L,context:F}),{}}else{const{initialView:L,views:M}=await $i({model:T.res_model,context:F,view_mode:T.view_mode,views:T.views});return d==null||d({target:"current",context:F,domain:$,model:T.res_model,views:M,title:T.name,initialView:L,action_id:T.id,action_type:T.type}),{closeParent:!0}}}function b({domain:A,model:S,formView:x,context:O,actionData:T}){g?E({domain:A,model:S,formView:x,context:O,actionData:T}):(m({domain:A,model:S,context:O,formView:x,actionData:T}),C(!0))}async function E({domain:A,model:S,formView:x,context:O,actionData:T}){m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0}),C(!1),await new Promise(P=>setTimeout(P,300)),m({domain:A,model:S,context:O,formView:x,actionData:T}),C(!0)}async function k(){Zr(h.current),h.current=[],C(!1),m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0})}return e.jsx(e.Fragment,{children:e.jsx(lt.Provider,{value:{processAction:_,globalValues:s},children:e.jsxs(e.Fragment,{children:[n,e.jsx(p.Modal,{title:u("generatingReport"),open:a,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(p.Spin,{})}),e.jsx(dt,{buttonModal:!0,parentContext:y.context,model:y.model,formView:y.formView,visible:g,onSubmitSucceed:k,onCancel:()=>{Zr(h.current),h.current=[],C(!1),m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0})},showFooter:!1,actionDomain:y.domain,isMenuAction:(y==null?void 0:y.actionData)!==void 0,actionData:y==null?void 0:y.actionData})]})})})};async function $i({views:t,view_mode:r,model:n,context:s,view_id:o}){const i=[];let a;if(t)for(const c of t){const f=await Y.getHandler().getView({model:n,type:c[1],id:c[0],context:s});i.push([f.view_id,c[1]])}else{const c=r.split(",");for(const f of c){const d=await Y.getHandler().getView({model:n,type:f,context:s});i.push([d.view_id,f])}}if(t&&t.length>0){const[c,f]=t[0];a={id:c,type:f}}else if(o)a={id:o,type:r.split(",")[0]};else{const c=r.split(",")[0],[f]=i.find(([d,h])=>h===c);a={id:f,type:c}}return{views:i,initialView:a}}const Xr=l.forwardRef(Ii),Ai=({error:t,className:r})=>{let n,s="error";if(typeof t=="string"&&t.indexOf(" -- ")!==-1&&t.indexOf(`
|
|
17
|
+
`;var Xe=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function zo(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}var Mr=zo,Jo=typeof Xe=="object"&&Xe&&Xe.Object===Object&&Xe,Zo=Jo,Xo=Zo,Qo=typeof self=="object"&&self&&self.Object===Object&&self,Ro=Xo||Qo||Function("return this")(),Vr=Ro,es=Vr,ts=function(){return es.Date.now()},rs=ts,ns=/\s/;function os(t){for(var r=t.length;r--&&ns.test(t.charAt(r)););return r}var ss=os,is=ss,as=/^\s+/;function ls(t){return t&&t.slice(0,is(t)+1).replace(as,"")}var cs=ls,ds=Vr,us=ds.Symbol,Er=us,Ir=Er,$r=Object.prototype,fs=$r.hasOwnProperty,hs=$r.toString,mt=Ir?Ir.toStringTag:void 0;function ps(t){var r=fs.call(t,mt),n=t[mt];try{t[mt]=void 0;var s=!0}catch{}var o=hs.call(t);return s&&(r?t[mt]=n:delete t[mt]),o}var gs=ps,ms=Object.prototype,ys=ms.toString;function ws(t){return ys.call(t)}var vs=ws,Ar=Er,Cs=gs,Ss=vs,bs="[object Null]",xs="[object Undefined]",Lr=Ar?Ar.toStringTag:void 0;function Ts(t){return t==null?t===void 0?xs:bs:Lr&&Lr in Object(t)?Cs(t):Ss(t)}var Fs=Ts;function Os(t){return t!=null&&typeof t=="object"}var _s=Os,Ds=Fs,ks=_s,Ms="[object Symbol]";function Vs(t){return typeof t=="symbol"||ks(t)&&Ds(t)==Ms}var Es=Vs,Is=cs,Nr=Mr,$s=Es,Pr=0/0,As=/^[-+]0x[0-9a-f]+$/i,Ls=/^0b[01]+$/i,Ns=/^0o[0-7]+$/i,Ps=parseInt;function Bs(t){if(typeof t=="number")return t;if($s(t))return Pr;if(Nr(t)){var r=typeof t.valueOf=="function"?t.valueOf():t;t=Nr(r)?r+"":r}if(typeof t!="string")return t===0?t:+t;t=Is(t);var n=Ls.test(t);return n||Ns.test(t)?Ps(t.slice(2),n?2:8):As.test(t)?Pr:+t}var Hs=Bs,Ks=Mr,jt=rs,Br=Hs,Ys="Expected a function",Ws=Math.max,qs=Math.min;function Gs(t,r,n){var s,o,i,a,c,f,d=0,h=!1,u=!1,g=!0;if(typeof t!="function")throw new TypeError(Ys);r=Br(r)||0,Ks(n)&&(h=!!n.leading,u="maxWait"in n,i=u?Ws(Br(n.maxWait)||0,r):i,g="trailing"in n?!!n.trailing:g);function C(k){var L=s,x=o;return s=o=void 0,d=k,a=t.apply(x,L),a}function y(k){return d=k,c=setTimeout(v,r),h?C(k):a}function m(k){var L=k-f,x=k-d,b=r-L;return u?qs(b,i-x):b}function w(k){var L=k-f,x=k-d;return f===void 0||L>=r||L<0||u&&x>=i}function v(){var k=jt();if(w(k))return O(k);c=setTimeout(v,m(k))}function O(k){return c=void 0,g&&s?C(k):(s=o=void 0,a)}function D(){c!==void 0&&clearTimeout(c),d=0,s=f=o=c=void 0}function S(){return c===void 0?a:O(jt())}function V(){var k=jt(),L=w(k);if(s=arguments,o=this,f=k,L){if(c===void 0)return y(f);if(u)return clearTimeout(c),c=setTimeout(v,r),C(f)}return c===void 0&&(c=setTimeout(v,r)),a}return V.cancel=D,V.flush=S,V}var Us=Gs;function js(t){const n=Buffer.from(t,"base64").length/1e3;return`${Math.round((n+Number.EPSILON)*100)/100} KB`}async function nt(t){const r=await co.fileTypeFromBuffer(Buffer.from(t,"base64"));return r||{mime:"text/plain",ext:"txt"}}const Hr=t=>new Promise((r,n)=>{const s=new FileReader;s.readAsDataURL(t),s.onload=o=>r(o.target.result.split(",")[1]),s.onerror=o=>n(o)});function Ft(t,r){for(var n=atob(t),s=new Array(n.length),o=0;o<n.length;o++)s[o]=n.charCodeAt(o);var i=new Uint8Array(s),a=new Blob([i],{type:r+";base64"}),c=URL.createObjectURL(a);window.open(c)}const Kr=t=>{const{ooui:r}=t,{required:n,id:s}=r,o=We(s);return o?e.jsx(o,{}):e.jsx(me,{required:n,...t,children:e.jsx(zs,{ooui:r})})},zs=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o}=r,i=l.useRef(null),{t:a}=l.useContext(ge),c=u=>{s==null||s(u)};async function f(){const u=await nt(n),g=`data:${u==null?void 0:u.mime};base64,${n}`,C=document.createElement("a");C.href=g,C.download=`image.${u==null?void 0:u.ext}`,C.click()}async function d(u){u.stopPropagation(),u.preventDefault();const g=u.target.files[0],C=await Hr(g);c(C)}function h(){c(void 0)}return e.jsxs(e.Fragment,{children:[e.jsxs(p.Row,{gutter:8,wrap:!1,justify:"center",children:[n&&e.jsx("img",{src:`data:image/*;base64,${n}`,style:{maxWidth:"100px"}}),e.jsx("input",{type:"file",id:"file",ref:i,accept:"image/*",style:{display:"none"},onChange:d})]}),e.jsx(p.Row,{gutter:8,wrap:!1,justify:"center",className:"pt-5",children:e.jsxs(p.Space,{children:[e.jsx(Le,{tooltip:a("uploadNewImage"),icon:e.jsx(H.FolderOpenOutlined,{}),disabled:o,onClick:()=>{i.current.click()}}),e.jsx(Le,{tooltip:a("download"),disabled:!n,onClick:f,icon:e.jsx(H.DownloadOutlined,{})}),e.jsx(Le,{tooltip:a("clear"),disabled:o||!n,onClick:h,icon:e.jsx(H.ClearOutlined,{})})]})})]})},Js=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(Zs,{})})},Zs=t=>{const{value:r,onChange:n}=t;if(!r)return null;try{JSON.parse(r)}catch(s){return console.log(s),null}return e.jsx(fo.GridUi,{inputJson:r,onChange:s=>{n&&n(s)}})},ot=t=>{const r=t.arch,n=t.fields,s=new oe.Tree(n);return s.parse(r),s},Xs=(t,r,n)=>t.columns.map(o=>{const i=o.type,a=o.id,c=r==null?void 0:r[i];let f;return c&&(f=d=>c(d,a,o,n)),{key:a,dataIndex:a,title:o.label,render:f,sorter:(d,h)=>{var C,y;let u=d[a]||"",g=h[a]||"";return i==="many2one"&&(u=((C=d[a])==null?void 0:C.value)||"",g=((y=h[a])==null?void 0:y.value)||""),u<g?-1:u>g?1:0}}}),Yr=(t,r)=>r.map(s=>{const o={};return Object.keys(s).map(i=>{if(i==="id")o[i]=s[i];else{const a=t.findById(i);a instanceof oe.Reference||a instanceof oe.Selection?o[i]=s[i]:a instanceof oe.Many2one?o[i]=s[i]&&Array.isArray(s[i])&&s[i].length===2&&{model:a.relation,id:s[i][0],value:s[i][1]}:a instanceof oe.Boolean?o[i]=s[i]:a?o[i]=s[i]===!1?"":s[i]:o[i]=s[i]}}),o});function Ot(t){if(!t)return;const r={};return t.forEach(n=>{r[n.id]=n.colors}),r}function st({resultsToSort:t,sorter:r,fields:n}){if(!r)return t;const{id:s,desc:o}=r,i=o===!1?"ascend":"descend",a=n[s].type,c=(f,d)=>{var g,C;let h=f[s]||"",u=d[s]||"";return a==="many2one"&&(h=((g=f[s])==null?void 0:g[1])||"",u=((C=d[s])==null?void 0:C[1])||""),h===u?0:i==="ascend"?h>u?1:-1:h<u?1:-1};return t.sort(c)}const zt=async t=>{var y;const{items:r,model:n,formView:s,treeView:o,context:i,currentView:a={}}=t,c=r.filter(m=>m.operation!=="original"),f=r.filter(m=>m.operation==="original").map(m=>m.id),d={form:s.fields,tree:o.fields};let h=[],u;if(a==="tree"&&(o==null?void 0:o.arch)){const m=(y=ot(o))==null?void 0:y.colors,w=await Y.getHandler().readEvalUiObjects({model:n,ids:f,arch:o==null?void 0:o.arch,fields:o.fields,context:i,attrs:m&&{colors:m}});h=w[0],u=Ot(w[1])}else h=await Y.getHandler().readObjects({model:n,ids:f,fields:d[a],context:i});const g=h.map(m=>{const w={};return Object.keys(m).forEach(v=>{(d[a].hasOwnProperty(v)||v==="id")&&(w[v]=m[v])}),w});return[r.map(m=>{const w=g.find(O=>O.id===m.id),v={...m};return a==="form"?v.values=w:a==="tree"&&(v.treeValues=w),v}).concat(c),u]},Qs=t=>{const r=t.filter(n=>n.id&&n.id<0).map(n=>n.id);return r.length===0?-1:Math.min(...r)-1},Rs=(t,r)=>{const n={};return Object.keys(t).forEach(s=>{var o;r.hasOwnProperty(s)&&(r[s].type==="one2many"||r[s].type==="many2many")&&t[s]&&((o=t[s])==null?void 0:o.items)?n[s]=t[s].items.filter(i=>i.operation!=="pendingRemove"):n[s]=t[s]}),n},ei=t=>{const{ooui:r}=t,{relation:n,context:s,views:o}=r,[i,a]=l.useState(!0),[c,f]=l.useState(),[d,h]=l.useState(new Map),u=l.useContext(ke),{getContext:g}=u||{};Re.default(()=>{y()},[r]);const C=async m=>o&&o[m]?o[m]:await Y.getHandler().getView({model:n,type:m,context:{...g==null?void 0:g(),...s}}),y=async()=>{a(!0),f(void 0);try{const m=await C("form"),w=await C("tree");d.set("form",m),d.set("tree",w),h(d)}catch(m){f(m)}finally{a(!1)}};return i?e.jsx(p.Spin,{}):c?e.jsx(p.Alert,{className:"mt-10",message:c,type:"error",banner:!0}):e.jsx(me,{type:"array",...t,children:e.jsx(ti,{ooui:r,views:d})})},ti=t=>{const{value:r,views:n,ooui:s,onChange:o}=t,{items:i=[]}=r||{},[a,c]=l.useState(!1),[f,d]=l.useState(),[h,u]=l.useState(!1),[g,C]=l.useState(),{relation:y,context:m,readOnly:w,summaryField:v,titleField:O}=s,D=i.filter(x=>x.values),S=l.useContext(ke),{getContext:V}=S||{};Re.default(()=>{L()},[i]);const k=x=>{o==null||o({items:x})};async function L(){c(!0),d(void 0);try{const[x]=await zt({treeView:{fields:n.get("tree").fields,arch:n.get("tree").arch},formView:{fields:n.get("form").fields},model:y,items:i,context:{...V==null?void 0:V(),...m},currentView:"form"});k(x)}catch(x){d(x)}finally{c(!1)}}return f?e.jsx(p.Alert,{className:"mt-10",message:f,type:"error",banner:!0}):a?e.jsx(p.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(p.Timeline,{style:{padding:"1rem"},children:D.map((x,b)=>{var _,T;return e.jsx("div",{children:e.jsxs(p.Timeline.Item,{children:[e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{C(D.find(P=>x.id===P.id)),u(!0)},children:e.jsx("strong",{children:(_=x.values)==null?void 0:_[O]})}),e.jsx("br",{}),e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{C(D.find(P=>x.id===P.id)),u(!0)},children:(T=x.values)==null?void 0:T[v]})]},b)},b)})}),e.jsx(dt,{formView:n.get("form"),model:y,id:g==null?void 0:g.id,values:g==null?void 0:g.values,defaultValues:g==null?void 0:g.defaultValues,visible:h,onSubmitSucceed:()=>{u(!1)},parentContext:{...V==null?void 0:V(),...m},onCancel:()=>{u(!1)},readOnly:w,postSaveAction:L})]})},{useToken:ri}=p.theme,ni=t=>{const{ooui:r}=t;return e.jsx(me,{ooui:r,children:e.jsx(oi,{ooui:r})})},oi=t=>{const{token:r}=ri(),{ooui:n,value:s}=t,o=e.jsxs(e.Fragment,{children:[e.jsxs("span",{children:[n.label," "]}),n.tooltip&&e.jsx(p.Tooltip,{title:n.tooltip,children:e.jsx(H.QuestionCircleOutlined,{className:"pr-1 text-xs",style:{color:r.colorPrimaryBg}})})]}),i=We(n.icon);let a=s;n.selectionValues.size?a=n.selectionValues.get(s):Array.isArray(s)&&(a=s[1]);const c=e.jsx(p.Statistic,{title:o,prefix:i&&e.jsx(i,{}),suffix:n.suffix,value:a});return n.card?e.jsx(p.Card,{children:c}):c},si=(t,r)=>{if(!r)return t;const n={};return Object.keys(t).forEach(s=>{if(r[s]===void 0)n[s]=t[s];else if(!(t[s]===!1&&r[s].type!=="boolean"))if(r[s].type==="boolean"){const o=t[s];o===0?n[s]=!1:o===1?n[s]=!0:n[s]=t[s]}else n[s]=t[s]}),n},it=(t,r)=>si(t,r),Jt=({source:t,target:r,fields:n})=>{const s={};return Object.keys(r).forEach(o=>{var a,c;if(n[o]?n[o].type==="one2many"||n[o].type==="many2many":!1){const f=JSON.stringify(t[o]),d=JSON.stringify(r[o]);if(f===d)return;(((c=(a=r[o])==null?void 0:a.items)==null?void 0:c.filter(u=>u.operation!=="original"))||[]).length>0&&(s[o]=r[o])}else if(Array.isArray(r[o]))if(t[o]===void 0)s[o]=r[o];else if(n[o].type==="many2one")if(Array.isArray(t[o])){const f=JSON.stringify(t[o]),d=JSON.stringify(r[o]);f!==d&&(s[o]=r[o])}else{const f=t[o],[d]=r[o];f!==d&&(s[o]=r[o])}else{const f=JSON.stringify(t[o]),d=JSON.stringify(r[o]);f!==d&&(s[o]=r[o])}else t[o]!==r[o]&&(r[o]===void 0?s[o]=null:s[o]=r[o])}),s},ii=({changedFields:t,formOoui:r,types:n})=>t.map(o=>{var a;const i=(a=r==null?void 0:r.findById(o))==null?void 0:a.type;return n.includes(i)}).some(o=>o===!0),ai=({fieldsDomain:t,fields:r})=>{const n={};return Object.keys(r).forEach(s=>{n[s]=r[s],t[s]&&(n[s].domain=t[s])}),n},li=t=>{const r={};return!t||!Array.isArray(t)||(t==null?void 0:t.length)===0?{}:(t.forEach(n=>{(n==null?void 0:n[1])==="="&&(r[n[0]]=n[2])}),r)},ci=({onChangeFieldActionArgs:t,values:r,parentValues:n={}})=>{const s={};return t.forEach(o=>{const i=o.split("");if(o==="True")s[o]=!0;else if(o==="False")s[o]=!1;else if(r[o])s[o]=r[o];else if(i[0]==="'"&&i[i.length-1]==="'"&&i.filter(a=>a==="'").length===2)s[o]=o.replace(/'/g,"");else if(i.includes("'"))s[o]=o;else if(o.indexOf("parent.")!==-1){const a=o.replace("parent.","");s[o]=n[a]||!1}else s[o]=!1}),s},Wr=t=>{const r={primary:[],secondary:[]};return t.forEach(n=>{!n||(r.primary=r.primary.concat(n.primary),r.secondary=r.secondary.concat(n.secondary))}),{primary:r.primary.filter(qr),secondary:r.secondary.filter(qr)}};function qr(t,r,n){return n.indexOf(t)===r}const at=({values:t,fields:r})=>{let n={};return Object.keys(t).forEach(s=>{const o=t[s];r[s]&&r[s].type==="many2one"&&o&&Array.isArray(o)&&o.length===2?n[s]=o[0]:n[s]=o}),n},_t=t=>{let r=0;t=t.toString().padEnd(10,"0");for(let o=0;o<t.length;o++)r=t.charCodeAt(o)+((r<<5)-r);let n="#";for(let o=0;o<3;o++){var s=r>>o*8&255;n+=("00"+s.toString(16)).slice(-2)}return n},Gr=t=>{function r(a){return parseInt(a,16)||parseInt(a)}function n(a){return r(a)/255<=.03928?r(a)/255/12.92:Math.pow((r(a)/255+.055)/1.055,2.4)}function s(a){return .2126*n(a.substr(1,2))+.7152*n(a.substr(3,2))+.0722*n(a.substr(-2))}function o(a,c){const f=s(a),d=s(c);return(Math.max(f,d)+.05)/(Math.min(f,d)+.05)}function i(a){const c=o(a,"#ffffff"),f=o(a,"#000000");return c>f?"#ffffff":"#000000"}return i(t)},di=t=>{const r=_t(t);return{backgroundColor:r,textColor:Gr(r)}},Ur=t=>{const{ooui:r}=t;return e.jsx(me,{type:"array",...t,children:e.jsx(ui,{ooui:r})})},ui=t=>{const{value:r,ooui:n,onChange:s}=t,{items:o=[]}=r||{},i=o.filter(k=>k.operation!=="pendingRemove").map(k=>k.id),[a,c]=l.useState([]),[f,d]=l.useState(),[h,u]=l.useState(!1),{relation:g,context:C,readOnly:y,field:m}=n,w=l.useContext(ke),{getContext:v}=w||{};Re.default(()=>{D()},[o]);const O=k=>{s==null||s({items:k})};async function D(){u(!0);let k=[];try{if(y&&(k=[["id","in",i]]),n.domain){const b=await Y.getHandler().evalDomain({domain:n.domain,values:at({fields:w==null?void 0:w.getFields(),values:w.getPlainValues()}),fields:w==null?void 0:w.getFields(),context:w.getContext()});k=[...k,...b]}const x=(await Y.getHandler().search({model:g,params:k,fields:[m],context:{...v==null?void 0:v(),...C}})).map(b=>{const _=b[m];let T=_;return Array.isArray(_)&&(T=_[1]),{label:T,value:b.id}});c(x)}catch(L){d(L)}finally{u(!1)}}const S=k=>{const L=o.map(b=>k.includes(b.id)?b.operation=="pendingRemove"?{...b,operation:"pendingLink"}:b:{id:b.id,operation:"pendingRemove"}),x=L.map(b=>b.id);k.filter(b=>!x.includes(b)).map(b=>{L.push({id:b,operation:"pendingLink"})}),O(L)},V=k=>{const{label:L,closable:x,onClose:b}=k,_=P=>{P.preventDefault(),P.stopPropagation()},T=di(L);return e.jsx(p.Tag,{color:T.backgroundColor,onMouseDown:_,style:{margin:"5px",color:T.textColor},closable:x,onClose:b,children:L})};return f?e.jsx(p.Alert,{className:"mt-10",message:f,type:"error",banner:!0}):e.jsx(e.Fragment,{children:e.jsx("div",{className:"flex flex-row",children:e.jsx(p.Select,{mode:"multiple",value:a.length?i:[],tagRender:V,bordered:!y,disabled:y,options:a,onChange:S,loading:h})})})},fi=t=>{switch(t){case"form":return ct;case"tree":return Ct;case"notebook":return xn;case"group":return nr;case"label":return gt;case"char":return Gt;case"text":return Tn;case"button":return qt;case"buttonGroup":return xr;case"selection":return Ut;case"many2one":return pn;case"boolean":return kr;case"integer":return vt;case"float":return Xt;case"progressbar":return tn;case"date":return kn;case"datetime":return Mn;case"time":return En;case"one2many":case"one2many_list":case"many2many":return Sn;case"separator":return Fn;case"reference":return In;case"binary":return $n;case"image":return Kr;case"url":return Hn;case"email":return Kn;case"float_time":return bn;case"fiber_grid":return Js;case"timeline":return ei;case"indicator":return ni;case"tags":return Ur;case"tag":return sn;case"multicheckbox":return zn;case"markdown":return Jn;case"radio":return Zn;case"switch":return Xn;case"steps":return Qn;case"codeeditor":return Rn;default:return}},hi=t=>{const{ooui:r}=t,{type:n}=r,s=fi(n);return s?Be.default.createElement(s,t):null},pi=({item:t,responsiveBehaviour:r})=>({gridColumnStart:"span "+(r?1:t.colspan)}),gi=({row:t,mustFillWithEmpties:r,numberOfColumns:n})=>{const s=[];let o=0;const i=a=>a+1===t.length&&o<n&&!r;return t.map((a,c)=>{if(o+=a.colspan,i(c)){const f=n-o;a.colspan=a.colspan+f,o+=f}if(s.push(a),i(c)){const f=n-o;for(let d=0;d<f;d+=1)s.push(new oe.Label({string:""}))}}),s},mi=({row:t,numberOfColumns:r})=>t.map(n=>(n._mustExpand&&(n.colspan=r),n)),yi=(t,r)=>{const n=t.map(s=>s instanceof oe.Label&&s.fieldForLabel||s instanceof oe.Container?"auto":"1fr");if(n.length<r){const s=r-n.length;for(let o=0;o<s;o++)n.push("1fr")}return n.join(" ")},wi=(t,r)=>{const n=r?"1fr":"auto",s="auto";let o="";for(let i=0;i<t;i++)o+=i%2?n:s,i+1<t&&(o+=" ");return o},vi=t=>t.map(n=>n.reduce((s,o)=>s+o.colspan,0)).reduce((n,s)=>Math.max(n,s)),Zt=t=>{const{container:r,responsiveBehaviour:n}=t,{rows:s}=r;let{columns:o}=r;const i=vi(s);i<o&&(o=i);let a=!1,c=[];const f=s.map((u,g)=>{const C=u.filter(w=>!w.invisible),y=mi({row:C,numberOfColumns:o});let m=y;return(g===0||!(u.length===1&&u.some(w=>w.type==="group")))&&(m=gi({row:y,numberOfColumns:o,mustFillWithEmpties:n}),c=c.concat(m)),m.map(w=>(w instanceof oe.Label&&w.fieldForLabel&&(a=!0),e.jsx("div",{style:{...pi({item:w,responsiveBehaviour:n}),minWidth:0},children:hi({ooui:w,responsiveBehaviour:n})},w.key)))}),d=s.length===1?yi(c,o):wi(o,a),h={display:"grid",gridTemplateColumns:n?"auto":d,gap:"1rem",minHeight:0,minWidth:0};return e.jsx("div",{style:h,children:f})},{confirm:Ci}=p.Modal,yt=({onOk:t,onCancel:r,lang:n})=>{Ci({title:Se("unsavedChanges",n),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:Se("confirmCloseWithoutSave",n),okText:Se("closeWithoutSaving",n),onOk:t,onCancel:r,cancelText:Se("cancel",n)})},{error:Si}=p.Modal,jr=t=>{Si({title:Se("formHasErrors",t),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:Se("fillRequiredFields",t)})},{warning:bi}=p.Modal,xi=(t,r,n)=>{bi({title:t,icon:e.jsx(H.WarningOutlined,{}),centered:!0,content:r,onOk:n})},zr=Be.default.createContext(null),Ti=t=>{const{children:r,setTitle:n}=t;return e.jsx(zr.Provider,{value:{setTitle:n},children:r})},Jr=t=>typeof t=="string"&&t==="true"||t==="false"?t==="true":t,Fi=(t,r)=>{const n=Vi(t),s=ki(n),o=Mi(s,r);return[...Object.keys(o).map(c=>Oi(c,o[c],r))].reduce((c,f)=>Array.isArray(f[0])?c.concat(f):[...c,f],[])},Oi=(t,r,n)=>{var i;const s=t.split("#")[0],o=(i=n.findById(s))==null?void 0:i.type;if(o==="char"||o==="text"||o==="many2one"||o==="many2many"||o==="one2many")return[t,"ilike",r];if(o==="float"||o==="integer"||o==="float_time"||o==="progressbar"){const a=t.indexOf("#from")!==-1?">=":"<=";return[s,a,r]}else if(o==="date"){const a=t.indexOf("#from")!==-1?">=":"<=";return[s,a,r.format("YYYY-MM-DD")]}else if(o==="datetime"){const a=[];return r[0]&&a.push([s,">=",r[0]]),r[1]&&a.push([s,"<=",r[1]]),a}else return o==="selection"?[t,"in",r.map(a=>Jr(a))]:[t,"=",Jr(r)]},_i=t=>Object.keys(t).filter(r=>r.indexOf("#date")!==-1),Di=t=>{const r={...t};return Object.keys(r).forEach(n=>(n.indexOf("#time")!==-1||n.indexOf("#date")!==-1)&&delete r[n]),r},ki=t=>{const r={...Di(t)};return _i(t).forEach(s=>{const o=t[s],i=s.split("#")[0],a=i+"#time",c=t[a];let f,d;if(o[0]!==null&&(f=o[0].format("YYYY-MM-DD"),c&&c[0]!==null)){const u=c[0].format("HH:mm:ss");f=f+" "+u}if(o[1]!==null&&(d=o[1].format("YYYY-MM-DD"),c&&c[1]!==null)){const u=c[1].format("HH:mm:ss");d=d+" "+u}r[i+"#datetime"]=[f,d]}),r},Mi=(t,r)=>{const n=Object.keys(t).filter(o=>{const i=r.findById(o);return i&&i.type==="date"});let s={...t};return n.forEach(o=>{delete s[o],t[o][0]!==null&&(s[o+"#from"]=t[o][0]),t[o][1]!==null&&(s[o+"#to"]=t[o][1])}),s},Vi=t=>{const r={...t};return Object.keys(r).forEach(n=>(r[n]===void 0||r[n]===null||r[n]==="")&&delete r[n]),r},Ei=t=>{const r={};return t.forEach(n=>{Array.isArray(n)&&n[0]?r[n[0]]=!0:r[n]=!0}),Object.keys(r)},Dt=(t,r)=>{const n=[...t],s=Ei(t);return r.forEach(o=>{Array.isArray(o)&&o[0]?s.includes(o[0])||n.push(o):s.includes(o)||n.push(o)}),n},wt=80,Zr=t=>{const{model:r,setSearchTreeNameSearch:n,setSelectedRowItems:s,setSearchParams:o,setSearchVisible:i,setTreeIsLoading:a,nameSearch:c,searchNameGetDoneRef:f,context:d,setActionViewTotalItems:h,treeView:u,formView:g,sorter:C,setSorter:y,setCurrentItemIndex:m,setResultsActionView:w,resultsActionView:v,domain:O,currentId:D,limit:S,setLimit:V,searchParams:k=[],setSearchValues:L}=t,[x,b]=l.useState(!1),[_,T]=l.useState(!1),[P,I]=l.useState(),[F,E]=l.useState(1),[A,M]=l.useState(0),[B,$]=l.useState(),[W,z]=l.useState([]),[q,X]=l.useState(void 0),U=l.useRef(S||wt),N=l.useRef([]),K=l.useCallback(de=>{w==null||w([...de]),z([...de])},[]),Z=l.useCallback(()=>v||W,[v,W]),se=l.useCallback(async()=>{const de=await Y.getHandler().nameSearch({model:r,payload:c,limit:U.current,attrs:O,context:d});if($(de.length),h==null||h(de.length),de.length>0){const ae=de.map(Ie=>Ie==null?void 0:Ie[0]),{colors:we}=ot(u),De=await Y.getHandler().readEvalUiObjects({model:r,ids:ae,arch:u==null?void 0:u.arch,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d,attrs:we&&{colors:we}}),be=De[0];N.current=[...be],X(Ot(De[1]));const Ve=be.map(Ie=>Ie.id),Ke=C!==void 0?st({resultsToSort:be,sorter:C,fields:{...u.fields,...g.fields}}):[...N.current];K(Ke),Ve.length>0?m==null||m(0):m==null||m(void 0)}else K([]),m==null||m(void 0);b(!1),f.current=!0},[K,f,c,r,d,O,u,g,C,m,h]),ce=l.useCallback(async de=>{const{params:ae,newOffset:we}=de||{},De=Dt(ae||k,O),{colors:be}=ot(u),{totalItems:Ve,results:Ke,attrsEvaluated:Ie}=await Y.getHandler().searchForTree({params:De,limit:U.current,offset:we||A,model:r,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d,attrs:be&&{colors:be}});X(Ot(Ie)),N.current=[...Ke];const te=C!==void 0?st({resultsToSort:Ke,sorter:C,fields:{...u.fields,...g.fields}}):[...N.current];if(K(te),v&&te.length>0){const Ee=te.findIndex(ye=>D===ye.id);Ee===-1?m==null||m(0):m==null||m(Ee)}else m==null||m(void 0);b(!1);const Te=await Ve;$(Te),h==null||h(Te)},[m,v,K,D,r,d,O,u,g,C,h,S,A,k]),Q=l.useCallback(async de=>{try{b(!0),a==null||a(!0),c&&!f.current?await se():await ce(de)}catch(ae){I(ae.message)}finally{T(!1),a==null||a(!1)}},[d,D,O,g,S,r,c,A,v,f,h,m,K,I,T,b,a,C,u]),R=l.useCallback(de=>{y==null||y(de);const ae=de!==void 0?st({resultsToSort:Z(),sorter:de,fields:{...u.fields,...g.fields}}):[...N.current];K(ae)},[y,Z,u,g,K]),ue=l.useCallback(de=>{const{params:ae,searchValues:we,limit:De,offset:be}=de;x||(n==null||n(void 0),s==null||s([]),L==null||L(we),o==null||o(ae),i==null||i(!1),T(!0),I(void 0),E(1),De&&(U.current=De,V==null||V(De)),be&&M(be),Q({params:ae,newOffset:be}))},[x,n,s,o,i,T,I,E,V,M,Q]),ve=l.useCallback(de=>{b(!0),E(de),M((de-1)*S)},[b,S,M,E]),Me=l.useCallback(()=>{x||(n==null||n(void 0),o==null||o([]),L==null||L({}),I(void 0),M(0),E(1),V==null||V(S||wt))},[x,n,o,I,M,E,V,S]),xe=l.useCallback(async de=>{const ae=de[(u==null?void 0:u.field_parent)||"child_id"],we=await Y.getHandler().readObjects({model:r,ids:ae,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d});return K([...Z(),...we]),Yr(ot(u),we)},[u,r,d,Z,K]);return{submit:ue,clear:Me,fetchResults:Q,tableRefreshing:x,searchFilterLoading:_,searchError:P,page:F,offset:A,limit:S,getResults:Z,requestPageChange:ve,changeSort:R,fetchChildrenForRecord:xe,colorsForResults:q,totalItems:B}},He=Be.default.createContext(null),Ii=t=>{const{children:r,currentView:n,title:s,setCurrentView:o,availableViews:i,formRef:a,searchTreeRef:c,onNewClicked:f,currentId:d,setCurrentId:h,setResults:u,results:g,currentItemIndex:C,setCurrentItemIndex:y,currentModel:m,sorter:w,setSorter:v,totalItems:O,setTotalItems:D,setSelectedRowItems:S,selectedRowItems:V,searchTreeNameSearch:k,setSearchTreeNameSearch:L,goToResourceId:x,limit:b}=t,[_,T]=l.useState(!1),[P,I]=l.useState(!1),[F,E]=l.useState(!1),[A,M]=l.useState(!0),[B,$]=l.useState(!0),[W,z]=l.useState([]),[q,X]=l.useState(!1),[U,N]=l.useState([]),[K,Z]=l.useState(!1),[se,ce]=l.useState(!0),[Q,R]=l.useState(),[ue,ve]=l.useState({}),[Me,xe]=l.useState(b!==void 0?b:wt),[de,ae]=l.useState(s);l.useEffect(()=>{g&&g.length>0&&!C&&(y==null||y(0),h==null||h(g[0].id))},[g]),l.useEffect(()=>{xe(b!==void 0?b:wt)},[b]),l.useEffect(()=>{i.length===1?R(i[0]):i.length>1&&R(i.filter(De=>De.view_id!==n.view_id)[0])},[i]),l.useEffect(()=>{(Q==null?void 0:Q.view_id)===n.view_id&&i.length>1&&R(i.filter(De=>De.view_id!==n.view_id)[0])},[n]);const we=async()=>{var De;return await((De=a.current)==null?void 0:De.submitForm())};return e.jsx(He.Provider,{value:{title:de,currentView:n,setCurrentView:o,availableViews:i,formIsSaving:_,setFormIsSaving:T,formHasChanges:P,setFormHasChanges:I,formRef:a,searchTreeRef:c,onFormSave:we,onNewClicked:f,currentId:d,setCurrentId:h,currentItemIndex:C,setCurrentItemIndex:y,results:g,setResults:u,currentModel:m,removingItem:F,setRemovingItem:E,formIsLoading:A,setFormIsLoading:M,treeIsLoading:B,setTreeIsLoading:$,attachments:W,setAttachments:z,selectedRowItems:V,setSelectedRowItems:S,duplicatingItem:q,setDuplicatingItem:X,setSearchParams:N,searchParams:U,searchVisible:K,setSearchVisible:Z,sorter:w,setSorter:v,totalItems:O,setTotalItems:D,searchTreeNameSearch:k,setSearchTreeNameSearch:L,setGraphIsLoading:ce,graphIsLoading:se,previousView:Q,setPreviousView:R,goToResourceId:x,searchValues:ue,setSearchValues:ve,limit:Me,setLimit:xe,setTitle:ae},children:r})},Ge=Be.default.createContext(null),$i=t=>{const{children:r,openAction:n,openRelate:s,openDefaultActionForModel:o,openShortcut:i,activeKey:a,onChangeTab:c,onRemoveTab:f,tabs:d}=t,[h,u]=l.useState(),[g,C]=l.useState();return e.jsx(Ge.Provider,{value:{openAction:n,openRelate:s,openDefaultActionForModel:o,activeKey:a,openShortcut:i,onChangeTab:c,onRemoveTab:f,tabs:d,currentId:g,currentView:h,setCurrentId:C,setCurrentView:u},children:r})},lt=Be.default.createContext(null),Xr=async t=>{var r;for(let n=0;n<t.length;n++)await((r=t==null?void 0:t[n])==null?void 0:r.call(t))},Ai=(t,r)=>{const{children:n,globalValues:s={}}=t,o=l.useRef(),i=l.useRef(),[a,c]=l.useState(!1),f=l.useContext(Ge),{openAction:d}=f||{},h=l.useRef([]),{t:u}=l.useContext(ge);l.useImperativeHandle(r,()=>({openActionModal:S}));const[g,C]=l.useState(!1),[y,m]=l.useState({context:{}});async function w(L){const{reportData:x,fields:b,values:_,context:T={}}=L,{context:P,model:I,datas:F={},report_name:E,type:A}=x;if(A!=="ir.actions.report.xml"){Ae(`${A} action not supported`);return}const{ids:M}=F||{};let B=M||[];const $=typeof P=="string"?oe.parseContext({context:P,fields:b,values:_}):P;try{const W=await Y.getHandler().createReport({model:I,name:E,datas:F,ids:B,context:{...T,...$}});c(!0),i.current=!0,o.current=setInterval(()=>{v(W)},1e3)}catch(W){i.current=!1,clearInterval(o.current),Ae(W),c(!1)}}async function v(L){let x;try{if(x=await Y.getHandler().getReport({id:L}),x.state&&i.current===!0){i.current=!1,clearInterval(o.current),c(!1);const b=await nt(x.result);Ft(x.result,b.mime)}}catch(b){i.current=!1,clearInterval(o.current),c(!1),Ae(b.exception||b)}}async function O({actionData:L,fields:x,values:b,context:_,onRefreshParentValues:T}){const{type:P}=L;return h.current.push(T),P==="ir.actions.report.xml"?await w({reportData:L,fields:x,values:b,context:_}):P==="ir.actions.act_window"?await D({actionData:L,fields:x,values:b,context:_}):(Ae(`${P} action not supported`),{})}async function D({actionData:L,fields:x={},values:b={},context:_={}}){var E;let T=L;L.res_model||(T=(await Y.getHandler().readObjects({model:"ir.actions.act_window",ids:[parseInt(L.id)],context:_}))[0]);const I={...typeof(T==null?void 0:T.context)=="string"?oe.parseContext({context:T.context,fields:x,values:{...b,...s}}):T.context,..._};let F=[];if(T.domain&&(F=await Y.getHandler().evalDomain({domain:T.domain,values:at({fields:x,values:{...b,...s}}),fields:x,context:I})),T.target==="new"){const A=await Y.getHandler().getView({model:T.res_model,type:"form",id:((E=T==null?void 0:T.view_id)==null?void 0:E[0])||void 0,context:I});return S({domain:F,model:T.res_model,formView:A,context:I}),{}}else{const{initialView:A,views:M}=await Li({model:T.res_model,context:I,view_mode:T.view_mode,views:T.views});return d==null||d({target:"current",context:I,domain:F,model:T.res_model,views:M,title:T.name,initialView:A,action_id:T.id,action_type:T.type}),{closeParent:!0}}}function S({domain:L,model:x,formView:b,context:_,actionData:T}){g?V({domain:L,model:x,formView:b,context:_,actionData:T}):(m({domain:L,model:x,context:_,formView:b,actionData:T}),C(!0))}async function V({domain:L,model:x,formView:b,context:_,actionData:T}){m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0}),C(!1),await new Promise(P=>setTimeout(P,300)),m({domain:L,model:x,context:_,formView:b,actionData:T}),C(!0)}async function k(){Xr(h.current),h.current=[],C(!1),m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0})}return e.jsx(e.Fragment,{children:e.jsx(lt.Provider,{value:{processAction:O,globalValues:s},children:e.jsxs(e.Fragment,{children:[n,e.jsx(p.Modal,{title:u("generatingReport"),open:a,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(p.Spin,{})}),e.jsx(dt,{buttonModal:!0,parentContext:y.context,model:y.model,formView:y.formView,visible:g,onSubmitSucceed:k,onCancel:()=>{Xr(h.current),h.current=[],C(!1),m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0})},showFooter:!1,actionDomain:y.domain,isMenuAction:(y==null?void 0:y.actionData)!==void 0,actionData:y==null?void 0:y.actionData})]})})})};async function Li({views:t,view_mode:r,model:n,context:s,view_id:o}){const i=[];let a;if(t)for(const c of t){const f=await Y.getHandler().getView({model:n,type:c[1],id:c[0],context:s});i.push([f.view_id,c[1]])}else{const c=r.split(",");for(const f of c){const d=await Y.getHandler().getView({model:n,type:f,context:s});i.push([d.view_id,f])}}if(t&&t.length>0){const[c,f]=t[0];a={id:c,type:f}}else if(o)a={id:o,type:r.split(",")[0]};else{const c=r.split(",")[0],[f]=i.find(([d,h])=>h===c);a={id:f,type:c}}return{views:i,initialView:a}}const Qr=l.forwardRef(Ai),Ni=({error:t,className:r})=>{let n,s="error";if(typeof t=="string"&&t.indexOf(" -- ")!==-1&&t.indexOf(`
|
|
18
18
|
|
|
19
|
-
`)!==-1){const{message:o,type:i,title:a}=Tr(t);n=e.jsx(Bt.Interweave,{content:`${a}<br />${o}`}),s=i}else n=t.message?JSON.stringify(t.message):JSON.stringify(t);return e.jsx(p.Alert,{className:r,message:n,type:s,banner:!0})},Li=800;function Ni(t,r){const{model:n,id:s,onCancel:o,onSubmitSucceed:i,showFooter:a=!1,getDataFromAction:c=!1,onFieldsChange:f,onSubmitError:d,readOnly:h=!1,mustClearAfterSave:u=!1,submitMode:g="api",values:C,formView:y,postSaveAction:m,insideButtonModal:w=!1,parentContext:v={},actionDomain:_,visible:D=!0,rootForm:b=!1,defaultValues:E,forcedValues:k={}}=t,{t:A,lang:S}=l.useContext(ge),[x,O]=l.useState(!1),[T,P]=l.useState(),[F,$]=l.useState(),[V]=p.Form.useForm(),[L,M]=l.useState(),[I,B]=l.useState(),W=l.useContext(jr),[U,q]=l.useState(),[Z,J]=l.useState(!1),N=l.useRef(),H=l.useRef({}),R=l.useRef({}),ie=l.useRef(!1),ae=l.useRef(!1),ee=U<Li,X=l.useContext(_e),{activeId:pe,getPlainValues:ye}=X||{},De=l.useContext(Be),{setFormIsSaving:de=void 0,setFormHasChanges:oe=void 0,setCurrentId:Se=void 0,setFormIsLoading:we=void 0,setAttachments:xe=void 0,title:Ee=void 0,setTitle:Me=void 0}=(b?De:{})||{},He=l.useContext(lt),{processAction:Ie,globalValues:te}=He||{};l.useImperativeHandle(r,()=>({submitForm:Nt,getFields:Fe,getValues:ke,getPlainValues:Ge,getContext:Ue,fetchValues:ze,cancelUnsavedChanges:Re,clearAndReload:()=>{N.current=void 0,$(void 0),je()}})),l.useEffect(()=>{if(P(void 0),!(!n&&!y)){if(!D){N.current=void 0,$(void 0);return}(s===void 0&&I||s!==void 0&&I&&s<0)&&(N.current=void 0,$(void 0)),je()}},[s,n,C,y,D]),l.useEffect(()=>{Z&&(dr({elementHasLostFocus:!0}),J(!1))},[Z]);const ue=(z,j,re)=>{oe==null||oe(!1),de==null||de(!1),i==null||i(z,j,re),Se==null||Se(z)},ve=()=>{de==null||de(!1),o==null||o()},Ve=z=>{de==null||de(!1),d==null||d(z)};function ce(){return s||N.current}function Fe(){return I}function ke(){const z={...le(I),...Q()};for(const j in z)z[j]===void 0&&delete z[j];return z}function Ge(){const z=ke(),j=Fe();let re={};return Object.keys(z).forEach(ne=>{const Oe=z[ne];j[ne]&&j[ne].type==="many2one"&&Oe&&Array.isArray(Oe)&&Oe.length===2?re[ne]=Oe[0]:j[ne]&&(j[ne].type==="one2many"||j[ne].type==="many2many")&&Oe&&Oe.items?re[ne]=Oe.items.filter(tt=>tt.operation!=="pendingRemove").map(tt=>tt.id):re[ne]=Oe}),re}function Ke(){const z={...le(I)};for(const j in z)z[j]===void 0&&delete z[j];return z}function Ue(){return{...v,...F==null?void 0:F.context}}function Q(){return{id:ce(),active_id:ce(),active_ids:[ce()],parent_id:pe,...te}}const fe=async z=>{const j=ce()?F==null?void 0:F.context:{};return await Y.getHandler().defaultGet({model:n,fields:z,context:{...v,...j},extraValues:E})},Te=()=>Object.keys(zt({source:H.current,target:le(I),fields:I})).length!==0,le=z=>{const j=V.getFieldsValue(!0);return it(j,z)},Ce=(z,j)=>{Lt({values:{...it(V.getFieldsValue(!0),I),[z]:j},fields:I,reset:!1})},he=z=>V.getFieldsValue(!0)[z];async function Ae(){try{return await V.validateFields(),!1}catch{return p.message.error(A("fillRequiredFields")),!0}}const je=async()=>{P(void 0),we==null||we(!0);let z;try{y?z={arch:y.arch,fields:y.fields}:z=await dc();const{fields:j,arch:re}=z;B(j),M(re),await ze({fields:j,arch:re})}catch(j){P(j!=null&&j.message?j.message+j.stack:j),we==null||we(!1)}},ze=async z=>{let j,re,ne,Oe;we==null||we(!0),P(void 0),z?(re=z.fields,ne=z.arch):(re=I,ne=L),C?j=C:{values:j,defaultGetCalled:Oe}=await uc({fields:re,arch:ne}),_&&(j={...ii(_),...j}),H.current=it(j,re),Lt({values:j,fields:re,reset:!0,isDefaultGet:Oe}),Pt({fields:re,arch:ne,values:j}),we==null||we(!1),oe==null||oe(!1),Oe&&J(!0)},Re=async()=>new Promise(async z=>{Te()?yt({lang:S,onOk:()=>{ve==null||ve(),z(!0)},onCancel:()=>{z(!1)}}):(ve==null||ve(),z(!0))}),dc=async()=>{if(c){const z=await Y.getHandler().getActionStringForModel(n);return(await Y.getHandler().getViewsForAction({action:z,context:v})).views.get("form")}return await Y.getHandler().getView({model:n,type:"form",context:v})},Lt=({values:z,fields:j,reset:re,isDefaultGet:ne=!1})=>{const tt={...re?{}:V.getFieldsValue(!0),...z},ur=it(tt,j),Tc=Object.keys(j).map(fr=>{const Fc=ur[fr]!==void 0?ur[fr]:void 0;return{name:fr,touched:!1,value:Fc}});ne||(R.current=ur),V.setFields(Tc)},uc=async({fields:z,arch:j})=>{let re={},ne=!1;if(ce()){re=(await Y.getHandler().readObjects({model:n,ids:[ce()],fields:z,context:v}))[0];const Oe=await Y.getHandler().search({params:[["res_model","=",n],["res_id","=",ce()]],fields:["id","name"],context:Ue(),model:"ir.attachment"});xe==null||xe(Oe)}else xe==null||xe([]),re=await fe(z),ne=!0;return{values:re,defaultGetCalled:ne}},fc=async z=>{const{callOnSubmitSucceed:j=!0}=z||{};if(ce()){const re=zt({source:H.current,target:le(I),fields:I});await Y.getHandler().update({model:n,id:ce(),values:{...re,...k},fields:I,context:{...v,...F==null?void 0:F.context}}),H.current=le(I)}else{const re=le(I),ne=await Y.getHandler().create({model:n,values:{...re,...k},fields:I,context:{...v,...F==null?void 0:F.context}});N.current=ne,H.current=re}m&&await m([ce()]),!w&&j&&(ue==null||ue(ce(),ke(),Ke()))},hc=async z=>{const{callOnSubmitSucceed:j=!0}=z||{};!w&&j&&(ue==null||ue(ce(),ke(),Ke()))},Nt=async z=>{let j=!1;const{callOnSubmitSucceed:re=!0}=z||{};if(ae.current=!0,P(void 0),!Te()&&ce()&&re)return ae.current=!1,oe==null||oe(!1),ve==null||ve(),{succeed:!0,id:ce()};if(await Ae())return ae.current=!1,Ur(S),{succeed:!1,id:ce()};O(!0),de==null||de(!0);try{g==="api"?await fc(z):await hc(z),u&&(N.current=void 0,Lt({values:{},fields:I,reset:!0})),await ze(),j=!0,p.message.success(A("savedRegisters"))}catch(ne){ae.current=!1,O(!1),de==null||de(!1),Ve==null||Ve(ne),p.message.error(A("errorWhileSavingForm")),P(ne!=null&&ne.message?ne.message:ne)}finally{ae.current=!1,de==null||de(!1),O(!1)}return{succeed:j,id:ce()}},Pt=({fields:z,arch:j,values:re})=>{var Oe;const ne=new se.Form(z);ne.parse(j,{readOnly:h,values:Xs({...re,...Q()},z)}),$(ne),ne.string&&ne.string!==Ee&&(Me==null||Me(ne.string)),W&&ne.string&&((Oe=W.setTitle)==null||Oe.call(W,ne.string))},dr=async({elementHasLostFocus:z=!1})=>{if(ae.current)return;const j=zt({source:R.current,target:le(I),fields:I}),re=Object.keys(j);if(re.length!==0){if(oi({changedFields:re,formOoui:F,types:["text","codeeditor","email","url","char","float","float_time","integer","many2one"]})&&z!==!0)return;{const ne=it(V.getFieldsValue(!0),I);R.current=ne,f==null||f(ne),oe==null||oe(!0),gc(re)}}},pc=qs(dr,100),gc=async z=>{try{for(let j=0;j<z.length;j+=1){const re=z[j];await mc(re)}}catch(j){$e(j)}},mc=async z=>{const j=F==null?void 0:F.onChangeFields[z];if(!j){Pt({fields:I,arch:L,values:le(I)});return}const re=ai({values:{...le(I),context:{...v,...F==null?void 0:F.context}},parentValues:ye==null?void 0:ye(),onChangeFieldActionArgs:j.args}),ne=await Y.getHandler().executeOnChange({model:n,action:j.method,ids:ce()?[ce()]:[],payload:re,fields:I});if(ne.value){const Oe={...le(I),...ne.value};Pt({fields:I,arch:L,values:Oe}),Lt({values:Oe,fields:I,reset:!1})}if(ne.warning&&ne.warning.title&&ne.warning.message&&!ie.current){const{title:Oe,message:tt}=ne.warning;ie.current=!0,Si(Oe,tt,()=>{ie.current=!1})}if(ne.domain&&Object.keys(ne.domain).length>0){const Oe=si({fieldsDomain:ne.domain,fields:I});Pt({fields:Oe,arch:L,values:le(Oe)}),B(Oe)}};async function yc({action:z,context:j}){const re=await Y.getHandler().execute({model:n,action:z,payload:[ce()],context:{...j,...F==null?void 0:F.context,...v}});if(typeof re=="object"&&re!==null&&Object.keys(re).length===0&&w)ue==null||ue(ce(),ke(),Ke());else if(re.type&&re.type==="ir.actions.act_window_close")ue==null||ue(ce(),ke(),Ke());else if(re.type){let ne={};re.context&&(ne=se.parseContext({context:re.context,fields:I,values:ke()})),await Rn({actionData:re,context:{...j,...ne}})}else await ze()}async function wc({action:z}){const j=await Y.getHandler().executeWorkflow({model:n,action:z,payload:ce()});j.type&&j.type==="ir.actions.act_window_close"?ue==null||ue(ce(),ke(),Ke()):await ze()}async function vc({action:z,context:j}){const re=(await Y.getHandler().readObjects({model:"ir.actions.actions",ids:[parseInt(z)],context:v}))[0];await Rn({actionData:re,context:j})}async function Rn({actionData:z,context:j}){const{closeParent:re}=await(Ie==null?void 0:Ie({actionData:z,fields:I,values:ke(),context:{...v,...F==null?void 0:F.context,...j},onRefreshParentValues:()=>{ze()}}))||{};!b&&re&&(ue==null||ue(ce(),ke(),Ke()))}function Cc(){dr({elementHasLostFocus:!0})}async function Sc({type:z,action:j,context:re}){if(z==="cancel"){ve==null||ve();return}if(await Ae()){Ur(S);return}try{(Te()||ce()===void 0)&&await Nt({callOnSubmitSucceed:!1}),z==="object"?await yc({action:j,context:re}):z==="workflow"?await wc({action:j}):z==="action"&&await vc({action:j,context:re})}catch(ne){$e(ne)}}const bc=()=>!F&&!T?e.jsx(p.Spin,{}):!n&&!y||!D?null:e.jsx(e.Fragment,{children:e.jsx(Do,{getValues:ke,getPlainValues:Ge,getFields:Fe,domain:_,activeId:s,activeModel:n,setFieldValue:Ce,getFieldValue:he,executeButtonAction:Sc,getContext:Ue,submitForm:Nt,fetchValues:ze,formHasChanges:Te,elementHasLostFocus:Cc,children:e.jsx(p.Form,{form:V,onFieldsChange:()=>{pc({elementHasLostFocus:!1})},component:!1,children:F&&e.jsx(Jt,{container:F.container,responsiveBehaviour:ee})})})}),xc=()=>e.jsxs(e.Fragment,{children:[e.jsx(p.Divider,{}),e.jsx(p.Row,{justify:"end",children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(K.CloseOutlined,{}),disabled:x,onClick:async()=>{await Re()},children:"Cancel"}),e.jsx(p.Button,{disabled:x||h,loading:x,icon:e.jsx(K.CheckOutlined,{}),onClick:async()=>{await Nt()},type:"primary",children:"OK"})]})})]});return D?e.jsx(Kt.default,{bounds:!0,onResize:z=>{var j;q((j=z.bounds)==null?void 0:j.width)},children:({measureRef:z})=>e.jsxs("div",{className:"pb-2",ref:z,children:[T&&e.jsx(Ai,{className:"mt-5 mb-10",error:T}),bc(),a&&xc()]})}):null}const ct=l.forwardRef(Ni),dt=t=>{const{visible:r,id:n,title:s,buttonModal:o=!1,onCancel:i,isMenuAction:a=!1,actionData:c,...f}=t,{modalWidth:d}=xt(),[h,u]=l.useState(s),[g,C]=l.useState(!1),[y,m]=l.useState();l.useEffect(()=>{a&&w()},[c,a]);async function w(){const{action_id:D,res_id:b,action_type:E,view_id:k}=c,A=await Y.getHandler().isShortcutFavorite({action_id:D,action_type:E,view_id:k,res_id:b||!1});C(A!==!1),A!==!1&&m(A)}async function v(){if(g&&y)await Y.getHandler().removeFavourite({shortcut_id:y});else{const{action_id:D,res_id:b,action_type:E,view_id:k}=c;await Y.getHandler().addFavourite({action_id:D,action_type:E,view_id:k,res_id:b||!1})}C(!g)}function _(){return e.jsxs(p.Row,{align:"middle",children:[e.jsx(p.Col,{children:e.jsx(p.Button,{type:g?"primary":"default",icon:g?e.jsx(K.StarFilled,{style:{color:"white"}}):e.jsx(K.StarOutlined,{}),style:{width:30},onClick:v})}),e.jsx(p.Col,{style:{paddingLeft:10},children:h})]})}return e.jsx(bi,{setTitle:u,children:e.jsx(p.Modal,{title:a?_():h,centered:!0,width:d,open:r,footer:null,destroyOnClose:!0,onCancel:i,maskClosable:!1,children:e.jsx(ct,{id:n,showFooter:!0,insideButtonModal:o,onCancel:i,...f})})})},Pi=t=>e.jsx(me,{...t,layout:"vertical",children:e.jsx(p.DatePicker.RangePicker,{allowEmpty:[!0,!0],format:"DD/MM/YYYY"})}),Bi=t=>{const{ooui:r,showLabel:n=!1}=t,{label:s,id:o}=r,i=[new se.Field({name:o+"#date",label:""}),new se.Field({name:o+"#time",label:""})];return e.jsxs(e.Fragment,{children:[n&&e.jsx(gt,{ooui:new se.Label({name:o+"_label",string:s,help:r.tooltip,fieldForLabel:o}),align:"left"}),e.jsxs(p.Row,{align:"bottom",className:"p-0",children:[e.jsx(p.Col,{className:"mr-2",children:e.jsx(me,{...t,ooui:i[0],showLabel:!1,children:e.jsx(p.DatePicker.RangePicker,{className:"w-60",allowEmpty:[!0,!0],format:"DD/MM/YYYY"})})}),e.jsx(p.Col,{children:e.jsx(me,{...t,ooui:i[1],showLabel:!1,children:e.jsx(p.TimePicker.RangePicker,{className:"w-60",allowEmpty:[!0,!0],format:"HH:mm"})})})]})]})},{useToken:Hi}=p.theme,Zt=t=>{const{ooui:r}=t,{id:n,decimalDigits:s,readOnly:o,required:i}=r,{token:a}=Hi(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,f=l.useContext(_e),{elementHasLostFocus:d}=f||{};return e.jsx(me,{required:i,type:"number",...t,children:e.jsx(p.InputNumber,{disabled:o,className:"w-full",style:c,id:n,precision:s,formatter:h=>`${h}`.replace(/[^0-9\.\-]+/g,""),defaultValue:0,decimalSeparator:".",onBlur:d})})},{useToken:Ki}=p.theme,vt=t=>{const{ooui:r,onChange:n}=t,{id:s,readOnly:o,required:i}=r,{token:a}=Ki(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,f=l.useContext(_e),{elementHasLostFocus:d}=f||{};return e.jsx(me,{required:i,type:"number",...t,children:e.jsx(p.InputNumber,{id:s,className:"w-full ",disabled:o,formatter:h=>`${h}`.replace(/[^0-9\-]+/g,""),onChange:h=>{const u=h;n==null||n(u)},defaultValue:0,onBlur:d,precision:0,style:c})})};function Yi(t){const{ooui:r,showLabel:n}=t,{id:s,label:o,tooltip:i}=r,a=r instanceof se.Integer?vt:Zt,c=f=>e.jsx(a,{ooui:{...r,id:s+f,label:"",tooltip:void 0},layout:"vertical"});return e.jsxs(e.Fragment,{children:[n&&e.jsx(gt,{ooui:new se.Label({name:s+"_label",string:o,help:i,fieldForLabel:s}),align:"left"}),e.jsxs(p.Row,{align:"bottom",className:"mt-0",wrap:!1,children:[e.jsx(p.Col,{children:c("#from")}),e.jsx(p.Col,{className:"pb-1",children:e.jsx("span",{className:"pl-2 pr-2 h-full",children:" - "})}),e.jsx(p.Col,{children:c("#to")})]})]})}const{defaultAlgorithm:Wi,defaultSeed:qi}=p.theme,Gi=Wi(qi),{Option:Ui}=p.Select,ji=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(zi,{...t})})},zi=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,required:a}=r,c=Array.from(o.entries()),f=c&&c.length&&c.filter(u=>{const[g]=u;return s?!s.includes(g):!0}).map(u=>{const[g,C]=u;return e.jsx(Ui,{value:C,children:C},g)}),d=a&&!i?Ji:p.Select;function h(u){const g=u.map(C=>{const y=c.find(([m,w])=>C===w);return y&&y[0]});if(g.length===0){n==null||n(void 0);return}n==null||n(g)}return e.jsx(d,{disabled:i,onChange:h,value:s==null?void 0:s.map(u=>o.get(u)),mode:"multiple",showArrow:!0,children:f})},Ji=pt.default(p.Select)`
|
|
19
|
+
`)!==-1){const{message:o,type:i,title:a}=Fr(t);n=e.jsx(Ht.Interweave,{content:`${a}<br />${o}`}),s=i}else n=t.message?JSON.stringify(t.message):JSON.stringify(t);return e.jsx(p.Alert,{className:r,message:n,type:s,banner:!0})},Pi=800;function Bi(t,r){const{model:n,id:s,onCancel:o,onSubmitSucceed:i,showFooter:a=!1,getDataFromAction:c=!1,onFieldsChange:f,onSubmitError:d,readOnly:h=!1,mustClearAfterSave:u=!1,submitMode:g="api",values:C,formView:y,postSaveAction:m,insideButtonModal:w=!1,parentContext:v={},actionDomain:O,visible:D=!0,rootForm:S=!1,defaultValues:V,forcedValues:k={},parentWidth:L}=t,{t:x,lang:b}=l.useContext(ge),[_,T]=l.useState(!1),[P,I]=l.useState(),[F,E]=l.useState(),[A]=p.Form.useForm(),[M,B]=l.useState(),[$,W]=l.useState(),z=l.useContext(zr),[q,X]=l.useState(),[U,N]=l.useState(!1),K=l.useRef(),Z=l.useRef({}),se=l.useRef({}),ce=l.useRef(!1),Q=l.useRef(!1),ue=(L!==void 0?L:q)<Pi,ve=l.useContext(ke),{activeId:Me,getPlainValues:xe}=ve||{},de=l.useContext(He),{setFormIsSaving:ae=void 0,setFormHasChanges:we=void 0,setCurrentId:De=void 0,setFormIsLoading:be=void 0,setAttachments:Ve=void 0,title:Ke=void 0,setTitle:Ie=void 0}=(S?de:{})||{},te=l.useContext(lt),{processAction:Te,globalValues:Ee}=te||{};l.useImperativeHandle(r,()=>({submitForm:Pt,getFields:qe,getValues:$e,getPlainValues:Je,getContext:le,fetchValues:et,cancelUnsavedChanges:eo,clearAndReload:()=>{K.current=void 0,E(void 0),Qe()}})),l.useEffect(()=>{if(I(void 0),!(!n&&!y)){if(!D){K.current=void 0,E(void 0);return}(s===void 0&&$||s!==void 0&&$&&s<0)&&(K.current=void 0,E(void 0)),Qe()}},[s,n,C,y,D]),l.useEffect(()=>{U&&(ur({elementHasLostFocus:!0}),N(!1))},[U]);const ye=(J,j,re)=>{we==null||we(!1),ae==null||ae(!1),i==null||i(J,j,re),De==null||De(J)},Ce=()=>{ae==null||ae(!1),o==null||o()},Fe=J=>{ae==null||ae(!1),d==null||d(J)};function fe(){return s||K.current}function qe(){return $}function $e(){const J={...ie($),...Oe()};for(const j in J)J[j]===void 0&&delete J[j];return J}function Je(){const J=$e(),j=qe();let re={};return Object.keys(J).forEach(ne=>{const _e=J[ne];j[ne]&&j[ne].type==="many2one"&&_e&&Array.isArray(_e)&&_e.length===2?re[ne]=_e[0]:j[ne]&&(j[ne].type==="one2many"||j[ne].type==="many2many")&&_e&&_e.items?re[ne]=_e.items.filter(tt=>tt.operation!=="pendingRemove").map(tt=>tt.id):re[ne]=_e}),re}function ee(){const J={...ie($)};for(const j in J)J[j]===void 0&&delete J[j];return J}function le(){return{...v,...F==null?void 0:F.context}}function Oe(){return{id:fe(),active_id:fe(),active_ids:[fe()],parent_id:Me,...Ee}}const he=async J=>{const j=fe()?F==null?void 0:F.context:{};return await Y.getHandler().defaultGet({model:n,fields:J,context:{...v,...j},extraValues:V})},pe=()=>Object.keys(Jt({source:Z.current,target:ie($),fields:$})).length!==0,ie=J=>{const j=A.getFieldsValue(!0);return it(j,J)},Pe=(J,j)=>{Nt({values:{...it(A.getFieldsValue(!0),$),[J]:j},fields:$,reset:!1})},Ze=J=>A.getFieldsValue(!0)[J];async function xt(){try{return await A.validateFields(),!1}catch{return p.message.error(x("fillRequiredFields")),!0}}const Qe=async()=>{I(void 0),be==null||be(!0);let J;try{y?J={arch:y.arch,fields:y.fields}:J=await fc();const{fields:j,arch:re}=J;W(j),B(re),await et({fields:j,arch:re})}catch(j){I(j!=null&&j.message?j.message+j.stack:j),be==null||be(!1)}},et=async J=>{let j,re,ne,_e;be==null||be(!0),I(void 0),J?(re=J.fields,ne=J.arch):(re=$,ne=M),C?j=C:{values:j,defaultGetCalled:_e}=await hc({fields:re,arch:ne}),O&&(j={...li(O),...j}),Z.current=it(j,re),Nt({values:j,fields:re,reset:!0,isDefaultGet:_e}),Bt({fields:re,arch:ne,values:j}),be==null||be(!1),we==null||we(!1),_e&&N(!0)},eo=async()=>new Promise(async J=>{pe()?yt({lang:b,onOk:()=>{Ce==null||Ce(),J(!0)},onCancel:()=>{J(!1)}}):(Ce==null||Ce(),J(!0))}),fc=async()=>{if(c){const J=await Y.getHandler().getActionStringForModel(n);return(await Y.getHandler().getViewsForAction({action:J,context:v})).views.get("form")}return await Y.getHandler().getView({model:n,type:"form",context:v})},Nt=({values:J,fields:j,reset:re,isDefaultGet:ne=!1})=>{const tt={...re?{}:A.getFieldsValue(!0),...J},fr=it(tt,j),Oc=Object.keys(j).map(hr=>{const _c=fr[hr]!==void 0?fr[hr]:void 0;return{name:hr,touched:!1,value:_c}});ne||(se.current=fr),A.setFields(Oc)},hc=async({fields:J,arch:j})=>{let re={},ne=!1;if(fe()){re=(await Y.getHandler().readObjects({model:n,ids:[fe()],fields:J,context:v}))[0];const _e=await Y.getHandler().search({params:[["res_model","=",n],["res_id","=",fe()]],fields:["id","name"],context:le(),model:"ir.attachment"});Ve==null||Ve(_e)}else Ve==null||Ve([]),re=await he(J),ne=!0;return{values:re,defaultGetCalled:ne}},pc=async J=>{const{callOnSubmitSucceed:j=!0}=J||{};if(fe()){const re=Jt({source:Z.current,target:ie($),fields:$});await Y.getHandler().update({model:n,id:fe(),values:{...re,...k},fields:$,context:{...v,...F==null?void 0:F.context}}),Z.current=ie($)}else{const re=ie($),ne=await Y.getHandler().create({model:n,values:{...re,...k},fields:$,context:{...v,...F==null?void 0:F.context}});K.current=ne,Z.current=re}m&&await m([fe()]),!w&&j&&(ye==null||ye(fe(),$e(),ee()))},gc=async J=>{const{callOnSubmitSucceed:j=!0}=J||{};!w&&j&&(ye==null||ye(fe(),$e(),ee()))},Pt=async J=>{let j=!1;const{callOnSubmitSucceed:re=!0}=J||{};if(Q.current=!0,I(void 0),!pe()&&fe()&&re)return Q.current=!1,we==null||we(!1),Ce==null||Ce(),{succeed:!0,id:fe()};if(await xt())return Q.current=!1,jr(b),{succeed:!1,id:fe()};T(!0),ae==null||ae(!0);try{g==="api"?await pc(J):await gc(J),u&&(K.current=void 0,Nt({values:{},fields:$,reset:!0})),await et(),j=!0,p.message.success(x("savedRegisters"))}catch(ne){Q.current=!1,T(!1),ae==null||ae(!1),Fe==null||Fe(ne),p.message.error(x("errorWhileSavingForm")),I(ne!=null&&ne.message?ne.message:ne)}finally{Q.current=!1,ae==null||ae(!1),T(!1)}return{succeed:j,id:fe()}},Bt=({fields:J,arch:j,values:re})=>{var _e;const ne=new oe.Form(J);ne.parse(j,{readOnly:h,values:Rs({...re,...Oe()},J)}),E(ne),ne.string&&ne.string!==Ke&&(Ie==null||Ie(ne.string)),z&&ne.string&&((_e=z.setTitle)==null||_e.call(z,ne.string))},ur=async({elementHasLostFocus:J=!1})=>{if(Q.current)return;const j=Jt({source:se.current,target:ie($),fields:$}),re=Object.keys(j);if(re.length!==0){if(ii({changedFields:re,formOoui:F,types:["text","codeeditor","email","url","char","float","float_time","integer","many2one"]})&&J!==!0)return;{const ne=it(A.getFieldsValue(!0),$);se.current=ne,f==null||f(ne),we==null||we(!0),yc(re)}}},mc=Us(ur,100),yc=async J=>{try{for(let j=0;j<J.length;j+=1){const re=J[j];await wc(re)}}catch(j){Ae(j)}},wc=async J=>{const j=F==null?void 0:F.onChangeFields[J];if(!j){Bt({fields:$,arch:M,values:ie($)});return}const re=ci({values:{...ie($),context:{...v,...F==null?void 0:F.context}},parentValues:xe==null?void 0:xe(),onChangeFieldActionArgs:j.args}),ne=await Y.getHandler().executeOnChange({model:n,action:j.method,ids:fe()?[fe()]:[],payload:re,fields:$});if(ne.value){const _e={...ie($),...ne.value};Bt({fields:$,arch:M,values:_e}),Nt({values:_e,fields:$,reset:!1})}if(ne.warning&&ne.warning.title&&ne.warning.message&&!ce.current){const{title:_e,message:tt}=ne.warning;ce.current=!0,xi(_e,tt,()=>{ce.current=!1})}if(ne.domain&&Object.keys(ne.domain).length>0){const _e=ai({fieldsDomain:ne.domain,fields:$});Bt({fields:_e,arch:M,values:ie(_e)}),W(_e)}};async function vc({action:J,context:j}){const re=await Y.getHandler().execute({model:n,action:J,payload:[fe()],context:{...j,...F==null?void 0:F.context,...v}});if(typeof re=="object"&&re!==null&&Object.keys(re).length===0&&w)ye==null||ye(fe(),$e(),ee());else if(re.type&&re.type==="ir.actions.act_window_close")ye==null||ye(fe(),$e(),ee());else if(re.type){let ne={};re.context&&(ne=oe.parseContext({context:re.context,fields:$,values:$e()})),await to({actionData:re,context:{...j,...ne}})}else await et()}async function Cc({action:J}){const j=await Y.getHandler().executeWorkflow({model:n,action:J,payload:fe()});j.type&&j.type==="ir.actions.act_window_close"?ye==null||ye(fe(),$e(),ee()):await et()}async function Sc({action:J,context:j}){const re=(await Y.getHandler().readObjects({model:"ir.actions.actions",ids:[parseInt(J)],context:v}))[0];await to({actionData:re,context:j})}async function to({actionData:J,context:j}){const{closeParent:re}=await(Te==null?void 0:Te({actionData:J,fields:$,values:$e(),context:{...v,...F==null?void 0:F.context,...j},onRefreshParentValues:()=>{et()}}))||{};!S&&re&&(ye==null||ye(fe(),$e(),ee()))}function bc(){ur({elementHasLostFocus:!0})}async function xc({type:J,action:j,context:re}){if(J==="cancel"){Ce==null||Ce();return}if(await xt()){jr(b);return}try{(pe()||fe()===void 0)&&await Pt({callOnSubmitSucceed:!1}),J==="object"?await vc({action:j,context:re}):J==="workflow"?await Cc({action:j}):J==="action"&&await Sc({action:j,context:re})}catch(ne){Ae(ne)}}const Tc=()=>!F&&!P?e.jsx(p.Spin,{}):!n&&!y||!D?null:e.jsx(e.Fragment,{children:e.jsx(Mo,{getValues:$e,getPlainValues:Je,getFields:qe,domain:O,activeId:s,activeModel:n,setFieldValue:Pe,getFieldValue:Ze,executeButtonAction:xc,getContext:le,submitForm:Pt,fetchValues:et,formHasChanges:pe,elementHasLostFocus:bc,children:e.jsx(p.Form,{form:A,onFieldsChange:()=>{mc({elementHasLostFocus:!1})},component:!1,children:F&&e.jsx(Zt,{container:F.container,responsiveBehaviour:ue})})})}),Fc=()=>e.jsxs(e.Fragment,{children:[e.jsx(p.Divider,{}),e.jsx(p.Row,{justify:"end",children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.CloseOutlined,{}),disabled:_,onClick:async()=>{await eo()},children:"Cancel"}),e.jsx(p.Button,{disabled:_||h,loading:_,icon:e.jsx(H.CheckOutlined,{}),onClick:async()=>{await Pt()},type:"primary",children:"OK"})]})})]});return D?e.jsx(Yt.default,{bounds:!0,onResize:J=>{var j;X((j=J.bounds)==null?void 0:j.width)},children:({measureRef:J})=>e.jsxs("div",{className:"pb-2",ref:J,children:[P&&e.jsx(Ni,{className:"mt-5 mb-10",error:P}),Tc(),a&&Fc()]})}):null}const ct=l.forwardRef(Bi),dt=t=>{const{visible:r,id:n,title:s,buttonModal:o=!1,onCancel:i,isMenuAction:a=!1,actionData:c,...f}=t,{modalWidth:d}=Tt(),[h,u]=l.useState(s),[g,C]=l.useState(!1),[y,m]=l.useState();l.useEffect(()=>{a&&w()},[c,a]);async function w(){const{action_id:S,res_id:V,action_type:k,view_id:L}=c,x=await Y.getHandler().isShortcutFavorite({action_id:S,action_type:k,view_id:L,res_id:V||!1});C(x!==!1),x!==!1&&m(x)}async function v(){if(g&&y)await Y.getHandler().removeFavourite({shortcut_id:y});else{const{action_id:S,res_id:V,action_type:k,view_id:L}=c;await Y.getHandler().addFavourite({action_id:S,action_type:k,view_id:L,res_id:V||!1})}C(!g)}function O(){return e.jsxs(p.Row,{align:"middle",children:[e.jsx(p.Col,{children:e.jsx(p.Button,{type:g?"primary":"default",icon:g?e.jsx(H.StarFilled,{style:{color:"white"}}):e.jsx(H.StarOutlined,{}),style:{width:30},onClick:v})}),e.jsx(p.Col,{style:{paddingLeft:10},children:h})]})}const D=d*.95;return e.jsx(Ti,{setTitle:u,children:e.jsx(p.Modal,{title:a?O():h,centered:!0,width:d,open:r,footer:null,destroyOnClose:!0,onCancel:i,maskClosable:!1,children:e.jsx(ct,{id:n,showFooter:!0,insideButtonModal:o,onCancel:i,parentWidth:D,...f})})})},Hi=t=>e.jsx(me,{...t,layout:"vertical",children:e.jsx(p.DatePicker.RangePicker,{allowEmpty:[!0,!0],format:"DD/MM/YYYY"})}),Ki=t=>{const{ooui:r,showLabel:n=!1}=t,{label:s,id:o}=r,i=[new oe.Field({name:o+"#date",label:""}),new oe.Field({name:o+"#time",label:""})];return e.jsxs(e.Fragment,{children:[n&&e.jsx(gt,{ooui:new oe.Label({name:o+"_label",string:s,help:r.tooltip,fieldForLabel:o}),align:"left"}),e.jsxs(p.Row,{align:"bottom",className:"p-0",children:[e.jsx(p.Col,{className:"mr-2",children:e.jsx(me,{...t,ooui:i[0],showLabel:!1,children:e.jsx(p.DatePicker.RangePicker,{className:"w-60",allowEmpty:[!0,!0],format:"DD/MM/YYYY"})})}),e.jsx(p.Col,{children:e.jsx(me,{...t,ooui:i[1],showLabel:!1,children:e.jsx(p.TimePicker.RangePicker,{className:"w-60",allowEmpty:[!0,!0],format:"HH:mm"})})})]})]})},{useToken:Yi}=p.theme,Xt=t=>{const{ooui:r}=t,{id:n,decimalDigits:s,readOnly:o,required:i}=r,{token:a}=Yi(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,f=l.useContext(ke),{elementHasLostFocus:d}=f||{};return e.jsx(me,{required:i,type:"number",...t,children:e.jsx(p.InputNumber,{disabled:o,className:"w-full",style:c,id:n,precision:s,formatter:h=>`${h}`.replace(/[^0-9\.\-]+/g,""),defaultValue:0,decimalSeparator:".",onBlur:d})})},{useToken:Wi}=p.theme,vt=t=>{const{ooui:r,onChange:n}=t,{id:s,readOnly:o,required:i}=r,{token:a}=Wi(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,f=l.useContext(ke),{elementHasLostFocus:d}=f||{};return e.jsx(me,{required:i,type:"number",...t,children:e.jsx(p.InputNumber,{id:s,className:"w-full ",disabled:o,formatter:h=>`${h}`.replace(/[^0-9\-]+/g,""),onChange:h=>{const u=h;n==null||n(u)},defaultValue:0,onBlur:d,precision:0,style:c})})};function qi(t){const{ooui:r,showLabel:n}=t,{id:s,label:o,tooltip:i}=r,a=r instanceof oe.Integer?vt:Xt,c=f=>e.jsx(a,{ooui:{...r,id:s+f,label:"",tooltip:void 0},layout:"vertical"});return e.jsxs(e.Fragment,{children:[n&&e.jsx(gt,{ooui:new oe.Label({name:s+"_label",string:o,help:i,fieldForLabel:s}),align:"left"}),e.jsxs(p.Row,{align:"bottom",className:"mt-0",wrap:!1,children:[e.jsx(p.Col,{children:c("#from")}),e.jsx(p.Col,{className:"pb-1",children:e.jsx("span",{className:"pl-2 pr-2 h-full",children:" - "})}),e.jsx(p.Col,{children:c("#to")})]})]})}const{defaultAlgorithm:Gi,defaultSeed:Ui}=p.theme,ji=Gi(Ui),{Option:zi}=p.Select,Ji=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(Zi,{...t})})},Zi=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,required:a}=r,c=Array.from(o.entries()),f=c&&c.length&&c.filter(u=>{const[g]=u;return s?!s.includes(g):!0}).map(u=>{const[g,C]=u;return e.jsx(zi,{value:C,children:C},g)}),d=a&&!i?Xi:p.Select;function h(u){const g=u.map(C=>{const y=c.find(([m,w])=>C===w);return y&&y[0]});if(g.length===0){n==null||n(void 0);return}n==null||n(g)}return e.jsx(d,{disabled:i,onChange:h,value:s==null?void 0:s.map(u=>o.get(u)),mode:"multiple",showArrow:!0,children:f})},Xi=pt.default(p.Select)`
|
|
20
20
|
&.ant-select:not(.ant-select-customize-input) .ant-select-selector {
|
|
21
|
-
background-color: ${
|
|
21
|
+
background-color: ${ji.colorPrimaryBg};
|
|
22
22
|
}
|
|
23
|
-
`;function
|
|
23
|
+
`;function Qi(t){const{field:r}=t;r.readOnly=!1,r.required=!1;const{t:n}=l.useContext(ge);switch(r.type){case oe.SearchFieldTypes.boolean:{const o=new oe.Selection({name:r._id,string:r.label,selection:[["true",n("true")],["false",n("false")]]});return e.jsx(Ut,{layout:"vertical",ooui:o,showLabel:!0})}case oe.SearchFieldTypes.float:case oe.SearchFieldTypes.progressbar:case oe.SearchFieldTypes.float_time:case oe.SearchFieldTypes.integer:return e.jsx(qi,{ooui:r,showLabel:!0});case oe.SearchFieldTypes.date:return e.jsx(Hi,{ooui:r,layout:"vertical",showLabel:!0});case oe.SearchFieldTypes.datetime:return e.jsx(Ki,{ooui:r,layout:"vertical",showLabel:!0});case oe.SearchFieldTypes.selection:return e.jsx(Ji,{layout:"vertical",ooui:r,showLabel:!0});default:return e.jsx(Gt,{ooui:r,layout:"vertical",showLabel:!0,isSearchField:!0})}}function Ri(t){const{onAdvancedFilterToggle:r,advancedFilter:n,onClear:s,isSearching:o}=t,{t:i}=l.useContext(ge);return e.jsxs(p.Row,{children:[e.jsx(p.Col,{span:12,className:"text-left pt-4 pb-2 pl-2",children:e.jsxs("a",{className:"text-xs",onClick:r,children:[n?e.jsx(H.UpOutlined,{className:"pr-1"}):e.jsx(H.DownOutlined,{className:"pr-1"}),i(n?"simple_search":"advanced_search")]})}),e.jsxs(p.Col,{span:12,className:"text-right pb-2",children:[e.jsx(p.Button,{className:"mr-5",icon:e.jsx(H.ClearOutlined,{}),onClick:s,children:i("clear")}),e.jsx(p.Button,{icon:e.jsx(H.SearchOutlined,{}),loading:o,className:"mr-2",type:"primary",htmlType:"submit",children:i("search")})]})]})}function ea(t){const{onLimitChange:r}=t,{t:n}=l.useContext(ge),s=new oe.Integer({name:"limit"}),o=new oe.Integer({name:"offset"});return e.jsxs("div",{className:"pl-2 pt-2",children:[e.jsx(p.Row,{children:n("parameters")},"count_params"),e.jsxs(p.Space,{align:"center",children:[n("limit")+" :",e.jsx(vt,{ooui:s,onChange:i=>{r==null||r(i)}}),n("first")+" :",e.jsx(vt,{ooui:o})]})]})}const{useToken:ta}=p.theme;function Qt(t){const{fields:r,searchFields:n={primary:[],secondary:[]},onClear:s,onSubmit:o,isSearching:i,offset:a,limit:c,onLimitChange:f,searchVisible:d,setSearchFilterHeight:h,searchError:u,searchValues:g,showLimitOptions:C=!0,formXml:y}=t,[m,w]=l.useState(),[v,O]=l.useState(),[D,S]=l.useState(!1),V=l.useRef(),{token:k}=ta(),[L]=p.Form.useForm();l.useEffect(()=>{L.setFieldsValue(g)},[g]);const x=()=>{if(!v)return;const T=D?v:m,P=T==null?void 0:T.rows;return P==null?void 0:P.map((I,F)=>e.jsx(p.Row,{children:I.map((E,A)=>e.jsx(p.Col,{xs:24,className:"p-2",xl:6,children:e.jsx(Qi,{field:E})},A))},F))};Re.default(()=>{S(!1),V.current=new oe.SearchFilter(n,r,y),V.current.parse(),w(V.current._simpleSearchContainer),O(V.current._advancedSearchContainer)},[r,n]);const b=x(),_=T=>{var E;const{limit:P,offset:I}=T;delete T.offset,delete T.limit;const F=Fi(T,(E=V.current)==null?void 0:E._advancedSearchContainer);o({params:F,offset:I,limit:P,searchValues:T})};return e.jsx(Yt.default,{bounds:!0,onResize:T=>{var P;h==null||h((P=T.bounds)==null?void 0:P.height)},children:({measureRef:T})=>e.jsx("div",{ref:T,children:e.jsxs("div",{style:{display:d?"block":"none"},children:[e.jsxs(p.Form,{className:"p-3 shadow-md",style:{borderRadius:k.borderRadius},form:L,onFinish:_,initialValues:{offset:a,limit:c},children:[b,D&&C&&e.jsx(ea,{onLimitChange:f}),e.jsx(Ri,{advancedFilter:D,onAdvancedFilterToggle:()=>{S(!D)},onClear:()=>{L.resetFields(),s()},isSearching:i})]}),u&&e.jsx(p.Alert,{className:"mt-10",message:u,type:"error",banner:!0}),e.jsx("div",{className:"pb-5"})]})})})}const Rr=(t,r="14px -apple-system")=>{const s=document.createElement("canvas").getContext("2d");s.font=r;const o=s.measureText(t);return Math.round((o.width+80)*1.5)},ra=(t,r,n=500)=>{if(t.length===0)return t;const s=t.map(i=>Object.assign(i,{width:Rr(i.title)}));r.map(i=>{s.map((a,c)=>{const f=a.width,d=i[a.key]||"";let h=Rr(d);h<f&&(h=f),h>n&&(h=n),s[c].width=h})});const o=s.map(i=>i.width).reduce((i,a)=>i+a);return{columns:s,source:r,tableWidth:o}};function na(t){if(!!t)try{if(t.includes(":")){const r=t.trim().split(":");return Math.round((parseInt(r[0])+parseInt(r[1])/60)*1e4)/1e4}else return parseFloat(t.trim())}catch{return 0}}function en(t){if(t===void 0)return;let r,n=Math.floor(Math.abs(t)),s=Math.round(Math.abs(t)%1*100)/100;s>=1?(n=n+1,s=0):s=s*60;const o=n.toLocaleString("en-US",{minimumIntegerDigits:2,maximumFractionDigits:0,useGrouping:!1}),i=s.toLocaleString("en-US",{minimumIntegerDigits:2,maximumFractionDigits:0,useGrouping:!1});return r=`${o}:${i}`,t<0&&(r="-"+r),r}const tn=t=>e.jsx(me,{...t,children:e.jsx(rn,{})}),rn=({value:t})=>{const r=`${(t||0).toLocaleString("en-US",{minimumIntegerDigits:1,maximumFractionDigits:4,useGrouping:!1})}%`;return e.jsxs("div",{style:{flex:1,display:"flex",alignItems:"center"},children:[e.jsx(oa,{percent:t}),e.jsx("div",{style:{flexGrow:1,paddingLeft:10},children:r})]})},oa=pt.default(p.Progress)`
|
|
24
24
|
.ant-progress-outer {
|
|
25
25
|
margin-right: 0px;
|
|
26
26
|
padding-right: 0px;
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
.ant-progress-text {
|
|
29
29
|
display: none;
|
|
30
30
|
}
|
|
31
|
-
`,rn=t=>{const{visible:r,onCancel:n,items:s=[],onItemClicked:o}=t,{t:i}=l.useContext(ge);return e.jsx(p.Modal,{title:i("selectAction"),centered:!0,open:r,footer:null,destroyOnClose:!0,onCancel:n,maskClosable:!1,children:e.jsx(p.Space,{direction:"vertical",className:"w-full",children:s.map(a=>e.jsx(p.Button,{className:"w-full",onClick:()=>{o(a)},children:a.name}))})})},Qt=t=>{var S,x;const{id:r,model:n,context:s={}}=t,[o,i]=l.useState(!1),[a,c]=l.useState(!1),[f,d]=l.useState(!1),[h,u]=l.useState(),[g,C]=l.useState(),{t:y}=l.useContext(ge),m=l.useContext(qe),{openRelate:w}=m||{},v=l.useContext(lt),{processAction:_}=v||{};if(!r)return null;async function D(){d(!0);try{const O=await Y.getHandler().getView({model:n,type:"form",context:s});u(O);const{fields:T,arch:P}=O,F=(await Y.getHandler().readObjects({model:n,ids:[r],fields:T,context:s}))[0];C({...it(F,T),active_id:r}),d(!1)}catch(O){d(!1),$e(O);return}}function b(){var T;if(f)return e.jsx(p.Menu,{children:e.jsx("div",{style:{padding:15},children:e.jsx(p.Spin,{})})});if(!h||!h.toolbar)return e.jsx(p.Menu,{});const O=(T=h==null?void 0:h.toolbar)==null?void 0:T.relate.map(P=>e.jsx(p.Menu.Item,{children:P.name},P.id));return e.jsx(p.Menu,{onClick:E,children:[e.jsx(p.Menu.Item,{disabled:!h.toolbar.action||h.toolbar.action.length===0,icon:e.jsx(K.ThunderboltOutlined,{}),children:y("action")},"action"),e.jsx(p.Menu.Item,{disabled:!h.toolbar.print||h.toolbar.print.length===0,icon:e.jsx(K.PrinterOutlined,{}),children:y("report")},"print"),e.jsx(p.Menu.Divider,{}),e.jsx(p.Menu.ItemGroup,{title:e.jsxs(e.Fragment,{children:[e.jsx(K.EnterOutlined,{})," ",e.jsxs("span",{children:[" ",y("related")]})]}),children:O})]})}function E(O){if(O.key==="action")i(!0);else if(O.key==="print")c(!0);else{const T=h.toolbar.relate.find(P=>P.id===parseInt(O.key));if(!T)return;w({relateData:T,values:g,fields:h.fields,action_id:T.id,action_type:T.type})}}function k(O){i(!1),_==null||_({actionData:O,values:g,fields:h.fields,context:{active_id:r,active_ids:[r]}})}function A(O){c(!1),_==null||_({actionData:{...O,datas:{...O.datas||{},ids:[r]}},values:g,fields:h.fields})}return e.jsxs(e.Fragment,{children:[e.jsx(p.Dropdown,{overlay:b(),trigger:["click"],children:e.jsx(K.RightCircleOutlined,{style:{color:"rgba(0,0,0,.45)"},onClick:O=>{O.preventDefault(),D()}})}),e.jsx(rn,{visible:o,items:(S=h==null?void 0:h.toolbar)==null?void 0:S.action,onItemClicked:k,onCancel:()=>i(!1)}),e.jsx(rn,{visible:a,items:(x=h==null?void 0:h.toolbar)==null?void 0:x.print,onItemClicked:A,onCancel:()=>c(!1)})]})},na=t=>{const{m2oField:r}=t;return r?e.jsxs(p.Space,{children:[e.jsx(e.Fragment,{children:r.value}),e.jsx(Qt,{id:r.id,model:r.model})]}):e.jsx(e.Fragment,{})},oa=t=>{const{value:r,context:n,selectionValues:s}=t,[o,i]=l.useState(),[a,c]=l.useState(!1),[f,d]=r?r.split(","):[],h=parseInt(d),u=l.useCallback(async()=>{if(!r||r&&o)return;c(!0);const C=await Y.getHandler().execute({action:"name_get",payload:[h],model:f,context:n});i(C[0][1]),c(!1)},[r,o]);if(l.useEffect(()=>{u()},[r]),!r&&!a)return e.jsx(e.Fragment,{});if(a)return e.jsx(K.LoadingOutlined,{});const g=s.get(f);return e.jsxs(p.Space,{children:[e.jsx(e.Fragment,{children:`${g}:`}),e.jsx(e.Fragment,{children:o}),e.jsx(Qt,{id:h,model:f})]})};var nn={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Qe,function(){var n=1e3,s=6e4,o=36e5,i="millisecond",a="second",c="minute",f="hour",d="day",h="week",u="month",g="quarter",C="year",y="date",m="Invalid Date",w=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,v=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,_={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(F){var $=["th","st","nd","rd"],V=F%100;return"["+F+($[(V-20)%10]||$[V]||$[0])+"]"}},D=function(F,$,V){var L=String(F);return!L||L.length>=$?F:""+Array($+1-L.length).join(V)+F},b={s:D,z:function(F){var $=-F.utcOffset(),V=Math.abs($),L=Math.floor(V/60),M=V%60;return($<=0?"+":"-")+D(L,2,"0")+":"+D(M,2,"0")},m:function F($,V){if($.date()<V.date())return-F(V,$);var L=12*(V.year()-$.year())+(V.month()-$.month()),M=$.clone().add(L,u),I=V-M<0,B=$.clone().add(L+(I?-1:1),u);return+(-(L+(V-M)/(I?M-B:B-M))||0)},a:function(F){return F<0?Math.ceil(F)||0:Math.floor(F)},p:function(F){return{M:u,y:C,w:h,d,D:y,h:f,m:c,s:a,ms:i,Q:g}[F]||String(F||"").toLowerCase().replace(/s$/,"")},u:function(F){return F===void 0}},E="en",k={};k[E]=_;var A=function(F){return F instanceof T},S=function F($,V,L){var M;if(!$)return E;if(typeof $=="string"){var I=$.toLowerCase();k[I]&&(M=I),V&&(k[I]=V,M=I);var B=$.split("-");if(!M&&B.length>1)return F(B[0])}else{var W=$.name;k[W]=$,M=W}return!L&&M&&(E=M),M||!L&&E},x=function(F,$){if(A(F))return F.clone();var V=typeof $=="object"?$:{};return V.date=F,V.args=arguments,new T(V)},O=b;O.l=S,O.i=A,O.w=function(F,$){return x(F,{locale:$.$L,utc:$.$u,x:$.$x,$offset:$.$offset})};var T=function(){function F(V){this.$L=S(V.locale,null,!0),this.parse(V)}var $=F.prototype;return $.parse=function(V){this.$d=function(L){var M=L.date,I=L.utc;if(M===null)return new Date(NaN);if(O.u(M))return new Date;if(M instanceof Date)return new Date(M);if(typeof M=="string"&&!/Z$/i.test(M)){var B=M.match(w);if(B){var W=B[2]-1||0,U=(B[7]||"0").substring(0,3);return I?new Date(Date.UTC(B[1],W,B[3]||1,B[4]||0,B[5]||0,B[6]||0,U)):new Date(B[1],W,B[3]||1,B[4]||0,B[5]||0,B[6]||0,U)}}return new Date(M)}(V),this.$x=V.x||{},this.init()},$.init=function(){var V=this.$d;this.$y=V.getFullYear(),this.$M=V.getMonth(),this.$D=V.getDate(),this.$W=V.getDay(),this.$H=V.getHours(),this.$m=V.getMinutes(),this.$s=V.getSeconds(),this.$ms=V.getMilliseconds()},$.$utils=function(){return O},$.isValid=function(){return this.$d.toString()!==m},$.isSame=function(V,L){var M=x(V);return this.startOf(L)<=M&&M<=this.endOf(L)},$.isAfter=function(V,L){return x(V)<this.startOf(L)},$.isBefore=function(V,L){return this.endOf(L)<x(V)},$.$g=function(V,L,M){return O.u(V)?this[L]:this.set(M,V)},$.unix=function(){return Math.floor(this.valueOf()/1e3)},$.valueOf=function(){return this.$d.getTime()},$.startOf=function(V,L){var M=this,I=!!O.u(L)||L,B=O.p(V),W=function(ie,ae){var ee=O.w(M.$u?Date.UTC(M.$y,ae,ie):new Date(M.$y,ae,ie),M);return I?ee:ee.endOf(d)},U=function(ie,ae){return O.w(M.toDate()[ie].apply(M.toDate("s"),(I?[0,0,0,0]:[23,59,59,999]).slice(ae)),M)},q=this.$W,Z=this.$M,J=this.$D,N="set"+(this.$u?"UTC":"");switch(B){case C:return I?W(1,0):W(31,11);case u:return I?W(1,Z):W(0,Z+1);case h:var H=this.$locale().weekStart||0,R=(q<H?q+7:q)-H;return W(I?J-R:J+(6-R),Z);case d:case y:return U(N+"Hours",0);case f:return U(N+"Minutes",1);case c:return U(N+"Seconds",2);case a:return U(N+"Milliseconds",3);default:return this.clone()}},$.endOf=function(V){return this.startOf(V,!1)},$.$set=function(V,L){var M,I=O.p(V),B="set"+(this.$u?"UTC":""),W=(M={},M[d]=B+"Date",M[y]=B+"Date",M[u]=B+"Month",M[C]=B+"FullYear",M[f]=B+"Hours",M[c]=B+"Minutes",M[a]=B+"Seconds",M[i]=B+"Milliseconds",M)[I],U=I===d?this.$D+(L-this.$W):L;if(I===u||I===C){var q=this.clone().set(y,1);q.$d[W](U),q.init(),this.$d=q.set(y,Math.min(this.$D,q.daysInMonth())).$d}else W&&this.$d[W](U);return this.init(),this},$.set=function(V,L){return this.clone().$set(V,L)},$.get=function(V){return this[O.p(V)]()},$.add=function(V,L){var M,I=this;V=Number(V);var B=O.p(L),W=function(Z){var J=x(I);return O.w(J.date(J.date()+Math.round(Z*V)),I)};if(B===u)return this.set(u,this.$M+V);if(B===C)return this.set(C,this.$y+V);if(B===d)return W(1);if(B===h)return W(7);var U=(M={},M[c]=s,M[f]=o,M[a]=n,M)[B]||1,q=this.$d.getTime()+V*U;return O.w(q,this)},$.subtract=function(V,L){return this.add(-1*V,L)},$.format=function(V){var L=this,M=this.$locale();if(!this.isValid())return M.invalidDate||m;var I=V||"YYYY-MM-DDTHH:mm:ssZ",B=O.z(this),W=this.$H,U=this.$m,q=this.$M,Z=M.weekdays,J=M.months,N=function(ae,ee,X,pe){return ae&&(ae[ee]||ae(L,I))||X[ee].slice(0,pe)},H=function(ae){return O.s(W%12||12,ae,"0")},R=M.meridiem||function(ae,ee,X){var pe=ae<12?"AM":"PM";return X?pe.toLowerCase():pe},ie={YY:String(this.$y).slice(-2),YYYY:O.s(this.$y,4,"0"),M:q+1,MM:O.s(q+1,2,"0"),MMM:N(M.monthsShort,q,J,3),MMMM:N(J,q),D:this.$D,DD:O.s(this.$D,2,"0"),d:String(this.$W),dd:N(M.weekdaysMin,this.$W,Z,2),ddd:N(M.weekdaysShort,this.$W,Z,3),dddd:Z[this.$W],H:String(W),HH:O.s(W,2,"0"),h:H(1),hh:H(2),a:R(W,U,!0),A:R(W,U,!1),m:String(U),mm:O.s(U,2,"0"),s:String(this.$s),ss:O.s(this.$s,2,"0"),SSS:O.s(this.$ms,3,"0"),Z:B};return I.replace(v,function(ae,ee){return ee||ie[ae]||B.replace(":","")})},$.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},$.diff=function(V,L,M){var I,B=O.p(L),W=x(V),U=(W.utcOffset()-this.utcOffset())*s,q=this-W,Z=O.m(this,W);return Z=(I={},I[C]=Z/12,I[u]=Z,I[g]=Z/3,I[h]=(q-U)/6048e5,I[d]=(q-U)/864e5,I[f]=q/o,I[c]=q/s,I[a]=q/n,I)[B]||q,M?Z:O.a(Z)},$.daysInMonth=function(){return this.endOf(u).$D},$.$locale=function(){return k[this.$L]},$.locale=function(V,L){if(!V)return this.$L;var M=this.clone(),I=S(V,L,!0);return I&&(M.$L=I),M},$.clone=function(){return O.w(this.$d,this)},$.toDate=function(){return new Date(this.valueOf())},$.toJSON=function(){return this.isValid()?this.toISOString():null},$.toISOString=function(){return this.$d.toISOString()},$.toString=function(){return this.$d.toUTCString()},F}(),P=T.prototype;return x.prototype=P,[["$ms",i],["$s",a],["$m",c],["$H",f],["$W",d],["$M",u],["$y",C],["$D",y]].forEach(function(F){P[F[1]]=function($){return this.$g($,F[0],F[1])}}),x.extend=function(F,$){return F.$i||(F($,T,x),F.$i=!0),x},x.locale=S,x.isDayjs=A,x.unix=function(F){return x(1e3*F)},x.en=k[E],x.Ls=k,x.p={},x})})(nn);const Ze=nn.exports,sa=t=>{console.log("Avatar Props",t);const{ooui:r,value:n}=t;if(!n)return null;let s=n;r.selectionValues.size?s=r.selectionValues.get(n):Array.isArray(n)&&(s=n[1]);const o=s.toString().split(" ").filter(a=>a.length>1).slice(0,3).map(a=>a[0].toUpperCase()).join(""),i=Ot(s);return e.jsx(p.Tooltip,{title:s,children:e.jsx(p.Avatar,{alt:s,style:{backgroundColor:i},children:o})})},on=t=>e.jsx(me,{...t,children:e.jsx(sn,{...t})}),sn=t=>{const{ooui:r,value:n}=t;let s=n,o=n;if(r.selectionValues.size?s=r.selectionValues.get(n):Array.isArray(n)&&(o=n[0],s=n[1]),!n)return null;const i=r.colors==="auto"?Ot(o):r.colors[o]||Ot(o);return e.jsx(p.Tag,{color:i,style:lo.isPresetStatusColor(i)?{}:{color:qr(i)},children:s})};var an={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Qe,function(){return function(n,s){s.prototype.weekday=function(o){var i=this.$locale().weekStart||0,a=this.$W,c=(a<i?a+7:a)-i;return this.$utils().u(o)?c:this.subtract(c,"day").add(o,"day")}}})})(an);const ia=an.exports;var ln={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Qe,function(){return function(n,s,o){var i=s.prototype,a=function(u){return u&&(u.indexOf?u:u.s)},c=function(u,g,C,y,m){var w=u.name?u:u.$locale(),v=a(w[g]),_=a(w[C]),D=v||_.map(function(E){return E.slice(0,y)});if(!m)return D;var b=w.weekStart;return D.map(function(E,k){return D[(k+(b||0))%7]})},f=function(){return o.Ls[o.locale()]},d=function(u,g){return u.formats[g]||function(C){return C.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(y,m,w){return m||w.slice(1)})}(u.formats[g.toUpperCase()])},h=function(){var u=this;return{months:function(g){return g?g.format("MMMM"):c(u,"months")},monthsShort:function(g){return g?g.format("MMM"):c(u,"monthsShort","months",3)},firstDayOfWeek:function(){return u.$locale().weekStart||0},weekdays:function(g){return g?g.format("dddd"):c(u,"weekdays")},weekdaysMin:function(g){return g?g.format("dd"):c(u,"weekdaysMin","weekdays",2)},weekdaysShort:function(g){return g?g.format("ddd"):c(u,"weekdaysShort","weekdays",3)},longDateFormat:function(g){return d(u.$locale(),g)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};i.localeData=function(){return h.bind(this)()},o.localeData=function(){var u=f();return{firstDayOfWeek:function(){return u.weekStart||0},weekdays:function(){return o.weekdays()},weekdaysShort:function(){return o.weekdaysShort()},weekdaysMin:function(){return o.weekdaysMin()},months:function(){return o.months()},monthsShort:function(){return o.monthsShort()},longDateFormat:function(g){return d(u,g)},meridiem:u.meridiem,ordinal:u.ordinal}},o.months=function(){return c(f(),"months")},o.monthsShort=function(){return c(f(),"monthsShort","months",3)},o.weekdays=function(u){return c(f(),"weekdays",null,null,u)},o.weekdaysShort=function(u){return c(f(),"weekdaysShort","weekdays",3,u)},o.weekdaysMin=function(u){return c(f(),"weekdaysMin","weekdays",2,u)}}})})(ln);const aa=ln.exports,{useToken:la}=p.theme;Ze.extend(ia),Ze.extend(aa);const Xe={date:{placeholder:"__/__/____",dateDisplayFormat:"DD/MM/YYYY",dateInternalFormat:"YYYY-MM-DD"},time:{placeholder:"__/__/____ __:__:__",dateDisplayFormat:"DD/MM/YYYY HH:mm:ss",dateInternalFormat:"YYYY-MM-DD HH:mm:ss"}},cn=t=>{const{ooui:r,showTime:n=!1}=t,{required:s}=r;return e.jsx(me,{required:s,...t,children:e.jsx(ca,{ooui:r,showTime:n})})},ca=t=>{const{value:r,onChange:n,ooui:s,showTime:o}=t,{id:i,readOnly:a,required:c}=s,{token:f}=la(),d=c&&!a?{backgroundColor:f.colorPrimaryBg}:void 0,h=o?"time":"date",u=y=>{n==null||n(y)},g=y=>{if(y===null){u(void 0);return}u(y.format(Xe[h].dateInternalFormat))},C=r?Ze(r,Xe[h].dateInternalFormat):void 0;return e.jsx(p.DatePicker,{style:{width:"100%",...d},placeholder:o?Xe.time.placeholder:Xe.date.placeholder,disabled:a,id:i,picker:"date",showTime:o,format:Xe[h].dateDisplayFormat,value:C,onChange:g})},da=t=>e.jsx("div",{style:{display:"flex",justifyContent:"center",alignContent:"center"},children:e.jsx(p.Checkbox,{checked:t,disabled:!0})}),ua=t=>e.jsx(na,{m2oField:t}),fa=t=>e.jsx(Bt.Interweave,{content:t==null?void 0:t.replace(/(?:\r\n|\r|\n)/g,"<br>")}),ha=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=Ze(t,Xe.date.dateInternalFormat).format(Xe.date.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},pa=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=Ze(t,Xe.time.dateInternalFormat).format(Xe.time.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},dn=t=>{const r=Array.isArray(t==null?void 0:t.items)?t==null?void 0:t.items.length:0;return e.jsx(e.Fragment,{children:`( ${r} )`})},ga=t=>e.jsx(tn,{value:t}),ma=t=>e.jsx(e.Fragment,{children:Rr(t)}),un=t=>e.jsx("div",{style:{textAlign:"right"},children:t}),ya=t=>e.jsx("img",{src:`data:image/*;base64,${t}`,style:{maxWidth:"50px",padding:"5px"}}),wa=(t,r,n,s)=>e.jsx(sn,{ooui:n,value:t}),va=(t,r,n,s)=>e.jsx(e.Fragment,{children:n.selectionValues.get(t)}),Ca=(t,r,n,s)=>e.jsx(e.Fragment,{children:e.jsx(oa,{value:t,selectionValues:n.selectionValues,context:s})}),Sa=(t,r,n,s)=>e.jsx(sa,{ooui:n,value:t});function Ct(t){const{page:r=1,limit:n,total:s,treeView:o,results:i,onRequestPageChange:a,loading:c,onRowClicked:f,showPagination:d=!0,rowSelection:h,scrollY:u,colorsForResults:g={},onChangeSort:C,sorter:y,onFetchChildrenForRecord:m,childField:w,rootTree:v=!1,context:_}=t,[D,b]=l.useState([]),[E,k]=l.useState([]),A=l.useRef(!1),S=l.useRef(null),{t:x}=l.useContext(ge),O=l.useRef(n),T=l.useContext(Be),{title:P=void 0,setTitle:F=void 0}=(v?T:{})||{};l.useEffect(()=>{S.current=ot(o);const U=Js(S.current,{boolean:da,many2one:ua,text:fa,one2many:dn,many2many:dn,progressbar:ga,float_time:ma,image:ya,integer:un,float:un,reference:Ca,tag:wa,selection:va,date:ha,datetime:pa,avatar:Sa},_);k(U),S.current.string&&P!==S.current.string&&(F==null||F(S.current.string))},[o]),l.useEffect(()=>{A.current=!1;const U=Kr(S.current,i);b(U),O.current=n},[i]);const $=(r-1)*O.current+1,V=$-1+D.length,L=s===void 0?null:s===0?x("no_results"):x("summary").replace("{from}",$==null?void 0:$.toString()).replace("{to}",V==null?void 0:V.toString()).replace("{total}",s==null?void 0:s.toString()),M=()=>!d||o.isExpandable||c?null:s===void 0?e.jsx(p.Spin,{className:"pb-4"}):e.jsxs(p.Row,{align:"bottom",className:"pb-4",children:[e.jsx(p.Col,{span:12,children:e.jsx(p.Pagination,{total:s,pageSize:O.current===0?s:O.current,current:r,showSizeChanger:!1,onChange:a})}),e.jsx(p.Col,{span:12,className:"text-right",children:L})]});function I(){var N;const q=S.current.columns.filter(H=>H.sum!==void 0).map(H=>({label:H.sum,field:H.id}));if(!q||q.length===0)return null;let Z=[],J=((N=h==null?void 0:h.selectedRowKeys)==null?void 0:N.length)>0?D.filter(H=>h==null?void 0:h.selectedRowKeys.includes(H.id)):D;return q.forEach(H=>{const R=J.reduce((ie,ae)=>ae[H.field]&&!isNaN(ae[H.field])?ie+ae[H.field]:ie,0);Z.push(`${H.label}: ${Math.round(R*100)/100}`)}),e.jsx("div",{className:"p-1 pb-0 pl-2 mt-2 ",children:Z.join(", ")})}let B,W=u;if(S.current!==null){B=ea(E,D,600);const q=S.current;u&&q.columns.some(Z=>Z.sum!==void 0)&&(W=u-30)}return S.current===null?e.jsx(p.Spin,{style:{padding:"2rem"}}):e.jsxs("div",{children:[M(),e.jsx(io.Table,{height:W,columns:B.columns,dataSource:D,loading:c,loadingComponent:e.jsx(p.Spin,{}),onRowStyle:U=>{if(g[U.id])return{color:g[U.id]}},onRowDoubleClick:f,onRowSelectionChange:h==null?void 0:h.onChange,onChangeSort:C,sorter:y,expandableOpts:m?{expandIcon:K.PlusSquareOutlined,collapseIcon:K.MinusSquareOutlined,loadingIcon:K.LoadingOutlined,onFetchChildrenForRecord:m,childField:w}:void 0}),I()]})}function ba(t,r){const{model:n,formView:s,treeView:o,onRowClicked:i,nameSearch:a,treeScrollY:c,domain:f=[],visible:d=!0,rootTree:h=!1,parentContext:u={},onChangeSelectedRowKeys:g}=t,[C,y]=l.useState(!1),[m,w]=l.useState(!1),v=l.useRef(!1),[_,D]=l.useState(),[b,E]=l.useState(),[k,A]=l.useState(),[S,x]=l.useState(),[O,T]=l.useState(200),P=l.useRef(),{height:F}=xt(),$=l.useContext(lt),{processAction:V}=$||{},L=l.useContext(Be),{setResults:M=void 0,setCurrentItemIndex:I=void 0,currentId:B=void 0,results:W=void 0,selectedRowItems:U=void 0,setSelectedRowItems:q=void 0,searchParams:Z=[],setSearchParams:J=void 0,searchVisible:N=!0,setSearchVisible:H=void 0,sorter:R=void 0,setSorter:ie=void 0,setTotalItems:ae=void 0,setSearchTreeNameSearch:ee=void 0,setTreeIsLoading:X=void 0,searchValues:pe={},setSearchValues:ye=void 0,limit:De=wt,setLimit:de=void 0}=(h?L:{})||{},{submit:oe,clear:Se,fetchResults:we,tableRefreshing:xe,searchFilterLoading:Ee,searchError:Me,page:He,offset:Ie,getResults:te,requestPageChange:ue,changeSort:ve,fetchChildrenForRecord:Ve,colorsForResults:ce,totalItems:Fe}=Jr({model:_,setSearchTreeNameSearch:ee,setSelectedRowItems:q,setSearchParams:J,setSearchValues:ye,searchParams:Z,setSearchVisible:H,setTreeIsLoading:X,nameSearch:a,searchNameGetDoneRef:v,context:u,formView:k,treeView:b,sorter:R,setSorter:ie,setCurrentItemIndex:I,setResultsActionView:M,resultsActionView:W,domain:f,currentId:B,setActionViewTotalItems:ae,limit:De,setLimit:de});l.useImperativeHandle(r,()=>({refreshResults:()=>{v.current=!1,we()},getFields:()=>b==null?void 0:b.fields,getDomain:()=>f})),l.useEffect(()=>{!m||d&&(v.current=!1,we())},[He,Ie,m,d,a]);const ke=async()=>{w(!1),y(!0),x(void 0),X==null||X(!0);try{await Ge(),w(!0)}catch(he){x(he)}finally{y(!1),X==null||X(!1)}},Ge=async()=>{D(n);let he=s;s||(he=await Y.getHandler().getView({model:n,type:"form",context:u}));let Ae=o;o||(Ae=await Y.getHandler().getView({model:n,type:"tree",context:u})),A(he),E(Ae)};l.useEffect(()=>{ke()},[n]);const Ke=he=>{de==null||de(he)},Ue=async he=>{const{id:Ae}=he;P.current||(P.current=await Y.getHandler().treeButOpen({id:b.view_id,model:_,context:u}));const je=P.current[0][2];await(V==null?void 0:V({actionData:je,fields:b.fields,values:{active_id:Ae,...he},context:u}))},Q=async he=>{const{id:Ae}=he;if(b!=null&&b.isExpandable){try{await Ue(he)}catch(je){$e(je)}return}i({id:Ae,model:_,formView:k,treeView:b})};function fe(he){const Ae=te().filter(je=>he.includes(je.id));q==null||q(Ae),g==null||g(he)}function Te(){return b!=null&&b.isExpandable?F-160:F-(O+210)}const le=()=>!b||!k?null:e.jsxs(e.Fragment,{children:[e.jsx(Xt,{fields:{...b.fields,...k.fields},searchFields:Yr([k.search_fields,b.search_fields]),formXml:k.arch,onClear:Se,limit:De,offset:Ie,isSearching:Ee,onSubmit:oe,onLimitChange:Ke,setSearchFilterHeight:T,searchError:Me,searchVisible:N,searchValues:pe}),e.jsx(Ct,{context:u,total:Fe,limit:De,page:He,treeView:b,results:te(),onRequestPageChange:ue,loading:xe,onRowClicked:Q,scrollY:c||Te(),colorsForResults:ce,rowSelection:{selectedRowKeys:U==null?void 0:U.map(he=>he.id),onChange:fe},sorter:R,onChangeSort:ve,onFetchChildrenForRecord:b.isExpandable?Ve:void 0,childField:b.field_parent,rootTree:h})]}),Ce=S||Me;return Ce?e.jsx(p.Alert,{className:"mt-10",message:Ce,type:"error",banner:!0}):e.jsx("div",{style:d?{}:{display:"none"},children:C?e.jsx(p.Spin,{}):le()})}const Rt=l.forwardRef(ba),er=t=>{const{visible:r,onCloseModal:n,onSelectValues:s,model:o,nameSearch:i,domain:a,context:c={}}=t,[f,d]=l.useState(!1),{modalWidth:h,modalHeight:u}=xt(),{t:g}=l.useContext(ge),[C,y]=l.useState([]),m=async()=>{await new Promise(D=>setTimeout(D,5)),n()},w=async D=>{const{id:b}=D;s([b])};function v(){if(C.length===0){m();return}s(C)}const _=()=>e.jsxs(e.Fragment,{children:[e.jsx(Rt,{model:o,nameSearch:i,onRowClicked:w,treeScrollY:u*.3,domain:a,parentContext:c,onChangeSelectedRowKeys:D=>{y(D)}}),e.jsx(p.Divider,{}),e.jsx(p.Row,{justify:"end",children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(K.FileAddOutlined,{}),onClick:()=>{d(!0)},children:g("new")}),e.jsx(p.Button,{icon:e.jsx(K.CheckOutlined,{}),onClick:()=>{v()},type:"primary",children:g("ok")}),e.jsx(p.Button,{icon:e.jsx(K.CloseOutlined,{}),onClick:m,children:g("cancel")})]})})]});return e.jsxs(e.Fragment,{children:[e.jsx(p.Modal,{title:g("search"),centered:!0,width:h,open:r&&!f,closable:!0,onCancel:m,footer:null,destroyOnClose:!0,maskClosable:!1,children:_()}),e.jsx(dt,{model:o,visible:f,parentContext:c,onSubmitSucceed:D=>{d(!1),m(),s([D])},onCancel:()=>{d(!1),m()}})]})},{error:xa}=p.Modal,Dt=t=>{xa({title:"Error",icon:e.jsx(K.ExclamationCircleOutlined,{}),centered:!0,content:t})},{defaultAlgorithm:Ta,defaultSeed:Fa}=p.theme,fn=Ta(Fa),hn=t=>{const{ooui:r}=t,{required:n}=r,s=async(o,i)=>{if(!i)throw new Error;if(!Array.isArray(i))throw new Error;if(Array.isArray(i)&&!i[0])throw new Error};return e.jsx(me,{required:n,type:"array",validator:s,...t,children:e.jsx(pn,{ooui:r})})},pn=t=>{const{value:r,onChange:n,ooui:s}=t,{required:o,relation:i,readOnly:a,context:c,id:f,domain:d}=s,h=o&&!a?{backgroundColor:fn.colorPrimaryBg}:void 0,[u,g]=l.useState(!1),[C,y]=l.useState(!1),[m,w]=l.useState(!1),[v,_]=l.useState(),D=l.useRef(!1),[b,E]=l.useState(""),k=l.useRef(),A=l.useContext(_e),{domain:S,getValues:x,getFields:O,getContext:T,elementHasLostFocus:P}=A||{},F=l.useRef([]),[$,V]=l.useState([]),L=r&&r[0]||void 0,M=r&&r[1]||"";l.useEffect(()=>{!Array.isArray(r)&&r&&q(r)},[r]),l.useEffect(()=>{L&&M.length===0?q(L):L&&M.length>0?E(M):!L&&!M&&E(k.current||"")},[r]);const I=H=>{n==null||n(H),P==null||P()},B=H=>{k.current=H.target.value,I([void 0,""])},W=async()=>{if(!m&&b!==M){if(await new Promise(H=>setTimeout(H,100)),D.current){I([void 0,""]);return}w(!0);try{if(F.current&&F.current.length>0)U(k.current);else{const H=await Y.getHandler().nameSearch({model:i,payload:k.current,context:{...T==null?void 0:T(),...c}});H.length===1?(k.current=void 0,I(H[0])):U(k.current)}}catch(H){Dt(H)}finally{w(!1)}}},U=async H=>{if(await Z(),F.current&&F.current.length>0){const R=await Y.getHandler().searchAllIds({params:F.current,model:i,context:{...T==null?void 0:T(),...c},totalItems:2});R.length===1?q(R[0]):(_(H),g(!0));return}_(H),g(!0)},q=async H=>{w(!0);try{const R=await Y.getHandler().execute({action:"name_get",payload:[H],model:i,context:{...T==null?void 0:T(),...c}});I([H,R[0][1]])}catch(R){Dt(R)}finally{w(!1)}};async function Z(){d&&(F.current=await Y.getHandler().evalDomain({domain:d,values:at({fields:O(),values:x()}),fields:O(),context:T()})),S&&S.length>0&&(F.current=F.current.concat(se.transformDomainForChildWidget({domain:S,widgetFieldName:f}))),V(F.current)}async function J(H){H.keyCode===13?(H.preventDefault(),H.stopPropagation(),await W()):H.code==="Backspace"&&L!==void 0&&(H.preventDefault(),H.stopPropagation(),I([void 0,""]))}const N=o&&!a?Oa:p.Input;return e.jsxs(p.Row,{gutter:8,wrap:!1,children:[e.jsx(p.Col,{flex:"auto",children:e.jsx(N,{type:"text",value:b,disabled:a,onChange:B,style:h,onBlur:W,onKeyDown:J,suffix:e.jsx(Qt,{id:L,model:i,context:{...T==null?void 0:T(),...c}})})}),e.jsx(p.Col,{flex:"32px",style:{paddingRight:0},children:e.jsx(p.Button,{icon:e.jsx(K.FolderOpenOutlined,{}),disabled:L===void 0||M===""||b===void 0,onClick:()=>{y(!0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1})}),e.jsx(p.Col,{flex:"32px",style:{paddingLeft:0},children:e.jsx(p.Button,{icon:m?e.jsx(K.LoadingOutlined,{}):e.jsx(K.SearchOutlined,{}),disabled:a||m,onClick:()=>{D.current=!0,U(M)},style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},tabIndex:-1})}),e.jsx(er,{model:i,domain:$,context:{...T==null?void 0:T(),...c},visible:u,nameSearch:L?void 0:v,onSelectValues:H=>{g(!1),q(H[0]),D.current=!1,k.current=void 0},onCloseModal:()=>{g(!1),D.current=!1}}),e.jsx(dt,{model:i,parentContext:{...T==null?void 0:T(),...c},id:r&&r[0],visible:C,onSubmitSucceed:H=>{y(!1),q(H)},onCancel:()=>{y(!1)},mustClearAfterSave:!0,readOnly:a})]})},Oa=pt.default(p.Input)`
|
|
31
|
+
`,nn=t=>{const{visible:r,onCancel:n,items:s=[],onItemClicked:o}=t,{t:i}=l.useContext(ge);return e.jsx(p.Modal,{title:i("selectAction"),centered:!0,open:r,footer:null,destroyOnClose:!0,onCancel:n,maskClosable:!1,children:e.jsx(p.Space,{direction:"vertical",className:"w-full",children:s.map(a=>e.jsx(p.Button,{className:"w-full",onClick:()=>{o(a)},children:a.name}))})})},Rt=t=>{var x,b;const{id:r,model:n,context:s={}}=t,[o,i]=l.useState(!1),[a,c]=l.useState(!1),[f,d]=l.useState(!1),[h,u]=l.useState(),[g,C]=l.useState(),{t:y}=l.useContext(ge),m=l.useContext(Ge),{openRelate:w}=m||{},v=l.useContext(lt),{processAction:O}=v||{};if(!r)return null;async function D(){d(!0);try{const _=await Y.getHandler().getView({model:n,type:"form",context:s});u(_);const{fields:T,arch:P}=_,I=(await Y.getHandler().readObjects({model:n,ids:[r],fields:T,context:s}))[0];C({...it(I,T),active_id:r}),d(!1)}catch(_){d(!1),Ae(_);return}}function S(){var T;if(f)return e.jsx(p.Menu,{children:e.jsx("div",{style:{padding:15},children:e.jsx(p.Spin,{})})});if(!h||!h.toolbar)return e.jsx(p.Menu,{});const _=(T=h==null?void 0:h.toolbar)==null?void 0:T.relate.map(P=>e.jsx(p.Menu.Item,{children:P.name},P.id));return e.jsx(p.Menu,{onClick:V,children:[e.jsx(p.Menu.Item,{disabled:!h.toolbar.action||h.toolbar.action.length===0,icon:e.jsx(H.ThunderboltOutlined,{}),children:y("action")},"action"),e.jsx(p.Menu.Item,{disabled:!h.toolbar.print||h.toolbar.print.length===0,icon:e.jsx(H.PrinterOutlined,{}),children:y("report")},"print"),e.jsx(p.Menu.Divider,{}),e.jsx(p.Menu.ItemGroup,{title:e.jsxs(e.Fragment,{children:[e.jsx(H.EnterOutlined,{})," ",e.jsxs("span",{children:[" ",y("related")]})]}),children:_})]})}function V(_){if(_.key==="action")i(!0);else if(_.key==="print")c(!0);else{const T=h.toolbar.relate.find(P=>P.id===parseInt(_.key));if(!T)return;w({relateData:T,values:g,fields:h.fields,action_id:T.id,action_type:T.type})}}function k(_){i(!1),O==null||O({actionData:_,values:g,fields:h.fields,context:{active_id:r,active_ids:[r]}})}function L(_){c(!1),O==null||O({actionData:{..._,datas:{..._.datas||{},ids:[r]}},values:g,fields:h.fields})}return e.jsxs(e.Fragment,{children:[e.jsx(p.Dropdown,{overlay:S(),trigger:["click"],children:e.jsx(H.RightCircleOutlined,{style:{color:"rgba(0,0,0,.45)"},onClick:_=>{_.preventDefault(),D()}})}),e.jsx(nn,{visible:o,items:(x=h==null?void 0:h.toolbar)==null?void 0:x.action,onItemClicked:k,onCancel:()=>i(!1)}),e.jsx(nn,{visible:a,items:(b=h==null?void 0:h.toolbar)==null?void 0:b.print,onItemClicked:L,onCancel:()=>c(!1)})]})},sa=t=>{const{m2oField:r}=t;return r?e.jsxs(p.Space,{children:[e.jsx(e.Fragment,{children:r.value}),e.jsx(Rt,{id:r.id,model:r.model})]}):e.jsx(e.Fragment,{})},ia=t=>{const{value:r,context:n,selectionValues:s}=t,[o,i]=l.useState(),[a,c]=l.useState(!1),[f,d]=r?r.split(","):[],h=parseInt(d),u=l.useCallback(async()=>{if(!r||r&&o)return;c(!0);const C=await Y.getHandler().execute({action:"name_get",payload:[h],model:f,context:n});i(C[0][1]),c(!1)},[r,o]);if(l.useEffect(()=>{u()},[r]),!r&&!a)return e.jsx(e.Fragment,{});if(a)return e.jsx(H.LoadingOutlined,{});const g=s.get(f);return e.jsxs(p.Space,{children:[e.jsx(e.Fragment,{children:`${g}:`}),e.jsx(e.Fragment,{children:o}),e.jsx(Rt,{id:h,model:f})]})};var on={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Xe,function(){var n=1e3,s=6e4,o=36e5,i="millisecond",a="second",c="minute",f="hour",d="day",h="week",u="month",g="quarter",C="year",y="date",m="Invalid Date",w=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,v=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,O={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(I){var F=["th","st","nd","rd"],E=I%100;return"["+I+(F[(E-20)%10]||F[E]||F[0])+"]"}},D=function(I,F,E){var A=String(I);return!A||A.length>=F?I:""+Array(F+1-A.length).join(E)+I},S={s:D,z:function(I){var F=-I.utcOffset(),E=Math.abs(F),A=Math.floor(E/60),M=E%60;return(F<=0?"+":"-")+D(A,2,"0")+":"+D(M,2,"0")},m:function I(F,E){if(F.date()<E.date())return-I(E,F);var A=12*(E.year()-F.year())+(E.month()-F.month()),M=F.clone().add(A,u),B=E-M<0,$=F.clone().add(A+(B?-1:1),u);return+(-(A+(E-M)/(B?M-$:$-M))||0)},a:function(I){return I<0?Math.ceil(I)||0:Math.floor(I)},p:function(I){return{M:u,y:C,w:h,d,D:y,h:f,m:c,s:a,ms:i,Q:g}[I]||String(I||"").toLowerCase().replace(/s$/,"")},u:function(I){return I===void 0}},V="en",k={};k[V]=O;var L=function(I){return I instanceof T},x=function I(F,E,A){var M;if(!F)return V;if(typeof F=="string"){var B=F.toLowerCase();k[B]&&(M=B),E&&(k[B]=E,M=B);var $=F.split("-");if(!M&&$.length>1)return I($[0])}else{var W=F.name;k[W]=F,M=W}return!A&&M&&(V=M),M||!A&&V},b=function(I,F){if(L(I))return I.clone();var E=typeof F=="object"?F:{};return E.date=I,E.args=arguments,new T(E)},_=S;_.l=x,_.i=L,_.w=function(I,F){return b(I,{locale:F.$L,utc:F.$u,x:F.$x,$offset:F.$offset})};var T=function(){function I(E){this.$L=x(E.locale,null,!0),this.parse(E)}var F=I.prototype;return F.parse=function(E){this.$d=function(A){var M=A.date,B=A.utc;if(M===null)return new Date(NaN);if(_.u(M))return new Date;if(M instanceof Date)return new Date(M);if(typeof M=="string"&&!/Z$/i.test(M)){var $=M.match(w);if($){var W=$[2]-1||0,z=($[7]||"0").substring(0,3);return B?new Date(Date.UTC($[1],W,$[3]||1,$[4]||0,$[5]||0,$[6]||0,z)):new Date($[1],W,$[3]||1,$[4]||0,$[5]||0,$[6]||0,z)}}return new Date(M)}(E),this.$x=E.x||{},this.init()},F.init=function(){var E=this.$d;this.$y=E.getFullYear(),this.$M=E.getMonth(),this.$D=E.getDate(),this.$W=E.getDay(),this.$H=E.getHours(),this.$m=E.getMinutes(),this.$s=E.getSeconds(),this.$ms=E.getMilliseconds()},F.$utils=function(){return _},F.isValid=function(){return this.$d.toString()!==m},F.isSame=function(E,A){var M=b(E);return this.startOf(A)<=M&&M<=this.endOf(A)},F.isAfter=function(E,A){return b(E)<this.startOf(A)},F.isBefore=function(E,A){return this.endOf(A)<b(E)},F.$g=function(E,A,M){return _.u(E)?this[A]:this.set(M,E)},F.unix=function(){return Math.floor(this.valueOf()/1e3)},F.valueOf=function(){return this.$d.getTime()},F.startOf=function(E,A){var M=this,B=!!_.u(A)||A,$=_.p(E),W=function(se,ce){var Q=_.w(M.$u?Date.UTC(M.$y,ce,se):new Date(M.$y,ce,se),M);return B?Q:Q.endOf(d)},z=function(se,ce){return _.w(M.toDate()[se].apply(M.toDate("s"),(B?[0,0,0,0]:[23,59,59,999]).slice(ce)),M)},q=this.$W,X=this.$M,U=this.$D,N="set"+(this.$u?"UTC":"");switch($){case C:return B?W(1,0):W(31,11);case u:return B?W(1,X):W(0,X+1);case h:var K=this.$locale().weekStart||0,Z=(q<K?q+7:q)-K;return W(B?U-Z:U+(6-Z),X);case d:case y:return z(N+"Hours",0);case f:return z(N+"Minutes",1);case c:return z(N+"Seconds",2);case a:return z(N+"Milliseconds",3);default:return this.clone()}},F.endOf=function(E){return this.startOf(E,!1)},F.$set=function(E,A){var M,B=_.p(E),$="set"+(this.$u?"UTC":""),W=(M={},M[d]=$+"Date",M[y]=$+"Date",M[u]=$+"Month",M[C]=$+"FullYear",M[f]=$+"Hours",M[c]=$+"Minutes",M[a]=$+"Seconds",M[i]=$+"Milliseconds",M)[B],z=B===d?this.$D+(A-this.$W):A;if(B===u||B===C){var q=this.clone().set(y,1);q.$d[W](z),q.init(),this.$d=q.set(y,Math.min(this.$D,q.daysInMonth())).$d}else W&&this.$d[W](z);return this.init(),this},F.set=function(E,A){return this.clone().$set(E,A)},F.get=function(E){return this[_.p(E)]()},F.add=function(E,A){var M,B=this;E=Number(E);var $=_.p(A),W=function(X){var U=b(B);return _.w(U.date(U.date()+Math.round(X*E)),B)};if($===u)return this.set(u,this.$M+E);if($===C)return this.set(C,this.$y+E);if($===d)return W(1);if($===h)return W(7);var z=(M={},M[c]=s,M[f]=o,M[a]=n,M)[$]||1,q=this.$d.getTime()+E*z;return _.w(q,this)},F.subtract=function(E,A){return this.add(-1*E,A)},F.format=function(E){var A=this,M=this.$locale();if(!this.isValid())return M.invalidDate||m;var B=E||"YYYY-MM-DDTHH:mm:ssZ",$=_.z(this),W=this.$H,z=this.$m,q=this.$M,X=M.weekdays,U=M.months,N=function(ce,Q,R,ue){return ce&&(ce[Q]||ce(A,B))||R[Q].slice(0,ue)},K=function(ce){return _.s(W%12||12,ce,"0")},Z=M.meridiem||function(ce,Q,R){var ue=ce<12?"AM":"PM";return R?ue.toLowerCase():ue},se={YY:String(this.$y).slice(-2),YYYY:_.s(this.$y,4,"0"),M:q+1,MM:_.s(q+1,2,"0"),MMM:N(M.monthsShort,q,U,3),MMMM:N(U,q),D:this.$D,DD:_.s(this.$D,2,"0"),d:String(this.$W),dd:N(M.weekdaysMin,this.$W,X,2),ddd:N(M.weekdaysShort,this.$W,X,3),dddd:X[this.$W],H:String(W),HH:_.s(W,2,"0"),h:K(1),hh:K(2),a:Z(W,z,!0),A:Z(W,z,!1),m:String(z),mm:_.s(z,2,"0"),s:String(this.$s),ss:_.s(this.$s,2,"0"),SSS:_.s(this.$ms,3,"0"),Z:$};return B.replace(v,function(ce,Q){return Q||se[ce]||$.replace(":","")})},F.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},F.diff=function(E,A,M){var B,$=_.p(A),W=b(E),z=(W.utcOffset()-this.utcOffset())*s,q=this-W,X=_.m(this,W);return X=(B={},B[C]=X/12,B[u]=X,B[g]=X/3,B[h]=(q-z)/6048e5,B[d]=(q-z)/864e5,B[f]=q/o,B[c]=q/s,B[a]=q/n,B)[$]||q,M?X:_.a(X)},F.daysInMonth=function(){return this.endOf(u).$D},F.$locale=function(){return k[this.$L]},F.locale=function(E,A){if(!E)return this.$L;var M=this.clone(),B=x(E,A,!0);return B&&(M.$L=B),M},F.clone=function(){return _.w(this.$d,this)},F.toDate=function(){return new Date(this.valueOf())},F.toJSON=function(){return this.isValid()?this.toISOString():null},F.toISOString=function(){return this.$d.toISOString()},F.toString=function(){return this.$d.toUTCString()},I}(),P=T.prototype;return b.prototype=P,[["$ms",i],["$s",a],["$m",c],["$H",f],["$W",d],["$M",u],["$y",C],["$D",y]].forEach(function(I){P[I[1]]=function(F){return this.$g(F,I[0],I[1])}}),b.extend=function(I,F){return I.$i||(I(F,T,b),I.$i=!0),b},b.locale=x,b.isDayjs=L,b.unix=function(I){return b(1e3*I)},b.en=k[V],b.Ls=k,b.p={},b})})(on);const je=on.exports,aa=t=>{console.log("Avatar Props",t);const{ooui:r,value:n}=t;if(!n)return null;let s=n;r.selectionValues.size?s=r.selectionValues.get(n):Array.isArray(n)&&(s=n[1]);const o=s.toString().split(" ").filter(a=>a.length>1).slice(0,3).map(a=>a[0].toUpperCase()).join(""),i=_t(s);return e.jsx(p.Tooltip,{title:s,children:e.jsx(p.Avatar,{alt:s,style:{backgroundColor:i},children:o})})},sn=t=>e.jsx(me,{...t,children:e.jsx(an,{...t})}),an=t=>{const{ooui:r,value:n}=t;let s=n,o=n;if(r.selectionValues.size?s=r.selectionValues.get(n):Array.isArray(n)&&(o=n[0],s=n[1]),!n)return null;const i=r.colors==="auto"?_t(o):r.colors[o]||_t(o);return e.jsx(p.Tag,{color:i,style:uo.isPresetStatusColor(i)?{}:{color:Gr(i)},children:s})};var ln={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Xe,function(){return function(n,s){s.prototype.weekday=function(o){var i=this.$locale().weekStart||0,a=this.$W,c=(a<i?a+7:a)-i;return this.$utils().u(o)?c:this.subtract(c,"day").add(o,"day")}}})})(ln);const la=ln.exports;var cn={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Xe,function(){return function(n,s,o){var i=s.prototype,a=function(u){return u&&(u.indexOf?u:u.s)},c=function(u,g,C,y,m){var w=u.name?u:u.$locale(),v=a(w[g]),O=a(w[C]),D=v||O.map(function(V){return V.slice(0,y)});if(!m)return D;var S=w.weekStart;return D.map(function(V,k){return D[(k+(S||0))%7]})},f=function(){return o.Ls[o.locale()]},d=function(u,g){return u.formats[g]||function(C){return C.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(y,m,w){return m||w.slice(1)})}(u.formats[g.toUpperCase()])},h=function(){var u=this;return{months:function(g){return g?g.format("MMMM"):c(u,"months")},monthsShort:function(g){return g?g.format("MMM"):c(u,"monthsShort","months",3)},firstDayOfWeek:function(){return u.$locale().weekStart||0},weekdays:function(g){return g?g.format("dddd"):c(u,"weekdays")},weekdaysMin:function(g){return g?g.format("dd"):c(u,"weekdaysMin","weekdays",2)},weekdaysShort:function(g){return g?g.format("ddd"):c(u,"weekdaysShort","weekdays",3)},longDateFormat:function(g){return d(u.$locale(),g)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};i.localeData=function(){return h.bind(this)()},o.localeData=function(){var u=f();return{firstDayOfWeek:function(){return u.weekStart||0},weekdays:function(){return o.weekdays()},weekdaysShort:function(){return o.weekdaysShort()},weekdaysMin:function(){return o.weekdaysMin()},months:function(){return o.months()},monthsShort:function(){return o.monthsShort()},longDateFormat:function(g){return d(u,g)},meridiem:u.meridiem,ordinal:u.ordinal}},o.months=function(){return c(f(),"months")},o.monthsShort=function(){return c(f(),"monthsShort","months",3)},o.weekdays=function(u){return c(f(),"weekdays",null,null,u)},o.weekdaysShort=function(u){return c(f(),"weekdaysShort","weekdays",3,u)},o.weekdaysMin=function(u){return c(f(),"weekdaysMin","weekdays",2,u)}}})})(cn);const ca=cn.exports,{useToken:da}=p.theme;je.extend(la),je.extend(ca);const ze={date:{placeholder:"__/__/____",dateDisplayFormat:"DD/MM/YYYY",dateInternalFormat:"YYYY-MM-DD"},time:{placeholder:"__/__/____ __:__:__",dateDisplayFormat:"DD/MM/YYYY HH:mm:ss",dateInternalFormat:"YYYY-MM-DD HH:mm:ss"}},dn=t=>{const{ooui:r,showTime:n=!1}=t,{required:s}=r;return e.jsx(me,{required:s,...t,children:e.jsx(ua,{ooui:r,showTime:n})})},ua=t=>{const{value:r,onChange:n,ooui:s,showTime:o}=t,{id:i,readOnly:a,required:c}=s,{token:f}=da(),d=c&&!a?{backgroundColor:f.colorPrimaryBg}:void 0,h=o?"time":"date",u=y=>{n==null||n(y)},g=y=>{if(y===null){u(void 0);return}u(y.format(ze[h].dateInternalFormat))},C=r?je(r,ze[h].dateInternalFormat):void 0;return e.jsx(p.DatePicker,{style:{width:"100%",...d},placeholder:o?ze.time.placeholder:ze.date.placeholder,disabled:a,id:i,picker:"date",showTime:o,format:ze[h].dateDisplayFormat,value:C,onChange:g})},fa=t=>e.jsx("div",{style:{display:"flex",justifyContent:"center",alignContent:"center"},children:e.jsx(p.Checkbox,{checked:t,disabled:!0})}),ha=t=>e.jsx(sa,{m2oField:t}),pa=t=>e.jsx(Ht.Interweave,{content:t==null?void 0:t.replace(/(?:\r\n|\r|\n)/g,"<br>")}),ga=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=je(t,ze.date.dateInternalFormat).format(ze.date.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},ma=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=je(t,ze.time.dateInternalFormat).format(ze.time.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},un=t=>{const r=Array.isArray(t==null?void 0:t.items)?t==null?void 0:t.items.length:0;return e.jsx(e.Fragment,{children:`( ${r} )`})},ya=t=>e.jsx(rn,{value:t}),wa=t=>e.jsx(e.Fragment,{children:en(t)}),fn=t=>e.jsx("div",{style:{textAlign:"right"},children:t}),va=t=>e.jsx("img",{src:`data:image/*;base64,${t}`,style:{maxWidth:"50px",padding:"5px"}}),Ca=(t,r,n,s)=>e.jsx(an,{ooui:n,value:t}),Sa=(t,r,n,s)=>e.jsx(e.Fragment,{children:n.selectionValues.get(t)}),ba=(t,r,n,s)=>e.jsx(e.Fragment,{children:e.jsx(ia,{value:t,selectionValues:n.selectionValues,context:s})}),xa=(t,r,n,s)=>e.jsx(aa,{ooui:n,value:t});function Ct(t){const{page:r=1,limit:n,total:s,treeView:o,results:i,onRequestPageChange:a,loading:c,onRowClicked:f,showPagination:d=!0,rowSelection:h,scrollY:u,colorsForResults:g={},onChangeSort:C,sorter:y,onFetchChildrenForRecord:m,childField:w,rootTree:v=!1,context:O,readonly:D}=t,[S,V]=l.useState([]),[k,L]=l.useState([]),x=l.useRef(!1),b=l.useRef(null),{t:_}=l.useContext(ge),T=l.useRef(n),P=l.useContext(He),{title:I=void 0,setTitle:F=void 0}=(v?P:{})||{};l.useEffect(()=>{b.current=ot(o);const q=Xs(b.current,{boolean:fa,many2one:ha,text:pa,one2many:un,many2many:un,progressbar:ya,float_time:wa,image:va,integer:fn,float:fn,reference:ba,tag:Ca,selection:Sa,date:ga,datetime:ma,avatar:xa},O);L(q),b.current.string&&I!==b.current.string&&(F==null||F(b.current.string))},[o]),l.useEffect(()=>{x.current=!1;const q=Yr(b.current,i);V(q),T.current=n},[i]);const E=(r-1)*T.current+1,A=E-1+S.length,M=s===void 0?null:s===0?_("no_results"):_("summary").replace("{from}",E==null?void 0:E.toString()).replace("{to}",A==null?void 0:A.toString()).replace("{total}",s==null?void 0:s.toString()),B=()=>!d||o.isExpandable||c?null:s===void 0?e.jsx(p.Spin,{className:"pb-4"}):e.jsxs(p.Row,{align:"bottom",className:"pb-4",children:[e.jsx(p.Col,{span:12,children:e.jsx(p.Pagination,{total:s,pageSize:T.current===0?s:T.current,current:r,showSizeChanger:!1,onChange:a})}),e.jsx(p.Col,{span:12,className:"text-right",children:M})]});function $(){var K;const X=b.current.columns.filter(Z=>Z.sum!==void 0).map(Z=>({label:Z.sum,field:Z.id}));if(!X||X.length===0)return null;let U=[],N=((K=h==null?void 0:h.selectedRowKeys)==null?void 0:K.length)>0?S.filter(Z=>h==null?void 0:h.selectedRowKeys.includes(Z.id)):S;return X.forEach(Z=>{const se=N.reduce((ce,Q)=>Q[Z.field]&&!isNaN(Q[Z.field])?ce+Q[Z.field]:ce,0);U.push(`${Z.label}: ${Math.round(se*100)/100}`)}),e.jsx("div",{className:"p-1 pb-0 pl-2 mt-2 ",children:U.join(", ")})}let W,z=u;if(b.current!==null){W=ra(k,S,600);const X=b.current;u&&X.columns.some(U=>U.sum!==void 0)&&(z=u-30)}return b.current===null?e.jsx(p.Spin,{style:{padding:"2rem"}}):e.jsxs("div",{children:[B(),e.jsx(lo.Table,{height:z,columns:W.columns,dataSource:S,loading:c,loadingComponent:e.jsx(p.Spin,{}),onRowStyle:q=>{if(g[q.id])return{color:g[q.id]}},onRowDoubleClick:f,onRowSelectionChange:h==null?void 0:h.onChange,onChangeSort:C,sorter:y,readonly:D,expandableOpts:m?{expandIcon:H.PlusSquareOutlined,collapseIcon:H.MinusSquareOutlined,loadingIcon:H.LoadingOutlined,onFetchChildrenForRecord:m,childField:w}:void 0}),$()]})}function Ta(t,r){const{model:n,formView:s,treeView:o,onRowClicked:i,nameSearch:a,treeScrollY:c,domain:f=[],visible:d=!0,rootTree:h=!1,parentContext:u={},onChangeSelectedRowKeys:g}=t,[C,y]=l.useState(!1),[m,w]=l.useState(!1),v=l.useRef(!1),[O,D]=l.useState(),[S,V]=l.useState(),[k,L]=l.useState(),[x,b]=l.useState(),[_,T]=l.useState(200),P=l.useRef(),{height:I}=Tt(),F=l.useContext(lt),{processAction:E}=F||{},A=l.useContext(He),{setResults:M=void 0,setCurrentItemIndex:B=void 0,currentId:$=void 0,results:W=void 0,selectedRowItems:z=void 0,setSelectedRowItems:q=void 0,searchParams:X=[],setSearchParams:U=void 0,searchVisible:N=!0,setSearchVisible:K=void 0,sorter:Z=void 0,setSorter:se=void 0,setTotalItems:ce=void 0,setSearchTreeNameSearch:Q=void 0,setTreeIsLoading:R=void 0,searchValues:ue={},setSearchValues:ve=void 0,limit:Me=wt,setLimit:xe=void 0}=(h?A:{})||{},{submit:de,clear:ae,fetchResults:we,tableRefreshing:De,searchFilterLoading:be,searchError:Ve,page:Ke,offset:Ie,getResults:te,requestPageChange:Te,changeSort:Ee,fetchChildrenForRecord:ye,colorsForResults:Ce,totalItems:Fe}=Zr({model:O,setSearchTreeNameSearch:Q,setSelectedRowItems:q,setSearchParams:U,setSearchValues:ve,searchParams:X,setSearchVisible:K,setTreeIsLoading:R,nameSearch:a,searchNameGetDoneRef:v,context:u,formView:k,treeView:S,sorter:Z,setSorter:se,setCurrentItemIndex:B,setResultsActionView:M,resultsActionView:W,domain:f,currentId:$,setActionViewTotalItems:ce,limit:Me,setLimit:xe});l.useImperativeHandle(r,()=>({refreshResults:()=>{v.current=!1,we()},getFields:()=>S==null?void 0:S.fields,getDomain:()=>f})),l.useEffect(()=>{!m||d&&(v.current=!1,we())},[Ke,Ie,m,d,a]);const fe=async()=>{w(!1),y(!0),b(void 0),R==null||R(!0);try{await qe(),w(!0)}catch(ie){b(ie)}finally{y(!1),R==null||R(!1)}},qe=async()=>{D(n);let ie=s;s||(ie=await Y.getHandler().getView({model:n,type:"form",context:u}));let Pe=o;o||(Pe=await Y.getHandler().getView({model:n,type:"tree",context:u})),L(ie),V(Pe)};l.useEffect(()=>{fe()},[n]);const $e=ie=>{xe==null||xe(ie)},Je=async ie=>{const{id:Pe}=ie;P.current||(P.current=await Y.getHandler().treeButOpen({id:S.view_id,model:O,context:u}));const Ze=P.current[0][2];await(E==null?void 0:E({actionData:Ze,fields:S.fields,values:{active_id:Pe,...ie},context:u}))},ee=async ie=>{const{id:Pe}=ie;if(S!=null&&S.isExpandable){try{await Je(ie)}catch(Ze){Ae(Ze)}return}i({id:Pe,model:O,formView:k,treeView:S})};function le(ie){const Pe=te().filter(Ze=>ie.includes(Ze.id));q==null||q(Pe),g==null||g(ie)}function Oe(){return S!=null&&S.isExpandable?I-160:I-(_+210)}const he=()=>!S||!k?null:e.jsxs(e.Fragment,{children:[e.jsx(Qt,{fields:{...S.fields,...k.fields},searchFields:Wr([k.search_fields,S.search_fields]),formXml:k.arch,onClear:ae,limit:Me,offset:Ie,isSearching:be,onSubmit:de,onLimitChange:$e,setSearchFilterHeight:T,searchError:Ve,searchVisible:N,searchValues:ue}),e.jsx(Ct,{context:u,total:Fe,limit:Me,page:Ke,treeView:S,results:te(),onRequestPageChange:Te,loading:De,onRowClicked:ee,scrollY:c||Oe(),colorsForResults:Ce,rowSelection:{selectedRowKeys:z==null?void 0:z.map(ie=>ie.id),onChange:le},sorter:Z,onChangeSort:Ee,onFetchChildrenForRecord:S.isExpandable?ye:void 0,childField:S.field_parent,rootTree:h})]}),pe=x||Ve;return pe?e.jsx(p.Alert,{className:"mt-10",message:pe,type:"error",banner:!0}):e.jsx("div",{style:d?{}:{display:"none"},children:C?e.jsx(p.Spin,{}):he()})}const er=l.forwardRef(Ta),tr=t=>{const{visible:r,onCloseModal:n,onSelectValues:s,model:o,nameSearch:i,domain:a,context:c={}}=t,[f,d]=l.useState(!1),{modalWidth:h,modalHeight:u}=Tt(),{t:g}=l.useContext(ge),[C,y]=l.useState([]),m=async()=>{await new Promise(D=>setTimeout(D,5)),n()},w=async D=>{const{id:S}=D;s([S])};function v(){if(C.length===0){m();return}s(C)}const O=()=>e.jsxs(e.Fragment,{children:[e.jsx(er,{model:o,nameSearch:i,onRowClicked:w,treeScrollY:u*.3,domain:a,parentContext:c,onChangeSelectedRowKeys:D=>{y(D)}}),e.jsx(p.Divider,{}),e.jsx(p.Row,{justify:"end",children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.FileAddOutlined,{}),onClick:()=>{d(!0)},children:g("new")}),e.jsx(p.Button,{icon:e.jsx(H.CheckOutlined,{}),onClick:()=>{v()},type:"primary",children:g("ok")}),e.jsx(p.Button,{icon:e.jsx(H.CloseOutlined,{}),onClick:m,children:g("cancel")})]})})]});return e.jsxs(e.Fragment,{children:[e.jsx(p.Modal,{title:g("search"),centered:!0,width:h,open:r&&!f,closable:!0,onCancel:m,footer:null,destroyOnClose:!0,maskClosable:!1,children:O()}),e.jsx(dt,{model:o,visible:f,parentContext:c,onSubmitSucceed:D=>{d(!1),m(),s([D])},onCancel:()=>{d(!1),m()}})]})},{error:Fa}=p.Modal,kt=t=>{Fa({title:"Error",icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:t})},{defaultAlgorithm:Oa,defaultSeed:_a}=p.theme,hn=Oa(_a),pn=t=>{const{ooui:r}=t,{required:n}=r,s=async(o,i)=>{if(!i)throw new Error;if(!Array.isArray(i))throw new Error;if(Array.isArray(i)&&!i[0])throw new Error};return e.jsx(me,{required:n,type:"array",validator:s,...t,children:e.jsx(gn,{ooui:r})})},gn=t=>{const{value:r,onChange:n,ooui:s}=t,{required:o,relation:i,readOnly:a,context:c,id:f,domain:d}=s,h=o&&!a?{backgroundColor:hn.colorPrimaryBg}:void 0,[u,g]=l.useState(!1),[C,y]=l.useState(!1),[m,w]=l.useState(!1),[v,O]=l.useState(),D=l.useRef(!1),[S,V]=l.useState(""),k=l.useRef(),L=l.useContext(ke),{domain:x,getValues:b,getFields:_,getContext:T,elementHasLostFocus:P}=L||{},I=l.useRef([]),[F,E]=l.useState([]),A=r&&r[0]||void 0,M=r&&r[1]||"";l.useEffect(()=>{!Array.isArray(r)&&r&&q(r)},[r]),l.useEffect(()=>{A&&M.length===0?q(A):A&&M.length>0?V(M):!A&&!M&&V(k.current||"")},[r]);const B=K=>{n==null||n(K),P==null||P()},$=K=>{k.current=K.target.value,B([void 0,""])},W=async()=>{if(!m&&S!==M){if(await new Promise(K=>setTimeout(K,100)),D.current){B([void 0,""]);return}w(!0);try{if(I.current&&I.current.length>0)z(k.current);else{const K=await Y.getHandler().nameSearch({model:i,payload:k.current,context:{...T==null?void 0:T(),...c}});K.length===1?(k.current=void 0,B(K[0])):z(k.current)}}catch(K){kt(K)}finally{w(!1)}}},z=async K=>{if(await X(),I.current&&I.current.length>0){const Z=await Y.getHandler().searchAllIds({params:I.current,model:i,context:{...T==null?void 0:T(),...c},totalItems:2});Z.length===1?q(Z[0]):(O(K),g(!0));return}O(K),g(!0)},q=async K=>{w(!0);try{const Z=await Y.getHandler().execute({action:"name_get",payload:[K],model:i,context:{...T==null?void 0:T(),...c}});B([K,Z[0][1]])}catch(Z){kt(Z)}finally{w(!1)}};async function X(){d&&(I.current=await Y.getHandler().evalDomain({domain:d,values:at({fields:_(),values:b()}),fields:_(),context:T()})),x&&x.length>0&&(I.current=I.current.concat(oe.transformDomainForChildWidget({domain:x,widgetFieldName:f}))),E(I.current)}async function U(K){K.keyCode===13?(K.preventDefault(),K.stopPropagation(),await W()):K.code==="Backspace"&&A!==void 0&&(K.preventDefault(),K.stopPropagation(),B([void 0,""]))}const N=o&&!a?Da:p.Input;return e.jsxs(p.Row,{gutter:8,wrap:!1,children:[e.jsx(p.Col,{flex:"auto",children:e.jsx(N,{type:"text",value:S,disabled:a,onChange:$,style:h,onBlur:W,onKeyDown:U,suffix:e.jsx(Rt,{id:A,model:i,context:{...T==null?void 0:T(),...c}})})}),e.jsx(p.Col,{flex:"32px",style:{paddingRight:0},children:e.jsx(p.Button,{icon:e.jsx(H.FolderOpenOutlined,{}),disabled:A===void 0||M===""||S===void 0,onClick:()=>{y(!0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1})}),e.jsx(p.Col,{flex:"32px",style:{paddingLeft:0},children:e.jsx(p.Button,{icon:m?e.jsx(H.LoadingOutlined,{}):e.jsx(H.SearchOutlined,{}),disabled:a||m,onClick:()=>{D.current=!0,z(M)},style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},tabIndex:-1})}),e.jsx(tr,{model:i,domain:F,context:{...T==null?void 0:T(),...c},visible:u,nameSearch:A?void 0:v,onSelectValues:K=>{g(!1),q(K[0]),D.current=!1,k.current=void 0},onCloseModal:()=>{g(!1),D.current=!1}}),e.jsx(dt,{model:i,parentContext:{...T==null?void 0:T(),...c},id:r&&r[0],visible:C,onSubmitSucceed:K=>{y(!1),q(K)},onCancel:()=>{y(!1)},mustClearAfterSave:!0,readOnly:a})]})},Da=pt.default(p.Input)`
|
|
32
32
|
.ant-input {
|
|
33
|
-
background-color: ${
|
|
33
|
+
background-color: ${hn.colorPrimaryBg};
|
|
34
34
|
}
|
|
35
|
-
`,gn=Pe.default.createContext(null),_a=({children:t,initialView:r})=>{const[n,s]=l.useState(r),[o,i]=l.useState(0),[a,c]=l.useState(!1);return e.jsx(gn.Provider,{value:{currentView:n,setCurrentView:s,itemIndex:o,setItemIndex:i,manualTriggerChange:a,setManualTriggerChange:c},children:t})},{getValueForOperator:mn}=se.graphProcessor,kt=.7,Mt=30,yn=t=>{const{model:r,domain:n,context:s,colorCondition:o,totalDomain:i,showPercent:a=!1,icon:c,suffix:f,field:d,operator:h,manualIds:u}=t,[g,C]=l.useState(!1),[y,m]=l.useState(),[w,v]=l.useState(),[_,D]=l.useState(),[b,E]=l.useState(0),[k,A]=l.useState(0),[S,x]=l.useState(),[O,T]=l.useState(),[P,F]=l.useState();l.useEffect(()=>{L()},[r,o]);async function $({domain:M,isTotal:I}){if(I)return await V({domain:M});if(d&&h){const B=u||await Y.getHandler().searchAllIds({params:M,model:r,context:s}),W=await Y.getHandler().readObjects({model:r,ids:B,fieldsToRetrieve:[d],context:s});return mn({values:W.map(U=>U[d]),operator:h})}else return u?u.length:await Y.getHandler().searchCount({model:r,params:M,context:s})}async function V({domain:M}){if(d&&h){const I=await Y.getHandler().searchAllIds({params:M,model:r,context:s}),B=await Y.getHandler().readObjects({model:r,ids:I,fieldsToRetrieve:[d],context:s});return mn({values:B.map(W=>W[d]),operator:h})}else return await Y.getHandler().searchCount({model:r,params:M,context:s})}async function L(){C(!0);let M,I;try{const B=await $({domain:n,isTotal:!1});if(m(B),i){const W=await Y.getHandler().evalDomain({domain:i,values:{},context:s});M=await $({domain:W,isTotal:!0}),D(M)}if(M?(I=Math.round(B/M*100*100)/100,v(I)):v(0),o){const W=await Y.getHandler().parseCondition({condition:o,values:{value:B,percent:I},context:s});x(W)}if(c)if(c.indexOf(":")!==-1){const W=await Y.getHandler().parseCondition({condition:c,values:{value:B,percent:I},context:s});T(W)}else T(c)}catch(B){F(JSON.stringify(B))}C(!1)}return P?e.jsx(p.Alert,{className:"mt-10",message:P,type:"error",banner:!0}):g?e.jsx("div",{style:{padding:"1rem"},children:e.jsx(K.LoadingOutlined,{style:{height:"12px"}})}):e.jsx(Kt.default,{bounds:!0,onResize:M=>{var I,B;E((I=M.bounds)==null?void 0:I.height),A((B=M.bounds)==null?void 0:B.width)},children:({measureRef:M})=>a?e.jsx(ka,{value:y,total:_,percent:w,measureRef:M,height:b,width:k,color:S,icon:O,suffix:f}):e.jsx(Da,{value:y,total:_,measureRef:M,height:b,width:k,color:S,icon:O,suffix:f})})};function wn(t,r){const s=document.createElement("canvas").getContext("2d");return s.font=r||getComputedStyle(document.body).font,s.measureText(t).width}function Da({measureRef:t,width:r,height:n,total:s,value:o,color:i,icon:a,suffix:c}){let f=n*kt<Mt?Mt:n*kt;const d=o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0});let h=s?`${d}/${s}`:`${d}`;c&&(h+=" "+c);let u=wn(h,`bold ${Math.floor(f*1.03)}px sans-serif`);a&&(u=u*2),u>=r*.85&&(f=r*.85/u*f);const g=a&&We(a);return e.jsx("div",{ref:t,style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},children:e.jsxs(Yt.default,{style:{fontSize:f,margin:0,color:i},children:[g&&e.jsx(g,{style:{fontSize:f*.7}}),g?` ${h}`:h]})})}function ka({measureRef:t,height:r,width:n,percent:s,total:o,value:i,color:a,icon:c,suffix:f}){const d=r*.65;let h=d*kt<Mt?Mt:d*kt;const u=i==null?void 0:i.toLocaleString("es-ES",{useGrouping:!0});let g=o?`${u}/${o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0})}`:`${u}`;f&&(g+=" "+f);const C=`${s==null?void 0:s.toLocaleString("es-ES",{useGrouping:!0})}%`;let y=wn(C,`bold ${Math.floor(h*1.03)}px sans-serif`);c&&(y=y*1.5);const m=c&&We(c);return(y>=n*.85||h*2<d)&&(h=n*.85/y*h),e.jsx("div",{ref:t,style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden",flexDirection:"column",padding:"0.2rem"},children:e.jsxs(p.Row,{align:"middle",children:[m&&e.jsx(p.Col,{style:{fontSize:h*1,color:a,paddingRight:"10px"},children:e.jsx(m,{})}),e.jsxs(p.Col,{children:[e.jsx(Yt.default,{style:{fontSize:h*.8,margin:0,color:a},children:m?` ${s}%`:`${s}%`}),e.jsx(Yt.default,{style:{fontSize:h*.4,margin:0,color:a,textAlign:"center"},children:g})]})]})})}const tr=t=>r=>{const n=r.value.toLocaleString("es-ES",{useGrouping:!0});return{name:t==="pie"?r.x:r.type,value:n}},Vt=t=>{if(typeof t=="string"&&Ma(t))return parseFloat(t).toLocaleString("es-ES",{useGrouping:!0});if(Va(t))return t.toLocaleString("es-ES",{useGrouping:!0});if(Ea(t)){const r=Ia(t);return r===null?t:Ze(t,Et.input[r]).format(Et.output[r])}else return t},Ma=t=>/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/.test(t),Va=t=>typeof t=="number"&&!isNaN(t),vn={default:{padding:"auto",xAxis:{tickCount:5,label:{formatter:Vt}},yAxis:{label:{formatter:Vt}},legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:tr("default")}},pie:{appendPadding:10,radius:.9,label:{type:"inner",offset:"-30%",content:({percent:t})=>`${(t*100).toFixed(0)}%`,style:{fontSize:14,textAlign:"center"}},legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:tr("pie")},interactions:[{type:"element-active"}]},barGrouped:{isGroup:!0,legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:tr("barGrouped")},xAxis:{label:{formatter:Vt}},yAxis:{label:{formatter:Vt}},label:{position:"middle",layout:[{type:"interval-adjust-position"},{type:"interval-hide-overlap"},{type:"adjust-color"}]}}};function Ea(t){return typeof t!="string"||t===void 0?!1:new Date(t).toString()!=="Invalid Date"}const Et={input:{hours:"YYYY-MM-DD HH:mm",days:"YYYY-MM-DD",weeks:"YYYY-[W]WW",months:"YYYY-MM",years:"YYYY"},output:{hours:"DD/MM/YYYY HH:mm",days:"DD/MM/YYYY",weeks:"[W]WW/YYYY",months:"MM/YYYY",years:"YYYY"}};function Ia(t){for(const r in Et.input)if(Ze(t,Et.input[r],!0).isValid())return r;return null}const{processGraphData:$a}=se.graphProcessor,{getFieldsToRetrieve:Aa}=se.graphFieldUtils,La=t=>{const{model:r,domain:n=[],context:s={},xml:o,limit:i,uninformedString:a,manualIds:c}=t,[f,d]=l.useState(!1),[h,u]=l.useState(),[g,C]=l.useState(),[y,m]=l.useState(),[w,v]=l.useState("line");return et.default(()=>{(async()=>{d(!0),u(void 0);const _=se.parseGraph(o);v(_.type||"line");const D=Aa({ooui:_});let b,E;try{({values:b,fields:E}=await Pa({model:r,domain:n,context:s,limit:i,order:_.timerange?_.x.name:null,fields:D,manualIds:c}))}catch(k){u("Error fetching graph data values: "+JSON.stringify(k)),d(!1);return}try{if(!b||!E){u("No values or fields returned"),d(!1);return}m(b);const k=$a({ooui:_,values:b,fields:E,options:{uninformedString:a}});C(k)}catch(k){u("Error processing graph data: "+k),d(!1);return}d(!1)})()},[o,r,i,s,n]),{loading:f,error:h,type:w,values:g,evaluatedEntries:y}};async function Na({model:t,context:r,fields:n}){return await Y.getHandler().getFields({model:t,context:r,fields:n})}async function Pa({fields:t,model:r,domain:n,context:s,order:o,limit:i,manualIds:a}){const c=await Na({model:r,context:s,fields:t});if(a){let d=await Y.getHandler().readObjects({model:r,ids:a,fieldsToRetrieve:t,context:s});return o&&(d=[...d].sort((h,u)=>h[o]-u[o])),{values:d,fields:c}}return{values:await Y.getHandler().search({model:r,params:n,fields:t,context:s,limit:i,order:o}),fields:c}}const Ba={line:Ht.Line,bar:Ht.Column,pie:Ht.Pie},Ha=t=>{var v;const{model:r,domain:n,context:s,xml:o,limit:i,manualIds:a}=t,{t:c}=l.useContext(ge),{error:f,loading:d,values:h,type:u,evaluatedEntries:g}=La({model:r,xml:o,limit:i,domain:n,context:s,uninformedString:c("uninformed"),manualIds:a});if(f)return e.jsx(p.Alert,{message:f,type:"error",banner:!0});if(d)return e.jsx(p.Spin,{});if(!h)return e.jsx(p.Alert,{message:"No data to display",type:"info"});const{data:C,isGroup:y,isStack:m}=h,w=Ba[u];return w?e.jsxs("div",{style:{padding:"1rem"},children:[e.jsx("p",{style:{textAlign:"right"},children:`${c("totalRegisters")} ${(v=g==null?void 0:g.length)==null?void 0:v.toLocaleString("es-ES",{useGrouping:!0})}`}),e.jsx(w,{...Ka({type:u,data:C,isGroup:y,isStack:m})})]}):e.jsx(e.Fragment,{children:`Unknown graph type: ${u}`})};function Ka(t){const{type:r,data:n,isGroup:s,isStack:o}=t;let i=vn[r];return i||(i=vn.default),i.data=n,r==="pie"?(i.colorField="x",i.angleField="value"):(i.xField="x",i.yField="value",i.seriesField="type",i.isGroup=s,o&&(i.isStack=!0,i.groupField="stacked")),i}const Ya=(t,r)=>{const{view_id:n,model:s,context:o,domain:i,limit:a,manualIds:c}=t,[f,d]=l.useState(!1),[h,u]=l.useState(),[g,C]=l.useState(),y=l.useContext(Be),{setGraphIsLoading:m=void 0}=y||{};l.useImperativeHandle(r,()=>({refresh:()=>{w()}})),l.useEffect(()=>{w()},[n]);async function w(){d(!0),m==null||m(!0);try{const v=await Y.getHandler().getView({model:s,id:n,type:"graph",context:o});C(v.arch);const _=se.parseGraph(v.arch);u(_)}catch(v){return console.error(v),e.jsx(e.Fragment,{children:JSON.stringify(v)})}d(!1),m==null||m(!1)}if(f)return e.jsx("div",{style:{width:"100%",display:"flex",height:"20%",justifyContent:"center",alignContent:"center",padding:"1rem"},children:e.jsx(K.LoadingOutlined,{style:{height:"12px"}})});if(!h)return null;switch(h.type){case"indicatorField":case"indicator":{const v=h,_=v.type==="indicatorField"?{field:v.field,operator:v.operator}:{};return e.jsx(yn,{showPercent:v.showPercent,totalDomain:v.totalDomain,colorCondition:v.color,model:s,context:o,domain:i,icon:v.icon,suffix:v.suffix,manualIds:c,..._})}case"line":case"bar":case"pie":return e.jsx(Ha,{model:s,context:o,domain:i,xml:g,limit:a,manualIds:c});default:return e.jsx(e.Fragment,{children:`Graph ${h.type} not implemented`})}},It=l.forwardRef(Ya),{confirm:Wa}=p.Modal,qa=({onOk:t,lang:r})=>{Wa({title:be("removeItems",r),icon:e.jsx(K.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmRemove",r),okText:be("yesConfirmRemove",r),onOk:t,cancelText:be("cancel",r)})},{confirm:Ga}=p.Modal,Ua=({onOk:t,lang:r})=>{Ga({title:be("unlinkItems",r),icon:e.jsx(K.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmUnlink",r),okText:be("yesConfirmUnlink",r),onOk:t,cancelText:be("cancel",r)})},{useToken:ja}=p.theme,za=t=>{const{title:r,readOnly:n,onCreateItem:s,onToggleViewMode:o,mode:i,onDelete:a,totalItems:c,currentItemIndex:f,onPreviousItem:d,onNextItem:h,isMany2Many:u,onSearchItem:g,selectedRowKeys:C,showCreateButton:y,showToggleButton:m}=t,{token:w}=ja();function v(){return e.jsx("div",{className:"inline-block w-3"})}function _(){return e.jsx("div",{className:"flex flex-grow h-8 text-white",style:{borderRadius:w.borderRadius,backgroundColor:w.colorPrimaryActive},children:e.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:e.jsx("span",{className:"pl-2 font-bold",children:r})})})}function D(){return e.jsx(Le,{tooltip:u?"Unlink":"Delete",icon:u?e.jsx(K.ApiOutlined,{}):e.jsx(K.DeleteOutlined,{}),onClick:a,disabled:c===0||n||i!=="form"&&C.length===0})}function b(){let k="_";return c===0?k="_":k=(f+1).toString(),e.jsxs("span",{className:"pl-1 pr-1",children:["(",k,"/",c,")"]})}function E(){return e.jsxs(e.Fragment,{children:[v(),e.jsx(Le,{tooltip:"Previous item",icon:e.jsx(K.LeftOutlined,{}),onClick:d}),b(),e.jsx(Le,{tooltip:"Next item",icon:e.jsx(K.RightOutlined,{}),onClick:h})]})}return e.jsxs("div",{className:"flex mb-2",children:[_(),e.jsxs("div",{className:"flex-none h-8 pl-2",children:[i!=="graph"&&y&&e.jsx(Le,{tooltip:"Create new item",icon:e.jsx(K.FileAddOutlined,{}),disabled:n,onClick:s}),u&&y&&e.jsx(Le,{tooltip:"Search existing item",icon:e.jsx(K.SearchOutlined,{}),disabled:n,onClick:g}),i!=="graph"&&v(),i!=="graph"&&D(),i==="form"&&E(),v(),m&&e.jsx(Le,{tooltip:"Toggle view mode",icon:e.jsx(K.AlignLeftOutlined,{}),onClick:o})]})]})},Ja={form:se.Form,tree:se.Tree,graph:It};function Za(t){const r=t.map(s=>s.id);return t.filter((s,o)=>{const{id:i}=s;return!r.includes(i,o+1)})}const Xa=t=>{var Ue;const{value:r,onChange:n,ooui:s,views:o}=t,{items:i=[]}=r||{},{currentView:a,setCurrentView:c,itemIndex:f,setItemIndex:d}=l.useContext(gn),h=l.useContext(_e),{activeId:u,getFields:g,getValues:C,getContext:y,domain:m}=h||{},{lang:w,t:v}=l.useContext(ge),[_,D]=l.useState(!1),[b,E]=l.useState(!1),[k,A]=l.useState(),[S,x]=l.useState(!1),[O,T]=l.useState(!1),[P,F]=l.useState(),[$,V]=l.useState([]),[L,M]=l.useState(!1),I=l.useRef([]),[B,W]=l.useState(),U=l.useRef(),[q,Z]=l.useState(void 0),{readOnly:J,relation:N,context:H,domain:R}=s,ie=s.type==="many2many",{id:ae}=s,ee=i.filter(Q=>(Q.values||Q.treeValues)&&Q.operation!=="pendingRemove"),X=l.useRef();l.useEffect(()=>{if(X.current!==a){X.current=a,pe();return}pe()},[i,a]);const pe=l.useCallback(()=>{(a==="form"&&i.some(Q=>!Q.values)||a==="tree"&&i.some(Q=>!Q.treeValues))&&De()},[i,a]);l.useEffect(()=>{oe()},[m]);const ye=Q=>{var fe,Te;n==null||n({fields:((fe=o.get("form"))==null?void 0:fe.fields)||((Te=o.get("tree"))==null?void 0:Te.fields),items:Za(Q)})},De=async()=>{await de(),f>ee.length-1&&f!==0&&d(0)},de=async Q=>{var fe,Te,le;E(!0),D(!1),A(void 0);try{const[Ce,he]=await jt({treeView:{arch:(fe=o.get("tree"))==null?void 0:fe.arch,fields:(Te=o.get("tree"))==null?void 0:Te.fields},formView:{fields:((le=o.get("form"))==null?void 0:le.fields)||{}},model:N,items:i,context:{...y==null?void 0:y(),...H},currentView:Q||a});return U.current||(U.current=Ce.map(Ae=>Ae.id)),(a||Q)==="tree"&&he&&Z(he),ye(Ce),Ce}catch(Ce){A(Ce)}finally{E(!1)}};async function oe(){R&&(I.current=await Y.getHandler().evalDomain({domain:R,values:at({fields:g(),values:C()}),fields:g(),context:y()})),m&&m.length>0&&(I.current=I.current.concat(se.transformDomainForChildWidget({domain:m,widgetFieldName:ae})))}const Se=()=>{const Q=Array.from(o.keys()),fe=Q[(Q.indexOf(a)+1)%Q.length];a==="form"?Me(()=>{c(fe)}):c(fe)},we=()=>{f>0&&(a==="form"?Me(()=>{d(f-1)}):d(f-1))},xe=()=>{const Q=ee.length;f<Q-1&&(a==="form"?Me(()=>{d(f+1)}):d(f+1))},Ee=async()=>{const Q=ee[f].id,fe=(await Y.getHandler().readObjects({model:N,ids:[Q],fields:o.get("form").fields,context:{...y==null?void 0:y(),...H}}))[0],Te=(await Y.getHandler().readObjects({model:N,ids:[Q],fields:o.get("tree").fields,context:{...y==null?void 0:y(),...H}}))[0],le=i.map(Ce=>Ce.id===Q?{...Ce,operation:"original",values:fe,treeValues:Te}:Ce);ye(le)},Me=Q=>{_?yt({lang:w,onOk:()=>{Ee(),Q(),D(!1)}}):Q()},He=()=>{if(ie){Ua({lang:w,onOk:()=>{a==="form"?ue():ve()}});return}qa({lang:w,onOk:()=>{a==="form"?ue():ve()}})},Ie=async()=>{const{inv_field:Q}=s;let fe;Q&&u&&(fe={[Q]:u}),a==="form"?Me(()=>{M(!0),F({defaultValues:fe}),x(!0)}):(M(!0),F({defaultValues:fe}),x(!0))},te=async()=>{a==="form"?Me(()=>{T(!0)}):T(!0)},ue=async()=>{E(!0),D(!1),A(void 0);try{if(ee[f].id>0){const Q=i.map(fe=>fe.id===ee[f].id?{...fe,operation:"pendingRemove"}:fe);ye(Q)}else ye(i.filter(Q=>Q.id!==ee[f].id))}catch(Q){A(Q)}d(0),E(!1)},ve=async()=>{const Q=ee.filter(fe=>$.includes(fe.id));E(!0),D(!1),A(void 0);try{const fe=Q.map(le=>le.id),Te=i.filter(le=>!(fe.includes(le.id)&&le.id<0)).map(le=>fe.includes(le.id)?{...le,operation:"pendingRemove"}:le);ye(Te)}catch(fe){A(fe)}d(0),E(!1)},Ve=(Q,fe,Te)=>{let le;if(Q)le=i.map(Ce=>Ce.id===Q?{id:Q,operation:Q>0?"pendingUpdate":"pendingCreate",values:{...Te,id:Q},treeValues:{...Te,id:Q}}:Ce);else{const Ce=Zs(i);le=i.concat({id:Ce,operation:"pendingCreate",values:{...Te,id:Ce},treeValues:{...Te,id:Ce}})}ye(le),L||x(!1)},ce=async Q=>{const{id:fe}=Q;let Te=i;const le=i.find(Ce=>Ce.id===fe);(le==null?void 0:le.values)===void 0&&(Te=await de("form")),F(Te.find(Ce=>Ce.id===fe)),M(!1),x(!0)},Fe=async Q=>{E(!0);let fe=i;const Te=Q.filter(le=>!i.find(Ce=>Ce.id===le));try{for(const le of Te){const Ce=(await Y.getHandler().readObjects({model:N,ids:[le],fields:o.get("form").fields,context:{...y==null?void 0:y(),...H}}))[0],he=(await Y.getHandler().readObjects({model:N,ids:[le],fields:o.get("tree").fields,context:{...y==null?void 0:y(),...H}}))[0];fe.push({id:le,operation:"pendingLink",values:Ce,treeValues:he})}ye(fe)}catch(le){A(le)}finally{E(!1)}};function ke(){const Q=Ja[a];if(a==="graph")return se.parseGraph(o.get("graph").arch).string;{const fe=new Q(o.get(a).fields);return fe.parse(o.get(a).arch),fe.string}}const Ge=()=>{var fe,Te,le,Ce;if(a==="form")return ee.length===0?v("noCurrentEntries"):a!==X.current&&i.some(he=>!he.values)?e.jsx(p.Spin,{}):e.jsx(ct,{formView:o.get("form"),values:(fe=ee[f])==null?void 0:fe.values,parentContext:{...y==null?void 0:y(),...H},model:N,id:(Te=ee[f])==null?void 0:Te.id,submitMode:"values",onFieldsChange:he=>{var ze;const Ae=(ze=ee[f])==null?void 0:ze.id,je=i.map(Re=>Re.id===Ae?{...Re,operation:Re.operation==="original"?"pendingUpdate":Re.operation,values:{...he,id:Ae},treeValues:{...he,id:Ae}}:Re);ye(je),D(!0)},readOnly:J});let Q=[];if(ee.some(he=>he.treeValues)&&(Q=B?st({resultsToSort:ee.map(he=>he.treeValues),sorter:B,fields:{...o.get("tree").fields,...((le=o.get("form"))==null?void 0:le.fields)||{}}}):ee.map(he=>he.treeValues)),a==="tree")return e.jsx(Ct,{total:ee.length,limit:ee.length,treeView:o.get("tree"),results:Q,loading:b,onRowClicked:((Ce=o.get("form"))==null?void 0:Ce.fields)!==void 0?ce:void 0,showPagination:!1,rowSelection:{selectedRowKeys:$,onChange:V},sorter:B,onChangeSort:W,context:{...y==null?void 0:y(),...H},colorsForResults:q});if(a==="graph"){const he=[[`${s.inv_field}`,"=",u]];return e.jsx(It,{view_id:o.get("graph").view_id,model:s.relation,domain:he,context:{...y==null?void 0:y(),...H},limit:0})}};if(k)return e.jsx(p.Alert,{className:"mt-10",message:k,type:"error",banner:!0});const Ke=L;return b?e.jsx(p.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(za,{mode:a,title:ke(),readOnly:J,isMany2Many:ie,formHasChanges:_,totalItems:ee.length,currentItemIndex:f,onDelete:He,onCreateItem:Ie,onToggleViewMode:Se,onPreviousItem:we,onNextItem:xe,onSearchItem:te,selectedRowKeys:$,showCreateButton:((Ue=o.get("form"))==null?void 0:Ue.fields)!==void 0,showToggleButton:o.size>1}),Ge(),e.jsx(dt,{formView:o.get("form"),model:N,id:P==null?void 0:P.id,submitMode:"values",values:P==null?void 0:P.values,defaultValues:P==null?void 0:P.defaultValues,visible:S,onSubmitSucceed:Ve,parentContext:{...y==null?void 0:y(),...H},onCancel:()=>{M(!1),x(!1)},readOnly:J,mustClearAfterSave:Ke}),e.jsx(er,{domain:I.current,model:N,context:{...y==null?void 0:y(),...H},visible:O,onSelectValues:async Q=>{T(!1),Fe(Q)},onCloseModal:()=>{T(!1)}})]})},Cn=t=>{const{ooui:r}=t,{mode:n,relation:s,views:o,required:i,context:a}=r;let c;const[f,d]=l.useState(!0),[h,u]=l.useState(),[g,C]=l.useState(new Map),y=l.useContext(_e),{getContext:m}=y||{};et.default(()=>{v()},[r]);const w=async D=>o&&o[D]?o[D]:await Y.getHandler().getView({model:s,type:D,context:{...m==null?void 0:m(),...a}}),v=async()=>{d(!0),u(void 0);try{if(n&&n.length>0){for(const D of n){const b=await w(D);g.set(D,b)}C(g)}else{const D=await w("form"),b=await w("tree");g.set("form",D),g.set("tree",b),C(g)}}catch(D){u(JSON.stringify(D))}finally{d(!1)}};if(n&&n.length>0?c=n[0]:c="tree",f)return e.jsx(p.Spin,{});if(h)return e.jsx(p.Alert,{className:"mt-10",message:h,type:"error",banner:!0});const _=async(D,b)=>{if(!b)throw new Error;if(!b.items)throw new Error;if(!Array.isArray(b.items))throw new Error;if(b.items.length===0)throw new Error};return e.jsx(_a,{initialView:c,children:e.jsx(me,{required:i,type:"array",validator:_,...t,children:e.jsx(Xa,{ooui:r,views:g})})})},{useToken:Qa}=p.theme,Sn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"number",...t,children:e.jsx(Ra,{ooui:r})})},Ra=t=>{const{ooui:r,value:n,onChange:s}=t,{id:o,readOnly:i,required:a}=r,{token:c}=Qa(),f=a&&!i?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useRef(),[h,u]=l.useState(),g=l.useContext(_e),{elementHasLostFocus:C}=g||{};l.useEffect(()=>{u(Rr(n))},[n]);const y=v=>{s==null||s(v)};function m(v){d.current=v.target.value,u(v.target.value)}async function w(){y(ta(h)),await new Promise(v=>setTimeout(v,300)),C==null||C()}return e.jsx(p.Input,{value:h,disabled:i,className:"w-full",style:f,id:o,placeholder:"00:00",onChange:m,onBlur:w})};function rr(t){const{ooui:r,showLabel:n=!0,responsiveBehaviour:s}=t,o=We(r.icon||"");return e.jsx(e.Fragment,{children:(r.label||o)&&n?e.jsx(hr.FieldSet,{label:r.label,icon:o,children:e.jsx(Jt,{container:r.container,responsiveBehaviour:s})}):e.jsx(Jt,{container:r.container,responsiveBehaviour:s})})}const{TabPane:el}=p.Tabs;function bn(t){const{ooui:r,responsiveBehaviour:n}=t,s=r.pages;function o(i){if(i){const a=We(i);return a&&e.jsx(a,{})}}return e.jsx(p.Tabs,{defaultActiveKey:"1",tabPosition:r.tabPosition,children:s.filter(i=>!i.invisible).map(i=>e.jsx(el,{tab:e.jsxs(e.Fragment,{children:[o(i.icon)," ",i.label]}),children:e.jsx(rr,{ooui:i,showLabel:!1,responsiveBehaviour:n})},i.label))})}const{useToken:tl}=p.theme,{TextArea:nr}=p.Input,xn=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o,height:i,translatable:a}=r,{token:c}=tl(),f=o&&!s?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useContext(_e),{elementHasLostFocus:h}=d||{};return e.jsx(me,{required:o,...t,children:a?e.jsx(rl,{field:n,height:i,requiredStyle:f}):e.jsx(nr,{disabled:s||a,style:{minHeight:i?i+"px":"100%",...f},rows:4,onBlur:h})})},rl=({value:t,field:r,requiredStyle:n,onChange:s,height:o})=>{const i=l.useContext(_e),{activeId:a,activeModel:c,fetchValues:f,formHasChanges:d,elementHasLostFocus:h}=i||{},[u,g]=l.useState(!1),{t:C}=l.useContext(ge);return a?e.jsxs(e.Fragment,{children:[e.jsx("div",{onClick:()=>{if(d!=null&&d()){Je(C("saveBeforeTranslate"));return}u||g(!0)},children:e.jsx(nr,{value:t,onChange:y=>{s==null||s(y.target.value)},style:{height:o?o+"px":"100%",cursor:"pointer",...n},id:r,disabled:!0,rows:4,onBlur:h})}),e.jsx(Fr,{id:a,model:c,field:r,visible:u,onCloseModal:()=>{g(!1)},onSubmitSucceed:()=>{g(!1),f==null||f()}})]}):e.jsxs(e.Fragment,{children:[e.jsx(p.Row,{gutter:8,wrap:!1,children:e.jsx(nr,{value:t,onChange:y=>{s==null||s(y.target.value)},style:{height:o?o+"px":"100%",...n},id:r,rows:4,onBlur:h})}),e.jsx(p.Row,{justify:"end",style:{paddingTop:5},children:e.jsx(Le,{tooltip:C("translate"),icon:e.jsx(K.TranslationOutlined,{}),onClick:async()=>{d!=null&&d()?Je(C("saveBeforeTranslate")):Je(C("enterTextBeforeTranslate"))},children:C("translate")})})]})},Tn=t=>{const{ooui:r}=t,{label:n,icon:s}=r,o=We(s||"");return e.jsx(p.Divider,{orientation:"left",className:"text-sm",children:(o||n)&&e.jsxs(p.Space,{children:[o?e.jsx(o,{}):null,n]})})},nl=({model:t,context:r,locale:n,selectedRegistersToExport:s,domain:o,limit:i,onClose:a})=>{const c=l.useRef({}),f=l.useRef(new Map),d=l.useCallback(async w=>{if(w.selectedKeys===void 0||w.selectedKeys.length===0){Je(be("selectAtLeastOneField",n));return}let v=o;w.registersAmount==="selected"&&(s==null?void 0:s.length)!==0&&(v=[["id","in",s==null?void 0:s.map(b=>b.id)]]);const{datas:_}=await Y.getHandler().exportData({model:t,fields:cl({keys:w.selectedKeys,fields:c.current}),domain:v,limit:w.registersAmount==="all"?0:i,context:r,format:w.exportType});a(),await new Promise(b=>setTimeout(b,200));const D=await nt(_);Tt(_,D.mime)},[n,t,o,i,r,a]),h=l.useCallback(async()=>{const w=await Y.getHandler().getFields({model:t,context:r,fields:[]});return c.current["/"]=w,Fn({fields:w})},[t,r,c]),u=l.useCallback(async w=>{const _=sr(w,c.current)[or(w)],D=_.relation,b=await Y.getHandler().getFields({model:D,context:r,fields:[]});for(const[E,k]of Object.entries(b))b[E].string=sl({parentTitle:_.string,title:k.string});return c.current[w]=b,Fn({fields:b,parentKey:w})},[c.current,t,r]),g=l.useCallback(async()=>{const w=await il({model:t,context:r}),v=await ll({predefinedExports:w,fields:c.current,onGetFieldChilds:u});return{predefinedExports:w.map(D=>({...D,fields:D.fields.map(b=>{const E=or(b.key),A=sr(b.key,c.current)[E];return{key:b.key,title:A.string}})})),keysWithChilds:v}},[c.current]),C=l.useCallback(async w=>{const v=await m("ir.exports"),_=await m("ir.exports.line"),D=await Y.getHandler().create({model:"ir.exports",values:{name:w.name,resource:t},fields:v,context:r});return await Promise.all(w.fields.map(async b=>await Y.getHandler().create({model:"ir.exports.line",values:{name:b.key,export_id:D},fields:_,context:r}))),{...w,id:D}},[]),y=l.useCallback(async w=>{await Y.getHandler().delete({model:"ir.exports",ids:[w.id]})},[]),m=l.useCallback(async w=>{if(f.current.has(w))return f.current.get(w);const v=Y.getHandler().getFields({model:w,context:r,fields:[]});f.current.set(w,v)},[f,r]);return{onGetFields:h,onGetFieldChilds:u,onExport:d,onGetPredefinedExports:g,onSavePredefinedExport:C,onRemovePredefinedExport:y}},Fn=({fields:t,parentKey:r})=>{const n=[];for(const s of Object.keys(t)){const o=t[s];if(o.relation&&o.is_function===!0)continue;const i=On(o);n.push({key:ol({key:s,parentKey:r}),title:o.string,tooltip:o.help,required:o.required,isLeaf:!i})}return n},On=t=>t.type==="many2one"||t.type==="one2many"||t.type==="many2many",ol=({parentKey:t,key:r})=>`${t?t+"/":""}${r}`,St=t=>t.indexOf("/")===-1?t:t.split("/").slice(0,-1).join("/"),or=t=>{if(t.indexOf("/")===-1)return t;const r=t.split("/");return r[r.length-1]},sr=(t,r)=>t.indexOf("/")===-1?r["/"]:r[St(t)],sl=({title:t,parentTitle:r})=>`${r?r+" \u2192 ":""}${t}`,il=async({model:t,context:r})=>{const n=await Y.getHandler().search({model:"ir.exports",params:[["resource","=",t]],context:r}),s=n.flatMap(i=>i.export_fields),o=await Y.getHandler().readObjects({model:"ir.exports.line",ids:s,context:r});return n.map(i=>({id:i.id,name:i.name,fields:i.export_fields.map(a=>({key:o.find(f=>f.id===a).name}))}))},al=({fields:t,keys:r})=>dl([...new Set(r.filter(n=>{var s,o,i;if(n.indexOf("/")===-1)return!((s=t["/"])!=null&&s[n]);{const a=St(n);console.log({key:n,parentKey:a,fields:t});const c=(o=t==null?void 0:t[St(n)])==null?void 0:o[n];return console.log({exists:c}),!((i=t==null?void 0:t[St(n)])!=null&&i[n])}}).map(n=>St(n)))]),ll=async({predefinedExports:t,fields:r,onGetFieldChilds:n})=>{const s=t.flatMap(a=>a.fields.map(c=>c.key)),o=al({fields:r,keys:s}),i=[];for(const a of o)i.push({key:a,childs:await n(a)});return i},cl=({keys:t,fields:r})=>t.map(n=>{const s=or(n),i=sr(n,r)[s];return On(i)?`${n}/id`:n}),dl=t=>{const r=new Map,n=[];for(const s of t){const o=s.split("/");let i="";for(const a of o){const c=i?`${i}/${a}`:a;r.has(c)||(n.push(c),r.set(c,!0)),i=c}}return n.sort((s,o)=>{const i=s.split("/").length,a=o.split("/").length;return i-a}),n},_n=t=>{const{visible:r,locale:n,onClose:s,model:o,context:i,selectedRegistersToExport:a,totalRegisters:c,domain:f,limit:d,visibleRegisters:h}=t,{onExport:u,onGetFieldChilds:g,onGetFields:C,onGetPredefinedExports:y,onSavePredefinedExport:m,onRemovePredefinedExport:w}=nl({model:o,context:i,domain:f,limit:d,selectedRegistersToExport:a,onClose:s,locale:n});return e.jsx(hr.ExportModal,{visible:r,locale:n,onSucceed:u,onCancel:s,selectedRegistersToExport:a&&a.length&&a.length>0?a.length:void 0,totalRegisters:c,onGetFieldChilds:g,onGetFields:C,visibleRegisters:h,onGetPredefinedExports:y,onSavePredefinedExport:m,onRemovePredefinedExport:w})},Dn=t=>{const{ooui:r}=t;return e.jsx(cn,{ooui:r})},kn=t=>{const{ooui:r}=t;return e.jsx(cn,{ooui:r,showTime:!0})};var Mn={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Qe,function(){var n={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},s=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,o=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,c={},f=function(m){return(m=+m)+(m>68?1900:2e3)},d=function(m){return function(w){this[m]=+w}},h=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=function(w){if(!w||w==="Z")return 0;var v=w.match(/([+-]|\d\d)/g),_=60*v[1]+(+v[2]||0);return _===0?0:v[0]==="+"?-_:_}(m)}],u=function(m){var w=c[m];return w&&(w.indexOf?w:w.s.concat(w.f))},g=function(m,w){var v,_=c.meridiem;if(_){for(var D=1;D<=24;D+=1)if(m.indexOf(_(D,0,w))>-1){v=D>12;break}}else v=m===(w?"pm":"PM");return v},C={A:[a,function(m){this.afternoon=g(m,!1)}],a:[a,function(m){this.afternoon=g(m,!0)}],S:[/\d/,function(m){this.milliseconds=100*+m}],SS:[o,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[i,d("seconds")],ss:[i,d("seconds")],m:[i,d("minutes")],mm:[i,d("minutes")],H:[i,d("hours")],h:[i,d("hours")],HH:[i,d("hours")],hh:[i,d("hours")],D:[i,d("day")],DD:[o,d("day")],Do:[a,function(m){var w=c.ordinal,v=m.match(/\d+/);if(this.day=v[0],w)for(var _=1;_<=31;_+=1)w(_).replace(/\[|\]/g,"")===m&&(this.day=_)}],M:[i,d("month")],MM:[o,d("month")],MMM:[a,function(m){var w=u("months"),v=(u("monthsShort")||w.map(function(_){return _.slice(0,3)})).indexOf(m)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(m){var w=u("months").indexOf(m)+1;if(w<1)throw new Error;this.month=w%12||w}],Y:[/[+-]?\d+/,d("year")],YY:[o,function(m){this.year=f(m)}],YYYY:[/\d{4}/,d("year")],Z:h,ZZ:h};function y(m){var w,v;w=m,v=c&&c.formats;for(var _=(m=w.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(x,O,T){var P=T&&T.toUpperCase();return O||v[T]||n[T]||v[P].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(F,$,V){return $||V.slice(1)})})).match(s),D=_.length,b=0;b<D;b+=1){var E=_[b],k=C[E],A=k&&k[0],S=k&&k[1];_[b]=S?{regex:A,parser:S}:E.replace(/^\[|\]$/g,"")}return function(x){for(var O={},T=0,P=0;T<D;T+=1){var F=_[T];if(typeof F=="string")P+=F.length;else{var $=F.regex,V=F.parser,L=x.slice(P),M=$.exec(L)[0];V.call(O,M),x=x.replace(M,"")}}return function(I){var B=I.afternoon;if(B!==void 0){var W=I.hours;B?W<12&&(I.hours+=12):W===12&&(I.hours=0),delete I.afternoon}}(O),O}}return function(m,w,v){v.p.customParseFormat=!0,m&&m.parseTwoDigitYear&&(f=m.parseTwoDigitYear);var _=w.prototype,D=_.parse;_.parse=function(b){var E=b.date,k=b.utc,A=b.args;this.$u=k;var S=A[1];if(typeof S=="string"){var x=A[2]===!0,O=A[3]===!0,T=x||O,P=A[2];O&&(P=A[2]),c=this.$locale(),!x&&P&&(c=v.Ls[P]),this.$d=function(L,M,I){try{if(["x","X"].indexOf(M)>-1)return new Date((M==="X"?1e3:1)*L);var B=y(M)(L),W=B.year,U=B.month,q=B.day,Z=B.hours,J=B.minutes,N=B.seconds,H=B.milliseconds,R=B.zone,ie=new Date,ae=q||(W||U?1:ie.getDate()),ee=W||ie.getFullYear(),X=0;W&&!U||(X=U>0?U-1:ie.getMonth());var pe=Z||0,ye=J||0,De=N||0,de=H||0;return R?new Date(Date.UTC(ee,X,ae,pe,ye,De,de+60*R.offset*1e3)):I?new Date(Date.UTC(ee,X,ae,pe,ye,De,de)):new Date(ee,X,ae,pe,ye,De,de)}catch{return new Date("")}}(E,S,k),this.init(),P&&P!==!0&&(this.$L=this.locale(P).$L),T&&E!=this.format(S)&&(this.$d=new Date("")),c={}}else if(S instanceof Array)for(var F=S.length,$=1;$<=F;$+=1){A[1]=S[$-1];var V=v.apply(this,A);if(V.isValid()){this.$d=V.$d,this.$L=V.$L,this.init();break}$===F&&(this.$d=new Date(""))}else D.call(this,b)}}})})(Mn);const ul=Mn.exports;Ze.extend(ul);const Vn=t=>{const{ooui:r}=t;return e.jsx(me,{...t,children:e.jsx(fl,{ooui:r})})},fl=t=>{const r=(n,s)=>{t.onChange&&t.onChange(s)};return e.jsx(p.TimePicker,{onChange:r,value:t.value?Ze(t.value,"HH:mm:ss"):void 0})},En=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(hl,{ooui:r})})},hl=t=>{const{value:r,onChange:n,ooui:s}=t,{required:o,selectionValues:i,readOnly:a}=s,c=r==null?void 0:r.split(","),[f,d]=l.useState([]),[h,u]=l.useState();return l.useEffect(()=>{if(!r){u(void 0),d([]);return}const g=r&&c&&c[0],C=r&&c&&c[1]&&parseInt(c[1]);d([C,void 0]),u(g)},[r]),e.jsxs(p.Row,{gutter:8,wrap:!1,children:[e.jsx(p.Col,{flex:"1",children:e.jsx(Or,{ooui:new se.Selection({name:"model_selection",selection:i,readonly:a,required:o}),onChange:g=>{u(g);let C=f[0]||0;g!==h&&(d([]),C=0);const y=`${g},${C}`;y!==r&&(n==null||n(y))},value:h})}),e.jsx(p.Col,{flex:"3",children:e.jsx(pn,{ooui:new se.Many2one({name:"object_value",relation:h,readonly:a,required:o}),value:f,onChange:g=>{d(g);const C=`${h},${g[0]||0}`;C!==r&&(n==null||n(C))}})})]})},{useToken:pl}=p.theme,In=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(gl,{ooui:r})})},gl=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o,required:i,filenameField:a}=r,{token:c}=pl(),f=i&&!o?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useRef(null),{setFieldValue:h,getFieldValue:u}=l.useContext(_e)||{},{t:g}=l.useContext(ge),C=n?Gs(n):"",y=D=>{s==null||s(D)};async function m(){const D=await nt(n),b=`data:${D==null?void 0:D.mime};base64,${n}`,E=document.createElement("a"),k=u(a),A=u("name");E.href=b,E.download=k||A,E.click()}async function w(){const D=await nt(n);Tt(n,D.mime)}async function v(D){D.stopPropagation(),D.preventDefault();const b=D.target.files[0],E=await Br(b);y(E),a&&h(a,b.name)}function _(){h(a,void 0),y(void 0)}return e.jsxs(p.Row,{gutter:8,children:[e.jsxs(p.Col,{style:{paddingBottom:5},children:[e.jsx("input",{type:"file",id:"file",ref:d,style:{display:"none"},onChange:v}),e.jsx(p.Input,{type:"text",disabled:!0,style:f,value:C})]}),e.jsx(p.Col,{children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(K.FolderOpenOutlined,{}),disabled:o,onClick:()=>{d.current.click()},children:"Select"}),e.jsx(p.Button,{icon:e.jsx(K.EyeOutlined,{}),disabled:!n,onClick:w,children:g("open")}),e.jsx(Le,{tooltip:g("download"),disabled:!n,onClick:m,icon:e.jsx(K.DownloadOutlined,{})}),e.jsx(Le,{tooltip:g("clear"),disabled:o||!n,onClick:_,icon:e.jsx(K.ClearOutlined,{})})]})})]})},ir={tree:e.jsx(K.TableOutlined,{}),form:e.jsx(K.FormOutlined,{}),graph:e.jsx(K.AreaChartOutlined,{}),calendar:e.jsx(K.CalendarOutlined,{})};function $n(t){return t?(ir==null?void 0:ir[t.type])||e.jsx(K.FormOutlined,{}):e.jsx(K.FormOutlined,{})}function ar(t){const{currentView:r,availableViews:n,onChangeView:s,disabled:o=!1,formHasChanges:i=!1,previousView:a}=t,{t:c,lang:f}=l.useContext(ge);function d(){const g=n.map((C,y)=>e.jsx(p.Menu.Item,{children:e.jsxs(p.Row,{wrap:!1,children:[e.jsx(p.Col,{flex:"none",style:{paddingRight:20},children:$n(C)}),e.jsx(p.Col,{flex:"auto",style:{paddingRight:20},children:C.type.charAt(0).toUpperCase()+C.type.slice(1)}),e.jsx(p.Col,{flex:"none",children:e.jsx(K.CheckOutlined,{style:{opacity:r.view_id===C.view_id?1:0}})})]})},C.view_id||y));return e.jsx(p.Menu,{onClick:u,children:e.jsx(p.Menu.ItemGroup,{title:c("viewAs"),children:g})})}function h(g){if(i){yt({lang:f,onOk:()=>{g()}});return}g()}function u(g){h(()=>{const C=n.find(y=>y.view_id===parseInt(g.key));s(C)})}return e.jsxs("div",{style:{display:"flex"},children:[e.jsx(Le,{tooltip:a?c("viewAs")+" "+c(a.type):"",icon:$n(a),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:()=>{u({key:a==null?void 0:a.view_id})},disabled:o||n.length===1}),e.jsx(p.Dropdown,{overlay:d(),disabled:o||n.length===1,children:e.jsx(p.Button,{style:{width:25,borderTopLeftRadius:0,borderBottomLeftRadius:0},icon:e.jsx(K.DownOutlined,{style:{fontSize:"0.5em"}}),onClick:g=>g.preventDefault()})})]})}function ut(t){const{icon:r,tooltip:n,items:s=[],onItemClick:o,label:i,disabled:a=!1}=t;function c(){const d=s==null?void 0:s.map((h,u)=>h.name==="divider"?e.jsx(p.Menu.Divider,{},"divider"+u):e.jsx(p.Menu.Item,{children:h.name},h.id));return e.jsx(p.Menu,{onClick:f,children:e.jsx(p.Menu.ItemGroup,{title:n,children:d})})}function f(d){const h=s.find(u=>isNaN(d.key)?u.id===d.key:u.id===parseInt(d.key));o(h)}return e.jsx(p.Dropdown,{overlay:c(),disabled:a||!s||s.length===0,children:e.jsxs(p.Button,{children:[r," ",i," ",e.jsx(K.DownOutlined,{})]})})}function Ne(t){const{onClick:r,disabled:n=!1,loading:s=!1,tooltip:o,icon:i,label:a,type:c="default"}=t,f=s?e.jsx(K.LoadingOutlined,{}):i;return e.jsxs(Le,{type:c,tooltip:o,onClick:r,disabled:n,children:[f,a]})}function An(t){const{disabled:r=!1}=t,{formHasChanges:n,onNewClicked:s}=l.useContext(Be),{t:o,lang:i}=l.useContext(ge),a=()=>{if(n){yt({lang:i,onOk:()=>{s()}});return}s()};return e.jsx(Ne,{icon:e.jsx(K.FileAddOutlined,{}),tooltip:o("new"),onClick:a,disabled:r})}const{confirm:ml}=p.Modal,yl=({onOk:t,onCancel:r,lang:n})=>{ml({title:be("unsavedChanges",n),icon:e.jsx(K.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmRefreshWithoutSave",n),okText:be("discardAndRefresh",n),cancelText:be("cancel",n),onOk:t,onCancel:r})};async function Ln(t,r,n){const s=(await Y.getHandler().getLogInfo({model:t,ids:[r]}))[0],{create_date:o,create_uid:i,id:a,write_date:c,write_uid:f}=s;Je(e.jsxs("div",{children:["ID: "+a," ",e.jsx("br",{}),n("createdBy")+": "+i[1]," ",e.jsx("br",{}),n("creationDate")+": "+o," ",e.jsx("br",{}),n("lastUpdatedBy")+": "+f[1]," ",e.jsx("br",{}),n("lastUpdatedDate")+": "+c]}))}const wl=t=>{const{numberOfAttachments:r,disabled:n}=t,{t:s,lang:o}=l.useContext(ge),[i,a]=l.useState(!1),c=e.jsxs(p.Button,{disabled:n,children:[e.jsx(K.LinkOutlined,{}),`(${r})`,e.jsx(K.DownOutlined,{style:{fontSize:12}})]});return n?c:e.jsx(p.Popover,{onVisibleChange:f=>a(f),visible:i,placement:"bottom",content:vl(t,a,o),title:s("attachments"),arrowContent:null,children:c})},vl=(t,r,n)=>{const{attachments:s=[],loading:o,onAddNewAttachment:i,onopenAttachmentLink:a,onOpenAttachmentDetail:c,onListAllAttachments:f}=t;return o?e.jsx(p.Spin,{style:{padding:20}}):e.jsxs(e.Fragment,{children:[e.jsxs("a",{style:{display:"block",paddingBottom:5},href:"#",onClick:()=>{r(!1),f()},children:[e.jsx(K.TableOutlined,{})," ",be("listAllAttachments",n)]}),e.jsxs("a",{style:{display:"block"},href:"#",onClick:()=>{r(!1),i()},children:[e.jsx(K.FileAddOutlined,{})," ",be("addNewAttachment",n)]}),s.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("li",{className:"ant-dropdown-menu-item-divider"}),s.map(d=>{const h=d.link?K.LinkOutlined:K.DownloadOutlined;return e.jsxs(p.Row,{style:{paddingTop:4,paddingBottom:4},wrap:!1,align:"middle",children:[e.jsx(p.Col,{flex:"auto",children:d.name}),e.jsx(p.Col,{flex:"25px",style:{textAlign:"center"},children:(d.datas_fname||d.link)&&e.jsx(p.Tooltip,{title:d.link?be("openAttachmentLink",n):be("download",n),children:e.jsx(h,{style:{cursor:"pointer"},onClick:()=>{r(!1),a(d)}})})}),e.jsx(p.Col,{flex:"25px",style:{textAlign:"center"},children:e.jsx(p.Tooltip,{title:be("openAttachment",n),children:e.jsx(K.FormOutlined,{style:{cursor:"pointer"},onClick:()=>{r(!1),c(d)}})})})]},d.id)})]})]})};function Cl(t){const{attachments:r,disabled:n=!1,onAddNewAttachment:s,onListAllAttachments:o,onViewAttachmentDetails:i}=t,{formRef:a}=l.useContext(Be),[c,f]=l.useState(!1),[d,h]=l.useState([]),[u,g]=l.useState(!1),{t:C}=l.useContext(ge),y=l.useCallback(async()=>{f(!0);try{const v=await Y.getHandler().readObjects({model:"ir.attachment",ids:r.map(_=>_.id),fieldsToRetrieve:["name","datas_fname","link"],context:a.current.getContext()});h(v.map(_=>({id:_.id,name:_.name,datas_fname:_.datas_fname,link:_.link})))}catch(v){$e(v)}f(!1)},r),m=l.useCallback(async v=>{if(v.link){window.open(v.link);return}g(!0);let _;try{_=(await Y.getHandler().readObjects({model:"ir.attachment",ids:[v.id],context:a.current.getContext()}))[0]}catch(D){$e(D)}if(g(!1),!!_)if(_.datas){const D=await nt(_.datas);Tt(_.datas,D.mime)}else i(_)},[]),w=l.useCallback(async v=>{i(v)},[]);return l.useEffect(()=>{y()},[y]),e.jsxs(e.Fragment,{children:[e.jsx(wl,{numberOfAttachments:r.length,attachments:d,disabled:n,loading:c,onAddNewAttachment:s,onListAllAttachments:o,onopenAttachmentLink:m,onOpenAttachmentDetail:w}),e.jsx(p.Modal,{title:C("downloadingAttachment"),open:u,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(p.Spin,{})})]})}function Nn({toolbar:t}){const{availableViews:r,currentView:n,setCurrentView:s,onFormSave:o,formHasChanges:i,formIsSaving:a,currentId:c,results:f,setCurrentItemIndex:d,currentItemIndex:h,setCurrentId:u,currentModel:g,setRemovingItem:C,removingItem:y,duplicatingItem:m,setDuplicatingItem:w,setResults:v,formIsLoading:_,attachments:D,formRef:b,setFormHasChanges:E,previousView:k,setPreviousView:A,goToResourceId:S}=l.useContext(Be),{t:x,lang:O}=l.useContext(ge),T=l.useContext(lt),{processAction:P}=T||{},F=l.useContext(qe),{openRelate:$,openDefaultActionForModel:V}=F||{};function L(N){if(i){yl({lang:O,onOk:()=>{N()}});return}N()}function M(N){if(i){yt({lang:O,onOk:()=>{N()}});return}N()}function I(){f&&f.length>h+1?(d==null||d(h+1),u==null||u(f[h+1].id)):f&&h+1===f.length&&(d==null||d(0),u==null||u(f[0].id))}function B(){f&&h>0?(d==null||d(h-1),u==null||u(f[h-1].id)):f&&h===0&&(d==null||d(f.length-1),u==null||u(f[f.length-1].id))}function W(){rt({confirmMessage:x("confirmRemoveItem"),lang:O,onOk:()=>{U()}})}async function U(){try{C==null||C(!0),await Y.getHandler().delete({model:g,ids:[c]});const N=f==null?void 0:f.filter(R=>R.id!==c);v==null||v(N);let H=0;h>0&&h<=f.length-1&&(H=h-1),N!=null&&N[H]?(u==null||u(N==null?void 0:N[H].id),d==null||d(H)):(u==null||u(void 0),d==null||d(void 0))}catch(N){Dt(JSON.stringify(N))}finally{C==null||C(!1)}}async function q(){try{w==null||w(!0);const N=await Y.getHandler().duplicate({id:c,model:g,context:b.current.getContext()});N&&await(S==null?void 0:S(N))}catch(N){Dt(JSON.stringify(N))}finally{w==null||w(!1)}}const Z=a||y||_||m;function J(N){P==null||P({actionData:N,values:b.current.getValues(),fields:b.current.getFields(),context:b.current.getContext(),onRefreshParentValues:()=>{b.current.fetchValues()}})}return n?e.jsxs(p.Space,{wrap:!0,children:[_&&e.jsxs(e.Fragment,{children:[e.jsx(p.Spin,{}),ft(),ft()]}),e.jsx(An,{disabled:a||_||y||m}),e.jsx(Ne,{icon:e.jsx(K.SaveOutlined,{}),tooltip:x("save"),disabled:!i||Z,loading:a,onClick:o}),e.jsx(Ne,{icon:e.jsx(K.CopyOutlined,{}),tooltip:x("duplicate"),disabled:i||a||c===void 0||m||_,loading:m,onClick:q}),e.jsx(Ne,{icon:e.jsx(K.DeleteOutlined,{}),tooltip:x("delete"),disabled:a||c===void 0||y||m||_,loading:y,onClick:W}),ft(),e.jsx(Ne,{icon:e.jsx(K.InfoCircleOutlined,{}),tooltip:x("showLogs"),disabled:a||c===void 0||y||m||_,loading:!1,onClick:()=>{Ln(g,c,x)}}),e.jsx(Ne,{icon:e.jsx(K.ReloadOutlined,{}),tooltip:x("refresh"),disabled:a||c===void 0||y||m||_,loading:!1,onClick:()=>{L(()=>{b.current.fetchValues()})}}),ft(),e.jsx(ar,{currentView:n,previousView:k,availableViews:r,onChangeView:N=>{A==null||A(n),E==null||E(!1),s==null||s(N)},disabled:Z,formHasChanges:i}),ft(),e.jsxs(p.Space,{children:[e.jsx(Ne,{icon:e.jsx(K.LeftOutlined,{}),tooltip:x("previous"),disabled:Z,loading:!1,onClick:()=>{M(B)}}),e.jsx(Ne,{icon:e.jsx(K.RightOutlined,{}),tooltip:x("next"),disabled:Z,loading:!1,onClick:()=>{M(I)}})]}),ft(),e.jsx(ut,{icon:e.jsx(K.ThunderboltOutlined,{}),disabled:Z,tooltip:x("actions"),items:t==null?void 0:t.action,onItemClick:async N=>{!N||!(await ht({onFormSave:o})).succeed||J(N)}}),e.jsx(ut,{icon:e.jsx(K.PrinterOutlined,{}),disabled:Z,tooltip:x("reports"),items:t==null?void 0:t.print,onItemClick:async N=>{if(!N)return;const H=await ht({onFormSave:o});!H.succeed||J({...N,datas:{...N.datas||{},ids:[H.currentId]}})}}),e.jsx(ut,{icon:e.jsx(K.EnterOutlined,{}),disabled:Z,tooltip:x("related"),items:t==null?void 0:t.relate,onItemClick:async N=>{!N||!(await ht({onFormSave:o})).succeed||$({relateData:N,values:b.current.getValues(),fields:b.current.getFields(),action_id:N.id,action_type:N.type})}}),e.jsx(Cl,{disabled:Z,attachments:D,onAddNewAttachment:async()=>{const N=await ht({onFormSave:o});if(!N.succeed)return;const H=N.currentId,R=g;V({model:"ir.attachment",values:{selection_associated_object:`${R},${H}`},forced_values:{res_model:R,res_id:H},initialViewType:"form"})},onListAllAttachments:async()=>{const N=await ht({onFormSave:o});if(!N.succeed)return;const H=N.currentId;V({model:"ir.attachment",domain:[["res_model","=",`${g}`],["res_id","=",`${H}`]],initialViewType:"tree"})},onViewAttachmentDetails:async N=>{!(await ht({onFormSave:o})).succeed||V({model:"ir.attachment",res_id:N.id,initialViewType:"form"})}})]}):null}function ft(){return e.jsx("div",{className:"inline-block w-2"})}async function ht({onFormSave:t}){const r=await(t==null?void 0:t());return r!=null&&r.succeed?{succeed:!0,currentId:r.id}:{succeed:!1,currentId:void 0}}const{useToken:Sl}=p.theme,Pn=t=>{const{ooui:r,value:n,onChange:s,valueValidator:o,linkPrefix:i=""}=t,{id:a,readOnly:c,required:f}=r,{token:d}=Sl(),h=f&&!c?{backgroundColor:d.colorPrimaryBg}:void 0,u=l.useContext(_e),{elementHasLostFocus:g}=u||{},[C,y]=l.useState(!1),[m,w]=l.useState(!1);l.useEffect(()=>{c&&!C&&w(!1),!n&&!c&&(y(!0),w(!0))},[C,c]);const v=_=>{s==null||s(_.target.value)};return e.jsxs(p.Row,{gutter:8,wrap:!1,align:"middle",children:[c?null:e.jsx(p.Col,{flex:"32px",children:C?e.jsx(p.Button,{icon:e.jsx(K.CheckOutlined,{}),onClick:()=>{o(n)&&(y(!1),w(!1))},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1}):e.jsx(p.Button,{icon:e.jsx(K.EditOutlined,{}),onClick:()=>{y(!0),w(!0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1})}),e.jsx(p.Col,{flex:"auto",children:m?e.jsx(p.Input,{style:{borderTopLeftRadius:0,borderBottomLeftRadius:0,...h},id:a,onChange:v,value:n,onBlur:()=>{o(n)&&(y(!1),w(!1),g==null||g())}}):e.jsx("a",{href:`${i}${n}`,style:{color:d.colorPrimary,paddingRight:15},target:"_blank",children:n})})]})},Bn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(Pn,{ooui:r,valueValidator:s=>s?yo.default(s):!1})})},Hn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(Pn,{ooui:r,linkPrefix:"mailto:",valueValidator:s=>s?wo.default(s):!1})})},bl=t=>{const{visible:r,onIdSubmitted:n,onCancel:s,isSearching:o}=t,{t:i}=l.useContext(ge);function a(c){n(c.id)}return e.jsx(p.Modal,{title:i("goToResourceId"),centered:!0,open:r,footer:null,destroyOnClose:!0,onCancel:s,maskClosable:!1,children:e.jsxs(p.Form,{layout:"vertical",onFinish:a,autoComplete:"off",children:[e.jsx(p.Form.Item,{name:"id",label:i("searchId"),rules:[{required:!0,type:"number"}],children:e.jsx(p.InputNumber,{style:{width:"100%"},autoFocus:!0})}),e.jsx(p.Row,{align:"middle",justify:"end",children:e.jsx(p.Col,{children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(K.CloseOutlined,{}),htmlType:"button",onClick:s,disabled:o,children:i("cancel")}),e.jsx(p.Button,{loading:o,style:{marginLeft:15},icon:e.jsx(K.CheckOutlined,{}),htmlType:"submit",type:"primary",disabled:o,children:i("ok")})]})})})]})})},{useToken:xl}=p.theme;function Kn(t){const{badgeNumber:r=0,...n}=t,{token:s}=xl();return e.jsxs("div",{style:{position:"relative"},children:[r>0&&e.jsx("div",{style:{position:"absolute",left:-10,top:-10,zIndex:2},children:e.jsx("span",{style:{display:"inline-block",minWidth:"22px",padding:"2px",borderRadius:"50%",fontSize:"12px",textAlign:"center",background:s.colorPrimaryHover,color:s.colorPrimaryBg},children:r})}),e.jsx(Le,{...n,style:{width:46,zIndex:0}})]})}function Tl({refreshGraph:t}){const{t:r}=l.useContext(ge),{availableViews:n,currentView:s,setCurrentView:o,searchParams:i,searchVisible:a,setSearchVisible:c,graphIsLoading:f,previousView:d,setPreviousView:h}=l.useContext(Be);return e.jsxs(p.Space,{wrap:!0,children:[e.jsx(Kn,{icon:e.jsx(K.FilterOutlined,{style:{color:a?"white":void 0}}),tooltip:r("advanced_search"),type:a?"primary":"default",onClick:()=>{c==null||c(!a)},disabled:f,badgeNumber:i==null?void 0:i.length}),e.jsx(Ne,{icon:e.jsx(K.ReloadOutlined,{}),tooltip:r("refresh"),disabled:f,loading:!1,onClick:()=>{t()}}),e.jsx(ar,{currentView:s,availableViews:n,onChangeView:u=>{h==null||h(s),o==null||o(u)},disabled:!1,previousView:d})]})}const{useToken:Fl}=p.theme,{Title:Ol,Text:$t}=p.Typography;function At(t){const{title:r,children:n}=t,{title:s,currentView:o,currentId:i,currentItemIndex:a,results:c,totalItems:f,selectedRowItems:d}=l.useContext(Be),{t:h}=l.useContext(ge),{token:u}=Fl();function g(){if((o==null?void 0:o.type)==="form")return i?f===0?e.jsxs(e.Fragment,{children:[h("editingDocument")," (id:"," ",e.jsx($t,{copyable:{icon:e.jsx(K.CopyOutlined,{style:{color:"red"}})},children:i}),")"]}):e.jsxs(e.Fragment,{children:[h("register")," ",a===void 0?1:a+1," /"," ",c.length," ",h("of")," ",f," - ",h("editingDocument")," (id:"," ",e.jsx($t,{copyable:!0,children:i}),")"]}):"";if((o==null?void 0:o.type)==="tree"&&d){if(d.length===1)return e.jsxs(e.Fragment,{children:["1 ",h("selectedRegisters")," - (id:"," ",e.jsx($t,{copyable:!0,children:d[0].id}),")"]});if(d.length>1)return e.jsxs(e.Fragment,{children:[d.length," ",h("selectedRegisters"),e.jsx($t,{copyable:{text:d.map(C=>C.id).join(", ")}})]})}return null}return e.jsxs("div",{style:{position:"sticky",top:80,zIndex:3},children:[e.jsxs(p.Row,{className:"shadow-md",style:{padding:"1em",borderRadius:u.borderRadius,backgroundColor:u.colorPrimaryBg},align:"middle",children:[e.jsxs(p.Col,{flex:2,children:[e.jsx(Ol,{level:3,style:{marginBottom:0},children:r||s}),g()]}),e.jsx(p.Col,{flex:3,children:e.jsx(p.Row,{justify:"end",children:n})})]}),e.jsx("div",{className:"pb-5"})]})}const _l=t=>{const{viewData:r,visible:n,model:s,context:o,domain:i,formView:a,treeView:c}=t,f=l.useRef(),d=l.useContext(Be),{setResults:h=void 0,setCurrentItemIndex:u=void 0,currentId:g=void 0,results:C=void 0,setSelectedRowItems:y=void 0,setSearchParams:m=void 0,searchVisible:w=!0,setSearchVisible:v=void 0,sorter:_=void 0,setSorter:D=void 0,setTotalItems:b=void 0,setSearchTreeNameSearch:E=void 0,setTreeIsLoading:k=void 0,limit:A,setLimit:S,searchParams:x,searchValues:O,setSearchValues:T,currentView:P}=d||{},[F,$]=l.useState(!0);l.useEffect(()=>{var W;(W=f.current)==null||W.refresh()},[x]),l.useEffect(()=>{r.view_id!==P.view_id&&$(!0)},[P]);const{clear:V,searchFilterLoading:L,searchError:M,offset:I,tableRefreshing:B}=Jr({model:s,setSearchTreeNameSearch:E,setSelectedRowItems:y,searchParams:x,setSearchValues:T,setSearchParams:m,setSearchVisible:v,setTreeIsLoading:k,context:o,formView:a,treeView:c,sorter:_,setSorter:D,setCurrentItemIndex:u,setResultsActionView:h,resultsActionView:C,domain:i,currentId:g,setActionViewTotalItems:b,limit:A,setLimit:S});return!n||!r?null:e.jsxs(e.Fragment,{children:[e.jsx(At,{title:r.name,children:e.jsx(Tl,{refreshGraph:()=>{f.current.refresh()}})}),e.jsx(Xt,{fields:{...c.fields,...a.fields},searchFields:Yr([a.search_fields,c.search_fields]),formXml:a.arch,limit:A,onClear:V,offset:I,isSearching:L,onSubmit:W=>{$(!1),m==null||m(W.params),v==null||v(!1)},searchError:M,searchVisible:w,searchValues:O,showLimitOptions:!1}),B?e.jsx(p.Spin,{}):e.jsx(It,{ref:f,view_id:r.view_id,model:s,context:o,domain:_t(x||[],i),limit:F?A:void 0,manualIds:F?C==null?void 0:C.map(W=>W.id):void 0})]})},Dl=t=>{const{visible:r,formRef:n,model:s,currentId:o,domain:i,formView:a,context:c,defaultValues:f,forcedValues:d,results:h,setResults:u,setCurrentItemIndex:g}=t;return r?e.jsxs(e.Fragment,{children:[e.jsx(At,{children:e.jsx(Nn,{toolbar:a==null?void 0:a.toolbar})}),e.jsx(ct,{rootForm:!0,ref:n,model:s,defaultValues:f,forcedValues:d,formView:a,actionDomain:i,id:o,parentContext:c,onSubmitSucceed:(C,y)=>{h.findIndex(w=>w.id===C)===-1&&(h.push(y),u(h),g(h.length-1))}})]}):null};function kl(t){const{onSearch:r,disabled:n=!1,searchText:s}=t,{t:o}=l.useContext(ge),[i]=p.Form.useForm(),[a,c]=l.useState(!1);function f(h){r(h.search)}l.useEffect(()=>{i.setFieldsValue({search:s})},[s]);function d(){c(!1),i.setFieldsValue({search:void 0}),r(void 0)}return e.jsx(p.Form,{form:i,onFinish:f,autoComplete:"off",children:e.jsxs(p.Row,{align:"middle",justify:"end",children:[e.jsx(p.Col,{children:e.jsx(p.Form.Item,{name:"search",noStyle:!0,children:e.jsx(p.Input,{autoFocus:!0,disabled:n,onChange:h=>{c(h.target.value.length>0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},suffix:(a||s&&s.length>0)&&e.jsx(p.Tooltip,{title:o("clear"),children:e.jsx(K.CloseCircleFilled,{style:{color:"rgba(0,0,0,.45)"},onClick:d})})})})}),e.jsx(p.Col,{children:e.jsx(p.Button,{htmlType:"submit",disabled:n,style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},children:o("search")})})]})})}const Yn=Pe.default.createContext({previewFeatures:!1});function Ml(t){var Z;const{availableViews:r,currentView:n,setCurrentView:s,selectedRowItems:o,setRemovingItem:i,removingItem:a,duplicatingItem:c,setDuplicatingItem:f,currentModel:d,searchTreeRef:h,setCurrentId:u,setCurrentItemIndex:g,searchParams:C,searchVisible:y,setSearchVisible:m,setSearchTreeNameSearch:w,searchTreeNameSearch:v,treeIsLoading:_,setPreviousView:D,previousView:b,results:E,limit:k,totalItems:A}=l.useContext(Be),{parentContext:S={},treeExpandable:x,toolbar:O}=t,{previewFeatures:T}=l.useContext(Yn),{t:P,lang:F}=l.useContext(ge),$=l.useContext(lt),{processAction:V}=$||{},[L,M]=l.useState(!1),I=v!==void 0&&v.trim().length>0;function B(){rt({confirmMessage:P("confirmRemove"),lang:F,onOk:()=>{W()}})}async function W(){var J;try{i==null||i(!0),await Y.getHandler().delete({model:d,ids:o.map(N=>N.id)}),u==null||u(void 0),g==null||g(void 0),(J=h==null?void 0:h.current)==null||J.refreshResults()}catch(N){$e(N)}finally{i==null||i(!1)}}async function U(){var J;try{f==null||f(!0);const N=o[0].id;await Y.getHandler().duplicate({id:N,model:d,context:{...S}})&&((J=h==null?void 0:h.current)==null||J.refreshResults())}catch(N){$e(N)}finally{f==null||f(!1)}}function q(J){V==null||V({actionData:J,values:{active_id:o==null?void 0:o.map(N=>N.id)[0],active_ids:o==null?void 0:o.map(N=>N.id)},fields:{},context:{...S,active_id:o==null?void 0:o.map(N=>N.id)[0],active_ids:o==null?void 0:o.map(N=>N.id)},onRefreshParentValues:()=>{var N;(N=h==null?void 0:h.current)==null||N.refreshResults()}})}return e.jsxs(p.Space,{wrap:!0,children:[x?null:e.jsxs(e.Fragment,{children:[e.jsx(kl,{disabled:c||a||_,searchText:v,onSearch:J=>{J&&J.trim().length>0?w==null||w(J):w==null||w(void 0)}}),!x&&e.jsx(Kn,{icon:e.jsx(K.FilterOutlined,{style:{color:y?"white":void 0}}),tooltip:P("advanced_search"),type:y?"primary":"default",onClick:()=>{m==null||m(!y)},disabled:c||a||_,badgeNumber:C==null?void 0:C.length}),bt(),e.jsx(An,{disabled:_}),e.jsx(Ne,{icon:e.jsx(K.CopyOutlined,{}),tooltip:P("duplicate"),disabled:!o||(o==null?void 0:o.length)!==1||c||_,loading:c,onClick:U}),e.jsx(Ne,{icon:e.jsx(K.DeleteOutlined,{}),tooltip:P("delete"),disabled:!(o&&(o==null?void 0:o.length)>0)||_,loading:a,onClick:B}),bt()]}),e.jsx(Ne,{icon:e.jsx(K.InfoCircleOutlined,{}),tooltip:P("showLogs"),disabled:!(o&&(o==null?void 0:o.length)>0)||_,loading:!1,onClick:()=>{Ln(d,o[0].id,P)}}),e.jsx(Ne,{icon:e.jsx(K.ReloadOutlined,{}),tooltip:P("refresh"),disabled:c||a||_,loading:!1,onClick:()=>{var J;(J=h==null?void 0:h.current)==null||J.refreshResults()}}),!x&&e.jsxs(e.Fragment,{children:[bt(),e.jsx(ar,{currentView:n,availableViews:r,onChangeView:J=>{D==null||D(n),s==null||s(J)},previousView:b,disabled:_})]}),bt(),e.jsx(ut,{icon:e.jsx(K.ThunderboltOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||_,tooltip:P("actions"),items:O==null?void 0:O.action,onItemClick:J=>{!J||q(J)}}),e.jsx(ut,{icon:e.jsx(K.PrinterOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||_,tooltip:P("reports"),items:O==null?void 0:O.print,onItemClick:J=>{!J||q({...J,datas:{...J.datas||{},ids:o.map(N=>N.id)}})}}),T&&e.jsxs(e.Fragment,{children:[bt(),e.jsx(ut,{icon:e.jsx(wr.default,{component:()=>e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-database-export",width:"1em",height:"1em",viewBox:"0 0 24 24",strokeWidth:"1.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),e.jsx("ellipse",{cx:"12",cy:"6",rx:"8",ry:"3"}),e.jsx("path",{d:"M4 6v6c0 1.657 3.582 3 8 3a19.84 19.84 0 0 0 3.302 -.267m4.698 -2.733v-6"}),e.jsx("path",{d:"M4 12v6c0 1.599 3.335 2.905 7.538 2.995m8.462 -6.995v-2m-6 7h7m-3 -3l3 3l-3 3"})]})}),tooltip:P("export"),items:[{id:"print_screen",name:P("printScreen")},{id:"export",name:P("advancedExport")}],onItemClick:J=>{if(J.id==="print_screen"){let N=(o==null?void 0:o.map(H=>H.id))||[];N.length===0&&(N=(E==null?void 0:E.map(H=>H.id))||[]),q({id:-1,model:d,report_name:"printscreen.list",type:"ir.actions.report.xml",datas:{model:d,ids:N}});return}M(!0)},disabled:c||a||_||I}),e.jsx(_n,{visible:L,locale:F,onClose:()=>M(!1),model:d,domain:_t(((Z=h==null?void 0:h.current)==null?void 0:Z.getDomain())||[],C||[]),limit:k,totalRegisters:A||0,selectedRegistersToExport:o,visibleRegisters:(E==null?void 0:E.length)||0,context:S})]})]})}function bt(){return e.jsx("div",{className:"inline-block w-2"})}const Vl=t=>{const{visible:r,searchTreeRef:n,model:s,context:o,formView:i,treeView:a,domain:c,setCurrentItemIndex:f,results:d,setCurrentId:h,setCurrentView:u,availableViews:g,searchTreeNameSearch:C}=t,{currentView:y,setPreviousView:m}=l.useContext(Be);return r?e.jsxs(e.Fragment,{children:[e.jsx(At,{children:e.jsx(Ml,{toolbar:a==null?void 0:a.toolbar,parentContext:o,treeExpandable:(a==null?void 0:a.isExpandable)||!1})}),e.jsx(Rt,{ref:n,rootTree:!0,model:s,parentContext:o,nameSearch:C,formView:i,treeView:a,domain:c,onRowClicked:w=>{const{id:v}=w;h(v);const _=d.findIndex(b=>b.id===v);m==null||m(y),f(_);const D=g.find(b=>b.type==="form");u(D)}})]}):null},lr=Pe.default.createContext(null),El=t=>{const[r,n]=l.useState(!1),[s,o]=l.useState(!1),{children:i,dashboardRef:a,openAction:c}=t;return e.jsx(lr.Provider,{value:{isLoading:r,setIsLoading:n,dashboardRef:a,openAction:c,moveItemsEnabled:s,setMoveItemsEnabled:o},children:i})};function Il(){const{isLoading:t,dashboardRef:r,moveItemsEnabled:n,setMoveItemsEnabled:s}=l.useContext(lr),{t:o}=l.useContext(ge);return e.jsxs(p.Space,{wrap:!0,children:[e.jsx(Ne,{icon:e.jsx(K.BorderOuterOutlined,{style:{color:n?"white":void 0}}),type:n?"primary":"default",tooltip:o("moveDashboard"),disabled:t,loading:!1,onClick:()=>{s(!n)}}),$l(),e.jsx(Ne,{icon:e.jsx(K.SettingOutlined,{}),tooltip:o("configDashboard"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.configDashboard()}}),e.jsx(Ne,{icon:e.jsx(K.ReloadOutlined,{}),tooltip:o("refresh"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.refresh()}})]})}function $l(){return e.jsx("div",{className:"inline-block w-2"})}const Al=t=>{const{dashboardData:r}=t,n=l.useRef(),s=l.useContext(qe),{openShortcut:o}=s||{};return r?e.jsxs(El,{dashboardRef:n,openAction:i=>{o(i)},children:[e.jsx(At,{children:e.jsx(Il,{})}),e.jsx(Un,{ref:n,model:r.model,id:r.id,context:r==null?void 0:r.context,configAction:r==null?void 0:r.configAction})]}):null};async function Ll(t){const r=await Promise.all(t.map(async s=>{try{return await s.promise}catch(o){return console.error(`Error for ${s.viewTuple}:`,o),null}}));return t.map((s,o)=>({...s,info:r[o]})).filter(s=>s.info!==null)}function Nl(t,r){const{domain:n,model:s,context:o,views:i,title:a,setCanWeClose:c,tabKey:f,initialView:d,formDefaultValues:h,formForcedValues:u={},res_id:g=!1,action_id:C,action_type:y,treeExpandable:m=!1,limit:w}=t,[v,_]=l.useState(),[D,b]=l.useState([]),[E,k]=l.useState(!0),A=g||void 0,[S,x]=l.useState(A),[O,T]=l.useState([]),[P,F]=l.useState(),[$,V]=l.useState([]),[L,M]=l.useState(),[I,B]=l.useState(0),[W,U]=l.useState(!1),[q,Z]=l.useState(!1),[J,N]=l.useState(),{t:H}=l.useContext(ge),R=l.useRef(),ie=l.useRef(),ae=l.useContext(qe),{setCurrentView:ee,setCurrentId:X,tabs:pe,activeKey:ye,openAction:De,onRemoveTab:de}=ae||{};ho.useHotkeys("ctrl+g,command+g",te=>{te.preventDefault(),Ee()},[ye,pe,v,P,$]);function oe(te){x(te),X==null||X(te)}function Se(te){_(te),ee==null||ee(te)}l.useImperativeHandle(r,()=>({canWeClose:xe}));const we=async()=>{k(!0);const te=[],ue=[];for(const ce of i){const[Fe,ke]=ce;ke!=="dashboard"?ue.push({viewTuple:ce,promise:Y.getHandler().getView({model:s,type:ke,id:Fe,context:o})}):ue.push({viewTuple:ce})}const ve=await Ll(ue);for(const ce of ve){if(!ce)continue;const[,Fe]=ce.viewTuple;let ke=ce.info;switch(Fe){case"dashboard":{const Ge=i.find(Ue=>{const[,Q]=Ue;return Q==="form"});let Ke;Ge&&(Ke={action_id:C,action_type:y,name:a,res_id:o.active_id,res_model:s,view_id:Ge[0],view_type:Ge[1]}),te.push({type:"dashboard",id:o.active_id,model:s,context:o,configAction:Ke});break}case"form":{te.push({...ke,type:Fe});break}case"tree":{te.push({...ke,isExpandable:m,type:Fe});break}case"graph":{te.push({...ke,type:Fe});break}}}let Ve;!d&&te.find(ce=>ce.type==="tree")?Ve=te.find(Fe=>Fe.type==="tree"):d?Ve=te.find(Fe=>d.id?Fe.type===d.type&&Fe.view_id===d.id:Fe.type===d.type):Ve=te.find(Fe=>Fe.type==="form"),Ve||($e(`Error determining the first view to show for model ${s}.
|
|
36
|
-
Please, make sure the view ids on the fields_view_get responses are the same as the ones defined in the action`),de==null||de(f)),Se(Ve),b(te),k(!1)};c({tabKey:f,canWeClose:xe}),l.useEffect(()=>{const te=D.find(ve=>ve.type==="tree"),ue=D.find(ve=>d.id?ve.type===d.type&&ve.view_id===d.id:ve.type===d.type);Se(ue||te),g?X==null||X(A):(oe(void 0),F(void 0)),we()},[s,i,g]),l.useEffect(()=>{ye===f&&(X==null||X(S),ee==null||ee(v))},[pe,ye]);async function xe(){return v&&v.type==="form"?await R.current.cancelUnsavedChanges():!0}async function Ee(){ye===f&&(v.type==="form"&&!await R.current.cancelUnsavedChanges()||U(!0))}async function Me(te){var ce;Z(!0);const ue=$.findIndex(Fe=>Fe.id===te);let ve;if(ue===-1){try{ve=(ce=await Y.getHandler().readObjects({model:s,ids:[te],context:o}))==null?void 0:ce[0]}catch{}if(!ve){Z(!1),U(!1),Je(H("idNotFound"));return}}else ve=$[ue];Z(!1),U(!1);const Ve=i.find(Fe=>Fe[1]==="form");De({domain:[],context:o,model:s,views:i,title:a,target:"current",initialView:{id:Ve==null?void 0:Ve[0],type:"form"},action_id:C,action_type:y,res_id:te})}function He(){return D.map(te=>{switch(te.type){case"form":return e.jsx(Dl,{formRef:R,currentId:S,visible:v.type===te.type&&v.view_id===te.view_id,formView:te,model:s,context:o,domain:n,defaultValues:h,forcedValues:u,results:$,setResults:V,setCurrentItemIndex:F},`${te.type}-${te.view_id}`);case"tree":return e.jsx(Vl,{visible:v.type===te.type&&v.view_id===te.view_id,limit:w,model:s,context:o,domain:n,formView:D.find(ue=>ue.type==="form"),treeView:te,searchTreeRef:ie,searchTreeNameSearch:J,availableViews:D,results:$,setCurrentItemIndex:F,setCurrentId:oe,setCurrentView:Se},`${te.type}-${te.view_id}`);case"graph":return e.jsx(_l,{visible:v.type===te.type&&v.view_id===te.view_id,viewData:te,model:s,context:o,domain:n,treeView:D.find(ue=>ue.type==="tree"),formView:D.find(ue=>ue.type==="form")},`${te.type}-${te.view_id}`);case"dashboard":return e.jsx(Al,{dashboardData:te},`${te.type}-${te.view_id}`)}})}function Ie(){if(S===void 0&&v.type==="form")R.current.clearAndReload();else{oe(void 0);const te=D.find(ue=>ue.type==="form");Se(te)}}return E?e.jsx(p.Spin,{}):v?e.jsxs(Vi,{title:a,currentView:v,setCurrentView:Se,availableViews:D,formRef:R,searchTreeRef:ie,onNewClicked:Ie,currentId:S,setCurrentId:oe,setCurrentItemIndex:F,currentItemIndex:P,results:$,setResults:V,currentModel:s,sorter:L,setSorter:M,totalItems:I,setTotalItems:B,selectedRowItems:O,setSelectedRowItems:T,setSearchTreeNameSearch:N,searchTreeNameSearch:J,goToResourceId:Me,limit:w,children:[He(),e.jsx(bl,{visible:W,onIdSubmitted:Me,isSearching:q,onCancel:()=>{U(!1)}})]}):null}const Wn=l.forwardRef(Nl);async function Pl({actionId:t,rootContext:r={},globalValues:n={}}){const s="ir.actions.act_window",o=`${s},${t}`,i=await Y.getHandler().getActionData({action:o,context:r}),a=se.parseContext({context:i.context,values:n,fields:{}}),c=i.domain?await Y.getHandler().evalDomain({domain:i.domain,values:n,context:{...r,...a}}):[],{res_model:f,views:d,name:h,limit:u,view_type:g}=i,C=g==="tree",y=[];for(const _ of d){const[D,b]=_;if(D)y.push(_);else{const{view_id:E}=await Y.getHandler().getView({model:f,type:b,id:D,context:{...r,...a}});y.push([E,b])}}const[m,w]=y[0],v={id:m,type:w};return{title:h,actionId:t,actionType:s,key:gr.v4(),views:d,model:f,context:{...r,...a},domain:c,initialView:v,limit:u,treeExpandable:C}}const Mc="",Bl=pr.WidthProvider(pr.Responsive),qn=t=>{const{children:r=[],onPositionItemsChanged:n}=t,s=Pe.default.Children.map(r,o=>{const{parms:i,id:a}=o.props;return e.jsx("div",{"data-grid":i,children:o},a)});return e.jsx(Bl,{className:"layout",cols:{lg:12,md:10,sm:6,xs:4,xxs:2},draggableHandle:".draggable-head",rowHeight:30,onLayoutChange:o=>{n==null||n(o.map(i=>({id:parseInt(i.i.replace(".$",""),10),x:i.x,y:i.y,w:i.w,h:i.h})))},children:s})},{useToken:Hl}=p.theme,{Text:Kl}=p.Typography,Gn=t=>{const{title:r,children:n,action:s,openAction:o}=t,{token:i}=Hl();return e.jsxs("div",{className:"shadow-md",style:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden",border:"1px solid #eee",backgroundColor:"white",borderRadius:i.borderRadius},children:[e.jsxs(p.Row,{align:"middle",style:{borderBottom:"1px solid #ddd",backgroundColor:i.colorPrimaryBg},wrap:!1,children:[e.jsx(p.Col,{flex:"auto",className:"draggable-head",style:{fontWeight:"bold",padding:"0.5rem",cursor:"grab",overflow:"hidden"},children:e.jsx(Kl,{ellipsis:!0,children:r})}),s&&e.jsx(p.Col,{flex:"25px",style:{padding:"0.5rem"},children:e.jsx(p.Row,{justify:"end",align:"middle",children:e.jsx(K.ExportOutlined,{style:{cursor:"pointer"},onClick:()=>{o==null||o(s)}})})})]}),n]})},Yl=80;function Wl(t){const{action:r,model:n,view_id:s,onRowClicked:o,domain:i=[],visible:a=!0,parentContext:c={}}=t,[f,d]=l.useState(!1),[h,u]=l.useState(!1),[g,C]=l.useState(),[y,m]=l.useState(),[w,v]=l.useState(),[_,D]=l.useState(1),[b,E]=l.useState(0),k=l.useRef(Yl),A=l.useRef([]),[S,x]=l.useState(0),[O,T]=l.useState([]),[P,F]=l.useState(void 0),[$,V]=l.useState(),[L,M]=l.useState(),[I,B]=l.useState(),[W,U]=l.useState(!1),q=l.useRef([]),Z=X=>{U(!0),D(X),E((X-1)*k.current)},J=async()=>{const X=q.current.length>0?q.current:i,pe=_t(A.current,X),{colors:ye}=ot(y),{totalItems:De,results:de,attrsEvaluated:oe}=await Y.getHandler().searchForTree({params:pe,limit:k.current,offset:b,model:g,fields:y.fields,context:c,attrs:ye&&{colors:ye}});F(Ft(oe));const Se=st({resultsToSort:de,sorter:$,fields:{...y.fields,...w.fields}});U(!1),T(Se);const we=await De;x(we)},N=async()=>{try{U(!0),await J()}catch(X){M(JSON.stringify(X))}};l.useEffect(()=>{!h||a&&N()},[_,b,h,a]);const H=async X=>{u(!1),d(!0),B(void 0);try{X==="action"?await R():await ie(),u(!0)}catch(pe){B(pe)}finally{d(!1)}},R=async()=>{const X=await Y.getHandler().getViewsForAction({action:r,context:c});q.current=X.domain,v(X.views.get("form")),m(X.views.get("tree")),C(X.model),k.current=X.limit},ie=async()=>{C(n);const X=await Y.getHandler().getView({model:n,type:"form",context:c});v(X);const pe=await Y.getHandler().getView({model:n,type:"tree",id:s,context:c});m(pe)};l.useEffect(()=>{r?H("action"):n&&H("model")},[r,n]);const ae=X=>{const{id:pe}=X;o({id:pe,model:g,treeView:y})},ee=()=>!y||!w?null:e.jsxs("div",{style:{overflowY:"scroll"},children:[L&&e.jsx(p.Alert,{className:"mt-10",message:L,type:"error",banner:!0}),e.jsx(Ct,{showPagination:!1,total:S,limit:k.current,page:_,treeView:y,results:O,onRequestPageChange:Z,loading:W,onRowClicked:ae,colorsForResults:P,sorter:$,onChangeSort:X=>{V==null||V(X);const pe=st({resultsToSort:O,sorter:X,fields:{...y.fields,...w.fields}});T(pe)},context:c})]});return I?e.jsx(p.Alert,{className:"mt-10",message:I,type:"error",banner:!0}):f?e.jsx(p.Spin,{style:{padding:"2rem"}}):ee()}const ql=t=>{const{model:r}=t,[n,s]=l.useState();l.useEffect(()=>{o()},[r]);async function o(){const i=await Y.getHandler().search({params:[],model:r,limit:1});i.length>0&&s(i[0].id)}return e.jsx("div",{style:{padding:"0.5rem",overflowY:"scroll"},children:e.jsx(ct,{...t,model:r,id:n,readOnly:!0})})},cr="line_ids";function Gl(t,r){const{model:n,context:s={},id:o,configAction:i}=t,[a,c]=l.useState([]),[f,d]=l.useState(!1),[h,u]=l.useState(),{setIsLoading:g,openAction:C,moveItemsEnabled:y}=l.useContext(lr),m=l.useRef(),w=l.useRef();l.useEffect(()=>{v()},[n,o,s]),l.useImperativeHandle(r,()=>({refresh:()=>{v()},configDashboard:A}));async function v(){d(!0),g(!0),u(void 0);try{const S=await _(),x=await b(S),O=S.fields[cr].relation,T=x[cr].items;w.current=S.fields;const P=await D({items:T,model:O,context:s}),F=await E(P);c(F),d(!1),g(!1)}catch(S){u(JSON.stringify(S))}}async function _(){return await Y.getHandler().getView({model:n,type:"form",context:s})}async function D({items:S,model:x,context:O}){m.current=(await Y.getHandler().getView({model:x,type:"form",context:O})).fields;const[T]=await jt({treeView:{fields:m.current},formView:{fields:m.current},model:x,items:S,context:O,currentView:"form"});return T}async function b(S){return(await Y.getHandler().readObjects({model:n,ids:[o],fields:S.fields,context:s}))[0]}async function E(S){const x=[];for(const O of S){const{values:T}=O;if(T.action_id&&T.action_id.length>0){const P=parseInt(T.action_id[0],10),F=await Pl({actionId:P,rootContext:s});x.push({...O,actionData:F})}}return x}async function k(S){if(!y)return;const x=S.filter(F=>{const $=a.find(L=>L.id===F.id);if(!$)return!1;if(!$.position)return!0;const V={...JSON.parse($.position.replace(/'/g,'"')),id:$.id};return JSON.stringify(F)!==JSON.stringify(V)});if(x.length===0)return;const T=a.filter(F=>x.map($=>$.id).includes(F.id)).map(F=>{const $={...x.find(V=>V.id===F.id)};return delete $.id,{...F},{...F,operation:"pendingUpdate",values:{...F.values,position:JSON.stringify($).replace(/"/g,"'")}}}),P={fields:m.current,items:T};await Y.getHandler().update({model:n,id:o,values:{[cr]:P},fields:w.current,context:s})}async function A(){C(i)}return h?(console.log(h),e.jsx(p.Alert,{className:"mt-10 mb-20",message:h,type:"error",banner:!0})):f?e.jsx(K.LoadingOutlined,{}):e.jsx(qn,{onPositionItemsChanged:k,children:a.map((S,x)=>{const{actionData:O,values:T}=S,{position:P,id:F}=T,{actionId:$,actionType:V,key:L,title:M,views:I,model:B,context:W,domain:U,initialView:q,limit:Z}=O;let J={};try{J=JSON.parse(P.replace(/'/g,'"'))}catch{J={x:x*2,y:0,w:2,h:3}}let N=null;if((q==null?void 0:q.type)==="graph")N=e.jsx(It,{view_id:I.filter(ie=>ie[1]==="graph")[0][0],model:B,context:W,domain:U,limit:Z});else if((q==null?void 0:q.type)==="form")N=e.jsx(ql,{model:B,actionDomain:U});else if((q==null?void 0:q.type)==="tree")N=e.jsx(Wl,{model:B,domain:U,view_id:I.filter(ie=>ie[1]==="tree")[0][0],onRowClicked:ie=>{const ae=I.find(ee=>{const[,X]=ee;return X==="form"});if(ae){const[ee,X]=ae,{actionId:pe,actionType:ye,title:De,model:de}=O,oe={action_id:pe,action_type:ye,name:De,res_id:ie.id,res_model:de,view_id:ee,view_type:X};C(oe)}}});else if(q!==void 0){const ie=q&&Array.isArray(q.id)?{...q,id:q.id[0]}:q;N=e.jsx(Wn,{action_id:$,action_type:V,tabKey:L,title:M,views:I,model:B,context:W,domain:U,setCanWeClose:()=>{},initialView:ie,limit:Z})}let H;const R=I.find(ie=>{const[,ae]=ie;return ae==="tree"});if(R){const[ie,ae]=R,{actionId:ee,actionType:X,title:pe,model:ye}=O;H={action_id:ee,action_type:X,name:pe,res_id:!1,res_model:ye,view_id:ie,view_type:ae}}return e.jsx(Gn,{id:F,title:M,parms:J,action:H,openAction:C,children:N},F)})})}const Un=l.forwardRef(Gl),jn=t=>{const{ooui:r}=t;return e.jsx(me,{type:"array",...t,children:e.jsx(Ul,{ooui:r})})},Ul=t=>{const{value:r,ooui:n,onChange:s}=t,{items:o=[]}=r||{},i=o.filter(S=>S.operation!=="pendingRemove").map(S=>S.id),[a,c]=l.useState([]),[f,d]=l.useState(),[h,u]=l.useState(!1),{relation:g,context:C,readOnly:y,field:m,columns:w}=n,v=l.useContext(_e),{getContext:_}=v||{};et.default(()=>{b()},[o]);const D=S=>{s==null||s({items:S})};async function b(){u(!0);let S=[];if(n.domain){const x=await Y.getHandler().evalDomain({domain:n.domain,values:at({fields:v==null?void 0:v.getFields(),values:v.getPlainValues()}),fields:v==null?void 0:v.getFields(),context:v.getContext()});S=[...S,...x]}try{const O=(await Y.getHandler().search({model:g,params:S,fields:[m],context:{..._==null?void 0:_(),...C}})).map(T=>{const P=T[m];let F=P;return Array.isArray(P)&&(F=P[1]),{label:F,value:T.id}});c(O)}catch(x){d(x)}finally{u(!1)}if(f)return e.jsx(p.Alert,{className:"mt-10",message:f,type:"error",banner:!0})}const E=()=>{A(a.map(S=>S.value))},k=()=>{A([])},A=S=>{const x=o.map(T=>S.includes(T.id)?T.operation=="pendingRemove"?{...T,operation:"original"}:T:{id:T.id,operation:"pendingRemove"}),O=x.map(T=>T.id);S.filter(T=>!O.includes(T)).map(T=>{x.push({id:T,operation:"pendingLink"})}),D(x)};return h&&a.length===0?e.jsx(p.Spin,{}):e.jsx(e.Fragment,{children:e.jsxs("div",{className:"flex flex-row",children:[e.jsx(p.Checkbox.Group,{value:a.length?i:[],disabled:y,onChange:A,style:{width:"100%"},children:e.jsx(p.Row,{children:a.map(S=>e.jsx(p.Col,{span:Math.floor(24/w),children:e.jsx(p.Checkbox,{value:S.value,children:S.label})}))})}),!y&&e.jsxs(p.Space,{children:[e.jsx(p.Button,{onClick:E,disabled:i.length==a.length,children:"Check all"}),e.jsx(p.Button,{onClick:k,disabled:i.length===0,children:"Uncheck all"})]})]})})},zn=t=>e.jsx(me,{...t,children:e.jsx(jl,{...t})}),jl=t=>{const{value:r,ooui:n}=t;return e.jsx("div",{style:{height:n.height?n.height+"px":"100%",overflow:"auto"},children:e.jsx(vo.default,{children:r,className:"ant-typography"})})},Jn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(zl,{...t})})},zl=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,direction:a}=r,c=Array.from(o.entries()),f=c&&c.length&&c.map(d=>{const[h,u]=d;return e.jsx(p.Radio,{value:h,children:u},h)});return e.jsx(p.Radio.Group,{disabled:i,onChange:n,value:s,children:e.jsx(p.Space,{direction:a,children:f})})},Zn=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o}=r;return e.jsx(me,{...t,valuePropName:"checked",children:e.jsx(Jl,{id:n,readOnly:s,required:o})})},Jl=t=>{const{required:r,readOnly:n,...s}=t;return e.jsx("div",{className:"flex flex-row",children:e.jsx(p.Switch,{disabled:n,...s})})},Xn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(Zl,{...t})})},Zl=t=>{const{ooui:r,value:n}=t,{selectionValues:s,errorField:o}=r,i=l.useContext(_e),a=Array.from(s.entries()),c=a.map(h=>h[0]).indexOf(n);let f="process",d="";return o&&(d=i.getFieldValue(o),d&&(f="error")),e.jsx(p.Steps,{current:c,status:f,children:a.map((h,u)=>e.jsx(p.Steps.Step,{title:h[1],description:u===c&&f==="error"?d:null}))})},Qn=t=>{const{ooui:r}=t,{lang:n,height:s}=r,o=l.useContext(_e),{elementHasLostFocus:i}=o||{},a=c=>{c.onDidBlurEditorWidget(i)};return e.jsx(me,{...t,children:e.jsx(Co.default,{defaultLanguage:n||"",height:s||300,onMount:a})})},{Content:Xl}=p.Layout,{Title:Ql}=p.Typography;function Rl(){const{t}=l.useContext(ge);return e.jsx(Xl,{className:"m-5 select-none",children:e.jsx(Ql,{level:5,children:t("welcome")})})}function ec(t,r){const{children:n,globalValues:s={},rootContext:o={},lang:i}=t,[a,c]=l.useState("welcome"),[f,d]=l.useState([{title:be("welcome",i),key:"welcome",closable:!0,content:e.jsx(Rl,{})}]),h=l.useRef(new Map),u=l.useRef();l.useImperativeHandle(r,()=>({retrieveAndOpenAction:y,openShortcut:v}));function g(b){if(b===a){const E=f.findIndex(k=>k.key===b);f[E-1]&&c(f[E-1].key),f[E+1]&&c(f[E+1].key)}d(f.filter(E=>E.key!==b)),h.current.delete(b)}function C({tabKey:b,canWeClose:E}){h.current.set(b,E)}async function y({action:b,values:E,forced_values:k,initialViewType:A,res_id:S,domain:x=[]}){const O=await Y.getHandler().getActionData({action:b,context:o});if(O.type==="ir.actions.wizard"){$e("Action type not supported");return}const[T,P]=b.split(","),F=parseInt(P),$=se.parseContext({context:O.context,values:s,fields:{}}),V=O.domain?await Y.getHandler().evalDomain({domain:O.domain,values:s,context:{...o,...$}}):[],{res_model:L,views:M,name:I,target:B,view_type:W,limit:U}=O,q=W==="tree",Z=[];for(const N of M){const[H,R]=N;if(H)Z.push(N);else if(R==="dashboard")Z.push([void 0,"dashboard"]);else{const{view_id:ie}=await Y.getHandler().getView({model:L,type:R,id:H,context:{...o,...$}});Z.push([ie,R])}}let J;if(A){const[N,H]=Z.find(([R,ie])=>ie===A);J={id:N,type:H}}else{const[N,H]=Z[0];J={id:N,type:H}}D({domain:[...V,...x],context:{...o,...$},model:L,views:Z,title:I,target:B,initialView:J,action_type:T,action_id:F,values:E,forced_values:k,res_id:S,treeExpandable:q,limit:U})}function m({title:b,content:E,key:k,action:A}){let S=[...f];f.length===1&&f[0].key==="welcome"&&(S=[...f.filter(x=>x.key!=="welcome")]),d([...S,{title:b,key:k,closable:!0,content:E,action:A}]),c(k)}async function w({relateData:b,fields:E,values:k,action_id:A,action_type:S}){const{res_model:x,context:O,domain:T,views:P,target:F,string:$,limit:V}=b,[L,M]=P[0],I={id:L,type:M},B=se.parseContext({context:O,values:{...k,...s},fields:E}),W=T?await Y.getHandler().evalDomain({domain:T,values:at({fields:E,values:{...k,...s}}),fields:E,context:{...o,...B}}):[];D({model:x,target:F,views:P,context:{...o,...B},domain:W,title:$,initialView:I,action_id:A,action_type:S,limit:V})}async function v(b){const{action_id:E,action_type:k,res_id:A,view_id:S}=b,x=`${k},${E}`,O=await Y.getHandler().getActionData({action:x,context:o}),T=se.parseContext({context:O.context,values:s,fields:{}}),P=O.domain?await Y.getHandler().evalDomain({domain:O.domain,values:s,context:{...o,...T}}):[],{res_model:F,views:$,name:V,target:L,view_type:M,limit:I}=O,B=M==="tree",W=[];for(const J of $){const[N,H]=J;if(N)W.push(J);else if(H==="dashboard")W.push([void 0,"dashboard"]);else{const{view_id:R}=await Y.getHandler().getView({model:F,type:H,id:N,context:{...o,...T}});W.push([R,H])}}let U,q;if(S==null){const J=W.find(N=>N[0]===void 0);U=void 0,q=J[1]}else[U,q]=W.find(J=>J[0]===void 0?!1:J[0]===S);const Z={id:U,type:q};D({domain:P,context:{...o,...T},model:F,views:W,title:V,target:L,initialView:Z,action_id:E,action_type:k,res_id:A,treeExpandable:B,limit:I})}async function _({model:b,values:E,forced_values:k,initialViewType:A,res_id:S,domain:x}){const O=await Y.getHandler().getActionStringForModel(b);await y({action:O,values:E,forced_values:k,initialViewType:A,res_id:S,domain:x})}async function D({domain:b,context:E,model:k,views:A,title:S,target:x,initialView:O,action_id:T,action_type:P,res_id:F,values:$,forced_values:V,treeExpandable:L=!1,limit:M}){const I=gr.v4();if(x!=="current"){const B=await Y.getHandler().getView({model:k,type:"form",id:O.type==="form"?O.id:void 0,context:{...o,...E}});u.current.openActionModal({domain:b,model:k,formView:B,context:{...o,...E},actionData:{action_id:T,action_type:P,res_id:F,view_id:B.view_id}})}else{const B=O&&Array.isArray(O.id)?{...O,id:O.id[0]}:O;m({title:S,action:{id:T,type:P},content:e.jsx(Wn,{action_id:T,action_type:P,tabKey:I,title:S,views:A,model:k,context:{...o,...E},domain:b,setCanWeClose:C,initialView:B,res_id:F,formDefaultValues:$,formForcedValues:V,treeExpandable:L,limit:M}),key:I})}}return e.jsx(Oo,{lang:i,children:e.jsx(Ei,{openShortcut:v,openAction:D,openRelate:w,openDefaultActionForModel:_,tabs:f,activeKey:a,onRemoveTab:async b=>{const E=h.current.get(b);(await(E==null?void 0:E())||a==="welcome")&&g(b)},onChangeTab:b=>{c(b)},children:e.jsx(Xr,{ref:u,globalValues:s,children:n})})})}const tc=l.forwardRef(ec),{useToken:rc}=p.theme;function nc(t){const{label:r,onClose:n,tabKey:s,isActive:o,onSelected:i}=t,{token:a}=rc(),c=o?a.colorBgContainer:a.colorPrimaryBg;return e.jsxs("div",{onClick:()=>{!o&&i(s)},style:{cursor:"pointer",height:40,paddingTop:7,paddingBottom:5,paddingLeft:10,paddingRight:10,backgroundColor:c,display:"inline-flex",flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",borderTopLeftRadius:a.borderRadius,borderTopRightRadius:a.borderRadius,marginLeft:2},children:[e.jsx("div",{style:{color:a.colorPrimaryActive,userSelect:"none",height:40,display:"flex",justifyContent:"center",alignItems:"center",paddingLeft:5,paddingRight:5,marginBottom:2,fontWeight:o?500:"normal"},children:r}),e.jsx("div",{style:{paddingLeft:5,height:40,display:"flex",justifyContent:"center",alignItems:"center"},children:e.jsx(K.CloseOutlined,{style:{color:a.colorPrimaryActive},onClick:f=>{f.stopPropagation(),n(s)}})})]})}function oc(){const t=l.useContext(qe),{activeKey:r,tabs:n,onRemoveTab:s,onChangeTab:o}=t||{};return e.jsx(e.Fragment,{children:n.map(i=>e.jsx(nc,{tabKey:i.key,label:i.title,onClose:s,isActive:r===i.key,onSelected:o},i.key))})}function sc(t){const{tab:r}=t,n=l.useContext(qe),{activeKey:s}=n||{},o={display:"none"};return e.jsx("div",{style:r.key!==s?o:void 0,children:r.content})}const ic=Pe.default.memo(sc,()=>!0);function ac(){const t=l.useContext(qe),{tabs:r}=t||{},n=(r==null?void 0:r.map(s=>e.jsx(ic,{tab:s},s.key)))||null;return e.jsx(e.Fragment,{children:n})}const{useToken:lc}=p.theme,cc=t=>{const{onRetrieveShortcuts:r,onCheckIsFavourite:n,onAddFavourite:s,onRemoveFavourite:o}=t,[i,a]=l.useState(!1),[c,f]=l.useState(!1),[d,h]=l.useState([]),[u,g]=l.useState(!0),[C,y]=l.useState(),{t:m}=l.useContext(ge)||{},{token:w}=lc(),v=l.useContext(qe),{openShortcut:_,tabs:D,activeKey:b,currentView:E,currentId:k,openDefaultActionForModel:A}=v||{};l.useEffect(()=>{S()},[]),l.useEffect(()=>{T()},[D,b,E,k]);async function S(){try{g(!0);const L=await r();h(L)}catch(L){$e(L)}finally{g(!1)}}function x(L){const{key:M}=L,I=d.find(B=>B.id===Number(M));(I==null?void 0:I.action_type)!=="ir.actions.wizard"&&(I&&_(I),f(!1))}function O(L){L&&S(),f(L)}async function T(){if(!E)return;const L=D.find(q=>q.key===b),{id:M,type:I}=(L==null?void 0:L.action)||{};if(!M||!I){a(!1);return}const B=E.view_id;let W=!1;E.type==="form"&&(W=k||!1);const U=await n({action_id:M,action_type:I,view_id:B,res_id:W});U!==!1&&y(U),a(U!==!1)}async function P(){f(!1),A==null||A({model:"ir.ui.view_sc"})}const F=e.jsxs(p.Menu,{onClick:x,children:[e.jsxs("div",{style:{width:300,padding:5,display:"flex"},children:[e.jsx("div",{style:{paddingLeft:15,color:"#ccc"},children:m==null?void 0:m("favorites").toUpperCase()}),e.jsx("div",{style:{flexGrow:1,paddingLeft:10},children:e.jsx(p.Tooltip,{title:m==null?void 0:m("edit_favorites"),children:e.jsx(K.EditOutlined,{style:{color:w.colorPrimary,cursor:"pointer"},onClick:P})})})]}),e.jsx(p.Menu.Divider,{}),u?e.jsx(p.Spin,{style:{padding:"1rem"}}):d.length>0?e.jsx(e.Fragment,{children:d.map(L=>e.jsx(p.Menu.Item,{children:e.jsx($,{title:L.name,type:L.view_type})},L.id))}):e.jsx("div",{style:{width:300,padding:5,paddingLeft:15},children:m==null?void 0:m("no_favorites")})]});function $({title:L,type:M}){const I=M==="tree"?e.jsx(K.TableOutlined,{}):e.jsx(K.FormOutlined,{});return e.jsxs(p.Row,{wrap:!1,children:[e.jsx(p.Col,{flex:"none",style:{paddingRight:20},children:I}),e.jsx(p.Col,{flex:"auto",children:L})]})}async function V(){if(i&&C)await o(C);else{if(!E)return;const L=D.find(U=>U.key===b),{id:M,type:I}=(L==null?void 0:L.action)||{},B=E.view_id;let W=!1;if(!M||!I){a(!1);return}E.type==="form"&&(W=k||!1),await s({action_id:M,action_type:I,view_id:B,res_id:W})}await S(),a(!i)}return e.jsxs(e.Fragment,{children:[e.jsx(p.Button,{type:i?"primary":"default",icon:i?e.jsx(K.StarFilled,{style:{color:"white"}}):e.jsx(K.StarOutlined,{}),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:V}),e.jsx(p.Dropdown,{overlay:F,onVisibleChange:O,open:c,children:e.jsx(p.Button,{style:{width:25,borderTopLeftRadius:0,borderBottomLeftRadius:0},icon:e.jsx(K.DownOutlined,{style:{fontSize:"0.5em"}}),onClick:L=>L.preventDefault()})})]})};G.ActionBar=Nn,G.Binary=In,G.Boolean=Dr,G.Button=Wt,G.ButtonGroup=br,G.Char=qt,G.CodeEditor=Qn,G.ConfigContext=Yn,G.ConnectionProvider=Y,G.ContentRootProvider=Xr,G.CurrentTabContent=ac,G.Dashboard=Un,G.DashboardGrid=qn,G.DashboardGridItem=Gn,G.Date=Dn,G.DateTime=kn,G.Email=Hn,G.ExportModal=_n,G.FavouriteButton=cc,G.Float=Zt,G.FloatTime=Sn,G.Form=ct,G.FormModal=dt,G.GraphIndicator=yn,G.Group=rr,G.Image=Hr,G.Integer=vt,G.Label=gt,G.Many2one=hn,G.Markdown=zn,G.MultiCheckbox=jn,G.Notebook=bn,G.One2many=Cn,G.ProgressBar=en,G.Radio=Jn,G.Reference=En,G.RootView=tc,G.SearchFilter=Xt,G.SearchModal=er,G.SearchTree=Rt,G.Selection=Gt,G.Separator=Tn,G.Steps=Xn,G.Switch=Zn,G.TabSelector=oc,G.Tag=on,G.Tags=Gr,G.Text=xn,G.Time=Vn,G.Tree=Ct,G.Url=Bn,G.iconMapper=We,G.showConfirmDialog=rt,Object.defineProperties(G,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
35
|
+
`,mn=Be.default.createContext(null),ka=({children:t,initialView:r})=>{const[n,s]=l.useState(r),[o,i]=l.useState(0),[a,c]=l.useState(!1);return e.jsx(mn.Provider,{value:{currentView:n,setCurrentView:s,itemIndex:o,setItemIndex:i,manualTriggerChange:a,setManualTriggerChange:c},children:t})},{getValueForOperator:yn}=oe.graphProcessor,Mt=.7,Vt=30,wn=t=>{const{model:r,domain:n,context:s,colorCondition:o,totalDomain:i,showPercent:a=!1,icon:c,suffix:f,field:d,operator:h,manualIds:u}=t,[g,C]=l.useState(!1),[y,m]=l.useState(),[w,v]=l.useState(),[O,D]=l.useState(),[S,V]=l.useState(0),[k,L]=l.useState(0),[x,b]=l.useState(),[_,T]=l.useState(),[P,I]=l.useState();l.useEffect(()=>{A()},[r,o]);async function F({domain:M,isTotal:B}){if(B)return await E({domain:M});if(d&&h){const $=u||await Y.getHandler().searchAllIds({params:M,model:r,context:s}),W=await Y.getHandler().readObjects({model:r,ids:$,fieldsToRetrieve:[d],context:s});return yn({values:W.map(z=>z[d]),operator:h})}else return u?u.length:await Y.getHandler().searchCount({model:r,params:M,context:s})}async function E({domain:M}){if(d&&h){const B=await Y.getHandler().searchAllIds({params:M,model:r,context:s}),$=await Y.getHandler().readObjects({model:r,ids:B,fieldsToRetrieve:[d],context:s});return yn({values:$.map(W=>W[d]),operator:h})}else return await Y.getHandler().searchCount({model:r,params:M,context:s})}async function A(){C(!0);let M,B;try{const $=await F({domain:n,isTotal:!1});if(m($),i){const W=await Y.getHandler().evalDomain({domain:i,values:{},context:s});M=await F({domain:W,isTotal:!0}),D(M)}if(M?(B=Math.round($/M*100*100)/100,v(B)):v(0),o){const W=await Y.getHandler().parseCondition({condition:o,values:{value:$,percent:B},context:s});b(W)}if(c)if(c.indexOf(":")!==-1){const W=await Y.getHandler().parseCondition({condition:c,values:{value:$,percent:B},context:s});T(W)}else T(c)}catch($){I(JSON.stringify($))}C(!1)}return P?e.jsx(p.Alert,{className:"mt-10",message:P,type:"error",banner:!0}):g?e.jsx("div",{style:{padding:"1rem"},children:e.jsx(H.LoadingOutlined,{style:{height:"12px"}})}):e.jsx(Yt.default,{bounds:!0,onResize:M=>{var B,$;V((B=M.bounds)==null?void 0:B.height),L(($=M.bounds)==null?void 0:$.width)},children:({measureRef:M})=>a?e.jsx(Va,{value:y,total:O,percent:w,measureRef:M,height:S,width:k,color:x,icon:_,suffix:f}):e.jsx(Ma,{value:y,total:O,measureRef:M,height:S,width:k,color:x,icon:_,suffix:f})})};function vn(t,r){const s=document.createElement("canvas").getContext("2d");return s.font=r||getComputedStyle(document.body).font,s.measureText(t).width}function Ma({measureRef:t,width:r,height:n,total:s,value:o,color:i,icon:a,suffix:c}){let f=n*Mt<Vt?Vt:n*Mt;const d=o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0});let h=s?`${d}/${s}`:`${d}`;c&&(h+=" "+c);let u=vn(h,`bold ${Math.floor(f*1.03)}px sans-serif`);a&&(u=u*2),u>=r*.85&&(f=r*.85/u*f);const g=a&&We(a);return e.jsx("div",{ref:t,style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},children:e.jsxs(Wt.default,{style:{fontSize:f,margin:0,color:i},children:[g&&e.jsx(g,{style:{fontSize:f*.7}}),g?` ${h}`:h]})})}function Va({measureRef:t,height:r,width:n,percent:s,total:o,value:i,color:a,icon:c,suffix:f}){const d=r*.65;let h=d*Mt<Vt?Vt:d*Mt;const u=i==null?void 0:i.toLocaleString("es-ES",{useGrouping:!0});let g=o?`${u}/${o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0})}`:`${u}`;f&&(g+=" "+f);const C=`${s==null?void 0:s.toLocaleString("es-ES",{useGrouping:!0})}%`;let y=vn(C,`bold ${Math.floor(h*1.03)}px sans-serif`);c&&(y=y*1.5);const m=c&&We(c);return(y>=n*.85||h*2<d)&&(h=n*.85/y*h),e.jsx("div",{ref:t,style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden",flexDirection:"column",padding:"0.2rem"},children:e.jsxs(p.Row,{align:"middle",children:[m&&e.jsx(p.Col,{style:{fontSize:h*1,color:a,paddingRight:"10px"},children:e.jsx(m,{})}),e.jsxs(p.Col,{children:[e.jsx(Wt.default,{style:{fontSize:h*.8,margin:0,color:a},children:m?` ${s}%`:`${s}%`}),e.jsx(Wt.default,{style:{fontSize:h*.4,margin:0,color:a,textAlign:"center"},children:g})]})]})})}const rr=t=>r=>{const n=r.value.toLocaleString("es-ES",{useGrouping:!0});return{name:t==="pie"?r.x:r.type,value:n}},Et=t=>{if(typeof t=="string"&&Ea(t))return parseFloat(t).toLocaleString("es-ES",{useGrouping:!0});if(Ia(t))return t.toLocaleString("es-ES",{useGrouping:!0});if($a(t)){const r=Aa(t);return r===null?t:je(t,It.input[r]).format(It.output[r])}else return t},Ea=t=>/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/.test(t),Ia=t=>typeof t=="number"&&!isNaN(t),Cn={default:{padding:"auto",xAxis:{tickCount:5,label:{formatter:Et}},yAxis:{label:{formatter:Et}},legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("default")}},pie:{appendPadding:10,radius:.9,label:{type:"inner",offset:"-30%",content:({percent:t})=>`${(t*100).toFixed(0)}%`,style:{fontSize:14,textAlign:"center"}},legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("pie")},interactions:[{type:"element-active"}]},barGrouped:{isGroup:!0,legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("barGrouped")},xAxis:{label:{formatter:Et}},yAxis:{label:{formatter:Et}},label:{position:"middle",layout:[{type:"interval-adjust-position"},{type:"interval-hide-overlap"},{type:"adjust-color"}]}}};function $a(t){return typeof t!="string"||t===void 0?!1:new Date(t).toString()!=="Invalid Date"}const It={input:{hours:"YYYY-MM-DD HH:mm",days:"YYYY-MM-DD",weeks:"YYYY-[W]WW",months:"YYYY-MM",years:"YYYY"},output:{hours:"DD/MM/YYYY HH:mm",days:"DD/MM/YYYY",weeks:"[W]WW/YYYY",months:"MM/YYYY",years:"YYYY"}};function Aa(t){for(const r in It.input)if(je(t,It.input[r],!0).isValid())return r;return null}const{processGraphData:La}=oe.graphProcessor,{getFieldsToRetrieve:Na}=oe.graphFieldUtils,Pa=t=>{const{model:r,domain:n=[],context:s={},xml:o,limit:i,uninformedString:a,manualIds:c}=t,[f,d]=l.useState(!1),[h,u]=l.useState(),[g,C]=l.useState(),[y,m]=l.useState(),[w,v]=l.useState("line");return Re.default(()=>{(async()=>{d(!0),u(void 0);const O=oe.parseGraph(o);v(O.type||"line");const D=Na({ooui:O});let S,V;try{({values:S,fields:V}=await Ha({model:r,domain:n,context:s,limit:i,order:O.timerange?O.x.name:null,fields:D,manualIds:c}))}catch(k){u("Error fetching graph data values: "+JSON.stringify(k)),d(!1);return}try{if(!S||!V){u("No values or fields returned"),d(!1);return}m(S);const k=La({ooui:O,values:S,fields:V,options:{uninformedString:a}});C(k)}catch(k){u("Error processing graph data: "+k),d(!1);return}d(!1)})()},[o,r,i,s,n]),{loading:f,error:h,type:w,values:g,evaluatedEntries:y}};async function Ba({model:t,context:r,fields:n}){return await Y.getHandler().getFields({model:t,context:r,fields:n})}async function Ha({fields:t,model:r,domain:n,context:s,order:o,limit:i,manualIds:a}){const c=await Ba({model:r,context:s,fields:t});if(a){let d=await Y.getHandler().readObjects({model:r,ids:a,fieldsToRetrieve:t,context:s});return o&&(d=[...d].sort((h,u)=>h[o]-u[o])),{values:d,fields:c}}return{values:await Y.getHandler().search({model:r,params:n,fields:t,context:s,limit:i,order:o}),fields:c}}const Ka={line:Kt.Line,bar:Kt.Column,pie:Kt.Pie},Ya=t=>{var v;const{model:r,domain:n,context:s,xml:o,limit:i,manualIds:a}=t,{t:c}=l.useContext(ge),{error:f,loading:d,values:h,type:u,evaluatedEntries:g}=Pa({model:r,xml:o,limit:i,domain:n,context:s,uninformedString:c("uninformed"),manualIds:a});if(f)return e.jsx(p.Alert,{message:f,type:"error",banner:!0});if(d)return e.jsx(p.Spin,{});if(!h)return e.jsx(p.Alert,{message:"No data to display",type:"info"});const{data:C,isGroup:y,isStack:m}=h,w=Ka[u];return w?e.jsxs("div",{style:{padding:"1rem"},children:[e.jsx("p",{style:{textAlign:"right"},children:`${c("totalRegisters")} ${(v=g==null?void 0:g.length)==null?void 0:v.toLocaleString("es-ES",{useGrouping:!0})}`}),e.jsx(w,{...Wa({type:u,data:C,isGroup:y,isStack:m})})]}):e.jsx(e.Fragment,{children:`Unknown graph type: ${u}`})};function Wa(t){const{type:r,data:n,isGroup:s,isStack:o}=t;let i=Cn[r];return i||(i=Cn.default),i.data=n,r==="pie"?(i.colorField="x",i.angleField="value"):(i.xField="x",i.yField="value",i.seriesField="type",i.isGroup=s,o&&(i.isStack=!0,i.groupField="stacked")),i}const qa=(t,r)=>{const{view_id:n,model:s,context:o,domain:i,limit:a,manualIds:c}=t,[f,d]=l.useState(!1),[h,u]=l.useState(),[g,C]=l.useState(),y=l.useContext(He),{setGraphIsLoading:m=void 0}=y||{};l.useImperativeHandle(r,()=>({refresh:()=>{w()}})),l.useEffect(()=>{w()},[n]);async function w(){d(!0),m==null||m(!0);try{const v=await Y.getHandler().getView({model:s,id:n,type:"graph",context:o});C(v.arch);const O=oe.parseGraph(v.arch);u(O)}catch(v){return console.error(v),e.jsx(e.Fragment,{children:JSON.stringify(v)})}d(!1),m==null||m(!1)}if(f)return e.jsx("div",{style:{width:"100%",display:"flex",height:"20%",justifyContent:"center",alignContent:"center",padding:"1rem"},children:e.jsx(H.LoadingOutlined,{style:{height:"12px"}})});if(!h)return null;switch(h.type){case"indicatorField":case"indicator":{const v=h,O=v.type==="indicatorField"?{field:v.field,operator:v.operator}:{};return e.jsx(wn,{showPercent:v.showPercent,totalDomain:v.totalDomain,colorCondition:v.color,model:s,context:o,domain:i,icon:v.icon,suffix:v.suffix,manualIds:c,...O})}case"line":case"bar":case"pie":return e.jsx(Ya,{model:s,context:o,domain:i,xml:g,limit:a,manualIds:c});default:return e.jsx(e.Fragment,{children:`Graph ${h.type} not implemented`})}},$t=l.forwardRef(qa),{confirm:Ga}=p.Modal,Ua=({onOk:t,lang:r})=>{Ga({title:Se("removeItems",r),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:Se("confirmRemove",r),okText:Se("yesConfirmRemove",r),onOk:t,cancelText:Se("cancel",r)})},{confirm:ja}=p.Modal,za=({onOk:t,lang:r})=>{ja({title:Se("unlinkItems",r),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:Se("confirmUnlink",r),okText:Se("yesConfirmUnlink",r),onOk:t,cancelText:Se("cancel",r)})},{useToken:Ja}=p.theme,Za=t=>{const{title:r,readOnly:n,onCreateItem:s,onToggleViewMode:o,mode:i,onDelete:a,totalItems:c,currentItemIndex:f,onPreviousItem:d,onNextItem:h,isMany2Many:u,onSearchItem:g,selectedRowKeys:C,showCreateButton:y,showToggleButton:m}=t,{token:w}=Ja();function v(){return e.jsx("div",{className:"inline-block w-3"})}function O(){return e.jsx("div",{className:"flex flex-grow h-8 text-white",style:{borderRadius:w.borderRadius,backgroundColor:w.colorPrimaryActive},children:e.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:e.jsx("span",{className:"pl-2 font-bold",children:r})})})}function D(){return e.jsx(Le,{tooltip:u?"Unlink":"Delete",icon:u?e.jsx(H.ApiOutlined,{}):e.jsx(H.DeleteOutlined,{}),onClick:a,disabled:c===0||n||i!=="form"&&C.length===0})}function S(){let k="_";return c===0?k="_":k=(f+1).toString(),e.jsxs("span",{className:"pl-1 pr-1",children:["(",k,"/",c,")"]})}function V(){return e.jsxs(e.Fragment,{children:[v(),e.jsx(Le,{tooltip:"Previous item",icon:e.jsx(H.LeftOutlined,{}),onClick:d}),S(),e.jsx(Le,{tooltip:"Next item",icon:e.jsx(H.RightOutlined,{}),onClick:h})]})}return e.jsxs("div",{className:"flex mb-2",children:[O(),e.jsxs("div",{className:"flex-none h-8 pl-2",children:[i!=="graph"&&y&&e.jsx(Le,{tooltip:"Create new item",icon:e.jsx(H.FileAddOutlined,{}),disabled:n,onClick:s}),u&&y&&e.jsx(Le,{tooltip:"Search existing item",icon:e.jsx(H.SearchOutlined,{}),disabled:n,onClick:g}),i!=="graph"&&v(),i!=="graph"&&D(),i==="form"&&V(),v(),m&&e.jsx(Le,{tooltip:"Toggle view mode",icon:e.jsx(H.AlignLeftOutlined,{}),onClick:o})]})]})},Xa={form:oe.Form,tree:oe.Tree,graph:$t};function Qa(t){const r=t.map(s=>s.id);return t.filter((s,o)=>{const{id:i}=s;return!r.includes(i,o+1)})}const Ra=t=>{var Je;const{value:r,onChange:n,ooui:s,views:o}=t,{items:i=[]}=r||{},{currentView:a,setCurrentView:c,itemIndex:f,setItemIndex:d}=l.useContext(mn),h=l.useContext(ke),{activeId:u,getFields:g,getValues:C,getContext:y,domain:m}=h||{},{lang:w,t:v}=l.useContext(ge),[O,D]=l.useState(!1),[S,V]=l.useState(!1),[k,L]=l.useState(),[x,b]=l.useState(!1),[_,T]=l.useState(!1),[P,I]=l.useState(),[F,E]=l.useState([]),[A,M]=l.useState(!1),B=l.useRef([]),[$,W]=l.useState(),z=l.useRef(),[q,X]=l.useState(void 0),{readOnly:U,relation:N,context:K,domain:Z}=s,se=s.type==="many2many",{id:ce}=s,Q=i.filter(ee=>(ee.values||ee.treeValues)&&ee.operation!=="pendingRemove"),R=l.useRef();l.useEffect(()=>{if(R.current!==a){R.current=a,ue();return}ue()},[i,a]);const ue=l.useCallback(()=>{(a==="form"&&i.some(ee=>!ee.values)||a==="tree"&&i.some(ee=>!ee.treeValues))&&Me()},[i,a]);l.useEffect(()=>{de()},[m]);const ve=ee=>{var le,Oe;n==null||n({fields:((le=o.get("form"))==null?void 0:le.fields)||((Oe=o.get("tree"))==null?void 0:Oe.fields),items:Qa(ee)})},Me=async()=>{await xe(),f>Q.length-1&&f!==0&&d(0)},xe=async ee=>{var le,Oe,he;V(!0),D(!1),L(void 0);try{const[pe,ie]=await zt({treeView:{arch:(le=o.get("tree"))==null?void 0:le.arch,fields:(Oe=o.get("tree"))==null?void 0:Oe.fields},formView:{fields:((he=o.get("form"))==null?void 0:he.fields)||{}},model:N,items:i,context:{...y==null?void 0:y(),...K},currentView:ee||a});return z.current||(z.current=pe.map(Pe=>Pe.id)),(a||ee)==="tree"&&ie&&X(ie),ve(pe),pe}catch(pe){L(pe)}finally{V(!1)}};async function de(){Z&&(B.current=await Y.getHandler().evalDomain({domain:Z,values:at({fields:g(),values:C()}),fields:g(),context:y()})),m&&m.length>0&&(B.current=B.current.concat(oe.transformDomainForChildWidget({domain:m,widgetFieldName:ce})))}const ae=()=>{const ee=Array.from(o.keys()),le=ee[(ee.indexOf(a)+1)%ee.length];a==="form"?Ve(()=>{c(le)}):c(le)},we=()=>{f>0&&(a==="form"?Ve(()=>{d(f-1)}):d(f-1))},De=()=>{const ee=Q.length;f<ee-1&&(a==="form"?Ve(()=>{d(f+1)}):d(f+1))},be=async()=>{const ee=Q[f].id,le=(await Y.getHandler().readObjects({model:N,ids:[ee],fields:o.get("form").fields,context:{...y==null?void 0:y(),...K}}))[0],Oe=(await Y.getHandler().readObjects({model:N,ids:[ee],fields:o.get("tree").fields,context:{...y==null?void 0:y(),...K}}))[0],he=i.map(pe=>pe.id===ee?{...pe,operation:"original",values:le,treeValues:Oe}:pe);ve(he)},Ve=ee=>{O?yt({lang:w,onOk:()=>{be(),ee(),D(!1)}}):ee()},Ke=()=>{if(se){za({lang:w,onOk:()=>{a==="form"?Te():Ee()}});return}Ua({lang:w,onOk:()=>{a==="form"?Te():Ee()}})},Ie=async()=>{const{inv_field:ee}=s;let le;ee&&u&&(le={[ee]:u}),a==="form"?Ve(()=>{M(!0),I({defaultValues:le}),b(!0)}):(M(!0),I({defaultValues:le}),b(!0))},te=async()=>{a==="form"?Ve(()=>{T(!0)}):T(!0)},Te=async()=>{V(!0),D(!1),L(void 0);try{if(Q[f].id>0){const ee=i.map(le=>le.id===Q[f].id?{...le,operation:"pendingRemove"}:le);ve(ee)}else ve(i.filter(ee=>ee.id!==Q[f].id))}catch(ee){L(ee)}d(0),V(!1)},Ee=async()=>{const ee=Q.filter(le=>F.includes(le.id));V(!0),D(!1),L(void 0);try{const le=ee.map(he=>he.id),Oe=i.filter(he=>!(le.includes(he.id)&&he.id<0)).map(he=>le.includes(he.id)?{...he,operation:"pendingRemove"}:he);ve(Oe)}catch(le){L(le)}d(0),V(!1)},ye=(ee,le,Oe)=>{let he;if(ee)he=i.map(pe=>pe.id===ee?{id:ee,operation:ee>0?"pendingUpdate":"pendingCreate",values:{...Oe,id:ee},treeValues:{...Oe,id:ee}}:pe);else{const pe=Qs(i);he=i.concat({id:pe,operation:"pendingCreate",values:{...Oe,id:pe},treeValues:{...Oe,id:pe}})}ve(he),A||b(!1)},Ce=async ee=>{const{id:le}=ee;let Oe=i;const he=i.find(pe=>pe.id===le);(he==null?void 0:he.values)===void 0&&(Oe=await xe("form")),I(Oe.find(pe=>pe.id===le)),M(!1),b(!0)},Fe=async ee=>{V(!0);let le=i;const Oe=ee.filter(he=>!i.find(pe=>pe.id===he));try{for(const he of Oe){const pe=(await Y.getHandler().readObjects({model:N,ids:[he],fields:o.get("form").fields,context:{...y==null?void 0:y(),...K}}))[0],ie=(await Y.getHandler().readObjects({model:N,ids:[he],fields:o.get("tree").fields,context:{...y==null?void 0:y(),...K}}))[0];le.push({id:he,operation:"pendingLink",values:pe,treeValues:ie})}ve(le)}catch(he){L(he)}finally{V(!1)}};function fe(){const ee=Xa[a];if(a==="graph")return oe.parseGraph(o.get("graph").arch).string;{const le=new ee(o.get(a).fields);return le.parse(o.get(a).arch),le.string}}const qe=()=>{var le,Oe,he,pe;if(a==="form")return Q.length===0?v("noCurrentEntries"):a!==R.current&&i.some(ie=>!ie.values)?e.jsx(p.Spin,{}):e.jsx(ct,{formView:o.get("form"),values:(le=Q[f])==null?void 0:le.values,parentContext:{...y==null?void 0:y(),...K},model:N,id:(Oe=Q[f])==null?void 0:Oe.id,submitMode:"values",onFieldsChange:ie=>{var xt;const Pe=(xt=Q[f])==null?void 0:xt.id,Ze=i.map(Qe=>Qe.id===Pe?{...Qe,operation:Qe.operation==="original"?"pendingUpdate":Qe.operation,values:{...ie,id:Pe},treeValues:{...ie,id:Pe}}:Qe);ve(Ze),D(!0)},readOnly:U});let ee=[];if(Q.some(ie=>ie.treeValues)&&(ee=$?st({resultsToSort:Q.map(ie=>ie.treeValues),sorter:$,fields:{...o.get("tree").fields,...((he=o.get("form"))==null?void 0:he.fields)||{}}}):Q.map(ie=>ie.treeValues)),a==="tree")return e.jsx(Ct,{total:Q.length,limit:Q.length,treeView:o.get("tree"),results:ee,loading:S,onRowClicked:((pe=o.get("form"))==null?void 0:pe.fields)!==void 0?Ce:void 0,showPagination:!1,rowSelection:{selectedRowKeys:F,onChange:E},sorter:$,onChangeSort:W,context:{...y==null?void 0:y(),...K},colorsForResults:q,readonly:U});if(a==="graph"){const ie=[[`${s.inv_field}`,"=",u]];return e.jsx($t,{view_id:o.get("graph").view_id,model:s.relation,domain:ie,context:{...y==null?void 0:y(),...K},limit:0})}};if(k)return e.jsx(p.Alert,{className:"mt-10",message:k,type:"error",banner:!0});const $e=A;return S?e.jsx(p.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(Za,{mode:a,title:fe(),readOnly:U,isMany2Many:se,formHasChanges:O,totalItems:Q.length,currentItemIndex:f,onDelete:Ke,onCreateItem:Ie,onToggleViewMode:ae,onPreviousItem:we,onNextItem:De,onSearchItem:te,selectedRowKeys:F,showCreateButton:((Je=o.get("form"))==null?void 0:Je.fields)!==void 0,showToggleButton:o.size>1}),qe(),e.jsx(dt,{formView:o.get("form"),model:N,id:P==null?void 0:P.id,submitMode:"values",values:P==null?void 0:P.values,defaultValues:P==null?void 0:P.defaultValues,visible:x,onSubmitSucceed:ye,parentContext:{...y==null?void 0:y(),...K},onCancel:()=>{M(!1),b(!1)},readOnly:U,mustClearAfterSave:$e}),e.jsx(tr,{domain:B.current,model:N,context:{...y==null?void 0:y(),...K},visible:_,onSelectValues:async ee=>{T(!1),Fe(ee)},onCloseModal:()=>{T(!1)}})]})},Sn=t=>{const{ooui:r}=t,{mode:n,relation:s,views:o,required:i,context:a}=r;let c;const[f,d]=l.useState(!0),[h,u]=l.useState(),[g,C]=l.useState(new Map),y=l.useContext(ke),{getContext:m}=y||{};Re.default(()=>{v()},[r]);const w=async D=>o&&o[D]?o[D]:await Y.getHandler().getView({model:s,type:D,context:{...m==null?void 0:m(),...a}}),v=async()=>{d(!0),u(void 0);try{if(n&&n.length>0){for(const D of n){const S=await w(D);g.set(D,S)}C(g)}else{const D=await w("form"),S=await w("tree");g.set("form",D),g.set("tree",S),C(g)}}catch(D){u(JSON.stringify(D))}finally{d(!1)}};if(n&&n.length>0?c=n[0]:c="tree",f)return e.jsx(p.Spin,{});if(h)return e.jsx(p.Alert,{className:"mt-10",message:h,type:"error",banner:!0});const O=async(D,S)=>{if(!S)throw new Error;if(!S.items)throw new Error;if(!Array.isArray(S.items))throw new Error;if(S.items.length===0)throw new Error};return e.jsx(ka,{initialView:c,children:e.jsx(me,{required:i,type:"array",validator:O,...t,children:e.jsx(Ra,{ooui:r,views:g})})})},{useToken:el}=p.theme,bn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"number",...t,children:e.jsx(tl,{ooui:r})})},tl=t=>{const{ooui:r,value:n,onChange:s}=t,{id:o,readOnly:i,required:a}=r,{token:c}=el(),f=a&&!i?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useRef(),[h,u]=l.useState(),g=l.useContext(ke),{elementHasLostFocus:C}=g||{};l.useEffect(()=>{u(en(n))},[n]);const y=v=>{s==null||s(v)};function m(v){d.current=v.target.value,u(v.target.value)}async function w(){y(na(h)),await new Promise(v=>setTimeout(v,300)),C==null||C()}return e.jsx(p.Input,{value:h,disabled:i,className:"w-full",style:f,id:o,placeholder:"00:00",onChange:m,onBlur:w})};function nr(t){const{ooui:r,showLabel:n=!0,responsiveBehaviour:s}=t,o=We(r.icon||"");return e.jsx(e.Fragment,{children:(r.label||o)&&n?e.jsx(pr.FieldSet,{label:r.label,icon:o,children:e.jsx(Zt,{container:r.container,responsiveBehaviour:s})}):e.jsx(Zt,{container:r.container,responsiveBehaviour:s})})}const{TabPane:rl}=p.Tabs;function xn(t){const{ooui:r,responsiveBehaviour:n}=t,s=r.pages;function o(i){if(i){const a=We(i);return a&&e.jsx(a,{})}}return e.jsx(p.Tabs,{defaultActiveKey:"1",tabPosition:r.tabPosition,children:s.filter(i=>!i.invisible).map(i=>e.jsx(rl,{tab:e.jsxs(e.Fragment,{children:[o(i.icon)," ",i.label]}),children:e.jsx(nr,{ooui:i,showLabel:!1,responsiveBehaviour:n})},i.label))})}const{useToken:nl}=p.theme,{TextArea:or}=p.Input,Tn=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o,height:i,translatable:a}=r,{token:c}=nl(),f=o&&!s?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useContext(ke),{elementHasLostFocus:h}=d||{};return e.jsx(me,{required:o,...t,children:a?e.jsx(ol,{field:n,height:i,requiredStyle:f}):e.jsx(or,{disabled:s||a,style:{minHeight:i?i+"px":"100%",...f},rows:4,onBlur:h})})},ol=({value:t,field:r,requiredStyle:n,onChange:s,height:o})=>{const i=l.useContext(ke),{activeId:a,activeModel:c,fetchValues:f,formHasChanges:d,elementHasLostFocus:h}=i||{},[u,g]=l.useState(!1),{t:C}=l.useContext(ge);return a?e.jsxs(e.Fragment,{children:[e.jsx("div",{onClick:()=>{if(d!=null&&d()){Ue(C("saveBeforeTranslate"));return}u||g(!0)},children:e.jsx(or,{value:t,onChange:y=>{s==null||s(y.target.value)},style:{height:o?o+"px":"100%",cursor:"pointer",...n},id:r,disabled:!0,rows:4,onBlur:h})}),e.jsx(Or,{id:a,model:c,field:r,visible:u,onCloseModal:()=>{g(!1)},onSubmitSucceed:()=>{g(!1),f==null||f()}})]}):e.jsxs(e.Fragment,{children:[e.jsx(p.Row,{gutter:8,wrap:!1,children:e.jsx(or,{value:t,onChange:y=>{s==null||s(y.target.value)},style:{height:o?o+"px":"100%",...n},id:r,rows:4,onBlur:h})}),e.jsx(p.Row,{justify:"end",style:{paddingTop:5},children:e.jsx(Le,{tooltip:C("translate"),icon:e.jsx(H.TranslationOutlined,{}),onClick:async()=>{d!=null&&d()?Ue(C("saveBeforeTranslate")):Ue(C("enterTextBeforeTranslate"))},children:C("translate")})})]})},Fn=t=>{const{ooui:r}=t,{label:n,icon:s}=r,o=We(s||"");return e.jsx(p.Divider,{orientation:"left",className:"text-sm",children:(o||n)&&e.jsxs(p.Space,{children:[o?e.jsx(o,{}):null,n]})})},sl=({model:t,context:r,locale:n,selectedRegistersToExport:s,domain:o,limit:i,onClose:a})=>{const c=l.useRef({}),f=l.useRef(new Map),d=l.useCallback(async w=>{if(w.selectedKeys===void 0||w.selectedKeys.length===0){Ue(Se("selectAtLeastOneField",n));return}let v=o;w.registersAmount==="selected"&&(s==null?void 0:s.length)!==0&&(v=[["id","in",s==null?void 0:s.map(S=>S.id)]]);const{datas:O}=await Y.getHandler().exportData({model:t,fields:ul({keys:w.selectedKeys,fields:c.current}),domain:v,limit:w.registersAmount==="all"?0:i,context:r,format:w.exportType});a(),await new Promise(S=>setTimeout(S,200));const D=await nt(O);Ft(O,D.mime)},[n,t,o,i,r,a]),h=l.useCallback(async()=>{const w=await Y.getHandler().getFields({model:t,context:r,fields:[]});return c.current["/"]=w,On({fields:w})},[t,r,c]),u=l.useCallback(async w=>{const O=ir(w,c.current)[sr(w)],D=O.relation,S=await Y.getHandler().getFields({model:D,context:r,fields:[]});for(const[V,k]of Object.entries(S))S[V].string=al({parentTitle:O.string,title:k.string});return c.current[w]=S,On({fields:S,parentKey:w})},[c.current,t,r]),g=l.useCallback(async()=>{const w=await ll({model:t,context:r}),v=await dl({predefinedExports:w,fields:c.current,onGetFieldChilds:u});return{predefinedExports:w.map(D=>({...D,fields:D.fields.map(S=>{const V=sr(S.key),L=ir(S.key,c.current)[V];return{key:S.key,title:L.string}})})),keysWithChilds:v}},[c.current]),C=l.useCallback(async w=>{const v=await m("ir.exports"),O=await m("ir.exports.line"),D=await Y.getHandler().create({model:"ir.exports",values:{name:w.name,resource:t},fields:v,context:r});return await Promise.all(w.fields.map(async S=>await Y.getHandler().create({model:"ir.exports.line",values:{name:S.key,export_id:D},fields:O,context:r}))),{...w,id:D}},[]),y=l.useCallback(async w=>{await Y.getHandler().delete({model:"ir.exports",ids:[w.id]})},[]),m=l.useCallback(async w=>{if(f.current.has(w))return f.current.get(w);const v=Y.getHandler().getFields({model:w,context:r,fields:[]});f.current.set(w,v)},[f,r]);return{onGetFields:h,onGetFieldChilds:u,onExport:d,onGetPredefinedExports:g,onSavePredefinedExport:C,onRemovePredefinedExport:y}},On=({fields:t,parentKey:r})=>{const n=[];for(const s of Object.keys(t)){const o=t[s];if(o.relation&&o.is_function===!0)continue;const i=_n(o);n.push({key:il({key:s,parentKey:r}),title:o.string,tooltip:o.help,required:o.required,isLeaf:!i})}return n},_n=t=>t.type==="many2one"||t.type==="one2many"||t.type==="many2many",il=({parentKey:t,key:r})=>`${t?t+"/":""}${r}`,St=t=>t.indexOf("/")===-1?t:t.split("/").slice(0,-1).join("/"),sr=t=>{if(t.indexOf("/")===-1)return t;const r=t.split("/");return r[r.length-1]},ir=(t,r)=>t.indexOf("/")===-1?r["/"]:r[St(t)],al=({title:t,parentTitle:r})=>`${r?r+" \u2192 ":""}${t}`,ll=async({model:t,context:r})=>{const n=await Y.getHandler().search({model:"ir.exports",params:[["resource","=",t]],context:r}),s=n.flatMap(i=>i.export_fields),o=await Y.getHandler().readObjects({model:"ir.exports.line",ids:s,context:r});return n.map(i=>({id:i.id,name:i.name,fields:i.export_fields.map(a=>({key:o.find(f=>f.id===a).name}))}))},cl=({fields:t,keys:r})=>fl([...new Set(r.filter(n=>{var s,o,i;if(n.indexOf("/")===-1)return!((s=t["/"])!=null&&s[n]);{const a=St(n);console.log({key:n,parentKey:a,fields:t});const c=(o=t==null?void 0:t[St(n)])==null?void 0:o[n];return console.log({exists:c}),!((i=t==null?void 0:t[St(n)])!=null&&i[n])}}).map(n=>St(n)))]),dl=async({predefinedExports:t,fields:r,onGetFieldChilds:n})=>{const s=t.flatMap(a=>a.fields.map(c=>c.key)),o=cl({fields:r,keys:s}),i=[];for(const a of o)i.push({key:a,childs:await n(a)});return i},ul=({keys:t,fields:r})=>t.map(n=>{const s=sr(n),i=ir(n,r)[s];return _n(i)?`${n}/id`:n}),fl=t=>{const r=new Map,n=[];for(const s of t){const o=s.split("/");let i="";for(const a of o){const c=i?`${i}/${a}`:a;r.has(c)||(n.push(c),r.set(c,!0)),i=c}}return n.sort((s,o)=>{const i=s.split("/").length,a=o.split("/").length;return i-a}),n},Dn=t=>{const{visible:r,locale:n,onClose:s,model:o,context:i,selectedRegistersToExport:a,totalRegisters:c,domain:f,limit:d,visibleRegisters:h}=t,{onExport:u,onGetFieldChilds:g,onGetFields:C,onGetPredefinedExports:y,onSavePredefinedExport:m,onRemovePredefinedExport:w}=sl({model:o,context:i,domain:f,limit:d,selectedRegistersToExport:a,onClose:s,locale:n});return e.jsx(pr.ExportModal,{visible:r,locale:n,onSucceed:u,onCancel:s,selectedRegistersToExport:a&&a.length&&a.length>0?a.length:void 0,totalRegisters:c,onGetFieldChilds:g,onGetFields:C,visibleRegisters:h,onGetPredefinedExports:y,onSavePredefinedExport:m,onRemovePredefinedExport:w})},kn=t=>{const{ooui:r}=t;return e.jsx(dn,{ooui:r})},Mn=t=>{const{ooui:r}=t;return e.jsx(dn,{ooui:r,showTime:!0})};var Vn={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Xe,function(){var n={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},s=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,o=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,c={},f=function(m){return(m=+m)+(m>68?1900:2e3)},d=function(m){return function(w){this[m]=+w}},h=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=function(w){if(!w||w==="Z")return 0;var v=w.match(/([+-]|\d\d)/g),O=60*v[1]+(+v[2]||0);return O===0?0:v[0]==="+"?-O:O}(m)}],u=function(m){var w=c[m];return w&&(w.indexOf?w:w.s.concat(w.f))},g=function(m,w){var v,O=c.meridiem;if(O){for(var D=1;D<=24;D+=1)if(m.indexOf(O(D,0,w))>-1){v=D>12;break}}else v=m===(w?"pm":"PM");return v},C={A:[a,function(m){this.afternoon=g(m,!1)}],a:[a,function(m){this.afternoon=g(m,!0)}],S:[/\d/,function(m){this.milliseconds=100*+m}],SS:[o,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[i,d("seconds")],ss:[i,d("seconds")],m:[i,d("minutes")],mm:[i,d("minutes")],H:[i,d("hours")],h:[i,d("hours")],HH:[i,d("hours")],hh:[i,d("hours")],D:[i,d("day")],DD:[o,d("day")],Do:[a,function(m){var w=c.ordinal,v=m.match(/\d+/);if(this.day=v[0],w)for(var O=1;O<=31;O+=1)w(O).replace(/\[|\]/g,"")===m&&(this.day=O)}],M:[i,d("month")],MM:[o,d("month")],MMM:[a,function(m){var w=u("months"),v=(u("monthsShort")||w.map(function(O){return O.slice(0,3)})).indexOf(m)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(m){var w=u("months").indexOf(m)+1;if(w<1)throw new Error;this.month=w%12||w}],Y:[/[+-]?\d+/,d("year")],YY:[o,function(m){this.year=f(m)}],YYYY:[/\d{4}/,d("year")],Z:h,ZZ:h};function y(m){var w,v;w=m,v=c&&c.formats;for(var O=(m=w.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(b,_,T){var P=T&&T.toUpperCase();return _||v[T]||n[T]||v[P].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(I,F,E){return F||E.slice(1)})})).match(s),D=O.length,S=0;S<D;S+=1){var V=O[S],k=C[V],L=k&&k[0],x=k&&k[1];O[S]=x?{regex:L,parser:x}:V.replace(/^\[|\]$/g,"")}return function(b){for(var _={},T=0,P=0;T<D;T+=1){var I=O[T];if(typeof I=="string")P+=I.length;else{var F=I.regex,E=I.parser,A=b.slice(P),M=F.exec(A)[0];E.call(_,M),b=b.replace(M,"")}}return function(B){var $=B.afternoon;if($!==void 0){var W=B.hours;$?W<12&&(B.hours+=12):W===12&&(B.hours=0),delete B.afternoon}}(_),_}}return function(m,w,v){v.p.customParseFormat=!0,m&&m.parseTwoDigitYear&&(f=m.parseTwoDigitYear);var O=w.prototype,D=O.parse;O.parse=function(S){var V=S.date,k=S.utc,L=S.args;this.$u=k;var x=L[1];if(typeof x=="string"){var b=L[2]===!0,_=L[3]===!0,T=b||_,P=L[2];_&&(P=L[2]),c=this.$locale(),!b&&P&&(c=v.Ls[P]),this.$d=function(A,M,B){try{if(["x","X"].indexOf(M)>-1)return new Date((M==="X"?1e3:1)*A);var $=y(M)(A),W=$.year,z=$.month,q=$.day,X=$.hours,U=$.minutes,N=$.seconds,K=$.milliseconds,Z=$.zone,se=new Date,ce=q||(W||z?1:se.getDate()),Q=W||se.getFullYear(),R=0;W&&!z||(R=z>0?z-1:se.getMonth());var ue=X||0,ve=U||0,Me=N||0,xe=K||0;return Z?new Date(Date.UTC(Q,R,ce,ue,ve,Me,xe+60*Z.offset*1e3)):B?new Date(Date.UTC(Q,R,ce,ue,ve,Me,xe)):new Date(Q,R,ce,ue,ve,Me,xe)}catch{return new Date("")}}(V,x,k),this.init(),P&&P!==!0&&(this.$L=this.locale(P).$L),T&&V!=this.format(x)&&(this.$d=new Date("")),c={}}else if(x instanceof Array)for(var I=x.length,F=1;F<=I;F+=1){L[1]=x[F-1];var E=v.apply(this,L);if(E.isValid()){this.$d=E.$d,this.$L=E.$L,this.init();break}F===I&&(this.$d=new Date(""))}else D.call(this,S)}}})})(Vn);const hl=Vn.exports;je.extend(hl);const En=t=>{const{ooui:r}=t;return e.jsx(me,{...t,children:e.jsx(pl,{ooui:r})})},pl=t=>{const r=(n,s)=>{t.onChange&&t.onChange(s)};return e.jsx(p.TimePicker,{onChange:r,value:t.value?je(t.value,"HH:mm:ss"):void 0})},In=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(gl,{ooui:r})})},gl=t=>{const{value:r,onChange:n,ooui:s}=t,{required:o,selectionValues:i,readOnly:a}=s,c=r==null?void 0:r.split(","),[f,d]=l.useState([]),[h,u]=l.useState();return l.useEffect(()=>{if(!r){u(void 0),d([]);return}const g=r&&c&&c[0],C=r&&c&&c[1]&&parseInt(c[1]);d([C,void 0]),u(g)},[r]),e.jsxs(p.Row,{gutter:8,wrap:!1,children:[e.jsx(p.Col,{flex:"1",children:e.jsx(_r,{ooui:new oe.Selection({name:"model_selection",selection:i,readonly:a,required:o}),onChange:g=>{u(g);let C=f[0]||0;g!==h&&(d([]),C=0);const y=`${g},${C}`;y!==r&&(n==null||n(y))},value:h})}),e.jsx(p.Col,{flex:"3",children:e.jsx(gn,{ooui:new oe.Many2one({name:"object_value",relation:h,readonly:a,required:o}),value:f,onChange:g=>{d(g);const C=`${h},${g[0]||0}`;C!==r&&(n==null||n(C))}})})]})},{useToken:ml}=p.theme,$n=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(yl,{ooui:r})})},yl=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o,required:i,filenameField:a}=r,{token:c}=ml(),f=i&&!o?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useRef(null),{setFieldValue:h,getFieldValue:u}=l.useContext(ke)||{},{t:g}=l.useContext(ge),C=n?js(n):"",y=D=>{s==null||s(D)};async function m(){const D=await nt(n),S=`data:${D==null?void 0:D.mime};base64,${n}`,V=document.createElement("a"),k=u(a),L=u("name");V.href=S,V.download=k||L,V.click()}async function w(){const D=await nt(n);Ft(n,D.mime)}async function v(D){D.stopPropagation(),D.preventDefault();const S=D.target.files[0],V=await Hr(S);y(V),a&&h(a,S.name)}function O(){h(a,void 0),y(void 0)}return e.jsxs(p.Row,{gutter:8,children:[e.jsxs(p.Col,{style:{paddingBottom:5},children:[e.jsx("input",{type:"file",id:"file",ref:d,style:{display:"none"},onChange:v}),e.jsx(p.Input,{type:"text",disabled:!0,style:f,value:C})]}),e.jsx(p.Col,{children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.FolderOpenOutlined,{}),disabled:o,onClick:()=>{d.current.click()},children:"Select"}),e.jsx(p.Button,{icon:e.jsx(H.EyeOutlined,{}),disabled:!n,onClick:w,children:g("open")}),e.jsx(Le,{tooltip:g("download"),disabled:!n,onClick:m,icon:e.jsx(H.DownloadOutlined,{})}),e.jsx(Le,{tooltip:g("clear"),disabled:o||!n,onClick:O,icon:e.jsx(H.ClearOutlined,{})})]})})]})},ar={tree:e.jsx(H.TableOutlined,{}),form:e.jsx(H.FormOutlined,{}),graph:e.jsx(H.AreaChartOutlined,{}),calendar:e.jsx(H.CalendarOutlined,{})};function An(t){return t?(ar==null?void 0:ar[t.type])||e.jsx(H.FormOutlined,{}):e.jsx(H.FormOutlined,{})}function lr(t){const{currentView:r,availableViews:n,onChangeView:s,disabled:o=!1,formHasChanges:i=!1,previousView:a}=t,{t:c,lang:f}=l.useContext(ge);function d(){const g=n.map((C,y)=>e.jsx(p.Menu.Item,{children:e.jsxs(p.Row,{wrap:!1,children:[e.jsx(p.Col,{flex:"none",style:{paddingRight:20},children:An(C)}),e.jsx(p.Col,{flex:"auto",style:{paddingRight:20},children:C.type.charAt(0).toUpperCase()+C.type.slice(1)}),e.jsx(p.Col,{flex:"none",children:e.jsx(H.CheckOutlined,{style:{opacity:r.view_id===C.view_id?1:0}})})]})},C.view_id||y));return e.jsx(p.Menu,{onClick:u,children:e.jsx(p.Menu.ItemGroup,{title:c("viewAs"),children:g})})}function h(g){if(i){yt({lang:f,onOk:()=>{g()}});return}g()}function u(g){h(()=>{const C=n.find(y=>y.view_id===parseInt(g.key));s(C)})}return e.jsxs("div",{style:{display:"flex"},children:[e.jsx(Le,{tooltip:a?c("viewAs")+" "+c(a.type):"",icon:An(a),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:()=>{u({key:a==null?void 0:a.view_id})},disabled:o||n.length===1}),e.jsx(p.Dropdown,{overlay:d(),disabled:o||n.length===1,children:e.jsx(p.Button,{style:{width:25,borderTopLeftRadius:0,borderBottomLeftRadius:0},icon:e.jsx(H.DownOutlined,{style:{fontSize:"0.5em"}}),onClick:g=>g.preventDefault()})})]})}function ut(t){const{icon:r,tooltip:n,items:s=[],onItemClick:o,label:i,disabled:a=!1}=t;function c(){const d=s==null?void 0:s.map((h,u)=>h.name==="divider"?e.jsx(p.Menu.Divider,{},"divider"+u):e.jsx(p.Menu.Item,{children:h.name},h.id));return e.jsx(p.Menu,{onClick:f,children:e.jsx(p.Menu.ItemGroup,{title:n,children:d})})}function f(d){const h=s.find(u=>isNaN(d.key)?u.id===d.key:u.id===parseInt(d.key));o(h)}return e.jsx(p.Dropdown,{overlay:c(),disabled:a||!s||s.length===0,children:e.jsxs(p.Button,{children:[r," ",i," ",e.jsx(H.DownOutlined,{})]})})}function Ne(t){const{onClick:r,disabled:n=!1,loading:s=!1,tooltip:o,icon:i,label:a,type:c="default"}=t,f=s?e.jsx(H.LoadingOutlined,{}):i;return e.jsxs(Le,{type:c,tooltip:o,onClick:r,disabled:n,children:[f,a]})}function Ln(t){const{disabled:r=!1}=t,{formHasChanges:n,onNewClicked:s}=l.useContext(He),{t:o,lang:i}=l.useContext(ge),a=()=>{if(n){yt({lang:i,onOk:()=>{s()}});return}s()};return e.jsx(Ne,{icon:e.jsx(H.FileAddOutlined,{}),tooltip:o("new"),onClick:a,disabled:r})}const{confirm:wl}=p.Modal,vl=({onOk:t,onCancel:r,lang:n})=>{wl({title:Se("unsavedChanges",n),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:Se("confirmRefreshWithoutSave",n),okText:Se("discardAndRefresh",n),cancelText:Se("cancel",n),onOk:t,onCancel:r})};async function Nn(t,r,n){const s=(await Y.getHandler().getLogInfo({model:t,ids:[r]}))[0],{create_date:o,create_uid:i,id:a,write_date:c,write_uid:f}=s;Ue(e.jsxs("div",{children:["ID: "+a," ",e.jsx("br",{}),n("createdBy")+": "+i[1]," ",e.jsx("br",{}),n("creationDate")+": "+o," ",e.jsx("br",{}),n("lastUpdatedBy")+": "+f[1]," ",e.jsx("br",{}),n("lastUpdatedDate")+": "+c]}))}const Cl=t=>{const{numberOfAttachments:r,disabled:n}=t,{t:s,lang:o}=l.useContext(ge),[i,a]=l.useState(!1),c=e.jsxs(p.Button,{disabled:n,children:[e.jsx(H.LinkOutlined,{}),`(${r})`,e.jsx(H.DownOutlined,{style:{fontSize:12}})]});return n?c:e.jsx(p.Popover,{onVisibleChange:f=>a(f),visible:i,placement:"bottom",content:Sl(t,a,o),title:s("attachments"),arrowContent:null,children:c})},Sl=(t,r,n)=>{const{attachments:s=[],loading:o,onAddNewAttachment:i,onopenAttachmentLink:a,onOpenAttachmentDetail:c,onListAllAttachments:f}=t;return o?e.jsx(p.Spin,{style:{padding:20}}):e.jsxs(e.Fragment,{children:[e.jsxs("a",{style:{display:"block",paddingBottom:5},href:"#",onClick:()=>{r(!1),f()},children:[e.jsx(H.TableOutlined,{})," ",Se("listAllAttachments",n)]}),e.jsxs("a",{style:{display:"block"},href:"#",onClick:()=>{r(!1),i()},children:[e.jsx(H.FileAddOutlined,{})," ",Se("addNewAttachment",n)]}),s.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("li",{className:"ant-dropdown-menu-item-divider"}),s.map(d=>{const h=d.link?H.LinkOutlined:H.DownloadOutlined;return e.jsxs(p.Row,{style:{paddingTop:4,paddingBottom:4},wrap:!1,align:"middle",children:[e.jsx(p.Col,{flex:"auto",children:d.name}),e.jsx(p.Col,{flex:"25px",style:{textAlign:"center"},children:(d.datas_fname||d.link)&&e.jsx(p.Tooltip,{title:d.link?Se("openAttachmentLink",n):Se("download",n),children:e.jsx(h,{style:{cursor:"pointer"},onClick:()=>{r(!1),a(d)}})})}),e.jsx(p.Col,{flex:"25px",style:{textAlign:"center"},children:e.jsx(p.Tooltip,{title:Se("openAttachment",n),children:e.jsx(H.FormOutlined,{style:{cursor:"pointer"},onClick:()=>{r(!1),c(d)}})})})]},d.id)})]})]})};function bl(t){const{attachments:r,disabled:n=!1,onAddNewAttachment:s,onListAllAttachments:o,onViewAttachmentDetails:i}=t,{formRef:a}=l.useContext(He),[c,f]=l.useState(!1),[d,h]=l.useState([]),[u,g]=l.useState(!1),{t:C}=l.useContext(ge),y=l.useCallback(async()=>{f(!0);try{const v=await Y.getHandler().readObjects({model:"ir.attachment",ids:r.map(O=>O.id),fieldsToRetrieve:["name","datas_fname","link"],context:a.current.getContext()});h(v.map(O=>({id:O.id,name:O.name,datas_fname:O.datas_fname,link:O.link})))}catch(v){Ae(v)}f(!1)},r),m=l.useCallback(async v=>{if(v.link){window.open(v.link);return}g(!0);let O;try{O=(await Y.getHandler().readObjects({model:"ir.attachment",ids:[v.id],context:a.current.getContext()}))[0]}catch(D){Ae(D)}if(g(!1),!!O)if(O.datas){const D=await nt(O.datas);Ft(O.datas,D.mime)}else i(O)},[]),w=l.useCallback(async v=>{i(v)},[]);return l.useEffect(()=>{y()},[y]),e.jsxs(e.Fragment,{children:[e.jsx(Cl,{numberOfAttachments:r.length,attachments:d,disabled:n,loading:c,onAddNewAttachment:s,onListAllAttachments:o,onopenAttachmentLink:m,onOpenAttachmentDetail:w}),e.jsx(p.Modal,{title:C("downloadingAttachment"),open:u,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(p.Spin,{})})]})}function Pn({toolbar:t}){const{availableViews:r,currentView:n,setCurrentView:s,onFormSave:o,formHasChanges:i,formIsSaving:a,currentId:c,results:f,setCurrentItemIndex:d,currentItemIndex:h,setCurrentId:u,currentModel:g,setRemovingItem:C,removingItem:y,duplicatingItem:m,setDuplicatingItem:w,setResults:v,formIsLoading:O,attachments:D,formRef:S,setFormHasChanges:V,previousView:k,setPreviousView:L,goToResourceId:x}=l.useContext(He),{t:b,lang:_}=l.useContext(ge),T=l.useContext(lt),{processAction:P}=T||{},I=l.useContext(Ge),{openRelate:F,openDefaultActionForModel:E}=I||{};function A(N){if(i){vl({lang:_,onOk:()=>{N()}});return}N()}function M(N){if(i){yt({lang:_,onOk:()=>{N()}});return}N()}function B(){f&&f.length>h+1?(d==null||d(h+1),u==null||u(f[h+1].id)):f&&h+1===f.length&&(d==null||d(0),u==null||u(f[0].id))}function $(){f&&h>0?(d==null||d(h-1),u==null||u(f[h-1].id)):f&&h===0&&(d==null||d(f.length-1),u==null||u(f[f.length-1].id))}function W(){rt({confirmMessage:b("confirmRemoveItem"),lang:_,onOk:()=>{z()}})}async function z(){try{C==null||C(!0),await Y.getHandler().delete({model:g,ids:[c]});const N=f==null?void 0:f.filter(Z=>Z.id!==c);v==null||v(N);let K=0;h>0&&h<=f.length-1&&(K=h-1),N!=null&&N[K]?(u==null||u(N==null?void 0:N[K].id),d==null||d(K)):(u==null||u(void 0),d==null||d(void 0))}catch(N){kt(JSON.stringify(N))}finally{C==null||C(!1)}}async function q(){try{w==null||w(!0);const N=await Y.getHandler().duplicate({id:c,model:g,context:S.current.getContext()});N&&await(x==null?void 0:x(N))}catch(N){kt(JSON.stringify(N))}finally{w==null||w(!1)}}const X=a||y||O||m;function U(N){P==null||P({actionData:N,values:S.current.getValues(),fields:S.current.getFields(),context:S.current.getContext(),onRefreshParentValues:()=>{S.current.fetchValues()}})}return n?e.jsxs(p.Space,{wrap:!0,children:[O&&e.jsxs(e.Fragment,{children:[e.jsx(p.Spin,{}),ft(),ft()]}),e.jsx(Ln,{disabled:a||O||y||m}),e.jsx(Ne,{icon:e.jsx(H.SaveOutlined,{}),tooltip:b("save"),disabled:!i||X,loading:a,onClick:o}),e.jsx(Ne,{icon:e.jsx(H.CopyOutlined,{}),tooltip:b("duplicate"),disabled:i||a||c===void 0||m||O,loading:m,onClick:q}),e.jsx(Ne,{icon:e.jsx(H.DeleteOutlined,{}),tooltip:b("delete"),disabled:a||c===void 0||y||m||O,loading:y,onClick:W}),ft(),e.jsx(Ne,{icon:e.jsx(H.InfoCircleOutlined,{}),tooltip:b("showLogs"),disabled:a||c===void 0||y||m||O,loading:!1,onClick:()=>{Nn(g,c,b)}}),e.jsx(Ne,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:b("refresh"),disabled:a||c===void 0||y||m||O,loading:!1,onClick:()=>{A(()=>{S.current.fetchValues()})}}),ft(),e.jsx(lr,{currentView:n,previousView:k,availableViews:r,onChangeView:N=>{L==null||L(n),V==null||V(!1),s==null||s(N)},disabled:X,formHasChanges:i}),ft(),e.jsxs(p.Space,{children:[e.jsx(Ne,{icon:e.jsx(H.LeftOutlined,{}),tooltip:b("previous"),disabled:X,loading:!1,onClick:()=>{M($)}}),e.jsx(Ne,{icon:e.jsx(H.RightOutlined,{}),tooltip:b("next"),disabled:X,loading:!1,onClick:()=>{M(B)}})]}),ft(),e.jsx(ut,{icon:e.jsx(H.ThunderboltOutlined,{}),disabled:X,tooltip:b("actions"),items:t==null?void 0:t.action,onItemClick:async N=>{!N||!(await ht({onFormSave:o})).succeed||U(N)}}),e.jsx(ut,{icon:e.jsx(H.PrinterOutlined,{}),disabled:X,tooltip:b("reports"),items:t==null?void 0:t.print,onItemClick:async N=>{if(!N)return;const K=await ht({onFormSave:o});!K.succeed||U({...N,datas:{...N.datas||{},ids:[K.currentId]}})}}),e.jsx(ut,{icon:e.jsx(H.EnterOutlined,{}),disabled:X,tooltip:b("related"),items:t==null?void 0:t.relate,onItemClick:async N=>{!N||!(await ht({onFormSave:o})).succeed||F({relateData:N,values:S.current.getValues(),fields:S.current.getFields(),action_id:N.id,action_type:N.type})}}),e.jsx(bl,{disabled:X,attachments:D,onAddNewAttachment:async()=>{const N=await ht({onFormSave:o});if(!N.succeed)return;const K=N.currentId,Z=g;E({model:"ir.attachment",values:{selection_associated_object:`${Z},${K}`},forced_values:{res_model:Z,res_id:K},initialViewType:"form"})},onListAllAttachments:async()=>{const N=await ht({onFormSave:o});if(!N.succeed)return;const K=N.currentId;E({model:"ir.attachment",domain:[["res_model","=",`${g}`],["res_id","=",`${K}`]],initialViewType:"tree"})},onViewAttachmentDetails:async N=>{!(await ht({onFormSave:o})).succeed||E({model:"ir.attachment",res_id:N.id,initialViewType:"form"})}})]}):null}function ft(){return e.jsx("div",{className:"inline-block w-2"})}async function ht({onFormSave:t}){const r=await(t==null?void 0:t());return r!=null&&r.succeed?{succeed:!0,currentId:r.id}:{succeed:!1,currentId:void 0}}const{useToken:xl}=p.theme,Bn=t=>{const{ooui:r,value:n,onChange:s,valueValidator:o,linkPrefix:i=""}=t,{id:a,readOnly:c,required:f}=r,{token:d}=xl(),h=f&&!c?{backgroundColor:d.colorPrimaryBg}:void 0,u=l.useContext(ke),{elementHasLostFocus:g}=u||{},[C,y]=l.useState(!1),[m,w]=l.useState(!1);l.useEffect(()=>{c&&!C&&w(!1),!n&&!c&&(y(!0),w(!0))},[C,c]);const v=O=>{s==null||s(O.target.value)};return e.jsxs(p.Row,{gutter:8,wrap:!1,align:"middle",children:[c?null:e.jsx(p.Col,{flex:"32px",children:C?e.jsx(p.Button,{icon:e.jsx(H.CheckOutlined,{}),onClick:()=>{o(n)&&(y(!1),w(!1))},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1}):e.jsx(p.Button,{icon:e.jsx(H.EditOutlined,{}),onClick:()=>{y(!0),w(!0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1})}),e.jsx(p.Col,{flex:"auto",children:m?e.jsx(p.Input,{style:{borderTopLeftRadius:0,borderBottomLeftRadius:0,...h},id:a,onChange:v,value:n,onBlur:()=>{o(n)&&(y(!1),w(!1),g==null||g())}}):e.jsx("a",{href:`${i}${n}`,style:{color:d.colorPrimary,paddingRight:15},target:"_blank",children:n})})]})},Hn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(Bn,{ooui:r,valueValidator:s=>s?vo.default(s):!1})})},Kn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(Bn,{ooui:r,linkPrefix:"mailto:",valueValidator:s=>s?Co.default(s):!1})})},Tl=t=>{const{visible:r,onIdSubmitted:n,onCancel:s,isSearching:o}=t,{t:i}=l.useContext(ge);function a(c){n(c.id)}return e.jsx(p.Modal,{title:i("goToResourceId"),centered:!0,open:r,footer:null,destroyOnClose:!0,onCancel:s,maskClosable:!1,children:e.jsxs(p.Form,{layout:"vertical",onFinish:a,autoComplete:"off",children:[e.jsx(p.Form.Item,{name:"id",label:i("searchId"),rules:[{required:!0,type:"number"}],children:e.jsx(p.InputNumber,{style:{width:"100%"},autoFocus:!0})}),e.jsx(p.Row,{align:"middle",justify:"end",children:e.jsx(p.Col,{children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.CloseOutlined,{}),htmlType:"button",onClick:s,disabled:o,children:i("cancel")}),e.jsx(p.Button,{loading:o,style:{marginLeft:15},icon:e.jsx(H.CheckOutlined,{}),htmlType:"submit",type:"primary",disabled:o,children:i("ok")})]})})})]})})},{useToken:Fl}=p.theme;function Yn(t){const{badgeNumber:r=0,...n}=t,{token:s}=Fl();return e.jsxs("div",{style:{position:"relative"},children:[r>0&&e.jsx("div",{style:{position:"absolute",left:-10,top:-10,zIndex:2},children:e.jsx("span",{style:{display:"inline-block",minWidth:"22px",padding:"2px",borderRadius:"50%",fontSize:"12px",textAlign:"center",background:s.colorPrimaryHover,color:s.colorPrimaryBg},children:r})}),e.jsx(Le,{...n,style:{width:46,zIndex:0}})]})}function Ol({refreshGraph:t}){const{t:r}=l.useContext(ge),{availableViews:n,currentView:s,setCurrentView:o,searchParams:i,searchVisible:a,setSearchVisible:c,graphIsLoading:f,previousView:d,setPreviousView:h}=l.useContext(He);return e.jsxs(p.Space,{wrap:!0,children:[e.jsx(Yn,{icon:e.jsx(H.FilterOutlined,{style:{color:a?"white":void 0}}),tooltip:r("advanced_search"),type:a?"primary":"default",onClick:()=>{c==null||c(!a)},disabled:f,badgeNumber:i==null?void 0:i.length}),e.jsx(Ne,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:r("refresh"),disabled:f,loading:!1,onClick:()=>{t()}}),e.jsx(lr,{currentView:s,availableViews:n,onChangeView:u=>{h==null||h(s),o==null||o(u)},disabled:!1,previousView:d})]})}const{useToken:_l}=p.theme,{Title:Dl,Text:At}=p.Typography;function Lt(t){const{title:r,children:n}=t,{title:s,currentView:o,currentId:i,currentItemIndex:a,results:c,totalItems:f,selectedRowItems:d}=l.useContext(He),{t:h}=l.useContext(ge),{token:u}=_l();function g(){if((o==null?void 0:o.type)==="form")return i?f===0?e.jsxs(e.Fragment,{children:[h("editingDocument")," (id:"," ",e.jsx(At,{copyable:{icon:e.jsx(H.CopyOutlined,{style:{color:"red"}})},children:i}),")"]}):e.jsxs(e.Fragment,{children:[h("register")," ",a===void 0?1:a+1," /"," ",c.length," ",h("of")," ",f," - ",h("editingDocument")," (id:"," ",e.jsx(At,{copyable:!0,children:i}),")"]}):"";if((o==null?void 0:o.type)==="tree"&&d){if(d.length===1)return e.jsxs(e.Fragment,{children:["1 ",h("selectedRegisters")," - (id:"," ",e.jsx(At,{copyable:!0,children:d[0].id}),")"]});if(d.length>1)return e.jsxs(e.Fragment,{children:[d.length," ",h("selectedRegisters"),e.jsx(At,{copyable:{text:d.map(C=>C.id).join(", ")}})]})}return null}return e.jsxs("div",{style:{position:"sticky",top:80,zIndex:3},children:[e.jsxs(p.Row,{className:"shadow-md",style:{padding:"1em",borderRadius:u.borderRadius,backgroundColor:u.colorPrimaryBg},align:"middle",children:[e.jsxs(p.Col,{flex:2,children:[e.jsx(Dl,{level:3,style:{marginBottom:0},children:r||s}),g()]}),e.jsx(p.Col,{flex:3,children:e.jsx(p.Row,{justify:"end",children:n})})]}),e.jsx("div",{className:"pb-5"})]})}const kl=t=>{const{viewData:r,visible:n,model:s,context:o,domain:i,formView:a,treeView:c}=t,f=l.useRef(),d=l.useContext(He),{setResults:h=void 0,setCurrentItemIndex:u=void 0,currentId:g=void 0,results:C=void 0,setSelectedRowItems:y=void 0,setSearchParams:m=void 0,searchVisible:w=!0,setSearchVisible:v=void 0,sorter:O=void 0,setSorter:D=void 0,setTotalItems:S=void 0,setSearchTreeNameSearch:V=void 0,setTreeIsLoading:k=void 0,limit:L,setLimit:x,searchParams:b,searchValues:_,setSearchValues:T,currentView:P}=d||{},[I,F]=l.useState(!0);l.useEffect(()=>{var W;(W=f.current)==null||W.refresh()},[b]),l.useEffect(()=>{r.view_id!==P.view_id&&F(!0)},[P]);const{clear:E,searchFilterLoading:A,searchError:M,offset:B,tableRefreshing:$}=Zr({model:s,setSearchTreeNameSearch:V,setSelectedRowItems:y,searchParams:b,setSearchValues:T,setSearchParams:m,setSearchVisible:v,setTreeIsLoading:k,context:o,formView:a,treeView:c,sorter:O,setSorter:D,setCurrentItemIndex:u,setResultsActionView:h,resultsActionView:C,domain:i,currentId:g,setActionViewTotalItems:S,limit:L,setLimit:x});return!n||!r?null:e.jsxs(e.Fragment,{children:[e.jsx(Lt,{title:r.name,children:e.jsx(Ol,{refreshGraph:()=>{f.current.refresh()}})}),e.jsx(Qt,{fields:{...c.fields,...a.fields},searchFields:Wr([a.search_fields,c.search_fields]),formXml:a.arch,limit:L,onClear:E,offset:B,isSearching:A,onSubmit:W=>{F(!1),m==null||m(W.params),v==null||v(!1)},searchError:M,searchVisible:w,searchValues:_,showLimitOptions:!1}),$?e.jsx(p.Spin,{}):e.jsx($t,{ref:f,view_id:r.view_id,model:s,context:o,domain:Dt(b||[],i),limit:I?L:void 0,manualIds:I?C==null?void 0:C.map(W=>W.id):void 0})]})},Ml=t=>{const{visible:r,formRef:n,model:s,currentId:o,domain:i,formView:a,context:c,defaultValues:f,forcedValues:d,results:h,setResults:u,setCurrentItemIndex:g}=t;return r?e.jsxs(e.Fragment,{children:[e.jsx(Lt,{children:e.jsx(Pn,{toolbar:a==null?void 0:a.toolbar})}),e.jsx(ct,{rootForm:!0,ref:n,model:s,defaultValues:f,forcedValues:d,formView:a,actionDomain:i,id:o,parentContext:c,onSubmitSucceed:(C,y)=>{h.findIndex(w=>w.id===C)===-1&&(h.push(y),u(h),g(h.length-1))}})]}):null};function Vl(t){const{onSearch:r,disabled:n=!1,searchText:s}=t,{t:o}=l.useContext(ge),[i]=p.Form.useForm(),[a,c]=l.useState(!1);function f(h){r(h.search)}l.useEffect(()=>{i.setFieldsValue({search:s})},[s]);function d(){c(!1),i.setFieldsValue({search:void 0}),r(void 0)}return e.jsx(p.Form,{form:i,onFinish:f,autoComplete:"off",children:e.jsxs(p.Row,{align:"middle",justify:"end",children:[e.jsx(p.Col,{children:e.jsx(p.Form.Item,{name:"search",noStyle:!0,children:e.jsx(p.Input,{autoFocus:!0,disabled:n,onChange:h=>{c(h.target.value.length>0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},suffix:(a||s&&s.length>0)&&e.jsx(p.Tooltip,{title:o("clear"),children:e.jsx(H.CloseCircleFilled,{style:{color:"rgba(0,0,0,.45)"},onClick:d})})})})}),e.jsx(p.Col,{children:e.jsx(p.Button,{htmlType:"submit",disabled:n,style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},children:o("search")})})]})})}const Wn=Be.default.createContext({previewFeatures:!1});function El(t){var X;const{availableViews:r,currentView:n,setCurrentView:s,selectedRowItems:o,setRemovingItem:i,removingItem:a,duplicatingItem:c,setDuplicatingItem:f,currentModel:d,searchTreeRef:h,setCurrentId:u,setCurrentItemIndex:g,searchParams:C,searchVisible:y,setSearchVisible:m,setSearchTreeNameSearch:w,searchTreeNameSearch:v,treeIsLoading:O,setPreviousView:D,previousView:S,results:V,limit:k,totalItems:L}=l.useContext(He),{parentContext:x={},treeExpandable:b,toolbar:_}=t,{previewFeatures:T}=l.useContext(Wn),{t:P,lang:I}=l.useContext(ge),F=l.useContext(lt),{processAction:E}=F||{},[A,M]=l.useState(!1),B=v!==void 0&&v.trim().length>0;function $(){rt({confirmMessage:P("confirmRemove"),lang:I,onOk:()=>{W()}})}async function W(){var U;try{i==null||i(!0),await Y.getHandler().delete({model:d,ids:o.map(N=>N.id)}),u==null||u(void 0),g==null||g(void 0),(U=h==null?void 0:h.current)==null||U.refreshResults()}catch(N){Ae(N)}finally{i==null||i(!1)}}async function z(){var U;try{f==null||f(!0);const N=o[0].id;await Y.getHandler().duplicate({id:N,model:d,context:{...x}})&&((U=h==null?void 0:h.current)==null||U.refreshResults())}catch(N){Ae(N)}finally{f==null||f(!1)}}function q(U){E==null||E({actionData:U,values:{active_id:o==null?void 0:o.map(N=>N.id)[0],active_ids:o==null?void 0:o.map(N=>N.id)},fields:{},context:{...x,active_id:o==null?void 0:o.map(N=>N.id)[0],active_ids:o==null?void 0:o.map(N=>N.id)},onRefreshParentValues:()=>{var N;(N=h==null?void 0:h.current)==null||N.refreshResults()}})}return e.jsxs(p.Space,{wrap:!0,children:[b?null:e.jsxs(e.Fragment,{children:[e.jsx(Vl,{disabled:c||a||O,searchText:v,onSearch:U=>{U&&U.trim().length>0?w==null||w(U):w==null||w(void 0)}}),!b&&e.jsx(Yn,{icon:e.jsx(H.FilterOutlined,{style:{color:y?"white":void 0}}),tooltip:P("advanced_search"),type:y?"primary":"default",onClick:()=>{m==null||m(!y)},disabled:c||a||O,badgeNumber:C==null?void 0:C.length}),bt(),e.jsx(Ln,{disabled:O}),e.jsx(Ne,{icon:e.jsx(H.CopyOutlined,{}),tooltip:P("duplicate"),disabled:!o||(o==null?void 0:o.length)!==1||c||O,loading:c,onClick:z}),e.jsx(Ne,{icon:e.jsx(H.DeleteOutlined,{}),tooltip:P("delete"),disabled:!(o&&(o==null?void 0:o.length)>0)||O,loading:a,onClick:$}),bt()]}),e.jsx(Ne,{icon:e.jsx(H.InfoCircleOutlined,{}),tooltip:P("showLogs"),disabled:!(o&&(o==null?void 0:o.length)>0)||O,loading:!1,onClick:()=>{Nn(d,o[0].id,P)}}),e.jsx(Ne,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:P("refresh"),disabled:c||a||O,loading:!1,onClick:()=>{var U;(U=h==null?void 0:h.current)==null||U.refreshResults()}}),!b&&e.jsxs(e.Fragment,{children:[bt(),e.jsx(lr,{currentView:n,availableViews:r,onChangeView:U=>{D==null||D(n),s==null||s(U)},previousView:S,disabled:O})]}),bt(),e.jsx(ut,{icon:e.jsx(H.ThunderboltOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||O,tooltip:P("actions"),items:_==null?void 0:_.action,onItemClick:U=>{!U||q(U)}}),e.jsx(ut,{icon:e.jsx(H.PrinterOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||O,tooltip:P("reports"),items:_==null?void 0:_.print,onItemClick:U=>{!U||q({...U,datas:{...U.datas||{},ids:o.map(N=>N.id)}})}}),T&&e.jsxs(e.Fragment,{children:[bt(),e.jsx(ut,{icon:e.jsx(vr.default,{component:()=>e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-database-export",width:"1em",height:"1em",viewBox:"0 0 24 24",strokeWidth:"1.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),e.jsx("ellipse",{cx:"12",cy:"6",rx:"8",ry:"3"}),e.jsx("path",{d:"M4 6v6c0 1.657 3.582 3 8 3a19.84 19.84 0 0 0 3.302 -.267m4.698 -2.733v-6"}),e.jsx("path",{d:"M4 12v6c0 1.599 3.335 2.905 7.538 2.995m8.462 -6.995v-2m-6 7h7m-3 -3l3 3l-3 3"})]})}),tooltip:P("export"),items:[{id:"print_screen",name:P("printScreen")},{id:"export",name:P("advancedExport")}],onItemClick:U=>{if(U.id==="print_screen"){let N=(o==null?void 0:o.map(K=>K.id))||[];N.length===0&&(N=(V==null?void 0:V.map(K=>K.id))||[]),q({id:-1,model:d,report_name:"printscreen.list",type:"ir.actions.report.xml",datas:{model:d,ids:N}});return}M(!0)},disabled:c||a||O||B}),e.jsx(Dn,{visible:A,locale:I,onClose:()=>M(!1),model:d,domain:Dt(((X=h==null?void 0:h.current)==null?void 0:X.getDomain())||[],C||[]),limit:k,totalRegisters:L||0,selectedRegistersToExport:o,visibleRegisters:(V==null?void 0:V.length)||0,context:x})]})]})}function bt(){return e.jsx("div",{className:"inline-block w-2"})}const Il=t=>{const{visible:r,searchTreeRef:n,model:s,context:o,formView:i,treeView:a,domain:c,setCurrentItemIndex:f,results:d,setCurrentId:h,setCurrentView:u,availableViews:g,searchTreeNameSearch:C}=t,{currentView:y,setPreviousView:m}=l.useContext(He);return r?e.jsxs(e.Fragment,{children:[e.jsx(Lt,{children:e.jsx(El,{toolbar:a==null?void 0:a.toolbar,parentContext:o,treeExpandable:(a==null?void 0:a.isExpandable)||!1})}),e.jsx(er,{ref:n,rootTree:!0,model:s,parentContext:o,nameSearch:C,formView:i,treeView:a,domain:c,onRowClicked:w=>{const{id:v}=w;h(v);const O=d.findIndex(S=>S.id===v);m==null||m(y),f(O);const D=g.find(S=>S.type==="form");u(D)}})]}):null},cr=Be.default.createContext(null),$l=t=>{const[r,n]=l.useState(!1),[s,o]=l.useState(!1),{children:i,dashboardRef:a,openAction:c}=t;return e.jsx(cr.Provider,{value:{isLoading:r,setIsLoading:n,dashboardRef:a,openAction:c,moveItemsEnabled:s,setMoveItemsEnabled:o},children:i})};function Al(){const{isLoading:t,dashboardRef:r,moveItemsEnabled:n,setMoveItemsEnabled:s}=l.useContext(cr),{t:o}=l.useContext(ge);return e.jsxs(p.Space,{wrap:!0,children:[e.jsx(Ne,{icon:e.jsx(H.BorderOuterOutlined,{style:{color:n?"white":void 0}}),type:n?"primary":"default",tooltip:o("moveDashboard"),disabled:t,loading:!1,onClick:()=>{s(!n)}}),Ll(),e.jsx(Ne,{icon:e.jsx(H.SettingOutlined,{}),tooltip:o("configDashboard"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.configDashboard()}}),e.jsx(Ne,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:o("refresh"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.refresh()}})]})}function Ll(){return e.jsx("div",{className:"inline-block w-2"})}const Nl=t=>{const{dashboardData:r}=t,n=l.useRef(),s=l.useContext(Ge),{openShortcut:o}=s||{};return r?e.jsxs($l,{dashboardRef:n,openAction:i=>{o(i)},children:[e.jsx(Lt,{children:e.jsx(Al,{})}),e.jsx(jn,{ref:n,model:r.model,id:r.id,context:r==null?void 0:r.context,configAction:r==null?void 0:r.configAction})]}):null};async function Pl(t){const r=await Promise.all(t.map(async s=>{try{return await s.promise}catch(o){return console.error(`Error for ${s.viewTuple}:`,o),null}}));return t.map((s,o)=>({...s,info:r[o]})).filter(s=>s.info!==null)}function Bl(t,r){const{domain:n,model:s,context:o,views:i,title:a,setCanWeClose:c,tabKey:f,initialView:d,formDefaultValues:h,formForcedValues:u={},res_id:g=!1,action_id:C,action_type:y,treeExpandable:m=!1,limit:w}=t,[v,O]=l.useState(),[D,S]=l.useState([]),[V,k]=l.useState(!0),L=g||void 0,[x,b]=l.useState(L),[_,T]=l.useState([]),[P,I]=l.useState(),[F,E]=l.useState([]),[A,M]=l.useState(),[B,$]=l.useState(0),[W,z]=l.useState(!1),[q,X]=l.useState(!1),[U,N]=l.useState(),{t:K}=l.useContext(ge),Z=l.useRef(),se=l.useRef(),ce=l.useContext(Ge),{setCurrentView:Q,setCurrentId:R,tabs:ue,activeKey:ve,openAction:Me,onRemoveTab:xe}=ce||{};go.useHotkeys("ctrl+g,command+g",te=>{te.preventDefault(),be()},[ve,ue,v,P,F]);function de(te){b(te),R==null||R(te)}function ae(te){O(te),Q==null||Q(te)}l.useImperativeHandle(r,()=>({canWeClose:De}));const we=async()=>{k(!0);const te=[],Te=[];for(const Ce of i){const[Fe,fe]=Ce;fe!=="dashboard"?Te.push({viewTuple:Ce,promise:Y.getHandler().getView({model:s,type:fe,id:Fe,context:o})}):Te.push({viewTuple:Ce})}const Ee=await Pl(Te);for(const Ce of Ee){if(!Ce)continue;const[,Fe]=Ce.viewTuple;let fe=Ce.info;switch(Fe){case"dashboard":{const qe=i.find(Je=>{const[,ee]=Je;return ee==="form"});let $e;qe&&($e={action_id:C,action_type:y,name:a,res_id:o.active_id,res_model:s,view_id:qe[0],view_type:qe[1]}),te.push({type:"dashboard",id:o.active_id,model:s,context:o,configAction:$e});break}case"form":{te.push({...fe,type:Fe});break}case"tree":{te.push({...fe,isExpandable:m,type:Fe});break}case"graph":{te.push({...fe,type:Fe});break}}}let ye;!d&&te.find(Ce=>Ce.type==="tree")?ye=te.find(Fe=>Fe.type==="tree"):d?ye=te.find(Fe=>d.id?Fe.type===d.type&&Fe.view_id===d.id:Fe.type===d.type):ye=te.find(Fe=>Fe.type==="form"),ye||(Ae(`Error determining the first view to show for model ${s}.
|
|
36
|
+
Please, make sure the view ids on the fields_view_get responses are the same as the ones defined in the action`),xe==null||xe(f)),ae(ye),S(te),k(!1)};c({tabKey:f,canWeClose:De}),l.useEffect(()=>{const te=D.find(Ee=>Ee.type==="tree"),Te=D.find(Ee=>d.id?Ee.type===d.type&&Ee.view_id===d.id:Ee.type===d.type);ae(Te||te),g?R==null||R(L):(de(void 0),I(void 0)),we()},[s,i,g]),l.useEffect(()=>{ve===f&&(R==null||R(x),Q==null||Q(v))},[ue,ve]);async function De(){return v&&v.type==="form"?await Z.current.cancelUnsavedChanges():!0}async function be(){ve===f&&(v.type==="form"&&!await Z.current.cancelUnsavedChanges()||z(!0))}async function Ve(te){var Ce;X(!0);const Te=F.findIndex(Fe=>Fe.id===te);let Ee;if(Te===-1){try{Ee=(Ce=await Y.getHandler().readObjects({model:s,ids:[te],context:o}))==null?void 0:Ce[0]}catch{}if(!Ee){X(!1),z(!1),Ue(K("idNotFound"));return}}else Ee=F[Te];X(!1),z(!1);const ye=i.find(Fe=>Fe[1]==="form");Me({domain:[],context:o,model:s,views:i,title:a,target:"current",initialView:{id:ye==null?void 0:ye[0],type:"form"},action_id:C,action_type:y,res_id:te})}function Ke(){return D.map(te=>{switch(te.type){case"form":return e.jsx(Ml,{formRef:Z,currentId:x,visible:v.type===te.type&&v.view_id===te.view_id,formView:te,model:s,context:o,domain:n,defaultValues:h,forcedValues:u,results:F,setResults:E,setCurrentItemIndex:I},`${te.type}-${te.view_id}`);case"tree":return e.jsx(Il,{visible:v.type===te.type&&v.view_id===te.view_id,limit:w,model:s,context:o,domain:n,formView:D.find(Te=>Te.type==="form"),treeView:te,searchTreeRef:se,searchTreeNameSearch:U,availableViews:D,results:F,setCurrentItemIndex:I,setCurrentId:de,setCurrentView:ae},`${te.type}-${te.view_id}`);case"graph":return e.jsx(kl,{visible:v.type===te.type&&v.view_id===te.view_id,viewData:te,model:s,context:o,domain:n,treeView:D.find(Te=>Te.type==="tree"),formView:D.find(Te=>Te.type==="form")},`${te.type}-${te.view_id}`);case"dashboard":return e.jsx(Nl,{dashboardData:te},`${te.type}-${te.view_id}`)}})}function Ie(){if(x===void 0&&v.type==="form")Z.current.clearAndReload();else{de(void 0);const te=D.find(Te=>Te.type==="form");ae(te)}}return V?e.jsx(p.Spin,{}):v?e.jsxs(Ii,{title:a,currentView:v,setCurrentView:ae,availableViews:D,formRef:Z,searchTreeRef:se,onNewClicked:Ie,currentId:x,setCurrentId:de,setCurrentItemIndex:I,currentItemIndex:P,results:F,setResults:E,currentModel:s,sorter:A,setSorter:M,totalItems:B,setTotalItems:$,selectedRowItems:_,setSelectedRowItems:T,setSearchTreeNameSearch:N,searchTreeNameSearch:U,goToResourceId:Ve,limit:w,children:[Ke(),e.jsx(Tl,{visible:W,onIdSubmitted:Ve,isSearching:q,onCancel:()=>{z(!1)}})]}):null}const qn=l.forwardRef(Bl);async function Hl({actionId:t,rootContext:r={},globalValues:n={}}){const s="ir.actions.act_window",o=`${s},${t}`,i=await Y.getHandler().getActionData({action:o,context:r}),a=oe.parseContext({context:i.context,values:n,fields:{}}),c=i.domain?await Y.getHandler().evalDomain({domain:i.domain,values:n,context:{...r,...a}}):[],{res_model:f,views:d,name:h,limit:u,view_type:g}=i,C=g==="tree",y=[];for(const O of d){const[D,S]=O;if(D)y.push(O);else{const{view_id:V}=await Y.getHandler().getView({model:f,type:S,id:D,context:{...r,...a}});y.push([V,S])}}const[m,w]=y[0],v={id:m,type:w};return{title:h,actionId:t,actionType:s,key:mr.v4(),views:d,model:f,context:{...r,...a},domain:c,initialView:v,limit:u,treeExpandable:C}}const Ec="",Kl=gr.WidthProvider(gr.Responsive),Gn=t=>{const{children:r=[],onPositionItemsChanged:n}=t,s=Be.default.Children.map(r,o=>{const{parms:i,id:a}=o.props;return e.jsx("div",{"data-grid":i,children:o},a)});return e.jsx(Kl,{className:"layout",cols:{lg:12,md:10,sm:6,xs:4,xxs:2},draggableHandle:".draggable-head",rowHeight:30,onLayoutChange:o=>{n==null||n(o.map(i=>({id:parseInt(i.i.replace(".$",""),10),x:i.x,y:i.y,w:i.w,h:i.h})))},children:s})},{useToken:Yl}=p.theme,{Text:Wl}=p.Typography,Un=t=>{const{title:r,children:n,action:s,openAction:o}=t,{token:i}=Yl();return e.jsxs("div",{className:"shadow-md",style:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden",border:"1px solid #eee",backgroundColor:"white",borderRadius:i.borderRadius},children:[e.jsxs(p.Row,{align:"middle",style:{borderBottom:"1px solid #ddd",backgroundColor:i.colorPrimaryBg},wrap:!1,children:[e.jsx(p.Col,{flex:"auto",className:"draggable-head",style:{fontWeight:"bold",padding:"0.5rem",cursor:"grab",overflow:"hidden"},children:e.jsx(Wl,{ellipsis:!0,children:r})}),s&&e.jsx(p.Col,{flex:"25px",style:{padding:"0.5rem"},children:e.jsx(p.Row,{justify:"end",align:"middle",children:e.jsx(H.ExportOutlined,{style:{cursor:"pointer"},onClick:()=>{o==null||o(s)}})})})]}),n]})},ql=80;function Gl(t){const{action:r,model:n,view_id:s,onRowClicked:o,domain:i=[],visible:a=!0,parentContext:c={}}=t,[f,d]=l.useState(!1),[h,u]=l.useState(!1),[g,C]=l.useState(),[y,m]=l.useState(),[w,v]=l.useState(),[O,D]=l.useState(1),[S,V]=l.useState(0),k=l.useRef(ql),L=l.useRef([]),[x,b]=l.useState(0),[_,T]=l.useState([]),[P,I]=l.useState(void 0),[F,E]=l.useState(),[A,M]=l.useState(),[B,$]=l.useState(),[W,z]=l.useState(!1),q=l.useRef([]),X=R=>{z(!0),D(R),V((R-1)*k.current)},U=async()=>{const R=q.current.length>0?q.current:i,ue=Dt(L.current,R),{colors:ve}=ot(y),{totalItems:Me,results:xe,attrsEvaluated:de}=await Y.getHandler().searchForTree({params:ue,limit:k.current,offset:S,model:g,fields:y.fields,context:c,attrs:ve&&{colors:ve}});I(Ot(de));const ae=st({resultsToSort:xe,sorter:F,fields:{...y.fields,...w.fields}});z(!1),T(ae);const we=await Me;b(we)},N=async()=>{try{z(!0),await U()}catch(R){M(JSON.stringify(R))}};l.useEffect(()=>{!h||a&&N()},[O,S,h,a]);const K=async R=>{u(!1),d(!0),$(void 0);try{R==="action"?await Z():await se(),u(!0)}catch(ue){$(ue)}finally{d(!1)}},Z=async()=>{const R=await Y.getHandler().getViewsForAction({action:r,context:c});q.current=R.domain,v(R.views.get("form")),m(R.views.get("tree")),C(R.model),k.current=R.limit},se=async()=>{C(n);const R=await Y.getHandler().getView({model:n,type:"form",context:c});v(R);const ue=await Y.getHandler().getView({model:n,type:"tree",id:s,context:c});m(ue)};l.useEffect(()=>{r?K("action"):n&&K("model")},[r,n]);const ce=R=>{const{id:ue}=R;o({id:ue,model:g,treeView:y})},Q=()=>!y||!w?null:e.jsxs("div",{style:{overflowY:"scroll"},children:[A&&e.jsx(p.Alert,{className:"mt-10",message:A,type:"error",banner:!0}),e.jsx(Ct,{showPagination:!1,total:x,limit:k.current,page:O,treeView:y,results:_,onRequestPageChange:X,loading:W,onRowClicked:ce,colorsForResults:P,sorter:F,onChangeSort:R=>{E==null||E(R);const ue=st({resultsToSort:_,sorter:R,fields:{...y.fields,...w.fields}});T(ue)},context:c})]});return B?e.jsx(p.Alert,{className:"mt-10",message:B,type:"error",banner:!0}):f?e.jsx(p.Spin,{style:{padding:"2rem"}}):Q()}const Ul=t=>{const{model:r}=t,[n,s]=l.useState();l.useEffect(()=>{o()},[r]);async function o(){const i=await Y.getHandler().search({params:[],model:r,limit:1});i.length>0&&s(i[0].id)}return e.jsx("div",{style:{padding:"0.5rem",overflowY:"scroll"},children:e.jsx(ct,{...t,model:r,id:n,readOnly:!0})})},dr="line_ids";function jl(t,r){const{model:n,context:s={},id:o,configAction:i}=t,[a,c]=l.useState([]),[f,d]=l.useState(!1),[h,u]=l.useState(),{setIsLoading:g,openAction:C,moveItemsEnabled:y}=l.useContext(cr),m=l.useRef(),w=l.useRef();l.useEffect(()=>{v()},[n,o,s]),l.useImperativeHandle(r,()=>({refresh:()=>{v()},configDashboard:L}));async function v(){d(!0),g(!0),u(void 0);try{const x=await O(),b=await S(x),_=x.fields[dr].relation,T=b[dr].items;w.current=x.fields;const P=await D({items:T,model:_,context:s}),I=await V(P);c(I),d(!1),g(!1)}catch(x){u(JSON.stringify(x))}}async function O(){return await Y.getHandler().getView({model:n,type:"form",context:s})}async function D({items:x,model:b,context:_}){m.current=(await Y.getHandler().getView({model:b,type:"form",context:_})).fields;const[T]=await zt({treeView:{fields:m.current},formView:{fields:m.current},model:b,items:x,context:_,currentView:"form"});return T}async function S(x){return(await Y.getHandler().readObjects({model:n,ids:[o],fields:x.fields,context:s}))[0]}async function V(x){const b=[];for(const _ of x){const{values:T}=_;if(T.action_id&&T.action_id.length>0){const P=parseInt(T.action_id[0],10),I=await Hl({actionId:P,rootContext:s});b.push({..._,actionData:I})}}return b}async function k(x){if(!y)return;const b=x.filter(I=>{const F=a.find(A=>A.id===I.id);if(!F)return!1;if(!F.position)return!0;const E={...JSON.parse(F.position.replace(/'/g,'"')),id:F.id};return JSON.stringify(I)!==JSON.stringify(E)});if(b.length===0)return;const T=a.filter(I=>b.map(F=>F.id).includes(I.id)).map(I=>{const F={...b.find(E=>E.id===I.id)};return delete F.id,{...I},{...I,operation:"pendingUpdate",values:{...I.values,position:JSON.stringify(F).replace(/"/g,"'")}}}),P={fields:m.current,items:T};await Y.getHandler().update({model:n,id:o,values:{[dr]:P},fields:w.current,context:s})}async function L(){C(i)}return h?(console.log(h),e.jsx(p.Alert,{className:"mt-10 mb-20",message:h,type:"error",banner:!0})):f?e.jsx(H.LoadingOutlined,{}):e.jsx(Gn,{onPositionItemsChanged:k,children:a.map((x,b)=>{const{actionData:_,values:T}=x,{position:P,id:I}=T,{actionId:F,actionType:E,key:A,title:M,views:B,model:$,context:W,domain:z,initialView:q,limit:X}=_;let U={};try{U=JSON.parse(P.replace(/'/g,'"'))}catch{U={x:b*2,y:0,w:2,h:3}}let N=null;if((q==null?void 0:q.type)==="graph")N=e.jsx($t,{view_id:B.filter(se=>se[1]==="graph")[0][0],model:$,context:W,domain:z,limit:X});else if((q==null?void 0:q.type)==="form")N=e.jsx(Ul,{model:$,actionDomain:z});else if((q==null?void 0:q.type)==="tree")N=e.jsx(Gl,{model:$,domain:z,view_id:B.filter(se=>se[1]==="tree")[0][0],onRowClicked:se=>{const ce=B.find(Q=>{const[,R]=Q;return R==="form"});if(ce){const[Q,R]=ce,{actionId:ue,actionType:ve,title:Me,model:xe}=_,de={action_id:ue,action_type:ve,name:Me,res_id:se.id,res_model:xe,view_id:Q,view_type:R};C(de)}}});else if(q!==void 0){const se=q&&Array.isArray(q.id)?{...q,id:q.id[0]}:q;N=e.jsx(qn,{action_id:F,action_type:E,tabKey:A,title:M,views:B,model:$,context:W,domain:z,setCanWeClose:()=>{},initialView:se,limit:X})}let K;const Z=B.find(se=>{const[,ce]=se;return ce==="tree"});if(Z){const[se,ce]=Z,{actionId:Q,actionType:R,title:ue,model:ve}=_;K={action_id:Q,action_type:R,name:ue,res_id:!1,res_model:ve,view_id:se,view_type:ce}}return e.jsx(Un,{id:I,title:M,parms:U,action:K,openAction:C,children:N},I)})})}const jn=l.forwardRef(jl),zn=t=>{const{ooui:r}=t;return e.jsx(me,{type:"array",...t,children:e.jsx(zl,{ooui:r})})},zl=t=>{const{value:r,ooui:n,onChange:s}=t,{items:o=[]}=r||{},i=o.filter(x=>x.operation!=="pendingRemove").map(x=>x.id),[a,c]=l.useState([]),[f,d]=l.useState(),[h,u]=l.useState(!1),{relation:g,context:C,readOnly:y,field:m,columns:w}=n,v=l.useContext(ke),{getContext:O}=v||{};Re.default(()=>{S()},[o]);const D=x=>{s==null||s({items:x})};async function S(){u(!0);let x=[];if(n.domain){const b=await Y.getHandler().evalDomain({domain:n.domain,values:at({fields:v==null?void 0:v.getFields(),values:v.getPlainValues()}),fields:v==null?void 0:v.getFields(),context:v.getContext()});x=[...x,...b]}try{const _=(await Y.getHandler().search({model:g,params:x,fields:[m],context:{...O==null?void 0:O(),...C}})).map(T=>{const P=T[m];let I=P;return Array.isArray(P)&&(I=P[1]),{label:I,value:T.id}});c(_)}catch(b){d(b)}finally{u(!1)}if(f)return e.jsx(p.Alert,{className:"mt-10",message:f,type:"error",banner:!0})}const V=()=>{L(a.map(x=>x.value))},k=()=>{L([])},L=x=>{const b=o.map(T=>x.includes(T.id)?T.operation=="pendingRemove"?{...T,operation:"original"}:T:{id:T.id,operation:"pendingRemove"}),_=b.map(T=>T.id);x.filter(T=>!_.includes(T)).map(T=>{b.push({id:T,operation:"pendingLink"})}),D(b)};return h&&a.length===0?e.jsx(p.Spin,{}):e.jsx(e.Fragment,{children:e.jsxs("div",{className:"flex flex-row",children:[e.jsx(p.Checkbox.Group,{value:a.length?i:[],disabled:y,onChange:L,style:{width:"100%"},children:e.jsx(p.Row,{children:a.map(x=>e.jsx(p.Col,{span:Math.floor(24/w),children:e.jsx(p.Checkbox,{value:x.value,children:x.label})}))})}),!y&&e.jsxs(p.Space,{children:[e.jsx(p.Button,{onClick:V,disabled:i.length==a.length,children:"Check all"}),e.jsx(p.Button,{onClick:k,disabled:i.length===0,children:"Uncheck all"})]})]})})},Jn=t=>e.jsx(me,{...t,children:e.jsx(Jl,{...t})}),Jl=t=>{const{value:r,ooui:n}=t;return e.jsx("div",{style:{height:n.height?n.height+"px":"100%",overflow:"auto"},children:e.jsx(So.default,{children:r,className:"ant-typography"})})},Zn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(Zl,{...t})})},Zl=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,direction:a}=r,c=Array.from(o.entries()),f=c&&c.length&&c.map(d=>{const[h,u]=d;return e.jsx(p.Radio,{value:h,children:u},h)});return e.jsx(p.Radio.Group,{disabled:i,onChange:n,value:s,children:e.jsx(p.Space,{direction:a,children:f})})},Xn=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o}=r;return e.jsx(me,{...t,valuePropName:"checked",children:e.jsx(Xl,{id:n,readOnly:s,required:o})})},Xl=t=>{const{required:r,readOnly:n,...s}=t;return e.jsx("div",{className:"flex flex-row",children:e.jsx(p.Switch,{disabled:n,...s})})},Qn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(Ql,{...t})})},Ql=t=>{const{ooui:r,value:n}=t,{selectionValues:s,errorField:o}=r,i=l.useContext(ke),a=Array.from(s.entries()),c=a.map(h=>h[0]).indexOf(n);let f="process",d="";return o&&(d=i.getFieldValue(o),d&&(f="error")),e.jsx(p.Steps,{current:c,status:f,children:a.map((h,u)=>e.jsx(p.Steps.Step,{title:h[1],description:u===c&&f==="error"?d:null}))})},Rn=t=>{const{ooui:r}=t,{lang:n,height:s}=r,o=l.useContext(ke),{elementHasLostFocus:i}=o||{},a=c=>{c.onDidBlurEditorWidget(i)};return e.jsx(me,{...t,children:e.jsx(bo.default,{defaultLanguage:n||"",height:s||300,onMount:a})})},{Content:Rl}=p.Layout,{Title:ec}=p.Typography;function tc(){const{t}=l.useContext(ge);return e.jsx(Rl,{className:"m-5 select-none",children:e.jsx(ec,{level:5,children:t("welcome")})})}function rc(t,r){const{children:n,globalValues:s={},rootContext:o={},lang:i}=t,[a,c]=l.useState("welcome"),[f,d]=l.useState([{title:Se("welcome",i),key:"welcome",closable:!0,content:e.jsx(tc,{})}]),h=l.useRef(new Map),u=l.useRef();l.useImperativeHandle(r,()=>({retrieveAndOpenAction:y,openShortcut:v}));function g(S){if(S===a){const V=f.findIndex(k=>k.key===S);f[V-1]&&c(f[V-1].key),f[V+1]&&c(f[V+1].key)}d(f.filter(V=>V.key!==S)),h.current.delete(S)}function C({tabKey:S,canWeClose:V}){h.current.set(S,V)}async function y({action:S,values:V,forced_values:k,initialViewType:L,res_id:x,domain:b=[]}){const _=await Y.getHandler().getActionData({action:S,context:o});if(_.type==="ir.actions.wizard"){Ae("Action type not supported");return}const[T,P]=S.split(","),I=parseInt(P),F=oe.parseContext({context:_.context,values:s,fields:{}}),E=_.domain?await Y.getHandler().evalDomain({domain:_.domain,values:s,context:{...o,...F}}):[],{res_model:A,views:M,name:B,target:$,view_type:W,limit:z}=_,q=W==="tree",X=[];for(const N of M){const[K,Z]=N;if(K)X.push(N);else if(Z==="dashboard")X.push([void 0,"dashboard"]);else{const{view_id:se}=await Y.getHandler().getView({model:A,type:Z,id:K,context:{...o,...F}});X.push([se,Z])}}let U;if(L){const[N,K]=X.find(([Z,se])=>se===L);U={id:N,type:K}}else{const[N,K]=X[0];U={id:N,type:K}}D({domain:[...E,...b],context:{...o,...F},model:A,views:X,title:B,target:$,initialView:U,action_type:T,action_id:I,values:V,forced_values:k,res_id:x,treeExpandable:q,limit:z})}function m({title:S,content:V,key:k,action:L}){let x=[...f];f.length===1&&f[0].key==="welcome"&&(x=[...f.filter(b=>b.key!=="welcome")]),d([...x,{title:S,key:k,closable:!0,content:V,action:L}]),c(k)}async function w({relateData:S,fields:V,values:k,action_id:L,action_type:x}){const{res_model:b,context:_,domain:T,views:P,target:I,string:F,limit:E}=S,[A,M]=P[0],B={id:A,type:M},$=oe.parseContext({context:_,values:{...k,...s},fields:V}),W=T?await Y.getHandler().evalDomain({domain:T,values:at({fields:V,values:{...k,...s}}),fields:V,context:{...o,...$}}):[];D({model:b,target:I,views:P,context:{...o,...$},domain:W,title:F,initialView:B,action_id:L,action_type:x,limit:E})}async function v(S){const{action_id:V,action_type:k,res_id:L,view_id:x}=S,b=`${k},${V}`,_=await Y.getHandler().getActionData({action:b,context:o}),T=oe.parseContext({context:_.context,values:s,fields:{}}),P=_.domain?await Y.getHandler().evalDomain({domain:_.domain,values:s,context:{...o,...T}}):[],{res_model:I,views:F,name:E,target:A,view_type:M,limit:B}=_,$=M==="tree",W=[];for(const U of F){const[N,K]=U;if(N)W.push(U);else if(K==="dashboard")W.push([void 0,"dashboard"]);else{const{view_id:Z}=await Y.getHandler().getView({model:I,type:K,id:N,context:{...o,...T}});W.push([Z,K])}}let z,q;if(x==null){const U=W.find(N=>N[0]===void 0);z=void 0,q=U[1]}else[z,q]=W.find(U=>U[0]===void 0?!1:U[0]===x);const X={id:z,type:q};D({domain:P,context:{...o,...T},model:I,views:W,title:E,target:A,initialView:X,action_id:V,action_type:k,res_id:L,treeExpandable:$,limit:B})}async function O({model:S,values:V,forced_values:k,initialViewType:L,res_id:x,domain:b}){const _=await Y.getHandler().getActionStringForModel(S);await y({action:_,values:V,forced_values:k,initialViewType:L,res_id:x,domain:b})}async function D({domain:S,context:V,model:k,views:L,title:x,target:b,initialView:_,action_id:T,action_type:P,res_id:I,values:F,forced_values:E,treeExpandable:A=!1,limit:M}){const B=mr.v4();if(b!=="current"){const $=await Y.getHandler().getView({model:k,type:"form",id:_.type==="form"?_.id:void 0,context:{...o,...V}});u.current.openActionModal({domain:S,model:k,formView:$,context:{...o,...V},actionData:{action_id:T,action_type:P,res_id:I,view_id:$.view_id}})}else{const $=_&&Array.isArray(_.id)?{..._,id:_.id[0]}:_;m({title:x,action:{id:T,type:P},content:e.jsx(qn,{action_id:T,action_type:P,tabKey:B,title:x,views:L,model:k,context:{...o,...V},domain:S,setCanWeClose:C,initialView:$,res_id:I,formDefaultValues:F,formForcedValues:E,treeExpandable:A,limit:M}),key:B})}}return e.jsx(Do,{lang:i,children:e.jsx($i,{openShortcut:v,openAction:D,openRelate:w,openDefaultActionForModel:O,tabs:f,activeKey:a,onRemoveTab:async S=>{const V=h.current.get(S);(await(V==null?void 0:V())||a==="welcome")&&g(S)},onChangeTab:S=>{c(S)},children:e.jsx(Qr,{ref:u,globalValues:s,children:n})})})}const nc=l.forwardRef(rc),{useToken:oc}=p.theme;function sc(t){const{label:r,onClose:n,tabKey:s,isActive:o,onSelected:i}=t,{token:a}=oc(),c=o?a.colorBgContainer:a.colorPrimaryBg;return e.jsxs("div",{onClick:()=>{!o&&i(s)},style:{cursor:"pointer",height:40,paddingTop:7,paddingBottom:5,paddingLeft:10,paddingRight:10,backgroundColor:c,display:"inline-flex",flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",borderTopLeftRadius:a.borderRadius,borderTopRightRadius:a.borderRadius,marginLeft:2},children:[e.jsx("div",{style:{color:a.colorPrimaryActive,userSelect:"none",height:40,display:"flex",justifyContent:"center",alignItems:"center",paddingLeft:5,paddingRight:5,marginBottom:2,fontWeight:o?500:"normal"},children:r}),e.jsx("div",{style:{paddingLeft:5,height:40,display:"flex",justifyContent:"center",alignItems:"center"},children:e.jsx(H.CloseOutlined,{style:{color:a.colorPrimaryActive},onClick:f=>{f.stopPropagation(),n(s)}})})]})}function ic(){const t=l.useContext(Ge),{activeKey:r,tabs:n,onRemoveTab:s,onChangeTab:o}=t||{};return e.jsx(e.Fragment,{children:n.map(i=>e.jsx(sc,{tabKey:i.key,label:i.title,onClose:s,isActive:r===i.key,onSelected:o},i.key))})}function ac(t){const{tab:r}=t,n=l.useContext(Ge),{activeKey:s}=n||{},o={display:"none"};return e.jsx("div",{style:r.key!==s?o:void 0,children:r.content})}const lc=Be.default.memo(ac,()=>!0);function cc(){const t=l.useContext(Ge),{tabs:r}=t||{},n=(r==null?void 0:r.map(s=>e.jsx(lc,{tab:s},s.key)))||null;return e.jsx(e.Fragment,{children:n})}const{useToken:dc}=p.theme,uc=t=>{const{onRetrieveShortcuts:r,onCheckIsFavourite:n,onAddFavourite:s,onRemoveFavourite:o}=t,[i,a]=l.useState(!1),[c,f]=l.useState(!1),[d,h]=l.useState([]),[u,g]=l.useState(!0),[C,y]=l.useState(),{t:m}=l.useContext(ge)||{},{token:w}=dc(),v=l.useContext(Ge),{openShortcut:O,tabs:D,activeKey:S,currentView:V,currentId:k,openDefaultActionForModel:L}=v||{};l.useEffect(()=>{x()},[]),l.useEffect(()=>{T()},[D,S,V,k]);async function x(){try{g(!0);const A=await r();h(A)}catch(A){Ae(A)}finally{g(!1)}}function b(A){const{key:M}=A,B=d.find($=>$.id===Number(M));(B==null?void 0:B.action_type)!=="ir.actions.wizard"&&(B&&O(B),f(!1))}function _(A){A&&x(),f(A)}async function T(){if(!V)return;const A=D.find(q=>q.key===S),{id:M,type:B}=(A==null?void 0:A.action)||{};if(!M||!B){a(!1);return}const $=V.view_id;let W=!1;V.type==="form"&&(W=k||!1);const z=await n({action_id:M,action_type:B,view_id:$,res_id:W});z!==!1&&y(z),a(z!==!1)}async function P(){f(!1),L==null||L({model:"ir.ui.view_sc"})}const I=e.jsxs(p.Menu,{onClick:b,children:[e.jsxs("div",{style:{width:300,padding:5,display:"flex"},children:[e.jsx("div",{style:{paddingLeft:15,color:"#ccc"},children:m==null?void 0:m("favorites").toUpperCase()}),e.jsx("div",{style:{flexGrow:1,paddingLeft:10},children:e.jsx(p.Tooltip,{title:m==null?void 0:m("edit_favorites"),children:e.jsx(H.EditOutlined,{style:{color:w.colorPrimary,cursor:"pointer"},onClick:P})})})]}),e.jsx(p.Menu.Divider,{}),u?e.jsx(p.Spin,{style:{padding:"1rem"}}):d.length>0?e.jsx(e.Fragment,{children:d.map(A=>e.jsx(p.Menu.Item,{children:e.jsx(F,{title:A.name,type:A.view_type})},A.id))}):e.jsx("div",{style:{width:300,padding:5,paddingLeft:15},children:m==null?void 0:m("no_favorites")})]});function F({title:A,type:M}){const B=M==="tree"?e.jsx(H.TableOutlined,{}):e.jsx(H.FormOutlined,{});return e.jsxs(p.Row,{wrap:!1,children:[e.jsx(p.Col,{flex:"none",style:{paddingRight:20},children:B}),e.jsx(p.Col,{flex:"auto",children:A})]})}async function E(){if(i&&C)await o(C);else{if(!V)return;const A=D.find(z=>z.key===S),{id:M,type:B}=(A==null?void 0:A.action)||{},$=V.view_id;let W=!1;if(!M||!B){a(!1);return}V.type==="form"&&(W=k||!1),await s({action_id:M,action_type:B,view_id:$,res_id:W})}await x(),a(!i)}return e.jsxs(e.Fragment,{children:[e.jsx(p.Button,{type:i?"primary":"default",icon:i?e.jsx(H.StarFilled,{style:{color:"white"}}):e.jsx(H.StarOutlined,{}),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:E}),e.jsx(p.Dropdown,{overlay:I,onVisibleChange:_,open:c,children:e.jsx(p.Button,{style:{width:25,borderTopLeftRadius:0,borderBottomLeftRadius:0},icon:e.jsx(H.DownOutlined,{style:{fontSize:"0.5em"}}),onClick:A=>A.preventDefault()})})]})};G.ActionBar=Pn,G.Binary=$n,G.Boolean=kr,G.Button=qt,G.ButtonGroup=xr,G.Char=Gt,G.CodeEditor=Rn,G.ConfigContext=Wn,G.ConnectionProvider=Y,G.ContentRootProvider=Qr,G.CurrentTabContent=cc,G.Dashboard=jn,G.DashboardGrid=Gn,G.DashboardGridItem=Un,G.Date=kn,G.DateTime=Mn,G.Email=Kn,G.ExportModal=Dn,G.FavouriteButton=uc,G.Float=Xt,G.FloatTime=bn,G.Form=ct,G.FormModal=dt,G.GraphIndicator=wn,G.Group=nr,G.Image=Kr,G.Integer=vt,G.Label=gt,G.Many2one=pn,G.Markdown=Jn,G.MultiCheckbox=zn,G.Notebook=xn,G.One2many=Sn,G.ProgressBar=tn,G.Radio=Zn,G.Reference=In,G.RootView=nc,G.SearchFilter=Qt,G.SearchModal=tr,G.SearchTree=er,G.Selection=Ut,G.Separator=Fn,G.Steps=Qn,G.Switch=Xn,G.TabSelector=ic,G.Tag=sn,G.Tags=Ur,G.Text=Tn,G.Time=En,G.Tree=Ct,G.Url=Hn,G.iconMapper=We,G.showConfirmDialog=rt,Object.defineProperties(G,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
37
37
|
//# sourceMappingURL=react-ooui.umd.js.map
|