@gisce/react-ooui 1.2.3 → 1.2.4-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
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("@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","@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.fiberDiagram,G.reactFormigaComponents,G.isURL,G.isEmail,G.reactHotkeysHook,G.ReactMarkdown,G.Editor,G.reactGridLayout,null,G.uuid))})(this,function(G,l,h,se,B,Pt,e,Zn,Xn,Qn,Rn,eo,Bt,to,ro,no,oo,hr,so,io,ao,lo,co,pr,wc,gr){"use strict";const We=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=We(l),yr=mr(B),wr=We(B),vr=mr(Zn),uo=We(Xn),pt=We(Qn),Ht=We(Rn),Kt=We(eo),Re=We(to),fo=We(so),ho=We(io),po=We(lo),go=We(co),{Text:mo,Title:yo}=h.Typography,{useToken:wo}=h.theme,vo={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:u}=r,p=a!==null&&o.length>1?o+" :":o,g=n||(a?s?"left":"right":"left"),{token:w}=wo(),m=c===void 0?mo:yo;return e.jsxs("div",{className:`flex flex-row items-center pb-1 pt-1 ${vo[g]}`,children:[i&&e.jsx(h.Tooltip,{title:i,children:e.jsx(B.QuestionCircleOutlined,{className:"pr-1 text-xs",style:{color:w.colorPrimary}})}),e.jsx("span",{className:"pr-2",children:e.jsx(m,{level:c,type:u,children:e.jsx(Pt.Interweave,{content:p})})})]})},Co={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),So=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=Co[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:u}){const{id:f,label:p,tooltip:d}=t,{t:g}=l.useContext(ge),w=a?[{required:!0,message:g("fillRequiredField"),type:c,validator:u}]:void 0,m=()=>e.jsx(h.Form.Item,{className:"mb-0",name:f,valuePropName:s,rules:w,children:r});if(!o)return m();const y=e.jsx(gt,{ooui:new se.Label({name:f+"_label",string:p,help:d,fieldForLabel:f}),align:i});return n==="horizontal"?(()=>e.jsxs(h.Row,{align:"middle",className:"pb-1 pt-1",children:[e.jsx(h.Col,{className:"ml-2",flex:"7rem",children:e.jsx("div",{className:"flex flex-col items-end",children:y})}),e.jsx(h.Col,{flex:"auto",children:m()})]}))():(()=>e.jsxs(e.Fragment,{children:[y,m()]}))()}const{confirm:bo}=h.Modal,rt=({onOk:t,confirmMessage:r,lang:n})=>{bo({title:be("confirmation",n),icon:e.jsx(B.ExclamationCircleOutlined,{}),centered:!0,content:r,okText:be("ok",n),cancelText:be("cancel",n),onOk:t})},_e=Pe.default.createContext(null),xo=t=>{const{children:r,activeId:n,activeModel:s,setFieldValue:o,getFieldValue:i,executeButtonAction:a,getContext:c,getValues:u,getPlainValues:f,domain:p,submitForm:d,fetchValues:g,formHasChanges:w,elementHasLostFocus:m,getFields:y}=t;return e.jsx(_e.Provider,{value:{domain:p,getValues:u,getPlainValues:f,getFields:y,activeId:n,activeModel:s,setFieldValue:o,getFieldValue:i,executeButtonAction:a,getContext:c,submitForm:d,fetchValues:g,formHasChanges:w,elementHasLostFocus:m},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"},qe=(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 To(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=To(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:u,readOnly:f}=r,p=l.useContext(_e),{executeButtonAction:d}=p||{},[g,w]=l.useState(!1),{lang:m}=l.useContext(ge);async function y(){w(!0),await d({type:i,action:n,context:u}),w(!1)}function C(){if(a){rt({confirmMessage:a,lang:m,onOk:()=>{y()}});return}y()}function v(){if(g)return e.jsx(B.LoadingOutlined,{});if(c){const V=qe(c);return V&&e.jsx(V,{})}}return e.jsx(me,{ooui:r,children:e.jsx(h.Button,{block:!0,disabled:!o||f,onClick:C,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:u,icon:f,primary:p,danger:d,context:g,readOnly:w}=n||{},m=l.useContext(_e),{executeButtonAction:y}=m||{},[C,v]=l.useState(!1),{lang:V}=l.useContext(ge);function _(){if(C)return e.jsx(B.LoadingOutlined,{});if(f){const D=qe(f);return D&&e.jsx(D,{})}}async function b(){c&&o&&(v(!0),await y({type:c,action:o,context:g}),v(!1))}function E(){if(u){rt({confirmMessage:u,lang:V,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(h.Dropdown.Button,{disabled:!a||w,onClick:E,icon:e.jsx(B.DownOutlined,{}),type:p?"primary":void 0,overlay:e.jsx(Fo,{ooui:s,executeButtonAction:y,lang:V}),children:[_(),i]})});if(n)return e.jsx(Wt,{ooui:n})},Fo=t=>{const{ooui:r,executeButtonAction:n,lang:s}=t;if(!r)return null;const o=r.map(i=>{const{id:a,caption:c,activated:u,buttonType:f,confirmMessage:p,icon:d,context:g,readOnly:w,danger:m}=i,[y,C]=l.useState(!1);async function v(){C(!0),await n({type:f,action:a,context:g}),C(!1)}function V(){if(p){rt({confirmMessage:p,lang:s,onOk:()=>{v()}});return}v()}function _(){if(y)return e.jsx(B.LoadingOutlined,{});if(d){const b=qe(d);return b&&e.jsx(b,{})}}return e.jsx(h.Menu.Item,{disabled:!u||w,onClick:V,icon:_(),danger:m,children:c})});return e.jsx(h.Menu,{children:o})},Oo=.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*Oo,modalHeight:t.height,width:t.width,height:t.height}}class W{static init(r){W.handler=r}static getHandler(){if(!W.handler)throw"Must call init() first with a valid ConnectionProvider instance";return W.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("@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","@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.fiberDiagram,G.reactFormigaComponents,G.isURL,G.isEmail,G.reactHotkeysHook,G.ReactMarkdown,G.Editor,G.reactGridLayout,null,G.uuid))})(this,function(G,l,h,se,B,Pt,e,Zn,Xn,Qn,Rn,eo,Bt,to,ro,no,oo,hr,so,io,ao,lo,co,pr,wc,gr){"use strict";const We=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=We(l),yr=mr(B),wr=We(B),vr=mr(Zn),uo=We(Xn),pt=We(Qn),Ht=We(Rn),Kt=We(eo),Qe=We(to),fo=We(so),ho=We(io),po=We(lo),go=We(co),{Text:mo,Title:yo}=h.Typography,{useToken:wo}=h.theme,vo={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:u}=r,p=a!==null&&o.length>1?o+" :":o,g=n||(a?s?"left":"right":"left"),{token:y}=wo(),m=c===void 0?mo:yo;return e.jsxs("div",{className:`flex flex-row items-center pb-1 pt-1 ${vo[g]}`,children:[i&&e.jsx(h.Tooltip,{title:i,children:e.jsx(B.QuestionCircleOutlined,{className:"pr-1 text-xs",style:{color:y.colorPrimary}})}),e.jsx("span",{className:"pr-2",children:e.jsx(m,{level:c,type:u,children:e.jsx(Pt.Interweave,{content:p})})})]})},Co={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),So=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=Co[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:u}){const{id:f,label:p,tooltip:d}=t,{t:g}=l.useContext(ge),y=a?[{required:!0,message:g("fillRequiredField"),type:c,validator:u}]:void 0,m=()=>e.jsx(h.Form.Item,{className:"mb-0",name:f,valuePropName:s,rules:y,children:r});if(!o)return m();const w=e.jsx(gt,{ooui:new se.Label({name:f+"_label",string:p,help:d,fieldForLabel:f}),align:i});return n==="horizontal"?(()=>e.jsxs(h.Row,{align:"middle",className:"pb-1 pt-1",children:[e.jsx(h.Col,{className:"ml-2",flex:"7rem",children:e.jsx("div",{className:"flex flex-col items-end",children:w})}),e.jsx(h.Col,{flex:"auto",children:m()})]}))():(()=>e.jsxs(e.Fragment,{children:[w,m()]}))()}const{confirm:bo}=h.Modal,rt=({onOk:t,confirmMessage:r,lang:n})=>{bo({title:be("confirmation",n),icon:e.jsx(B.ExclamationCircleOutlined,{}),centered:!0,content:r,okText:be("ok",n),cancelText:be("cancel",n),onOk:t})},_e=Pe.default.createContext(null),xo=t=>{const{children:r,activeId:n,activeModel:s,setFieldValue:o,getFieldValue:i,executeButtonAction:a,getContext:c,getValues:u,getPlainValues:f,domain:p,submitForm:d,fetchValues:g,formHasChanges:y,elementHasLostFocus:m,getFields:w}=t;return e.jsx(_e.Provider,{value:{domain:p,getValues:u,getPlainValues:f,getFields:w,activeId:n,activeModel:s,setFieldValue:o,getFieldValue:i,executeButtonAction:a,getContext:c,submitForm:d,fetchValues:g,formHasChanges:y,elementHasLostFocus:m},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"},qe=(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 To(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=To(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:u,readOnly:f}=r,p=l.useContext(_e),{executeButtonAction:d}=p||{},[g,y]=l.useState(!1),{lang:m}=l.useContext(ge);async function w(){y(!0),await d({type:i,action:n,context:u}),y(!1)}function C(){if(a){rt({confirmMessage:a,lang:m,onOk:()=>{w()}});return}w()}function v(){if(g)return e.jsx(B.LoadingOutlined,{});if(c){const V=qe(c);return V&&e.jsx(V,{})}}return e.jsx(me,{ooui:r,children:e.jsx(h.Button,{block:!0,disabled:!o||f,onClick:C,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:u,icon:f,primary:p,danger:d,context:g,readOnly:y}=n||{},m=l.useContext(_e),{executeButtonAction:w}=m||{},[C,v]=l.useState(!1),{lang:V}=l.useContext(ge);function _(){if(C)return e.jsx(B.LoadingOutlined,{});if(f){const D=qe(f);return D&&e.jsx(D,{})}}async function b(){c&&o&&(v(!0),await w({type:c,action:o,context:g}),v(!1))}function E(){if(u){rt({confirmMessage:u,lang:V,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(h.Dropdown.Button,{disabled:!a||y,onClick:E,icon:e.jsx(B.DownOutlined,{}),type:p?"primary":void 0,overlay:e.jsx(Fo,{ooui:s,executeButtonAction:w,lang:V}),children:[_(),i]})});if(n)return e.jsx(Wt,{ooui:n})},Fo=t=>{const{ooui:r,executeButtonAction:n,lang:s}=t;if(!r)return null;const o=r.map(i=>{const{id:a,caption:c,activated:u,buttonType:f,confirmMessage:p,icon:d,context:g,readOnly:y,danger:m}=i,[w,C]=l.useState(!1);async function v(){C(!0),await n({type:f,action:a,context:g}),C(!1)}function V(){if(p){rt({confirmMessage:p,lang:s,onOk:()=>{v()}});return}v()}function _(){if(w)return e.jsx(B.LoadingOutlined,{});if(d){const b=qe(d);return b&&e.jsx(b,{})}}return e.jsx(h.Menu.Item,{disabled:!u||y,onClick:V,icon:_(),danger:m,children:c})});return e.jsx(h.Menu,{children:o})},Oo=.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*Oo,modalHeight:t.height,width:t.width,height:t.height}}class W{static init(r){W.handler=r}static getHandler(){if(!W.handler)throw"Must call init() first with a valid ConnectionProvider instance";return W.handler}}const Tr=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:_o,warning:Do}=h.Modal,Ie=t=>{const{message:r,type:n,title:s}=Tr(t),o=n==="error"?e.jsx(B.ExclamationCircleOutlined,{}):e.jsx(B.WarningOutlined,{});(n==="error"?_o:Do)({title:s,icon:o,centered:!0,content:r})},Fr=t=>{const{visible:r,onCloseModal:n,model:s,id:o,field:i,onSubmitSucceed:a}=t,{modalWidth:c}=xt(),{t:u}=l.useContext(ge),[f,p]=l.useState([]),[d,g]=l.useState(!1),[w,m]=l.useState(!1),[y,C]=l.useState({}),v=l.useRef();l.useEffect(()=>{r?V():C({})},[r]);async function V(){g(!0);try{const S=await _();await b(S)}catch(S){Ie(S)}g(!1)}async function _(){const x=(await W.getHandler().search({params:[["translatable","=","1"]],fields:["code","name"],model:"res.lang"})).map(O=>({code:O.code,name:O.name}));return p==null||p(x),x}async function b(S){const x={};for(const O of S){const T=(await W.getHandler().readObjects({model:s,ids:[o],fieldsToRetrieve:[i],context:{lang:O.code}}))[0];x[O.code]=T[i]||""}v.current=x,C(x)}function E(){return f.map((S,x)=>e.jsxs(h.Row,{style:{paddingBottom:20},children:[e.jsx(h.Col,{flex:"8rem",style:{paddingRight:10},children:S.name}),e.jsx(h.Col,{flex:"auto",children:e.jsx(uo.default,{rows:4,value:y[S.code]||"",onChange:O=>{C({...y,[S.code]:O.target.value})},disabled:w})})]},x))}async function D(){m(!0);try{for(const S of Object.keys(y))y[S]!==v.current[S]&&await W.getHandler().update({model:s,id:o,values:{[i]:y[S]},context:{lang:S},fields:{}})}catch(S){Ie(S)}m(!1),a()}function N(){return d?e.jsx(h.Spin,{}):e.jsxs(e.Fragment,{children:[E(),e.jsx(h.Divider,{}),e.jsx(h.Row,{justify:"end",children:e.jsxs(h.Space,{children:[e.jsx(h.Button,{icon:e.jsx(B.CloseOutlined,{}),onClick:n,disabled:w,children:u("cancel")}),e.jsx(h.Button,{icon:w?e.jsx(B.LoadingOutlined,{}):e.jsx(B.CheckOutlined,{}),disabled:w,onClick:D,style:{marginLeft:15},type:"primary",children:u("ok")})]})})]})}return e.jsx(h.Modal,{title:u("translate"),centered:!0,width:c,open:r,closable:!0,onCancel:n,footer:null,destroyOnClose:!0,maskClosable:!1,children:N()})};function Le(t){const{tooltip:r,...n}=t;return e.jsx(h.Tooltip,{title:r,children:e.jsx(h.Button,{...n})})}const{info:ko}=h.Modal,ze=t=>{ko({title:"",centered:!0,content:t})},{useToken:Vo}=h.theme,qt=t=>{const{ooui:r,isSearchField:n=!1}=t,{id:s,readOnly:o,isPassword:i,required:a,translatable:c}=r,{token:u}=Vo(),f=a&&!o?{backgroundColor:u.colorPrimaryBg}:void 0,p=l.useContext(_e),{elementHasLostFocus:d}=p||{};let g=e.jsx(h.Input,{disabled:o||c&&!n,id:s,style:f,maxLength:r.size,onBlur:d});return i&&(g=e.jsx(h.Input.Password,{disabled:o,id:s,onBlur:d})),c&&!o&&!n&&(g=e.jsx(Eo,{field:s,requiredStyle:f})),e.jsx(me,{required:a,...t,children:g})},Eo=({value:t,field:r,requiredStyle:n,onChange:s})=>{const o=l.useContext(_e),{activeId:i,activeModel:a,fetchValues:c,formHasChanges:u,elementHasLostFocus:f}=o||{},[p,d]=l.useState(!1),{t:g}=l.useContext(ge);return i?e.jsxs(e.Fragment,{children:[e.jsx("div",{onClick:()=>{if(u!=null&&u()){ze(g("saveBeforeTranslate"));return}p||d(!0)},children:e.jsx(h.Input,{value:t,disabled:!0,id:r,onChange:w=>{s==null||s(w.target.value)},onBlur:f,style:{cursor:"pointer",...n}})}),e.jsx(Fr,{id:i,model:a,field:r,visible:p,onCloseModal:()=>{d(!1)},onSubmitSucceed:()=>{d(!1),c==null||c()}})]}):e.jsx(e.Fragment,{children:e.jsxs(h.Row,{gutter:8,wrap:!1,children:[e.jsx(h.Col,{flex:"auto",children:e.jsx(h.Input,{value:t,id:r,style:n,onChange:w=>{s==null||s(w.target.value)},onBlur:f})}),e.jsx(h.Col,{flex:"32px",children:e.jsx(Le,{tooltip:g("translate"),icon:e.jsx(B.TranslationOutlined,{}),onClick:async()=>{u!=null&&u()?ze(g("saveBeforeTranslate")):ze(g("enterTextBeforeTranslate"))},children:g("translate")})})]})})},{defaultAlgorithm:Mo,defaultSeed:Io}=h.theme,Ao=Mo(Io),{Option:$o}=h.Select,Yt=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(Or,{...t})})},Or=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,required:a}=r,c=Array.from(o.entries()),u=c&&c.length&&c.map(p=>{const[d,g]=p;return e.jsx($o,{value:d,children:g},d)}),f=a&&!i?Lo:h.Select;return e.jsx(f,{disabled:i,onChange:n,value:s,optionFilterProp:"children",filterOption:(p,d)=>d.children.toLowerCase().indexOf(p.toLowerCase())>=0,showSearch:!0,children:u})},Lo=pt.default(h.Select)`
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:Do}=h.Modal,Ie=t=>{const{message:r,type:n,title:s}=Tr(t),o=n==="error"?e.jsx(B.ExclamationCircleOutlined,{}):e.jsx(B.WarningOutlined,{});(n==="error"?_o:Do)({title:s,icon:o,centered:!0,content:r})},Fr=t=>{const{visible:r,onCloseModal:n,model:s,id:o,field:i,onSubmitSucceed:a}=t,{modalWidth:c}=xt(),{t:u}=l.useContext(ge),[f,p]=l.useState([]),[d,g]=l.useState(!1),[y,m]=l.useState(!1),[w,C]=l.useState({}),v=l.useRef();l.useEffect(()=>{r?V():C({})},[r]);async function V(){g(!0);try{const S=await _();await b(S)}catch(S){Ie(S)}g(!1)}async function _(){const x=(await W.getHandler().search({params:[["translatable","=","1"]],fields:["code","name"],model:"res.lang"})).map(O=>({code:O.code,name:O.name}));return p==null||p(x),x}async function b(S){const x={};for(const O of S){const T=(await W.getHandler().readObjects({model:s,ids:[o],fieldsToRetrieve:[i],context:{lang:O.code}}))[0];x[O.code]=T[i]||""}v.current=x,C(x)}function E(){return f.map((S,x)=>e.jsxs(h.Row,{style:{paddingBottom:20},children:[e.jsx(h.Col,{flex:"8rem",style:{paddingRight:10},children:S.name}),e.jsx(h.Col,{flex:"auto",children:e.jsx(uo.default,{rows:4,value:w[S.code]||"",onChange:O=>{C({...w,[S.code]:O.target.value})},disabled:y})})]},x))}async function D(){m(!0);try{for(const S of Object.keys(w))w[S]!==v.current[S]&&await W.getHandler().update({model:s,id:o,values:{[i]:w[S]},context:{lang:S},fields:{}})}catch(S){Ie(S)}m(!1),a()}function N(){return d?e.jsx(h.Spin,{}):e.jsxs(e.Fragment,{children:[E(),e.jsx(h.Divider,{}),e.jsx(h.Row,{justify:"end",children:e.jsxs(h.Space,{children:[e.jsx(h.Button,{icon:e.jsx(B.CloseOutlined,{}),onClick:n,disabled:y,children:u("cancel")}),e.jsx(h.Button,{icon:y?e.jsx(B.LoadingOutlined,{}):e.jsx(B.CheckOutlined,{}),disabled:y,onClick:D,style:{marginLeft:15},type:"primary",children:u("ok")})]})})]})}return e.jsx(h.Modal,{title:u("translate"),centered:!0,width:c,open:r,closable:!0,onCancel:n,footer:null,destroyOnClose:!0,maskClosable:!1,children:N()})};function Le(t){const{tooltip:r,...n}=t;return e.jsx(h.Tooltip,{title:r,children:e.jsx(h.Button,{...n})})}const{info:ko}=h.Modal,ze=t=>{ko({title:"",centered:!0,content:t})},{useToken:Vo}=h.theme,qt=t=>{const{ooui:r,isSearchField:n=!1}=t,{id:s,readOnly:o,isPassword:i,required:a,translatable:c}=r,{token:u}=Vo(),f=a&&!o?{backgroundColor:u.colorPrimaryBg}:void 0,p=l.useContext(_e),{elementHasLostFocus:d}=p||{};let g=e.jsx(h.Input,{disabled:o||c&&!n,id:s,style:f,maxLength:r.size,onBlur:d});return i&&(g=e.jsx(h.Input.Password,{disabled:o,id:s,onBlur:d})),c&&!o&&!n&&(g=e.jsx(Eo,{field:s,requiredStyle:f})),e.jsx(me,{required:a,...t,children:g})},Eo=({value:t,field:r,requiredStyle:n,onChange:s})=>{const o=l.useContext(_e),{activeId:i,activeModel:a,fetchValues:c,formHasChanges:u,elementHasLostFocus:f}=o||{},[p,d]=l.useState(!1),{t:g}=l.useContext(ge);return i?e.jsxs(e.Fragment,{children:[e.jsx("div",{onClick:()=>{if(u!=null&&u()){ze(g("saveBeforeTranslate"));return}p||d(!0)},children:e.jsx(h.Input,{value:t,disabled:!0,id:r,onChange:y=>{s==null||s(y.target.value)},onBlur:f,style:{cursor:"pointer",...n}})}),e.jsx(Fr,{id:i,model:a,field:r,visible:p,onCloseModal:()=>{d(!1)},onSubmitSucceed:()=>{d(!1),c==null||c()}})]}):e.jsx(e.Fragment,{children:e.jsxs(h.Row,{gutter:8,wrap:!1,children:[e.jsx(h.Col,{flex:"auto",children:e.jsx(h.Input,{value:t,id:r,style:n,onChange:y=>{s==null||s(y.target.value)},onBlur:f})}),e.jsx(h.Col,{flex:"32px",children:e.jsx(Le,{tooltip:g("translate"),icon:e.jsx(B.TranslationOutlined,{}),onClick:async()=>{u!=null&&u()?ze(g("saveBeforeTranslate")):ze(g("enterTextBeforeTranslate"))},children:g("translate")})})]})})},{defaultAlgorithm:Mo,defaultSeed:Io}=h.theme,Ao=Mo(Io),{Option:$o}=h.Select,Yt=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(Or,{...t})})},Or=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,required:a}=r,c=Array.from(o.entries()),u=c&&c.length&&c.map(p=>{const[d,g]=p;return e.jsx($o,{value:d,children:g},d)}),f=a&&!i?Lo:h.Select;return e.jsx(f,{disabled:i,onChange:n,value:s,optionFilterProp:"children",filterOption:(p,d)=>d.children.toLowerCase().indexOf(p.toLowerCase())>=0,showSearch:!0,children:u})},Lo=pt.default(h.Select)`
6
6
  &.ant-select:not(.ant-select-customize-input) .ant-select-selector {
7
7
  background-color: ${Ao.colorPrimaryBg};
8
8
  }
@@ -14,13 +14,13 @@
14
14
  .ant-checkbox-checked .ant-checkbox-inner {
15
15
  background-color: ${_r.colorPrimary};
16
16
  }
17
- `;var et=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ko(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}var kr=Ko,Wo=typeof et=="object"&&et&&et.Object===Object&&et,qo=Wo,Yo=qo,Go=typeof self=="object"&&self&&self.Object===Object&&self,Uo=Yo||Go||Function("return this")(),Vr=Uo,jo=Vr,zo=function(){return jo.Date.now()},Jo=zo,Zo=/\s/;function Xo(t){for(var r=t.length;r--&&Zo.test(t.charAt(r)););return r}var Qo=Xo,Ro=Qo,es=/^\s+/;function ts(t){return t&&t.slice(0,Ro(t)+1).replace(es,"")}var rs=ts,ns=Vr,os=ns.Symbol,Er=os,Mr=Er,Ir=Object.prototype,ss=Ir.hasOwnProperty,is=Ir.toString,mt=Mr?Mr.toStringTag:void 0;function as(t){var r=ss.call(t,mt),n=t[mt];try{t[mt]=void 0;var s=!0}catch{}var o=is.call(t);return s&&(r?t[mt]=n:delete t[mt]),o}var ls=as,cs=Object.prototype,ds=cs.toString;function us(t){return ds.call(t)}var fs=us,Ar=Er,hs=ls,ps=fs,gs="[object Null]",ms="[object Undefined]",$r=Ar?Ar.toStringTag:void 0;function ys(t){return t==null?t===void 0?ms:gs:$r&&$r in Object(t)?hs(t):ps(t)}var ws=ys;function vs(t){return t!=null&&typeof t=="object"}var Cs=vs,Ss=ws,bs=Cs,xs="[object Symbol]";function Ts(t){return typeof t=="symbol"||bs(t)&&Ss(t)==xs}var Fs=Ts,Os=rs,Lr=kr,_s=Fs,Nr=0/0,Ds=/^[-+]0x[0-9a-f]+$/i,ks=/^0b[01]+$/i,Vs=/^0o[0-7]+$/i,Es=parseInt;function Ms(t){if(typeof t=="number")return t;if(_s(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=Os(t);var n=ks.test(t);return n||Vs.test(t)?Es(t.slice(2),n?2:8):Ds.test(t)?Nr:+t}var Is=Ms,As=kr,Gt=Jo,Pr=Is,$s="Expected a function",Ls=Math.max,Ns=Math.min;function Ps(t,r,n){var s,o,i,a,c,u,f=0,p=!1,d=!1,g=!0;if(typeof t!="function")throw new TypeError($s);r=Pr(r)||0,As(n)&&(p=!!n.leading,d="maxWait"in n,i=d?Ls(Pr(n.maxWait)||0,r):i,g="trailing"in n?!!n.trailing:g);function w(D){var N=s,S=o;return s=o=void 0,f=D,a=t.apply(S,N),a}function m(D){return f=D,c=setTimeout(v,r),p?w(D):a}function y(D){var N=D-u,S=D-f,x=r-N;return d?Ns(x,i-S):x}function C(D){var N=D-u,S=D-f;return u===void 0||N>=r||N<0||d&&S>=i}function v(){var D=Gt();if(C(D))return V(D);c=setTimeout(v,y(D))}function V(D){return c=void 0,g&&s?w(D):(s=o=void 0,a)}function _(){c!==void 0&&clearTimeout(c),f=0,s=u=o=c=void 0}function b(){return c===void 0?a:V(Gt())}function E(){var D=Gt(),N=C(D);if(s=arguments,o=this,u=D,N){if(c===void 0)return m(u);if(d)return clearTimeout(c),c=setTimeout(v,r),w(u)}return c===void 0&&(c=setTimeout(v,r)),a}return E.cancel=_,E.flush=b,E}var Bs=Ps;function Hs(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 no.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=qe(s);return o?e.jsx(o,{}):e.jsx(me,{required:n,...t,children:e.jsx(Ks,{ooui:r})})},Ks=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o}=r,i=l.useRef(null),{t:a}=l.useContext(ge),c=d=>{s==null||s(d)};async function u(){const d=await nt(n),g=`data:${d==null?void 0:d.mime};base64,${n}`,w=document.createElement("a");w.href=g,w.download=`image.${d==null?void 0:d.ext}`,w.click()}async function f(d){d.stopPropagation(),d.preventDefault();const g=d.target.files[0],w=await Br(g);c(w)}function p(){c(void 0)}return e.jsxs(e.Fragment,{children:[e.jsxs(h.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:f})]}),e.jsx(h.Row,{gutter:8,wrap:!1,justify:"center",className:"pt-5",children:e.jsxs(h.Space,{children:[e.jsx(Le,{tooltip:a("uploadNewImage"),icon:e.jsx(B.FolderOpenOutlined,{}),disabled:o,onClick:()=>{i.current.click()}}),e.jsx(Le,{tooltip:a("download"),disabled:!n,onClick:u,icon:e.jsx(B.DownloadOutlined,{})}),e.jsx(Le,{tooltip:a("clear"),disabled:o||!n,onClick:p,icon:e.jsx(B.ClearOutlined,{})})]})})]})},Ws=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(qs,{})})},qs=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(oo.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},Ys=(t,r,n)=>t.columns.map(o=>{const i=o.type,a=o.id,c=r==null?void 0:r[i];let u;return c&&(u=f=>c(f,a,o,n)),{key:a,dataIndex:a,title:o.label,render:u,sorter:(f,p)=>{var w,m;let d=f[a]||"",g=p[a]||"";return i==="many2one"&&(d=((w=f[a])==null?void 0:w.value)||"",g=((m=p[a])==null?void 0:m.value)||""),d<g?-1:d>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=(u,f)=>{var g,w;let p=u[s]||"",d=f[s]||"";return a==="many2one"&&(p=((g=u[s])==null?void 0:g[1])||"",d=((w=f[s])==null?void 0:w[1])||""),p===d?0:i==="ascend"?p>d?1:-1:p<d?1:-1};return t.sort(c)}const Ut=async t=>{var m;const{items:r,model:n,formView:s,treeView:o,context:i,currentView:a={}}=t,c=r.filter(y=>y.operation!=="original"),u=r.filter(y=>y.operation==="original").map(y=>y.id),f={form:s.fields,tree:o.fields};let p=[],d;if(a==="tree"&&(o==null?void 0:o.arch)){const y=(m=ot(o))==null?void 0:m.colors,C=await W.getHandler().readEvalUiObjects({model:n,ids:u,arch:o==null?void 0:o.arch,fields:o.fields,context:i,attrs:y&&{colors:y}});p=C[0],d=Ft(C[1])}else p=await W.getHandler().readObjects({model:n,ids:u,fields:f[a],context:i});const g=p.map(y=>{const C={};return Object.keys(y).forEach(v=>{(f[a].hasOwnProperty(v)||v==="id")&&(C[v]=y[v])}),C});return[r.map(y=>{const C=g.find(V=>V.id===y.id),v={...y};return a==="form"?v.values=C:a==="tree"&&(v.treeValues=C),v}).concat(c),d]},Gs=t=>{const r=t.filter(n=>n.id&&n.id<0).map(n=>n.id);return r.length===0?-1:Math.min(...r)-1},Us=(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},js=t=>{const{ooui:r}=t,{relation:n,context:s,views:o}=r,[i,a]=l.useState(!0),[c,u]=l.useState(),[f,p]=l.useState(new Map),d=l.useContext(_e),{getContext:g}=d||{};Re.default(()=>{m()},[r]);const w=async y=>o&&o[y]?o[y]:await W.getHandler().getView({model:n,type:y,context:{...g==null?void 0:g(),...s}}),m=async()=>{a(!0),u(void 0);try{const y=await w("form"),C=await w("tree");f.set("form",y),f.set("tree",C),p(f)}catch(y){u(y)}finally{a(!1)}};return i?e.jsx(h.Spin,{}):c?e.jsx(h.Alert,{className:"mt-10",message:c,type:"error",banner:!0}):e.jsx(me,{type:"array",...t,children:e.jsx(zs,{ooui:r,views:f})})},zs=t=>{const{value:r,views:n,ooui:s,onChange:o}=t,{items:i=[]}=r||{},[a,c]=l.useState(!1),[u,f]=l.useState(),[p,d]=l.useState(!1),[g,w]=l.useState(),{relation:m,context:y,readOnly:C,summaryField:v,titleField:V}=s,_=i.filter(S=>S.values),b=l.useContext(_e),{getContext:E}=b||{};Re.default(()=>{N()},[i]);const D=S=>{o==null||o({items:S})};async function N(){c(!0),f(void 0);try{const[S]=await Ut({treeView:{fields:n.get("tree").fields,arch:n.get("tree").arch},formView:{fields:n.get("form").fields},model:m,items:i,context:{...E==null?void 0:E(),...y},currentView:"form"});D(S)}catch(S){f(S)}finally{c(!1)}}return u?e.jsx(h.Alert,{className:"mt-10",message:u,type:"error",banner:!0}):a?e.jsx(h.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(h.Timeline,{style:{padding:"1rem"},children:_.map((S,x)=>{var O,T;return e.jsx("div",{children:e.jsxs(h.Timeline.Item,{children:[e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{w(_.find(H=>S.id===H.id)),d(!0)},children:e.jsx("strong",{children:(O=S.values)==null?void 0:O[V]})}),e.jsx("br",{}),e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{w(_.find(H=>S.id===H.id)),d(!0)},children:(T=S.values)==null?void 0:T[v]})]},x)},x)})}),e.jsx(dt,{formView:n.get("form"),model:m,id:g==null?void 0:g.id,values:g==null?void 0:g.values,defaultValues:g==null?void 0:g.defaultValues,visible:p,onSubmitSucceed:()=>{d(!1)},parentContext:{...E==null?void 0:E(),...y},onCancel:()=>{d(!1)},readOnly:C,postSaveAction:N})]})},{useToken:Js}=h.theme,Zs=t=>{const{ooui:r}=t;return e.jsx(me,{ooui:r,children:e.jsx(Xs,{ooui:r})})},Xs=t=>{const{token:r}=Js(),{ooui:n,value:s}=t,o=e.jsxs(e.Fragment,{children:[e.jsxs("span",{children:[n.label," "]}),n.tooltip&&e.jsx(h.Tooltip,{title:n.tooltip,children:e.jsx(B.QuestionCircleOutlined,{className:"pr-1 text-xs",style:{color:r.colorPrimaryBg}})})]}),i=qe(n.icon);let a=s;n.selectionValues.size?a=n.selectionValues.get(s):Array.isArray(s)&&(a=s[1]);const c=e.jsx(h.Statistic,{title:o,prefix:i&&e.jsx(i,{}),suffix:n.suffix,value:a});return n.card?e.jsx(h.Card,{children:c}):c},Qs=(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)=>Qs(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 u=JSON.stringify(t[o]),f=JSON.stringify(r[o]);if(u===f)return;(((c=(a=r[o])==null?void 0:a.items)==null?void 0:c.filter(d=>d.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 u=JSON.stringify(t[o]),f=JSON.stringify(r[o]);u!==f&&(s[o]=r[o])}else{const u=t[o],[f]=r[o];u!==f&&(s[o]=r[o])}else{const u=JSON.stringify(t[o]),f=JSON.stringify(r[o]);u!==f&&(s[o]=r[o])}else t[o]!==r[o]&&(r[o]===void 0?s[o]=null:s[o]=r[o])}),s},Rs=({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),ei=({fieldsDomain:t,fields:r})=>{const n={};return Object.keys(r).forEach(s=>{n[s]=r[s],t[s]&&(n[s].domain=t[s])}),n},ti=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)},ri=({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},zt=t=>{let r=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},Yr=t=>{const{ooui:r}=t;return e.jsx(me,{type:"array",...t,children:e.jsx(ni,{ooui:r})})},ni=t=>{const{value:r,ooui:n,onChange:s}=t,{items:o=[]}=r||{},i=o.filter(D=>D.operation!=="pendingRemove").map(D=>D.id),[a,c]=l.useState([]),[u,f]=l.useState(),[p,d]=l.useState(!1),{relation:g,context:w,readOnly:m,field:y}=n,C=l.useContext(_e),{getContext:v}=C||{};Re.default(()=>{_()},[o]);const V=D=>{s==null||s({items:D})};async function _(){d(!0);let D=[];try{if(m&&(D=[["id","in",i]]),n.domain){const x=await W.getHandler().evalDomain({domain:n.domain,values:at({fields:C==null?void 0:C.getFields(),values:C.getPlainValues()}),fields:C==null?void 0:C.getFields(),context:C.getContext()});D=[...D,...x]}const S=(await W.getHandler().search({model:g,params:D,fields:[y],context:{...v==null?void 0:v(),...w}})).map(x=>{const O=x[y];let T=O;return Array.isArray(O)&&(T=O[1]),{label:T,value:x.id}});c(S)}catch(N){f(N)}finally{d(!1)}}const b=D=>{const N=o.map(x=>D.includes(x.id)?x.operation=="pendingRemove"?{...x,operation:"pendingLink"}:x:{id:x.id,operation:"pendingRemove"}),S=N.map(x=>x.id);D.filter(x=>!S.includes(x)).map(x=>{N.push({id:x,operation:"pendingLink"})}),V(N)},E=D=>{const{label:N,closable:S,onClose:x}=D,O=T=>{T.preventDefault(),T.stopPropagation()};return e.jsx(h.Tag,{color:zt(N),onMouseDown:O,style:{margin:"5px"},closable:S,onClose:x,children:N})};return u?e.jsx(h.Alert,{className:"mt-10",message:u,type:"error",banner:!0}):e.jsx(e.Fragment,{children:e.jsx("div",{className:"flex flex-row",children:e.jsx(h.Select,{mode:"multiple",value:a.length?i:[],tagRender:E,bordered:!m,disabled:m,options:a,onChange:b,loading:p})})})},oi=t=>{switch(t){case"form":return ct;case"tree":return Ct;case"notebook":return vn;case"group":return rr;case"label":return gt;case"char":return qt;case"text":return Cn;case"button":return Wt;case"buttonGroup":return br;case"selection":return Yt;case"many2one":return dn;case"boolean":return Dr;case"integer":return vt;case"float":return Zt;case"progressbar":return Rr;case"date":return Fn;case"datetime":return On;case"one2many":case"one2many_list":case"many2many":return yn;case"separator":return Sn;case"reference":return _n;case"binary":return Dn;case"image":return Hr;case"url":return An;case"email":return $n;case"float_time":return wn;case"fiber_grid":return Ws;case"timeline":return js;case"indicator":return Zs;case"tags":return Yr;case"tag":return Wn;case"multicheckbox":return qn;case"markdown":return Yn;case"radio":return Gn;case"switch":return Un;case"steps":return jn;case"codeeditor":return zn;default:return}},si=t=>{const{ooui:r}=t,{type:n}=r,s=oi(n);return s?Pe.default.createElement(s,t):null},ii=({item:t,responsiveBehaviour:r})=>({gridColumnStart:"span "+(r?1:t.colspan)}),ai=({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 u=n-o;a.colspan=a.colspan+u,o+=u}if(s.push(a),i(c)){const u=n-o;for(let f=0;f<u;f+=1)s.push(new se.Label({string:""}))}}),s},li=({row:t,numberOfColumns:r})=>t.map(n=>(n._mustExpand&&(n.colspan=r),n)),ci=(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(" ")},di=(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},ui=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=ui(s);i<o&&(o=i);let a=!1,c=[];const u=s.map((d,g)=>{const w=d.filter(C=>!C.invisible),m=li({row:w,numberOfColumns:o});let y=m;return(g===0||!(d.length===1&&d.some(C=>C.type==="group")))&&(y=ai({row:m,numberOfColumns:o,mustFillWithEmpties:n}),c=c.concat(y)),y.map(C=>(C instanceof se.Label&&C.fieldForLabel&&(a=!0),e.jsx("div",{style:{...ii({item:C,responsiveBehaviour:n}),minWidth:0},children:si({ooui:C,responsiveBehaviour:n})},C.key)))}),f=s.length===1?ci(c,o):di(o,a),p={display:"grid",gridTemplateColumns:n?"auto":f,gap:"1rem",minHeight:0,minWidth:0};return e.jsx("div",{style:p,children:u})},{confirm:fi}=h.Modal,yt=({onOk:t,onCancel:r,lang:n})=>{fi({title:be("unsavedChanges",n),icon:e.jsx(B.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmCloseWithoutSave",n),okText:be("closeWithoutSaving",n),onOk:t,onCancel:r,cancelText:be("cancel",n)})},{error:hi}=h.Modal,Gr=t=>{hi({title:be("formHasErrors",t),icon:e.jsx(B.ExclamationCircleOutlined,{}),centered:!0,content:be("fillRequiredFields",t)})},{warning:pi}=h.Modal,gi=(t,r,n)=>{pi({title:t,icon:e.jsx(B.WarningOutlined,{}),centered:!0,content:r,onOk:n})},Ur=Pe.default.createContext(null),mi=t=>{const{children:r,setTitle:n}=t;return e.jsx(Ur.Provider,{value:{setTitle:n},children:r})},jr=t=>typeof t=="string"&&t==="true"||t==="false"?t==="true":t,yi=(t,r)=>{const n=xi(t),s=Si(n),o=bi(s,r);return[...Object.keys(o).map(c=>wi(c,o[c],r))].reduce((c,u)=>Array.isArray(u[0])?c.concat(u):[...c,u],[])},wi=(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)]},vi=t=>Object.keys(t).filter(r=>r.indexOf("#date")!==-1),Ci=t=>{const r={...t};return Object.keys(r).forEach(n=>(n.indexOf("#time")!==-1||n.indexOf("#date")!==-1)&&delete r[n]),r},Si=t=>{const r={...Ci(t)};return vi(t).forEach(s=>{const o=t[s],i=s.split("#")[0],a=i+"#time",c=t[a];let u,f;if(o[0]!==null&&(u=o[0].format("YYYY-MM-DD"),c&&c[0]!==null)){const d=c[0].format("HH:mm:ss");u=u+" "+d}if(o[1]!==null&&(f=o[1].format("YYYY-MM-DD"),c&&c[1]!==null)){const d=c[1].format("HH:mm:ss");f=f+" "+d}r[i+"#datetime"]=[u,f]}),r},bi=(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},xi=t=>{const r={...t};return Object.keys(r).forEach(n=>(r[n]===void 0||r[n]===null||r[n]==="")&&delete r[n]),r},Ti=t=>{const r={};return t.forEach(n=>{Array.isArray(n)&&n[0]?r[n[0]]=!0:r[n]=!0}),Object.keys(r)},Ot=(t,r)=>{const n=[...t],s=Ti(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:u,context:f,setActionViewTotalItems:p,treeView:d,formView:g,sorter:w,setSorter:m,setCurrentItemIndex:y,setResultsActionView:C,resultsActionView:v,domain:V,currentId:_,limit:b,setLimit:E,searchParams:D=[],setSearchValues:N}=t,[S,x]=l.useState(!1),[O,T]=l.useState(!1),[H,F]=l.useState(),[A,M]=l.useState(1),[L,k]=l.useState(0),[I,K]=l.useState(),[q,z]=l.useState([]),[Y,Z]=l.useState(void 0),J=l.useRef(b||wt),$=l.useRef([]),P=l.useCallback(oe=>{C==null||C([...oe]),z([...oe])},[]),ee=l.useCallback(()=>v||q,[v,q]),le=l.useCallback(async()=>{const oe=await W.getHandler().nameSearch({model:r,payload:c,limit:J.current,attrs:V,context:f});if(K(oe.length),p==null||p(oe.length),oe.length>0){const Se=oe.map(Me=>Me==null?void 0:Me[0]),{colors:ye}=ot(d),xe=await W.getHandler().readEvalUiObjects({model:r,ids:Se,arch:d==null?void 0:d.arch,fields:d.field_parent?{...d.fields,[d.field_parent]:{}}:d.fields,context:f,attrs:ye&&{colors:ye}}),Ee=xe[0];$.current=[...Ee],Z(Ft(xe[1]));const ke=Ee.map(Me=>Me.id),He=w!==void 0?st({resultsToSort:Ee,sorter:w,fields:{...d.fields,...g.fields}}):[...$.current];P(He),ke.length>0?y==null||y(0):y==null||y(void 0)}else P([]),y==null||y(void 0);u.current=!0},[P,u,c,r,f,V,d,g,w,y,p]),ce=l.useCallback(async oe=>{const{params:Se,newOffset:ye}=oe||{},xe=Ot(Se||D,V),{colors:Ee}=ot(d),{totalItems:ke,results:He,attrsEvaluated:Me}=await W.getHandler().searchForTree({params:xe,limit:J.current,offset:ye||L,model:r,fields:d.field_parent?{...d.fields,[d.field_parent]:{}}:d.fields,context:f,attrs:Ee&&{colors:Ee}});Z(Ft(Me)),$.current=[...He];const R=w!==void 0?st({resultsToSort:He,sorter:w,fields:{...d.fields,...g.fields}}):[...$.current];if(P(R),v&&R.length>0){const he=R.findIndex(Oe=>_===Oe.id);he===-1?y==null||y(0):y==null||y(he)}else y==null||y(void 0);const ae=await ke;K(ae),p==null||p(ae)},[y,v,P,_,r,f,V,d,g,w,p,b,L,D]),re=l.useCallback(async oe=>{try{x(!0),a==null||a(!0),c&&!u.current?await le():await ce(oe)}catch(Se){F(Se.message)}finally{x(!1),T(!1),a==null||a(!1)}},[f,_,V,g,b,r,c,L,v,u,p,y,P,F,T,x,a,w,d]),X=l.useCallback(oe=>{m==null||m(oe);const Se=oe!==void 0?st({resultsToSort:ee(),sorter:oe,fields:{...d.fields,...g.fields}}):[...$.current];P(Se)},[m,ee,d,g,P]),we=l.useCallback(oe=>{const{params:Se,searchValues:ye,limit:xe,offset:Ee}=oe;S||(n==null||n(void 0),s==null||s([]),N==null||N(ye),o==null||o(Se),i==null||i(!1),T(!0),F(void 0),M(1),xe&&(J.current=xe,E==null||E(xe)),Ee&&k(Ee),re({params:Se,newOffset:Ee}))},[S,n,s,o,i,T,F,M,E,k,re]),Ce=l.useCallback(oe=>{x(!0),M(oe),k((oe-1)*b)},[x,b,k,M]),Ve=l.useCallback(()=>{S||(n==null||n(void 0),o==null||o([]),N==null||N({}),F(void 0),k(0),M(1),E==null||E(b||wt))},[S,n,o,F,k,M,E,b]),fe=l.useCallback(async oe=>{const Se=oe[(d==null?void 0:d.field_parent)||"child_id"],ye=await W.getHandler().readObjects({model:r,ids:Se,fields:d.field_parent?{...d.fields,[d.field_parent]:{}}:d.fields,context:f});return P([...ee(),...ye]),Kr(ot(d),ye)},[d,r,f,ee,P]);return{submit:we,clear:Ve,fetchResults:re,tableRefreshing:S,searchFilterLoading:O,searchError:H,page:A,offset:L,limit:b,getResults:ee,requestPageChange:Ce,changeSort:X,fetchChildrenForRecord:fe,colorsForResults:Y,totalItems:I}},Be=Pe.default.createContext(null),Fi=t=>{const{children:r,currentView:n,title:s,setCurrentView:o,availableViews:i,formRef:a,searchTreeRef:c,onNewClicked:u,currentId:f,setCurrentId:p,setResults:d,results:g,currentItemIndex:w,setCurrentItemIndex:m,currentModel:y,sorter:C,setSorter:v,totalItems:V,setTotalItems:_,setSelectedRowItems:b,selectedRowItems:E,searchTreeNameSearch:D,setSearchTreeNameSearch:N,goToResourceId:S,limit:x}=t,[O,T]=l.useState(!1),[H,F]=l.useState(!1),[A,M]=l.useState(!1),[L,k]=l.useState(!0),[I,K]=l.useState(!0),[q,z]=l.useState([]),[Y,Z]=l.useState(!1),[J,$]=l.useState([]),[P,ee]=l.useState(!1),[le,ce]=l.useState(!0),[re,X]=l.useState(),[we,Ce]=l.useState({}),[Ve,fe]=l.useState(x!==void 0?x:wt),[oe,Se]=l.useState(s);l.useEffect(()=>{g&&g.length>0&&!w&&(m==null||m(0),p==null||p(g[0].id))},[g]),l.useEffect(()=>{fe(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(()=>{(re==null?void 0:re.view_id)===n.view_id&&i.length>1&&X(i.filter(xe=>xe.view_id!==n.view_id)[0])},[n]);const ye=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:H,setFormHasChanges:F,formRef:a,searchTreeRef:c,onFormSave:ye,onNewClicked:u,currentId:f,setCurrentId:p,currentItemIndex:w,setCurrentItemIndex:m,results:g,setResults:d,currentModel:y,removingItem:A,setRemovingItem:M,formIsLoading:L,setFormIsLoading:k,treeIsLoading:I,setTreeIsLoading:K,attachments:q,setAttachments:z,selectedRowItems:E,setSelectedRowItems:b,duplicatingItem:Y,setDuplicatingItem:Z,setSearchParams:$,searchParams:J,searchVisible:P,setSearchVisible:ee,sorter:C,setSorter:v,totalItems:V,setTotalItems:_,searchTreeNameSearch:D,setSearchTreeNameSearch:N,setGraphIsLoading:ce,graphIsLoading:le,previousView:re,setPreviousView:X,goToResourceId:S,searchValues:we,setSearchValues:Ce,limit:Ve,setLimit:fe,setTitle:Se},children:r})},Ye=Pe.default.createContext(null),Oi=t=>{const{children:r,openAction:n,openRelate:s,openDefaultActionForModel:o,openShortcut:i,activeKey:a,onChangeTab:c,onRemoveTab:u,tabs:f}=t,[p,d]=l.useState(),[g,w]=l.useState();return e.jsx(Ye.Provider,{value:{openAction:n,openRelate:s,openDefaultActionForModel:o,activeKey:a,openShortcut:i,onChangeTab:c,onRemoveTab:u,tabs:f,currentId:g,currentView:p,setCurrentId:w,setCurrentView:d},children:r})},lt=Pe.default.createContext(null),Jr=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))},_i=(t,r)=>{const{children:n,globalValues:s={}}=t,o=l.useRef(),i=l.useRef(),[a,c]=l.useState(!1),u=l.useContext(Ye),{openAction:f}=u||{},p=l.useRef([]),{t:d}=l.useContext(ge);l.useImperativeHandle(r,()=>({openActionModal:b}));const[g,w]=l.useState(!1),[m,y]=l.useState({context:{}});async function C(N){const{reportData:S,fields:x,values:O,context:T={}}=N,{context:H,model:F,datas:A={},report_name:M,type:L}=S;if(L!=="ir.actions.report.xml"){Ie(`${L} action not supported`);return}const{ids:k}=A||{};let I=k||[];const K=typeof H=="string"?se.parseContext({context:H,fields:x,values:O}):H;try{const q=await W.getHandler().createReport({model:F,name:M,datas:A,ids:I,context:{...T,...K}});c(!0),i.current=!0,o.current=setInterval(()=>{v(q)},1e3)}catch(q){i.current=!1,clearInterval(o.current),Ie(q),c(!1)}}async function v(N){let S;try{if(S=await W.getHandler().getReport({id:N}),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),Ie(x.exception||x)}}async function V({actionData:N,fields:S,values:x,context:O,onRefreshParentValues:T}){const{type:H}=N;return p.current.push(T),H==="ir.actions.report.xml"?await C({reportData:N,fields:S,values:x,context:O}):H==="ir.actions.act_window"?await _({actionData:N,fields:S,values:x,context:O}):(Ie(`${H} action not supported`),{})}async function _({actionData:N,fields:S={},values:x={},context:O={}}){var M;let T=N;N.res_model||(T=(await W.getHandler().readObjects({model:"ir.actions.act_window",ids:[parseInt(N.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 A=[];if(T.domain&&(A=await W.getHandler().evalDomain({domain:T.domain,values:at({fields:S,values:{...x,...s}}),fields:S,context:F})),T.target==="new"){const L=await W.getHandler().getView({model:T.res_model,type:"form",id:((M=T==null?void 0:T.view_id)==null?void 0:M[0])||void 0,context:F});return b({domain:A,model:T.res_model,formView:L,context:F}),{}}else{const{initialView:L,views:k}=await Di({model:T.res_model,context:F,view_mode:T.view_mode,views:T.views});return f==null||f({target:"current",context:F,domain:A,model:T.res_model,views:k,title:T.name,initialView:L,action_id:T.id,action_type:T.type}),{closeParent:!0}}}function b({domain:N,model:S,formView:x,context:O,actionData:T}){g?E({domain:N,model:S,formView:x,context:O,actionData:T}):(y({domain:N,model:S,context:O,formView:x,actionData:T}),w(!0))}async function E({domain:N,model:S,formView:x,context:O,actionData:T}){y({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0}),w(!1),await new Promise(H=>setTimeout(H,300)),y({domain:N,model:S,context:O,formView:x,actionData:T}),w(!0)}async function D(){Jr(p.current),p.current=[],w(!1),y({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:V,globalValues:s},children:e.jsxs(e.Fragment,{children:[n,e.jsx(h.Modal,{title:d("generatingReport"),open:a,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(h.Spin,{})}),e.jsx(dt,{buttonModal:!0,parentContext:m.context,model:m.model,formView:m.formView,visible:g,onSubmitSucceed:D,onCancel:()=>{Jr(p.current),p.current=[],w(!1),y({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0})},showFooter:!1,actionDomain:m.domain,isMenuAction:(m==null?void 0:m.actionData)!==void 0,actionData:m==null?void 0:m.actionData})]})})})};async function Di({views:t,view_mode:r,model:n,context:s,view_id:o}){const i=[];let a;if(t)for(const c of t){const u=await W.getHandler().getView({model:n,type:c[1],id:c[0],context:s});i.push([u.view_id,c[1]])}else{const c=r.split(",");for(const u of c){const f=await W.getHandler().getView({model:n,type:u,context:s});i.push([f.view_id,u])}}if(t&&t.length>0){const[c,u]=t[0];a={id:c,type:u}}else if(o)a={id:o,type:r.split(",")[0]};else{const c=r.split(",")[0],[u]=i.find(([f,p])=>p===c);a={id:u,type:c}}return{views:i,initialView:a}}const Zr=l.forwardRef(_i),ki=({error:t,className:r})=>{let n,s="error";if(typeof t=="string"&&t.indexOf(" -- ")!==-1&&t.indexOf(`
17
+ `;var Re=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ko(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}var kr=Ko,Wo=typeof Re=="object"&&Re&&Re.Object===Object&&Re,qo=Wo,Yo=qo,Go=typeof self=="object"&&self&&self.Object===Object&&self,Uo=Yo||Go||Function("return this")(),Vr=Uo,jo=Vr,zo=function(){return jo.Date.now()},Jo=zo,Zo=/\s/;function Xo(t){for(var r=t.length;r--&&Zo.test(t.charAt(r)););return r}var Qo=Xo,Ro=Qo,es=/^\s+/;function ts(t){return t&&t.slice(0,Ro(t)+1).replace(es,"")}var rs=ts,ns=Vr,os=ns.Symbol,Er=os,Mr=Er,Ir=Object.prototype,ss=Ir.hasOwnProperty,is=Ir.toString,mt=Mr?Mr.toStringTag:void 0;function as(t){var r=ss.call(t,mt),n=t[mt];try{t[mt]=void 0;var s=!0}catch{}var o=is.call(t);return s&&(r?t[mt]=n:delete t[mt]),o}var ls=as,cs=Object.prototype,ds=cs.toString;function us(t){return ds.call(t)}var fs=us,Ar=Er,hs=ls,ps=fs,gs="[object Null]",ms="[object Undefined]",$r=Ar?Ar.toStringTag:void 0;function ys(t){return t==null?t===void 0?ms:gs:$r&&$r in Object(t)?hs(t):ps(t)}var ws=ys;function vs(t){return t!=null&&typeof t=="object"}var Cs=vs,Ss=ws,bs=Cs,xs="[object Symbol]";function Ts(t){return typeof t=="symbol"||bs(t)&&Ss(t)==xs}var Fs=Ts,Os=rs,Lr=kr,_s=Fs,Nr=0/0,Ds=/^[-+]0x[0-9a-f]+$/i,ks=/^0b[01]+$/i,Vs=/^0o[0-7]+$/i,Es=parseInt;function Ms(t){if(typeof t=="number")return t;if(_s(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=Os(t);var n=ks.test(t);return n||Vs.test(t)?Es(t.slice(2),n?2:8):Ds.test(t)?Nr:+t}var Is=Ms,As=kr,Gt=Jo,Pr=Is,$s="Expected a function",Ls=Math.max,Ns=Math.min;function Ps(t,r,n){var s,o,i,a,c,u,f=0,p=!1,d=!1,g=!0;if(typeof t!="function")throw new TypeError($s);r=Pr(r)||0,As(n)&&(p=!!n.leading,d="maxWait"in n,i=d?Ls(Pr(n.maxWait)||0,r):i,g="trailing"in n?!!n.trailing:g);function y(D){var N=s,S=o;return s=o=void 0,f=D,a=t.apply(S,N),a}function m(D){return f=D,c=setTimeout(v,r),p?y(D):a}function w(D){var N=D-u,S=D-f,x=r-N;return d?Ns(x,i-S):x}function C(D){var N=D-u,S=D-f;return u===void 0||N>=r||N<0||d&&S>=i}function v(){var D=Gt();if(C(D))return V(D);c=setTimeout(v,w(D))}function V(D){return c=void 0,g&&s?y(D):(s=o=void 0,a)}function _(){c!==void 0&&clearTimeout(c),f=0,s=u=o=c=void 0}function b(){return c===void 0?a:V(Gt())}function E(){var D=Gt(),N=C(D);if(s=arguments,o=this,u=D,N){if(c===void 0)return m(u);if(d)return clearTimeout(c),c=setTimeout(v,r),y(u)}return c===void 0&&(c=setTimeout(v,r)),a}return E.cancel=_,E.flush=b,E}var Bs=Ps;function Hs(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 no.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=qe(s);return o?e.jsx(o,{}):e.jsx(me,{required:n,...t,children:e.jsx(Ks,{ooui:r})})},Ks=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o}=r,i=l.useRef(null),{t:a}=l.useContext(ge),c=d=>{s==null||s(d)};async function u(){const d=await nt(n),g=`data:${d==null?void 0:d.mime};base64,${n}`,y=document.createElement("a");y.href=g,y.download=`image.${d==null?void 0:d.ext}`,y.click()}async function f(d){d.stopPropagation(),d.preventDefault();const g=d.target.files[0],y=await Br(g);c(y)}function p(){c(void 0)}return e.jsxs(e.Fragment,{children:[e.jsxs(h.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:f})]}),e.jsx(h.Row,{gutter:8,wrap:!1,justify:"center",className:"pt-5",children:e.jsxs(h.Space,{children:[e.jsx(Le,{tooltip:a("uploadNewImage"),icon:e.jsx(B.FolderOpenOutlined,{}),disabled:o,onClick:()=>{i.current.click()}}),e.jsx(Le,{tooltip:a("download"),disabled:!n,onClick:u,icon:e.jsx(B.DownloadOutlined,{})}),e.jsx(Le,{tooltip:a("clear"),disabled:o||!n,onClick:p,icon:e.jsx(B.ClearOutlined,{})})]})})]})},Ws=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(qs,{})})},qs=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(oo.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},Ys=(t,r,n)=>t.columns.map(o=>{const i=o.type,a=o.id,c=r==null?void 0:r[i];let u;return c&&(u=f=>c(f,a,o,n)),{key:a,dataIndex:a,title:o.label,render:u,sorter:(f,p)=>{var y,m;let d=f[a]||"",g=p[a]||"";return i==="many2one"&&(d=((y=f[a])==null?void 0:y.value)||"",g=((m=p[a])==null?void 0:m.value)||""),d<g?-1:d>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=(u,f)=>{var g,y;let p=u[s]||"",d=f[s]||"";return a==="many2one"&&(p=((g=u[s])==null?void 0:g[1])||"",d=((y=f[s])==null?void 0:y[1])||""),p===d?0:i==="ascend"?p>d?1:-1:p<d?1:-1};return t.sort(c)}const Ut=async t=>{var m;const{items:r,model:n,formView:s,treeView:o,context:i,currentView:a={}}=t,c=r.filter(w=>w.operation!=="original"),u=r.filter(w=>w.operation==="original").map(w=>w.id),f={form:s.fields,tree:o.fields};let p=[],d;if(a==="tree"&&(o==null?void 0:o.arch)){const w=(m=ot(o))==null?void 0:m.colors,C=await W.getHandler().readEvalUiObjects({model:n,ids:u,arch:o==null?void 0:o.arch,fields:o.fields,context:i,attrs:w&&{colors:w}});p=C[0],d=Ft(C[1])}else p=await W.getHandler().readObjects({model:n,ids:u,fields:f[a],context:i});const g=p.map(w=>{const C={};return Object.keys(w).forEach(v=>{(f[a].hasOwnProperty(v)||v==="id")&&(C[v]=w[v])}),C});return[r.map(w=>{const C=g.find(V=>V.id===w.id),v={...w};return a==="form"?v.values=C:a==="tree"&&(v.treeValues=C),v}).concat(c),d]},Gs=t=>{const r=t.filter(n=>n.id&&n.id<0).map(n=>n.id);return r.length===0?-1:Math.min(...r)-1},Us=(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},js=t=>{const{ooui:r}=t,{relation:n,context:s,views:o}=r,[i,a]=l.useState(!0),[c,u]=l.useState(),[f,p]=l.useState(new Map),d=l.useContext(_e),{getContext:g}=d||{};Qe.default(()=>{m()},[r]);const y=async w=>o&&o[w]?o[w]:await W.getHandler().getView({model:n,type:w,context:{...g==null?void 0:g(),...s}}),m=async()=>{a(!0),u(void 0);try{const w=await y("form"),C=await y("tree");f.set("form",w),f.set("tree",C),p(f)}catch(w){u(w)}finally{a(!1)}};return i?e.jsx(h.Spin,{}):c?e.jsx(h.Alert,{className:"mt-10",message:c,type:"error",banner:!0}):e.jsx(me,{type:"array",...t,children:e.jsx(zs,{ooui:r,views:f})})},zs=t=>{const{value:r,views:n,ooui:s,onChange:o}=t,{items:i=[]}=r||{},[a,c]=l.useState(!1),[u,f]=l.useState(),[p,d]=l.useState(!1),[g,y]=l.useState(),{relation:m,context:w,readOnly:C,summaryField:v,titleField:V}=s,_=i.filter(S=>S.values),b=l.useContext(_e),{getContext:E}=b||{};Qe.default(()=>{N()},[i]);const D=S=>{o==null||o({items:S})};async function N(){c(!0),f(void 0);try{const[S]=await Ut({treeView:{fields:n.get("tree").fields,arch:n.get("tree").arch},formView:{fields:n.get("form").fields},model:m,items:i,context:{...E==null?void 0:E(),...w},currentView:"form"});D(S)}catch(S){f(S)}finally{c(!1)}}return u?e.jsx(h.Alert,{className:"mt-10",message:u,type:"error",banner:!0}):a?e.jsx(h.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(h.Timeline,{style:{padding:"1rem"},children:_.map((S,x)=>{var O,T;return e.jsx("div",{children:e.jsxs(h.Timeline.Item,{children:[e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{y(_.find(H=>S.id===H.id)),d(!0)},children:e.jsx("strong",{children:(O=S.values)==null?void 0:O[V]})}),e.jsx("br",{}),e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{y(_.find(H=>S.id===H.id)),d(!0)},children:(T=S.values)==null?void 0:T[v]})]},x)},x)})}),e.jsx(dt,{formView:n.get("form"),model:m,id:g==null?void 0:g.id,values:g==null?void 0:g.values,defaultValues:g==null?void 0:g.defaultValues,visible:p,onSubmitSucceed:()=>{d(!1)},parentContext:{...E==null?void 0:E(),...w},onCancel:()=>{d(!1)},readOnly:C,postSaveAction:N})]})},{useToken:Js}=h.theme,Zs=t=>{const{ooui:r}=t;return e.jsx(me,{ooui:r,children:e.jsx(Xs,{ooui:r})})},Xs=t=>{const{token:r}=Js(),{ooui:n,value:s}=t,o=e.jsxs(e.Fragment,{children:[e.jsxs("span",{children:[n.label," "]}),n.tooltip&&e.jsx(h.Tooltip,{title:n.tooltip,children:e.jsx(B.QuestionCircleOutlined,{className:"pr-1 text-xs",style:{color:r.colorPrimaryBg}})})]}),i=qe(n.icon);let a=s;n.selectionValues.size?a=n.selectionValues.get(s):Array.isArray(s)&&(a=s[1]);const c=e.jsx(h.Statistic,{title:o,prefix:i&&e.jsx(i,{}),suffix:n.suffix,value:a});return n.card?e.jsx(h.Card,{children:c}):c},Qs=(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)=>Qs(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 u=JSON.stringify(t[o]),f=JSON.stringify(r[o]);if(u===f)return;(((c=(a=r[o])==null?void 0:a.items)==null?void 0:c.filter(d=>d.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 u=JSON.stringify(t[o]),f=JSON.stringify(r[o]);u!==f&&(s[o]=r[o])}else{const u=t[o],[f]=r[o];u!==f&&(s[o]=r[o])}else{const u=JSON.stringify(t[o]),f=JSON.stringify(r[o]);u!==f&&(s[o]=r[o])}else t[o]!==r[o]&&(r[o]===void 0?s[o]=null:s[o]=r[o])}),s},Rs=({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),ei=({fieldsDomain:t,fields:r})=>{const n={};return Object.keys(r).forEach(s=>{n[s]=r[s],t[s]&&(n[s].domain=t[s])}),n},ti=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)},ri=({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},zt=t=>{let r=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},Yr=t=>{const{ooui:r}=t;return e.jsx(me,{type:"array",...t,children:e.jsx(ni,{ooui:r})})},ni=t=>{const{value:r,ooui:n,onChange:s}=t,{items:o=[]}=r||{},i=o.filter(D=>D.operation!=="pendingRemove").map(D=>D.id),[a,c]=l.useState([]),[u,f]=l.useState(),[p,d]=l.useState(!1),{relation:g,context:y,readOnly:m,field:w}=n,C=l.useContext(_e),{getContext:v}=C||{};Qe.default(()=>{_()},[o]);const V=D=>{s==null||s({items:D})};async function _(){d(!0);let D=[];try{if(m&&(D=[["id","in",i]]),n.domain){const x=await W.getHandler().evalDomain({domain:n.domain,values:at({fields:C==null?void 0:C.getFields(),values:C.getPlainValues()}),fields:C==null?void 0:C.getFields(),context:C.getContext()});D=[...D,...x]}const S=(await W.getHandler().search({model:g,params:D,fields:[w],context:{...v==null?void 0:v(),...y}})).map(x=>{const O=x[w];let T=O;return Array.isArray(O)&&(T=O[1]),{label:T,value:x.id}});c(S)}catch(N){f(N)}finally{d(!1)}}const b=D=>{const N=o.map(x=>D.includes(x.id)?x.operation=="pendingRemove"?{...x,operation:"pendingLink"}:x:{id:x.id,operation:"pendingRemove"}),S=N.map(x=>x.id);D.filter(x=>!S.includes(x)).map(x=>{N.push({id:x,operation:"pendingLink"})}),V(N)},E=D=>{const{label:N,closable:S,onClose:x}=D,O=T=>{T.preventDefault(),T.stopPropagation()};return e.jsx(h.Tag,{color:zt(N),onMouseDown:O,style:{margin:"5px"},closable:S,onClose:x,children:N})};return u?e.jsx(h.Alert,{className:"mt-10",message:u,type:"error",banner:!0}):e.jsx(e.Fragment,{children:e.jsx("div",{className:"flex flex-row",children:e.jsx(h.Select,{mode:"multiple",value:a.length?i:[],tagRender:E,bordered:!m,disabled:m,options:a,onChange:b,loading:p})})})},oi=t=>{switch(t){case"form":return ct;case"tree":return Ct;case"notebook":return vn;case"group":return rr;case"label":return gt;case"char":return qt;case"text":return Cn;case"button":return Wt;case"buttonGroup":return br;case"selection":return Yt;case"many2one":return dn;case"boolean":return Dr;case"integer":return vt;case"float":return Zt;case"progressbar":return Rr;case"date":return Fn;case"datetime":return On;case"one2many":case"one2many_list":case"many2many":return yn;case"separator":return Sn;case"reference":return _n;case"binary":return Dn;case"image":return Hr;case"url":return An;case"email":return $n;case"float_time":return wn;case"fiber_grid":return Ws;case"timeline":return js;case"indicator":return Zs;case"tags":return Yr;case"tag":return Wn;case"multicheckbox":return qn;case"markdown":return Yn;case"radio":return Gn;case"switch":return Un;case"steps":return jn;case"codeeditor":return zn;default:return}},si=t=>{const{ooui:r}=t,{type:n}=r,s=oi(n);return s?Pe.default.createElement(s,t):null},ii=({item:t,responsiveBehaviour:r})=>({gridColumnStart:"span "+(r?1:t.colspan)}),ai=({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 u=n-o;a.colspan=a.colspan+u,o+=u}if(s.push(a),i(c)){const u=n-o;for(let f=0;f<u;f+=1)s.push(new se.Label({string:""}))}}),s},li=({row:t,numberOfColumns:r})=>t.map(n=>(n._mustExpand&&(n.colspan=r),n)),ci=(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(" ")},di=(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},ui=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=ui(s);i<o&&(o=i);let a=!1,c=[];const u=s.map((d,g)=>{const y=d.filter(C=>!C.invisible),m=li({row:y,numberOfColumns:o});let w=m;return(g===0||!(d.length===1&&d.some(C=>C.type==="group")))&&(w=ai({row:m,numberOfColumns:o,mustFillWithEmpties:n}),c=c.concat(w)),w.map(C=>(C instanceof se.Label&&C.fieldForLabel&&(a=!0),e.jsx("div",{style:{...ii({item:C,responsiveBehaviour:n}),minWidth:0},children:si({ooui:C,responsiveBehaviour:n})},C.key)))}),f=s.length===1?ci(c,o):di(o,a),p={display:"grid",gridTemplateColumns:n?"auto":f,gap:"1rem",minHeight:0,minWidth:0};return e.jsx("div",{style:p,children:u})},{confirm:fi}=h.Modal,yt=({onOk:t,onCancel:r,lang:n})=>{fi({title:be("unsavedChanges",n),icon:e.jsx(B.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmCloseWithoutSave",n),okText:be("closeWithoutSaving",n),onOk:t,onCancel:r,cancelText:be("cancel",n)})},{error:hi}=h.Modal,Gr=t=>{hi({title:be("formHasErrors",t),icon:e.jsx(B.ExclamationCircleOutlined,{}),centered:!0,content:be("fillRequiredFields",t)})},{warning:pi}=h.Modal,gi=(t,r,n)=>{pi({title:t,icon:e.jsx(B.WarningOutlined,{}),centered:!0,content:r,onOk:n})},Ur=Pe.default.createContext(null),mi=t=>{const{children:r,setTitle:n}=t;return e.jsx(Ur.Provider,{value:{setTitle:n},children:r})},jr=t=>typeof t=="string"&&t==="true"||t==="false"?t==="true":t,yi=(t,r)=>{const n=xi(t),s=Si(n),o=bi(s,r);return[...Object.keys(o).map(c=>wi(c,o[c],r))].reduce((c,u)=>Array.isArray(u[0])?c.concat(u):[...c,u],[])},wi=(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)]},vi=t=>Object.keys(t).filter(r=>r.indexOf("#date")!==-1),Ci=t=>{const r={...t};return Object.keys(r).forEach(n=>(n.indexOf("#time")!==-1||n.indexOf("#date")!==-1)&&delete r[n]),r},Si=t=>{const r={...Ci(t)};return vi(t).forEach(s=>{const o=t[s],i=s.split("#")[0],a=i+"#time",c=t[a];let u,f;if(o[0]!==null&&(u=o[0].format("YYYY-MM-DD"),c&&c[0]!==null)){const d=c[0].format("HH:mm:ss");u=u+" "+d}if(o[1]!==null&&(f=o[1].format("YYYY-MM-DD"),c&&c[1]!==null)){const d=c[1].format("HH:mm:ss");f=f+" "+d}r[i+"#datetime"]=[u,f]}),r},bi=(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},xi=t=>{const r={...t};return Object.keys(r).forEach(n=>(r[n]===void 0||r[n]===null||r[n]==="")&&delete r[n]),r},Ti=t=>{const r={};return t.forEach(n=>{Array.isArray(n)&&n[0]?r[n[0]]=!0:r[n]=!0}),Object.keys(r)},Ot=(t,r)=>{const n=[...t],s=Ti(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:u,context:f,setActionViewTotalItems:p,treeView:d,formView:g,sorter:y,setSorter:m,setCurrentItemIndex:w,setResultsActionView:C,resultsActionView:v,domain:V,currentId:_,limit:b,setLimit:E,searchParams:D=[],setSearchValues:N}=t,[S,x]=l.useState(!1),[O,T]=l.useState(!1),[H,F]=l.useState(),[A,M]=l.useState(1),[L,k]=l.useState(0),[I,K]=l.useState(),[q,z]=l.useState([]),[Y,Z]=l.useState(void 0),J=l.useRef(b||wt),$=l.useRef([]),P=l.useCallback(oe=>{C==null||C([...oe]),z([...oe])},[]),ee=l.useCallback(()=>v||q,[v,q]),le=l.useCallback(async()=>{const oe=await W.getHandler().nameSearch({model:r,payload:c,limit:J.current,attrs:V,context:f});if(K(oe.length),p==null||p(oe.length),oe.length>0){const Se=oe.map(Me=>Me==null?void 0:Me[0]),{colors:ye}=ot(d),xe=await W.getHandler().readEvalUiObjects({model:r,ids:Se,arch:d==null?void 0:d.arch,fields:d.field_parent?{...d.fields,[d.field_parent]:{}}:d.fields,context:f,attrs:ye&&{colors:ye}}),Ee=xe[0];$.current=[...Ee],Z(Ft(xe[1]));const ke=Ee.map(Me=>Me.id),He=y!==void 0?st({resultsToSort:Ee,sorter:y,fields:{...d.fields,...g.fields}}):[...$.current];P(He),ke.length>0?w==null||w(0):w==null||w(void 0)}else P([]),w==null||w(void 0);u.current=!0},[P,u,c,r,f,V,d,g,y,w,p]),ce=l.useCallback(async oe=>{const{params:Se,newOffset:ye}=oe||{},xe=Ot(Se||D,V),{colors:Ee}=ot(d),{totalItems:ke,results:He,attrsEvaluated:Me}=await W.getHandler().searchForTree({params:xe,limit:J.current,offset:ye||L,model:r,fields:d.field_parent?{...d.fields,[d.field_parent]:{}}:d.fields,context:f,attrs:Ee&&{colors:Ee}});Z(Ft(Me)),$.current=[...He];const R=y!==void 0?st({resultsToSort:He,sorter:y,fields:{...d.fields,...g.fields}}):[...$.current];if(P(R),v&&R.length>0){const he=R.findIndex(Oe=>_===Oe.id);he===-1?w==null||w(0):w==null||w(he)}else w==null||w(void 0);const ae=await ke;K(ae),p==null||p(ae)},[w,v,P,_,r,f,V,d,g,y,p,b,L,D]),re=l.useCallback(async oe=>{try{x(!0),a==null||a(!0),c&&!u.current?await le():await ce(oe)}catch(Se){F(Se.message)}finally{x(!1),T(!1),a==null||a(!1)}},[f,_,V,g,b,r,c,L,v,u,p,w,P,F,T,x,a,y,d]),X=l.useCallback(oe=>{m==null||m(oe);const Se=oe!==void 0?st({resultsToSort:ee(),sorter:oe,fields:{...d.fields,...g.fields}}):[...$.current];P(Se)},[m,ee,d,g,P]),we=l.useCallback(oe=>{const{params:Se,searchValues:ye,limit:xe,offset:Ee}=oe;S||(n==null||n(void 0),s==null||s([]),N==null||N(ye),o==null||o(Se),i==null||i(!1),T(!0),F(void 0),M(1),xe&&(J.current=xe,E==null||E(xe)),Ee&&k(Ee),re({params:Se,newOffset:Ee}))},[S,n,s,o,i,T,F,M,E,k,re]),Ce=l.useCallback(oe=>{x(!0),M(oe),k((oe-1)*b)},[x,b,k,M]),Ve=l.useCallback(()=>{S||(n==null||n(void 0),o==null||o([]),N==null||N({}),F(void 0),k(0),M(1),E==null||E(b||wt))},[S,n,o,F,k,M,E,b]),fe=l.useCallback(async oe=>{const Se=oe[(d==null?void 0:d.field_parent)||"child_id"],ye=await W.getHandler().readObjects({model:r,ids:Se,fields:d.field_parent?{...d.fields,[d.field_parent]:{}}:d.fields,context:f});return P([...ee(),...ye]),Kr(ot(d),ye)},[d,r,f,ee,P]);return{submit:we,clear:Ve,fetchResults:re,tableRefreshing:S,searchFilterLoading:O,searchError:H,page:A,offset:L,limit:b,getResults:ee,requestPageChange:Ce,changeSort:X,fetchChildrenForRecord:fe,colorsForResults:Y,totalItems:I}},Be=Pe.default.createContext(null),Fi=t=>{const{children:r,currentView:n,title:s,setCurrentView:o,availableViews:i,formRef:a,searchTreeRef:c,onNewClicked:u,currentId:f,setCurrentId:p,setResults:d,results:g,currentItemIndex:y,setCurrentItemIndex:m,currentModel:w,sorter:C,setSorter:v,totalItems:V,setTotalItems:_,setSelectedRowItems:b,selectedRowItems:E,searchTreeNameSearch:D,setSearchTreeNameSearch:N,goToResourceId:S,limit:x}=t,[O,T]=l.useState(!1),[H,F]=l.useState(!1),[A,M]=l.useState(!1),[L,k]=l.useState(!0),[I,K]=l.useState(!0),[q,z]=l.useState([]),[Y,Z]=l.useState(!1),[J,$]=l.useState([]),[P,ee]=l.useState(!1),[le,ce]=l.useState(!0),[re,X]=l.useState(),[we,Ce]=l.useState({}),[Ve,fe]=l.useState(x!==void 0?x:wt),[oe,Se]=l.useState(s);l.useEffect(()=>{g&&g.length>0&&!y&&(m==null||m(0),p==null||p(g[0].id))},[g]),l.useEffect(()=>{fe(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(()=>{(re==null?void 0:re.view_id)===n.view_id&&i.length>1&&X(i.filter(xe=>xe.view_id!==n.view_id)[0])},[n]);const ye=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:H,setFormHasChanges:F,formRef:a,searchTreeRef:c,onFormSave:ye,onNewClicked:u,currentId:f,setCurrentId:p,currentItemIndex:y,setCurrentItemIndex:m,results:g,setResults:d,currentModel:w,removingItem:A,setRemovingItem:M,formIsLoading:L,setFormIsLoading:k,treeIsLoading:I,setTreeIsLoading:K,attachments:q,setAttachments:z,selectedRowItems:E,setSelectedRowItems:b,duplicatingItem:Y,setDuplicatingItem:Z,setSearchParams:$,searchParams:J,searchVisible:P,setSearchVisible:ee,sorter:C,setSorter:v,totalItems:V,setTotalItems:_,searchTreeNameSearch:D,setSearchTreeNameSearch:N,setGraphIsLoading:ce,graphIsLoading:le,previousView:re,setPreviousView:X,goToResourceId:S,searchValues:we,setSearchValues:Ce,limit:Ve,setLimit:fe,setTitle:Se},children:r})},Ye=Pe.default.createContext(null),Oi=t=>{const{children:r,openAction:n,openRelate:s,openDefaultActionForModel:o,openShortcut:i,activeKey:a,onChangeTab:c,onRemoveTab:u,tabs:f}=t,[p,d]=l.useState(),[g,y]=l.useState();return e.jsx(Ye.Provider,{value:{openAction:n,openRelate:s,openDefaultActionForModel:o,activeKey:a,openShortcut:i,onChangeTab:c,onRemoveTab:u,tabs:f,currentId:g,currentView:p,setCurrentId:y,setCurrentView:d},children:r})},lt=Pe.default.createContext(null),Jr=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))},_i=(t,r)=>{const{children:n,globalValues:s={}}=t,o=l.useRef(),i=l.useRef(),[a,c]=l.useState(!1),u=l.useContext(Ye),{openAction:f}=u||{},p=l.useRef([]),{t:d}=l.useContext(ge);l.useImperativeHandle(r,()=>({openActionModal:b}));const[g,y]=l.useState(!1),[m,w]=l.useState({context:{}});async function C(N){const{reportData:S,fields:x,values:O,context:T={}}=N,{context:H,model:F,datas:A={},report_name:M,type:L}=S;if(L!=="ir.actions.report.xml"){Ie(`${L} action not supported`);return}const{ids:k}=A||{};let I=k||[];const K=typeof H=="string"?se.parseContext({context:H,fields:x,values:O}):H;try{const q=await W.getHandler().createReport({model:F,name:M,datas:A,ids:I,context:{...T,...K}});c(!0),i.current=!0,o.current=setInterval(()=>{v(q)},1e3)}catch(q){i.current=!1,clearInterval(o.current),Ie(q),c(!1)}}async function v(N){let S;try{if(S=await W.getHandler().getReport({id:N}),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),Ie(x.exception||x)}}async function V({actionData:N,fields:S,values:x,context:O,onRefreshParentValues:T}){const{type:H}=N;return p.current.push(T),H==="ir.actions.report.xml"?await C({reportData:N,fields:S,values:x,context:O}):H==="ir.actions.act_window"?await _({actionData:N,fields:S,values:x,context:O}):(Ie(`${H} action not supported`),{})}async function _({actionData:N,fields:S={},values:x={},context:O={}}){var M;let T=N;N.res_model||(T=(await W.getHandler().readObjects({model:"ir.actions.act_window",ids:[parseInt(N.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 A=[];if(T.domain&&(A=await W.getHandler().evalDomain({domain:T.domain,values:at({fields:S,values:{...x,...s}}),fields:S,context:F})),T.target==="new"){const L=await W.getHandler().getView({model:T.res_model,type:"form",id:((M=T==null?void 0:T.view_id)==null?void 0:M[0])||void 0,context:F});return b({domain:A,model:T.res_model,formView:L,context:F}),{}}else{const{initialView:L,views:k}=await Di({model:T.res_model,context:F,view_mode:T.view_mode,views:T.views});return f==null||f({target:"current",context:F,domain:A,model:T.res_model,views:k,title:T.name,initialView:L,action_id:T.id,action_type:T.type}),{closeParent:!0}}}function b({domain:N,model:S,formView:x,context:O,actionData:T}){g?E({domain:N,model:S,formView:x,context:O,actionData:T}):(w({domain:N,model:S,context:O,formView:x,actionData:T}),y(!0))}async function E({domain:N,model:S,formView:x,context:O,actionData:T}){w({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0}),y(!1),await new Promise(H=>setTimeout(H,300)),w({domain:N,model:S,context:O,formView:x,actionData:T}),y(!0)}async function D(){Jr(p.current),p.current=[],y(!1),w({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:V,globalValues:s},children:e.jsxs(e.Fragment,{children:[n,e.jsx(h.Modal,{title:d("generatingReport"),open:a,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(h.Spin,{})}),e.jsx(dt,{buttonModal:!0,parentContext:m.context,model:m.model,formView:m.formView,visible:g,onSubmitSucceed:D,onCancel:()=>{Jr(p.current),p.current=[],y(!1),w({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0})},showFooter:!1,actionDomain:m.domain,isMenuAction:(m==null?void 0:m.actionData)!==void 0,actionData:m==null?void 0:m.actionData})]})})})};async function Di({views:t,view_mode:r,model:n,context:s,view_id:o}){const i=[];let a;if(t)for(const c of t){const u=await W.getHandler().getView({model:n,type:c[1],id:c[0],context:s});i.push([u.view_id,c[1]])}else{const c=r.split(",");for(const u of c){const f=await W.getHandler().getView({model:n,type:u,context:s});i.push([f.view_id,u])}}if(t&&t.length>0){const[c,u]=t[0];a={id:c,type:u}}else if(o)a={id:o,type:r.split(",")[0]};else{const c=r.split(",")[0],[u]=i.find(([f,p])=>p===c);a={id:u,type:c}}return{views:i,initialView:a}}const Zr=l.forwardRef(_i),ki=({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(Pt.Interweave,{content:`${a}<br />${o}`}),s=i}else n=t.message?JSON.stringify(t.message):JSON.stringify(t);return e.jsx(h.Alert,{className:r,message:n,type:s,banner:!0})},Vi=800;function Ei(t,r){const{model:n,id:s,onCancel:o,onSubmitSucceed:i,showFooter:a=!1,getDataFromAction:c=!1,onFieldsChange:u,onSubmitError:f,readOnly:p=!1,mustClearAfterSave:d=!1,submitMode:g="api",values:w,formView:m,postSaveAction:y,insideButtonModal:C=!1,parentContext:v={},actionDomain:V,visible:_=!0,rootForm:b=!1,defaultValues:E,forcedValues:D={}}=t,{t:N,lang:S}=l.useContext(ge),[x,O]=l.useState(!1),[T,H]=l.useState(),[F,A]=l.useState(),[M]=h.Form.useForm(),[L,k]=l.useState(),[I,K]=l.useState(),q=l.useContext(Ur),[z,Y]=l.useState(),[Z,J]=l.useState(!1),$=l.useRef(),P=l.useRef({}),ee=l.useRef({}),le=l.useRef(!1),ce=l.useRef(!1),re=z<Vi,X=l.useContext(_e),{activeId:we,getPlainValues:Ce}=X||{},Ve=l.useContext(Be),{setFormIsSaving:fe=void 0,setFormHasChanges:oe=void 0,setCurrentId:Se=void 0,setFormIsLoading:ye=void 0,setAttachments:xe=void 0,title:Ee=void 0,setTitle:ke=void 0}=(b?Ve:{})||{},He=l.useContext(lt),{processAction:Me,globalValues:R}=He||{};l.useImperativeHandle(r,()=>({submitForm:Lt,getFields:Ae,getValues:De,getPlainValues:Ze,getContext:Ge,fetchValues:je,cancelUnsavedChanges:Qe,clearAndReload:()=>{$.current=void 0,A(void 0),Ue()}})),l.useEffect(()=>{if(H(void 0),!(!n&&!m)){if(!_){$.current=void 0,A(void 0);return}(s===void 0&&I||s!==void 0&&I&&s<0)&&($.current=void 0,A(void 0)),Ue()}},[s,n,w,m,_]),l.useEffect(()=>{Z&&(dr({elementHasLostFocus:!0}),J(!1))},[Z]);const ae=(j,U,te)=>{oe==null||oe(!1),fe==null||fe(!1),i==null||i(j,U,te),Se==null||Se(j)},he=()=>{fe==null||fe(!1),o==null||o()},Oe=j=>{fe==null||fe(!1),f==null||f(j)};function ue(){return s||$.current}function Ae(){return I}function De(){const j={...ie(I),...Q()};for(const U in j)j[U]===void 0&&delete j[U];return j}function Ze(){const j=De(),U=Ae();let te={};return Object.keys(j).forEach(ne=>{const Fe=j[ne];U[ne]&&U[ne].type==="many2one"&&Fe&&Array.isArray(Fe)&&Fe.length===2?te[ne]=Fe[0]:U[ne]&&(U[ne].type==="one2many"||U[ne].type==="many2many")&&Fe&&Fe.items?te[ne]=Fe.items.filter(tt=>tt.operation!=="pendingRemove").map(tt=>tt.id):te[ne]=Fe}),te}function Ke(){const j={...ie(I)};for(const U in j)j[U]===void 0&&delete j[U];return j}function Ge(){return{...v,...F==null?void 0:F.context}}function Q(){return{id:ue(),active_id:ue(),active_ids:[ue()],parent_id:we,...R}}const de=async j=>{const U=ue()?F==null?void 0:F.context:{};return await W.getHandler().defaultGet({model:n,fields:j,context:{...v,...U},extraValues:E})},Te=()=>Object.keys(jt({source:P.current,target:ie(I),fields:I})).length!==0,ie=j=>{const U=M.getFieldsValue(!0);return it(U,j)},ve=(j,U)=>{$t({values:{...it(M.getFieldsValue(!0),I),[j]:U},fields:I,reset:!1})},pe=j=>M.getFieldsValue(!0)[j];async function $e(){try{return await M.validateFields(),!1}catch{return h.message.error(N("fillRequiredFields")),!0}}const Ue=async()=>{H(void 0),ye==null||ye(!0);let j;try{m?j={arch:m.arch,fields:m.fields}:j=await rc();const{fields:U,arch:te}=j;K(U),k(te),await je({fields:U,arch:te})}catch(U){H(U!=null&&U.message?U.message+U.stack:U),ye==null||ye(!1)}},je=async j=>{let U,te,ne,Fe;ye==null||ye(!0),H(void 0),j?(te=j.fields,ne=j.arch):(te=I,ne=L),w?U=w:{values:U,defaultGetCalled:Fe}=await nc({fields:te,arch:ne}),V&&(U={...ti(V),...U}),P.current=it(U,te),$t({values:U,fields:te,reset:!0,isDefaultGet:Fe}),Nt({fields:te,arch:ne,values:U}),ye==null||ye(!1),oe==null||oe(!1),Fe&&J(!0)},Qe=async()=>new Promise(async j=>{Te()?yt({lang:S,onOk:()=>{he==null||he(),j(!0)},onCancel:()=>{j(!1)}}):(he==null||he(),j(!0))}),rc=async()=>{if(c){const j=await W.getHandler().getActionStringForModel(n);return(await W.getHandler().getViewsForAction({action:j,context:v})).views.get("form")}return await W.getHandler().getView({model:n,type:"form",context:v})},$t=({values:j,fields:U,reset:te,isDefaultGet:ne=!1})=>{const tt={...te?{}:M.getFieldsValue(!0),...j},ur=it(tt,U),mc=Object.keys(U).map(fr=>{const yc=ur[fr]!==void 0?ur[fr]:void 0;return{name:fr,touched:!1,value:yc}});ne||(ee.current=ur),M.setFields(mc)},nc=async({fields:j,arch:U})=>{let te={},ne=!1;if(ue()){te=(await W.getHandler().readObjects({model:n,ids:[ue()],fields:j,context:v}))[0];const Fe=await W.getHandler().search({params:[["res_model","=",n],["res_id","=",ue()]],fields:["id","name"],context:Ge(),model:"ir.attachment"});xe==null||xe(Fe)}else xe==null||xe([]),te=await de(j),ne=!0;return{values:te,defaultGetCalled:ne}},oc=async j=>{const{callOnSubmitSucceed:U=!0}=j||{};if(ue()){const te=jt({source:P.current,target:ie(I),fields:I});await W.getHandler().update({model:n,id:ue(),values:{...te,...D},fields:I,context:{...v,...F==null?void 0:F.context}}),P.current=ie(I)}else{const te=ie(I),ne=await W.getHandler().create({model:n,values:{...te,...D},fields:I,context:{...v,...F==null?void 0:F.context}});$.current=ne,P.current=te}y&&await y([ue()]),!C&&U&&(ae==null||ae(ue(),De(),Ke()))},sc=async j=>{const{callOnSubmitSucceed:U=!0}=j||{};!C&&U&&(ae==null||ae(ue(),De(),Ke()))},Lt=async j=>{let U=!1;const{callOnSubmitSucceed:te=!0}=j||{};if(ce.current=!0,H(void 0),!Te()&&ue()&&te)return ce.current=!1,oe==null||oe(!1),he==null||he(),{succeed:!0,id:ue()};if(await $e())return ce.current=!1,Gr(S),{succeed:!1,id:ue()};O(!0),fe==null||fe(!0);try{g==="api"?await oc(j):await sc(j),d&&($.current=void 0,$t({values:{},fields:I,reset:!0})),await je(),U=!0,h.message.success(N("savedRegisters"))}catch(ne){ce.current=!1,O(!1),fe==null||fe(!1),Oe==null||Oe(ne),h.message.error(N("errorWhileSavingForm")),H(ne!=null&&ne.message?ne.message:ne)}finally{ce.current=!1,fe==null||fe(!1),O(!1)}return{succeed:U,id:ue()}},Nt=({fields:j,arch:U,values:te})=>{var Fe;const ne=new se.Form(j);ne.parse(U,{readOnly:p,values:Us({...te,...Q()},j)}),A(ne),ne.string&&ne.string!==Ee&&(ke==null||ke(ne.string)),q&&ne.string&&((Fe=q.setTitle)==null||Fe.call(q,ne.string))},dr=async({elementHasLostFocus:j=!1})=>{if(ce.current)return;const U=jt({source:ee.current,target:ie(I),fields:I}),te=Object.keys(U);if(te.length!==0){if(Rs({changedFields:te,formOoui:F,types:["text","codeeditor","email","url","char","float","float_time","integer","many2one"]})&&j!==!0)return;{const ne=it(M.getFieldsValue(!0),I);ee.current=ne,u==null||u(ne),oe==null||oe(!0),ac(te)}}},ic=Bs(dr,100),ac=async j=>{try{for(let U=0;U<j.length;U+=1){const te=j[U];await lc(te)}}catch(U){Ie(U)}},lc=async j=>{const U=F==null?void 0:F.onChangeFields[j];if(!U){Nt({fields:I,arch:L,values:ie(I)});return}const te=ri({values:{...ie(I),context:{...v,...F==null?void 0:F.context}},parentValues:Ce==null?void 0:Ce(),onChangeFieldActionArgs:U.args}),ne=await W.getHandler().executeOnChange({model:n,action:U.method,ids:ue()?[ue()]:[],payload:te,fields:I});if(ne.value){const Fe={...ie(I),...ne.value};Nt({fields:I,arch:L,values:Fe}),$t({values:Fe,fields:I,reset:!1})}if(ne.warning&&ne.warning.title&&ne.warning.message&&!le.current){const{title:Fe,message:tt}=ne.warning;le.current=!0,gi(Fe,tt,()=>{le.current=!1})}if(ne.domain&&Object.keys(ne.domain).length>0){const Fe=ei({fieldsDomain:ne.domain,fields:I});Nt({fields:Fe,arch:L,values:ie(Fe)}),K(Fe)}};async function cc({action:j,context:U}){const te=await W.getHandler().execute({model:n,action:j,payload:[ue()],context:{...U,...F==null?void 0:F.context,...v}});if(typeof te=="object"&&te!==null&&Object.keys(te).length===0&&C)ae==null||ae(ue(),De(),Ke());else if(te.type&&te.type==="ir.actions.act_window_close")ae==null||ae(ue(),De(),Ke());else if(te.type){let ne={};te.context&&(ne=se.parseContext({context:te.context,fields:I,values:De()})),await Jn({actionData:te,context:{...U,...ne}})}else await je()}async function dc({action:j}){const U=await W.getHandler().executeWorkflow({model:n,action:j,payload:ue()});U.type&&U.type==="ir.actions.act_window_close"?ae==null||ae(ue(),De(),Ke()):await je()}async function uc({action:j,context:U}){const te=(await W.getHandler().readObjects({model:"ir.actions.actions",ids:[parseInt(j)],context:v}))[0];await Jn({actionData:te,context:U})}async function Jn({actionData:j,context:U}){const{closeParent:te}=await(Me==null?void 0:Me({actionData:j,fields:I,values:De(),context:{...v,...F==null?void 0:F.context,...U},onRefreshParentValues:()=>{je()}}))||{};!b&&te&&(ae==null||ae(ue(),De(),Ke()))}function fc(){dr({elementHasLostFocus:!0})}async function hc({type:j,action:U,context:te}){if(j==="cancel"){he==null||he();return}if(await $e()){Gr(S);return}try{(Te()||ue()===void 0)&&await Lt({callOnSubmitSucceed:!1}),j==="object"?await cc({action:U,context:te}):j==="workflow"?await dc({action:U}):j==="action"&&await uc({action:U,context:te})}catch(ne){Ie(ne)}}const pc=()=>!F&&!T?e.jsx(h.Spin,{}):!n&&!m||!_?null:e.jsx(e.Fragment,{children:e.jsx(xo,{getValues:De,getPlainValues:Ze,getFields:Ae,domain:V,activeId:s,activeModel:n,setFieldValue:ve,getFieldValue:pe,executeButtonAction:hc,getContext:Ge,submitForm:Lt,fetchValues:je,formHasChanges:Te,elementHasLostFocus:fc,children:e.jsx(h.Form,{form:M,onFieldsChange:()=>{ic({elementHasLostFocus:!1})},component:!1,children:F&&e.jsx(Jt,{container:F.container,responsiveBehaviour:re})})})}),gc=()=>e.jsxs(e.Fragment,{children:[e.jsx(h.Divider,{}),e.jsx(h.Row,{justify:"end",children:e.jsxs(h.Space,{children:[e.jsx(h.Button,{icon:e.jsx(B.CloseOutlined,{}),disabled:x,onClick:async()=>{await Qe()},children:"Cancel"}),e.jsx(h.Button,{disabled:x||p,loading:x,icon:e.jsx(B.CheckOutlined,{}),onClick:async()=>{await Lt()},type:"primary",children:"OK"})]})})]});return _?e.jsx(Ht.default,{bounds:!0,onResize:j=>{var U;Y((U=j.bounds)==null?void 0:U.width)},children:({measureRef:j})=>e.jsxs("div",{className:"pb-2",ref:j,children:[T&&e.jsx(ki,{className:"mt-5 mb-10",error:T}),pc(),a&&gc()]})}):null}const ct=l.forwardRef(Ei),dt=t=>{const{visible:r,id:n,title:s,buttonModal:o=!1,onCancel:i,isMenuAction:a=!1,actionData:c,...u}=t,{modalWidth:f}=xt(),[p,d]=l.useState(s),[g,w]=l.useState(!1),[m,y]=l.useState();l.useEffect(()=>{a&&C()},[c,a]);async function C(){const{action_id:_,res_id:b,action_type:E,view_id:D}=c,N=await W.getHandler().isShortcutFavorite({action_id:_,action_type:E,view_id:D,res_id:b||!1});w(N!==!1),N!==!1&&y(N)}async function v(){if(g&&m)await W.getHandler().removeFavourite({shortcut_id:m});else{const{action_id:_,res_id:b,action_type:E,view_id:D}=c;await W.getHandler().addFavourite({action_id:_,action_type:E,view_id:D,res_id:b||!1})}w(!g)}function V(){return e.jsxs(h.Row,{align:"middle",children:[e.jsx(h.Col,{children:e.jsx(h.Button,{type:g?"primary":"default",icon:g?e.jsx(B.StarFilled,{style:{color:"white"}}):e.jsx(B.StarOutlined,{}),style:{width:30},onClick:v})}),e.jsx(h.Col,{style:{paddingLeft:10},children:p})]})}return e.jsx(mi,{setTitle:d,children:e.jsx(h.Modal,{title:a?V():p,centered:!0,width:f,open:r,footer:null,destroyOnClose:!0,onCancel:i,maskClosable:!1,children:e.jsx(ct,{id:n,showFooter:!0,insideButtonModal:o,onCancel:i,...u})})})},Mi=t=>e.jsx(me,{...t,layout:"vertical",children:e.jsx(h.DatePicker.RangePicker,{allowEmpty:[!0,!0],format:"DD/MM/YYYY"})}),Ii=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(h.Row,{align:"bottom",className:"p-0",children:[e.jsx(h.Col,{className:"mr-2",children:e.jsx(me,{...t,ooui:i[0],showLabel:!1,children:e.jsx(h.DatePicker.RangePicker,{className:"w-60",allowEmpty:[!0,!0],format:"DD/MM/YYYY"})})}),e.jsx(h.Col,{children:e.jsx(me,{...t,ooui:i[1],showLabel:!1,children:e.jsx(h.TimePicker.RangePicker,{className:"w-60",allowEmpty:[!0,!0],format:"HH:mm"})})})]})]})},{useToken:Ai}=h.theme,Zt=t=>{const{ooui:r}=t,{id:n,decimalDigits:s,readOnly:o,required:i}=r,{token:a}=Ai(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,u=l.useContext(_e),{elementHasLostFocus:f}=u||{};return e.jsx(me,{required:i,type:"number",...t,children:e.jsx(h.InputNumber,{disabled:o,className:"w-full",style:c,id:n,precision:s,formatter:p=>`${p}`.replace(/[^0-9\.\-]+/g,""),defaultValue:0,decimalSeparator:".",onBlur:f})})},{useToken:$i}=h.theme,vt=t=>{const{ooui:r,onChange:n}=t,{id:s,readOnly:o,required:i}=r,{token:a}=$i(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,u=l.useContext(_e),{elementHasLostFocus:f}=u||{};return e.jsx(me,{required:i,type:"number",...t,children:e.jsx(h.InputNumber,{id:s,className:"w-full ",disabled:o,formatter:p=>`${p}`.replace(/[^0-9\-]+/g,""),onChange:p=>{const d=p;n==null||n(d)},defaultValue:0,onBlur:f,precision:0,style:c})})};function Li(t){const{ooui:r,showLabel:n}=t,{id:s,label:o,tooltip:i}=r,a=r instanceof se.Integer?vt:Zt,c=u=>e.jsx(a,{ooui:{...r,id:s+u,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(h.Row,{align:"bottom",className:"mt-0",wrap:!1,children:[e.jsx(h.Col,{children:c("#from")}),e.jsx(h.Col,{className:"pb-1",children:e.jsx("span",{className:"pl-2 pr-2 h-full",children:" - "})}),e.jsx(h.Col,{children:c("#to")})]})]})}const{defaultAlgorithm:Ni,defaultSeed:Pi}=h.theme,Bi=Ni(Pi),{Option:Hi}=h.Select,Ki=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(Wi,{...t})})},Wi=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,required:a}=r,c=Array.from(o.entries()),u=c&&c.length&&c.filter(d=>{const[g]=d;return s?!s.includes(g):!0}).map(d=>{const[g,w]=d;return e.jsx(Hi,{value:w,children:w},g)}),f=a&&!i?qi:h.Select;function p(d){const g=d.map(w=>{const m=c.find(([y,C])=>w===C);return m&&m[0]});if(g.length===0){n==null||n(void 0);return}n==null||n(g)}return e.jsx(f,{disabled:i,onChange:p,value:s==null?void 0:s.map(d=>o.get(d)),mode:"multiple",showArrow:!0,children:u})},qi=pt.default(h.Select)`
19
+ `)!==-1){const{message:o,type:i,title:a}=Tr(t);n=e.jsx(Pt.Interweave,{content:`${a}<br />${o}`}),s=i}else n=t.message?JSON.stringify(t.message):JSON.stringify(t);return e.jsx(h.Alert,{className:r,message:n,type:s,banner:!0})},Vi=800;function Ei(t,r){const{model:n,id:s,onCancel:o,onSubmitSucceed:i,showFooter:a=!1,getDataFromAction:c=!1,onFieldsChange:u,onSubmitError:f,readOnly:p=!1,mustClearAfterSave:d=!1,submitMode:g="api",values:y,formView:m,postSaveAction:w,insideButtonModal:C=!1,parentContext:v={},actionDomain:V,visible:_=!0,rootForm:b=!1,defaultValues:E,forcedValues:D={}}=t,{t:N,lang:S}=l.useContext(ge),[x,O]=l.useState(!1),[T,H]=l.useState(),[F,A]=l.useState(),[M]=h.Form.useForm(),[L,k]=l.useState(),[I,K]=l.useState(),q=l.useContext(Ur),[z,Y]=l.useState(),[Z,J]=l.useState(!1),$=l.useRef(),P=l.useRef({}),ee=l.useRef({}),le=l.useRef(!1),ce=l.useRef(!1),re=z<Vi,X=l.useContext(_e),{activeId:we,getPlainValues:Ce}=X||{},Ve=l.useContext(Be),{setFormIsSaving:fe=void 0,setFormHasChanges:oe=void 0,setCurrentId:Se=void 0,setFormIsLoading:ye=void 0,setAttachments:xe=void 0,title:Ee=void 0,setTitle:ke=void 0}=(b?Ve:{})||{},He=l.useContext(lt),{processAction:Me,globalValues:R}=He||{};l.useImperativeHandle(r,()=>({submitForm:Lt,getFields:Ae,getValues:De,getPlainValues:Ze,getContext:Ge,fetchValues:je,cancelUnsavedChanges:Xe,clearAndReload:()=>{$.current=void 0,A(void 0),Ue()}})),l.useEffect(()=>{if(H(void 0),!(!n&&!m)){if(!_){$.current=void 0,A(void 0);return}(s===void 0&&I||s!==void 0&&I&&s<0)&&($.current=void 0,A(void 0)),Ue()}},[s,n,y,m,_]),l.useEffect(()=>{Z&&(dr({elementHasLostFocus:!0}),J(!1))},[Z]);const ae=(j,U,te)=>{oe==null||oe(!1),fe==null||fe(!1),i==null||i(j,U,te),Se==null||Se(j)},he=()=>{fe==null||fe(!1),o==null||o()},Oe=j=>{fe==null||fe(!1),f==null||f(j)};function ue(){return s||$.current}function Ae(){return I}function De(){const j={...ie(I),...Q()};for(const U in j)j[U]===void 0&&delete j[U];return j}function Ze(){const j=De(),U=Ae();let te={};return Object.keys(j).forEach(ne=>{const Fe=j[ne];U[ne]&&U[ne].type==="many2one"&&Fe&&Array.isArray(Fe)&&Fe.length===2?te[ne]=Fe[0]:U[ne]&&(U[ne].type==="one2many"||U[ne].type==="many2many")&&Fe&&Fe.items?te[ne]=Fe.items.filter(tt=>tt.operation!=="pendingRemove").map(tt=>tt.id):te[ne]=Fe}),te}function Ke(){const j={...ie(I)};for(const U in j)j[U]===void 0&&delete j[U];return j}function Ge(){return{...v,...F==null?void 0:F.context}}function Q(){return{id:ue(),active_id:ue(),active_ids:[ue()],parent_id:we,...R}}const de=async j=>{const U=ue()?F==null?void 0:F.context:{};return await W.getHandler().defaultGet({model:n,fields:j,context:{...v,...U},extraValues:E})},Te=()=>Object.keys(jt({source:P.current,target:ie(I),fields:I})).length!==0,ie=j=>{const U=M.getFieldsValue(!0);return it(U,j)},ve=(j,U)=>{$t({values:{...it(M.getFieldsValue(!0),I),[j]:U},fields:I,reset:!1})},pe=j=>M.getFieldsValue(!0)[j];async function $e(){try{return await M.validateFields(),!1}catch{return h.message.error(N("fillRequiredFields")),!0}}const Ue=async()=>{H(void 0),ye==null||ye(!0);let j;try{m?j={arch:m.arch,fields:m.fields}:j=await rc();const{fields:U,arch:te}=j;K(U),k(te),await je({fields:U,arch:te})}catch(U){H(U!=null&&U.message?U.message+U.stack:U),ye==null||ye(!1)}},je=async j=>{let U,te,ne,Fe;ye==null||ye(!0),H(void 0),j?(te=j.fields,ne=j.arch):(te=I,ne=L),y?U=y:{values:U,defaultGetCalled:Fe}=await nc({fields:te,arch:ne}),V&&(U={...ti(V),...U}),P.current=it(U,te),$t({values:U,fields:te,reset:!0,isDefaultGet:Fe}),Nt({fields:te,arch:ne,values:U}),ye==null||ye(!1),oe==null||oe(!1),Fe&&J(!0)},Xe=async()=>new Promise(async j=>{Te()?yt({lang:S,onOk:()=>{he==null||he(),j(!0)},onCancel:()=>{j(!1)}}):(he==null||he(),j(!0))}),rc=async()=>{if(c){const j=await W.getHandler().getActionStringForModel(n);return(await W.getHandler().getViewsForAction({action:j,context:v})).views.get("form")}return await W.getHandler().getView({model:n,type:"form",context:v})},$t=({values:j,fields:U,reset:te,isDefaultGet:ne=!1})=>{const tt={...te?{}:M.getFieldsValue(!0),...j},ur=it(tt,U),mc=Object.keys(U).map(fr=>{const yc=ur[fr]!==void 0?ur[fr]:void 0;return{name:fr,touched:!1,value:yc}});ne||(ee.current=ur),M.setFields(mc)},nc=async({fields:j,arch:U})=>{let te={},ne=!1;if(ue()){te=(await W.getHandler().readObjects({model:n,ids:[ue()],fields:j,context:v}))[0];const Fe=await W.getHandler().search({params:[["res_model","=",n],["res_id","=",ue()]],fields:["id","name"],context:Ge(),model:"ir.attachment"});xe==null||xe(Fe)}else xe==null||xe([]),te=await de(j),ne=!0;return{values:te,defaultGetCalled:ne}},oc=async j=>{const{callOnSubmitSucceed:U=!0}=j||{};if(ue()){const te=jt({source:P.current,target:ie(I),fields:I});await W.getHandler().update({model:n,id:ue(),values:{...te,...D},fields:I,context:{...v,...F==null?void 0:F.context}}),P.current=ie(I)}else{const te=ie(I),ne=await W.getHandler().create({model:n,values:{...te,...D},fields:I,context:{...v,...F==null?void 0:F.context}});$.current=ne,P.current=te}w&&await w([ue()]),!C&&U&&(ae==null||ae(ue(),De(),Ke()))},sc=async j=>{const{callOnSubmitSucceed:U=!0}=j||{};!C&&U&&(ae==null||ae(ue(),De(),Ke()))},Lt=async j=>{let U=!1;const{callOnSubmitSucceed:te=!0}=j||{};if(ce.current=!0,H(void 0),!Te()&&ue()&&te)return ce.current=!1,oe==null||oe(!1),he==null||he(),{succeed:!0,id:ue()};if(await $e())return ce.current=!1,Gr(S),{succeed:!1,id:ue()};O(!0),fe==null||fe(!0);try{g==="api"?await oc(j):await sc(j),d&&($.current=void 0,$t({values:{},fields:I,reset:!0})),await je(),U=!0,h.message.success(N("savedRegisters"))}catch(ne){ce.current=!1,O(!1),fe==null||fe(!1),Oe==null||Oe(ne),h.message.error(N("errorWhileSavingForm")),H(ne!=null&&ne.message?ne.message:ne)}finally{ce.current=!1,fe==null||fe(!1),O(!1)}return{succeed:U,id:ue()}},Nt=({fields:j,arch:U,values:te})=>{var Fe;const ne=new se.Form(j);ne.parse(U,{readOnly:p,values:Us({...te,...Q()},j)}),A(ne),ne.string&&ne.string!==Ee&&(ke==null||ke(ne.string)),q&&ne.string&&((Fe=q.setTitle)==null||Fe.call(q,ne.string))},dr=async({elementHasLostFocus:j=!1})=>{if(ce.current)return;const U=jt({source:ee.current,target:ie(I),fields:I}),te=Object.keys(U);if(te.length!==0){if(Rs({changedFields:te,formOoui:F,types:["text","codeeditor","email","url","char","float","float_time","integer","many2one"]})&&j!==!0)return;{const ne=it(M.getFieldsValue(!0),I);ee.current=ne,u==null||u(ne),oe==null||oe(!0),ac(te)}}},ic=Bs(dr,100),ac=async j=>{try{for(let U=0;U<j.length;U+=1){const te=j[U];await lc(te)}}catch(U){Ie(U)}},lc=async j=>{const U=F==null?void 0:F.onChangeFields[j];if(!U){Nt({fields:I,arch:L,values:ie(I)});return}const te=ri({values:{...ie(I),context:{...v,...F==null?void 0:F.context}},parentValues:Ce==null?void 0:Ce(),onChangeFieldActionArgs:U.args}),ne=await W.getHandler().executeOnChange({model:n,action:U.method,ids:ue()?[ue()]:[],payload:te,fields:I});if(ne.value){const Fe={...ie(I),...ne.value};Nt({fields:I,arch:L,values:Fe}),$t({values:Fe,fields:I,reset:!1})}if(ne.warning&&ne.warning.title&&ne.warning.message&&!le.current){const{title:Fe,message:tt}=ne.warning;le.current=!0,gi(Fe,tt,()=>{le.current=!1})}if(ne.domain&&Object.keys(ne.domain).length>0){const Fe=ei({fieldsDomain:ne.domain,fields:I});Nt({fields:Fe,arch:L,values:ie(Fe)}),K(Fe)}};async function cc({action:j,context:U}){const te=await W.getHandler().execute({model:n,action:j,payload:[ue()],context:{...U,...F==null?void 0:F.context,...v}});if(typeof te=="object"&&te!==null&&Object.keys(te).length===0&&C)ae==null||ae(ue(),De(),Ke());else if(te.type&&te.type==="ir.actions.act_window_close")ae==null||ae(ue(),De(),Ke());else if(te.type){let ne={};te.context&&(ne=se.parseContext({context:te.context,fields:I,values:De()})),await Jn({actionData:te,context:{...U,...ne}})}else await je()}async function dc({action:j}){const U=await W.getHandler().executeWorkflow({model:n,action:j,payload:ue()});U.type&&U.type==="ir.actions.act_window_close"?ae==null||ae(ue(),De(),Ke()):await je()}async function uc({action:j,context:U}){const te=(await W.getHandler().readObjects({model:"ir.actions.actions",ids:[parseInt(j)],context:v}))[0];await Jn({actionData:te,context:U})}async function Jn({actionData:j,context:U}){const{closeParent:te}=await(Me==null?void 0:Me({actionData:j,fields:I,values:De(),context:{...v,...F==null?void 0:F.context,...U},onRefreshParentValues:()=>{je()}}))||{};!b&&te&&(ae==null||ae(ue(),De(),Ke()))}function fc(){dr({elementHasLostFocus:!0})}async function hc({type:j,action:U,context:te}){if(j==="cancel"){he==null||he();return}if(await $e()){Gr(S);return}try{(Te()||ue()===void 0)&&await Lt({callOnSubmitSucceed:!1}),j==="object"?await cc({action:U,context:te}):j==="workflow"?await dc({action:U}):j==="action"&&await uc({action:U,context:te})}catch(ne){Ie(ne)}}const pc=()=>!F&&!T?e.jsx(h.Spin,{}):!n&&!m||!_?null:e.jsx(e.Fragment,{children:e.jsx(xo,{getValues:De,getPlainValues:Ze,getFields:Ae,domain:V,activeId:s,activeModel:n,setFieldValue:ve,getFieldValue:pe,executeButtonAction:hc,getContext:Ge,submitForm:Lt,fetchValues:je,formHasChanges:Te,elementHasLostFocus:fc,children:e.jsx(h.Form,{form:M,onFieldsChange:()=>{ic({elementHasLostFocus:!1})},component:!1,children:F&&e.jsx(Jt,{container:F.container,responsiveBehaviour:re})})})}),gc=()=>e.jsxs(e.Fragment,{children:[e.jsx(h.Divider,{}),e.jsx(h.Row,{justify:"end",children:e.jsxs(h.Space,{children:[e.jsx(h.Button,{icon:e.jsx(B.CloseOutlined,{}),disabled:x,onClick:async()=>{await Xe()},children:"Cancel"}),e.jsx(h.Button,{disabled:x||p,loading:x,icon:e.jsx(B.CheckOutlined,{}),onClick:async()=>{await Lt()},type:"primary",children:"OK"})]})})]});return _?e.jsx(Ht.default,{bounds:!0,onResize:j=>{var U;Y((U=j.bounds)==null?void 0:U.width)},children:({measureRef:j})=>e.jsxs("div",{className:"pb-2",ref:j,children:[T&&e.jsx(ki,{className:"mt-5 mb-10",error:T}),pc(),a&&gc()]})}):null}const ct=l.forwardRef(Ei),dt=t=>{const{visible:r,id:n,title:s,buttonModal:o=!1,onCancel:i,isMenuAction:a=!1,actionData:c,...u}=t,{modalWidth:f}=xt(),[p,d]=l.useState(s),[g,y]=l.useState(!1),[m,w]=l.useState();l.useEffect(()=>{a&&C()},[c,a]);async function C(){const{action_id:_,res_id:b,action_type:E,view_id:D}=c,N=await W.getHandler().isShortcutFavorite({action_id:_,action_type:E,view_id:D,res_id:b||!1});y(N!==!1),N!==!1&&w(N)}async function v(){if(g&&m)await W.getHandler().removeFavourite({shortcut_id:m});else{const{action_id:_,res_id:b,action_type:E,view_id:D}=c;await W.getHandler().addFavourite({action_id:_,action_type:E,view_id:D,res_id:b||!1})}y(!g)}function V(){return e.jsxs(h.Row,{align:"middle",children:[e.jsx(h.Col,{children:e.jsx(h.Button,{type:g?"primary":"default",icon:g?e.jsx(B.StarFilled,{style:{color:"white"}}):e.jsx(B.StarOutlined,{}),style:{width:30},onClick:v})}),e.jsx(h.Col,{style:{paddingLeft:10},children:p})]})}return e.jsx(mi,{setTitle:d,children:e.jsx(h.Modal,{title:a?V():p,centered:!0,width:f,open:r,footer:null,destroyOnClose:!0,onCancel:i,maskClosable:!1,children:e.jsx(ct,{id:n,showFooter:!0,insideButtonModal:o,onCancel:i,...u})})})},Mi=t=>e.jsx(me,{...t,layout:"vertical",children:e.jsx(h.DatePicker.RangePicker,{allowEmpty:[!0,!0],format:"DD/MM/YYYY"})}),Ii=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(h.Row,{align:"bottom",className:"p-0",children:[e.jsx(h.Col,{className:"mr-2",children:e.jsx(me,{...t,ooui:i[0],showLabel:!1,children:e.jsx(h.DatePicker.RangePicker,{className:"w-60",allowEmpty:[!0,!0],format:"DD/MM/YYYY"})})}),e.jsx(h.Col,{children:e.jsx(me,{...t,ooui:i[1],showLabel:!1,children:e.jsx(h.TimePicker.RangePicker,{className:"w-60",allowEmpty:[!0,!0],format:"HH:mm"})})})]})]})},{useToken:Ai}=h.theme,Zt=t=>{const{ooui:r}=t,{id:n,decimalDigits:s,readOnly:o,required:i}=r,{token:a}=Ai(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,u=l.useContext(_e),{elementHasLostFocus:f}=u||{};return e.jsx(me,{required:i,type:"number",...t,children:e.jsx(h.InputNumber,{disabled:o,className:"w-full",style:c,id:n,precision:s,formatter:p=>`${p}`.replace(/[^0-9\.\-]+/g,""),defaultValue:0,decimalSeparator:".",onBlur:f})})},{useToken:$i}=h.theme,vt=t=>{const{ooui:r,onChange:n}=t,{id:s,readOnly:o,required:i}=r,{token:a}=$i(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,u=l.useContext(_e),{elementHasLostFocus:f}=u||{};return e.jsx(me,{required:i,type:"number",...t,children:e.jsx(h.InputNumber,{id:s,className:"w-full ",disabled:o,formatter:p=>`${p}`.replace(/[^0-9\-]+/g,""),onChange:p=>{const d=p;n==null||n(d)},defaultValue:0,onBlur:f,precision:0,style:c})})};function Li(t){const{ooui:r,showLabel:n}=t,{id:s,label:o,tooltip:i}=r,a=r instanceof se.Integer?vt:Zt,c=u=>e.jsx(a,{ooui:{...r,id:s+u,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(h.Row,{align:"bottom",className:"mt-0",wrap:!1,children:[e.jsx(h.Col,{children:c("#from")}),e.jsx(h.Col,{className:"pb-1",children:e.jsx("span",{className:"pl-2 pr-2 h-full",children:" - "})}),e.jsx(h.Col,{children:c("#to")})]})]})}const{defaultAlgorithm:Ni,defaultSeed:Pi}=h.theme,Bi=Ni(Pi),{Option:Hi}=h.Select,Ki=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(Wi,{...t})})},Wi=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,required:a}=r,c=Array.from(o.entries()),u=c&&c.length&&c.filter(d=>{const[g]=d;return s?!s.includes(g):!0}).map(d=>{const[g,y]=d;return e.jsx(Hi,{value:y,children:y},g)}),f=a&&!i?qi:h.Select;function p(d){const g=d.map(y=>{const m=c.find(([w,C])=>y===C);return m&&m[0]});if(g.length===0){n==null||n(void 0);return}n==null||n(g)}return e.jsx(f,{disabled:i,onChange:p,value:s==null?void 0:s.map(d=>o.get(d)),mode:"multiple",showArrow:!0,children:u})},qi=pt.default(h.Select)`
20
20
  &.ant-select:not(.ant-select-customize-input) .ant-select-selector {
21
21
  background-color: ${Bi.colorPrimaryBg};
22
22
  }
23
- `;function Yi(t){const{field:r}=t;r.readOnly=!1,r.required=!1;const{t:n}=l.useContext(ge);switch(r.type){case se.SearchFieldTypes.boolean:{const o=new se.Selection({name:r._id,string:r.label,selection:[["true",n("true")],["false",n("false")]]});return e.jsx(Yt,{layout:"vertical",ooui:o,showLabel:!0})}case se.SearchFieldTypes.float:case se.SearchFieldTypes.progressbar:case se.SearchFieldTypes.float_time:case se.SearchFieldTypes.integer:return e.jsx(Li,{ooui:r,showLabel:!0});case se.SearchFieldTypes.date:return e.jsx(Mi,{ooui:r,layout:"vertical",showLabel:!0});case se.SearchFieldTypes.datetime:return e.jsx(Ii,{ooui:r,layout:"vertical",showLabel:!0});case se.SearchFieldTypes.selection:return e.jsx(Ki,{layout:"vertical",ooui:r,showLabel:!0});default:return e.jsx(qt,{ooui:r,layout:"vertical",showLabel:!0,isSearchField:!0})}}function Gi(t){const{onAdvancedFilterToggle:r,advancedFilter:n,onClear:s,isSearching:o}=t,{t:i}=l.useContext(ge);return e.jsxs(h.Row,{children:[e.jsx(h.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(B.UpOutlined,{className:"pr-1"}):e.jsx(B.DownOutlined,{className:"pr-1"}),i(n?"simple_search":"advanced_search")]})}),e.jsxs(h.Col,{span:12,className:"text-right pb-2",children:[e.jsx(h.Button,{className:"mr-5",icon:e.jsx(B.ClearOutlined,{}),onClick:s,children:i("clear")}),e.jsx(h.Button,{icon:e.jsx(B.SearchOutlined,{}),loading:o,className:"mr-2",type:"primary",htmlType:"submit",children:i("search")})]})]})}function Ui(t){const{onLimitChange:r}=t,{t:n}=l.useContext(ge),s=new se.Integer({name:"limit"}),o=new se.Integer({name:"offset"});return e.jsxs("div",{className:"pl-2 pt-2",children:[e.jsx(h.Row,{children:n("parameters")},"count_params"),e.jsxs(h.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:ji}=h.theme;function Xt(t){const{fields:r,searchFields:n={primary:[],secondary:[]},onClear:s,onSubmit:o,isSearching:i,offset:a,limit:c,onLimitChange:u,searchVisible:f,setSearchFilterHeight:p,searchError:d,searchValues:g,showLimitOptions:w=!0,formXml:m}=t,[y,C]=l.useState(),[v,V]=l.useState(),[_,b]=l.useState(!1),E=l.useRef(),{token:D}=ji(),[N]=h.Form.useForm();l.useEffect(()=>{N.setFieldsValue(g)},[g]);const S=()=>{if(!v)return;const T=_?v:y,H=T==null?void 0:T.rows;return H==null?void 0:H.map((F,A)=>e.jsx(h.Row,{children:F.map((M,L)=>e.jsx(h.Col,{xs:24,className:"p-2",xl:6,children:e.jsx(Yi,{field:M})},L))},A))};Re.default(()=>{b(!1),E.current=new se.SearchFilter(n,r,m),E.current.parse(),C(E.current._simpleSearchContainer),V(E.current._advancedSearchContainer)},[r,n]);const x=S(),O=T=>{var M;const{limit:H,offset:F}=T;delete T.offset,delete T.limit;const A=yi(T,(M=E.current)==null?void 0:M._advancedSearchContainer);o({params:A,offset:F,limit:H,searchValues:T})};return e.jsx(Ht.default,{bounds:!0,onResize:T=>{var H;p==null||p((H=T.bounds)==null?void 0:H.height)},children:({measureRef:T})=>e.jsx("div",{ref:T,children:e.jsxs("div",{style:{display:f?"block":"none"},children:[e.jsxs(h.Form,{className:"p-3 shadow-md",style:{borderRadius:D.borderRadius},form:N,onFinish:O,initialValues:{offset:a,limit:c},children:[x,_&&w&&e.jsx(Ui,{onLimitChange:u}),e.jsx(Gi,{advancedFilter:_,onAdvancedFilterToggle:()=>{b(!_)},onClear:()=>{N.resetFields(),s()},isSearching:i})]}),d&&e.jsx(h.Alert,{className:"mt-10",message:d,type:"error",banner:!0}),e.jsx("div",{className:"pb-5"})]})})})}const Xr=(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)},zi=(t,r,n=500)=>{if(t.length===0)return t;const s=t.map(i=>Object.assign(i,{width:Xr(i.title)}));r.map(i=>{s.map((a,c)=>{const u=a.width,f=i[a.key]||"";let p=Xr(f);p<u&&(p=u),p>n&&(p=n),s[c].width=p})});const o=s.map(i=>i.width).reduce((i,a)=>i+a);return{columns:s,source:r,tableWidth:o}};function Ji(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 Qr(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 Rr=t=>e.jsx(me,{...t,children:e.jsx(en,{})}),en=({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(Zi,{percent:t}),e.jsx("div",{style:{flexGrow:1,paddingLeft:10},children:r})]})},Zi=pt.default(h.Progress)`
23
+ `;function Yi(t){const{field:r}=t;r.readOnly=!1,r.required=!1;const{t:n}=l.useContext(ge);switch(r.type){case se.SearchFieldTypes.boolean:{const o=new se.Selection({name:r._id,string:r.label,selection:[["true",n("true")],["false",n("false")]]});return e.jsx(Yt,{layout:"vertical",ooui:o,showLabel:!0})}case se.SearchFieldTypes.float:case se.SearchFieldTypes.progressbar:case se.SearchFieldTypes.float_time:case se.SearchFieldTypes.integer:return e.jsx(Li,{ooui:r,showLabel:!0});case se.SearchFieldTypes.date:return e.jsx(Mi,{ooui:r,layout:"vertical",showLabel:!0});case se.SearchFieldTypes.datetime:return e.jsx(Ii,{ooui:r,layout:"vertical",showLabel:!0});case se.SearchFieldTypes.selection:return e.jsx(Ki,{layout:"vertical",ooui:r,showLabel:!0});default:return e.jsx(qt,{ooui:r,layout:"vertical",showLabel:!0,isSearchField:!0})}}function Gi(t){const{onAdvancedFilterToggle:r,advancedFilter:n,onClear:s,isSearching:o}=t,{t:i}=l.useContext(ge);return e.jsxs(h.Row,{children:[e.jsx(h.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(B.UpOutlined,{className:"pr-1"}):e.jsx(B.DownOutlined,{className:"pr-1"}),i(n?"simple_search":"advanced_search")]})}),e.jsxs(h.Col,{span:12,className:"text-right pb-2",children:[e.jsx(h.Button,{className:"mr-5",icon:e.jsx(B.ClearOutlined,{}),onClick:s,children:i("clear")}),e.jsx(h.Button,{icon:e.jsx(B.SearchOutlined,{}),loading:o,className:"mr-2",type:"primary",htmlType:"submit",children:i("search")})]})]})}function Ui(t){const{onLimitChange:r}=t,{t:n}=l.useContext(ge),s=new se.Integer({name:"limit"}),o=new se.Integer({name:"offset"});return e.jsxs("div",{className:"pl-2 pt-2",children:[e.jsx(h.Row,{children:n("parameters")},"count_params"),e.jsxs(h.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:ji}=h.theme;function Xt(t){const{fields:r,searchFields:n={primary:[],secondary:[]},onClear:s,onSubmit:o,isSearching:i,offset:a,limit:c,onLimitChange:u,searchVisible:f,setSearchFilterHeight:p,searchError:d,searchValues:g,showLimitOptions:y=!0,formXml:m}=t,[w,C]=l.useState(),[v,V]=l.useState(),[_,b]=l.useState(!1),E=l.useRef(),{token:D}=ji(),[N]=h.Form.useForm();l.useEffect(()=>{N.setFieldsValue(g)},[g]);const S=()=>{if(!v)return;const T=_?v:w,H=T==null?void 0:T.rows;return H==null?void 0:H.map((F,A)=>e.jsx(h.Row,{children:F.map((M,L)=>e.jsx(h.Col,{xs:24,className:"p-2",xl:6,children:e.jsx(Yi,{field:M})},L))},A))};Qe.default(()=>{b(!1),E.current=new se.SearchFilter(n,r,m),E.current.parse(),C(E.current._simpleSearchContainer),V(E.current._advancedSearchContainer)},[r,n]);const x=S(),O=T=>{var M;const{limit:H,offset:F}=T;delete T.offset,delete T.limit;const A=yi(T,(M=E.current)==null?void 0:M._advancedSearchContainer);o({params:A,offset:F,limit:H,searchValues:T})};return e.jsx(Ht.default,{bounds:!0,onResize:T=>{var H;p==null||p((H=T.bounds)==null?void 0:H.height)},children:({measureRef:T})=>e.jsx("div",{ref:T,children:e.jsxs("div",{style:{display:f?"block":"none"},children:[e.jsxs(h.Form,{className:"p-3 shadow-md",style:{borderRadius:D.borderRadius},form:N,onFinish:O,initialValues:{offset:a,limit:c},children:[x,_&&y&&e.jsx(Ui,{onLimitChange:u}),e.jsx(Gi,{advancedFilter:_,onAdvancedFilterToggle:()=>{b(!_)},onClear:()=>{N.resetFields(),s()},isSearching:i})]}),d&&e.jsx(h.Alert,{className:"mt-10",message:d,type:"error",banner:!0}),e.jsx("div",{className:"pb-5"})]})})})}const Xr=(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)},zi=(t,r,n=500)=>{if(t.length===0)return t;const s=t.map(i=>Object.assign(i,{width:Xr(i.title)}));r.map(i=>{s.map((a,c)=>{const u=a.width,f=i[a.key]||"";let p=Xr(f);p<u&&(p=u),p>n&&(p=n),s[c].width=p})});const o=s.map(i=>i.width).reduce((i,a)=>i+a);return{columns:s,source:r,tableWidth:o}};function Ji(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 Qr(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 Rr=t=>e.jsx(me,{...t,children:e.jsx(en,{})}),en=({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(Zi,{percent:t}),e.jsx("div",{style:{flexGrow:1,paddingLeft:10},children:r})]})},Zi=pt.default(h.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
- `,tn=t=>{const{visible:r,onCancel:n,items:s=[],onItemClicked:o}=t,{t:i}=l.useContext(ge);return e.jsx(h.Modal,{title:i("selectAction"),centered:!0,open:r,footer:null,destroyOnClose:!0,onCancel:n,maskClosable:!1,children:e.jsx(h.Space,{direction:"vertical",className:"w-full",children:s.map(a=>e.jsx(h.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),[u,f]=l.useState(!1),[p,d]=l.useState(),[g,w]=l.useState(),{t:m}=l.useContext(ge),y=l.useContext(Ye),{openRelate:C}=y||{},v=l.useContext(lt),{processAction:V}=v||{};if(!r)return null;async function _(){f(!0);try{const O=await W.getHandler().getView({model:n,type:"form",context:s});d(O);const{fields:T,arch:H}=O,F=(await W.getHandler().readObjects({model:n,ids:[r],fields:T,context:s}))[0];w({...it(F,T),active_id:r}),f(!1)}catch(O){f(!1),Ie(O);return}}function b(){var T;if(u)return e.jsx(h.Menu,{children:e.jsx("div",{style:{padding:15},children:e.jsx(h.Spin,{})})});if(!p||!p.toolbar)return e.jsx(h.Menu,{});const O=(T=p==null?void 0:p.toolbar)==null?void 0:T.relate.map(H=>e.jsx(h.Menu.Item,{children:H.name},H.id));return e.jsx(h.Menu,{onClick:E,children:[e.jsx(h.Menu.Item,{disabled:!p.toolbar.action||p.toolbar.action.length===0,icon:e.jsx(B.ThunderboltOutlined,{}),children:m("action")},"action"),e.jsx(h.Menu.Item,{disabled:!p.toolbar.print||p.toolbar.print.length===0,icon:e.jsx(B.PrinterOutlined,{}),children:m("report")},"print"),e.jsx(h.Menu.Divider,{}),e.jsx(h.Menu.ItemGroup,{title:e.jsxs(e.Fragment,{children:[e.jsx(B.EnterOutlined,{})," ",e.jsxs("span",{children:[" ",m("related")]})]}),children:O})]})}function E(O){if(O.key==="action")i(!0);else if(O.key==="print")c(!0);else{const T=p.toolbar.relate.find(H=>H.id===parseInt(O.key));if(!T)return;C({relateData:T,values:g,fields:p.fields,action_id:T.id,action_type:T.type})}}function D(O){i(!1),V==null||V({actionData:O,values:g,fields:p.fields,context:{active_id:r,active_ids:[r]}})}function N(O){c(!1),V==null||V({actionData:{...O,datas:{...O.datas||{},ids:[r]}},values:g,fields:p.fields})}return e.jsxs(e.Fragment,{children:[e.jsx(h.Dropdown,{overlay:b(),trigger:["click"],children:e.jsx(B.RightCircleOutlined,{style:{color:"rgba(0,0,0,.45)"},onClick:O=>{O.preventDefault(),_()}})}),e.jsx(tn,{visible:o,items:(S=p==null?void 0:p.toolbar)==null?void 0:S.action,onItemClicked:D,onCancel:()=>i(!1)}),e.jsx(tn,{visible:a,items:(x=p==null?void 0:p.toolbar)==null?void 0:x.print,onItemClicked:N,onCancel:()=>c(!1)})]})},Xi=t=>{const{m2oField:r}=t;return r?e.jsxs(h.Space,{children:[e.jsx(e.Fragment,{children:r.value}),e.jsx(Qt,{id:r.id,model:r.model})]}):e.jsx(e.Fragment,{})},Qi=t=>{const{value:r,context:n,selectionValues:s}=t,[o,i]=l.useState(),[a,c]=l.useState(!1),[u,f]=r?r.split(","):[],p=parseInt(f),d=l.useCallback(async()=>{if(!r||r&&o)return;c(!0);const w=await W.getHandler().execute({action:"name_get",payload:[p],model:u,context:n});i(w[0][1]),c(!1)},[r,o]);if(l.useEffect(()=>{d()},[r]),!r&&!a)return e.jsx(e.Fragment,{});if(a)return e.jsx(B.LoadingOutlined,{});const g=s.get(u);return e.jsxs(h.Space,{children:[e.jsx(e.Fragment,{children:`${g}:`}),e.jsx(e.Fragment,{children:o}),e.jsx(Qt,{id:p,model:u})]})};var rn={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(et,function(){var n=1e3,s=6e4,o=36e5,i="millisecond",a="second",c="minute",u="hour",f="day",p="week",d="month",g="quarter",w="year",m="date",y="Invalid Date",C=/^(\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,V={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 A=["th","st","nd","rd"],M=F%100;return"["+F+(A[(M-20)%10]||A[M]||A[0])+"]"}},_=function(F,A,M){var L=String(F);return!L||L.length>=A?F:""+Array(A+1-L.length).join(M)+F},b={s:_,z:function(F){var A=-F.utcOffset(),M=Math.abs(A),L=Math.floor(M/60),k=M%60;return(A<=0?"+":"-")+_(L,2,"0")+":"+_(k,2,"0")},m:function F(A,M){if(A.date()<M.date())return-F(M,A);var L=12*(M.year()-A.year())+(M.month()-A.month()),k=A.clone().add(L,d),I=M-k<0,K=A.clone().add(L+(I?-1:1),d);return+(-(L+(M-k)/(I?k-K:K-k))||0)},a:function(F){return F<0?Math.ceil(F)||0:Math.floor(F)},p:function(F){return{M:d,y:w,w:p,d:f,D:m,h:u,m:c,s:a,ms:i,Q:g}[F]||String(F||"").toLowerCase().replace(/s$/,"")},u:function(F){return F===void 0}},E="en",D={};D[E]=V;var N=function(F){return F instanceof T},S=function F(A,M,L){var k;if(!A)return E;if(typeof A=="string"){var I=A.toLowerCase();D[I]&&(k=I),M&&(D[I]=M,k=I);var K=A.split("-");if(!k&&K.length>1)return F(K[0])}else{var q=A.name;D[q]=A,k=q}return!L&&k&&(E=k),k||!L&&E},x=function(F,A){if(N(F))return F.clone();var M=typeof A=="object"?A:{};return M.date=F,M.args=arguments,new T(M)},O=b;O.l=S,O.i=N,O.w=function(F,A){return x(F,{locale:A.$L,utc:A.$u,x:A.$x,$offset:A.$offset})};var T=function(){function F(M){this.$L=S(M.locale,null,!0),this.parse(M)}var A=F.prototype;return A.parse=function(M){this.$d=function(L){var k=L.date,I=L.utc;if(k===null)return new Date(NaN);if(O.u(k))return new Date;if(k instanceof Date)return new Date(k);if(typeof k=="string"&&!/Z$/i.test(k)){var K=k.match(C);if(K){var q=K[2]-1||0,z=(K[7]||"0").substring(0,3);return I?new Date(Date.UTC(K[1],q,K[3]||1,K[4]||0,K[5]||0,K[6]||0,z)):new Date(K[1],q,K[3]||1,K[4]||0,K[5]||0,K[6]||0,z)}}return new Date(k)}(M),this.$x=M.x||{},this.init()},A.init=function(){var M=this.$d;this.$y=M.getFullYear(),this.$M=M.getMonth(),this.$D=M.getDate(),this.$W=M.getDay(),this.$H=M.getHours(),this.$m=M.getMinutes(),this.$s=M.getSeconds(),this.$ms=M.getMilliseconds()},A.$utils=function(){return O},A.isValid=function(){return this.$d.toString()!==y},A.isSame=function(M,L){var k=x(M);return this.startOf(L)<=k&&k<=this.endOf(L)},A.isAfter=function(M,L){return x(M)<this.startOf(L)},A.isBefore=function(M,L){return this.endOf(L)<x(M)},A.$g=function(M,L,k){return O.u(M)?this[L]:this.set(k,M)},A.unix=function(){return Math.floor(this.valueOf()/1e3)},A.valueOf=function(){return this.$d.getTime()},A.startOf=function(M,L){var k=this,I=!!O.u(L)||L,K=O.p(M),q=function(le,ce){var re=O.w(k.$u?Date.UTC(k.$y,ce,le):new Date(k.$y,ce,le),k);return I?re:re.endOf(f)},z=function(le,ce){return O.w(k.toDate()[le].apply(k.toDate("s"),(I?[0,0,0,0]:[23,59,59,999]).slice(ce)),k)},Y=this.$W,Z=this.$M,J=this.$D,$="set"+(this.$u?"UTC":"");switch(K){case w:return I?q(1,0):q(31,11);case d:return I?q(1,Z):q(0,Z+1);case p:var P=this.$locale().weekStart||0,ee=(Y<P?Y+7:Y)-P;return q(I?J-ee:J+(6-ee),Z);case f:case m:return z($+"Hours",0);case u:return z($+"Minutes",1);case c:return z($+"Seconds",2);case a:return z($+"Milliseconds",3);default:return this.clone()}},A.endOf=function(M){return this.startOf(M,!1)},A.$set=function(M,L){var k,I=O.p(M),K="set"+(this.$u?"UTC":""),q=(k={},k[f]=K+"Date",k[m]=K+"Date",k[d]=K+"Month",k[w]=K+"FullYear",k[u]=K+"Hours",k[c]=K+"Minutes",k[a]=K+"Seconds",k[i]=K+"Milliseconds",k)[I],z=I===f?this.$D+(L-this.$W):L;if(I===d||I===w){var Y=this.clone().set(m,1);Y.$d[q](z),Y.init(),this.$d=Y.set(m,Math.min(this.$D,Y.daysInMonth())).$d}else q&&this.$d[q](z);return this.init(),this},A.set=function(M,L){return this.clone().$set(M,L)},A.get=function(M){return this[O.p(M)]()},A.add=function(M,L){var k,I=this;M=Number(M);var K=O.p(L),q=function(Z){var J=x(I);return O.w(J.date(J.date()+Math.round(Z*M)),I)};if(K===d)return this.set(d,this.$M+M);if(K===w)return this.set(w,this.$y+M);if(K===f)return q(1);if(K===p)return q(7);var z=(k={},k[c]=s,k[u]=o,k[a]=n,k)[K]||1,Y=this.$d.getTime()+M*z;return O.w(Y,this)},A.subtract=function(M,L){return this.add(-1*M,L)},A.format=function(M){var L=this,k=this.$locale();if(!this.isValid())return k.invalidDate||y;var I=M||"YYYY-MM-DDTHH:mm:ssZ",K=O.z(this),q=this.$H,z=this.$m,Y=this.$M,Z=k.weekdays,J=k.months,$=function(ce,re,X,we){return ce&&(ce[re]||ce(L,I))||X[re].slice(0,we)},P=function(ce){return O.s(q%12||12,ce,"0")},ee=k.meridiem||function(ce,re,X){var we=ce<12?"AM":"PM";return X?we.toLowerCase():we},le={YY:String(this.$y).slice(-2),YYYY:O.s(this.$y,4,"0"),M:Y+1,MM:O.s(Y+1,2,"0"),MMM:$(k.monthsShort,Y,J,3),MMMM:$(J,Y),D:this.$D,DD:O.s(this.$D,2,"0"),d:String(this.$W),dd:$(k.weekdaysMin,this.$W,Z,2),ddd:$(k.weekdaysShort,this.$W,Z,3),dddd:Z[this.$W],H:String(q),HH:O.s(q,2,"0"),h:P(1),hh:P(2),a:ee(q,z,!0),A:ee(q,z,!1),m:String(z),mm:O.s(z,2,"0"),s:String(this.$s),ss:O.s(this.$s,2,"0"),SSS:O.s(this.$ms,3,"0"),Z:K};return I.replace(v,function(ce,re){return re||le[ce]||K.replace(":","")})},A.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},A.diff=function(M,L,k){var I,K=O.p(L),q=x(M),z=(q.utcOffset()-this.utcOffset())*s,Y=this-q,Z=O.m(this,q);return Z=(I={},I[w]=Z/12,I[d]=Z,I[g]=Z/3,I[p]=(Y-z)/6048e5,I[f]=(Y-z)/864e5,I[u]=Y/o,I[c]=Y/s,I[a]=Y/n,I)[K]||Y,k?Z:O.a(Z)},A.daysInMonth=function(){return this.endOf(d).$D},A.$locale=function(){return D[this.$L]},A.locale=function(M,L){if(!M)return this.$L;var k=this.clone(),I=S(M,L,!0);return I&&(k.$L=I),k},A.clone=function(){return O.w(this.$d,this)},A.toDate=function(){return new Date(this.valueOf())},A.toJSON=function(){return this.isValid()?this.toISOString():null},A.toISOString=function(){return this.$d.toISOString()},A.toString=function(){return this.$d.toUTCString()},F}(),H=T.prototype;return x.prototype=H,[["$ms",i],["$s",a],["$m",c],["$H",u],["$W",f],["$M",d],["$y",w],["$D",m]].forEach(function(F){H[F[1]]=function(A){return this.$g(A,F[0],F[1])}}),x.extend=function(F,A){return F.$i||(F(A,T,x),F.$i=!0),x},x.locale=S,x.isDayjs=N,x.unix=function(F){return x(1e3*F)},x.en=D[E],x.Ls=D,x.p={},x})})(rn);const Xe=rn.exports,Ri=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=zt(s);return e.jsx(h.Tooltip,{title:s,children:e.jsx(h.Avatar,{alt:s,style:{backgroundColor:i},children:o})})};var nn={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(et,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")}}})})(nn);const ea=nn.exports;var on={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(et,function(){return function(n,s,o){var i=s.prototype,a=function(d){return d&&(d.indexOf?d:d.s)},c=function(d,g,w,m,y){var C=d.name?d:d.$locale(),v=a(C[g]),V=a(C[w]),_=v||V.map(function(E){return E.slice(0,m)});if(!y)return _;var b=C.weekStart;return _.map(function(E,D){return _[(D+(b||0))%7]})},u=function(){return o.Ls[o.locale()]},f=function(d,g){return d.formats[g]||function(w){return w.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(m,y,C){return y||C.slice(1)})}(d.formats[g.toUpperCase()])},p=function(){var d=this;return{months:function(g){return g?g.format("MMMM"):c(d,"months")},monthsShort:function(g){return g?g.format("MMM"):c(d,"monthsShort","months",3)},firstDayOfWeek:function(){return d.$locale().weekStart||0},weekdays:function(g){return g?g.format("dddd"):c(d,"weekdays")},weekdaysMin:function(g){return g?g.format("dd"):c(d,"weekdaysMin","weekdays",2)},weekdaysShort:function(g){return g?g.format("ddd"):c(d,"weekdaysShort","weekdays",3)},longDateFormat:function(g){return f(d.$locale(),g)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};i.localeData=function(){return p.bind(this)()},o.localeData=function(){var d=u();return{firstDayOfWeek:function(){return d.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 f(d,g)},meridiem:d.meridiem,ordinal:d.ordinal}},o.months=function(){return c(u(),"months")},o.monthsShort=function(){return c(u(),"monthsShort","months",3)},o.weekdays=function(d){return c(u(),"weekdays",null,null,d)},o.weekdaysShort=function(d){return c(u(),"weekdaysShort","weekdays",3,d)},o.weekdaysMin=function(d){return c(u(),"weekdaysMin","weekdays",2,d)}}})})(on);const ta=on.exports,{useToken:ra}=h.theme;Xe.extend(ea),Xe.extend(ta);const Je={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"}},sn=t=>{const{ooui:r,showTime:n=!1}=t,{required:s}=r;return e.jsx(me,{required:s,...t,children:e.jsx(na,{ooui:r,showTime:n})})},na=t=>{const{value:r,onChange:n,ooui:s,showTime:o}=t,{id:i,readOnly:a,required:c}=s,{token:u}=ra(),f=c&&!a?{backgroundColor:u.colorPrimaryBg}:void 0,p=o?"time":"date",d=y=>{n==null||n(y)},g=y=>{if(y===null){d(void 0);return}d(y.format(Je[p].dateInternalFormat))},w=o?{defaultValue:Xe("00:00:00","HH:mm:ss")}:void 0,m=r?Xe(r,Je[p].dateInternalFormat):void 0;return e.jsx(h.DatePicker,{style:{width:"100%",...f},placeholder:o?Je.time.placeholder:Je.date.placeholder,disabled:a,id:i,picker:"date",showTime:w,format:Je[p].dateDisplayFormat,value:m,onChange:g})},oa=t=>e.jsx("div",{style:{display:"flex",justifyContent:"center",alignContent:"center"},children:e.jsx(h.Checkbox,{checked:t,disabled:!0})}),sa=t=>e.jsx(Xi,{m2oField:t}),ia=t=>e.jsx(Pt.Interweave,{content:t==null?void 0:t.replace(/(?:\r\n|\r|\n)/g,"<br>")}),aa=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=Xe(t,Je.date.dateInternalFormat).format(Je.date.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},la=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=Xe(t,Je.time.dateInternalFormat).format(Je.time.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},an=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} )`})},ca=t=>e.jsx(en,{value:t}),da=t=>e.jsx(e.Fragment,{children:Qr(t)}),ln=t=>e.jsx("div",{style:{textAlign:"right"},children:t}),ua=t=>e.jsx("img",{src:`data:image/*;base64,${t}`,style:{maxWidth:"50px",padding:"5px"}}),fa=(t,r,n,s)=>e.jsx(e.Fragment,{children:t?e.jsx(h.Tag,{color:n.colors[t],children:n.selectionValues.get(t)}):null}),ha=(t,r,n,s)=>e.jsx(e.Fragment,{children:n.selectionValues.get(t)}),pa=(t,r,n,s)=>e.jsx(e.Fragment,{children:e.jsx(Qi,{value:t,selectionValues:n.selectionValues,context:s})}),ga=(t,r,n,s)=>e.jsx(Ri,{ooui:n,value:t});function Ct(t){const{page:r=1,limit:n,total:s,treeView:o,results:i,onRequestPageChange:a,loading:c,onRowClicked:u,showPagination:f=!0,rowSelection:p,scrollY:d,colorsForResults:g={},onChangeSort:w,sorter:m,onFetchChildrenForRecord:y,childField:C,rootTree:v=!1,context:V}=t,[_,b]=l.useState([]),[E,D]=l.useState([]),N=l.useRef(!1),S=l.useRef(null),{t:x}=l.useContext(ge),O=l.useRef(n),T=l.useContext(Be),{title:H=void 0,setTitle:F=void 0}=(v?T:{})||{};l.useEffect(()=>{S.current=ot(o);const z=Ys(S.current,{boolean:oa,many2one:sa,text:ia,one2many:an,many2many:an,progressbar:ca,float_time:da,image:ua,integer:ln,float:ln,reference:pa,tag:fa,selection:ha,date:aa,datetime:la,avatar:ga},V);D(z),S.current.string&&H!==S.current.string&&(F==null||F(S.current.string))},[o]),l.useEffect(()=>{N.current=!1;const z=Kr(S.current,i);b(z),O.current=n},[i]);const A=(r-1)*O.current+1,M=A-1+_.length,L=s===void 0?null:s===0?x("no_results"):x("summary").replace("{from}",A==null?void 0:A.toString()).replace("{to}",M==null?void 0:M.toString()).replace("{total}",s==null?void 0:s.toString()),k=()=>!f||o.isExpandable||c?null:s===void 0?e.jsx(h.Spin,{}):e.jsxs(h.Row,{align:"bottom",className:"pb-4",children:[e.jsx(h.Col,{span:12,children:e.jsx(h.Pagination,{total:s,pageSize:O.current===0?s:O.current,current:r,showSizeChanger:!1,onChange:a})}),e.jsx(h.Col,{span:12,className:"text-right",children:L})]});function I(){var $;const Y=S.current.columns.filter(P=>P.sum!==void 0).map(P=>({label:P.sum,field:P.id}));if(!Y||Y.length===0)return null;let Z=[],J=(($=p==null?void 0:p.selectedRowKeys)==null?void 0:$.length)>0?_.filter(P=>p==null?void 0:p.selectedRowKeys.includes(P.id)):_;return Y.forEach(P=>{const ee=J.reduce((le,ce)=>ce[P.field]&&!isNaN(ce[P.field])?le+ce[P.field]:le,0);Z.push(`${P.label}: ${Math.round(ee*100)/100}`)}),e.jsx("div",{className:"p-1 pb-0 pl-2 mt-2 ",children:Z.join(", ")})}let K,q=d;if(S.current!==null){K=zi(E,_,600);const Y=S.current;d&&Y.columns.some(Z=>Z.sum!==void 0)&&(q=d-30)}return S.current===null?e.jsx(h.Spin,{style:{padding:"2rem"}}):e.jsxs("div",{children:[k(),e.jsx(ro.Table,{height:q,columns:K.columns,dataSource:_,loading:c,loadingComponent:e.jsx(h.Spin,{}),onRowStyle:z=>{if(g[z.id])return{color:g[z.id]}},onRowDoubleClick:u,onRowSelectionChange:p==null?void 0:p.onChange,onChangeSort:w,sorter:m,expandableOpts:y?{expandIcon:B.PlusSquareOutlined,collapseIcon:B.MinusSquareOutlined,loadingIcon:B.LoadingOutlined,onFetchChildrenForRecord:y,childField:C}:void 0}),I()]})}function ma(t,r){const{model:n,formView:s,treeView:o,onRowClicked:i,nameSearch:a,treeScrollY:c,domain:u=[],visible:f=!0,rootTree:p=!1,parentContext:d={},onChangeSelectedRowKeys:g}=t,[w,m]=l.useState(!1),[y,C]=l.useState(!1),v=l.useRef(!1),[V,_]=l.useState(),[b,E]=l.useState(),[D,N]=l.useState(),[S,x]=l.useState(),[O,T]=l.useState(200),H=l.useRef(),{height:F}=xt(),A=l.useContext(lt),{processAction:M}=A||{},L=l.useContext(Be),{setResults:k=void 0,setCurrentItemIndex:I=void 0,currentId:K=void 0,results:q=void 0,selectedRowItems:z=void 0,setSelectedRowItems:Y=void 0,searchParams:Z=[],setSearchParams:J=void 0,searchVisible:$=!0,setSearchVisible:P=void 0,sorter:ee=void 0,setSorter:le=void 0,setTotalItems:ce=void 0,setSearchTreeNameSearch:re=void 0,setTreeIsLoading:X=void 0,searchValues:we={},setSearchValues:Ce=void 0,limit:Ve=wt,setLimit:fe=void 0}=(p?L:{})||{},{submit:oe,clear:Se,fetchResults:ye,tableRefreshing:xe,searchFilterLoading:Ee,searchError:ke,page:He,offset:Me,getResults:R,requestPageChange:ae,changeSort:he,fetchChildrenForRecord:Oe,colorsForResults:ue,totalItems:Ae}=zr({model:V,setSearchTreeNameSearch:re,setSelectedRowItems:Y,setSearchParams:J,setSearchValues:Ce,searchParams:Z,setSearchVisible:P,setTreeIsLoading:X,nameSearch:a,searchNameGetDoneRef:v,context:d,formView:D,treeView:b,sorter:ee,setSorter:le,setCurrentItemIndex:I,setResultsActionView:k,resultsActionView:q,domain:u,currentId:K,setActionViewTotalItems:ce,limit:Ve,setLimit:fe});l.useImperativeHandle(r,()=>({refreshResults:()=>{v.current=!1,ye()},getFields:()=>b==null?void 0:b.fields,getDomain:()=>u})),l.useEffect(()=>{!y||f&&(v.current=!1,ye())},[He,Me,y,f,a]);const De=async()=>{C(!1),m(!0),x(void 0),X==null||X(!0);try{await Ze(),C(!0)}catch(pe){x(pe)}finally{m(!1),X==null||X(!1)}},Ze=async()=>{_(n);let pe=s;s||(pe=await W.getHandler().getView({model:n,type:"form",context:d}));let $e=o;o||($e=await W.getHandler().getView({model:n,type:"tree",context:d})),N(pe),E($e)};l.useEffect(()=>{De()},[n]);const Ke=pe=>{fe==null||fe(pe)},Ge=async pe=>{const{id:$e}=pe;H.current||(H.current=await W.getHandler().treeButOpen({id:b.view_id,model:V,context:d}));const Ue=H.current[0][2];await(M==null?void 0:M({actionData:Ue,fields:b.fields,values:{active_id:$e,...pe},context:d}))},Q=async pe=>{const{id:$e}=pe;if(b!=null&&b.isExpandable){try{await Ge(pe)}catch(Ue){Ie(Ue)}return}i({id:$e,model:V,formView:D,treeView:b})};function de(pe){const $e=R().filter(Ue=>pe.includes(Ue.id));Y==null||Y($e),g==null||g(pe)}function Te(){return b!=null&&b.isExpandable?F-160:F-(O+210)}const ie=()=>!b||!D?null:e.jsxs(e.Fragment,{children:[e.jsx(Xt,{fields:{...b.fields,...D.fields},searchFields:Wr([D.search_fields,b.search_fields]),formXml:D.arch,onClear:Se,limit:Ve,offset:Me,isSearching:Ee,onSubmit:oe,onLimitChange:Ke,setSearchFilterHeight:T,searchError:ke,searchVisible:$,searchValues:we}),e.jsx(Ct,{context:d,total:Ae,limit:Ve,page:He,treeView:b,results:R(),onRequestPageChange:ae,loading:xe,onRowClicked:Q,scrollY:c||Te(),colorsForResults:ue,rowSelection:{selectedRowKeys:z==null?void 0:z.map(pe=>pe.id),onChange:de},sorter:ee,onChangeSort:he,onFetchChildrenForRecord:b.isExpandable?Oe:void 0,childField:b.field_parent,rootTree:p})]}),ve=S||ke;return ve?e.jsx(h.Alert,{className:"mt-10",message:ve,type:"error",banner:!0}):e.jsx("div",{style:f?{}:{display:"none"},children:w?e.jsx(h.Spin,{}):ie()})}const Rt=l.forwardRef(ma),er=t=>{const{visible:r,onCloseModal:n,onSelectValues:s,model:o,nameSearch:i,domain:a,context:c={}}=t,[u,f]=l.useState(!1),{modalWidth:p,modalHeight:d}=xt(),{t:g}=l.useContext(ge),[w,m]=l.useState([]),y=async()=>{await new Promise(_=>setTimeout(_,5)),n()},C=async _=>{const{id:b}=_;s([b])};function v(){if(w.length===0){y();return}s(w)}const V=()=>e.jsxs(e.Fragment,{children:[e.jsx(Rt,{model:o,nameSearch:i,onRowClicked:C,treeScrollY:d*.3,domain:a,parentContext:c,onChangeSelectedRowKeys:_=>{m(_)}}),e.jsx(h.Divider,{}),e.jsx(h.Row,{justify:"end",children:e.jsxs(h.Space,{children:[e.jsx(h.Button,{icon:e.jsx(B.FileAddOutlined,{}),onClick:()=>{f(!0)},children:g("new")}),e.jsx(h.Button,{icon:e.jsx(B.CheckOutlined,{}),onClick:()=>{v()},type:"primary",children:g("ok")}),e.jsx(h.Button,{icon:e.jsx(B.CloseOutlined,{}),onClick:y,children:g("cancel")})]})})]});return e.jsxs(e.Fragment,{children:[e.jsx(h.Modal,{title:g("search"),centered:!0,width:p,open:r&&!u,closable:!0,onCancel:y,footer:null,destroyOnClose:!0,maskClosable:!1,children:V()}),e.jsx(dt,{model:o,visible:u,parentContext:c,onSubmitSucceed:_=>{f(!1),y(),s([_])},onCancel:()=>{f(!1),y()}})]})},{error:ya}=h.Modal,_t=t=>{ya({title:"Error",icon:e.jsx(B.ExclamationCircleOutlined,{}),centered:!0,content:t})},{defaultAlgorithm:wa,defaultSeed:va}=h.theme,cn=wa(va),dn=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(un,{ooui:r})})},un=t=>{const{value:r,onChange:n,ooui:s}=t,{required:o,relation:i,readOnly:a,context:c,id:u,domain:f}=s,p=o&&!a?{backgroundColor:cn.colorPrimaryBg}:void 0,[d,g]=l.useState(!1),[w,m]=l.useState(!1),[y,C]=l.useState(!1),[v,V]=l.useState(),_=l.useRef(!1),[b,E]=l.useState(""),D=l.useRef(),N=l.useContext(_e),{domain:S,getValues:x,getFields:O,getContext:T,elementHasLostFocus:H}=N||{},F=l.useRef([]),[A,M]=l.useState([]),L=r&&r[0]||void 0,k=r&&r[1]||"";l.useEffect(()=>{!Array.isArray(r)&&r&&Y(r)},[r]),l.useEffect(()=>{L&&k.length===0?Y(L):L&&k.length>0?E(k):!L&&!k&&E(D.current||"")},[r]);const I=P=>{n==null||n(P),H==null||H()},K=P=>{D.current=P.target.value,I([void 0,""])},q=async()=>{if(!y&&b!==k){if(await new Promise(P=>setTimeout(P,100)),_.current){I([void 0,""]);return}C(!0);try{if(F.current&&F.current.length>0)z(D.current);else{const P=await W.getHandler().nameSearch({model:i,payload:D.current,context:{...T==null?void 0:T(),...c}});P.length===1?(D.current=void 0,I(P[0])):z(D.current)}}catch(P){_t(P)}finally{C(!1)}}},z=async P=>{if(await Z(),F.current&&F.current.length>0){const ee=await W.getHandler().searchAllIds({params:F.current,model:i,context:{...T==null?void 0:T(),...c},totalItems:2});ee.length===1?Y(ee[0]):(V(P),g(!0));return}V(P),g(!0)},Y=async P=>{C(!0);try{const ee=await W.getHandler().execute({action:"name_get",payload:[P],model:i,context:{...T==null?void 0:T(),...c}});I([P,ee[0][1]])}catch(ee){_t(ee)}finally{C(!1)}};async function Z(){f&&(F.current=await W.getHandler().evalDomain({domain:f,values:at({fields:O(),values:x()}),fields:O(),context:T()})),S&&S.length>0&&(F.current=F.current.concat(se.transformDomainForChildWidget({domain:S,widgetFieldName:u}))),M(F.current)}async function J(P){P.keyCode===13?(P.preventDefault(),P.stopPropagation(),await q()):P.code==="Backspace"&&L!==void 0&&(P.preventDefault(),P.stopPropagation(),I([void 0,""]))}const $=o&&!a?Ca:h.Input;return e.jsxs(h.Row,{gutter:8,wrap:!1,children:[e.jsx(h.Col,{flex:"auto",children:e.jsx($,{type:"text",value:b,disabled:a,onChange:K,style:p,onBlur:q,onKeyDown:J,suffix:e.jsx(Qt,{id:L,model:i,context:{...T==null?void 0:T(),...c}})})}),e.jsx(h.Col,{flex:"32px",style:{paddingRight:0},children:e.jsx(h.Button,{icon:e.jsx(B.FolderOpenOutlined,{}),disabled:L===void 0||k===""||b===void 0,onClick:()=>{m(!0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1})}),e.jsx(h.Col,{flex:"32px",style:{paddingLeft:0},children:e.jsx(h.Button,{icon:y?e.jsx(B.LoadingOutlined,{}):e.jsx(B.SearchOutlined,{}),disabled:a||y,onClick:()=>{_.current=!0,z(k)},style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},tabIndex:-1})}),e.jsx(er,{model:i,domain:A,context:{...T==null?void 0:T(),...c},visible:d,nameSearch:L?void 0:v,onSelectValues:P=>{g(!1),Y(P[0]),_.current=!1,D.current=void 0},onCloseModal:()=>{g(!1),_.current=!1}}),e.jsx(dt,{model:i,parentContext:{...T==null?void 0:T(),...c},id:r&&r[0],visible:w,onSubmitSucceed:P=>{m(!1),Y(P)},onCancel:()=>{m(!1)},mustClearAfterSave:!0,readOnly:a})]})},Ca=pt.default(h.Input)`
31
+ `,tn=t=>{const{visible:r,onCancel:n,items:s=[],onItemClicked:o}=t,{t:i}=l.useContext(ge);return e.jsx(h.Modal,{title:i("selectAction"),centered:!0,open:r,footer:null,destroyOnClose:!0,onCancel:n,maskClosable:!1,children:e.jsx(h.Space,{direction:"vertical",className:"w-full",children:s.map(a=>e.jsx(h.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),[u,f]=l.useState(!1),[p,d]=l.useState(),[g,y]=l.useState(),{t:m}=l.useContext(ge),w=l.useContext(Ye),{openRelate:C}=w||{},v=l.useContext(lt),{processAction:V}=v||{};if(!r)return null;async function _(){f(!0);try{const O=await W.getHandler().getView({model:n,type:"form",context:s});d(O);const{fields:T,arch:H}=O,F=(await W.getHandler().readObjects({model:n,ids:[r],fields:T,context:s}))[0];y({...it(F,T),active_id:r}),f(!1)}catch(O){f(!1),Ie(O);return}}function b(){var T;if(u)return e.jsx(h.Menu,{children:e.jsx("div",{style:{padding:15},children:e.jsx(h.Spin,{})})});if(!p||!p.toolbar)return e.jsx(h.Menu,{});const O=(T=p==null?void 0:p.toolbar)==null?void 0:T.relate.map(H=>e.jsx(h.Menu.Item,{children:H.name},H.id));return e.jsx(h.Menu,{onClick:E,children:[e.jsx(h.Menu.Item,{disabled:!p.toolbar.action||p.toolbar.action.length===0,icon:e.jsx(B.ThunderboltOutlined,{}),children:m("action")},"action"),e.jsx(h.Menu.Item,{disabled:!p.toolbar.print||p.toolbar.print.length===0,icon:e.jsx(B.PrinterOutlined,{}),children:m("report")},"print"),e.jsx(h.Menu.Divider,{}),e.jsx(h.Menu.ItemGroup,{title:e.jsxs(e.Fragment,{children:[e.jsx(B.EnterOutlined,{})," ",e.jsxs("span",{children:[" ",m("related")]})]}),children:O})]})}function E(O){if(O.key==="action")i(!0);else if(O.key==="print")c(!0);else{const T=p.toolbar.relate.find(H=>H.id===parseInt(O.key));if(!T)return;C({relateData:T,values:g,fields:p.fields,action_id:T.id,action_type:T.type})}}function D(O){i(!1),V==null||V({actionData:O,values:g,fields:p.fields,context:{active_id:r,active_ids:[r]}})}function N(O){c(!1),V==null||V({actionData:{...O,datas:{...O.datas||{},ids:[r]}},values:g,fields:p.fields})}return e.jsxs(e.Fragment,{children:[e.jsx(h.Dropdown,{overlay:b(),trigger:["click"],children:e.jsx(B.RightCircleOutlined,{style:{color:"rgba(0,0,0,.45)"},onClick:O=>{O.preventDefault(),_()}})}),e.jsx(tn,{visible:o,items:(S=p==null?void 0:p.toolbar)==null?void 0:S.action,onItemClicked:D,onCancel:()=>i(!1)}),e.jsx(tn,{visible:a,items:(x=p==null?void 0:p.toolbar)==null?void 0:x.print,onItemClicked:N,onCancel:()=>c(!1)})]})},Xi=t=>{const{m2oField:r}=t;return r?e.jsxs(h.Space,{children:[e.jsx(e.Fragment,{children:r.value}),e.jsx(Qt,{id:r.id,model:r.model})]}):e.jsx(e.Fragment,{})},Qi=t=>{const{value:r,context:n,selectionValues:s}=t,[o,i]=l.useState(),[a,c]=l.useState(!1),[u,f]=r?r.split(","):[],p=parseInt(f),d=l.useCallback(async()=>{if(!r||r&&o)return;c(!0);const y=await W.getHandler().execute({action:"name_get",payload:[p],model:u,context:n});i(y[0][1]),c(!1)},[r,o]);if(l.useEffect(()=>{d()},[r]),!r&&!a)return e.jsx(e.Fragment,{});if(a)return e.jsx(B.LoadingOutlined,{});const g=s.get(u);return e.jsxs(h.Space,{children:[e.jsx(e.Fragment,{children:`${g}:`}),e.jsx(e.Fragment,{children:o}),e.jsx(Qt,{id:p,model:u})]})};var rn={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Re,function(){var n=1e3,s=6e4,o=36e5,i="millisecond",a="second",c="minute",u="hour",f="day",p="week",d="month",g="quarter",y="year",m="date",w="Invalid Date",C=/^(\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,V={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 A=["th","st","nd","rd"],M=F%100;return"["+F+(A[(M-20)%10]||A[M]||A[0])+"]"}},_=function(F,A,M){var L=String(F);return!L||L.length>=A?F:""+Array(A+1-L.length).join(M)+F},b={s:_,z:function(F){var A=-F.utcOffset(),M=Math.abs(A),L=Math.floor(M/60),k=M%60;return(A<=0?"+":"-")+_(L,2,"0")+":"+_(k,2,"0")},m:function F(A,M){if(A.date()<M.date())return-F(M,A);var L=12*(M.year()-A.year())+(M.month()-A.month()),k=A.clone().add(L,d),I=M-k<0,K=A.clone().add(L+(I?-1:1),d);return+(-(L+(M-k)/(I?k-K:K-k))||0)},a:function(F){return F<0?Math.ceil(F)||0:Math.floor(F)},p:function(F){return{M:d,y,w:p,d:f,D:m,h:u,m:c,s:a,ms:i,Q:g}[F]||String(F||"").toLowerCase().replace(/s$/,"")},u:function(F){return F===void 0}},E="en",D={};D[E]=V;var N=function(F){return F instanceof T},S=function F(A,M,L){var k;if(!A)return E;if(typeof A=="string"){var I=A.toLowerCase();D[I]&&(k=I),M&&(D[I]=M,k=I);var K=A.split("-");if(!k&&K.length>1)return F(K[0])}else{var q=A.name;D[q]=A,k=q}return!L&&k&&(E=k),k||!L&&E},x=function(F,A){if(N(F))return F.clone();var M=typeof A=="object"?A:{};return M.date=F,M.args=arguments,new T(M)},O=b;O.l=S,O.i=N,O.w=function(F,A){return x(F,{locale:A.$L,utc:A.$u,x:A.$x,$offset:A.$offset})};var T=function(){function F(M){this.$L=S(M.locale,null,!0),this.parse(M)}var A=F.prototype;return A.parse=function(M){this.$d=function(L){var k=L.date,I=L.utc;if(k===null)return new Date(NaN);if(O.u(k))return new Date;if(k instanceof Date)return new Date(k);if(typeof k=="string"&&!/Z$/i.test(k)){var K=k.match(C);if(K){var q=K[2]-1||0,z=(K[7]||"0").substring(0,3);return I?new Date(Date.UTC(K[1],q,K[3]||1,K[4]||0,K[5]||0,K[6]||0,z)):new Date(K[1],q,K[3]||1,K[4]||0,K[5]||0,K[6]||0,z)}}return new Date(k)}(M),this.$x=M.x||{},this.init()},A.init=function(){var M=this.$d;this.$y=M.getFullYear(),this.$M=M.getMonth(),this.$D=M.getDate(),this.$W=M.getDay(),this.$H=M.getHours(),this.$m=M.getMinutes(),this.$s=M.getSeconds(),this.$ms=M.getMilliseconds()},A.$utils=function(){return O},A.isValid=function(){return this.$d.toString()!==w},A.isSame=function(M,L){var k=x(M);return this.startOf(L)<=k&&k<=this.endOf(L)},A.isAfter=function(M,L){return x(M)<this.startOf(L)},A.isBefore=function(M,L){return this.endOf(L)<x(M)},A.$g=function(M,L,k){return O.u(M)?this[L]:this.set(k,M)},A.unix=function(){return Math.floor(this.valueOf()/1e3)},A.valueOf=function(){return this.$d.getTime()},A.startOf=function(M,L){var k=this,I=!!O.u(L)||L,K=O.p(M),q=function(le,ce){var re=O.w(k.$u?Date.UTC(k.$y,ce,le):new Date(k.$y,ce,le),k);return I?re:re.endOf(f)},z=function(le,ce){return O.w(k.toDate()[le].apply(k.toDate("s"),(I?[0,0,0,0]:[23,59,59,999]).slice(ce)),k)},Y=this.$W,Z=this.$M,J=this.$D,$="set"+(this.$u?"UTC":"");switch(K){case y:return I?q(1,0):q(31,11);case d:return I?q(1,Z):q(0,Z+1);case p:var P=this.$locale().weekStart||0,ee=(Y<P?Y+7:Y)-P;return q(I?J-ee:J+(6-ee),Z);case f:case m:return z($+"Hours",0);case u:return z($+"Minutes",1);case c:return z($+"Seconds",2);case a:return z($+"Milliseconds",3);default:return this.clone()}},A.endOf=function(M){return this.startOf(M,!1)},A.$set=function(M,L){var k,I=O.p(M),K="set"+(this.$u?"UTC":""),q=(k={},k[f]=K+"Date",k[m]=K+"Date",k[d]=K+"Month",k[y]=K+"FullYear",k[u]=K+"Hours",k[c]=K+"Minutes",k[a]=K+"Seconds",k[i]=K+"Milliseconds",k)[I],z=I===f?this.$D+(L-this.$W):L;if(I===d||I===y){var Y=this.clone().set(m,1);Y.$d[q](z),Y.init(),this.$d=Y.set(m,Math.min(this.$D,Y.daysInMonth())).$d}else q&&this.$d[q](z);return this.init(),this},A.set=function(M,L){return this.clone().$set(M,L)},A.get=function(M){return this[O.p(M)]()},A.add=function(M,L){var k,I=this;M=Number(M);var K=O.p(L),q=function(Z){var J=x(I);return O.w(J.date(J.date()+Math.round(Z*M)),I)};if(K===d)return this.set(d,this.$M+M);if(K===y)return this.set(y,this.$y+M);if(K===f)return q(1);if(K===p)return q(7);var z=(k={},k[c]=s,k[u]=o,k[a]=n,k)[K]||1,Y=this.$d.getTime()+M*z;return O.w(Y,this)},A.subtract=function(M,L){return this.add(-1*M,L)},A.format=function(M){var L=this,k=this.$locale();if(!this.isValid())return k.invalidDate||w;var I=M||"YYYY-MM-DDTHH:mm:ssZ",K=O.z(this),q=this.$H,z=this.$m,Y=this.$M,Z=k.weekdays,J=k.months,$=function(ce,re,X,we){return ce&&(ce[re]||ce(L,I))||X[re].slice(0,we)},P=function(ce){return O.s(q%12||12,ce,"0")},ee=k.meridiem||function(ce,re,X){var we=ce<12?"AM":"PM";return X?we.toLowerCase():we},le={YY:String(this.$y).slice(-2),YYYY:O.s(this.$y,4,"0"),M:Y+1,MM:O.s(Y+1,2,"0"),MMM:$(k.monthsShort,Y,J,3),MMMM:$(J,Y),D:this.$D,DD:O.s(this.$D,2,"0"),d:String(this.$W),dd:$(k.weekdaysMin,this.$W,Z,2),ddd:$(k.weekdaysShort,this.$W,Z,3),dddd:Z[this.$W],H:String(q),HH:O.s(q,2,"0"),h:P(1),hh:P(2),a:ee(q,z,!0),A:ee(q,z,!1),m:String(z),mm:O.s(z,2,"0"),s:String(this.$s),ss:O.s(this.$s,2,"0"),SSS:O.s(this.$ms,3,"0"),Z:K};return I.replace(v,function(ce,re){return re||le[ce]||K.replace(":","")})},A.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},A.diff=function(M,L,k){var I,K=O.p(L),q=x(M),z=(q.utcOffset()-this.utcOffset())*s,Y=this-q,Z=O.m(this,q);return Z=(I={},I[y]=Z/12,I[d]=Z,I[g]=Z/3,I[p]=(Y-z)/6048e5,I[f]=(Y-z)/864e5,I[u]=Y/o,I[c]=Y/s,I[a]=Y/n,I)[K]||Y,k?Z:O.a(Z)},A.daysInMonth=function(){return this.endOf(d).$D},A.$locale=function(){return D[this.$L]},A.locale=function(M,L){if(!M)return this.$L;var k=this.clone(),I=S(M,L,!0);return I&&(k.$L=I),k},A.clone=function(){return O.w(this.$d,this)},A.toDate=function(){return new Date(this.valueOf())},A.toJSON=function(){return this.isValid()?this.toISOString():null},A.toISOString=function(){return this.$d.toISOString()},A.toString=function(){return this.$d.toUTCString()},F}(),H=T.prototype;return x.prototype=H,[["$ms",i],["$s",a],["$m",c],["$H",u],["$W",f],["$M",d],["$y",y],["$D",m]].forEach(function(F){H[F[1]]=function(A){return this.$g(A,F[0],F[1])}}),x.extend=function(F,A){return F.$i||(F(A,T,x),F.$i=!0),x},x.locale=S,x.isDayjs=N,x.unix=function(F){return x(1e3*F)},x.en=D[E],x.Ls=D,x.p={},x})})(rn);const et=rn.exports,Ri=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=zt(s);return e.jsx(h.Tooltip,{title:s,children:e.jsx(h.Avatar,{alt:s,style:{backgroundColor:i},children:o})})};var nn={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Re,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")}}})})(nn);const ea=nn.exports;var on={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Re,function(){return function(n,s,o){var i=s.prototype,a=function(d){return d&&(d.indexOf?d:d.s)},c=function(d,g,y,m,w){var C=d.name?d:d.$locale(),v=a(C[g]),V=a(C[y]),_=v||V.map(function(E){return E.slice(0,m)});if(!w)return _;var b=C.weekStart;return _.map(function(E,D){return _[(D+(b||0))%7]})},u=function(){return o.Ls[o.locale()]},f=function(d,g){return d.formats[g]||function(y){return y.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(m,w,C){return w||C.slice(1)})}(d.formats[g.toUpperCase()])},p=function(){var d=this;return{months:function(g){return g?g.format("MMMM"):c(d,"months")},monthsShort:function(g){return g?g.format("MMM"):c(d,"monthsShort","months",3)},firstDayOfWeek:function(){return d.$locale().weekStart||0},weekdays:function(g){return g?g.format("dddd"):c(d,"weekdays")},weekdaysMin:function(g){return g?g.format("dd"):c(d,"weekdaysMin","weekdays",2)},weekdaysShort:function(g){return g?g.format("ddd"):c(d,"weekdaysShort","weekdays",3)},longDateFormat:function(g){return f(d.$locale(),g)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};i.localeData=function(){return p.bind(this)()},o.localeData=function(){var d=u();return{firstDayOfWeek:function(){return d.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 f(d,g)},meridiem:d.meridiem,ordinal:d.ordinal}},o.months=function(){return c(u(),"months")},o.monthsShort=function(){return c(u(),"monthsShort","months",3)},o.weekdays=function(d){return c(u(),"weekdays",null,null,d)},o.weekdaysShort=function(d){return c(u(),"weekdaysShort","weekdays",3,d)},o.weekdaysMin=function(d){return c(u(),"weekdaysMin","weekdays",2,d)}}})})(on);const ta=on.exports,{useToken:ra}=h.theme;et.extend(ea),et.extend(ta);const Je={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"}},sn=t=>{const{ooui:r,showTime:n=!1}=t,{required:s}=r;return e.jsx(me,{required:s,...t,children:e.jsx(na,{ooui:r,showTime:n})})},na=t=>{const{value:r,onChange:n,ooui:s,showTime:o}=t,{id:i,readOnly:a,required:c}=s,{token:u}=ra(),f=c&&!a?{backgroundColor:u.colorPrimaryBg}:void 0,p=o?"time":"date",d=m=>{n==null||n(m)},g=m=>{if(m===null){d(void 0);return}d(m.format(Je[p].dateInternalFormat))},y=r?et(r,Je[p].dateInternalFormat):void 0;return e.jsx(h.DatePicker,{style:{width:"100%",...f},placeholder:o?Je.time.placeholder:Je.date.placeholder,disabled:a,id:i,picker:"date",showTime:o,format:Je[p].dateDisplayFormat,value:y,onChange:g})},oa=t=>e.jsx("div",{style:{display:"flex",justifyContent:"center",alignContent:"center"},children:e.jsx(h.Checkbox,{checked:t,disabled:!0})}),sa=t=>e.jsx(Xi,{m2oField:t}),ia=t=>e.jsx(Pt.Interweave,{content:t==null?void 0:t.replace(/(?:\r\n|\r|\n)/g,"<br>")}),aa=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=et(t,Je.date.dateInternalFormat).format(Je.date.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},la=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=et(t,Je.time.dateInternalFormat).format(Je.time.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},an=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} )`})},ca=t=>e.jsx(en,{value:t}),da=t=>e.jsx(e.Fragment,{children:Qr(t)}),ln=t=>e.jsx("div",{style:{textAlign:"right"},children:t}),ua=t=>e.jsx("img",{src:`data:image/*;base64,${t}`,style:{maxWidth:"50px",padding:"5px"}}),fa=(t,r,n,s)=>e.jsx(e.Fragment,{children:t?e.jsx(h.Tag,{color:n.colors[t],children:n.selectionValues.get(t)}):null}),ha=(t,r,n,s)=>e.jsx(e.Fragment,{children:n.selectionValues.get(t)}),pa=(t,r,n,s)=>e.jsx(e.Fragment,{children:e.jsx(Qi,{value:t,selectionValues:n.selectionValues,context:s})}),ga=(t,r,n,s)=>e.jsx(Ri,{ooui:n,value:t});function Ct(t){const{page:r=1,limit:n,total:s,treeView:o,results:i,onRequestPageChange:a,loading:c,onRowClicked:u,showPagination:f=!0,rowSelection:p,scrollY:d,colorsForResults:g={},onChangeSort:y,sorter:m,onFetchChildrenForRecord:w,childField:C,rootTree:v=!1,context:V}=t,[_,b]=l.useState([]),[E,D]=l.useState([]),N=l.useRef(!1),S=l.useRef(null),{t:x}=l.useContext(ge),O=l.useRef(n),T=l.useContext(Be),{title:H=void 0,setTitle:F=void 0}=(v?T:{})||{};l.useEffect(()=>{S.current=ot(o);const z=Ys(S.current,{boolean:oa,many2one:sa,text:ia,one2many:an,many2many:an,progressbar:ca,float_time:da,image:ua,integer:ln,float:ln,reference:pa,tag:fa,selection:ha,date:aa,datetime:la,avatar:ga},V);D(z),S.current.string&&H!==S.current.string&&(F==null||F(S.current.string))},[o]),l.useEffect(()=>{N.current=!1;const z=Kr(S.current,i);b(z),O.current=n},[i]);const A=(r-1)*O.current+1,M=A-1+_.length,L=s===void 0?null:s===0?x("no_results"):x("summary").replace("{from}",A==null?void 0:A.toString()).replace("{to}",M==null?void 0:M.toString()).replace("{total}",s==null?void 0:s.toString()),k=()=>!f||o.isExpandable||c?null:s===void 0?e.jsx(h.Spin,{}):e.jsxs(h.Row,{align:"bottom",className:"pb-4",children:[e.jsx(h.Col,{span:12,children:e.jsx(h.Pagination,{total:s,pageSize:O.current===0?s:O.current,current:r,showSizeChanger:!1,onChange:a})}),e.jsx(h.Col,{span:12,className:"text-right",children:L})]});function I(){var $;const Y=S.current.columns.filter(P=>P.sum!==void 0).map(P=>({label:P.sum,field:P.id}));if(!Y||Y.length===0)return null;let Z=[],J=(($=p==null?void 0:p.selectedRowKeys)==null?void 0:$.length)>0?_.filter(P=>p==null?void 0:p.selectedRowKeys.includes(P.id)):_;return Y.forEach(P=>{const ee=J.reduce((le,ce)=>ce[P.field]&&!isNaN(ce[P.field])?le+ce[P.field]:le,0);Z.push(`${P.label}: ${Math.round(ee*100)/100}`)}),e.jsx("div",{className:"p-1 pb-0 pl-2 mt-2 ",children:Z.join(", ")})}let K,q=d;if(S.current!==null){K=zi(E,_,600);const Y=S.current;d&&Y.columns.some(Z=>Z.sum!==void 0)&&(q=d-30)}return S.current===null?e.jsx(h.Spin,{style:{padding:"2rem"}}):e.jsxs("div",{children:[k(),e.jsx(ro.Table,{height:q,columns:K.columns,dataSource:_,loading:c,loadingComponent:e.jsx(h.Spin,{}),onRowStyle:z=>{if(g[z.id])return{color:g[z.id]}},onRowDoubleClick:u,onRowSelectionChange:p==null?void 0:p.onChange,onChangeSort:y,sorter:m,expandableOpts:w?{expandIcon:B.PlusSquareOutlined,collapseIcon:B.MinusSquareOutlined,loadingIcon:B.LoadingOutlined,onFetchChildrenForRecord:w,childField:C}:void 0}),I()]})}function ma(t,r){const{model:n,formView:s,treeView:o,onRowClicked:i,nameSearch:a,treeScrollY:c,domain:u=[],visible:f=!0,rootTree:p=!1,parentContext:d={},onChangeSelectedRowKeys:g}=t,[y,m]=l.useState(!1),[w,C]=l.useState(!1),v=l.useRef(!1),[V,_]=l.useState(),[b,E]=l.useState(),[D,N]=l.useState(),[S,x]=l.useState(),[O,T]=l.useState(200),H=l.useRef(),{height:F}=xt(),A=l.useContext(lt),{processAction:M}=A||{},L=l.useContext(Be),{setResults:k=void 0,setCurrentItemIndex:I=void 0,currentId:K=void 0,results:q=void 0,selectedRowItems:z=void 0,setSelectedRowItems:Y=void 0,searchParams:Z=[],setSearchParams:J=void 0,searchVisible:$=!0,setSearchVisible:P=void 0,sorter:ee=void 0,setSorter:le=void 0,setTotalItems:ce=void 0,setSearchTreeNameSearch:re=void 0,setTreeIsLoading:X=void 0,searchValues:we={},setSearchValues:Ce=void 0,limit:Ve=wt,setLimit:fe=void 0}=(p?L:{})||{},{submit:oe,clear:Se,fetchResults:ye,tableRefreshing:xe,searchFilterLoading:Ee,searchError:ke,page:He,offset:Me,getResults:R,requestPageChange:ae,changeSort:he,fetchChildrenForRecord:Oe,colorsForResults:ue,totalItems:Ae}=zr({model:V,setSearchTreeNameSearch:re,setSelectedRowItems:Y,setSearchParams:J,setSearchValues:Ce,searchParams:Z,setSearchVisible:P,setTreeIsLoading:X,nameSearch:a,searchNameGetDoneRef:v,context:d,formView:D,treeView:b,sorter:ee,setSorter:le,setCurrentItemIndex:I,setResultsActionView:k,resultsActionView:q,domain:u,currentId:K,setActionViewTotalItems:ce,limit:Ve,setLimit:fe});l.useImperativeHandle(r,()=>({refreshResults:()=>{v.current=!1,ye()},getFields:()=>b==null?void 0:b.fields,getDomain:()=>u})),l.useEffect(()=>{!w||f&&(v.current=!1,ye())},[He,Me,w,f,a]);const De=async()=>{C(!1),m(!0),x(void 0),X==null||X(!0);try{await Ze(),C(!0)}catch(pe){x(pe)}finally{m(!1),X==null||X(!1)}},Ze=async()=>{_(n);let pe=s;s||(pe=await W.getHandler().getView({model:n,type:"form",context:d}));let $e=o;o||($e=await W.getHandler().getView({model:n,type:"tree",context:d})),N(pe),E($e)};l.useEffect(()=>{De()},[n]);const Ke=pe=>{fe==null||fe(pe)},Ge=async pe=>{const{id:$e}=pe;H.current||(H.current=await W.getHandler().treeButOpen({id:b.view_id,model:V,context:d}));const Ue=H.current[0][2];await(M==null?void 0:M({actionData:Ue,fields:b.fields,values:{active_id:$e,...pe},context:d}))},Q=async pe=>{const{id:$e}=pe;if(b!=null&&b.isExpandable){try{await Ge(pe)}catch(Ue){Ie(Ue)}return}i({id:$e,model:V,formView:D,treeView:b})};function de(pe){const $e=R().filter(Ue=>pe.includes(Ue.id));Y==null||Y($e),g==null||g(pe)}function Te(){return b!=null&&b.isExpandable?F-160:F-(O+210)}const ie=()=>!b||!D?null:e.jsxs(e.Fragment,{children:[e.jsx(Xt,{fields:{...b.fields,...D.fields},searchFields:Wr([D.search_fields,b.search_fields]),formXml:D.arch,onClear:Se,limit:Ve,offset:Me,isSearching:Ee,onSubmit:oe,onLimitChange:Ke,setSearchFilterHeight:T,searchError:ke,searchVisible:$,searchValues:we}),e.jsx(Ct,{context:d,total:Ae,limit:Ve,page:He,treeView:b,results:R(),onRequestPageChange:ae,loading:xe,onRowClicked:Q,scrollY:c||Te(),colorsForResults:ue,rowSelection:{selectedRowKeys:z==null?void 0:z.map(pe=>pe.id),onChange:de},sorter:ee,onChangeSort:he,onFetchChildrenForRecord:b.isExpandable?Oe:void 0,childField:b.field_parent,rootTree:p})]}),ve=S||ke;return ve?e.jsx(h.Alert,{className:"mt-10",message:ve,type:"error",banner:!0}):e.jsx("div",{style:f?{}:{display:"none"},children:y?e.jsx(h.Spin,{}):ie()})}const Rt=l.forwardRef(ma),er=t=>{const{visible:r,onCloseModal:n,onSelectValues:s,model:o,nameSearch:i,domain:a,context:c={}}=t,[u,f]=l.useState(!1),{modalWidth:p,modalHeight:d}=xt(),{t:g}=l.useContext(ge),[y,m]=l.useState([]),w=async()=>{await new Promise(_=>setTimeout(_,5)),n()},C=async _=>{const{id:b}=_;s([b])};function v(){if(y.length===0){w();return}s(y)}const V=()=>e.jsxs(e.Fragment,{children:[e.jsx(Rt,{model:o,nameSearch:i,onRowClicked:C,treeScrollY:d*.3,domain:a,parentContext:c,onChangeSelectedRowKeys:_=>{m(_)}}),e.jsx(h.Divider,{}),e.jsx(h.Row,{justify:"end",children:e.jsxs(h.Space,{children:[e.jsx(h.Button,{icon:e.jsx(B.FileAddOutlined,{}),onClick:()=>{f(!0)},children:g("new")}),e.jsx(h.Button,{icon:e.jsx(B.CheckOutlined,{}),onClick:()=>{v()},type:"primary",children:g("ok")}),e.jsx(h.Button,{icon:e.jsx(B.CloseOutlined,{}),onClick:w,children:g("cancel")})]})})]});return e.jsxs(e.Fragment,{children:[e.jsx(h.Modal,{title:g("search"),centered:!0,width:p,open:r&&!u,closable:!0,onCancel:w,footer:null,destroyOnClose:!0,maskClosable:!1,children:V()}),e.jsx(dt,{model:o,visible:u,parentContext:c,onSubmitSucceed:_=>{f(!1),w(),s([_])},onCancel:()=>{f(!1),w()}})]})},{error:ya}=h.Modal,_t=t=>{ya({title:"Error",icon:e.jsx(B.ExclamationCircleOutlined,{}),centered:!0,content:t})},{defaultAlgorithm:wa,defaultSeed:va}=h.theme,cn=wa(va),dn=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(un,{ooui:r})})},un=t=>{const{value:r,onChange:n,ooui:s}=t,{required:o,relation:i,readOnly:a,context:c,id:u,domain:f}=s,p=o&&!a?{backgroundColor:cn.colorPrimaryBg}:void 0,[d,g]=l.useState(!1),[y,m]=l.useState(!1),[w,C]=l.useState(!1),[v,V]=l.useState(),_=l.useRef(!1),[b,E]=l.useState(""),D=l.useRef(),N=l.useContext(_e),{domain:S,getValues:x,getFields:O,getContext:T,elementHasLostFocus:H}=N||{},F=l.useRef([]),[A,M]=l.useState([]),L=r&&r[0]||void 0,k=r&&r[1]||"";l.useEffect(()=>{!Array.isArray(r)&&r&&Y(r)},[r]),l.useEffect(()=>{L&&k.length===0?Y(L):L&&k.length>0?E(k):!L&&!k&&E(D.current||"")},[r]);const I=P=>{n==null||n(P),H==null||H()},K=P=>{D.current=P.target.value,I([void 0,""])},q=async()=>{if(!w&&b!==k){if(await new Promise(P=>setTimeout(P,100)),_.current){I([void 0,""]);return}C(!0);try{if(F.current&&F.current.length>0)z(D.current);else{const P=await W.getHandler().nameSearch({model:i,payload:D.current,context:{...T==null?void 0:T(),...c}});P.length===1?(D.current=void 0,I(P[0])):z(D.current)}}catch(P){_t(P)}finally{C(!1)}}},z=async P=>{if(await Z(),F.current&&F.current.length>0){const ee=await W.getHandler().searchAllIds({params:F.current,model:i,context:{...T==null?void 0:T(),...c},totalItems:2});ee.length===1?Y(ee[0]):(V(P),g(!0));return}V(P),g(!0)},Y=async P=>{C(!0);try{const ee=await W.getHandler().execute({action:"name_get",payload:[P],model:i,context:{...T==null?void 0:T(),...c}});I([P,ee[0][1]])}catch(ee){_t(ee)}finally{C(!1)}};async function Z(){f&&(F.current=await W.getHandler().evalDomain({domain:f,values:at({fields:O(),values:x()}),fields:O(),context:T()})),S&&S.length>0&&(F.current=F.current.concat(se.transformDomainForChildWidget({domain:S,widgetFieldName:u}))),M(F.current)}async function J(P){P.keyCode===13?(P.preventDefault(),P.stopPropagation(),await q()):P.code==="Backspace"&&L!==void 0&&(P.preventDefault(),P.stopPropagation(),I([void 0,""]))}const $=o&&!a?Ca:h.Input;return e.jsxs(h.Row,{gutter:8,wrap:!1,children:[e.jsx(h.Col,{flex:"auto",children:e.jsx($,{type:"text",value:b,disabled:a,onChange:K,style:p,onBlur:q,onKeyDown:J,suffix:e.jsx(Qt,{id:L,model:i,context:{...T==null?void 0:T(),...c}})})}),e.jsx(h.Col,{flex:"32px",style:{paddingRight:0},children:e.jsx(h.Button,{icon:e.jsx(B.FolderOpenOutlined,{}),disabled:L===void 0||k===""||b===void 0,onClick:()=>{m(!0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1})}),e.jsx(h.Col,{flex:"32px",style:{paddingLeft:0},children:e.jsx(h.Button,{icon:w?e.jsx(B.LoadingOutlined,{}):e.jsx(B.SearchOutlined,{}),disabled:a||w,onClick:()=>{_.current=!0,z(k)},style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},tabIndex:-1})}),e.jsx(er,{model:i,domain:A,context:{...T==null?void 0:T(),...c},visible:d,nameSearch:L?void 0:v,onSelectValues:P=>{g(!1),Y(P[0]),_.current=!1,D.current=void 0},onCloseModal:()=>{g(!1),_.current=!1}}),e.jsx(dt,{model:i,parentContext:{...T==null?void 0:T(),...c},id:r&&r[0],visible:y,onSubmitSucceed:P=>{m(!1),Y(P)},onCancel:()=>{m(!1)},mustClearAfterSave:!0,readOnly:a})]})},Ca=pt.default(h.Input)`
32
32
  .ant-input {
33
33
  background-color: ${cn.colorPrimaryBg};
34
34
  }
35
- `,fn=Pe.default.createContext(null),Sa=({children:t,initialView:r})=>{const[n,s]=l.useState(r),[o,i]=l.useState(0),[a,c]=l.useState(!1);return e.jsx(fn.Provider,{value:{currentView:n,setCurrentView:s,itemIndex:o,setItemIndex:i,manualTriggerChange:a,setManualTriggerChange:c},children:t})},{getValueForOperator:hn}=se.graphProcessor,Dt=.7,kt=30,pn=t=>{const{model:r,domain:n,context:s,colorCondition:o,totalDomain:i,showPercent:a=!1,icon:c,suffix:u,field:f,operator:p,manualIds:d}=t,[g,w]=l.useState(!1),[m,y]=l.useState(),[C,v]=l.useState(),[V,_]=l.useState(),[b,E]=l.useState(0),[D,N]=l.useState(0),[S,x]=l.useState(),[O,T]=l.useState(),[H,F]=l.useState();l.useEffect(()=>{L()},[r,o]);async function A({domain:k,isTotal:I}){if(I)return await M({domain:k});if(f&&p){const K=d||await W.getHandler().searchAllIds({params:k,model:r,context:s}),q=await W.getHandler().readObjects({model:r,ids:K,fieldsToRetrieve:[f],context:s});return hn({values:q.map(z=>z[f]),operator:p})}else return d?d.length:await W.getHandler().searchCount({model:r,params:k,context:s})}async function M({domain:k}){if(f&&p){const I=await W.getHandler().searchAllIds({params:k,model:r,context:s}),K=await W.getHandler().readObjects({model:r,ids:I,fieldsToRetrieve:[f],context:s});return hn({values:K.map(q=>q[f]),operator:p})}else return await W.getHandler().searchCount({model:r,params:k,context:s})}async function L(){w(!0);let k,I;try{const K=await A({domain:n,isTotal:!1});if(y(K),i){const q=await W.getHandler().evalDomain({domain:i,values:{},context:s});k=await A({domain:q,isTotal:!0}),_(k)}if(k?(I=Math.round(K/k*100*100)/100,v(I)):v(0),o){const q=await W.getHandler().parseCondition({condition:o,values:{value:K,percent:I},context:s});x(q)}if(c)if(c.indexOf(":")!==-1){const q=await W.getHandler().parseCondition({condition:c,values:{value:K,percent:I},context:s});T(q)}else T(c)}catch(K){F(JSON.stringify(K))}w(!1)}return H?e.jsx(h.Alert,{className:"mt-10",message:H,type:"error",banner:!0}):g?e.jsx("div",{style:{padding:"1rem"},children:e.jsx(B.LoadingOutlined,{style:{height:"12px"}})}):e.jsx(Ht.default,{bounds:!0,onResize:k=>{var I,K;E((I=k.bounds)==null?void 0:I.height),N((K=k.bounds)==null?void 0:K.width)},children:({measureRef:k})=>a?e.jsx(xa,{value:m,total:V,percent:C,measureRef:k,height:b,width:D,color:S,icon:O,suffix:u}):e.jsx(ba,{value:m,total:V,measureRef:k,height:b,width:D,color:S,icon:O,suffix:u})})};function gn(t,r){const s=document.createElement("canvas").getContext("2d");return s.font=r||getComputedStyle(document.body).font,s.measureText(t).width}function ba({measureRef:t,width:r,height:n,total:s,value:o,color:i,icon:a,suffix:c}){let u=n*Dt<kt?kt:n*Dt;const f=o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0});let p=s?`${f}/${s}`:`${f}`;c&&(p+=" "+c);let d=gn(p,`bold ${Math.floor(u*1.03)}px sans-serif`);a&&(d=d*2),d>=r*.85&&(u=r*.85/d*u);const g=a&&qe(a);return e.jsx("div",{ref:t,style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},children:e.jsxs(Kt.default,{style:{fontSize:u,margin:0,color:i},children:[g&&e.jsx(g,{style:{fontSize:u*.7}}),g?` ${p}`:p]})})}function xa({measureRef:t,height:r,width:n,percent:s,total:o,value:i,color:a,icon:c,suffix:u}){const f=r*.65;let p=f*Dt<kt?kt:f*Dt;const d=i==null?void 0:i.toLocaleString("es-ES",{useGrouping:!0});let g=o?`${d}/${o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0})}`:`${d}`;u&&(g+=" "+u);const w=`${s==null?void 0:s.toLocaleString("es-ES",{useGrouping:!0})}%`;let m=gn(w,`bold ${Math.floor(p*1.03)}px sans-serif`);c&&(m=m*1.5);const y=c&&qe(c);return(m>=n*.85||p*2<f)&&(p=n*.85/m*p),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(h.Row,{align:"middle",children:[y&&e.jsx(h.Col,{style:{fontSize:p*1,color:a,paddingRight:"10px"},children:e.jsx(y,{})}),e.jsxs(h.Col,{children:[e.jsx(Kt.default,{style:{fontSize:p*.8,margin:0,color:a},children:y?` ${s}%`:`${s}%`}),e.jsx(Kt.default,{style:{fontSize:p*.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"&&Ta(t))return parseFloat(t).toLocaleString("es-ES",{useGrouping:!0});if(Fa(t))return t.toLocaleString("es-ES",{useGrouping:!0});if(Oa(t)){const r=_a(t);return r===null?t:Xe(t,Et.input[r]).format(Et.output[r])}else return t},Ta=t=>/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/.test(t),Fa=t=>typeof t=="number"&&!isNaN(t),mn={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 Oa(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 _a(t){for(const r in Et.input)if(Xe(t,Et.input[r],!0).isValid())return r;return null}const{processGraphData:Da}=se.graphProcessor,{getFieldsToRetrieve:ka}=se.graphFieldUtils,Va=t=>{const{model:r,domain:n=[],context:s={},xml:o,limit:i,uninformedString:a,manualIds:c}=t,[u,f]=l.useState(!1),[p,d]=l.useState(),[g,w]=l.useState(),[m,y]=l.useState(),[C,v]=l.useState("line");return Re.default(()=>{(async()=>{f(!0),d(void 0);const V=se.parseGraph(o);v(V.type||"line");const _=ka({ooui:V});let b,E;try{({values:b,fields:E}=await Ma({model:r,domain:n,context:s,limit:i,order:V.timerange?V.x.name:null,fields:_,manualIds:c}))}catch(D){d("Error fetching graph data values: "+JSON.stringify(D)),f(!1);return}try{if(!b||!E){d("No values or fields returned"),f(!1);return}y(b);const D=Da({ooui:V,values:b,fields:E,options:{uninformedString:a}});w(D)}catch(D){d("Error processing graph data: "+D),f(!1);return}f(!1)})()},[o,r,i,s,n]),{loading:u,error:p,type:C,values:g,evaluatedEntries:m}};async function Ea({model:t,context:r,fields:n}){return await W.getHandler().getFields({model:t,context:r,fields:n})}async function Ma({fields:t,model:r,domain:n,context:s,order:o,limit:i,manualIds:a}){const c=await Ea({model:r,context:s,fields:t});if(a){let f=await W.getHandler().readObjects({model:r,ids:a,fieldsToRetrieve:t,context:s});return o&&(f=[...f].sort((p,d)=>p[o]-d[o])),{values:f,fields:c}}return{values:await W.getHandler().search({model:r,params:n,fields:t,context:s,limit:i,order:o}),fields:c}}const Ia={line:Bt.Line,bar:Bt.Column,pie:Bt.Pie},Aa=t=>{var v;const{model:r,domain:n,context:s,xml:o,limit:i,manualIds:a}=t,{t:c}=l.useContext(ge),{error:u,loading:f,values:p,type:d,evaluatedEntries:g}=Va({model:r,xml:o,limit:i,domain:n,context:s,uninformedString:c("uninformed"),manualIds:a});if(u)return e.jsx(h.Alert,{message:u,type:"error",banner:!0});if(f)return e.jsx(h.Spin,{});if(!p)return e.jsx(h.Alert,{message:"No data to display",type:"info"});const{data:w,isGroup:m,isStack:y}=p,C=Ia[d];return C?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(C,{...$a({type:d,data:w,isGroup:m,isStack:y})})]}):e.jsx(e.Fragment,{children:`Unknown graph type: ${d}`})};function $a(t){const{type:r,data:n,isGroup:s,isStack:o}=t;let i=mn[r];return i||(i=mn.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 La=(t,r)=>{const{view_id:n,model:s,context:o,domain:i,limit:a,manualIds:c}=t,[u,f]=l.useState(!1),[p,d]=l.useState(),[g,w]=l.useState(),m=l.useContext(Be),{setGraphIsLoading:y=void 0}=m||{};l.useImperativeHandle(r,()=>({refresh:()=>{C()}})),l.useEffect(()=>{C()},[n]);async function C(){f(!0),y==null||y(!0);try{const v=await W.getHandler().getView({model:s,id:n,type:"graph",context:o});w(v.arch);const V=se.parseGraph(v.arch);d(V)}catch(v){return console.error(v),e.jsx(e.Fragment,{children:JSON.stringify(v)})}f(!1),y==null||y(!1)}if(u)return e.jsx("div",{style:{width:"100%",display:"flex",height:"20%",justifyContent:"center",alignContent:"center",padding:"1rem"},children:e.jsx(B.LoadingOutlined,{style:{height:"12px"}})});if(!p)return null;switch(p.type){case"indicatorField":case"indicator":{const v=p,V=v.type==="indicatorField"?{field:v.field,operator:v.operator}:{};return e.jsx(pn,{showPercent:v.showPercent,totalDomain:v.totalDomain,colorCondition:v.color,model:s,context:o,domain:i,icon:v.icon,suffix:v.suffix,manualIds:c,...V})}case"line":case"bar":case"pie":return e.jsx(Aa,{model:s,context:o,domain:i,xml:g,limit:a,manualIds:c});default:return e.jsx(e.Fragment,{children:`Graph ${p.type} not implemented`})}},Mt=l.forwardRef(La),{confirm:Na}=h.Modal,Pa=({onOk:t,lang:r})=>{Na({title:be("removeItems",r),icon:e.jsx(B.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmRemove",r),okText:be("yesConfirmRemove",r),onOk:t,cancelText:be("cancel",r)})},{confirm:Ba}=h.Modal,Ha=({onOk:t,lang:r})=>{Ba({title:be("unlinkItems",r),icon:e.jsx(B.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmUnlink",r),okText:be("yesConfirmUnlink",r),onOk:t,cancelText:be("cancel",r)})},{useToken:Ka}=h.theme,Wa=t=>{const{title:r,readOnly:n,onCreateItem:s,onToggleViewMode:o,mode:i,onDelete:a,totalItems:c,currentItemIndex:u,onPreviousItem:f,onNextItem:p,isMany2Many:d,onSearchItem:g,selectedRowKeys:w,showCreateButton:m,showToggleButton:y}=t,{token:C}=Ka();function v(){return e.jsx("div",{className:"inline-block w-3"})}function V(){return e.jsx("div",{className:"flex flex-grow h-8 text-white",style:{borderRadius:C.borderRadius,backgroundColor:C.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 _(){return e.jsx(Le,{tooltip:d?"Unlink":"Delete",icon:d?e.jsx(B.ApiOutlined,{}):e.jsx(B.DeleteOutlined,{}),onClick:a,disabled:c===0||n||i!=="form"&&w.length===0})}function b(){let D="_";return c===0?D="_":D=(u+1).toString(),e.jsxs("span",{className:"pl-1 pr-1",children:["(",D,"/",c,")"]})}function E(){return e.jsxs(e.Fragment,{children:[v(),e.jsx(Le,{tooltip:"Previous item",icon:e.jsx(B.LeftOutlined,{}),onClick:f}),b(),e.jsx(Le,{tooltip:"Next item",icon:e.jsx(B.RightOutlined,{}),onClick:p})]})}return e.jsxs("div",{className:"flex mb-2",children:[V(),e.jsxs("div",{className:"flex-none h-8 pl-2",children:[i!=="graph"&&m&&e.jsx(Le,{tooltip:"Create new item",icon:e.jsx(B.FileAddOutlined,{}),disabled:n,onClick:s}),d&&m&&e.jsx(Le,{tooltip:"Search existing item",icon:e.jsx(B.SearchOutlined,{}),disabled:n,onClick:g}),i!=="graph"&&v(),i!=="graph"&&_(),i==="form"&&E(),v(),y&&e.jsx(Le,{tooltip:"Toggle view mode",icon:e.jsx(B.AlignLeftOutlined,{}),onClick:o})]})]})},qa={form:se.Form,tree:se.Tree,graph:Mt};function Ya(t){const r=t.map(s=>s.id);return t.filter((s,o)=>{const{id:i}=s;return!r.includes(i,o+1)})}const Ga=t=>{var Ge;const{value:r,onChange:n,ooui:s,views:o}=t,{items:i=[]}=r||{},{currentView:a,setCurrentView:c,itemIndex:u,setItemIndex:f}=l.useContext(fn),p=l.useContext(_e),{activeId:d,getFields:g,getValues:w,getContext:m,domain:y}=p||{},{lang:C,t:v}=l.useContext(ge),[V,_]=l.useState(!1),[b,E]=l.useState(!1),[D,N]=l.useState(),[S,x]=l.useState(!1),[O,T]=l.useState(!1),[H,F]=l.useState(),[A,M]=l.useState([]),[L,k]=l.useState(!1),I=l.useRef([]),[K,q]=l.useState(),z=l.useRef(),[Y,Z]=l.useState(void 0),{readOnly:J,relation:$,context:P,domain:ee}=s,le=s.type==="many2many",{id:ce}=s,re=i.filter(Q=>(Q.values||Q.treeValues)&&Q.operation!=="pendingRemove"),X=l.useRef();l.useEffect(()=>{if(X.current!==a){X.current=a,we();return}we()},[i,a]);const we=l.useCallback(()=>{(a==="form"&&i.some(Q=>!Q.values)||a==="tree"&&i.some(Q=>!Q.treeValues))&&Ve()},[i,a]);l.useEffect(()=>{oe()},[y]);const Ce=Q=>{var de,Te;n==null||n({fields:((de=o.get("form"))==null?void 0:de.fields)||((Te=o.get("tree"))==null?void 0:Te.fields),items:Ya(Q)})},Ve=async()=>{await fe(),u>re.length-1&&u!==0&&f(0)},fe=async Q=>{var de,Te,ie;E(!0),_(!1),N(void 0);try{const[ve,pe]=await Ut({treeView:{arch:(de=o.get("tree"))==null?void 0:de.arch,fields:(Te=o.get("tree"))==null?void 0:Te.fields},formView:{fields:((ie=o.get("form"))==null?void 0:ie.fields)||{}},model:$,items:i,context:{...m==null?void 0:m(),...P},currentView:Q||a});return z.current||(z.current=ve.map($e=>$e.id)),(a||Q)==="tree"&&pe&&Z(pe),Ce(ve),ve}catch(ve){N(ve)}finally{E(!1)}};async function oe(){ee&&(I.current=await W.getHandler().evalDomain({domain:ee,values:at({fields:g(),values:w()}),fields:g(),context:m()})),y&&y.length>0&&(I.current=I.current.concat(se.transformDomainForChildWidget({domain:y,widgetFieldName:ce})))}const Se=()=>{const Q=Array.from(o.keys()),de=Q[(Q.indexOf(a)+1)%Q.length];a==="form"?ke(()=>{c(de)}):c(de)},ye=()=>{u>0&&(a==="form"?ke(()=>{f(u-1)}):f(u-1))},xe=()=>{const Q=re.length;u<Q-1&&(a==="form"?ke(()=>{f(u+1)}):f(u+1))},Ee=async()=>{const Q=re[u].id,de=(await W.getHandler().readObjects({model:$,ids:[Q],fields:o.get("form").fields,context:{...m==null?void 0:m(),...P}}))[0],Te=(await W.getHandler().readObjects({model:$,ids:[Q],fields:o.get("tree").fields,context:{...m==null?void 0:m(),...P}}))[0],ie=i.map(ve=>ve.id===Q?{...ve,operation:"original",values:de,treeValues:Te}:ve);Ce(ie)},ke=Q=>{V?yt({lang:C,onOk:()=>{Ee(),Q(),_(!1)}}):Q()},He=()=>{if(le){Ha({lang:C,onOk:()=>{a==="form"?ae():he()}});return}Pa({lang:C,onOk:()=>{a==="form"?ae():he()}})},Me=async()=>{const{inv_field:Q}=s;let de;Q&&d&&(de={[Q]:d}),a==="form"?ke(()=>{k(!0),F({defaultValues:de}),x(!0)}):(k(!0),F({defaultValues:de}),x(!0))},R=async()=>{a==="form"?ke(()=>{T(!0)}):T(!0)},ae=async()=>{E(!0),_(!1),N(void 0);try{if(re[u].id>0){const Q=i.map(de=>de.id===re[u].id?{...de,operation:"pendingRemove"}:de);Ce(Q)}else Ce(i.filter(Q=>Q.id!==re[u].id))}catch(Q){N(Q)}f(0),E(!1)},he=async()=>{const Q=re.filter(de=>A.includes(de.id));E(!0),_(!1),N(void 0);try{const de=Q.map(ie=>ie.id),Te=i.filter(ie=>!(de.includes(ie.id)&&ie.id<0)).map(ie=>de.includes(ie.id)?{...ie,operation:"pendingRemove"}:ie);Ce(Te)}catch(de){N(de)}f(0),E(!1)},Oe=(Q,de,Te)=>{let ie;if(Q)ie=i.map(ve=>ve.id===Q?{id:Q,operation:Q>0?"pendingUpdate":"pendingCreate",values:{...Te,id:Q},treeValues:{...Te,id:Q}}:ve);else{const ve=Gs(i);ie=i.concat({id:ve,operation:"pendingCreate",values:{...Te,id:ve},treeValues:{...Te,id:ve}})}Ce(ie),L||x(!1)},ue=async Q=>{const{id:de}=Q;let Te=i;const ie=i.find(ve=>ve.id===de);(ie==null?void 0:ie.values)===void 0&&(Te=await fe("form")),F(Te.find(ve=>ve.id===de)),k(!1),x(!0)},Ae=async Q=>{E(!0);let de=i;const Te=Q.filter(ie=>!i.find(ve=>ve.id===ie));try{for(const ie of Te){const ve=(await W.getHandler().readObjects({model:$,ids:[ie],fields:o.get("form").fields,context:{...m==null?void 0:m(),...P}}))[0],pe=(await W.getHandler().readObjects({model:$,ids:[ie],fields:o.get("tree").fields,context:{...m==null?void 0:m(),...P}}))[0];de.push({id:ie,operation:"pendingLink",values:ve,treeValues:pe})}Ce(de)}catch(ie){N(ie)}finally{E(!1)}};function De(){const Q=qa[a];if(a==="graph")return se.parseGraph(o.get("graph").arch).string;{const de=new Q(o.get(a).fields);return de.parse(o.get(a).arch),de.string}}const Ze=()=>{var de,Te,ie,ve;if(a==="form")return re.length===0?v("noCurrentEntries"):a!==X.current&&i.some(pe=>!pe.values)?e.jsx(h.Spin,{}):e.jsx(ct,{formView:o.get("form"),values:(de=re[u])==null?void 0:de.values,parentContext:{...m==null?void 0:m(),...P},model:$,id:(Te=re[u])==null?void 0:Te.id,submitMode:"values",onFieldsChange:pe=>{var je;const $e=(je=re[u])==null?void 0:je.id,Ue=i.map(Qe=>Qe.id===$e?{...Qe,operation:Qe.operation==="original"?"pendingUpdate":Qe.operation,values:{...pe,id:$e},treeValues:{...pe,id:$e}}:Qe);Ce(Ue),_(!0)},readOnly:J});let Q=[];if(re.some(pe=>pe.treeValues)&&(Q=K?st({resultsToSort:re.map(pe=>pe.treeValues),sorter:K,fields:{...o.get("tree").fields,...((ie=o.get("form"))==null?void 0:ie.fields)||{}}}):re.map(pe=>pe.treeValues)),a==="tree")return e.jsx(Ct,{total:re.length,limit:re.length,treeView:o.get("tree"),results:Q,loading:b,onRowClicked:((ve=o.get("form"))==null?void 0:ve.fields)!==void 0?ue:void 0,showPagination:!1,rowSelection:{selectedRowKeys:A,onChange:M},sorter:K,onChangeSort:q,context:{...m==null?void 0:m(),...P},colorsForResults:Y});if(a==="graph"){const pe=[[`${s.inv_field}`,"=",d]];return e.jsx(Mt,{view_id:o.get("graph").view_id,model:s.relation,domain:pe,context:{...m==null?void 0:m(),...P},limit:0})}};if(D)return e.jsx(h.Alert,{className:"mt-10",message:D,type:"error",banner:!0});const Ke=L;return b?e.jsx(h.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(Wa,{mode:a,title:De(),readOnly:J,isMany2Many:le,formHasChanges:V,totalItems:re.length,currentItemIndex:u,onDelete:He,onCreateItem:Me,onToggleViewMode:Se,onPreviousItem:ye,onNextItem:xe,onSearchItem:R,selectedRowKeys:A,showCreateButton:((Ge=o.get("form"))==null?void 0:Ge.fields)!==void 0,showToggleButton:o.size>1}),Ze(),e.jsx(dt,{formView:o.get("form"),model:$,id:H==null?void 0:H.id,submitMode:"values",values:H==null?void 0:H.values,defaultValues:H==null?void 0:H.defaultValues,visible:S,onSubmitSucceed:Oe,parentContext:{...m==null?void 0:m(),...P},onCancel:()=>{k(!1),x(!1)},readOnly:J,mustClearAfterSave:Ke}),e.jsx(er,{domain:I.current,model:$,context:{...m==null?void 0:m(),...P},visible:O,onSelectValues:async Q=>{T(!1),Ae(Q)},onCloseModal:()=>{T(!1)}})]})},yn=t=>{const{ooui:r}=t,{mode:n,relation:s,views:o,required:i,context:a}=r;let c;const[u,f]=l.useState(!0),[p,d]=l.useState(),[g,w]=l.useState(new Map),m=l.useContext(_e),{getContext:y}=m||{};Re.default(()=>{v()},[r]);const C=async _=>o&&o[_]?o[_]:await W.getHandler().getView({model:s,type:_,context:{...y==null?void 0:y(),...a}}),v=async()=>{f(!0),d(void 0);try{if(n&&n.length>0){for(const _ of n){const b=await C(_);g.set(_,b)}w(g)}else{const _=await C("form"),b=await C("tree");g.set("form",_),g.set("tree",b),w(g)}}catch(_){d(JSON.stringify(_))}finally{f(!1)}};if(n&&n.length>0?c=n[0]:c="tree",u)return e.jsx(h.Spin,{});if(p)return e.jsx(h.Alert,{className:"mt-10",message:p,type:"error",banner:!0});const V=async(_,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(Sa,{initialView:c,children:e.jsx(me,{required:i,type:"array",validator:V,...t,children:e.jsx(Ga,{ooui:r,views:g})})})},{useToken:Ua}=h.theme,wn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"number",...t,children:e.jsx(ja,{ooui:r})})},ja=t=>{const{ooui:r,value:n,onChange:s}=t,{id:o,readOnly:i,required:a}=r,{token:c}=Ua(),u=a&&!i?{backgroundColor:c.colorPrimaryBg}:void 0,f=l.useRef(),[p,d]=l.useState(),g=l.useContext(_e),{elementHasLostFocus:w}=g||{};l.useEffect(()=>{d(Qr(n))},[n]);const m=v=>{s==null||s(v)};function y(v){f.current=v.target.value,d(v.target.value)}async function C(){m(Ji(p)),await new Promise(v=>setTimeout(v,300)),w==null||w()}return e.jsx(h.Input,{value:p,disabled:i,className:"w-full",style:u,id:o,placeholder:"00:00",onChange:y,onBlur:C})};function rr(t){const{ooui:r,showLabel:n=!0,responsiveBehaviour:s}=t,o=qe(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:za}=h.Tabs;function vn(t){const{ooui:r,responsiveBehaviour:n}=t,s=r.pages;function o(i){if(i){const a=qe(i);return a&&e.jsx(a,{})}}return e.jsx(h.Tabs,{defaultActiveKey:"1",tabPosition:r.tabPosition,children:s.filter(i=>!i.invisible).map(i=>e.jsx(za,{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:Ja}=h.theme,{TextArea:nr}=h.Input,Cn=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o,height:i,translatable:a}=r,{token:c}=Ja(),u=o&&!s?{backgroundColor:c.colorPrimaryBg}:void 0,f=l.useContext(_e),{elementHasLostFocus:p}=f||{};return e.jsx(me,{required:o,...t,children:a?e.jsx(Za,{field:n,height:i,requiredStyle:u}):e.jsx(nr,{disabled:s||a,style:{height:i?i+"px":"100%",...u},rows:4,onBlur:p})})},Za=({value:t,field:r,requiredStyle:n,onChange:s,height:o})=>{const i=l.useContext(_e),{activeId:a,activeModel:c,fetchValues:u,formHasChanges:f,elementHasLostFocus:p}=i||{},[d,g]=l.useState(!1),{t:w}=l.useContext(ge);return a?e.jsxs(e.Fragment,{children:[e.jsx("div",{onClick:()=>{if(f!=null&&f()){ze(w("saveBeforeTranslate"));return}d||g(!0)},children:e.jsx(nr,{value:t,onChange:m=>{s==null||s(m.target.value)},style:{height:o?o+"px":"100%",cursor:"pointer",...n},id:r,disabled:!0,rows:4,onBlur:p})}),e.jsx(Fr,{id:a,model:c,field:r,visible:d,onCloseModal:()=>{g(!1)},onSubmitSucceed:()=>{g(!1),u==null||u()}})]}):e.jsxs(e.Fragment,{children:[e.jsx(h.Row,{gutter:8,wrap:!1,children:e.jsx(nr,{value:t,onChange:m=>{s==null||s(m.target.value)},style:{height:o?o+"px":"100%",...n},id:r,rows:4,onBlur:p})}),e.jsx(h.Row,{justify:"end",style:{paddingTop:5},children:e.jsx(Le,{tooltip:w("translate"),icon:e.jsx(B.TranslationOutlined,{}),onClick:async()=>{f!=null&&f()?ze(w("saveBeforeTranslate")):ze(w("enterTextBeforeTranslate"))},children:w("translate")})})]})},Sn=t=>{const{ooui:r}=t,{label:n,icon:s}=r,o=qe(s||"");return e.jsx(h.Divider,{orientation:"left",className:"text-sm",children:(o||n)&&e.jsxs(h.Space,{children:[o?e.jsx(o,{}):null,n]})})},Xa=({model:t,context:r,locale:n,selectedRegistersToExport:s,domain:o,limit:i,onClose:a})=>{const c=l.useRef({}),u=l.useRef(new Map),f=l.useCallback(async C=>{if(C.selectedKeys===void 0||C.selectedKeys.length===0){ze(be("selectAtLeastOneField",n));return}let v=o;C.registersAmount==="selected"&&(s==null?void 0:s.length)!==0&&(v=[["id","in",s==null?void 0:s.map(b=>b.id)]]);const{datas:V}=await W.getHandler().exportData({model:t,fields:nl({keys:C.selectedKeys,fields:c.current}),domain:v,limit:C.registersAmount==="all"?0:i,context:r,format:C.exportType});a(),await new Promise(b=>setTimeout(b,200));const _=await nt(V);Tt(V,_.mime)},[n,t,o,i,r,a]),p=l.useCallback(async()=>{const C=await W.getHandler().getFields({model:t,context:r,fields:[]});return c.current["/"]=C,bn({fields:C})},[t,r,c]),d=l.useCallback(async C=>{const V=sr(C,c.current)[or(C)],_=V.relation,b=await W.getHandler().getFields({model:_,context:r,fields:[]});for(const[E,D]of Object.entries(b))b[E].string=Ra({parentTitle:V.string,title:D.string});return c.current[C]=b,bn({fields:b,parentKey:C})},[c.current,t,r]),g=l.useCallback(async()=>{const C=await el({model:t,context:r}),v=await rl({predefinedExports:C,fields:c.current,onGetFieldChilds:d});return{predefinedExports:C.map(_=>({..._,fields:_.fields.map(b=>{const E=or(b.key),N=sr(b.key,c.current)[E];return{key:b.key,title:N.string}})})),keysWithChilds:v}},[c.current]),w=l.useCallback(async C=>{const v=await y("ir.exports"),V=await y("ir.exports.line"),_=await W.getHandler().create({model:"ir.exports",values:{name:C.name,resource:t},fields:v,context:r});return await Promise.all(C.fields.map(async b=>await W.getHandler().create({model:"ir.exports.line",values:{name:b.key,export_id:_},fields:V,context:r}))),{...C,id:_}},[]),m=l.useCallback(async C=>{await W.getHandler().delete({model:"ir.exports",ids:[C.id]})},[]),y=l.useCallback(async C=>{if(u.current.has(C))return u.current.get(C);const v=W.getHandler().getFields({model:C,context:r,fields:[]});u.current.set(C,v)},[u,r]);return{onGetFields:p,onGetFieldChilds:d,onExport:f,onGetPredefinedExports:g,onSavePredefinedExport:w,onRemovePredefinedExport:m}},bn=({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=xn(o);n.push({key:Qa({key:s,parentKey:r}),title:o.string,tooltip:o.help,required:o.required,isLeaf:!i})}return n},xn=t=>t.type==="many2one"||t.type==="one2many"||t.type==="many2many",Qa=({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)],Ra=({title:t,parentTitle:r})=>`${r?r+" \u2192 ":""}${t}`,el=async({model:t,context:r})=>{const n=await W.getHandler().search({model:"ir.exports",params:[["resource","=",t]],context:r}),s=n.flatMap(i=>i.export_fields),o=await W.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(u=>u.id===a).name}))}))},tl=({fields:t,keys:r})=>ol([...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)))]),rl=async({predefinedExports:t,fields:r,onGetFieldChilds:n})=>{const s=t.flatMap(a=>a.fields.map(c=>c.key)),o=tl({fields:r,keys:s}),i=[];for(const a of o)i.push({key:a,childs:await n(a)});return i},nl=({keys:t,fields:r})=>t.map(n=>{const s=or(n),i=sr(n,r)[s];return xn(i)?`${n}/id`:n}),ol=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},Tn=t=>{const{visible:r,locale:n,onClose:s,model:o,context:i,selectedRegistersToExport:a,totalRegisters:c,domain:u,limit:f,visibleRegisters:p}=t,{onExport:d,onGetFieldChilds:g,onGetFields:w,onGetPredefinedExports:m,onSavePredefinedExport:y,onRemovePredefinedExport:C}=Xa({model:o,context:i,domain:u,limit:f,selectedRegistersToExport:a,onClose:s,locale:n});return e.jsx(hr.ExportModal,{visible:r,locale:n,onSucceed:d,onCancel:s,selectedRegistersToExport:a&&a.length&&a.length>0?a.length:void 0,totalRegisters:c,onGetFieldChilds:g,onGetFields:w,visibleRegisters:p,onGetPredefinedExports:m,onSavePredefinedExport:y,onRemovePredefinedExport:C})},Fn=t=>{const{ooui:r}=t;return e.jsx(sn,{ooui:r})},On=t=>{const{ooui:r}=t;return e.jsx(sn,{ooui:r,showTime:!0})},_n=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(sl,{ooui:r})})},sl=t=>{const{value:r,onChange:n,ooui:s}=t,{required:o,selectionValues:i,readOnly:a}=s,c=r==null?void 0:r.split(","),[u,f]=l.useState([]),[p,d]=l.useState();return l.useEffect(()=>{if(!r){d(void 0),f([]);return}const g=r&&c&&c[0],w=r&&c&&c[1]&&parseInt(c[1]);f([w,void 0]),d(g)},[r]),e.jsxs(h.Row,{gutter:8,wrap:!1,children:[e.jsx(h.Col,{flex:"1",children:e.jsx(Or,{ooui:new se.Selection({name:"model_selection",selection:i,readonly:a,required:o}),onChange:g=>{d(g);let w=u[0]||0;g!==p&&(f([]),w=0);const m=`${g},${w}`;m!==r&&(n==null||n(m))},value:p})}),e.jsx(h.Col,{flex:"3",children:e.jsx(un,{ooui:new se.Many2one({name:"object_value",relation:p,readonly:a,required:o}),value:u,onChange:g=>{f(g);const w=`${p},${g[0]||0}`;w!==r&&(n==null||n(w))}})})]})},{useToken:il}=h.theme,Dn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(al,{ooui:r})})},al=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o,required:i,filenameField:a}=r,{token:c}=il(),u=i&&!o?{backgroundColor:c.colorPrimaryBg}:void 0,f=l.useRef(null),{setFieldValue:p,getFieldValue:d}=l.useContext(_e)||{},{t:g}=l.useContext(ge),w=n?Hs(n):"",m=_=>{s==null||s(_)};async function y(){const _=await nt(n),b=`data:${_==null?void 0:_.mime};base64,${n}`,E=document.createElement("a"),D=d(a),N=d("name");E.href=b,E.download=D||N,E.click()}async function C(){const _=await nt(n);Tt(n,_.mime)}async function v(_){_.stopPropagation(),_.preventDefault();const b=_.target.files[0],E=await Br(b);m(E),a&&p(a,b.name)}function V(){p(a,void 0),m(void 0)}return e.jsxs(h.Row,{gutter:8,children:[e.jsxs(h.Col,{style:{paddingBottom:5},children:[e.jsx("input",{type:"file",id:"file",ref:f,style:{display:"none"},onChange:v}),e.jsx(h.Input,{type:"text",disabled:!0,style:u,value:w})]}),e.jsx(h.Col,{children:e.jsxs(h.Space,{children:[e.jsx(h.Button,{icon:e.jsx(B.FolderOpenOutlined,{}),disabled:o,onClick:()=>{f.current.click()},children:"Select"}),e.jsx(h.Button,{icon:e.jsx(B.EyeOutlined,{}),disabled:!n,onClick:C,children:g("open")}),e.jsx(Le,{tooltip:g("download"),disabled:!n,onClick:y,icon:e.jsx(B.DownloadOutlined,{})}),e.jsx(Le,{tooltip:g("clear"),disabled:o||!n,onClick:V,icon:e.jsx(B.ClearOutlined,{})})]})})]})},ir={tree:e.jsx(B.TableOutlined,{}),form:e.jsx(B.FormOutlined,{}),graph:e.jsx(B.AreaChartOutlined,{}),calendar:e.jsx(B.CalendarOutlined,{})};function kn(t){return t?(ir==null?void 0:ir[t.type])||e.jsx(B.FormOutlined,{}):e.jsx(B.FormOutlined,{})}function ar(t){const{currentView:r,availableViews:n,onChangeView:s,disabled:o=!1,formHasChanges:i=!1,previousView:a}=t,{t:c,lang:u}=l.useContext(ge);function f(){const g=n.map((w,m)=>e.jsx(h.Menu.Item,{children:e.jsxs(h.Row,{wrap:!1,children:[e.jsx(h.Col,{flex:"none",style:{paddingRight:20},children:kn(w)}),e.jsx(h.Col,{flex:"auto",style:{paddingRight:20},children:w.type.charAt(0).toUpperCase()+w.type.slice(1)}),e.jsx(h.Col,{flex:"none",children:e.jsx(B.CheckOutlined,{style:{opacity:r.view_id===w.view_id?1:0}})})]})},w.view_id||m));return e.jsx(h.Menu,{onClick:d,children:e.jsx(h.Menu.ItemGroup,{title:c("viewAs"),children:g})})}function p(g){if(i){yt({lang:u,onOk:()=>{g()}});return}g()}function d(g){p(()=>{const w=n.find(m=>m.view_id===parseInt(g.key));s(w)})}return e.jsxs("div",{style:{display:"flex"},children:[e.jsx(Le,{tooltip:a?c("viewAs")+" "+c(a.type):"",icon:kn(a),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:()=>{d({key:a==null?void 0:a.view_id})},disabled:o||n.length===1}),e.jsx(h.Dropdown,{overlay:f(),disabled:o||n.length===1,children:e.jsx(h.Button,{style:{width:25,borderTopLeftRadius:0,borderBottomLeftRadius:0},icon:e.jsx(B.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 f=s==null?void 0:s.map((p,d)=>p.name==="divider"?e.jsx(h.Menu.Divider,{},"divider"+d):e.jsx(h.Menu.Item,{children:p.name},p.id));return e.jsx(h.Menu,{onClick:u,children:e.jsx(h.Menu.ItemGroup,{title:n,children:f})})}function u(f){const p=s.find(d=>isNaN(f.key)?d.id===f.key:d.id===parseInt(f.key));o(p)}return e.jsx(h.Dropdown,{overlay:c(),disabled:a||!s||s.length===0,children:e.jsxs(h.Button,{children:[r," ",i," ",e.jsx(B.DownOutlined,{})]})})}function Ne(t){const{onClick:r,disabled:n=!1,loading:s=!1,tooltip:o,icon:i,label:a,type:c="default"}=t,u=s?e.jsx(B.LoadingOutlined,{}):i;return e.jsxs(Le,{type:c,tooltip:o,onClick:r,disabled:n,children:[u,a]})}function Vn(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(B.FileAddOutlined,{}),tooltip:o("new"),onClick:a,disabled:r})}const{confirm:ll}=h.Modal,cl=({onOk:t,onCancel:r,lang:n})=>{ll({title:be("unsavedChanges",n),icon:e.jsx(B.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmRefreshWithoutSave",n),okText:be("discardAndRefresh",n),cancelText:be("cancel",n),onOk:t,onCancel:r})};async function En(t,r,n){const s=(await W.getHandler().getLogInfo({model:t,ids:[r]}))[0],{create_date:o,create_uid:i,id:a,write_date:c,write_uid:u}=s;ze(e.jsxs("div",{children:["ID: "+a," ",e.jsx("br",{}),n("createdBy")+": "+i[1]," ",e.jsx("br",{}),n("creationDate")+": "+o," ",e.jsx("br",{}),n("lastUpdatedBy")+": "+u[1]," ",e.jsx("br",{}),n("lastUpdatedDate")+": "+c]}))}const dl=t=>{const{numberOfAttachments:r,disabled:n}=t,{t:s,lang:o}=l.useContext(ge),[i,a]=l.useState(!1),c=e.jsxs(h.Button,{disabled:n,children:[e.jsx(B.LinkOutlined,{}),`(${r})`,e.jsx(B.DownOutlined,{style:{fontSize:12}})]});return n?c:e.jsx(h.Popover,{onVisibleChange:u=>a(u),visible:i,placement:"bottom",content:ul(t,a,o),title:s("attachments"),arrowContent:null,children:c})},ul=(t,r,n)=>{const{attachments:s=[],loading:o,onAddNewAttachment:i,onopenAttachmentLink:a,onOpenAttachmentDetail:c,onListAllAttachments:u}=t;return o?e.jsx(h.Spin,{style:{padding:20}}):e.jsxs(e.Fragment,{children:[e.jsxs("a",{style:{display:"block",paddingBottom:5},href:"#",onClick:()=>{r(!1),u()},children:[e.jsx(B.TableOutlined,{})," ",be("listAllAttachments",n)]}),e.jsxs("a",{style:{display:"block"},href:"#",onClick:()=>{r(!1),i()},children:[e.jsx(B.FileAddOutlined,{})," ",be("addNewAttachment",n)]}),s.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("li",{className:"ant-dropdown-menu-item-divider"}),s.map(f=>{const p=f.link?B.LinkOutlined:B.DownloadOutlined;return e.jsxs(h.Row,{style:{paddingTop:4,paddingBottom:4},wrap:!1,align:"middle",children:[e.jsx(h.Col,{flex:"auto",children:f.name}),e.jsx(h.Col,{flex:"25px",style:{textAlign:"center"},children:(f.datas_fname||f.link)&&e.jsx(h.Tooltip,{title:f.link?be("openAttachmentLink",n):be("download",n),children:e.jsx(p,{style:{cursor:"pointer"},onClick:()=>{r(!1),a(f)}})})}),e.jsx(h.Col,{flex:"25px",style:{textAlign:"center"},children:e.jsx(h.Tooltip,{title:be("openAttachment",n),children:e.jsx(B.FormOutlined,{style:{cursor:"pointer"},onClick:()=>{r(!1),c(f)}})})})]},f.id)})]})]})};function fl(t){const{attachments:r,disabled:n=!1,onAddNewAttachment:s,onListAllAttachments:o,onViewAttachmentDetails:i}=t,{formRef:a}=l.useContext(Be),[c,u]=l.useState(!1),[f,p]=l.useState([]),[d,g]=l.useState(!1),{t:w}=l.useContext(ge),m=l.useCallback(async()=>{u(!0);try{const v=await W.getHandler().readObjects({model:"ir.attachment",ids:r.map(V=>V.id),fieldsToRetrieve:["name","datas_fname","link"],context:a.current.getContext()});p(v.map(V=>({id:V.id,name:V.name,datas_fname:V.datas_fname,link:V.link})))}catch(v){Ie(v)}u(!1)},r),y=l.useCallback(async v=>{if(v.link){window.open(v.link);return}g(!0);let V;try{V=(await W.getHandler().readObjects({model:"ir.attachment",ids:[v.id],context:a.current.getContext()}))[0]}catch(_){Ie(_)}if(g(!1),!!V)if(V.datas){const _=await nt(V.datas);Tt(V.datas,_.mime)}else i(V)},[]),C=l.useCallback(async v=>{i(v)},[]);return l.useEffect(()=>{m()},[m]),e.jsxs(e.Fragment,{children:[e.jsx(dl,{numberOfAttachments:r.length,attachments:f,disabled:n,loading:c,onAddNewAttachment:s,onListAllAttachments:o,onopenAttachmentLink:y,onOpenAttachmentDetail:C}),e.jsx(h.Modal,{title:w("downloadingAttachment"),open:d,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(h.Spin,{})})]})}function Mn({toolbar:t}){const{availableViews:r,currentView:n,setCurrentView:s,onFormSave:o,formHasChanges:i,formIsSaving:a,currentId:c,results:u,setCurrentItemIndex:f,currentItemIndex:p,setCurrentId:d,currentModel:g,setRemovingItem:w,removingItem:m,duplicatingItem:y,setDuplicatingItem:C,setResults:v,formIsLoading:V,attachments:_,formRef:b,setFormHasChanges:E,previousView:D,setPreviousView:N,goToResourceId:S}=l.useContext(Be),{t:x,lang:O}=l.useContext(ge),T=l.useContext(lt),{processAction:H}=T||{},F=l.useContext(Ye),{openRelate:A,openDefaultActionForModel:M}=F||{};function L($){if(i){cl({lang:O,onOk:()=>{$()}});return}$()}function k($){if(i){yt({lang:O,onOk:()=>{$()}});return}$()}function I(){u&&u.length>p+1?(f==null||f(p+1),d==null||d(u[p+1].id)):u&&p+1===u.length&&(f==null||f(0),d==null||d(u[0].id))}function K(){u&&p>0?(f==null||f(p-1),d==null||d(u[p-1].id)):u&&p===0&&(f==null||f(u.length-1),d==null||d(u[u.length-1].id))}function q(){rt({confirmMessage:x("confirmRemoveItem"),lang:O,onOk:()=>{z()}})}async function z(){try{w==null||w(!0),await W.getHandler().delete({model:g,ids:[c]});const $=u==null?void 0:u.filter(ee=>ee.id!==c);v==null||v($);let P=0;p>0&&p<=u.length-1&&(P=p-1),$!=null&&$[P]?(d==null||d($==null?void 0:$[P].id),f==null||f(P)):(d==null||d(void 0),f==null||f(void 0))}catch($){_t(JSON.stringify($))}finally{w==null||w(!1)}}async function Y(){try{C==null||C(!0);const $=await W.getHandler().duplicate({id:c,model:g,context:b.current.getContext()});$&&await(S==null?void 0:S($))}catch($){_t(JSON.stringify($))}finally{C==null||C(!1)}}const Z=a||m||V||y;function J($){H==null||H({actionData:$,values:b.current.getValues(),fields:b.current.getFields(),context:b.current.getContext(),onRefreshParentValues:()=>{b.current.fetchValues()}})}return n?e.jsxs(h.Space,{wrap:!0,children:[V&&e.jsxs(e.Fragment,{children:[e.jsx(h.Spin,{}),ft(),ft()]}),e.jsx(Vn,{disabled:a||V||m||y}),e.jsx(Ne,{icon:e.jsx(B.SaveOutlined,{}),tooltip:x("save"),disabled:!i||Z,loading:a,onClick:o}),e.jsx(Ne,{icon:e.jsx(B.CopyOutlined,{}),tooltip:x("duplicate"),disabled:i||a||c===void 0||y||V,loading:y,onClick:Y}),e.jsx(Ne,{icon:e.jsx(B.DeleteOutlined,{}),tooltip:x("delete"),disabled:a||c===void 0||m||y||V,loading:m,onClick:q}),ft(),e.jsx(Ne,{icon:e.jsx(B.InfoCircleOutlined,{}),tooltip:x("showLogs"),disabled:a||c===void 0||m||y||V,loading:!1,onClick:()=>{En(g,c,x)}}),e.jsx(Ne,{icon:e.jsx(B.ReloadOutlined,{}),tooltip:x("refresh"),disabled:a||c===void 0||m||y||V,loading:!1,onClick:()=>{L(()=>{b.current.fetchValues()})}}),ft(),e.jsx(ar,{currentView:n,previousView:D,availableViews:r,onChangeView:$=>{N==null||N(n),E==null||E(!1),s==null||s($)},disabled:Z,formHasChanges:i}),ft(),e.jsxs(h.Space,{children:[e.jsx(Ne,{icon:e.jsx(B.LeftOutlined,{}),tooltip:x("previous"),disabled:Z,loading:!1,onClick:()=>{k(K)}}),e.jsx(Ne,{icon:e.jsx(B.RightOutlined,{}),tooltip:x("next"),disabled:Z,loading:!1,onClick:()=>{k(I)}})]}),ft(),e.jsx(ut,{icon:e.jsx(B.ThunderboltOutlined,{}),disabled:Z,tooltip:x("actions"),items:t==null?void 0:t.action,onItemClick:async $=>{!$||!(await ht({onFormSave:o})).succeed||J($)}}),e.jsx(ut,{icon:e.jsx(B.PrinterOutlined,{}),disabled:Z,tooltip:x("reports"),items:t==null?void 0:t.print,onItemClick:async $=>{if(!$)return;const P=await ht({onFormSave:o});!P.succeed||J({...$,datas:{...$.datas||{},ids:[P.currentId]}})}}),e.jsx(ut,{icon:e.jsx(B.EnterOutlined,{}),disabled:Z,tooltip:x("related"),items:t==null?void 0:t.relate,onItemClick:async $=>{!$||!(await ht({onFormSave:o})).succeed||A({relateData:$,values:b.current.getValues(),fields:b.current.getFields(),action_id:$.id,action_type:$.type})}}),e.jsx(fl,{disabled:Z,attachments:_,onAddNewAttachment:async()=>{const $=await ht({onFormSave:o});if(!$.succeed)return;const P=$.currentId,ee=g;M({model:"ir.attachment",values:{selection_associated_object:`${ee},${P}`},forced_values:{res_model:ee,res_id:P},initialViewType:"form"})},onListAllAttachments:async()=>{const $=await ht({onFormSave:o});if(!$.succeed)return;const P=$.currentId;M({model:"ir.attachment",domain:[["res_model","=",`${g}`],["res_id","=",`${P}`]],initialViewType:"tree"})},onViewAttachmentDetails:async $=>{!(await ht({onFormSave:o})).succeed||M({model:"ir.attachment",res_id:$.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:hl}=h.theme,In=t=>{const{ooui:r,value:n,onChange:s,valueValidator:o,linkPrefix:i=""}=t,{id:a,readOnly:c,required:u}=r,{token:f}=hl(),p=u&&!c?{backgroundColor:f.colorPrimaryBg}:void 0,d=l.useContext(_e),{elementHasLostFocus:g}=d||{},[w,m]=l.useState(!1),[y,C]=l.useState(!1);l.useEffect(()=>{c&&!w&&C(!1),!n&&!c&&(m(!0),C(!0))},[w,c]);const v=V=>{s==null||s(V.target.value)};return e.jsxs(h.Row,{gutter:8,wrap:!1,align:"middle",children:[c?null:e.jsx(h.Col,{flex:"32px",children:w?e.jsx(h.Button,{icon:e.jsx(B.CheckOutlined,{}),onClick:()=>{o(n)&&(m(!1),C(!1))},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1}):e.jsx(h.Button,{icon:e.jsx(B.EditOutlined,{}),onClick:()=>{m(!0),C(!0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1})}),e.jsx(h.Col,{flex:"auto",children:y?e.jsx(h.Input,{style:{borderTopLeftRadius:0,borderBottomLeftRadius:0,...p},id:a,onChange:v,value:n,onBlur:()=>{o(n)&&(m(!1),C(!1),g==null||g())}}):e.jsx("a",{href:`${i}${n}`,style:{color:f.colorPrimary,paddingRight:15},target:"_blank",children:n})})]})},An=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(In,{ooui:r,valueValidator:s=>s?fo.default(s):!1})})},$n=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(In,{ooui:r,linkPrefix:"mailto:",valueValidator:s=>s?ho.default(s):!1})})},pl=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(h.Modal,{title:i("goToResourceId"),centered:!0,open:r,footer:null,destroyOnClose:!0,onCancel:s,maskClosable:!1,children:e.jsxs(h.Form,{layout:"vertical",onFinish:a,autoComplete:"off",children:[e.jsx(h.Form.Item,{name:"id",label:i("searchId"),rules:[{required:!0,type:"number"}],children:e.jsx(h.InputNumber,{style:{width:"100%"},autoFocus:!0})}),e.jsx(h.Row,{align:"middle",justify:"end",children:e.jsx(h.Col,{children:e.jsxs(h.Space,{children:[e.jsx(h.Button,{icon:e.jsx(B.CloseOutlined,{}),htmlType:"button",onClick:s,disabled:o,children:i("cancel")}),e.jsx(h.Button,{loading:o,style:{marginLeft:15},icon:e.jsx(B.CheckOutlined,{}),htmlType:"submit",type:"primary",disabled:o,children:i("ok")})]})})})]})})},{useToken:gl}=h.theme;function Ln(t){const{badgeNumber:r=0,...n}=t,{token:s}=gl();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 ml({refreshGraph:t}){const{t:r}=l.useContext(ge),{availableViews:n,currentView:s,setCurrentView:o,searchParams:i,searchVisible:a,setSearchVisible:c,graphIsLoading:u,previousView:f,setPreviousView:p}=l.useContext(Be);return e.jsxs(h.Space,{wrap:!0,children:[e.jsx(Ln,{icon:e.jsx(B.FilterOutlined,{style:{color:a?"white":void 0}}),tooltip:r("advanced_search"),type:a?"primary":"default",onClick:()=>{c==null||c(!a)},disabled:u,badgeNumber:i==null?void 0:i.length}),e.jsx(Ne,{icon:e.jsx(B.ReloadOutlined,{}),tooltip:r("refresh"),disabled:u,loading:!1,onClick:()=>{t()}}),e.jsx(ar,{currentView:s,availableViews:n,onChangeView:d=>{p==null||p(s),o==null||o(d)},disabled:!1,previousView:f})]})}const{useToken:yl}=h.theme,{Title:wl,Text:It}=h.Typography;function At(t){const{title:r,children:n}=t,{title:s,currentView:o,currentId:i,currentItemIndex:a,results:c,totalItems:u,selectedRowItems:f}=l.useContext(Be),{t:p}=l.useContext(ge),{token:d}=yl();function g(){if((o==null?void 0:o.type)==="form")return i?u===0?e.jsxs(e.Fragment,{children:[p("editingDocument")," (id:"," ",e.jsx(It,{copyable:{icon:e.jsx(B.CopyOutlined,{style:{color:"red"}})},children:i}),")"]}):e.jsxs(e.Fragment,{children:[p("register")," ",a===void 0?1:a+1," /"," ",c.length," ",p("of")," ",u," - ",p("editingDocument")," (id:"," ",e.jsx(It,{copyable:!0,children:i}),")"]}):"";if((o==null?void 0:o.type)==="tree"&&f){if(f.length===1)return e.jsxs(e.Fragment,{children:["1 ",p("selectedRegisters")," - (id:"," ",e.jsx(It,{copyable:!0,children:f[0].id}),")"]});if(f.length>1)return e.jsxs(e.Fragment,{children:[f.length," ",p("selectedRegisters"),e.jsx(It,{copyable:{text:f.map(w=>w.id).join(", ")}})]})}return null}return e.jsxs("div",{style:{position:"sticky",top:80,zIndex:3},children:[e.jsxs(h.Row,{className:"shadow-md",style:{padding:"1em",borderRadius:d.borderRadius,backgroundColor:d.colorPrimaryBg},align:"middle",children:[e.jsxs(h.Col,{flex:2,children:[e.jsx(wl,{level:3,style:{marginBottom:0},children:r||s}),g()]}),e.jsx(h.Col,{flex:3,children:e.jsx(h.Row,{justify:"end",children:n})})]}),e.jsx("div",{className:"pb-5"})]})}const vl=t=>{const{viewData:r,visible:n,model:s,context:o,domain:i,formView:a,treeView:c}=t,u=l.useRef(),f=l.useContext(Be),{setResults:p=void 0,setCurrentItemIndex:d=void 0,currentId:g=void 0,results:w=void 0,setSelectedRowItems:m=void 0,setSearchParams:y=void 0,searchVisible:C=!0,setSearchVisible:v=void 0,sorter:V=void 0,setSorter:_=void 0,setTotalItems:b=void 0,setSearchTreeNameSearch:E=void 0,setTreeIsLoading:D=void 0,limit:N,setLimit:S,searchParams:x,searchValues:O,setSearchValues:T,currentView:H}=f||{},[F,A]=l.useState(!0);l.useEffect(()=>{var q;(q=u.current)==null||q.refresh()},[x]),l.useEffect(()=>{r.view_id!==H.view_id&&A(!0)},[H]);const{clear:M,searchFilterLoading:L,searchError:k,offset:I,tableRefreshing:K}=zr({model:s,setSearchTreeNameSearch:E,setSelectedRowItems:m,searchParams:x,setSearchValues:T,setSearchParams:y,setSearchVisible:v,setTreeIsLoading:D,context:o,formView:a,treeView:c,sorter:V,setSorter:_,setCurrentItemIndex:d,setResultsActionView:p,resultsActionView:w,domain:i,currentId:g,setActionViewTotalItems:b,limit:N,setLimit:S});return!n||!r?null:e.jsxs(e.Fragment,{children:[e.jsx(At,{title:r.name,children:e.jsx(ml,{refreshGraph:()=>{u.current.refresh()}})}),e.jsx(Xt,{fields:{...c.fields,...a.fields},searchFields:Wr([a.search_fields,c.search_fields]),formXml:a.arch,limit:N,onClear:M,offset:I,isSearching:L,onSubmit:q=>{A(!1),y==null||y(q.params),v==null||v(!1)},searchError:k,searchVisible:C,searchValues:O,showLimitOptions:!1}),K?e.jsx(h.Spin,{}):e.jsx(Mt,{ref:u,view_id:r.view_id,model:s,context:o,domain:Ot(x||[],i),limit:F?N:void 0,manualIds:F?w==null?void 0:w.map(q=>q.id):void 0})]})},Cl=t=>{const{visible:r,formRef:n,model:s,currentId:o,domain:i,formView:a,context:c,defaultValues:u,forcedValues:f,results:p,setResults:d,setCurrentItemIndex:g}=t;return r?e.jsxs(e.Fragment,{children:[e.jsx(At,{children:e.jsx(Mn,{toolbar:a==null?void 0:a.toolbar})}),e.jsx(ct,{rootForm:!0,ref:n,model:s,defaultValues:u,forcedValues:f,formView:a,actionDomain:i,id:o,parentContext:c,onSubmitSucceed:(w,m)=>{p.findIndex(C=>C.id===w)===-1&&(p.push(m),d(p),g(p.length-1))}})]}):null};function Sl(t){const{onSearch:r,disabled:n=!1,searchText:s}=t,{t:o}=l.useContext(ge),[i]=h.Form.useForm(),[a,c]=l.useState(!1);function u(p){r(p.search)}l.useEffect(()=>{i.setFieldsValue({search:s})},[s]);function f(){c(!1),i.setFieldsValue({search:void 0}),r(void 0)}return e.jsx(h.Form,{form:i,onFinish:u,autoComplete:"off",children:e.jsxs(h.Row,{align:"middle",justify:"end",children:[e.jsx(h.Col,{children:e.jsx(h.Form.Item,{name:"search",noStyle:!0,children:e.jsx(h.Input,{autoFocus:!0,disabled:n,onChange:p=>{c(p.target.value.length>0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},suffix:(a||s&&s.length>0)&&e.jsx(h.Tooltip,{title:o("clear"),children:e.jsx(B.CloseCircleFilled,{style:{color:"rgba(0,0,0,.45)"},onClick:f})})})})}),e.jsx(h.Col,{children:e.jsx(h.Button,{htmlType:"submit",disabled:n,style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},children:o("search")})})]})})}const Nn=Pe.default.createContext({previewFeatures:!1});function bl(t){var Z;const{availableViews:r,currentView:n,setCurrentView:s,selectedRowItems:o,setRemovingItem:i,removingItem:a,duplicatingItem:c,setDuplicatingItem:u,currentModel:f,searchTreeRef:p,setCurrentId:d,setCurrentItemIndex:g,searchParams:w,searchVisible:m,setSearchVisible:y,setSearchTreeNameSearch:C,searchTreeNameSearch:v,treeIsLoading:V,setPreviousView:_,previousView:b,results:E,limit:D,totalItems:N}=l.useContext(Be),{parentContext:S={},treeExpandable:x,toolbar:O}=t,{previewFeatures:T}=l.useContext(Nn),{t:H,lang:F}=l.useContext(ge),A=l.useContext(lt),{processAction:M}=A||{},[L,k]=l.useState(!1),I=v!==void 0&&v.trim().length>0;function K(){rt({confirmMessage:H("confirmRemove"),lang:F,onOk:()=>{q()}})}async function q(){var J;try{i==null||i(!0),await W.getHandler().delete({model:f,ids:o.map($=>$.id)}),d==null||d(void 0),g==null||g(void 0),(J=p==null?void 0:p.current)==null||J.refreshResults()}catch($){Ie($)}finally{i==null||i(!1)}}async function z(){var J;try{u==null||u(!0);const $=o[0].id;await W.getHandler().duplicate({id:$,model:f,context:{...S}})&&((J=p==null?void 0:p.current)==null||J.refreshResults())}catch($){Ie($)}finally{u==null||u(!1)}}function Y(J){M==null||M({actionData:J,values:{active_id:o==null?void 0:o.map($=>$.id)[0],active_ids:o==null?void 0:o.map($=>$.id)},fields:{},context:{...S,active_id:o==null?void 0:o.map($=>$.id)[0],active_ids:o==null?void 0:o.map($=>$.id)},onRefreshParentValues:()=>{var $;($=p==null?void 0:p.current)==null||$.refreshResults()}})}return e.jsxs(h.Space,{wrap:!0,children:[x?null:e.jsxs(e.Fragment,{children:[e.jsx(Sl,{disabled:c||a||V,searchText:v,onSearch:J=>{J&&J.trim().length>0?C==null||C(J):C==null||C(void 0)}}),!x&&e.jsx(Ln,{icon:e.jsx(B.FilterOutlined,{style:{color:m?"white":void 0}}),tooltip:H("advanced_search"),type:m?"primary":"default",onClick:()=>{y==null||y(!m)},disabled:c||a||V,badgeNumber:w==null?void 0:w.length}),bt(),e.jsx(Vn,{disabled:V}),e.jsx(Ne,{icon:e.jsx(B.CopyOutlined,{}),tooltip:H("duplicate"),disabled:!o||(o==null?void 0:o.length)!==1||c||V,loading:c,onClick:z}),e.jsx(Ne,{icon:e.jsx(B.DeleteOutlined,{}),tooltip:H("delete"),disabled:!(o&&(o==null?void 0:o.length)>0)||V,loading:a,onClick:K}),bt()]}),e.jsx(Ne,{icon:e.jsx(B.InfoCircleOutlined,{}),tooltip:H("showLogs"),disabled:!(o&&(o==null?void 0:o.length)>0)||V,loading:!1,onClick:()=>{En(f,o[0].id,H)}}),e.jsx(Ne,{icon:e.jsx(B.ReloadOutlined,{}),tooltip:H("refresh"),disabled:c||a||V,loading:!1,onClick:()=>{var J;(J=p==null?void 0:p.current)==null||J.refreshResults()}}),!x&&e.jsxs(e.Fragment,{children:[bt(),e.jsx(ar,{currentView:n,availableViews:r,onChangeView:J=>{_==null||_(n),s==null||s(J)},previousView:b,disabled:V})]}),bt(),e.jsx(ut,{icon:e.jsx(B.ThunderboltOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||V,tooltip:H("actions"),items:O==null?void 0:O.action,onItemClick:J=>{!J||Y(J)}}),e.jsx(ut,{icon:e.jsx(B.PrinterOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||V,tooltip:H("reports"),items:O==null?void 0:O.print,onItemClick:J=>{!J||Y({...J,datas:{...J.datas||{},ids:o.map($=>$.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:H("export"),items:[{id:"print_screen",name:H("printScreen")},{id:"export",name:H("advancedExport")}],onItemClick:J=>{if(J.id==="print_screen"){let $=(o==null?void 0:o.map(P=>P.id))||[];$.length===0&&($=(E==null?void 0:E.map(P=>P.id))||[]),Y({id:-1,model:f,report_name:"printscreen.list",type:"ir.actions.report.xml",datas:{model:f,ids:$}});return}k(!0)},disabled:c||a||V||I}),e.jsx(Tn,{visible:L,locale:F,onClose:()=>k(!1),model:f,domain:Ot(((Z=p==null?void 0:p.current)==null?void 0:Z.getDomain())||[],w||[]),limit:D,totalRegisters:N||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 xl=t=>{const{visible:r,searchTreeRef:n,model:s,context:o,formView:i,treeView:a,domain:c,setCurrentItemIndex:u,results:f,setCurrentId:p,setCurrentView:d,availableViews:g,searchTreeNameSearch:w}=t,{currentView:m,setPreviousView:y}=l.useContext(Be);return r?e.jsxs(e.Fragment,{children:[e.jsx(At,{children:e.jsx(bl,{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:w,formView:i,treeView:a,domain:c,onRowClicked:C=>{const{id:v}=C;p(v);const V=f.findIndex(b=>b.id===v);y==null||y(m),u(V);const _=g.find(b=>b.type==="form");d(_)}})]}):null},lr=Pe.default.createContext(null),Tl=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 Fl(){const{isLoading:t,dashboardRef:r,moveItemsEnabled:n,setMoveItemsEnabled:s}=l.useContext(lr),{t:o}=l.useContext(ge);return e.jsxs(h.Space,{wrap:!0,children:[e.jsx(Ne,{icon:e.jsx(B.BorderOuterOutlined,{style:{color:n?"white":void 0}}),type:n?"primary":"default",tooltip:o("moveDashboard"),disabled:t,loading:!1,onClick:()=>{s(!n)}}),Ol(),e.jsx(Ne,{icon:e.jsx(B.SettingOutlined,{}),tooltip:o("configDashboard"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.configDashboard()}}),e.jsx(Ne,{icon:e.jsx(B.ReloadOutlined,{}),tooltip:o("refresh"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.refresh()}})]})}function Ol(){return e.jsx("div",{className:"inline-block w-2"})}const _l=t=>{const{dashboardData:r}=t,n=l.useRef(),s=l.useContext(Ye),{openShortcut:o}=s||{};return r?e.jsxs(Tl,{dashboardRef:n,openAction:i=>{o(i)},children:[e.jsx(At,{children:e.jsx(Fl,{})}),e.jsx(Kn,{ref:n,model:r.model,id:r.id,context:r==null?void 0:r.context,configAction:r==null?void 0:r.configAction})]}):null};function Dl(t,r){const{domain:n,model:s,context:o,views:i,title:a,setCanWeClose:c,tabKey:u,initialView:f,formDefaultValues:p,formForcedValues:d={},res_id:g=!1,action_id:w,action_type:m,treeExpandable:y=!1,limit:C}=t,[v,V]=l.useState(),[_,b]=l.useState([]),[E,D]=l.useState(!0),N=g||void 0,[S,x]=l.useState(N),[O,T]=l.useState([]),[H,F]=l.useState(),[A,M]=l.useState([]),[L,k]=l.useState(),[I,K]=l.useState(0),[q,z]=l.useState(!1),[Y,Z]=l.useState(!1),[J,$]=l.useState(),{t:P}=l.useContext(ge),ee=l.useRef(),le=l.useRef(),ce=l.useContext(Ye),{setCurrentView:re,setCurrentId:X,tabs:we,activeKey:Ce,openAction:Ve,onRemoveTab:fe}=ce||{};ao.useHotkeys("ctrl+g,command+g",R=>{R.preventDefault(),Ee()},[Ce,we,v,H,A]);function oe(R){x(R),X==null||X(R)}function Se(R){V(R),re==null||re(R)}l.useImperativeHandle(r,()=>({canWeClose:xe}));const ye=async()=>{D(!0);const R=[];for(const he of i){const[Oe,ue]=he;let Ae;try{ue!=="dashboard"&&(Ae=await W.getHandler().getView({model:s,type:ue,id:Oe,context:o}))}catch(De){console.error(`${s} - ${ue}\xA0- ${JSON.stringify(De,null,2)}`);continue}switch(ue){case"dashboard":{const De=i.find(Ke=>{const[,Ge]=Ke;return Ge==="form"});let Ze;De&&(Ze={action_id:w,action_type:m,name:a,res_id:o.active_id,res_model:s,view_id:De[0],view_type:De[1]}),R.push({type:"dashboard",id:o.active_id,model:s,context:o,configAction:Ze});break}case"form":{R.push({...Ae,type:ue});break}case"tree":{R.push({...Ae,isExpandable:y,type:ue});break}case"graph":{R.push({...Ae,type:ue});break}}}let ae;!f&&R.find(he=>he.type==="tree")?ae=R.find(Oe=>Oe.type==="tree"):f?ae=R.find(Oe=>f.id?Oe.type===f.type&&Oe.view_id===f.id:Oe.type===f.type):ae=R.find(Oe=>Oe.type==="form"),ae||(Ie(`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`),fe==null||fe(u)),Se(ae),b(R),D(!1)};c({tabKey:u,canWeClose:xe}),l.useEffect(()=>{const R=_.find(he=>he.type==="tree"),ae=_.find(he=>f.id?he.type===f.type&&he.view_id===f.id:he.type===f.type);Se(ae||R),g?X==null||X(N):(oe(void 0),F(void 0)),ye()},[s,i,g]),l.useEffect(()=>{Ce===u&&(X==null||X(S),re==null||re(v))},[we,Ce]);async function xe(){return v&&v.type==="form"?await ee.current.cancelUnsavedChanges():!0}async function Ee(){Ce===u&&(v.type==="form"&&!await ee.current.cancelUnsavedChanges()||z(!0))}async function ke(R){var ue;Z(!0);const ae=A.findIndex(Ae=>Ae.id===R);let he;if(ae===-1){try{he=(ue=await W.getHandler().readObjects({model:s,ids:[R],context:o}))==null?void 0:ue[0]}catch{}if(!he){Z(!1),z(!1),ze(P("idNotFound"));return}}else he=A[ae];Z(!1),z(!1);const Oe=i.find(Ae=>Ae[1]==="form");Ve({domain:[],context:o,model:s,views:i,title:a,target:"current",initialView:{id:Oe==null?void 0:Oe[0],type:"form"},action_id:w,action_type:m,res_id:R})}function He(){return _.map(R=>{switch(R.type){case"form":return e.jsx(Cl,{formRef:ee,currentId:S,visible:v.type===R.type&&v.view_id===R.view_id,formView:R,model:s,context:o,domain:n,defaultValues:p,forcedValues:d,results:A,setResults:M,setCurrentItemIndex:F},`${R.type}-${R.view_id}`);case"tree":return e.jsx(xl,{visible:v.type===R.type&&v.view_id===R.view_id,limit:C,model:s,context:o,domain:n,formView:_.find(ae=>ae.type==="form"),treeView:R,searchTreeRef:le,searchTreeNameSearch:J,availableViews:_,results:A,setCurrentItemIndex:F,setCurrentId:oe,setCurrentView:Se},`${R.type}-${R.view_id}`);case"graph":return e.jsx(vl,{visible:v.type===R.type&&v.view_id===R.view_id,viewData:R,model:s,context:o,domain:n,treeView:_.find(ae=>ae.type==="tree"),formView:_.find(ae=>ae.type==="form")},`${R.type}-${R.view_id}`);case"dashboard":return e.jsx(_l,{dashboardData:R},`${R.type}-${R.view_id}`)}})}function Me(){if(S===void 0&&v.type==="form")ee.current.clearAndReload();else{oe(void 0);const R=_.find(ae=>ae.type==="form");Se(R)}}return E?e.jsx(h.Spin,{}):v?e.jsxs(Fi,{title:a,currentView:v,setCurrentView:Se,availableViews:_,formRef:ee,searchTreeRef:le,onNewClicked:Me,currentId:S,setCurrentId:oe,setCurrentItemIndex:F,currentItemIndex:H,results:A,setResults:M,currentModel:s,sorter:L,setSorter:k,totalItems:I,setTotalItems:K,selectedRowItems:O,setSelectedRowItems:T,setSearchTreeNameSearch:$,searchTreeNameSearch:J,goToResourceId:ke,limit:C,children:[He(),e.jsx(pl,{visible:q,onIdSubmitted:ke,isSearching:Y,onCancel:()=>{z(!1)}})]}):null}const Pn=l.forwardRef(Dl);async function kl({actionId:t,rootContext:r={},globalValues:n={}}){const s="ir.actions.act_window",o=`${s},${t}`,i=await W.getHandler().getActionData({action:o,context:r}),a=se.parseContext({context:i.context,values:n,fields:{}}),c=i.domain?await W.getHandler().evalDomain({domain:i.domain,values:n,context:{...r,...a}}):[],{res_model:u,views:f,name:p,limit:d,view_type:g}=i,w=g==="tree",m=[];for(const V of f){const[_,b]=V;if(_)m.push(V);else{const{view_id:E}=await W.getHandler().getView({model:u,type:b,id:_,context:{...r,...a}});m.push([E,b])}}const[y,C]=m[0],v={id:y,type:C};return{title:p,actionId:t,actionType:s,key:gr.v4(),views:f,model:u,context:{...r,...a},domain:c,initialView:v,limit:d,treeExpandable:w}}const bc="",Vl=pr.WidthProvider(pr.Responsive),Bn=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(Vl,{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:El}=h.theme,{Text:Ml}=h.Typography,Hn=t=>{const{title:r,children:n,action:s,openAction:o}=t,{token:i}=El();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(h.Row,{align:"middle",style:{borderBottom:"1px solid #ddd",backgroundColor:i.colorPrimaryBg},wrap:!1,children:[e.jsx(h.Col,{flex:"auto",className:"draggable-head",style:{fontWeight:"bold",padding:"0.5rem",cursor:"grab",overflow:"hidden"},children:e.jsx(Ml,{ellipsis:!0,children:r})}),s&&e.jsx(h.Col,{flex:"25px",style:{padding:"0.5rem"},children:e.jsx(h.Row,{justify:"end",align:"middle",children:e.jsx(B.ExportOutlined,{style:{cursor:"pointer"},onClick:()=>{o==null||o(s)}})})})]}),n]})},Il=80;function Al(t){const{action:r,model:n,view_id:s,onRowClicked:o,domain:i=[],visible:a=!0,parentContext:c={}}=t,[u,f]=l.useState(!1),[p,d]=l.useState(!1),[g,w]=l.useState(),[m,y]=l.useState(),[C,v]=l.useState(),[V,_]=l.useState(1),[b,E]=l.useState(0),D=l.useRef(Il),N=l.useRef([]),[S,x]=l.useState(0),[O,T]=l.useState([]),[H,F]=l.useState(void 0),[A,M]=l.useState(),[L,k]=l.useState(),[I,K]=l.useState(),[q,z]=l.useState(!1),Y=l.useRef([]),Z=X=>{z(!0),_(X),E((X-1)*D.current)},J=async()=>{const X=Y.current.length>0?Y.current:i,we=Ot(N.current,X),{colors:Ce}=ot(m),{totalItems:Ve,results:fe,attrsEvaluated:oe}=await W.getHandler().searchForTree({params:we,limit:D.current,offset:b,model:g,fields:m.fields,context:c,attrs:Ce&&{colors:Ce}}),Se=await Ve;x(Se),F(Ft(oe));const ye=st({resultsToSort:fe,sorter:A,fields:{...m.fields,...C.fields}});T(ye)},$=async()=>{try{z(!0),await J()}catch(X){k(JSON.stringify(X))}finally{z(!1)}};l.useEffect(()=>{!p||a&&$()},[V,b,p,a]);const P=async X=>{d(!1),f(!0),K(void 0);try{X==="action"?await ee():await le(),d(!0)}catch(we){K(we)}finally{f(!1)}},ee=async()=>{const X=await W.getHandler().getViewsForAction({action:r,context:c});Y.current=X.domain,v(X.views.get("form")),y(X.views.get("tree")),w(X.model),D.current=X.limit},le=async()=>{w(n);const X=await W.getHandler().getView({model:n,type:"form",context:c});v(X);const we=await W.getHandler().getView({model:n,type:"tree",id:s,context:c});y(we)};l.useEffect(()=>{r?P("action"):n&&P("model")},[r,n]);const ce=X=>{const{id:we}=X;o({id:we,model:g,treeView:m})},re=()=>!m||!C?null:e.jsxs("div",{style:{overflowY:"scroll"},children:[L&&e.jsx(h.Alert,{className:"mt-10",message:L,type:"error",banner:!0}),e.jsx(Ct,{showPagination:!1,total:S,limit:D.current,page:V,treeView:m,results:O,onRequestPageChange:Z,loading:q,onRowClicked:ce,colorsForResults:H,sorter:A,onChangeSort:X=>{M==null||M(X);const we=st({resultsToSort:O,sorter:X,fields:{...m.fields,...C.fields}});T(we)},context:c})]});return I?e.jsx(h.Alert,{className:"mt-10",message:I,type:"error",banner:!0}):u?e.jsx(h.Spin,{style:{padding:"2rem"}}):re()}const $l=t=>{const{model:r}=t,[n,s]=l.useState();l.useEffect(()=>{o()},[r]);async function o(){const i=await W.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 Ll(t,r){const{model:n,context:s={},id:o,configAction:i}=t,[a,c]=l.useState([]),[u,f]=l.useState(!1),[p,d]=l.useState(),{setIsLoading:g,openAction:w,moveItemsEnabled:m}=l.useContext(lr),y=l.useRef(),C=l.useRef();l.useEffect(()=>{v()},[n,o,s]),l.useImperativeHandle(r,()=>({refresh:()=>{v()},configDashboard:N}));async function v(){f(!0),g(!0),d(void 0);try{const S=await V(),x=await b(S),O=S.fields[cr].relation,T=x[cr].items;C.current=S.fields;const H=await _({items:T,model:O,context:s}),F=await E(H);c(F),f(!1),g(!1)}catch(S){d(JSON.stringify(S))}}async function V(){return await W.getHandler().getView({model:n,type:"form",context:s})}async function _({items:S,model:x,context:O}){y.current=(await W.getHandler().getView({model:x,type:"form",context:O})).fields;const[T]=await Ut({treeView:{fields:y.current},formView:{fields:y.current},model:x,items:S,context:O,currentView:"form"});return T}async function b(S){return(await W.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 H=parseInt(T.action_id[0],10),F=await kl({actionId:H,rootContext:s});x.push({...O,actionData:F})}}return x}async function D(S){if(!m)return;const x=S.filter(F=>{const A=a.find(L=>L.id===F.id);if(!A)return!1;if(!A.position)return!0;const M={...JSON.parse(A.position.replace(/'/g,'"')),id:A.id};return JSON.stringify(F)!==JSON.stringify(M)});if(x.length===0)return;const T=a.filter(F=>x.map(A=>A.id).includes(F.id)).map(F=>{const A={...x.find(M=>M.id===F.id)};return delete A.id,{...F},{...F,operation:"pendingUpdate",values:{...F.values,position:JSON.stringify(A).replace(/"/g,"'")}}}),H={fields:y.current,items:T};await W.getHandler().update({model:n,id:o,values:{[cr]:H},fields:C.current,context:s})}async function N(){w(i)}return p?(console.log(p),e.jsx(h.Alert,{className:"mt-10 mb-20",message:p,type:"error",banner:!0})):u?e.jsx(B.LoadingOutlined,{}):e.jsx(Bn,{onPositionItemsChanged:D,children:a.map((S,x)=>{const{actionData:O,values:T}=S,{position:H,id:F}=T,{actionId:A,actionType:M,key:L,title:k,views:I,model:K,context:q,domain:z,initialView:Y,limit:Z}=O;let J={};try{J=JSON.parse(H.replace(/'/g,'"'))}catch{J={x:x*2,y:0,w:2,h:3}}let $=null;if((Y==null?void 0:Y.type)==="graph")$=e.jsx(Mt,{view_id:I.filter(le=>le[1]==="graph")[0][0],model:K,context:q,domain:z,limit:Z});else if((Y==null?void 0:Y.type)==="form")$=e.jsx($l,{model:K,actionDomain:z});else if((Y==null?void 0:Y.type)==="tree")$=e.jsx(Al,{model:K,domain:z,view_id:I.filter(le=>le[1]==="tree")[0][0],onRowClicked:le=>{const ce=I.find(re=>{const[,X]=re;return X==="form"});if(ce){const[re,X]=ce,{actionId:we,actionType:Ce,title:Ve,model:fe}=O,oe={action_id:we,action_type:Ce,name:Ve,res_id:le.id,res_model:fe,view_id:re,view_type:X};w(oe)}}});else if(Y!==void 0){const le=Y&&Array.isArray(Y.id)?{...Y,id:Y.id[0]}:Y;$=e.jsx(Pn,{action_id:A,action_type:M,tabKey:L,title:k,views:I,model:K,context:q,domain:z,setCanWeClose:()=>{},initialView:le,limit:Z})}let P;const ee=I.find(le=>{const[,ce]=le;return ce==="tree"});if(ee){const[le,ce]=ee,{actionId:re,actionType:X,title:we,model:Ce}=O;P={action_id:re,action_type:X,name:we,res_id:!1,res_model:Ce,view_id:le,view_type:ce}}return e.jsx(Hn,{id:F,title:k,parms:J,action:P,openAction:w,children:$},F)})})}const Kn=l.forwardRef(Ll),Wn=t=>e.jsx(me,{...t,children:e.jsx(Nl,{...t})}),Nl=t=>{const{ooui:r,value:n}=t;if(!n)return null;const s=r.colors==="auto"?zt(n):r.colors[n];return e.jsx(h.Tag,{color:s,children:r.selectionValues.get(n)})},qn=t=>{const{ooui:r}=t;return e.jsx(me,{type:"array",...t,children:e.jsx(Pl,{ooui:r})})},Pl=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([]),[u,f]=l.useState(),[p,d]=l.useState(!1),{relation:g,context:w,readOnly:m,field:y,columns:C}=n,v=l.useContext(_e),{getContext:V}=v||{};Re.default(()=>{b()},[o]);const _=S=>{s==null||s({items:S})};async function b(){d(!0);let S=[];if(n.domain){const x=await W.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 W.getHandler().search({model:g,params:S,fields:[y],context:{...V==null?void 0:V(),...w}})).map(T=>{const H=T[y];let F=H;return Array.isArray(H)&&(F=H[1]),{label:F,value:T.id}});c(O)}catch(x){f(x)}finally{d(!1)}if(u)return e.jsx(h.Alert,{className:"mt-10",message:u,type:"error",banner:!0})}const E=()=>{N(a.map(S=>S.value))},D=()=>{N([])},N=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"})}),_(x)};return p&&a.length===0?e.jsx(h.Spin,{}):e.jsx(e.Fragment,{children:e.jsxs("div",{className:"flex flex-row",children:[e.jsx(h.Checkbox.Group,{value:a.length?i:[],disabled:m,onChange:N,style:{width:"100%"},children:e.jsx(h.Row,{children:a.map(S=>e.jsx(h.Col,{span:Math.floor(24/C),children:e.jsx(h.Checkbox,{value:S.value,children:S.label})}))})}),!m&&e.jsxs(h.Space,{children:[e.jsx(h.Button,{onClick:E,disabled:i.length==a.length,children:"Check all"}),e.jsx(h.Button,{onClick:D,disabled:i.length===0,children:"Uncheck all"})]})]})})},Yn=t=>e.jsx(me,{...t,children:e.jsx(Bl,{...t})}),Bl=t=>{const{value:r,ooui:n}=t;return e.jsx("div",{style:{height:n.height?n.height+"px":"100%",overflow:"auto"},children:e.jsx(po.default,{children:r,className:"ant-typography"})})},Gn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(Hl,{...t})})},Hl=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,direction:a}=r,c=Array.from(o.entries()),u=c&&c.length&&c.map(f=>{const[p,d]=f;return e.jsx(h.Radio,{value:p,children:d},p)});return e.jsx(h.Radio.Group,{disabled:i,onChange:n,value:s,children:e.jsx(h.Space,{direction:a,children:u})})},Un=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o}=r;return e.jsx(me,{...t,valuePropName:"checked",children:e.jsx(Kl,{id:n,readOnly:s,required:o})})},Kl=t=>{const{required:r,readOnly:n,...s}=t;return e.jsx("div",{className:"flex flex-row",children:e.jsx(h.Switch,{disabled:n,...s})})},jn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(Wl,{...t})})},Wl=t=>{const{ooui:r,value:n}=t,{selectionValues:s,errorField:o}=r,i=l.useContext(_e),a=Array.from(s.entries()),c=a.map(p=>p[0]).indexOf(n);let u="process",f="";return o&&(f=i.getFieldValue(o),f&&(u="error")),e.jsx(h.Steps,{current:c,status:u,children:a.map((p,d)=>e.jsx(h.Steps.Step,{title:p[1],description:d===c&&u==="error"?f:null}))})},zn=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(go.default,{defaultLanguage:n||"",height:s||300,onMount:a})})},{Content:ql}=h.Layout,{Title:Yl}=h.Typography;function Gl(){const{t}=l.useContext(ge);return e.jsx(ql,{className:"m-5 select-none",children:e.jsx(Yl,{level:5,children:t("welcome")})})}function Ul(t,r){const{children:n,globalValues:s={},rootContext:o={},lang:i}=t,[a,c]=l.useState("welcome"),[u,f]=l.useState([{title:be("welcome",i),key:"welcome",closable:!0,content:e.jsx(Gl,{})}]),p=l.useRef(new Map),d=l.useRef();l.useImperativeHandle(r,()=>({retrieveAndOpenAction:m,openShortcut:v}));function g(b){if(b===a){const E=u.findIndex(D=>D.key===b);u[E-1]&&c(u[E-1].key),u[E+1]&&c(u[E+1].key)}f(u.filter(E=>E.key!==b)),p.current.delete(b)}function w({tabKey:b,canWeClose:E}){p.current.set(b,E)}async function m({action:b,values:E,forced_values:D,initialViewType:N,res_id:S,domain:x=[]}){const O=await W.getHandler().getActionData({action:b,context:o});if(O.type==="ir.actions.wizard"){Ie("Action type not supported");return}const[T,H]=b.split(","),F=parseInt(H),A=se.parseContext({context:O.context,values:s,fields:{}}),M=O.domain?await W.getHandler().evalDomain({domain:O.domain,values:s,context:{...o,...A}}):[],{res_model:L,views:k,name:I,target:K,view_type:q,limit:z}=O,Y=q==="tree",Z=[];for(const $ of k){const[P,ee]=$;if(P)Z.push($);else if(ee==="dashboard")Z.push([void 0,"dashboard"]);else{const{view_id:le}=await W.getHandler().getView({model:L,type:ee,id:P,context:{...o,...A}});Z.push([le,ee])}}let J;if(N){const[$,P]=Z.find(([ee,le])=>le===N);J={id:$,type:P}}else{const[$,P]=Z[0];J={id:$,type:P}}_({domain:[...M,...x],context:{...o,...A},model:L,views:Z,title:I,target:K,initialView:J,action_type:T,action_id:F,values:E,forced_values:D,res_id:S,treeExpandable:Y,limit:z})}function y({title:b,content:E,key:D,action:N}){let S=[...u];u.length===1&&u[0].key==="welcome"&&(S=[...u.filter(x=>x.key!=="welcome")]),f([...S,{title:b,key:D,closable:!0,content:E,action:N}]),c(D)}async function C({relateData:b,fields:E,values:D,action_id:N,action_type:S}){const{res_model:x,context:O,domain:T,views:H,target:F,string:A,limit:M}=b,[L,k]=H[0],I={id:L,type:k},K=se.parseContext({context:O,values:{...D,...s},fields:E}),q=T?await W.getHandler().evalDomain({domain:T,values:at({fields:E,values:{...D,...s}}),fields:E,context:{...o,...K}}):[];_({model:x,target:F,views:H,context:{...o,...K},domain:q,title:A,initialView:I,action_id:N,action_type:S,limit:M})}async function v(b){const{action_id:E,action_type:D,res_id:N,view_id:S}=b,x=`${D},${E}`,O=await W.getHandler().getActionData({action:x,context:o}),T=se.parseContext({context:O.context,values:s,fields:{}}),H=O.domain?await W.getHandler().evalDomain({domain:O.domain,values:s,context:{...o,...T}}):[],{res_model:F,views:A,name:M,target:L,view_type:k,limit:I}=O,K=k==="tree",q=[];for(const J of A){const[$,P]=J;if($)q.push(J);else if(P==="dashboard")q.push([void 0,"dashboard"]);else{const{view_id:ee}=await W.getHandler().getView({model:F,type:P,id:$,context:{...o,...T}});q.push([ee,P])}}let z,Y;if(S==null){const J=q.find($=>$[0]===void 0);z=void 0,Y=J[1]}else[z,Y]=q.find(J=>J[0]===void 0?!1:J[0]===S);const Z={id:z,type:Y};_({domain:H,context:{...o,...T},model:F,views:q,title:M,target:L,initialView:Z,action_id:E,action_type:D,res_id:N,treeExpandable:K,limit:I})}async function V({model:b,values:E,forced_values:D,initialViewType:N,res_id:S,domain:x}){const O=await W.getHandler().getActionStringForModel(b);await m({action:O,values:E,forced_values:D,initialViewType:N,res_id:S,domain:x})}async function _({domain:b,context:E,model:D,views:N,title:S,target:x,initialView:O,action_id:T,action_type:H,res_id:F,values:A,forced_values:M,treeExpandable:L=!1,limit:k}){const I=gr.v4();if(x!=="current"){const K=await W.getHandler().getView({model:D,type:"form",id:O.type==="form"?O.id:void 0,context:{...o,...E}});d.current.openActionModal({domain:b,model:D,formView:K,context:{...o,...E},actionData:{action_id:T,action_type:H,res_id:F,view_id:K.view_id}})}else{const K=O&&Array.isArray(O.id)?{...O,id:O.id[0]}:O;y({title:S,action:{id:T,type:H},content:e.jsx(Pn,{action_id:T,action_type:H,tabKey:I,title:S,views:N,model:D,context:{...o,...E},domain:b,setCanWeClose:w,initialView:K,res_id:F,formDefaultValues:A,formForcedValues:M,treeExpandable:L,limit:k}),key:I})}}return e.jsx(So,{lang:i,children:e.jsx(Oi,{openShortcut:v,openAction:_,openRelate:C,openDefaultActionForModel:V,tabs:u,activeKey:a,onRemoveTab:async b=>{const E=p.current.get(b);(await(E==null?void 0:E())||a==="welcome")&&g(b)},onChangeTab:b=>{c(b)},children:e.jsx(Zr,{ref:d,globalValues:s,children:n})})})}const jl=l.forwardRef(Ul),{useToken:zl}=h.theme;function Jl(t){const{label:r,onClose:n,tabKey:s,isActive:o,onSelected:i}=t,{token:a}=zl(),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(B.CloseOutlined,{style:{color:a.colorPrimaryActive},onClick:u=>{u.stopPropagation(),n(s)}})})]})}function Zl(){const t=l.useContext(Ye),{activeKey:r,tabs:n,onRemoveTab:s,onChangeTab:o}=t||{};return e.jsx(e.Fragment,{children:n.map(i=>e.jsx(Jl,{tabKey:i.key,label:i.title,onClose:s,isActive:r===i.key,onSelected:o},i.key))})}function Xl(t){const{tab:r}=t,n=l.useContext(Ye),{activeKey:s}=n||{},o={display:"none"};return e.jsx("div",{style:r.key!==s?o:void 0,children:r.content})}const Ql=Pe.default.memo(Xl,()=>!0);function Rl(){const t=l.useContext(Ye),{tabs:r}=t||{},n=(r==null?void 0:r.map(s=>e.jsx(Ql,{tab:s},s.key)))||null;return e.jsx(e.Fragment,{children:n})}const{useToken:ec}=h.theme,tc=t=>{const{onRetrieveShortcuts:r,onCheckIsFavourite:n,onAddFavourite:s,onRemoveFavourite:o}=t,[i,a]=l.useState(!1),[c,u]=l.useState(!1),[f,p]=l.useState([]),[d,g]=l.useState(!0),[w,m]=l.useState(),{t:y}=l.useContext(ge)||{},{token:C}=ec(),v=l.useContext(Ye),{openShortcut:V,tabs:_,activeKey:b,currentView:E,currentId:D,openDefaultActionForModel:N}=v||{};l.useEffect(()=>{S()},[]),l.useEffect(()=>{T()},[_,b,E,D]);async function S(){try{g(!0);const L=await r();p(L)}catch(L){Ie(L)}finally{g(!1)}}function x(L){const{key:k}=L,I=f.find(K=>K.id===Number(k));(I==null?void 0:I.action_type)!=="ir.actions.wizard"&&(I&&V(I),u(!1))}function O(L){L&&S(),u(L)}async function T(){if(!E)return;const L=_.find(Y=>Y.key===b),{id:k,type:I}=(L==null?void 0:L.action)||{};if(!k||!I){a(!1);return}const K=E.view_id;let q=!1;E.type==="form"&&(q=D||!1);const z=await n({action_id:k,action_type:I,view_id:K,res_id:q});z!==!1&&m(z),a(z!==!1)}async function H(){u(!1),N==null||N({model:"ir.ui.view_sc"})}const F=e.jsxs(h.Menu,{onClick:x,children:[e.jsxs("div",{style:{width:300,padding:5,display:"flex"},children:[e.jsx("div",{style:{paddingLeft:15,color:"#ccc"},children:y==null?void 0:y("favorites").toUpperCase()}),e.jsx("div",{style:{flexGrow:1,paddingLeft:10},children:e.jsx(h.Tooltip,{title:y==null?void 0:y("edit_favorites"),children:e.jsx(B.EditOutlined,{style:{color:C.colorPrimary,cursor:"pointer"},onClick:H})})})]}),e.jsx(h.Menu.Divider,{}),d?e.jsx(h.Spin,{style:{padding:"1rem"}}):f.length>0?e.jsx(e.Fragment,{children:f.map(L=>e.jsx(h.Menu.Item,{children:e.jsx(A,{title:L.name,type:L.view_type})},L.id))}):e.jsx("div",{style:{width:300,padding:5,paddingLeft:15},children:y==null?void 0:y("no_favorites")})]});function A({title:L,type:k}){const I=k==="tree"?e.jsx(B.TableOutlined,{}):e.jsx(B.FormOutlined,{});return e.jsxs(h.Row,{wrap:!1,children:[e.jsx(h.Col,{flex:"none",style:{paddingRight:20},children:I}),e.jsx(h.Col,{flex:"auto",children:L})]})}async function M(){if(i&&w)await o(w);else{if(!E)return;const L=_.find(z=>z.key===b),{id:k,type:I}=(L==null?void 0:L.action)||{},K=E.view_id;let q=!1;if(!k||!I){a(!1);return}E.type==="form"&&(q=D||!1),await s({action_id:k,action_type:I,view_id:K,res_id:q})}await S(),a(!i)}return e.jsxs(e.Fragment,{children:[e.jsx(h.Button,{type:i?"primary":"default",icon:i?e.jsx(B.StarFilled,{style:{color:"white"}}):e.jsx(B.StarOutlined,{}),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:M}),e.jsx(h.Dropdown,{overlay:F,onVisibleChange:O,open:c,children:e.jsx(h.Button,{style:{width:25,borderTopLeftRadius:0,borderBottomLeftRadius:0},icon:e.jsx(B.DownOutlined,{style:{fontSize:"0.5em"}}),onClick:L=>L.preventDefault()})})]})};G.ActionBar=Mn,G.Binary=Dn,G.Boolean=Dr,G.Button=Wt,G.ButtonGroup=br,G.Char=qt,G.CodeEditor=zn,G.ConfigContext=Nn,G.ConnectionProvider=W,G.ContentRootProvider=Zr,G.CurrentTabContent=Rl,G.Dashboard=Kn,G.DashboardGrid=Bn,G.DashboardGridItem=Hn,G.Date=Fn,G.DateTime=On,G.Email=$n,G.ExportModal=Tn,G.FavouriteButton=tc,G.Float=Zt,G.FloatTime=wn,G.Form=ct,G.FormModal=dt,G.GraphIndicator=pn,G.Group=rr,G.Image=Hr,G.Integer=vt,G.Label=gt,G.Many2one=dn,G.Markdown=Yn,G.MultiCheckbox=qn,G.Notebook=vn,G.One2many=yn,G.ProgressBar=Rr,G.Radio=Gn,G.Reference=_n,G.RootView=jl,G.SearchFilter=Xt,G.SearchModal=er,G.SearchTree=Rt,G.Selection=Yt,G.Separator=Sn,G.Steps=jn,G.Switch=Un,G.TabSelector=Zl,G.Tag=Wn,G.Tags=Yr,G.Text=Cn,G.Tree=Ct,G.Url=An,G.iconMapper=qe,G.showConfirmDialog=rt,Object.defineProperties(G,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
35
+ `,fn=Pe.default.createContext(null),Sa=({children:t,initialView:r})=>{const[n,s]=l.useState(r),[o,i]=l.useState(0),[a,c]=l.useState(!1);return e.jsx(fn.Provider,{value:{currentView:n,setCurrentView:s,itemIndex:o,setItemIndex:i,manualTriggerChange:a,setManualTriggerChange:c},children:t})},{getValueForOperator:hn}=se.graphProcessor,Dt=.7,kt=30,pn=t=>{const{model:r,domain:n,context:s,colorCondition:o,totalDomain:i,showPercent:a=!1,icon:c,suffix:u,field:f,operator:p,manualIds:d}=t,[g,y]=l.useState(!1),[m,w]=l.useState(),[C,v]=l.useState(),[V,_]=l.useState(),[b,E]=l.useState(0),[D,N]=l.useState(0),[S,x]=l.useState(),[O,T]=l.useState(),[H,F]=l.useState();l.useEffect(()=>{L()},[r,o]);async function A({domain:k,isTotal:I}){if(I)return await M({domain:k});if(f&&p){const K=d||await W.getHandler().searchAllIds({params:k,model:r,context:s}),q=await W.getHandler().readObjects({model:r,ids:K,fieldsToRetrieve:[f],context:s});return hn({values:q.map(z=>z[f]),operator:p})}else return d?d.length:await W.getHandler().searchCount({model:r,params:k,context:s})}async function M({domain:k}){if(f&&p){const I=await W.getHandler().searchAllIds({params:k,model:r,context:s}),K=await W.getHandler().readObjects({model:r,ids:I,fieldsToRetrieve:[f],context:s});return hn({values:K.map(q=>q[f]),operator:p})}else return await W.getHandler().searchCount({model:r,params:k,context:s})}async function L(){y(!0);let k,I;try{const K=await A({domain:n,isTotal:!1});if(w(K),i){const q=await W.getHandler().evalDomain({domain:i,values:{},context:s});k=await A({domain:q,isTotal:!0}),_(k)}if(k?(I=Math.round(K/k*100*100)/100,v(I)):v(0),o){const q=await W.getHandler().parseCondition({condition:o,values:{value:K,percent:I},context:s});x(q)}if(c)if(c.indexOf(":")!==-1){const q=await W.getHandler().parseCondition({condition:c,values:{value:K,percent:I},context:s});T(q)}else T(c)}catch(K){F(JSON.stringify(K))}y(!1)}return H?e.jsx(h.Alert,{className:"mt-10",message:H,type:"error",banner:!0}):g?e.jsx("div",{style:{padding:"1rem"},children:e.jsx(B.LoadingOutlined,{style:{height:"12px"}})}):e.jsx(Ht.default,{bounds:!0,onResize:k=>{var I,K;E((I=k.bounds)==null?void 0:I.height),N((K=k.bounds)==null?void 0:K.width)},children:({measureRef:k})=>a?e.jsx(xa,{value:m,total:V,percent:C,measureRef:k,height:b,width:D,color:S,icon:O,suffix:u}):e.jsx(ba,{value:m,total:V,measureRef:k,height:b,width:D,color:S,icon:O,suffix:u})})};function gn(t,r){const s=document.createElement("canvas").getContext("2d");return s.font=r||getComputedStyle(document.body).font,s.measureText(t).width}function ba({measureRef:t,width:r,height:n,total:s,value:o,color:i,icon:a,suffix:c}){let u=n*Dt<kt?kt:n*Dt;const f=o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0});let p=s?`${f}/${s}`:`${f}`;c&&(p+=" "+c);let d=gn(p,`bold ${Math.floor(u*1.03)}px sans-serif`);a&&(d=d*2),d>=r*.85&&(u=r*.85/d*u);const g=a&&qe(a);return e.jsx("div",{ref:t,style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},children:e.jsxs(Kt.default,{style:{fontSize:u,margin:0,color:i},children:[g&&e.jsx(g,{style:{fontSize:u*.7}}),g?` ${p}`:p]})})}function xa({measureRef:t,height:r,width:n,percent:s,total:o,value:i,color:a,icon:c,suffix:u}){const f=r*.65;let p=f*Dt<kt?kt:f*Dt;const d=i==null?void 0:i.toLocaleString("es-ES",{useGrouping:!0});let g=o?`${d}/${o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0})}`:`${d}`;u&&(g+=" "+u);const y=`${s==null?void 0:s.toLocaleString("es-ES",{useGrouping:!0})}%`;let m=gn(y,`bold ${Math.floor(p*1.03)}px sans-serif`);c&&(m=m*1.5);const w=c&&qe(c);return(m>=n*.85||p*2<f)&&(p=n*.85/m*p),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(h.Row,{align:"middle",children:[w&&e.jsx(h.Col,{style:{fontSize:p*1,color:a,paddingRight:"10px"},children:e.jsx(w,{})}),e.jsxs(h.Col,{children:[e.jsx(Kt.default,{style:{fontSize:p*.8,margin:0,color:a},children:w?` ${s}%`:`${s}%`}),e.jsx(Kt.default,{style:{fontSize:p*.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"&&Ta(t))return parseFloat(t).toLocaleString("es-ES",{useGrouping:!0});if(Fa(t))return t.toLocaleString("es-ES",{useGrouping:!0});if(Oa(t)){const r=_a(t);return r===null?t:et(t,Et.input[r]).format(Et.output[r])}else return t},Ta=t=>/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/.test(t),Fa=t=>typeof t=="number"&&!isNaN(t),mn={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 Oa(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 _a(t){for(const r in Et.input)if(et(t,Et.input[r],!0).isValid())return r;return null}const{processGraphData:Da}=se.graphProcessor,{getFieldsToRetrieve:ka}=se.graphFieldUtils,Va=t=>{const{model:r,domain:n=[],context:s={},xml:o,limit:i,uninformedString:a,manualIds:c}=t,[u,f]=l.useState(!1),[p,d]=l.useState(),[g,y]=l.useState(),[m,w]=l.useState(),[C,v]=l.useState("line");return Qe.default(()=>{(async()=>{f(!0),d(void 0);const V=se.parseGraph(o);v(V.type||"line");const _=ka({ooui:V});let b,E;try{({values:b,fields:E}=await Ma({model:r,domain:n,context:s,limit:i,order:V.timerange?V.x.name:null,fields:_,manualIds:c}))}catch(D){d("Error fetching graph data values: "+JSON.stringify(D)),f(!1);return}try{if(!b||!E){d("No values or fields returned"),f(!1);return}w(b);const D=Da({ooui:V,values:b,fields:E,options:{uninformedString:a}});y(D)}catch(D){d("Error processing graph data: "+D),f(!1);return}f(!1)})()},[o,r,i,s,n]),{loading:u,error:p,type:C,values:g,evaluatedEntries:m}};async function Ea({model:t,context:r,fields:n}){return await W.getHandler().getFields({model:t,context:r,fields:n})}async function Ma({fields:t,model:r,domain:n,context:s,order:o,limit:i,manualIds:a}){const c=await Ea({model:r,context:s,fields:t});if(a){let f=await W.getHandler().readObjects({model:r,ids:a,fieldsToRetrieve:t,context:s});return o&&(f=[...f].sort((p,d)=>p[o]-d[o])),{values:f,fields:c}}return{values:await W.getHandler().search({model:r,params:n,fields:t,context:s,limit:i,order:o}),fields:c}}const Ia={line:Bt.Line,bar:Bt.Column,pie:Bt.Pie},Aa=t=>{var v;const{model:r,domain:n,context:s,xml:o,limit:i,manualIds:a}=t,{t:c}=l.useContext(ge),{error:u,loading:f,values:p,type:d,evaluatedEntries:g}=Va({model:r,xml:o,limit:i,domain:n,context:s,uninformedString:c("uninformed"),manualIds:a});if(u)return e.jsx(h.Alert,{message:u,type:"error",banner:!0});if(f)return e.jsx(h.Spin,{});if(!p)return e.jsx(h.Alert,{message:"No data to display",type:"info"});const{data:y,isGroup:m,isStack:w}=p,C=Ia[d];return C?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(C,{...$a({type:d,data:y,isGroup:m,isStack:w})})]}):e.jsx(e.Fragment,{children:`Unknown graph type: ${d}`})};function $a(t){const{type:r,data:n,isGroup:s,isStack:o}=t;let i=mn[r];return i||(i=mn.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 La=(t,r)=>{const{view_id:n,model:s,context:o,domain:i,limit:a,manualIds:c}=t,[u,f]=l.useState(!1),[p,d]=l.useState(),[g,y]=l.useState(),m=l.useContext(Be),{setGraphIsLoading:w=void 0}=m||{};l.useImperativeHandle(r,()=>({refresh:()=>{C()}})),l.useEffect(()=>{C()},[n]);async function C(){f(!0),w==null||w(!0);try{const v=await W.getHandler().getView({model:s,id:n,type:"graph",context:o});y(v.arch);const V=se.parseGraph(v.arch);d(V)}catch(v){return console.error(v),e.jsx(e.Fragment,{children:JSON.stringify(v)})}f(!1),w==null||w(!1)}if(u)return e.jsx("div",{style:{width:"100%",display:"flex",height:"20%",justifyContent:"center",alignContent:"center",padding:"1rem"},children:e.jsx(B.LoadingOutlined,{style:{height:"12px"}})});if(!p)return null;switch(p.type){case"indicatorField":case"indicator":{const v=p,V=v.type==="indicatorField"?{field:v.field,operator:v.operator}:{};return e.jsx(pn,{showPercent:v.showPercent,totalDomain:v.totalDomain,colorCondition:v.color,model:s,context:o,domain:i,icon:v.icon,suffix:v.suffix,manualIds:c,...V})}case"line":case"bar":case"pie":return e.jsx(Aa,{model:s,context:o,domain:i,xml:g,limit:a,manualIds:c});default:return e.jsx(e.Fragment,{children:`Graph ${p.type} not implemented`})}},Mt=l.forwardRef(La),{confirm:Na}=h.Modal,Pa=({onOk:t,lang:r})=>{Na({title:be("removeItems",r),icon:e.jsx(B.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmRemove",r),okText:be("yesConfirmRemove",r),onOk:t,cancelText:be("cancel",r)})},{confirm:Ba}=h.Modal,Ha=({onOk:t,lang:r})=>{Ba({title:be("unlinkItems",r),icon:e.jsx(B.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmUnlink",r),okText:be("yesConfirmUnlink",r),onOk:t,cancelText:be("cancel",r)})},{useToken:Ka}=h.theme,Wa=t=>{const{title:r,readOnly:n,onCreateItem:s,onToggleViewMode:o,mode:i,onDelete:a,totalItems:c,currentItemIndex:u,onPreviousItem:f,onNextItem:p,isMany2Many:d,onSearchItem:g,selectedRowKeys:y,showCreateButton:m,showToggleButton:w}=t,{token:C}=Ka();function v(){return e.jsx("div",{className:"inline-block w-3"})}function V(){return e.jsx("div",{className:"flex flex-grow h-8 text-white",style:{borderRadius:C.borderRadius,backgroundColor:C.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 _(){return e.jsx(Le,{tooltip:d?"Unlink":"Delete",icon:d?e.jsx(B.ApiOutlined,{}):e.jsx(B.DeleteOutlined,{}),onClick:a,disabled:c===0||n||i!=="form"&&y.length===0})}function b(){let D="_";return c===0?D="_":D=(u+1).toString(),e.jsxs("span",{className:"pl-1 pr-1",children:["(",D,"/",c,")"]})}function E(){return e.jsxs(e.Fragment,{children:[v(),e.jsx(Le,{tooltip:"Previous item",icon:e.jsx(B.LeftOutlined,{}),onClick:f}),b(),e.jsx(Le,{tooltip:"Next item",icon:e.jsx(B.RightOutlined,{}),onClick:p})]})}return e.jsxs("div",{className:"flex mb-2",children:[V(),e.jsxs("div",{className:"flex-none h-8 pl-2",children:[i!=="graph"&&m&&e.jsx(Le,{tooltip:"Create new item",icon:e.jsx(B.FileAddOutlined,{}),disabled:n,onClick:s}),d&&m&&e.jsx(Le,{tooltip:"Search existing item",icon:e.jsx(B.SearchOutlined,{}),disabled:n,onClick:g}),i!=="graph"&&v(),i!=="graph"&&_(),i==="form"&&E(),v(),w&&e.jsx(Le,{tooltip:"Toggle view mode",icon:e.jsx(B.AlignLeftOutlined,{}),onClick:o})]})]})},qa={form:se.Form,tree:se.Tree,graph:Mt};function Ya(t){const r=t.map(s=>s.id);return t.filter((s,o)=>{const{id:i}=s;return!r.includes(i,o+1)})}const Ga=t=>{var Ge;const{value:r,onChange:n,ooui:s,views:o}=t,{items:i=[]}=r||{},{currentView:a,setCurrentView:c,itemIndex:u,setItemIndex:f}=l.useContext(fn),p=l.useContext(_e),{activeId:d,getFields:g,getValues:y,getContext:m,domain:w}=p||{},{lang:C,t:v}=l.useContext(ge),[V,_]=l.useState(!1),[b,E]=l.useState(!1),[D,N]=l.useState(),[S,x]=l.useState(!1),[O,T]=l.useState(!1),[H,F]=l.useState(),[A,M]=l.useState([]),[L,k]=l.useState(!1),I=l.useRef([]),[K,q]=l.useState(),z=l.useRef(),[Y,Z]=l.useState(void 0),{readOnly:J,relation:$,context:P,domain:ee}=s,le=s.type==="many2many",{id:ce}=s,re=i.filter(Q=>(Q.values||Q.treeValues)&&Q.operation!=="pendingRemove"),X=l.useRef();l.useEffect(()=>{if(X.current!==a){X.current=a,we();return}we()},[i,a]);const we=l.useCallback(()=>{(a==="form"&&i.some(Q=>!Q.values)||a==="tree"&&i.some(Q=>!Q.treeValues))&&Ve()},[i,a]);l.useEffect(()=>{oe()},[w]);const Ce=Q=>{var de,Te;n==null||n({fields:((de=o.get("form"))==null?void 0:de.fields)||((Te=o.get("tree"))==null?void 0:Te.fields),items:Ya(Q)})},Ve=async()=>{await fe(),u>re.length-1&&u!==0&&f(0)},fe=async Q=>{var de,Te,ie;E(!0),_(!1),N(void 0);try{const[ve,pe]=await Ut({treeView:{arch:(de=o.get("tree"))==null?void 0:de.arch,fields:(Te=o.get("tree"))==null?void 0:Te.fields},formView:{fields:((ie=o.get("form"))==null?void 0:ie.fields)||{}},model:$,items:i,context:{...m==null?void 0:m(),...P},currentView:Q||a});return z.current||(z.current=ve.map($e=>$e.id)),(a||Q)==="tree"&&pe&&Z(pe),Ce(ve),ve}catch(ve){N(ve)}finally{E(!1)}};async function oe(){ee&&(I.current=await W.getHandler().evalDomain({domain:ee,values:at({fields:g(),values:y()}),fields:g(),context:m()})),w&&w.length>0&&(I.current=I.current.concat(se.transformDomainForChildWidget({domain:w,widgetFieldName:ce})))}const Se=()=>{const Q=Array.from(o.keys()),de=Q[(Q.indexOf(a)+1)%Q.length];a==="form"?ke(()=>{c(de)}):c(de)},ye=()=>{u>0&&(a==="form"?ke(()=>{f(u-1)}):f(u-1))},xe=()=>{const Q=re.length;u<Q-1&&(a==="form"?ke(()=>{f(u+1)}):f(u+1))},Ee=async()=>{const Q=re[u].id,de=(await W.getHandler().readObjects({model:$,ids:[Q],fields:o.get("form").fields,context:{...m==null?void 0:m(),...P}}))[0],Te=(await W.getHandler().readObjects({model:$,ids:[Q],fields:o.get("tree").fields,context:{...m==null?void 0:m(),...P}}))[0],ie=i.map(ve=>ve.id===Q?{...ve,operation:"original",values:de,treeValues:Te}:ve);Ce(ie)},ke=Q=>{V?yt({lang:C,onOk:()=>{Ee(),Q(),_(!1)}}):Q()},He=()=>{if(le){Ha({lang:C,onOk:()=>{a==="form"?ae():he()}});return}Pa({lang:C,onOk:()=>{a==="form"?ae():he()}})},Me=async()=>{const{inv_field:Q}=s;let de;Q&&d&&(de={[Q]:d}),a==="form"?ke(()=>{k(!0),F({defaultValues:de}),x(!0)}):(k(!0),F({defaultValues:de}),x(!0))},R=async()=>{a==="form"?ke(()=>{T(!0)}):T(!0)},ae=async()=>{E(!0),_(!1),N(void 0);try{if(re[u].id>0){const Q=i.map(de=>de.id===re[u].id?{...de,operation:"pendingRemove"}:de);Ce(Q)}else Ce(i.filter(Q=>Q.id!==re[u].id))}catch(Q){N(Q)}f(0),E(!1)},he=async()=>{const Q=re.filter(de=>A.includes(de.id));E(!0),_(!1),N(void 0);try{const de=Q.map(ie=>ie.id),Te=i.filter(ie=>!(de.includes(ie.id)&&ie.id<0)).map(ie=>de.includes(ie.id)?{...ie,operation:"pendingRemove"}:ie);Ce(Te)}catch(de){N(de)}f(0),E(!1)},Oe=(Q,de,Te)=>{let ie;if(Q)ie=i.map(ve=>ve.id===Q?{id:Q,operation:Q>0?"pendingUpdate":"pendingCreate",values:{...Te,id:Q},treeValues:{...Te,id:Q}}:ve);else{const ve=Gs(i);ie=i.concat({id:ve,operation:"pendingCreate",values:{...Te,id:ve},treeValues:{...Te,id:ve}})}Ce(ie),L||x(!1)},ue=async Q=>{const{id:de}=Q;let Te=i;const ie=i.find(ve=>ve.id===de);(ie==null?void 0:ie.values)===void 0&&(Te=await fe("form")),F(Te.find(ve=>ve.id===de)),k(!1),x(!0)},Ae=async Q=>{E(!0);let de=i;const Te=Q.filter(ie=>!i.find(ve=>ve.id===ie));try{for(const ie of Te){const ve=(await W.getHandler().readObjects({model:$,ids:[ie],fields:o.get("form").fields,context:{...m==null?void 0:m(),...P}}))[0],pe=(await W.getHandler().readObjects({model:$,ids:[ie],fields:o.get("tree").fields,context:{...m==null?void 0:m(),...P}}))[0];de.push({id:ie,operation:"pendingLink",values:ve,treeValues:pe})}Ce(de)}catch(ie){N(ie)}finally{E(!1)}};function De(){const Q=qa[a];if(a==="graph")return se.parseGraph(o.get("graph").arch).string;{const de=new Q(o.get(a).fields);return de.parse(o.get(a).arch),de.string}}const Ze=()=>{var de,Te,ie,ve;if(a==="form")return re.length===0?v("noCurrentEntries"):a!==X.current&&i.some(pe=>!pe.values)?e.jsx(h.Spin,{}):e.jsx(ct,{formView:o.get("form"),values:(de=re[u])==null?void 0:de.values,parentContext:{...m==null?void 0:m(),...P},model:$,id:(Te=re[u])==null?void 0:Te.id,submitMode:"values",onFieldsChange:pe=>{var je;const $e=(je=re[u])==null?void 0:je.id,Ue=i.map(Xe=>Xe.id===$e?{...Xe,operation:Xe.operation==="original"?"pendingUpdate":Xe.operation,values:{...pe,id:$e},treeValues:{...pe,id:$e}}:Xe);Ce(Ue),_(!0)},readOnly:J});let Q=[];if(re.some(pe=>pe.treeValues)&&(Q=K?st({resultsToSort:re.map(pe=>pe.treeValues),sorter:K,fields:{...o.get("tree").fields,...((ie=o.get("form"))==null?void 0:ie.fields)||{}}}):re.map(pe=>pe.treeValues)),a==="tree")return e.jsx(Ct,{total:re.length,limit:re.length,treeView:o.get("tree"),results:Q,loading:b,onRowClicked:((ve=o.get("form"))==null?void 0:ve.fields)!==void 0?ue:void 0,showPagination:!1,rowSelection:{selectedRowKeys:A,onChange:M},sorter:K,onChangeSort:q,context:{...m==null?void 0:m(),...P},colorsForResults:Y});if(a==="graph"){const pe=[[`${s.inv_field}`,"=",d]];return e.jsx(Mt,{view_id:o.get("graph").view_id,model:s.relation,domain:pe,context:{...m==null?void 0:m(),...P},limit:0})}};if(D)return e.jsx(h.Alert,{className:"mt-10",message:D,type:"error",banner:!0});const Ke=L;return b?e.jsx(h.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(Wa,{mode:a,title:De(),readOnly:J,isMany2Many:le,formHasChanges:V,totalItems:re.length,currentItemIndex:u,onDelete:He,onCreateItem:Me,onToggleViewMode:Se,onPreviousItem:ye,onNextItem:xe,onSearchItem:R,selectedRowKeys:A,showCreateButton:((Ge=o.get("form"))==null?void 0:Ge.fields)!==void 0,showToggleButton:o.size>1}),Ze(),e.jsx(dt,{formView:o.get("form"),model:$,id:H==null?void 0:H.id,submitMode:"values",values:H==null?void 0:H.values,defaultValues:H==null?void 0:H.defaultValues,visible:S,onSubmitSucceed:Oe,parentContext:{...m==null?void 0:m(),...P},onCancel:()=>{k(!1),x(!1)},readOnly:J,mustClearAfterSave:Ke}),e.jsx(er,{domain:I.current,model:$,context:{...m==null?void 0:m(),...P},visible:O,onSelectValues:async Q=>{T(!1),Ae(Q)},onCloseModal:()=>{T(!1)}})]})},yn=t=>{const{ooui:r}=t,{mode:n,relation:s,views:o,required:i,context:a}=r;let c;const[u,f]=l.useState(!0),[p,d]=l.useState(),[g,y]=l.useState(new Map),m=l.useContext(_e),{getContext:w}=m||{};Qe.default(()=>{v()},[r]);const C=async _=>o&&o[_]?o[_]:await W.getHandler().getView({model:s,type:_,context:{...w==null?void 0:w(),...a}}),v=async()=>{f(!0),d(void 0);try{if(n&&n.length>0){for(const _ of n){const b=await C(_);g.set(_,b)}y(g)}else{const _=await C("form"),b=await C("tree");g.set("form",_),g.set("tree",b),y(g)}}catch(_){d(JSON.stringify(_))}finally{f(!1)}};if(n&&n.length>0?c=n[0]:c="tree",u)return e.jsx(h.Spin,{});if(p)return e.jsx(h.Alert,{className:"mt-10",message:p,type:"error",banner:!0});const V=async(_,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(Sa,{initialView:c,children:e.jsx(me,{required:i,type:"array",validator:V,...t,children:e.jsx(Ga,{ooui:r,views:g})})})},{useToken:Ua}=h.theme,wn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"number",...t,children:e.jsx(ja,{ooui:r})})},ja=t=>{const{ooui:r,value:n,onChange:s}=t,{id:o,readOnly:i,required:a}=r,{token:c}=Ua(),u=a&&!i?{backgroundColor:c.colorPrimaryBg}:void 0,f=l.useRef(),[p,d]=l.useState(),g=l.useContext(_e),{elementHasLostFocus:y}=g||{};l.useEffect(()=>{d(Qr(n))},[n]);const m=v=>{s==null||s(v)};function w(v){f.current=v.target.value,d(v.target.value)}async function C(){m(Ji(p)),await new Promise(v=>setTimeout(v,300)),y==null||y()}return e.jsx(h.Input,{value:p,disabled:i,className:"w-full",style:u,id:o,placeholder:"00:00",onChange:w,onBlur:C})};function rr(t){const{ooui:r,showLabel:n=!0,responsiveBehaviour:s}=t,o=qe(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:za}=h.Tabs;function vn(t){const{ooui:r,responsiveBehaviour:n}=t,s=r.pages;function o(i){if(i){const a=qe(i);return a&&e.jsx(a,{})}}return e.jsx(h.Tabs,{defaultActiveKey:"1",tabPosition:r.tabPosition,children:s.filter(i=>!i.invisible).map(i=>e.jsx(za,{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:Ja}=h.theme,{TextArea:nr}=h.Input,Cn=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o,height:i,translatable:a}=r,{token:c}=Ja(),u=o&&!s?{backgroundColor:c.colorPrimaryBg}:void 0,f=l.useContext(_e),{elementHasLostFocus:p}=f||{};return e.jsx(me,{required:o,...t,children:a?e.jsx(Za,{field:n,height:i,requiredStyle:u}):e.jsx(nr,{disabled:s||a,style:{height:i?i+"px":"100%",...u},rows:4,onBlur:p})})},Za=({value:t,field:r,requiredStyle:n,onChange:s,height:o})=>{const i=l.useContext(_e),{activeId:a,activeModel:c,fetchValues:u,formHasChanges:f,elementHasLostFocus:p}=i||{},[d,g]=l.useState(!1),{t:y}=l.useContext(ge);return a?e.jsxs(e.Fragment,{children:[e.jsx("div",{onClick:()=>{if(f!=null&&f()){ze(y("saveBeforeTranslate"));return}d||g(!0)},children:e.jsx(nr,{value:t,onChange:m=>{s==null||s(m.target.value)},style:{height:o?o+"px":"100%",cursor:"pointer",...n},id:r,disabled:!0,rows:4,onBlur:p})}),e.jsx(Fr,{id:a,model:c,field:r,visible:d,onCloseModal:()=>{g(!1)},onSubmitSucceed:()=>{g(!1),u==null||u()}})]}):e.jsxs(e.Fragment,{children:[e.jsx(h.Row,{gutter:8,wrap:!1,children:e.jsx(nr,{value:t,onChange:m=>{s==null||s(m.target.value)},style:{height:o?o+"px":"100%",...n},id:r,rows:4,onBlur:p})}),e.jsx(h.Row,{justify:"end",style:{paddingTop:5},children:e.jsx(Le,{tooltip:y("translate"),icon:e.jsx(B.TranslationOutlined,{}),onClick:async()=>{f!=null&&f()?ze(y("saveBeforeTranslate")):ze(y("enterTextBeforeTranslate"))},children:y("translate")})})]})},Sn=t=>{const{ooui:r}=t,{label:n,icon:s}=r,o=qe(s||"");return e.jsx(h.Divider,{orientation:"left",className:"text-sm",children:(o||n)&&e.jsxs(h.Space,{children:[o?e.jsx(o,{}):null,n]})})},Xa=({model:t,context:r,locale:n,selectedRegistersToExport:s,domain:o,limit:i,onClose:a})=>{const c=l.useRef({}),u=l.useRef(new Map),f=l.useCallback(async C=>{if(C.selectedKeys===void 0||C.selectedKeys.length===0){ze(be("selectAtLeastOneField",n));return}let v=o;C.registersAmount==="selected"&&(s==null?void 0:s.length)!==0&&(v=[["id","in",s==null?void 0:s.map(b=>b.id)]]);const{datas:V}=await W.getHandler().exportData({model:t,fields:nl({keys:C.selectedKeys,fields:c.current}),domain:v,limit:C.registersAmount==="all"?0:i,context:r,format:C.exportType});a(),await new Promise(b=>setTimeout(b,200));const _=await nt(V);Tt(V,_.mime)},[n,t,o,i,r,a]),p=l.useCallback(async()=>{const C=await W.getHandler().getFields({model:t,context:r,fields:[]});return c.current["/"]=C,bn({fields:C})},[t,r,c]),d=l.useCallback(async C=>{const V=sr(C,c.current)[or(C)],_=V.relation,b=await W.getHandler().getFields({model:_,context:r,fields:[]});for(const[E,D]of Object.entries(b))b[E].string=Ra({parentTitle:V.string,title:D.string});return c.current[C]=b,bn({fields:b,parentKey:C})},[c.current,t,r]),g=l.useCallback(async()=>{const C=await el({model:t,context:r}),v=await rl({predefinedExports:C,fields:c.current,onGetFieldChilds:d});return{predefinedExports:C.map(_=>({..._,fields:_.fields.map(b=>{const E=or(b.key),N=sr(b.key,c.current)[E];return{key:b.key,title:N.string}})})),keysWithChilds:v}},[c.current]),y=l.useCallback(async C=>{const v=await w("ir.exports"),V=await w("ir.exports.line"),_=await W.getHandler().create({model:"ir.exports",values:{name:C.name,resource:t},fields:v,context:r});return await Promise.all(C.fields.map(async b=>await W.getHandler().create({model:"ir.exports.line",values:{name:b.key,export_id:_},fields:V,context:r}))),{...C,id:_}},[]),m=l.useCallback(async C=>{await W.getHandler().delete({model:"ir.exports",ids:[C.id]})},[]),w=l.useCallback(async C=>{if(u.current.has(C))return u.current.get(C);const v=W.getHandler().getFields({model:C,context:r,fields:[]});u.current.set(C,v)},[u,r]);return{onGetFields:p,onGetFieldChilds:d,onExport:f,onGetPredefinedExports:g,onSavePredefinedExport:y,onRemovePredefinedExport:m}},bn=({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=xn(o);n.push({key:Qa({key:s,parentKey:r}),title:o.string,tooltip:o.help,required:o.required,isLeaf:!i})}return n},xn=t=>t.type==="many2one"||t.type==="one2many"||t.type==="many2many",Qa=({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)],Ra=({title:t,parentTitle:r})=>`${r?r+" \u2192 ":""}${t}`,el=async({model:t,context:r})=>{const n=await W.getHandler().search({model:"ir.exports",params:[["resource","=",t]],context:r}),s=n.flatMap(i=>i.export_fields),o=await W.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(u=>u.id===a).name}))}))},tl=({fields:t,keys:r})=>ol([...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)))]),rl=async({predefinedExports:t,fields:r,onGetFieldChilds:n})=>{const s=t.flatMap(a=>a.fields.map(c=>c.key)),o=tl({fields:r,keys:s}),i=[];for(const a of o)i.push({key:a,childs:await n(a)});return i},nl=({keys:t,fields:r})=>t.map(n=>{const s=or(n),i=sr(n,r)[s];return xn(i)?`${n}/id`:n}),ol=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},Tn=t=>{const{visible:r,locale:n,onClose:s,model:o,context:i,selectedRegistersToExport:a,totalRegisters:c,domain:u,limit:f,visibleRegisters:p}=t,{onExport:d,onGetFieldChilds:g,onGetFields:y,onGetPredefinedExports:m,onSavePredefinedExport:w,onRemovePredefinedExport:C}=Xa({model:o,context:i,domain:u,limit:f,selectedRegistersToExport:a,onClose:s,locale:n});return e.jsx(hr.ExportModal,{visible:r,locale:n,onSucceed:d,onCancel:s,selectedRegistersToExport:a&&a.length&&a.length>0?a.length:void 0,totalRegisters:c,onGetFieldChilds:g,onGetFields:y,visibleRegisters:p,onGetPredefinedExports:m,onSavePredefinedExport:w,onRemovePredefinedExport:C})},Fn=t=>{const{ooui:r}=t;return e.jsx(sn,{ooui:r})},On=t=>{const{ooui:r}=t;return e.jsx(sn,{ooui:r,showTime:!0})},_n=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(sl,{ooui:r})})},sl=t=>{const{value:r,onChange:n,ooui:s}=t,{required:o,selectionValues:i,readOnly:a}=s,c=r==null?void 0:r.split(","),[u,f]=l.useState([]),[p,d]=l.useState();return l.useEffect(()=>{if(!r){d(void 0),f([]);return}const g=r&&c&&c[0],y=r&&c&&c[1]&&parseInt(c[1]);f([y,void 0]),d(g)},[r]),e.jsxs(h.Row,{gutter:8,wrap:!1,children:[e.jsx(h.Col,{flex:"1",children:e.jsx(Or,{ooui:new se.Selection({name:"model_selection",selection:i,readonly:a,required:o}),onChange:g=>{d(g);let y=u[0]||0;g!==p&&(f([]),y=0);const m=`${g},${y}`;m!==r&&(n==null||n(m))},value:p})}),e.jsx(h.Col,{flex:"3",children:e.jsx(un,{ooui:new se.Many2one({name:"object_value",relation:p,readonly:a,required:o}),value:u,onChange:g=>{f(g);const y=`${p},${g[0]||0}`;y!==r&&(n==null||n(y))}})})]})},{useToken:il}=h.theme,Dn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(al,{ooui:r})})},al=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o,required:i,filenameField:a}=r,{token:c}=il(),u=i&&!o?{backgroundColor:c.colorPrimaryBg}:void 0,f=l.useRef(null),{setFieldValue:p,getFieldValue:d}=l.useContext(_e)||{},{t:g}=l.useContext(ge),y=n?Hs(n):"",m=_=>{s==null||s(_)};async function w(){const _=await nt(n),b=`data:${_==null?void 0:_.mime};base64,${n}`,E=document.createElement("a"),D=d(a),N=d("name");E.href=b,E.download=D||N,E.click()}async function C(){const _=await nt(n);Tt(n,_.mime)}async function v(_){_.stopPropagation(),_.preventDefault();const b=_.target.files[0],E=await Br(b);m(E),a&&p(a,b.name)}function V(){p(a,void 0),m(void 0)}return e.jsxs(h.Row,{gutter:8,children:[e.jsxs(h.Col,{style:{paddingBottom:5},children:[e.jsx("input",{type:"file",id:"file",ref:f,style:{display:"none"},onChange:v}),e.jsx(h.Input,{type:"text",disabled:!0,style:u,value:y})]}),e.jsx(h.Col,{children:e.jsxs(h.Space,{children:[e.jsx(h.Button,{icon:e.jsx(B.FolderOpenOutlined,{}),disabled:o,onClick:()=>{f.current.click()},children:"Select"}),e.jsx(h.Button,{icon:e.jsx(B.EyeOutlined,{}),disabled:!n,onClick:C,children:g("open")}),e.jsx(Le,{tooltip:g("download"),disabled:!n,onClick:w,icon:e.jsx(B.DownloadOutlined,{})}),e.jsx(Le,{tooltip:g("clear"),disabled:o||!n,onClick:V,icon:e.jsx(B.ClearOutlined,{})})]})})]})},ir={tree:e.jsx(B.TableOutlined,{}),form:e.jsx(B.FormOutlined,{}),graph:e.jsx(B.AreaChartOutlined,{}),calendar:e.jsx(B.CalendarOutlined,{})};function kn(t){return t?(ir==null?void 0:ir[t.type])||e.jsx(B.FormOutlined,{}):e.jsx(B.FormOutlined,{})}function ar(t){const{currentView:r,availableViews:n,onChangeView:s,disabled:o=!1,formHasChanges:i=!1,previousView:a}=t,{t:c,lang:u}=l.useContext(ge);function f(){const g=n.map((y,m)=>e.jsx(h.Menu.Item,{children:e.jsxs(h.Row,{wrap:!1,children:[e.jsx(h.Col,{flex:"none",style:{paddingRight:20},children:kn(y)}),e.jsx(h.Col,{flex:"auto",style:{paddingRight:20},children:y.type.charAt(0).toUpperCase()+y.type.slice(1)}),e.jsx(h.Col,{flex:"none",children:e.jsx(B.CheckOutlined,{style:{opacity:r.view_id===y.view_id?1:0}})})]})},y.view_id||m));return e.jsx(h.Menu,{onClick:d,children:e.jsx(h.Menu.ItemGroup,{title:c("viewAs"),children:g})})}function p(g){if(i){yt({lang:u,onOk:()=>{g()}});return}g()}function d(g){p(()=>{const y=n.find(m=>m.view_id===parseInt(g.key));s(y)})}return e.jsxs("div",{style:{display:"flex"},children:[e.jsx(Le,{tooltip:a?c("viewAs")+" "+c(a.type):"",icon:kn(a),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:()=>{d({key:a==null?void 0:a.view_id})},disabled:o||n.length===1}),e.jsx(h.Dropdown,{overlay:f(),disabled:o||n.length===1,children:e.jsx(h.Button,{style:{width:25,borderTopLeftRadius:0,borderBottomLeftRadius:0},icon:e.jsx(B.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 f=s==null?void 0:s.map((p,d)=>p.name==="divider"?e.jsx(h.Menu.Divider,{},"divider"+d):e.jsx(h.Menu.Item,{children:p.name},p.id));return e.jsx(h.Menu,{onClick:u,children:e.jsx(h.Menu.ItemGroup,{title:n,children:f})})}function u(f){const p=s.find(d=>isNaN(f.key)?d.id===f.key:d.id===parseInt(f.key));o(p)}return e.jsx(h.Dropdown,{overlay:c(),disabled:a||!s||s.length===0,children:e.jsxs(h.Button,{children:[r," ",i," ",e.jsx(B.DownOutlined,{})]})})}function Ne(t){const{onClick:r,disabled:n=!1,loading:s=!1,tooltip:o,icon:i,label:a,type:c="default"}=t,u=s?e.jsx(B.LoadingOutlined,{}):i;return e.jsxs(Le,{type:c,tooltip:o,onClick:r,disabled:n,children:[u,a]})}function Vn(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(B.FileAddOutlined,{}),tooltip:o("new"),onClick:a,disabled:r})}const{confirm:ll}=h.Modal,cl=({onOk:t,onCancel:r,lang:n})=>{ll({title:be("unsavedChanges",n),icon:e.jsx(B.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmRefreshWithoutSave",n),okText:be("discardAndRefresh",n),cancelText:be("cancel",n),onOk:t,onCancel:r})};async function En(t,r,n){const s=(await W.getHandler().getLogInfo({model:t,ids:[r]}))[0],{create_date:o,create_uid:i,id:a,write_date:c,write_uid:u}=s;ze(e.jsxs("div",{children:["ID: "+a," ",e.jsx("br",{}),n("createdBy")+": "+i[1]," ",e.jsx("br",{}),n("creationDate")+": "+o," ",e.jsx("br",{}),n("lastUpdatedBy")+": "+u[1]," ",e.jsx("br",{}),n("lastUpdatedDate")+": "+c]}))}const dl=t=>{const{numberOfAttachments:r,disabled:n}=t,{t:s,lang:o}=l.useContext(ge),[i,a]=l.useState(!1),c=e.jsxs(h.Button,{disabled:n,children:[e.jsx(B.LinkOutlined,{}),`(${r})`,e.jsx(B.DownOutlined,{style:{fontSize:12}})]});return n?c:e.jsx(h.Popover,{onVisibleChange:u=>a(u),visible:i,placement:"bottom",content:ul(t,a,o),title:s("attachments"),arrowContent:null,children:c})},ul=(t,r,n)=>{const{attachments:s=[],loading:o,onAddNewAttachment:i,onopenAttachmentLink:a,onOpenAttachmentDetail:c,onListAllAttachments:u}=t;return o?e.jsx(h.Spin,{style:{padding:20}}):e.jsxs(e.Fragment,{children:[e.jsxs("a",{style:{display:"block",paddingBottom:5},href:"#",onClick:()=>{r(!1),u()},children:[e.jsx(B.TableOutlined,{})," ",be("listAllAttachments",n)]}),e.jsxs("a",{style:{display:"block"},href:"#",onClick:()=>{r(!1),i()},children:[e.jsx(B.FileAddOutlined,{})," ",be("addNewAttachment",n)]}),s.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("li",{className:"ant-dropdown-menu-item-divider"}),s.map(f=>{const p=f.link?B.LinkOutlined:B.DownloadOutlined;return e.jsxs(h.Row,{style:{paddingTop:4,paddingBottom:4},wrap:!1,align:"middle",children:[e.jsx(h.Col,{flex:"auto",children:f.name}),e.jsx(h.Col,{flex:"25px",style:{textAlign:"center"},children:(f.datas_fname||f.link)&&e.jsx(h.Tooltip,{title:f.link?be("openAttachmentLink",n):be("download",n),children:e.jsx(p,{style:{cursor:"pointer"},onClick:()=>{r(!1),a(f)}})})}),e.jsx(h.Col,{flex:"25px",style:{textAlign:"center"},children:e.jsx(h.Tooltip,{title:be("openAttachment",n),children:e.jsx(B.FormOutlined,{style:{cursor:"pointer"},onClick:()=>{r(!1),c(f)}})})})]},f.id)})]})]})};function fl(t){const{attachments:r,disabled:n=!1,onAddNewAttachment:s,onListAllAttachments:o,onViewAttachmentDetails:i}=t,{formRef:a}=l.useContext(Be),[c,u]=l.useState(!1),[f,p]=l.useState([]),[d,g]=l.useState(!1),{t:y}=l.useContext(ge),m=l.useCallback(async()=>{u(!0);try{const v=await W.getHandler().readObjects({model:"ir.attachment",ids:r.map(V=>V.id),fieldsToRetrieve:["name","datas_fname","link"],context:a.current.getContext()});p(v.map(V=>({id:V.id,name:V.name,datas_fname:V.datas_fname,link:V.link})))}catch(v){Ie(v)}u(!1)},r),w=l.useCallback(async v=>{if(v.link){window.open(v.link);return}g(!0);let V;try{V=(await W.getHandler().readObjects({model:"ir.attachment",ids:[v.id],context:a.current.getContext()}))[0]}catch(_){Ie(_)}if(g(!1),!!V)if(V.datas){const _=await nt(V.datas);Tt(V.datas,_.mime)}else i(V)},[]),C=l.useCallback(async v=>{i(v)},[]);return l.useEffect(()=>{m()},[m]),e.jsxs(e.Fragment,{children:[e.jsx(dl,{numberOfAttachments:r.length,attachments:f,disabled:n,loading:c,onAddNewAttachment:s,onListAllAttachments:o,onopenAttachmentLink:w,onOpenAttachmentDetail:C}),e.jsx(h.Modal,{title:y("downloadingAttachment"),open:d,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(h.Spin,{})})]})}function Mn({toolbar:t}){const{availableViews:r,currentView:n,setCurrentView:s,onFormSave:o,formHasChanges:i,formIsSaving:a,currentId:c,results:u,setCurrentItemIndex:f,currentItemIndex:p,setCurrentId:d,currentModel:g,setRemovingItem:y,removingItem:m,duplicatingItem:w,setDuplicatingItem:C,setResults:v,formIsLoading:V,attachments:_,formRef:b,setFormHasChanges:E,previousView:D,setPreviousView:N,goToResourceId:S}=l.useContext(Be),{t:x,lang:O}=l.useContext(ge),T=l.useContext(lt),{processAction:H}=T||{},F=l.useContext(Ye),{openRelate:A,openDefaultActionForModel:M}=F||{};function L($){if(i){cl({lang:O,onOk:()=>{$()}});return}$()}function k($){if(i){yt({lang:O,onOk:()=>{$()}});return}$()}function I(){u&&u.length>p+1?(f==null||f(p+1),d==null||d(u[p+1].id)):u&&p+1===u.length&&(f==null||f(0),d==null||d(u[0].id))}function K(){u&&p>0?(f==null||f(p-1),d==null||d(u[p-1].id)):u&&p===0&&(f==null||f(u.length-1),d==null||d(u[u.length-1].id))}function q(){rt({confirmMessage:x("confirmRemoveItem"),lang:O,onOk:()=>{z()}})}async function z(){try{y==null||y(!0),await W.getHandler().delete({model:g,ids:[c]});const $=u==null?void 0:u.filter(ee=>ee.id!==c);v==null||v($);let P=0;p>0&&p<=u.length-1&&(P=p-1),$!=null&&$[P]?(d==null||d($==null?void 0:$[P].id),f==null||f(P)):(d==null||d(void 0),f==null||f(void 0))}catch($){_t(JSON.stringify($))}finally{y==null||y(!1)}}async function Y(){try{C==null||C(!0);const $=await W.getHandler().duplicate({id:c,model:g,context:b.current.getContext()});$&&await(S==null?void 0:S($))}catch($){_t(JSON.stringify($))}finally{C==null||C(!1)}}const Z=a||m||V||w;function J($){H==null||H({actionData:$,values:b.current.getValues(),fields:b.current.getFields(),context:b.current.getContext(),onRefreshParentValues:()=>{b.current.fetchValues()}})}return n?e.jsxs(h.Space,{wrap:!0,children:[V&&e.jsxs(e.Fragment,{children:[e.jsx(h.Spin,{}),ft(),ft()]}),e.jsx(Vn,{disabled:a||V||m||w}),e.jsx(Ne,{icon:e.jsx(B.SaveOutlined,{}),tooltip:x("save"),disabled:!i||Z,loading:a,onClick:o}),e.jsx(Ne,{icon:e.jsx(B.CopyOutlined,{}),tooltip:x("duplicate"),disabled:i||a||c===void 0||w||V,loading:w,onClick:Y}),e.jsx(Ne,{icon:e.jsx(B.DeleteOutlined,{}),tooltip:x("delete"),disabled:a||c===void 0||m||w||V,loading:m,onClick:q}),ft(),e.jsx(Ne,{icon:e.jsx(B.InfoCircleOutlined,{}),tooltip:x("showLogs"),disabled:a||c===void 0||m||w||V,loading:!1,onClick:()=>{En(g,c,x)}}),e.jsx(Ne,{icon:e.jsx(B.ReloadOutlined,{}),tooltip:x("refresh"),disabled:a||c===void 0||m||w||V,loading:!1,onClick:()=>{L(()=>{b.current.fetchValues()})}}),ft(),e.jsx(ar,{currentView:n,previousView:D,availableViews:r,onChangeView:$=>{N==null||N(n),E==null||E(!1),s==null||s($)},disabled:Z,formHasChanges:i}),ft(),e.jsxs(h.Space,{children:[e.jsx(Ne,{icon:e.jsx(B.LeftOutlined,{}),tooltip:x("previous"),disabled:Z,loading:!1,onClick:()=>{k(K)}}),e.jsx(Ne,{icon:e.jsx(B.RightOutlined,{}),tooltip:x("next"),disabled:Z,loading:!1,onClick:()=>{k(I)}})]}),ft(),e.jsx(ut,{icon:e.jsx(B.ThunderboltOutlined,{}),disabled:Z,tooltip:x("actions"),items:t==null?void 0:t.action,onItemClick:async $=>{!$||!(await ht({onFormSave:o})).succeed||J($)}}),e.jsx(ut,{icon:e.jsx(B.PrinterOutlined,{}),disabled:Z,tooltip:x("reports"),items:t==null?void 0:t.print,onItemClick:async $=>{if(!$)return;const P=await ht({onFormSave:o});!P.succeed||J({...$,datas:{...$.datas||{},ids:[P.currentId]}})}}),e.jsx(ut,{icon:e.jsx(B.EnterOutlined,{}),disabled:Z,tooltip:x("related"),items:t==null?void 0:t.relate,onItemClick:async $=>{!$||!(await ht({onFormSave:o})).succeed||A({relateData:$,values:b.current.getValues(),fields:b.current.getFields(),action_id:$.id,action_type:$.type})}}),e.jsx(fl,{disabled:Z,attachments:_,onAddNewAttachment:async()=>{const $=await ht({onFormSave:o});if(!$.succeed)return;const P=$.currentId,ee=g;M({model:"ir.attachment",values:{selection_associated_object:`${ee},${P}`},forced_values:{res_model:ee,res_id:P},initialViewType:"form"})},onListAllAttachments:async()=>{const $=await ht({onFormSave:o});if(!$.succeed)return;const P=$.currentId;M({model:"ir.attachment",domain:[["res_model","=",`${g}`],["res_id","=",`${P}`]],initialViewType:"tree"})},onViewAttachmentDetails:async $=>{!(await ht({onFormSave:o})).succeed||M({model:"ir.attachment",res_id:$.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:hl}=h.theme,In=t=>{const{ooui:r,value:n,onChange:s,valueValidator:o,linkPrefix:i=""}=t,{id:a,readOnly:c,required:u}=r,{token:f}=hl(),p=u&&!c?{backgroundColor:f.colorPrimaryBg}:void 0,d=l.useContext(_e),{elementHasLostFocus:g}=d||{},[y,m]=l.useState(!1),[w,C]=l.useState(!1);l.useEffect(()=>{c&&!y&&C(!1),!n&&!c&&(m(!0),C(!0))},[y,c]);const v=V=>{s==null||s(V.target.value)};return e.jsxs(h.Row,{gutter:8,wrap:!1,align:"middle",children:[c?null:e.jsx(h.Col,{flex:"32px",children:y?e.jsx(h.Button,{icon:e.jsx(B.CheckOutlined,{}),onClick:()=>{o(n)&&(m(!1),C(!1))},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1}):e.jsx(h.Button,{icon:e.jsx(B.EditOutlined,{}),onClick:()=>{m(!0),C(!0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1})}),e.jsx(h.Col,{flex:"auto",children:w?e.jsx(h.Input,{style:{borderTopLeftRadius:0,borderBottomLeftRadius:0,...p},id:a,onChange:v,value:n,onBlur:()=>{o(n)&&(m(!1),C(!1),g==null||g())}}):e.jsx("a",{href:`${i}${n}`,style:{color:f.colorPrimary,paddingRight:15},target:"_blank",children:n})})]})},An=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(In,{ooui:r,valueValidator:s=>s?fo.default(s):!1})})},$n=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(In,{ooui:r,linkPrefix:"mailto:",valueValidator:s=>s?ho.default(s):!1})})},pl=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(h.Modal,{title:i("goToResourceId"),centered:!0,open:r,footer:null,destroyOnClose:!0,onCancel:s,maskClosable:!1,children:e.jsxs(h.Form,{layout:"vertical",onFinish:a,autoComplete:"off",children:[e.jsx(h.Form.Item,{name:"id",label:i("searchId"),rules:[{required:!0,type:"number"}],children:e.jsx(h.InputNumber,{style:{width:"100%"},autoFocus:!0})}),e.jsx(h.Row,{align:"middle",justify:"end",children:e.jsx(h.Col,{children:e.jsxs(h.Space,{children:[e.jsx(h.Button,{icon:e.jsx(B.CloseOutlined,{}),htmlType:"button",onClick:s,disabled:o,children:i("cancel")}),e.jsx(h.Button,{loading:o,style:{marginLeft:15},icon:e.jsx(B.CheckOutlined,{}),htmlType:"submit",type:"primary",disabled:o,children:i("ok")})]})})})]})})},{useToken:gl}=h.theme;function Ln(t){const{badgeNumber:r=0,...n}=t,{token:s}=gl();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 ml({refreshGraph:t}){const{t:r}=l.useContext(ge),{availableViews:n,currentView:s,setCurrentView:o,searchParams:i,searchVisible:a,setSearchVisible:c,graphIsLoading:u,previousView:f,setPreviousView:p}=l.useContext(Be);return e.jsxs(h.Space,{wrap:!0,children:[e.jsx(Ln,{icon:e.jsx(B.FilterOutlined,{style:{color:a?"white":void 0}}),tooltip:r("advanced_search"),type:a?"primary":"default",onClick:()=>{c==null||c(!a)},disabled:u,badgeNumber:i==null?void 0:i.length}),e.jsx(Ne,{icon:e.jsx(B.ReloadOutlined,{}),tooltip:r("refresh"),disabled:u,loading:!1,onClick:()=>{t()}}),e.jsx(ar,{currentView:s,availableViews:n,onChangeView:d=>{p==null||p(s),o==null||o(d)},disabled:!1,previousView:f})]})}const{useToken:yl}=h.theme,{Title:wl,Text:It}=h.Typography;function At(t){const{title:r,children:n}=t,{title:s,currentView:o,currentId:i,currentItemIndex:a,results:c,totalItems:u,selectedRowItems:f}=l.useContext(Be),{t:p}=l.useContext(ge),{token:d}=yl();function g(){if((o==null?void 0:o.type)==="form")return i?u===0?e.jsxs(e.Fragment,{children:[p("editingDocument")," (id:"," ",e.jsx(It,{copyable:{icon:e.jsx(B.CopyOutlined,{style:{color:"red"}})},children:i}),")"]}):e.jsxs(e.Fragment,{children:[p("register")," ",a===void 0?1:a+1," /"," ",c.length," ",p("of")," ",u," - ",p("editingDocument")," (id:"," ",e.jsx(It,{copyable:!0,children:i}),")"]}):"";if((o==null?void 0:o.type)==="tree"&&f){if(f.length===1)return e.jsxs(e.Fragment,{children:["1 ",p("selectedRegisters")," - (id:"," ",e.jsx(It,{copyable:!0,children:f[0].id}),")"]});if(f.length>1)return e.jsxs(e.Fragment,{children:[f.length," ",p("selectedRegisters"),e.jsx(It,{copyable:{text:f.map(y=>y.id).join(", ")}})]})}return null}return e.jsxs("div",{style:{position:"sticky",top:80,zIndex:3},children:[e.jsxs(h.Row,{className:"shadow-md",style:{padding:"1em",borderRadius:d.borderRadius,backgroundColor:d.colorPrimaryBg},align:"middle",children:[e.jsxs(h.Col,{flex:2,children:[e.jsx(wl,{level:3,style:{marginBottom:0},children:r||s}),g()]}),e.jsx(h.Col,{flex:3,children:e.jsx(h.Row,{justify:"end",children:n})})]}),e.jsx("div",{className:"pb-5"})]})}const vl=t=>{const{viewData:r,visible:n,model:s,context:o,domain:i,formView:a,treeView:c}=t,u=l.useRef(),f=l.useContext(Be),{setResults:p=void 0,setCurrentItemIndex:d=void 0,currentId:g=void 0,results:y=void 0,setSelectedRowItems:m=void 0,setSearchParams:w=void 0,searchVisible:C=!0,setSearchVisible:v=void 0,sorter:V=void 0,setSorter:_=void 0,setTotalItems:b=void 0,setSearchTreeNameSearch:E=void 0,setTreeIsLoading:D=void 0,limit:N,setLimit:S,searchParams:x,searchValues:O,setSearchValues:T,currentView:H}=f||{},[F,A]=l.useState(!0);l.useEffect(()=>{var q;(q=u.current)==null||q.refresh()},[x]),l.useEffect(()=>{r.view_id!==H.view_id&&A(!0)},[H]);const{clear:M,searchFilterLoading:L,searchError:k,offset:I,tableRefreshing:K}=zr({model:s,setSearchTreeNameSearch:E,setSelectedRowItems:m,searchParams:x,setSearchValues:T,setSearchParams:w,setSearchVisible:v,setTreeIsLoading:D,context:o,formView:a,treeView:c,sorter:V,setSorter:_,setCurrentItemIndex:d,setResultsActionView:p,resultsActionView:y,domain:i,currentId:g,setActionViewTotalItems:b,limit:N,setLimit:S});return!n||!r?null:e.jsxs(e.Fragment,{children:[e.jsx(At,{title:r.name,children:e.jsx(ml,{refreshGraph:()=>{u.current.refresh()}})}),e.jsx(Xt,{fields:{...c.fields,...a.fields},searchFields:Wr([a.search_fields,c.search_fields]),formXml:a.arch,limit:N,onClear:M,offset:I,isSearching:L,onSubmit:q=>{A(!1),w==null||w(q.params),v==null||v(!1)},searchError:k,searchVisible:C,searchValues:O,showLimitOptions:!1}),K?e.jsx(h.Spin,{}):e.jsx(Mt,{ref:u,view_id:r.view_id,model:s,context:o,domain:Ot(x||[],i),limit:F?N:void 0,manualIds:F?y==null?void 0:y.map(q=>q.id):void 0})]})},Cl=t=>{const{visible:r,formRef:n,model:s,currentId:o,domain:i,formView:a,context:c,defaultValues:u,forcedValues:f,results:p,setResults:d,setCurrentItemIndex:g}=t;return r?e.jsxs(e.Fragment,{children:[e.jsx(At,{children:e.jsx(Mn,{toolbar:a==null?void 0:a.toolbar})}),e.jsx(ct,{rootForm:!0,ref:n,model:s,defaultValues:u,forcedValues:f,formView:a,actionDomain:i,id:o,parentContext:c,onSubmitSucceed:(y,m)=>{p.findIndex(C=>C.id===y)===-1&&(p.push(m),d(p),g(p.length-1))}})]}):null};function Sl(t){const{onSearch:r,disabled:n=!1,searchText:s}=t,{t:o}=l.useContext(ge),[i]=h.Form.useForm(),[a,c]=l.useState(!1);function u(p){r(p.search)}l.useEffect(()=>{i.setFieldsValue({search:s})},[s]);function f(){c(!1),i.setFieldsValue({search:void 0}),r(void 0)}return e.jsx(h.Form,{form:i,onFinish:u,autoComplete:"off",children:e.jsxs(h.Row,{align:"middle",justify:"end",children:[e.jsx(h.Col,{children:e.jsx(h.Form.Item,{name:"search",noStyle:!0,children:e.jsx(h.Input,{autoFocus:!0,disabled:n,onChange:p=>{c(p.target.value.length>0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},suffix:(a||s&&s.length>0)&&e.jsx(h.Tooltip,{title:o("clear"),children:e.jsx(B.CloseCircleFilled,{style:{color:"rgba(0,0,0,.45)"},onClick:f})})})})}),e.jsx(h.Col,{children:e.jsx(h.Button,{htmlType:"submit",disabled:n,style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},children:o("search")})})]})})}const Nn=Pe.default.createContext({previewFeatures:!1});function bl(t){var Z;const{availableViews:r,currentView:n,setCurrentView:s,selectedRowItems:o,setRemovingItem:i,removingItem:a,duplicatingItem:c,setDuplicatingItem:u,currentModel:f,searchTreeRef:p,setCurrentId:d,setCurrentItemIndex:g,searchParams:y,searchVisible:m,setSearchVisible:w,setSearchTreeNameSearch:C,searchTreeNameSearch:v,treeIsLoading:V,setPreviousView:_,previousView:b,results:E,limit:D,totalItems:N}=l.useContext(Be),{parentContext:S={},treeExpandable:x,toolbar:O}=t,{previewFeatures:T}=l.useContext(Nn),{t:H,lang:F}=l.useContext(ge),A=l.useContext(lt),{processAction:M}=A||{},[L,k]=l.useState(!1),I=v!==void 0&&v.trim().length>0;function K(){rt({confirmMessage:H("confirmRemove"),lang:F,onOk:()=>{q()}})}async function q(){var J;try{i==null||i(!0),await W.getHandler().delete({model:f,ids:o.map($=>$.id)}),d==null||d(void 0),g==null||g(void 0),(J=p==null?void 0:p.current)==null||J.refreshResults()}catch($){Ie($)}finally{i==null||i(!1)}}async function z(){var J;try{u==null||u(!0);const $=o[0].id;await W.getHandler().duplicate({id:$,model:f,context:{...S}})&&((J=p==null?void 0:p.current)==null||J.refreshResults())}catch($){Ie($)}finally{u==null||u(!1)}}function Y(J){M==null||M({actionData:J,values:{active_id:o==null?void 0:o.map($=>$.id)[0],active_ids:o==null?void 0:o.map($=>$.id)},fields:{},context:{...S,active_id:o==null?void 0:o.map($=>$.id)[0],active_ids:o==null?void 0:o.map($=>$.id)},onRefreshParentValues:()=>{var $;($=p==null?void 0:p.current)==null||$.refreshResults()}})}return e.jsxs(h.Space,{wrap:!0,children:[x?null:e.jsxs(e.Fragment,{children:[e.jsx(Sl,{disabled:c||a||V,searchText:v,onSearch:J=>{J&&J.trim().length>0?C==null||C(J):C==null||C(void 0)}}),!x&&e.jsx(Ln,{icon:e.jsx(B.FilterOutlined,{style:{color:m?"white":void 0}}),tooltip:H("advanced_search"),type:m?"primary":"default",onClick:()=>{w==null||w(!m)},disabled:c||a||V,badgeNumber:y==null?void 0:y.length}),bt(),e.jsx(Vn,{disabled:V}),e.jsx(Ne,{icon:e.jsx(B.CopyOutlined,{}),tooltip:H("duplicate"),disabled:!o||(o==null?void 0:o.length)!==1||c||V,loading:c,onClick:z}),e.jsx(Ne,{icon:e.jsx(B.DeleteOutlined,{}),tooltip:H("delete"),disabled:!(o&&(o==null?void 0:o.length)>0)||V,loading:a,onClick:K}),bt()]}),e.jsx(Ne,{icon:e.jsx(B.InfoCircleOutlined,{}),tooltip:H("showLogs"),disabled:!(o&&(o==null?void 0:o.length)>0)||V,loading:!1,onClick:()=>{En(f,o[0].id,H)}}),e.jsx(Ne,{icon:e.jsx(B.ReloadOutlined,{}),tooltip:H("refresh"),disabled:c||a||V,loading:!1,onClick:()=>{var J;(J=p==null?void 0:p.current)==null||J.refreshResults()}}),!x&&e.jsxs(e.Fragment,{children:[bt(),e.jsx(ar,{currentView:n,availableViews:r,onChangeView:J=>{_==null||_(n),s==null||s(J)},previousView:b,disabled:V})]}),bt(),e.jsx(ut,{icon:e.jsx(B.ThunderboltOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||V,tooltip:H("actions"),items:O==null?void 0:O.action,onItemClick:J=>{!J||Y(J)}}),e.jsx(ut,{icon:e.jsx(B.PrinterOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||V,tooltip:H("reports"),items:O==null?void 0:O.print,onItemClick:J=>{!J||Y({...J,datas:{...J.datas||{},ids:o.map($=>$.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:H("export"),items:[{id:"print_screen",name:H("printScreen")},{id:"export",name:H("advancedExport")}],onItemClick:J=>{if(J.id==="print_screen"){let $=(o==null?void 0:o.map(P=>P.id))||[];$.length===0&&($=(E==null?void 0:E.map(P=>P.id))||[]),Y({id:-1,model:f,report_name:"printscreen.list",type:"ir.actions.report.xml",datas:{model:f,ids:$}});return}k(!0)},disabled:c||a||V||I}),e.jsx(Tn,{visible:L,locale:F,onClose:()=>k(!1),model:f,domain:Ot(((Z=p==null?void 0:p.current)==null?void 0:Z.getDomain())||[],y||[]),limit:D,totalRegisters:N||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 xl=t=>{const{visible:r,searchTreeRef:n,model:s,context:o,formView:i,treeView:a,domain:c,setCurrentItemIndex:u,results:f,setCurrentId:p,setCurrentView:d,availableViews:g,searchTreeNameSearch:y}=t,{currentView:m,setPreviousView:w}=l.useContext(Be);return r?e.jsxs(e.Fragment,{children:[e.jsx(At,{children:e.jsx(bl,{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:y,formView:i,treeView:a,domain:c,onRowClicked:C=>{const{id:v}=C;p(v);const V=f.findIndex(b=>b.id===v);w==null||w(m),u(V);const _=g.find(b=>b.type==="form");d(_)}})]}):null},lr=Pe.default.createContext(null),Tl=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 Fl(){const{isLoading:t,dashboardRef:r,moveItemsEnabled:n,setMoveItemsEnabled:s}=l.useContext(lr),{t:o}=l.useContext(ge);return e.jsxs(h.Space,{wrap:!0,children:[e.jsx(Ne,{icon:e.jsx(B.BorderOuterOutlined,{style:{color:n?"white":void 0}}),type:n?"primary":"default",tooltip:o("moveDashboard"),disabled:t,loading:!1,onClick:()=>{s(!n)}}),Ol(),e.jsx(Ne,{icon:e.jsx(B.SettingOutlined,{}),tooltip:o("configDashboard"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.configDashboard()}}),e.jsx(Ne,{icon:e.jsx(B.ReloadOutlined,{}),tooltip:o("refresh"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.refresh()}})]})}function Ol(){return e.jsx("div",{className:"inline-block w-2"})}const _l=t=>{const{dashboardData:r}=t,n=l.useRef(),s=l.useContext(Ye),{openShortcut:o}=s||{};return r?e.jsxs(Tl,{dashboardRef:n,openAction:i=>{o(i)},children:[e.jsx(At,{children:e.jsx(Fl,{})}),e.jsx(Kn,{ref:n,model:r.model,id:r.id,context:r==null?void 0:r.context,configAction:r==null?void 0:r.configAction})]}):null};function Dl(t,r){const{domain:n,model:s,context:o,views:i,title:a,setCanWeClose:c,tabKey:u,initialView:f,formDefaultValues:p,formForcedValues:d={},res_id:g=!1,action_id:y,action_type:m,treeExpandable:w=!1,limit:C}=t,[v,V]=l.useState(),[_,b]=l.useState([]),[E,D]=l.useState(!0),N=g||void 0,[S,x]=l.useState(N),[O,T]=l.useState([]),[H,F]=l.useState(),[A,M]=l.useState([]),[L,k]=l.useState(),[I,K]=l.useState(0),[q,z]=l.useState(!1),[Y,Z]=l.useState(!1),[J,$]=l.useState(),{t:P}=l.useContext(ge),ee=l.useRef(),le=l.useRef(),ce=l.useContext(Ye),{setCurrentView:re,setCurrentId:X,tabs:we,activeKey:Ce,openAction:Ve,onRemoveTab:fe}=ce||{};ao.useHotkeys("ctrl+g,command+g",R=>{R.preventDefault(),Ee()},[Ce,we,v,H,A]);function oe(R){x(R),X==null||X(R)}function Se(R){V(R),re==null||re(R)}l.useImperativeHandle(r,()=>({canWeClose:xe}));const ye=async()=>{D(!0);const R=[];for(const he of i){const[Oe,ue]=he;let Ae;try{ue!=="dashboard"&&(Ae=await W.getHandler().getView({model:s,type:ue,id:Oe,context:o}))}catch(De){console.error(`${s} - ${ue}\xA0- ${JSON.stringify(De,null,2)}`);continue}switch(ue){case"dashboard":{const De=i.find(Ke=>{const[,Ge]=Ke;return Ge==="form"});let Ze;De&&(Ze={action_id:y,action_type:m,name:a,res_id:o.active_id,res_model:s,view_id:De[0],view_type:De[1]}),R.push({type:"dashboard",id:o.active_id,model:s,context:o,configAction:Ze});break}case"form":{R.push({...Ae,type:ue});break}case"tree":{R.push({...Ae,isExpandable:w,type:ue});break}case"graph":{R.push({...Ae,type:ue});break}}}let ae;!f&&R.find(he=>he.type==="tree")?ae=R.find(Oe=>Oe.type==="tree"):f?ae=R.find(Oe=>f.id?Oe.type===f.type&&Oe.view_id===f.id:Oe.type===f.type):ae=R.find(Oe=>Oe.type==="form"),ae||(Ie(`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`),fe==null||fe(u)),Se(ae),b(R),D(!1)};c({tabKey:u,canWeClose:xe}),l.useEffect(()=>{const R=_.find(he=>he.type==="tree"),ae=_.find(he=>f.id?he.type===f.type&&he.view_id===f.id:he.type===f.type);Se(ae||R),g?X==null||X(N):(oe(void 0),F(void 0)),ye()},[s,i,g]),l.useEffect(()=>{Ce===u&&(X==null||X(S),re==null||re(v))},[we,Ce]);async function xe(){return v&&v.type==="form"?await ee.current.cancelUnsavedChanges():!0}async function Ee(){Ce===u&&(v.type==="form"&&!await ee.current.cancelUnsavedChanges()||z(!0))}async function ke(R){var ue;Z(!0);const ae=A.findIndex(Ae=>Ae.id===R);let he;if(ae===-1){try{he=(ue=await W.getHandler().readObjects({model:s,ids:[R],context:o}))==null?void 0:ue[0]}catch{}if(!he){Z(!1),z(!1),ze(P("idNotFound"));return}}else he=A[ae];Z(!1),z(!1);const Oe=i.find(Ae=>Ae[1]==="form");Ve({domain:[],context:o,model:s,views:i,title:a,target:"current",initialView:{id:Oe==null?void 0:Oe[0],type:"form"},action_id:y,action_type:m,res_id:R})}function He(){return _.map(R=>{switch(R.type){case"form":return e.jsx(Cl,{formRef:ee,currentId:S,visible:v.type===R.type&&v.view_id===R.view_id,formView:R,model:s,context:o,domain:n,defaultValues:p,forcedValues:d,results:A,setResults:M,setCurrentItemIndex:F},`${R.type}-${R.view_id}`);case"tree":return e.jsx(xl,{visible:v.type===R.type&&v.view_id===R.view_id,limit:C,model:s,context:o,domain:n,formView:_.find(ae=>ae.type==="form"),treeView:R,searchTreeRef:le,searchTreeNameSearch:J,availableViews:_,results:A,setCurrentItemIndex:F,setCurrentId:oe,setCurrentView:Se},`${R.type}-${R.view_id}`);case"graph":return e.jsx(vl,{visible:v.type===R.type&&v.view_id===R.view_id,viewData:R,model:s,context:o,domain:n,treeView:_.find(ae=>ae.type==="tree"),formView:_.find(ae=>ae.type==="form")},`${R.type}-${R.view_id}`);case"dashboard":return e.jsx(_l,{dashboardData:R},`${R.type}-${R.view_id}`)}})}function Me(){if(S===void 0&&v.type==="form")ee.current.clearAndReload();else{oe(void 0);const R=_.find(ae=>ae.type==="form");Se(R)}}return E?e.jsx(h.Spin,{}):v?e.jsxs(Fi,{title:a,currentView:v,setCurrentView:Se,availableViews:_,formRef:ee,searchTreeRef:le,onNewClicked:Me,currentId:S,setCurrentId:oe,setCurrentItemIndex:F,currentItemIndex:H,results:A,setResults:M,currentModel:s,sorter:L,setSorter:k,totalItems:I,setTotalItems:K,selectedRowItems:O,setSelectedRowItems:T,setSearchTreeNameSearch:$,searchTreeNameSearch:J,goToResourceId:ke,limit:C,children:[He(),e.jsx(pl,{visible:q,onIdSubmitted:ke,isSearching:Y,onCancel:()=>{z(!1)}})]}):null}const Pn=l.forwardRef(Dl);async function kl({actionId:t,rootContext:r={},globalValues:n={}}){const s="ir.actions.act_window",o=`${s},${t}`,i=await W.getHandler().getActionData({action:o,context:r}),a=se.parseContext({context:i.context,values:n,fields:{}}),c=i.domain?await W.getHandler().evalDomain({domain:i.domain,values:n,context:{...r,...a}}):[],{res_model:u,views:f,name:p,limit:d,view_type:g}=i,y=g==="tree",m=[];for(const V of f){const[_,b]=V;if(_)m.push(V);else{const{view_id:E}=await W.getHandler().getView({model:u,type:b,id:_,context:{...r,...a}});m.push([E,b])}}const[w,C]=m[0],v={id:w,type:C};return{title:p,actionId:t,actionType:s,key:gr.v4(),views:f,model:u,context:{...r,...a},domain:c,initialView:v,limit:d,treeExpandable:y}}const bc="",Vl=pr.WidthProvider(pr.Responsive),Bn=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(Vl,{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:El}=h.theme,{Text:Ml}=h.Typography,Hn=t=>{const{title:r,children:n,action:s,openAction:o}=t,{token:i}=El();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(h.Row,{align:"middle",style:{borderBottom:"1px solid #ddd",backgroundColor:i.colorPrimaryBg},wrap:!1,children:[e.jsx(h.Col,{flex:"auto",className:"draggable-head",style:{fontWeight:"bold",padding:"0.5rem",cursor:"grab",overflow:"hidden"},children:e.jsx(Ml,{ellipsis:!0,children:r})}),s&&e.jsx(h.Col,{flex:"25px",style:{padding:"0.5rem"},children:e.jsx(h.Row,{justify:"end",align:"middle",children:e.jsx(B.ExportOutlined,{style:{cursor:"pointer"},onClick:()=>{o==null||o(s)}})})})]}),n]})},Il=80;function Al(t){const{action:r,model:n,view_id:s,onRowClicked:o,domain:i=[],visible:a=!0,parentContext:c={}}=t,[u,f]=l.useState(!1),[p,d]=l.useState(!1),[g,y]=l.useState(),[m,w]=l.useState(),[C,v]=l.useState(),[V,_]=l.useState(1),[b,E]=l.useState(0),D=l.useRef(Il),N=l.useRef([]),[S,x]=l.useState(0),[O,T]=l.useState([]),[H,F]=l.useState(void 0),[A,M]=l.useState(),[L,k]=l.useState(),[I,K]=l.useState(),[q,z]=l.useState(!1),Y=l.useRef([]),Z=X=>{z(!0),_(X),E((X-1)*D.current)},J=async()=>{const X=Y.current.length>0?Y.current:i,we=Ot(N.current,X),{colors:Ce}=ot(m),{totalItems:Ve,results:fe,attrsEvaluated:oe}=await W.getHandler().searchForTree({params:we,limit:D.current,offset:b,model:g,fields:m.fields,context:c,attrs:Ce&&{colors:Ce}}),Se=await Ve;x(Se),F(Ft(oe));const ye=st({resultsToSort:fe,sorter:A,fields:{...m.fields,...C.fields}});T(ye)},$=async()=>{try{z(!0),await J()}catch(X){k(JSON.stringify(X))}finally{z(!1)}};l.useEffect(()=>{!p||a&&$()},[V,b,p,a]);const P=async X=>{d(!1),f(!0),K(void 0);try{X==="action"?await ee():await le(),d(!0)}catch(we){K(we)}finally{f(!1)}},ee=async()=>{const X=await W.getHandler().getViewsForAction({action:r,context:c});Y.current=X.domain,v(X.views.get("form")),w(X.views.get("tree")),y(X.model),D.current=X.limit},le=async()=>{y(n);const X=await W.getHandler().getView({model:n,type:"form",context:c});v(X);const we=await W.getHandler().getView({model:n,type:"tree",id:s,context:c});w(we)};l.useEffect(()=>{r?P("action"):n&&P("model")},[r,n]);const ce=X=>{const{id:we}=X;o({id:we,model:g,treeView:m})},re=()=>!m||!C?null:e.jsxs("div",{style:{overflowY:"scroll"},children:[L&&e.jsx(h.Alert,{className:"mt-10",message:L,type:"error",banner:!0}),e.jsx(Ct,{showPagination:!1,total:S,limit:D.current,page:V,treeView:m,results:O,onRequestPageChange:Z,loading:q,onRowClicked:ce,colorsForResults:H,sorter:A,onChangeSort:X=>{M==null||M(X);const we=st({resultsToSort:O,sorter:X,fields:{...m.fields,...C.fields}});T(we)},context:c})]});return I?e.jsx(h.Alert,{className:"mt-10",message:I,type:"error",banner:!0}):u?e.jsx(h.Spin,{style:{padding:"2rem"}}):re()}const $l=t=>{const{model:r}=t,[n,s]=l.useState();l.useEffect(()=>{o()},[r]);async function o(){const i=await W.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 Ll(t,r){const{model:n,context:s={},id:o,configAction:i}=t,[a,c]=l.useState([]),[u,f]=l.useState(!1),[p,d]=l.useState(),{setIsLoading:g,openAction:y,moveItemsEnabled:m}=l.useContext(lr),w=l.useRef(),C=l.useRef();l.useEffect(()=>{v()},[n,o,s]),l.useImperativeHandle(r,()=>({refresh:()=>{v()},configDashboard:N}));async function v(){f(!0),g(!0),d(void 0);try{const S=await V(),x=await b(S),O=S.fields[cr].relation,T=x[cr].items;C.current=S.fields;const H=await _({items:T,model:O,context:s}),F=await E(H);c(F),f(!1),g(!1)}catch(S){d(JSON.stringify(S))}}async function V(){return await W.getHandler().getView({model:n,type:"form",context:s})}async function _({items:S,model:x,context:O}){w.current=(await W.getHandler().getView({model:x,type:"form",context:O})).fields;const[T]=await Ut({treeView:{fields:w.current},formView:{fields:w.current},model:x,items:S,context:O,currentView:"form"});return T}async function b(S){return(await W.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 H=parseInt(T.action_id[0],10),F=await kl({actionId:H,rootContext:s});x.push({...O,actionData:F})}}return x}async function D(S){if(!m)return;const x=S.filter(F=>{const A=a.find(L=>L.id===F.id);if(!A)return!1;if(!A.position)return!0;const M={...JSON.parse(A.position.replace(/'/g,'"')),id:A.id};return JSON.stringify(F)!==JSON.stringify(M)});if(x.length===0)return;const T=a.filter(F=>x.map(A=>A.id).includes(F.id)).map(F=>{const A={...x.find(M=>M.id===F.id)};return delete A.id,{...F},{...F,operation:"pendingUpdate",values:{...F.values,position:JSON.stringify(A).replace(/"/g,"'")}}}),H={fields:w.current,items:T};await W.getHandler().update({model:n,id:o,values:{[cr]:H},fields:C.current,context:s})}async function N(){y(i)}return p?(console.log(p),e.jsx(h.Alert,{className:"mt-10 mb-20",message:p,type:"error",banner:!0})):u?e.jsx(B.LoadingOutlined,{}):e.jsx(Bn,{onPositionItemsChanged:D,children:a.map((S,x)=>{const{actionData:O,values:T}=S,{position:H,id:F}=T,{actionId:A,actionType:M,key:L,title:k,views:I,model:K,context:q,domain:z,initialView:Y,limit:Z}=O;let J={};try{J=JSON.parse(H.replace(/'/g,'"'))}catch{J={x:x*2,y:0,w:2,h:3}}let $=null;if((Y==null?void 0:Y.type)==="graph")$=e.jsx(Mt,{view_id:I.filter(le=>le[1]==="graph")[0][0],model:K,context:q,domain:z,limit:Z});else if((Y==null?void 0:Y.type)==="form")$=e.jsx($l,{model:K,actionDomain:z});else if((Y==null?void 0:Y.type)==="tree")$=e.jsx(Al,{model:K,domain:z,view_id:I.filter(le=>le[1]==="tree")[0][0],onRowClicked:le=>{const ce=I.find(re=>{const[,X]=re;return X==="form"});if(ce){const[re,X]=ce,{actionId:we,actionType:Ce,title:Ve,model:fe}=O,oe={action_id:we,action_type:Ce,name:Ve,res_id:le.id,res_model:fe,view_id:re,view_type:X};y(oe)}}});else if(Y!==void 0){const le=Y&&Array.isArray(Y.id)?{...Y,id:Y.id[0]}:Y;$=e.jsx(Pn,{action_id:A,action_type:M,tabKey:L,title:k,views:I,model:K,context:q,domain:z,setCanWeClose:()=>{},initialView:le,limit:Z})}let P;const ee=I.find(le=>{const[,ce]=le;return ce==="tree"});if(ee){const[le,ce]=ee,{actionId:re,actionType:X,title:we,model:Ce}=O;P={action_id:re,action_type:X,name:we,res_id:!1,res_model:Ce,view_id:le,view_type:ce}}return e.jsx(Hn,{id:F,title:k,parms:J,action:P,openAction:y,children:$},F)})})}const Kn=l.forwardRef(Ll),Wn=t=>e.jsx(me,{...t,children:e.jsx(Nl,{...t})}),Nl=t=>{const{ooui:r,value:n}=t;if(!n)return null;const s=r.colors==="auto"?zt(n):r.colors[n];return e.jsx(h.Tag,{color:s,children:r.selectionValues.get(n)})},qn=t=>{const{ooui:r}=t;return e.jsx(me,{type:"array",...t,children:e.jsx(Pl,{ooui:r})})},Pl=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([]),[u,f]=l.useState(),[p,d]=l.useState(!1),{relation:g,context:y,readOnly:m,field:w,columns:C}=n,v=l.useContext(_e),{getContext:V}=v||{};Qe.default(()=>{b()},[o]);const _=S=>{s==null||s({items:S})};async function b(){d(!0);let S=[];if(n.domain){const x=await W.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 W.getHandler().search({model:g,params:S,fields:[w],context:{...V==null?void 0:V(),...y}})).map(T=>{const H=T[w];let F=H;return Array.isArray(H)&&(F=H[1]),{label:F,value:T.id}});c(O)}catch(x){f(x)}finally{d(!1)}if(u)return e.jsx(h.Alert,{className:"mt-10",message:u,type:"error",banner:!0})}const E=()=>{N(a.map(S=>S.value))},D=()=>{N([])},N=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"})}),_(x)};return p&&a.length===0?e.jsx(h.Spin,{}):e.jsx(e.Fragment,{children:e.jsxs("div",{className:"flex flex-row",children:[e.jsx(h.Checkbox.Group,{value:a.length?i:[],disabled:m,onChange:N,style:{width:"100%"},children:e.jsx(h.Row,{children:a.map(S=>e.jsx(h.Col,{span:Math.floor(24/C),children:e.jsx(h.Checkbox,{value:S.value,children:S.label})}))})}),!m&&e.jsxs(h.Space,{children:[e.jsx(h.Button,{onClick:E,disabled:i.length==a.length,children:"Check all"}),e.jsx(h.Button,{onClick:D,disabled:i.length===0,children:"Uncheck all"})]})]})})},Yn=t=>e.jsx(me,{...t,children:e.jsx(Bl,{...t})}),Bl=t=>{const{value:r,ooui:n}=t;return e.jsx("div",{style:{height:n.height?n.height+"px":"100%",overflow:"auto"},children:e.jsx(po.default,{children:r,className:"ant-typography"})})},Gn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(Hl,{...t})})},Hl=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,direction:a}=r,c=Array.from(o.entries()),u=c&&c.length&&c.map(f=>{const[p,d]=f;return e.jsx(h.Radio,{value:p,children:d},p)});return e.jsx(h.Radio.Group,{disabled:i,onChange:n,value:s,children:e.jsx(h.Space,{direction:a,children:u})})},Un=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o}=r;return e.jsx(me,{...t,valuePropName:"checked",children:e.jsx(Kl,{id:n,readOnly:s,required:o})})},Kl=t=>{const{required:r,readOnly:n,...s}=t;return e.jsx("div",{className:"flex flex-row",children:e.jsx(h.Switch,{disabled:n,...s})})},jn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(Wl,{...t})})},Wl=t=>{const{ooui:r,value:n}=t,{selectionValues:s,errorField:o}=r,i=l.useContext(_e),a=Array.from(s.entries()),c=a.map(p=>p[0]).indexOf(n);let u="process",f="";return o&&(f=i.getFieldValue(o),f&&(u="error")),e.jsx(h.Steps,{current:c,status:u,children:a.map((p,d)=>e.jsx(h.Steps.Step,{title:p[1],description:d===c&&u==="error"?f:null}))})},zn=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(go.default,{defaultLanguage:n||"",height:s||300,onMount:a})})},{Content:ql}=h.Layout,{Title:Yl}=h.Typography;function Gl(){const{t}=l.useContext(ge);return e.jsx(ql,{className:"m-5 select-none",children:e.jsx(Yl,{level:5,children:t("welcome")})})}function Ul(t,r){const{children:n,globalValues:s={},rootContext:o={},lang:i}=t,[a,c]=l.useState("welcome"),[u,f]=l.useState([{title:be("welcome",i),key:"welcome",closable:!0,content:e.jsx(Gl,{})}]),p=l.useRef(new Map),d=l.useRef();l.useImperativeHandle(r,()=>({retrieveAndOpenAction:m,openShortcut:v}));function g(b){if(b===a){const E=u.findIndex(D=>D.key===b);u[E-1]&&c(u[E-1].key),u[E+1]&&c(u[E+1].key)}f(u.filter(E=>E.key!==b)),p.current.delete(b)}function y({tabKey:b,canWeClose:E}){p.current.set(b,E)}async function m({action:b,values:E,forced_values:D,initialViewType:N,res_id:S,domain:x=[]}){const O=await W.getHandler().getActionData({action:b,context:o});if(O.type==="ir.actions.wizard"){Ie("Action type not supported");return}const[T,H]=b.split(","),F=parseInt(H),A=se.parseContext({context:O.context,values:s,fields:{}}),M=O.domain?await W.getHandler().evalDomain({domain:O.domain,values:s,context:{...o,...A}}):[],{res_model:L,views:k,name:I,target:K,view_type:q,limit:z}=O,Y=q==="tree",Z=[];for(const $ of k){const[P,ee]=$;if(P)Z.push($);else if(ee==="dashboard")Z.push([void 0,"dashboard"]);else{const{view_id:le}=await W.getHandler().getView({model:L,type:ee,id:P,context:{...o,...A}});Z.push([le,ee])}}let J;if(N){const[$,P]=Z.find(([ee,le])=>le===N);J={id:$,type:P}}else{const[$,P]=Z[0];J={id:$,type:P}}_({domain:[...M,...x],context:{...o,...A},model:L,views:Z,title:I,target:K,initialView:J,action_type:T,action_id:F,values:E,forced_values:D,res_id:S,treeExpandable:Y,limit:z})}function w({title:b,content:E,key:D,action:N}){let S=[...u];u.length===1&&u[0].key==="welcome"&&(S=[...u.filter(x=>x.key!=="welcome")]),f([...S,{title:b,key:D,closable:!0,content:E,action:N}]),c(D)}async function C({relateData:b,fields:E,values:D,action_id:N,action_type:S}){const{res_model:x,context:O,domain:T,views:H,target:F,string:A,limit:M}=b,[L,k]=H[0],I={id:L,type:k},K=se.parseContext({context:O,values:{...D,...s},fields:E}),q=T?await W.getHandler().evalDomain({domain:T,values:at({fields:E,values:{...D,...s}}),fields:E,context:{...o,...K}}):[];_({model:x,target:F,views:H,context:{...o,...K},domain:q,title:A,initialView:I,action_id:N,action_type:S,limit:M})}async function v(b){const{action_id:E,action_type:D,res_id:N,view_id:S}=b,x=`${D},${E}`,O=await W.getHandler().getActionData({action:x,context:o}),T=se.parseContext({context:O.context,values:s,fields:{}}),H=O.domain?await W.getHandler().evalDomain({domain:O.domain,values:s,context:{...o,...T}}):[],{res_model:F,views:A,name:M,target:L,view_type:k,limit:I}=O,K=k==="tree",q=[];for(const J of A){const[$,P]=J;if($)q.push(J);else if(P==="dashboard")q.push([void 0,"dashboard"]);else{const{view_id:ee}=await W.getHandler().getView({model:F,type:P,id:$,context:{...o,...T}});q.push([ee,P])}}let z,Y;if(S==null){const J=q.find($=>$[0]===void 0);z=void 0,Y=J[1]}else[z,Y]=q.find(J=>J[0]===void 0?!1:J[0]===S);const Z={id:z,type:Y};_({domain:H,context:{...o,...T},model:F,views:q,title:M,target:L,initialView:Z,action_id:E,action_type:D,res_id:N,treeExpandable:K,limit:I})}async function V({model:b,values:E,forced_values:D,initialViewType:N,res_id:S,domain:x}){const O=await W.getHandler().getActionStringForModel(b);await m({action:O,values:E,forced_values:D,initialViewType:N,res_id:S,domain:x})}async function _({domain:b,context:E,model:D,views:N,title:S,target:x,initialView:O,action_id:T,action_type:H,res_id:F,values:A,forced_values:M,treeExpandable:L=!1,limit:k}){const I=gr.v4();if(x!=="current"){const K=await W.getHandler().getView({model:D,type:"form",id:O.type==="form"?O.id:void 0,context:{...o,...E}});d.current.openActionModal({domain:b,model:D,formView:K,context:{...o,...E},actionData:{action_id:T,action_type:H,res_id:F,view_id:K.view_id}})}else{const K=O&&Array.isArray(O.id)?{...O,id:O.id[0]}:O;w({title:S,action:{id:T,type:H},content:e.jsx(Pn,{action_id:T,action_type:H,tabKey:I,title:S,views:N,model:D,context:{...o,...E},domain:b,setCanWeClose:y,initialView:K,res_id:F,formDefaultValues:A,formForcedValues:M,treeExpandable:L,limit:k}),key:I})}}return e.jsx(So,{lang:i,children:e.jsx(Oi,{openShortcut:v,openAction:_,openRelate:C,openDefaultActionForModel:V,tabs:u,activeKey:a,onRemoveTab:async b=>{const E=p.current.get(b);(await(E==null?void 0:E())||a==="welcome")&&g(b)},onChangeTab:b=>{c(b)},children:e.jsx(Zr,{ref:d,globalValues:s,children:n})})})}const jl=l.forwardRef(Ul),{useToken:zl}=h.theme;function Jl(t){const{label:r,onClose:n,tabKey:s,isActive:o,onSelected:i}=t,{token:a}=zl(),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(B.CloseOutlined,{style:{color:a.colorPrimaryActive},onClick:u=>{u.stopPropagation(),n(s)}})})]})}function Zl(){const t=l.useContext(Ye),{activeKey:r,tabs:n,onRemoveTab:s,onChangeTab:o}=t||{};return e.jsx(e.Fragment,{children:n.map(i=>e.jsx(Jl,{tabKey:i.key,label:i.title,onClose:s,isActive:r===i.key,onSelected:o},i.key))})}function Xl(t){const{tab:r}=t,n=l.useContext(Ye),{activeKey:s}=n||{},o={display:"none"};return e.jsx("div",{style:r.key!==s?o:void 0,children:r.content})}const Ql=Pe.default.memo(Xl,()=>!0);function Rl(){const t=l.useContext(Ye),{tabs:r}=t||{},n=(r==null?void 0:r.map(s=>e.jsx(Ql,{tab:s},s.key)))||null;return e.jsx(e.Fragment,{children:n})}const{useToken:ec}=h.theme,tc=t=>{const{onRetrieveShortcuts:r,onCheckIsFavourite:n,onAddFavourite:s,onRemoveFavourite:o}=t,[i,a]=l.useState(!1),[c,u]=l.useState(!1),[f,p]=l.useState([]),[d,g]=l.useState(!0),[y,m]=l.useState(),{t:w}=l.useContext(ge)||{},{token:C}=ec(),v=l.useContext(Ye),{openShortcut:V,tabs:_,activeKey:b,currentView:E,currentId:D,openDefaultActionForModel:N}=v||{};l.useEffect(()=>{S()},[]),l.useEffect(()=>{T()},[_,b,E,D]);async function S(){try{g(!0);const L=await r();p(L)}catch(L){Ie(L)}finally{g(!1)}}function x(L){const{key:k}=L,I=f.find(K=>K.id===Number(k));(I==null?void 0:I.action_type)!=="ir.actions.wizard"&&(I&&V(I),u(!1))}function O(L){L&&S(),u(L)}async function T(){if(!E)return;const L=_.find(Y=>Y.key===b),{id:k,type:I}=(L==null?void 0:L.action)||{};if(!k||!I){a(!1);return}const K=E.view_id;let q=!1;E.type==="form"&&(q=D||!1);const z=await n({action_id:k,action_type:I,view_id:K,res_id:q});z!==!1&&m(z),a(z!==!1)}async function H(){u(!1),N==null||N({model:"ir.ui.view_sc"})}const F=e.jsxs(h.Menu,{onClick:x,children:[e.jsxs("div",{style:{width:300,padding:5,display:"flex"},children:[e.jsx("div",{style:{paddingLeft:15,color:"#ccc"},children:w==null?void 0:w("favorites").toUpperCase()}),e.jsx("div",{style:{flexGrow:1,paddingLeft:10},children:e.jsx(h.Tooltip,{title:w==null?void 0:w("edit_favorites"),children:e.jsx(B.EditOutlined,{style:{color:C.colorPrimary,cursor:"pointer"},onClick:H})})})]}),e.jsx(h.Menu.Divider,{}),d?e.jsx(h.Spin,{style:{padding:"1rem"}}):f.length>0?e.jsx(e.Fragment,{children:f.map(L=>e.jsx(h.Menu.Item,{children:e.jsx(A,{title:L.name,type:L.view_type})},L.id))}):e.jsx("div",{style:{width:300,padding:5,paddingLeft:15},children:w==null?void 0:w("no_favorites")})]});function A({title:L,type:k}){const I=k==="tree"?e.jsx(B.TableOutlined,{}):e.jsx(B.FormOutlined,{});return e.jsxs(h.Row,{wrap:!1,children:[e.jsx(h.Col,{flex:"none",style:{paddingRight:20},children:I}),e.jsx(h.Col,{flex:"auto",children:L})]})}async function M(){if(i&&y)await o(y);else{if(!E)return;const L=_.find(z=>z.key===b),{id:k,type:I}=(L==null?void 0:L.action)||{},K=E.view_id;let q=!1;if(!k||!I){a(!1);return}E.type==="form"&&(q=D||!1),await s({action_id:k,action_type:I,view_id:K,res_id:q})}await S(),a(!i)}return e.jsxs(e.Fragment,{children:[e.jsx(h.Button,{type:i?"primary":"default",icon:i?e.jsx(B.StarFilled,{style:{color:"white"}}):e.jsx(B.StarOutlined,{}),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:M}),e.jsx(h.Dropdown,{overlay:F,onVisibleChange:O,open:c,children:e.jsx(h.Button,{style:{width:25,borderTopLeftRadius:0,borderBottomLeftRadius:0},icon:e.jsx(B.DownOutlined,{style:{fontSize:"0.5em"}}),onClick:L=>L.preventDefault()})})]})};G.ActionBar=Mn,G.Binary=Dn,G.Boolean=Dr,G.Button=Wt,G.ButtonGroup=br,G.Char=qt,G.CodeEditor=zn,G.ConfigContext=Nn,G.ConnectionProvider=W,G.ContentRootProvider=Zr,G.CurrentTabContent=Rl,G.Dashboard=Kn,G.DashboardGrid=Bn,G.DashboardGridItem=Hn,G.Date=Fn,G.DateTime=On,G.Email=$n,G.ExportModal=Tn,G.FavouriteButton=tc,G.Float=Zt,G.FloatTime=wn,G.Form=ct,G.FormModal=dt,G.GraphIndicator=pn,G.Group=rr,G.Image=Hr,G.Integer=vt,G.Label=gt,G.Many2one=dn,G.Markdown=Yn,G.MultiCheckbox=qn,G.Notebook=vn,G.One2many=yn,G.ProgressBar=Rr,G.Radio=Gn,G.Reference=_n,G.RootView=jl,G.SearchFilter=Xt,G.SearchModal=er,G.SearchTree=Rt,G.Selection=Yt,G.Separator=Sn,G.Steps=jn,G.Switch=Un,G.TabSelector=Zl,G.Tag=Wn,G.Tags=Yr,G.Text=Cn,G.Tree=Ct,G.Url=An,G.iconMapper=qe,G.showConfirmDialog=rt,Object.defineProperties(G,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
37
37
  //# sourceMappingURL=react-ooui.umd.js.map