@gisce/react-ooui 1.4.13-rc.0 → 1.4.13

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,4 +1,4 @@
1
- (function(U,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("react"),require("antd"),require("@gisce/ooui"),require("@ant-design/icons"),require("interweave"),require("react/jsx-runtime"),require("@tabler/icons-react"),require("antd/lib/input/TextArea"),require("styled-components"),require("react-measure"),require("antd/lib/typography/Title"),require("@ant-design/plots"),require("use-deep-compare-effect"),require("@gisce/react-formiga-table"),require("file-type-buffer-browser"),require("antd/lib/_util/colors"),require("@gisce/fiber-diagram"),require("@gisce/react-formiga-components"),require("validator/lib/isURL"),require("validator/lib/isEmail"),require("react-hotkeys-hook"),require("react-markdown"),require("@monaco-editor/react"),require("react-grid-layout"),require("react-grid-layout/css/styles.css"),require("uuid")):typeof define=="function"&&define.amd?define(["exports","react","antd","@gisce/ooui","@ant-design/icons","interweave","react/jsx-runtime","@tabler/icons-react","antd/lib/input/TextArea","styled-components","react-measure","antd/lib/typography/Title","@ant-design/plots","use-deep-compare-effect","@gisce/react-formiga-table","file-type-buffer-browser","antd/lib/_util/colors","@gisce/fiber-diagram","@gisce/react-formiga-components","validator/lib/isURL","validator/lib/isEmail","react-hotkeys-hook","react-markdown","@monaco-editor/react","react-grid-layout","react-grid-layout/css/styles.css","uuid"],l):(U=typeof globalThis<"u"?globalThis:U||self,l(U["react-ooui"]={},U.React,U.antd,U.ooui,U.AntIcons,U.interweave,U.jsxRuntime,U.TablerIcons,U.TextArea$1,U.styled,U.Measure,U.Title$3,U.plots,U.useDeepCompareEffect,U.reactFormigaTable,U.fileTypeBufferBrowser,U.colors,U.fiberDiagram,U.reactFormigaComponents,U.isURL,U.isEmail,U.reactHotkeysHook,U.ReactMarkdown,U.Editor,U.reactGridLayout,null,U.uuid))})(this,function(U,l,p,se,H,Ht,e,co,uo,fo,ho,po,Kt,go,mo,yo,gr,wo,mr,vo,Co,So,bo,xo,yr,Ac,wr){"use strict";const qe=t=>t&&typeof t=="object"&&"default"in t?t:{default:t};function vr(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 Ke=qe(l),Cr=vr(H),Sr=qe(H),br=vr(co),To=qe(uo),mt=qe(fo),Yt=qe(ho),Wt=qe(po),et=qe(go),Fo=qe(vo),Oo=qe(Co),_o=qe(bo),Do=qe(xo),{Text:ko,Title:Vo}=p.Typography,{useToken:Mo}=p.theme,Eo={left:"justify-start",center:"justify-center",right:"justify-end"},yt=t=>{const{ooui:r,align:n,responsiveBehaviour:s}=t,{label:o,tooltip:i,fieldForLabel:a,labelSize:c,labelType:f}=r,h=a!==null&&o.length>1?o+" :":o,g=n||(a?s?"left":"right":"left"),{token:v}=Mo(),y=c===void 0?ko:Vo;return e.jsxs("div",{className:`flex flex-row items-center pb-1 pt-1 ${Eo[g]}`,children:[i&&e.jsx(p.Tooltip,{title:i,children:e.jsx(H.QuestionCircleOutlined,{className:"pr-1 text-xs",style:{color:v.colorPrimary}})}),e.jsx("span",{className:"pr-2",children:e.jsx(y,{level:c,type:f,children:e.jsx(Ht.Interweave,{content:h})})})]})},Io={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=Ke.default.createContext(null),Ao=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=Io[r])==null?void 0:s[t])||t};function me({ooui:t,children:r,layout:n="horizontal",valuePropName:s,showLabel:o=!1,alignLabel:i="left",required:a=!1,type:c,validator:f}){const{id:d,label:h,tooltip:u}=t,{t:g}=l.useContext(ge),v=a?[{required:!0,message:g("fillRequiredField"),type:c,validator:f}]:void 0,y=()=>e.jsx(p.Form.Item,{className:"mb-0",name:d,valuePropName:s,rules:v,children:r});if(!o)return y();const m=e.jsx(yt,{ooui:new se.Label({name:d+"_label",string:h,help:u,fieldForLabel:d}),align:i});return n==="horizontal"?(()=>e.jsxs(p.Row,{align:"middle",className:"pb-1 pt-1",children:[e.jsx(p.Col,{className:"ml-2",flex:"7rem",children:e.jsx("div",{className:"flex flex-col items-end",children:m})}),e.jsx(p.Col,{flex:"auto",children:y()})]}))():(()=>e.jsxs(e.Fragment,{children:[m,y()]}))()}const{confirm:$o}=p.Modal,ot=({onOk:t,confirmMessage:r,lang:n})=>{$o({title:be("confirmation",n),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:r,okText:be("ok",n),cancelText:be("cancel",n),onOk:t})},Me=Ke.default.createContext(null),Lo=t=>{const{children:r,activeId:n,activeModel:s,setFieldValue:o,getFieldValue:i,executeButtonAction:a,getContext:c,getValues:f,getPlainValues:d,domain:h,submitForm:u,fetchValues:g,formHasChanges:v,elementHasLostFocus:y,getFields:m}=t;return e.jsx(Me.Provider,{value:{domain:h,getValues:f,getPlainValues:d,getFields:m,activeId:n,activeModel:s,setFieldValue:o,getFieldValue:i,executeButtonAction:a,getContext:c,submitForm:u,fetchValues:g,formHasChanges:v,elementHasLostFocus:y},children:r})},xr={"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"},Ue=(t,r)=>(t.indexOf("gtk-")!==-1&&(t=`STOCK_${t.replace("gtk-","").replace(/\-/g,"_").toUpperCase()}`),xr.hasOwnProperty(t)?Tr(xr[t],r):Tr(t,r));function Po(t){return`${t.split("-").map(r=>r.replace(/\w\S*/g,n=>n.charAt(0).toUpperCase()+n.slice(1).toLowerCase())).join("")}`}function Tr(t,r){let n=t.charAt(0).toUpperCase()+t.slice(1);n.indexOf("-")!==-1&&(n=Po(n));const s=`${n}Outlined`;if(Cr[s])return()=>Ke.default.createElement(Cr[s],{...r});const o=`Icon${n}`;if(br[o]){const i=()=>Ke.default.createElement(br[o],{fill:"transparent",height:17,width:17});return()=>Ke.default.createElement(Sr.default,{component:i,...r})}}const qt=t=>{const{ooui:r}=t,{id:n,label:s,activated:o,buttonType:i,confirmMessage:a,icon:c,context:f,readOnly:d}=r,h=l.useContext(Me),{executeButtonAction:u}=h||{},[g,v]=l.useState(!1),{lang:y}=l.useContext(ge);async function m(){v(!0),await u({type:i,action:n,context:f}),v(!1)}function w(){if(a){ot({confirmMessage:a,lang:y,onOk:()=>{m()}});return}m()}function C(){if(g)return e.jsx(H.LoadingOutlined,{});if(c){const D=Ue(c);return D&&e.jsx(D,{})}}return e.jsx(me,{ooui:r,children:e.jsx(p.Button,{block:!0,disabled:!o||d,onClick:w,icon:C(),type:r.primary?"primary":"default",danger:r.danger,style:{whiteSpace:"normal",height:"auto"},children:s})})},Fr=t=>{const{ooui:r}=t,{defaultButton:n,secondaryButtons:s}=r,{id:o,caption:i,activated:a,buttonType:c,confirmMessage:f,icon:d,primary:h,danger:u,context:g,readOnly:v}=n||{},y=l.useContext(Me),{executeButtonAction:m}=y||{},[w,C]=l.useState(!1),{lang:D}=l.useContext(ge);function M(){if(w)return e.jsx(H.LoadingOutlined,{});if(d){const V=Ue(d);return V&&e.jsx(V,{})}}async function b(){c&&o&&(C(!0),await m({type:c,action:o,context:g}),C(!1))}function E(){if(f){ot({confirmMessage:f,lang:D,onOk:()=>{b()}});return}b()}if(r.buttons.length===0)return null;if(r.buttons.length>1)return e.jsx(me,{ooui:new se.Field({ooui:r}),children:e.jsxs(p.Dropdown.Button,{disabled:!a||v,onClick:E,icon:e.jsx(H.DownOutlined,{}),type:h?"primary":void 0,overlay:e.jsx(No,{ooui:s,executeButtonAction:m,lang:D}),children:[M(),i]})});if(n)return e.jsx(qt,{ooui:n})},No=t=>{const{ooui:r,executeButtonAction:n,lang:s}=t;if(!r)return null;const o=r.map(i=>{const{id:a,caption:c,activated:f,buttonType:d,confirmMessage:h,icon:u,context:g,readOnly:v,danger:y}=i,[m,w]=l.useState(!1);async function C(){w(!0),await n({type:d,action:a,context:g}),w(!1)}function D(){if(h){ot({confirmMessage:h,lang:s,onOk:()=>{C()}});return}C()}function M(){if(m)return e.jsx(H.LoadingOutlined,{});if(u){const b=Ue(u);return b&&e.jsx(b,{})}}return e.jsx(p.Menu.Item,{disabled:!f||v,onClick:D,icon:M(),danger:y,children:c})});return e.jsx(p.Menu,{children:o})},Bo=.7;function Or(){const{innerWidth:t,innerHeight:r}=window;return{width:t,height:r}}function Ot(){const[t,r]=l.useState(Or());return l.useEffect(()=>{function n(){r(Or())}return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]),{modalWidth:t.width*Bo,modalHeight:t.height,width:t.width,height:t.height}}class K{static init(r){K.handler=r}static getHandler(){if(!K.handler)throw"Must call init() first with a valid ConnectionProvider instance";return K.handler}}const _r=t=>{let r,n,s;if(typeof t=="string"&&t.indexOf(" -- ")!==-1&&t.indexOf(`
1
+ (function(U,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("react"),require("antd"),require("@gisce/ooui"),require("@ant-design/icons"),require("interweave"),require("react/jsx-runtime"),require("@tabler/icons-react"),require("antd/lib/input/TextArea"),require("styled-components"),require("react-measure"),require("antd/lib/typography/Title"),require("@ant-design/plots"),require("use-deep-compare-effect"),require("@gisce/react-formiga-table"),require("file-type-buffer-browser"),require("antd/lib/_util/colors"),require("@gisce/fiber-diagram"),require("@gisce/react-formiga-components"),require("validator/lib/isURL"),require("validator/lib/isEmail"),require("react-hotkeys-hook"),require("react-markdown"),require("@monaco-editor/react"),require("react-grid-layout"),require("react-grid-layout/css/styles.css"),require("uuid")):typeof define=="function"&&define.amd?define(["exports","react","antd","@gisce/ooui","@ant-design/icons","interweave","react/jsx-runtime","@tabler/icons-react","antd/lib/input/TextArea","styled-components","react-measure","antd/lib/typography/Title","@ant-design/plots","use-deep-compare-effect","@gisce/react-formiga-table","file-type-buffer-browser","antd/lib/_util/colors","@gisce/fiber-diagram","@gisce/react-formiga-components","validator/lib/isURL","validator/lib/isEmail","react-hotkeys-hook","react-markdown","@monaco-editor/react","react-grid-layout","react-grid-layout/css/styles.css","uuid"],l):(U=typeof globalThis<"u"?globalThis:U||self,l(U["react-ooui"]={},U.React,U.antd,U.ooui,U.AntIcons,U.interweave,U.jsxRuntime,U.TablerIcons,U.TextArea$1,U.styled,U.Measure,U.Title$3,U.plots,U.useDeepCompareEffect,U.reactFormigaTable,U.fileTypeBufferBrowser,U.colors,U.fiberDiagram,U.reactFormigaComponents,U.isURL,U.isEmail,U.reactHotkeysHook,U.ReactMarkdown,U.Editor,U.reactGridLayout,null,U.uuid))})(this,function(U,l,p,se,H,Ht,e,co,uo,fo,ho,po,Kt,go,mo,yo,gr,wo,mr,vo,Co,So,bo,xo,yr,Ac,wr){"use strict";const Ue=t=>t&&typeof t=="object"&&"default"in t?t:{default:t};function vr(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 Ke=Ue(l),Cr=vr(H),Sr=Ue(H),br=vr(co),To=Ue(uo),mt=Ue(fo),Yt=Ue(ho),Wt=Ue(po),et=Ue(go),Fo=Ue(vo),Oo=Ue(Co),_o=Ue(bo),Do=Ue(xo),{Text:ko,Title:Vo}=p.Typography,{useToken:Mo}=p.theme,Eo={left:"justify-start",center:"justify-center",right:"justify-end"},yt=t=>{const{ooui:r,align:n,responsiveBehaviour:s}=t,{label:o,tooltip:i,fieldForLabel:a,labelSize:c,labelType:f}=r,h=a!==null&&o.length>1?o+" :":o,g=n||(a?s?"left":"right":"left"),{token:v}=Mo(),y=c===void 0?ko:Vo;return e.jsxs("div",{className:`flex flex-row items-center pb-1 pt-1 ${Eo[g]}`,children:[i&&e.jsx(p.Tooltip,{title:i,children:e.jsx(H.QuestionCircleOutlined,{className:"pr-1 text-xs",style:{color:v.colorPrimary}})}),e.jsx("span",{className:"pr-2",children:e.jsx(y,{level:c,type:f,children:e.jsx(Ht.Interweave,{content:h})})})]})},Io={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=Ke.default.createContext(null),Ao=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=Io[r])==null?void 0:s[t])||t};function me({ooui:t,children:r,layout:n="horizontal",valuePropName:s,showLabel:o=!1,alignLabel:i="left",required:a=!1,type:c,validator:f}){const{id:d,label:h,tooltip:u}=t,{t:g}=l.useContext(ge),v=a?[{required:!0,message:g("fillRequiredField"),type:c,validator:f}]:void 0,y=()=>e.jsx(p.Form.Item,{className:"mb-0",name:d,valuePropName:s,rules:v,children:r});if(!o)return y();const m=e.jsx(yt,{ooui:new se.Label({name:d+"_label",string:h,help:u,fieldForLabel:d}),align:i});return n==="horizontal"?(()=>e.jsxs(p.Row,{align:"middle",className:"pb-1 pt-1",children:[e.jsx(p.Col,{className:"ml-2",flex:"7rem",children:e.jsx("div",{className:"flex flex-col items-end",children:m})}),e.jsx(p.Col,{flex:"auto",children:y()})]}))():(()=>e.jsxs(e.Fragment,{children:[m,y()]}))()}const{confirm:$o}=p.Modal,ot=({onOk:t,confirmMessage:r,lang:n})=>{$o({title:be("confirmation",n),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:r,okText:be("ok",n),cancelText:be("cancel",n),onOk:t})},Me=Ke.default.createContext(null),Lo=t=>{const{children:r,activeId:n,activeModel:s,setFieldValue:o,getFieldValue:i,executeButtonAction:a,getContext:c,getValues:f,getPlainValues:d,domain:h,submitForm:u,fetchValues:g,formHasChanges:v,elementHasLostFocus:y,getFields:m}=t;return e.jsx(Me.Provider,{value:{domain:h,getValues:f,getPlainValues:d,getFields:m,activeId:n,activeModel:s,setFieldValue:o,getFieldValue:i,executeButtonAction:a,getContext:c,submitForm:u,fetchValues:g,formHasChanges:v,elementHasLostFocus:y},children:r})},xr={"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"},Ge=(t,r)=>(t.indexOf("gtk-")!==-1&&(t=`STOCK_${t.replace("gtk-","").replace(/\-/g,"_").toUpperCase()}`),xr.hasOwnProperty(t)?Tr(xr[t],r):Tr(t,r));function Po(t){return`${t.split("-").map(r=>r.replace(/\w\S*/g,n=>n.charAt(0).toUpperCase()+n.slice(1).toLowerCase())).join("")}`}function Tr(t,r){let n=t.charAt(0).toUpperCase()+t.slice(1);n.indexOf("-")!==-1&&(n=Po(n));const s=`${n}Outlined`;if(Cr[s])return()=>Ke.default.createElement(Cr[s],{...r});const o=`Icon${n}`;if(br[o]){const i=()=>Ke.default.createElement(br[o],{fill:"transparent",height:17,width:17});return()=>Ke.default.createElement(Sr.default,{component:i,...r})}}const qt=t=>{const{ooui:r}=t,{id:n,label:s,activated:o,buttonType:i,confirmMessage:a,icon:c,context:f,readOnly:d}=r,h=l.useContext(Me),{executeButtonAction:u}=h||{},[g,v]=l.useState(!1),{lang:y}=l.useContext(ge);async function m(){v(!0),await u({type:i,action:n,context:f}),v(!1)}function w(){if(a){ot({confirmMessage:a,lang:y,onOk:()=>{m()}});return}m()}function C(){if(g)return e.jsx(H.LoadingOutlined,{});if(c){const D=Ge(c);return D&&e.jsx(D,{})}}return e.jsx(me,{ooui:r,children:e.jsx(p.Button,{block:!0,disabled:!o||d,onClick:w,icon:C(),type:r.primary?"primary":"default",danger:r.danger,style:{whiteSpace:"normal",height:"auto"},children:s})})},Fr=t=>{const{ooui:r}=t,{defaultButton:n,secondaryButtons:s}=r,{id:o,caption:i,activated:a,buttonType:c,confirmMessage:f,icon:d,primary:h,danger:u,context:g,readOnly:v}=n||{},y=l.useContext(Me),{executeButtonAction:m}=y||{},[w,C]=l.useState(!1),{lang:D}=l.useContext(ge);function M(){if(w)return e.jsx(H.LoadingOutlined,{});if(d){const V=Ge(d);return V&&e.jsx(V,{})}}async function b(){c&&o&&(C(!0),await m({type:c,action:o,context:g}),C(!1))}function E(){if(f){ot({confirmMessage:f,lang:D,onOk:()=>{b()}});return}b()}if(r.buttons.length===0)return null;if(r.buttons.length>1)return e.jsx(me,{ooui:new se.Field({ooui:r}),children:e.jsxs(p.Dropdown.Button,{disabled:!a||v,onClick:E,icon:e.jsx(H.DownOutlined,{}),type:h?"primary":void 0,overlay:e.jsx(No,{ooui:s,executeButtonAction:m,lang:D}),children:[M(),i]})});if(n)return e.jsx(qt,{ooui:n})},No=t=>{const{ooui:r,executeButtonAction:n,lang:s}=t;if(!r)return null;const o=r.map(i=>{const{id:a,caption:c,activated:f,buttonType:d,confirmMessage:h,icon:u,context:g,readOnly:v,danger:y}=i,[m,w]=l.useState(!1);async function C(){w(!0),await n({type:d,action:a,context:g}),w(!1)}function D(){if(h){ot({confirmMessage:h,lang:s,onOk:()=>{C()}});return}C()}function M(){if(m)return e.jsx(H.LoadingOutlined,{});if(u){const b=Ge(u);return b&&e.jsx(b,{})}}return e.jsx(p.Menu.Item,{disabled:!f||v,onClick:D,icon:M(),danger:y,children:c})});return e.jsx(p.Menu,{children:o})},Bo=.7;function Or(){const{innerWidth:t,innerHeight:r}=window;return{width:t,height:r}}function Ot(){const[t,r]=l.useState(Or());return l.useEffect(()=>{function n(){r(Or())}return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]),{modalWidth:t.width*Bo,modalHeight:t.height,width:t.width,height:t.height}}class K{static init(r){K.handler=r}static getHandler(){if(!K.handler)throw"Must call init() first with a valid ConnectionProvider instance";return K.handler}}const _r=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
 
@@ -14,9 +14,9 @@
14
14
  .ant-checkbox-checked .ant-checkbox-inner {
15
15
  background-color: ${Vr.colorPrimary};
16
16
  }
17
- `;var Re=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function es(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}var Er=es,ts=typeof Re=="object"&&Re&&Re.Object===Object&&Re,rs=ts,ns=rs,os=typeof self=="object"&&self&&self.Object===Object&&self,ss=ns||os||Function("return this")(),Ir=ss,is=Ir,as=function(){return is.Date.now()},ls=as,cs=/\s/;function ds(t){for(var r=t.length;r--&&cs.test(t.charAt(r)););return r}var us=ds,fs=us,hs=/^\s+/;function ps(t){return t&&t.slice(0,fs(t)+1).replace(hs,"")}var gs=ps,ms=Ir,ys=ms.Symbol,Ar=ys,$r=Ar,Lr=Object.prototype,ws=Lr.hasOwnProperty,vs=Lr.toString,wt=$r?$r.toStringTag:void 0;function Cs(t){var r=ws.call(t,wt),n=t[wt];try{t[wt]=void 0;var s=!0}catch{}var o=vs.call(t);return s&&(r?t[wt]=n:delete t[wt]),o}var Ss=Cs,bs=Object.prototype,xs=bs.toString;function Ts(t){return xs.call(t)}var Fs=Ts,Pr=Ar,Os=Ss,_s=Fs,Ds="[object Null]",ks="[object Undefined]",Nr=Pr?Pr.toStringTag:void 0;function Vs(t){return t==null?t===void 0?ks:Ds:Nr&&Nr in Object(t)?Os(t):_s(t)}var Ms=Vs;function Es(t){return t!=null&&typeof t=="object"}var Is=Es,As=Ms,$s=Is,Ls="[object Symbol]";function Ps(t){return typeof t=="symbol"||$s(t)&&As(t)==Ls}var Ns=Ps,Bs=gs,Br=Er,Hs=Ns,Hr=0/0,Ks=/^[-+]0x[0-9a-f]+$/i,Ys=/^0b[01]+$/i,Ws=/^0o[0-7]+$/i,qs=parseInt;function Us(t){if(typeof t=="number")return t;if(Hs(t))return Hr;if(Br(t)){var r=typeof t.valueOf=="function"?t.valueOf():t;t=Br(r)?r+"":r}if(typeof t!="string")return t===0?t:+t;t=Bs(t);var n=Ys.test(t);return n||Ws.test(t)?qs(t.slice(2),n?2:8):Ks.test(t)?Hr:+t}var Gs=Us,js=Er,jt=ls,Kr=Gs,zs="Expected a function",Js=Math.max,Zs=Math.min;function Xs(t,r,n){var s,o,i,a,c,f,d=0,h=!1,u=!1,g=!0;if(typeof t!="function")throw new TypeError(zs);r=Kr(r)||0,js(n)&&(h=!!n.leading,u="maxWait"in n,i=u?Js(Kr(n.maxWait)||0,r):i,g="trailing"in n?!!n.trailing:g);function v(V){var L=s,x=o;return s=o=void 0,d=V,a=t.apply(x,L),a}function y(V){return d=V,c=setTimeout(C,r),h?v(V):a}function m(V){var L=V-f,x=V-d,T=r-L;return u?Zs(T,i-x):T}function w(V){var L=V-f,x=V-d;return f===void 0||L>=r||L<0||u&&x>=i}function C(){var V=jt();if(w(V))return D(V);c=setTimeout(C,m(V))}function D(V){return c=void 0,g&&s?v(V):(s=o=void 0,a)}function M(){c!==void 0&&clearTimeout(c),d=0,s=f=o=c=void 0}function b(){return c===void 0?a:D(jt())}function E(){var V=jt(),L=w(V);if(s=arguments,o=this,f=V,L){if(c===void 0)return y(f);if(u)return clearTimeout(c),c=setTimeout(C,r),v(f)}return c===void 0&&(c=setTimeout(C,r)),a}return E.cancel=M,E.flush=b,E}var Qs=Xs;function Rs(t){const n=Buffer.from(t,"base64").length/1e3;return`${Math.round((n+Number.EPSILON)*100)/100} KB`}async function st(t){const r=await yo.fileTypeFromBuffer(Buffer.from(t,"base64"));return r||{mime:"text/plain",ext:"txt"}}const Yr=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 _t(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 Wr=t=>{const{ooui:r}=t,{required:n,id:s}=r,o=Ue(s);return o?e.jsx(o,{}):e.jsx(me,{required:n,...t,children:e.jsx(ei,{ooui:r})})},ei=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o}=r,i=l.useRef(null),{t:a}=l.useContext(ge),c=u=>{s==null||s(u)};async function f(){const u=await st(n),g=`data:${u==null?void 0:u.mime};base64,${n}`,v=document.createElement("a");v.href=g,v.download=`image.${u==null?void 0:u.ext}`,v.click()}async function d(u){u.stopPropagation(),u.preventDefault();const g=u.target.files[0],v=await Yr(g);c(v)}function h(){c(void 0)}return e.jsxs(e.Fragment,{children:[e.jsxs(p.Row,{gutter:8,wrap:!1,justify:"center",children:[n&&e.jsx("img",{src:`data:image/*;base64,${n}`,style:{maxWidth:"100px"}}),e.jsx("input",{type:"file",id:"file",ref:i,accept:"image/*",style:{display:"none"},onChange:d})]}),e.jsx(p.Row,{gutter:8,wrap:!1,justify:"center",className:"pt-5",children:e.jsxs(p.Space,{children:[e.jsx(Be,{tooltip:a("uploadNewImage"),icon:e.jsx(H.FolderOpenOutlined,{}),disabled:o,onClick:()=>{i.current.click()}}),e.jsx(Be,{tooltip:a("download"),disabled:!n,onClick:f,icon:e.jsx(H.DownloadOutlined,{})}),e.jsx(Be,{tooltip:a("clear"),disabled:o||!n,onClick:h,icon:e.jsx(H.ClearOutlined,{})})]})})]})},ti=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(ri,{})})},ri=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(wo.GridUi,{inputJson:r,onChange:s=>{n&&n(s)}})},it=t=>{const r=t.arch,n=t.fields,s=new se.Tree(n);return s.parse(r),s},ni=(t,r,n)=>t.columns.map(o=>{const i=o.type,a=o.id,c=r==null?void 0:r[i];let f;return c&&(f=d=>c(d,a,o,n)),{key:a,dataIndex:a,title:o.label,render:f,sorter:(d,h)=>{var v,y;let u=d[a]||"",g=h[a]||"";return i==="many2one"&&(u=((v=d[a])==null?void 0:v.value)||"",g=((y=h[a])==null?void 0:y.value)||""),u<g?-1:u>g?1:0}}}),qr=(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 Dt(t){return Gr(t,"colors")}function Ur(t){return Gr(t,"status")}function Gr(t,r){if(!t)return;const n={};return t.forEach(s=>{n[s.id]=s[r]}),n}function at({resultsToSort:t,sorter:r,fields:n}){if(!r)return t;const{id:s,desc:o}=r,i=o===!1?"ascend":"descend",a=n[s].type,c=(f,d)=>{var g,v;let h=f[s]||"",u=d[s]||"";return a==="many2one"&&(h=((g=f[s])==null?void 0:g[1])||"",u=((v=d[s])==null?void 0:v[1])||""),h===u?0:i==="ascend"?h>u?1:-1:h<u?1:-1};return t.sort(c)}function oi(t){for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&t[r]!==void 0)return!0;return!1}const zt=async t=>{var y;const{items:r,model:n,formView:s,treeView:o,context:i,currentView:a={}}=t,c=r.filter(m=>m.operation!=="original"),f=r.filter(m=>m.operation==="original").map(m=>m.id),d={form:s.fields,tree:o.fields};let h=[],u;if(a==="tree"&&(o==null?void 0:o.arch)){const m=(y=it(o))==null?void 0:y.colors,w=await K.getHandler().readEvalUiObjects({model:n,ids:f,arch:o==null?void 0:o.arch,fields:o.fields,context:i,attrs:m&&{colors:m}});h=w[0],u=Dt(w[1])}else h=await K.getHandler().readObjects({model:n,ids:f,fields:d[a],context:i});const g=h.map(m=>{const w={};return Object.keys(m).forEach(C=>{(d[a].hasOwnProperty(C)||C==="id")&&(w[C]=m[C])}),w});return[r.map(m=>{const w=g.find(D=>D.id===m.id),C={...m};return a==="form"?C.values=w:a==="tree"&&(C.treeValues=w),C}).concat(c),u]},si=t=>{const r=t.filter(n=>n.id&&n.id<0).map(n=>n.id);return r.length===0?-1:Math.min(...r)-1},ii=(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},ai=t=>{const{ooui:r}=t,{relation:n,context:s,views:o}=r,[i,a]=l.useState(!0),[c,f]=l.useState(),[d,h]=l.useState(new Map),u=l.useContext(Me),{getContext:g}=u||{};et.default(()=>{y()},[r]);const v=async m=>o&&o[m]?o[m]:await K.getHandler().getView({model:n,type:m,context:{...g==null?void 0:g(),...s}}),y=async()=>{a(!0),f(void 0);try{const m=await v("form"),w=await v("tree");d.set("form",m),d.set("tree",w),h(d)}catch(m){f(m)}finally{a(!1)}};return i?e.jsx(p.Spin,{}):c?e.jsx(p.Alert,{className:"mt-10",message:c,type:"error",banner:!0}):e.jsx(me,{type:"array",...t,children:e.jsx(li,{ooui:r,views:d})})},li=t=>{const{value:r,views:n,ooui:s,onChange:o}=t,{items:i=[]}=r||{},[a,c]=l.useState(!1),[f,d]=l.useState(),[h,u]=l.useState(!1),[g,v]=l.useState(),{relation:y,context:m,readOnly:w,summaryField:C,titleField:D}=s,M=i.filter(x=>x.values),b=l.useContext(Me),{getContext:E}=b||{};et.default(()=>{L()},[i]);const V=x=>{o==null||o({items:x})};async function L(){c(!0),d(void 0);try{const[x]=await zt({treeView:{fields:n.get("tree").fields,arch:n.get("tree").arch},formView:{fields:n.get("form").fields},model:y,items:i,context:{...E==null?void 0:E(),...m},currentView:"form"});V(x)}catch(x){d(x)}finally{c(!1)}}return f?e.jsx(p.Alert,{className:"mt-10",message:f,type:"error",banner:!0}):a?e.jsx(p.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(p.Timeline,{style:{padding:"1rem"},children:M.map((x,T)=>{var S,O;return e.jsx("div",{children:e.jsxs(p.Timeline.Item,{children:[e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{v(M.find(P=>x.id===P.id)),u(!0)},children:e.jsx("strong",{children:(S=x.values)==null?void 0:S[D]})}),e.jsx("br",{}),e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{v(M.find(P=>x.id===P.id)),u(!0)},children:(O=x.values)==null?void 0:O[C]})]},T)},T)})}),e.jsx(ft,{formView:n.get("form"),model:y,id:g==null?void 0:g.id,values:g==null?void 0:g.values,defaultValues:g==null?void 0:g.defaultValues,visible:h,onSubmitSucceed:()=>{u(!1)},parentContext:{...E==null?void 0:E(),...m},onCancel:()=>{u(!1)},readOnly:w,postSaveAction:L})]})},{useToken:ci}=p.theme,di=t=>{const{ooui:r}=t;return e.jsx(me,{ooui:r,children:e.jsx(ui,{ooui:r})})},ui=t=>{const{token:r}=ci(),{ooui:n,value:s}=t,o=e.jsxs(e.Fragment,{children:[e.jsxs("span",{children:[n.label," "]}),n.tooltip&&e.jsx(p.Tooltip,{title:n.tooltip,children:e.jsx(H.QuestionCircleOutlined,{className:"pr-1 text-xs",style:{color:r.colorPrimaryBg}})})]}),i=Ue(n.icon);let a=s;n.selectionValues.size?a=n.selectionValues.get(s):Array.isArray(s)&&(a=s[1]);const c=e.jsx(p.Statistic,{title:o,prefix:i&&e.jsx(i,{}),suffix:n.suffix,value:a});return n.card?e.jsx(p.Card,{children:c}):c},fi=(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},lt=(t,r)=>fi(t,r),Jt=({source:t,target:r,fields:n})=>{const s={};return Object.keys(r).forEach(o=>{var a,c;if(n[o]?n[o].type==="one2many"||n[o].type==="many2many":!1){const f=JSON.stringify(t[o]),d=JSON.stringify(r[o]);if(f===d)return;(((c=(a=r[o])==null?void 0:a.items)==null?void 0:c.filter(u=>u.operation!=="original"))||[]).length>0&&(s[o]=r[o])}else if(Array.isArray(r[o]))if(t[o]===void 0)s[o]=r[o];else if(n[o].type==="many2one")if(Array.isArray(t[o])){const f=JSON.stringify(t[o]),d=JSON.stringify(r[o]);f!==d&&(s[o]=r[o])}else{const f=t[o],[d]=r[o];f!==d&&(s[o]=r[o])}else{const f=JSON.stringify(t[o]),d=JSON.stringify(r[o]);f!==d&&(s[o]=r[o])}else t[o]!==r[o]&&(r[o]===void 0?s[o]=null:s[o]=r[o])}),s},hi=({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),pi=({fieldsDomain:t,fields:r})=>{const n={};return Object.keys(r).forEach(s=>{n[s]=r[s],t[s]&&(n[s].domain=t[s])}),n},gi=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)},mi=({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},jr=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(zr),secondary:r.secondary.filter(zr)}};function zr(t,r,n){return n.indexOf(t)===r}const ct=({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},kt=t=>{let r=0;t=t.toString().padEnd(10,"0");for(let o=0;o<t.length;o++)r=t.charCodeAt(o)+((r<<5)-r);let n="#";for(let o=0;o<3;o++){var s=r>>o*8&255;n+=("00"+s.toString(16)).slice(-2)}return n},yi=(t,r)=>t.replace(/\{([^}]+)\}/g,(n,s)=>r[s]!==void 0?r[s]:n),Jr=t=>e.jsx(me,{...t,children:e.jsx(Zr,{...t})}),Zr=t=>{const{ooui:r,value:n}=t;let s=n,o=n;if(r.selectionValues.size?s=r.selectionValues.get(n):Array.isArray(n)&&(o=n[0],s=n[1]),!n)return null;const i=r.colors==="auto"?kt(o):r.colors[o]||kt(o);return e.jsx(Xr,{color:i,children:s})},Xr=t=>{let{color:r}=t,n={};return!gr.isPresetStatusColor(t.color)&&!gr.isPresetColor(t.color)&&(n={color:r,borderColor:r,borderStyle:"solid",borderWidth:"1px"},r=`${r}20`),e.jsx(p.Tag,{...t,style:n,color:r,children:t.children})},Qr=t=>{const{ooui:r}=t;return e.jsx(me,{type:"array",...t,children:e.jsx(wi,{ooui:r})})},wi=t=>{const{value:r,ooui:n,onChange:s}=t,{items:o=[]}=r||{},i=o.filter(V=>V.operation!=="pendingRemove").map(V=>V.id),[a,c]=l.useState([]),[f,d]=l.useState(),[h,u]=l.useState(!1),{relation:g,context:v,readOnly:y,field:m}=n,w=l.useContext(Me),{getContext:C}=w||{};et.default(()=>{M()},[o]);const D=V=>{s==null||s({items:V})};async function M(){u(!0);let V=[];try{if(y&&(V=[["id","in",i]]),n.domain){const T=await K.getHandler().evalDomain({domain:n.domain,values:ct({fields:w==null?void 0:w.getFields(),values:w.getPlainValues()}),fields:w==null?void 0:w.getFields(),context:w.getContext()});V=[...V,...T]}const x=(await K.getHandler().search({model:g,params:V,fields:[m],context:{...C==null?void 0:C(),...v}})).map(T=>{const S=T[m];let O=S;return Array.isArray(S)&&(O=S[1]),{label:O,value:T.id}});c(x)}catch(L){d(L)}finally{u(!1)}}const b=V=>{const L=o.map(T=>V.includes(T.id)?T.operation=="pendingRemove"?{...T,operation:"pendingLink"}:T:{id:T.id,operation:"pendingRemove"}),x=L.map(T=>T.id);V.filter(T=>!x.includes(T)).map(T=>{L.push({id:T,operation:"pendingLink"})}),D(L)},E=V=>{const{label:L,closable:x,onClose:T}=V,S=P=>{P.preventDefault(),P.stopPropagation()},O=kt(L);return e.jsx(Xr,{color:O,onMouseDown:S,closable:x,onClose:T,closeIcon:e.jsx("span",{style:{color:O},children:"X"}),children:L})};return f?e.jsx(p.Alert,{className:"mt-10",message:f,type:"error",banner:!0}):e.jsx(e.Fragment,{children:e.jsx("div",{className:"flex flex-row",children:e.jsx(p.Select,{mode:"multiple",value:a.length?i:[],tagRender:E,bordered:!y,disabled:y,options:a,onChange:b,loading:h})})})},vi=t=>{switch(t){case"form":return ut;case"tree":return bt;case"notebook":return _n;case"group":return nr;case"label":return yt;case"char":return Ut;case"text":return Dn;case"button":return qt;case"buttonGroup":return Fr;case"selection":return Gt;case"many2one":return wn;case"boolean":return Mr;case"integer":return St;case"float":return Xt;case"progressbar":return ln;case"date":return In;case"datetime":return An;case"time":return Ln;case"one2many":case"one2many_list":case"many2many":return Fn;case"separator":return kn;case"reference":return Pn;case"binary":return Nn;case"image":return Wr;case"url":return qn;case"email":return Un;case"float_time":return On;case"fiber_grid":return ti;case"timeline":return ai;case"indicator":return di;case"tags":return Qr;case"tag":return Jr;case"multicheckbox":return Qn;case"markdown":return Rn;case"radio":return eo;case"switch":return to;case"steps":return ro;case"codeeditor":return no;default:return}},Ci=t=>{const{ooui:r}=t,{type:n}=r,s=vi(n);return s?Ke.default.createElement(s,t):null},Si=({item:t,responsiveBehaviour:r})=>({gridColumnStart:"span "+(r?1:t.colspan)}),bi=({row:t,mustFillWithEmpties:r,numberOfColumns:n})=>{const s=[];let o=0;const i=a=>a+1===t.length&&o<n&&!r;return t.map((a,c)=>{if(o+=a.colspan,i(c)){const f=n-o;a.colspan=a.colspan+f,o+=f}if(s.push(a),i(c)){const f=n-o;for(let d=0;d<f;d+=1)s.push(new se.Label({string:""}))}}),s},xi=({row:t,numberOfColumns:r})=>t.map(n=>(n._mustExpand&&(n.colspan=r),n)),Ti=(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(" ")},Fi=(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},Oi=t=>t.map(n=>n.reduce((s,o)=>s+o.colspan,0)).reduce((n,s)=>Math.max(n,s)),Zt=t=>{const{container:r,responsiveBehaviour:n}=t,{rows:s}=r;let{columns:o}=r;const i=Oi(s);i<o&&(o=i);let a=!1,c=[];const f=s.map((u,g)=>{const v=u.filter(w=>!w.invisible),y=xi({row:v,numberOfColumns:o});let m=y;return(g===0||!(u.length===1&&u.some(w=>w.type==="group")))&&(m=bi({row:y,numberOfColumns:o,mustFillWithEmpties:n}),c=c.concat(m)),m.map(w=>(w instanceof se.Label&&w.fieldForLabel&&(a=!0),e.jsx("div",{style:{...Si({item:w,responsiveBehaviour:n}),minWidth:0},children:Ci({ooui:w,responsiveBehaviour:n})},w.key)))}),d=s.length===1?Ti(c,o):Fi(o,a),h={display:"grid",gridTemplateColumns:n?"auto":d,gap:"1rem",minHeight:0,minWidth:0};return e.jsx("div",{style:h,children:f})},{confirm:_i}=p.Modal,vt=({onOk:t,onCancel:r,lang:n})=>{_i({title:be("unsavedChanges",n),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmCloseWithoutSave",n),okText:be("closeWithoutSaving",n),onOk:t,onCancel:r,cancelText:be("cancel",n)})},{error:Di}=p.Modal,Rr=t=>{Di({title:be("formHasErrors",t),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:be("fillRequiredFields",t)})},{warning:ki}=p.Modal,Vi=(t,r,n)=>{ki({title:t,icon:e.jsx(H.WarningOutlined,{}),centered:!0,content:r,onOk:n})},en=Ke.default.createContext(null),Mi=t=>{const{children:r,setTitle:n}=t;return e.jsx(en.Provider,{value:{setTitle:n},children:r})},tn=t=>typeof t=="string"&&t==="true"||t==="false"?t==="true":t,Ei=(t,r)=>{const n=Ni(t),s=Li(n),o=Pi(s,r);return[...Object.keys(o).map(c=>Ii(c,o[c],r))].reduce((c,f)=>Array.isArray(f[0])?c.concat(f):[...c,f],[])},Ii=(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=>tn(a))]:[t,"=",tn(r)]},Ai=t=>Object.keys(t).filter(r=>r.indexOf("#date")!==-1),$i=t=>{const r={...t};return Object.keys(r).forEach(n=>(n.indexOf("#time")!==-1||n.indexOf("#date")!==-1)&&delete r[n]),r},Li=t=>{const r={...$i(t)};return Ai(t).forEach(s=>{const o=t[s],i=s.split("#")[0],a=i+"#time",c=t[a];let f,d;if(o[0]!==null&&(f=o[0].format("YYYY-MM-DD"),c&&c[0]!==null)){const u=c[0].format("HH:mm:ss");f=f+" "+u}if(o[1]!==null&&(d=o[1].format("YYYY-MM-DD"),c&&c[1]!==null)){const u=c[1].format("HH:mm:ss");d=d+" "+u}r[i+"#datetime"]=[f,d]}),r},Pi=(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},Ni=t=>{const r={...t};return Object.keys(r).forEach(n=>(r[n]===void 0||r[n]===null||r[n]==="")&&delete r[n]),r},Bi=t=>{const r={};return t.forEach(n=>{Array.isArray(n)&&n[0]?r[n[0]]=!0:r[n]=!0}),Object.keys(r)},Vt=(t,r)=>{const n=[...t],s=Bi(t);return r.forEach(o=>{Array.isArray(o)&&o[0]?s.includes(o[0])||n.push(o):s.includes(o)||n.push(o)}),n},Ct=80,rn=t=>{const{model:r,setSearchTreeNameSearch:n,setSelectedRowItems:s,setSearchParams:o,setSearchVisible:i,setTreeIsLoading:a,nameSearch:c,searchNameGetDoneRef:f,context:d,setActionViewTotalItems:h,treeView:u,formView:g,sorter:v,setSorter:y,setCurrentItemIndex:m,setResultsActionView:w,resultsActionView:C,domain:D,currentId:M,limit:b,setLimit:E,searchParams:V=[],setSearchValues:L}=t,[x,T]=l.useState(!1),[S,O]=l.useState(!1),[P,$]=l.useState(),[F,I]=l.useState(1),[A,k]=l.useState(0),[B,_]=l.useState(),[W,J]=l.useState([]),[j,X]=l.useState(void 0),[G,N]=l.useState(void 0),Y=l.useRef(b||Ct),re=l.useRef([]),Q=l.useCallback(ie=>{w==null||w([...ie]),J([...ie])},[]),le=l.useCallback(()=>C||W,[C,W]),R=l.useCallback(async()=>{const ie=await K.getHandler().nameSearch({model:r,payload:c,limit:Y.current,attrs:D,context:d});if(_(ie.length),h==null||h(ie.length),ie.length>0){const de=ie.map(ke=>ke==null?void 0:ke[0]),{colors:Ae,status:we}=it(u),De={};Ae&&(De.colors=Ae),we&&(De.status=we);const Ye=await K.getHandler().readEvalUiObjects({model:r,ids:de,arch:u==null?void 0:u.arch,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d,attrs:De}),te=Ye[0];re.current=[...te],X(Dt(Ye[1])),N(Ur(Ye[1]));const Fe=te.map(ke=>ke.id),_e=v!==void 0?at({resultsToSort:te,sorter:v,fields:{...u.fields,...g.fields}}):[...re.current];Q(_e),Fe.length>0?m==null||m(0):m==null||m(void 0)}else Q([]),m==null||m(void 0);T(!1),f.current=!0},[Q,f,c,r,d,D,u,g,v,m,h]),Z=l.useCallback(async ie=>{const{params:de,newOffset:Ae}=ie||{},we=Vt(de||V,D),{colors:De,status:Ye}=it(u),te={};De&&(te.colors=De),Ye&&(te.status=Ye);const{totalItems:Fe,results:_e,attrsEvaluated:ke}=await K.getHandler().searchForTree({params:we,limit:Y.current,offset:Ae||A,model:r,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d,attrs:te});X(Dt(ke)),N(Ur(ke)),re.current=[..._e];const ce=v!==void 0?at({resultsToSort:_e,sorter:v,fields:{...u.fields,...g.fields}}):[...re.current];if(Q(ce),C&&ce.length>0){const Ne=ce.findIndex(ue=>M===ue.id);Ne===-1?m==null||m(0):m==null||m(Ne)}else m==null||m(void 0);T(!1);const fe=await Fe;_(fe),h==null||h(fe)},[m,C,Q,M,r,d,D,u,g,v,h,b,A,V]),he=l.useCallback(async ie=>{try{T(!0),a==null||a(!0),c&&!f.current?await R():await Z(ie)}catch(de){$(de.message)}finally{s==null||s([]),O(!1),a==null||a(!1)}},[d,M,D,g,b,r,c,A,C,f,h,m,Q,$,O,T,a,v,u]),ve=l.useCallback(ie=>{if(JSON.stringify(ie)===JSON.stringify(v))return;y==null||y(ie);const de=ie!==void 0?at({resultsToSort:le(),sorter:ie,fields:{...u.fields,...g.fields}}):[...re.current];Q(de)},[y,le,u,g,Q]),Ee=l.useCallback(ie=>{const{params:de,searchValues:Ae,limit:we,offset:De}=ie;x||(n==null||n(void 0),s==null||s([]),L==null||L(Ae),o==null||o(de),i==null||i(!1),O(!0),$(void 0),I(1),we&&(Y.current=we,E==null||E(we)),De&&k(De),he({params:de,newOffset:De}))},[x,n,s,o,i,O,$,I,E,k,he]),Oe=l.useCallback(ie=>{T(!0),I(ie),k((ie-1)*b)},[T,b,k,I]),Ie=l.useCallback(()=>{x||(n==null||n(void 0),o==null||o([]),L==null||L({}),$(void 0),k(0),I(1),E==null||E(b||Ct))},[x,n,o,$,k,I,E,b]),Pe=l.useCallback(async ie=>{const de=ie[(u==null?void 0:u.field_parent)||"child_id"],Ae=await K.getHandler().readObjects({model:r,ids:de,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d});return Q([...le(),...Ae]),qr(it(u),Ae)},[u,r,d,le,Q]);return{submit:Ee,clear:Ie,fetchResults:he,tableRefreshing:x,searchFilterLoading:S,searchError:P,page:F,offset:A,limit:b,getResults:le,requestPageChange:Oe,changeSort:ve,fetchChildrenForRecord:Pe,colorsForResults:j,statusForResults:G,totalItems:B}},We=Ke.default.createContext(null),Hi=t=>{const{children:r,currentView:n,title:s,setCurrentView:o,availableViews:i,formRef:a,searchTreeRef:c,onNewClicked:f,currentId:d,setCurrentId:h,setResults:u,results:g,currentItemIndex:v,setCurrentItemIndex:y,currentModel:m,sorter:w,setSorter:C,totalItems:D,setTotalItems:M,setSelectedRowItems:b,selectedRowItems:E,searchTreeNameSearch:V,setSearchTreeNameSearch:L,goToResourceId:x,limit:T}=t,[S,O]=l.useState(!1),[P,$]=l.useState(!1),[F,I]=l.useState(!1),[A,k]=l.useState(!0),[B,_]=l.useState(!0),[W,J]=l.useState([]),[j,X]=l.useState(!1),[G,N]=l.useState([]),[Y,re]=l.useState(!1),[Q,le]=l.useState(!0),[R,Z]=l.useState(),[he,ve]=l.useState({}),[Ee,Oe]=l.useState(T!==void 0?T:Ct),[Ie,Pe]=l.useState(s);l.useEffect(()=>{g&&g.length>0&&!v&&(y==null||y(0),h==null||h(g[0].id))},[g]),l.useEffect(()=>{Oe(T!==void 0?T:Ct)},[T]),l.useEffect(()=>{i.length===1?Z(i[0]):i.length>1&&Z(i.filter(de=>de.view_id!==n.view_id)[0])},[i]),l.useEffect(()=>{(R==null?void 0:R.view_id)===n.view_id&&i.length>1&&Z(i.filter(de=>de.view_id!==n.view_id)[0])},[n]);const ie=async()=>{var de;return await((de=a.current)==null?void 0:de.submitForm())};return e.jsx(We.Provider,{value:{title:Ie,currentView:n,setCurrentView:o,availableViews:i,formIsSaving:S,setFormIsSaving:O,formHasChanges:P,setFormHasChanges:$,formRef:a,searchTreeRef:c,onFormSave:ie,onNewClicked:f,currentId:d,setCurrentId:h,currentItemIndex:v,setCurrentItemIndex:y,results:g,setResults:u,currentModel:m,removingItem:F,setRemovingItem:I,formIsLoading:A,setFormIsLoading:k,treeIsLoading:B,setTreeIsLoading:_,attachments:W,setAttachments:J,selectedRowItems:E,setSelectedRowItems:b,duplicatingItem:j,setDuplicatingItem:X,setSearchParams:N,searchParams:G,searchVisible:Y,setSearchVisible:re,sorter:w,setSorter:C,totalItems:D,setTotalItems:M,searchTreeNameSearch:V,setSearchTreeNameSearch:L,setGraphIsLoading:le,graphIsLoading:Q,previousView:R,setPreviousView:Z,goToResourceId:x,searchValues:he,setSearchValues:ve,limit:Ee,setLimit:Oe,setTitle:Pe},children:r})},Ge=Ke.default.createContext(null),Ki=t=>{const{children:r,openAction:n,openRelate:s,openDefaultActionForModel:o,openShortcut:i,activeKey:a,onChangeTab:c,onRemoveTab:f,tabs:d}=t,[h,u]=l.useState(),[g,v]=l.useState();return e.jsx(Ge.Provider,{value:{openAction:n,openRelate:s,openDefaultActionForModel:o,activeKey:a,openShortcut:i,onChangeTab:c,onRemoveTab:f,tabs:d,currentId:g,currentView:h,setCurrentId:v,setCurrentView:u},children:r})},dt=Ke.default.createContext(null),nn=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))},Yi=(t,r)=>{const{children:n,globalValues:s={}}=t,o=l.useRef(),i=l.useRef(),[a,c]=l.useState(!1),f=l.useContext(Ge),{openAction:d}=f||{},h=l.useRef([]),{t:u}=l.useContext(ge);l.useImperativeHandle(r,()=>({openActionModal:b}));const[g,v]=l.useState(!1),[y,m]=l.useState({context:{}});async function w(L){const{reportData:x,fields:T,values:S,context:O={}}=L,{context:P,model:$,datas:F={},report_name:I,type:A}=x;if(A!=="ir.actions.report.xml"){Le(`${A} action not supported`);return}const{ids:k}=F||{};let B=k||[];const _=typeof P=="string"?se.parseContext({context:P,fields:T,values:S}):P;try{const W=await K.getHandler().createReport({model:$,name:I,datas:F,ids:B,context:{...O,..._}});c(!0),i.current=!0,o.current=setInterval(()=>{C(W)},1e3)}catch(W){i.current=!1,clearInterval(o.current),Le(W),c(!1)}}async function C(L){let x;try{if(x=await K.getHandler().getReport({id:L}),x.state&&i.current===!0){i.current=!1,clearInterval(o.current),c(!1);const T=await st(x.result);_t(x.result,T.mime)}}catch(T){i.current=!1,clearInterval(o.current),c(!1),Le(T.exception||T)}}async function D({actionData:L,fields:x,values:T,context:S,onRefreshParentValues:O}){const{type:P}=L;if(h.current.push(O),P==="ir.actions.report.xml")return await w({reportData:L,fields:x,values:T,context:S});if(P==="ir.actions.act_window")return await M({actionData:L,fields:x,values:T,context:S});if(P==="ir.actions.act_url")window.open(yi(L.url,{...T,context:S}),"_blank");else return Le(`${P} action not supported`),{}}async function M({actionData:L,fields:x={},values:T={},context:S={}}){var I;let O=L;L.res_model||(O=(await K.getHandler().readObjects({model:"ir.actions.act_window",ids:[parseInt(L.id)],context:S}))[0]);const P=typeof(O==null?void 0:O.context)=="string"?se.parseContext({context:O.context,fields:x,values:{...T,...s}}):O.context,$={...S,...P};let F=[];if(O.domain&&(F=await K.getHandler().evalDomain({domain:O.domain,values:ct({fields:x,values:{...T,...s}}),fields:x,context:$})),O.target==="new"){const A=await K.getHandler().getView({model:O.res_model,type:"form",id:((I=O==null?void 0:O.view_id)==null?void 0:I[0])||void 0,context:$});return b({domain:F,model:O.res_model,formView:A,context:$}),{}}else{const{initialView:A,views:k}=await Wi({model:O.res_model,context:$,view_mode:O.view_mode,views:O.views});return d==null||d({target:"current",context:$,domain:F,model:O.res_model,views:k,title:O.name,initialView:A,action_id:O.id,action_type:O.type}),{closeParent:!0}}}function b({domain:L,model:x,formView:T,context:S,actionData:O}){g?E({domain:L,model:x,formView:T,context:S,actionData:O}):(m({domain:L,model:x,context:S,formView:T,actionData:O}),v(!0))}async function E({domain:L,model:x,formView:T,context:S,actionData:O}){m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0}),v(!1),await new Promise(P=>setTimeout(P,300)),m({domain:L,model:x,context:S,formView:T,actionData:O}),v(!0)}async function V(){nn(h.current),h.current=[],v(!1),m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0})}return e.jsx(e.Fragment,{children:e.jsx(dt.Provider,{value:{processAction:D,globalValues:s},children:e.jsxs(e.Fragment,{children:[n,e.jsx(p.Modal,{title:u("generatingReport"),open:a,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(p.Spin,{})}),e.jsx(ft,{buttonModal:!0,parentContext:y.context,model:y.model,formView:y.formView,visible:g,onSubmitSucceed:V,onCancel:()=>{nn(h.current),h.current=[],v(!1),m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0})},showFooter:!1,actionDomain:y.domain,isMenuAction:(y==null?void 0:y.actionData)!==void 0,actionData:y==null?void 0:y.actionData})]})})})};async function Wi({views:t,view_mode:r,model:n,context:s,view_id:o}){const i=[];let a;if(t)for(const c of t){const f=await K.getHandler().getView({model:n,type:c[1],id:c[0],context:s});i.push([f.view_id,c[1]])}else{const c=r.split(",");for(const f of c){const d=await K.getHandler().getView({model:n,type:f,context:s});i.push([d.view_id,f])}}if(t&&t.length>0){const[c,f]=t[0];a={id:c,type:f}}else if(o)a={id:o,type:r.split(",")[0]};else{const c=r.split(",")[0],[f]=i.find(([d,h])=>h===c);a={id:f,type:c}}return{views:i,initialView:a}}const on=l.forwardRef(Yi),qi=({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 es(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}var Er=es,ts=typeof Re=="object"&&Re&&Re.Object===Object&&Re,rs=ts,ns=rs,os=typeof self=="object"&&self&&self.Object===Object&&self,ss=ns||os||Function("return this")(),Ir=ss,is=Ir,as=function(){return is.Date.now()},ls=as,cs=/\s/;function ds(t){for(var r=t.length;r--&&cs.test(t.charAt(r)););return r}var us=ds,fs=us,hs=/^\s+/;function ps(t){return t&&t.slice(0,fs(t)+1).replace(hs,"")}var gs=ps,ms=Ir,ys=ms.Symbol,Ar=ys,$r=Ar,Lr=Object.prototype,ws=Lr.hasOwnProperty,vs=Lr.toString,wt=$r?$r.toStringTag:void 0;function Cs(t){var r=ws.call(t,wt),n=t[wt];try{t[wt]=void 0;var s=!0}catch{}var o=vs.call(t);return s&&(r?t[wt]=n:delete t[wt]),o}var Ss=Cs,bs=Object.prototype,xs=bs.toString;function Ts(t){return xs.call(t)}var Fs=Ts,Pr=Ar,Os=Ss,_s=Fs,Ds="[object Null]",ks="[object Undefined]",Nr=Pr?Pr.toStringTag:void 0;function Vs(t){return t==null?t===void 0?ks:Ds:Nr&&Nr in Object(t)?Os(t):_s(t)}var Ms=Vs;function Es(t){return t!=null&&typeof t=="object"}var Is=Es,As=Ms,$s=Is,Ls="[object Symbol]";function Ps(t){return typeof t=="symbol"||$s(t)&&As(t)==Ls}var Ns=Ps,Bs=gs,Br=Er,Hs=Ns,Hr=0/0,Ks=/^[-+]0x[0-9a-f]+$/i,Ys=/^0b[01]+$/i,Ws=/^0o[0-7]+$/i,qs=parseInt;function Us(t){if(typeof t=="number")return t;if(Hs(t))return Hr;if(Br(t)){var r=typeof t.valueOf=="function"?t.valueOf():t;t=Br(r)?r+"":r}if(typeof t!="string")return t===0?t:+t;t=Bs(t);var n=Ys.test(t);return n||Ws.test(t)?qs(t.slice(2),n?2:8):Ks.test(t)?Hr:+t}var Gs=Us,js=Er,jt=ls,Kr=Gs,zs="Expected a function",Js=Math.max,Zs=Math.min;function Xs(t,r,n){var s,o,i,a,c,f,d=0,h=!1,u=!1,g=!0;if(typeof t!="function")throw new TypeError(zs);r=Kr(r)||0,js(n)&&(h=!!n.leading,u="maxWait"in n,i=u?Js(Kr(n.maxWait)||0,r):i,g="trailing"in n?!!n.trailing:g);function v(V){var L=s,x=o;return s=o=void 0,d=V,a=t.apply(x,L),a}function y(V){return d=V,c=setTimeout(C,r),h?v(V):a}function m(V){var L=V-f,x=V-d,T=r-L;return u?Zs(T,i-x):T}function w(V){var L=V-f,x=V-d;return f===void 0||L>=r||L<0||u&&x>=i}function C(){var V=jt();if(w(V))return D(V);c=setTimeout(C,m(V))}function D(V){return c=void 0,g&&s?v(V):(s=o=void 0,a)}function M(){c!==void 0&&clearTimeout(c),d=0,s=f=o=c=void 0}function b(){return c===void 0?a:D(jt())}function E(){var V=jt(),L=w(V);if(s=arguments,o=this,f=V,L){if(c===void 0)return y(f);if(u)return clearTimeout(c),c=setTimeout(C,r),v(f)}return c===void 0&&(c=setTimeout(C,r)),a}return E.cancel=M,E.flush=b,E}var Qs=Xs;function Rs(t){const n=Buffer.from(t,"base64").length/1e3;return`${Math.round((n+Number.EPSILON)*100)/100} KB`}async function st(t){const r=await yo.fileTypeFromBuffer(Buffer.from(t,"base64"));return r||{mime:"text/plain",ext:"txt"}}const Yr=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 _t(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 Wr=t=>{const{ooui:r}=t,{required:n,id:s}=r,o=Ge(s);return o?e.jsx(o,{}):e.jsx(me,{required:n,...t,children:e.jsx(ei,{ooui:r})})},ei=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o}=r,i=l.useRef(null),{t:a}=l.useContext(ge),c=u=>{s==null||s(u)};async function f(){const u=await st(n),g=`data:${u==null?void 0:u.mime};base64,${n}`,v=document.createElement("a");v.href=g,v.download=`image.${u==null?void 0:u.ext}`,v.click()}async function d(u){u.stopPropagation(),u.preventDefault();const g=u.target.files[0],v=await Yr(g);c(v)}function h(){c(void 0)}return e.jsxs(e.Fragment,{children:[e.jsxs(p.Row,{gutter:8,wrap:!1,justify:"center",children:[n&&e.jsx("img",{src:`data:image/*;base64,${n}`,style:{maxWidth:"100px"}}),e.jsx("input",{type:"file",id:"file",ref:i,accept:"image/*",style:{display:"none"},onChange:d})]}),e.jsx(p.Row,{gutter:8,wrap:!1,justify:"center",className:"pt-5",children:e.jsxs(p.Space,{children:[e.jsx(Be,{tooltip:a("uploadNewImage"),icon:e.jsx(H.FolderOpenOutlined,{}),disabled:o,onClick:()=>{i.current.click()}}),e.jsx(Be,{tooltip:a("download"),disabled:!n,onClick:f,icon:e.jsx(H.DownloadOutlined,{})}),e.jsx(Be,{tooltip:a("clear"),disabled:o||!n,onClick:h,icon:e.jsx(H.ClearOutlined,{})})]})})]})},ti=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(ri,{})})},ri=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(wo.GridUi,{inputJson:r,onChange:s=>{n&&n(s)}})},it=t=>{const r=t.arch,n=t.fields,s=new se.Tree(n);return s.parse(r),s},ni=(t,r,n)=>t.columns.map(o=>{const i=o.type,a=o.id,c=r==null?void 0:r[i];let f;return c&&(f=d=>c(d,a,o,n)),{key:a,dataIndex:a,title:o.label,render:f,sorter:(d,h)=>{var v,y;let u=d[a]||"",g=h[a]||"";return i==="many2one"&&(u=((v=d[a])==null?void 0:v.value)||"",g=((y=h[a])==null?void 0:y.value)||""),u<g?-1:u>g?1:0}}}),qr=(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 Dt(t){return Gr(t,"colors")}function Ur(t){return Gr(t,"status")}function Gr(t,r){if(!t)return;const n={};return t.forEach(s=>{n[s.id]=s[r]}),n}function at({resultsToSort:t,sorter:r,fields:n}){if(!r)return t;const{id:s,desc:o}=r,i=o===!1?"ascend":"descend",a=n[s].type,c=(f,d)=>{var g,v;let h=f[s]||"",u=d[s]||"";return a==="many2one"&&(h=((g=f[s])==null?void 0:g[1])||"",u=((v=d[s])==null?void 0:v[1])||""),h===u?0:i==="ascend"?h>u?1:-1:h<u?1:-1};return t.sort(c)}function oi(t){for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)&&t[r]!==void 0)return!0;return!1}const zt=async t=>{var y;const{items:r,model:n,formView:s,treeView:o,context:i,currentView:a={}}=t,c=r.filter(m=>m.operation!=="original"),f=r.filter(m=>m.operation==="original").map(m=>m.id),d={form:s.fields,tree:o.fields};let h=[],u;if(a==="tree"&&(o==null?void 0:o.arch)){const m=(y=it(o))==null?void 0:y.colors,w=await K.getHandler().readEvalUiObjects({model:n,ids:f,arch:o==null?void 0:o.arch,fields:o.fields,context:i,attrs:m&&{colors:m}});h=w[0],u=Dt(w[1])}else h=await K.getHandler().readObjects({model:n,ids:f,fields:d[a],context:i});const g=h.map(m=>{const w={};return Object.keys(m).forEach(C=>{(d[a].hasOwnProperty(C)||C==="id")&&(w[C]=m[C])}),w});return[r.map(m=>{const w=g.find(D=>D.id===m.id),C={...m};return a==="form"?C.values=w:a==="tree"&&(C.treeValues=w),C}).concat(c),u]},si=t=>{const r=t.filter(n=>n.id&&n.id<0).map(n=>n.id);return r.length===0?-1:Math.min(...r)-1},ii=(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},ai=t=>{const{ooui:r}=t,{relation:n,context:s,views:o}=r,[i,a]=l.useState(!0),[c,f]=l.useState(),[d,h]=l.useState(new Map),u=l.useContext(Me),{getContext:g}=u||{};et.default(()=>{y()},[r]);const v=async m=>o&&o[m]?o[m]:await K.getHandler().getView({model:n,type:m,context:{...g==null?void 0:g(),...s}}),y=async()=>{a(!0),f(void 0);try{const m=await v("form"),w=await v("tree");d.set("form",m),d.set("tree",w),h(d)}catch(m){f(m)}finally{a(!1)}};return i?e.jsx(p.Spin,{}):c?e.jsx(p.Alert,{className:"mt-10",message:c,type:"error",banner:!0}):e.jsx(me,{type:"array",...t,children:e.jsx(li,{ooui:r,views:d})})},li=t=>{const{value:r,views:n,ooui:s,onChange:o}=t,{items:i=[]}=r||{},[a,c]=l.useState(!1),[f,d]=l.useState(),[h,u]=l.useState(!1),[g,v]=l.useState(),{relation:y,context:m,readOnly:w,summaryField:C,titleField:D}=s,M=i.filter(x=>x.values),b=l.useContext(Me),{getContext:E}=b||{};et.default(()=>{L()},[i]);const V=x=>{o==null||o({items:x})};async function L(){c(!0),d(void 0);try{const[x]=await zt({treeView:{fields:n.get("tree").fields,arch:n.get("tree").arch},formView:{fields:n.get("form").fields},model:y,items:i,context:{...E==null?void 0:E(),...m},currentView:"form"});V(x)}catch(x){d(x)}finally{c(!1)}}return f?e.jsx(p.Alert,{className:"mt-10",message:f,type:"error",banner:!0}):a?e.jsx(p.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(p.Timeline,{style:{padding:"1rem"},children:M.map((x,T)=>{var S,O;return e.jsx("div",{children:e.jsxs(p.Timeline.Item,{children:[e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{v(M.find(P=>x.id===P.id)),u(!0)},children:e.jsx("strong",{children:(S=x.values)==null?void 0:S[D]})}),e.jsx("br",{}),e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{v(M.find(P=>x.id===P.id)),u(!0)},children:(O=x.values)==null?void 0:O[C]})]},T)},T)})}),e.jsx(ft,{formView:n.get("form"),model:y,id:g==null?void 0:g.id,values:g==null?void 0:g.values,defaultValues:g==null?void 0:g.defaultValues,visible:h,onSubmitSucceed:()=>{u(!1)},parentContext:{...E==null?void 0:E(),...m},onCancel:()=>{u(!1)},readOnly:w,postSaveAction:L})]})},{useToken:ci}=p.theme,di=t=>{const{ooui:r}=t;return e.jsx(me,{ooui:r,children:e.jsx(ui,{ooui:r})})},ui=t=>{const{token:r}=ci(),{ooui:n,value:s}=t,o=e.jsxs(e.Fragment,{children:[e.jsxs("span",{children:[n.label," "]}),n.tooltip&&e.jsx(p.Tooltip,{title:n.tooltip,children:e.jsx(H.QuestionCircleOutlined,{className:"pr-1 text-xs",style:{color:r.colorPrimaryBg}})})]}),i=Ge(n.icon);let a=s;n.selectionValues.size?a=n.selectionValues.get(s):Array.isArray(s)&&(a=s[1]);const c=e.jsx(p.Statistic,{title:o,prefix:i&&e.jsx(i,{}),suffix:n.suffix,value:a});return n.card?e.jsx(p.Card,{children:c}):c},fi=(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},lt=(t,r)=>fi(t,r),Jt=({source:t,target:r,fields:n})=>{const s={};return Object.keys(r).forEach(o=>{var a,c;if(n[o]?n[o].type==="one2many"||n[o].type==="many2many":!1){const f=JSON.stringify(t[o]),d=JSON.stringify(r[o]);if(f===d)return;(((c=(a=r[o])==null?void 0:a.items)==null?void 0:c.filter(u=>u.operation!=="original"))||[]).length>0&&(s[o]=r[o])}else if(Array.isArray(r[o]))if(t[o]===void 0)s[o]=r[o];else if(n[o].type==="many2one")if(Array.isArray(t[o])){const f=JSON.stringify(t[o]),d=JSON.stringify(r[o]);f!==d&&(s[o]=r[o])}else{const f=t[o],[d]=r[o];f!==d&&(s[o]=r[o])}else{const f=JSON.stringify(t[o]),d=JSON.stringify(r[o]);f!==d&&(s[o]=r[o])}else t[o]!==r[o]&&(r[o]===void 0?s[o]=null:s[o]=r[o])}),s},hi=({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),pi=({fieldsDomain:t,fields:r})=>{const n={};return Object.keys(r).forEach(s=>{n[s]=r[s],t[s]&&(n[s].domain=t[s])}),n},gi=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)},mi=({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},jr=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(zr),secondary:r.secondary.filter(zr)}};function zr(t,r,n){return n.indexOf(t)===r}const ct=({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},kt=t=>{let r=0;t=t.toString().padEnd(10,"0");for(let o=0;o<t.length;o++)r=t.charCodeAt(o)+((r<<5)-r);let n="#";for(let o=0;o<3;o++){var s=r>>o*8&255;n+=("00"+s.toString(16)).slice(-2)}return n},yi=(t,r)=>t.replace(/\{([^}]+)\}/g,(n,s)=>r[s]!==void 0?r[s]:n),Jr=t=>e.jsx(me,{...t,children:e.jsx(Zr,{...t})}),Zr=t=>{const{ooui:r,value:n}=t;let s=n,o=n;if(r.selectionValues.size?s=r.selectionValues.get(n):Array.isArray(n)&&(o=n[0],s=n[1]),!n)return null;const i=r.colors==="auto"?kt(o):r.colors[o]||kt(o);return e.jsx(Xr,{color:i,children:s})},Xr=t=>{let{color:r}=t,n={};return!gr.isPresetStatusColor(t.color)&&!gr.isPresetColor(t.color)&&(n={color:r,borderColor:r,borderStyle:"solid",borderWidth:"1px"},r=`${r}20`),e.jsx(p.Tag,{...t,style:n,color:r,children:t.children})},Qr=t=>{const{ooui:r}=t;return e.jsx(me,{type:"array",...t,children:e.jsx(wi,{ooui:r})})},wi=t=>{const{value:r,ooui:n,onChange:s}=t,{items:o=[]}=r||{},i=o.filter(V=>V.operation!=="pendingRemove").map(V=>V.id),[a,c]=l.useState([]),[f,d]=l.useState(),[h,u]=l.useState(!1),{relation:g,context:v,readOnly:y,field:m}=n,w=l.useContext(Me),{getContext:C}=w||{};et.default(()=>{M()},[o]);const D=V=>{s==null||s({items:V})};async function M(){u(!0);let V=[];try{if(y&&(V=[["id","in",i]]),n.domain){const T=await K.getHandler().evalDomain({domain:n.domain,values:ct({fields:w==null?void 0:w.getFields(),values:w.getPlainValues()}),fields:w==null?void 0:w.getFields(),context:w.getContext()});V=[...V,...T]}const x=(await K.getHandler().search({model:g,params:V,fields:[m],context:{...C==null?void 0:C(),...v}})).map(T=>{const S=T[m];let O=S;return Array.isArray(S)&&(O=S[1]),{label:O,value:T.id}});c(x)}catch(L){d(L)}finally{u(!1)}}const b=V=>{const L=o.map(T=>V.includes(T.id)?T.operation=="pendingRemove"?{...T,operation:"pendingLink"}:T:{id:T.id,operation:"pendingRemove"}),x=L.map(T=>T.id);V.filter(T=>!x.includes(T)).map(T=>{L.push({id:T,operation:"pendingLink"})}),D(L)},E=V=>{const{label:L,closable:x,onClose:T}=V,S=P=>{P.preventDefault(),P.stopPropagation()},O=kt(L);return e.jsx(Xr,{color:O,onMouseDown:S,closable:x,onClose:T,closeIcon:e.jsx("span",{style:{color:O},children:"X"}),children:L})};return f?e.jsx(p.Alert,{className:"mt-10",message:f,type:"error",banner:!0}):e.jsx(e.Fragment,{children:e.jsx("div",{className:"flex flex-row",children:e.jsx(p.Select,{mode:"multiple",value:a.length?i:[],tagRender:E,bordered:!y,disabled:y,options:a,onChange:b,loading:h})})})},vi=t=>{switch(t){case"form":return ut;case"tree":return bt;case"notebook":return _n;case"group":return nr;case"label":return yt;case"char":return Ut;case"text":return Dn;case"button":return qt;case"buttonGroup":return Fr;case"selection":return Gt;case"many2one":return wn;case"boolean":return Mr;case"integer":return St;case"float":return Xt;case"progressbar":return ln;case"date":return In;case"datetime":return An;case"time":return Ln;case"one2many":case"one2many_list":case"many2many":return Fn;case"separator":return kn;case"reference":return Pn;case"binary":return Nn;case"image":return Wr;case"url":return qn;case"email":return Un;case"float_time":return On;case"fiber_grid":return ti;case"timeline":return ai;case"indicator":return di;case"tags":return Qr;case"tag":return Jr;case"multicheckbox":return Qn;case"markdown":return Rn;case"radio":return eo;case"switch":return to;case"steps":return ro;case"codeeditor":return no;default:return}},Ci=t=>{const{ooui:r}=t,{type:n}=r,s=vi(n);return s?Ke.default.createElement(s,t):null},Si=({item:t,responsiveBehaviour:r})=>({gridColumnStart:"span "+(r?1:t.colspan)}),bi=({row:t,mustFillWithEmpties:r,numberOfColumns:n})=>{const s=[];let o=0;const i=a=>a+1===t.length&&o<n&&!r;return t.map((a,c)=>{if(o+=a.colspan,i(c)){const f=n-o;a.colspan=a.colspan+f,o+=f}if(s.push(a),i(c)){const f=n-o;for(let d=0;d<f;d+=1)s.push(new se.Label({string:""}))}}),s},xi=({row:t,numberOfColumns:r})=>t.map(n=>(n._mustExpand&&(n.colspan=r),n)),Ti=(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(" ")},Fi=(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},Oi=t=>t.map(n=>n.reduce((s,o)=>s+o.colspan,0)).reduce((n,s)=>Math.max(n,s)),Zt=t=>{const{container:r,responsiveBehaviour:n}=t,{rows:s}=r;let{columns:o}=r;const i=Oi(s);i<o&&(o=i);let a=!1,c=[];const f=s.map((u,g)=>{const v=u.filter(w=>!w.invisible),y=xi({row:v,numberOfColumns:o});let m=y;return(g===0||!(u.length===1&&u.some(w=>w.type==="group")))&&(m=bi({row:y,numberOfColumns:o,mustFillWithEmpties:n}),c=c.concat(m)),m.map(w=>(w instanceof se.Label&&w.fieldForLabel&&(a=!0),e.jsx("div",{style:{...Si({item:w,responsiveBehaviour:n}),minWidth:0},children:Ci({ooui:w,responsiveBehaviour:n})},w.key)))}),d=s.length===1?Ti(c,o):Fi(o,a),h={display:"grid",gridTemplateColumns:n?"auto":d,gap:"1rem",minHeight:0,minWidth:0};return e.jsx("div",{style:h,children:f})},{confirm:_i}=p.Modal,vt=({onOk:t,onCancel:r,lang:n})=>{_i({title:be("unsavedChanges",n),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmCloseWithoutSave",n),okText:be("closeWithoutSaving",n),onOk:t,onCancel:r,cancelText:be("cancel",n)})},{error:Di}=p.Modal,Rr=t=>{Di({title:be("formHasErrors",t),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:be("fillRequiredFields",t)})},{warning:ki}=p.Modal,Vi=(t,r,n)=>{ki({title:t,icon:e.jsx(H.WarningOutlined,{}),centered:!0,content:r,onOk:n})},en=Ke.default.createContext(null),Mi=t=>{const{children:r,setTitle:n}=t;return e.jsx(en.Provider,{value:{setTitle:n},children:r})},tn=t=>typeof t=="string"&&t==="true"||t==="false"?t==="true":t,Ei=(t,r)=>{const n=Ni(t),s=Li(n),o=Pi(s,r);return[...Object.keys(o).map(c=>Ii(c,o[c],r))].reduce((c,f)=>Array.isArray(f[0])?c.concat(f):[...c,f],[])},Ii=(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=>tn(a))]:[t,"=",tn(r)]},Ai=t=>Object.keys(t).filter(r=>r.indexOf("#date")!==-1),$i=t=>{const r={...t};return Object.keys(r).forEach(n=>(n.indexOf("#time")!==-1||n.indexOf("#date")!==-1)&&delete r[n]),r},Li=t=>{const r={...$i(t)};return Ai(t).forEach(s=>{const o=t[s],i=s.split("#")[0],a=i+"#time",c=t[a];let f,d;if(o[0]!==null&&(f=o[0].format("YYYY-MM-DD"),c&&c[0]!==null)){const u=c[0].format("HH:mm:ss");f=f+" "+u}if(o[1]!==null&&(d=o[1].format("YYYY-MM-DD"),c&&c[1]!==null)){const u=c[1].format("HH:mm:ss");d=d+" "+u}r[i+"#datetime"]=[f,d]}),r},Pi=(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},Ni=t=>{const r={...t};return Object.keys(r).forEach(n=>(r[n]===void 0||r[n]===null||r[n]==="")&&delete r[n]),r},Bi=t=>{const r={};return t.forEach(n=>{Array.isArray(n)&&n[0]?r[n[0]]=!0:r[n]=!0}),Object.keys(r)},Vt=(t,r)=>{const n=[...t],s=Bi(t);return r.forEach(o=>{Array.isArray(o)&&o[0]?s.includes(o[0])||n.push(o):s.includes(o)||n.push(o)}),n},Ct=80,rn=t=>{const{model:r,setSearchTreeNameSearch:n,setSelectedRowItems:s,setSearchParams:o,setSearchVisible:i,setTreeIsLoading:a,nameSearch:c,searchNameGetDoneRef:f,context:d,setActionViewTotalItems:h,treeView:u,formView:g,sorter:v,setSorter:y,setCurrentItemIndex:m,setResultsActionView:w,resultsActionView:C,domain:D,currentId:M,limit:b,setLimit:E,searchParams:V=[],setSearchValues:L}=t,[x,T]=l.useState(!1),[S,O]=l.useState(!1),[P,$]=l.useState(),[F,I]=l.useState(1),[A,k]=l.useState(0),[B,_]=l.useState(),[W,J]=l.useState([]),[j,X]=l.useState(void 0),[G,N]=l.useState(void 0),Y=l.useRef(b||Ct),re=l.useRef([]),Q=l.useCallback(ie=>{w==null||w([...ie]),J([...ie])},[]),le=l.useCallback(()=>C||W,[C,W]),R=l.useCallback(async()=>{const ie=await K.getHandler().nameSearch({model:r,payload:c,limit:Y.current,attrs:D,context:d});if(_(ie.length),h==null||h(ie.length),ie.length>0){const de=ie.map(ke=>ke==null?void 0:ke[0]),{colors:Ae,status:we}=it(u),De={};Ae&&(De.colors=Ae),we&&(De.status=we);const Ye=await K.getHandler().readEvalUiObjects({model:r,ids:de,arch:u==null?void 0:u.arch,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d,attrs:De}),te=Ye[0];re.current=[...te],X(Dt(Ye[1])),N(Ur(Ye[1]));const Fe=te.map(ke=>ke.id),_e=v!==void 0?at({resultsToSort:te,sorter:v,fields:{...u.fields,...g.fields}}):[...re.current];Q(_e),Fe.length>0?m==null||m(0):m==null||m(void 0)}else Q([]),m==null||m(void 0);T(!1),f.current=!0},[Q,f,c,r,d,D,u,g,v,m,h]),Z=l.useCallback(async ie=>{const{params:de,newOffset:Ae}=ie||{},we=Vt(de||V,D),{colors:De,status:Ye}=it(u),te={};De&&(te.colors=De),Ye&&(te.status=Ye);const{totalItems:Fe,results:_e,attrsEvaluated:ke}=await K.getHandler().searchForTree({params:we,limit:Y.current,offset:Ae||A,model:r,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d,attrs:te});X(Dt(ke)),N(Ur(ke)),re.current=[..._e];const ce=v!==void 0?at({resultsToSort:_e,sorter:v,fields:{...u.fields,...g.fields}}):[...re.current];if(Q(ce),C&&ce.length>0){const Ne=ce.findIndex(ue=>M===ue.id);Ne===-1?m==null||m(0):m==null||m(Ne)}else m==null||m(void 0);T(!1);const fe=await Fe;_(fe),h==null||h(fe)},[m,C,Q,M,r,d,D,u,g,v,h,b,A,V]),he=l.useCallback(async ie=>{try{T(!0),a==null||a(!0),c&&!f.current?await R():await Z(ie)}catch(de){$(de.message)}finally{s==null||s([]),O(!1),a==null||a(!1)}},[d,M,D,g,b,r,c,A,C,f,h,m,Q,$,O,T,a,v,u]),ve=l.useCallback(ie=>{if(JSON.stringify(ie)===JSON.stringify(v))return;y==null||y(ie);const de=ie!==void 0?at({resultsToSort:le(),sorter:ie,fields:{...u.fields,...g.fields}}):[...re.current];Q(de)},[y,le,u,g,Q]),Ee=l.useCallback(ie=>{const{params:de,searchValues:Ae,limit:we,offset:De}=ie;x||(n==null||n(void 0),s==null||s([]),L==null||L(Ae),o==null||o(de),i==null||i(!1),O(!0),$(void 0),I(1),we&&(Y.current=we,E==null||E(we)),De&&k(De),he({params:de,newOffset:De}))},[x,n,s,o,i,O,$,I,E,k,he]),Oe=l.useCallback(ie=>{T(!0),I(ie),k((ie-1)*b)},[T,b,k,I]),Ie=l.useCallback(()=>{x||(n==null||n(void 0),o==null||o([]),L==null||L({}),$(void 0),k(0),I(1),E==null||E(b||Ct))},[x,n,o,$,k,I,E,b]),Pe=l.useCallback(async ie=>{const de=ie[(u==null?void 0:u.field_parent)||"child_id"],Ae=await K.getHandler().readObjects({model:r,ids:de,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d});return Q([...le(),...Ae]),qr(it(u),Ae)},[u,r,d,le,Q]);return{submit:Ee,clear:Ie,fetchResults:he,tableRefreshing:x,searchFilterLoading:S,searchError:P,page:F,offset:A,limit:b,getResults:le,requestPageChange:Oe,changeSort:ve,fetchChildrenForRecord:Pe,colorsForResults:j,statusForResults:G,totalItems:B}},We=Ke.default.createContext(null),Hi=t=>{const{children:r,currentView:n,title:s,setCurrentView:o,availableViews:i,formRef:a,searchTreeRef:c,onNewClicked:f,currentId:d,setCurrentId:h,setResults:u,results:g,currentItemIndex:v,setCurrentItemIndex:y,currentModel:m,sorter:w,setSorter:C,totalItems:D,setTotalItems:M,setSelectedRowItems:b,selectedRowItems:E,searchTreeNameSearch:V,setSearchTreeNameSearch:L,goToResourceId:x,limit:T}=t,[S,O]=l.useState(!1),[P,$]=l.useState(!1),[F,I]=l.useState(!1),[A,k]=l.useState(!0),[B,_]=l.useState(!0),[W,J]=l.useState([]),[j,X]=l.useState(!1),[G,N]=l.useState([]),[Y,re]=l.useState(!1),[Q,le]=l.useState(!0),[R,Z]=l.useState(),[he,ve]=l.useState({}),[Ee,Oe]=l.useState(T!==void 0?T:Ct),[Ie,Pe]=l.useState(s);l.useEffect(()=>{g&&g.length>0&&!v&&(y==null||y(0),h==null||h(g[0].id))},[g]),l.useEffect(()=>{Oe(T!==void 0?T:Ct)},[T]),l.useEffect(()=>{i.length===1?Z(i[0]):i.length>1&&Z(i.filter(de=>de.view_id!==n.view_id)[0])},[i]),l.useEffect(()=>{(R==null?void 0:R.view_id)===n.view_id&&i.length>1&&Z(i.filter(de=>de.view_id!==n.view_id)[0])},[n]);const ie=async()=>{var de;return await((de=a.current)==null?void 0:de.submitForm())};return e.jsx(We.Provider,{value:{title:Ie,currentView:n,setCurrentView:o,availableViews:i,formIsSaving:S,setFormIsSaving:O,formHasChanges:P,setFormHasChanges:$,formRef:a,searchTreeRef:c,onFormSave:ie,onNewClicked:f,currentId:d,setCurrentId:h,currentItemIndex:v,setCurrentItemIndex:y,results:g,setResults:u,currentModel:m,removingItem:F,setRemovingItem:I,formIsLoading:A,setFormIsLoading:k,treeIsLoading:B,setTreeIsLoading:_,attachments:W,setAttachments:J,selectedRowItems:E,setSelectedRowItems:b,duplicatingItem:j,setDuplicatingItem:X,setSearchParams:N,searchParams:G,searchVisible:Y,setSearchVisible:re,sorter:w,setSorter:C,totalItems:D,setTotalItems:M,searchTreeNameSearch:V,setSearchTreeNameSearch:L,setGraphIsLoading:le,graphIsLoading:Q,previousView:R,setPreviousView:Z,goToResourceId:x,searchValues:he,setSearchValues:ve,limit:Ee,setLimit:Oe,setTitle:Pe},children:r})},je=Ke.default.createContext(null),Ki=t=>{const{children:r,openAction:n,openRelate:s,openDefaultActionForModel:o,openShortcut:i,activeKey:a,onChangeTab:c,onRemoveTab:f,tabs:d}=t,[h,u]=l.useState(),[g,v]=l.useState();return e.jsx(je.Provider,{value:{openAction:n,openRelate:s,openDefaultActionForModel:o,activeKey:a,openShortcut:i,onChangeTab:c,onRemoveTab:f,tabs:d,currentId:g,currentView:h,setCurrentId:v,setCurrentView:u},children:r})},dt=Ke.default.createContext(null),nn=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))},Yi=(t,r)=>{const{children:n,globalValues:s={}}=t,o=l.useRef(),i=l.useRef(),[a,c]=l.useState(!1),f=l.useContext(je),{openAction:d}=f||{},h=l.useRef([]),{t:u}=l.useContext(ge);l.useImperativeHandle(r,()=>({openActionModal:b}));const[g,v]=l.useState(!1),[y,m]=l.useState({context:{}});async function w(L){const{reportData:x,fields:T,values:S,context:O={}}=L,{context:P,model:$,datas:F={},report_name:I,type:A}=x;if(A!=="ir.actions.report.xml"){Le(`${A} action not supported`);return}const{ids:k}=F||{};let B=k||[];const _=typeof P=="string"?se.parseContext({context:P,fields:T,values:S}):P;try{const W=await K.getHandler().createReport({model:$,name:I,datas:F,ids:B,context:{...O,..._}});c(!0),i.current=!0,o.current=setInterval(()=>{C(W)},1e3)}catch(W){i.current=!1,clearInterval(o.current),Le(W),c(!1)}}async function C(L){let x;try{if(x=await K.getHandler().getReport({id:L}),x.state&&i.current===!0){i.current=!1,clearInterval(o.current),c(!1);const T=await st(x.result);_t(x.result,T.mime)}}catch(T){i.current=!1,clearInterval(o.current),c(!1),Le(T.exception||T)}}async function D({actionData:L,fields:x,values:T,context:S,onRefreshParentValues:O}){const{type:P}=L;if(h.current.push(O),P==="ir.actions.report.xml")return await w({reportData:L,fields:x,values:T,context:S});if(P==="ir.actions.act_window")return await M({actionData:L,fields:x,values:T,context:S});if(P==="ir.actions.act_url")window.open(yi(L.url,{...T,context:S}),"_blank");else return Le(`${P} action not supported`),{}}async function M({actionData:L,fields:x={},values:T={},context:S={}}){var I;let O=L;L.res_model||(O=(await K.getHandler().readObjects({model:"ir.actions.act_window",ids:[parseInt(L.id)],context:S}))[0]);const P=typeof(O==null?void 0:O.context)=="string"?se.parseContext({context:O.context,fields:x,values:{...T,...s}}):O.context,$={...S,...P};let F=[];if(O.domain&&(F=await K.getHandler().evalDomain({domain:O.domain,values:ct({fields:x,values:{...T,...s}}),fields:x,context:$})),O.target==="new"){const A=await K.getHandler().getView({model:O.res_model,type:"form",id:((I=O==null?void 0:O.view_id)==null?void 0:I[0])||void 0,context:$});return b({domain:F,model:O.res_model,formView:A,context:$}),{}}else{const{initialView:A,views:k}=await Wi({model:O.res_model,context:$,view_mode:O.view_mode,views:O.views});return d==null||d({target:"current",context:$,domain:F,model:O.res_model,views:k,title:O.name,initialView:A,action_id:O.id,action_type:O.type}),{closeParent:!0}}}function b({domain:L,model:x,formView:T,context:S,actionData:O}){g?E({domain:L,model:x,formView:T,context:S,actionData:O}):(m({domain:L,model:x,context:S,formView:T,actionData:O}),v(!0))}async function E({domain:L,model:x,formView:T,context:S,actionData:O}){m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0}),v(!1),await new Promise(P=>setTimeout(P,300)),m({domain:L,model:x,context:S,formView:T,actionData:O}),v(!0)}async function V(){nn(h.current),h.current=[],v(!1),m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0})}return e.jsx(e.Fragment,{children:e.jsx(dt.Provider,{value:{processAction:D,globalValues:s},children:e.jsxs(e.Fragment,{children:[n,e.jsx(p.Modal,{title:u("generatingReport"),open:a,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(p.Spin,{})}),e.jsx(ft,{buttonModal:!0,parentContext:y.context,model:y.model,formView:y.formView,visible:g,onSubmitSucceed:V,onCancel:()=>{nn(h.current),h.current=[],v(!1),m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0})},showFooter:!1,actionDomain:y.domain,isMenuAction:(y==null?void 0:y.actionData)!==void 0,actionData:y==null?void 0:y.actionData})]})})})};async function Wi({views:t,view_mode:r,model:n,context:s,view_id:o}){const i=[];let a;if(t)for(const c of t){const f=await K.getHandler().getView({model:n,type:c[1],id:c[0],context:s});i.push([f.view_id,c[1]])}else{const c=r.split(",");for(const f of c){const d=await K.getHandler().getView({model:n,type:f,context:s});i.push([d.view_id,f])}}if(t&&t.length>0){const[c,f]=t[0];a={id:c,type:f}}else if(o)a={id:o,type:r.split(",")[0]};else{const c=r.split(",")[0],[f]=i.find(([d,h])=>h===c);a={id:f,type:c}}return{views:i,initialView:a}}const on=l.forwardRef(Yi),qi=({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}=_r(t);n=e.jsx(Ht.Interweave,{content:`${a}<br />${o}`}),s=i}else n=t.message?JSON.stringify(t.message):JSON.stringify(t);return e.jsx(p.Alert,{className:r,message:n,type:s,banner:!0})},Ui=800;function Gi(t,r){const{model:n,id:s,onCancel:o,onSubmitSucceed:i,showFooter:a=!1,getDataFromAction:c=!1,onFieldsChange:f,onSubmitError:d,readOnly:h=!1,mustClearAfterSave:u=!1,submitMode:g="api",values:v,formView:y,postSaveAction:m,insideButtonModal:w=!1,parentContext:C={},actionDomain:D,visible:M=!0,rootForm:b=!1,defaultValues:E,forcedValues:V={},parentWidth:L}=t,{t:x,lang:T}=l.useContext(ge),[S,O]=l.useState(!1),[P,$]=l.useState(),[F,I]=l.useState(),[A]=p.Form.useForm(),[k,B]=l.useState(),[_,W]=l.useState(),J=l.useContext(en),[j,X]=l.useState(),[G,N]=l.useState(!1),Y=l.useRef(),re=l.useRef({}),Q=l.useRef({}),le=l.useRef(!1),R=l.useRef(!1),Z=l.useRef(!1),ve=(L!==void 0?L:j)<Ui,Ee=l.useContext(Me),{activeId:Oe,getPlainValues:Ie}=Ee||{},Pe=l.useContext(We),{setFormIsSaving:ie=void 0,setFormHasChanges:de=void 0,setCurrentId:Ae=void 0,setFormIsLoading:we=void 0,setAttachments:De=void 0,title:Ye=void 0,setTitle:te=void 0}=(b?Pe:{})||{},Fe=l.useContext(dt),{processAction:_e,globalValues:ke}=Fe||{};l.useImperativeHandle(r,()=>({submitForm:Bt,getFields:je,getValues:$e,getPlainValues:ee,getContext:Ce,fetchValues:nt,cancelUnsavedChanges:io,clearAndReload:()=>{Y.current=void 0,I(void 0),so()}})),l.useEffect(()=>{if($(void 0),!(!n&&!y)){if(!M){Y.current=void 0,I(void 0);return}(s===void 0&&_||s!==void 0&&_&&s<0)&&(Y.current=void 0,I(void 0)),so()}},[s,n,v,y,M]),l.useEffect(()=>{G&&(ur({elementHasLostFocus:!0}),N(!1))},[G]);const ce=(q,z,ne,oe)=>{de==null||de(!1),ie==null||ie(!1),i==null||i(q,z,ne,oe),Ae==null||Ae(q)},fe=()=>{ie==null||ie(!1),o==null||o()},Ne=q=>{ie==null||ie(!1),d==null||d(q)};function ue(){return s||Y.current}function je(){return _}function $e(){const q={...Ve(_),...Se()};for(const z in q)q[z]===void 0&&delete q[z];return q}function ee(){const q=$e(),z=je();let ne={};return Object.keys(q).forEach(oe=>{const pe=q[oe];z[oe]&&z[oe].type==="many2one"&&pe&&Array.isArray(pe)&&pe.length===2?ne[oe]=pe[0]:z[oe]&&(z[oe].type==="one2many"||z[oe].type==="many2many")&&pe&&pe.items?ne[oe]=pe.items.filter(Je=>Je.operation!=="pendingRemove").map(Je=>Je.id):ne[oe]=pe}),ne}function ae(){const q={...Ve(_)};for(const z in q)q[z]===void 0&&delete q[z];return q}function Ce(){return{...C,...F==null?void 0:F.context}}function ye(){return ue()?{active_id:ue(),active_ids:[ue()]}:{}}function Se(){return{id:ue(),active_id:ue(),active_ids:[ue()],parent_id:Oe,...ke}}const xe=async q=>{const z=ue()?F==null?void 0:F.context:{};return await K.getHandler().defaultGet({model:n,fields:q,context:{...C,...z},extraValues:E})},Te=()=>Object.keys(Jt({source:re.current,target:Ve(_),fields:_})).length!==0,Ve=q=>{const z=A.getFieldsValue(!0);return lt(z,q)},ze=(q,z)=>{Tt({values:{...lt(A.getFieldsValue(!0),_),[q]:z},fields:_,reset:!1})},rt=q=>A.getFieldsValue(!0)[q];async function oo(){try{return await A.validateFields(),!1}catch{return p.message.error(x("fillRequiredFields")),!0}}const so=async()=>{$(void 0),we==null||we(!0);let q;try{y?q={arch:y.arch,fields:y.fields}:q=await vc();const{fields:z,arch:ne}=q;W(z),B(ne),await nt({fields:z,arch:ne})}catch(z){$(z!=null&&z.message?z.message+z.stack:z),we==null||we(!1)}},nt=async q=>{let z,ne,oe,pe;we==null||we(!0),$(void 0),q!=null&&q.fields?(ne=q.fields,oe=q.arch):(ne=_,oe=k),v&&(q==null?void 0:q.forceRefresh)!==!0?z=v:{values:z,defaultGetCalled:pe}=await Cc({fields:ne,arch:oe}),D&&(z={...gi(D),...z}),re.current=lt(z,ne),Tt({values:z,fields:ne,reset:!0,isDefaultGet:pe}),Ft({fields:ne,arch:oe,values:z}),we==null||we(!1),de==null||de(!1),pe&&N(!0)},io=async()=>new Promise(async q=>{Te()?vt({lang:T,onOk:()=>{fe==null||fe(),q(!0)},onCancel:()=>{q(!1)}}):(fe==null||fe(),q(!0))}),vc=async()=>{if(c){const q=await K.getHandler().getActionStringForModel(n);return(await K.getHandler().getViewsForAction({action:q,context:C})).views.get("form")}return await K.getHandler().getView({model:n,type:"form",context:C})},Tt=({values:q,fields:z,reset:ne,isDefaultGet:oe=!1})=>{const Je={...ne?{}:A.getFieldsValue(!0),...q},hr=lt(Je,z),Ec=Object.keys(z).map(pr=>{const Ic=hr[pr]!==void 0?hr[pr]:void 0;return{name:pr,touched:!1,value:Ic}});oe||(Q.current=hr),A.setFields(Ec)},Cc=async({fields:q,arch:z})=>{let ne={},oe=!1;if(ue()){ne=(await K.getHandler().readObjects({model:n,ids:[ue()],fields:q,context:C}))[0];const pe=await K.getHandler().search({params:[["res_model","=",n],["res_id","=",ue()]],fields:["id","name"],context:Ce(),model:"ir.attachment"});De==null||De(pe)}else De==null||De([]),ne=await xe(q),oe=!0;return{values:ne,defaultGetCalled:oe}},ao=async q=>{const{callOnSubmitSucceed:z=!0}=q||{};if(ue()){const ne=Jt({source:re.current,target:Ve(_),fields:_});await K.getHandler().update({model:n,id:ue(),values:{...ne,...V},fields:_,context:{...C,...F==null?void 0:F.context}}),re.current=Ve(_)}else{const ne=Ve(_),oe=await K.getHandler().create({model:n,values:{...ne,...V},fields:_,context:{...C,...F==null?void 0:F.context}});Y.current=oe,re.current=ne}m&&await m([ue()]),!w&&z&&(ce==null||ce(ue(),$e(),ae()))},Sc=async q=>{const{callOnSubmitSucceed:z=!0}=q||{};!w&&z&&(ce==null||ce(ue(),$e(),ae()))},Bt=async q=>{let z=!1;const{callOnSubmitSucceed:ne=!0}=q||{};if(R.current=!0,$(void 0),Z.current&&!Te()&&ue()&&ne){R.current=!1,de==null||de(!1),ce==null||ce(ue(),$e(),ae(),Z.current),Z.current=!1;const oe=ue();return u&&(Y.current=void 0,Tt({values:{},fields:_,reset:!0})),{succeed:!0,id:oe}}if(!Te()&&ue()&&ne)return R.current=!1,de==null||de(!1),fe==null||fe(),{succeed:!0,id:ue()};if(await oo())return R.current=!1,Rr(T),{succeed:!1,id:ue()};O(!0),ie==null||ie(!0);try{g==="api"?await ao(q):await Sc(q),u&&(Y.current=void 0,Tt({values:{},fields:_,reset:!0})),await nt({forceRefresh:!0}),z=!0,p.message.success(x("savedRegisters"))}catch(oe){R.current=!1,O(!1),ie==null||ie(!1),Ne==null||Ne(oe),p.message.error(x("errorWhileSavingForm")),$(oe!=null&&oe.message?oe.message:oe)}finally{R.current=!1,ie==null||ie(!1),O(!1)}return{succeed:z,id:ue()}},Ft=({fields:q,arch:z,values:ne,operationInProgress:oe=!1})=>{var Je;const pe=new se.Form(q);pe.parse(z,{readOnly:h||oe,values:ii({...ne,...Se()},q)}),I(pe),pe.string&&pe.string!==Ye&&(te==null||te(pe.string)),J&&pe.string&&((Je=J.setTitle)==null||Je.call(J,pe.string))},ur=async({elementHasLostFocus:q=!1})=>{if(R.current)return;const z=Jt({source:Q.current,target:Ve(_),fields:_}),ne=Object.keys(z);if(ne.length!==0){if(hi({changedFields:ne,formOoui:F,types:["text","codeeditor","email","url","char","float","float_time","integer","many2one"]})&&q!==!0)return;{const oe=lt(A.getFieldsValue(!0),_);Q.current=oe,f==null||f(oe),de==null||de(!0),xc(ne)}}},bc=Qs(ur,100),xc=async q=>{try{for(let z=0;z<q.length;z+=1){const ne=q[z];await Tc(ne)}}catch(z){Le(z)}},Tc=async q=>{const z=F==null?void 0:F.onChangeFields[q];if(!z){Ft({fields:_,arch:k,values:Ve(_)});return}const ne=mi({values:{...Ve(_),context:{...C,...F==null?void 0:F.context}},parentValues:Ie==null?void 0:Ie(),onChangeFieldActionArgs:z.args}),oe=await K.getHandler().executeOnChange({model:n,action:z.method,ids:ue()?[ue()]:[],payload:ne,fields:_});if(oe.value){const pe={...Ve(_),...oe.value};Ft({fields:_,arch:k,values:pe}),Tt({values:pe,fields:_,reset:!1})}if(oe.warning&&oe.warning.title&&oe.warning.message&&!le.current){const{title:pe,message:Je}=oe.warning;le.current=!0,Vi(pe,Je,()=>{le.current=!1})}if(oe.domain&&Object.keys(oe.domain).length>0){const pe=pi({fieldsDomain:oe.domain,fields:_});Ft({fields:pe,arch:k,values:Ve(pe)}),W(pe)}};async function Fc({action:q,context:z}){const ne=await K.getHandler().execute({model:n,action:q,payload:[ue()],context:{...F==null?void 0:F.context,...C,...z}});if(typeof ne=="object"&&ne!==null&&Object.keys(ne).length===0&&w)ce==null||ce(ue(),$e(),ae());else if(ne.type&&ne.type==="ir.actions.act_window_close")ce==null||ce(ue(),$e(),ae());else if(ne.type){let oe={};ne.context&&(oe=se.parseContext({context:ne.context,fields:_,values:$e()})),await lo({actionData:ne,context:{...z,...oe}})}else await nt({forceRefresh:!0})}async function Oc({action:q}){const z=await K.getHandler().executeWorkflow({model:n,action:q,payload:ue()});z.type&&z.type==="ir.actions.act_window_close"?ce==null||ce(ue(),$e(),ae()):await nt({forceRefresh:!0})}async function _c({action:q,context:z}){const ne=(await K.getHandler().readObjects({model:"ir.actions.actions",ids:[parseInt(q)],context:C}))[0];await lo({actionData:ne,context:z})}async function lo({actionData:q,context:z}){const{closeParent:ne}=await(_e==null?void 0:_e({actionData:q,fields:_,values:$e(),context:{...C,...F==null?void 0:F.context,...z},onRefreshParentValues:()=>{nt({forceRefresh:!0})}}))||{};!b&&ne&&(ce==null||ce(ue(),$e(),ae()))}function Dc(){ur({elementHasLostFocus:!0})}function fr(q){Ft({fields:_,arch:k,values:Ve(_),operationInProgress:q})}async function kc({type:q,action:z,context:ne}){if(q==="cancel"){fe==null||fe();return}if(await oo()){Rr(T);return}try{(Te()||ue()===void 0)&&(g==="2many"?(await ao({callOnSubmitSucceed:!1}),Z.current=!0):await Bt({callOnSubmitSucceed:!1}));const oe=Z.current?ye():{},pe={...ne,...oe};fr(!0),q==="object"?await Fc({action:z,context:pe}):q==="workflow"?await Oc({action:z}):q==="action"&&await _c({action:z,context:pe}),fr(!1)}catch(oe){fr(!1),Le(oe)}}const Vc=()=>!F&&!P?e.jsx(p.Spin,{}):!n&&!y||!M?null:e.jsx(e.Fragment,{children:e.jsx(Lo,{getValues:$e,getPlainValues:ee,getFields:je,domain:D,activeId:s,activeModel:n,setFieldValue:ze,getFieldValue:rt,executeButtonAction:kc,getContext:Ce,submitForm:Bt,fetchValues:nt,formHasChanges:Te,elementHasLostFocus:Dc,children:e.jsx(p.Form,{form:A,onFieldsChange:()=>{bc({elementHasLostFocus:!1})},component:!1,children:F&&e.jsx(Zt,{container:F.container,responsiveBehaviour:ve})})})}),Mc=()=>e.jsxs(e.Fragment,{children:[e.jsx(p.Divider,{}),e.jsx(p.Row,{justify:"end",children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.CloseOutlined,{}),disabled:S,onClick:async()=>{await io()},children:"Cancel"}),e.jsx(p.Button,{disabled:S||h,loading:S,icon:e.jsx(H.CheckOutlined,{}),onClick:async()=>{await Bt()},type:"primary",children:"OK"})]})})]});return M?e.jsx(Yt.default,{bounds:!0,onResize:q=>{var z;X((z=q.bounds)==null?void 0:z.width)},children:({measureRef:q})=>e.jsxs("div",{className:"pb-2",ref:q,children:[P&&e.jsx(qi,{className:"mt-5 mb-10",error:P}),Vc(),a&&Mc()]})}):null}const ut=l.forwardRef(Gi),ft=t=>{const{visible:r,id:n,title:s,buttonModal:o=!1,onCancel:i,isMenuAction:a=!1,actionData:c,...f}=t,{modalWidth:d}=Ot(),[h,u]=l.useState(s),[g,v]=l.useState(!1),[y,m]=l.useState();l.useEffect(()=>{a&&w()},[c,a]);async function w(){const{action_id:b,res_id:E,action_type:V,view_id:L}=c,x=await K.getHandler().isShortcutFavorite({action_id:b,action_type:V,view_id:L,res_id:E||!1});v(x!==!1),x!==!1&&m(x)}async function C(){if(g&&y)await K.getHandler().removeFavourite({shortcut_id:y});else{const{action_id:b,res_id:E,action_type:V,view_id:L}=c;await K.getHandler().addFavourite({action_id:b,action_type:V,view_id:L,res_id:E||!1})}v(!g)}function D(){return e.jsxs(p.Row,{align:"middle",children:[e.jsx(p.Col,{children:e.jsx(p.Button,{type:g?"primary":"default",icon:g?e.jsx(H.StarFilled,{style:{color:"white"}}):e.jsx(H.StarOutlined,{}),style:{width:30},onClick:C})}),e.jsx(p.Col,{style:{paddingLeft:10},children:h})]})}const M=d*.95;return e.jsx(Mi,{setTitle:u,children:e.jsx(p.Modal,{title:a?D():h,centered:!0,width:d,open:r,footer:null,destroyOnClose:!0,onCancel:i,maskClosable:!1,children:e.jsx(ut,{id:n,showFooter:!0,insideButtonModal:o,onCancel:i,parentWidth:M,...f})})})},ji=t=>e.jsx(me,{...t,layout:"vertical",children:e.jsx(p.DatePicker.RangePicker,{allowEmpty:[!0,!0],format:"DD/MM/YYYY"})}),zi=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(yt,{ooui:new se.Label({name:o+"_label",string:s,help:r.tooltip,fieldForLabel:o}),align:"left"}),e.jsxs(p.Row,{align:"bottom",className:"p-0",children:[e.jsx(p.Col,{className:"mr-2",children:e.jsx(me,{...t,ooui:i[0],showLabel:!1,children:e.jsx(p.DatePicker.RangePicker,{className:"w-60",allowEmpty:[!0,!0],format:"DD/MM/YYYY"})})}),e.jsx(p.Col,{children:e.jsx(me,{...t,ooui:i[1],showLabel:!1,children:e.jsx(p.TimePicker.RangePicker,{className:"w-60",allowEmpty:[!0,!0],format:"HH:mm"})})})]})]})},{useToken:Ji}=p.theme,Xt=t=>{const{ooui:r}=t,{id:n,decimalDigits:s,readOnly:o,required:i}=r,{token:a}=Ji(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,f=l.useContext(Me),{elementHasLostFocus:d}=f||{};return e.jsx(me,{required:i,type:"number",...t,children:e.jsx(p.InputNumber,{disabled:o,className:"w-full",style:c,id:n,precision:s,formatter:h=>`${h}`.replace(/[^0-9\.\-]+/g,""),defaultValue:0,decimalSeparator:".",onBlur:d})})},{useToken:Zi}=p.theme,St=t=>{const{ooui:r,onChange:n}=t,{id:s,readOnly:o,required:i}=r,{token:a}=Zi(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,f=l.useContext(Me),{elementHasLostFocus:d}=f||{};return e.jsx(me,{required:i,type:"number",...t,children:e.jsx(p.InputNumber,{id:s,className:"w-full ",disabled:o,formatter:h=>h===void 0?"":typeof h=="string"&&!isNaN(parseFloat(h))?`${Math.trunc(parseFloat(h))}`.replace(/[^0-9\-]+/g,""):typeof h=="number"?`${Math.trunc(h)}`.replace(/[^0-9\-]+/g,""):"",onChange:h=>{const u=h;n==null||n(u)},defaultValue:0,onBlur:d,precision:0,style:c})})};function Xi(t){const{ooui:r,showLabel:n}=t,{id:s,label:o,tooltip:i}=r,a=r instanceof se.Integer?St:Xt,c=f=>e.jsx(a,{ooui:{...r,id:s+f,label:"",tooltip:void 0},layout:"vertical"});return e.jsxs(e.Fragment,{children:[n&&e.jsx(yt,{ooui:new se.Label({name:s+"_label",string:o,help:i,fieldForLabel:s}),align:"left"}),e.jsxs(p.Row,{align:"bottom",className:"mt-0",wrap:!1,children:[e.jsx(p.Col,{children:c("#from")}),e.jsx(p.Col,{className:"pb-1",children:e.jsx("span",{className:"pl-2 pr-2 h-full",children:" - "})}),e.jsx(p.Col,{children:c("#to")})]})]})}const{defaultAlgorithm:Qi,defaultSeed:Ri}=p.theme,ea=Qi(Ri),{Option:ta}=p.Select,ra=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(na,{...t})})},na=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,required:a}=r,c=Array.from(o.entries()),f=c&&c.length&&c.filter(u=>{const[g]=u;return s?!s.includes(g):!0}).map(u=>{const[g,v]=u;return e.jsx(ta,{value:v,children:v},g)}),d=a&&!i?oa:p.Select;function h(u){const g=u.map(v=>{const y=c.find(([m,w])=>v===w);return y&&y[0]});if(g.length===0){n==null||n(void 0);return}n==null||n(g)}return e.jsx(d,{disabled:i,onChange:h,value:s==null?void 0:s.map(u=>o.get(u)),mode:"multiple",showArrow:!0,children:f})},oa=mt.default(p.Select)`
19
+ `)!==-1){const{message:o,type:i,title:a}=_r(t);n=e.jsx(Ht.Interweave,{content:`${a}<br />${o}`}),s=i}else n=t.message?JSON.stringify(t.message):JSON.stringify(t);return e.jsx(p.Alert,{className:r,message:n,type:s,banner:!0})},Ui=800;function Gi(t,r){const{model:n,id:s,onCancel:o,onSubmitSucceed:i,showFooter:a=!1,getDataFromAction:c=!1,onFieldsChange:f,onSubmitError:d,readOnly:h=!1,mustClearAfterSave:u=!1,submitMode:g="api",values:v,formView:y,postSaveAction:m,insideButtonModal:w=!1,parentContext:C={},actionDomain:D,visible:M=!0,rootForm:b=!1,defaultValues:E,forcedValues:V={},parentWidth:L}=t,{t:x,lang:T}=l.useContext(ge),[S,O]=l.useState(!1),[P,$]=l.useState(),[F,I]=l.useState(),[A]=p.Form.useForm(),[k,B]=l.useState(),[_,W]=l.useState(),J=l.useContext(en),[j,X]=l.useState(),[G,N]=l.useState(!1),Y=l.useRef(),re=l.useRef({}),Q=l.useRef({}),le=l.useRef(!1),R=l.useRef(!1),Z=l.useRef(!1),ve=(L!==void 0?L:j)<Ui,Ee=l.useContext(Me),{activeId:Oe,getPlainValues:Ie}=Ee||{},Pe=l.useContext(We),{setFormIsSaving:ie=void 0,setFormHasChanges:de=void 0,setCurrentId:Ae=void 0,setFormIsLoading:we=void 0,setAttachments:De=void 0,title:Ye=void 0,setTitle:te=void 0}=(b?Pe:{})||{},Fe=l.useContext(dt),{processAction:_e,globalValues:ke}=Fe||{};l.useImperativeHandle(r,()=>({submitForm:Bt,getFields:ze,getValues:$e,getPlainValues:ee,getContext:Ce,fetchValues:nt,cancelUnsavedChanges:io,clearAndReload:()=>{Y.current=void 0,I(void 0),so()}})),l.useEffect(()=>{if($(void 0),!(!n&&!y)){if(!M){Y.current=void 0,I(void 0);return}(s===void 0&&_||s!==void 0&&_&&s<0)&&(Y.current=void 0,I(void 0)),so()}},[s,n,v,y,M]),l.useEffect(()=>{G&&(ur({elementHasLostFocus:!0}),N(!1))},[G]);const ce=(q,z,ne,oe)=>{de==null||de(!1),ie==null||ie(!1),i==null||i(q,z,ne,oe),Ae==null||Ae(q)},fe=()=>{ie==null||ie(!1),o==null||o()},Ne=q=>{ie==null||ie(!1),d==null||d(q)};function ue(){return s||Y.current}function ze(){return _}function $e(){const q={...Ve(_),...Se()};for(const z in q)q[z]===void 0&&delete q[z];return q}function ee(){const q=$e(),z=ze();let ne={};return Object.keys(q).forEach(oe=>{const pe=q[oe];z[oe]&&z[oe].type==="many2one"&&pe&&Array.isArray(pe)&&pe.length===2?ne[oe]=pe[0]:z[oe]&&(z[oe].type==="one2many"||z[oe].type==="many2many")&&pe&&pe.items?ne[oe]=pe.items.filter(qe=>qe.operation!=="pendingRemove").map(qe=>qe.id):ne[oe]=pe}),ne}function ae(){const q={...Ve(_)};for(const z in q)q[z]===void 0&&delete q[z];return q}function Ce(){return{...C,...F==null?void 0:F.context}}function ye(){return ue()?{active_id:ue(),active_ids:[ue()]}:{}}function Se(){return{id:ue(),active_id:ue(),active_ids:[ue()],parent_id:Oe,...ke}}const xe=async q=>{const z=ue()?F==null?void 0:F.context:{};return await K.getHandler().defaultGet({model:n,fields:q,context:{...C,...z},extraValues:E})},Te=()=>Object.keys(Jt({source:re.current,target:Ve(_),fields:_})).length!==0,Ve=q=>{const z=A.getFieldsValue(!0);return lt(z,q)},Je=(q,z)=>{Tt({values:{...lt(A.getFieldsValue(!0),_),[q]:z},fields:_,reset:!1})},rt=q=>A.getFieldsValue(!0)[q];async function oo(){try{return await A.validateFields(),!1}catch{return p.message.error(x("fillRequiredFields")),!0}}const so=async()=>{$(void 0),we==null||we(!0);let q;try{y?q={arch:y.arch,fields:y.fields}:q=await vc();const{fields:z,arch:ne}=q;W(z),B(ne),await nt({fields:z,arch:ne})}catch(z){$(z!=null&&z.message?z.message+z.stack:z),we==null||we(!1)}},nt=async q=>{let z,ne,oe,pe;we==null||we(!0),$(void 0),q!=null&&q.fields?(ne=q.fields,oe=q.arch):(ne=_,oe=k),v&&(q==null?void 0:q.forceRefresh)!==!0?z=v:{values:z,defaultGetCalled:pe}=await Cc({fields:ne,arch:oe}),D&&(z={...gi(D),...z}),re.current=lt(z,ne),Tt({values:z,fields:ne,reset:!0,isDefaultGet:pe}),Ft({fields:ne,arch:oe,values:z}),we==null||we(!1),de==null||de(!1),pe&&N(!0)},io=async()=>new Promise(async q=>{Te()?vt({lang:T,onOk:()=>{fe==null||fe(),q(!0)},onCancel:()=>{q(!1)}}):(fe==null||fe(),q(!0))}),vc=async()=>{if(c){const q=await K.getHandler().getActionStringForModel(n);return(await K.getHandler().getViewsForAction({action:q,context:C})).views.get("form")}return await K.getHandler().getView({model:n,type:"form",context:C})},Tt=({values:q,fields:z,reset:ne,isDefaultGet:oe=!1})=>{const qe={...ne?{}:A.getFieldsValue(!0),...q},hr=lt(qe,z),Ec=Object.keys(z).map(pr=>{const Ic=hr[pr]!==void 0?hr[pr]:void 0;return{name:pr,touched:!1,value:Ic}});oe||(Q.current=hr),A.setFields(Ec)},Cc=async({fields:q,arch:z})=>{let ne={},oe=!1;if(ue()){ne=(await K.getHandler().readObjects({model:n,ids:[ue()],fields:q,context:C}))[0];const pe=await K.getHandler().search({params:[["res_model","=",n],["res_id","=",ue()]],fields:["id","name"],context:Ce(),model:"ir.attachment"});De==null||De(pe)}else De==null||De([]),ne=await xe(q),oe=!0;return{values:ne,defaultGetCalled:oe}},ao=async q=>{const{callOnSubmitSucceed:z=!0}=q||{};if(ue()){const ne=Jt({source:re.current,target:Ve(_),fields:_});await K.getHandler().update({model:n,id:ue(),values:{...ne,...V},fields:_,context:{...C,...F==null?void 0:F.context}}),re.current=Ve(_)}else{const ne=Ve(_),oe=await K.getHandler().create({model:n,values:{...ne,...V},fields:_,context:{...C,...F==null?void 0:F.context}});Y.current=oe,re.current=ne}m&&await m([ue()]),!w&&z&&(ce==null||ce(ue(),$e(),ae()))},Sc=async q=>{const{callOnSubmitSucceed:z=!0}=q||{};!w&&z&&(ce==null||ce(ue(),$e(),ae()))},Bt=async q=>{let z=!1;const{callOnSubmitSucceed:ne=!0}=q||{};if(R.current=!0,$(void 0),Z.current&&!Te()&&ue()&&ne){R.current=!1,de==null||de(!1),ce==null||ce(ue(),$e(),ae(),Z.current),Z.current=!1;const oe=ue();return u&&(Y.current=void 0,Tt({values:{},fields:_,reset:!0})),{succeed:!0,id:oe}}if(!Te()&&ue()&&ne)return R.current=!1,de==null||de(!1),fe==null||fe(),{succeed:!0,id:ue()};if(await oo())return R.current=!1,Rr(T),{succeed:!1,id:ue()};O(!0),ie==null||ie(!0);try{g==="api"?await ao(q):await Sc(q),u&&(Y.current=void 0,Tt({values:{},fields:_,reset:!0})),await nt({forceRefresh:!0}),z=!0,p.message.success(x("savedRegisters"))}catch(oe){R.current=!1,O(!1),ie==null||ie(!1),Ne==null||Ne(oe),p.message.error(x("errorWhileSavingForm")),$(oe!=null&&oe.message?oe.message:oe)}finally{R.current=!1,ie==null||ie(!1),O(!1)}return{succeed:z,id:ue()}},Ft=({fields:q,arch:z,values:ne,operationInProgress:oe=!1})=>{var qe;const pe=new se.Form(q);pe.parse(z,{readOnly:h||oe,values:ii({...ne,...Se()},q)}),I(pe),pe.string&&pe.string!==Ye&&(te==null||te(pe.string)),J&&pe.string&&((qe=J.setTitle)==null||qe.call(J,pe.string))},ur=async({elementHasLostFocus:q=!1})=>{if(R.current)return;const z=Jt({source:Q.current,target:Ve(_),fields:_}),ne=Object.keys(z);if(ne.length!==0){if(hi({changedFields:ne,formOoui:F,types:["text","codeeditor","email","url","char","float","float_time","integer","many2one"]})&&q!==!0)return;{const oe=lt(A.getFieldsValue(!0),_);Q.current=oe,f==null||f(oe),de==null||de(!0),xc(ne)}}},bc=Qs(ur,100),xc=async q=>{try{for(let z=0;z<q.length;z+=1){const ne=q[z];await Tc(ne)}}catch(z){Le(z)}},Tc=async q=>{const z=F==null?void 0:F.onChangeFields[q];if(!z){Ft({fields:_,arch:k,values:Ve(_)});return}const ne=mi({values:{...Ve(_),context:{...C,...F==null?void 0:F.context}},parentValues:Ie==null?void 0:Ie(),onChangeFieldActionArgs:z.args}),oe=await K.getHandler().executeOnChange({model:n,action:z.method,ids:ue()?[ue()]:[],payload:ne,fields:_});if(oe.value){const pe={...Ve(_),...oe.value};Ft({fields:_,arch:k,values:pe}),Tt({values:pe,fields:_,reset:!1})}if(oe.warning&&oe.warning.title&&oe.warning.message&&!le.current){const{title:pe,message:qe}=oe.warning;le.current=!0,Vi(pe,qe,()=>{le.current=!1})}if(oe.domain&&Object.keys(oe.domain).length>0){const pe=pi({fieldsDomain:oe.domain,fields:_});Ft({fields:pe,arch:k,values:Ve(pe)}),W(pe)}};async function Fc({action:q,context:z}){const ne=await K.getHandler().execute({model:n,action:q,payload:[ue()],context:{...F==null?void 0:F.context,...C,...z}});if(typeof ne=="object"&&ne!==null&&Object.keys(ne).length===0&&w)ce==null||ce(ue(),$e(),ae());else if(ne.type&&ne.type==="ir.actions.act_window_close")ce==null||ce(ue(),$e(),ae());else if(ne.type){let oe={};ne.context&&(oe=se.parseContext({context:ne.context,fields:_,values:$e()})),await lo({actionData:ne,context:{...z,...oe}})}else await nt({forceRefresh:!0})}async function Oc({action:q}){const z=await K.getHandler().executeWorkflow({model:n,action:q,payload:ue()});z.type&&z.type==="ir.actions.act_window_close"?ce==null||ce(ue(),$e(),ae()):await nt({forceRefresh:!0})}async function _c({action:q,context:z}){const ne=(await K.getHandler().readObjects({model:"ir.actions.actions",ids:[parseInt(q)],context:C}))[0];await lo({actionData:ne,context:z})}async function lo({actionData:q,context:z}){const{closeParent:ne}=await(_e==null?void 0:_e({actionData:q,fields:_,values:$e(),context:{...C,...F==null?void 0:F.context,...z},onRefreshParentValues:()=>{nt({forceRefresh:!0})}}))||{};!b&&ne&&(ce==null||ce(ue(),$e(),ae()))}function Dc(){ur({elementHasLostFocus:!0})}function fr(q){Ft({fields:_,arch:k,values:Ve(_),operationInProgress:q})}async function kc({type:q,action:z,context:ne}){if(q==="cancel"){fe==null||fe();return}if(await oo()){Rr(T);return}let oe=!1;try{(Te()||ue()===void 0)&&(oe=!0,fr(!0),g==="2many"?(await ao({callOnSubmitSucceed:!1}),Z.current=!0):await Bt({callOnSubmitSucceed:!1}));const pe=Z.current?ye():{},qe={...ne,...pe};q==="object"?await Fc({action:z,context:qe}):q==="workflow"?await Oc({action:z}):q==="action"&&await _c({action:z,context:qe}),oe&&fr(!1)}catch(pe){oe&&fr(!1),Le(pe)}}const Vc=()=>!F&&!P?e.jsx(p.Spin,{}):!n&&!y||!M?null:e.jsx(e.Fragment,{children:e.jsx(Lo,{getValues:$e,getPlainValues:ee,getFields:ze,domain:D,activeId:s,activeModel:n,setFieldValue:Je,getFieldValue:rt,executeButtonAction:kc,getContext:Ce,submitForm:Bt,fetchValues:nt,formHasChanges:Te,elementHasLostFocus:Dc,children:e.jsx(p.Form,{form:A,onFieldsChange:()=>{bc({elementHasLostFocus:!1})},component:!1,children:F&&e.jsx(Zt,{container:F.container,responsiveBehaviour:ve})})})}),Mc=()=>e.jsxs(e.Fragment,{children:[e.jsx(p.Divider,{}),e.jsx(p.Row,{justify:"end",children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.CloseOutlined,{}),disabled:S,onClick:async()=>{await io()},children:"Cancel"}),e.jsx(p.Button,{disabled:S||h,loading:S,icon:e.jsx(H.CheckOutlined,{}),onClick:async()=>{await Bt()},type:"primary",children:"OK"})]})})]});return M?e.jsx(Yt.default,{bounds:!0,onResize:q=>{var z;X((z=q.bounds)==null?void 0:z.width)},children:({measureRef:q})=>e.jsxs("div",{className:"pb-2",ref:q,children:[P&&e.jsx(qi,{className:"mt-5 mb-10",error:P}),Vc(),a&&Mc()]})}):null}const ut=l.forwardRef(Gi),ft=t=>{const{visible:r,id:n,title:s,buttonModal:o=!1,onCancel:i,isMenuAction:a=!1,actionData:c,...f}=t,{modalWidth:d}=Ot(),[h,u]=l.useState(s),[g,v]=l.useState(!1),[y,m]=l.useState();l.useEffect(()=>{a&&w()},[c,a]);async function w(){const{action_id:b,res_id:E,action_type:V,view_id:L}=c,x=await K.getHandler().isShortcutFavorite({action_id:b,action_type:V,view_id:L,res_id:E||!1});v(x!==!1),x!==!1&&m(x)}async function C(){if(g&&y)await K.getHandler().removeFavourite({shortcut_id:y});else{const{action_id:b,res_id:E,action_type:V,view_id:L}=c;await K.getHandler().addFavourite({action_id:b,action_type:V,view_id:L,res_id:E||!1})}v(!g)}function D(){return e.jsxs(p.Row,{align:"middle",children:[e.jsx(p.Col,{children:e.jsx(p.Button,{type:g?"primary":"default",icon:g?e.jsx(H.StarFilled,{style:{color:"white"}}):e.jsx(H.StarOutlined,{}),style:{width:30},onClick:C})}),e.jsx(p.Col,{style:{paddingLeft:10},children:h})]})}const M=d*.95;return e.jsx(Mi,{setTitle:u,children:e.jsx(p.Modal,{title:a?D():h,centered:!0,width:d,open:r,footer:null,destroyOnClose:!0,onCancel:i,maskClosable:!1,children:e.jsx(ut,{id:n,showFooter:!0,insideButtonModal:o,onCancel:i,parentWidth:M,...f})})})},ji=t=>e.jsx(me,{...t,layout:"vertical",children:e.jsx(p.DatePicker.RangePicker,{allowEmpty:[!0,!0],format:"DD/MM/YYYY"})}),zi=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(yt,{ooui:new se.Label({name:o+"_label",string:s,help:r.tooltip,fieldForLabel:o}),align:"left"}),e.jsxs(p.Row,{align:"bottom",className:"p-0",children:[e.jsx(p.Col,{className:"mr-2",children:e.jsx(me,{...t,ooui:i[0],showLabel:!1,children:e.jsx(p.DatePicker.RangePicker,{className:"w-60",allowEmpty:[!0,!0],format:"DD/MM/YYYY"})})}),e.jsx(p.Col,{children:e.jsx(me,{...t,ooui:i[1],showLabel:!1,children:e.jsx(p.TimePicker.RangePicker,{className:"w-60",allowEmpty:[!0,!0],format:"HH:mm"})})})]})]})},{useToken:Ji}=p.theme,Xt=t=>{const{ooui:r}=t,{id:n,decimalDigits:s,readOnly:o,required:i}=r,{token:a}=Ji(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,f=l.useContext(Me),{elementHasLostFocus:d}=f||{};return e.jsx(me,{required:i,type:"number",...t,children:e.jsx(p.InputNumber,{disabled:o,className:"w-full",style:c,id:n,precision:s,formatter:h=>`${h}`.replace(/[^0-9\.\-]+/g,""),defaultValue:0,decimalSeparator:".",onBlur:d})})},{useToken:Zi}=p.theme,St=t=>{const{ooui:r,onChange:n}=t,{id:s,readOnly:o,required:i}=r,{token:a}=Zi(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,f=l.useContext(Me),{elementHasLostFocus:d}=f||{};return e.jsx(me,{required:i,type:"number",...t,children:e.jsx(p.InputNumber,{id:s,className:"w-full ",disabled:o,formatter:h=>h===void 0?"":typeof h=="string"&&!isNaN(parseFloat(h))?`${Math.trunc(parseFloat(h))}`.replace(/[^0-9\-]+/g,""):typeof h=="number"?`${Math.trunc(h)}`.replace(/[^0-9\-]+/g,""):"",onChange:h=>{const u=h;n==null||n(u)},defaultValue:0,onBlur:d,precision:0,style:c})})};function Xi(t){const{ooui:r,showLabel:n}=t,{id:s,label:o,tooltip:i}=r,a=r instanceof se.Integer?St:Xt,c=f=>e.jsx(a,{ooui:{...r,id:s+f,label:"",tooltip:void 0},layout:"vertical"});return e.jsxs(e.Fragment,{children:[n&&e.jsx(yt,{ooui:new se.Label({name:s+"_label",string:o,help:i,fieldForLabel:s}),align:"left"}),e.jsxs(p.Row,{align:"bottom",className:"mt-0",wrap:!1,children:[e.jsx(p.Col,{children:c("#from")}),e.jsx(p.Col,{className:"pb-1",children:e.jsx("span",{className:"pl-2 pr-2 h-full",children:" - "})}),e.jsx(p.Col,{children:c("#to")})]})]})}const{defaultAlgorithm:Qi,defaultSeed:Ri}=p.theme,ea=Qi(Ri),{Option:ta}=p.Select,ra=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(na,{...t})})},na=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,required:a}=r,c=Array.from(o.entries()),f=c&&c.length&&c.filter(u=>{const[g]=u;return s?!s.includes(g):!0}).map(u=>{const[g,v]=u;return e.jsx(ta,{value:v,children:v},g)}),d=a&&!i?oa:p.Select;function h(u){const g=u.map(v=>{const y=c.find(([m,w])=>v===w);return y&&y[0]});if(g.length===0){n==null||n(void 0);return}n==null||n(g)}return e.jsx(d,{disabled:i,onChange:h,value:s==null?void 0:s.map(u=>o.get(u)),mode:"multiple",showArrow:!0,children:f})},oa=mt.default(p.Select)`
20
20
  &.ant-select:not(.ant-select-customize-input) .ant-select-selector {
21
21
  background-color: ${ea.colorPrimaryBg};
22
22
  }
@@ -28,10 +28,10 @@
28
28
  .ant-progress-text {
29
29
  display: none;
30
30
  }
31
- `,dn=t=>{const{visible:r,onCancel:n,items:s=[],onItemClicked:o}=t,{t:i}=l.useContext(ge);return e.jsx(p.Modal,{title:i("selectAction"),centered:!0,open:r,footer:null,destroyOnClose:!0,onCancel:n,maskClosable:!1,children:e.jsx(p.Space,{direction:"vertical",className:"w-full",children:s.map(a=>e.jsx(p.Button,{className:"w-full",onClick:()=>{o(a)},children:a.name}))})})},Rt=t=>{var x,T;const{id:r,model:n,context:s={}}=t,[o,i]=l.useState(!1),[a,c]=l.useState(!1),[f,d]=l.useState(!1),[h,u]=l.useState(),[g,v]=l.useState(),{t:y}=l.useContext(ge),m=l.useContext(Ge),{openRelate:w}=m||{},C=l.useContext(dt),{processAction:D}=C||{};if(!r)return null;async function M(){var S,O,P,$,F;d(!0);try{const I=await K.getHandler().getView({model:n,type:"form",context:s});u(I);let A=[];const{toolbar:k}=I;(S=k.action)==null||S.filter(_=>_.hasOwnProperty("context")).map(_=>A.push(...se.parseContextFields(_.context))),(O=k.action)==null||O.filter(_=>_.hasOwnProperty("domain")).map(_=>A.push(...se.parseDomainFields(_.domain))),(P=k.relate)==null||P.filter(_=>_.hasOwnProperty("context")).map(_=>A.push(...se.parseContextFields(_.context))),($=k.relate)==null||$.filter(_=>_.hasOwnProperty("domain")).map(_=>A.push(...se.parseDomainFields(_.domain))),(F=k.print)==null||F.filter(_=>_.hasOwnProperty("context")).map(_=>A.push(...se.parseContextFields(_.context))),A=A.filter(_=>Object.keys(I.fields).indexOf(_)>-1);let B={};A.length>0&&(B=(await K.getHandler().readObjects({model:n,ids:[r],fieldsToRetrieve:A,context:s}))[0]),B={...lt(B,A),active_id:r},v(B),d(!1)}catch(I){d(!1),Le(I);return}}function b(){var O;if(f)return e.jsx(p.Menu,{children:e.jsx("div",{style:{padding:15},children:e.jsx(p.Spin,{})})});if(!h||!h.toolbar)return e.jsx(p.Menu,{});const S=(O=h==null?void 0:h.toolbar)==null?void 0:O.relate.map(P=>e.jsx(p.Menu.Item,{children:P.name},P.id));return e.jsx(p.Menu,{onClick:E,children:[e.jsx(p.Menu.Item,{disabled:!h.toolbar.action||h.toolbar.action.length===0,icon:e.jsx(H.ThunderboltOutlined,{}),children:y("action")},"action"),e.jsx(p.Menu.Item,{disabled:!h.toolbar.print||h.toolbar.print.length===0,icon:e.jsx(H.PrinterOutlined,{}),children:y("report")},"print"),e.jsx(p.Menu.Divider,{}),e.jsx(p.Menu.ItemGroup,{title:e.jsxs(e.Fragment,{children:[e.jsx(H.EnterOutlined,{})," ",e.jsxs("span",{children:[" ",y("related")]})]}),children:S})]})}function E(S){if(S.key==="action")i(!0);else if(S.key==="print")c(!0);else{const O=h.toolbar.relate.find(P=>P.id===parseInt(S.key));if(!O)return;w({relateData:O,values:g,fields:h.fields,action_id:O.id,action_type:O.type})}}function V(S){i(!1),D==null||D({actionData:S,values:g,fields:h.fields,context:{active_id:r,active_ids:[r]}})}function L(S){c(!1),D==null||D({actionData:{...S,datas:{...S.datas||{},ids:[r]}},values:g,fields:h.fields})}return e.jsxs(e.Fragment,{children:[e.jsx(p.Dropdown,{overlay:b(),trigger:["click"],children:e.jsx(H.RightCircleOutlined,{style:{color:"rgba(0,0,0,.45)"},onClick:S=>{S.preventDefault(),M()}})}),e.jsx(dn,{visible:o,items:(x=h==null?void 0:h.toolbar)==null?void 0:x.action,onItemClicked:V,onCancel:()=>i(!1)}),e.jsx(dn,{visible:a,items:(T=h==null?void 0:h.toolbar)==null?void 0:T.print,onItemClicked:L,onCancel:()=>c(!1)})]})},fa=t=>{const{m2oField:r}=t;return r?e.jsxs(p.Space,{children:[e.jsx(e.Fragment,{children:r.value}),e.jsx(Rt,{id:r.id,model:r.model})]}):e.jsx(e.Fragment,{})},ha=t=>{const{value:r,context:n,selectionValues:s}=t,[o,i]=l.useState(),[a,c]=l.useState(!1),[f,d]=r?r.split(","):[],h=parseInt(d),u=l.useCallback(async()=>{if(!r||r&&o)return;c(!0);const v=await K.getHandler().execute({action:"name_get",payload:[h],model:f,context:n});i(v[0][1]),c(!1)},[r,o]);if(l.useEffect(()=>{u()},[r]),!r&&!a)return e.jsx(e.Fragment,{});if(a)return e.jsx(H.LoadingOutlined,{});const g=s.get(f);return e.jsxs(p.Space,{children:[e.jsx(e.Fragment,{children:`${g}:`}),e.jsx(e.Fragment,{children:o}),e.jsx(Rt,{id:h,model:f})]})};var un={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",f="hour",d="day",h="week",u="month",g="quarter",v="year",y="date",m="Invalid Date",w=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,C=/\[([^\]]+)]|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,D={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($){var F=["th","st","nd","rd"],I=$%100;return"["+$+(F[(I-20)%10]||F[I]||F[0])+"]"}},M=function($,F,I){var A=String($);return!A||A.length>=F?$:""+Array(F+1-A.length).join(I)+$},b={s:M,z:function($){var F=-$.utcOffset(),I=Math.abs(F),A=Math.floor(I/60),k=I%60;return(F<=0?"+":"-")+M(A,2,"0")+":"+M(k,2,"0")},m:function $(F,I){if(F.date()<I.date())return-$(I,F);var A=12*(I.year()-F.year())+(I.month()-F.month()),k=F.clone().add(A,u),B=I-k<0,_=F.clone().add(A+(B?-1:1),u);return+(-(A+(I-k)/(B?k-_:_-k))||0)},a:function($){return $<0?Math.ceil($)||0:Math.floor($)},p:function($){return{M:u,y:v,w:h,d,D:y,h:f,m:c,s:a,ms:i,Q:g}[$]||String($||"").toLowerCase().replace(/s$/,"")},u:function($){return $===void 0}},E="en",V={};V[E]=D;var L=function($){return $ instanceof O},x=function $(F,I,A){var k;if(!F)return E;if(typeof F=="string"){var B=F.toLowerCase();V[B]&&(k=B),I&&(V[B]=I,k=B);var _=F.split("-");if(!k&&_.length>1)return $(_[0])}else{var W=F.name;V[W]=F,k=W}return!A&&k&&(E=k),k||!A&&E},T=function($,F){if(L($))return $.clone();var I=typeof F=="object"?F:{};return I.date=$,I.args=arguments,new O(I)},S=b;S.l=x,S.i=L,S.w=function($,F){return T($,{locale:F.$L,utc:F.$u,x:F.$x,$offset:F.$offset})};var O=function(){function $(I){this.$L=x(I.locale,null,!0),this.parse(I)}var F=$.prototype;return F.parse=function(I){this.$d=function(A){var k=A.date,B=A.utc;if(k===null)return new Date(NaN);if(S.u(k))return new Date;if(k instanceof Date)return new Date(k);if(typeof k=="string"&&!/Z$/i.test(k)){var _=k.match(w);if(_){var W=_[2]-1||0,J=(_[7]||"0").substring(0,3);return B?new Date(Date.UTC(_[1],W,_[3]||1,_[4]||0,_[5]||0,_[6]||0,J)):new Date(_[1],W,_[3]||1,_[4]||0,_[5]||0,_[6]||0,J)}}return new Date(k)}(I),this.$x=I.x||{},this.init()},F.init=function(){var I=this.$d;this.$y=I.getFullYear(),this.$M=I.getMonth(),this.$D=I.getDate(),this.$W=I.getDay(),this.$H=I.getHours(),this.$m=I.getMinutes(),this.$s=I.getSeconds(),this.$ms=I.getMilliseconds()},F.$utils=function(){return S},F.isValid=function(){return this.$d.toString()!==m},F.isSame=function(I,A){var k=T(I);return this.startOf(A)<=k&&k<=this.endOf(A)},F.isAfter=function(I,A){return T(I)<this.startOf(A)},F.isBefore=function(I,A){return this.endOf(A)<T(I)},F.$g=function(I,A,k){return S.u(I)?this[A]:this.set(k,I)},F.unix=function(){return Math.floor(this.valueOf()/1e3)},F.valueOf=function(){return this.$d.getTime()},F.startOf=function(I,A){var k=this,B=!!S.u(A)||A,_=S.p(I),W=function(Q,le){var R=S.w(k.$u?Date.UTC(k.$y,le,Q):new Date(k.$y,le,Q),k);return B?R:R.endOf(d)},J=function(Q,le){return S.w(k.toDate()[Q].apply(k.toDate("s"),(B?[0,0,0,0]:[23,59,59,999]).slice(le)),k)},j=this.$W,X=this.$M,G=this.$D,N="set"+(this.$u?"UTC":"");switch(_){case v:return B?W(1,0):W(31,11);case u:return B?W(1,X):W(0,X+1);case h:var Y=this.$locale().weekStart||0,re=(j<Y?j+7:j)-Y;return W(B?G-re:G+(6-re),X);case d:case y:return J(N+"Hours",0);case f:return J(N+"Minutes",1);case c:return J(N+"Seconds",2);case a:return J(N+"Milliseconds",3);default:return this.clone()}},F.endOf=function(I){return this.startOf(I,!1)},F.$set=function(I,A){var k,B=S.p(I),_="set"+(this.$u?"UTC":""),W=(k={},k[d]=_+"Date",k[y]=_+"Date",k[u]=_+"Month",k[v]=_+"FullYear",k[f]=_+"Hours",k[c]=_+"Minutes",k[a]=_+"Seconds",k[i]=_+"Milliseconds",k)[B],J=B===d?this.$D+(A-this.$W):A;if(B===u||B===v){var j=this.clone().set(y,1);j.$d[W](J),j.init(),this.$d=j.set(y,Math.min(this.$D,j.daysInMonth())).$d}else W&&this.$d[W](J);return this.init(),this},F.set=function(I,A){return this.clone().$set(I,A)},F.get=function(I){return this[S.p(I)]()},F.add=function(I,A){var k,B=this;I=Number(I);var _=S.p(A),W=function(X){var G=T(B);return S.w(G.date(G.date()+Math.round(X*I)),B)};if(_===u)return this.set(u,this.$M+I);if(_===v)return this.set(v,this.$y+I);if(_===d)return W(1);if(_===h)return W(7);var J=(k={},k[c]=s,k[f]=o,k[a]=n,k)[_]||1,j=this.$d.getTime()+I*J;return S.w(j,this)},F.subtract=function(I,A){return this.add(-1*I,A)},F.format=function(I){var A=this,k=this.$locale();if(!this.isValid())return k.invalidDate||m;var B=I||"YYYY-MM-DDTHH:mm:ssZ",_=S.z(this),W=this.$H,J=this.$m,j=this.$M,X=k.weekdays,G=k.months,N=function(le,R,Z,he){return le&&(le[R]||le(A,B))||Z[R].slice(0,he)},Y=function(le){return S.s(W%12||12,le,"0")},re=k.meridiem||function(le,R,Z){var he=le<12?"AM":"PM";return Z?he.toLowerCase():he},Q={YY:String(this.$y).slice(-2),YYYY:S.s(this.$y,4,"0"),M:j+1,MM:S.s(j+1,2,"0"),MMM:N(k.monthsShort,j,G,3),MMMM:N(G,j),D:this.$D,DD:S.s(this.$D,2,"0"),d:String(this.$W),dd:N(k.weekdaysMin,this.$W,X,2),ddd:N(k.weekdaysShort,this.$W,X,3),dddd:X[this.$W],H:String(W),HH:S.s(W,2,"0"),h:Y(1),hh:Y(2),a:re(W,J,!0),A:re(W,J,!1),m:String(J),mm:S.s(J,2,"0"),s:String(this.$s),ss:S.s(this.$s,2,"0"),SSS:S.s(this.$ms,3,"0"),Z:_};return B.replace(C,function(le,R){return R||Q[le]||_.replace(":","")})},F.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},F.diff=function(I,A,k){var B,_=S.p(A),W=T(I),J=(W.utcOffset()-this.utcOffset())*s,j=this-W,X=S.m(this,W);return X=(B={},B[v]=X/12,B[u]=X,B[g]=X/3,B[h]=(j-J)/6048e5,B[d]=(j-J)/864e5,B[f]=j/o,B[c]=j/s,B[a]=j/n,B)[_]||j,k?X:S.a(X)},F.daysInMonth=function(){return this.endOf(u).$D},F.$locale=function(){return V[this.$L]},F.locale=function(I,A){if(!I)return this.$L;var k=this.clone(),B=x(I,A,!0);return B&&(k.$L=B),k},F.clone=function(){return S.w(this.$d,this)},F.toDate=function(){return new Date(this.valueOf())},F.toJSON=function(){return this.isValid()?this.toISOString():null},F.toISOString=function(){return this.$d.toISOString()},F.toString=function(){return this.$d.toUTCString()},$}(),P=O.prototype;return T.prototype=P,[["$ms",i],["$s",a],["$m",c],["$H",f],["$W",d],["$M",u],["$y",v],["$D",y]].forEach(function($){P[$[1]]=function(F){return this.$g(F,$[0],$[1])}}),T.extend=function($,F){return $.$i||($(F,O,T),$.$i=!0),T},T.locale=x,T.isDayjs=L,T.unix=function($){return T(1e3*$)},T.en=V[E],T.Ls=V,T.p={},T})})(un);const Xe=un.exports,pa=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=kt(s);return e.jsx(p.Tooltip,{title:s,children:e.jsx(p.Avatar,{alt:s,style:{backgroundColor:i},children:o})})};var fn={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")}}})})(fn);const ga=fn.exports;var hn={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Re,function(){return function(n,s,o){var i=s.prototype,a=function(u){return u&&(u.indexOf?u:u.s)},c=function(u,g,v,y,m){var w=u.name?u:u.$locale(),C=a(w[g]),D=a(w[v]),M=C||D.map(function(E){return E.slice(0,y)});if(!m)return M;var b=w.weekStart;return M.map(function(E,V){return M[(V+(b||0))%7]})},f=function(){return o.Ls[o.locale()]},d=function(u,g){return u.formats[g]||function(v){return v.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(y,m,w){return m||w.slice(1)})}(u.formats[g.toUpperCase()])},h=function(){var u=this;return{months:function(g){return g?g.format("MMMM"):c(u,"months")},monthsShort:function(g){return g?g.format("MMM"):c(u,"monthsShort","months",3)},firstDayOfWeek:function(){return u.$locale().weekStart||0},weekdays:function(g){return g?g.format("dddd"):c(u,"weekdays")},weekdaysMin:function(g){return g?g.format("dd"):c(u,"weekdaysMin","weekdays",2)},weekdaysShort:function(g){return g?g.format("ddd"):c(u,"weekdaysShort","weekdays",3)},longDateFormat:function(g){return d(u.$locale(),g)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};i.localeData=function(){return h.bind(this)()},o.localeData=function(){var u=f();return{firstDayOfWeek:function(){return u.weekStart||0},weekdays:function(){return o.weekdays()},weekdaysShort:function(){return o.weekdaysShort()},weekdaysMin:function(){return o.weekdaysMin()},months:function(){return o.months()},monthsShort:function(){return o.monthsShort()},longDateFormat:function(g){return d(u,g)},meridiem:u.meridiem,ordinal:u.ordinal}},o.months=function(){return c(f(),"months")},o.monthsShort=function(){return c(f(),"monthsShort","months",3)},o.weekdays=function(u){return c(f(),"weekdays",null,null,u)},o.weekdaysShort=function(u){return c(f(),"weekdaysShort","weekdays",3,u)},o.weekdaysMin=function(u){return c(f(),"weekdaysMin","weekdays",2,u)}}})})(hn);const ma=hn.exports,{useToken:ya}=p.theme;Xe.extend(ga),Xe.extend(ma);const Qe={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"}},pn=t=>{const{ooui:r,showTime:n=!1}=t,{required:s}=r;return e.jsx(me,{required:s,...t,children:e.jsx(wa,{ooui:r,showTime:n})})},wa=t=>{const{value:r,onChange:n,ooui:s,showTime:o}=t,{id:i,readOnly:a,required:c}=s,{token:f}=ya(),d=c&&!a?{backgroundColor:f.colorPrimaryBg}:void 0,h=o?"time":"date",u=y=>{n==null||n(y)},g=y=>{if(y===null){u(void 0);return}u(y.format(Qe[h].dateInternalFormat))},v=r?Xe(r,Qe[h].dateInternalFormat):void 0;return e.jsx(p.DatePicker,{style:{width:"100%",...d},placeholder:o?Qe.time.placeholder:Qe.date.placeholder,disabled:a,id:i,picker:"date",showTime:o,format:Qe[h].dateDisplayFormat,value:v,onChange:g})},va=t=>e.jsx("div",{style:{display:"flex",justifyContent:"center",alignContent:"center"},children:e.jsx(p.Checkbox,{checked:t,disabled:!0})}),Ca=t=>e.jsx(fa,{m2oField:t}),Sa=t=>e.jsx(Ht.Interweave,{content:t==null?void 0:t.toString().replace(/(?:\r\n|\r|\n)/g,"<br>")}),ba=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=Xe(t,Qe.date.dateInternalFormat).format(Qe.date.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},xa=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=Xe(t,Qe.time.dateInternalFormat).format(Qe.time.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},gn=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} )`})},Ta=t=>e.jsx(cn,{value:t}),Fa=t=>e.jsx(e.Fragment,{children:an(t)}),mn=t=>e.jsx("div",{style:{textAlign:"right"},children:t}),Oa=t=>e.jsx("img",{src:`data:image/*;base64,${t}`,style:{maxWidth:"50px",padding:"5px"}}),_a=(t,r,n,s)=>e.jsx(Zr,{ooui:n,value:t}),Da=(t,r,n,s)=>e.jsx(e.Fragment,{children:n.selectionValues.get(t)}),ka=(t,r,n,s)=>e.jsx(e.Fragment,{children:e.jsx(ha,{value:t,selectionValues:n.selectionValues,context:s})}),Va=(t,r,n,s)=>e.jsx(pa,{ooui:n,value:t});function bt(t){const{page:r=1,limit:n,total:s,treeView:o,results:i,onRequestPageChange:a,loading:c,onRowClicked:f,showPagination:d=!0,rowSelection:h,scrollY:u,colorsForResults:g={},statusForResults:v={},onChangeSort:y,sorter:m,onFetchChildrenForRecord:w,childField:C,rootTree:D=!1,context:M,readonly:b}=t,[E,V]=l.useState([]),[L,x]=l.useState([]),T=l.useRef(!1),S=l.useRef(null),{t:O}=l.useContext(ge),P=l.useRef(n),$=l.useContext(We),{title:F=void 0,setTitle:I=void 0}=(D?$:{})||{};l.useEffect(()=>{S.current=it(o);const X=ni(S.current,{boolean:va,many2one:Ca,text:Sa,one2many:gn,many2many:gn,progressbar:Ta,float_time:Fa,image:Oa,integer:mn,float:mn,reference:ka,tag:_a,selection:Da,date:ba,datetime:xa,avatar:Va},M);x(X),S.current.string&&F!==S.current.string&&(I==null||I(S.current.string))},[o]),l.useEffect(()=>{T.current=!1;const X=qr(S.current,i);V(X),P.current=n},[i]);const A=(r-1)*P.current+1,k=A-1+E.length,B=s===void 0?null:s===0?O("no_results"):O("summary").replace("{from}",A==null?void 0:A.toString()).replace("{to}",k==null?void 0:k.toString()).replace("{total}",s==null?void 0:s.toString()),_=()=>!d||o.isExpandable||c?null:s===void 0?e.jsx(p.Spin,{className:"pb-4"}):e.jsxs(p.Row,{align:"bottom",className:"pb-4",children:[e.jsx(p.Col,{span:12,children:e.jsx(p.Pagination,{total:s,pageSize:P.current===0?s:P.current,current:r,showSizeChanger:!1,onChange:a})}),e.jsx(p.Col,{span:12,className:"text-right",children:B})]});function W(){var re;const G=S.current.columns.filter(Q=>Q.sum!==void 0).map(Q=>({label:Q.sum,field:Q.id}));if(!G||G.length===0)return null;let N=[],Y=((re=h==null?void 0:h.selectedRowKeys)==null?void 0:re.length)>0?E.filter(Q=>h==null?void 0:h.selectedRowKeys.includes(Q.id)):E;return G.forEach(Q=>{const le=Y.reduce((R,Z)=>Z[Q.field]&&!isNaN(Z[Q.field])?R+Z[Q.field]:R,0);N.push(`${Q.label}: ${Math.round(le*100)/100}`)}),e.jsx("div",{className:"p-1 pb-0 pl-2 mt-2 ",children:N.join(", ")})}let J,j=u;if(S.current!==null){J=ca(L,E,600);const G=S.current;u&&G.columns.some(N=>N.sum!==void 0)&&(j=u-30)}return S.current===null?e.jsx(p.Spin,{style:{padding:"2rem"}}):e.jsxs("div",{children:[_(),c&&e.jsx(p.Spin,{className:"pb-4"}),e.jsx(mo.Table,{height:j,columns:J.columns,dataSource:E,loading:!1,loadingComponent:e.jsx(p.Spin,{}),onRowStyle:X=>{if(g[X.id])return{color:g[X.id]}},onRowStatus:oi(v)?X=>{if(v[X.id])return e.jsx(p.Badge,{color:v[X.id]})}:void 0,onRowDoubleClick:f,selectionRowKeys:h==null?void 0:h.selectedRowKeys,onRowSelectionChange:h==null?void 0:h.onChange,onChangeSort:y,sorter:m,readonly:b,expandableOpts:w?{expandIcon:H.PlusSquareOutlined,collapseIcon:H.MinusSquareOutlined,loadingIcon:H.LoadingOutlined,onFetchChildrenForRecord:w,childField:C}:void 0}),W()]})}function Ma(t,r){const{model:n,formView:s,treeView:o,onRowClicked:i,nameSearch:a,treeScrollY:c,domain:f=[],visible:d=!0,rootTree:h=!1,parentContext:u={},onChangeSelectedRowKeys:g}=t,[v,y]=l.useState(!1),[m,w]=l.useState(!1),C=l.useRef(!1),[D,M]=l.useState(),[b,E]=l.useState(),[V,L]=l.useState(),[x,T]=l.useState(),[S,O]=l.useState(200),P=l.useRef(),{height:$}=Ot(),F=l.useContext(dt),{processAction:I}=F||{},A=l.useContext(We),{setResults:k=void 0,setCurrentItemIndex:B=void 0,currentId:_=void 0,results:W=void 0,selectedRowItems:J=void 0,setSelectedRowItems:j=void 0,searchParams:X=[],setSearchParams:G=void 0,searchVisible:N=!0,setSearchVisible:Y=void 0,sorter:re=void 0,setSorter:Q=void 0,setTotalItems:le=void 0,setSearchTreeNameSearch:R=void 0,setTreeIsLoading:Z=void 0,searchValues:he={},setSearchValues:ve=void 0,limit:Ee=Ct,setLimit:Oe=void 0}=(h?A:{})||{},{submit:Ie,clear:Pe,fetchResults:ie,tableRefreshing:de,searchFilterLoading:Ae,searchError:we,page:De,offset:Ye,getResults:te,requestPageChange:Fe,changeSort:_e,fetchChildrenForRecord:ke,colorsForResults:ce,statusForResults:fe,totalItems:Ne}=rn({model:D,setSearchTreeNameSearch:R,setSelectedRowItems:Ce,setSearchParams:G,setSearchValues:ve,searchParams:X,setSearchVisible:Y,setTreeIsLoading:Z,nameSearch:a,searchNameGetDoneRef:C,context:u,formView:V,treeView:b,sorter:re,setSorter:Q,setCurrentItemIndex:B,setResultsActionView:k,resultsActionView:W,domain:f,currentId:_,setActionViewTotalItems:le,limit:Ee,setLimit:Oe});l.useImperativeHandle(r,()=>({refreshResults:()=>{C.current=!1,ie()},getFields:()=>b==null?void 0:b.fields,getDomain:()=>f})),l.useEffect(()=>{!m||d&&(C.current=!1,ie())},[De,Ye,m,d,a]);const ue=async()=>{w(!1),y(!0),T(void 0),Z==null||Z(!0);try{await je(),w(!0)}catch(Te){T(Te),Z==null||Z(!1)}finally{y(!1)}},je=async()=>{M(n);let Te=s;s||(Te=await K.getHandler().getView({model:n,type:"form",context:u}));let Ve=o;o||(Ve=await K.getHandler().getView({model:n,type:"tree",context:u})),L(Te),E(Ve)};l.useEffect(()=>{ue()},[n]);const $e=Te=>{Oe==null||Oe(Te)},ee=async Te=>{const{id:Ve}=Te;P.current||(P.current=await K.getHandler().treeButOpen({id:b.view_id,model:D,context:u}));const ze=P.current[0][2];await(I==null?void 0:I({actionData:ze,fields:b.fields,values:{active_id:Ve,...Te},context:u}))},ae=async Te=>{const{id:Ve}=Te;if(b!=null&&b.isExpandable){try{await ee(Te)}catch(ze){Le(ze)}return}i({id:Ve,model:D,formView:V,treeView:b})};function Ce(Te){const Ve=te().filter(ze=>Te.includes(ze.id));j==null||j(Ve),g==null||g(Te)}function ye(){return b!=null&&b.isExpandable?$-160:$-(S+210)}const Se=()=>!b||!V?null:e.jsxs(e.Fragment,{children:[e.jsx(Qt,{fields:{...V.fields,...b.fields},searchFields:jr([V.search_fields,b.search_fields]),onClear:Pe,limit:Ee,offset:Ye,isSearching:Ae,onSubmit:Ie,onLimitChange:$e,setSearchFilterHeight:O,searchError:we,searchVisible:N,searchValues:he}),e.jsx(bt,{context:u,total:Ne,limit:Ee,page:De,treeView:b,results:te(),onRequestPageChange:Fe,loading:de,onRowClicked:ae,scrollY:c||ye(),colorsForResults:ce,statusForResults:fe,rowSelection:{selectedRowKeys:J==null?void 0:J.map(Te=>Te.id),onChange:Ce},sorter:re,onChangeSort:_e,onFetchChildrenForRecord:b.isExpandable?ke:void 0,childField:b.field_parent,rootTree:h})]}),xe=x||we;return xe?e.jsx(p.Alert,{className:"mt-10",message:xe,type:"error",banner:!0}):e.jsx("div",{style:d?{}:{display:"none"},children:v?e.jsx(p.Spin,{}):Se()})}const er=l.forwardRef(Ma),tr=t=>{const{visible:r,onCloseModal:n,onSelectValues:s,model:o,nameSearch:i,domain:a,context:c={}}=t,[f,d]=l.useState(!1),{modalWidth:h,modalHeight:u}=Ot(),{t:g}=l.useContext(ge),[v,y]=l.useState([]),m=async()=>{await new Promise(M=>setTimeout(M,5)),n()},w=async M=>{const{id:b}=M;s([b])};function C(){if(v.length===0){m();return}s(v)}const D=()=>e.jsxs(e.Fragment,{children:[e.jsx(er,{model:o,nameSearch:i,onRowClicked:w,treeScrollY:u*.3,domain:a,parentContext:c,onChangeSelectedRowKeys:M=>{y(M)}}),e.jsx(p.Divider,{}),e.jsx(p.Row,{justify:"end",children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.FileAddOutlined,{}),onClick:()=>{d(!0)},children:g("new")}),e.jsx(p.Button,{icon:e.jsx(H.CheckOutlined,{}),onClick:()=>{C()},type:"primary",children:g("ok")}),e.jsx(p.Button,{icon:e.jsx(H.CloseOutlined,{}),onClick:m,children:g("cancel")})]})})]});return e.jsxs(e.Fragment,{children:[e.jsx(p.Modal,{title:g("search"),centered:!0,width:h,open:r&&!f,closable:!0,onCancel:m,footer:null,destroyOnClose:!0,maskClosable:!1,children:D()}),e.jsx(ft,{model:o,visible:f,parentContext:c,onSubmitSucceed:M=>{d(!1),m(),s([M])},onCancel:()=>{d(!1),m()}})]})},{error:Ea}=p.Modal,Mt=t=>{Ea({title:"Error",icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:t})},{defaultAlgorithm:Ia,defaultSeed:Aa}=p.theme,yn=Ia(Aa),wn=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(vn,{ooui:r})})},vn=t=>{const{value:r,onChange:n,ooui:s}=t,{required:o,relation:i,readOnly:a,context:c,id:f,domain:d}=s,h=o&&!a?{backgroundColor:yn.colorPrimaryBg}:void 0,[u,g]=l.useState(!1),[v,y]=l.useState(!1),[m,w]=l.useState(!1),[C,D]=l.useState(),M=l.useRef(!1),[b,E]=l.useState(""),V=l.useRef(),L=l.useContext(Me),{domain:x,getValues:T,getFields:S,getContext:O,elementHasLostFocus:P}=L||{},$=l.useRef([]),[F,I]=l.useState([]),A=r&&r[0]||void 0,k=r&&r[1]||"";l.useEffect(()=>{!Array.isArray(r)&&r&&j(r)},[r]),l.useEffect(()=>{A&&k.length===0?j(A):A&&k.length>0?E(k):!A&&!k&&E(V.current||"")},[r]);const B=Y=>{n==null||n(Y),P==null||P()},_=Y=>{V.current=Y.target.value,B([void 0,""])},W=async()=>{if(!m&&b!==k){if(await new Promise(Y=>setTimeout(Y,100)),M.current){B([void 0,""]);return}w(!0);try{if($.current&&$.current.length>0)J(V.current);else{const Y=await K.getHandler().nameSearch({model:i,payload:V.current,context:{...O==null?void 0:O(),...c}});Y.length===1?(V.current=void 0,B(Y[0])):J(V.current)}}catch(Y){Mt(Y)}finally{w(!1)}}},J=async Y=>{if(await X(),$.current&&$.current.length>0){const re=await K.getHandler().searchAllIds({params:$.current,model:i,context:{...O==null?void 0:O(),...c},totalItems:2});re.length===1?j(re[0]):(D(Y),g(!0));return}D(Y),g(!0)},j=async Y=>{w(!0);try{const re=await K.getHandler().execute({action:"name_get",payload:[Y],model:i,context:{...O==null?void 0:O(),...c}});B([Y,re[0][1]])}catch(re){Mt(re)}finally{w(!1)}};async function X(){d&&($.current=await K.getHandler().evalDomain({domain:d,values:ct({fields:S(),values:T()}),fields:S(),context:O()})),x&&x.length>0&&($.current=$.current.concat(se.transformDomainForChildWidget({domain:x,widgetFieldName:f}))),I($.current)}async function G(Y){Y.keyCode===13?(Y.preventDefault(),Y.stopPropagation(),await W()):Y.code==="Backspace"&&A!==void 0&&(Y.preventDefault(),Y.stopPropagation(),B([void 0,""]))}const N=o&&!a?$a:p.Input;return e.jsxs(p.Row,{gutter:8,wrap:!1,children:[e.jsx(p.Col,{flex:"auto",children:e.jsx(N,{type:"text",value:b,disabled:a,onChange:_,style:h,onBlur:W,onKeyDown:G,suffix:e.jsx(Rt,{id:A,model:i,context:{...O==null?void 0:O(),...c}})})}),e.jsx(p.Col,{flex:"32px",style:{paddingRight:0},children:e.jsx(p.Button,{icon:e.jsx(H.FolderOpenOutlined,{}),disabled:A===void 0||k===""||b===void 0,onClick:()=>{y(!0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1})}),e.jsx(p.Col,{flex:"32px",style:{paddingLeft:0},children:e.jsx(p.Button,{icon:m?e.jsx(H.LoadingOutlined,{}):e.jsx(H.SearchOutlined,{}),disabled:a||m,onClick:()=>{M.current=!0,J(k)},style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},tabIndex:-1})}),e.jsx(tr,{model:i,domain:F,context:{...O==null?void 0:O(),...c},visible:u,nameSearch:A?void 0:C,onSelectValues:Y=>{g(!1),j(Y[0]),M.current=!1,V.current=void 0},onCloseModal:()=>{g(!1),M.current=!1}}),e.jsx(ft,{model:i,parentContext:{...O==null?void 0:O(),...c},id:r&&r[0],visible:v,onSubmitSucceed:Y=>{y(!1),j(Y)},onCancel:()=>{y(!1)},mustClearAfterSave:!0,readOnly:a})]})},$a=mt.default(p.Input)`
31
+ `,dn=t=>{const{visible:r,onCancel:n,items:s=[],onItemClicked:o}=t,{t:i}=l.useContext(ge);return e.jsx(p.Modal,{title:i("selectAction"),centered:!0,open:r,footer:null,destroyOnClose:!0,onCancel:n,maskClosable:!1,children:e.jsx(p.Space,{direction:"vertical",className:"w-full",children:s.map(a=>e.jsx(p.Button,{className:"w-full",onClick:()=>{o(a)},children:a.name}))})})},Rt=t=>{var x,T;const{id:r,model:n,context:s={}}=t,[o,i]=l.useState(!1),[a,c]=l.useState(!1),[f,d]=l.useState(!1),[h,u]=l.useState(),[g,v]=l.useState(),{t:y}=l.useContext(ge),m=l.useContext(je),{openRelate:w}=m||{},C=l.useContext(dt),{processAction:D}=C||{};if(!r)return null;async function M(){var S,O,P,$,F;d(!0);try{const I=await K.getHandler().getView({model:n,type:"form",context:s});u(I);let A=[];const{toolbar:k}=I;(S=k.action)==null||S.filter(_=>_.hasOwnProperty("context")).map(_=>A.push(...se.parseContextFields(_.context))),(O=k.action)==null||O.filter(_=>_.hasOwnProperty("domain")).map(_=>A.push(...se.parseDomainFields(_.domain))),(P=k.relate)==null||P.filter(_=>_.hasOwnProperty("context")).map(_=>A.push(...se.parseContextFields(_.context))),($=k.relate)==null||$.filter(_=>_.hasOwnProperty("domain")).map(_=>A.push(...se.parseDomainFields(_.domain))),(F=k.print)==null||F.filter(_=>_.hasOwnProperty("context")).map(_=>A.push(...se.parseContextFields(_.context))),A=A.filter(_=>Object.keys(I.fields).indexOf(_)>-1);let B={};A.length>0&&(B=(await K.getHandler().readObjects({model:n,ids:[r],fieldsToRetrieve:A,context:s}))[0]),B={...lt(B,A),active_id:r},v(B),d(!1)}catch(I){d(!1),Le(I);return}}function b(){var O;if(f)return e.jsx(p.Menu,{children:e.jsx("div",{style:{padding:15},children:e.jsx(p.Spin,{})})});if(!h||!h.toolbar)return e.jsx(p.Menu,{});const S=(O=h==null?void 0:h.toolbar)==null?void 0:O.relate.map(P=>e.jsx(p.Menu.Item,{children:P.name},P.id));return e.jsx(p.Menu,{onClick:E,children:[e.jsx(p.Menu.Item,{disabled:!h.toolbar.action||h.toolbar.action.length===0,icon:e.jsx(H.ThunderboltOutlined,{}),children:y("action")},"action"),e.jsx(p.Menu.Item,{disabled:!h.toolbar.print||h.toolbar.print.length===0,icon:e.jsx(H.PrinterOutlined,{}),children:y("report")},"print"),e.jsx(p.Menu.Divider,{}),e.jsx(p.Menu.ItemGroup,{title:e.jsxs(e.Fragment,{children:[e.jsx(H.EnterOutlined,{})," ",e.jsxs("span",{children:[" ",y("related")]})]}),children:S})]})}function E(S){if(S.key==="action")i(!0);else if(S.key==="print")c(!0);else{const O=h.toolbar.relate.find(P=>P.id===parseInt(S.key));if(!O)return;w({relateData:O,values:g,fields:h.fields,action_id:O.id,action_type:O.type})}}function V(S){i(!1),D==null||D({actionData:S,values:g,fields:h.fields,context:{active_id:r,active_ids:[r]}})}function L(S){c(!1),D==null||D({actionData:{...S,datas:{...S.datas||{},ids:[r]}},values:g,fields:h.fields})}return e.jsxs(e.Fragment,{children:[e.jsx(p.Dropdown,{overlay:b(),trigger:["click"],children:e.jsx(H.RightCircleOutlined,{style:{color:"rgba(0,0,0,.45)"},onClick:S=>{S.preventDefault(),M()}})}),e.jsx(dn,{visible:o,items:(x=h==null?void 0:h.toolbar)==null?void 0:x.action,onItemClicked:V,onCancel:()=>i(!1)}),e.jsx(dn,{visible:a,items:(T=h==null?void 0:h.toolbar)==null?void 0:T.print,onItemClicked:L,onCancel:()=>c(!1)})]})},fa=t=>{const{m2oField:r}=t;return r?e.jsxs(p.Space,{children:[e.jsx(e.Fragment,{children:r.value}),e.jsx(Rt,{id:r.id,model:r.model})]}):e.jsx(e.Fragment,{})},ha=t=>{const{value:r,context:n,selectionValues:s}=t,[o,i]=l.useState(),[a,c]=l.useState(!1),[f,d]=r?r.split(","):[],h=parseInt(d),u=l.useCallback(async()=>{if(!r||r&&o)return;c(!0);const v=await K.getHandler().execute({action:"name_get",payload:[h],model:f,context:n});i(v[0][1]),c(!1)},[r,o]);if(l.useEffect(()=>{u()},[r]),!r&&!a)return e.jsx(e.Fragment,{});if(a)return e.jsx(H.LoadingOutlined,{});const g=s.get(f);return e.jsxs(p.Space,{children:[e.jsx(e.Fragment,{children:`${g}:`}),e.jsx(e.Fragment,{children:o}),e.jsx(Rt,{id:h,model:f})]})};var un={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",f="hour",d="day",h="week",u="month",g="quarter",v="year",y="date",m="Invalid Date",w=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,C=/\[([^\]]+)]|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,D={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($){var F=["th","st","nd","rd"],I=$%100;return"["+$+(F[(I-20)%10]||F[I]||F[0])+"]"}},M=function($,F,I){var A=String($);return!A||A.length>=F?$:""+Array(F+1-A.length).join(I)+$},b={s:M,z:function($){var F=-$.utcOffset(),I=Math.abs(F),A=Math.floor(I/60),k=I%60;return(F<=0?"+":"-")+M(A,2,"0")+":"+M(k,2,"0")},m:function $(F,I){if(F.date()<I.date())return-$(I,F);var A=12*(I.year()-F.year())+(I.month()-F.month()),k=F.clone().add(A,u),B=I-k<0,_=F.clone().add(A+(B?-1:1),u);return+(-(A+(I-k)/(B?k-_:_-k))||0)},a:function($){return $<0?Math.ceil($)||0:Math.floor($)},p:function($){return{M:u,y:v,w:h,d,D:y,h:f,m:c,s:a,ms:i,Q:g}[$]||String($||"").toLowerCase().replace(/s$/,"")},u:function($){return $===void 0}},E="en",V={};V[E]=D;var L=function($){return $ instanceof O},x=function $(F,I,A){var k;if(!F)return E;if(typeof F=="string"){var B=F.toLowerCase();V[B]&&(k=B),I&&(V[B]=I,k=B);var _=F.split("-");if(!k&&_.length>1)return $(_[0])}else{var W=F.name;V[W]=F,k=W}return!A&&k&&(E=k),k||!A&&E},T=function($,F){if(L($))return $.clone();var I=typeof F=="object"?F:{};return I.date=$,I.args=arguments,new O(I)},S=b;S.l=x,S.i=L,S.w=function($,F){return T($,{locale:F.$L,utc:F.$u,x:F.$x,$offset:F.$offset})};var O=function(){function $(I){this.$L=x(I.locale,null,!0),this.parse(I)}var F=$.prototype;return F.parse=function(I){this.$d=function(A){var k=A.date,B=A.utc;if(k===null)return new Date(NaN);if(S.u(k))return new Date;if(k instanceof Date)return new Date(k);if(typeof k=="string"&&!/Z$/i.test(k)){var _=k.match(w);if(_){var W=_[2]-1||0,J=(_[7]||"0").substring(0,3);return B?new Date(Date.UTC(_[1],W,_[3]||1,_[4]||0,_[5]||0,_[6]||0,J)):new Date(_[1],W,_[3]||1,_[4]||0,_[5]||0,_[6]||0,J)}}return new Date(k)}(I),this.$x=I.x||{},this.init()},F.init=function(){var I=this.$d;this.$y=I.getFullYear(),this.$M=I.getMonth(),this.$D=I.getDate(),this.$W=I.getDay(),this.$H=I.getHours(),this.$m=I.getMinutes(),this.$s=I.getSeconds(),this.$ms=I.getMilliseconds()},F.$utils=function(){return S},F.isValid=function(){return this.$d.toString()!==m},F.isSame=function(I,A){var k=T(I);return this.startOf(A)<=k&&k<=this.endOf(A)},F.isAfter=function(I,A){return T(I)<this.startOf(A)},F.isBefore=function(I,A){return this.endOf(A)<T(I)},F.$g=function(I,A,k){return S.u(I)?this[A]:this.set(k,I)},F.unix=function(){return Math.floor(this.valueOf()/1e3)},F.valueOf=function(){return this.$d.getTime()},F.startOf=function(I,A){var k=this,B=!!S.u(A)||A,_=S.p(I),W=function(Q,le){var R=S.w(k.$u?Date.UTC(k.$y,le,Q):new Date(k.$y,le,Q),k);return B?R:R.endOf(d)},J=function(Q,le){return S.w(k.toDate()[Q].apply(k.toDate("s"),(B?[0,0,0,0]:[23,59,59,999]).slice(le)),k)},j=this.$W,X=this.$M,G=this.$D,N="set"+(this.$u?"UTC":"");switch(_){case v:return B?W(1,0):W(31,11);case u:return B?W(1,X):W(0,X+1);case h:var Y=this.$locale().weekStart||0,re=(j<Y?j+7:j)-Y;return W(B?G-re:G+(6-re),X);case d:case y:return J(N+"Hours",0);case f:return J(N+"Minutes",1);case c:return J(N+"Seconds",2);case a:return J(N+"Milliseconds",3);default:return this.clone()}},F.endOf=function(I){return this.startOf(I,!1)},F.$set=function(I,A){var k,B=S.p(I),_="set"+(this.$u?"UTC":""),W=(k={},k[d]=_+"Date",k[y]=_+"Date",k[u]=_+"Month",k[v]=_+"FullYear",k[f]=_+"Hours",k[c]=_+"Minutes",k[a]=_+"Seconds",k[i]=_+"Milliseconds",k)[B],J=B===d?this.$D+(A-this.$W):A;if(B===u||B===v){var j=this.clone().set(y,1);j.$d[W](J),j.init(),this.$d=j.set(y,Math.min(this.$D,j.daysInMonth())).$d}else W&&this.$d[W](J);return this.init(),this},F.set=function(I,A){return this.clone().$set(I,A)},F.get=function(I){return this[S.p(I)]()},F.add=function(I,A){var k,B=this;I=Number(I);var _=S.p(A),W=function(X){var G=T(B);return S.w(G.date(G.date()+Math.round(X*I)),B)};if(_===u)return this.set(u,this.$M+I);if(_===v)return this.set(v,this.$y+I);if(_===d)return W(1);if(_===h)return W(7);var J=(k={},k[c]=s,k[f]=o,k[a]=n,k)[_]||1,j=this.$d.getTime()+I*J;return S.w(j,this)},F.subtract=function(I,A){return this.add(-1*I,A)},F.format=function(I){var A=this,k=this.$locale();if(!this.isValid())return k.invalidDate||m;var B=I||"YYYY-MM-DDTHH:mm:ssZ",_=S.z(this),W=this.$H,J=this.$m,j=this.$M,X=k.weekdays,G=k.months,N=function(le,R,Z,he){return le&&(le[R]||le(A,B))||Z[R].slice(0,he)},Y=function(le){return S.s(W%12||12,le,"0")},re=k.meridiem||function(le,R,Z){var he=le<12?"AM":"PM";return Z?he.toLowerCase():he},Q={YY:String(this.$y).slice(-2),YYYY:S.s(this.$y,4,"0"),M:j+1,MM:S.s(j+1,2,"0"),MMM:N(k.monthsShort,j,G,3),MMMM:N(G,j),D:this.$D,DD:S.s(this.$D,2,"0"),d:String(this.$W),dd:N(k.weekdaysMin,this.$W,X,2),ddd:N(k.weekdaysShort,this.$W,X,3),dddd:X[this.$W],H:String(W),HH:S.s(W,2,"0"),h:Y(1),hh:Y(2),a:re(W,J,!0),A:re(W,J,!1),m:String(J),mm:S.s(J,2,"0"),s:String(this.$s),ss:S.s(this.$s,2,"0"),SSS:S.s(this.$ms,3,"0"),Z:_};return B.replace(C,function(le,R){return R||Q[le]||_.replace(":","")})},F.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},F.diff=function(I,A,k){var B,_=S.p(A),W=T(I),J=(W.utcOffset()-this.utcOffset())*s,j=this-W,X=S.m(this,W);return X=(B={},B[v]=X/12,B[u]=X,B[g]=X/3,B[h]=(j-J)/6048e5,B[d]=(j-J)/864e5,B[f]=j/o,B[c]=j/s,B[a]=j/n,B)[_]||j,k?X:S.a(X)},F.daysInMonth=function(){return this.endOf(u).$D},F.$locale=function(){return V[this.$L]},F.locale=function(I,A){if(!I)return this.$L;var k=this.clone(),B=x(I,A,!0);return B&&(k.$L=B),k},F.clone=function(){return S.w(this.$d,this)},F.toDate=function(){return new Date(this.valueOf())},F.toJSON=function(){return this.isValid()?this.toISOString():null},F.toISOString=function(){return this.$d.toISOString()},F.toString=function(){return this.$d.toUTCString()},$}(),P=O.prototype;return T.prototype=P,[["$ms",i],["$s",a],["$m",c],["$H",f],["$W",d],["$M",u],["$y",v],["$D",y]].forEach(function($){P[$[1]]=function(F){return this.$g(F,$[0],$[1])}}),T.extend=function($,F){return $.$i||($(F,O,T),$.$i=!0),T},T.locale=x,T.isDayjs=L,T.unix=function($){return T(1e3*$)},T.en=V[E],T.Ls=V,T.p={},T})})(un);const Xe=un.exports,pa=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=kt(s);return e.jsx(p.Tooltip,{title:s,children:e.jsx(p.Avatar,{alt:s,style:{backgroundColor:i},children:o})})};var fn={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")}}})})(fn);const ga=fn.exports;var hn={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Re,function(){return function(n,s,o){var i=s.prototype,a=function(u){return u&&(u.indexOf?u:u.s)},c=function(u,g,v,y,m){var w=u.name?u:u.$locale(),C=a(w[g]),D=a(w[v]),M=C||D.map(function(E){return E.slice(0,y)});if(!m)return M;var b=w.weekStart;return M.map(function(E,V){return M[(V+(b||0))%7]})},f=function(){return o.Ls[o.locale()]},d=function(u,g){return u.formats[g]||function(v){return v.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(y,m,w){return m||w.slice(1)})}(u.formats[g.toUpperCase()])},h=function(){var u=this;return{months:function(g){return g?g.format("MMMM"):c(u,"months")},monthsShort:function(g){return g?g.format("MMM"):c(u,"monthsShort","months",3)},firstDayOfWeek:function(){return u.$locale().weekStart||0},weekdays:function(g){return g?g.format("dddd"):c(u,"weekdays")},weekdaysMin:function(g){return g?g.format("dd"):c(u,"weekdaysMin","weekdays",2)},weekdaysShort:function(g){return g?g.format("ddd"):c(u,"weekdaysShort","weekdays",3)},longDateFormat:function(g){return d(u.$locale(),g)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};i.localeData=function(){return h.bind(this)()},o.localeData=function(){var u=f();return{firstDayOfWeek:function(){return u.weekStart||0},weekdays:function(){return o.weekdays()},weekdaysShort:function(){return o.weekdaysShort()},weekdaysMin:function(){return o.weekdaysMin()},months:function(){return o.months()},monthsShort:function(){return o.monthsShort()},longDateFormat:function(g){return d(u,g)},meridiem:u.meridiem,ordinal:u.ordinal}},o.months=function(){return c(f(),"months")},o.monthsShort=function(){return c(f(),"monthsShort","months",3)},o.weekdays=function(u){return c(f(),"weekdays",null,null,u)},o.weekdaysShort=function(u){return c(f(),"weekdaysShort","weekdays",3,u)},o.weekdaysMin=function(u){return c(f(),"weekdaysMin","weekdays",2,u)}}})})(hn);const ma=hn.exports,{useToken:ya}=p.theme;Xe.extend(ga),Xe.extend(ma);const Qe={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"}},pn=t=>{const{ooui:r,showTime:n=!1}=t,{required:s}=r;return e.jsx(me,{required:s,...t,children:e.jsx(wa,{ooui:r,showTime:n})})},wa=t=>{const{value:r,onChange:n,ooui:s,showTime:o}=t,{id:i,readOnly:a,required:c}=s,{token:f}=ya(),d=c&&!a?{backgroundColor:f.colorPrimaryBg}:void 0,h=o?"time":"date",u=y=>{n==null||n(y)},g=y=>{if(y===null){u(void 0);return}u(y.format(Qe[h].dateInternalFormat))},v=r?Xe(r,Qe[h].dateInternalFormat):void 0;return e.jsx(p.DatePicker,{style:{width:"100%",...d},placeholder:o?Qe.time.placeholder:Qe.date.placeholder,disabled:a,id:i,picker:"date",showTime:o,format:Qe[h].dateDisplayFormat,value:v,onChange:g})},va=t=>e.jsx("div",{style:{display:"flex",justifyContent:"center",alignContent:"center"},children:e.jsx(p.Checkbox,{checked:t,disabled:!0})}),Ca=t=>e.jsx(fa,{m2oField:t}),Sa=t=>e.jsx(Ht.Interweave,{content:t==null?void 0:t.toString().replace(/(?:\r\n|\r|\n)/g,"<br>")}),ba=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=Xe(t,Qe.date.dateInternalFormat).format(Qe.date.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},xa=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=Xe(t,Qe.time.dateInternalFormat).format(Qe.time.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},gn=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} )`})},Ta=t=>e.jsx(cn,{value:t}),Fa=t=>e.jsx(e.Fragment,{children:an(t)}),mn=t=>e.jsx("div",{style:{textAlign:"right"},children:t}),Oa=t=>e.jsx("img",{src:`data:image/*;base64,${t}`,style:{maxWidth:"50px",padding:"5px"}}),_a=(t,r,n,s)=>e.jsx(Zr,{ooui:n,value:t}),Da=(t,r,n,s)=>e.jsx(e.Fragment,{children:n.selectionValues.get(t)}),ka=(t,r,n,s)=>e.jsx(e.Fragment,{children:e.jsx(ha,{value:t,selectionValues:n.selectionValues,context:s})}),Va=(t,r,n,s)=>e.jsx(pa,{ooui:n,value:t});function bt(t){const{page:r=1,limit:n,total:s,treeView:o,results:i,onRequestPageChange:a,loading:c,onRowClicked:f,showPagination:d=!0,rowSelection:h,scrollY:u,colorsForResults:g={},statusForResults:v={},onChangeSort:y,sorter:m,onFetchChildrenForRecord:w,childField:C,rootTree:D=!1,context:M,readonly:b}=t,[E,V]=l.useState([]),[L,x]=l.useState([]),T=l.useRef(!1),S=l.useRef(null),{t:O}=l.useContext(ge),P=l.useRef(n),$=l.useContext(We),{title:F=void 0,setTitle:I=void 0}=(D?$:{})||{};l.useEffect(()=>{S.current=it(o);const X=ni(S.current,{boolean:va,many2one:Ca,text:Sa,one2many:gn,many2many:gn,progressbar:Ta,float_time:Fa,image:Oa,integer:mn,float:mn,reference:ka,tag:_a,selection:Da,date:ba,datetime:xa,avatar:Va},M);x(X),S.current.string&&F!==S.current.string&&(I==null||I(S.current.string))},[o]),l.useEffect(()=>{T.current=!1;const X=qr(S.current,i);V(X),P.current=n},[i]);const A=(r-1)*P.current+1,k=A-1+E.length,B=s===void 0?null:s===0?O("no_results"):O("summary").replace("{from}",A==null?void 0:A.toString()).replace("{to}",k==null?void 0:k.toString()).replace("{total}",s==null?void 0:s.toString()),_=()=>!d||o.isExpandable||c?null:s===void 0?e.jsx(p.Spin,{className:"pb-4"}):e.jsxs(p.Row,{align:"bottom",className:"pb-4",children:[e.jsx(p.Col,{span:12,children:e.jsx(p.Pagination,{total:s,pageSize:P.current===0?s:P.current,current:r,showSizeChanger:!1,onChange:a})}),e.jsx(p.Col,{span:12,className:"text-right",children:B})]});function W(){var re;const G=S.current.columns.filter(Q=>Q.sum!==void 0).map(Q=>({label:Q.sum,field:Q.id}));if(!G||G.length===0)return null;let N=[],Y=((re=h==null?void 0:h.selectedRowKeys)==null?void 0:re.length)>0?E.filter(Q=>h==null?void 0:h.selectedRowKeys.includes(Q.id)):E;return G.forEach(Q=>{const le=Y.reduce((R,Z)=>Z[Q.field]&&!isNaN(Z[Q.field])?R+Z[Q.field]:R,0);N.push(`${Q.label}: ${Math.round(le*100)/100}`)}),e.jsx("div",{className:"p-1 pb-0 pl-2 mt-2 ",children:N.join(", ")})}let J,j=u;if(S.current!==null){J=ca(L,E,600);const G=S.current;u&&G.columns.some(N=>N.sum!==void 0)&&(j=u-30)}return S.current===null?e.jsx(p.Spin,{style:{padding:"2rem"}}):e.jsxs("div",{children:[_(),c&&e.jsx(p.Spin,{className:"pb-4"}),e.jsx(mo.Table,{height:j,columns:J.columns,dataSource:E,loading:!1,loadingComponent:e.jsx(p.Spin,{}),onRowStyle:X=>{if(g[X.id])return{color:g[X.id]}},onRowStatus:oi(v)?X=>{if(v[X.id])return e.jsx(p.Badge,{color:v[X.id]})}:void 0,onRowDoubleClick:f,selectionRowKeys:h==null?void 0:h.selectedRowKeys,onRowSelectionChange:h==null?void 0:h.onChange,onChangeSort:y,sorter:m,readonly:b,expandableOpts:w?{expandIcon:H.PlusSquareOutlined,collapseIcon:H.MinusSquareOutlined,loadingIcon:H.LoadingOutlined,onFetchChildrenForRecord:w,childField:C}:void 0}),W()]})}function Ma(t,r){const{model:n,formView:s,treeView:o,onRowClicked:i,nameSearch:a,treeScrollY:c,domain:f=[],visible:d=!0,rootTree:h=!1,parentContext:u={},onChangeSelectedRowKeys:g}=t,[v,y]=l.useState(!1),[m,w]=l.useState(!1),C=l.useRef(!1),[D,M]=l.useState(),[b,E]=l.useState(),[V,L]=l.useState(),[x,T]=l.useState(),[S,O]=l.useState(200),P=l.useRef(),{height:$}=Ot(),F=l.useContext(dt),{processAction:I}=F||{},A=l.useContext(We),{setResults:k=void 0,setCurrentItemIndex:B=void 0,currentId:_=void 0,results:W=void 0,selectedRowItems:J=void 0,setSelectedRowItems:j=void 0,searchParams:X=[],setSearchParams:G=void 0,searchVisible:N=!0,setSearchVisible:Y=void 0,sorter:re=void 0,setSorter:Q=void 0,setTotalItems:le=void 0,setSearchTreeNameSearch:R=void 0,setTreeIsLoading:Z=void 0,searchValues:he={},setSearchValues:ve=void 0,limit:Ee=Ct,setLimit:Oe=void 0}=(h?A:{})||{},{submit:Ie,clear:Pe,fetchResults:ie,tableRefreshing:de,searchFilterLoading:Ae,searchError:we,page:De,offset:Ye,getResults:te,requestPageChange:Fe,changeSort:_e,fetchChildrenForRecord:ke,colorsForResults:ce,statusForResults:fe,totalItems:Ne}=rn({model:D,setSearchTreeNameSearch:R,setSelectedRowItems:Ce,setSearchParams:G,setSearchValues:ve,searchParams:X,setSearchVisible:Y,setTreeIsLoading:Z,nameSearch:a,searchNameGetDoneRef:C,context:u,formView:V,treeView:b,sorter:re,setSorter:Q,setCurrentItemIndex:B,setResultsActionView:k,resultsActionView:W,domain:f,currentId:_,setActionViewTotalItems:le,limit:Ee,setLimit:Oe});l.useImperativeHandle(r,()=>({refreshResults:()=>{C.current=!1,ie()},getFields:()=>b==null?void 0:b.fields,getDomain:()=>f})),l.useEffect(()=>{!m||d&&(C.current=!1,ie())},[De,Ye,m,d,a]);const ue=async()=>{w(!1),y(!0),T(void 0),Z==null||Z(!0);try{await ze(),w(!0)}catch(Te){T(Te),Z==null||Z(!1)}finally{y(!1)}},ze=async()=>{M(n);let Te=s;s||(Te=await K.getHandler().getView({model:n,type:"form",context:u}));let Ve=o;o||(Ve=await K.getHandler().getView({model:n,type:"tree",context:u})),L(Te),E(Ve)};l.useEffect(()=>{ue()},[n]);const $e=Te=>{Oe==null||Oe(Te)},ee=async Te=>{const{id:Ve}=Te;P.current||(P.current=await K.getHandler().treeButOpen({id:b.view_id,model:D,context:u}));const Je=P.current[0][2];await(I==null?void 0:I({actionData:Je,fields:b.fields,values:{active_id:Ve,...Te},context:u}))},ae=async Te=>{const{id:Ve}=Te;if(b!=null&&b.isExpandable){try{await ee(Te)}catch(Je){Le(Je)}return}i({id:Ve,model:D,formView:V,treeView:b})};function Ce(Te){const Ve=te().filter(Je=>Te.includes(Je.id));j==null||j(Ve),g==null||g(Te)}function ye(){return b!=null&&b.isExpandable?$-160:$-(S+210)}const Se=()=>!b||!V?null:e.jsxs(e.Fragment,{children:[e.jsx(Qt,{fields:{...V.fields,...b.fields},searchFields:jr([V.search_fields,b.search_fields]),onClear:Pe,limit:Ee,offset:Ye,isSearching:Ae,onSubmit:Ie,onLimitChange:$e,setSearchFilterHeight:O,searchError:we,searchVisible:N,searchValues:he}),e.jsx(bt,{context:u,total:Ne,limit:Ee,page:De,treeView:b,results:te(),onRequestPageChange:Fe,loading:de,onRowClicked:ae,scrollY:c||ye(),colorsForResults:ce,statusForResults:fe,rowSelection:{selectedRowKeys:J==null?void 0:J.map(Te=>Te.id),onChange:Ce},sorter:re,onChangeSort:_e,onFetchChildrenForRecord:b.isExpandable?ke:void 0,childField:b.field_parent,rootTree:h})]}),xe=x||we;return xe?e.jsx(p.Alert,{className:"mt-10",message:xe,type:"error",banner:!0}):e.jsx("div",{style:d?{}:{display:"none"},children:v?e.jsx(p.Spin,{}):Se()})}const er=l.forwardRef(Ma),tr=t=>{const{visible:r,onCloseModal:n,onSelectValues:s,model:o,nameSearch:i,domain:a,context:c={}}=t,[f,d]=l.useState(!1),{modalWidth:h,modalHeight:u}=Ot(),{t:g}=l.useContext(ge),[v,y]=l.useState([]),m=async()=>{await new Promise(M=>setTimeout(M,5)),n()},w=async M=>{const{id:b}=M;s([b])};function C(){if(v.length===0){m();return}s(v)}const D=()=>e.jsxs(e.Fragment,{children:[e.jsx(er,{model:o,nameSearch:i,onRowClicked:w,treeScrollY:u*.3,domain:a,parentContext:c,onChangeSelectedRowKeys:M=>{y(M)}}),e.jsx(p.Divider,{}),e.jsx(p.Row,{justify:"end",children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.FileAddOutlined,{}),onClick:()=>{d(!0)},children:g("new")}),e.jsx(p.Button,{icon:e.jsx(H.CheckOutlined,{}),onClick:()=>{C()},type:"primary",children:g("ok")}),e.jsx(p.Button,{icon:e.jsx(H.CloseOutlined,{}),onClick:m,children:g("cancel")})]})})]});return e.jsxs(e.Fragment,{children:[e.jsx(p.Modal,{title:g("search"),centered:!0,width:h,open:r&&!f,closable:!0,onCancel:m,footer:null,destroyOnClose:!0,maskClosable:!1,children:D()}),e.jsx(ft,{model:o,visible:f,parentContext:c,onSubmitSucceed:M=>{d(!1),m(),s([M])},onCancel:()=>{d(!1),m()}})]})},{error:Ea}=p.Modal,Mt=t=>{Ea({title:"Error",icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:t})},{defaultAlgorithm:Ia,defaultSeed:Aa}=p.theme,yn=Ia(Aa),wn=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(vn,{ooui:r})})},vn=t=>{const{value:r,onChange:n,ooui:s}=t,{required:o,relation:i,readOnly:a,context:c,id:f,domain:d}=s,h=o&&!a?{backgroundColor:yn.colorPrimaryBg}:void 0,[u,g]=l.useState(!1),[v,y]=l.useState(!1),[m,w]=l.useState(!1),[C,D]=l.useState(),M=l.useRef(!1),[b,E]=l.useState(""),V=l.useRef(),L=l.useContext(Me),{domain:x,getValues:T,getFields:S,getContext:O,elementHasLostFocus:P}=L||{},$=l.useRef([]),[F,I]=l.useState([]),A=r&&r[0]||void 0,k=r&&r[1]||"";l.useEffect(()=>{!Array.isArray(r)&&r&&j(r)},[r]),l.useEffect(()=>{A&&k.length===0?j(A):A&&k.length>0?E(k):!A&&!k&&E(V.current||"")},[r]);const B=Y=>{n==null||n(Y),P==null||P()},_=Y=>{V.current=Y.target.value,B([void 0,""])},W=async()=>{if(!m&&b!==k){if(await new Promise(Y=>setTimeout(Y,100)),M.current){B([void 0,""]);return}w(!0);try{if($.current&&$.current.length>0)J(V.current);else{const Y=await K.getHandler().nameSearch({model:i,payload:V.current,context:{...O==null?void 0:O(),...c}});Y.length===1?(V.current=void 0,B(Y[0])):J(V.current)}}catch(Y){Mt(Y)}finally{w(!1)}}},J=async Y=>{if(await X(),$.current&&$.current.length>0){const re=await K.getHandler().searchAllIds({params:$.current,model:i,context:{...O==null?void 0:O(),...c},totalItems:2});re.length===1?j(re[0]):(D(Y),g(!0));return}D(Y),g(!0)},j=async Y=>{w(!0);try{const re=await K.getHandler().execute({action:"name_get",payload:[Y],model:i,context:{...O==null?void 0:O(),...c}});B([Y,re[0][1]])}catch(re){Mt(re)}finally{w(!1)}};async function X(){d&&($.current=await K.getHandler().evalDomain({domain:d,values:ct({fields:S(),values:T()}),fields:S(),context:O()})),x&&x.length>0&&($.current=$.current.concat(se.transformDomainForChildWidget({domain:x,widgetFieldName:f}))),I($.current)}async function G(Y){Y.keyCode===13?(Y.preventDefault(),Y.stopPropagation(),await W()):Y.code==="Backspace"&&A!==void 0&&(Y.preventDefault(),Y.stopPropagation(),B([void 0,""]))}const N=o&&!a?$a:p.Input;return e.jsxs(p.Row,{gutter:8,wrap:!1,children:[e.jsx(p.Col,{flex:"auto",children:e.jsx(N,{type:"text",value:b,disabled:a,onChange:_,style:h,onBlur:W,onKeyDown:G,suffix:e.jsx(Rt,{id:A,model:i,context:{...O==null?void 0:O(),...c}})})}),e.jsx(p.Col,{flex:"32px",style:{paddingRight:0},children:e.jsx(p.Button,{icon:e.jsx(H.FolderOpenOutlined,{}),disabled:A===void 0||k===""||b===void 0,onClick:()=>{y(!0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1})}),e.jsx(p.Col,{flex:"32px",style:{paddingLeft:0},children:e.jsx(p.Button,{icon:m?e.jsx(H.LoadingOutlined,{}):e.jsx(H.SearchOutlined,{}),disabled:a||m,onClick:()=>{M.current=!0,J(k)},style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},tabIndex:-1})}),e.jsx(tr,{model:i,domain:F,context:{...O==null?void 0:O(),...c},visible:u,nameSearch:A?void 0:C,onSelectValues:Y=>{g(!1),j(Y[0]),M.current=!1,V.current=void 0},onCloseModal:()=>{g(!1),M.current=!1}}),e.jsx(ft,{model:i,parentContext:{...O==null?void 0:O(),...c},id:r&&r[0],visible:v,onSubmitSucceed:Y=>{y(!1),j(Y)},onCancel:()=>{y(!1)},mustClearAfterSave:!0,readOnly:a})]})},$a=mt.default(p.Input)`
32
32
  .ant-input {
33
33
  background-color: ${yn.colorPrimaryBg};
34
34
  }
35
- `,Cn=Ke.default.createContext(null),La=({children:t,initialView:r})=>{const[n,s]=l.useState(r),[o,i]=l.useState(0),[a,c]=l.useState(!1);return e.jsx(Cn.Provider,{value:{currentView:n,setCurrentView:s,itemIndex:o,setItemIndex:i,manualTriggerChange:a,setManualTriggerChange:c},children:t})},{getValueForOperator:Sn}=se.graphProcessor,Et=.7,It=30,bn=t=>{const{model:r,domain:n,context:s,colorCondition:o,totalDomain:i,showPercent:a=!1,icon:c,suffix:f,field:d,operator:h,manualIds:u}=t,[g,v]=l.useState(!1),[y,m]=l.useState(),[w,C]=l.useState(),[D,M]=l.useState(),[b,E]=l.useState(0),[V,L]=l.useState(0),[x,T]=l.useState(),[S,O]=l.useState(),[P,$]=l.useState();l.useEffect(()=>{A()},[r,o]);async function F({domain:k,isTotal:B}){if(B)return await I({domain:k});if(d&&h){const _=u||await K.getHandler().searchAllIds({params:k,model:r,context:s}),W=await K.getHandler().readObjects({model:r,ids:_,fieldsToRetrieve:[d],context:s});return Sn({values:W.map(J=>J[d]),operator:h})}else return u?u.length:await K.getHandler().searchCount({model:r,params:k,context:s})}async function I({domain:k}){if(d&&h){const B=await K.getHandler().searchAllIds({params:k,model:r,context:s}),_=await K.getHandler().readObjects({model:r,ids:B,fieldsToRetrieve:[d],context:s});return Sn({values:_.map(W=>W[d]),operator:h})}else return await K.getHandler().searchCount({model:r,params:k,context:s})}async function A(){v(!0);let k,B;try{const _=await F({domain:n,isTotal:!1});if(m(_),i){const W=await K.getHandler().evalDomain({domain:i,values:{},context:s});k=await F({domain:W,isTotal:!0}),M(k)}if(k?(B=Math.round(_/k*100*100)/100,C(B)):C(0),o){const W=await K.getHandler().parseCondition({condition:o,values:{value:_,percent:B},context:s});T(W)}if(c)if(c.indexOf(":")!==-1){const W=await K.getHandler().parseCondition({condition:c,values:{value:_,percent:B},context:s});O(W)}else O(c)}catch(_){$(JSON.stringify(_))}v(!1)}return P?e.jsx(p.Alert,{className:"mt-10",message:P,type:"error",banner:!0}):g?e.jsx("div",{style:{padding:"1rem"},children:e.jsx(H.LoadingOutlined,{style:{height:"12px"}})}):e.jsx(Yt.default,{bounds:!0,onResize:k=>{var B,_;E((B=k.bounds)==null?void 0:B.height),L((_=k.bounds)==null?void 0:_.width)},children:({measureRef:k})=>a?e.jsx(Na,{value:y,total:D,percent:w,measureRef:k,height:b,width:V,color:x,icon:S,suffix:f}):e.jsx(Pa,{value:y,total:D,measureRef:k,height:b,width:V,color:x,icon:S,suffix:f})})};function xn(t,r){const s=document.createElement("canvas").getContext("2d");return s.font=r||getComputedStyle(document.body).font,s.measureText(t).width}function Pa({measureRef:t,width:r,height:n,total:s,value:o,color:i,icon:a,suffix:c}){let f=n*Et<It?It:n*Et;const d=o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0});let h=s?`${d}/${s}`:`${d}`;c&&(h+=" "+c);let u=xn(h,`bold ${Math.floor(f*1.03)}px sans-serif`);a&&(u=u*2),u>=r*.85&&(f=r*.85/u*f);const g=a&&Ue(a);return e.jsx("div",{ref:t,style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},children:e.jsxs(Wt.default,{style:{fontSize:f,margin:0,color:i},children:[g&&e.jsx(g,{style:{fontSize:f*.7}}),g?` ${h}`:h]})})}function Na({measureRef:t,height:r,width:n,percent:s,total:o,value:i,color:a,icon:c,suffix:f}){const d=r*.65;let h=d*Et<It?It:d*Et;const u=i==null?void 0:i.toLocaleString("es-ES",{useGrouping:!0});let g=o?`${u}/${o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0})}`:`${u}`;f&&(g+=" "+f);const v=`${s==null?void 0:s.toLocaleString("es-ES",{useGrouping:!0})}%`;let y=xn(v,`bold ${Math.floor(h*1.03)}px sans-serif`);c&&(y=y*1.5);const m=c&&Ue(c);return(y>=n*.85||h*2<d)&&(h=n*.85/y*h),e.jsx("div",{ref:t,style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden",flexDirection:"column",padding:"0.2rem"},children:e.jsxs(p.Row,{align:"middle",children:[m&&e.jsx(p.Col,{style:{fontSize:h*1,color:a,paddingRight:"10px"},children:e.jsx(m,{})}),e.jsxs(p.Col,{children:[e.jsx(Wt.default,{style:{fontSize:h*.8,margin:0,color:a},children:m?` ${s}%`:`${s}%`}),e.jsx(Wt.default,{style:{fontSize:h*.4,margin:0,color:a,textAlign:"center"},children:g})]})]})})}const rr=t=>r=>{const n=r.value.toLocaleString("es-ES",{useGrouping:!0});return{name:t==="pie"?r.x:r.type,value:n}},At=t=>{if(typeof t=="string"&&Ba(t))return parseFloat(t).toLocaleString("es-ES",{useGrouping:!0});if(Ha(t))return t.toLocaleString("es-ES",{useGrouping:!0});if(Ka(t)){const r=Ya(t);return r===null?t:Xe(t,$t.input[r]).format($t.output[r])}else return t},Ba=t=>/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/.test(t),Ha=t=>typeof t=="number"&&!isNaN(t),Tn={default:{padding:"auto",xAxis:{tickCount:5,label:{formatter:At}},yAxis:{label:{formatter:At}},legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("default")}},pie:{appendPadding:10,radius:.9,label:{type:"inner",offset:"-30%",content:({percent:t})=>`${(t*100).toFixed(0)}%`,style:{fontSize:14,textAlign:"center"}},legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("pie")},interactions:[{type:"element-active"}]},barGrouped:{isGroup:!0,legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("barGrouped")},xAxis:{label:{formatter:At}},yAxis:{label:{formatter:At}},label:{position:"middle",layout:[{type:"interval-adjust-position"},{type:"interval-hide-overlap"},{type:"adjust-color"}]}}};function Ka(t){return typeof t!="string"||t===void 0?!1:new Date(t).toString()!=="Invalid Date"}const $t={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 Ya(t){for(const r in $t.input)if(Xe(t,$t.input[r],!0).isValid())return r;return null}const{processGraphData:Wa}=se.graphProcessor,{getFieldsToRetrieve:qa}=se.graphFieldUtils,Ua=t=>{const{model:r,domain:n=[],context:s={},xml:o,limit:i,uninformedString:a,manualIds:c}=t,[f,d]=l.useState(!1),[h,u]=l.useState(),[g,v]=l.useState(),[y,m]=l.useState(),[w,C]=l.useState("line");return et.default(()=>{(async()=>{d(!0),u(void 0);const D=se.parseGraph(o);C(D.type||"line");const M=qa({ooui:D});let b,E;try{({values:b,fields:E}=await ja({model:r,domain:n,context:s,limit:i,order:D.timerange?D.x.name:null,fields:M,manualIds:c}))}catch(V){u("Error fetching graph data values: "+JSON.stringify(V)),d(!1);return}try{if(!b||!E){u("No values or fields returned"),d(!1);return}m(b);const V=Wa({ooui:D,values:b,fields:E,options:{uninformedString:a}});v(V)}catch(V){u("Error processing graph data: "+V),d(!1);return}d(!1)})()},[o,r,i,s,n]),{loading:f,error:h,type:w,values:g,evaluatedEntries:y}};async function Ga({model:t,context:r,fields:n}){return await K.getHandler().getFields({model:t,context:r,fields:n})}async function ja({fields:t,model:r,domain:n,context:s,order:o,limit:i,manualIds:a}){const c=await Ga({model:r,context:s,fields:t});if(a){let d=await K.getHandler().readObjects({model:r,ids:a,fieldsToRetrieve:t,context:s});return o&&(d=[...d].sort((h,u)=>h[o]-u[o])),{values:d,fields:c}}return{values:await K.getHandler().search({model:r,params:n,fields:t,context:s,limit:i,order:o}),fields:c}}const za={line:Kt.Line,bar:Kt.Column,pie:Kt.Pie},Ja=t=>{var C;const{model:r,domain:n,context:s,xml:o,limit:i,manualIds:a}=t,{t:c}=l.useContext(ge),{error:f,loading:d,values:h,type:u,evaluatedEntries:g}=Ua({model:r,xml:o,limit:i,domain:n,context:s,uninformedString:c("uninformed"),manualIds:a});if(f)return e.jsx(p.Alert,{message:f,type:"error",banner:!0});if(d)return e.jsx(p.Spin,{});if(!h)return e.jsx(p.Alert,{message:"No data to display",type:"info"});const{data:v,isGroup:y,isStack:m}=h,w=za[u];return w?e.jsxs("div",{style:{padding:"1rem"},children:[e.jsx("p",{style:{textAlign:"right"},children:`${c("totalRegisters")} ${(C=g==null?void 0:g.length)==null?void 0:C.toLocaleString("es-ES",{useGrouping:!0})}`}),e.jsx(w,{...Za({type:u,data:v,isGroup:y,isStack:m})})]}):e.jsx(e.Fragment,{children:`Unknown graph type: ${u}`})};function Za(t){const{type:r,data:n,isGroup:s,isStack:o}=t;let i=Tn[r];return i||(i=Tn.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 Xa=(t,r)=>{const{view_id:n,model:s,context:o,domain:i,limit:a,manualIds:c}=t,[f,d]=l.useState(!1),[h,u]=l.useState(),[g,v]=l.useState(),y=l.useContext(We),{setGraphIsLoading:m=void 0}=y||{};l.useImperativeHandle(r,()=>({refresh:()=>{w()}})),l.useEffect(()=>{w()},[n]);async function w(){d(!0),m==null||m(!0);try{const C=await K.getHandler().getView({model:s,id:n,type:"graph",context:o});v(C.arch);const D=se.parseGraph(C.arch);u(D)}catch(C){return console.error(C),e.jsx(e.Fragment,{children:JSON.stringify(C)})}d(!1),m==null||m(!1)}if(f)return e.jsx("div",{style:{width:"100%",display:"flex",height:"20%",justifyContent:"center",alignContent:"center",padding:"1rem"},children:e.jsx(H.LoadingOutlined,{style:{height:"12px"}})});if(!h)return null;switch(h.type){case"indicatorField":case"indicator":{const C=h,D=C.type==="indicatorField"?{field:C.field,operator:C.operator}:{};return e.jsx(bn,{showPercent:C.showPercent,totalDomain:C.totalDomain,colorCondition:C.color,model:s,context:o,domain:i,icon:C.icon,suffix:C.suffix,manualIds:c,...D})}case"line":case"bar":case"pie":return e.jsx(Ja,{model:s,context:o,domain:i,xml:g,limit:a,manualIds:c});default:return e.jsx(e.Fragment,{children:`Graph ${h.type} not implemented`})}},Lt=l.forwardRef(Xa),{confirm:Qa}=p.Modal,Ra=({onOk:t,lang:r})=>{Qa({title:be("removeItems",r),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmRemove",r),okText:be("yesConfirmRemove",r),onOk:t,cancelText:be("cancel",r)})},{confirm:el}=p.Modal,tl=({onOk:t,lang:r})=>{el({title:be("unlinkItems",r),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmUnlink",r),okText:be("yesConfirmUnlink",r),onOk:t,cancelText:be("cancel",r)})},{useToken:rl}=p.theme,nl=t=>{const{title:r,readOnly:n,onCreateItem:s,onToggleViewMode:o,mode:i,onDelete:a,totalItems:c,currentItemIndex:f,onPreviousItem:d,onNextItem:h,isMany2Many:u,onSearchItem:g,selectedRowKeys:v,showCreateButton:y,showToggleButton:m}=t,{token:w}=rl();function C(){return e.jsx("div",{className:"inline-block w-3"})}function D(){return e.jsx("div",{className:"flex flex-grow h-8 text-white",style:{borderRadius:w.borderRadius,backgroundColor:w.colorPrimaryActive},children:e.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:e.jsx("span",{className:"pl-2 font-bold",children:r})})})}function M(){return e.jsx(Be,{tooltip:u?"Unlink":"Delete",icon:u?e.jsx(H.ApiOutlined,{}):e.jsx(H.DeleteOutlined,{}),onClick:a,disabled:c===0||n||i!=="form"&&v.length===0})}function b(){let V="_";return c===0?V="_":V=(f+1).toString(),e.jsxs("span",{className:"pl-1 pr-1",children:["(",V,"/",c,")"]})}function E(){return e.jsxs(e.Fragment,{children:[C(),e.jsx(Be,{tooltip:"Previous item",icon:e.jsx(H.LeftOutlined,{}),onClick:d}),b(),e.jsx(Be,{tooltip:"Next item",icon:e.jsx(H.RightOutlined,{}),onClick:h})]})}return e.jsxs("div",{className:"flex mb-2",children:[D(),e.jsxs("div",{className:"flex-none h-8 pl-2",children:[i!=="graph"&&y&&e.jsx(Be,{tooltip:"Create new item",icon:e.jsx(H.FileAddOutlined,{}),disabled:n,onClick:s}),u&&y&&e.jsx(Be,{tooltip:"Search existing item",icon:e.jsx(H.SearchOutlined,{}),disabled:n,onClick:g}),i!=="graph"&&C(),i!=="graph"&&M(),i==="form"&&E(),C(),m&&e.jsx(Be,{tooltip:"Toggle view mode",icon:e.jsx(H.AlignLeftOutlined,{}),onClick:o})]})]})},ol={form:se.Form,tree:se.Tree,graph:Lt};function sl(t){const r=t.map(s=>s.id);return t.filter((s,o)=>{const{id:i}=s;return!r.includes(i,o+1)})}const il=t=>{var $e;const{value:r,onChange:n,ooui:s,views:o}=t,{items:i=[]}=r||{},{currentView:a,setCurrentView:c,itemIndex:f,setItemIndex:d}=l.useContext(Cn),h=l.useContext(Me),{activeId:u,getFields:g,getValues:v,getContext:y,domain:m}=h||{},{lang:w,t:C}=l.useContext(ge),[D,M]=l.useState(!1),[b,E]=l.useState(!1),[V,L]=l.useState(),[x,T]=l.useState(!1),[S,O]=l.useState(!1),[P,$]=l.useState(),[F,I]=l.useState([]),[A,k]=l.useState(!1),B=l.useRef([]),[_,W]=l.useState(),J=l.useRef(),[j,X]=l.useState(void 0),{readOnly:G,relation:N,context:Y,domain:re}=s,Q=s.type==="many2many",{id:le}=s,R=i.filter(ee=>(ee.values||ee.treeValues)&&ee.operation!=="pendingRemove"),Z=l.useRef();l.useEffect(()=>{if(Z.current!==a){Z.current=a,he();return}he()},[i,a]);const he=l.useCallback(()=>{(a==="form"&&i.some(ee=>!ee.values)||a==="tree"&&i.some(ee=>!ee.treeValues))&&Ee()},[i,a]);l.useEffect(()=>{Ie()},[m]);const ve=ee=>{var ae,Ce;n==null||n({fields:((ae=o.get("form"))==null?void 0:ae.fields)||((Ce=o.get("tree"))==null?void 0:Ce.fields),items:sl(ee)})},Ee=async()=>{await Oe(),f>R.length-1&&f!==0&&d(0)},Oe=async ee=>{var ae,Ce,ye;E(!0),M(!1),L(void 0);try{const[Se,xe]=await zt({treeView:{arch:(ae=o.get("tree"))==null?void 0:ae.arch,fields:(Ce=o.get("tree"))==null?void 0:Ce.fields},formView:{fields:((ye=o.get("form"))==null?void 0:ye.fields)||{}},model:N,items:i,context:{...y==null?void 0:y(),...Y},currentView:ee||a});return J.current||(J.current=Se.map(Te=>Te.id)),(a||ee)==="tree"&&xe&&X(xe),ve(Se),Se}catch(Se){L(Se)}finally{E(!1)}};async function Ie(){re&&(B.current=await K.getHandler().evalDomain({domain:re,values:ct({fields:g(),values:v()}),fields:g(),context:y()})),m&&m.length>0&&(B.current=B.current.concat(se.transformDomainForChildWidget({domain:m,widgetFieldName:le})))}const Pe=()=>{const ee=Array.from(o.keys()),ae=ee[(ee.indexOf(a)+1)%ee.length];a==="form"?we(()=>{c(ae)}):c(ae)},ie=()=>{f>0&&(a==="form"?we(()=>{d(f-1)}):d(f-1))},de=()=>{const ee=R.length;f<ee-1&&(a==="form"?we(()=>{d(f+1)}):d(f+1))},Ae=async()=>{const ee=R[f].id,ae=(await K.getHandler().readObjects({model:N,ids:[ee],fields:o.get("form").fields,context:{...y==null?void 0:y(),...Y}}))[0],Ce=(await K.getHandler().readObjects({model:N,ids:[ee],fields:o.get("tree").fields,context:{...y==null?void 0:y(),...Y}}))[0],ye=i.map(Se=>Se.id===ee?{...Se,operation:"original",values:ae,treeValues:Ce}:Se);ve(ye)},we=ee=>{D?vt({lang:w,onOk:()=>{Ae(),ee(),M(!1)}}):ee()},De=()=>{if(Q){tl({lang:w,onOk:()=>{a==="form"?Fe():_e()}});return}Ra({lang:w,onOk:()=>{a==="form"?Fe():_e()}})},Ye=async()=>{const{inv_field:ee}=s;let ae;ee&&u&&(ae={[ee]:u}),a==="form"?we(()=>{k(!0),$({defaultValues:ae}),T(!0)}):(k(!0),$({defaultValues:ae}),T(!0))},te=async()=>{a==="form"?we(()=>{O(!0)}):O(!0)},Fe=async()=>{E(!0),M(!1),L(void 0);try{if(R[f].id>0){const ee=i.map(ae=>ae.id===R[f].id?{...ae,operation:"pendingRemove"}:ae);ve(ee)}else ve(i.filter(ee=>ee.id!==R[f].id))}catch(ee){L(ee)}d(0),E(!1)},_e=async()=>{const ee=R.filter(ae=>F.includes(ae.id));E(!0),M(!1),L(void 0);try{const ae=ee.map(ye=>ye.id),Ce=i.filter(ye=>!(ae.includes(ye.id)&&ye.id<0)).map(ye=>ae.includes(ye.id)?{...ye,operation:"pendingRemove"}:ye);ve(Ce)}catch(ae){L(ae)}d(0),E(!1)},ke=(ee,ae,Ce,ye=!1)=>{let Se;if(ye)Se=i.concat({id:ee,operation:"pendingLink",values:{...Ce,id:ee},treeValues:{...Ce,id:ee}});else if(ee)Se=i.map(xe=>xe.id===ee?{id:ee,operation:ee>0?"pendingUpdate":"pendingCreate",values:{...Ce,id:ee},treeValues:{...Ce,id:ee}}:xe);else{const xe=si(i);Se=i.concat({id:xe,operation:"pendingCreate",values:{...Ce,id:xe},treeValues:{...Ce,id:xe}})}ve(Se),A||T(!1)},ce=async ee=>{const{id:ae}=ee;let Ce=i;const ye=i.find(Se=>Se.id===ae);(ye==null?void 0:ye.values)===void 0&&(Ce=await Oe("form")),$(Ce.find(Se=>Se.id===ae)),k(!1),T(!0)},fe=async ee=>{E(!0);let ae=i;const Ce=ee.filter(ye=>!i.find(Se=>Se.id===ye));try{for(const ye of Ce){const Se=(await K.getHandler().readObjects({model:N,ids:[ye],fields:o.get("form").fields,context:{...y==null?void 0:y(),...Y}}))[0],xe=(await K.getHandler().readObjects({model:N,ids:[ye],fields:o.get("tree").fields,context:{...y==null?void 0:y(),...Y}}))[0];ae.push({id:ye,operation:"pendingLink",values:Se,treeValues:xe})}ve(ae)}catch(ye){L(ye)}finally{E(!1)}};function Ne(){const ee=ol[a];if(a==="graph")return se.parseGraph(o.get("graph").arch).string;{const ae=new ee(o.get(a).fields);return ae.parse(o.get(a).arch),ae.string}}const ue=()=>{var ae,Ce,ye,Se;if(a==="form")return R.length===0?C("noCurrentEntries"):a!==Z.current&&i.some(xe=>!xe.values)?e.jsx(p.Spin,{}):e.jsx(ut,{formView:o.get("form"),values:(ae=R[f])==null?void 0:ae.values,parentContext:{...y==null?void 0:y(),...Y},model:N,id:(Ce=R[f])==null?void 0:Ce.id,submitMode:"values",onFieldsChange:xe=>{var ze;const Te=(ze=R[f])==null?void 0:ze.id,Ve=i.map(rt=>rt.id===Te?{...rt,operation:rt.operation==="original"?"pendingUpdate":rt.operation,values:{...xe,id:Te},treeValues:{...xe,id:Te}}:rt);ve(Ve),M(!0)},readOnly:G});let ee=[];if(R.some(xe=>xe.treeValues)&&(ee=_?at({resultsToSort:R.map(xe=>xe.treeValues),sorter:_,fields:{...o.get("tree").fields,...((ye=o.get("form"))==null?void 0:ye.fields)||{}}}):R.map(xe=>xe.treeValues)),a==="tree")return e.jsx(bt,{total:R.length,limit:R.length,treeView:o.get("tree"),results:ee,loading:b,onRowClicked:((Se=o.get("form"))==null?void 0:Se.fields)!==void 0?ce:void 0,showPagination:!1,rowSelection:{selectedRowKeys:F,onChange:I},sorter:_,onChangeSort:W,context:{...y==null?void 0:y(),...Y},colorsForResults:j,readonly:G});if(a==="graph"){const xe=[[`${s.inv_field}`,"=",u]];return e.jsx(Lt,{view_id:o.get("graph").view_id,model:s.relation,domain:xe,context:{...y==null?void 0:y(),...Y},limit:0})}};if(V)return e.jsx(p.Alert,{className:"mt-10",message:V,type:"error",banner:!0});const je=A;return b?e.jsx(p.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(nl,{mode:a,title:Ne(),readOnly:G,isMany2Many:Q,formHasChanges:D,totalItems:R.length,currentItemIndex:f,onDelete:De,onCreateItem:Ye,onToggleViewMode:Pe,onPreviousItem:ie,onNextItem:de,onSearchItem:te,selectedRowKeys:F,showCreateButton:(($e=o.get("form"))==null?void 0:$e.fields)!==void 0,showToggleButton:o.size>1}),ue(),e.jsx(ft,{formView:o.get("form"),model:N,id:P==null?void 0:P.id,submitMode:"2many",values:P==null?void 0:P.values,defaultValues:P==null?void 0:P.defaultValues,visible:x,onSubmitSucceed:ke,parentContext:{...y==null?void 0:y(),...Y},onCancel:()=>{k(!1),T(!1)},readOnly:G,mustClearAfterSave:je}),e.jsx(tr,{domain:B.current,model:N,context:{...y==null?void 0:y(),...Y},visible:S,onSelectValues:async ee=>{O(!1),fe(ee)},onCloseModal:()=>{O(!1)}})]})},Fn=t=>{const{ooui:r}=t,{mode:n,relation:s,views:o,required:i,context:a}=r;let c;const[f,d]=l.useState(!0),[h,u]=l.useState(),[g,v]=l.useState(new Map),y=l.useContext(Me),{getContext:m}=y||{};et.default(()=>{C()},[r]);const w=async M=>o&&o[M]?o[M]:await K.getHandler().getView({model:s,type:M,context:{...m==null?void 0:m(),...a}}),C=async()=>{d(!0),u(void 0);try{if(n&&n.length>0){for(const M of n){const b=await w(M);g.set(M,b)}v(g)}else{const M=await w("form"),b=await w("tree");g.set("form",M),g.set("tree",b),v(g)}}catch(M){u(JSON.stringify(M))}finally{d(!1)}};if(n&&n.length>0?c=n[0]:c="tree",f)return e.jsx(p.Spin,{});if(h)return e.jsx(p.Alert,{className:"mt-10",message:h,type:"error",banner:!0});const D=async(M,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(La,{initialView:c,children:e.jsx(me,{required:i,type:"array",validator:D,...t,children:e.jsx(il,{ooui:r,views:g})})})},{useToken:al}=p.theme,On=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"number",...t,children:e.jsx(ll,{ooui:r})})},ll=t=>{const{ooui:r,value:n,onChange:s}=t,{id:o,readOnly:i,required:a}=r,{token:c}=al(),f=a&&!i?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useRef(),[h,u]=l.useState(),g=l.useContext(Me),{elementHasLostFocus:v}=g||{};l.useEffect(()=>{u(an(n))},[n]);const y=C=>{s==null||s(C)};function m(C){d.current=C.target.value,u(C.target.value)}async function w(){y(da(h)),await new Promise(C=>setTimeout(C,300)),v==null||v()}return e.jsx(p.Input,{value:h,disabled:i,className:"w-full",style:f,id:o,placeholder:"00:00",onChange:m,onBlur:w})};function nr(t){const{ooui:r,showLabel:n=!0,responsiveBehaviour:s}=t,o=Ue(r.icon||"");return e.jsx(e.Fragment,{children:(r.label||o)&&n?e.jsx(mr.FieldSet,{label:r.label,icon:o,children:e.jsx(Zt,{container:r.container,responsiveBehaviour:s})}):e.jsx(Zt,{container:r.container,responsiveBehaviour:s})})}const{TabPane:cl}=p.Tabs;function _n(t){const{ooui:r,responsiveBehaviour:n}=t,s=r.pages;function o(i){if(i){const a=Ue(i);return a&&e.jsx(a,{})}}return e.jsx(p.Tabs,{defaultActiveKey:"1",tabPosition:r.tabPosition,children:s.filter(i=>!i.invisible).map(i=>e.jsx(cl,{tab:e.jsxs(e.Fragment,{children:[o(i.icon)," ",i.label]}),children:e.jsx(nr,{ooui:i,showLabel:!1,responsiveBehaviour:n})},i.label))})}const{useToken:dl}=p.theme,{TextArea:or}=p.Input,Dn=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o,height:i,translatable:a}=r,{token:c}=dl(),f=o&&!s?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useContext(Me),{elementHasLostFocus:h}=d||{};return e.jsx(me,{required:o,...t,children:a?e.jsx(ul,{field:n,height:i,requiredStyle:f}):e.jsx(or,{disabled:s||a,style:{minHeight:i?i+"px":"100%",...f},rows:4,onBlur:h})})},ul=({value:t,field:r,requiredStyle:n,onChange:s,height:o})=>{const i=l.useContext(Me),{activeId:a,activeModel:c,fetchValues:f,formHasChanges:d,elementHasLostFocus:h}=i||{},[u,g]=l.useState(!1),{t:v}=l.useContext(ge);return a?e.jsxs(e.Fragment,{children:[e.jsx("div",{onClick:()=>{if(d!=null&&d()){Ze(v("saveBeforeTranslate"));return}u||g(!0)},children:e.jsx(or,{value:t,onChange:y=>{s==null||s(y.target.value)},style:{height:o?o+"px":"100%",cursor:"pointer",pointerEvents:"none",...n},id:r,disabled:!0,rows:4,onBlur:h})}),e.jsx(Dr,{id:a,model:c,field:r,visible:u,onCloseModal:()=>{g(!1)},onSubmitSucceed:()=>{g(!1),f==null||f()}})]}):e.jsxs(e.Fragment,{children:[e.jsx(p.Row,{gutter:8,wrap:!1,children:e.jsx(or,{value:t,onChange:y=>{s==null||s(y.target.value)},style:{height:o?o+"px":"100%",...n},id:r,rows:4,onBlur:h})}),e.jsx(p.Row,{justify:"end",style:{paddingTop:5},children:e.jsx(Be,{tooltip:v("translate"),icon:e.jsx(H.TranslationOutlined,{}),onClick:async()=>{d!=null&&d()?Ze(v("saveBeforeTranslate")):Ze(v("enterTextBeforeTranslate"))},children:v("translate")})})]})},kn=t=>{const{ooui:r}=t,{label:n,icon:s}=r,o=Ue(s||"");return e.jsx(p.Divider,{orientation:"left",className:"text-sm",children:(o||n)&&e.jsxs(p.Space,{children:[o?e.jsx(o,{}):null,n]})})},fl=({model:t,context:r,locale:n,selectedRegistersToExport:s,domain:o,limit:i,onClose:a})=>{const c=l.useRef({}),f=l.useRef(new Map),d=l.useCallback(async w=>{if(w.selectedKeys===void 0||w.selectedKeys.length===0){Ze(be("selectAtLeastOneField",n));return}let C=o;w.registersAmount==="selected"&&(s==null?void 0:s.length)!==0&&(C=[["id","in",s==null?void 0:s.map(b=>b.id)]]);const{datas:D}=await K.getHandler().exportData({model:t,fields:wl({keys:w.selectedKeys,fields:c.current}),domain:C,limit:w.registersAmount==="all"?0:i,context:r,format:w.exportType});a(),await new Promise(b=>setTimeout(b,200));const M=await st(D);_t(D,M.mime)},[n,t,o,i,r,a]),h=l.useCallback(async()=>{const w=await K.getHandler().getFields({model:t,context:r,fields:[]});return c.current["/"]=w,Vn({fields:w})},[t,r,c]),u=l.useCallback(async w=>{const D=ir(w,c.current)[sr(w)],M=D.relation,b=await K.getHandler().getFields({model:M,context:r,fields:[]});for(const[E,V]of Object.entries(b))b[E].string=pl({parentTitle:D.string,title:V.string});return c.current[w]=b,Vn({fields:b,parentKey:w})},[c.current,t,r]),g=l.useCallback(async()=>{const w=await gl({model:t,context:r}),C=await yl({predefinedExports:w,fields:c.current,onGetFieldChilds:u});return{predefinedExports:w.map(M=>({...M,fields:M.fields.map(b=>{const E=sr(b.key),L=ir(b.key,c.current)[E];return{key:b.key,title:L.string}})})),keysWithChilds:C}},[c.current]),v=l.useCallback(async w=>{const C=await m("ir.exports"),D=await m("ir.exports.line"),M=await K.getHandler().create({model:"ir.exports",values:{name:w.name,resource:t},fields:C,context:r});return await Promise.all(w.fields.map(async b=>await K.getHandler().create({model:"ir.exports.line",values:{name:b.key,export_id:M},fields:D,context:r}))),{...w,id:M}},[]),y=l.useCallback(async w=>{await K.getHandler().delete({model:"ir.exports",ids:[w.id]})},[]),m=l.useCallback(async w=>{if(f.current.has(w))return f.current.get(w);const C=K.getHandler().getFields({model:w,context:r,fields:[]});f.current.set(w,C)},[f,r]);return{onGetFields:h,onGetFieldChilds:u,onExport:d,onGetPredefinedExports:g,onSavePredefinedExport:v,onRemovePredefinedExport:y}},Vn=({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=Mn(o);n.push({key:hl({key:s,parentKey:r}),title:o.string,tooltip:o.help,required:o.required,isLeaf:!i})}return n},Mn=t=>t.type==="many2one"||t.type==="one2many"||t.type==="many2many",hl=({parentKey:t,key:r})=>`${t?t+"/":""}${r}`,xt=t=>t.indexOf("/")===-1?t:t.split("/").slice(0,-1).join("/"),sr=t=>{if(t.indexOf("/")===-1)return t;const r=t.split("/");return r[r.length-1]},ir=(t,r)=>t.indexOf("/")===-1?r["/"]:r[xt(t)],pl=({title:t,parentTitle:r})=>`${r?r+" \u2192 ":""}${t}`,gl=async({model:t,context:r})=>{const n=await K.getHandler().search({model:"ir.exports",params:[["resource","=",t]],context:r}),s=n.flatMap(i=>i.export_fields),o=await K.getHandler().readObjects({model:"ir.exports.line",ids:s,context:r});return n.map(i=>({id:i.id,name:i.name,fields:i.export_fields.map(a=>({key:o.find(f=>f.id===a).name}))}))},ml=({fields:t,keys:r})=>vl([...new Set(r.filter(n=>{var s,o,i;if(n.indexOf("/")===-1)return!((s=t["/"])!=null&&s[n]);{const a=xt(n);console.log({key:n,parentKey:a,fields:t});const c=(o=t==null?void 0:t[xt(n)])==null?void 0:o[n];return console.log({exists:c}),!((i=t==null?void 0:t[xt(n)])!=null&&i[n])}}).map(n=>xt(n)))]),yl=async({predefinedExports:t,fields:r,onGetFieldChilds:n})=>{const s=t.flatMap(a=>a.fields.map(c=>c.key)),o=ml({fields:r,keys:s}),i=[];for(const a of o)i.push({key:a,childs:await n(a)});return i},wl=({keys:t,fields:r})=>t.map(n=>{const s=sr(n),i=ir(n,r)[s];return Mn(i)?`${n}/id`:n}),vl=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},En=t=>{const{visible:r,locale:n,onClose:s,model:o,context:i,selectedRegistersToExport:a,totalRegisters:c,domain:f,limit:d,visibleRegisters:h}=t,{onExport:u,onGetFieldChilds:g,onGetFields:v,onGetPredefinedExports:y,onSavePredefinedExport:m,onRemovePredefinedExport:w}=fl({model:o,context:i,domain:f,limit:d,selectedRegistersToExport:a,onClose:s,locale:n});return e.jsx(mr.ExportModal,{visible:r,locale:n,onSucceed:u,onCancel:s,selectedRegistersToExport:a&&a.length&&a.length>0?a.length:void 0,totalRegisters:c,onGetFieldChilds:g,onGetFields:v,visibleRegisters:h,onGetPredefinedExports:y,onSavePredefinedExport:m,onRemovePredefinedExport:w})},In=t=>{const{ooui:r}=t;return e.jsx(pn,{ooui:r})},An=t=>{const{ooui:r}=t;return e.jsx(pn,{ooui:r,showTime:!0})};var $n={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Re,function(){var n={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},s=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,o=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,c={},f=function(m){return(m=+m)+(m>68?1900:2e3)},d=function(m){return function(w){this[m]=+w}},h=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=function(w){if(!w||w==="Z")return 0;var C=w.match(/([+-]|\d\d)/g),D=60*C[1]+(+C[2]||0);return D===0?0:C[0]==="+"?-D:D}(m)}],u=function(m){var w=c[m];return w&&(w.indexOf?w:w.s.concat(w.f))},g=function(m,w){var C,D=c.meridiem;if(D){for(var M=1;M<=24;M+=1)if(m.indexOf(D(M,0,w))>-1){C=M>12;break}}else C=m===(w?"pm":"PM");return C},v={A:[a,function(m){this.afternoon=g(m,!1)}],a:[a,function(m){this.afternoon=g(m,!0)}],S:[/\d/,function(m){this.milliseconds=100*+m}],SS:[o,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[i,d("seconds")],ss:[i,d("seconds")],m:[i,d("minutes")],mm:[i,d("minutes")],H:[i,d("hours")],h:[i,d("hours")],HH:[i,d("hours")],hh:[i,d("hours")],D:[i,d("day")],DD:[o,d("day")],Do:[a,function(m){var w=c.ordinal,C=m.match(/\d+/);if(this.day=C[0],w)for(var D=1;D<=31;D+=1)w(D).replace(/\[|\]/g,"")===m&&(this.day=D)}],M:[i,d("month")],MM:[o,d("month")],MMM:[a,function(m){var w=u("months"),C=(u("monthsShort")||w.map(function(D){return D.slice(0,3)})).indexOf(m)+1;if(C<1)throw new Error;this.month=C%12||C}],MMMM:[a,function(m){var w=u("months").indexOf(m)+1;if(w<1)throw new Error;this.month=w%12||w}],Y:[/[+-]?\d+/,d("year")],YY:[o,function(m){this.year=f(m)}],YYYY:[/\d{4}/,d("year")],Z:h,ZZ:h};function y(m){var w,C;w=m,C=c&&c.formats;for(var D=(m=w.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(T,S,O){var P=O&&O.toUpperCase();return S||C[O]||n[O]||C[P].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function($,F,I){return F||I.slice(1)})})).match(s),M=D.length,b=0;b<M;b+=1){var E=D[b],V=v[E],L=V&&V[0],x=V&&V[1];D[b]=x?{regex:L,parser:x}:E.replace(/^\[|\]$/g,"")}return function(T){for(var S={},O=0,P=0;O<M;O+=1){var $=D[O];if(typeof $=="string")P+=$.length;else{var F=$.regex,I=$.parser,A=T.slice(P),k=F.exec(A)[0];I.call(S,k),T=T.replace(k,"")}}return function(B){var _=B.afternoon;if(_!==void 0){var W=B.hours;_?W<12&&(B.hours+=12):W===12&&(B.hours=0),delete B.afternoon}}(S),S}}return function(m,w,C){C.p.customParseFormat=!0,m&&m.parseTwoDigitYear&&(f=m.parseTwoDigitYear);var D=w.prototype,M=D.parse;D.parse=function(b){var E=b.date,V=b.utc,L=b.args;this.$u=V;var x=L[1];if(typeof x=="string"){var T=L[2]===!0,S=L[3]===!0,O=T||S,P=L[2];S&&(P=L[2]),c=this.$locale(),!T&&P&&(c=C.Ls[P]),this.$d=function(A,k,B){try{if(["x","X"].indexOf(k)>-1)return new Date((k==="X"?1e3:1)*A);var _=y(k)(A),W=_.year,J=_.month,j=_.day,X=_.hours,G=_.minutes,N=_.seconds,Y=_.milliseconds,re=_.zone,Q=new Date,le=j||(W||J?1:Q.getDate()),R=W||Q.getFullYear(),Z=0;W&&!J||(Z=J>0?J-1:Q.getMonth());var he=X||0,ve=G||0,Ee=N||0,Oe=Y||0;return re?new Date(Date.UTC(R,Z,le,he,ve,Ee,Oe+60*re.offset*1e3)):B?new Date(Date.UTC(R,Z,le,he,ve,Ee,Oe)):new Date(R,Z,le,he,ve,Ee,Oe)}catch{return new Date("")}}(E,x,V),this.init(),P&&P!==!0&&(this.$L=this.locale(P).$L),O&&E!=this.format(x)&&(this.$d=new Date("")),c={}}else if(x instanceof Array)for(var $=x.length,F=1;F<=$;F+=1){L[1]=x[F-1];var I=C.apply(this,L);if(I.isValid()){this.$d=I.$d,this.$L=I.$L,this.init();break}F===$&&(this.$d=new Date(""))}else M.call(this,b)}}})})($n);const Cl=$n.exports;Xe.extend(Cl);const Ln=t=>{const{ooui:r}=t;return e.jsx(me,{...t,children:e.jsx(Sl,{ooui:r})})},Sl=t=>{const r=(n,s)=>{t.onChange&&t.onChange(s)};return e.jsx(p.TimePicker,{onChange:r,value:t.value?Xe(t.value,"HH:mm:ss"):void 0})},Pn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(bl,{ooui:r})})},bl=t=>{const{value:r,onChange:n,ooui:s}=t,{required:o,selectionValues:i,readOnly:a}=s,c=r==null?void 0:r.split(","),[f,d]=l.useState([]),[h,u]=l.useState();return l.useEffect(()=>{if(!r){u(void 0),d([]);return}const g=r&&c&&c[0],v=r&&c&&c[1]&&parseInt(c[1]);d([v,void 0]),u(g)},[r]),e.jsxs(p.Row,{gutter:8,wrap:!1,children:[e.jsx(p.Col,{flex:"1",children:e.jsx(kr,{ooui:new se.Selection({name:"model_selection",selection:i,readonly:a,required:o}),onChange:g=>{u(g);let v=f[0]||0;g!==h&&(d([]),v=0);const y=`${g},${v}`;y!==r&&(n==null||n(y))},value:h})}),e.jsx(p.Col,{flex:"3",children:e.jsx(vn,{ooui:new se.Many2one({name:"object_value",relation:h,readonly:a,required:o}),value:f,onChange:g=>{d(g);const v=`${h},${g[0]||0}`;v!==r&&(n==null||n(v))}})})]})},{useToken:xl}=p.theme,Nn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(Tl,{ooui:r})})},Tl=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o,required:i,filenameField:a}=r,{token:c}=xl(),f=i&&!o?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useRef(null),{setFieldValue:h,getFieldValue:u}=l.useContext(Me)||{},{t:g}=l.useContext(ge),v=n?Rs(n):"",y=M=>{s==null||s(M)};async function m(){const M=await st(n),b=`data:${M==null?void 0:M.mime};base64,${n}`,E=document.createElement("a"),V=u(a),L=u("name");E.href=b,E.download=V||L,E.click()}async function w(){const M=await st(n);_t(n,M.mime)}async function C(M){M.stopPropagation(),M.preventDefault();const b=M.target.files[0],E=await Yr(b);y(E),a&&h(a,b.name)}function D(){h(a,void 0),y(void 0)}return e.jsxs(p.Row,{gutter:8,children:[e.jsxs(p.Col,{style:{paddingBottom:5},children:[e.jsx("input",{type:"file",id:"file",ref:d,style:{display:"none"},onChange:C}),e.jsx(p.Input,{type:"text",disabled:!0,style:f,value:v})]}),e.jsx(p.Col,{children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.FolderOpenOutlined,{}),disabled:o,onClick:()=>{d.current.click()},children:"Select"}),e.jsx(p.Button,{icon:e.jsx(H.EyeOutlined,{}),disabled:!n,onClick:w,children:g("open")}),e.jsx(Be,{tooltip:g("download"),disabled:!n,onClick:m,icon:e.jsx(H.DownloadOutlined,{})}),e.jsx(Be,{tooltip:g("clear"),disabled:o||!n,onClick:D,icon:e.jsx(H.ClearOutlined,{})})]})})]})},ar={tree:e.jsx(H.TableOutlined,{}),form:e.jsx(H.FormOutlined,{}),graph:e.jsx(H.AreaChartOutlined,{}),calendar:e.jsx(H.CalendarOutlined,{})};function Bn(t){return t?(ar==null?void 0:ar[t.type])||e.jsx(H.FormOutlined,{}):e.jsx(H.FormOutlined,{})}function lr(t){const{currentView:r,availableViews:n,onChangeView:s,disabled:o=!1,formHasChanges:i=!1,previousView:a}=t,{t:c,lang:f}=l.useContext(ge);function d(){const g=n.map((v,y)=>e.jsx(p.Menu.Item,{children:e.jsxs(p.Row,{wrap:!1,children:[e.jsx(p.Col,{flex:"none",style:{paddingRight:20},children:Bn(v)}),e.jsx(p.Col,{flex:"auto",style:{paddingRight:20},children:v.type.charAt(0).toUpperCase()+v.type.slice(1)}),e.jsx(p.Col,{flex:"none",children:e.jsx(H.CheckOutlined,{style:{opacity:r.view_id===v.view_id?1:0}})})]})},v.view_id||y));return e.jsx(p.Menu,{onClick:u,children:e.jsx(p.Menu.ItemGroup,{title:c("viewAs"),children:g})})}function h(g){if(i){vt({lang:f,onOk:()=>{g()}});return}g()}function u(g){h(()=>{const v=n.find(y=>y.view_id===parseInt(g.key));s(v)})}return e.jsxs("div",{style:{display:"flex"},children:[e.jsx(Be,{tooltip:a?c("viewAs")+" "+c(a.type):"",icon:Bn(a),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:()=>{u({key:a==null?void 0:a.view_id})},disabled:o||n.length===1}),e.jsx(p.Dropdown,{overlay:d(),disabled:o||n.length===1,children:e.jsx(p.Button,{style:{width:25,borderTopLeftRadius:0,borderBottomLeftRadius:0},icon:e.jsx(H.DownOutlined,{style:{fontSize:"0.5em"}}),onClick:g=>g.preventDefault()})})]})}function ht(t){const{icon:r,tooltip:n,items:s=[],onItemClick:o,label:i,disabled:a=!1}=t;function c(){const d=s==null?void 0:s.map((h,u)=>h.name==="divider"?e.jsx(p.Menu.Divider,{},"divider"+u):e.jsx(p.Menu.Item,{children:h.name},h.id));return e.jsx(p.Menu,{onClick:f,children:e.jsx(p.Menu.ItemGroup,{title:n,children:d})})}function f(d){const h=s.find(u=>isNaN(d.key)?u.id===d.key:u.id===parseInt(d.key));o(h)}return e.jsx(p.Dropdown,{overlay:c(),disabled:a||!s||s.length===0,children:e.jsxs(p.Button,{children:[r," ",i," ",e.jsx(H.DownOutlined,{})]})})}function He(t){const{onClick:r,disabled:n=!1,loading:s=!1,tooltip:o,icon:i,label:a,type:c="default"}=t,f=s?e.jsx(H.LoadingOutlined,{}):i;return e.jsxs(Be,{type:c,tooltip:o,onClick:r,disabled:n,children:[f,a]})}function Hn(t){const{disabled:r=!1}=t,{formHasChanges:n,onNewClicked:s}=l.useContext(We),{t:o,lang:i}=l.useContext(ge),a=()=>{if(n){vt({lang:i,onOk:()=>{s()}});return}s()};return e.jsx(He,{icon:e.jsx(H.FileAddOutlined,{}),tooltip:o("new"),onClick:a,disabled:r})}const{confirm:Fl}=p.Modal,Ol=({onOk:t,onCancel:r,lang:n})=>{Fl({title:be("unsavedChanges",n),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmRefreshWithoutSave",n),okText:be("discardAndRefresh",n),cancelText:be("cancel",n),onOk:t,onCancel:r})};async function Kn(t,r,n){const s=(await K.getHandler().getLogInfo({model:t,ids:[r]}))[0],{create_date:o,create_uid:i,id:a,write_date:c,write_uid:f}=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")+": "+f[1]," ",e.jsx("br",{}),n("lastUpdatedDate")+": "+c]}))}const _l=t=>{const{numberOfAttachments:r,disabled:n}=t,{t:s,lang:o}=l.useContext(ge),[i,a]=l.useState(!1),c=e.jsxs(p.Button,{disabled:n,children:[e.jsx(H.LinkOutlined,{}),`(${r})`,e.jsx(H.DownOutlined,{style:{fontSize:12}})]});return n?c:e.jsx(p.Popover,{onVisibleChange:f=>a(f),visible:i,placement:"bottom",content:Dl(t,a,o),title:s("attachments"),arrowContent:null,children:c})},Dl=(t,r,n)=>{const{attachments:s=[],loading:o,onAddNewAttachment:i,onopenAttachmentLink:a,onOpenAttachmentDetail:c,onListAllAttachments:f}=t;return o?e.jsx(p.Spin,{style:{padding:20}}):e.jsxs(e.Fragment,{children:[e.jsxs("a",{style:{display:"block",paddingBottom:5},href:"#",onClick:()=>{r(!1),f()},children:[e.jsx(H.TableOutlined,{})," ",be("listAllAttachments",n)]}),e.jsxs("a",{style:{display:"block"},href:"#",onClick:()=>{r(!1),i()},children:[e.jsx(H.FileAddOutlined,{})," ",be("addNewAttachment",n)]}),s.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("li",{className:"ant-dropdown-menu-item-divider"}),s.map(d=>{const h=d.link?H.LinkOutlined:H.DownloadOutlined;return e.jsxs(p.Row,{style:{paddingTop:4,paddingBottom:4},wrap:!1,align:"middle",children:[e.jsx(p.Col,{flex:"auto",children:d.name}),e.jsx(p.Col,{flex:"25px",style:{textAlign:"center"},children:(d.datas_fname||d.link)&&e.jsx(p.Tooltip,{title:d.link?be("openAttachmentLink",n):be("download",n),children:e.jsx(h,{style:{cursor:"pointer"},onClick:()=>{r(!1),a(d)}})})}),e.jsx(p.Col,{flex:"25px",style:{textAlign:"center"},children:e.jsx(p.Tooltip,{title:be("openAttachment",n),children:e.jsx(H.FormOutlined,{style:{cursor:"pointer"},onClick:()=>{r(!1),c(d)}})})})]},d.id)})]})]})};function kl(t){const{attachments:r,disabled:n=!1,onAddNewAttachment:s,onListAllAttachments:o,onViewAttachmentDetails:i}=t,{formRef:a}=l.useContext(We),[c,f]=l.useState(!1),[d,h]=l.useState([]),[u,g]=l.useState(!1),{t:v}=l.useContext(ge),y=l.useCallback(async()=>{f(!0);try{const C=await K.getHandler().readObjects({model:"ir.attachment",ids:r.map(D=>D.id),fieldsToRetrieve:["name","datas_fname","link"],context:a.current.getContext()});h(C.map(D=>({id:D.id,name:D.name,datas_fname:D.datas_fname,link:D.link})))}catch(C){Le(C)}f(!1)},r),m=l.useCallback(async C=>{if(C.link){window.open(C.link);return}g(!0);let D;try{D=(await K.getHandler().readObjects({model:"ir.attachment",ids:[C.id],context:a.current.getContext()}))[0]}catch(M){Le(M)}if(g(!1),!!D)if(D.datas){const M=await st(D.datas);_t(D.datas,M.mime)}else i(D)},[]),w=l.useCallback(async C=>{i(C)},[]);return l.useEffect(()=>{y()},[y]),e.jsxs(e.Fragment,{children:[e.jsx(_l,{numberOfAttachments:r.length,attachments:d,disabled:n,loading:c,onAddNewAttachment:s,onListAllAttachments:o,onopenAttachmentLink:m,onOpenAttachmentDetail:w}),e.jsx(p.Modal,{title:v("downloadingAttachment"),open:u,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(p.Spin,{})})]})}function Yn({toolbar:t}){const{availableViews:r,currentView:n,setCurrentView:s,onFormSave:o,formHasChanges:i,formIsSaving:a,currentId:c,results:f,setCurrentItemIndex:d,currentItemIndex:h,setCurrentId:u,currentModel:g,setRemovingItem:v,removingItem:y,duplicatingItem:m,setDuplicatingItem:w,setResults:C,formIsLoading:D,attachments:M,formRef:b,setFormHasChanges:E,previousView:V,setPreviousView:L,goToResourceId:x}=l.useContext(We),{t:T,lang:S}=l.useContext(ge),O=l.useContext(dt),{processAction:P}=O||{},$=l.useContext(Ge),{openRelate:F,openDefaultActionForModel:I}=$||{};function A(N){if(i){Ol({lang:S,onOk:()=>{N()}});return}N()}function k(N){if(i){vt({lang:S,onOk:()=>{N()}});return}N()}function B(){f&&f.length>h+1?(d==null||d(h+1),u==null||u(f[h+1].id)):f&&h+1===f.length&&(d==null||d(0),u==null||u(f[0].id))}function _(){f&&h>0?(d==null||d(h-1),u==null||u(f[h-1].id)):f&&h===0&&(d==null||d(f.length-1),u==null||u(f[f.length-1].id))}function W(){ot({confirmMessage:T("confirmRemoveItem"),lang:S,onOk:()=>{J()}})}async function J(){try{v==null||v(!0),await K.getHandler().delete({model:g,ids:[c]});const N=f==null?void 0:f.filter(re=>re.id!==c);C==null||C(N);let Y=0;h>0&&h<=f.length-1&&(Y=h-1),N!=null&&N[Y]?(u==null||u(N==null?void 0:N[Y].id),d==null||d(Y)):(u==null||u(void 0),d==null||d(void 0))}catch(N){Mt(JSON.stringify(N))}finally{v==null||v(!1)}}async function j(){try{w==null||w(!0);const N=await K.getHandler().duplicate({id:c,model:g,context:b.current.getContext()});N&&await(x==null?void 0:x(N))}catch(N){Mt(JSON.stringify(N))}finally{w==null||w(!1)}}const X=a||y||D||m;function G(N){P==null||P({actionData:N,values:b.current.getValues(),fields:b.current.getFields(),context:b.current.getContext(),onRefreshParentValues:()=>{b.current.fetchValues()}})}return n?e.jsxs(p.Space,{wrap:!0,children:[D&&e.jsxs(e.Fragment,{children:[e.jsx(p.Spin,{}),pt(),pt()]}),e.jsx(Hn,{disabled:a||D||y||m}),e.jsx(He,{icon:e.jsx(H.SaveOutlined,{}),tooltip:T("save"),disabled:!i||X,loading:a,onClick:o}),e.jsx(He,{icon:e.jsx(H.CopyOutlined,{}),tooltip:T("duplicate"),disabled:i||a||c===void 0||m||D,loading:m,onClick:j}),e.jsx(He,{icon:e.jsx(H.DeleteOutlined,{}),tooltip:T("delete"),disabled:a||c===void 0||y||m||D,loading:y,onClick:W}),pt(),e.jsx(He,{icon:e.jsx(H.InfoCircleOutlined,{}),tooltip:T("showLogs"),disabled:a||c===void 0||y||m||D,loading:!1,onClick:()=>{Kn(g,c,T)}}),e.jsx(He,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:T("refresh"),disabled:a||c===void 0||y||m||D,loading:!1,onClick:()=>{A(()=>{b.current.fetchValues()})}}),pt(),e.jsx(lr,{currentView:n,previousView:V,availableViews:r,onChangeView:N=>{L==null||L(n),E==null||E(!1),s==null||s(N)},disabled:X,formHasChanges:i}),pt(),e.jsxs(p.Space,{children:[e.jsx(He,{icon:e.jsx(H.LeftOutlined,{}),tooltip:T("previous"),disabled:X,loading:!1,onClick:()=>{k(_)}}),e.jsx(He,{icon:e.jsx(H.RightOutlined,{}),tooltip:T("next"),disabled:X,loading:!1,onClick:()=>{k(B)}})]}),pt(),e.jsx(ht,{icon:e.jsx(H.ThunderboltOutlined,{}),disabled:X,tooltip:T("actions"),items:t==null?void 0:t.action,onItemClick:async N=>{!N||!(await gt({onFormSave:o})).succeed||G(N)}}),e.jsx(ht,{icon:e.jsx(H.PrinterOutlined,{}),disabled:X,tooltip:T("reports"),items:t==null?void 0:t.print,onItemClick:async N=>{if(!N)return;const Y=await gt({onFormSave:o});!Y.succeed||G({...N,datas:{...N.datas||{},ids:[Y.currentId]}})}}),e.jsx(ht,{icon:e.jsx(H.EnterOutlined,{}),disabled:X,tooltip:T("related"),items:t==null?void 0:t.relate,onItemClick:async N=>{!N||!(await gt({onFormSave:o})).succeed||F({relateData:N,values:b.current.getValues(),fields:b.current.getFields(),action_id:N.id,action_type:N.type})}}),e.jsx(kl,{disabled:X,attachments:M,onAddNewAttachment:async()=>{const N=await gt({onFormSave:o});if(!N.succeed)return;const Y=N.currentId,re=g;I({model:"ir.attachment",values:{selection_associated_object:`${re},${Y}`},forced_values:{res_model:re,res_id:Y},initialViewType:"form"})},onListAllAttachments:async()=>{const N=await gt({onFormSave:o});if(!N.succeed)return;const Y=N.currentId;I({model:"ir.attachment",domain:[["res_model","=",`${g}`],["res_id","=",`${Y}`]],initialViewType:"tree"})},onViewAttachmentDetails:async N=>{!(await gt({onFormSave:o})).succeed||I({model:"ir.attachment",res_id:N.id,initialViewType:"form"})}})]}):null}function pt(){return e.jsx("div",{className:"inline-block w-2"})}async function gt({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:Vl}=p.theme,Wn=t=>{const{ooui:r,value:n,onChange:s,valueValidator:o,linkPrefix:i=""}=t,{id:a,readOnly:c,required:f}=r,{token:d}=Vl(),h=f&&!c?{backgroundColor:d.colorPrimaryBg}:void 0,u=l.useContext(Me),{elementHasLostFocus:g}=u||{},[v,y]=l.useState(!1),[m,w]=l.useState(!1);l.useEffect(()=>{c&&!v&&w(!1),!n&&!c&&(y(!0),w(!0))},[v,c]);const C=D=>{s==null||s(D.target.value)};return e.jsxs(p.Row,{gutter:8,wrap:!1,align:"middle",children:[c?null:e.jsx(p.Col,{flex:"32px",children:v?e.jsx(p.Button,{icon:e.jsx(H.CheckOutlined,{}),onClick:()=>{o(n)&&(y(!1),w(!1))},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1}):e.jsx(p.Button,{icon:e.jsx(H.EditOutlined,{}),onClick:()=>{y(!0),w(!0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1})}),e.jsx(p.Col,{flex:"auto",children:m?e.jsx(p.Input,{style:{borderTopLeftRadius:0,borderBottomLeftRadius:0,...h},id:a,onChange:C,value:n,onBlur:()=>{o(n)&&(y(!1),w(!1),g==null||g())}}):e.jsx("a",{href:`${i}${n}`,style:{color:d.colorPrimary,paddingRight:15},target:"_blank",children:n})})]})},qn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(Wn,{ooui:r,valueValidator:s=>s?Fo.default(s):!1})})},Un=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(Wn,{ooui:r,linkPrefix:"mailto:",valueValidator:s=>s?Oo.default(s):!1})})},Ml=t=>{const{visible:r,onIdSubmitted:n,onCancel:s,isSearching:o}=t,{t:i}=l.useContext(ge),a=l.useRef();function c(f){n(f.id)}return e.jsx(p.Modal,{title:i("goToResourceId"),centered:!0,open:r,footer:null,destroyOnClose:!0,onCancel:s,maskClosable:!1,afterOpenChange:f=>{var d;return f&&((d=a.current)==null?void 0:d.focus())},children:e.jsxs(p.Form,{layout:"vertical",onFinish:c,autoComplete:"off",children:[e.jsx(p.Form.Item,{name:"id",label:i("searchId"),rules:[{required:!0,type:"number"}],children:e.jsx(p.InputNumber,{style:{width:"100%"},autoFocus:!0,ref:a})}),e.jsx(p.Row,{align:"middle",justify:"end",children:e.jsx(p.Col,{children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.CloseOutlined,{}),htmlType:"button",onClick:s,disabled:o,children:i("cancel")}),e.jsx(p.Button,{loading:o,style:{marginLeft:15},icon:e.jsx(H.CheckOutlined,{}),htmlType:"submit",type:"primary",disabled:o,children:i("ok")})]})})})]})})},{useToken:El}=p.theme;function Gn(t){const{badgeNumber:r=0,...n}=t,{token:s}=El();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(Be,{...n,style:{width:46,zIndex:0}})]})}function Il({refreshGraph:t}){const{t:r}=l.useContext(ge),{availableViews:n,currentView:s,setCurrentView:o,searchParams:i,searchVisible:a,setSearchVisible:c,graphIsLoading:f,previousView:d,setPreviousView:h}=l.useContext(We);return e.jsxs(p.Space,{wrap:!0,children:[e.jsx(Gn,{icon:e.jsx(H.FilterOutlined,{style:{color:a?"white":void 0}}),tooltip:r("advanced_search"),type:a?"primary":"default",onClick:()=>{c==null||c(!a)},disabled:f,badgeNumber:i==null?void 0:i.length}),e.jsx(He,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:r("refresh"),disabled:f,loading:!1,onClick:()=>{t()}}),e.jsx(lr,{currentView:s,availableViews:n,onChangeView:u=>{h==null||h(s),o==null||o(u)},disabled:!1,previousView:d})]})}const{useToken:Al}=p.theme,{Title:$l,Text:Pt}=p.Typography;function Nt(t){const{title:r,children:n}=t,{title:s,currentView:o,currentId:i,currentItemIndex:a,results:c,totalItems:f,selectedRowItems:d}=l.useContext(We),{t:h}=l.useContext(ge),{token:u}=Al();function g(){if((o==null?void 0:o.type)==="form")return i?f===0?e.jsxs(e.Fragment,{children:[h("editingDocument")," (id:"," ",e.jsx(Pt,{copyable:{icon:e.jsx(H.CopyOutlined,{style:{color:"red"}})},children:i}),")"]}):e.jsxs(e.Fragment,{children:[h("register")," ",a===void 0?1:a+1," /"," ",c.length," ",h("of")," ",f," - ",h("editingDocument")," (id:"," ",e.jsx(Pt,{copyable:!0,children:i}),")"]}):"";if((o==null?void 0:o.type)==="tree"&&d){if(d.length===1)return e.jsxs(e.Fragment,{children:["1 ",h("selectedRegisters")," - (id:"," ",e.jsx(Pt,{copyable:!0,children:d[0].id}),")"]});if(d.length>1)return e.jsxs(e.Fragment,{children:[d.length," ",h("selectedRegisters"),e.jsx(Pt,{copyable:{text:d.map(v=>v.id).join(", ")}})]})}return null}return e.jsxs("div",{style:{position:"sticky",top:80,zIndex:3},children:[e.jsxs(p.Row,{className:"shadow-md",style:{padding:"1em",borderRadius:u.borderRadius,backgroundColor:u.colorPrimaryBg},align:"middle",children:[e.jsxs(p.Col,{flex:2,children:[e.jsx($l,{level:3,style:{marginBottom:0},children:r||s}),g()]}),e.jsx(p.Col,{flex:3,children:e.jsx(p.Row,{justify:"end",children:n})})]}),e.jsx("div",{className:"pb-5"})]})}const Ll=t=>{const{viewData:r,visible:n,model:s,context:o,domain:i,formView:a,treeView:c}=t,f=l.useRef(),d=l.useContext(We),{setResults:h=void 0,setCurrentItemIndex:u=void 0,currentId:g=void 0,results:v=void 0,setSelectedRowItems:y=void 0,setSearchParams:m=void 0,searchVisible:w=!0,setSearchVisible:C=void 0,sorter:D=void 0,setSorter:M=void 0,setTotalItems:b=void 0,setSearchTreeNameSearch:E=void 0,setTreeIsLoading:V=void 0,limit:L,setLimit:x,searchParams:T,searchValues:S,setSearchValues:O,currentView:P}=d||{},[$,F]=l.useState(!0);l.useEffect(()=>{var W;(W=f.current)==null||W.refresh()},[T]),l.useEffect(()=>{r.view_id!==P.view_id&&F(!0)},[P]);const{clear:I,searchFilterLoading:A,searchError:k,offset:B,tableRefreshing:_}=rn({model:s,setSearchTreeNameSearch:E,setSelectedRowItems:y,searchParams:T,setSearchValues:O,setSearchParams:m,setSearchVisible:C,setTreeIsLoading:V,context:o,formView:a,treeView:c,sorter:D,setSorter:M,setCurrentItemIndex:u,setResultsActionView:h,resultsActionView:v,domain:i,currentId:g,setActionViewTotalItems:b,limit:L,setLimit:x});return!n||!r?null:e.jsxs(e.Fragment,{children:[e.jsx(Nt,{title:r.name,children:e.jsx(Il,{refreshGraph:()=>{f.current.refresh()}})}),e.jsx(Qt,{fields:{...c.fields,...a.fields},searchFields:jr([a.search_fields,c.search_fields]),limit:L,onClear:I,offset:B,isSearching:A,onSubmit:W=>{F(!1),m==null||m(W.params),C==null||C(!1)},searchError:k,searchVisible:w,searchValues:S,showLimitOptions:!1}),_?e.jsx(p.Spin,{}):e.jsx(Lt,{ref:f,view_id:r.view_id,model:s,context:o,domain:Vt(T||[],i),limit:$?L:void 0,manualIds:$?v==null?void 0:v.map(W=>W.id):void 0})]})},Pl=t=>{const{visible:r,formRef:n,model:s,currentId:o,domain:i,formView:a,context:c,defaultValues:f,forcedValues:d,results:h,setResults:u,setCurrentItemIndex:g}=t;return r?e.jsxs(e.Fragment,{children:[e.jsx(Nt,{children:e.jsx(Yn,{toolbar:a==null?void 0:a.toolbar})}),e.jsx(ut,{rootForm:!0,ref:n,model:s,defaultValues:f,forcedValues:d,formView:a,actionDomain:i,id:o,parentContext:c,onSubmitSucceed:(v,y)=>{h.findIndex(w=>w.id===v)===-1&&(h.push(y),u(h),g(h.length-1))}})]}):null};function Nl(t){const{onSearch:r,disabled:n=!1,searchText:s}=t,{t:o}=l.useContext(ge),[i]=p.Form.useForm(),[a,c]=l.useState(!1);function f(h){r(h.search)}l.useEffect(()=>{i.setFieldsValue({search:s})},[s]);function d(){c(!1),i.setFieldsValue({search:void 0}),r(void 0)}return e.jsx(p.Form,{form:i,onFinish:f,autoComplete:"off",children:e.jsxs(p.Row,{align:"middle",justify:"end",children:[e.jsx(p.Col,{children:e.jsx(p.Form.Item,{name:"search",noStyle:!0,children:e.jsx(p.Input,{autoFocus:!0,disabled:n,onChange:h=>{c(h.target.value.length>0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},suffix:(a||s&&s.length>0)&&e.jsx(p.Tooltip,{title:o("clear"),children:e.jsx(H.CloseCircleFilled,{style:{color:"rgba(0,0,0,.45)"},onClick:d})})})})}),e.jsx(p.Col,{children:e.jsx(p.Button,{htmlType:"submit",disabled:n,style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},children:o("search")})})]})})}const jn=Ke.default.createContext({previewFeatures:!1});function Bl(t){var X;const{availableViews:r,currentView:n,setCurrentView:s,selectedRowItems:o,setRemovingItem:i,removingItem:a,duplicatingItem:c,setDuplicatingItem:f,currentModel:d,searchTreeRef:h,setCurrentId:u,setCurrentItemIndex:g,searchParams:v,searchVisible:y,setSearchVisible:m,setSearchTreeNameSearch:w,searchTreeNameSearch:C,treeIsLoading:D,setPreviousView:M,previousView:b,results:E,limit:V,totalItems:L}=l.useContext(We),{parentContext:x={},treeExpandable:T,toolbar:S}=t,{previewFeatures:O}=l.useContext(jn),{t:P,lang:$}=l.useContext(ge),F=l.useContext(dt),{processAction:I}=F||{},[A,k]=l.useState(!1),B=C!==void 0&&C.trim().length>0;function _(){ot({confirmMessage:P("confirmRemove"),lang:$,onOk:()=>{W()}})}async function W(){var G;try{i==null||i(!0),await K.getHandler().delete({model:d,ids:o.map(N=>N.id)}),u==null||u(void 0),g==null||g(void 0),(G=h==null?void 0:h.current)==null||G.refreshResults()}catch(N){Le(N)}finally{i==null||i(!1)}}async function J(){var G;try{f==null||f(!0);const N=o[0].id;await K.getHandler().duplicate({id:N,model:d,context:{...x}})&&((G=h==null?void 0:h.current)==null||G.refreshResults())}catch(N){Le(N)}finally{f==null||f(!1)}}function j(G){I==null||I({actionData:G,values:{active_id:o==null?void 0:o.map(N=>N.id)[0],active_ids:o==null?void 0:o.map(N=>N.id)},fields:{},context:{...x,active_id:o==null?void 0:o.map(N=>N.id)[0],active_ids:o==null?void 0:o.map(N=>N.id)},onRefreshParentValues:()=>{var N;(N=h==null?void 0:h.current)==null||N.refreshResults()}})}return e.jsxs(p.Space,{wrap:!0,children:[D&&e.jsxs(e.Fragment,{children:[e.jsx(p.Spin,{}),tt(),tt()]}),T?null:e.jsxs(e.Fragment,{children:[e.jsx(Nl,{disabled:c||a||D,searchText:C,onSearch:G=>{G&&G.trim().length>0?w==null||w(G):w==null||w(void 0)}}),!T&&e.jsx(Gn,{icon:e.jsx(H.FilterOutlined,{style:{color:y?"white":void 0}}),tooltip:P("advanced_search"),type:y?"primary":"default",onClick:()=>{m==null||m(!y)},disabled:c||a||D,badgeNumber:v==null?void 0:v.length}),tt(),e.jsx(Hn,{disabled:D}),e.jsx(He,{icon:e.jsx(H.CopyOutlined,{}),tooltip:P("duplicate"),disabled:!o||(o==null?void 0:o.length)!==1||c||D,loading:c,onClick:J}),e.jsx(He,{icon:e.jsx(H.DeleteOutlined,{}),tooltip:P("delete"),disabled:!(o&&(o==null?void 0:o.length)>0)||D,loading:a,onClick:_}),tt()]}),e.jsx(He,{icon:e.jsx(H.InfoCircleOutlined,{}),tooltip:P("showLogs"),disabled:!(o&&(o==null?void 0:o.length)>0)||D,loading:!1,onClick:()=>{Kn(d,o[0].id,P)}}),e.jsx(He,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:P("refresh"),disabled:c||a||D,loading:!1,onClick:()=>{var G;(G=h==null?void 0:h.current)==null||G.refreshResults()}}),!T&&e.jsxs(e.Fragment,{children:[tt(),e.jsx(lr,{currentView:n,availableViews:r,onChangeView:G=>{M==null||M(n),s==null||s(G)},previousView:b,disabled:D})]}),tt(),e.jsx(ht,{icon:e.jsx(H.ThunderboltOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||D,tooltip:P("actions"),items:S==null?void 0:S.action,onItemClick:G=>{!G||j(G)}}),e.jsx(ht,{icon:e.jsx(H.PrinterOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||D,tooltip:P("reports"),items:S==null?void 0:S.print,onItemClick:G=>{!G||j({...G,datas:{...G.datas||{},ids:o.map(N=>N.id)}})}}),O&&e.jsxs(e.Fragment,{children:[tt(),e.jsx(ht,{icon:e.jsx(Sr.default,{component:()=>e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-database-export",width:"1em",height:"1em",viewBox:"0 0 24 24",strokeWidth:"1.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),e.jsx("ellipse",{cx:"12",cy:"6",rx:"8",ry:"3"}),e.jsx("path",{d:"M4 6v6c0 1.657 3.582 3 8 3a19.84 19.84 0 0 0 3.302 -.267m4.698 -2.733v-6"}),e.jsx("path",{d:"M4 12v6c0 1.599 3.335 2.905 7.538 2.995m8.462 -6.995v-2m-6 7h7m-3 -3l3 3l-3 3"})]})}),tooltip:P("export"),items:[{id:"print_screen",name:P("printScreen")},{id:"export",name:P("advancedExport")}],onItemClick:G=>{if(G.id==="print_screen"){let N=(o==null?void 0:o.map(Y=>Y.id))||[];N.length===0&&(N=(E==null?void 0:E.map(Y=>Y.id))||[]),j({id:-1,model:d,report_name:"printscreen.list",type:"ir.actions.report.xml",datas:{model:d,ids:N}});return}k(!0)},disabled:c||a||D||B}),e.jsx(En,{visible:A,locale:$,onClose:()=>k(!1),model:d,domain:Vt(((X=h==null?void 0:h.current)==null?void 0:X.getDomain())||[],v||[]),limit:V,totalRegisters:L||0,selectedRegistersToExport:o,visibleRegisters:(E==null?void 0:E.length)||0,context:x})]})]})}function tt(){return e.jsx("div",{className:"inline-block w-2"})}const Hl=t=>{const{visible:r,searchTreeRef:n,model:s,context:o,formView:i,treeView:a,domain:c,setCurrentItemIndex:f,results:d,setCurrentId:h,setCurrentView:u,availableViews:g,searchTreeNameSearch:v}=t,{currentView:y,setPreviousView:m}=l.useContext(We);return r?e.jsxs(e.Fragment,{children:[e.jsx(Nt,{children:e.jsx(Bl,{toolbar:a==null?void 0:a.toolbar,parentContext:o,treeExpandable:(a==null?void 0:a.isExpandable)||!1})}),e.jsx(er,{ref:n,rootTree:!0,model:s,parentContext:o,nameSearch:v,formView:i,treeView:a,domain:c,onRowClicked:w=>{const{id:C}=w;h(C);const D=d.findIndex(b=>b.id===C);m==null||m(y),f(D);const M=g.find(b=>b.type==="form");u(M)}})]}):null},cr=Ke.default.createContext(null),Kl=t=>{const[r,n]=l.useState(!1),[s,o]=l.useState(!1),{children:i,dashboardRef:a,openAction:c}=t;return e.jsx(cr.Provider,{value:{isLoading:r,setIsLoading:n,dashboardRef:a,openAction:c,moveItemsEnabled:s,setMoveItemsEnabled:o},children:i})};function Yl(){const{isLoading:t,dashboardRef:r,moveItemsEnabled:n,setMoveItemsEnabled:s}=l.useContext(cr),{t:o}=l.useContext(ge);return e.jsxs(p.Space,{wrap:!0,children:[e.jsx(He,{icon:e.jsx(H.BorderOuterOutlined,{style:{color:n?"white":void 0}}),type:n?"primary":"default",tooltip:o("moveDashboard"),disabled:t,loading:!1,onClick:()=>{s(!n)}}),Wl(),e.jsx(He,{icon:e.jsx(H.SettingOutlined,{}),tooltip:o("configDashboard"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.configDashboard()}}),e.jsx(He,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:o("refresh"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.refresh()}})]})}function Wl(){return e.jsx("div",{className:"inline-block w-2"})}const ql=t=>{const{dashboardData:r}=t,n=l.useRef(),s=l.useContext(Ge),{openShortcut:o}=s||{};return r?e.jsxs(Kl,{dashboardRef:n,openAction:i=>{o(i)},children:[e.jsx(Nt,{children:e.jsx(Yl,{})}),e.jsx(Xn,{ref:n,model:r.model,id:r.id,context:r==null?void 0:r.context,configAction:r==null?void 0:r.configAction})]}):null};async function Ul(t){const r=await Promise.all(t.map(async s=>{try{return await s.promise}catch(o){return console.error(`Error for ${s.viewTuple}:`,o),null}}));return t.map((s,o)=>({...s,info:r[o]})).filter(s=>s.info!==null)}function Gl(t,r){const{domain:n,model:s,context:o,views:i,title:a,setCanWeClose:c,tabKey:f,initialView:d,formDefaultValues:h,formForcedValues:u={},res_id:g=!1,action_id:v,action_type:y,treeExpandable:m=!1,limit:w}=t,[C,D]=l.useState(),[M,b]=l.useState([]),[E,V]=l.useState(!0),L=g||void 0,[x,T]=l.useState(L),[S,O]=l.useState([]),[P,$]=l.useState(),[F,I]=l.useState([]),[A,k]=l.useState(),[B,_]=l.useState(0),[W,J]=l.useState(!1),[j,X]=l.useState(!1),[G,N]=l.useState(),{t:Y}=l.useContext(ge),re=l.useRef(),Q=l.useRef(),le=l.useContext(Ge),{setCurrentView:R,setCurrentId:Z,tabs:he,activeKey:ve,openAction:Ee,onRemoveTab:Oe}=le||{};So.useHotkeys("ctrl+g,command+g",te=>{te.preventDefault(),Ae()},[ve,he,C,P,F]);function Ie(te){T(te),Z==null||Z(te)}function Pe(te){D(te),R==null||R(te)}l.useImperativeHandle(r,()=>({canWeClose:de}));const ie=async()=>{V(!0);const te=[],Fe=[];for(const ce of i){const[fe,Ne]=ce;Ne!=="dashboard"?Fe.push({viewTuple:ce,promise:K.getHandler().getView({model:s,type:Ne,id:fe,context:o})}):Fe.push({viewTuple:ce})}const _e=await Ul(Fe);for(const ce of _e){if(!ce)continue;const[,fe]=ce.viewTuple;let Ne=ce.info;switch(fe){case"dashboard":{const ue=i.find($e=>{const[,ee]=$e;return ee==="form"});let je;ue&&(je={action_id:v,action_type:y,name:a,res_id:o.active_id,res_model:s,view_id:ue[0],view_type:ue[1]}),te.push({type:"dashboard",id:o.active_id,model:s,context:o,configAction:je});break}case"form":{te.push({...Ne,type:fe});break}case"tree":{te.push({...Ne,isExpandable:m,type:fe});break}case"graph":{te.push({...Ne,type:fe});break}}}let ke;!d&&te.find(ce=>ce.type==="tree")?ke=te.find(fe=>fe.type==="tree"):d?ke=te.find(fe=>d.id?fe.type===d.type&&fe.view_id===d.id:fe.type===d.type):ke=te.find(fe=>fe.type==="form"),ke||(Le(`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`),Oe==null||Oe(f)),Pe(ke),b(te),V(!1)};c({tabKey:f,canWeClose:de}),l.useEffect(()=>{const te=M.find(_e=>_e.type==="tree"),Fe=M.find(_e=>d.id?_e.type===d.type&&_e.view_id===d.id:_e.type===d.type);Pe(Fe||te),g?Z==null||Z(L):(Ie(void 0),$(void 0)),ie()},[s,i,g]),l.useEffect(()=>{ve===f&&(Z==null||Z(x),R==null||R(C))},[he,ve]);async function de(){return C&&C.type==="form"?await re.current.cancelUnsavedChanges():!0}async function Ae(){ve===f&&(C.type==="form"&&!await re.current.cancelUnsavedChanges()||J(!0))}async function we(te){var ce;X(!0);const Fe=F.findIndex(fe=>fe.id===te);let _e;if(Fe===-1){try{_e=(ce=await K.getHandler().readObjects({model:s,ids:[te],context:o}))==null?void 0:ce[0]}catch{}if(!_e){X(!1),J(!1),Ze(Y("idNotFound"));return}}else _e=F[Fe];X(!1),J(!1);const ke=i.find(fe=>fe[1]==="form");Ee({domain:[],context:o,model:s,views:i,title:a,target:"current",initialView:{id:ke==null?void 0:ke[0],type:"form"},action_id:v,action_type:y,res_id:te})}function De(){return M.map(te=>{switch(te.type){case"form":return e.jsx(Pl,{formRef:re,currentId:x,visible:C.type===te.type&&C.view_id===te.view_id,formView:te,model:s,context:o,domain:n,defaultValues:h,forcedValues:u,results:F,setResults:I,setCurrentItemIndex:$},`${te.type}-${te.view_id}`);case"tree":return e.jsx(Hl,{visible:C.type===te.type&&C.view_id===te.view_id,limit:w,model:s,context:o,domain:n,formView:M.find(Fe=>Fe.type==="form"),treeView:te,searchTreeRef:Q,searchTreeNameSearch:G,availableViews:M,results:F,setCurrentItemIndex:$,setCurrentId:Ie,setCurrentView:Pe},`${te.type}-${te.view_id}`);case"graph":return e.jsx(Ll,{visible:C.type===te.type&&C.view_id===te.view_id,viewData:te,model:s,context:o,domain:n,treeView:M.find(Fe=>Fe.type==="tree"),formView:M.find(Fe=>Fe.type==="form")},`${te.type}-${te.view_id}`);case"dashboard":return e.jsx(ql,{dashboardData:te},`${te.type}-${te.view_id}`)}})}function Ye(){if(x===void 0&&C.type==="form")re.current.clearAndReload();else{Ie(void 0);const te=M.find(Fe=>Fe.type==="form");Pe(te)}}return E?e.jsx(p.Spin,{}):C?e.jsxs(Hi,{title:a,currentView:C,setCurrentView:Pe,availableViews:M,formRef:re,searchTreeRef:Q,onNewClicked:Ye,currentId:x,setCurrentId:Ie,setCurrentItemIndex:$,currentItemIndex:P,results:F,setResults:I,currentModel:s,sorter:A,setSorter:k,totalItems:B,setTotalItems:_,selectedRowItems:S,setSelectedRowItems:O,setSearchTreeNameSearch:N,searchTreeNameSearch:G,goToResourceId:we,limit:w,children:[De(),e.jsx(Ml,{visible:W,onIdSubmitted:we,isSearching:j,onCancel:()=>{J(!1)}})]}):null}const zn=l.forwardRef(Gl);async function jl({actionId:t,rootContext:r={},globalValues:n={}}){const s="ir.actions.act_window",o=`${s},${t}`,i=await K.getHandler().getActionData({action:o,context:r}),a=se.parseContext({context:i.context,values:n,fields:{}}),c=i.domain?await K.getHandler().evalDomain({domain:i.domain,values:n,context:{...r,...a}}):[],{res_model:f,views:d,name:h,limit:u,view_type:g}=i,v=g==="tree",y=[];for(const D of d){const[M,b]=D;if(M)y.push(D);else{const{view_id:E}=await K.getHandler().getView({model:f,type:b,id:M,context:{...r,...a}});y.push([E,b])}}const[m,w]=y[0],C={id:m,type:w};return{title:h,actionId:t,actionType:s,key:wr.v4(),views:d,model:f,context:{...r,...a},domain:c,initialView:C,limit:u,treeExpandable:v}}const Nc="",zl=yr.WidthProvider(yr.Responsive),Jn=t=>{const{children:r=[],onPositionItemsChanged:n}=t,s=Ke.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(zl,{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:Jl}=p.theme,{Text:Zl}=p.Typography,Zn=t=>{const{title:r,children:n,action:s,openAction:o}=t,{token:i}=Jl();return e.jsxs("div",{className:"shadow-md",style:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden",border:"1px solid #eee",backgroundColor:"white",borderRadius:i.borderRadius},children:[e.jsxs(p.Row,{align:"middle",style:{borderBottom:"1px solid #ddd",backgroundColor:i.colorPrimaryBg},wrap:!1,children:[e.jsx(p.Col,{flex:"auto",className:"draggable-head",style:{fontWeight:"bold",padding:"0.5rem",cursor:"grab",overflow:"hidden"},children:e.jsx(Zl,{ellipsis:!0,children:r})}),s&&e.jsx(p.Col,{flex:"25px",style:{padding:"0.5rem"},children:e.jsx(p.Row,{justify:"end",align:"middle",children:e.jsx(H.ExportOutlined,{style:{cursor:"pointer"},onClick:()=>{o==null||o(s)}})})})]}),n]})},Xl=80;function Ql(t){const{action:r,model:n,view_id:s,onRowClicked:o,domain:i=[],visible:a=!0,parentContext:c={}}=t,[f,d]=l.useState(!1),[h,u]=l.useState(!1),[g,v]=l.useState(),[y,m]=l.useState(),[w,C]=l.useState(),[D,M]=l.useState(1),[b,E]=l.useState(0),V=l.useRef(Xl),L=l.useRef([]),[x,T]=l.useState(0),[S,O]=l.useState([]),[P,$]=l.useState(void 0),[F,I]=l.useState(),[A,k]=l.useState(),[B,_]=l.useState(),[W,J]=l.useState(!1),j=l.useRef([]),X=Z=>{J(!0),M(Z),E((Z-1)*V.current)},G=async()=>{const Z=j.current.length>0?j.current:i,he=Vt(L.current,Z),{colors:ve}=it(y),{totalItems:Ee,results:Oe,attrsEvaluated:Ie}=await K.getHandler().searchForTree({params:he,limit:V.current,offset:b,model:g,fields:y.fields,context:c,attrs:ve&&{colors:ve}});$(Dt(Ie));const Pe=at({resultsToSort:Oe,sorter:F,fields:{...y.fields,...w.fields}});J(!1),O(Pe);const ie=await Ee;T(ie)},N=async()=>{try{J(!0),await G()}catch(Z){k(JSON.stringify(Z))}};l.useEffect(()=>{!h||a&&N()},[D,b,h,a]);const Y=async Z=>{u(!1),d(!0),_(void 0);try{Z==="action"?await re():await Q(),u(!0)}catch(he){_(he)}finally{d(!1)}},re=async()=>{const Z=await K.getHandler().getViewsForAction({action:r,context:c});j.current=Z.domain,C(Z.views.get("form")),m(Z.views.get("tree")),v(Z.model),V.current=Z.limit},Q=async()=>{v(n);const Z=await K.getHandler().getView({model:n,type:"form",context:c});C(Z);const he=await K.getHandler().getView({model:n,type:"tree",id:s,context:c});m(he)};l.useEffect(()=>{r?Y("action"):n&&Y("model")},[r,n]);const le=Z=>{const{id:he}=Z;o({id:he,model:g,treeView:y})},R=()=>!y||!w?null:e.jsxs("div",{style:{overflowY:"scroll"},children:[A&&e.jsx(p.Alert,{className:"mt-10",message:A,type:"error",banner:!0}),e.jsx(bt,{showPagination:!1,total:x,limit:V.current,page:D,treeView:y,results:S,onRequestPageChange:X,loading:W,onRowClicked:le,colorsForResults:P,sorter:F,onChangeSort:Z=>{I==null||I(Z);const he=at({resultsToSort:S,sorter:Z,fields:{...y.fields,...w.fields}});O(he)},context:c})]});return B?e.jsx(p.Alert,{className:"mt-10",message:B,type:"error",banner:!0}):f?e.jsx(p.Spin,{style:{padding:"2rem"}}):R()}const Rl=t=>{const{model:r}=t,[n,s]=l.useState();l.useEffect(()=>{o()},[r]);async function o(){const i=await K.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(ut,{...t,model:r,id:n,readOnly:!0})})},dr="line_ids";function ec(t,r){const{model:n,context:s={},id:o,configAction:i}=t,[a,c]=l.useState([]),[f,d]=l.useState(!1),[h,u]=l.useState(),{setIsLoading:g,openAction:v,moveItemsEnabled:y}=l.useContext(cr),m=l.useRef(),w=l.useRef();l.useEffect(()=>{C()},[n,o,s]),l.useImperativeHandle(r,()=>({refresh:()=>{C()},configDashboard:L}));async function C(){d(!0),g(!0),u(void 0);try{const x=await D(),T=await b(x),S=x.fields[dr].relation,O=T[dr].items;w.current=x.fields;const P=await M({items:O,model:S,context:s}),$=await E(P);c($),d(!1),g(!1)}catch(x){u(JSON.stringify(x))}}async function D(){return await K.getHandler().getView({model:n,type:"form",context:s})}async function M({items:x,model:T,context:S}){m.current=(await K.getHandler().getView({model:T,type:"form",context:S})).fields;const[O]=await zt({treeView:{fields:m.current},formView:{fields:m.current},model:T,items:x,context:S,currentView:"form"});return O}async function b(x){return(await K.getHandler().readObjects({model:n,ids:[o],fields:x.fields,context:s}))[0]}async function E(x){const T=[];for(const S of x){const{values:O}=S;if(O.action_id&&O.action_id.length>0){const P=parseInt(O.action_id[0],10),$=await jl({actionId:P,rootContext:s});T.push({...S,actionData:$})}}return T}async function V(x){if(!y)return;const T=x.filter($=>{const F=a.find(A=>A.id===$.id);if(!F)return!1;if(!F.position)return!0;const I={...JSON.parse(F.position.replace(/'/g,'"')),id:F.id};return JSON.stringify($)!==JSON.stringify(I)});if(T.length===0)return;const O=a.filter($=>T.map(F=>F.id).includes($.id)).map($=>{const F={...T.find(I=>I.id===$.id)};return delete F.id,{...$},{...$,operation:"pendingUpdate",values:{...$.values,position:JSON.stringify(F).replace(/"/g,"'")}}}),P={fields:m.current,items:O};await K.getHandler().update({model:n,id:o,values:{[dr]:P},fields:w.current,context:s})}async function L(){v(i)}return h?(console.log(h),e.jsx(p.Alert,{className:"mt-10 mb-20",message:h,type:"error",banner:!0})):f?e.jsx(H.LoadingOutlined,{}):e.jsx(Jn,{onPositionItemsChanged:V,children:a.map((x,T)=>{const{actionData:S,values:O}=x,{position:P,id:$}=O,{actionId:F,actionType:I,key:A,title:k,views:B,model:_,context:W,domain:J,initialView:j,limit:X}=S;let G={};try{G=JSON.parse(P.replace(/'/g,'"'))}catch{G={x:T*2,y:0,w:2,h:3}}let N=null;if((j==null?void 0:j.type)==="graph")N=e.jsx(Lt,{view_id:B.filter(Q=>Q[1]==="graph")[0][0],model:_,context:W,domain:J,limit:X});else if((j==null?void 0:j.type)==="form")N=e.jsx(Rl,{model:_,actionDomain:J});else if((j==null?void 0:j.type)==="tree")N=e.jsx(Ql,{model:_,domain:J,view_id:B.filter(Q=>Q[1]==="tree")[0][0],onRowClicked:Q=>{const le=B.find(R=>{const[,Z]=R;return Z==="form"});if(le){const[R,Z]=le,{actionId:he,actionType:ve,title:Ee,model:Oe}=S,Ie={action_id:he,action_type:ve,name:Ee,res_id:Q.id,res_model:Oe,view_id:R,view_type:Z};v(Ie)}}});else if(j!==void 0){const Q=j&&Array.isArray(j.id)?{...j,id:j.id[0]}:j;N=e.jsx(zn,{action_id:F,action_type:I,tabKey:A,title:k,views:B,model:_,context:W,domain:J,setCanWeClose:()=>{},initialView:Q,limit:X})}let Y;const re=B.find(Q=>{const[,le]=Q;return le==="tree"});if(re){const[Q,le]=re,{actionId:R,actionType:Z,title:he,model:ve}=S;Y={action_id:R,action_type:Z,name:he,res_id:!1,res_model:ve,view_id:Q,view_type:le}}return e.jsx(Zn,{id:$,title:k,parms:G,action:Y,openAction:v,children:N},$)})})}const Xn=l.forwardRef(ec),Qn=t=>{const{ooui:r}=t;return e.jsx(me,{type:"array",...t,children:e.jsx(tc,{ooui:r})})},tc=t=>{const{value:r,ooui:n,onChange:s}=t,{items:o=[]}=r||{},i=o.filter(x=>x.operation!=="pendingRemove").map(x=>x.id),[a,c]=l.useState([]),[f,d]=l.useState(),[h,u]=l.useState(!1),{relation:g,context:v,readOnly:y,field:m,columns:w}=n,C=l.useContext(Me),{getContext:D}=C||{};et.default(()=>{b()},[o]);const M=x=>{s==null||s({items:x})};async function b(){u(!0);let x=[];if(n.domain){const T=await K.getHandler().evalDomain({domain:n.domain,values:ct({fields:C==null?void 0:C.getFields(),values:C.getPlainValues()}),fields:C==null?void 0:C.getFields(),context:C.getContext()});x=[...x,...T]}try{const S=(await K.getHandler().search({model:g,params:x,fields:[m],context:{...D==null?void 0:D(),...v}})).map(O=>{const P=O[m];let $=P;return Array.isArray(P)&&($=P[1]),{label:$,value:O.id}});c(S)}catch(T){d(T)}finally{u(!1)}if(f)return e.jsx(p.Alert,{className:"mt-10",message:f,type:"error",banner:!0})}const E=()=>{L(a.map(x=>x.value))},V=()=>{L([])},L=x=>{const T=o.map(O=>x.includes(O.id)?O.operation=="pendingRemove"?{...O,operation:"original"}:O:{id:O.id,operation:"pendingRemove"}),S=T.map(O=>O.id);x.filter(O=>!S.includes(O)).map(O=>{T.push({id:O,operation:"pendingLink"})}),M(T)};return h&&a.length===0?e.jsx(p.Spin,{}):e.jsx(e.Fragment,{children:e.jsxs("div",{className:"flex flex-row",children:[e.jsx(p.Checkbox.Group,{value:a.length?i:[],disabled:y,onChange:L,style:{width:"100%"},children:e.jsx(p.Row,{children:a.map(x=>e.jsx(p.Col,{span:Math.floor(24/w),children:e.jsx(p.Checkbox,{value:x.value,children:x.label})}))})}),!y&&e.jsxs(p.Space,{children:[e.jsx(p.Button,{onClick:E,disabled:i.length==a.length,children:"Check all"}),e.jsx(p.Button,{onClick:V,disabled:i.length===0,children:"Uncheck all"})]})]})})},Rn=t=>e.jsx(me,{...t,children:e.jsx(rc,{...t})}),rc=t=>{const{value:r,ooui:n}=t;return e.jsx("div",{style:{height:n.height?n.height+"px":"100%",overflow:"auto"},children:e.jsx(_o.default,{children:r,className:"ant-typography"})})},eo=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(nc,{...t})})},nc=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,direction:a}=r,c=Array.from(o.entries()),f=c&&c.length&&c.map(d=>{const[h,u]=d;return e.jsx(p.Radio,{value:h,children:u},h)});return e.jsx(p.Radio.Group,{disabled:i,onChange:n,value:s,children:e.jsx(p.Space,{direction:a,children:f})})},to=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o}=r;return e.jsx(me,{...t,valuePropName:"checked",children:e.jsx(oc,{id:n,readOnly:s,required:o})})},oc=t=>{const{required:r,readOnly:n,...s}=t;return e.jsx("div",{className:"flex flex-row",children:e.jsx(p.Switch,{disabled:n,...s})})},ro=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(sc,{...t})})},sc=t=>{const{ooui:r,value:n}=t,{selectionValues:s,errorField:o}=r,i=l.useContext(Me),a=Array.from(s.entries()),c=a.map(h=>h[0]).indexOf(n);let f="process",d="";return o&&(d=i.getFieldValue(o),d&&(f="error")),e.jsx(p.Steps,{current:c,status:f,children:a.map((h,u)=>e.jsx(p.Steps.Step,{title:h[1],description:u===c&&f==="error"?d:null}))})},no=t=>{const{ooui:r}=t,{lang:n,height:s}=r,o=l.useContext(Me),{elementHasLostFocus:i}=o||{},a=c=>{c.onDidBlurEditorWidget(i)};return e.jsx(me,{...t,children:e.jsx(Do.default,{defaultLanguage:n||"",height:s||300,onMount:a})})},{Content:ic}=p.Layout,{Title:ac}=p.Typography;function lc(){const{t}=l.useContext(ge);return e.jsx(ic,{className:"m-5 select-none",children:e.jsx(ac,{level:5,children:t("welcome")})})}function cc(t,r){const{children:n,globalValues:s={},rootContext:o={},lang:i}=t,[a,c]=l.useState("welcome"),[f,d]=l.useState([{title:be("welcome",i),key:"welcome",closable:!0,content:e.jsx(lc,{})}]),h=l.useRef(new Map),u=l.useRef();l.useImperativeHandle(r,()=>({retrieveAndOpenAction:y,openShortcut:C}));function g(b){if(b===a){const E=f.findIndex(V=>V.key===b);f[E-1]&&c(f[E-1].key),f[E+1]&&c(f[E+1].key)}d(f.filter(E=>E.key!==b)),h.current.delete(b)}function v({tabKey:b,canWeClose:E}){h.current.set(b,E)}async function y({action:b,values:E,forced_values:V,initialViewType:L,res_id:x,domain:T=[]}){const S=await K.getHandler().getActionData({action:b,context:o});if(S.type==="ir.actions.wizard"){Le("Action type not supported");return}const[O,P]=b.split(","),$=parseInt(P),F=se.parseContext({context:S.context,values:s,fields:{}}),I=S.domain?await K.getHandler().evalDomain({domain:S.domain,values:s,context:{...o,...F}}):[],{res_model:A,views:k,name:B,target:_,view_type:W,limit:J}=S,j=W==="tree",X=[];for(const N of k){const[Y,re]=N;if(Y)X.push(N);else if(re==="dashboard")X.push([void 0,"dashboard"]);else{const{view_id:Q}=await K.getHandler().getView({model:A,type:re,id:Y,context:{...o,...F}});X.push([Q,re])}}let G;if(L){const[N,Y]=X.find(([re,Q])=>Q===L);G={id:N,type:Y}}else{const[N,Y]=X[0];G={id:N,type:Y}}M({domain:[...I,...T],context:{...o,...F},model:A,views:X,title:B,target:_,initialView:G,action_type:O,action_id:$,values:E,forced_values:V,res_id:x,treeExpandable:j,limit:J})}function m({title:b,content:E,key:V,action:L}){let x=[...f];f.length===1&&f[0].key==="welcome"&&(x=[...f.filter(T=>T.key!=="welcome")]),d([...x,{title:b,key:V,closable:!0,content:E,action:L}]),c(V)}async function w({relateData:b,fields:E,values:V,action_id:L,action_type:x}){const{res_model:T,context:S,domain:O,views:P,target:$,string:F,limit:I}=b,[A,k]=P[0],B={id:A,type:k},_=se.parseContext({context:S,values:{...V,...s},fields:E}),W=O?await K.getHandler().evalDomain({domain:O,values:ct({fields:E,values:{...V,...s}}),fields:E,context:{...o,..._}}):[];M({model:T,target:$,views:P,context:{...o,..._},domain:W,title:F,initialView:B,action_id:L,action_type:x,limit:I})}async function C(b){const{action_id:E,action_type:V,res_id:L,view_id:x}=b,T=`${V},${E}`,S=await K.getHandler().getActionData({action:T,context:o}),O=se.parseContext({context:S.context,values:s,fields:{}}),P=S.domain?await K.getHandler().evalDomain({domain:S.domain,values:s,context:{...o,...O}}):[],{res_model:$,views:F,name:I,target:A,view_type:k,limit:B}=S,_=k==="tree",W=[];for(const G of F){const[N,Y]=G;if(N)W.push(G);else if(Y==="dashboard")W.push([void 0,"dashboard"]);else{const{view_id:re}=await K.getHandler().getView({model:$,type:Y,id:N,context:{...o,...O}});W.push([re,Y])}}let J,j;if(x==null){const G=W.find(N=>N[0]===void 0);J=void 0,j=G[1]}else[J,j]=W.find(G=>G[0]===void 0?!1:G[0]===x);const X={id:J,type:j};M({domain:P,context:{...o,...O},model:$,views:W,title:I,target:A,initialView:X,action_id:E,action_type:V,res_id:L,treeExpandable:_,limit:B})}async function D({model:b,values:E,forced_values:V,initialViewType:L,res_id:x,domain:T}){const S=await K.getHandler().getActionStringForModel(b);await y({action:S,values:E,forced_values:V,initialViewType:L,res_id:x,domain:T})}async function M({domain:b,context:E,model:V,views:L,title:x,target:T,initialView:S,action_id:O,action_type:P,res_id:$,values:F,forced_values:I,treeExpandable:A=!1,limit:k}){const B=wr.v4();if(T!=="current"){const _=await K.getHandler().getView({model:V,type:"form",id:S.type==="form"?S.id:void 0,context:{...o,...E}});u.current.openActionModal({domain:b,model:V,formView:_,context:{...o,...E},actionData:{action_id:O,action_type:P,res_id:$,view_id:_.view_id}})}else{const _=S&&Array.isArray(S.id)?{...S,id:S.id[0]}:S;m({title:x,action:{id:O,type:P},content:e.jsx(zn,{action_id:O,action_type:P,tabKey:B,title:x,views:L,model:V,context:{...o,...E},domain:b,setCanWeClose:v,initialView:_,res_id:$,formDefaultValues:F,formForcedValues:I,treeExpandable:A,limit:k}),key:B})}}return e.jsx(Ao,{lang:i,children:e.jsx(Ki,{openShortcut:C,openAction:M,openRelate:w,openDefaultActionForModel:D,tabs:f,activeKey:a,onRemoveTab:async b=>{const E=h.current.get(b);(await(E==null?void 0:E())||a==="welcome")&&g(b)},onChangeTab:b=>{c(b)},children:e.jsx(on,{ref:u,globalValues:s,children:n})})})}const dc=l.forwardRef(cc),{useToken:uc}=p.theme;function fc(t){const{label:r,onClose:n,tabKey:s,isActive:o,onSelected:i}=t,{token:a}=uc(),c=o?a.colorBgContainer:a.colorPrimaryBg;return e.jsxs("div",{onClick:()=>{!o&&i(s)},style:{cursor:"pointer",height:40,paddingTop:7,paddingBottom:5,paddingLeft:10,paddingRight:10,backgroundColor:c,display:"inline-flex",flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",borderTopLeftRadius:a.borderRadius,borderTopRightRadius:a.borderRadius,marginLeft:2},children:[e.jsx("div",{style:{color:a.colorPrimaryActive,userSelect:"none",height:40,display:"flex",justifyContent:"center",alignItems:"center",paddingLeft:5,paddingRight:5,marginBottom:2,fontWeight:o?500:"normal"},children:r}),e.jsx("div",{style:{paddingLeft:5,height:40,display:"flex",justifyContent:"center",alignItems:"center"},children:e.jsx(H.CloseOutlined,{style:{color:a.colorPrimaryActive},onClick:f=>{f.stopPropagation(),n(s)}})})]})}function hc(){const t=l.useContext(Ge),{activeKey:r,tabs:n,onRemoveTab:s,onChangeTab:o}=t||{};return e.jsx(e.Fragment,{children:n.map(i=>e.jsx(fc,{tabKey:i.key,label:i.title,onClose:s,isActive:r===i.key,onSelected:o},i.key))})}function pc(t){const{tab:r}=t,n=l.useContext(Ge),{activeKey:s}=n||{},o={display:"none"};return e.jsx("div",{style:r.key!==s?o:void 0,children:r.content})}const gc=Ke.default.memo(pc,()=>!0);function mc(){const t=l.useContext(Ge),{tabs:r}=t||{},n=(r==null?void 0:r.map(s=>e.jsx(gc,{tab:s},s.key)))||null;return e.jsx(e.Fragment,{children:n})}const{useToken:yc}=p.theme,wc=t=>{const{onRetrieveShortcuts:r,onCheckIsFavourite:n,onAddFavourite:s,onRemoveFavourite:o}=t,[i,a]=l.useState(!1),[c,f]=l.useState(!1),[d,h]=l.useState([]),[u,g]=l.useState(!0),[v,y]=l.useState(),{t:m}=l.useContext(ge)||{},{token:w}=yc(),C=l.useContext(Ge),{openShortcut:D,tabs:M,activeKey:b,currentView:E,currentId:V,openDefaultActionForModel:L}=C||{};l.useEffect(()=>{x()},[]),l.useEffect(()=>{O()},[M,b,E,V]);async function x(){try{g(!0);const A=await r();h(A)}catch(A){Le(A)}finally{g(!1)}}function T(A){const{key:k}=A,B=d.find(_=>_.id===Number(k));(B==null?void 0:B.action_type)!=="ir.actions.wizard"&&(B&&D(B),f(!1))}function S(A){A&&x(),f(A)}async function O(){if(!E)return;const A=M.find(j=>j.key===b),{id:k,type:B}=(A==null?void 0:A.action)||{};if(!k||!B){a(!1);return}const _=E.view_id;let W=!1;E.type==="form"&&(W=V||!1);const J=await n({action_id:k,action_type:B,view_id:_,res_id:W});J!==!1&&y(J),a(J!==!1)}async function P(){f(!1),L==null||L({model:"ir.ui.view_sc"})}const $=e.jsxs(p.Menu,{onClick:T,children:[e.jsxs("div",{style:{width:300,padding:5,display:"flex"},children:[e.jsx("div",{style:{paddingLeft:15,color:"#ccc"},children:m==null?void 0:m("favorites").toUpperCase()}),e.jsx("div",{style:{flexGrow:1,paddingLeft:10},children:e.jsx(p.Tooltip,{title:m==null?void 0:m("edit_favorites"),children:e.jsx(H.EditOutlined,{style:{color:w.colorPrimary,cursor:"pointer"},onClick:P})})})]}),e.jsx(p.Menu.Divider,{}),u?e.jsx(p.Spin,{style:{padding:"1rem"}}):d.length>0?e.jsx(e.Fragment,{children:d.map(A=>e.jsx(p.Menu.Item,{children:e.jsx(F,{title:A.name,type:A.view_type})},A.id))}):e.jsx("div",{style:{width:300,padding:5,paddingLeft:15},children:m==null?void 0:m("no_favorites")})]});function F({title:A,type:k}){const B=k==="tree"?e.jsx(H.TableOutlined,{}):e.jsx(H.FormOutlined,{});return e.jsxs(p.Row,{wrap:!1,children:[e.jsx(p.Col,{flex:"none",style:{paddingRight:20},children:B}),e.jsx(p.Col,{flex:"auto",children:A})]})}async function I(){if(i&&v)await o(v);else{if(!E)return;const A=M.find(J=>J.key===b),{id:k,type:B}=(A==null?void 0:A.action)||{},_=E.view_id;let W=!1;if(!k||!B){a(!1);return}E.type==="form"&&(W=V||!1),await s({action_id:k,action_type:B,view_id:_,res_id:W})}await x(),a(!i)}return e.jsxs(e.Fragment,{children:[e.jsx(p.Button,{type:i?"primary":"default",icon:i?e.jsx(H.StarFilled,{style:{color:"white"}}):e.jsx(H.StarOutlined,{}),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:I}),e.jsx(p.Dropdown,{overlay:$,onVisibleChange:S,open:c,children:e.jsx(p.Button,{style:{width:25,borderTopLeftRadius:0,borderBottomLeftRadius:0},icon:e.jsx(H.DownOutlined,{style:{fontSize:"0.5em"}}),onClick:A=>A.preventDefault()})})]})};U.ActionBar=Yn,U.Binary=Nn,U.Boolean=Mr,U.Button=qt,U.ButtonGroup=Fr,U.Char=Ut,U.CodeEditor=no,U.ConfigContext=jn,U.ConnectionProvider=K,U.ContentRootProvider=on,U.CurrentTabContent=mc,U.Dashboard=Xn,U.DashboardGrid=Jn,U.DashboardGridItem=Zn,U.Date=In,U.DateTime=An,U.Email=Un,U.ExportModal=En,U.FavouriteButton=wc,U.Float=Xt,U.FloatTime=On,U.Form=ut,U.FormModal=ft,U.GraphIndicator=bn,U.Group=nr,U.Image=Wr,U.Integer=St,U.Label=yt,U.Many2one=wn,U.Markdown=Rn,U.MultiCheckbox=Qn,U.Notebook=_n,U.One2many=Fn,U.ProgressBar=ln,U.Radio=eo,U.Reference=Pn,U.RootView=dc,U.SearchFilter=Qt,U.SearchModal=tr,U.SearchTree=er,U.Selection=Gt,U.Separator=kn,U.Steps=ro,U.Switch=to,U.TabSelector=hc,U.Tag=Jr,U.Tags=Qr,U.Text=Dn,U.Time=Ln,U.Tree=bt,U.Url=qn,U.iconMapper=Ue,U.showConfirmDialog=ot,Object.defineProperties(U,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
35
+ `,Cn=Ke.default.createContext(null),La=({children:t,initialView:r})=>{const[n,s]=l.useState(r),[o,i]=l.useState(0),[a,c]=l.useState(!1);return e.jsx(Cn.Provider,{value:{currentView:n,setCurrentView:s,itemIndex:o,setItemIndex:i,manualTriggerChange:a,setManualTriggerChange:c},children:t})},{getValueForOperator:Sn}=se.graphProcessor,Et=.7,It=30,bn=t=>{const{model:r,domain:n,context:s,colorCondition:o,totalDomain:i,showPercent:a=!1,icon:c,suffix:f,field:d,operator:h,manualIds:u}=t,[g,v]=l.useState(!1),[y,m]=l.useState(),[w,C]=l.useState(),[D,M]=l.useState(),[b,E]=l.useState(0),[V,L]=l.useState(0),[x,T]=l.useState(),[S,O]=l.useState(),[P,$]=l.useState();l.useEffect(()=>{A()},[r,o]);async function F({domain:k,isTotal:B}){if(B)return await I({domain:k});if(d&&h){const _=u||await K.getHandler().searchAllIds({params:k,model:r,context:s}),W=await K.getHandler().readObjects({model:r,ids:_,fieldsToRetrieve:[d],context:s});return Sn({values:W.map(J=>J[d]),operator:h})}else return u?u.length:await K.getHandler().searchCount({model:r,params:k,context:s})}async function I({domain:k}){if(d&&h){const B=await K.getHandler().searchAllIds({params:k,model:r,context:s}),_=await K.getHandler().readObjects({model:r,ids:B,fieldsToRetrieve:[d],context:s});return Sn({values:_.map(W=>W[d]),operator:h})}else return await K.getHandler().searchCount({model:r,params:k,context:s})}async function A(){v(!0);let k,B;try{const _=await F({domain:n,isTotal:!1});if(m(_),i){const W=await K.getHandler().evalDomain({domain:i,values:{},context:s});k=await F({domain:W,isTotal:!0}),M(k)}if(k?(B=Math.round(_/k*100*100)/100,C(B)):C(0),o){const W=await K.getHandler().parseCondition({condition:o,values:{value:_,percent:B},context:s});T(W)}if(c)if(c.indexOf(":")!==-1){const W=await K.getHandler().parseCondition({condition:c,values:{value:_,percent:B},context:s});O(W)}else O(c)}catch(_){$(JSON.stringify(_))}v(!1)}return P?e.jsx(p.Alert,{className:"mt-10",message:P,type:"error",banner:!0}):g?e.jsx("div",{style:{padding:"1rem"},children:e.jsx(H.LoadingOutlined,{style:{height:"12px"}})}):e.jsx(Yt.default,{bounds:!0,onResize:k=>{var B,_;E((B=k.bounds)==null?void 0:B.height),L((_=k.bounds)==null?void 0:_.width)},children:({measureRef:k})=>a?e.jsx(Na,{value:y,total:D,percent:w,measureRef:k,height:b,width:V,color:x,icon:S,suffix:f}):e.jsx(Pa,{value:y,total:D,measureRef:k,height:b,width:V,color:x,icon:S,suffix:f})})};function xn(t,r){const s=document.createElement("canvas").getContext("2d");return s.font=r||getComputedStyle(document.body).font,s.measureText(t).width}function Pa({measureRef:t,width:r,height:n,total:s,value:o,color:i,icon:a,suffix:c}){let f=n*Et<It?It:n*Et;const d=o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0});let h=s?`${d}/${s}`:`${d}`;c&&(h+=" "+c);let u=xn(h,`bold ${Math.floor(f*1.03)}px sans-serif`);a&&(u=u*2),u>=r*.85&&(f=r*.85/u*f);const g=a&&Ge(a);return e.jsx("div",{ref:t,style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},children:e.jsxs(Wt.default,{style:{fontSize:f,margin:0,color:i},children:[g&&e.jsx(g,{style:{fontSize:f*.7}}),g?` ${h}`:h]})})}function Na({measureRef:t,height:r,width:n,percent:s,total:o,value:i,color:a,icon:c,suffix:f}){const d=r*.65;let h=d*Et<It?It:d*Et;const u=i==null?void 0:i.toLocaleString("es-ES",{useGrouping:!0});let g=o?`${u}/${o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0})}`:`${u}`;f&&(g+=" "+f);const v=`${s==null?void 0:s.toLocaleString("es-ES",{useGrouping:!0})}%`;let y=xn(v,`bold ${Math.floor(h*1.03)}px sans-serif`);c&&(y=y*1.5);const m=c&&Ge(c);return(y>=n*.85||h*2<d)&&(h=n*.85/y*h),e.jsx("div",{ref:t,style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden",flexDirection:"column",padding:"0.2rem"},children:e.jsxs(p.Row,{align:"middle",children:[m&&e.jsx(p.Col,{style:{fontSize:h*1,color:a,paddingRight:"10px"},children:e.jsx(m,{})}),e.jsxs(p.Col,{children:[e.jsx(Wt.default,{style:{fontSize:h*.8,margin:0,color:a},children:m?` ${s}%`:`${s}%`}),e.jsx(Wt.default,{style:{fontSize:h*.4,margin:0,color:a,textAlign:"center"},children:g})]})]})})}const rr=t=>r=>{const n=r.value.toLocaleString("es-ES",{useGrouping:!0});return{name:t==="pie"?r.x:r.type,value:n}},At=t=>{if(typeof t=="string"&&Ba(t))return parseFloat(t).toLocaleString("es-ES",{useGrouping:!0});if(Ha(t))return t.toLocaleString("es-ES",{useGrouping:!0});if(Ka(t)){const r=Ya(t);return r===null?t:Xe(t,$t.input[r]).format($t.output[r])}else return t},Ba=t=>/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/.test(t),Ha=t=>typeof t=="number"&&!isNaN(t),Tn={default:{padding:"auto",xAxis:{tickCount:5,label:{formatter:At}},yAxis:{label:{formatter:At}},legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("default")}},pie:{appendPadding:10,radius:.9,label:{type:"inner",offset:"-30%",content:({percent:t})=>`${(t*100).toFixed(0)}%`,style:{fontSize:14,textAlign:"center"}},legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("pie")},interactions:[{type:"element-active"}]},barGrouped:{isGroup:!0,legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("barGrouped")},xAxis:{label:{formatter:At}},yAxis:{label:{formatter:At}},label:{position:"middle",layout:[{type:"interval-adjust-position"},{type:"interval-hide-overlap"},{type:"adjust-color"}]}}};function Ka(t){return typeof t!="string"||t===void 0?!1:new Date(t).toString()!=="Invalid Date"}const $t={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 Ya(t){for(const r in $t.input)if(Xe(t,$t.input[r],!0).isValid())return r;return null}const{processGraphData:Wa}=se.graphProcessor,{getFieldsToRetrieve:qa}=se.graphFieldUtils,Ua=t=>{const{model:r,domain:n=[],context:s={},xml:o,limit:i,uninformedString:a,manualIds:c}=t,[f,d]=l.useState(!1),[h,u]=l.useState(),[g,v]=l.useState(),[y,m]=l.useState(),[w,C]=l.useState("line");return et.default(()=>{(async()=>{d(!0),u(void 0);const D=se.parseGraph(o);C(D.type||"line");const M=qa({ooui:D});let b,E;try{({values:b,fields:E}=await ja({model:r,domain:n,context:s,limit:i,order:D.timerange?D.x.name:null,fields:M,manualIds:c}))}catch(V){u("Error fetching graph data values: "+JSON.stringify(V)),d(!1);return}try{if(!b||!E){u("No values or fields returned"),d(!1);return}m(b);const V=Wa({ooui:D,values:b,fields:E,options:{uninformedString:a}});v(V)}catch(V){u("Error processing graph data: "+V),d(!1);return}d(!1)})()},[o,r,i,s,n]),{loading:f,error:h,type:w,values:g,evaluatedEntries:y}};async function Ga({model:t,context:r,fields:n}){return await K.getHandler().getFields({model:t,context:r,fields:n})}async function ja({fields:t,model:r,domain:n,context:s,order:o,limit:i,manualIds:a}){const c=await Ga({model:r,context:s,fields:t});if(a){let d=await K.getHandler().readObjects({model:r,ids:a,fieldsToRetrieve:t,context:s});return o&&(d=[...d].sort((h,u)=>h[o]-u[o])),{values:d,fields:c}}return{values:await K.getHandler().search({model:r,params:n,fields:t,context:s,limit:i,order:o}),fields:c}}const za={line:Kt.Line,bar:Kt.Column,pie:Kt.Pie},Ja=t=>{var C;const{model:r,domain:n,context:s,xml:o,limit:i,manualIds:a}=t,{t:c}=l.useContext(ge),{error:f,loading:d,values:h,type:u,evaluatedEntries:g}=Ua({model:r,xml:o,limit:i,domain:n,context:s,uninformedString:c("uninformed"),manualIds:a});if(f)return e.jsx(p.Alert,{message:f,type:"error",banner:!0});if(d)return e.jsx(p.Spin,{});if(!h)return e.jsx(p.Alert,{message:"No data to display",type:"info"});const{data:v,isGroup:y,isStack:m}=h,w=za[u];return w?e.jsxs("div",{style:{padding:"1rem"},children:[e.jsx("p",{style:{textAlign:"right"},children:`${c("totalRegisters")} ${(C=g==null?void 0:g.length)==null?void 0:C.toLocaleString("es-ES",{useGrouping:!0})}`}),e.jsx(w,{...Za({type:u,data:v,isGroup:y,isStack:m})})]}):e.jsx(e.Fragment,{children:`Unknown graph type: ${u}`})};function Za(t){const{type:r,data:n,isGroup:s,isStack:o}=t;let i=Tn[r];return i||(i=Tn.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 Xa=(t,r)=>{const{view_id:n,model:s,context:o,domain:i,limit:a,manualIds:c}=t,[f,d]=l.useState(!1),[h,u]=l.useState(),[g,v]=l.useState(),y=l.useContext(We),{setGraphIsLoading:m=void 0}=y||{};l.useImperativeHandle(r,()=>({refresh:()=>{w()}})),l.useEffect(()=>{w()},[n]);async function w(){d(!0),m==null||m(!0);try{const C=await K.getHandler().getView({model:s,id:n,type:"graph",context:o});v(C.arch);const D=se.parseGraph(C.arch);u(D)}catch(C){return console.error(C),e.jsx(e.Fragment,{children:JSON.stringify(C)})}d(!1),m==null||m(!1)}if(f)return e.jsx("div",{style:{width:"100%",display:"flex",height:"20%",justifyContent:"center",alignContent:"center",padding:"1rem"},children:e.jsx(H.LoadingOutlined,{style:{height:"12px"}})});if(!h)return null;switch(h.type){case"indicatorField":case"indicator":{const C=h,D=C.type==="indicatorField"?{field:C.field,operator:C.operator}:{};return e.jsx(bn,{showPercent:C.showPercent,totalDomain:C.totalDomain,colorCondition:C.color,model:s,context:o,domain:i,icon:C.icon,suffix:C.suffix,manualIds:c,...D})}case"line":case"bar":case"pie":return e.jsx(Ja,{model:s,context:o,domain:i,xml:g,limit:a,manualIds:c});default:return e.jsx(e.Fragment,{children:`Graph ${h.type} not implemented`})}},Lt=l.forwardRef(Xa),{confirm:Qa}=p.Modal,Ra=({onOk:t,lang:r})=>{Qa({title:be("removeItems",r),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmRemove",r),okText:be("yesConfirmRemove",r),onOk:t,cancelText:be("cancel",r)})},{confirm:el}=p.Modal,tl=({onOk:t,lang:r})=>{el({title:be("unlinkItems",r),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmUnlink",r),okText:be("yesConfirmUnlink",r),onOk:t,cancelText:be("cancel",r)})},{useToken:rl}=p.theme,nl=t=>{const{title:r,readOnly:n,onCreateItem:s,onToggleViewMode:o,mode:i,onDelete:a,totalItems:c,currentItemIndex:f,onPreviousItem:d,onNextItem:h,isMany2Many:u,onSearchItem:g,selectedRowKeys:v,showCreateButton:y,showToggleButton:m}=t,{token:w}=rl();function C(){return e.jsx("div",{className:"inline-block w-3"})}function D(){return e.jsx("div",{className:"flex flex-grow h-8 text-white",style:{borderRadius:w.borderRadius,backgroundColor:w.colorPrimaryActive},children:e.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:e.jsx("span",{className:"pl-2 font-bold",children:r})})})}function M(){return e.jsx(Be,{tooltip:u?"Unlink":"Delete",icon:u?e.jsx(H.ApiOutlined,{}):e.jsx(H.DeleteOutlined,{}),onClick:a,disabled:c===0||n||i!=="form"&&v.length===0})}function b(){let V="_";return c===0?V="_":V=(f+1).toString(),e.jsxs("span",{className:"pl-1 pr-1",children:["(",V,"/",c,")"]})}function E(){return e.jsxs(e.Fragment,{children:[C(),e.jsx(Be,{tooltip:"Previous item",icon:e.jsx(H.LeftOutlined,{}),onClick:d}),b(),e.jsx(Be,{tooltip:"Next item",icon:e.jsx(H.RightOutlined,{}),onClick:h})]})}return e.jsxs("div",{className:"flex mb-2",children:[D(),e.jsxs("div",{className:"flex-none h-8 pl-2",children:[i!=="graph"&&y&&e.jsx(Be,{tooltip:"Create new item",icon:e.jsx(H.FileAddOutlined,{}),disabled:n,onClick:s}),u&&y&&e.jsx(Be,{tooltip:"Search existing item",icon:e.jsx(H.SearchOutlined,{}),disabled:n,onClick:g}),i!=="graph"&&C(),i!=="graph"&&M(),i==="form"&&E(),C(),m&&e.jsx(Be,{tooltip:"Toggle view mode",icon:e.jsx(H.AlignLeftOutlined,{}),onClick:o})]})]})},ol={form:se.Form,tree:se.Tree,graph:Lt};function sl(t){const r=t.map(s=>s.id);return t.filter((s,o)=>{const{id:i}=s;return!r.includes(i,o+1)})}const il=t=>{var $e;const{value:r,onChange:n,ooui:s,views:o}=t,{items:i=[]}=r||{},{currentView:a,setCurrentView:c,itemIndex:f,setItemIndex:d}=l.useContext(Cn),h=l.useContext(Me),{activeId:u,getFields:g,getValues:v,getContext:y,domain:m}=h||{},{lang:w,t:C}=l.useContext(ge),[D,M]=l.useState(!1),[b,E]=l.useState(!1),[V,L]=l.useState(),[x,T]=l.useState(!1),[S,O]=l.useState(!1),[P,$]=l.useState(),[F,I]=l.useState([]),[A,k]=l.useState(!1),B=l.useRef([]),[_,W]=l.useState(),J=l.useRef(),[j,X]=l.useState(void 0),{readOnly:G,relation:N,context:Y,domain:re}=s,Q=s.type==="many2many",{id:le}=s,R=i.filter(ee=>(ee.values||ee.treeValues)&&ee.operation!=="pendingRemove"),Z=l.useRef();l.useEffect(()=>{if(Z.current!==a){Z.current=a,he();return}he()},[i,a]);const he=l.useCallback(()=>{(a==="form"&&i.some(ee=>!ee.values)||a==="tree"&&i.some(ee=>!ee.treeValues))&&Ee()},[i,a]);l.useEffect(()=>{Ie()},[m]);const ve=ee=>{var ae,Ce;n==null||n({fields:((ae=o.get("form"))==null?void 0:ae.fields)||((Ce=o.get("tree"))==null?void 0:Ce.fields),items:sl(ee)})},Ee=async()=>{await Oe(),f>R.length-1&&f!==0&&d(0)},Oe=async ee=>{var ae,Ce,ye;E(!0),M(!1),L(void 0);try{const[Se,xe]=await zt({treeView:{arch:(ae=o.get("tree"))==null?void 0:ae.arch,fields:(Ce=o.get("tree"))==null?void 0:Ce.fields},formView:{fields:((ye=o.get("form"))==null?void 0:ye.fields)||{}},model:N,items:i,context:{...y==null?void 0:y(),...Y},currentView:ee||a});return J.current||(J.current=Se.map(Te=>Te.id)),(a||ee)==="tree"&&xe&&X(xe),ve(Se),Se}catch(Se){L(Se)}finally{E(!1)}};async function Ie(){re&&(B.current=await K.getHandler().evalDomain({domain:re,values:ct({fields:g(),values:v()}),fields:g(),context:y()})),m&&m.length>0&&(B.current=B.current.concat(se.transformDomainForChildWidget({domain:m,widgetFieldName:le})))}const Pe=()=>{const ee=Array.from(o.keys()),ae=ee[(ee.indexOf(a)+1)%ee.length];a==="form"?we(()=>{c(ae)}):c(ae)},ie=()=>{f>0&&(a==="form"?we(()=>{d(f-1)}):d(f-1))},de=()=>{const ee=R.length;f<ee-1&&(a==="form"?we(()=>{d(f+1)}):d(f+1))},Ae=async()=>{const ee=R[f].id,ae=(await K.getHandler().readObjects({model:N,ids:[ee],fields:o.get("form").fields,context:{...y==null?void 0:y(),...Y}}))[0],Ce=(await K.getHandler().readObjects({model:N,ids:[ee],fields:o.get("tree").fields,context:{...y==null?void 0:y(),...Y}}))[0],ye=i.map(Se=>Se.id===ee?{...Se,operation:"original",values:ae,treeValues:Ce}:Se);ve(ye)},we=ee=>{D?vt({lang:w,onOk:()=>{Ae(),ee(),M(!1)}}):ee()},De=()=>{if(Q){tl({lang:w,onOk:()=>{a==="form"?Fe():_e()}});return}Ra({lang:w,onOk:()=>{a==="form"?Fe():_e()}})},Ye=async()=>{const{inv_field:ee}=s;let ae;ee&&u&&(ae={[ee]:u}),a==="form"?we(()=>{k(!0),$({defaultValues:ae}),T(!0)}):(k(!0),$({defaultValues:ae}),T(!0))},te=async()=>{a==="form"?we(()=>{O(!0)}):O(!0)},Fe=async()=>{E(!0),M(!1),L(void 0);try{if(R[f].id>0){const ee=i.map(ae=>ae.id===R[f].id?{...ae,operation:"pendingRemove"}:ae);ve(ee)}else ve(i.filter(ee=>ee.id!==R[f].id))}catch(ee){L(ee)}d(0),E(!1)},_e=async()=>{const ee=R.filter(ae=>F.includes(ae.id));E(!0),M(!1),L(void 0);try{const ae=ee.map(ye=>ye.id),Ce=i.filter(ye=>!(ae.includes(ye.id)&&ye.id<0)).map(ye=>ae.includes(ye.id)?{...ye,operation:"pendingRemove"}:ye);ve(Ce)}catch(ae){L(ae)}d(0),E(!1)},ke=(ee,ae,Ce,ye=!1)=>{let Se;if(ye)Se=i.concat({id:ee,operation:"pendingLink",values:{...Ce,id:ee},treeValues:{...Ce,id:ee}});else if(ee)Se=i.map(xe=>xe.id===ee?{id:ee,operation:ee>0?"pendingUpdate":"pendingCreate",values:{...Ce,id:ee},treeValues:{...Ce,id:ee}}:xe);else{const xe=si(i);Se=i.concat({id:xe,operation:"pendingCreate",values:{...Ce,id:xe},treeValues:{...Ce,id:xe}})}ve(Se),A||T(!1)},ce=async ee=>{const{id:ae}=ee;let Ce=i;const ye=i.find(Se=>Se.id===ae);(ye==null?void 0:ye.values)===void 0&&(Ce=await Oe("form")),$(Ce.find(Se=>Se.id===ae)),k(!1),T(!0)},fe=async ee=>{E(!0);let ae=i;const Ce=ee.filter(ye=>!i.find(Se=>Se.id===ye));try{for(const ye of Ce){const Se=(await K.getHandler().readObjects({model:N,ids:[ye],fields:o.get("form").fields,context:{...y==null?void 0:y(),...Y}}))[0],xe=(await K.getHandler().readObjects({model:N,ids:[ye],fields:o.get("tree").fields,context:{...y==null?void 0:y(),...Y}}))[0];ae.push({id:ye,operation:"pendingLink",values:Se,treeValues:xe})}ve(ae)}catch(ye){L(ye)}finally{E(!1)}};function Ne(){const ee=ol[a];if(a==="graph")return se.parseGraph(o.get("graph").arch).string;{const ae=new ee(o.get(a).fields);return ae.parse(o.get(a).arch),ae.string}}const ue=()=>{var ae,Ce,ye,Se;if(a==="form")return R.length===0?C("noCurrentEntries"):a!==Z.current&&i.some(xe=>!xe.values)?e.jsx(p.Spin,{}):e.jsx(ut,{formView:o.get("form"),values:(ae=R[f])==null?void 0:ae.values,parentContext:{...y==null?void 0:y(),...Y},model:N,id:(Ce=R[f])==null?void 0:Ce.id,submitMode:"values",onFieldsChange:xe=>{var Je;const Te=(Je=R[f])==null?void 0:Je.id,Ve=i.map(rt=>rt.id===Te?{...rt,operation:rt.operation==="original"?"pendingUpdate":rt.operation,values:{...xe,id:Te},treeValues:{...xe,id:Te}}:rt);ve(Ve),M(!0)},readOnly:G});let ee=[];if(R.some(xe=>xe.treeValues)&&(ee=_?at({resultsToSort:R.map(xe=>xe.treeValues),sorter:_,fields:{...o.get("tree").fields,...((ye=o.get("form"))==null?void 0:ye.fields)||{}}}):R.map(xe=>xe.treeValues)),a==="tree")return e.jsx(bt,{total:R.length,limit:R.length,treeView:o.get("tree"),results:ee,loading:b,onRowClicked:((Se=o.get("form"))==null?void 0:Se.fields)!==void 0?ce:void 0,showPagination:!1,rowSelection:{selectedRowKeys:F,onChange:I},sorter:_,onChangeSort:W,context:{...y==null?void 0:y(),...Y},colorsForResults:j,readonly:G});if(a==="graph"){const xe=[[`${s.inv_field}`,"=",u]];return e.jsx(Lt,{view_id:o.get("graph").view_id,model:s.relation,domain:xe,context:{...y==null?void 0:y(),...Y},limit:0})}};if(V)return e.jsx(p.Alert,{className:"mt-10",message:V,type:"error",banner:!0});const ze=A;return b?e.jsx(p.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(nl,{mode:a,title:Ne(),readOnly:G,isMany2Many:Q,formHasChanges:D,totalItems:R.length,currentItemIndex:f,onDelete:De,onCreateItem:Ye,onToggleViewMode:Pe,onPreviousItem:ie,onNextItem:de,onSearchItem:te,selectedRowKeys:F,showCreateButton:(($e=o.get("form"))==null?void 0:$e.fields)!==void 0,showToggleButton:o.size>1}),ue(),e.jsx(ft,{formView:o.get("form"),model:N,id:P==null?void 0:P.id,submitMode:"2many",values:P==null?void 0:P.values,defaultValues:P==null?void 0:P.defaultValues,visible:x,onSubmitSucceed:ke,parentContext:{...y==null?void 0:y(),...Y},onCancel:()=>{k(!1),T(!1)},readOnly:G,mustClearAfterSave:ze}),e.jsx(tr,{domain:B.current,model:N,context:{...y==null?void 0:y(),...Y},visible:S,onSelectValues:async ee=>{O(!1),fe(ee)},onCloseModal:()=>{O(!1)}})]})},Fn=t=>{const{ooui:r}=t,{mode:n,relation:s,views:o,required:i,context:a}=r;let c;const[f,d]=l.useState(!0),[h,u]=l.useState(),[g,v]=l.useState(new Map),y=l.useContext(Me),{getContext:m}=y||{};et.default(()=>{C()},[r]);const w=async M=>o&&o[M]?o[M]:await K.getHandler().getView({model:s,type:M,context:{...m==null?void 0:m(),...a}}),C=async()=>{d(!0),u(void 0);try{if(n&&n.length>0){for(const M of n){const b=await w(M);g.set(M,b)}v(g)}else{const M=await w("form"),b=await w("tree");g.set("form",M),g.set("tree",b),v(g)}}catch(M){u(JSON.stringify(M))}finally{d(!1)}};if(n&&n.length>0?c=n[0]:c="tree",f)return e.jsx(p.Spin,{});if(h)return e.jsx(p.Alert,{className:"mt-10",message:h,type:"error",banner:!0});const D=async(M,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(La,{initialView:c,children:e.jsx(me,{required:i,type:"array",validator:D,...t,children:e.jsx(il,{ooui:r,views:g})})})},{useToken:al}=p.theme,On=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"number",...t,children:e.jsx(ll,{ooui:r})})},ll=t=>{const{ooui:r,value:n,onChange:s}=t,{id:o,readOnly:i,required:a}=r,{token:c}=al(),f=a&&!i?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useRef(),[h,u]=l.useState(),g=l.useContext(Me),{elementHasLostFocus:v}=g||{};l.useEffect(()=>{u(an(n))},[n]);const y=C=>{s==null||s(C)};function m(C){d.current=C.target.value,u(C.target.value)}async function w(){y(da(h)),await new Promise(C=>setTimeout(C,300)),v==null||v()}return e.jsx(p.Input,{value:h,disabled:i,className:"w-full",style:f,id:o,placeholder:"00:00",onChange:m,onBlur:w})};function nr(t){const{ooui:r,showLabel:n=!0,responsiveBehaviour:s}=t,o=Ge(r.icon||"");return e.jsx(e.Fragment,{children:(r.label||o)&&n?e.jsx(mr.FieldSet,{label:r.label,icon:o,children:e.jsx(Zt,{container:r.container,responsiveBehaviour:s})}):e.jsx(Zt,{container:r.container,responsiveBehaviour:s})})}const{TabPane:cl}=p.Tabs;function _n(t){const{ooui:r,responsiveBehaviour:n}=t,s=r.pages;function o(i){if(i){const a=Ge(i);return a&&e.jsx(a,{})}}return e.jsx(p.Tabs,{defaultActiveKey:"1",tabPosition:r.tabPosition,children:s.filter(i=>!i.invisible).map(i=>e.jsx(cl,{tab:e.jsxs(e.Fragment,{children:[o(i.icon)," ",i.label]}),children:e.jsx(nr,{ooui:i,showLabel:!1,responsiveBehaviour:n})},i.label))})}const{useToken:dl}=p.theme,{TextArea:or}=p.Input,Dn=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o,height:i,translatable:a}=r,{token:c}=dl(),f=o&&!s?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useContext(Me),{elementHasLostFocus:h}=d||{};return e.jsx(me,{required:o,...t,children:a?e.jsx(ul,{field:n,height:i,requiredStyle:f}):e.jsx(or,{disabled:s||a,style:{minHeight:i?i+"px":"100%",...f},rows:4,onBlur:h})})},ul=({value:t,field:r,requiredStyle:n,onChange:s,height:o})=>{const i=l.useContext(Me),{activeId:a,activeModel:c,fetchValues:f,formHasChanges:d,elementHasLostFocus:h}=i||{},[u,g]=l.useState(!1),{t:v}=l.useContext(ge);return a?e.jsxs(e.Fragment,{children:[e.jsx("div",{onClick:()=>{if(d!=null&&d()){Ze(v("saveBeforeTranslate"));return}u||g(!0)},children:e.jsx(or,{value:t,onChange:y=>{s==null||s(y.target.value)},style:{height:o?o+"px":"100%",cursor:"pointer",pointerEvents:"none",...n},id:r,disabled:!0,rows:4,onBlur:h})}),e.jsx(Dr,{id:a,model:c,field:r,visible:u,onCloseModal:()=>{g(!1)},onSubmitSucceed:()=>{g(!1),f==null||f()}})]}):e.jsxs(e.Fragment,{children:[e.jsx(p.Row,{gutter:8,wrap:!1,children:e.jsx(or,{value:t,onChange:y=>{s==null||s(y.target.value)},style:{height:o?o+"px":"100%",...n},id:r,rows:4,onBlur:h})}),e.jsx(p.Row,{justify:"end",style:{paddingTop:5},children:e.jsx(Be,{tooltip:v("translate"),icon:e.jsx(H.TranslationOutlined,{}),onClick:async()=>{d!=null&&d()?Ze(v("saveBeforeTranslate")):Ze(v("enterTextBeforeTranslate"))},children:v("translate")})})]})},kn=t=>{const{ooui:r}=t,{label:n,icon:s}=r,o=Ge(s||"");return e.jsx(p.Divider,{orientation:"left",className:"text-sm",children:(o||n)&&e.jsxs(p.Space,{children:[o?e.jsx(o,{}):null,n]})})},fl=({model:t,context:r,locale:n,selectedRegistersToExport:s,domain:o,limit:i,onClose:a})=>{const c=l.useRef({}),f=l.useRef(new Map),d=l.useCallback(async w=>{if(w.selectedKeys===void 0||w.selectedKeys.length===0){Ze(be("selectAtLeastOneField",n));return}let C=o;w.registersAmount==="selected"&&(s==null?void 0:s.length)!==0&&(C=[["id","in",s==null?void 0:s.map(b=>b.id)]]);const{datas:D}=await K.getHandler().exportData({model:t,fields:wl({keys:w.selectedKeys,fields:c.current}),domain:C,limit:w.registersAmount==="all"?0:i,context:r,format:w.exportType});a(),await new Promise(b=>setTimeout(b,200));const M=await st(D);_t(D,M.mime)},[n,t,o,i,r,a]),h=l.useCallback(async()=>{const w=await K.getHandler().getFields({model:t,context:r,fields:[]});return c.current["/"]=w,Vn({fields:w})},[t,r,c]),u=l.useCallback(async w=>{const D=ir(w,c.current)[sr(w)],M=D.relation,b=await K.getHandler().getFields({model:M,context:r,fields:[]});for(const[E,V]of Object.entries(b))b[E].string=pl({parentTitle:D.string,title:V.string});return c.current[w]=b,Vn({fields:b,parentKey:w})},[c.current,t,r]),g=l.useCallback(async()=>{const w=await gl({model:t,context:r}),C=await yl({predefinedExports:w,fields:c.current,onGetFieldChilds:u});return{predefinedExports:w.map(M=>({...M,fields:M.fields.map(b=>{const E=sr(b.key),L=ir(b.key,c.current)[E];return{key:b.key,title:L.string}})})),keysWithChilds:C}},[c.current]),v=l.useCallback(async w=>{const C=await m("ir.exports"),D=await m("ir.exports.line"),M=await K.getHandler().create({model:"ir.exports",values:{name:w.name,resource:t},fields:C,context:r});return await Promise.all(w.fields.map(async b=>await K.getHandler().create({model:"ir.exports.line",values:{name:b.key,export_id:M},fields:D,context:r}))),{...w,id:M}},[]),y=l.useCallback(async w=>{await K.getHandler().delete({model:"ir.exports",ids:[w.id]})},[]),m=l.useCallback(async w=>{if(f.current.has(w))return f.current.get(w);const C=K.getHandler().getFields({model:w,context:r,fields:[]});f.current.set(w,C)},[f,r]);return{onGetFields:h,onGetFieldChilds:u,onExport:d,onGetPredefinedExports:g,onSavePredefinedExport:v,onRemovePredefinedExport:y}},Vn=({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=Mn(o);n.push({key:hl({key:s,parentKey:r}),title:o.string,tooltip:o.help,required:o.required,isLeaf:!i})}return n},Mn=t=>t.type==="many2one"||t.type==="one2many"||t.type==="many2many",hl=({parentKey:t,key:r})=>`${t?t+"/":""}${r}`,xt=t=>t.indexOf("/")===-1?t:t.split("/").slice(0,-1).join("/"),sr=t=>{if(t.indexOf("/")===-1)return t;const r=t.split("/");return r[r.length-1]},ir=(t,r)=>t.indexOf("/")===-1?r["/"]:r[xt(t)],pl=({title:t,parentTitle:r})=>`${r?r+" \u2192 ":""}${t}`,gl=async({model:t,context:r})=>{const n=await K.getHandler().search({model:"ir.exports",params:[["resource","=",t]],context:r}),s=n.flatMap(i=>i.export_fields),o=await K.getHandler().readObjects({model:"ir.exports.line",ids:s,context:r});return n.map(i=>({id:i.id,name:i.name,fields:i.export_fields.map(a=>({key:o.find(f=>f.id===a).name}))}))},ml=({fields:t,keys:r})=>vl([...new Set(r.filter(n=>{var s,o,i;if(n.indexOf("/")===-1)return!((s=t["/"])!=null&&s[n]);{const a=xt(n);console.log({key:n,parentKey:a,fields:t});const c=(o=t==null?void 0:t[xt(n)])==null?void 0:o[n];return console.log({exists:c}),!((i=t==null?void 0:t[xt(n)])!=null&&i[n])}}).map(n=>xt(n)))]),yl=async({predefinedExports:t,fields:r,onGetFieldChilds:n})=>{const s=t.flatMap(a=>a.fields.map(c=>c.key)),o=ml({fields:r,keys:s}),i=[];for(const a of o)i.push({key:a,childs:await n(a)});return i},wl=({keys:t,fields:r})=>t.map(n=>{const s=sr(n),i=ir(n,r)[s];return Mn(i)?`${n}/id`:n}),vl=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},En=t=>{const{visible:r,locale:n,onClose:s,model:o,context:i,selectedRegistersToExport:a,totalRegisters:c,domain:f,limit:d,visibleRegisters:h}=t,{onExport:u,onGetFieldChilds:g,onGetFields:v,onGetPredefinedExports:y,onSavePredefinedExport:m,onRemovePredefinedExport:w}=fl({model:o,context:i,domain:f,limit:d,selectedRegistersToExport:a,onClose:s,locale:n});return e.jsx(mr.ExportModal,{visible:r,locale:n,onSucceed:u,onCancel:s,selectedRegistersToExport:a&&a.length&&a.length>0?a.length:void 0,totalRegisters:c,onGetFieldChilds:g,onGetFields:v,visibleRegisters:h,onGetPredefinedExports:y,onSavePredefinedExport:m,onRemovePredefinedExport:w})},In=t=>{const{ooui:r}=t;return e.jsx(pn,{ooui:r})},An=t=>{const{ooui:r}=t;return e.jsx(pn,{ooui:r,showTime:!0})};var $n={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Re,function(){var n={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},s=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,o=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,c={},f=function(m){return(m=+m)+(m>68?1900:2e3)},d=function(m){return function(w){this[m]=+w}},h=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=function(w){if(!w||w==="Z")return 0;var C=w.match(/([+-]|\d\d)/g),D=60*C[1]+(+C[2]||0);return D===0?0:C[0]==="+"?-D:D}(m)}],u=function(m){var w=c[m];return w&&(w.indexOf?w:w.s.concat(w.f))},g=function(m,w){var C,D=c.meridiem;if(D){for(var M=1;M<=24;M+=1)if(m.indexOf(D(M,0,w))>-1){C=M>12;break}}else C=m===(w?"pm":"PM");return C},v={A:[a,function(m){this.afternoon=g(m,!1)}],a:[a,function(m){this.afternoon=g(m,!0)}],S:[/\d/,function(m){this.milliseconds=100*+m}],SS:[o,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[i,d("seconds")],ss:[i,d("seconds")],m:[i,d("minutes")],mm:[i,d("minutes")],H:[i,d("hours")],h:[i,d("hours")],HH:[i,d("hours")],hh:[i,d("hours")],D:[i,d("day")],DD:[o,d("day")],Do:[a,function(m){var w=c.ordinal,C=m.match(/\d+/);if(this.day=C[0],w)for(var D=1;D<=31;D+=1)w(D).replace(/\[|\]/g,"")===m&&(this.day=D)}],M:[i,d("month")],MM:[o,d("month")],MMM:[a,function(m){var w=u("months"),C=(u("monthsShort")||w.map(function(D){return D.slice(0,3)})).indexOf(m)+1;if(C<1)throw new Error;this.month=C%12||C}],MMMM:[a,function(m){var w=u("months").indexOf(m)+1;if(w<1)throw new Error;this.month=w%12||w}],Y:[/[+-]?\d+/,d("year")],YY:[o,function(m){this.year=f(m)}],YYYY:[/\d{4}/,d("year")],Z:h,ZZ:h};function y(m){var w,C;w=m,C=c&&c.formats;for(var D=(m=w.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(T,S,O){var P=O&&O.toUpperCase();return S||C[O]||n[O]||C[P].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function($,F,I){return F||I.slice(1)})})).match(s),M=D.length,b=0;b<M;b+=1){var E=D[b],V=v[E],L=V&&V[0],x=V&&V[1];D[b]=x?{regex:L,parser:x}:E.replace(/^\[|\]$/g,"")}return function(T){for(var S={},O=0,P=0;O<M;O+=1){var $=D[O];if(typeof $=="string")P+=$.length;else{var F=$.regex,I=$.parser,A=T.slice(P),k=F.exec(A)[0];I.call(S,k),T=T.replace(k,"")}}return function(B){var _=B.afternoon;if(_!==void 0){var W=B.hours;_?W<12&&(B.hours+=12):W===12&&(B.hours=0),delete B.afternoon}}(S),S}}return function(m,w,C){C.p.customParseFormat=!0,m&&m.parseTwoDigitYear&&(f=m.parseTwoDigitYear);var D=w.prototype,M=D.parse;D.parse=function(b){var E=b.date,V=b.utc,L=b.args;this.$u=V;var x=L[1];if(typeof x=="string"){var T=L[2]===!0,S=L[3]===!0,O=T||S,P=L[2];S&&(P=L[2]),c=this.$locale(),!T&&P&&(c=C.Ls[P]),this.$d=function(A,k,B){try{if(["x","X"].indexOf(k)>-1)return new Date((k==="X"?1e3:1)*A);var _=y(k)(A),W=_.year,J=_.month,j=_.day,X=_.hours,G=_.minutes,N=_.seconds,Y=_.milliseconds,re=_.zone,Q=new Date,le=j||(W||J?1:Q.getDate()),R=W||Q.getFullYear(),Z=0;W&&!J||(Z=J>0?J-1:Q.getMonth());var he=X||0,ve=G||0,Ee=N||0,Oe=Y||0;return re?new Date(Date.UTC(R,Z,le,he,ve,Ee,Oe+60*re.offset*1e3)):B?new Date(Date.UTC(R,Z,le,he,ve,Ee,Oe)):new Date(R,Z,le,he,ve,Ee,Oe)}catch{return new Date("")}}(E,x,V),this.init(),P&&P!==!0&&(this.$L=this.locale(P).$L),O&&E!=this.format(x)&&(this.$d=new Date("")),c={}}else if(x instanceof Array)for(var $=x.length,F=1;F<=$;F+=1){L[1]=x[F-1];var I=C.apply(this,L);if(I.isValid()){this.$d=I.$d,this.$L=I.$L,this.init();break}F===$&&(this.$d=new Date(""))}else M.call(this,b)}}})})($n);const Cl=$n.exports;Xe.extend(Cl);const Ln=t=>{const{ooui:r}=t;return e.jsx(me,{...t,children:e.jsx(Sl,{ooui:r})})},Sl=t=>{const r=(n,s)=>{t.onChange&&t.onChange(s)};return e.jsx(p.TimePicker,{onChange:r,value:t.value?Xe(t.value,"HH:mm:ss"):void 0})},Pn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(bl,{ooui:r})})},bl=t=>{const{value:r,onChange:n,ooui:s}=t,{required:o,selectionValues:i,readOnly:a}=s,c=r==null?void 0:r.split(","),[f,d]=l.useState([]),[h,u]=l.useState();return l.useEffect(()=>{if(!r){u(void 0),d([]);return}const g=r&&c&&c[0],v=r&&c&&c[1]&&parseInt(c[1]);d([v,void 0]),u(g)},[r]),e.jsxs(p.Row,{gutter:8,wrap:!1,children:[e.jsx(p.Col,{flex:"1",children:e.jsx(kr,{ooui:new se.Selection({name:"model_selection",selection:i,readonly:a,required:o}),onChange:g=>{u(g);let v=f[0]||0;g!==h&&(d([]),v=0);const y=`${g},${v}`;y!==r&&(n==null||n(y))},value:h})}),e.jsx(p.Col,{flex:"3",children:e.jsx(vn,{ooui:new se.Many2one({name:"object_value",relation:h,readonly:a,required:o}),value:f,onChange:g=>{d(g);const v=`${h},${g[0]||0}`;v!==r&&(n==null||n(v))}})})]})},{useToken:xl}=p.theme,Nn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(Tl,{ooui:r})})},Tl=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o,required:i,filenameField:a}=r,{token:c}=xl(),f=i&&!o?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useRef(null),{setFieldValue:h,getFieldValue:u}=l.useContext(Me)||{},{t:g}=l.useContext(ge),v=n?Rs(n):"",y=M=>{s==null||s(M)};async function m(){const M=await st(n),b=`data:${M==null?void 0:M.mime};base64,${n}`,E=document.createElement("a"),V=u(a),L=u("name");E.href=b,E.download=V||L,E.click()}async function w(){const M=await st(n);_t(n,M.mime)}async function C(M){M.stopPropagation(),M.preventDefault();const b=M.target.files[0],E=await Yr(b);y(E),a&&h(a,b.name)}function D(){h(a,void 0),y(void 0)}return e.jsxs(p.Row,{gutter:8,children:[e.jsxs(p.Col,{style:{paddingBottom:5},children:[e.jsx("input",{type:"file",id:"file",ref:d,style:{display:"none"},onChange:C}),e.jsx(p.Input,{type:"text",disabled:!0,style:f,value:v})]}),e.jsx(p.Col,{children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.FolderOpenOutlined,{}),disabled:o,onClick:()=>{d.current.click()},children:"Select"}),e.jsx(p.Button,{icon:e.jsx(H.EyeOutlined,{}),disabled:!n,onClick:w,children:g("open")}),e.jsx(Be,{tooltip:g("download"),disabled:!n,onClick:m,icon:e.jsx(H.DownloadOutlined,{})}),e.jsx(Be,{tooltip:g("clear"),disabled:o||!n,onClick:D,icon:e.jsx(H.ClearOutlined,{})})]})})]})},ar={tree:e.jsx(H.TableOutlined,{}),form:e.jsx(H.FormOutlined,{}),graph:e.jsx(H.AreaChartOutlined,{}),calendar:e.jsx(H.CalendarOutlined,{})};function Bn(t){return t?(ar==null?void 0:ar[t.type])||e.jsx(H.FormOutlined,{}):e.jsx(H.FormOutlined,{})}function lr(t){const{currentView:r,availableViews:n,onChangeView:s,disabled:o=!1,formHasChanges:i=!1,previousView:a}=t,{t:c,lang:f}=l.useContext(ge);function d(){const g=n.map((v,y)=>e.jsx(p.Menu.Item,{children:e.jsxs(p.Row,{wrap:!1,children:[e.jsx(p.Col,{flex:"none",style:{paddingRight:20},children:Bn(v)}),e.jsx(p.Col,{flex:"auto",style:{paddingRight:20},children:v.type.charAt(0).toUpperCase()+v.type.slice(1)}),e.jsx(p.Col,{flex:"none",children:e.jsx(H.CheckOutlined,{style:{opacity:r.view_id===v.view_id?1:0}})})]})},v.view_id||y));return e.jsx(p.Menu,{onClick:u,children:e.jsx(p.Menu.ItemGroup,{title:c("viewAs"),children:g})})}function h(g){if(i){vt({lang:f,onOk:()=>{g()}});return}g()}function u(g){h(()=>{const v=n.find(y=>y.view_id===parseInt(g.key));s(v)})}return e.jsxs("div",{style:{display:"flex"},children:[e.jsx(Be,{tooltip:a?c("viewAs")+" "+c(a.type):"",icon:Bn(a),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:()=>{u({key:a==null?void 0:a.view_id})},disabled:o||n.length===1}),e.jsx(p.Dropdown,{overlay:d(),disabled:o||n.length===1,children:e.jsx(p.Button,{style:{width:25,borderTopLeftRadius:0,borderBottomLeftRadius:0},icon:e.jsx(H.DownOutlined,{style:{fontSize:"0.5em"}}),onClick:g=>g.preventDefault()})})]})}function ht(t){const{icon:r,tooltip:n,items:s=[],onItemClick:o,label:i,disabled:a=!1}=t;function c(){const d=s==null?void 0:s.map((h,u)=>h.name==="divider"?e.jsx(p.Menu.Divider,{},"divider"+u):e.jsx(p.Menu.Item,{children:h.name},h.id));return e.jsx(p.Menu,{onClick:f,children:e.jsx(p.Menu.ItemGroup,{title:n,children:d})})}function f(d){const h=s.find(u=>isNaN(d.key)?u.id===d.key:u.id===parseInt(d.key));o(h)}return e.jsx(p.Dropdown,{overlay:c(),disabled:a||!s||s.length===0,children:e.jsxs(p.Button,{children:[r," ",i," ",e.jsx(H.DownOutlined,{})]})})}function He(t){const{onClick:r,disabled:n=!1,loading:s=!1,tooltip:o,icon:i,label:a,type:c="default"}=t,f=s?e.jsx(H.LoadingOutlined,{}):i;return e.jsxs(Be,{type:c,tooltip:o,onClick:r,disabled:n,children:[f,a]})}function Hn(t){const{disabled:r=!1}=t,{formHasChanges:n,onNewClicked:s}=l.useContext(We),{t:o,lang:i}=l.useContext(ge),a=()=>{if(n){vt({lang:i,onOk:()=>{s()}});return}s()};return e.jsx(He,{icon:e.jsx(H.FileAddOutlined,{}),tooltip:o("new"),onClick:a,disabled:r})}const{confirm:Fl}=p.Modal,Ol=({onOk:t,onCancel:r,lang:n})=>{Fl({title:be("unsavedChanges",n),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:be("confirmRefreshWithoutSave",n),okText:be("discardAndRefresh",n),cancelText:be("cancel",n),onOk:t,onCancel:r})};async function Kn(t,r,n){const s=(await K.getHandler().getLogInfo({model:t,ids:[r]}))[0],{create_date:o,create_uid:i,id:a,write_date:c,write_uid:f}=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")+": "+f[1]," ",e.jsx("br",{}),n("lastUpdatedDate")+": "+c]}))}const _l=t=>{const{numberOfAttachments:r,disabled:n}=t,{t:s,lang:o}=l.useContext(ge),[i,a]=l.useState(!1),c=e.jsxs(p.Button,{disabled:n,children:[e.jsx(H.LinkOutlined,{}),`(${r})`,e.jsx(H.DownOutlined,{style:{fontSize:12}})]});return n?c:e.jsx(p.Popover,{onVisibleChange:f=>a(f),visible:i,placement:"bottom",content:Dl(t,a,o),title:s("attachments"),arrowContent:null,children:c})},Dl=(t,r,n)=>{const{attachments:s=[],loading:o,onAddNewAttachment:i,onopenAttachmentLink:a,onOpenAttachmentDetail:c,onListAllAttachments:f}=t;return o?e.jsx(p.Spin,{style:{padding:20}}):e.jsxs(e.Fragment,{children:[e.jsxs("a",{style:{display:"block",paddingBottom:5},href:"#",onClick:()=>{r(!1),f()},children:[e.jsx(H.TableOutlined,{})," ",be("listAllAttachments",n)]}),e.jsxs("a",{style:{display:"block"},href:"#",onClick:()=>{r(!1),i()},children:[e.jsx(H.FileAddOutlined,{})," ",be("addNewAttachment",n)]}),s.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("li",{className:"ant-dropdown-menu-item-divider"}),s.map(d=>{const h=d.link?H.LinkOutlined:H.DownloadOutlined;return e.jsxs(p.Row,{style:{paddingTop:4,paddingBottom:4},wrap:!1,align:"middle",children:[e.jsx(p.Col,{flex:"auto",children:d.name}),e.jsx(p.Col,{flex:"25px",style:{textAlign:"center"},children:(d.datas_fname||d.link)&&e.jsx(p.Tooltip,{title:d.link?be("openAttachmentLink",n):be("download",n),children:e.jsx(h,{style:{cursor:"pointer"},onClick:()=>{r(!1),a(d)}})})}),e.jsx(p.Col,{flex:"25px",style:{textAlign:"center"},children:e.jsx(p.Tooltip,{title:be("openAttachment",n),children:e.jsx(H.FormOutlined,{style:{cursor:"pointer"},onClick:()=>{r(!1),c(d)}})})})]},d.id)})]})]})};function kl(t){const{attachments:r,disabled:n=!1,onAddNewAttachment:s,onListAllAttachments:o,onViewAttachmentDetails:i}=t,{formRef:a}=l.useContext(We),[c,f]=l.useState(!1),[d,h]=l.useState([]),[u,g]=l.useState(!1),{t:v}=l.useContext(ge),y=l.useCallback(async()=>{f(!0);try{const C=await K.getHandler().readObjects({model:"ir.attachment",ids:r.map(D=>D.id),fieldsToRetrieve:["name","datas_fname","link"],context:a.current.getContext()});h(C.map(D=>({id:D.id,name:D.name,datas_fname:D.datas_fname,link:D.link})))}catch(C){Le(C)}f(!1)},r),m=l.useCallback(async C=>{if(C.link){window.open(C.link);return}g(!0);let D;try{D=(await K.getHandler().readObjects({model:"ir.attachment",ids:[C.id],context:a.current.getContext()}))[0]}catch(M){Le(M)}if(g(!1),!!D)if(D.datas){const M=await st(D.datas);_t(D.datas,M.mime)}else i(D)},[]),w=l.useCallback(async C=>{i(C)},[]);return l.useEffect(()=>{y()},[y]),e.jsxs(e.Fragment,{children:[e.jsx(_l,{numberOfAttachments:r.length,attachments:d,disabled:n,loading:c,onAddNewAttachment:s,onListAllAttachments:o,onopenAttachmentLink:m,onOpenAttachmentDetail:w}),e.jsx(p.Modal,{title:v("downloadingAttachment"),open:u,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(p.Spin,{})})]})}function Yn({toolbar:t}){const{availableViews:r,currentView:n,setCurrentView:s,onFormSave:o,formHasChanges:i,formIsSaving:a,currentId:c,results:f,setCurrentItemIndex:d,currentItemIndex:h,setCurrentId:u,currentModel:g,setRemovingItem:v,removingItem:y,duplicatingItem:m,setDuplicatingItem:w,setResults:C,formIsLoading:D,attachments:M,formRef:b,setFormHasChanges:E,previousView:V,setPreviousView:L,goToResourceId:x}=l.useContext(We),{t:T,lang:S}=l.useContext(ge),O=l.useContext(dt),{processAction:P}=O||{},$=l.useContext(je),{openRelate:F,openDefaultActionForModel:I}=$||{};function A(N){if(i){Ol({lang:S,onOk:()=>{N()}});return}N()}function k(N){if(i){vt({lang:S,onOk:()=>{N()}});return}N()}function B(){f&&f.length>h+1?(d==null||d(h+1),u==null||u(f[h+1].id)):f&&h+1===f.length&&(d==null||d(0),u==null||u(f[0].id))}function _(){f&&h>0?(d==null||d(h-1),u==null||u(f[h-1].id)):f&&h===0&&(d==null||d(f.length-1),u==null||u(f[f.length-1].id))}function W(){ot({confirmMessage:T("confirmRemoveItem"),lang:S,onOk:()=>{J()}})}async function J(){try{v==null||v(!0),await K.getHandler().delete({model:g,ids:[c]});const N=f==null?void 0:f.filter(re=>re.id!==c);C==null||C(N);let Y=0;h>0&&h<=f.length-1&&(Y=h-1),N!=null&&N[Y]?(u==null||u(N==null?void 0:N[Y].id),d==null||d(Y)):(u==null||u(void 0),d==null||d(void 0))}catch(N){Mt(JSON.stringify(N))}finally{v==null||v(!1)}}async function j(){try{w==null||w(!0);const N=await K.getHandler().duplicate({id:c,model:g,context:b.current.getContext()});N&&await(x==null?void 0:x(N))}catch(N){Mt(JSON.stringify(N))}finally{w==null||w(!1)}}const X=a||y||D||m;function G(N){P==null||P({actionData:N,values:b.current.getValues(),fields:b.current.getFields(),context:b.current.getContext(),onRefreshParentValues:()=>{b.current.fetchValues()}})}return n?e.jsxs(p.Space,{wrap:!0,children:[D&&e.jsxs(e.Fragment,{children:[e.jsx(p.Spin,{}),pt(),pt()]}),e.jsx(Hn,{disabled:a||D||y||m}),e.jsx(He,{icon:e.jsx(H.SaveOutlined,{}),tooltip:T("save"),disabled:!i||X,loading:a,onClick:o}),e.jsx(He,{icon:e.jsx(H.CopyOutlined,{}),tooltip:T("duplicate"),disabled:i||a||c===void 0||m||D,loading:m,onClick:j}),e.jsx(He,{icon:e.jsx(H.DeleteOutlined,{}),tooltip:T("delete"),disabled:a||c===void 0||y||m||D,loading:y,onClick:W}),pt(),e.jsx(He,{icon:e.jsx(H.InfoCircleOutlined,{}),tooltip:T("showLogs"),disabled:a||c===void 0||y||m||D,loading:!1,onClick:()=>{Kn(g,c,T)}}),e.jsx(He,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:T("refresh"),disabled:a||c===void 0||y||m||D,loading:!1,onClick:()=>{A(()=>{b.current.fetchValues()})}}),pt(),e.jsx(lr,{currentView:n,previousView:V,availableViews:r,onChangeView:N=>{L==null||L(n),E==null||E(!1),s==null||s(N)},disabled:X,formHasChanges:i}),pt(),e.jsxs(p.Space,{children:[e.jsx(He,{icon:e.jsx(H.LeftOutlined,{}),tooltip:T("previous"),disabled:X,loading:!1,onClick:()=>{k(_)}}),e.jsx(He,{icon:e.jsx(H.RightOutlined,{}),tooltip:T("next"),disabled:X,loading:!1,onClick:()=>{k(B)}})]}),pt(),e.jsx(ht,{icon:e.jsx(H.ThunderboltOutlined,{}),disabled:X,tooltip:T("actions"),items:t==null?void 0:t.action,onItemClick:async N=>{!N||!(await gt({onFormSave:o})).succeed||G(N)}}),e.jsx(ht,{icon:e.jsx(H.PrinterOutlined,{}),disabled:X,tooltip:T("reports"),items:t==null?void 0:t.print,onItemClick:async N=>{if(!N)return;const Y=await gt({onFormSave:o});!Y.succeed||G({...N,datas:{...N.datas||{},ids:[Y.currentId]}})}}),e.jsx(ht,{icon:e.jsx(H.EnterOutlined,{}),disabled:X,tooltip:T("related"),items:t==null?void 0:t.relate,onItemClick:async N=>{!N||!(await gt({onFormSave:o})).succeed||F({relateData:N,values:b.current.getValues(),fields:b.current.getFields(),action_id:N.id,action_type:N.type})}}),e.jsx(kl,{disabled:X,attachments:M,onAddNewAttachment:async()=>{const N=await gt({onFormSave:o});if(!N.succeed)return;const Y=N.currentId,re=g;I({model:"ir.attachment",values:{selection_associated_object:`${re},${Y}`},forced_values:{res_model:re,res_id:Y},initialViewType:"form"})},onListAllAttachments:async()=>{const N=await gt({onFormSave:o});if(!N.succeed)return;const Y=N.currentId;I({model:"ir.attachment",domain:[["res_model","=",`${g}`],["res_id","=",`${Y}`]],initialViewType:"tree"})},onViewAttachmentDetails:async N=>{!(await gt({onFormSave:o})).succeed||I({model:"ir.attachment",res_id:N.id,initialViewType:"form"})}})]}):null}function pt(){return e.jsx("div",{className:"inline-block w-2"})}async function gt({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:Vl}=p.theme,Wn=t=>{const{ooui:r,value:n,onChange:s,valueValidator:o,linkPrefix:i=""}=t,{id:a,readOnly:c,required:f}=r,{token:d}=Vl(),h=f&&!c?{backgroundColor:d.colorPrimaryBg}:void 0,u=l.useContext(Me),{elementHasLostFocus:g}=u||{},[v,y]=l.useState(!1),[m,w]=l.useState(!1);l.useEffect(()=>{c&&!v&&w(!1),!n&&!c&&(y(!0),w(!0))},[v,c]);const C=D=>{s==null||s(D.target.value)};return e.jsxs(p.Row,{gutter:8,wrap:!1,align:"middle",children:[c?null:e.jsx(p.Col,{flex:"32px",children:v?e.jsx(p.Button,{icon:e.jsx(H.CheckOutlined,{}),onClick:()=>{o(n)&&(y(!1),w(!1))},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1}):e.jsx(p.Button,{icon:e.jsx(H.EditOutlined,{}),onClick:()=>{y(!0),w(!0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1})}),e.jsx(p.Col,{flex:"auto",children:m?e.jsx(p.Input,{style:{borderTopLeftRadius:0,borderBottomLeftRadius:0,...h},id:a,onChange:C,value:n,onBlur:()=>{o(n)&&(y(!1),w(!1),g==null||g())}}):e.jsx("a",{href:`${i}${n}`,style:{color:d.colorPrimary,paddingRight:15},target:"_blank",children:n})})]})},qn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(Wn,{ooui:r,valueValidator:s=>s?Fo.default(s):!1})})},Un=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,...t,children:e.jsx(Wn,{ooui:r,linkPrefix:"mailto:",valueValidator:s=>s?Oo.default(s):!1})})},Ml=t=>{const{visible:r,onIdSubmitted:n,onCancel:s,isSearching:o}=t,{t:i}=l.useContext(ge),a=l.useRef();function c(f){n(f.id)}return e.jsx(p.Modal,{title:i("goToResourceId"),centered:!0,open:r,footer:null,destroyOnClose:!0,onCancel:s,maskClosable:!1,afterOpenChange:f=>{var d;return f&&((d=a.current)==null?void 0:d.focus())},children:e.jsxs(p.Form,{layout:"vertical",onFinish:c,autoComplete:"off",children:[e.jsx(p.Form.Item,{name:"id",label:i("searchId"),rules:[{required:!0,type:"number"}],children:e.jsx(p.InputNumber,{style:{width:"100%"},autoFocus:!0,ref:a})}),e.jsx(p.Row,{align:"middle",justify:"end",children:e.jsx(p.Col,{children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.CloseOutlined,{}),htmlType:"button",onClick:s,disabled:o,children:i("cancel")}),e.jsx(p.Button,{loading:o,style:{marginLeft:15},icon:e.jsx(H.CheckOutlined,{}),htmlType:"submit",type:"primary",disabled:o,children:i("ok")})]})})})]})})},{useToken:El}=p.theme;function Gn(t){const{badgeNumber:r=0,...n}=t,{token:s}=El();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(Be,{...n,style:{width:46,zIndex:0}})]})}function Il({refreshGraph:t}){const{t:r}=l.useContext(ge),{availableViews:n,currentView:s,setCurrentView:o,searchParams:i,searchVisible:a,setSearchVisible:c,graphIsLoading:f,previousView:d,setPreviousView:h}=l.useContext(We);return e.jsxs(p.Space,{wrap:!0,children:[e.jsx(Gn,{icon:e.jsx(H.FilterOutlined,{style:{color:a?"white":void 0}}),tooltip:r("advanced_search"),type:a?"primary":"default",onClick:()=>{c==null||c(!a)},disabled:f,badgeNumber:i==null?void 0:i.length}),e.jsx(He,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:r("refresh"),disabled:f,loading:!1,onClick:()=>{t()}}),e.jsx(lr,{currentView:s,availableViews:n,onChangeView:u=>{h==null||h(s),o==null||o(u)},disabled:!1,previousView:d})]})}const{useToken:Al}=p.theme,{Title:$l,Text:Pt}=p.Typography;function Nt(t){const{title:r,children:n}=t,{title:s,currentView:o,currentId:i,currentItemIndex:a,results:c,totalItems:f,selectedRowItems:d}=l.useContext(We),{t:h}=l.useContext(ge),{token:u}=Al();function g(){if((o==null?void 0:o.type)==="form")return i?f===0?e.jsxs(e.Fragment,{children:[h("editingDocument")," (id:"," ",e.jsx(Pt,{copyable:{icon:e.jsx(H.CopyOutlined,{style:{color:"red"}})},children:i}),")"]}):e.jsxs(e.Fragment,{children:[h("register")," ",a===void 0?1:a+1," /"," ",c.length," ",h("of")," ",f," - ",h("editingDocument")," (id:"," ",e.jsx(Pt,{copyable:!0,children:i}),")"]}):"";if((o==null?void 0:o.type)==="tree"&&d){if(d.length===1)return e.jsxs(e.Fragment,{children:["1 ",h("selectedRegisters")," - (id:"," ",e.jsx(Pt,{copyable:!0,children:d[0].id}),")"]});if(d.length>1)return e.jsxs(e.Fragment,{children:[d.length," ",h("selectedRegisters"),e.jsx(Pt,{copyable:{text:d.map(v=>v.id).join(", ")}})]})}return null}return e.jsxs("div",{style:{position:"sticky",top:80,zIndex:3},children:[e.jsxs(p.Row,{className:"shadow-md",style:{padding:"1em",borderRadius:u.borderRadius,backgroundColor:u.colorPrimaryBg},align:"middle",children:[e.jsxs(p.Col,{flex:2,children:[e.jsx($l,{level:3,style:{marginBottom:0},children:r||s}),g()]}),e.jsx(p.Col,{flex:3,children:e.jsx(p.Row,{justify:"end",children:n})})]}),e.jsx("div",{className:"pb-5"})]})}const Ll=t=>{const{viewData:r,visible:n,model:s,context:o,domain:i,formView:a,treeView:c}=t,f=l.useRef(),d=l.useContext(We),{setResults:h=void 0,setCurrentItemIndex:u=void 0,currentId:g=void 0,results:v=void 0,setSelectedRowItems:y=void 0,setSearchParams:m=void 0,searchVisible:w=!0,setSearchVisible:C=void 0,sorter:D=void 0,setSorter:M=void 0,setTotalItems:b=void 0,setSearchTreeNameSearch:E=void 0,setTreeIsLoading:V=void 0,limit:L,setLimit:x,searchParams:T,searchValues:S,setSearchValues:O,currentView:P}=d||{},[$,F]=l.useState(!0);l.useEffect(()=>{var W;(W=f.current)==null||W.refresh()},[T]),l.useEffect(()=>{r.view_id!==P.view_id&&F(!0)},[P]);const{clear:I,searchFilterLoading:A,searchError:k,offset:B,tableRefreshing:_}=rn({model:s,setSearchTreeNameSearch:E,setSelectedRowItems:y,searchParams:T,setSearchValues:O,setSearchParams:m,setSearchVisible:C,setTreeIsLoading:V,context:o,formView:a,treeView:c,sorter:D,setSorter:M,setCurrentItemIndex:u,setResultsActionView:h,resultsActionView:v,domain:i,currentId:g,setActionViewTotalItems:b,limit:L,setLimit:x});return!n||!r?null:e.jsxs(e.Fragment,{children:[e.jsx(Nt,{title:r.name,children:e.jsx(Il,{refreshGraph:()=>{f.current.refresh()}})}),e.jsx(Qt,{fields:{...c.fields,...a.fields},searchFields:jr([a.search_fields,c.search_fields]),limit:L,onClear:I,offset:B,isSearching:A,onSubmit:W=>{F(!1),m==null||m(W.params),C==null||C(!1)},searchError:k,searchVisible:w,searchValues:S,showLimitOptions:!1}),_?e.jsx(p.Spin,{}):e.jsx(Lt,{ref:f,view_id:r.view_id,model:s,context:o,domain:Vt(T||[],i),limit:$?L:void 0,manualIds:$?v==null?void 0:v.map(W=>W.id):void 0})]})},Pl=t=>{const{visible:r,formRef:n,model:s,currentId:o,domain:i,formView:a,context:c,defaultValues:f,forcedValues:d,results:h,setResults:u,setCurrentItemIndex:g}=t;return r?e.jsxs(e.Fragment,{children:[e.jsx(Nt,{children:e.jsx(Yn,{toolbar:a==null?void 0:a.toolbar})}),e.jsx(ut,{rootForm:!0,ref:n,model:s,defaultValues:f,forcedValues:d,formView:a,actionDomain:i,id:o,parentContext:c,onSubmitSucceed:(v,y)=>{h.findIndex(w=>w.id===v)===-1&&(h.push(y),u(h),g(h.length-1))}})]}):null};function Nl(t){const{onSearch:r,disabled:n=!1,searchText:s}=t,{t:o}=l.useContext(ge),[i]=p.Form.useForm(),[a,c]=l.useState(!1);function f(h){r(h.search)}l.useEffect(()=>{i.setFieldsValue({search:s})},[s]);function d(){c(!1),i.setFieldsValue({search:void 0}),r(void 0)}return e.jsx(p.Form,{form:i,onFinish:f,autoComplete:"off",children:e.jsxs(p.Row,{align:"middle",justify:"end",children:[e.jsx(p.Col,{children:e.jsx(p.Form.Item,{name:"search",noStyle:!0,children:e.jsx(p.Input,{autoFocus:!0,disabled:n,onChange:h=>{c(h.target.value.length>0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},suffix:(a||s&&s.length>0)&&e.jsx(p.Tooltip,{title:o("clear"),children:e.jsx(H.CloseCircleFilled,{style:{color:"rgba(0,0,0,.45)"},onClick:d})})})})}),e.jsx(p.Col,{children:e.jsx(p.Button,{htmlType:"submit",disabled:n,style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},children:o("search")})})]})})}const jn=Ke.default.createContext({previewFeatures:!1});function Bl(t){var X;const{availableViews:r,currentView:n,setCurrentView:s,selectedRowItems:o,setRemovingItem:i,removingItem:a,duplicatingItem:c,setDuplicatingItem:f,currentModel:d,searchTreeRef:h,setCurrentId:u,setCurrentItemIndex:g,searchParams:v,searchVisible:y,setSearchVisible:m,setSearchTreeNameSearch:w,searchTreeNameSearch:C,treeIsLoading:D,setPreviousView:M,previousView:b,results:E,limit:V,totalItems:L}=l.useContext(We),{parentContext:x={},treeExpandable:T,toolbar:S}=t,{previewFeatures:O}=l.useContext(jn),{t:P,lang:$}=l.useContext(ge),F=l.useContext(dt),{processAction:I}=F||{},[A,k]=l.useState(!1),B=C!==void 0&&C.trim().length>0;function _(){ot({confirmMessage:P("confirmRemove"),lang:$,onOk:()=>{W()}})}async function W(){var G;try{i==null||i(!0),await K.getHandler().delete({model:d,ids:o.map(N=>N.id)}),u==null||u(void 0),g==null||g(void 0),(G=h==null?void 0:h.current)==null||G.refreshResults()}catch(N){Le(N)}finally{i==null||i(!1)}}async function J(){var G;try{f==null||f(!0);const N=o[0].id;await K.getHandler().duplicate({id:N,model:d,context:{...x}})&&((G=h==null?void 0:h.current)==null||G.refreshResults())}catch(N){Le(N)}finally{f==null||f(!1)}}function j(G){I==null||I({actionData:G,values:{active_id:o==null?void 0:o.map(N=>N.id)[0],active_ids:o==null?void 0:o.map(N=>N.id)},fields:{},context:{...x,active_id:o==null?void 0:o.map(N=>N.id)[0],active_ids:o==null?void 0:o.map(N=>N.id)},onRefreshParentValues:()=>{var N;(N=h==null?void 0:h.current)==null||N.refreshResults()}})}return e.jsxs(p.Space,{wrap:!0,children:[D&&e.jsxs(e.Fragment,{children:[e.jsx(p.Spin,{}),tt(),tt()]}),T?null:e.jsxs(e.Fragment,{children:[e.jsx(Nl,{disabled:c||a||D,searchText:C,onSearch:G=>{G&&G.trim().length>0?w==null||w(G):w==null||w(void 0)}}),!T&&e.jsx(Gn,{icon:e.jsx(H.FilterOutlined,{style:{color:y?"white":void 0}}),tooltip:P("advanced_search"),type:y?"primary":"default",onClick:()=>{m==null||m(!y)},disabled:c||a||D,badgeNumber:v==null?void 0:v.length}),tt(),e.jsx(Hn,{disabled:D}),e.jsx(He,{icon:e.jsx(H.CopyOutlined,{}),tooltip:P("duplicate"),disabled:!o||(o==null?void 0:o.length)!==1||c||D,loading:c,onClick:J}),e.jsx(He,{icon:e.jsx(H.DeleteOutlined,{}),tooltip:P("delete"),disabled:!(o&&(o==null?void 0:o.length)>0)||D,loading:a,onClick:_}),tt()]}),e.jsx(He,{icon:e.jsx(H.InfoCircleOutlined,{}),tooltip:P("showLogs"),disabled:!(o&&(o==null?void 0:o.length)>0)||D,loading:!1,onClick:()=>{Kn(d,o[0].id,P)}}),e.jsx(He,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:P("refresh"),disabled:c||a||D,loading:!1,onClick:()=>{var G;(G=h==null?void 0:h.current)==null||G.refreshResults()}}),!T&&e.jsxs(e.Fragment,{children:[tt(),e.jsx(lr,{currentView:n,availableViews:r,onChangeView:G=>{M==null||M(n),s==null||s(G)},previousView:b,disabled:D})]}),tt(),e.jsx(ht,{icon:e.jsx(H.ThunderboltOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||D,tooltip:P("actions"),items:S==null?void 0:S.action,onItemClick:G=>{!G||j(G)}}),e.jsx(ht,{icon:e.jsx(H.PrinterOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||D,tooltip:P("reports"),items:S==null?void 0:S.print,onItemClick:G=>{!G||j({...G,datas:{...G.datas||{},ids:o.map(N=>N.id)}})}}),O&&e.jsxs(e.Fragment,{children:[tt(),e.jsx(ht,{icon:e.jsx(Sr.default,{component:()=>e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-database-export",width:"1em",height:"1em",viewBox:"0 0 24 24",strokeWidth:"1.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),e.jsx("ellipse",{cx:"12",cy:"6",rx:"8",ry:"3"}),e.jsx("path",{d:"M4 6v6c0 1.657 3.582 3 8 3a19.84 19.84 0 0 0 3.302 -.267m4.698 -2.733v-6"}),e.jsx("path",{d:"M4 12v6c0 1.599 3.335 2.905 7.538 2.995m8.462 -6.995v-2m-6 7h7m-3 -3l3 3l-3 3"})]})}),tooltip:P("export"),items:[{id:"print_screen",name:P("printScreen")},{id:"export",name:P("advancedExport")}],onItemClick:G=>{if(G.id==="print_screen"){let N=(o==null?void 0:o.map(Y=>Y.id))||[];N.length===0&&(N=(E==null?void 0:E.map(Y=>Y.id))||[]),j({id:-1,model:d,report_name:"printscreen.list",type:"ir.actions.report.xml",datas:{model:d,ids:N}});return}k(!0)},disabled:c||a||D||B}),e.jsx(En,{visible:A,locale:$,onClose:()=>k(!1),model:d,domain:Vt(((X=h==null?void 0:h.current)==null?void 0:X.getDomain())||[],v||[]),limit:V,totalRegisters:L||0,selectedRegistersToExport:o,visibleRegisters:(E==null?void 0:E.length)||0,context:x})]})]})}function tt(){return e.jsx("div",{className:"inline-block w-2"})}const Hl=t=>{const{visible:r,searchTreeRef:n,model:s,context:o,formView:i,treeView:a,domain:c,setCurrentItemIndex:f,results:d,setCurrentId:h,setCurrentView:u,availableViews:g,searchTreeNameSearch:v}=t,{currentView:y,setPreviousView:m}=l.useContext(We);return r?e.jsxs(e.Fragment,{children:[e.jsx(Nt,{children:e.jsx(Bl,{toolbar:a==null?void 0:a.toolbar,parentContext:o,treeExpandable:(a==null?void 0:a.isExpandable)||!1})}),e.jsx(er,{ref:n,rootTree:!0,model:s,parentContext:o,nameSearch:v,formView:i,treeView:a,domain:c,onRowClicked:w=>{const{id:C}=w;h(C);const D=d.findIndex(b=>b.id===C);m==null||m(y),f(D);const M=g.find(b=>b.type==="form");u(M)}})]}):null},cr=Ke.default.createContext(null),Kl=t=>{const[r,n]=l.useState(!1),[s,o]=l.useState(!1),{children:i,dashboardRef:a,openAction:c}=t;return e.jsx(cr.Provider,{value:{isLoading:r,setIsLoading:n,dashboardRef:a,openAction:c,moveItemsEnabled:s,setMoveItemsEnabled:o},children:i})};function Yl(){const{isLoading:t,dashboardRef:r,moveItemsEnabled:n,setMoveItemsEnabled:s}=l.useContext(cr),{t:o}=l.useContext(ge);return e.jsxs(p.Space,{wrap:!0,children:[e.jsx(He,{icon:e.jsx(H.BorderOuterOutlined,{style:{color:n?"white":void 0}}),type:n?"primary":"default",tooltip:o("moveDashboard"),disabled:t,loading:!1,onClick:()=>{s(!n)}}),Wl(),e.jsx(He,{icon:e.jsx(H.SettingOutlined,{}),tooltip:o("configDashboard"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.configDashboard()}}),e.jsx(He,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:o("refresh"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.refresh()}})]})}function Wl(){return e.jsx("div",{className:"inline-block w-2"})}const ql=t=>{const{dashboardData:r}=t,n=l.useRef(),s=l.useContext(je),{openShortcut:o}=s||{};return r?e.jsxs(Kl,{dashboardRef:n,openAction:i=>{o(i)},children:[e.jsx(Nt,{children:e.jsx(Yl,{})}),e.jsx(Xn,{ref:n,model:r.model,id:r.id,context:r==null?void 0:r.context,configAction:r==null?void 0:r.configAction})]}):null};async function Ul(t){const r=await Promise.all(t.map(async s=>{try{return await s.promise}catch(o){return console.error(`Error for ${s.viewTuple}:`,o),null}}));return t.map((s,o)=>({...s,info:r[o]})).filter(s=>s.info!==null)}function Gl(t,r){const{domain:n,model:s,context:o,views:i,title:a,setCanWeClose:c,tabKey:f,initialView:d,formDefaultValues:h,formForcedValues:u={},res_id:g=!1,action_id:v,action_type:y,treeExpandable:m=!1,limit:w}=t,[C,D]=l.useState(),[M,b]=l.useState([]),[E,V]=l.useState(!0),L=g||void 0,[x,T]=l.useState(L),[S,O]=l.useState([]),[P,$]=l.useState(),[F,I]=l.useState([]),[A,k]=l.useState(),[B,_]=l.useState(0),[W,J]=l.useState(!1),[j,X]=l.useState(!1),[G,N]=l.useState(),{t:Y}=l.useContext(ge),re=l.useRef(),Q=l.useRef(),le=l.useContext(je),{setCurrentView:R,setCurrentId:Z,tabs:he,activeKey:ve,openAction:Ee,onRemoveTab:Oe}=le||{};So.useHotkeys("ctrl+g,command+g",te=>{te.preventDefault(),Ae()},[ve,he,C,P,F]);function Ie(te){T(te),Z==null||Z(te)}function Pe(te){D(te),R==null||R(te)}l.useImperativeHandle(r,()=>({canWeClose:de}));const ie=async()=>{V(!0);const te=[],Fe=[];for(const ce of i){const[fe,Ne]=ce;Ne!=="dashboard"?Fe.push({viewTuple:ce,promise:K.getHandler().getView({model:s,type:Ne,id:fe,context:o})}):Fe.push({viewTuple:ce})}const _e=await Ul(Fe);for(const ce of _e){if(!ce)continue;const[,fe]=ce.viewTuple;let Ne=ce.info;switch(fe){case"dashboard":{const ue=i.find($e=>{const[,ee]=$e;return ee==="form"});let ze;ue&&(ze={action_id:v,action_type:y,name:a,res_id:o.active_id,res_model:s,view_id:ue[0],view_type:ue[1]}),te.push({type:"dashboard",id:o.active_id,model:s,context:o,configAction:ze});break}case"form":{te.push({...Ne,type:fe});break}case"tree":{te.push({...Ne,isExpandable:m,type:fe});break}case"graph":{te.push({...Ne,type:fe});break}}}let ke;!d&&te.find(ce=>ce.type==="tree")?ke=te.find(fe=>fe.type==="tree"):d?ke=te.find(fe=>d.id?fe.type===d.type&&fe.view_id===d.id:fe.type===d.type):ke=te.find(fe=>fe.type==="form"),ke||(Le(`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`),Oe==null||Oe(f)),Pe(ke),b(te),V(!1)};c({tabKey:f,canWeClose:de}),l.useEffect(()=>{const te=M.find(_e=>_e.type==="tree"),Fe=M.find(_e=>d.id?_e.type===d.type&&_e.view_id===d.id:_e.type===d.type);Pe(Fe||te),g?Z==null||Z(L):(Ie(void 0),$(void 0)),ie()},[s,i,g]),l.useEffect(()=>{ve===f&&(Z==null||Z(x),R==null||R(C))},[he,ve]);async function de(){return C&&C.type==="form"?await re.current.cancelUnsavedChanges():!0}async function Ae(){ve===f&&(C.type==="form"&&!await re.current.cancelUnsavedChanges()||J(!0))}async function we(te){var ce;X(!0);const Fe=F.findIndex(fe=>fe.id===te);let _e;if(Fe===-1){try{_e=(ce=await K.getHandler().readObjects({model:s,ids:[te],context:o}))==null?void 0:ce[0]}catch{}if(!_e){X(!1),J(!1),Ze(Y("idNotFound"));return}}else _e=F[Fe];X(!1),J(!1);const ke=i.find(fe=>fe[1]==="form");Ee({domain:[],context:o,model:s,views:i,title:a,target:"current",initialView:{id:ke==null?void 0:ke[0],type:"form"},action_id:v,action_type:y,res_id:te})}function De(){return M.map(te=>{switch(te.type){case"form":return e.jsx(Pl,{formRef:re,currentId:x,visible:C.type===te.type&&C.view_id===te.view_id,formView:te,model:s,context:o,domain:n,defaultValues:h,forcedValues:u,results:F,setResults:I,setCurrentItemIndex:$},`${te.type}-${te.view_id}`);case"tree":return e.jsx(Hl,{visible:C.type===te.type&&C.view_id===te.view_id,limit:w,model:s,context:o,domain:n,formView:M.find(Fe=>Fe.type==="form"),treeView:te,searchTreeRef:Q,searchTreeNameSearch:G,availableViews:M,results:F,setCurrentItemIndex:$,setCurrentId:Ie,setCurrentView:Pe},`${te.type}-${te.view_id}`);case"graph":return e.jsx(Ll,{visible:C.type===te.type&&C.view_id===te.view_id,viewData:te,model:s,context:o,domain:n,treeView:M.find(Fe=>Fe.type==="tree"),formView:M.find(Fe=>Fe.type==="form")},`${te.type}-${te.view_id}`);case"dashboard":return e.jsx(ql,{dashboardData:te},`${te.type}-${te.view_id}`)}})}function Ye(){if(x===void 0&&C.type==="form")re.current.clearAndReload();else{Ie(void 0);const te=M.find(Fe=>Fe.type==="form");Pe(te)}}return E?e.jsx(p.Spin,{}):C?e.jsxs(Hi,{title:a,currentView:C,setCurrentView:Pe,availableViews:M,formRef:re,searchTreeRef:Q,onNewClicked:Ye,currentId:x,setCurrentId:Ie,setCurrentItemIndex:$,currentItemIndex:P,results:F,setResults:I,currentModel:s,sorter:A,setSorter:k,totalItems:B,setTotalItems:_,selectedRowItems:S,setSelectedRowItems:O,setSearchTreeNameSearch:N,searchTreeNameSearch:G,goToResourceId:we,limit:w,children:[De(),e.jsx(Ml,{visible:W,onIdSubmitted:we,isSearching:j,onCancel:()=>{J(!1)}})]}):null}const zn=l.forwardRef(Gl);async function jl({actionId:t,rootContext:r={},globalValues:n={}}){const s="ir.actions.act_window",o=`${s},${t}`,i=await K.getHandler().getActionData({action:o,context:r}),a=se.parseContext({context:i.context,values:n,fields:{}}),c=i.domain?await K.getHandler().evalDomain({domain:i.domain,values:n,context:{...r,...a}}):[],{res_model:f,views:d,name:h,limit:u,view_type:g}=i,v=g==="tree",y=[];for(const D of d){const[M,b]=D;if(M)y.push(D);else{const{view_id:E}=await K.getHandler().getView({model:f,type:b,id:M,context:{...r,...a}});y.push([E,b])}}const[m,w]=y[0],C={id:m,type:w};return{title:h,actionId:t,actionType:s,key:wr.v4(),views:d,model:f,context:{...r,...a},domain:c,initialView:C,limit:u,treeExpandable:v}}const Nc="",zl=yr.WidthProvider(yr.Responsive),Jn=t=>{const{children:r=[],onPositionItemsChanged:n}=t,s=Ke.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(zl,{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:Jl}=p.theme,{Text:Zl}=p.Typography,Zn=t=>{const{title:r,children:n,action:s,openAction:o}=t,{token:i}=Jl();return e.jsxs("div",{className:"shadow-md",style:{height:"100%",display:"flex",flexDirection:"column",overflow:"hidden",border:"1px solid #eee",backgroundColor:"white",borderRadius:i.borderRadius},children:[e.jsxs(p.Row,{align:"middle",style:{borderBottom:"1px solid #ddd",backgroundColor:i.colorPrimaryBg},wrap:!1,children:[e.jsx(p.Col,{flex:"auto",className:"draggable-head",style:{fontWeight:"bold",padding:"0.5rem",cursor:"grab",overflow:"hidden"},children:e.jsx(Zl,{ellipsis:!0,children:r})}),s&&e.jsx(p.Col,{flex:"25px",style:{padding:"0.5rem"},children:e.jsx(p.Row,{justify:"end",align:"middle",children:e.jsx(H.ExportOutlined,{style:{cursor:"pointer"},onClick:()=>{o==null||o(s)}})})})]}),n]})},Xl=80;function Ql(t){const{action:r,model:n,view_id:s,onRowClicked:o,domain:i=[],visible:a=!0,parentContext:c={}}=t,[f,d]=l.useState(!1),[h,u]=l.useState(!1),[g,v]=l.useState(),[y,m]=l.useState(),[w,C]=l.useState(),[D,M]=l.useState(1),[b,E]=l.useState(0),V=l.useRef(Xl),L=l.useRef([]),[x,T]=l.useState(0),[S,O]=l.useState([]),[P,$]=l.useState(void 0),[F,I]=l.useState(),[A,k]=l.useState(),[B,_]=l.useState(),[W,J]=l.useState(!1),j=l.useRef([]),X=Z=>{J(!0),M(Z),E((Z-1)*V.current)},G=async()=>{const Z=j.current.length>0?j.current:i,he=Vt(L.current,Z),{colors:ve}=it(y),{totalItems:Ee,results:Oe,attrsEvaluated:Ie}=await K.getHandler().searchForTree({params:he,limit:V.current,offset:b,model:g,fields:y.fields,context:c,attrs:ve&&{colors:ve}});$(Dt(Ie));const Pe=at({resultsToSort:Oe,sorter:F,fields:{...y.fields,...w.fields}});J(!1),O(Pe);const ie=await Ee;T(ie)},N=async()=>{try{J(!0),await G()}catch(Z){k(JSON.stringify(Z))}};l.useEffect(()=>{!h||a&&N()},[D,b,h,a]);const Y=async Z=>{u(!1),d(!0),_(void 0);try{Z==="action"?await re():await Q(),u(!0)}catch(he){_(he)}finally{d(!1)}},re=async()=>{const Z=await K.getHandler().getViewsForAction({action:r,context:c});j.current=Z.domain,C(Z.views.get("form")),m(Z.views.get("tree")),v(Z.model),V.current=Z.limit},Q=async()=>{v(n);const Z=await K.getHandler().getView({model:n,type:"form",context:c});C(Z);const he=await K.getHandler().getView({model:n,type:"tree",id:s,context:c});m(he)};l.useEffect(()=>{r?Y("action"):n&&Y("model")},[r,n]);const le=Z=>{const{id:he}=Z;o({id:he,model:g,treeView:y})},R=()=>!y||!w?null:e.jsxs("div",{style:{overflowY:"scroll"},children:[A&&e.jsx(p.Alert,{className:"mt-10",message:A,type:"error",banner:!0}),e.jsx(bt,{showPagination:!1,total:x,limit:V.current,page:D,treeView:y,results:S,onRequestPageChange:X,loading:W,onRowClicked:le,colorsForResults:P,sorter:F,onChangeSort:Z=>{I==null||I(Z);const he=at({resultsToSort:S,sorter:Z,fields:{...y.fields,...w.fields}});O(he)},context:c})]});return B?e.jsx(p.Alert,{className:"mt-10",message:B,type:"error",banner:!0}):f?e.jsx(p.Spin,{style:{padding:"2rem"}}):R()}const Rl=t=>{const{model:r}=t,[n,s]=l.useState();l.useEffect(()=>{o()},[r]);async function o(){const i=await K.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(ut,{...t,model:r,id:n,readOnly:!0})})},dr="line_ids";function ec(t,r){const{model:n,context:s={},id:o,configAction:i}=t,[a,c]=l.useState([]),[f,d]=l.useState(!1),[h,u]=l.useState(),{setIsLoading:g,openAction:v,moveItemsEnabled:y}=l.useContext(cr),m=l.useRef(),w=l.useRef();l.useEffect(()=>{C()},[n,o,s]),l.useImperativeHandle(r,()=>({refresh:()=>{C()},configDashboard:L}));async function C(){d(!0),g(!0),u(void 0);try{const x=await D(),T=await b(x),S=x.fields[dr].relation,O=T[dr].items;w.current=x.fields;const P=await M({items:O,model:S,context:s}),$=await E(P);c($),d(!1),g(!1)}catch(x){u(JSON.stringify(x))}}async function D(){return await K.getHandler().getView({model:n,type:"form",context:s})}async function M({items:x,model:T,context:S}){m.current=(await K.getHandler().getView({model:T,type:"form",context:S})).fields;const[O]=await zt({treeView:{fields:m.current},formView:{fields:m.current},model:T,items:x,context:S,currentView:"form"});return O}async function b(x){return(await K.getHandler().readObjects({model:n,ids:[o],fields:x.fields,context:s}))[0]}async function E(x){const T=[];for(const S of x){const{values:O}=S;if(O.action_id&&O.action_id.length>0){const P=parseInt(O.action_id[0],10),$=await jl({actionId:P,rootContext:s});T.push({...S,actionData:$})}}return T}async function V(x){if(!y)return;const T=x.filter($=>{const F=a.find(A=>A.id===$.id);if(!F)return!1;if(!F.position)return!0;const I={...JSON.parse(F.position.replace(/'/g,'"')),id:F.id};return JSON.stringify($)!==JSON.stringify(I)});if(T.length===0)return;const O=a.filter($=>T.map(F=>F.id).includes($.id)).map($=>{const F={...T.find(I=>I.id===$.id)};return delete F.id,{...$},{...$,operation:"pendingUpdate",values:{...$.values,position:JSON.stringify(F).replace(/"/g,"'")}}}),P={fields:m.current,items:O};await K.getHandler().update({model:n,id:o,values:{[dr]:P},fields:w.current,context:s})}async function L(){v(i)}return h?(console.log(h),e.jsx(p.Alert,{className:"mt-10 mb-20",message:h,type:"error",banner:!0})):f?e.jsx(H.LoadingOutlined,{}):e.jsx(Jn,{onPositionItemsChanged:V,children:a.map((x,T)=>{const{actionData:S,values:O}=x,{position:P,id:$}=O,{actionId:F,actionType:I,key:A,title:k,views:B,model:_,context:W,domain:J,initialView:j,limit:X}=S;let G={};try{G=JSON.parse(P.replace(/'/g,'"'))}catch{G={x:T*2,y:0,w:2,h:3}}let N=null;if((j==null?void 0:j.type)==="graph")N=e.jsx(Lt,{view_id:B.filter(Q=>Q[1]==="graph")[0][0],model:_,context:W,domain:J,limit:X});else if((j==null?void 0:j.type)==="form")N=e.jsx(Rl,{model:_,actionDomain:J});else if((j==null?void 0:j.type)==="tree")N=e.jsx(Ql,{model:_,domain:J,view_id:B.filter(Q=>Q[1]==="tree")[0][0],onRowClicked:Q=>{const le=B.find(R=>{const[,Z]=R;return Z==="form"});if(le){const[R,Z]=le,{actionId:he,actionType:ve,title:Ee,model:Oe}=S,Ie={action_id:he,action_type:ve,name:Ee,res_id:Q.id,res_model:Oe,view_id:R,view_type:Z};v(Ie)}}});else if(j!==void 0){const Q=j&&Array.isArray(j.id)?{...j,id:j.id[0]}:j;N=e.jsx(zn,{action_id:F,action_type:I,tabKey:A,title:k,views:B,model:_,context:W,domain:J,setCanWeClose:()=>{},initialView:Q,limit:X})}let Y;const re=B.find(Q=>{const[,le]=Q;return le==="tree"});if(re){const[Q,le]=re,{actionId:R,actionType:Z,title:he,model:ve}=S;Y={action_id:R,action_type:Z,name:he,res_id:!1,res_model:ve,view_id:Q,view_type:le}}return e.jsx(Zn,{id:$,title:k,parms:G,action:Y,openAction:v,children:N},$)})})}const Xn=l.forwardRef(ec),Qn=t=>{const{ooui:r}=t;return e.jsx(me,{type:"array",...t,children:e.jsx(tc,{ooui:r})})},tc=t=>{const{value:r,ooui:n,onChange:s}=t,{items:o=[]}=r||{},i=o.filter(x=>x.operation!=="pendingRemove").map(x=>x.id),[a,c]=l.useState([]),[f,d]=l.useState(),[h,u]=l.useState(!1),{relation:g,context:v,readOnly:y,field:m,columns:w}=n,C=l.useContext(Me),{getContext:D}=C||{};et.default(()=>{b()},[o]);const M=x=>{s==null||s({items:x})};async function b(){u(!0);let x=[];if(n.domain){const T=await K.getHandler().evalDomain({domain:n.domain,values:ct({fields:C==null?void 0:C.getFields(),values:C.getPlainValues()}),fields:C==null?void 0:C.getFields(),context:C.getContext()});x=[...x,...T]}try{const S=(await K.getHandler().search({model:g,params:x,fields:[m],context:{...D==null?void 0:D(),...v}})).map(O=>{const P=O[m];let $=P;return Array.isArray(P)&&($=P[1]),{label:$,value:O.id}});c(S)}catch(T){d(T)}finally{u(!1)}if(f)return e.jsx(p.Alert,{className:"mt-10",message:f,type:"error",banner:!0})}const E=()=>{L(a.map(x=>x.value))},V=()=>{L([])},L=x=>{const T=o.map(O=>x.includes(O.id)?O.operation=="pendingRemove"?{...O,operation:"original"}:O:{id:O.id,operation:"pendingRemove"}),S=T.map(O=>O.id);x.filter(O=>!S.includes(O)).map(O=>{T.push({id:O,operation:"pendingLink"})}),M(T)};return h&&a.length===0?e.jsx(p.Spin,{}):e.jsx(e.Fragment,{children:e.jsxs("div",{className:"flex flex-row",children:[e.jsx(p.Checkbox.Group,{value:a.length?i:[],disabled:y,onChange:L,style:{width:"100%"},children:e.jsx(p.Row,{children:a.map(x=>e.jsx(p.Col,{span:Math.floor(24/w),children:e.jsx(p.Checkbox,{value:x.value,children:x.label})}))})}),!y&&e.jsxs(p.Space,{children:[e.jsx(p.Button,{onClick:E,disabled:i.length==a.length,children:"Check all"}),e.jsx(p.Button,{onClick:V,disabled:i.length===0,children:"Uncheck all"})]})]})})},Rn=t=>e.jsx(me,{...t,children:e.jsx(rc,{...t})}),rc=t=>{const{value:r,ooui:n}=t;return e.jsx("div",{style:{height:n.height?n.height+"px":"100%",overflow:"auto"},children:e.jsx(_o.default,{children:r,className:"ant-typography"})})},eo=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(nc,{...t})})},nc=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,direction:a}=r,c=Array.from(o.entries()),f=c&&c.length&&c.map(d=>{const[h,u]=d;return e.jsx(p.Radio,{value:h,children:u},h)});return e.jsx(p.Radio.Group,{disabled:i,onChange:n,value:s,children:e.jsx(p.Space,{direction:a,children:f})})},to=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o}=r;return e.jsx(me,{...t,valuePropName:"checked",children:e.jsx(oc,{id:n,readOnly:s,required:o})})},oc=t=>{const{required:r,readOnly:n,...s}=t;return e.jsx("div",{className:"flex flex-row",children:e.jsx(p.Switch,{disabled:n,...s})})},ro=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(me,{required:n,type:"any",...t,children:e.jsx(sc,{...t})})},sc=t=>{const{ooui:r,value:n}=t,{selectionValues:s,errorField:o}=r,i=l.useContext(Me),a=Array.from(s.entries()),c=a.map(h=>h[0]).indexOf(n);let f="process",d="";return o&&(d=i.getFieldValue(o),d&&(f="error")),e.jsx(p.Steps,{current:c,status:f,children:a.map((h,u)=>e.jsx(p.Steps.Step,{title:h[1],description:u===c&&f==="error"?d:null}))})},no=t=>{const{ooui:r}=t,{lang:n,height:s}=r,o=l.useContext(Me),{elementHasLostFocus:i}=o||{},a=c=>{c.onDidBlurEditorWidget(i)};return e.jsx(me,{...t,children:e.jsx(Do.default,{defaultLanguage:n||"",height:s||300,onMount:a})})},{Content:ic}=p.Layout,{Title:ac}=p.Typography;function lc(){const{t}=l.useContext(ge);return e.jsx(ic,{className:"m-5 select-none",children:e.jsx(ac,{level:5,children:t("welcome")})})}function cc(t,r){const{children:n,globalValues:s={},rootContext:o={},lang:i}=t,[a,c]=l.useState("welcome"),[f,d]=l.useState([{title:be("welcome",i),key:"welcome",closable:!0,content:e.jsx(lc,{})}]),h=l.useRef(new Map),u=l.useRef();l.useImperativeHandle(r,()=>({retrieveAndOpenAction:y,openShortcut:C}));function g(b){if(b===a){const E=f.findIndex(V=>V.key===b);f[E-1]&&c(f[E-1].key),f[E+1]&&c(f[E+1].key)}d(f.filter(E=>E.key!==b)),h.current.delete(b)}function v({tabKey:b,canWeClose:E}){h.current.set(b,E)}async function y({action:b,values:E,forced_values:V,initialViewType:L,res_id:x,domain:T=[]}){const S=await K.getHandler().getActionData({action:b,context:o});if(S.type==="ir.actions.wizard"){Le("Action type not supported");return}const[O,P]=b.split(","),$=parseInt(P),F=se.parseContext({context:S.context,values:s,fields:{}}),I=S.domain?await K.getHandler().evalDomain({domain:S.domain,values:s,context:{...o,...F}}):[],{res_model:A,views:k,name:B,target:_,view_type:W,limit:J}=S,j=W==="tree",X=[];for(const N of k){const[Y,re]=N;if(Y)X.push(N);else if(re==="dashboard")X.push([void 0,"dashboard"]);else{const{view_id:Q}=await K.getHandler().getView({model:A,type:re,id:Y,context:{...o,...F}});X.push([Q,re])}}let G;if(L){const[N,Y]=X.find(([re,Q])=>Q===L);G={id:N,type:Y}}else{const[N,Y]=X[0];G={id:N,type:Y}}M({domain:[...I,...T],context:{...o,...F},model:A,views:X,title:B,target:_,initialView:G,action_type:O,action_id:$,values:E,forced_values:V,res_id:x,treeExpandable:j,limit:J})}function m({title:b,content:E,key:V,action:L}){let x=[...f];f.length===1&&f[0].key==="welcome"&&(x=[...f.filter(T=>T.key!=="welcome")]),d([...x,{title:b,key:V,closable:!0,content:E,action:L}]),c(V)}async function w({relateData:b,fields:E,values:V,action_id:L,action_type:x}){const{res_model:T,context:S,domain:O,views:P,target:$,string:F,limit:I}=b,[A,k]=P[0],B={id:A,type:k},_=se.parseContext({context:S,values:{...V,...s},fields:E}),W=O?await K.getHandler().evalDomain({domain:O,values:ct({fields:E,values:{...V,...s}}),fields:E,context:{...o,..._}}):[];M({model:T,target:$,views:P,context:{...o,..._},domain:W,title:F,initialView:B,action_id:L,action_type:x,limit:I})}async function C(b){const{action_id:E,action_type:V,res_id:L,view_id:x}=b,T=`${V},${E}`,S=await K.getHandler().getActionData({action:T,context:o}),O=se.parseContext({context:S.context,values:s,fields:{}}),P=S.domain?await K.getHandler().evalDomain({domain:S.domain,values:s,context:{...o,...O}}):[],{res_model:$,views:F,name:I,target:A,view_type:k,limit:B}=S,_=k==="tree",W=[];for(const G of F){const[N,Y]=G;if(N)W.push(G);else if(Y==="dashboard")W.push([void 0,"dashboard"]);else{const{view_id:re}=await K.getHandler().getView({model:$,type:Y,id:N,context:{...o,...O}});W.push([re,Y])}}let J,j;if(x==null){const G=W.find(N=>N[0]===void 0);J=void 0,j=G[1]}else[J,j]=W.find(G=>G[0]===void 0?!1:G[0]===x);const X={id:J,type:j};M({domain:P,context:{...o,...O},model:$,views:W,title:I,target:A,initialView:X,action_id:E,action_type:V,res_id:L,treeExpandable:_,limit:B})}async function D({model:b,values:E,forced_values:V,initialViewType:L,res_id:x,domain:T}){const S=await K.getHandler().getActionStringForModel(b);await y({action:S,values:E,forced_values:V,initialViewType:L,res_id:x,domain:T})}async function M({domain:b,context:E,model:V,views:L,title:x,target:T,initialView:S,action_id:O,action_type:P,res_id:$,values:F,forced_values:I,treeExpandable:A=!1,limit:k}){const B=wr.v4();if(T!=="current"){const _=await K.getHandler().getView({model:V,type:"form",id:S.type==="form"?S.id:void 0,context:{...o,...E}});u.current.openActionModal({domain:b,model:V,formView:_,context:{...o,...E},actionData:{action_id:O,action_type:P,res_id:$,view_id:_.view_id}})}else{const _=S&&Array.isArray(S.id)?{...S,id:S.id[0]}:S;m({title:x,action:{id:O,type:P},content:e.jsx(zn,{action_id:O,action_type:P,tabKey:B,title:x,views:L,model:V,context:{...o,...E},domain:b,setCanWeClose:v,initialView:_,res_id:$,formDefaultValues:F,formForcedValues:I,treeExpandable:A,limit:k}),key:B})}}return e.jsx(Ao,{lang:i,children:e.jsx(Ki,{openShortcut:C,openAction:M,openRelate:w,openDefaultActionForModel:D,tabs:f,activeKey:a,onRemoveTab:async b=>{const E=h.current.get(b);(await(E==null?void 0:E())||a==="welcome")&&g(b)},onChangeTab:b=>{c(b)},children:e.jsx(on,{ref:u,globalValues:s,children:n})})})}const dc=l.forwardRef(cc),{useToken:uc}=p.theme;function fc(t){const{label:r,onClose:n,tabKey:s,isActive:o,onSelected:i}=t,{token:a}=uc(),c=o?a.colorBgContainer:a.colorPrimaryBg;return e.jsxs("div",{onClick:()=>{!o&&i(s)},style:{cursor:"pointer",height:40,paddingTop:7,paddingBottom:5,paddingLeft:10,paddingRight:10,backgroundColor:c,display:"inline-flex",flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",borderTopLeftRadius:a.borderRadius,borderTopRightRadius:a.borderRadius,marginLeft:2},children:[e.jsx("div",{style:{color:a.colorPrimaryActive,userSelect:"none",height:40,display:"flex",justifyContent:"center",alignItems:"center",paddingLeft:5,paddingRight:5,marginBottom:2,fontWeight:o?500:"normal"},children:r}),e.jsx("div",{style:{paddingLeft:5,height:40,display:"flex",justifyContent:"center",alignItems:"center"},children:e.jsx(H.CloseOutlined,{style:{color:a.colorPrimaryActive},onClick:f=>{f.stopPropagation(),n(s)}})})]})}function hc(){const t=l.useContext(je),{activeKey:r,tabs:n,onRemoveTab:s,onChangeTab:o}=t||{};return e.jsx(e.Fragment,{children:n.map(i=>e.jsx(fc,{tabKey:i.key,label:i.title,onClose:s,isActive:r===i.key,onSelected:o},i.key))})}function pc(t){const{tab:r}=t,n=l.useContext(je),{activeKey:s}=n||{},o={display:"none"};return e.jsx("div",{style:r.key!==s?o:void 0,children:r.content})}const gc=Ke.default.memo(pc,()=>!0);function mc(){const t=l.useContext(je),{tabs:r}=t||{},n=(r==null?void 0:r.map(s=>e.jsx(gc,{tab:s},s.key)))||null;return e.jsx(e.Fragment,{children:n})}const{useToken:yc}=p.theme,wc=t=>{const{onRetrieveShortcuts:r,onCheckIsFavourite:n,onAddFavourite:s,onRemoveFavourite:o}=t,[i,a]=l.useState(!1),[c,f]=l.useState(!1),[d,h]=l.useState([]),[u,g]=l.useState(!0),[v,y]=l.useState(),{t:m}=l.useContext(ge)||{},{token:w}=yc(),C=l.useContext(je),{openShortcut:D,tabs:M,activeKey:b,currentView:E,currentId:V,openDefaultActionForModel:L}=C||{};l.useEffect(()=>{x()},[]),l.useEffect(()=>{O()},[M,b,E,V]);async function x(){try{g(!0);const A=await r();h(A)}catch(A){Le(A)}finally{g(!1)}}function T(A){const{key:k}=A,B=d.find(_=>_.id===Number(k));(B==null?void 0:B.action_type)!=="ir.actions.wizard"&&(B&&D(B),f(!1))}function S(A){A&&x(),f(A)}async function O(){if(!E)return;const A=M.find(j=>j.key===b),{id:k,type:B}=(A==null?void 0:A.action)||{};if(!k||!B){a(!1);return}const _=E.view_id;let W=!1;E.type==="form"&&(W=V||!1);const J=await n({action_id:k,action_type:B,view_id:_,res_id:W});J!==!1&&y(J),a(J!==!1)}async function P(){f(!1),L==null||L({model:"ir.ui.view_sc"})}const $=e.jsxs(p.Menu,{onClick:T,children:[e.jsxs("div",{style:{width:300,padding:5,display:"flex"},children:[e.jsx("div",{style:{paddingLeft:15,color:"#ccc"},children:m==null?void 0:m("favorites").toUpperCase()}),e.jsx("div",{style:{flexGrow:1,paddingLeft:10},children:e.jsx(p.Tooltip,{title:m==null?void 0:m("edit_favorites"),children:e.jsx(H.EditOutlined,{style:{color:w.colorPrimary,cursor:"pointer"},onClick:P})})})]}),e.jsx(p.Menu.Divider,{}),u?e.jsx(p.Spin,{style:{padding:"1rem"}}):d.length>0?e.jsx(e.Fragment,{children:d.map(A=>e.jsx(p.Menu.Item,{children:e.jsx(F,{title:A.name,type:A.view_type})},A.id))}):e.jsx("div",{style:{width:300,padding:5,paddingLeft:15},children:m==null?void 0:m("no_favorites")})]});function F({title:A,type:k}){const B=k==="tree"?e.jsx(H.TableOutlined,{}):e.jsx(H.FormOutlined,{});return e.jsxs(p.Row,{wrap:!1,children:[e.jsx(p.Col,{flex:"none",style:{paddingRight:20},children:B}),e.jsx(p.Col,{flex:"auto",children:A})]})}async function I(){if(i&&v)await o(v);else{if(!E)return;const A=M.find(J=>J.key===b),{id:k,type:B}=(A==null?void 0:A.action)||{},_=E.view_id;let W=!1;if(!k||!B){a(!1);return}E.type==="form"&&(W=V||!1),await s({action_id:k,action_type:B,view_id:_,res_id:W})}await x(),a(!i)}return e.jsxs(e.Fragment,{children:[e.jsx(p.Button,{type:i?"primary":"default",icon:i?e.jsx(H.StarFilled,{style:{color:"white"}}):e.jsx(H.StarOutlined,{}),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:I}),e.jsx(p.Dropdown,{overlay:$,onVisibleChange:S,open:c,children:e.jsx(p.Button,{style:{width:25,borderTopLeftRadius:0,borderBottomLeftRadius:0},icon:e.jsx(H.DownOutlined,{style:{fontSize:"0.5em"}}),onClick:A=>A.preventDefault()})})]})};U.ActionBar=Yn,U.Binary=Nn,U.Boolean=Mr,U.Button=qt,U.ButtonGroup=Fr,U.Char=Ut,U.CodeEditor=no,U.ConfigContext=jn,U.ConnectionProvider=K,U.ContentRootProvider=on,U.CurrentTabContent=mc,U.Dashboard=Xn,U.DashboardGrid=Jn,U.DashboardGridItem=Zn,U.Date=In,U.DateTime=An,U.Email=Un,U.ExportModal=En,U.FavouriteButton=wc,U.Float=Xt,U.FloatTime=On,U.Form=ut,U.FormModal=ft,U.GraphIndicator=bn,U.Group=nr,U.Image=Wr,U.Integer=St,U.Label=yt,U.Many2one=wn,U.Markdown=Rn,U.MultiCheckbox=Qn,U.Notebook=_n,U.One2many=Fn,U.ProgressBar=ln,U.Radio=eo,U.Reference=Pn,U.RootView=dc,U.SearchFilter=Qt,U.SearchModal=tr,U.SearchTree=er,U.Selection=Gt,U.Separator=kn,U.Steps=ro,U.Switch=to,U.TabSelector=hc,U.Tag=Jr,U.Tags=Qr,U.Text=Dn,U.Time=Ln,U.Tree=bt,U.Url=qn,U.iconMapper=Ge,U.showConfirmDialog=ot,Object.defineProperties(U,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
37
37
  //# sourceMappingURL=react-ooui.umd.js.map