@gisce/react-ooui 1.4.2 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/helpers/formHelper.d.ts +0 -1
- package/dist/helpers/formHelper.d.ts.map +1 -1
- package/dist/react-ooui.es.js +1259 -1270
- package/dist/react-ooui.es.js.map +1 -1
- package/dist/react-ooui.umd.js +13 -13
- package/dist/react-ooui.umd.js.map +1 -1
- package/dist/widgets/custom/Tag.d.ts +2 -0
- package/dist/widgets/custom/Tag.d.ts.map +1 -1
- package/dist/widgets/custom/Tags.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/helpers/formHelper.ts +0 -8
- package/src/stories/Utils.stories.tsx +16 -0
- package/src/widgets/custom/Tag.tsx +21 -5
- package/src/widgets/custom/Tags.tsx +8 -7
package/dist/react-ooui.umd.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
(function(G,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("react"),require("antd"),require("@gisce/ooui"),require("@ant-design/icons"),require("interweave"),require("react/jsx-runtime"),require("@tabler/icons-react"),require("antd/lib/input/TextArea"),require("styled-components"),require("react-measure"),require("antd/lib/typography/Title"),require("@ant-design/plots"),require("use-deep-compare-effect"),require("@gisce/react-formiga-table"),require("file-type-buffer-browser"),require("antd/lib/_util/colors"),require("@gisce/fiber-diagram"),require("@gisce/react-formiga-components"),require("validator/lib/isURL"),require("validator/lib/isEmail"),require("react-hotkeys-hook"),require("react-markdown"),require("@monaco-editor/react"),require("react-grid-layout"),require("react-grid-layout/css/styles.css"),require("uuid")):typeof define=="function"&&define.amd?define(["exports","react","antd","@gisce/ooui","@ant-design/icons","interweave","react/jsx-runtime","@tabler/icons-react","antd/lib/input/TextArea","styled-components","react-measure","antd/lib/typography/Title","@ant-design/plots","use-deep-compare-effect","@gisce/react-formiga-table","file-type-buffer-browser","antd/lib/_util/colors","@gisce/fiber-diagram","@gisce/react-formiga-components","validator/lib/isURL","validator/lib/isEmail","react-hotkeys-hook","react-markdown","@monaco-editor/react","react-grid-layout","react-grid-layout/css/styles.css","uuid"],l):(G=typeof globalThis<"u"?globalThis:G||self,l(G["react-ooui"]={},G.React,G.antd,G.ooui,G.AntIcons,G.interweave,G.jsxRuntime,G.TablerIcons,G.TextArea$1,G.styled,G.Measure,G.Title$3,G.plots,G.useDeepCompareEffect,G.reactFormigaTable,G.fileTypeBufferBrowser,G.colors,G.fiberDiagram,G.reactFormigaComponents,G.isURL,G.isEmail,G.reactHotkeysHook,G.ReactMarkdown,G.Editor,G.reactGridLayout,null,G.uuid))})(this,function(G,l,p,se,H,Ht,e,oo,so,io,ao,lo,Kt,co,uo,fo,ho,po,pr,go,mo,yo,wo,vo,gr,Mc,mr){"use strict";const qe=t=>t&&typeof t=="object"&&"default"in t?t:{default:t};function yr(t){if(t&&t.__esModule)return t;const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const s=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(r,n,s.get?s:{enumerable:!0,get:()=>t[n]})}}return r.default=t,Object.freeze(r)}const He=qe(l),wr=yr(H),vr=qe(H),Sr=yr(oo),So=qe(so),gt=qe(io),Yt=qe(ao),Wt=qe(lo),et=qe(co),Co=qe(go),bo=qe(mo),xo=qe(wo),To=qe(vo),{Text:Fo,Title:Oo}=p.Typography,{useToken:_o}=p.theme,Do={left:"justify-start",center:"justify-center",right:"justify-end"},mt=t=>{const{ooui:r,align:n,responsiveBehaviour:s}=t,{label:o,tooltip:i,fieldForLabel:a,labelSize:c,labelType:u}=r,h=a!==null&&o.length>1?o+" :":o,g=n||(a?s?"left":"right":"left"),{token:S}=_o(),y=c===void 0?Fo:Oo;return e.jsxs("div",{className:`flex flex-row items-center pb-1 pt-1 ${Do[g]}`,children:[i&&e.jsx(p.Tooltip,{title:i,children:e.jsx(H.QuestionCircleOutlined,{className:"pr-1 text-xs",style:{color:S.colorPrimary}})}),e.jsx("span",{className:"pr-2",children:e.jsx(y,{level:c,type:u,children:e.jsx(Ht.Interweave,{content:h})})})]})},ko={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"}},pe=He.default.createContext(null),Mo=t=>{const{children:r,lang:n}=t;function s(o){return be(o,n)}return e.jsx(pe.Provider,{value:{lang:n,t:s},children:r})},be=(t,r)=>{var s;return((s=ko[r])==null?void 0:s[t])||t};function ge({ooui:t,children:r,layout:n="horizontal",valuePropName:s,showLabel:o=!1,alignLabel:i="left",required:a=!1,type:c,validator:u}){const{id:d,label:h,tooltip:f}=t,{t:g}=l.useContext(pe),S=a?[{required:!0,message:g("fillRequiredField"),type:c,validator:u}]:void 0,y=()=>e.jsx(p.Form.Item,{className:"mb-0",name:d,valuePropName:s,rules:S,children:r});if(!o)return y();const m=e.jsx(mt,{ooui:new se.Label({name:d+"_label",string:h,help:f,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:Vo}=p.Modal,nt=({onOk:t,confirmMessage:r,lang:n})=>{Vo({title:be("confirmation",n),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:r,okText:be("ok",n),cancelText:be("cancel",n),onOk:t})},Ve=He.default.createContext(null),Eo=t=>{const{children:r,activeId:n,activeModel:s,setFieldValue:o,getFieldValue:i,executeButtonAction:a,getContext:c,getValues:u,getPlainValues:d,domain:h,submitForm:f,fetchValues:g,formHasChanges:S,elementHasLostFocus:y,getFields:m}=t;return e.jsx(Ve.Provider,{value:{domain:h,getValues:u,getPlainValues:d,getFields:m,activeId:n,activeModel:s,setFieldValue:o,getFieldValue:i,executeButtonAction:a,getContext:c,submitForm:f,fetchValues:g,formHasChanges:S,elementHasLostFocus:y},children:r})},Cr={"terp-purchase":"ShoppingCart","terp-graph":"PieChart","terp-crm":"Contacts","terp-hr":"Friends","terp-account":"BuildingBank","terp-project":"Checklist","terp-administration":"Adjustments","terp-partner":"Team","terp-mrp":"Build","terp-product":"Shopping",STOCK_JUSTIFY_FILL:"UnorderedList",STOCK_INDENT:"IndentIncrease",STOCK_HELP:"Question",STOCK_GO_UP:"ArrowUp",STOCK_SORT_DESCENDING:"SortDescending",STOCK_ADD:"Plus",STOCK_GOTO_LAST:"FastForward",STOCK_FIND:"Search",STOCK_PROPERTIES:"Control",STOCK_DIALOG_INFO:"Info",STOCK_FLOPPY:"Usb",STOCK_JUSTIFY_CENTER:"AlignCenter",STOCK_GO_BACK:"ArrowLeft",STOCK_UNDERLINE:"Underline",STOCK_BOLD:"Bold",STOCK_APPLY:"Check",STOCK_ZOOM_OUT:"ZoomOut",STOCK_STRIKETHROUGH:"Strikethrough",STOCK_MEDIA_REWIND:"Backward",STOCK_PRINT:"Printer",STOCK_NO:"Close",STOCK_GOTO_FIRST:"FastBackward",STOCK_CLOSE:"Close",STOCK_REMOVE:"Minus",STOCK_CUT:"Scissor",STOCK_DIALOG_AUTHENTICATION:"Safety",STOCK_ZOOM_FIT:"Expand",STOCK_JUMP_TO:"Select",STOCK_HARDDISK:"Hdd",STOCK_SAVE_AS:"Save",STOCK_UNDO:"Undo",STOCK_JUSTIFY_RIGHT:"AlignRight",STOCK_DIALOG_ERROR:"CloseCircle",STOCK_INDEX:"Profile",STOCK_GOTO_BOTTOM:"VerticalAlignBottom",STOCK_MEDIA_NEXT:"StepForward",STOCK_REDO:"Redo",STOCK_COPY:"Copy",STOCK_MEDIA_PAUSE:"Pause",STOCK_GO_FORWARD:"ArrowRight",STOCK_UNDELETE:"Undo",STOCK_EXECUTE:"Setting",STOCK_SAVE:"Save",STOCK_DIALOG_QUESTION:"QuestionCircle",STOCK_SORT_ASCENDING:"SortAscending",STOCK_REFRESH:"Reload",STOCK_MEDIA_FORWARD:"Forward",STOCK_STOP:"Border",STOCK_PRINT_PREVIEW:"Printer",STOCK_HOME:"Home",STOCK_PASTE:"CarryOut",STOCK_ZOOM_100:"ZoomIn",STOCK_FIND_AND_REPLACE:"FileSearch",STOCK_DIALOG_WARNING:"Warning",STOCK_ZOOM_IN:"ZoomIn",STOCK_CONVERT:"Export",STOCK_ITALIC:"Italic",STOCK_YES:"Check",STOCK_MEDIA_PLAY:"PlayCircle",STOCK_MEDIA_RECORD:"VideoCamera",STOCK_MEDIA_PREVIOUS:"StepBackward",STOCK_NEW:"FileAdd",STOCK_CANCEL:"Close",STOCK_DISCONNECT:"Api",STOCK_JUSTIFY_LEFT:"AlignLeft",STOCK_FILE:"File",STOCK_QUIT:"Logout",STOCK_EDIT:"Edit",STOCK_CONNECT:"Api",STOCK_GO_DOWN:"CaretDown",STOCK_NETWORK:"Apartment",STOCK_OK:"Check",STOCK_GOTO_TOP:"VerticalAlignTop",STOCK_ABOUT:"Star",STOCK_COLOR_PICKER:"Aim",STOCK_SELECT_FONT:"FontSize",STOCK_DELETE:"Delete",STOCK_DND:"FileText",STOCK_CLEAR:"CloseSquare",STOCK_UNINDENT:"AlignLeft",STOCK_PREFERENCES:"Setting"},Ge=(t,r)=>(t.indexOf("gtk-")!==-1&&(t=`STOCK_${t.replace("gtk-","").replace(/\-/g,"_").toUpperCase()}`),Cr.hasOwnProperty(t)?br(Cr[t],r):br(t,r));function Io(t){return`${t.split("-").map(r=>r.replace(/\w\S*/g,n=>n.charAt(0).toUpperCase()+n.slice(1).toLowerCase())).join("")}`}function br(t,r){let n=t.charAt(0).toUpperCase()+t.slice(1);n.indexOf("-")!==-1&&(n=Io(n));const s=`${n}Outlined`;if(wr[s])return()=>He.default.createElement(wr[s],{...r});const o=`Icon${n}`;if(Sr[o]){const i=()=>He.default.createElement(Sr[o],{fill:"transparent",height:17,width:17});return()=>He.default.createElement(vr.default,{component:i,...r})}}const qt=t=>{const{ooui:r}=t,{id:n,label:s,activated:o,buttonType:i,confirmMessage:a,icon:c,context:u,readOnly:d}=r,h=l.useContext(Ve),{executeButtonAction:f}=h||{},[g,S]=l.useState(!1),{lang:y}=l.useContext(pe);async function m(){S(!0),await f({type:i,action:n,context:u}),S(!1)}function w(){if(a){nt({confirmMessage:a,lang:y,onOk:()=>{m()}});return}m()}function v(){if(g)return e.jsx(H.LoadingOutlined,{});if(c){const _=Ge(c);return _&&e.jsx(_,{})}}return e.jsx(ge,{ooui:r,children:e.jsx(p.Button,{block:!0,disabled:!o||d,onClick:w,icon:v(),type:r.primary?"primary":"default",danger:r.danger,style:{whiteSpace:"normal",height:"auto"},children:s})})},xr=t=>{const{ooui:r}=t,{defaultButton:n,secondaryButtons:s}=r,{id:o,caption:i,activated:a,buttonType:c,confirmMessage:u,icon:d,primary:h,danger:f,context:g,readOnly:S}=n||{},y=l.useContext(Ve),{executeButtonAction:m}=y||{},[w,v]=l.useState(!1),{lang:_}=l.useContext(pe);function k(){if(w)return e.jsx(H.LoadingOutlined,{});if(d){const M=Ge(d);return M&&e.jsx(M,{})}}async function C(){c&&o&&(v(!0),await m({type:c,action:o,context:g}),v(!1))}function V(){if(u){nt({confirmMessage:u,lang:_,onOk:()=>{C()}});return}C()}if(r.buttons.length===0)return null;if(r.buttons.length>1)return e.jsx(ge,{ooui:new se.Field({ooui:r}),children:e.jsxs(p.Dropdown.Button,{disabled:!a||S,onClick:V,icon:e.jsx(H.DownOutlined,{}),type:h?"primary":void 0,overlay:e.jsx(Ao,{ooui:s,executeButtonAction:m,lang:_}),children:[k(),i]})});if(n)return e.jsx(qt,{ooui:n})},Ao=t=>{const{ooui:r,executeButtonAction:n,lang:s}=t;if(!r)return null;const o=r.map(i=>{const{id:a,caption:c,activated:u,buttonType:d,confirmMessage:h,icon:f,context:g,readOnly:S,danger:y}=i,[m,w]=l.useState(!1);async function v(){w(!0),await n({type:d,action:a,context:g}),w(!1)}function _(){if(h){nt({confirmMessage:h,lang:s,onOk:()=>{v()}});return}v()}function k(){if(m)return e.jsx(H.LoadingOutlined,{});if(f){const C=Ge(f);return C&&e.jsx(C,{})}}return e.jsx(p.Menu.Item,{disabled:!u||S,onClick:_,icon:k(),danger:y,children:c})});return e.jsx(p.Menu,{children:o})},$o=.7;function Tr(){const{innerWidth:t,innerHeight:r}=window;return{width:t,height:r}}function Tt(){const[t,r]=l.useState(Tr());return l.useEffect(()=>{function n(){r(Tr())}return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]),{modalWidth:t.width*$o,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 Fr=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,so,io,ao,lo,co,Kt,uo,fo,ho,pr,po,gr,go,mo,yo,wo,vo,mr,kc,yr){"use strict";const qe=t=>t&&typeof t=="object"&&"default"in t?t:{default:t};function wr(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 He=qe(l),vr=wr(H),Sr=qe(H),Cr=wr(so),So=qe(io),gt=qe(ao),Yt=qe(lo),Wt=qe(co),et=qe(uo),Co=qe(go),bo=qe(mo),xo=qe(wo),To=qe(vo),{Text:Fo,Title:Oo}=p.Typography,{useToken:_o}=p.theme,Do={left:"justify-start",center:"justify-center",right:"justify-end"},mt=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:S}=_o(),y=c===void 0?Fo:Oo;return e.jsxs("div",{className:`flex flex-row items-center pb-1 pt-1 ${Do[g]}`,children:[i&&e.jsx(p.Tooltip,{title:i,children:e.jsx(H.QuestionCircleOutlined,{className:"pr-1 text-xs",style:{color:S.colorPrimary}})}),e.jsx("span",{className:"pr-2",children:e.jsx(y,{level:c,type:f,children:e.jsx(Ht.Interweave,{content:h})})})]})},ko={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"}},pe=He.default.createContext(null),Mo=t=>{const{children:r,lang:n}=t;function s(o){return be(o,n)}return e.jsx(pe.Provider,{value:{lang:n,t:s},children:r})},be=(t,r)=>{var s;return((s=ko[r])==null?void 0:s[t])||t};function ge({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(pe),S=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:S,children:r});if(!o)return y();const m=e.jsx(mt,{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:Vo}=p.Modal,nt=({onOk:t,confirmMessage:r,lang:n})=>{Vo({title:be("confirmation",n),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:r,okText:be("ok",n),cancelText:be("cancel",n),onOk:t})},Ve=He.default.createContext(null),Eo=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:S,elementHasLostFocus:y,getFields:m}=t;return e.jsx(Ve.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:S,elementHasLostFocus:y},children:r})},br={"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()}`),br.hasOwnProperty(t)?xr(br[t],r):xr(t,r));function Io(t){return`${t.split("-").map(r=>r.replace(/\w\S*/g,n=>n.charAt(0).toUpperCase()+n.slice(1).toLowerCase())).join("")}`}function xr(t,r){let n=t.charAt(0).toUpperCase()+t.slice(1);n.indexOf("-")!==-1&&(n=Io(n));const s=`${n}Outlined`;if(vr[s])return()=>He.default.createElement(vr[s],{...r});const o=`Icon${n}`;if(Cr[o]){const i=()=>He.default.createElement(Cr[o],{fill:"transparent",height:17,width:17});return()=>He.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(Ve),{executeButtonAction:u}=h||{},[g,S]=l.useState(!1),{lang:y}=l.useContext(pe);async function m(){S(!0),await u({type:i,action:n,context:f}),S(!1)}function w(){if(a){nt({confirmMessage:a,lang:y,onOk:()=>{m()}});return}m()}function v(){if(g)return e.jsx(H.LoadingOutlined,{});if(c){const _=Ue(c);return _&&e.jsx(_,{})}}return e.jsx(ge,{ooui:r,children:e.jsx(p.Button,{block:!0,disabled:!o||d,onClick:w,icon:v(),type:r.primary?"primary":"default",danger:r.danger,style:{whiteSpace:"normal",height:"auto"},children:s})})},Tr=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:S}=n||{},y=l.useContext(Ve),{executeButtonAction:m}=y||{},[w,v]=l.useState(!1),{lang:_}=l.useContext(pe);function k(){if(w)return e.jsx(H.LoadingOutlined,{});if(d){const M=Ue(d);return M&&e.jsx(M,{})}}async function C(){c&&o&&(v(!0),await m({type:c,action:o,context:g}),v(!1))}function V(){if(f){nt({confirmMessage:f,lang:_,onOk:()=>{C()}});return}C()}if(r.buttons.length===0)return null;if(r.buttons.length>1)return e.jsx(ge,{ooui:new se.Field({ooui:r}),children:e.jsxs(p.Dropdown.Button,{disabled:!a||S,onClick:V,icon:e.jsx(H.DownOutlined,{}),type:h?"primary":void 0,overlay:e.jsx($o,{ooui:s,executeButtonAction:m,lang:_}),children:[k(),i]})});if(n)return e.jsx(qt,{ooui:n})},$o=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:S,danger:y}=i,[m,w]=l.useState(!1);async function v(){w(!0),await n({type:d,action:a,context:g}),w(!1)}function _(){if(h){nt({confirmMessage:h,lang:s,onOk:()=>{v()}});return}v()}function k(){if(m)return e.jsx(H.LoadingOutlined,{});if(u){const C=Ue(u);return C&&e.jsx(C,{})}}return e.jsx(p.Menu.Item,{disabled:!f||S,onClick:_,icon:k(),danger:y,children:c})});return e.jsx(p.Menu,{children:o})},Ao=.7;function Fr(){const{innerWidth:t,innerHeight:r}=window;return{width:t,height:r}}function Tt(){const[t,r]=l.useState(Fr());return l.useEffect(()=>{function n(){r(Fr())}return window.addEventListener("resize",n),()=>window.removeEventListener("resize",n)},[]),{modalWidth:t.width*Ao,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 Or=t=>{let r,n,s;if(typeof t=="string"&&t.indexOf(" -- ")!==-1&&t.indexOf(`
|
|
2
2
|
|
|
3
3
|
`)!==-1){const o=t.split(`
|
|
4
4
|
|
|
5
|
-
`);r=o[1].replace(/\n/g,"<br />");const i=o[0].split(" -- ");n=i[0],s=i[1]}else r=t,n="error",s="Error";return{type:n,message:r,title:s}},{error:Lo,warning:No}=p.Modal,Le=t=>{const{message:r,type:n,title:s}=
|
|
5
|
+
`);r=o[1].replace(/\n/g,"<br />");const i=o[0].split(" -- ");n=i[0],s=i[1]}else r=t,n="error",s="Error";return{type:n,message:r,title:s}},{error:Lo,warning:No}=p.Modal,Le=t=>{const{message:r,type:n,title:s}=Or(t),o=n==="error"?e.jsx(H.ExclamationCircleOutlined,{}):e.jsx(H.WarningOutlined,{});(n==="error"?Lo:No)({title:s,icon:o,centered:!0,content:r})},_r=t=>{const{visible:r,onCloseModal:n,model:s,id:o,field:i,onSubmitSucceed:a}=t,{modalWidth:c}=Tt(),{t:f}=l.useContext(pe),[d,h]=l.useState([]),[u,g]=l.useState(!1),[S,y]=l.useState(!1),[m,w]=l.useState({}),v=l.useRef();l.useEffect(()=>{r?_():w({})},[r]);async function _(){g(!0);try{const b=await k();await C(b)}catch(b){Le(b)}g(!1)}async function k(){const T=(await K.getHandler().search({params:[["translatable","=","1"]],fields:["code","name"],model:"res.lang"})).map(F=>({code:F.code,name:F.name}));return h==null||h(T),T}async function C(b){const T={};for(const F of b){const x=(await K.getHandler().readObjects({model:s,ids:[o],fieldsToRetrieve:[i],context:{lang:F.code}}))[0];T[F.code]=x[i]||""}v.current=T,w(T)}function V(){return d.map((b,T)=>e.jsxs(p.Row,{style:{paddingBottom:20},children:[e.jsx(p.Col,{flex:"8rem",style:{paddingRight:10},children:b.name}),e.jsx(p.Col,{flex:"auto",children:e.jsx(So.default,{rows:4,value:m[b.code]||"",onChange:F=>{w({...m,[b.code]:F.target.value})},disabled:S})})]},T))}async function M(){y(!0);try{for(const b of Object.keys(m))m[b]!==v.current[b]&&await K.getHandler().update({model:s,id:o,values:{[i]:m[b]},context:{lang:b},fields:{}})}catch(b){Le(b)}y(!1),a()}function L(){return u?e.jsx(p.Spin,{}):e.jsxs(e.Fragment,{children:[V(),e.jsx(p.Divider,{}),e.jsx(p.Row,{justify:"end",children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.CloseOutlined,{}),onClick:n,disabled:S,children:f("cancel")}),e.jsx(p.Button,{icon:S?e.jsx(H.LoadingOutlined,{}):e.jsx(H.CheckOutlined,{}),disabled:S,onClick:M,style:{marginLeft:15},type:"primary",children:f("ok")})]})})]})}return e.jsx(p.Modal,{title:f("translate"),centered:!0,width:c,open:r,closable:!0,onCancel:n,footer:null,destroyOnClose:!0,maskClosable:!1,children:L()})};function Pe(t){const{tooltip:r,...n}=t;return e.jsx(p.Tooltip,{title:r,children:e.jsx(p.Button,{...n})})}const{info:Po}=p.Modal,ze=t=>{Po({title:"",centered:!0,content:t})},{useToken:Bo}=p.theme,Ut=t=>{const{ooui:r,isSearchField:n=!1}=t,{id:s,readOnly:o,isPassword:i,required:a,translatable:c}=r,{token:f}=Bo(),d=a&&!o?{backgroundColor:f.colorPrimaryBg}:void 0,h=l.useContext(Ve),{elementHasLostFocus:u}=h||{};let g=e.jsx(p.Input,{disabled:o||c&&!n,id:s,style:d,maxLength:r.size,onBlur:u});return i&&(g=e.jsx(p.Input.Password,{disabled:o,id:s,onBlur:u})),c&&!o&&!n&&(g=e.jsx(Ho,{field:s,requiredStyle:d})),e.jsx(ge,{required:a,...t,children:g})},Ho=({value:t,field:r,requiredStyle:n,onChange:s})=>{const o=l.useContext(Ve),{activeId:i,activeModel:a,fetchValues:c,formHasChanges:f,elementHasLostFocus:d}=o||{},[h,u]=l.useState(!1),{t:g}=l.useContext(pe);return i?e.jsxs(e.Fragment,{children:[e.jsx("div",{onClick:()=>{if(f!=null&&f()){ze(g("saveBeforeTranslate"));return}h||u(!0)},children:e.jsx(p.Input,{value:t,disabled:!0,id:r,onChange:S=>{s==null||s(S.target.value)},onBlur:d,style:{cursor:"pointer",pointerEvents:"none",...n}})}),e.jsx(_r,{id:i,model:a,field:r,visible:h,onCloseModal:()=>{u(!1)},onSubmitSucceed:()=>{u(!1),c==null||c()}})]}):e.jsx(e.Fragment,{children:e.jsxs(p.Row,{gutter:8,wrap:!1,children:[e.jsx(p.Col,{flex:"auto",children:e.jsx(p.Input,{value:t,id:r,style:n,onChange:S=>{s==null||s(S.target.value)},onBlur:d})}),e.jsx(p.Col,{flex:"32px",children:e.jsx(Pe,{tooltip:g("translate"),icon:e.jsx(H.TranslationOutlined,{}),onClick:async()=>{f!=null&&f()?ze(g("saveBeforeTranslate")):ze(g("enterTextBeforeTranslate"))},children:g("translate")})})]})})},{defaultAlgorithm:Ko,defaultSeed:Yo}=p.theme,Wo=Ko(Yo),{Option:qo}=p.Select,Gt=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,type:"any",...t,children:e.jsx(Dr,{...t})})},Dr=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,required:a}=r,c=Array.from(o.entries()),f=c&&c.length&&c.map(h=>{const[u,g]=h;return e.jsx(qo,{value:u,children:g},u)}),d=a&&!i?Uo:p.Select;return e.jsx(d,{disabled:i,onChange:n,value:s,optionFilterProp:"children",filterOption:(h,u)=>u.children.toLowerCase().indexOf(h.toLowerCase())>=0,showSearch:!0,children:f})},Uo=gt.default(p.Select)`
|
|
6
6
|
&.ant-select:not(.ant-select-customize-input) .ant-select-selector {
|
|
7
7
|
background-color: ${Wo.colorPrimaryBg};
|
|
8
8
|
}
|
|
9
|
-
`,{defaultAlgorithm:
|
|
9
|
+
`,{defaultAlgorithm:Go,defaultSeed:jo}=p.theme,kr=Go(jo),Mr=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o}=r;return e.jsx(ge,{...t,valuePropName:"checked",children:e.jsx(zo,{id:n,readOnly:s,required:o})})},zo=t=>{const{required:r,readOnly:n,...s}=t,o=r&&!n?Jo:p.Checkbox;return e.jsx("div",{className:"flex flex-row",children:e.jsx(o,{disabled:n,...s})})},Jo=gt.default(p.Checkbox)`
|
|
10
10
|
.ant-checkbox-inner {
|
|
11
|
-
background-color: ${
|
|
11
|
+
background-color: ${kr.colorPrimaryBg};
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
.ant-checkbox-checked .ant-checkbox-inner {
|
|
15
|
-
background-color: ${
|
|
15
|
+
background-color: ${kr.colorPrimary};
|
|
16
16
|
}
|
|
17
|
-
`;var Qe=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Zo(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}var Mr=Zo,Xo=typeof Qe=="object"&&Qe&&Qe.Object===Object&&Qe,Qo=Xo,Ro=Qo,es=typeof self=="object"&&self&&self.Object===Object&&self,ts=Ro||es||Function("return this")(),Vr=ts,rs=Vr,ns=function(){return rs.Date.now()},os=ns,ss=/\s/;function is(t){for(var r=t.length;r--&&ss.test(t.charAt(r)););return r}var as=is,ls=as,cs=/^\s+/;function ds(t){return t&&t.slice(0,ls(t)+1).replace(cs,"")}var us=ds,fs=Vr,hs=fs.Symbol,Er=hs,Ir=Er,Ar=Object.prototype,ps=Ar.hasOwnProperty,gs=Ar.toString,yt=Ir?Ir.toStringTag:void 0;function ms(t){var r=ps.call(t,yt),n=t[yt];try{t[yt]=void 0;var s=!0}catch{}var o=gs.call(t);return s&&(r?t[yt]=n:delete t[yt]),o}var ys=ms,ws=Object.prototype,vs=ws.toString;function Ss(t){return vs.call(t)}var Cs=Ss,$r=Er,bs=ys,xs=Cs,Ts="[object Null]",Fs="[object Undefined]",Lr=$r?$r.toStringTag:void 0;function Os(t){return t==null?t===void 0?Fs:Ts:Lr&&Lr in Object(t)?bs(t):xs(t)}var _s=Os;function Ds(t){return t!=null&&typeof t=="object"}var ks=Ds,Ms=_s,Vs=ks,Es="[object Symbol]";function Is(t){return typeof t=="symbol"||Vs(t)&&Ms(t)==Es}var As=Is,$s=us,Nr=Mr,Ls=As,Pr=0/0,Ns=/^[-+]0x[0-9a-f]+$/i,Ps=/^0b[01]+$/i,Bs=/^0o[0-7]+$/i,Hs=parseInt;function Ks(t){if(typeof t=="number")return t;if(Ls(t))return Pr;if(Nr(t)){var r=typeof t.valueOf=="function"?t.valueOf():t;t=Nr(r)?r+"":r}if(typeof t!="string")return t===0?t:+t;t=$s(t);var n=Ps.test(t);return n||Bs.test(t)?Hs(t.slice(2),n?2:8):Ns.test(t)?Pr:+t}var Ys=Ks,Ws=Mr,jt=os,Br=Ys,qs="Expected a function",Gs=Math.max,Us=Math.min;function js(t,r,n){var s,o,i,a,c,u,d=0,h=!1,f=!1,g=!0;if(typeof t!="function")throw new TypeError(qs);r=Br(r)||0,Ws(n)&&(h=!!n.leading,f="maxWait"in n,i=f?Gs(Br(n.maxWait)||0,r):i,g="trailing"in n?!!n.trailing:g);function S(M){var L=s,b=o;return s=o=void 0,d=M,a=t.apply(b,L),a}function y(M){return d=M,c=setTimeout(v,r),h?S(M):a}function m(M){var L=M-u,b=M-d,T=r-L;return f?Us(T,i-b):T}function w(M){var L=M-u,b=M-d;return u===void 0||L>=r||L<0||f&&b>=i}function v(){var M=jt();if(w(M))return _(M);c=setTimeout(v,m(M))}function _(M){return c=void 0,g&&s?S(M):(s=o=void 0,a)}function k(){c!==void 0&&clearTimeout(c),d=0,s=u=o=c=void 0}function C(){return c===void 0?a:_(jt())}function V(){var M=jt(),L=w(M);if(s=arguments,o=this,u=M,L){if(c===void 0)return y(u);if(f)return clearTimeout(c),c=setTimeout(v,r),S(u)}return c===void 0&&(c=setTimeout(v,r)),a}return V.cancel=k,V.flush=C,V}var zs=js;function Js(t){const n=Buffer.from(t,"base64").length/1e3;return`${Math.round((n+Number.EPSILON)*100)/100} KB`}async function ot(t){const r=await fo.fileTypeFromBuffer(Buffer.from(t,"base64"));return r||{mime:"text/plain",ext:"txt"}}const Hr=t=>new Promise((r,n)=>{const s=new FileReader;s.readAsDataURL(t),s.onload=o=>r(o.target.result.split(",")[1]),s.onerror=o=>n(o)});function Ft(t,r){for(var n=atob(t),s=new Array(n.length),o=0;o<n.length;o++)s[o]=n.charCodeAt(o);var i=new Uint8Array(s),a=new Blob([i],{type:r+";base64"}),c=URL.createObjectURL(a);window.open(c)}const Kr=t=>{const{ooui:r}=t,{required:n,id:s}=r,o=Ge(s);return o?e.jsx(o,{}):e.jsx(ge,{required:n,...t,children:e.jsx(Zs,{ooui:r})})},Zs=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o}=r,i=l.useRef(null),{t:a}=l.useContext(pe),c=f=>{s==null||s(f)};async function u(){const f=await ot(n),g=`data:${f==null?void 0:f.mime};base64,${n}`,S=document.createElement("a");S.href=g,S.download=`image.${f==null?void 0:f.ext}`,S.click()}async function d(f){f.stopPropagation(),f.preventDefault();const g=f.target.files[0],S=await Hr(g);c(S)}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(Pe,{tooltip:a("uploadNewImage"),icon:e.jsx(H.FolderOpenOutlined,{}),disabled:o,onClick:()=>{i.current.click()}}),e.jsx(Pe,{tooltip:a("download"),disabled:!n,onClick:u,icon:e.jsx(H.DownloadOutlined,{})}),e.jsx(Pe,{tooltip:a("clear"),disabled:o||!n,onClick:h,icon:e.jsx(H.ClearOutlined,{})})]})})]})},Xs=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,...t,children:e.jsx(Qs,{})})},Qs=t=>{const{value:r,onChange:n}=t;if(!r)return null;try{JSON.parse(r)}catch(s){return console.log(s),null}return e.jsx(po.GridUi,{inputJson:r,onChange:s=>{n&&n(s)}})},st=t=>{const r=t.arch,n=t.fields,s=new se.Tree(n);return s.parse(r),s},Rs=(t,r,n)=>t.columns.map(o=>{const i=o.type,a=o.id,c=r==null?void 0:r[i];let u;return c&&(u=d=>c(d,a,o,n)),{key:a,dataIndex:a,title:o.label,render:u,sorter:(d,h)=>{var S,y;let f=d[a]||"",g=h[a]||"";return i==="many2one"&&(f=((S=d[a])==null?void 0:S.value)||"",g=((y=h[a])==null?void 0:y.value)||""),f<g?-1:f>g?1:0}}}),Yr=(t,r)=>r.map(s=>{const o={};return Object.keys(s).map(i=>{if(i==="id")o[i]=s[i];else{const a=t.findById(i);a instanceof 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 Ot(t){return qr(t,"colors")}function Wr(t){return qr(t,"status")}function qr(t,r){if(!t)return;const n={};return t.forEach(s=>{n[s.id]=s[r]}),n}function it({resultsToSort:t,sorter:r,fields:n}){if(!r)return t;const{id:s,desc:o}=r,i=o===!1?"ascend":"descend",a=n[s].type,c=(u,d)=>{var g,S;let h=u[s]||"",f=d[s]||"";return a==="many2one"&&(h=((g=u[s])==null?void 0:g[1])||"",f=((S=d[s])==null?void 0:S[1])||""),h===f?0:i==="ascend"?h>f?1:-1:h<f?1:-1};return t.sort(c)}const zt=async t=>{var y;const{items:r,model:n,formView:s,treeView:o,context:i,currentView:a={}}=t,c=r.filter(m=>m.operation!=="original"),u=r.filter(m=>m.operation==="original").map(m=>m.id),d={form:s.fields,tree:o.fields};let h=[],f;if(a==="tree"&&(o==null?void 0:o.arch)){const m=(y=st(o))==null?void 0:y.colors,w=await K.getHandler().readEvalUiObjects({model:n,ids:u,arch:o==null?void 0:o.arch,fields:o.fields,context:i,attrs:m&&{colors:m}});h=w[0],f=Ot(w[1])}else h=await K.getHandler().readObjects({model:n,ids:u,fields:d[a],context:i});const g=h.map(m=>{const w={};return Object.keys(m).forEach(v=>{(d[a].hasOwnProperty(v)||v==="id")&&(w[v]=m[v])}),w});return[r.map(m=>{const w=g.find(_=>_.id===m.id),v={...m};return a==="form"?v.values=w:a==="tree"&&(v.treeValues=w),v}).concat(c),f]},ei=t=>{const r=t.filter(n=>n.id&&n.id<0).map(n=>n.id);return r.length===0?-1:Math.min(...r)-1},ti=(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},ri=t=>{const{ooui:r}=t,{relation:n,context:s,views:o}=r,[i,a]=l.useState(!0),[c,u]=l.useState(),[d,h]=l.useState(new Map),f=l.useContext(Ve),{getContext:g}=f||{};et.default(()=>{y()},[r]);const S=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),u(void 0);try{const m=await S("form"),w=await S("tree");d.set("form",m),d.set("tree",w),h(d)}catch(m){u(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(ge,{type:"array",...t,children:e.jsx(ni,{ooui:r,views:d})})},ni=t=>{const{value:r,views:n,ooui:s,onChange:o}=t,{items:i=[]}=r||{},[a,c]=l.useState(!1),[u,d]=l.useState(),[h,f]=l.useState(!1),[g,S]=l.useState(),{relation:y,context:m,readOnly:w,summaryField:v,titleField:_}=s,k=i.filter(b=>b.values),C=l.useContext(Ve),{getContext:V}=C||{};et.default(()=>{L()},[i]);const M=b=>{o==null||o({items:b})};async function L(){c(!0),d(void 0);try{const[b]=await zt({treeView:{fields:n.get("tree").fields,arch:n.get("tree").arch},formView:{fields:n.get("form").fields},model:y,items:i,context:{...V==null?void 0:V(),...m},currentView:"form"});M(b)}catch(b){d(b)}finally{c(!1)}}return u?e.jsx(p.Alert,{className:"mt-10",message:u,type:"error",banner:!0}):a?e.jsx(p.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(p.Timeline,{style:{padding:"1rem"},children:k.map((b,T)=>{var F,x;return e.jsx("div",{children:e.jsxs(p.Timeline.Item,{children:[e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{S(k.find(N=>b.id===N.id)),f(!0)},children:e.jsx("strong",{children:(F=b.values)==null?void 0:F[_]})}),e.jsx("br",{}),e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{S(k.find(N=>b.id===N.id)),f(!0)},children:(x=b.values)==null?void 0:x[v]})]},T)},T)})}),e.jsx(ut,{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:()=>{f(!1)},parentContext:{...V==null?void 0:V(),...m},onCancel:()=>{f(!1)},readOnly:w,postSaveAction:L})]})},{useToken:oi}=p.theme,si=t=>{const{ooui:r}=t;return e.jsx(ge,{ooui:r,children:e.jsx(ii,{ooui:r})})},ii=t=>{const{token:r}=oi(),{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},ai=(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},at=(t,r)=>ai(t,r),Jt=({source:t,target:r,fields:n})=>{const s={};return Object.keys(r).forEach(o=>{var a,c;if(n[o]?n[o].type==="one2many"||n[o].type==="many2many":!1){const u=JSON.stringify(t[o]),d=JSON.stringify(r[o]);if(u===d)return;(((c=(a=r[o])==null?void 0:a.items)==null?void 0:c.filter(f=>f.operation!=="original"))||[]).length>0&&(s[o]=r[o])}else if(Array.isArray(r[o]))if(t[o]===void 0)s[o]=r[o];else if(n[o].type==="many2one")if(Array.isArray(t[o])){const u=JSON.stringify(t[o]),d=JSON.stringify(r[o]);u!==d&&(s[o]=r[o])}else{const u=t[o],[d]=r[o];u!==d&&(s[o]=r[o])}else{const u=JSON.stringify(t[o]),d=JSON.stringify(r[o]);u!==d&&(s[o]=r[o])}else t[o]!==r[o]&&(r[o]===void 0?s[o]=null:s[o]=r[o])}),s},li=({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),ci=({fieldsDomain:t,fields:r})=>{const n={};return Object.keys(r).forEach(s=>{n[s]=r[s],t[s]&&(n[s].domain=t[s])}),n},di=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)},ui=({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},Gr=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(Ur),secondary:r.secondary.filter(Ur)}};function Ur(t,r,n){return n.indexOf(t)===r}const lt=({values:t,fields:r})=>{let n={};return Object.keys(t).forEach(s=>{const o=t[s];r[s]&&r[s].type==="many2one"&&o&&Array.isArray(o)&&o.length===2?n[s]=o[0]:n[s]=o}),n},_t=t=>{let r=0;t=t.toString().padEnd(10,"0");for(let o=0;o<t.length;o++)r=t.charCodeAt(o)+((r<<5)-r);let n="#";for(let o=0;o<3;o++){var s=r>>o*8&255;n+=("00"+s.toString(16)).slice(-2)}return n},jr=t=>{function r(a){return parseInt(a,16)||parseInt(a)}function n(a){return r(a)/255<=.03928?r(a)/255/12.92:Math.pow((r(a)/255+.055)/1.055,2.4)}function s(a){return .2126*n(a.substr(1,2))+.7152*n(a.substr(3,2))+.0722*n(a.substr(-2))}function o(a,c){const u=s(a),d=s(c);return(Math.max(u,d)+.05)/(Math.min(u,d)+.05)}function i(a){const c=o(a,"#ffffff"),u=o(a,"#000000");return c>u?"#ffffff":"#000000"}return i(t)},fi=t=>{const r=_t(t);return{backgroundColor:r,textColor:jr(r)}},zr=t=>{const{ooui:r}=t;return e.jsx(ge,{type:"array",...t,children:e.jsx(hi,{ooui:r})})},hi=t=>{const{value:r,ooui:n,onChange:s}=t,{items:o=[]}=r||{},i=o.filter(M=>M.operation!=="pendingRemove").map(M=>M.id),[a,c]=l.useState([]),[u,d]=l.useState(),[h,f]=l.useState(!1),{relation:g,context:S,readOnly:y,field:m}=n,w=l.useContext(Ve),{getContext:v}=w||{};et.default(()=>{k()},[o]);const _=M=>{s==null||s({items:M})};async function k(){f(!0);let M=[];try{if(y&&(M=[["id","in",i]]),n.domain){const T=await K.getHandler().evalDomain({domain:n.domain,values:lt({fields:w==null?void 0:w.getFields(),values:w.getPlainValues()}),fields:w==null?void 0:w.getFields(),context:w.getContext()});M=[...M,...T]}const b=(await K.getHandler().search({model:g,params:M,fields:[m],context:{...v==null?void 0:v(),...S}})).map(T=>{const F=T[m];let x=F;return Array.isArray(F)&&(x=F[1]),{label:x,value:T.id}});c(b)}catch(L){d(L)}finally{f(!1)}}const C=M=>{const L=o.map(T=>M.includes(T.id)?T.operation=="pendingRemove"?{...T,operation:"pendingLink"}:T:{id:T.id,operation:"pendingRemove"}),b=L.map(T=>T.id);M.filter(T=>!b.includes(T)).map(T=>{L.push({id:T,operation:"pendingLink"})}),_(L)},V=M=>{const{label:L,closable:b,onClose:T}=M,F=N=>{N.preventDefault(),N.stopPropagation()},x=fi(L);return e.jsx(p.Tag,{color:x.backgroundColor,onMouseDown:F,style:{margin:"5px",color:x.textColor},closable:b,onClose:T,children:L})};return u?e.jsx(p.Alert,{className:"mt-10",message:u,type:"error",banner:!0}):e.jsx(e.Fragment,{children:e.jsx("div",{className:"flex flex-row",children:e.jsx(p.Select,{mode:"multiple",value:a.length?i:[],tagRender:V,bordered:!y,disabled:y,options:a,onChange:C,loading:h})})})},pi=t=>{switch(t){case"form":return dt;case"tree":return Ct;case"notebook":return Fn;case"group":return nr;case"label":return mt;case"char":return Gt;case"text":return On;case"button":return qt;case"buttonGroup":return xr;case"selection":return Ut;case"many2one":return mn;case"boolean":return kr;case"integer":return St;case"float":return Xt;case"progressbar":return nn;case"date":return Vn;case"datetime":return En;case"time":return An;case"one2many":case"one2many_list":case"many2many":return xn;case"separator":return _n;case"reference":return $n;case"binary":return Ln;case"image":return Kr;case"url":return Yn;case"email":return Wn;case"float_time":return Tn;case"fiber_grid":return Xs;case"timeline":return ri;case"indicator":return si;case"tags":return zr;case"tag":return ln;case"multicheckbox":return Zn;case"markdown":return Xn;case"radio":return Qn;case"switch":return Rn;case"steps":return eo;case"codeeditor":return to;default:return}},gi=t=>{const{ooui:r}=t,{type:n}=r,s=pi(n);return s?He.default.createElement(s,t):null},mi=({item:t,responsiveBehaviour:r})=>({gridColumnStart:"span "+(r?1:t.colspan)}),yi=({row:t,mustFillWithEmpties:r,numberOfColumns:n})=>{const s=[];let o=0;const i=a=>a+1===t.length&&o<n&&!r;return t.map((a,c)=>{if(o+=a.colspan,i(c)){const u=n-o;a.colspan=a.colspan+u,o+=u}if(s.push(a),i(c)){const u=n-o;for(let d=0;d<u;d+=1)s.push(new se.Label({string:""}))}}),s},wi=({row:t,numberOfColumns:r})=>t.map(n=>(n._mustExpand&&(n.colspan=r),n)),vi=(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(" ")},Si=(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},Ci=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=Ci(s);i<o&&(o=i);let a=!1,c=[];const u=s.map((f,g)=>{const S=f.filter(w=>!w.invisible),y=wi({row:S,numberOfColumns:o});let m=y;return(g===0||!(f.length===1&&f.some(w=>w.type==="group")))&&(m=yi({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:{...mi({item:w,responsiveBehaviour:n}),minWidth:0},children:gi({ooui:w,responsiveBehaviour:n})},w.key)))}),d=s.length===1?vi(c,o):Si(o,a),h={display:"grid",gridTemplateColumns:n?"auto":d,gap:"1rem",minHeight:0,minWidth:0};return e.jsx("div",{style:h,children:u})},{confirm:bi}=p.Modal,wt=({onOk:t,onCancel:r,lang:n})=>{bi({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:xi}=p.Modal,Jr=t=>{xi({title:be("formHasErrors",t),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:be("fillRequiredFields",t)})},{warning:Ti}=p.Modal,Fi=(t,r,n)=>{Ti({title:t,icon:e.jsx(H.WarningOutlined,{}),centered:!0,content:r,onOk:n})},Zr=He.default.createContext(null),Oi=t=>{const{children:r,setTitle:n}=t;return e.jsx(Zr.Provider,{value:{setTitle:n},children:r})},Xr=t=>typeof t=="string"&&t==="true"||t==="false"?t==="true":t,_i=(t,r)=>{const n=Ii(t),s=Vi(n),o=Ei(s,r);return[...Object.keys(o).map(c=>Di(c,o[c],r))].reduce((c,u)=>Array.isArray(u[0])?c.concat(u):[...c,u],[])},Di=(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=>Xr(a))]:[t,"=",Xr(r)]},ki=t=>Object.keys(t).filter(r=>r.indexOf("#date")!==-1),Mi=t=>{const r={...t};return Object.keys(r).forEach(n=>(n.indexOf("#time")!==-1||n.indexOf("#date")!==-1)&&delete r[n]),r},Vi=t=>{const r={...Mi(t)};return ki(t).forEach(s=>{const o=t[s],i=s.split("#")[0],a=i+"#time",c=t[a];let u,d;if(o[0]!==null&&(u=o[0].format("YYYY-MM-DD"),c&&c[0]!==null)){const f=c[0].format("HH:mm:ss");u=u+" "+f}if(o[1]!==null&&(d=o[1].format("YYYY-MM-DD"),c&&c[1]!==null)){const f=c[1].format("HH:mm:ss");d=d+" "+f}r[i+"#datetime"]=[u,d]}),r},Ei=(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},Ii=t=>{const r={...t};return Object.keys(r).forEach(n=>(r[n]===void 0||r[n]===null||r[n]==="")&&delete r[n]),r},Ai=t=>{const r={};return t.forEach(n=>{Array.isArray(n)&&n[0]?r[n[0]]=!0:r[n]=!0}),Object.keys(r)},Dt=(t,r)=>{const n=[...t],s=Ai(t);return r.forEach(o=>{Array.isArray(o)&&o[0]?s.includes(o[0])||n.push(o):s.includes(o)||n.push(o)}),n},vt=80,Qr=t=>{const{model:r,setSearchTreeNameSearch:n,setSelectedRowItems:s,setSearchParams:o,setSearchVisible:i,setTreeIsLoading:a,nameSearch:c,searchNameGetDoneRef:u,context:d,setActionViewTotalItems:h,treeView:f,formView:g,sorter:S,setSorter:y,setCurrentItemIndex:m,setResultsActionView:w,resultsActionView:v,domain:_,currentId:k,limit:C,setLimit:V,searchParams:M=[],setSearchValues:L}=t,[b,T]=l.useState(!1),[F,x]=l.useState(!1),[N,I]=l.useState(),[O,E]=l.useState(1),[$,D]=l.useState(0),[B,A]=l.useState(),[W,J]=l.useState([]),[U,Z]=l.useState(void 0),[j,P]=l.useState(void 0),Y=l.useRef(C||vt),te=l.useRef([]),Q=l.useCallback(ae=>{w==null||w([...ae]),J([...ae])},[]),ie=l.useCallback(()=>v||W,[v,W]),ee=l.useCallback(async()=>{const ae=await K.getHandler().nameSearch({model:r,payload:c,limit:Y.current,attrs:_,context:d});if(A(ae.length),h==null||h(ae.length),ae.length>0){const Se=ae.map(ce=>ce==null?void 0:ce[0]),{colors:Fe,status:Oe}=st(f),Ae={};Fe&&(Ae.colors=Fe),Oe&&(Ae.status=Oe);const Ne=await K.getHandler().readEvalUiObjects({model:r,ids:Se,arch:f==null?void 0:f.arch,fields:f.field_parent?{...f.fields,[f.field_parent]:{}}:f.fields,context:d,attrs:Ae}),re=Ne[0];te.current=[...re],Z(Ot(Ne[1])),P(Wr(Ne[1]));const xe=re.map(ce=>ce.id),Me=S!==void 0?it({resultsToSort:re,sorter:S,fields:{...f.fields,...g.fields}}):[...te.current];Q(Me),xe.length>0?m==null||m(0):m==null||m(void 0)}else Q([]),m==null||m(void 0);T(!1),u.current=!0},[Q,u,c,r,d,_,f,g,S,m,h]),X=l.useCallback(async ae=>{const{params:Se,newOffset:Fe}=ae||{},Oe=Dt(Se||M,_),{colors:Ae,status:Ne}=st(f),re={};Ae&&(re.colors=Ae),Ne&&(re.status=Ne);const{totalItems:xe,results:Me,attrsEvaluated:ce}=await K.getHandler().searchForTree({params:Oe,limit:Y.current,offset:Fe||$,model:r,fields:f.field_parent?{...f.fields,[f.field_parent]:{}}:f.fields,context:d,attrs:re});Z(Ot(ce)),P(Wr(ce)),te.current=[...Me];const fe=S!==void 0?it({resultsToSort:Me,sorter:S,fields:{...f.fields,...g.fields}}):[...te.current];if(Q(fe),v&&fe.length>0){const de=fe.findIndex(Ye=>k===Ye.id);de===-1?m==null||m(0):m==null||m(de)}else m==null||m(void 0);T(!1);const Ce=await xe;A(Ce),h==null||h(Ce)},[m,v,Q,k,r,d,_,f,g,S,h,C,$,M]),ue=l.useCallback(async ae=>{try{T(!0),a==null||a(!0),c&&!u.current?await ee():await X(ae)}catch(Se){I(Se.message)}finally{x(!1),a==null||a(!1)}},[d,k,_,g,C,r,c,$,v,u,h,m,Q,I,x,T,a,S,f]),we=l.useCallback(ae=>{y==null||y(ae);const Se=ae!==void 0?it({resultsToSort:ie(),sorter:ae,fields:{...f.fields,...g.fields}}):[...te.current];Q(Se)},[y,ie,f,g,Q]),Ee=l.useCallback(ae=>{const{params:Se,searchValues:Fe,limit:Oe,offset:Ae}=ae;b||(n==null||n(void 0),s==null||s([]),L==null||L(Fe),o==null||o(Se),i==null||i(!1),x(!0),I(void 0),E(1),Oe&&(Y.current=Oe,V==null||V(Oe)),Ae&&D(Ae),ue({params:Se,newOffset:Ae}))},[b,n,s,o,i,x,I,E,V,D,ue]),Te=l.useCallback(ae=>{T(!0),E(ae),D((ae-1)*C)},[T,C,D,E]),Ie=l.useCallback(()=>{b||(n==null||n(void 0),o==null||o([]),L==null||L({}),I(void 0),D(0),E(1),V==null||V(C||vt))},[b,n,o,I,D,E,V,C]),me=l.useCallback(async ae=>{const Se=ae[(f==null?void 0:f.field_parent)||"child_id"],Fe=await K.getHandler().readObjects({model:r,ids:Se,fields:f.field_parent?{...f.fields,[f.field_parent]:{}}:f.fields,context:d});return Q([...ie(),...Fe]),Yr(st(f),Fe)},[f,r,d,ie,Q]);return{submit:Ee,clear:Ie,fetchResults:ue,tableRefreshing:b,searchFilterLoading:F,searchError:N,page:O,offset:$,limit:C,getResults:ie,requestPageChange:Te,changeSort:we,fetchChildrenForRecord:me,colorsForResults:U,statusForResults:j,totalItems:B}},Ke=He.default.createContext(null),$i=t=>{const{children:r,currentView:n,title:s,setCurrentView:o,availableViews:i,formRef:a,searchTreeRef:c,onNewClicked:u,currentId:d,setCurrentId:h,setResults:f,results:g,currentItemIndex:S,setCurrentItemIndex:y,currentModel:m,sorter:w,setSorter:v,totalItems:_,setTotalItems:k,setSelectedRowItems:C,selectedRowItems:V,searchTreeNameSearch:M,setSearchTreeNameSearch:L,goToResourceId:b,limit:T}=t,[F,x]=l.useState(!1),[N,I]=l.useState(!1),[O,E]=l.useState(!1),[$,D]=l.useState(!0),[B,A]=l.useState(!0),[W,J]=l.useState([]),[U,Z]=l.useState(!1),[j,P]=l.useState([]),[Y,te]=l.useState(!1),[Q,ie]=l.useState(!0),[ee,X]=l.useState(),[ue,we]=l.useState({}),[Ee,Te]=l.useState(T!==void 0?T:vt),[Ie,me]=l.useState(s);l.useEffect(()=>{g&&g.length>0&&!S&&(y==null||y(0),h==null||h(g[0].id))},[g]),l.useEffect(()=>{Te(T!==void 0?T:vt)},[T]),l.useEffect(()=>{i.length===1?X(i[0]):i.length>1&&X(i.filter(Se=>Se.view_id!==n.view_id)[0])},[i]),l.useEffect(()=>{(ee==null?void 0:ee.view_id)===n.view_id&&i.length>1&&X(i.filter(Se=>Se.view_id!==n.view_id)[0])},[n]);const ae=async()=>{var Se;return await((Se=a.current)==null?void 0:Se.submitForm())};return e.jsx(Ke.Provider,{value:{title:Ie,currentView:n,setCurrentView:o,availableViews:i,formIsSaving:F,setFormIsSaving:x,formHasChanges:N,setFormHasChanges:I,formRef:a,searchTreeRef:c,onFormSave:ae,onNewClicked:u,currentId:d,setCurrentId:h,currentItemIndex:S,setCurrentItemIndex:y,results:g,setResults:f,currentModel:m,removingItem:O,setRemovingItem:E,formIsLoading:$,setFormIsLoading:D,treeIsLoading:B,setTreeIsLoading:A,attachments:W,setAttachments:J,selectedRowItems:V,setSelectedRowItems:C,duplicatingItem:U,setDuplicatingItem:Z,setSearchParams:P,searchParams:j,searchVisible:Y,setSearchVisible:te,sorter:w,setSorter:v,totalItems:_,setTotalItems:k,searchTreeNameSearch:M,setSearchTreeNameSearch:L,setGraphIsLoading:ie,graphIsLoading:Q,previousView:ee,setPreviousView:X,goToResourceId:b,searchValues:ue,setSearchValues:we,limit:Ee,setLimit:Te,setTitle:me},children:r})},je=He.default.createContext(null),Li=t=>{const{children:r,openAction:n,openRelate:s,openDefaultActionForModel:o,openShortcut:i,activeKey:a,onChangeTab:c,onRemoveTab:u,tabs:d}=t,[h,f]=l.useState(),[g,S]=l.useState();return e.jsx(je.Provider,{value:{openAction:n,openRelate:s,openDefaultActionForModel:o,activeKey:a,openShortcut:i,onChangeTab:c,onRemoveTab:u,tabs:d,currentId:g,currentView:h,setCurrentId:S,setCurrentView:f},children:r})},ct=He.default.createContext(null),Rr=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))},Ni=(t,r)=>{const{children:n,globalValues:s={}}=t,o=l.useRef(),i=l.useRef(),[a,c]=l.useState(!1),u=l.useContext(je),{openAction:d}=u||{},h=l.useRef([]),{t:f}=l.useContext(pe);l.useImperativeHandle(r,()=>({openActionModal:C}));const[g,S]=l.useState(!1),[y,m]=l.useState({context:{}});async function w(L){const{reportData:b,fields:T,values:F,context:x={}}=L,{context:N,model:I,datas:O={},report_name:E,type:$}=b;if($!=="ir.actions.report.xml"){Le(`${$} action not supported`);return}const{ids:D}=O||{};let B=D||[];const A=typeof N=="string"?se.parseContext({context:N,fields:T,values:F}):N;try{const W=await K.getHandler().createReport({model:I,name:E,datas:O,ids:B,context:{...x,...A}});c(!0),i.current=!0,o.current=setInterval(()=>{v(W)},1e3)}catch(W){i.current=!1,clearInterval(o.current),Le(W),c(!1)}}async function v(L){let b;try{if(b=await K.getHandler().getReport({id:L}),b.state&&i.current===!0){i.current=!1,clearInterval(o.current),c(!1);const T=await ot(b.result);Ft(b.result,T.mime)}}catch(T){i.current=!1,clearInterval(o.current),c(!1),Le(T.exception||T)}}async function _({actionData:L,fields:b,values:T,context:F,onRefreshParentValues:x}){const{type:N}=L;return h.current.push(x),N==="ir.actions.report.xml"?await w({reportData:L,fields:b,values:T,context:F}):N==="ir.actions.act_window"?await k({actionData:L,fields:b,values:T,context:F}):(Le(`${N} action not supported`),{})}async function k({actionData:L,fields:b={},values:T={},context:F={}}){var E;let x=L;L.res_model||(x=(await K.getHandler().readObjects({model:"ir.actions.act_window",ids:[parseInt(L.id)],context:F}))[0]);const I={...typeof(x==null?void 0:x.context)=="string"?se.parseContext({context:x.context,fields:b,values:{...T,...s}}):x.context,...F};let O=[];if(x.domain&&(O=await K.getHandler().evalDomain({domain:x.domain,values:lt({fields:b,values:{...T,...s}}),fields:b,context:I})),x.target==="new"){const $=await K.getHandler().getView({model:x.res_model,type:"form",id:((E=x==null?void 0:x.view_id)==null?void 0:E[0])||void 0,context:I});return C({domain:O,model:x.res_model,formView:$,context:I}),{}}else{const{initialView:$,views:D}=await Pi({model:x.res_model,context:I,view_mode:x.view_mode,views:x.views});return d==null||d({target:"current",context:I,domain:O,model:x.res_model,views:D,title:x.name,initialView:$,action_id:x.id,action_type:x.type}),{closeParent:!0}}}function C({domain:L,model:b,formView:T,context:F,actionData:x}){g?V({domain:L,model:b,formView:T,context:F,actionData:x}):(m({domain:L,model:b,context:F,formView:T,actionData:x}),S(!0))}async function V({domain:L,model:b,formView:T,context:F,actionData:x}){m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0}),S(!1),await new Promise(N=>setTimeout(N,300)),m({domain:L,model:b,context:F,formView:T,actionData:x}),S(!0)}async function M(){Rr(h.current),h.current=[],S(!1),m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0})}return e.jsx(e.Fragment,{children:e.jsx(ct.Provider,{value:{processAction:_,globalValues:s},children:e.jsxs(e.Fragment,{children:[n,e.jsx(p.Modal,{title:f("generatingReport"),open:a,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(p.Spin,{})}),e.jsx(ut,{buttonModal:!0,parentContext:y.context,model:y.model,formView:y.formView,visible:g,onSubmitSucceed:M,onCancel:()=>{Rr(h.current),h.current=[],S(!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 Pi({views:t,view_mode:r,model:n,context:s,view_id:o}){const i=[];let a;if(t)for(const c of t){const u=await K.getHandler().getView({model:n,type:c[1],id:c[0],context:s});i.push([u.view_id,c[1]])}else{const c=r.split(",");for(const u of c){const d=await K.getHandler().getView({model:n,type:u,context:s});i.push([d.view_id,u])}}if(t&&t.length>0){const[c,u]=t[0];a={id:c,type:u}}else if(o)a={id:o,type:r.split(",")[0]};else{const c=r.split(",")[0],[u]=i.find(([d,h])=>h===c);a={id:u,type:c}}return{views:i,initialView:a}}const en=l.forwardRef(Ni),Bi=({error:t,className:r})=>{let n,s="error";if(typeof t=="string"&&t.indexOf(" -- ")!==-1&&t.indexOf(`
|
|
17
|
+
`;var Qe=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Zo(t){var r=typeof t;return t!=null&&(r=="object"||r=="function")}var Vr=Zo,Xo=typeof Qe=="object"&&Qe&&Qe.Object===Object&&Qe,Qo=Xo,Ro=Qo,es=typeof self=="object"&&self&&self.Object===Object&&self,ts=Ro||es||Function("return this")(),Er=ts,rs=Er,ns=function(){return rs.Date.now()},os=ns,ss=/\s/;function is(t){for(var r=t.length;r--&&ss.test(t.charAt(r)););return r}var as=is,ls=as,cs=/^\s+/;function ds(t){return t&&t.slice(0,ls(t)+1).replace(cs,"")}var us=ds,fs=Er,hs=fs.Symbol,Ir=hs,$r=Ir,Ar=Object.prototype,ps=Ar.hasOwnProperty,gs=Ar.toString,yt=$r?$r.toStringTag:void 0;function ms(t){var r=ps.call(t,yt),n=t[yt];try{t[yt]=void 0;var s=!0}catch{}var o=gs.call(t);return s&&(r?t[yt]=n:delete t[yt]),o}var ys=ms,ws=Object.prototype,vs=ws.toString;function Ss(t){return vs.call(t)}var Cs=Ss,Lr=Ir,bs=ys,xs=Cs,Ts="[object Null]",Fs="[object Undefined]",Nr=Lr?Lr.toStringTag:void 0;function Os(t){return t==null?t===void 0?Fs:Ts:Nr&&Nr in Object(t)?bs(t):xs(t)}var _s=Os;function Ds(t){return t!=null&&typeof t=="object"}var ks=Ds,Ms=_s,Vs=ks,Es="[object Symbol]";function Is(t){return typeof t=="symbol"||Vs(t)&&Ms(t)==Es}var $s=Is,As=us,Pr=Vr,Ls=$s,Br=0/0,Ns=/^[-+]0x[0-9a-f]+$/i,Ps=/^0b[01]+$/i,Bs=/^0o[0-7]+$/i,Hs=parseInt;function Ks(t){if(typeof t=="number")return t;if(Ls(t))return Br;if(Pr(t)){var r=typeof t.valueOf=="function"?t.valueOf():t;t=Pr(r)?r+"":r}if(typeof t!="string")return t===0?t:+t;t=As(t);var n=Ps.test(t);return n||Bs.test(t)?Hs(t.slice(2),n?2:8):Ns.test(t)?Br:+t}var Ys=Ks,Ws=Vr,jt=os,Hr=Ys,qs="Expected a function",Us=Math.max,Gs=Math.min;function js(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(qs);r=Hr(r)||0,Ws(n)&&(h=!!n.leading,u="maxWait"in n,i=u?Us(Hr(n.maxWait)||0,r):i,g="trailing"in n?!!n.trailing:g);function S(M){var L=s,b=o;return s=o=void 0,d=M,a=t.apply(b,L),a}function y(M){return d=M,c=setTimeout(v,r),h?S(M):a}function m(M){var L=M-f,b=M-d,T=r-L;return u?Gs(T,i-b):T}function w(M){var L=M-f,b=M-d;return f===void 0||L>=r||L<0||u&&b>=i}function v(){var M=jt();if(w(M))return _(M);c=setTimeout(v,m(M))}function _(M){return c=void 0,g&&s?S(M):(s=o=void 0,a)}function k(){c!==void 0&&clearTimeout(c),d=0,s=f=o=c=void 0}function C(){return c===void 0?a:_(jt())}function V(){var M=jt(),L=w(M);if(s=arguments,o=this,f=M,L){if(c===void 0)return y(f);if(u)return clearTimeout(c),c=setTimeout(v,r),S(f)}return c===void 0&&(c=setTimeout(v,r)),a}return V.cancel=k,V.flush=C,V}var zs=js;function Js(t){const n=Buffer.from(t,"base64").length/1e3;return`${Math.round((n+Number.EPSILON)*100)/100} KB`}async function ot(t){const r=await ho.fileTypeFromBuffer(Buffer.from(t,"base64"));return r||{mime:"text/plain",ext:"txt"}}const Kr=t=>new Promise((r,n)=>{const s=new FileReader;s.readAsDataURL(t),s.onload=o=>r(o.target.result.split(",")[1]),s.onerror=o=>n(o)});function Ft(t,r){for(var n=atob(t),s=new Array(n.length),o=0;o<n.length;o++)s[o]=n.charCodeAt(o);var i=new Uint8Array(s),a=new Blob([i],{type:r+";base64"}),c=URL.createObjectURL(a);window.open(c)}const Yr=t=>{const{ooui:r}=t,{required:n,id:s}=r,o=Ue(s);return o?e.jsx(o,{}):e.jsx(ge,{required:n,...t,children:e.jsx(Zs,{ooui:r})})},Zs=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o}=r,i=l.useRef(null),{t:a}=l.useContext(pe),c=u=>{s==null||s(u)};async function f(){const u=await ot(n),g=`data:${u==null?void 0:u.mime};base64,${n}`,S=document.createElement("a");S.href=g,S.download=`image.${u==null?void 0:u.ext}`,S.click()}async function d(u){u.stopPropagation(),u.preventDefault();const g=u.target.files[0],S=await Kr(g);c(S)}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(Pe,{tooltip:a("uploadNewImage"),icon:e.jsx(H.FolderOpenOutlined,{}),disabled:o,onClick:()=>{i.current.click()}}),e.jsx(Pe,{tooltip:a("download"),disabled:!n,onClick:f,icon:e.jsx(H.DownloadOutlined,{})}),e.jsx(Pe,{tooltip:a("clear"),disabled:o||!n,onClick:h,icon:e.jsx(H.ClearOutlined,{})})]})})]})},Xs=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,...t,children:e.jsx(Qs,{})})},Qs=t=>{const{value:r,onChange:n}=t;if(!r)return null;try{JSON.parse(r)}catch(s){return console.log(s),null}return e.jsx(po.GridUi,{inputJson:r,onChange:s=>{n&&n(s)}})},st=t=>{const r=t.arch,n=t.fields,s=new se.Tree(n);return s.parse(r),s},Rs=(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 S,y;let u=d[a]||"",g=h[a]||"";return i==="many2one"&&(u=((S=d[a])==null?void 0:S.value)||"",g=((y=h[a])==null?void 0:y.value)||""),u<g?-1:u>g?1:0}}}),Wr=(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 Ot(t){return Ur(t,"colors")}function qr(t){return Ur(t,"status")}function Ur(t,r){if(!t)return;const n={};return t.forEach(s=>{n[s.id]=s[r]}),n}function it({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,S;let h=f[s]||"",u=d[s]||"";return a==="many2one"&&(h=((g=f[s])==null?void 0:g[1])||"",u=((S=d[s])==null?void 0:S[1])||""),h===u?0:i==="ascend"?h>u?1:-1:h<u?1:-1};return t.sort(c)}const zt=async t=>{var y;const{items:r,model:n,formView:s,treeView:o,context:i,currentView:a={}}=t,c=r.filter(m=>m.operation!=="original"),f=r.filter(m=>m.operation==="original").map(m=>m.id),d={form:s.fields,tree:o.fields};let h=[],u;if(a==="tree"&&(o==null?void 0:o.arch)){const m=(y=st(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=Ot(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(v=>{(d[a].hasOwnProperty(v)||v==="id")&&(w[v]=m[v])}),w});return[r.map(m=>{const w=g.find(_=>_.id===m.id),v={...m};return a==="form"?v.values=w:a==="tree"&&(v.treeValues=w),v}).concat(c),u]},ei=t=>{const r=t.filter(n=>n.id&&n.id<0).map(n=>n.id);return r.length===0?-1:Math.min(...r)-1},ti=(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},ri=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(Ve),{getContext:g}=u||{};et.default(()=>{y()},[r]);const S=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 S("form"),w=await S("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(ge,{type:"array",...t,children:e.jsx(ni,{ooui:r,views:d})})},ni=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,S]=l.useState(),{relation:y,context:m,readOnly:w,summaryField:v,titleField:_}=s,k=i.filter(b=>b.values),C=l.useContext(Ve),{getContext:V}=C||{};et.default(()=>{L()},[i]);const M=b=>{o==null||o({items:b})};async function L(){c(!0),d(void 0);try{const[b]=await zt({treeView:{fields:n.get("tree").fields,arch:n.get("tree").arch},formView:{fields:n.get("form").fields},model:y,items:i,context:{...V==null?void 0:V(),...m},currentView:"form"});M(b)}catch(b){d(b)}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:k.map((b,T)=>{var F,x;return e.jsx("div",{children:e.jsxs(p.Timeline.Item,{children:[e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{S(k.find(N=>b.id===N.id)),u(!0)},children:e.jsx("strong",{children:(F=b.values)==null?void 0:F[_]})}),e.jsx("br",{}),e.jsx("div",{style:{display:"inline-block",cursor:"pointer"},onClick:()=>{S(k.find(N=>b.id===N.id)),u(!0)},children:(x=b.values)==null?void 0:x[v]})]},T)},T)})}),e.jsx(ut,{formView:n.get("form"),model:y,id:g==null?void 0:g.id,values:g==null?void 0:g.values,defaultValues:g==null?void 0:g.defaultValues,visible:h,onSubmitSucceed:()=>{u(!1)},parentContext:{...V==null?void 0:V(),...m},onCancel:()=>{u(!1)},readOnly:w,postSaveAction:L})]})},{useToken:oi}=p.theme,si=t=>{const{ooui:r}=t;return e.jsx(ge,{ooui:r,children:e.jsx(ii,{ooui:r})})},ii=t=>{const{token:r}=oi(),{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},ai=(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},at=(t,r)=>ai(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},li=({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),ci=({fieldsDomain:t,fields:r})=>{const n={};return Object.keys(r).forEach(s=>{n[s]=r[s],t[s]&&(n[s].domain=t[s])}),n},di=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)},ui=({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},Gr=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(jr),secondary:r.secondary.filter(jr)}};function jr(t,r,n){return n.indexOf(t)===r}const lt=({values:t,fields:r})=>{let n={};return Object.keys(t).forEach(s=>{const o=t[s];r[s]&&r[s].type==="many2one"&&o&&Array.isArray(o)&&o.length===2?n[s]=o[0]:n[s]=o}),n},_t=t=>{let r=0;t=t.toString().padEnd(10,"0");for(let o=0;o<t.length;o++)r=t.charCodeAt(o)+((r<<5)-r);let n="#";for(let o=0;o<3;o++){var s=r>>o*8&255;n+=("00"+s.toString(16)).slice(-2)}return n},zr=t=>e.jsx(ge,{...t,children:e.jsx(Jr,{...t})}),Jr=t=>{const{ooui:r,value:n}=t;let s=n,o=n;if(r.selectionValues.size?s=r.selectionValues.get(n):Array.isArray(n)&&(o=n[0],s=n[1]),!n)return null;const i=r.colors==="auto"?_t(o):r.colors[o]||_t(o);return e.jsx(Zr,{color:i,children:s})},Zr=t=>{let{color:r}=t,n={};return!pr.isPresetStatusColor(t.color)&&!pr.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})},Xr=t=>{const{ooui:r}=t;return e.jsx(ge,{type:"array",...t,children:e.jsx(fi,{ooui:r})})},fi=t=>{const{value:r,ooui:n,onChange:s}=t,{items:o=[]}=r||{},i=o.filter(M=>M.operation!=="pendingRemove").map(M=>M.id),[a,c]=l.useState([]),[f,d]=l.useState(),[h,u]=l.useState(!1),{relation:g,context:S,readOnly:y,field:m}=n,w=l.useContext(Ve),{getContext:v}=w||{};et.default(()=>{k()},[o]);const _=M=>{s==null||s({items:M})};async function k(){u(!0);let M=[];try{if(y&&(M=[["id","in",i]]),n.domain){const T=await K.getHandler().evalDomain({domain:n.domain,values:lt({fields:w==null?void 0:w.getFields(),values:w.getPlainValues()}),fields:w==null?void 0:w.getFields(),context:w.getContext()});M=[...M,...T]}const b=(await K.getHandler().search({model:g,params:M,fields:[m],context:{...v==null?void 0:v(),...S}})).map(T=>{const F=T[m];let x=F;return Array.isArray(F)&&(x=F[1]),{label:x,value:T.id}});c(b)}catch(L){d(L)}finally{u(!1)}}const C=M=>{const L=o.map(T=>M.includes(T.id)?T.operation=="pendingRemove"?{...T,operation:"pendingLink"}:T:{id:T.id,operation:"pendingRemove"}),b=L.map(T=>T.id);M.filter(T=>!b.includes(T)).map(T=>{L.push({id:T,operation:"pendingLink"})}),_(L)},V=M=>{const{label:L,closable:b,onClose:T}=M,F=N=>{N.preventDefault(),N.stopPropagation()},x=_t(L);return e.jsx(Zr,{color:x,onMouseDown:F,closable:b,onClose:T,closeIcon:e.jsx("span",{style:{color:x},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:V,bordered:!y,disabled:y,options:a,onChange:C,loading:h})})})},hi=t=>{switch(t){case"form":return dt;case"tree":return Ct;case"notebook":return On;case"group":return nr;case"label":return mt;case"char":return Ut;case"text":return _n;case"button":return qt;case"buttonGroup":return Tr;case"selection":return Gt;case"many2one":return yn;case"boolean":return Mr;case"integer":return St;case"float":return Xt;case"progressbar":return an;case"date":return En;case"datetime":return In;case"time":return An;case"one2many":case"one2many_list":case"many2many":return Tn;case"separator":return Dn;case"reference":return Ln;case"binary":return Nn;case"image":return Yr;case"url":return Wn;case"email":return qn;case"float_time":return Fn;case"fiber_grid":return Xs;case"timeline":return ri;case"indicator":return si;case"tags":return Xr;case"tag":return zr;case"multicheckbox":return Xn;case"markdown":return Qn;case"radio":return Rn;case"switch":return eo;case"steps":return to;case"codeeditor":return ro;default:return}},pi=t=>{const{ooui:r}=t,{type:n}=r,s=hi(n);return s?He.default.createElement(s,t):null},gi=({item:t,responsiveBehaviour:r})=>({gridColumnStart:"span "+(r?1:t.colspan)}),mi=({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},yi=({row:t,numberOfColumns:r})=>t.map(n=>(n._mustExpand&&(n.colspan=r),n)),wi=(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(" ")},vi=(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},Si=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=Si(s);i<o&&(o=i);let a=!1,c=[];const f=s.map((u,g)=>{const S=u.filter(w=>!w.invisible),y=yi({row:S,numberOfColumns:o});let m=y;return(g===0||!(u.length===1&&u.some(w=>w.type==="group")))&&(m=mi({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:{...gi({item:w,responsiveBehaviour:n}),minWidth:0},children:pi({ooui:w,responsiveBehaviour:n})},w.key)))}),d=s.length===1?wi(c,o):vi(o,a),h={display:"grid",gridTemplateColumns:n?"auto":d,gap:"1rem",minHeight:0,minWidth:0};return e.jsx("div",{style:h,children:f})},{confirm:Ci}=p.Modal,wt=({onOk:t,onCancel:r,lang:n})=>{Ci({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:bi}=p.Modal,Qr=t=>{bi({title:be("formHasErrors",t),icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:be("fillRequiredFields",t)})},{warning:xi}=p.Modal,Ti=(t,r,n)=>{xi({title:t,icon:e.jsx(H.WarningOutlined,{}),centered:!0,content:r,onOk:n})},Rr=He.default.createContext(null),Fi=t=>{const{children:r,setTitle:n}=t;return e.jsx(Rr.Provider,{value:{setTitle:n},children:r})},en=t=>typeof t=="string"&&t==="true"||t==="false"?t==="true":t,Oi=(t,r)=>{const n=Ei(t),s=Mi(n),o=Vi(s,r);return[...Object.keys(o).map(c=>_i(c,o[c],r))].reduce((c,f)=>Array.isArray(f[0])?c.concat(f):[...c,f],[])},_i=(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=>en(a))]:[t,"=",en(r)]},Di=t=>Object.keys(t).filter(r=>r.indexOf("#date")!==-1),ki=t=>{const r={...t};return Object.keys(r).forEach(n=>(n.indexOf("#time")!==-1||n.indexOf("#date")!==-1)&&delete r[n]),r},Mi=t=>{const r={...ki(t)};return Di(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},Vi=(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},Ei=t=>{const r={...t};return Object.keys(r).forEach(n=>(r[n]===void 0||r[n]===null||r[n]==="")&&delete r[n]),r},Ii=t=>{const r={};return t.forEach(n=>{Array.isArray(n)&&n[0]?r[n[0]]=!0:r[n]=!0}),Object.keys(r)},Dt=(t,r)=>{const n=[...t],s=Ii(t);return r.forEach(o=>{Array.isArray(o)&&o[0]?s.includes(o[0])||n.push(o):s.includes(o)||n.push(o)}),n},vt=80,tn=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:S,setSorter:y,setCurrentItemIndex:m,setResultsActionView:w,resultsActionView:v,domain:_,currentId:k,limit:C,setLimit:V,searchParams:M=[],setSearchValues:L}=t,[b,T]=l.useState(!1),[F,x]=l.useState(!1),[N,I]=l.useState(),[O,E]=l.useState(1),[A,D]=l.useState(0),[B,$]=l.useState(),[W,J]=l.useState([]),[G,Z]=l.useState(void 0),[j,P]=l.useState(void 0),Y=l.useRef(C||vt),te=l.useRef([]),Q=l.useCallback(ae=>{w==null||w([...ae]),J([...ae])},[]),ie=l.useCallback(()=>v||W,[v,W]),ee=l.useCallback(async()=>{const ae=await K.getHandler().nameSearch({model:r,payload:c,limit:Y.current,attrs:_,context:d});if($(ae.length),h==null||h(ae.length),ae.length>0){const Se=ae.map(ce=>ce==null?void 0:ce[0]),{colors:Fe,status:Oe}=st(u),$e={};Fe&&($e.colors=Fe),Oe&&($e.status=Oe);const Ne=await K.getHandler().readEvalUiObjects({model:r,ids:Se,arch:u==null?void 0:u.arch,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d,attrs:$e}),re=Ne[0];te.current=[...re],Z(Ot(Ne[1])),P(qr(Ne[1]));const xe=re.map(ce=>ce.id),Me=S!==void 0?it({resultsToSort:re,sorter:S,fields:{...u.fields,...g.fields}}):[...te.current];Q(Me),xe.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,_,u,g,S,m,h]),X=l.useCallback(async ae=>{const{params:Se,newOffset:Fe}=ae||{},Oe=Dt(Se||M,_),{colors:$e,status:Ne}=st(u),re={};$e&&(re.colors=$e),Ne&&(re.status=Ne);const{totalItems:xe,results:Me,attrsEvaluated:ce}=await K.getHandler().searchForTree({params:Oe,limit:Y.current,offset:Fe||A,model:r,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d,attrs:re});Z(Ot(ce)),P(qr(ce)),te.current=[...Me];const fe=S!==void 0?it({resultsToSort:Me,sorter:S,fields:{...u.fields,...g.fields}}):[...te.current];if(Q(fe),v&&fe.length>0){const de=fe.findIndex(Ye=>k===Ye.id);de===-1?m==null||m(0):m==null||m(de)}else m==null||m(void 0);T(!1);const Ce=await xe;$(Ce),h==null||h(Ce)},[m,v,Q,k,r,d,_,u,g,S,h,C,A,M]),ue=l.useCallback(async ae=>{try{T(!0),a==null||a(!0),c&&!f.current?await ee():await X(ae)}catch(Se){I(Se.message)}finally{x(!1),a==null||a(!1)}},[d,k,_,g,C,r,c,A,v,f,h,m,Q,I,x,T,a,S,u]),we=l.useCallback(ae=>{y==null||y(ae);const Se=ae!==void 0?it({resultsToSort:ie(),sorter:ae,fields:{...u.fields,...g.fields}}):[...te.current];Q(Se)},[y,ie,u,g,Q]),Ee=l.useCallback(ae=>{const{params:Se,searchValues:Fe,limit:Oe,offset:$e}=ae;b||(n==null||n(void 0),s==null||s([]),L==null||L(Fe),o==null||o(Se),i==null||i(!1),x(!0),I(void 0),E(1),Oe&&(Y.current=Oe,V==null||V(Oe)),$e&&D($e),ue({params:Se,newOffset:$e}))},[b,n,s,o,i,x,I,E,V,D,ue]),Te=l.useCallback(ae=>{T(!0),E(ae),D((ae-1)*C)},[T,C,D,E]),Ie=l.useCallback(()=>{b||(n==null||n(void 0),o==null||o([]),L==null||L({}),I(void 0),D(0),E(1),V==null||V(C||vt))},[b,n,o,I,D,E,V,C]),me=l.useCallback(async ae=>{const Se=ae[(u==null?void 0:u.field_parent)||"child_id"],Fe=await K.getHandler().readObjects({model:r,ids:Se,fields:u.field_parent?{...u.fields,[u.field_parent]:{}}:u.fields,context:d});return Q([...ie(),...Fe]),Wr(st(u),Fe)},[u,r,d,ie,Q]);return{submit:Ee,clear:Ie,fetchResults:ue,tableRefreshing:b,searchFilterLoading:F,searchError:N,page:O,offset:A,limit:C,getResults:ie,requestPageChange:Te,changeSort:we,fetchChildrenForRecord:me,colorsForResults:G,statusForResults:j,totalItems:B}},Ke=He.default.createContext(null),$i=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:S,setCurrentItemIndex:y,currentModel:m,sorter:w,setSorter:v,totalItems:_,setTotalItems:k,setSelectedRowItems:C,selectedRowItems:V,searchTreeNameSearch:M,setSearchTreeNameSearch:L,goToResourceId:b,limit:T}=t,[F,x]=l.useState(!1),[N,I]=l.useState(!1),[O,E]=l.useState(!1),[A,D]=l.useState(!0),[B,$]=l.useState(!0),[W,J]=l.useState([]),[G,Z]=l.useState(!1),[j,P]=l.useState([]),[Y,te]=l.useState(!1),[Q,ie]=l.useState(!0),[ee,X]=l.useState(),[ue,we]=l.useState({}),[Ee,Te]=l.useState(T!==void 0?T:vt),[Ie,me]=l.useState(s);l.useEffect(()=>{g&&g.length>0&&!S&&(y==null||y(0),h==null||h(g[0].id))},[g]),l.useEffect(()=>{Te(T!==void 0?T:vt)},[T]),l.useEffect(()=>{i.length===1?X(i[0]):i.length>1&&X(i.filter(Se=>Se.view_id!==n.view_id)[0])},[i]),l.useEffect(()=>{(ee==null?void 0:ee.view_id)===n.view_id&&i.length>1&&X(i.filter(Se=>Se.view_id!==n.view_id)[0])},[n]);const ae=async()=>{var Se;return await((Se=a.current)==null?void 0:Se.submitForm())};return e.jsx(Ke.Provider,{value:{title:Ie,currentView:n,setCurrentView:o,availableViews:i,formIsSaving:F,setFormIsSaving:x,formHasChanges:N,setFormHasChanges:I,formRef:a,searchTreeRef:c,onFormSave:ae,onNewClicked:f,currentId:d,setCurrentId:h,currentItemIndex:S,setCurrentItemIndex:y,results:g,setResults:u,currentModel:m,removingItem:O,setRemovingItem:E,formIsLoading:A,setFormIsLoading:D,treeIsLoading:B,setTreeIsLoading:$,attachments:W,setAttachments:J,selectedRowItems:V,setSelectedRowItems:C,duplicatingItem:G,setDuplicatingItem:Z,setSearchParams:P,searchParams:j,searchVisible:Y,setSearchVisible:te,sorter:w,setSorter:v,totalItems:_,setTotalItems:k,searchTreeNameSearch:M,setSearchTreeNameSearch:L,setGraphIsLoading:ie,graphIsLoading:Q,previousView:ee,setPreviousView:X,goToResourceId:b,searchValues:ue,setSearchValues:we,limit:Ee,setLimit:Te,setTitle:me},children:r})},je=He.default.createContext(null),Ai=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,S]=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:S,setCurrentView:u},children:r})},ct=He.default.createContext(null),rn=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))},Li=(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(pe);l.useImperativeHandle(r,()=>({openActionModal:C}));const[g,S]=l.useState(!1),[y,m]=l.useState({context:{}});async function w(L){const{reportData:b,fields:T,values:F,context:x={}}=L,{context:N,model:I,datas:O={},report_name:E,type:A}=b;if(A!=="ir.actions.report.xml"){Le(`${A} action not supported`);return}const{ids:D}=O||{};let B=D||[];const $=typeof N=="string"?se.parseContext({context:N,fields:T,values:F}):N;try{const W=await K.getHandler().createReport({model:I,name:E,datas:O,ids:B,context:{...x,...$}});c(!0),i.current=!0,o.current=setInterval(()=>{v(W)},1e3)}catch(W){i.current=!1,clearInterval(o.current),Le(W),c(!1)}}async function v(L){let b;try{if(b=await K.getHandler().getReport({id:L}),b.state&&i.current===!0){i.current=!1,clearInterval(o.current),c(!1);const T=await ot(b.result);Ft(b.result,T.mime)}}catch(T){i.current=!1,clearInterval(o.current),c(!1),Le(T.exception||T)}}async function _({actionData:L,fields:b,values:T,context:F,onRefreshParentValues:x}){const{type:N}=L;return h.current.push(x),N==="ir.actions.report.xml"?await w({reportData:L,fields:b,values:T,context:F}):N==="ir.actions.act_window"?await k({actionData:L,fields:b,values:T,context:F}):(Le(`${N} action not supported`),{})}async function k({actionData:L,fields:b={},values:T={},context:F={}}){var E;let x=L;L.res_model||(x=(await K.getHandler().readObjects({model:"ir.actions.act_window",ids:[parseInt(L.id)],context:F}))[0]);const I={...typeof(x==null?void 0:x.context)=="string"?se.parseContext({context:x.context,fields:b,values:{...T,...s}}):x.context,...F};let O=[];if(x.domain&&(O=await K.getHandler().evalDomain({domain:x.domain,values:lt({fields:b,values:{...T,...s}}),fields:b,context:I})),x.target==="new"){const A=await K.getHandler().getView({model:x.res_model,type:"form",id:((E=x==null?void 0:x.view_id)==null?void 0:E[0])||void 0,context:I});return C({domain:O,model:x.res_model,formView:A,context:I}),{}}else{const{initialView:A,views:D}=await Ni({model:x.res_model,context:I,view_mode:x.view_mode,views:x.views});return d==null||d({target:"current",context:I,domain:O,model:x.res_model,views:D,title:x.name,initialView:A,action_id:x.id,action_type:x.type}),{closeParent:!0}}}function C({domain:L,model:b,formView:T,context:F,actionData:x}){g?V({domain:L,model:b,formView:T,context:F,actionData:x}):(m({domain:L,model:b,context:F,formView:T,actionData:x}),S(!0))}async function V({domain:L,model:b,formView:T,context:F,actionData:x}){m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0}),S(!1),await new Promise(N=>setTimeout(N,300)),m({domain:L,model:b,context:F,formView:T,actionData:x}),S(!0)}async function M(){rn(h.current),h.current=[],S(!1),m({domain:void 0,model:void 0,context:{},formView:void 0,actionData:void 0})}return e.jsx(e.Fragment,{children:e.jsx(ct.Provider,{value:{processAction:_,globalValues:s},children:e.jsxs(e.Fragment,{children:[n,e.jsx(p.Modal,{title:u("generatingReport"),open:a,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(p.Spin,{})}),e.jsx(ut,{buttonModal:!0,parentContext:y.context,model:y.model,formView:y.formView,visible:g,onSubmitSucceed:M,onCancel:()=>{rn(h.current),h.current=[],S(!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 Ni({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 nn=l.forwardRef(Li),Pi=({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}=Fr(t);n=e.jsx(Ht.Interweave,{content:`${a}<br />${o}`}),s=i}else n=t.message?JSON.stringify(t.message):JSON.stringify(t);return e.jsx(p.Alert,{className:r,message:n,type:s,banner:!0})},Hi=800;function Ki(t,r){const{model:n,id:s,onCancel:o,onSubmitSucceed:i,showFooter:a=!1,getDataFromAction:c=!1,onFieldsChange:u,onSubmitError:d,readOnly:h=!1,mustClearAfterSave:f=!1,submitMode:g="api",values:S,formView:y,postSaveAction:m,insideButtonModal:w=!1,parentContext:v={},actionDomain:_,visible:k=!0,rootForm:C=!1,defaultValues:V,forcedValues:M={},parentWidth:L}=t,{t:b,lang:T}=l.useContext(pe),[F,x]=l.useState(!1),[N,I]=l.useState(),[O,E]=l.useState(),[$]=p.Form.useForm(),[D,B]=l.useState(),[A,W]=l.useState(),J=l.useContext(Zr),[U,Z]=l.useState(),[j,P]=l.useState(!1),Y=l.useRef(),te=l.useRef({}),Q=l.useRef({}),ie=l.useRef(!1),ee=l.useRef(!1),ue=(L!==void 0?L:U)<Hi,we=l.useContext(Ve),{activeId:Ee,getPlainValues:Te}=we||{},Ie=l.useContext(Ke),{setFormIsSaving:me=void 0,setFormHasChanges:ae=void 0,setCurrentId:Se=void 0,setFormIsLoading:Fe=void 0,setAttachments:Oe=void 0,title:Ae=void 0,setTitle:Ne=void 0}=(C?Ie:{})||{},re=l.useContext(ct),{processAction:xe,globalValues:Me}=re||{};l.useImperativeHandle(r,()=>({submitForm:Pt,getFields:Ye,getValues:$e,getPlainValues:Xe,getContext:le,fetchValues:tt,cancelUnsavedChanges:ro,clearAndReload:()=>{Y.current=void 0,E(void 0),Re()}})),l.useEffect(()=>{if(I(void 0),!(!n&&!y)){if(!k){Y.current=void 0,E(void 0);return}(s===void 0&&A||s!==void 0&&A&&s<0)&&(Y.current=void 0,E(void 0)),Re()}},[s,n,S,y,k]),l.useEffect(()=>{j&&(ur({elementHasLostFocus:!0}),P(!1))},[j]);const ce=(q,z,ne)=>{ae==null||ae(!1),me==null||me(!1),i==null||i(q,z,ne),Se==null||Se(q)},fe=()=>{me==null||me(!1),o==null||o()},Ce=q=>{me==null||me(!1),d==null||d(q)};function de(){return s||Y.current}function Ye(){return A}function $e(){const q={...ve(A),..._e()};for(const z in q)q[z]===void 0&&delete q[z];return q}function Xe(){const q=$e(),z=Ye();let ne={};return Object.keys(q).forEach(oe=>{const De=q[oe];z[oe]&&z[oe].type==="many2one"&&De&&Array.isArray(De)&&De.length===2?ne[oe]=De[0]:z[oe]&&(z[oe].type==="one2many"||z[oe].type==="many2many")&&De&&De.items?ne[oe]=De.items.filter(rt=>rt.operation!=="pendingRemove").map(rt=>rt.id):ne[oe]=De}),ne}function R(){const q={...ve(A)};for(const z in q)q[z]===void 0&&delete q[z];return q}function le(){return{...v,...O==null?void 0:O.context}}function _e(){return{id:de(),active_id:de(),active_ids:[de()],parent_id:Ee,...Me}}const he=async q=>{const z=de()?O==null?void 0:O.context:{};return await K.getHandler().defaultGet({model:n,fields:q,context:{...v,...z},extraValues:V})},ye=()=>Object.keys(Jt({source:te.current,target:ve(A),fields:A})).length!==0,ve=q=>{const z=$.getFieldsValue(!0);return at(z,q)},ke=(q,z)=>{Nt({values:{...at($.getFieldsValue(!0),A),[q]:z},fields:A,reset:!1})},We=q=>$.getFieldsValue(!0)[q];async function Ue(){try{return await $.validateFields(),!1}catch{return p.message.error(b("fillRequiredFields")),!0}}const Re=async()=>{I(void 0),Fe==null||Fe(!0);let q;try{y?q={arch:y.arch,fields:y.fields}:q=await pc();const{fields:z,arch:ne}=q;W(z),B(ne),await tt({fields:z,arch:ne})}catch(z){I(z!=null&&z.message?z.message+z.stack:z),Fe==null||Fe(!1)}},tt=async q=>{let z,ne,oe,De;Fe==null||Fe(!0),I(void 0),q!=null&&q.fields?(ne=q.fields,oe=q.arch):(ne=A,oe=D),S&&(q==null?void 0:q.forceRefresh)!==!0?z=S:{values:z,defaultGetCalled:De}=await gc({fields:ne,arch:oe}),_&&(z={...di(_),...z}),te.current=at(z,ne),Nt({values:z,fields:ne,reset:!0,isDefaultGet:De}),Bt({fields:ne,arch:oe,values:z}),Fe==null||Fe(!1),ae==null||ae(!1),De&&P(!0)},ro=async()=>new Promise(async q=>{ye()?wt({lang:T,onOk:()=>{fe==null||fe(),q(!0)},onCancel:()=>{q(!1)}}):(fe==null||fe(),q(!0))}),pc=async()=>{if(c){const q=await K.getHandler().getActionStringForModel(n);return(await K.getHandler().getViewsForAction({action:q,context:v})).views.get("form")}return await K.getHandler().getView({model:n,type:"form",context:v})},Nt=({values:q,fields:z,reset:ne,isDefaultGet:oe=!1})=>{const rt={...ne?{}:$.getFieldsValue(!0),...q},fr=at(rt,z),Dc=Object.keys(z).map(hr=>{const kc=fr[hr]!==void 0?fr[hr]:void 0;return{name:hr,touched:!1,value:kc}});oe||(Q.current=fr),$.setFields(Dc)},gc=async({fields:q,arch:z})=>{let ne={},oe=!1;if(de()){ne=(await K.getHandler().readObjects({model:n,ids:[de()],fields:q,context:v}))[0];const De=await K.getHandler().search({params:[["res_model","=",n],["res_id","=",de()]],fields:["id","name"],context:le(),model:"ir.attachment"});Oe==null||Oe(De)}else Oe==null||Oe([]),ne=await he(q),oe=!0;return{values:ne,defaultGetCalled:oe}},mc=async q=>{const{callOnSubmitSucceed:z=!0}=q||{};if(de()){const ne=Jt({source:te.current,target:ve(A),fields:A});await K.getHandler().update({model:n,id:de(),values:{...ne,...M},fields:A,context:{...v,...O==null?void 0:O.context}}),te.current=ve(A)}else{const ne=ve(A),oe=await K.getHandler().create({model:n,values:{...ne,...M},fields:A,context:{...v,...O==null?void 0:O.context}});Y.current=oe,te.current=ne}m&&await m([de()]),!w&&z&&(ce==null||ce(de(),$e(),R()))},yc=async q=>{const{callOnSubmitSucceed:z=!0}=q||{};!w&&z&&(ce==null||ce(de(),$e(),R()))},Pt=async q=>{let z=!1;const{callOnSubmitSucceed:ne=!0}=q||{};if(ee.current=!0,I(void 0),!ye()&&de()&&ne)return ee.current=!1,ae==null||ae(!1),fe==null||fe(),{succeed:!0,id:de()};if(await Ue())return ee.current=!1,Jr(T),{succeed:!1,id:de()};x(!0),me==null||me(!0);try{g==="api"?await mc(q):await yc(q),f&&(Y.current=void 0,Nt({values:{},fields:A,reset:!0})),await tt({forceRefresh:!0}),z=!0,p.message.success(b("savedRegisters"))}catch(oe){ee.current=!1,x(!1),me==null||me(!1),Ce==null||Ce(oe),p.message.error(b("errorWhileSavingForm")),I(oe!=null&&oe.message?oe.message:oe)}finally{ee.current=!1,me==null||me(!1),x(!1)}return{succeed:z,id:de()}},Bt=({fields:q,arch:z,values:ne})=>{var De;const oe=new se.Form(q);oe.parse(z,{readOnly:h,values:ti({...ne,..._e()},q)}),E(oe),oe.string&&oe.string!==Ae&&(Ne==null||Ne(oe.string)),J&&oe.string&&((De=J.setTitle)==null||De.call(J,oe.string))},ur=async({elementHasLostFocus:q=!1})=>{if(ee.current)return;const z=Jt({source:Q.current,target:ve(A),fields:A}),ne=Object.keys(z);if(ne.length!==0){if(li({changedFields:ne,formOoui:O,types:["text","codeeditor","email","url","char","float","float_time","integer","many2one"]})&&q!==!0)return;{const oe=at($.getFieldsValue(!0),A);Q.current=oe,u==null||u(oe),ae==null||ae(!0),vc(ne)}}},wc=zs(ur,100),vc=async q=>{try{for(let z=0;z<q.length;z+=1){const ne=q[z];await Sc(ne)}}catch(z){Le(z)}},Sc=async q=>{const z=O==null?void 0:O.onChangeFields[q];if(!z){Bt({fields:A,arch:D,values:ve(A)});return}const ne=ui({values:{...ve(A),context:{...v,...O==null?void 0:O.context}},parentValues:Te==null?void 0:Te(),onChangeFieldActionArgs:z.args}),oe=await K.getHandler().executeOnChange({model:n,action:z.method,ids:de()?[de()]:[],payload:ne,fields:A});if(oe.value){const De={...ve(A),...oe.value};Bt({fields:A,arch:D,values:De}),Nt({values:De,fields:A,reset:!1})}if(oe.warning&&oe.warning.title&&oe.warning.message&&!ie.current){const{title:De,message:rt}=oe.warning;ie.current=!0,Fi(De,rt,()=>{ie.current=!1})}if(oe.domain&&Object.keys(oe.domain).length>0){const De=ci({fieldsDomain:oe.domain,fields:A});Bt({fields:De,arch:D,values:ve(De)}),W(De)}};async function Cc({action:q,context:z}){const ne=await K.getHandler().execute({model:n,action:q,payload:[de()],context:{...z,...O==null?void 0:O.context,...v}});if(typeof ne=="object"&&ne!==null&&Object.keys(ne).length===0&&w)ce==null||ce(de(),$e(),R());else if(ne.type&&ne.type==="ir.actions.act_window_close")ce==null||ce(de(),$e(),R());else if(ne.type){let oe={};ne.context&&(oe=se.parseContext({context:ne.context,fields:A,values:$e()})),await no({actionData:ne,context:{...z,...oe}})}else await tt({forceRefresh:!0})}async function bc({action:q}){const z=await K.getHandler().executeWorkflow({model:n,action:q,payload:de()});z.type&&z.type==="ir.actions.act_window_close"?ce==null||ce(de(),$e(),R()):await tt({forceRefresh:!0})}async function xc({action:q,context:z}){const ne=(await K.getHandler().readObjects({model:"ir.actions.actions",ids:[parseInt(q)],context:v}))[0];await no({actionData:ne,context:z})}async function no({actionData:q,context:z}){const{closeParent:ne}=await(xe==null?void 0:xe({actionData:q,fields:A,values:$e(),context:{...v,...O==null?void 0:O.context,...z},onRefreshParentValues:()=>{tt({forceRefresh:!0})}}))||{};!C&&ne&&(ce==null||ce(de(),$e(),R()))}function Tc(){ur({elementHasLostFocus:!0})}async function Fc({type:q,action:z,context:ne}){if(q==="cancel"){fe==null||fe();return}if(await Ue()){Jr(T);return}try{(ye()||de()===void 0)&&await Pt({callOnSubmitSucceed:!1}),q==="object"?await Cc({action:z,context:ne}):q==="workflow"?await bc({action:z}):q==="action"&&await xc({action:z,context:ne})}catch(oe){Le(oe)}}const Oc=()=>!O&&!N?e.jsx(p.Spin,{}):!n&&!y||!k?null:e.jsx(e.Fragment,{children:e.jsx(Eo,{getValues:$e,getPlainValues:Xe,getFields:Ye,domain:_,activeId:s,activeModel:n,setFieldValue:ke,getFieldValue:We,executeButtonAction:Fc,getContext:le,submitForm:Pt,fetchValues:tt,formHasChanges:ye,elementHasLostFocus:Tc,children:e.jsx(p.Form,{form:$,onFieldsChange:()=>{wc({elementHasLostFocus:!1})},component:!1,children:O&&e.jsx(Zt,{container:O.container,responsiveBehaviour:ue})})})}),_c=()=>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:F,onClick:async()=>{await ro()},children:"Cancel"}),e.jsx(p.Button,{disabled:F||h,loading:F,icon:e.jsx(H.CheckOutlined,{}),onClick:async()=>{await Pt()},type:"primary",children:"OK"})]})})]});return k?e.jsx(Yt.default,{bounds:!0,onResize:q=>{var z;Z((z=q.bounds)==null?void 0:z.width)},children:({measureRef:q})=>e.jsxs("div",{className:"pb-2",ref:q,children:[N&&e.jsx(Bi,{className:"mt-5 mb-10",error:N}),Oc(),a&&_c()]})}):null}const dt=l.forwardRef(Ki),ut=t=>{const{visible:r,id:n,title:s,buttonModal:o=!1,onCancel:i,isMenuAction:a=!1,actionData:c,...u}=t,{modalWidth:d}=Tt(),[h,f]=l.useState(s),[g,S]=l.useState(!1),[y,m]=l.useState();l.useEffect(()=>{a&&w()},[c,a]);async function w(){const{action_id:C,res_id:V,action_type:M,view_id:L}=c,b=await K.getHandler().isShortcutFavorite({action_id:C,action_type:M,view_id:L,res_id:V||!1});S(b!==!1),b!==!1&&m(b)}async function v(){if(g&&y)await K.getHandler().removeFavourite({shortcut_id:y});else{const{action_id:C,res_id:V,action_type:M,view_id:L}=c;await K.getHandler().addFavourite({action_id:C,action_type:M,view_id:L,res_id:V||!1})}S(!g)}function _(){return e.jsxs(p.Row,{align:"middle",children:[e.jsx(p.Col,{children:e.jsx(p.Button,{type:g?"primary":"default",icon:g?e.jsx(H.StarFilled,{style:{color:"white"}}):e.jsx(H.StarOutlined,{}),style:{width:30},onClick:v})}),e.jsx(p.Col,{style:{paddingLeft:10},children:h})]})}const k=d*.95;return e.jsx(Oi,{setTitle:f,children:e.jsx(p.Modal,{title:a?_():h,centered:!0,width:d,open:r,footer:null,destroyOnClose:!0,onCancel:i,maskClosable:!1,children:e.jsx(dt,{id:n,showFooter:!0,insideButtonModal:o,onCancel:i,parentWidth:k,...u})})})},Yi=t=>e.jsx(ge,{...t,layout:"vertical",children:e.jsx(p.DatePicker.RangePicker,{allowEmpty:[!0,!0],format:"DD/MM/YYYY"})}),Wi=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(mt,{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(ge,{...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(ge,{...t,ooui:i[1],showLabel:!1,children:e.jsx(p.TimePicker.RangePicker,{className:"w-60",allowEmpty:[!0,!0],format:"HH:mm"})})})]})]})},{useToken:qi}=p.theme,Xt=t=>{const{ooui:r}=t,{id:n,decimalDigits:s,readOnly:o,required:i}=r,{token:a}=qi(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,u=l.useContext(Ve),{elementHasLostFocus:d}=u||{};return e.jsx(ge,{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:Gi}=p.theme,St=t=>{const{ooui:r,onChange:n}=t,{id:s,readOnly:o,required:i}=r,{token:a}=Gi(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,u=l.useContext(Ve),{elementHasLostFocus:d}=u||{};return e.jsx(ge,{required:i,type:"number",...t,children:e.jsx(p.InputNumber,{id:s,className:"w-full ",disabled:o,formatter:h=>`${h}`.replace(/[^0-9\-]+/g,""),onChange:h=>{const f=h;n==null||n(f)},defaultValue:0,onBlur:d,precision:0,style:c})})};function Ui(t){const{ooui:r,showLabel:n}=t,{id:s,label:o,tooltip:i}=r,a=r instanceof se.Integer?St:Xt,c=u=>e.jsx(a,{ooui:{...r,id:s+u,label:"",tooltip:void 0},layout:"vertical"});return e.jsxs(e.Fragment,{children:[n&&e.jsx(mt,{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:ji,defaultSeed:zi}=p.theme,Ji=ji(zi),{Option:Zi}=p.Select,Xi=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,type:"any",...t,children:e.jsx(Qi,{...t})})},Qi=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,required:a}=r,c=Array.from(o.entries()),u=c&&c.length&&c.filter(f=>{const[g]=f;return s?!s.includes(g):!0}).map(f=>{const[g,S]=f;return e.jsx(Zi,{value:S,children:S},g)}),d=a&&!i?Ri:p.Select;function h(f){const g=f.map(S=>{const y=c.find(([m,w])=>S===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(f=>o.get(f)),mode:"multiple",showArrow:!0,children:u})},Ri=gt.default(p.Select)`
|
|
19
|
+
`)!==-1){const{message:o,type:i,title:a}=Or(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})},Bi=800;function Hi(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:S,formView:y,postSaveAction:m,insideButtonModal:w=!1,parentContext:v={},actionDomain:_,visible:k=!0,rootForm:C=!1,defaultValues:V,forcedValues:M={},parentWidth:L}=t,{t:b,lang:T}=l.useContext(pe),[F,x]=l.useState(!1),[N,I]=l.useState(),[O,E]=l.useState(),[A]=p.Form.useForm(),[D,B]=l.useState(),[$,W]=l.useState(),J=l.useContext(Rr),[G,Z]=l.useState(),[j,P]=l.useState(!1),Y=l.useRef(),te=l.useRef({}),Q=l.useRef({}),ie=l.useRef(!1),ee=l.useRef(!1),ue=(L!==void 0?L:G)<Bi,we=l.useContext(Ve),{activeId:Ee,getPlainValues:Te}=we||{},Ie=l.useContext(Ke),{setFormIsSaving:me=void 0,setFormHasChanges:ae=void 0,setCurrentId:Se=void 0,setFormIsLoading:Fe=void 0,setAttachments:Oe=void 0,title:$e=void 0,setTitle:Ne=void 0}=(C?Ie:{})||{},re=l.useContext(ct),{processAction:xe,globalValues:Me}=re||{};l.useImperativeHandle(r,()=>({submitForm:Pt,getFields:Ye,getValues:Ae,getPlainValues:Xe,getContext:le,fetchValues:tt,cancelUnsavedChanges:no,clearAndReload:()=>{Y.current=void 0,E(void 0),Re()}})),l.useEffect(()=>{if(I(void 0),!(!n&&!y)){if(!k){Y.current=void 0,E(void 0);return}(s===void 0&&$||s!==void 0&&$&&s<0)&&(Y.current=void 0,E(void 0)),Re()}},[s,n,S,y,k]),l.useEffect(()=>{j&&(ur({elementHasLostFocus:!0}),P(!1))},[j]);const ce=(q,z,ne)=>{ae==null||ae(!1),me==null||me(!1),i==null||i(q,z,ne),Se==null||Se(q)},fe=()=>{me==null||me(!1),o==null||o()},Ce=q=>{me==null||me(!1),d==null||d(q)};function de(){return s||Y.current}function Ye(){return $}function Ae(){const q={...ve($),..._e()};for(const z in q)q[z]===void 0&&delete q[z];return q}function Xe(){const q=Ae(),z=Ye();let ne={};return Object.keys(q).forEach(oe=>{const De=q[oe];z[oe]&&z[oe].type==="many2one"&&De&&Array.isArray(De)&&De.length===2?ne[oe]=De[0]:z[oe]&&(z[oe].type==="one2many"||z[oe].type==="many2many")&&De&&De.items?ne[oe]=De.items.filter(rt=>rt.operation!=="pendingRemove").map(rt=>rt.id):ne[oe]=De}),ne}function R(){const q={...ve($)};for(const z in q)q[z]===void 0&&delete q[z];return q}function le(){return{...v,...O==null?void 0:O.context}}function _e(){return{id:de(),active_id:de(),active_ids:[de()],parent_id:Ee,...Me}}const he=async q=>{const z=de()?O==null?void 0:O.context:{};return await K.getHandler().defaultGet({model:n,fields:q,context:{...v,...z},extraValues:V})},ye=()=>Object.keys(Jt({source:te.current,target:ve($),fields:$})).length!==0,ve=q=>{const z=A.getFieldsValue(!0);return at(z,q)},ke=(q,z)=>{Nt({values:{...at(A.getFieldsValue(!0),$),[q]:z},fields:$,reset:!1})},We=q=>A.getFieldsValue(!0)[q];async function Ge(){try{return await A.validateFields(),!1}catch{return p.message.error(b("fillRequiredFields")),!0}}const Re=async()=>{I(void 0),Fe==null||Fe(!0);let q;try{y?q={arch:y.arch,fields:y.fields}:q=await hc();const{fields:z,arch:ne}=q;W(z),B(ne),await tt({fields:z,arch:ne})}catch(z){I(z!=null&&z.message?z.message+z.stack:z),Fe==null||Fe(!1)}},tt=async q=>{let z,ne,oe,De;Fe==null||Fe(!0),I(void 0),q!=null&&q.fields?(ne=q.fields,oe=q.arch):(ne=$,oe=D),S&&(q==null?void 0:q.forceRefresh)!==!0?z=S:{values:z,defaultGetCalled:De}=await pc({fields:ne,arch:oe}),_&&(z={...di(_),...z}),te.current=at(z,ne),Nt({values:z,fields:ne,reset:!0,isDefaultGet:De}),Bt({fields:ne,arch:oe,values:z}),Fe==null||Fe(!1),ae==null||ae(!1),De&&P(!0)},no=async()=>new Promise(async q=>{ye()?wt({lang:T,onOk:()=>{fe==null||fe(),q(!0)},onCancel:()=>{q(!1)}}):(fe==null||fe(),q(!0))}),hc=async()=>{if(c){const q=await K.getHandler().getActionStringForModel(n);return(await K.getHandler().getViewsForAction({action:q,context:v})).views.get("form")}return await K.getHandler().getView({model:n,type:"form",context:v})},Nt=({values:q,fields:z,reset:ne,isDefaultGet:oe=!1})=>{const rt={...ne?{}:A.getFieldsValue(!0),...q},fr=at(rt,z),_c=Object.keys(z).map(hr=>{const Dc=fr[hr]!==void 0?fr[hr]:void 0;return{name:hr,touched:!1,value:Dc}});oe||(Q.current=fr),A.setFields(_c)},pc=async({fields:q,arch:z})=>{let ne={},oe=!1;if(de()){ne=(await K.getHandler().readObjects({model:n,ids:[de()],fields:q,context:v}))[0];const De=await K.getHandler().search({params:[["res_model","=",n],["res_id","=",de()]],fields:["id","name"],context:le(),model:"ir.attachment"});Oe==null||Oe(De)}else Oe==null||Oe([]),ne=await he(q),oe=!0;return{values:ne,defaultGetCalled:oe}},gc=async q=>{const{callOnSubmitSucceed:z=!0}=q||{};if(de()){const ne=Jt({source:te.current,target:ve($),fields:$});await K.getHandler().update({model:n,id:de(),values:{...ne,...M},fields:$,context:{...v,...O==null?void 0:O.context}}),te.current=ve($)}else{const ne=ve($),oe=await K.getHandler().create({model:n,values:{...ne,...M},fields:$,context:{...v,...O==null?void 0:O.context}});Y.current=oe,te.current=ne}m&&await m([de()]),!w&&z&&(ce==null||ce(de(),Ae(),R()))},mc=async q=>{const{callOnSubmitSucceed:z=!0}=q||{};!w&&z&&(ce==null||ce(de(),Ae(),R()))},Pt=async q=>{let z=!1;const{callOnSubmitSucceed:ne=!0}=q||{};if(ee.current=!0,I(void 0),!ye()&&de()&&ne)return ee.current=!1,ae==null||ae(!1),fe==null||fe(),{succeed:!0,id:de()};if(await Ge())return ee.current=!1,Qr(T),{succeed:!1,id:de()};x(!0),me==null||me(!0);try{g==="api"?await gc(q):await mc(q),u&&(Y.current=void 0,Nt({values:{},fields:$,reset:!0})),await tt({forceRefresh:!0}),z=!0,p.message.success(b("savedRegisters"))}catch(oe){ee.current=!1,x(!1),me==null||me(!1),Ce==null||Ce(oe),p.message.error(b("errorWhileSavingForm")),I(oe!=null&&oe.message?oe.message:oe)}finally{ee.current=!1,me==null||me(!1),x(!1)}return{succeed:z,id:de()}},Bt=({fields:q,arch:z,values:ne})=>{var De;const oe=new se.Form(q);oe.parse(z,{readOnly:h,values:ti({...ne,..._e()},q)}),E(oe),oe.string&&oe.string!==$e&&(Ne==null||Ne(oe.string)),J&&oe.string&&((De=J.setTitle)==null||De.call(J,oe.string))},ur=async({elementHasLostFocus:q=!1})=>{if(ee.current)return;const z=Jt({source:Q.current,target:ve($),fields:$}),ne=Object.keys(z);if(ne.length!==0){if(li({changedFields:ne,formOoui:O,types:["text","codeeditor","email","url","char","float","float_time","integer","many2one"]})&&q!==!0)return;{const oe=at(A.getFieldsValue(!0),$);Q.current=oe,f==null||f(oe),ae==null||ae(!0),wc(ne)}}},yc=zs(ur,100),wc=async q=>{try{for(let z=0;z<q.length;z+=1){const ne=q[z];await vc(ne)}}catch(z){Le(z)}},vc=async q=>{const z=O==null?void 0:O.onChangeFields[q];if(!z){Bt({fields:$,arch:D,values:ve($)});return}const ne=ui({values:{...ve($),context:{...v,...O==null?void 0:O.context}},parentValues:Te==null?void 0:Te(),onChangeFieldActionArgs:z.args}),oe=await K.getHandler().executeOnChange({model:n,action:z.method,ids:de()?[de()]:[],payload:ne,fields:$});if(oe.value){const De={...ve($),...oe.value};Bt({fields:$,arch:D,values:De}),Nt({values:De,fields:$,reset:!1})}if(oe.warning&&oe.warning.title&&oe.warning.message&&!ie.current){const{title:De,message:rt}=oe.warning;ie.current=!0,Ti(De,rt,()=>{ie.current=!1})}if(oe.domain&&Object.keys(oe.domain).length>0){const De=ci({fieldsDomain:oe.domain,fields:$});Bt({fields:De,arch:D,values:ve(De)}),W(De)}};async function Sc({action:q,context:z}){const ne=await K.getHandler().execute({model:n,action:q,payload:[de()],context:{...z,...O==null?void 0:O.context,...v}});if(typeof ne=="object"&&ne!==null&&Object.keys(ne).length===0&&w)ce==null||ce(de(),Ae(),R());else if(ne.type&&ne.type==="ir.actions.act_window_close")ce==null||ce(de(),Ae(),R());else if(ne.type){let oe={};ne.context&&(oe=se.parseContext({context:ne.context,fields:$,values:Ae()})),await oo({actionData:ne,context:{...z,...oe}})}else await tt({forceRefresh:!0})}async function Cc({action:q}){const z=await K.getHandler().executeWorkflow({model:n,action:q,payload:de()});z.type&&z.type==="ir.actions.act_window_close"?ce==null||ce(de(),Ae(),R()):await tt({forceRefresh:!0})}async function bc({action:q,context:z}){const ne=(await K.getHandler().readObjects({model:"ir.actions.actions",ids:[parseInt(q)],context:v}))[0];await oo({actionData:ne,context:z})}async function oo({actionData:q,context:z}){const{closeParent:ne}=await(xe==null?void 0:xe({actionData:q,fields:$,values:Ae(),context:{...v,...O==null?void 0:O.context,...z},onRefreshParentValues:()=>{tt({forceRefresh:!0})}}))||{};!C&&ne&&(ce==null||ce(de(),Ae(),R()))}function xc(){ur({elementHasLostFocus:!0})}async function Tc({type:q,action:z,context:ne}){if(q==="cancel"){fe==null||fe();return}if(await Ge()){Qr(T);return}try{(ye()||de()===void 0)&&await Pt({callOnSubmitSucceed:!1}),q==="object"?await Sc({action:z,context:ne}):q==="workflow"?await Cc({action:z}):q==="action"&&await bc({action:z,context:ne})}catch(oe){Le(oe)}}const Fc=()=>!O&&!N?e.jsx(p.Spin,{}):!n&&!y||!k?null:e.jsx(e.Fragment,{children:e.jsx(Eo,{getValues:Ae,getPlainValues:Xe,getFields:Ye,domain:_,activeId:s,activeModel:n,setFieldValue:ke,getFieldValue:We,executeButtonAction:Tc,getContext:le,submitForm:Pt,fetchValues:tt,formHasChanges:ye,elementHasLostFocus:xc,children:e.jsx(p.Form,{form:A,onFieldsChange:()=>{yc({elementHasLostFocus:!1})},component:!1,children:O&&e.jsx(Zt,{container:O.container,responsiveBehaviour:ue})})})}),Oc=()=>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:F,onClick:async()=>{await no()},children:"Cancel"}),e.jsx(p.Button,{disabled:F||h,loading:F,icon:e.jsx(H.CheckOutlined,{}),onClick:async()=>{await Pt()},type:"primary",children:"OK"})]})})]});return k?e.jsx(Yt.default,{bounds:!0,onResize:q=>{var z;Z((z=q.bounds)==null?void 0:z.width)},children:({measureRef:q})=>e.jsxs("div",{className:"pb-2",ref:q,children:[N&&e.jsx(Pi,{className:"mt-5 mb-10",error:N}),Fc(),a&&Oc()]})}):null}const dt=l.forwardRef(Hi),ut=t=>{const{visible:r,id:n,title:s,buttonModal:o=!1,onCancel:i,isMenuAction:a=!1,actionData:c,...f}=t,{modalWidth:d}=Tt(),[h,u]=l.useState(s),[g,S]=l.useState(!1),[y,m]=l.useState();l.useEffect(()=>{a&&w()},[c,a]);async function w(){const{action_id:C,res_id:V,action_type:M,view_id:L}=c,b=await K.getHandler().isShortcutFavorite({action_id:C,action_type:M,view_id:L,res_id:V||!1});S(b!==!1),b!==!1&&m(b)}async function v(){if(g&&y)await K.getHandler().removeFavourite({shortcut_id:y});else{const{action_id:C,res_id:V,action_type:M,view_id:L}=c;await K.getHandler().addFavourite({action_id:C,action_type:M,view_id:L,res_id:V||!1})}S(!g)}function _(){return e.jsxs(p.Row,{align:"middle",children:[e.jsx(p.Col,{children:e.jsx(p.Button,{type:g?"primary":"default",icon:g?e.jsx(H.StarFilled,{style:{color:"white"}}):e.jsx(H.StarOutlined,{}),style:{width:30},onClick:v})}),e.jsx(p.Col,{style:{paddingLeft:10},children:h})]})}const k=d*.95;return e.jsx(Fi,{setTitle:u,children:e.jsx(p.Modal,{title:a?_():h,centered:!0,width:d,open:r,footer:null,destroyOnClose:!0,onCancel:i,maskClosable:!1,children:e.jsx(dt,{id:n,showFooter:!0,insideButtonModal:o,onCancel:i,parentWidth:k,...f})})})},Ki=t=>e.jsx(ge,{...t,layout:"vertical",children:e.jsx(p.DatePicker.RangePicker,{allowEmpty:[!0,!0],format:"DD/MM/YYYY"})}),Yi=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(mt,{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(ge,{...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(ge,{...t,ooui:i[1],showLabel:!1,children:e.jsx(p.TimePicker.RangePicker,{className:"w-60",allowEmpty:[!0,!0],format:"HH:mm"})})})]})]})},{useToken:Wi}=p.theme,Xt=t=>{const{ooui:r}=t,{id:n,decimalDigits:s,readOnly:o,required:i}=r,{token:a}=Wi(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,f=l.useContext(Ve),{elementHasLostFocus:d}=f||{};return e.jsx(ge,{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:qi}=p.theme,St=t=>{const{ooui:r,onChange:n}=t,{id:s,readOnly:o,required:i}=r,{token:a}=qi(),c=i&&!o?{backgroundColor:a.colorPrimaryBg}:void 0,f=l.useContext(Ve),{elementHasLostFocus:d}=f||{};return e.jsx(ge,{required:i,type:"number",...t,children:e.jsx(p.InputNumber,{id:s,className:"w-full ",disabled:o,formatter:h=>`${h}`.replace(/[^0-9\-]+/g,""),onChange:h=>{const u=h;n==null||n(u)},defaultValue:0,onBlur:d,precision:0,style:c})})};function Ui(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(mt,{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:Gi,defaultSeed:ji}=p.theme,zi=Gi(ji),{Option:Ji}=p.Select,Zi=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,type:"any",...t,children:e.jsx(Xi,{...t})})},Xi=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,S]=u;return e.jsx(Ji,{value:S,children:S},g)}),d=a&&!i?Qi:p.Select;function h(u){const g=u.map(S=>{const y=c.find(([m,w])=>S===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})},Qi=gt.default(p.Select)`
|
|
20
20
|
&.ant-select:not(.ant-select-customize-input) .ant-select-selector {
|
|
21
|
-
background-color: ${
|
|
21
|
+
background-color: ${zi.colorPrimaryBg};
|
|
22
22
|
}
|
|
23
|
-
`;function
|
|
23
|
+
`;function Ri(t){const{field:r}=t;r.readOnly=!1,r.required=!1;const{t:n}=l.useContext(pe);switch(r.type){case se.SearchFieldTypes.boolean:{const o=new se.Selection({name:r._id,string:r.label,selection:[["true",n("true")],["false",n("false")]]});return e.jsx(Gt,{layout:"vertical",ooui:o,showLabel:!0})}case se.SearchFieldTypes.float:case se.SearchFieldTypes.progressbar:case se.SearchFieldTypes.float_time:case se.SearchFieldTypes.integer:return e.jsx(Ui,{ooui:r,showLabel:!0});case se.SearchFieldTypes.date:return e.jsx(Ki,{ooui:r,layout:"vertical",showLabel:!0});case se.SearchFieldTypes.datetime:return e.jsx(Yi,{ooui:r,layout:"vertical",showLabel:!0});case se.SearchFieldTypes.selection:return e.jsx(Zi,{layout:"vertical",ooui:r,showLabel:!0});default:return e.jsx(Ut,{ooui:r,layout:"vertical",showLabel:!0,isSearchField:!0})}}function ea(t){const{onAdvancedFilterToggle:r,advancedFilter:n,onClear:s,isSearching:o}=t,{t:i}=l.useContext(pe);return e.jsxs(p.Row,{children:[e.jsx(p.Col,{span:12,className:"text-left pt-4 pb-2 pl-2",children:e.jsxs("a",{className:"text-xs",onClick:r,children:[n?e.jsx(H.UpOutlined,{className:"pr-1"}):e.jsx(H.DownOutlined,{className:"pr-1"}),i(n?"simple_search":"advanced_search")]})}),e.jsxs(p.Col,{span:12,className:"text-right pb-2",children:[e.jsx(p.Button,{className:"mr-5",icon:e.jsx(H.ClearOutlined,{}),onClick:s,children:i("clear")}),e.jsx(p.Button,{icon:e.jsx(H.SearchOutlined,{}),loading:o,className:"mr-2",type:"primary",htmlType:"submit",children:i("search")})]})]})}function ta(t){const{onLimitChange:r}=t,{t:n}=l.useContext(pe),s=new se.Integer({name:"limit"}),o=new se.Integer({name:"offset"});return e.jsxs("div",{className:"pl-2 pt-2",children:[e.jsx(p.Row,{children:n("parameters")},"count_params"),e.jsxs(p.Space,{align:"center",children:[n("limit")+" :",e.jsx(St,{ooui:s,onChange:i=>{r==null||r(i)}}),n("first")+" :",e.jsx(St,{ooui:o})]})]})}const{useToken:ra}=p.theme;function Qt(t){const{fields:r,searchFields:n={primary:[],secondary:[]},onClear:s,onSubmit:o,isSearching:i,offset:a,limit:c,onLimitChange:f,searchVisible:d,setSearchFilterHeight:h,searchError:u,searchValues:g,showLimitOptions:S=!0,formXml:y}=t,[m,w]=l.useState(),[v,_]=l.useState(),[k,C]=l.useState(!1),V=l.useRef(),{token:M}=ra(),[L]=p.Form.useForm();l.useEffect(()=>{L.setFieldsValue(g)},[g]);const b=()=>{if(!v)return;const x=k?v:m,N=x==null?void 0:x.rows;return N==null?void 0:N.map((I,O)=>e.jsx(p.Row,{children:I.map((E,A)=>e.jsx(p.Col,{xs:24,className:"p-2",xl:6,children:e.jsx(Ri,{field:E})},A))},O))};et.default(()=>{C(!1),V.current=new se.SearchFilter(n,r,y),V.current.parse(),w(V.current._simpleSearchContainer),_(V.current._advancedSearchContainer)},[r,n]);const T=b(),F=x=>{var E;const{limit:N,offset:I}=x;delete x.offset,delete x.limit;const O=Oi(x,(E=V.current)==null?void 0:E._advancedSearchContainer);o({params:O,offset:I,limit:N,searchValues:x})};return e.jsx(Yt.default,{bounds:!0,onResize:x=>{var N;h==null||h((N=x.bounds)==null?void 0:N.height)},children:({measureRef:x})=>e.jsx("div",{ref:x,children:e.jsxs("div",{style:{display:d?"block":"none"},children:[e.jsxs(p.Form,{className:"p-3 shadow-md",style:{borderRadius:M.borderRadius},form:L,onFinish:F,initialValues:{offset:a,limit:c},children:[T,k&&S&&e.jsx(ta,{onLimitChange:f}),e.jsx(ea,{advancedFilter:k,onAdvancedFilterToggle:()=>{C(!k)},onClear:()=>{L.resetFields(),s()},isSearching:i})]}),u&&e.jsx(p.Alert,{className:"mt-10",message:u,type:"error",banner:!0}),e.jsx("div",{className:"pb-5"})]})})})}const on=(t,r="14px -apple-system")=>{const s=document.createElement("canvas").getContext("2d");s.font=r;const o=s.measureText(t);return Math.round((o.width+80)*1.5)},na=(t,r,n=500)=>{if(t.length===0)return t;const s=t.map(i=>Object.assign(i,{width:on(i.title)}));r.map(i=>{s.map((a,c)=>{const f=a.width,d=i[a.key]||"";let h=on(d);h<f&&(h=f),h>n&&(h=n),s[c].width=h})});const o=s.map(i=>i.width).reduce((i,a)=>i+a);return{columns:s,source:r,tableWidth:o}};function oa(t){if(!!t)try{if(t.includes(":")){const r=t.trim().split(":");return Math.round((parseInt(r[0])+parseInt(r[1])/60)*1e4)/1e4}else return parseFloat(t.trim())}catch{return 0}}function sn(t){if(t===void 0)return;let r,n=Math.floor(Math.abs(t)),s=Math.round(Math.abs(t)%1*100)/100;s>=1?(n=n+1,s=0):s=s*60;const o=n.toLocaleString("en-US",{minimumIntegerDigits:2,maximumFractionDigits:0,useGrouping:!1}),i=s.toLocaleString("en-US",{minimumIntegerDigits:2,maximumFractionDigits:0,useGrouping:!1});return r=`${o}:${i}`,t<0&&(r="-"+r),r}const an=t=>e.jsx(ge,{...t,children:e.jsx(ln,{})}),ln=({value:t})=>{const r=`${(t||0).toLocaleString("en-US",{minimumIntegerDigits:1,maximumFractionDigits:4,useGrouping:!1})}%`;return e.jsxs("div",{style:{flex:1,display:"flex",alignItems:"center"},children:[e.jsx(sa,{percent:t}),e.jsx("div",{style:{flexGrow:1,paddingLeft:10},children:r})]})},sa=gt.default(p.Progress)`
|
|
24
24
|
.ant-progress-outer {
|
|
25
25
|
margin-right: 0px;
|
|
26
26
|
padding-right: 0px;
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
.ant-progress-text {
|
|
29
29
|
display: none;
|
|
30
30
|
}
|
|
31
|
-
`,sn=t=>{const{visible:r,onCancel:n,items:s=[],onItemClicked:o}=t,{t:i}=l.useContext(pe);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 b,T;const{id:r,model:n,context:s={}}=t,[o,i]=l.useState(!1),[a,c]=l.useState(!1),[u,d]=l.useState(!1),[h,f]=l.useState(),[g,S]=l.useState(),{t:y}=l.useContext(pe),m=l.useContext(je),{openRelate:w}=m||{},v=l.useContext(ct),{processAction:_}=v||{};if(!r)return null;async function k(){d(!0);try{const F=await K.getHandler().getView({model:n,type:"form",context:s});f(F);const{fields:x,arch:N}=F,I=(await K.getHandler().readObjects({model:n,ids:[r],fields:x,context:s}))[0];S({...at(I,x),active_id:r}),d(!1)}catch(F){d(!1),Le(F);return}}function C(){var x;if(u)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 F=(x=h==null?void 0:h.toolbar)==null?void 0:x.relate.map(N=>e.jsx(p.Menu.Item,{children:N.name},N.id));return e.jsx(p.Menu,{onClick:V,children:[e.jsx(p.Menu.Item,{disabled:!h.toolbar.action||h.toolbar.action.length===0,icon:e.jsx(H.ThunderboltOutlined,{}),children:y("action")},"action"),e.jsx(p.Menu.Item,{disabled:!h.toolbar.print||h.toolbar.print.length===0,icon:e.jsx(H.PrinterOutlined,{}),children:y("report")},"print"),e.jsx(p.Menu.Divider,{}),e.jsx(p.Menu.ItemGroup,{title:e.jsxs(e.Fragment,{children:[e.jsx(H.EnterOutlined,{})," ",e.jsxs("span",{children:[" ",y("related")]})]}),children:F})]})}function V(F){if(F.key==="action")i(!0);else if(F.key==="print")c(!0);else{const x=h.toolbar.relate.find(N=>N.id===parseInt(F.key));if(!x)return;w({relateData:x,values:g,fields:h.fields,action_id:x.id,action_type:x.type})}}function M(F){i(!1),_==null||_({actionData:F,values:g,fields:h.fields,context:{active_id:r,active_ids:[r]}})}function L(F){c(!1),_==null||_({actionData:{...F,datas:{...F.datas||{},ids:[r]}},values:g,fields:h.fields})}return e.jsxs(e.Fragment,{children:[e.jsx(p.Dropdown,{overlay:C(),trigger:["click"],children:e.jsx(H.RightCircleOutlined,{style:{color:"rgba(0,0,0,.45)"},onClick:F=>{F.preventDefault(),k()}})}),e.jsx(sn,{visible:o,items:(b=h==null?void 0:h.toolbar)==null?void 0:b.action,onItemClicked:M,onCancel:()=>i(!1)}),e.jsx(sn,{visible:a,items:(T=h==null?void 0:h.toolbar)==null?void 0:T.print,onItemClicked:L,onCancel:()=>c(!1)})]})},aa=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,{})},la=t=>{const{value:r,context:n,selectionValues:s}=t,[o,i]=l.useState(),[a,c]=l.useState(!1),[u,d]=r?r.split(","):[],h=parseInt(d),f=l.useCallback(async()=>{if(!r||r&&o)return;c(!0);const S=await K.getHandler().execute({action:"name_get",payload:[h],model:u,context:n});i(S[0][1]),c(!1)},[r,o]);if(l.useEffect(()=>{f()},[r]),!r&&!a)return e.jsx(e.Fragment,{});if(a)return e.jsx(H.LoadingOutlined,{});const g=s.get(u);return e.jsxs(p.Space,{children:[e.jsx(e.Fragment,{children:`${g}:`}),e.jsx(e.Fragment,{children:o}),e.jsx(Rt,{id:h,model:u})]})};var an={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Qe,function(){var n=1e3,s=6e4,o=36e5,i="millisecond",a="second",c="minute",u="hour",d="day",h="week",f="month",g="quarter",S="year",y="date",m="Invalid Date",w=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,v=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,_={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(I){var O=["th","st","nd","rd"],E=I%100;return"["+I+(O[(E-20)%10]||O[E]||O[0])+"]"}},k=function(I,O,E){var $=String(I);return!$||$.length>=O?I:""+Array(O+1-$.length).join(E)+I},C={s:k,z:function(I){var O=-I.utcOffset(),E=Math.abs(O),$=Math.floor(E/60),D=E%60;return(O<=0?"+":"-")+k($,2,"0")+":"+k(D,2,"0")},m:function I(O,E){if(O.date()<E.date())return-I(E,O);var $=12*(E.year()-O.year())+(E.month()-O.month()),D=O.clone().add($,f),B=E-D<0,A=O.clone().add($+(B?-1:1),f);return+(-($+(E-D)/(B?D-A:A-D))||0)},a:function(I){return I<0?Math.ceil(I)||0:Math.floor(I)},p:function(I){return{M:f,y:S,w:h,d,D:y,h:u,m:c,s:a,ms:i,Q:g}[I]||String(I||"").toLowerCase().replace(/s$/,"")},u:function(I){return I===void 0}},V="en",M={};M[V]=_;var L=function(I){return I instanceof x},b=function I(O,E,$){var D;if(!O)return V;if(typeof O=="string"){var B=O.toLowerCase();M[B]&&(D=B),E&&(M[B]=E,D=B);var A=O.split("-");if(!D&&A.length>1)return I(A[0])}else{var W=O.name;M[W]=O,D=W}return!$&&D&&(V=D),D||!$&&V},T=function(I,O){if(L(I))return I.clone();var E=typeof O=="object"?O:{};return E.date=I,E.args=arguments,new x(E)},F=C;F.l=b,F.i=L,F.w=function(I,O){return T(I,{locale:O.$L,utc:O.$u,x:O.$x,$offset:O.$offset})};var x=function(){function I(E){this.$L=b(E.locale,null,!0),this.parse(E)}var O=I.prototype;return O.parse=function(E){this.$d=function($){var D=$.date,B=$.utc;if(D===null)return new Date(NaN);if(F.u(D))return new Date;if(D instanceof Date)return new Date(D);if(typeof D=="string"&&!/Z$/i.test(D)){var A=D.match(w);if(A){var W=A[2]-1||0,J=(A[7]||"0").substring(0,3);return B?new Date(Date.UTC(A[1],W,A[3]||1,A[4]||0,A[5]||0,A[6]||0,J)):new Date(A[1],W,A[3]||1,A[4]||0,A[5]||0,A[6]||0,J)}}return new Date(D)}(E),this.$x=E.x||{},this.init()},O.init=function(){var E=this.$d;this.$y=E.getFullYear(),this.$M=E.getMonth(),this.$D=E.getDate(),this.$W=E.getDay(),this.$H=E.getHours(),this.$m=E.getMinutes(),this.$s=E.getSeconds(),this.$ms=E.getMilliseconds()},O.$utils=function(){return F},O.isValid=function(){return this.$d.toString()!==m},O.isSame=function(E,$){var D=T(E);return this.startOf($)<=D&&D<=this.endOf($)},O.isAfter=function(E,$){return T(E)<this.startOf($)},O.isBefore=function(E,$){return this.endOf($)<T(E)},O.$g=function(E,$,D){return F.u(E)?this[$]:this.set(D,E)},O.unix=function(){return Math.floor(this.valueOf()/1e3)},O.valueOf=function(){return this.$d.getTime()},O.startOf=function(E,$){var D=this,B=!!F.u($)||$,A=F.p(E),W=function(Q,ie){var ee=F.w(D.$u?Date.UTC(D.$y,ie,Q):new Date(D.$y,ie,Q),D);return B?ee:ee.endOf(d)},J=function(Q,ie){return F.w(D.toDate()[Q].apply(D.toDate("s"),(B?[0,0,0,0]:[23,59,59,999]).slice(ie)),D)},U=this.$W,Z=this.$M,j=this.$D,P="set"+(this.$u?"UTC":"");switch(A){case S:return B?W(1,0):W(31,11);case f:return B?W(1,Z):W(0,Z+1);case h:var Y=this.$locale().weekStart||0,te=(U<Y?U+7:U)-Y;return W(B?j-te:j+(6-te),Z);case d:case y:return J(P+"Hours",0);case u:return J(P+"Minutes",1);case c:return J(P+"Seconds",2);case a:return J(P+"Milliseconds",3);default:return this.clone()}},O.endOf=function(E){return this.startOf(E,!1)},O.$set=function(E,$){var D,B=F.p(E),A="set"+(this.$u?"UTC":""),W=(D={},D[d]=A+"Date",D[y]=A+"Date",D[f]=A+"Month",D[S]=A+"FullYear",D[u]=A+"Hours",D[c]=A+"Minutes",D[a]=A+"Seconds",D[i]=A+"Milliseconds",D)[B],J=B===d?this.$D+($-this.$W):$;if(B===f||B===S){var U=this.clone().set(y,1);U.$d[W](J),U.init(),this.$d=U.set(y,Math.min(this.$D,U.daysInMonth())).$d}else W&&this.$d[W](J);return this.init(),this},O.set=function(E,$){return this.clone().$set(E,$)},O.get=function(E){return this[F.p(E)]()},O.add=function(E,$){var D,B=this;E=Number(E);var A=F.p($),W=function(Z){var j=T(B);return F.w(j.date(j.date()+Math.round(Z*E)),B)};if(A===f)return this.set(f,this.$M+E);if(A===S)return this.set(S,this.$y+E);if(A===d)return W(1);if(A===h)return W(7);var J=(D={},D[c]=s,D[u]=o,D[a]=n,D)[A]||1,U=this.$d.getTime()+E*J;return F.w(U,this)},O.subtract=function(E,$){return this.add(-1*E,$)},O.format=function(E){var $=this,D=this.$locale();if(!this.isValid())return D.invalidDate||m;var B=E||"YYYY-MM-DDTHH:mm:ssZ",A=F.z(this),W=this.$H,J=this.$m,U=this.$M,Z=D.weekdays,j=D.months,P=function(ie,ee,X,ue){return ie&&(ie[ee]||ie($,B))||X[ee].slice(0,ue)},Y=function(ie){return F.s(W%12||12,ie,"0")},te=D.meridiem||function(ie,ee,X){var ue=ie<12?"AM":"PM";return X?ue.toLowerCase():ue},Q={YY:String(this.$y).slice(-2),YYYY:F.s(this.$y,4,"0"),M:U+1,MM:F.s(U+1,2,"0"),MMM:P(D.monthsShort,U,j,3),MMMM:P(j,U),D:this.$D,DD:F.s(this.$D,2,"0"),d:String(this.$W),dd:P(D.weekdaysMin,this.$W,Z,2),ddd:P(D.weekdaysShort,this.$W,Z,3),dddd:Z[this.$W],H:String(W),HH:F.s(W,2,"0"),h:Y(1),hh:Y(2),a:te(W,J,!0),A:te(W,J,!1),m:String(J),mm:F.s(J,2,"0"),s:String(this.$s),ss:F.s(this.$s,2,"0"),SSS:F.s(this.$ms,3,"0"),Z:A};return B.replace(v,function(ie,ee){return ee||Q[ie]||A.replace(":","")})},O.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},O.diff=function(E,$,D){var B,A=F.p($),W=T(E),J=(W.utcOffset()-this.utcOffset())*s,U=this-W,Z=F.m(this,W);return Z=(B={},B[S]=Z/12,B[f]=Z,B[g]=Z/3,B[h]=(U-J)/6048e5,B[d]=(U-J)/864e5,B[u]=U/o,B[c]=U/s,B[a]=U/n,B)[A]||U,D?Z:F.a(Z)},O.daysInMonth=function(){return this.endOf(f).$D},O.$locale=function(){return M[this.$L]},O.locale=function(E,$){if(!E)return this.$L;var D=this.clone(),B=b(E,$,!0);return B&&(D.$L=B),D},O.clone=function(){return F.w(this.$d,this)},O.toDate=function(){return new Date(this.valueOf())},O.toJSON=function(){return this.isValid()?this.toISOString():null},O.toISOString=function(){return this.$d.toISOString()},O.toString=function(){return this.$d.toUTCString()},I}(),N=x.prototype;return T.prototype=N,[["$ms",i],["$s",a],["$m",c],["$H",u],["$W",d],["$M",f],["$y",S],["$D",y]].forEach(function(I){N[I[1]]=function(O){return this.$g(O,I[0],I[1])}}),T.extend=function(I,O){return I.$i||(I(O,x,T),I.$i=!0),T},T.locale=b,T.isDayjs=L,T.unix=function(I){return T(1e3*I)},T.en=M[V],T.Ls=M,T.p={},T})})(an);const Je=an.exports,ca=t=>{console.log("Avatar Props",t);const{ooui:r,value:n}=t;if(!n)return null;let s=n;r.selectionValues.size?s=r.selectionValues.get(n):Array.isArray(n)&&(s=n[1]);const o=s.toString().split(" ").filter(a=>a.length>1).slice(0,3).map(a=>a[0].toUpperCase()).join(""),i=_t(s);return e.jsx(p.Tooltip,{title:s,children:e.jsx(p.Avatar,{alt:s,style:{backgroundColor:i},children:o})})},ln=t=>e.jsx(ge,{...t,children:e.jsx(cn,{...t})}),cn=t=>{const{ooui:r,value:n}=t;let s=n,o=n;if(r.selectionValues.size?s=r.selectionValues.get(n):Array.isArray(n)&&(o=n[0],s=n[1]),!n)return null;const i=r.colors==="auto"?_t(o):r.colors[o]||_t(o);return e.jsx(p.Tag,{color:i,style:ho.isPresetStatusColor(i)?{}:{color:jr(i)},children:s})};var dn={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Qe,function(){return function(n,s){s.prototype.weekday=function(o){var i=this.$locale().weekStart||0,a=this.$W,c=(a<i?a+7:a)-i;return this.$utils().u(o)?c:this.subtract(c,"day").add(o,"day")}}})})(dn);const da=dn.exports;var un={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Qe,function(){return function(n,s,o){var i=s.prototype,a=function(f){return f&&(f.indexOf?f:f.s)},c=function(f,g,S,y,m){var w=f.name?f:f.$locale(),v=a(w[g]),_=a(w[S]),k=v||_.map(function(V){return V.slice(0,y)});if(!m)return k;var C=w.weekStart;return k.map(function(V,M){return k[(M+(C||0))%7]})},u=function(){return o.Ls[o.locale()]},d=function(f,g){return f.formats[g]||function(S){return S.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(y,m,w){return m||w.slice(1)})}(f.formats[g.toUpperCase()])},h=function(){var f=this;return{months:function(g){return g?g.format("MMMM"):c(f,"months")},monthsShort:function(g){return g?g.format("MMM"):c(f,"monthsShort","months",3)},firstDayOfWeek:function(){return f.$locale().weekStart||0},weekdays:function(g){return g?g.format("dddd"):c(f,"weekdays")},weekdaysMin:function(g){return g?g.format("dd"):c(f,"weekdaysMin","weekdays",2)},weekdaysShort:function(g){return g?g.format("ddd"):c(f,"weekdaysShort","weekdays",3)},longDateFormat:function(g){return d(f.$locale(),g)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};i.localeData=function(){return h.bind(this)()},o.localeData=function(){var f=u();return{firstDayOfWeek:function(){return f.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(f,g)},meridiem:f.meridiem,ordinal:f.ordinal}},o.months=function(){return c(u(),"months")},o.monthsShort=function(){return c(u(),"monthsShort","months",3)},o.weekdays=function(f){return c(u(),"weekdays",null,null,f)},o.weekdaysShort=function(f){return c(u(),"weekdaysShort","weekdays",3,f)},o.weekdaysMin=function(f){return c(u(),"weekdaysMin","weekdays",2,f)}}})})(un);const ua=un.exports,{useToken:fa}=p.theme;Je.extend(da),Je.extend(ua);const Ze={date:{placeholder:"__/__/____",dateDisplayFormat:"DD/MM/YYYY",dateInternalFormat:"YYYY-MM-DD"},time:{placeholder:"__/__/____ __:__:__",dateDisplayFormat:"DD/MM/YYYY HH:mm:ss",dateInternalFormat:"YYYY-MM-DD HH:mm:ss"}},fn=t=>{const{ooui:r,showTime:n=!1}=t,{required:s}=r;return e.jsx(ge,{required:s,...t,children:e.jsx(ha,{ooui:r,showTime:n})})},ha=t=>{const{value:r,onChange:n,ooui:s,showTime:o}=t,{id:i,readOnly:a,required:c}=s,{token:u}=fa(),d=c&&!a?{backgroundColor:u.colorPrimaryBg}:void 0,h=o?"time":"date",f=y=>{n==null||n(y)},g=y=>{if(y===null){f(void 0);return}f(y.format(Ze[h].dateInternalFormat))},S=r?Je(r,Ze[h].dateInternalFormat):void 0;return e.jsx(p.DatePicker,{style:{width:"100%",...d},placeholder:o?Ze.time.placeholder:Ze.date.placeholder,disabled:a,id:i,picker:"date",showTime:o,format:Ze[h].dateDisplayFormat,value:S,onChange:g})},pa=t=>e.jsx("div",{style:{display:"flex",justifyContent:"center",alignContent:"center"},children:e.jsx(p.Checkbox,{checked:t,disabled:!0})}),ga=t=>e.jsx(aa,{m2oField:t}),ma=t=>e.jsx(Ht.Interweave,{content:t==null?void 0:t.toString().replace(/(?:\r\n|\r|\n)/g,"<br>")}),ya=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=Je(t,Ze.date.dateInternalFormat).format(Ze.date.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},wa=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=Je(t,Ze.time.dateInternalFormat).format(Ze.time.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},hn=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} )`})},va=t=>e.jsx(on,{value:t}),Sa=t=>e.jsx(e.Fragment,{children:rn(t)}),pn=t=>e.jsx("div",{style:{textAlign:"right"},children:t}),Ca=t=>e.jsx("img",{src:`data:image/*;base64,${t}`,style:{maxWidth:"50px",padding:"5px"}}),ba=(t,r,n,s)=>e.jsx(cn,{ooui:n,value:t}),xa=(t,r,n,s)=>e.jsx(e.Fragment,{children:n.selectionValues.get(t)}),Ta=(t,r,n,s)=>e.jsx(e.Fragment,{children:e.jsx(la,{value:t,selectionValues:n.selectionValues,context:s})}),Fa=(t,r,n,s)=>e.jsx(ca,{ooui:n,value:t});function Ct(t){const{page:r=1,limit:n,total:s,treeView:o,results:i,onRequestPageChange:a,loading:c,onRowClicked:u,showPagination:d=!0,rowSelection:h,scrollY:f,colorsForResults:g={},statusForResults:S={},onChangeSort:y,sorter:m,onFetchChildrenForRecord:w,childField:v,rootTree:_=!1,context:k,readonly:C}=t,[V,M]=l.useState([]),[L,b]=l.useState([]),T=l.useRef(!1),F=l.useRef(null),{t:x}=l.useContext(pe),N=l.useRef(n),I=l.useContext(Ke),{title:O=void 0,setTitle:E=void 0}=(_?I:{})||{};l.useEffect(()=>{F.current=st(o);const Z=Rs(F.current,{boolean:pa,many2one:ga,text:ma,one2many:hn,many2many:hn,progressbar:va,float_time:Sa,image:Ca,integer:pn,float:pn,reference:Ta,tag:ba,selection:xa,date:ya,datetime:wa,avatar:Fa},k);b(Z),F.current.string&&O!==F.current.string&&(E==null||E(F.current.string))},[o]),l.useEffect(()=>{T.current=!1;const Z=Yr(F.current,i);M(Z),N.current=n},[i]);const $=(r-1)*N.current+1,D=$-1+V.length,B=s===void 0?null:s===0?x("no_results"):x("summary").replace("{from}",$==null?void 0:$.toString()).replace("{to}",D==null?void 0:D.toString()).replace("{total}",s==null?void 0:s.toString()),A=()=>!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:N.current===0?s:N.current,current:r,showSizeChanger:!1,onChange:a})}),e.jsx(p.Col,{span:12,className:"text-right",children:B})]});function W(){var te;const j=F.current.columns.filter(Q=>Q.sum!==void 0).map(Q=>({label:Q.sum,field:Q.id}));if(!j||j.length===0)return null;let P=[],Y=((te=h==null?void 0:h.selectedRowKeys)==null?void 0:te.length)>0?V.filter(Q=>h==null?void 0:h.selectedRowKeys.includes(Q.id)):V;return j.forEach(Q=>{const ie=Y.reduce((ee,X)=>X[Q.field]&&!isNaN(X[Q.field])?ee+X[Q.field]:ee,0);P.push(`${Q.label}: ${Math.round(ie*100)/100}`)}),e.jsx("div",{className:"p-1 pb-0 pl-2 mt-2 ",children:P.join(", ")})}let J,U=f;if(F.current!==null){J=oa(L,V,600);const j=F.current;f&&j.columns.some(P=>P.sum!==void 0)&&(U=f-30)}return F.current===null?e.jsx(p.Spin,{style:{padding:"2rem"}}):e.jsxs("div",{children:[A(),e.jsx(uo.Table,{height:U,columns:J.columns,dataSource:V,loading:c,loadingComponent:e.jsx(p.Spin,{}),onRowStyle:Z=>{if(g[Z.id])return{color:g[Z.id]}},onRowStatus:Z=>{if(S[Z.id])return e.jsx(p.Badge,{color:S[Z.id]})},onRowDoubleClick:u,onRowSelectionChange:h==null?void 0:h.onChange,onChangeSort:y,sorter:m,readonly:C,expandableOpts:w?{expandIcon:H.PlusSquareOutlined,collapseIcon:H.MinusSquareOutlined,loadingIcon:H.LoadingOutlined,onFetchChildrenForRecord:w,childField:v}:void 0}),W()]})}function Oa(t,r){const{model:n,formView:s,treeView:o,onRowClicked:i,nameSearch:a,treeScrollY:c,domain:u=[],visible:d=!0,rootTree:h=!1,parentContext:f={},onChangeSelectedRowKeys:g}=t,[S,y]=l.useState(!1),[m,w]=l.useState(!1),v=l.useRef(!1),[_,k]=l.useState(),[C,V]=l.useState(),[M,L]=l.useState(),[b,T]=l.useState(),[F,x]=l.useState(200),N=l.useRef(),{height:I}=Tt(),O=l.useContext(ct),{processAction:E}=O||{},$=l.useContext(Ke),{setResults:D=void 0,setCurrentItemIndex:B=void 0,currentId:A=void 0,results:W=void 0,selectedRowItems:J=void 0,setSelectedRowItems:U=void 0,searchParams:Z=[],setSearchParams:j=void 0,searchVisible:P=!0,setSearchVisible:Y=void 0,sorter:te=void 0,setSorter:Q=void 0,setTotalItems:ie=void 0,setSearchTreeNameSearch:ee=void 0,setTreeIsLoading:X=void 0,searchValues:ue={},setSearchValues:we=void 0,limit:Ee=vt,setLimit:Te=void 0}=(h?$:{})||{},{submit:Ie,clear:me,fetchResults:ae,tableRefreshing:Se,searchFilterLoading:Fe,searchError:Oe,page:Ae,offset:Ne,getResults:re,requestPageChange:xe,changeSort:Me,fetchChildrenForRecord:ce,colorsForResults:fe,statusForResults:Ce,totalItems:de}=Qr({model:_,setSearchTreeNameSearch:ee,setSelectedRowItems:U,setSearchParams:j,setSearchValues:we,searchParams:Z,setSearchVisible:Y,setTreeIsLoading:X,nameSearch:a,searchNameGetDoneRef:v,context:f,formView:M,treeView:C,sorter:te,setSorter:Q,setCurrentItemIndex:B,setResultsActionView:D,resultsActionView:W,domain:u,currentId:A,setActionViewTotalItems:ie,limit:Ee,setLimit:Te});l.useImperativeHandle(r,()=>({refreshResults:()=>{v.current=!1,ae()},getFields:()=>C==null?void 0:C.fields,getDomain:()=>u})),l.useEffect(()=>{!m||d&&(v.current=!1,ae())},[Ae,Ne,m,d,a]);const Ye=async()=>{w(!1),y(!0),T(void 0),X==null||X(!0);try{await $e(),w(!0)}catch(ke){T(ke)}finally{y(!1),X==null||X(!1)}},$e=async()=>{k(n);let ke=s;s||(ke=await K.getHandler().getView({model:n,type:"form",context:f}));let We=o;o||(We=await K.getHandler().getView({model:n,type:"tree",context:f})),L(ke),V(We)};l.useEffect(()=>{Ye()},[n]);const Xe=ke=>{Te==null||Te(ke)},R=async ke=>{const{id:We}=ke;N.current||(N.current=await K.getHandler().treeButOpen({id:C.view_id,model:_,context:f}));const Ue=N.current[0][2];await(E==null?void 0:E({actionData:Ue,fields:C.fields,values:{active_id:We,...ke},context:f}))},le=async ke=>{const{id:We}=ke;if(C!=null&&C.isExpandable){try{await R(ke)}catch(Ue){Le(Ue)}return}i({id:We,model:_,formView:M,treeView:C})};function _e(ke){const We=re().filter(Ue=>ke.includes(Ue.id));U==null||U(We),g==null||g(ke)}function he(){return C!=null&&C.isExpandable?I-160:I-(F+210)}const ye=()=>!C||!M?null:e.jsxs(e.Fragment,{children:[e.jsx(Qt,{fields:{...C.fields,...M.fields},searchFields:Gr([M.search_fields,C.search_fields]),formXml:M.arch,onClear:me,limit:Ee,offset:Ne,isSearching:Fe,onSubmit:Ie,onLimitChange:Xe,setSearchFilterHeight:x,searchError:Oe,searchVisible:P,searchValues:ue}),e.jsx(Ct,{context:f,total:de,limit:Ee,page:Ae,treeView:C,results:re(),onRequestPageChange:xe,loading:Se,onRowClicked:le,scrollY:c||he(),colorsForResults:fe,statusForResults:Ce,rowSelection:{selectedRowKeys:J==null?void 0:J.map(ke=>ke.id),onChange:_e},sorter:te,onChangeSort:Me,onFetchChildrenForRecord:C.isExpandable?ce:void 0,childField:C.field_parent,rootTree:h})]}),ve=b||Oe;return ve?e.jsx(p.Alert,{className:"mt-10",message:ve,type:"error",banner:!0}):e.jsx("div",{style:d?{}:{display:"none"},children:S?e.jsx(p.Spin,{}):ye()})}const er=l.forwardRef(Oa),tr=t=>{const{visible:r,onCloseModal:n,onSelectValues:s,model:o,nameSearch:i,domain:a,context:c={}}=t,[u,d]=l.useState(!1),{modalWidth:h,modalHeight:f}=Tt(),{t:g}=l.useContext(pe),[S,y]=l.useState([]),m=async()=>{await new Promise(k=>setTimeout(k,5)),n()},w=async k=>{const{id:C}=k;s([C])};function v(){if(S.length===0){m();return}s(S)}const _=()=>e.jsxs(e.Fragment,{children:[e.jsx(er,{model:o,nameSearch:i,onRowClicked:w,treeScrollY:f*.3,domain:a,parentContext:c,onChangeSelectedRowKeys:k=>{y(k)}}),e.jsx(p.Divider,{}),e.jsx(p.Row,{justify:"end",children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.FileAddOutlined,{}),onClick:()=>{d(!0)},children:g("new")}),e.jsx(p.Button,{icon:e.jsx(H.CheckOutlined,{}),onClick:()=>{v()},type:"primary",children:g("ok")}),e.jsx(p.Button,{icon:e.jsx(H.CloseOutlined,{}),onClick:m,children:g("cancel")})]})})]});return e.jsxs(e.Fragment,{children:[e.jsx(p.Modal,{title:g("search"),centered:!0,width:h,open:r&&!u,closable:!0,onCancel:m,footer:null,destroyOnClose:!0,maskClosable:!1,children:_()}),e.jsx(ut,{model:o,visible:u,parentContext:c,onSubmitSucceed:k=>{d(!1),m(),s([k])},onCancel:()=>{d(!1),m()}})]})},{error:_a}=p.Modal,kt=t=>{_a({title:"Error",icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:t})},{defaultAlgorithm:Da,defaultSeed:ka}=p.theme,gn=Da(ka),mn=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(ge,{required:n,type:"array",validator:s,...t,children:e.jsx(yn,{ooui:r})})},yn=t=>{const{value:r,onChange:n,ooui:s}=t,{required:o,relation:i,readOnly:a,context:c,id:u,domain:d}=s,h=o&&!a?{backgroundColor:gn.colorPrimaryBg}:void 0,[f,g]=l.useState(!1),[S,y]=l.useState(!1),[m,w]=l.useState(!1),[v,_]=l.useState(),k=l.useRef(!1),[C,V]=l.useState(""),M=l.useRef(),L=l.useContext(Ve),{domain:b,getValues:T,getFields:F,getContext:x,elementHasLostFocus:N}=L||{},I=l.useRef([]),[O,E]=l.useState([]),$=r&&r[0]||void 0,D=r&&r[1]||"";l.useEffect(()=>{!Array.isArray(r)&&r&&U(r)},[r]),l.useEffect(()=>{$&&D.length===0?U($):$&&D.length>0?V(D):!$&&!D&&V(M.current||"")},[r]);const B=Y=>{n==null||n(Y),N==null||N()},A=Y=>{M.current=Y.target.value,B([void 0,""])},W=async()=>{if(!m&&C!==D){if(await new Promise(Y=>setTimeout(Y,100)),k.current){B([void 0,""]);return}w(!0);try{if(I.current&&I.current.length>0)J(M.current);else{const Y=await K.getHandler().nameSearch({model:i,payload:M.current,context:{...x==null?void 0:x(),...c}});Y.length===1?(M.current=void 0,B(Y[0])):J(M.current)}}catch(Y){kt(Y)}finally{w(!1)}}},J=async Y=>{if(await Z(),I.current&&I.current.length>0){const te=await K.getHandler().searchAllIds({params:I.current,model:i,context:{...x==null?void 0:x(),...c},totalItems:2});te.length===1?U(te[0]):(_(Y),g(!0));return}_(Y),g(!0)},U=async Y=>{w(!0);try{const te=await K.getHandler().execute({action:"name_get",payload:[Y],model:i,context:{...x==null?void 0:x(),...c}});B([Y,te[0][1]])}catch(te){kt(te)}finally{w(!1)}};async function Z(){d&&(I.current=await K.getHandler().evalDomain({domain:d,values:lt({fields:F(),values:T()}),fields:F(),context:x()})),b&&b.length>0&&(I.current=I.current.concat(se.transformDomainForChildWidget({domain:b,widgetFieldName:u}))),E(I.current)}async function j(Y){Y.keyCode===13?(Y.preventDefault(),Y.stopPropagation(),await W()):Y.code==="Backspace"&&$!==void 0&&(Y.preventDefault(),Y.stopPropagation(),B([void 0,""]))}const P=o&&!a?Ma:p.Input;return e.jsxs(p.Row,{gutter:8,wrap:!1,children:[e.jsx(p.Col,{flex:"auto",children:e.jsx(P,{type:"text",value:C,disabled:a,onChange:A,style:h,onBlur:W,onKeyDown:j,suffix:e.jsx(Rt,{id:$,model:i,context:{...x==null?void 0:x(),...c}})})}),e.jsx(p.Col,{flex:"32px",style:{paddingRight:0},children:e.jsx(p.Button,{icon:e.jsx(H.FolderOpenOutlined,{}),disabled:$===void 0||D===""||C===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:()=>{k.current=!0,J(D)},style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},tabIndex:-1})}),e.jsx(tr,{model:i,domain:O,context:{...x==null?void 0:x(),...c},visible:f,nameSearch:$?void 0:v,onSelectValues:Y=>{g(!1),U(Y[0]),k.current=!1,M.current=void 0},onCloseModal:()=>{g(!1),k.current=!1}}),e.jsx(ut,{model:i,parentContext:{...x==null?void 0:x(),...c},id:r&&r[0],visible:S,onSubmitSucceed:Y=>{y(!1),U(Y)},onCancel:()=>{y(!1)},mustClearAfterSave:!0,readOnly:a})]})},Ma=gt.default(p.Input)`
|
|
31
|
+
`,cn=t=>{const{visible:r,onCancel:n,items:s=[],onItemClicked:o}=t,{t:i}=l.useContext(pe);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 b,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,S]=l.useState(),{t:y}=l.useContext(pe),m=l.useContext(je),{openRelate:w}=m||{},v=l.useContext(ct),{processAction:_}=v||{};if(!r)return null;async function k(){d(!0);try{const F=await K.getHandler().getView({model:n,type:"form",context:s});u(F);const{fields:x,arch:N}=F,I=(await K.getHandler().readObjects({model:n,ids:[r],fields:x,context:s}))[0];S({...at(I,x),active_id:r}),d(!1)}catch(F){d(!1),Le(F);return}}function C(){var x;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 F=(x=h==null?void 0:h.toolbar)==null?void 0:x.relate.map(N=>e.jsx(p.Menu.Item,{children:N.name},N.id));return e.jsx(p.Menu,{onClick:V,children:[e.jsx(p.Menu.Item,{disabled:!h.toolbar.action||h.toolbar.action.length===0,icon:e.jsx(H.ThunderboltOutlined,{}),children:y("action")},"action"),e.jsx(p.Menu.Item,{disabled:!h.toolbar.print||h.toolbar.print.length===0,icon:e.jsx(H.PrinterOutlined,{}),children:y("report")},"print"),e.jsx(p.Menu.Divider,{}),e.jsx(p.Menu.ItemGroup,{title:e.jsxs(e.Fragment,{children:[e.jsx(H.EnterOutlined,{})," ",e.jsxs("span",{children:[" ",y("related")]})]}),children:F})]})}function V(F){if(F.key==="action")i(!0);else if(F.key==="print")c(!0);else{const x=h.toolbar.relate.find(N=>N.id===parseInt(F.key));if(!x)return;w({relateData:x,values:g,fields:h.fields,action_id:x.id,action_type:x.type})}}function M(F){i(!1),_==null||_({actionData:F,values:g,fields:h.fields,context:{active_id:r,active_ids:[r]}})}function L(F){c(!1),_==null||_({actionData:{...F,datas:{...F.datas||{},ids:[r]}},values:g,fields:h.fields})}return e.jsxs(e.Fragment,{children:[e.jsx(p.Dropdown,{overlay:C(),trigger:["click"],children:e.jsx(H.RightCircleOutlined,{style:{color:"rgba(0,0,0,.45)"},onClick:F=>{F.preventDefault(),k()}})}),e.jsx(cn,{visible:o,items:(b=h==null?void 0:h.toolbar)==null?void 0:b.action,onItemClicked:M,onCancel:()=>i(!1)}),e.jsx(cn,{visible:a,items:(T=h==null?void 0:h.toolbar)==null?void 0:T.print,onItemClicked:L,onCancel:()=>c(!1)})]})},ia=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,{})},aa=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 S=await K.getHandler().execute({action:"name_get",payload:[h],model:f,context:n});i(S[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 dn={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Qe,function(){var n=1e3,s=6e4,o=36e5,i="millisecond",a="second",c="minute",f="hour",d="day",h="week",u="month",g="quarter",S="year",y="date",m="Invalid Date",w=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,v=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,_={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(I){var O=["th","st","nd","rd"],E=I%100;return"["+I+(O[(E-20)%10]||O[E]||O[0])+"]"}},k=function(I,O,E){var A=String(I);return!A||A.length>=O?I:""+Array(O+1-A.length).join(E)+I},C={s:k,z:function(I){var O=-I.utcOffset(),E=Math.abs(O),A=Math.floor(E/60),D=E%60;return(O<=0?"+":"-")+k(A,2,"0")+":"+k(D,2,"0")},m:function I(O,E){if(O.date()<E.date())return-I(E,O);var A=12*(E.year()-O.year())+(E.month()-O.month()),D=O.clone().add(A,u),B=E-D<0,$=O.clone().add(A+(B?-1:1),u);return+(-(A+(E-D)/(B?D-$:$-D))||0)},a:function(I){return I<0?Math.ceil(I)||0:Math.floor(I)},p:function(I){return{M:u,y:S,w:h,d,D:y,h:f,m:c,s:a,ms:i,Q:g}[I]||String(I||"").toLowerCase().replace(/s$/,"")},u:function(I){return I===void 0}},V="en",M={};M[V]=_;var L=function(I){return I instanceof x},b=function I(O,E,A){var D;if(!O)return V;if(typeof O=="string"){var B=O.toLowerCase();M[B]&&(D=B),E&&(M[B]=E,D=B);var $=O.split("-");if(!D&&$.length>1)return I($[0])}else{var W=O.name;M[W]=O,D=W}return!A&&D&&(V=D),D||!A&&V},T=function(I,O){if(L(I))return I.clone();var E=typeof O=="object"?O:{};return E.date=I,E.args=arguments,new x(E)},F=C;F.l=b,F.i=L,F.w=function(I,O){return T(I,{locale:O.$L,utc:O.$u,x:O.$x,$offset:O.$offset})};var x=function(){function I(E){this.$L=b(E.locale,null,!0),this.parse(E)}var O=I.prototype;return O.parse=function(E){this.$d=function(A){var D=A.date,B=A.utc;if(D===null)return new Date(NaN);if(F.u(D))return new Date;if(D instanceof Date)return new Date(D);if(typeof D=="string"&&!/Z$/i.test(D)){var $=D.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(D)}(E),this.$x=E.x||{},this.init()},O.init=function(){var E=this.$d;this.$y=E.getFullYear(),this.$M=E.getMonth(),this.$D=E.getDate(),this.$W=E.getDay(),this.$H=E.getHours(),this.$m=E.getMinutes(),this.$s=E.getSeconds(),this.$ms=E.getMilliseconds()},O.$utils=function(){return F},O.isValid=function(){return this.$d.toString()!==m},O.isSame=function(E,A){var D=T(E);return this.startOf(A)<=D&&D<=this.endOf(A)},O.isAfter=function(E,A){return T(E)<this.startOf(A)},O.isBefore=function(E,A){return this.endOf(A)<T(E)},O.$g=function(E,A,D){return F.u(E)?this[A]:this.set(D,E)},O.unix=function(){return Math.floor(this.valueOf()/1e3)},O.valueOf=function(){return this.$d.getTime()},O.startOf=function(E,A){var D=this,B=!!F.u(A)||A,$=F.p(E),W=function(Q,ie){var ee=F.w(D.$u?Date.UTC(D.$y,ie,Q):new Date(D.$y,ie,Q),D);return B?ee:ee.endOf(d)},J=function(Q,ie){return F.w(D.toDate()[Q].apply(D.toDate("s"),(B?[0,0,0,0]:[23,59,59,999]).slice(ie)),D)},G=this.$W,Z=this.$M,j=this.$D,P="set"+(this.$u?"UTC":"");switch($){case S:return B?W(1,0):W(31,11);case u:return B?W(1,Z):W(0,Z+1);case h:var Y=this.$locale().weekStart||0,te=(G<Y?G+7:G)-Y;return W(B?j-te:j+(6-te),Z);case d:case y:return J(P+"Hours",0);case f:return J(P+"Minutes",1);case c:return J(P+"Seconds",2);case a:return J(P+"Milliseconds",3);default:return this.clone()}},O.endOf=function(E){return this.startOf(E,!1)},O.$set=function(E,A){var D,B=F.p(E),$="set"+(this.$u?"UTC":""),W=(D={},D[d]=$+"Date",D[y]=$+"Date",D[u]=$+"Month",D[S]=$+"FullYear",D[f]=$+"Hours",D[c]=$+"Minutes",D[a]=$+"Seconds",D[i]=$+"Milliseconds",D)[B],J=B===d?this.$D+(A-this.$W):A;if(B===u||B===S){var G=this.clone().set(y,1);G.$d[W](J),G.init(),this.$d=G.set(y,Math.min(this.$D,G.daysInMonth())).$d}else W&&this.$d[W](J);return this.init(),this},O.set=function(E,A){return this.clone().$set(E,A)},O.get=function(E){return this[F.p(E)]()},O.add=function(E,A){var D,B=this;E=Number(E);var $=F.p(A),W=function(Z){var j=T(B);return F.w(j.date(j.date()+Math.round(Z*E)),B)};if($===u)return this.set(u,this.$M+E);if($===S)return this.set(S,this.$y+E);if($===d)return W(1);if($===h)return W(7);var J=(D={},D[c]=s,D[f]=o,D[a]=n,D)[$]||1,G=this.$d.getTime()+E*J;return F.w(G,this)},O.subtract=function(E,A){return this.add(-1*E,A)},O.format=function(E){var A=this,D=this.$locale();if(!this.isValid())return D.invalidDate||m;var B=E||"YYYY-MM-DDTHH:mm:ssZ",$=F.z(this),W=this.$H,J=this.$m,G=this.$M,Z=D.weekdays,j=D.months,P=function(ie,ee,X,ue){return ie&&(ie[ee]||ie(A,B))||X[ee].slice(0,ue)},Y=function(ie){return F.s(W%12||12,ie,"0")},te=D.meridiem||function(ie,ee,X){var ue=ie<12?"AM":"PM";return X?ue.toLowerCase():ue},Q={YY:String(this.$y).slice(-2),YYYY:F.s(this.$y,4,"0"),M:G+1,MM:F.s(G+1,2,"0"),MMM:P(D.monthsShort,G,j,3),MMMM:P(j,G),D:this.$D,DD:F.s(this.$D,2,"0"),d:String(this.$W),dd:P(D.weekdaysMin,this.$W,Z,2),ddd:P(D.weekdaysShort,this.$W,Z,3),dddd:Z[this.$W],H:String(W),HH:F.s(W,2,"0"),h:Y(1),hh:Y(2),a:te(W,J,!0),A:te(W,J,!1),m:String(J),mm:F.s(J,2,"0"),s:String(this.$s),ss:F.s(this.$s,2,"0"),SSS:F.s(this.$ms,3,"0"),Z:$};return B.replace(v,function(ie,ee){return ee||Q[ie]||$.replace(":","")})},O.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},O.diff=function(E,A,D){var B,$=F.p(A),W=T(E),J=(W.utcOffset()-this.utcOffset())*s,G=this-W,Z=F.m(this,W);return Z=(B={},B[S]=Z/12,B[u]=Z,B[g]=Z/3,B[h]=(G-J)/6048e5,B[d]=(G-J)/864e5,B[f]=G/o,B[c]=G/s,B[a]=G/n,B)[$]||G,D?Z:F.a(Z)},O.daysInMonth=function(){return this.endOf(u).$D},O.$locale=function(){return M[this.$L]},O.locale=function(E,A){if(!E)return this.$L;var D=this.clone(),B=b(E,A,!0);return B&&(D.$L=B),D},O.clone=function(){return F.w(this.$d,this)},O.toDate=function(){return new Date(this.valueOf())},O.toJSON=function(){return this.isValid()?this.toISOString():null},O.toISOString=function(){return this.$d.toISOString()},O.toString=function(){return this.$d.toUTCString()},I}(),N=x.prototype;return T.prototype=N,[["$ms",i],["$s",a],["$m",c],["$H",f],["$W",d],["$M",u],["$y",S],["$D",y]].forEach(function(I){N[I[1]]=function(O){return this.$g(O,I[0],I[1])}}),T.extend=function(I,O){return I.$i||(I(O,x,T),I.$i=!0),T},T.locale=b,T.isDayjs=L,T.unix=function(I){return T(1e3*I)},T.en=M[V],T.Ls=M,T.p={},T})})(dn);const Je=dn.exports,la=t=>{console.log("Avatar Props",t);const{ooui:r,value:n}=t;if(!n)return null;let s=n;r.selectionValues.size?s=r.selectionValues.get(n):Array.isArray(n)&&(s=n[1]);const o=s.toString().split(" ").filter(a=>a.length>1).slice(0,3).map(a=>a[0].toUpperCase()).join(""),i=_t(s);return e.jsx(p.Tooltip,{title:s,children:e.jsx(p.Avatar,{alt:s,style:{backgroundColor:i},children:o})})};var un={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Qe,function(){return function(n,s){s.prototype.weekday=function(o){var i=this.$locale().weekStart||0,a=this.$W,c=(a<i?a+7:a)-i;return this.$utils().u(o)?c:this.subtract(c,"day").add(o,"day")}}})})(un);const ca=un.exports;var fn={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Qe,function(){return function(n,s,o){var i=s.prototype,a=function(u){return u&&(u.indexOf?u:u.s)},c=function(u,g,S,y,m){var w=u.name?u:u.$locale(),v=a(w[g]),_=a(w[S]),k=v||_.map(function(V){return V.slice(0,y)});if(!m)return k;var C=w.weekStart;return k.map(function(V,M){return k[(M+(C||0))%7]})},f=function(){return o.Ls[o.locale()]},d=function(u,g){return u.formats[g]||function(S){return S.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)}}})})(fn);const da=fn.exports,{useToken:ua}=p.theme;Je.extend(ca),Je.extend(da);const Ze={date:{placeholder:"__/__/____",dateDisplayFormat:"DD/MM/YYYY",dateInternalFormat:"YYYY-MM-DD"},time:{placeholder:"__/__/____ __:__:__",dateDisplayFormat:"DD/MM/YYYY HH:mm:ss",dateInternalFormat:"YYYY-MM-DD HH:mm:ss"}},hn=t=>{const{ooui:r,showTime:n=!1}=t,{required:s}=r;return e.jsx(ge,{required:s,...t,children:e.jsx(fa,{ooui:r,showTime:n})})},fa=t=>{const{value:r,onChange:n,ooui:s,showTime:o}=t,{id:i,readOnly:a,required:c}=s,{token:f}=ua(),d=c&&!a?{backgroundColor:f.colorPrimaryBg}:void 0,h=o?"time":"date",u=y=>{n==null||n(y)},g=y=>{if(y===null){u(void 0);return}u(y.format(Ze[h].dateInternalFormat))},S=r?Je(r,Ze[h].dateInternalFormat):void 0;return e.jsx(p.DatePicker,{style:{width:"100%",...d},placeholder:o?Ze.time.placeholder:Ze.date.placeholder,disabled:a,id:i,picker:"date",showTime:o,format:Ze[h].dateDisplayFormat,value:S,onChange:g})},ha=t=>e.jsx("div",{style:{display:"flex",justifyContent:"center",alignContent:"center"},children:e.jsx(p.Checkbox,{checked:t,disabled:!0})}),pa=t=>e.jsx(ia,{m2oField:t}),ga=t=>e.jsx(Ht.Interweave,{content:t==null?void 0:t.toString().replace(/(?:\r\n|\r|\n)/g,"<br>")}),ma=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=Je(t,Ze.date.dateInternalFormat).format(Ze.date.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},ya=t=>{if(!t||t&&t.length===0)return e.jsx(e.Fragment,{});const r=Je(t,Ze.time.dateInternalFormat).format(Ze.time.dateDisplayFormat);return e.jsx(e.Fragment,{children:r})},pn=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} )`})},wa=t=>e.jsx(ln,{value:t}),va=t=>e.jsx(e.Fragment,{children:sn(t)}),gn=t=>e.jsx("div",{style:{textAlign:"right"},children:t}),Sa=t=>e.jsx("img",{src:`data:image/*;base64,${t}`,style:{maxWidth:"50px",padding:"5px"}}),Ca=(t,r,n,s)=>e.jsx(Jr,{ooui:n,value:t}),ba=(t,r,n,s)=>e.jsx(e.Fragment,{children:n.selectionValues.get(t)}),xa=(t,r,n,s)=>e.jsx(e.Fragment,{children:e.jsx(aa,{value:t,selectionValues:n.selectionValues,context:s})}),Ta=(t,r,n,s)=>e.jsx(la,{ooui:n,value:t});function Ct(t){const{page:r=1,limit:n,total:s,treeView:o,results:i,onRequestPageChange:a,loading:c,onRowClicked:f,showPagination:d=!0,rowSelection:h,scrollY:u,colorsForResults:g={},statusForResults:S={},onChangeSort:y,sorter:m,onFetchChildrenForRecord:w,childField:v,rootTree:_=!1,context:k,readonly:C}=t,[V,M]=l.useState([]),[L,b]=l.useState([]),T=l.useRef(!1),F=l.useRef(null),{t:x}=l.useContext(pe),N=l.useRef(n),I=l.useContext(Ke),{title:O=void 0,setTitle:E=void 0}=(_?I:{})||{};l.useEffect(()=>{F.current=st(o);const Z=Rs(F.current,{boolean:ha,many2one:pa,text:ga,one2many:pn,many2many:pn,progressbar:wa,float_time:va,image:Sa,integer:gn,float:gn,reference:xa,tag:Ca,selection:ba,date:ma,datetime:ya,avatar:Ta},k);b(Z),F.current.string&&O!==F.current.string&&(E==null||E(F.current.string))},[o]),l.useEffect(()=>{T.current=!1;const Z=Wr(F.current,i);M(Z),N.current=n},[i]);const A=(r-1)*N.current+1,D=A-1+V.length,B=s===void 0?null:s===0?x("no_results"):x("summary").replace("{from}",A==null?void 0:A.toString()).replace("{to}",D==null?void 0:D.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:N.current===0?s:N.current,current:r,showSizeChanger:!1,onChange:a})}),e.jsx(p.Col,{span:12,className:"text-right",children:B})]});function W(){var te;const j=F.current.columns.filter(Q=>Q.sum!==void 0).map(Q=>({label:Q.sum,field:Q.id}));if(!j||j.length===0)return null;let P=[],Y=((te=h==null?void 0:h.selectedRowKeys)==null?void 0:te.length)>0?V.filter(Q=>h==null?void 0:h.selectedRowKeys.includes(Q.id)):V;return j.forEach(Q=>{const ie=Y.reduce((ee,X)=>X[Q.field]&&!isNaN(X[Q.field])?ee+X[Q.field]:ee,0);P.push(`${Q.label}: ${Math.round(ie*100)/100}`)}),e.jsx("div",{className:"p-1 pb-0 pl-2 mt-2 ",children:P.join(", ")})}let J,G=u;if(F.current!==null){J=na(L,V,600);const j=F.current;u&&j.columns.some(P=>P.sum!==void 0)&&(G=u-30)}return F.current===null?e.jsx(p.Spin,{style:{padding:"2rem"}}):e.jsxs("div",{children:[$(),e.jsx(fo.Table,{height:G,columns:J.columns,dataSource:V,loading:c,loadingComponent:e.jsx(p.Spin,{}),onRowStyle:Z=>{if(g[Z.id])return{color:g[Z.id]}},onRowStatus:Z=>{if(S[Z.id])return e.jsx(p.Badge,{color:S[Z.id]})},onRowDoubleClick:f,onRowSelectionChange:h==null?void 0:h.onChange,onChangeSort:y,sorter:m,readonly:C,expandableOpts:w?{expandIcon:H.PlusSquareOutlined,collapseIcon:H.MinusSquareOutlined,loadingIcon:H.LoadingOutlined,onFetchChildrenForRecord:w,childField:v}:void 0}),W()]})}function Fa(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,[S,y]=l.useState(!1),[m,w]=l.useState(!1),v=l.useRef(!1),[_,k]=l.useState(),[C,V]=l.useState(),[M,L]=l.useState(),[b,T]=l.useState(),[F,x]=l.useState(200),N=l.useRef(),{height:I}=Tt(),O=l.useContext(ct),{processAction:E}=O||{},A=l.useContext(Ke),{setResults:D=void 0,setCurrentItemIndex:B=void 0,currentId:$=void 0,results:W=void 0,selectedRowItems:J=void 0,setSelectedRowItems:G=void 0,searchParams:Z=[],setSearchParams:j=void 0,searchVisible:P=!0,setSearchVisible:Y=void 0,sorter:te=void 0,setSorter:Q=void 0,setTotalItems:ie=void 0,setSearchTreeNameSearch:ee=void 0,setTreeIsLoading:X=void 0,searchValues:ue={},setSearchValues:we=void 0,limit:Ee=vt,setLimit:Te=void 0}=(h?A:{})||{},{submit:Ie,clear:me,fetchResults:ae,tableRefreshing:Se,searchFilterLoading:Fe,searchError:Oe,page:$e,offset:Ne,getResults:re,requestPageChange:xe,changeSort:Me,fetchChildrenForRecord:ce,colorsForResults:fe,statusForResults:Ce,totalItems:de}=tn({model:_,setSearchTreeNameSearch:ee,setSelectedRowItems:G,setSearchParams:j,setSearchValues:we,searchParams:Z,setSearchVisible:Y,setTreeIsLoading:X,nameSearch:a,searchNameGetDoneRef:v,context:u,formView:M,treeView:C,sorter:te,setSorter:Q,setCurrentItemIndex:B,setResultsActionView:D,resultsActionView:W,domain:f,currentId:$,setActionViewTotalItems:ie,limit:Ee,setLimit:Te});l.useImperativeHandle(r,()=>({refreshResults:()=>{v.current=!1,ae()},getFields:()=>C==null?void 0:C.fields,getDomain:()=>f})),l.useEffect(()=>{!m||d&&(v.current=!1,ae())},[$e,Ne,m,d,a]);const Ye=async()=>{w(!1),y(!0),T(void 0),X==null||X(!0);try{await Ae(),w(!0)}catch(ke){T(ke)}finally{y(!1),X==null||X(!1)}},Ae=async()=>{k(n);let ke=s;s||(ke=await K.getHandler().getView({model:n,type:"form",context:u}));let We=o;o||(We=await K.getHandler().getView({model:n,type:"tree",context:u})),L(ke),V(We)};l.useEffect(()=>{Ye()},[n]);const Xe=ke=>{Te==null||Te(ke)},R=async ke=>{const{id:We}=ke;N.current||(N.current=await K.getHandler().treeButOpen({id:C.view_id,model:_,context:u}));const Ge=N.current[0][2];await(E==null?void 0:E({actionData:Ge,fields:C.fields,values:{active_id:We,...ke},context:u}))},le=async ke=>{const{id:We}=ke;if(C!=null&&C.isExpandable){try{await R(ke)}catch(Ge){Le(Ge)}return}i({id:We,model:_,formView:M,treeView:C})};function _e(ke){const We=re().filter(Ge=>ke.includes(Ge.id));G==null||G(We),g==null||g(ke)}function he(){return C!=null&&C.isExpandable?I-160:I-(F+210)}const ye=()=>!C||!M?null:e.jsxs(e.Fragment,{children:[e.jsx(Qt,{fields:{...C.fields,...M.fields},searchFields:Gr([M.search_fields,C.search_fields]),formXml:M.arch,onClear:me,limit:Ee,offset:Ne,isSearching:Fe,onSubmit:Ie,onLimitChange:Xe,setSearchFilterHeight:x,searchError:Oe,searchVisible:P,searchValues:ue}),e.jsx(Ct,{context:u,total:de,limit:Ee,page:$e,treeView:C,results:re(),onRequestPageChange:xe,loading:Se,onRowClicked:le,scrollY:c||he(),colorsForResults:fe,statusForResults:Ce,rowSelection:{selectedRowKeys:J==null?void 0:J.map(ke=>ke.id),onChange:_e},sorter:te,onChangeSort:Me,onFetchChildrenForRecord:C.isExpandable?ce:void 0,childField:C.field_parent,rootTree:h})]}),ve=b||Oe;return ve?e.jsx(p.Alert,{className:"mt-10",message:ve,type:"error",banner:!0}):e.jsx("div",{style:d?{}:{display:"none"},children:S?e.jsx(p.Spin,{}):ye()})}const er=l.forwardRef(Fa),tr=t=>{const{visible:r,onCloseModal:n,onSelectValues:s,model:o,nameSearch:i,domain:a,context:c={}}=t,[f,d]=l.useState(!1),{modalWidth:h,modalHeight:u}=Tt(),{t:g}=l.useContext(pe),[S,y]=l.useState([]),m=async()=>{await new Promise(k=>setTimeout(k,5)),n()},w=async k=>{const{id:C}=k;s([C])};function v(){if(S.length===0){m();return}s(S)}const _=()=>e.jsxs(e.Fragment,{children:[e.jsx(er,{model:o,nameSearch:i,onRowClicked:w,treeScrollY:u*.3,domain:a,parentContext:c,onChangeSelectedRowKeys:k=>{y(k)}}),e.jsx(p.Divider,{}),e.jsx(p.Row,{justify:"end",children:e.jsxs(p.Space,{children:[e.jsx(p.Button,{icon:e.jsx(H.FileAddOutlined,{}),onClick:()=>{d(!0)},children:g("new")}),e.jsx(p.Button,{icon:e.jsx(H.CheckOutlined,{}),onClick:()=>{v()},type:"primary",children:g("ok")}),e.jsx(p.Button,{icon:e.jsx(H.CloseOutlined,{}),onClick:m,children:g("cancel")})]})})]});return e.jsxs(e.Fragment,{children:[e.jsx(p.Modal,{title:g("search"),centered:!0,width:h,open:r&&!f,closable:!0,onCancel:m,footer:null,destroyOnClose:!0,maskClosable:!1,children:_()}),e.jsx(ut,{model:o,visible:f,parentContext:c,onSubmitSucceed:k=>{d(!1),m(),s([k])},onCancel:()=>{d(!1),m()}})]})},{error:Oa}=p.Modal,kt=t=>{Oa({title:"Error",icon:e.jsx(H.ExclamationCircleOutlined,{}),centered:!0,content:t})},{defaultAlgorithm:_a,defaultSeed:Da}=p.theme,mn=_a(Da),yn=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(ge,{required:n,type:"array",validator:s,...t,children:e.jsx(wn,{ooui:r})})},wn=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:mn.colorPrimaryBg}:void 0,[u,g]=l.useState(!1),[S,y]=l.useState(!1),[m,w]=l.useState(!1),[v,_]=l.useState(),k=l.useRef(!1),[C,V]=l.useState(""),M=l.useRef(),L=l.useContext(Ve),{domain:b,getValues:T,getFields:F,getContext:x,elementHasLostFocus:N}=L||{},I=l.useRef([]),[O,E]=l.useState([]),A=r&&r[0]||void 0,D=r&&r[1]||"";l.useEffect(()=>{!Array.isArray(r)&&r&&G(r)},[r]),l.useEffect(()=>{A&&D.length===0?G(A):A&&D.length>0?V(D):!A&&!D&&V(M.current||"")},[r]);const B=Y=>{n==null||n(Y),N==null||N()},$=Y=>{M.current=Y.target.value,B([void 0,""])},W=async()=>{if(!m&&C!==D){if(await new Promise(Y=>setTimeout(Y,100)),k.current){B([void 0,""]);return}w(!0);try{if(I.current&&I.current.length>0)J(M.current);else{const Y=await K.getHandler().nameSearch({model:i,payload:M.current,context:{...x==null?void 0:x(),...c}});Y.length===1?(M.current=void 0,B(Y[0])):J(M.current)}}catch(Y){kt(Y)}finally{w(!1)}}},J=async Y=>{if(await Z(),I.current&&I.current.length>0){const te=await K.getHandler().searchAllIds({params:I.current,model:i,context:{...x==null?void 0:x(),...c},totalItems:2});te.length===1?G(te[0]):(_(Y),g(!0));return}_(Y),g(!0)},G=async Y=>{w(!0);try{const te=await K.getHandler().execute({action:"name_get",payload:[Y],model:i,context:{...x==null?void 0:x(),...c}});B([Y,te[0][1]])}catch(te){kt(te)}finally{w(!1)}};async function Z(){d&&(I.current=await K.getHandler().evalDomain({domain:d,values:lt({fields:F(),values:T()}),fields:F(),context:x()})),b&&b.length>0&&(I.current=I.current.concat(se.transformDomainForChildWidget({domain:b,widgetFieldName:f}))),E(I.current)}async function j(Y){Y.keyCode===13?(Y.preventDefault(),Y.stopPropagation(),await W()):Y.code==="Backspace"&&A!==void 0&&(Y.preventDefault(),Y.stopPropagation(),B([void 0,""]))}const P=o&&!a?ka:p.Input;return e.jsxs(p.Row,{gutter:8,wrap:!1,children:[e.jsx(p.Col,{flex:"auto",children:e.jsx(P,{type:"text",value:C,disabled:a,onChange:$,style:h,onBlur:W,onKeyDown:j,suffix:e.jsx(Rt,{id:A,model:i,context:{...x==null?void 0:x(),...c}})})}),e.jsx(p.Col,{flex:"32px",style:{paddingRight:0},children:e.jsx(p.Button,{icon:e.jsx(H.FolderOpenOutlined,{}),disabled:A===void 0||D===""||C===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:()=>{k.current=!0,J(D)},style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},tabIndex:-1})}),e.jsx(tr,{model:i,domain:O,context:{...x==null?void 0:x(),...c},visible:u,nameSearch:A?void 0:v,onSelectValues:Y=>{g(!1),G(Y[0]),k.current=!1,M.current=void 0},onCloseModal:()=>{g(!1),k.current=!1}}),e.jsx(ut,{model:i,parentContext:{...x==null?void 0:x(),...c},id:r&&r[0],visible:S,onSubmitSucceed:Y=>{y(!1),G(Y)},onCancel:()=>{y(!1)},mustClearAfterSave:!0,readOnly:a})]})},ka=gt.default(p.Input)`
|
|
32
32
|
.ant-input {
|
|
33
|
-
background-color: ${
|
|
33
|
+
background-color: ${mn.colorPrimaryBg};
|
|
34
34
|
}
|
|
35
|
-
`,wn=He.default.createContext(null),Va=({children:t,initialView:r})=>{const[n,s]=l.useState(r),[o,i]=l.useState(0),[a,c]=l.useState(!1);return e.jsx(wn.Provider,{value:{currentView:n,setCurrentView:s,itemIndex:o,setItemIndex:i,manualTriggerChange:a,setManualTriggerChange:c},children:t})},{getValueForOperator:vn}=se.graphProcessor,Mt=.7,Vt=30,Sn=t=>{const{model:r,domain:n,context:s,colorCondition:o,totalDomain:i,showPercent:a=!1,icon:c,suffix:u,field:d,operator:h,manualIds:f}=t,[g,S]=l.useState(!1),[y,m]=l.useState(),[w,v]=l.useState(),[_,k]=l.useState(),[C,V]=l.useState(0),[M,L]=l.useState(0),[b,T]=l.useState(),[F,x]=l.useState(),[N,I]=l.useState();l.useEffect(()=>{$()},[r,o]);async function O({domain:D,isTotal:B}){if(B)return await E({domain:D});if(d&&h){const A=f||await K.getHandler().searchAllIds({params:D,model:r,context:s}),W=await K.getHandler().readObjects({model:r,ids:A,fieldsToRetrieve:[d],context:s});return vn({values:W.map(J=>J[d]),operator:h})}else return f?f.length:await K.getHandler().searchCount({model:r,params:D,context:s})}async function E({domain:D}){if(d&&h){const B=await K.getHandler().searchAllIds({params:D,model:r,context:s}),A=await K.getHandler().readObjects({model:r,ids:B,fieldsToRetrieve:[d],context:s});return vn({values:A.map(W=>W[d]),operator:h})}else return await K.getHandler().searchCount({model:r,params:D,context:s})}async function $(){S(!0);let D,B;try{const A=await O({domain:n,isTotal:!1});if(m(A),i){const W=await K.getHandler().evalDomain({domain:i,values:{},context:s});D=await O({domain:W,isTotal:!0}),k(D)}if(D?(B=Math.round(A/D*100*100)/100,v(B)):v(0),o){const W=await K.getHandler().parseCondition({condition:o,values:{value:A,percent:B},context:s});T(W)}if(c)if(c.indexOf(":")!==-1){const W=await K.getHandler().parseCondition({condition:c,values:{value:A,percent:B},context:s});x(W)}else x(c)}catch(A){I(JSON.stringify(A))}S(!1)}return N?e.jsx(p.Alert,{className:"mt-10",message:N,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:D=>{var B,A;V((B=D.bounds)==null?void 0:B.height),L((A=D.bounds)==null?void 0:A.width)},children:({measureRef:D})=>a?e.jsx(Ia,{value:y,total:_,percent:w,measureRef:D,height:C,width:M,color:b,icon:F,suffix:u}):e.jsx(Ea,{value:y,total:_,measureRef:D,height:C,width:M,color:b,icon:F,suffix:u})})};function Cn(t,r){const s=document.createElement("canvas").getContext("2d");return s.font=r||getComputedStyle(document.body).font,s.measureText(t).width}function Ea({measureRef:t,width:r,height:n,total:s,value:o,color:i,icon:a,suffix:c}){let u=n*Mt<Vt?Vt:n*Mt;const d=o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0});let h=s?`${d}/${s}`:`${d}`;c&&(h+=" "+c);let f=Cn(h,`bold ${Math.floor(u*1.03)}px sans-serif`);a&&(f=f*2),f>=r*.85&&(u=r*.85/f*u);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:u,margin:0,color:i},children:[g&&e.jsx(g,{style:{fontSize:u*.7}}),g?` ${h}`:h]})})}function Ia({measureRef:t,height:r,width:n,percent:s,total:o,value:i,color:a,icon:c,suffix:u}){const d=r*.65;let h=d*Mt<Vt?Vt:d*Mt;const f=i==null?void 0:i.toLocaleString("es-ES",{useGrouping:!0});let g=o?`${f}/${o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0})}`:`${f}`;u&&(g+=" "+u);const S=`${s==null?void 0:s.toLocaleString("es-ES",{useGrouping:!0})}%`;let y=Cn(S,`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}},Et=t=>{if(typeof t=="string"&&Aa(t))return parseFloat(t).toLocaleString("es-ES",{useGrouping:!0});if($a(t))return t.toLocaleString("es-ES",{useGrouping:!0});if(La(t)){const r=Na(t);return r===null?t:Je(t,It.input[r]).format(It.output[r])}else return t},Aa=t=>/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/.test(t),$a=t=>typeof t=="number"&&!isNaN(t),bn={default:{padding:"auto",xAxis:{tickCount:5,label:{formatter:Et}},yAxis:{label:{formatter:Et}},legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("default")}},pie:{appendPadding:10,radius:.9,label:{type:"inner",offset:"-30%",content:({percent:t})=>`${(t*100).toFixed(0)}%`,style:{fontSize:14,textAlign:"center"}},legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("pie")},interactions:[{type:"element-active"}]},barGrouped:{isGroup:!0,legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("barGrouped")},xAxis:{label:{formatter:Et}},yAxis:{label:{formatter:Et}},label:{position:"middle",layout:[{type:"interval-adjust-position"},{type:"interval-hide-overlap"},{type:"adjust-color"}]}}};function La(t){return typeof t!="string"||t===void 0?!1:new Date(t).toString()!=="Invalid Date"}const It={input:{hours:"YYYY-MM-DD HH:mm",days:"YYYY-MM-DD",weeks:"YYYY-[W]WW",months:"YYYY-MM",years:"YYYY"},output:{hours:"DD/MM/YYYY HH:mm",days:"DD/MM/YYYY",weeks:"[W]WW/YYYY",months:"MM/YYYY",years:"YYYY"}};function Na(t){for(const r in It.input)if(Je(t,It.input[r],!0).isValid())return r;return null}const{processGraphData:Pa}=se.graphProcessor,{getFieldsToRetrieve:Ba}=se.graphFieldUtils,Ha=t=>{const{model:r,domain:n=[],context:s={},xml:o,limit:i,uninformedString:a,manualIds:c}=t,[u,d]=l.useState(!1),[h,f]=l.useState(),[g,S]=l.useState(),[y,m]=l.useState(),[w,v]=l.useState("line");return et.default(()=>{(async()=>{d(!0),f(void 0);const _=se.parseGraph(o);v(_.type||"line");const k=Ba({ooui:_});let C,V;try{({values:C,fields:V}=await Ya({model:r,domain:n,context:s,limit:i,order:_.timerange?_.x.name:null,fields:k,manualIds:c}))}catch(M){f("Error fetching graph data values: "+JSON.stringify(M)),d(!1);return}try{if(!C||!V){f("No values or fields returned"),d(!1);return}m(C);const M=Pa({ooui:_,values:C,fields:V,options:{uninformedString:a}});S(M)}catch(M){f("Error processing graph data: "+M),d(!1);return}d(!1)})()},[o,r,i,s,n]),{loading:u,error:h,type:w,values:g,evaluatedEntries:y}};async function Ka({model:t,context:r,fields:n}){return await K.getHandler().getFields({model:t,context:r,fields:n})}async function Ya({fields:t,model:r,domain:n,context:s,order:o,limit:i,manualIds:a}){const c=await Ka({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,f)=>h[o]-f[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 Wa={line:Kt.Line,bar:Kt.Column,pie:Kt.Pie},qa=t=>{var v;const{model:r,domain:n,context:s,xml:o,limit:i,manualIds:a}=t,{t:c}=l.useContext(pe),{error:u,loading:d,values:h,type:f,evaluatedEntries:g}=Ha({model:r,xml:o,limit:i,domain:n,context:s,uninformedString:c("uninformed"),manualIds:a});if(u)return e.jsx(p.Alert,{message:u,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:S,isGroup:y,isStack:m}=h,w=Wa[f];return w?e.jsxs("div",{style:{padding:"1rem"},children:[e.jsx("p",{style:{textAlign:"right"},children:`${c("totalRegisters")} ${(v=g==null?void 0:g.length)==null?void 0:v.toLocaleString("es-ES",{useGrouping:!0})}`}),e.jsx(w,{...Ga({type:f,data:S,isGroup:y,isStack:m})})]}):e.jsx(e.Fragment,{children:`Unknown graph type: ${f}`})};function Ga(t){const{type:r,data:n,isGroup:s,isStack:o}=t;let i=bn[r];return i||(i=bn.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 Ua=(t,r)=>{const{view_id:n,model:s,context:o,domain:i,limit:a,manualIds:c}=t,[u,d]=l.useState(!1),[h,f]=l.useState(),[g,S]=l.useState(),y=l.useContext(Ke),{setGraphIsLoading:m=void 0}=y||{};l.useImperativeHandle(r,()=>({refresh:()=>{w()}})),l.useEffect(()=>{w()},[n]);async function w(){d(!0),m==null||m(!0);try{const v=await K.getHandler().getView({model:s,id:n,type:"graph",context:o});S(v.arch);const _=se.parseGraph(v.arch);f(_)}catch(v){return console.error(v),e.jsx(e.Fragment,{children:JSON.stringify(v)})}d(!1),m==null||m(!1)}if(u)return e.jsx("div",{style:{width:"100%",display:"flex",height:"20%",justifyContent:"center",alignContent:"center",padding:"1rem"},children:e.jsx(H.LoadingOutlined,{style:{height:"12px"}})});if(!h)return null;switch(h.type){case"indicatorField":case"indicator":{const v=h,_=v.type==="indicatorField"?{field:v.field,operator:v.operator}:{};return e.jsx(Sn,{showPercent:v.showPercent,totalDomain:v.totalDomain,colorCondition:v.color,model:s,context:o,domain:i,icon:v.icon,suffix:v.suffix,manualIds:c,..._})}case"line":case"bar":case"pie":return e.jsx(qa,{model:s,context:o,domain:i,xml:g,limit:a,manualIds:c});default:return e.jsx(e.Fragment,{children:`Graph ${h.type} not implemented`})}},At=l.forwardRef(Ua),{confirm:ja}=p.Modal,za=({onOk:t,lang:r})=>{ja({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:Ja}=p.Modal,Za=({onOk:t,lang:r})=>{Ja({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:Xa}=p.theme,Qa=t=>{const{title:r,readOnly:n,onCreateItem:s,onToggleViewMode:o,mode:i,onDelete:a,totalItems:c,currentItemIndex:u,onPreviousItem:d,onNextItem:h,isMany2Many:f,onSearchItem:g,selectedRowKeys:S,showCreateButton:y,showToggleButton:m}=t,{token:w}=Xa();function v(){return e.jsx("div",{className:"inline-block w-3"})}function _(){return e.jsx("div",{className:"flex flex-grow h-8 text-white",style:{borderRadius:w.borderRadius,backgroundColor:w.colorPrimaryActive},children:e.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:e.jsx("span",{className:"pl-2 font-bold",children:r})})})}function k(){return e.jsx(Pe,{tooltip:f?"Unlink":"Delete",icon:f?e.jsx(H.ApiOutlined,{}):e.jsx(H.DeleteOutlined,{}),onClick:a,disabled:c===0||n||i!=="form"&&S.length===0})}function C(){let M="_";return c===0?M="_":M=(u+1).toString(),e.jsxs("span",{className:"pl-1 pr-1",children:["(",M,"/",c,")"]})}function V(){return e.jsxs(e.Fragment,{children:[v(),e.jsx(Pe,{tooltip:"Previous item",icon:e.jsx(H.LeftOutlined,{}),onClick:d}),C(),e.jsx(Pe,{tooltip:"Next item",icon:e.jsx(H.RightOutlined,{}),onClick:h})]})}return e.jsxs("div",{className:"flex mb-2",children:[_(),e.jsxs("div",{className:"flex-none h-8 pl-2",children:[i!=="graph"&&y&&e.jsx(Pe,{tooltip:"Create new item",icon:e.jsx(H.FileAddOutlined,{}),disabled:n,onClick:s}),f&&y&&e.jsx(Pe,{tooltip:"Search existing item",icon:e.jsx(H.SearchOutlined,{}),disabled:n,onClick:g}),i!=="graph"&&v(),i!=="graph"&&k(),i==="form"&&V(),v(),m&&e.jsx(Pe,{tooltip:"Toggle view mode",icon:e.jsx(H.AlignLeftOutlined,{}),onClick:o})]})]})},Ra={form:se.Form,tree:se.Tree,graph:At};function el(t){const r=t.map(s=>s.id);return t.filter((s,o)=>{const{id:i}=s;return!r.includes(i,o+1)})}const tl=t=>{var Xe;const{value:r,onChange:n,ooui:s,views:o}=t,{items:i=[]}=r||{},{currentView:a,setCurrentView:c,itemIndex:u,setItemIndex:d}=l.useContext(wn),h=l.useContext(Ve),{activeId:f,getFields:g,getValues:S,getContext:y,domain:m}=h||{},{lang:w,t:v}=l.useContext(pe),[_,k]=l.useState(!1),[C,V]=l.useState(!1),[M,L]=l.useState(),[b,T]=l.useState(!1),[F,x]=l.useState(!1),[N,I]=l.useState(),[O,E]=l.useState([]),[$,D]=l.useState(!1),B=l.useRef([]),[A,W]=l.useState(),J=l.useRef(),[U,Z]=l.useState(void 0),{readOnly:j,relation:P,context:Y,domain:te}=s,Q=s.type==="many2many",{id:ie}=s,ee=i.filter(R=>(R.values||R.treeValues)&&R.operation!=="pendingRemove"),X=l.useRef();l.useEffect(()=>{if(X.current!==a){X.current=a,ue();return}ue()},[i,a]);const ue=l.useCallback(()=>{(a==="form"&&i.some(R=>!R.values)||a==="tree"&&i.some(R=>!R.treeValues))&&Ee()},[i,a]);l.useEffect(()=>{Ie()},[m]);const we=R=>{var le,_e;n==null||n({fields:((le=o.get("form"))==null?void 0:le.fields)||((_e=o.get("tree"))==null?void 0:_e.fields),items:el(R)})},Ee=async()=>{await Te(),u>ee.length-1&&u!==0&&d(0)},Te=async R=>{var le,_e,he;V(!0),k(!1),L(void 0);try{const[ye,ve]=await zt({treeView:{arch:(le=o.get("tree"))==null?void 0:le.arch,fields:(_e=o.get("tree"))==null?void 0:_e.fields},formView:{fields:((he=o.get("form"))==null?void 0:he.fields)||{}},model:P,items:i,context:{...y==null?void 0:y(),...Y},currentView:R||a});return J.current||(J.current=ye.map(ke=>ke.id)),(a||R)==="tree"&&ve&&Z(ve),we(ye),ye}catch(ye){L(ye)}finally{V(!1)}};async function Ie(){te&&(B.current=await K.getHandler().evalDomain({domain:te,values:lt({fields:g(),values:S()}),fields:g(),context:y()})),m&&m.length>0&&(B.current=B.current.concat(se.transformDomainForChildWidget({domain:m,widgetFieldName:ie})))}const me=()=>{const R=Array.from(o.keys()),le=R[(R.indexOf(a)+1)%R.length];a==="form"?Oe(()=>{c(le)}):c(le)},ae=()=>{u>0&&(a==="form"?Oe(()=>{d(u-1)}):d(u-1))},Se=()=>{const R=ee.length;u<R-1&&(a==="form"?Oe(()=>{d(u+1)}):d(u+1))},Fe=async()=>{const R=ee[u].id,le=(await K.getHandler().readObjects({model:P,ids:[R],fields:o.get("form").fields,context:{...y==null?void 0:y(),...Y}}))[0],_e=(await K.getHandler().readObjects({model:P,ids:[R],fields:o.get("tree").fields,context:{...y==null?void 0:y(),...Y}}))[0],he=i.map(ye=>ye.id===R?{...ye,operation:"original",values:le,treeValues:_e}:ye);we(he)},Oe=R=>{_?wt({lang:w,onOk:()=>{Fe(),R(),k(!1)}}):R()},Ae=()=>{if(Q){Za({lang:w,onOk:()=>{a==="form"?xe():Me()}});return}za({lang:w,onOk:()=>{a==="form"?xe():Me()}})},Ne=async()=>{const{inv_field:R}=s;let le;R&&f&&(le={[R]:f}),a==="form"?Oe(()=>{D(!0),I({defaultValues:le}),T(!0)}):(D(!0),I({defaultValues:le}),T(!0))},re=async()=>{a==="form"?Oe(()=>{x(!0)}):x(!0)},xe=async()=>{V(!0),k(!1),L(void 0);try{if(ee[u].id>0){const R=i.map(le=>le.id===ee[u].id?{...le,operation:"pendingRemove"}:le);we(R)}else we(i.filter(R=>R.id!==ee[u].id))}catch(R){L(R)}d(0),V(!1)},Me=async()=>{const R=ee.filter(le=>O.includes(le.id));V(!0),k(!1),L(void 0);try{const le=R.map(he=>he.id),_e=i.filter(he=>!(le.includes(he.id)&&he.id<0)).map(he=>le.includes(he.id)?{...he,operation:"pendingRemove"}:he);we(_e)}catch(le){L(le)}d(0),V(!1)},ce=(R,le,_e)=>{let he;if(R)he=i.map(ye=>ye.id===R?{id:R,operation:R>0?"pendingUpdate":"pendingCreate",values:{..._e,id:R},treeValues:{..._e,id:R}}:ye);else{const ye=ei(i);he=i.concat({id:ye,operation:"pendingCreate",values:{..._e,id:ye},treeValues:{..._e,id:ye}})}we(he),$||T(!1)},fe=async R=>{const{id:le}=R;let _e=i;const he=i.find(ye=>ye.id===le);(he==null?void 0:he.values)===void 0&&(_e=await Te("form")),I(_e.find(ye=>ye.id===le)),D(!1),T(!0)},Ce=async R=>{V(!0);let le=i;const _e=R.filter(he=>!i.find(ye=>ye.id===he));try{for(const he of _e){const ye=(await K.getHandler().readObjects({model:P,ids:[he],fields:o.get("form").fields,context:{...y==null?void 0:y(),...Y}}))[0],ve=(await K.getHandler().readObjects({model:P,ids:[he],fields:o.get("tree").fields,context:{...y==null?void 0:y(),...Y}}))[0];le.push({id:he,operation:"pendingLink",values:ye,treeValues:ve})}we(le)}catch(he){L(he)}finally{V(!1)}};function de(){const R=Ra[a];if(a==="graph")return se.parseGraph(o.get("graph").arch).string;{const le=new R(o.get(a).fields);return le.parse(o.get(a).arch),le.string}}const Ye=()=>{var le,_e,he,ye;if(a==="form")return ee.length===0?v("noCurrentEntries"):a!==X.current&&i.some(ve=>!ve.values)?e.jsx(p.Spin,{}):e.jsx(dt,{formView:o.get("form"),values:(le=ee[u])==null?void 0:le.values,parentContext:{...y==null?void 0:y(),...Y},model:P,id:(_e=ee[u])==null?void 0:_e.id,submitMode:"values",onFieldsChange:ve=>{var Ue;const ke=(Ue=ee[u])==null?void 0:Ue.id,We=i.map(Re=>Re.id===ke?{...Re,operation:Re.operation==="original"?"pendingUpdate":Re.operation,values:{...ve,id:ke},treeValues:{...ve,id:ke}}:Re);we(We),k(!0)},readOnly:j});let R=[];if(ee.some(ve=>ve.treeValues)&&(R=A?it({resultsToSort:ee.map(ve=>ve.treeValues),sorter:A,fields:{...o.get("tree").fields,...((he=o.get("form"))==null?void 0:he.fields)||{}}}):ee.map(ve=>ve.treeValues)),a==="tree")return e.jsx(Ct,{total:ee.length,limit:ee.length,treeView:o.get("tree"),results:R,loading:C,onRowClicked:((ye=o.get("form"))==null?void 0:ye.fields)!==void 0?fe:void 0,showPagination:!1,rowSelection:{selectedRowKeys:O,onChange:E},sorter:A,onChangeSort:W,context:{...y==null?void 0:y(),...Y},colorsForResults:U,readonly:j});if(a==="graph"){const ve=[[`${s.inv_field}`,"=",f]];return e.jsx(At,{view_id:o.get("graph").view_id,model:s.relation,domain:ve,context:{...y==null?void 0:y(),...Y},limit:0})}};if(M)return e.jsx(p.Alert,{className:"mt-10",message:M,type:"error",banner:!0});const $e=$;return C?e.jsx(p.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(Qa,{mode:a,title:de(),readOnly:j,isMany2Many:Q,formHasChanges:_,totalItems:ee.length,currentItemIndex:u,onDelete:Ae,onCreateItem:Ne,onToggleViewMode:me,onPreviousItem:ae,onNextItem:Se,onSearchItem:re,selectedRowKeys:O,showCreateButton:((Xe=o.get("form"))==null?void 0:Xe.fields)!==void 0,showToggleButton:o.size>1}),Ye(),e.jsx(ut,{formView:o.get("form"),model:P,id:N==null?void 0:N.id,submitMode:"values",values:N==null?void 0:N.values,defaultValues:N==null?void 0:N.defaultValues,visible:b,onSubmitSucceed:ce,parentContext:{...y==null?void 0:y(),...Y},onCancel:()=>{D(!1),T(!1)},readOnly:j,mustClearAfterSave:$e}),e.jsx(tr,{domain:B.current,model:P,context:{...y==null?void 0:y(),...Y},visible:F,onSelectValues:async R=>{x(!1),Ce(R)},onCloseModal:()=>{x(!1)}})]})},xn=t=>{const{ooui:r}=t,{mode:n,relation:s,views:o,required:i,context:a}=r;let c;const[u,d]=l.useState(!0),[h,f]=l.useState(),[g,S]=l.useState(new Map),y=l.useContext(Ve),{getContext:m}=y||{};et.default(()=>{v()},[r]);const w=async k=>o&&o[k]?o[k]:await K.getHandler().getView({model:s,type:k,context:{...m==null?void 0:m(),...a}}),v=async()=>{d(!0),f(void 0);try{if(n&&n.length>0){for(const k of n){const C=await w(k);g.set(k,C)}S(g)}else{const k=await w("form"),C=await w("tree");g.set("form",k),g.set("tree",C),S(g)}}catch(k){f(JSON.stringify(k))}finally{d(!1)}};if(n&&n.length>0?c=n[0]:c="tree",u)return e.jsx(p.Spin,{});if(h)return e.jsx(p.Alert,{className:"mt-10",message:h,type:"error",banner:!0});const _=async(k,C)=>{if(!C)throw new Error;if(!C.items)throw new Error;if(!Array.isArray(C.items))throw new Error;if(C.items.length===0)throw new Error};return e.jsx(Va,{initialView:c,children:e.jsx(ge,{required:i,type:"array",validator:_,...t,children:e.jsx(tl,{ooui:r,views:g})})})},{useToken:rl}=p.theme,Tn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,type:"number",...t,children:e.jsx(nl,{ooui:r})})},nl=t=>{const{ooui:r,value:n,onChange:s}=t,{id:o,readOnly:i,required:a}=r,{token:c}=rl(),u=a&&!i?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useRef(),[h,f]=l.useState(),g=l.useContext(Ve),{elementHasLostFocus:S}=g||{};l.useEffect(()=>{f(rn(n))},[n]);const y=v=>{s==null||s(v)};function m(v){d.current=v.target.value,f(v.target.value)}async function w(){y(sa(h)),await new Promise(v=>setTimeout(v,300)),S==null||S()}return e.jsx(p.Input,{value:h,disabled:i,className:"w-full",style:u,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(pr.FieldSet,{label:r.label,icon:o,children:e.jsx(Zt,{container:r.container,responsiveBehaviour:s})}):e.jsx(Zt,{container:r.container,responsiveBehaviour:s})})}const{TabPane:ol}=p.Tabs;function Fn(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(ol,{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:sl}=p.theme,{TextArea:or}=p.Input,On=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o,height:i,translatable:a}=r,{token:c}=sl(),u=o&&!s?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useContext(Ve),{elementHasLostFocus:h}=d||{};return e.jsx(ge,{required:o,...t,children:a?e.jsx(il,{field:n,height:i,requiredStyle:u}):e.jsx(or,{disabled:s||a,style:{minHeight:i?i+"px":"100%",...u},rows:4,onBlur:h})})},il=({value:t,field:r,requiredStyle:n,onChange:s,height:o})=>{const i=l.useContext(Ve),{activeId:a,activeModel:c,fetchValues:u,formHasChanges:d,elementHasLostFocus:h}=i||{},[f,g]=l.useState(!1),{t:S}=l.useContext(pe);return a?e.jsxs(e.Fragment,{children:[e.jsx("div",{onClick:()=>{if(d!=null&&d()){ze(S("saveBeforeTranslate"));return}f||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(Or,{id:a,model:c,field:r,visible:f,onCloseModal:()=>{g(!1)},onSubmitSucceed:()=>{g(!1),u==null||u()}})]}):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(Pe,{tooltip:S("translate"),icon:e.jsx(H.TranslationOutlined,{}),onClick:async()=>{d!=null&&d()?ze(S("saveBeforeTranslate")):ze(S("enterTextBeforeTranslate"))},children:S("translate")})})]})},_n=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]})})},al=({model:t,context:r,locale:n,selectedRegistersToExport:s,domain:o,limit:i,onClose:a})=>{const c=l.useRef({}),u=l.useRef(new Map),d=l.useCallback(async w=>{if(w.selectedKeys===void 0||w.selectedKeys.length===0){ze(be("selectAtLeastOneField",n));return}let v=o;w.registersAmount==="selected"&&(s==null?void 0:s.length)!==0&&(v=[["id","in",s==null?void 0:s.map(C=>C.id)]]);const{datas:_}=await K.getHandler().exportData({model:t,fields:hl({keys:w.selectedKeys,fields:c.current}),domain:v,limit:w.registersAmount==="all"?0:i,context:r,format:w.exportType});a(),await new Promise(C=>setTimeout(C,200));const k=await ot(_);Ft(_,k.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,Dn({fields:w})},[t,r,c]),f=l.useCallback(async w=>{const _=ir(w,c.current)[sr(w)],k=_.relation,C=await K.getHandler().getFields({model:k,context:r,fields:[]});for(const[V,M]of Object.entries(C))C[V].string=cl({parentTitle:_.string,title:M.string});return c.current[w]=C,Dn({fields:C,parentKey:w})},[c.current,t,r]),g=l.useCallback(async()=>{const w=await dl({model:t,context:r}),v=await fl({predefinedExports:w,fields:c.current,onGetFieldChilds:f});return{predefinedExports:w.map(k=>({...k,fields:k.fields.map(C=>{const V=sr(C.key),L=ir(C.key,c.current)[V];return{key:C.key,title:L.string}})})),keysWithChilds:v}},[c.current]),S=l.useCallback(async w=>{const v=await m("ir.exports"),_=await m("ir.exports.line"),k=await K.getHandler().create({model:"ir.exports",values:{name:w.name,resource:t},fields:v,context:r});return await Promise.all(w.fields.map(async C=>await K.getHandler().create({model:"ir.exports.line",values:{name:C.key,export_id:k},fields:_,context:r}))),{...w,id:k}},[]),y=l.useCallback(async w=>{await K.getHandler().delete({model:"ir.exports",ids:[w.id]})},[]),m=l.useCallback(async w=>{if(u.current.has(w))return u.current.get(w);const v=K.getHandler().getFields({model:w,context:r,fields:[]});u.current.set(w,v)},[u,r]);return{onGetFields:h,onGetFieldChilds:f,onExport:d,onGetPredefinedExports:g,onSavePredefinedExport:S,onRemovePredefinedExport:y}},Dn=({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=kn(o);n.push({key:ll({key:s,parentKey:r}),title:o.string,tooltip:o.help,required:o.required,isLeaf:!i})}return n},kn=t=>t.type==="many2one"||t.type==="one2many"||t.type==="many2many",ll=({parentKey:t,key:r})=>`${t?t+"/":""}${r}`,bt=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[bt(t)],cl=({title:t,parentTitle:r})=>`${r?r+" \u2192 ":""}${t}`,dl=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(u=>u.id===a).name}))}))},ul=({fields:t,keys:r})=>pl([...new Set(r.filter(n=>{var s,o,i;if(n.indexOf("/")===-1)return!((s=t["/"])!=null&&s[n]);{const a=bt(n);console.log({key:n,parentKey:a,fields:t});const c=(o=t==null?void 0:t[bt(n)])==null?void 0:o[n];return console.log({exists:c}),!((i=t==null?void 0:t[bt(n)])!=null&&i[n])}}).map(n=>bt(n)))]),fl=async({predefinedExports:t,fields:r,onGetFieldChilds:n})=>{const s=t.flatMap(a=>a.fields.map(c=>c.key)),o=ul({fields:r,keys:s}),i=[];for(const a of o)i.push({key:a,childs:await n(a)});return i},hl=({keys:t,fields:r})=>t.map(n=>{const s=sr(n),i=ir(n,r)[s];return kn(i)?`${n}/id`:n}),pl=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},Mn=t=>{const{visible:r,locale:n,onClose:s,model:o,context:i,selectedRegistersToExport:a,totalRegisters:c,domain:u,limit:d,visibleRegisters:h}=t,{onExport:f,onGetFieldChilds:g,onGetFields:S,onGetPredefinedExports:y,onSavePredefinedExport:m,onRemovePredefinedExport:w}=al({model:o,context:i,domain:u,limit:d,selectedRegistersToExport:a,onClose:s,locale:n});return e.jsx(pr.ExportModal,{visible:r,locale:n,onSucceed:f,onCancel:s,selectedRegistersToExport:a&&a.length&&a.length>0?a.length:void 0,totalRegisters:c,onGetFieldChilds:g,onGetFields:S,visibleRegisters:h,onGetPredefinedExports:y,onSavePredefinedExport:m,onRemovePredefinedExport:w})},Vn=t=>{const{ooui:r}=t;return e.jsx(fn,{ooui:r})},En=t=>{const{ooui:r}=t;return e.jsx(fn,{ooui:r,showTime:!0})};var In={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Qe,function(){var n={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},s=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,o=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,c={},u=function(m){return(m=+m)+(m>68?1900:2e3)},d=function(m){return function(w){this[m]=+w}},h=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=function(w){if(!w||w==="Z")return 0;var v=w.match(/([+-]|\d\d)/g),_=60*v[1]+(+v[2]||0);return _===0?0:v[0]==="+"?-_:_}(m)}],f=function(m){var w=c[m];return w&&(w.indexOf?w:w.s.concat(w.f))},g=function(m,w){var v,_=c.meridiem;if(_){for(var k=1;k<=24;k+=1)if(m.indexOf(_(k,0,w))>-1){v=k>12;break}}else v=m===(w?"pm":"PM");return v},S={A:[a,function(m){this.afternoon=g(m,!1)}],a:[a,function(m){this.afternoon=g(m,!0)}],S:[/\d/,function(m){this.milliseconds=100*+m}],SS:[o,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[i,d("seconds")],ss:[i,d("seconds")],m:[i,d("minutes")],mm:[i,d("minutes")],H:[i,d("hours")],h:[i,d("hours")],HH:[i,d("hours")],hh:[i,d("hours")],D:[i,d("day")],DD:[o,d("day")],Do:[a,function(m){var w=c.ordinal,v=m.match(/\d+/);if(this.day=v[0],w)for(var _=1;_<=31;_+=1)w(_).replace(/\[|\]/g,"")===m&&(this.day=_)}],M:[i,d("month")],MM:[o,d("month")],MMM:[a,function(m){var w=f("months"),v=(f("monthsShort")||w.map(function(_){return _.slice(0,3)})).indexOf(m)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(m){var w=f("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=u(m)}],YYYY:[/\d{4}/,d("year")],Z:h,ZZ:h};function y(m){var w,v;w=m,v=c&&c.formats;for(var _=(m=w.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(T,F,x){var N=x&&x.toUpperCase();return F||v[x]||n[x]||v[N].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(I,O,E){return O||E.slice(1)})})).match(s),k=_.length,C=0;C<k;C+=1){var V=_[C],M=S[V],L=M&&M[0],b=M&&M[1];_[C]=b?{regex:L,parser:b}:V.replace(/^\[|\]$/g,"")}return function(T){for(var F={},x=0,N=0;x<k;x+=1){var I=_[x];if(typeof I=="string")N+=I.length;else{var O=I.regex,E=I.parser,$=T.slice(N),D=O.exec($)[0];E.call(F,D),T=T.replace(D,"")}}return function(B){var A=B.afternoon;if(A!==void 0){var W=B.hours;A?W<12&&(B.hours+=12):W===12&&(B.hours=0),delete B.afternoon}}(F),F}}return function(m,w,v){v.p.customParseFormat=!0,m&&m.parseTwoDigitYear&&(u=m.parseTwoDigitYear);var _=w.prototype,k=_.parse;_.parse=function(C){var V=C.date,M=C.utc,L=C.args;this.$u=M;var b=L[1];if(typeof b=="string"){var T=L[2]===!0,F=L[3]===!0,x=T||F,N=L[2];F&&(N=L[2]),c=this.$locale(),!T&&N&&(c=v.Ls[N]),this.$d=function($,D,B){try{if(["x","X"].indexOf(D)>-1)return new Date((D==="X"?1e3:1)*$);var A=y(D)($),W=A.year,J=A.month,U=A.day,Z=A.hours,j=A.minutes,P=A.seconds,Y=A.milliseconds,te=A.zone,Q=new Date,ie=U||(W||J?1:Q.getDate()),ee=W||Q.getFullYear(),X=0;W&&!J||(X=J>0?J-1:Q.getMonth());var ue=Z||0,we=j||0,Ee=P||0,Te=Y||0;return te?new Date(Date.UTC(ee,X,ie,ue,we,Ee,Te+60*te.offset*1e3)):B?new Date(Date.UTC(ee,X,ie,ue,we,Ee,Te)):new Date(ee,X,ie,ue,we,Ee,Te)}catch{return new Date("")}}(V,b,M),this.init(),N&&N!==!0&&(this.$L=this.locale(N).$L),x&&V!=this.format(b)&&(this.$d=new Date("")),c={}}else if(b instanceof Array)for(var I=b.length,O=1;O<=I;O+=1){L[1]=b[O-1];var E=v.apply(this,L);if(E.isValid()){this.$d=E.$d,this.$L=E.$L,this.init();break}O===I&&(this.$d=new Date(""))}else k.call(this,C)}}})})(In);const gl=In.exports;Je.extend(gl);const An=t=>{const{ooui:r}=t;return e.jsx(ge,{...t,children:e.jsx(ml,{ooui:r})})},ml=t=>{const r=(n,s)=>{t.onChange&&t.onChange(s)};return e.jsx(p.TimePicker,{onChange:r,value:t.value?Je(t.value,"HH:mm:ss"):void 0})},$n=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,...t,children:e.jsx(yl,{ooui:r})})},yl=t=>{const{value:r,onChange:n,ooui:s}=t,{required:o,selectionValues:i,readOnly:a}=s,c=r==null?void 0:r.split(","),[u,d]=l.useState([]),[h,f]=l.useState();return l.useEffect(()=>{if(!r){f(void 0),d([]);return}const g=r&&c&&c[0],S=r&&c&&c[1]&&parseInt(c[1]);d([S,void 0]),f(g)},[r]),e.jsxs(p.Row,{gutter:8,wrap:!1,children:[e.jsx(p.Col,{flex:"1",children:e.jsx(_r,{ooui:new se.Selection({name:"model_selection",selection:i,readonly:a,required:o}),onChange:g=>{f(g);let S=u[0]||0;g!==h&&(d([]),S=0);const y=`${g},${S}`;y!==r&&(n==null||n(y))},value:h})}),e.jsx(p.Col,{flex:"3",children:e.jsx(yn,{ooui:new se.Many2one({name:"object_value",relation:h,readonly:a,required:o}),value:u,onChange:g=>{d(g);const S=`${h},${g[0]||0}`;S!==r&&(n==null||n(S))}})})]})},{useToken:wl}=p.theme,Ln=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,...t,children:e.jsx(vl,{ooui:r})})},vl=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o,required:i,filenameField:a}=r,{token:c}=wl(),u=i&&!o?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useRef(null),{setFieldValue:h,getFieldValue:f}=l.useContext(Ve)||{},{t:g}=l.useContext(pe),S=n?Js(n):"",y=k=>{s==null||s(k)};async function m(){const k=await ot(n),C=`data:${k==null?void 0:k.mime};base64,${n}`,V=document.createElement("a"),M=f(a),L=f("name");V.href=C,V.download=M||L,V.click()}async function w(){const k=await ot(n);Ft(n,k.mime)}async function v(k){k.stopPropagation(),k.preventDefault();const C=k.target.files[0],V=await Hr(C);y(V),a&&h(a,C.name)}function _(){h(a,void 0),y(void 0)}return e.jsxs(p.Row,{gutter:8,children:[e.jsxs(p.Col,{style:{paddingBottom:5},children:[e.jsx("input",{type:"file",id:"file",ref:d,style:{display:"none"},onChange:v}),e.jsx(p.Input,{type:"text",disabled:!0,style:u,value:S})]}),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(Pe,{tooltip:g("download"),disabled:!n,onClick:m,icon:e.jsx(H.DownloadOutlined,{})}),e.jsx(Pe,{tooltip:g("clear"),disabled:o||!n,onClick:_,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 Nn(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:u}=l.useContext(pe);function d(){const g=n.map((S,y)=>e.jsx(p.Menu.Item,{children:e.jsxs(p.Row,{wrap:!1,children:[e.jsx(p.Col,{flex:"none",style:{paddingRight:20},children:Nn(S)}),e.jsx(p.Col,{flex:"auto",style:{paddingRight:20},children:S.type.charAt(0).toUpperCase()+S.type.slice(1)}),e.jsx(p.Col,{flex:"none",children:e.jsx(H.CheckOutlined,{style:{opacity:r.view_id===S.view_id?1:0}})})]})},S.view_id||y));return e.jsx(p.Menu,{onClick:f,children:e.jsx(p.Menu.ItemGroup,{title:c("viewAs"),children:g})})}function h(g){if(i){wt({lang:u,onOk:()=>{g()}});return}g()}function f(g){h(()=>{const S=n.find(y=>y.view_id===parseInt(g.key));s(S)})}return e.jsxs("div",{style:{display:"flex"},children:[e.jsx(Pe,{tooltip:a?c("viewAs")+" "+c(a.type):"",icon:Nn(a),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:()=>{f({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 ft(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,f)=>h.name==="divider"?e.jsx(p.Menu.Divider,{},"divider"+f):e.jsx(p.Menu.Item,{children:h.name},h.id));return e.jsx(p.Menu,{onClick:u,children:e.jsx(p.Menu.ItemGroup,{title:n,children:d})})}function u(d){const h=s.find(f=>isNaN(d.key)?f.id===d.key:f.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 Be(t){const{onClick:r,disabled:n=!1,loading:s=!1,tooltip:o,icon:i,label:a,type:c="default"}=t,u=s?e.jsx(H.LoadingOutlined,{}):i;return e.jsxs(Pe,{type:c,tooltip:o,onClick:r,disabled:n,children:[u,a]})}function Pn(t){const{disabled:r=!1}=t,{formHasChanges:n,onNewClicked:s}=l.useContext(Ke),{t:o,lang:i}=l.useContext(pe),a=()=>{if(n){wt({lang:i,onOk:()=>{s()}});return}s()};return e.jsx(Be,{icon:e.jsx(H.FileAddOutlined,{}),tooltip:o("new"),onClick:a,disabled:r})}const{confirm:Sl}=p.Modal,Cl=({onOk:t,onCancel:r,lang:n})=>{Sl({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 Bn(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:u}=s;ze(e.jsxs("div",{children:["ID: "+a," ",e.jsx("br",{}),n("createdBy")+": "+i[1]," ",e.jsx("br",{}),n("creationDate")+": "+o," ",e.jsx("br",{}),n("lastUpdatedBy")+": "+u[1]," ",e.jsx("br",{}),n("lastUpdatedDate")+": "+c]}))}const bl=t=>{const{numberOfAttachments:r,disabled:n}=t,{t:s,lang:o}=l.useContext(pe),[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:u=>a(u),visible:i,placement:"bottom",content:xl(t,a,o),title:s("attachments"),arrowContent:null,children:c})},xl=(t,r,n)=>{const{attachments:s=[],loading:o,onAddNewAttachment:i,onopenAttachmentLink:a,onOpenAttachmentDetail:c,onListAllAttachments:u}=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),u()},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 Tl(t){const{attachments:r,disabled:n=!1,onAddNewAttachment:s,onListAllAttachments:o,onViewAttachmentDetails:i}=t,{formRef:a}=l.useContext(Ke),[c,u]=l.useState(!1),[d,h]=l.useState([]),[f,g]=l.useState(!1),{t:S}=l.useContext(pe),y=l.useCallback(async()=>{u(!0);try{const v=await K.getHandler().readObjects({model:"ir.attachment",ids:r.map(_=>_.id),fieldsToRetrieve:["name","datas_fname","link"],context:a.current.getContext()});h(v.map(_=>({id:_.id,name:_.name,datas_fname:_.datas_fname,link:_.link})))}catch(v){Le(v)}u(!1)},r),m=l.useCallback(async v=>{if(v.link){window.open(v.link);return}g(!0);let _;try{_=(await K.getHandler().readObjects({model:"ir.attachment",ids:[v.id],context:a.current.getContext()}))[0]}catch(k){Le(k)}if(g(!1),!!_)if(_.datas){const k=await ot(_.datas);Ft(_.datas,k.mime)}else i(_)},[]),w=l.useCallback(async v=>{i(v)},[]);return l.useEffect(()=>{y()},[y]),e.jsxs(e.Fragment,{children:[e.jsx(bl,{numberOfAttachments:r.length,attachments:d,disabled:n,loading:c,onAddNewAttachment:s,onListAllAttachments:o,onopenAttachmentLink:m,onOpenAttachmentDetail:w}),e.jsx(p.Modal,{title:S("downloadingAttachment"),open:f,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(p.Spin,{})})]})}function Hn({toolbar:t}){const{availableViews:r,currentView:n,setCurrentView:s,onFormSave:o,formHasChanges:i,formIsSaving:a,currentId:c,results:u,setCurrentItemIndex:d,currentItemIndex:h,setCurrentId:f,currentModel:g,setRemovingItem:S,removingItem:y,duplicatingItem:m,setDuplicatingItem:w,setResults:v,formIsLoading:_,attachments:k,formRef:C,setFormHasChanges:V,previousView:M,setPreviousView:L,goToResourceId:b}=l.useContext(Ke),{t:T,lang:F}=l.useContext(pe),x=l.useContext(ct),{processAction:N}=x||{},I=l.useContext(je),{openRelate:O,openDefaultActionForModel:E}=I||{};function $(P){if(i){Cl({lang:F,onOk:()=>{P()}});return}P()}function D(P){if(i){wt({lang:F,onOk:()=>{P()}});return}P()}function B(){u&&u.length>h+1?(d==null||d(h+1),f==null||f(u[h+1].id)):u&&h+1===u.length&&(d==null||d(0),f==null||f(u[0].id))}function A(){u&&h>0?(d==null||d(h-1),f==null||f(u[h-1].id)):u&&h===0&&(d==null||d(u.length-1),f==null||f(u[u.length-1].id))}function W(){nt({confirmMessage:T("confirmRemoveItem"),lang:F,onOk:()=>{J()}})}async function J(){try{S==null||S(!0),await K.getHandler().delete({model:g,ids:[c]});const P=u==null?void 0:u.filter(te=>te.id!==c);v==null||v(P);let Y=0;h>0&&h<=u.length-1&&(Y=h-1),P!=null&&P[Y]?(f==null||f(P==null?void 0:P[Y].id),d==null||d(Y)):(f==null||f(void 0),d==null||d(void 0))}catch(P){kt(JSON.stringify(P))}finally{S==null||S(!1)}}async function U(){try{w==null||w(!0);const P=await K.getHandler().duplicate({id:c,model:g,context:C.current.getContext()});P&&await(b==null?void 0:b(P))}catch(P){kt(JSON.stringify(P))}finally{w==null||w(!1)}}const Z=a||y||_||m;function j(P){N==null||N({actionData:P,values:C.current.getValues(),fields:C.current.getFields(),context:C.current.getContext(),onRefreshParentValues:()=>{C.current.fetchValues()}})}return n?e.jsxs(p.Space,{wrap:!0,children:[_&&e.jsxs(e.Fragment,{children:[e.jsx(p.Spin,{}),ht(),ht()]}),e.jsx(Pn,{disabled:a||_||y||m}),e.jsx(Be,{icon:e.jsx(H.SaveOutlined,{}),tooltip:T("save"),disabled:!i||Z,loading:a,onClick:o}),e.jsx(Be,{icon:e.jsx(H.CopyOutlined,{}),tooltip:T("duplicate"),disabled:i||a||c===void 0||m||_,loading:m,onClick:U}),e.jsx(Be,{icon:e.jsx(H.DeleteOutlined,{}),tooltip:T("delete"),disabled:a||c===void 0||y||m||_,loading:y,onClick:W}),ht(),e.jsx(Be,{icon:e.jsx(H.InfoCircleOutlined,{}),tooltip:T("showLogs"),disabled:a||c===void 0||y||m||_,loading:!1,onClick:()=>{Bn(g,c,T)}}),e.jsx(Be,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:T("refresh"),disabled:a||c===void 0||y||m||_,loading:!1,onClick:()=>{$(()=>{C.current.fetchValues()})}}),ht(),e.jsx(lr,{currentView:n,previousView:M,availableViews:r,onChangeView:P=>{L==null||L(n),V==null||V(!1),s==null||s(P)},disabled:Z,formHasChanges:i}),ht(),e.jsxs(p.Space,{children:[e.jsx(Be,{icon:e.jsx(H.LeftOutlined,{}),tooltip:T("previous"),disabled:Z,loading:!1,onClick:()=>{D(A)}}),e.jsx(Be,{icon:e.jsx(H.RightOutlined,{}),tooltip:T("next"),disabled:Z,loading:!1,onClick:()=>{D(B)}})]}),ht(),e.jsx(ft,{icon:e.jsx(H.ThunderboltOutlined,{}),disabled:Z,tooltip:T("actions"),items:t==null?void 0:t.action,onItemClick:async P=>{!P||!(await pt({onFormSave:o})).succeed||j(P)}}),e.jsx(ft,{icon:e.jsx(H.PrinterOutlined,{}),disabled:Z,tooltip:T("reports"),items:t==null?void 0:t.print,onItemClick:async P=>{if(!P)return;const Y=await pt({onFormSave:o});!Y.succeed||j({...P,datas:{...P.datas||{},ids:[Y.currentId]}})}}),e.jsx(ft,{icon:e.jsx(H.EnterOutlined,{}),disabled:Z,tooltip:T("related"),items:t==null?void 0:t.relate,onItemClick:async P=>{!P||!(await pt({onFormSave:o})).succeed||O({relateData:P,values:C.current.getValues(),fields:C.current.getFields(),action_id:P.id,action_type:P.type})}}),e.jsx(Tl,{disabled:Z,attachments:k,onAddNewAttachment:async()=>{const P=await pt({onFormSave:o});if(!P.succeed)return;const Y=P.currentId,te=g;E({model:"ir.attachment",values:{selection_associated_object:`${te},${Y}`},forced_values:{res_model:te,res_id:Y},initialViewType:"form"})},onListAllAttachments:async()=>{const P=await pt({onFormSave:o});if(!P.succeed)return;const Y=P.currentId;E({model:"ir.attachment",domain:[["res_model","=",`${g}`],["res_id","=",`${Y}`]],initialViewType:"tree"})},onViewAttachmentDetails:async P=>{!(await pt({onFormSave:o})).succeed||E({model:"ir.attachment",res_id:P.id,initialViewType:"form"})}})]}):null}function ht(){return e.jsx("div",{className:"inline-block w-2"})}async function pt({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:Fl}=p.theme,Kn=t=>{const{ooui:r,value:n,onChange:s,valueValidator:o,linkPrefix:i=""}=t,{id:a,readOnly:c,required:u}=r,{token:d}=Fl(),h=u&&!c?{backgroundColor:d.colorPrimaryBg}:void 0,f=l.useContext(Ve),{elementHasLostFocus:g}=f||{},[S,y]=l.useState(!1),[m,w]=l.useState(!1);l.useEffect(()=>{c&&!S&&w(!1),!n&&!c&&(y(!0),w(!0))},[S,c]);const v=_=>{s==null||s(_.target.value)};return e.jsxs(p.Row,{gutter:8,wrap:!1,align:"middle",children:[c?null:e.jsx(p.Col,{flex:"32px",children:S?e.jsx(p.Button,{icon:e.jsx(H.CheckOutlined,{}),onClick:()=>{o(n)&&(y(!1),w(!1))},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1}):e.jsx(p.Button,{icon:e.jsx(H.EditOutlined,{}),onClick:()=>{y(!0),w(!0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1})}),e.jsx(p.Col,{flex:"auto",children:m?e.jsx(p.Input,{style:{borderTopLeftRadius:0,borderBottomLeftRadius:0,...h},id:a,onChange:v,value:n,onBlur:()=>{o(n)&&(y(!1),w(!1),g==null||g())}}):e.jsx("a",{href:`${i}${n}`,style:{color:d.colorPrimary,paddingRight:15},target:"_blank",children:n})})]})},Yn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,...t,children:e.jsx(Kn,{ooui:r,valueValidator:s=>s?Co.default(s):!1})})},Wn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,...t,children:e.jsx(Kn,{ooui:r,linkPrefix:"mailto:",valueValidator:s=>s?bo.default(s):!1})})},Ol=t=>{const{visible:r,onIdSubmitted:n,onCancel:s,isSearching:o}=t,{t:i}=l.useContext(pe),a=l.useRef();function c(u){n(u.id)}return e.jsx(p.Modal,{title:i("goToResourceId"),centered:!0,open:r,footer:null,destroyOnClose:!0,onCancel:s,maskClosable:!1,afterOpenChange:u=>{var d;return u&&((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:_l}=p.theme;function qn(t){const{badgeNumber:r=0,...n}=t,{token:s}=_l();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(Pe,{...n,style:{width:46,zIndex:0}})]})}function Dl({refreshGraph:t}){const{t:r}=l.useContext(pe),{availableViews:n,currentView:s,setCurrentView:o,searchParams:i,searchVisible:a,setSearchVisible:c,graphIsLoading:u,previousView:d,setPreviousView:h}=l.useContext(Ke);return e.jsxs(p.Space,{wrap:!0,children:[e.jsx(qn,{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:u,badgeNumber:i==null?void 0:i.length}),e.jsx(Be,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:r("refresh"),disabled:u,loading:!1,onClick:()=>{t()}}),e.jsx(lr,{currentView:s,availableViews:n,onChangeView:f=>{h==null||h(s),o==null||o(f)},disabled:!1,previousView:d})]})}const{useToken:kl}=p.theme,{Title:Ml,Text:$t}=p.Typography;function Lt(t){const{title:r,children:n}=t,{title:s,currentView:o,currentId:i,currentItemIndex:a,results:c,totalItems:u,selectedRowItems:d}=l.useContext(Ke),{t:h}=l.useContext(pe),{token:f}=kl();function g(){if((o==null?void 0:o.type)==="form")return i?u===0?e.jsxs(e.Fragment,{children:[h("editingDocument")," (id:"," ",e.jsx($t,{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")," ",u," - ",h("editingDocument")," (id:"," ",e.jsx($t,{copyable:!0,children:i}),")"]}):"";if((o==null?void 0:o.type)==="tree"&&d){if(d.length===1)return e.jsxs(e.Fragment,{children:["1 ",h("selectedRegisters")," - (id:"," ",e.jsx($t,{copyable:!0,children:d[0].id}),")"]});if(d.length>1)return e.jsxs(e.Fragment,{children:[d.length," ",h("selectedRegisters"),e.jsx($t,{copyable:{text:d.map(S=>S.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:f.borderRadius,backgroundColor:f.colorPrimaryBg},align:"middle",children:[e.jsxs(p.Col,{flex:2,children:[e.jsx(Ml,{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 Vl=t=>{const{viewData:r,visible:n,model:s,context:o,domain:i,formView:a,treeView:c}=t,u=l.useRef(),d=l.useContext(Ke),{setResults:h=void 0,setCurrentItemIndex:f=void 0,currentId:g=void 0,results:S=void 0,setSelectedRowItems:y=void 0,setSearchParams:m=void 0,searchVisible:w=!0,setSearchVisible:v=void 0,sorter:_=void 0,setSorter:k=void 0,setTotalItems:C=void 0,setSearchTreeNameSearch:V=void 0,setTreeIsLoading:M=void 0,limit:L,setLimit:b,searchParams:T,searchValues:F,setSearchValues:x,currentView:N}=d||{},[I,O]=l.useState(!0);l.useEffect(()=>{var W;(W=u.current)==null||W.refresh()},[T]),l.useEffect(()=>{r.view_id!==N.view_id&&O(!0)},[N]);const{clear:E,searchFilterLoading:$,searchError:D,offset:B,tableRefreshing:A}=Qr({model:s,setSearchTreeNameSearch:V,setSelectedRowItems:y,searchParams:T,setSearchValues:x,setSearchParams:m,setSearchVisible:v,setTreeIsLoading:M,context:o,formView:a,treeView:c,sorter:_,setSorter:k,setCurrentItemIndex:f,setResultsActionView:h,resultsActionView:S,domain:i,currentId:g,setActionViewTotalItems:C,limit:L,setLimit:b});return!n||!r?null:e.jsxs(e.Fragment,{children:[e.jsx(Lt,{title:r.name,children:e.jsx(Dl,{refreshGraph:()=>{u.current.refresh()}})}),e.jsx(Qt,{fields:{...c.fields,...a.fields},searchFields:Gr([a.search_fields,c.search_fields]),formXml:a.arch,limit:L,onClear:E,offset:B,isSearching:$,onSubmit:W=>{O(!1),m==null||m(W.params),v==null||v(!1)},searchError:D,searchVisible:w,searchValues:F,showLimitOptions:!1}),A?e.jsx(p.Spin,{}):e.jsx(At,{ref:u,view_id:r.view_id,model:s,context:o,domain:Dt(T||[],i),limit:I?L:void 0,manualIds:I?S==null?void 0:S.map(W=>W.id):void 0})]})},El=t=>{const{visible:r,formRef:n,model:s,currentId:o,domain:i,formView:a,context:c,defaultValues:u,forcedValues:d,results:h,setResults:f,setCurrentItemIndex:g}=t;return r?e.jsxs(e.Fragment,{children:[e.jsx(Lt,{children:e.jsx(Hn,{toolbar:a==null?void 0:a.toolbar})}),e.jsx(dt,{rootForm:!0,ref:n,model:s,defaultValues:u,forcedValues:d,formView:a,actionDomain:i,id:o,parentContext:c,onSubmitSucceed:(S,y)=>{h.findIndex(w=>w.id===S)===-1&&(h.push(y),f(h),g(h.length-1))}})]}):null};function Il(t){const{onSearch:r,disabled:n=!1,searchText:s}=t,{t:o}=l.useContext(pe),[i]=p.Form.useForm(),[a,c]=l.useState(!1);function u(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:u,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 Gn=He.default.createContext({previewFeatures:!1});function Al(t){var Z;const{availableViews:r,currentView:n,setCurrentView:s,selectedRowItems:o,setRemovingItem:i,removingItem:a,duplicatingItem:c,setDuplicatingItem:u,currentModel:d,searchTreeRef:h,setCurrentId:f,setCurrentItemIndex:g,searchParams:S,searchVisible:y,setSearchVisible:m,setSearchTreeNameSearch:w,searchTreeNameSearch:v,treeIsLoading:_,setPreviousView:k,previousView:C,results:V,limit:M,totalItems:L}=l.useContext(Ke),{parentContext:b={},treeExpandable:T,toolbar:F}=t,{previewFeatures:x}=l.useContext(Gn),{t:N,lang:I}=l.useContext(pe),O=l.useContext(ct),{processAction:E}=O||{},[$,D]=l.useState(!1),B=v!==void 0&&v.trim().length>0;function A(){nt({confirmMessage:N("confirmRemove"),lang:I,onOk:()=>{W()}})}async function W(){var j;try{i==null||i(!0),await K.getHandler().delete({model:d,ids:o.map(P=>P.id)}),f==null||f(void 0),g==null||g(void 0),(j=h==null?void 0:h.current)==null||j.refreshResults()}catch(P){Le(P)}finally{i==null||i(!1)}}async function J(){var j;try{u==null||u(!0);const P=o[0].id;await K.getHandler().duplicate({id:P,model:d,context:{...b}})&&((j=h==null?void 0:h.current)==null||j.refreshResults())}catch(P){Le(P)}finally{u==null||u(!1)}}function U(j){E==null||E({actionData:j,values:{active_id:o==null?void 0:o.map(P=>P.id)[0],active_ids:o==null?void 0:o.map(P=>P.id)},fields:{},context:{...b,active_id:o==null?void 0:o.map(P=>P.id)[0],active_ids:o==null?void 0:o.map(P=>P.id)},onRefreshParentValues:()=>{var P;(P=h==null?void 0:h.current)==null||P.refreshResults()}})}return e.jsxs(p.Space,{wrap:!0,children:[T?null:e.jsxs(e.Fragment,{children:[e.jsx(Il,{disabled:c||a||_,searchText:v,onSearch:j=>{j&&j.trim().length>0?w==null||w(j):w==null||w(void 0)}}),!T&&e.jsx(qn,{icon:e.jsx(H.FilterOutlined,{style:{color:y?"white":void 0}}),tooltip:N("advanced_search"),type:y?"primary":"default",onClick:()=>{m==null||m(!y)},disabled:c||a||_,badgeNumber:S==null?void 0:S.length}),xt(),e.jsx(Pn,{disabled:_}),e.jsx(Be,{icon:e.jsx(H.CopyOutlined,{}),tooltip:N("duplicate"),disabled:!o||(o==null?void 0:o.length)!==1||c||_,loading:c,onClick:J}),e.jsx(Be,{icon:e.jsx(H.DeleteOutlined,{}),tooltip:N("delete"),disabled:!(o&&(o==null?void 0:o.length)>0)||_,loading:a,onClick:A}),xt()]}),e.jsx(Be,{icon:e.jsx(H.InfoCircleOutlined,{}),tooltip:N("showLogs"),disabled:!(o&&(o==null?void 0:o.length)>0)||_,loading:!1,onClick:()=>{Bn(d,o[0].id,N)}}),e.jsx(Be,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:N("refresh"),disabled:c||a||_,loading:!1,onClick:()=>{var j;(j=h==null?void 0:h.current)==null||j.refreshResults()}}),!T&&e.jsxs(e.Fragment,{children:[xt(),e.jsx(lr,{currentView:n,availableViews:r,onChangeView:j=>{k==null||k(n),s==null||s(j)},previousView:C,disabled:_})]}),xt(),e.jsx(ft,{icon:e.jsx(H.ThunderboltOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||_,tooltip:N("actions"),items:F==null?void 0:F.action,onItemClick:j=>{!j||U(j)}}),e.jsx(ft,{icon:e.jsx(H.PrinterOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||_,tooltip:N("reports"),items:F==null?void 0:F.print,onItemClick:j=>{!j||U({...j,datas:{...j.datas||{},ids:o.map(P=>P.id)}})}}),x&&e.jsxs(e.Fragment,{children:[xt(),e.jsx(ft,{icon:e.jsx(vr.default,{component:()=>e.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",className:"icon icon-tabler icon-tabler-database-export",width:"1em",height:"1em",viewBox:"0 0 24 24",strokeWidth:"1.5",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),e.jsx("ellipse",{cx:"12",cy:"6",rx:"8",ry:"3"}),e.jsx("path",{d:"M4 6v6c0 1.657 3.582 3 8 3a19.84 19.84 0 0 0 3.302 -.267m4.698 -2.733v-6"}),e.jsx("path",{d:"M4 12v6c0 1.599 3.335 2.905 7.538 2.995m8.462 -6.995v-2m-6 7h7m-3 -3l3 3l-3 3"})]})}),tooltip:N("export"),items:[{id:"print_screen",name:N("printScreen")},{id:"export",name:N("advancedExport")}],onItemClick:j=>{if(j.id==="print_screen"){let P=(o==null?void 0:o.map(Y=>Y.id))||[];P.length===0&&(P=(V==null?void 0:V.map(Y=>Y.id))||[]),U({id:-1,model:d,report_name:"printscreen.list",type:"ir.actions.report.xml",datas:{model:d,ids:P}});return}D(!0)},disabled:c||a||_||B}),e.jsx(Mn,{visible:$,locale:I,onClose:()=>D(!1),model:d,domain:Dt(((Z=h==null?void 0:h.current)==null?void 0:Z.getDomain())||[],S||[]),limit:M,totalRegisters:L||0,selectedRegistersToExport:o,visibleRegisters:(V==null?void 0:V.length)||0,context:b})]})]})}function xt(){return e.jsx("div",{className:"inline-block w-2"})}const $l=t=>{const{visible:r,searchTreeRef:n,model:s,context:o,formView:i,treeView:a,domain:c,setCurrentItemIndex:u,results:d,setCurrentId:h,setCurrentView:f,availableViews:g,searchTreeNameSearch:S}=t,{currentView:y,setPreviousView:m}=l.useContext(Ke);return r?e.jsxs(e.Fragment,{children:[e.jsx(Lt,{children:e.jsx(Al,{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:S,formView:i,treeView:a,domain:c,onRowClicked:w=>{const{id:v}=w;h(v);const _=d.findIndex(C=>C.id===v);m==null||m(y),u(_);const k=g.find(C=>C.type==="form");f(k)}})]}):null},cr=He.default.createContext(null),Ll=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 Nl(){const{isLoading:t,dashboardRef:r,moveItemsEnabled:n,setMoveItemsEnabled:s}=l.useContext(cr),{t:o}=l.useContext(pe);return e.jsxs(p.Space,{wrap:!0,children:[e.jsx(Be,{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)}}),Pl(),e.jsx(Be,{icon:e.jsx(H.SettingOutlined,{}),tooltip:o("configDashboard"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.configDashboard()}}),e.jsx(Be,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:o("refresh"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.refresh()}})]})}function Pl(){return e.jsx("div",{className:"inline-block w-2"})}const Bl=t=>{const{dashboardData:r}=t,n=l.useRef(),s=l.useContext(je),{openShortcut:o}=s||{};return r?e.jsxs(Ll,{dashboardRef:n,openAction:i=>{o(i)},children:[e.jsx(Lt,{children:e.jsx(Nl,{})}),e.jsx(Jn,{ref:n,model:r.model,id:r.id,context:r==null?void 0:r.context,configAction:r==null?void 0:r.configAction})]}):null};async function Hl(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 Kl(t,r){const{domain:n,model:s,context:o,views:i,title:a,setCanWeClose:c,tabKey:u,initialView:d,formDefaultValues:h,formForcedValues:f={},res_id:g=!1,action_id:S,action_type:y,treeExpandable:m=!1,limit:w}=t,[v,_]=l.useState(),[k,C]=l.useState([]),[V,M]=l.useState(!0),L=g||void 0,[b,T]=l.useState(L),[F,x]=l.useState([]),[N,I]=l.useState(),[O,E]=l.useState([]),[$,D]=l.useState(),[B,A]=l.useState(0),[W,J]=l.useState(!1),[U,Z]=l.useState(!1),[j,P]=l.useState(),{t:Y}=l.useContext(pe),te=l.useRef(),Q=l.useRef(),ie=l.useContext(je),{setCurrentView:ee,setCurrentId:X,tabs:ue,activeKey:we,openAction:Ee,onRemoveTab:Te}=ie||{};yo.useHotkeys("ctrl+g,command+g",re=>{re.preventDefault(),Fe()},[we,ue,v,N,O]);function Ie(re){T(re),X==null||X(re)}function me(re){_(re),ee==null||ee(re)}l.useImperativeHandle(r,()=>({canWeClose:Se}));const ae=async()=>{M(!0);const re=[],xe=[];for(const fe of i){const[Ce,de]=fe;de!=="dashboard"?xe.push({viewTuple:fe,promise:K.getHandler().getView({model:s,type:de,id:Ce,context:o})}):xe.push({viewTuple:fe})}const Me=await Hl(xe);for(const fe of Me){if(!fe)continue;const[,Ce]=fe.viewTuple;let de=fe.info;switch(Ce){case"dashboard":{const Ye=i.find(Xe=>{const[,R]=Xe;return R==="form"});let $e;Ye&&($e={action_id:S,action_type:y,name:a,res_id:o.active_id,res_model:s,view_id:Ye[0],view_type:Ye[1]}),re.push({type:"dashboard",id:o.active_id,model:s,context:o,configAction:$e});break}case"form":{re.push({...de,type:Ce});break}case"tree":{re.push({...de,isExpandable:m,type:Ce});break}case"graph":{re.push({...de,type:Ce});break}}}let ce;!d&&re.find(fe=>fe.type==="tree")?ce=re.find(Ce=>Ce.type==="tree"):d?ce=re.find(Ce=>d.id?Ce.type===d.type&&Ce.view_id===d.id:Ce.type===d.type):ce=re.find(Ce=>Ce.type==="form"),ce||(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`),Te==null||Te(u)),me(ce),C(re),M(!1)};c({tabKey:u,canWeClose:Se}),l.useEffect(()=>{const re=k.find(Me=>Me.type==="tree"),xe=k.find(Me=>d.id?Me.type===d.type&&Me.view_id===d.id:Me.type===d.type);me(xe||re),g?X==null||X(L):(Ie(void 0),I(void 0)),ae()},[s,i,g]),l.useEffect(()=>{we===u&&(X==null||X(b),ee==null||ee(v))},[ue,we]);async function Se(){return v&&v.type==="form"?await te.current.cancelUnsavedChanges():!0}async function Fe(){we===u&&(v.type==="form"&&!await te.current.cancelUnsavedChanges()||J(!0))}async function Oe(re){var fe;Z(!0);const xe=O.findIndex(Ce=>Ce.id===re);let Me;if(xe===-1){try{Me=(fe=await K.getHandler().readObjects({model:s,ids:[re],context:o}))==null?void 0:fe[0]}catch{}if(!Me){Z(!1),J(!1),ze(Y("idNotFound"));return}}else Me=O[xe];Z(!1),J(!1);const ce=i.find(Ce=>Ce[1]==="form");Ee({domain:[],context:o,model:s,views:i,title:a,target:"current",initialView:{id:ce==null?void 0:ce[0],type:"form"},action_id:S,action_type:y,res_id:re})}function Ae(){return k.map(re=>{switch(re.type){case"form":return e.jsx(El,{formRef:te,currentId:b,visible:v.type===re.type&&v.view_id===re.view_id,formView:re,model:s,context:o,domain:n,defaultValues:h,forcedValues:f,results:O,setResults:E,setCurrentItemIndex:I},`${re.type}-${re.view_id}`);case"tree":return e.jsx($l,{visible:v.type===re.type&&v.view_id===re.view_id,limit:w,model:s,context:o,domain:n,formView:k.find(xe=>xe.type==="form"),treeView:re,searchTreeRef:Q,searchTreeNameSearch:j,availableViews:k,results:O,setCurrentItemIndex:I,setCurrentId:Ie,setCurrentView:me},`${re.type}-${re.view_id}`);case"graph":return e.jsx(Vl,{visible:v.type===re.type&&v.view_id===re.view_id,viewData:re,model:s,context:o,domain:n,treeView:k.find(xe=>xe.type==="tree"),formView:k.find(xe=>xe.type==="form")},`${re.type}-${re.view_id}`);case"dashboard":return e.jsx(Bl,{dashboardData:re},`${re.type}-${re.view_id}`)}})}function Ne(){if(b===void 0&&v.type==="form")te.current.clearAndReload();else{Ie(void 0);const re=k.find(xe=>xe.type==="form");me(re)}}return V?e.jsx(p.Spin,{}):v?e.jsxs($i,{title:a,currentView:v,setCurrentView:me,availableViews:k,formRef:te,searchTreeRef:Q,onNewClicked:Ne,currentId:b,setCurrentId:Ie,setCurrentItemIndex:I,currentItemIndex:N,results:O,setResults:E,currentModel:s,sorter:$,setSorter:D,totalItems:B,setTotalItems:A,selectedRowItems:F,setSelectedRowItems:x,setSearchTreeNameSearch:P,searchTreeNameSearch:j,goToResourceId:Oe,limit:w,children:[Ae(),e.jsx(Ol,{visible:W,onIdSubmitted:Oe,isSearching:U,onCancel:()=>{J(!1)}})]}):null}const Un=l.forwardRef(Kl);async function Yl({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:u,views:d,name:h,limit:f,view_type:g}=i,S=g==="tree",y=[];for(const _ of d){const[k,C]=_;if(k)y.push(_);else{const{view_id:V}=await K.getHandler().getView({model:u,type:C,id:k,context:{...r,...a}});y.push([V,C])}}const[m,w]=y[0],v={id:m,type:w};return{title:h,actionId:t,actionType:s,key:mr.v4(),views:d,model:u,context:{...r,...a},domain:c,initialView:v,limit:f,treeExpandable:S}}const Ac="",Wl=gr.WidthProvider(gr.Responsive),jn=t=>{const{children:r=[],onPositionItemsChanged:n}=t,s=He.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(Wl,{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:ql}=p.theme,{Text:Gl}=p.Typography,zn=t=>{const{title:r,children:n,action:s,openAction:o}=t,{token:i}=ql();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(Gl,{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]})},Ul=80;function jl(t){const{action:r,model:n,view_id:s,onRowClicked:o,domain:i=[],visible:a=!0,parentContext:c={}}=t,[u,d]=l.useState(!1),[h,f]=l.useState(!1),[g,S]=l.useState(),[y,m]=l.useState(),[w,v]=l.useState(),[_,k]=l.useState(1),[C,V]=l.useState(0),M=l.useRef(Ul),L=l.useRef([]),[b,T]=l.useState(0),[F,x]=l.useState([]),[N,I]=l.useState(void 0),[O,E]=l.useState(),[$,D]=l.useState(),[B,A]=l.useState(),[W,J]=l.useState(!1),U=l.useRef([]),Z=X=>{J(!0),k(X),V((X-1)*M.current)},j=async()=>{const X=U.current.length>0?U.current:i,ue=Dt(L.current,X),{colors:we}=st(y),{totalItems:Ee,results:Te,attrsEvaluated:Ie}=await K.getHandler().searchForTree({params:ue,limit:M.current,offset:C,model:g,fields:y.fields,context:c,attrs:we&&{colors:we}});I(Ot(Ie));const me=it({resultsToSort:Te,sorter:O,fields:{...y.fields,...w.fields}});J(!1),x(me);const ae=await Ee;T(ae)},P=async()=>{try{J(!0),await j()}catch(X){D(JSON.stringify(X))}};l.useEffect(()=>{!h||a&&P()},[_,C,h,a]);const Y=async X=>{f(!1),d(!0),A(void 0);try{X==="action"?await te():await Q(),f(!0)}catch(ue){A(ue)}finally{d(!1)}},te=async()=>{const X=await K.getHandler().getViewsForAction({action:r,context:c});U.current=X.domain,v(X.views.get("form")),m(X.views.get("tree")),S(X.model),M.current=X.limit},Q=async()=>{S(n);const X=await K.getHandler().getView({model:n,type:"form",context:c});v(X);const ue=await K.getHandler().getView({model:n,type:"tree",id:s,context:c});m(ue)};l.useEffect(()=>{r?Y("action"):n&&Y("model")},[r,n]);const ie=X=>{const{id:ue}=X;o({id:ue,model:g,treeView:y})},ee=()=>!y||!w?null:e.jsxs("div",{style:{overflowY:"scroll"},children:[$&&e.jsx(p.Alert,{className:"mt-10",message:$,type:"error",banner:!0}),e.jsx(Ct,{showPagination:!1,total:b,limit:M.current,page:_,treeView:y,results:F,onRequestPageChange:Z,loading:W,onRowClicked:ie,colorsForResults:N,sorter:O,onChangeSort:X=>{E==null||E(X);const ue=it({resultsToSort:F,sorter:X,fields:{...y.fields,...w.fields}});x(ue)},context:c})]});return B?e.jsx(p.Alert,{className:"mt-10",message:B,type:"error",banner:!0}):u?e.jsx(p.Spin,{style:{padding:"2rem"}}):ee()}const zl=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(dt,{...t,model:r,id:n,readOnly:!0})})},dr="line_ids";function Jl(t,r){const{model:n,context:s={},id:o,configAction:i}=t,[a,c]=l.useState([]),[u,d]=l.useState(!1),[h,f]=l.useState(),{setIsLoading:g,openAction:S,moveItemsEnabled:y}=l.useContext(cr),m=l.useRef(),w=l.useRef();l.useEffect(()=>{v()},[n,o,s]),l.useImperativeHandle(r,()=>({refresh:()=>{v()},configDashboard:L}));async function v(){d(!0),g(!0),f(void 0);try{const b=await _(),T=await C(b),F=b.fields[dr].relation,x=T[dr].items;w.current=b.fields;const N=await k({items:x,model:F,context:s}),I=await V(N);c(I),d(!1),g(!1)}catch(b){f(JSON.stringify(b))}}async function _(){return await K.getHandler().getView({model:n,type:"form",context:s})}async function k({items:b,model:T,context:F}){m.current=(await K.getHandler().getView({model:T,type:"form",context:F})).fields;const[x]=await zt({treeView:{fields:m.current},formView:{fields:m.current},model:T,items:b,context:F,currentView:"form"});return x}async function C(b){return(await K.getHandler().readObjects({model:n,ids:[o],fields:b.fields,context:s}))[0]}async function V(b){const T=[];for(const F of b){const{values:x}=F;if(x.action_id&&x.action_id.length>0){const N=parseInt(x.action_id[0],10),I=await Yl({actionId:N,rootContext:s});T.push({...F,actionData:I})}}return T}async function M(b){if(!y)return;const T=b.filter(I=>{const O=a.find($=>$.id===I.id);if(!O)return!1;if(!O.position)return!0;const E={...JSON.parse(O.position.replace(/'/g,'"')),id:O.id};return JSON.stringify(I)!==JSON.stringify(E)});if(T.length===0)return;const x=a.filter(I=>T.map(O=>O.id).includes(I.id)).map(I=>{const O={...T.find(E=>E.id===I.id)};return delete O.id,{...I},{...I,operation:"pendingUpdate",values:{...I.values,position:JSON.stringify(O).replace(/"/g,"'")}}}),N={fields:m.current,items:x};await K.getHandler().update({model:n,id:o,values:{[dr]:N},fields:w.current,context:s})}async function L(){S(i)}return h?(console.log(h),e.jsx(p.Alert,{className:"mt-10 mb-20",message:h,type:"error",banner:!0})):u?e.jsx(H.LoadingOutlined,{}):e.jsx(jn,{onPositionItemsChanged:M,children:a.map((b,T)=>{const{actionData:F,values:x}=b,{position:N,id:I}=x,{actionId:O,actionType:E,key:$,title:D,views:B,model:A,context:W,domain:J,initialView:U,limit:Z}=F;let j={};try{j=JSON.parse(N.replace(/'/g,'"'))}catch{j={x:T*2,y:0,w:2,h:3}}let P=null;if((U==null?void 0:U.type)==="graph")P=e.jsx(At,{view_id:B.filter(Q=>Q[1]==="graph")[0][0],model:A,context:W,domain:J,limit:Z});else if((U==null?void 0:U.type)==="form")P=e.jsx(zl,{model:A,actionDomain:J});else if((U==null?void 0:U.type)==="tree")P=e.jsx(jl,{model:A,domain:J,view_id:B.filter(Q=>Q[1]==="tree")[0][0],onRowClicked:Q=>{const ie=B.find(ee=>{const[,X]=ee;return X==="form"});if(ie){const[ee,X]=ie,{actionId:ue,actionType:we,title:Ee,model:Te}=F,Ie={action_id:ue,action_type:we,name:Ee,res_id:Q.id,res_model:Te,view_id:ee,view_type:X};S(Ie)}}});else if(U!==void 0){const Q=U&&Array.isArray(U.id)?{...U,id:U.id[0]}:U;P=e.jsx(Un,{action_id:O,action_type:E,tabKey:$,title:D,views:B,model:A,context:W,domain:J,setCanWeClose:()=>{},initialView:Q,limit:Z})}let Y;const te=B.find(Q=>{const[,ie]=Q;return ie==="tree"});if(te){const[Q,ie]=te,{actionId:ee,actionType:X,title:ue,model:we}=F;Y={action_id:ee,action_type:X,name:ue,res_id:!1,res_model:we,view_id:Q,view_type:ie}}return e.jsx(zn,{id:I,title:D,parms:j,action:Y,openAction:S,children:P},I)})})}const Jn=l.forwardRef(Jl),Zn=t=>{const{ooui:r}=t;return e.jsx(ge,{type:"array",...t,children:e.jsx(Zl,{ooui:r})})},Zl=t=>{const{value:r,ooui:n,onChange:s}=t,{items:o=[]}=r||{},i=o.filter(b=>b.operation!=="pendingRemove").map(b=>b.id),[a,c]=l.useState([]),[u,d]=l.useState(),[h,f]=l.useState(!1),{relation:g,context:S,readOnly:y,field:m,columns:w}=n,v=l.useContext(Ve),{getContext:_}=v||{};et.default(()=>{C()},[o]);const k=b=>{s==null||s({items:b})};async function C(){f(!0);let b=[];if(n.domain){const T=await K.getHandler().evalDomain({domain:n.domain,values:lt({fields:v==null?void 0:v.getFields(),values:v.getPlainValues()}),fields:v==null?void 0:v.getFields(),context:v.getContext()});b=[...b,...T]}try{const F=(await K.getHandler().search({model:g,params:b,fields:[m],context:{..._==null?void 0:_(),...S}})).map(x=>{const N=x[m];let I=N;return Array.isArray(N)&&(I=N[1]),{label:I,value:x.id}});c(F)}catch(T){d(T)}finally{f(!1)}if(u)return e.jsx(p.Alert,{className:"mt-10",message:u,type:"error",banner:!0})}const V=()=>{L(a.map(b=>b.value))},M=()=>{L([])},L=b=>{const T=o.map(x=>b.includes(x.id)?x.operation=="pendingRemove"?{...x,operation:"original"}:x:{id:x.id,operation:"pendingRemove"}),F=T.map(x=>x.id);b.filter(x=>!F.includes(x)).map(x=>{T.push({id:x,operation:"pendingLink"})}),k(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(b=>e.jsx(p.Col,{span:Math.floor(24/w),children:e.jsx(p.Checkbox,{value:b.value,children:b.label})}))})}),!y&&e.jsxs(p.Space,{children:[e.jsx(p.Button,{onClick:V,disabled:i.length==a.length,children:"Check all"}),e.jsx(p.Button,{onClick:M,disabled:i.length===0,children:"Uncheck all"})]})]})})},Xn=t=>e.jsx(ge,{...t,children:e.jsx(Xl,{...t})}),Xl=t=>{const{value:r,ooui:n}=t;return e.jsx("div",{style:{height:n.height?n.height+"px":"100%",overflow:"auto"},children:e.jsx(xo.default,{children:r,className:"ant-typography"})})},Qn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,type:"any",...t,children:e.jsx(Ql,{...t})})},Ql=t=>{const{ooui:r,onChange:n,value:s}=t,{selectionValues:o,readOnly:i,direction:a}=r,c=Array.from(o.entries()),u=c&&c.length&&c.map(d=>{const[h,f]=d;return e.jsx(p.Radio,{value:h,children:f},h)});return e.jsx(p.Radio.Group,{disabled:i,onChange:n,value:s,children:e.jsx(p.Space,{direction:a,children:u})})},Rn=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o}=r;return e.jsx(ge,{...t,valuePropName:"checked",children:e.jsx(Rl,{id:n,readOnly:s,required:o})})},Rl=t=>{const{required:r,readOnly:n,...s}=t;return e.jsx("div",{className:"flex flex-row",children:e.jsx(p.Switch,{disabled:n,...s})})},eo=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,type:"any",...t,children:e.jsx(ec,{...t})})},ec=t=>{const{ooui:r,value:n}=t,{selectionValues:s,errorField:o}=r,i=l.useContext(Ve),a=Array.from(s.entries()),c=a.map(h=>h[0]).indexOf(n);let u="process",d="";return o&&(d=i.getFieldValue(o),d&&(u="error")),e.jsx(p.Steps,{current:c,status:u,children:a.map((h,f)=>e.jsx(p.Steps.Step,{title:h[1],description:f===c&&u==="error"?d:null}))})},to=t=>{const{ooui:r}=t,{lang:n,height:s}=r,o=l.useContext(Ve),{elementHasLostFocus:i}=o||{},a=c=>{c.onDidBlurEditorWidget(i)};return e.jsx(ge,{...t,children:e.jsx(To.default,{defaultLanguage:n||"",height:s||300,onMount:a})})},{Content:tc}=p.Layout,{Title:rc}=p.Typography;function nc(){const{t}=l.useContext(pe);return e.jsx(tc,{className:"m-5 select-none",children:e.jsx(rc,{level:5,children:t("welcome")})})}function oc(t,r){const{children:n,globalValues:s={},rootContext:o={},lang:i}=t,[a,c]=l.useState("welcome"),[u,d]=l.useState([{title:be("welcome",i),key:"welcome",closable:!0,content:e.jsx(nc,{})}]),h=l.useRef(new Map),f=l.useRef();l.useImperativeHandle(r,()=>({retrieveAndOpenAction:y,openShortcut:v}));function g(C){if(C===a){const V=u.findIndex(M=>M.key===C);u[V-1]&&c(u[V-1].key),u[V+1]&&c(u[V+1].key)}d(u.filter(V=>V.key!==C)),h.current.delete(C)}function S({tabKey:C,canWeClose:V}){h.current.set(C,V)}async function y({action:C,values:V,forced_values:M,initialViewType:L,res_id:b,domain:T=[]}){const F=await K.getHandler().getActionData({action:C,context:o});if(F.type==="ir.actions.wizard"){Le("Action type not supported");return}const[x,N]=C.split(","),I=parseInt(N),O=se.parseContext({context:F.context,values:s,fields:{}}),E=F.domain?await K.getHandler().evalDomain({domain:F.domain,values:s,context:{...o,...O}}):[],{res_model:$,views:D,name:B,target:A,view_type:W,limit:J}=F,U=W==="tree",Z=[];for(const P of D){const[Y,te]=P;if(Y)Z.push(P);else if(te==="dashboard")Z.push([void 0,"dashboard"]);else{const{view_id:Q}=await K.getHandler().getView({model:$,type:te,id:Y,context:{...o,...O}});Z.push([Q,te])}}let j;if(L){const[P,Y]=Z.find(([te,Q])=>Q===L);j={id:P,type:Y}}else{const[P,Y]=Z[0];j={id:P,type:Y}}k({domain:[...E,...T],context:{...o,...O},model:$,views:Z,title:B,target:A,initialView:j,action_type:x,action_id:I,values:V,forced_values:M,res_id:b,treeExpandable:U,limit:J})}function m({title:C,content:V,key:M,action:L}){let b=[...u];u.length===1&&u[0].key==="welcome"&&(b=[...u.filter(T=>T.key!=="welcome")]),d([...b,{title:C,key:M,closable:!0,content:V,action:L}]),c(M)}async function w({relateData:C,fields:V,values:M,action_id:L,action_type:b}){const{res_model:T,context:F,domain:x,views:N,target:I,string:O,limit:E}=C,[$,D]=N[0],B={id:$,type:D},A=se.parseContext({context:F,values:{...M,...s},fields:V}),W=x?await K.getHandler().evalDomain({domain:x,values:lt({fields:V,values:{...M,...s}}),fields:V,context:{...o,...A}}):[];k({model:T,target:I,views:N,context:{...o,...A},domain:W,title:O,initialView:B,action_id:L,action_type:b,limit:E})}async function v(C){const{action_id:V,action_type:M,res_id:L,view_id:b}=C,T=`${M},${V}`,F=await K.getHandler().getActionData({action:T,context:o}),x=se.parseContext({context:F.context,values:s,fields:{}}),N=F.domain?await K.getHandler().evalDomain({domain:F.domain,values:s,context:{...o,...x}}):[],{res_model:I,views:O,name:E,target:$,view_type:D,limit:B}=F,A=D==="tree",W=[];for(const j of O){const[P,Y]=j;if(P)W.push(j);else if(Y==="dashboard")W.push([void 0,"dashboard"]);else{const{view_id:te}=await K.getHandler().getView({model:I,type:Y,id:P,context:{...o,...x}});W.push([te,Y])}}let J,U;if(b==null){const j=W.find(P=>P[0]===void 0);J=void 0,U=j[1]}else[J,U]=W.find(j=>j[0]===void 0?!1:j[0]===b);const Z={id:J,type:U};k({domain:N,context:{...o,...x},model:I,views:W,title:E,target:$,initialView:Z,action_id:V,action_type:M,res_id:L,treeExpandable:A,limit:B})}async function _({model:C,values:V,forced_values:M,initialViewType:L,res_id:b,domain:T}){const F=await K.getHandler().getActionStringForModel(C);await y({action:F,values:V,forced_values:M,initialViewType:L,res_id:b,domain:T})}async function k({domain:C,context:V,model:M,views:L,title:b,target:T,initialView:F,action_id:x,action_type:N,res_id:I,values:O,forced_values:E,treeExpandable:$=!1,limit:D}){const B=mr.v4();if(T!=="current"){const A=await K.getHandler().getView({model:M,type:"form",id:F.type==="form"?F.id:void 0,context:{...o,...V}});f.current.openActionModal({domain:C,model:M,formView:A,context:{...o,...V},actionData:{action_id:x,action_type:N,res_id:I,view_id:A.view_id}})}else{const A=F&&Array.isArray(F.id)?{...F,id:F.id[0]}:F;m({title:b,action:{id:x,type:N},content:e.jsx(Un,{action_id:x,action_type:N,tabKey:B,title:b,views:L,model:M,context:{...o,...V},domain:C,setCanWeClose:S,initialView:A,res_id:I,formDefaultValues:O,formForcedValues:E,treeExpandable:$,limit:D}),key:B})}}return e.jsx(Mo,{lang:i,children:e.jsx(Li,{openShortcut:v,openAction:k,openRelate:w,openDefaultActionForModel:_,tabs:u,activeKey:a,onRemoveTab:async C=>{const V=h.current.get(C);(await(V==null?void 0:V())||a==="welcome")&&g(C)},onChangeTab:C=>{c(C)},children:e.jsx(en,{ref:f,globalValues:s,children:n})})})}const sc=l.forwardRef(oc),{useToken:ic}=p.theme;function ac(t){const{label:r,onClose:n,tabKey:s,isActive:o,onSelected:i}=t,{token:a}=ic(),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:u=>{u.stopPropagation(),n(s)}})})]})}function lc(){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(ac,{tabKey:i.key,label:i.title,onClose:s,isActive:r===i.key,onSelected:o},i.key))})}function cc(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 dc=He.default.memo(cc,()=>!0);function uc(){const t=l.useContext(je),{tabs:r}=t||{},n=(r==null?void 0:r.map(s=>e.jsx(dc,{tab:s},s.key)))||null;return e.jsx(e.Fragment,{children:n})}const{useToken:fc}=p.theme,hc=t=>{const{onRetrieveShortcuts:r,onCheckIsFavourite:n,onAddFavourite:s,onRemoveFavourite:o}=t,[i,a]=l.useState(!1),[c,u]=l.useState(!1),[d,h]=l.useState([]),[f,g]=l.useState(!0),[S,y]=l.useState(),{t:m}=l.useContext(pe)||{},{token:w}=fc(),v=l.useContext(je),{openShortcut:_,tabs:k,activeKey:C,currentView:V,currentId:M,openDefaultActionForModel:L}=v||{};l.useEffect(()=>{b()},[]),l.useEffect(()=>{x()},[k,C,V,M]);async function b(){try{g(!0);const $=await r();h($)}catch($){Le($)}finally{g(!1)}}function T($){const{key:D}=$,B=d.find(A=>A.id===Number(D));(B==null?void 0:B.action_type)!=="ir.actions.wizard"&&(B&&_(B),u(!1))}function F($){$&&b(),u($)}async function x(){if(!V)return;const $=k.find(U=>U.key===C),{id:D,type:B}=($==null?void 0:$.action)||{};if(!D||!B){a(!1);return}const A=V.view_id;let W=!1;V.type==="form"&&(W=M||!1);const J=await n({action_id:D,action_type:B,view_id:A,res_id:W});J!==!1&&y(J),a(J!==!1)}async function N(){u(!1),L==null||L({model:"ir.ui.view_sc"})}const I=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:N})})})]}),e.jsx(p.Menu.Divider,{}),f?e.jsx(p.Spin,{style:{padding:"1rem"}}):d.length>0?e.jsx(e.Fragment,{children:d.map($=>e.jsx(p.Menu.Item,{children:e.jsx(O,{title:$.name,type:$.view_type})},$.id))}):e.jsx("div",{style:{width:300,padding:5,paddingLeft:15},children:m==null?void 0:m("no_favorites")})]});function O({title:$,type:D}){const B=D==="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:$})]})}async function E(){if(i&&S)await o(S);else{if(!V)return;const $=k.find(J=>J.key===C),{id:D,type:B}=($==null?void 0:$.action)||{},A=V.view_id;let W=!1;if(!D||!B){a(!1);return}V.type==="form"&&(W=M||!1),await s({action_id:D,action_type:B,view_id:A,res_id:W})}await b(),a(!i)}return e.jsxs(e.Fragment,{children:[e.jsx(p.Button,{type:i?"primary":"default",icon:i?e.jsx(H.StarFilled,{style:{color:"white"}}):e.jsx(H.StarOutlined,{}),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:E}),e.jsx(p.Dropdown,{overlay:I,onVisibleChange:F,open:c,children:e.jsx(p.Button,{style:{width:25,borderTopLeftRadius:0,borderBottomLeftRadius:0},icon:e.jsx(H.DownOutlined,{style:{fontSize:"0.5em"}}),onClick:$=>$.preventDefault()})})]})};G.ActionBar=Hn,G.Binary=Ln,G.Boolean=kr,G.Button=qt,G.ButtonGroup=xr,G.Char=Gt,G.CodeEditor=to,G.ConfigContext=Gn,G.ConnectionProvider=K,G.ContentRootProvider=en,G.CurrentTabContent=uc,G.Dashboard=Jn,G.DashboardGrid=jn,G.DashboardGridItem=zn,G.Date=Vn,G.DateTime=En,G.Email=Wn,G.ExportModal=Mn,G.FavouriteButton=hc,G.Float=Xt,G.FloatTime=Tn,G.Form=dt,G.FormModal=ut,G.GraphIndicator=Sn,G.Group=nr,G.Image=Kr,G.Integer=St,G.Label=mt,G.Many2one=mn,G.Markdown=Xn,G.MultiCheckbox=Zn,G.Notebook=Fn,G.One2many=xn,G.ProgressBar=nn,G.Radio=Qn,G.Reference=$n,G.RootView=sc,G.SearchFilter=Qt,G.SearchModal=tr,G.SearchTree=er,G.Selection=Ut,G.Separator=_n,G.Steps=eo,G.Switch=Rn,G.TabSelector=lc,G.Tag=ln,G.Tags=zr,G.Text=On,G.Time=An,G.Tree=Ct,G.Url=Yn,G.iconMapper=Ge,G.showConfirmDialog=nt,Object.defineProperties(G,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
35
|
+
`,vn=He.default.createContext(null),Ma=({children:t,initialView:r})=>{const[n,s]=l.useState(r),[o,i]=l.useState(0),[a,c]=l.useState(!1);return e.jsx(vn.Provider,{value:{currentView:n,setCurrentView:s,itemIndex:o,setItemIndex:i,manualTriggerChange:a,setManualTriggerChange:c},children:t})},{getValueForOperator:Sn}=se.graphProcessor,Mt=.7,Vt=30,Cn=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,S]=l.useState(!1),[y,m]=l.useState(),[w,v]=l.useState(),[_,k]=l.useState(),[C,V]=l.useState(0),[M,L]=l.useState(0),[b,T]=l.useState(),[F,x]=l.useState(),[N,I]=l.useState();l.useEffect(()=>{A()},[r,o]);async function O({domain:D,isTotal:B}){if(B)return await E({domain:D});if(d&&h){const $=u||await K.getHandler().searchAllIds({params:D,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:D,context:s})}async function E({domain:D}){if(d&&h){const B=await K.getHandler().searchAllIds({params:D,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:D,context:s})}async function A(){S(!0);let D,B;try{const $=await O({domain:n,isTotal:!1});if(m($),i){const W=await K.getHandler().evalDomain({domain:i,values:{},context:s});D=await O({domain:W,isTotal:!0}),k(D)}if(D?(B=Math.round($/D*100*100)/100,v(B)):v(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});x(W)}else x(c)}catch($){I(JSON.stringify($))}S(!1)}return N?e.jsx(p.Alert,{className:"mt-10",message:N,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:D=>{var B,$;V((B=D.bounds)==null?void 0:B.height),L(($=D.bounds)==null?void 0:$.width)},children:({measureRef:D})=>a?e.jsx(Ea,{value:y,total:_,percent:w,measureRef:D,height:C,width:M,color:b,icon:F,suffix:f}):e.jsx(Va,{value:y,total:_,measureRef:D,height:C,width:M,color:b,icon:F,suffix:f})})};function bn(t,r){const s=document.createElement("canvas").getContext("2d");return s.font=r||getComputedStyle(document.body).font,s.measureText(t).width}function Va({measureRef:t,width:r,height:n,total:s,value:o,color:i,icon:a,suffix:c}){let f=n*Mt<Vt?Vt:n*Mt;const d=o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0});let h=s?`${d}/${s}`:`${d}`;c&&(h+=" "+c);let u=bn(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 Ea({measureRef:t,height:r,width:n,percent:s,total:o,value:i,color:a,icon:c,suffix:f}){const d=r*.65;let h=d*Mt<Vt?Vt:d*Mt;const u=i==null?void 0:i.toLocaleString("es-ES",{useGrouping:!0});let g=o?`${u}/${o==null?void 0:o.toLocaleString("es-ES",{useGrouping:!0})}`:`${u}`;f&&(g+=" "+f);const S=`${s==null?void 0:s.toLocaleString("es-ES",{useGrouping:!0})}%`;let y=bn(S,`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}},Et=t=>{if(typeof t=="string"&&Ia(t))return parseFloat(t).toLocaleString("es-ES",{useGrouping:!0});if($a(t))return t.toLocaleString("es-ES",{useGrouping:!0});if(Aa(t)){const r=La(t);return r===null?t:Je(t,It.input[r]).format(It.output[r])}else return t},Ia=t=>/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/.test(t),$a=t=>typeof t=="number"&&!isNaN(t),xn={default:{padding:"auto",xAxis:{tickCount:5,label:{formatter:Et}},yAxis:{label:{formatter:Et}},legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("default")}},pie:{appendPadding:10,radius:.9,label:{type:"inner",offset:"-30%",content:({percent:t})=>`${(t*100).toFixed(0)}%`,style:{fontSize:14,textAlign:"center"}},legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("pie")},interactions:[{type:"element-active"}]},barGrouped:{isGroup:!0,legend:{maxWidthRatio:.5,maxItemWidth:1e3},tooltip:{formatter:rr("barGrouped")},xAxis:{label:{formatter:Et}},yAxis:{label:{formatter:Et}},label:{position:"middle",layout:[{type:"interval-adjust-position"},{type:"interval-hide-overlap"},{type:"adjust-color"}]}}};function Aa(t){return typeof t!="string"||t===void 0?!1:new Date(t).toString()!=="Invalid Date"}const It={input:{hours:"YYYY-MM-DD HH:mm",days:"YYYY-MM-DD",weeks:"YYYY-[W]WW",months:"YYYY-MM",years:"YYYY"},output:{hours:"DD/MM/YYYY HH:mm",days:"DD/MM/YYYY",weeks:"[W]WW/YYYY",months:"MM/YYYY",years:"YYYY"}};function La(t){for(const r in It.input)if(Je(t,It.input[r],!0).isValid())return r;return null}const{processGraphData:Na}=se.graphProcessor,{getFieldsToRetrieve:Pa}=se.graphFieldUtils,Ba=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,S]=l.useState(),[y,m]=l.useState(),[w,v]=l.useState("line");return et.default(()=>{(async()=>{d(!0),u(void 0);const _=se.parseGraph(o);v(_.type||"line");const k=Pa({ooui:_});let C,V;try{({values:C,fields:V}=await Ka({model:r,domain:n,context:s,limit:i,order:_.timerange?_.x.name:null,fields:k,manualIds:c}))}catch(M){u("Error fetching graph data values: "+JSON.stringify(M)),d(!1);return}try{if(!C||!V){u("No values or fields returned"),d(!1);return}m(C);const M=Na({ooui:_,values:C,fields:V,options:{uninformedString:a}});S(M)}catch(M){u("Error processing graph data: "+M),d(!1);return}d(!1)})()},[o,r,i,s,n]),{loading:f,error:h,type:w,values:g,evaluatedEntries:y}};async function Ha({model:t,context:r,fields:n}){return await K.getHandler().getFields({model:t,context:r,fields:n})}async function Ka({fields:t,model:r,domain:n,context:s,order:o,limit:i,manualIds:a}){const c=await Ha({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 Ya={line:Kt.Line,bar:Kt.Column,pie:Kt.Pie},Wa=t=>{var v;const{model:r,domain:n,context:s,xml:o,limit:i,manualIds:a}=t,{t:c}=l.useContext(pe),{error:f,loading:d,values:h,type:u,evaluatedEntries:g}=Ba({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:S,isGroup:y,isStack:m}=h,w=Ya[u];return w?e.jsxs("div",{style:{padding:"1rem"},children:[e.jsx("p",{style:{textAlign:"right"},children:`${c("totalRegisters")} ${(v=g==null?void 0:g.length)==null?void 0:v.toLocaleString("es-ES",{useGrouping:!0})}`}),e.jsx(w,{...qa({type:u,data:S,isGroup:y,isStack:m})})]}):e.jsx(e.Fragment,{children:`Unknown graph type: ${u}`})};function qa(t){const{type:r,data:n,isGroup:s,isStack:o}=t;let i=xn[r];return i||(i=xn.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 Ua=(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,S]=l.useState(),y=l.useContext(Ke),{setGraphIsLoading:m=void 0}=y||{};l.useImperativeHandle(r,()=>({refresh:()=>{w()}})),l.useEffect(()=>{w()},[n]);async function w(){d(!0),m==null||m(!0);try{const v=await K.getHandler().getView({model:s,id:n,type:"graph",context:o});S(v.arch);const _=se.parseGraph(v.arch);u(_)}catch(v){return console.error(v),e.jsx(e.Fragment,{children:JSON.stringify(v)})}d(!1),m==null||m(!1)}if(f)return e.jsx("div",{style:{width:"100%",display:"flex",height:"20%",justifyContent:"center",alignContent:"center",padding:"1rem"},children:e.jsx(H.LoadingOutlined,{style:{height:"12px"}})});if(!h)return null;switch(h.type){case"indicatorField":case"indicator":{const v=h,_=v.type==="indicatorField"?{field:v.field,operator:v.operator}:{};return e.jsx(Cn,{showPercent:v.showPercent,totalDomain:v.totalDomain,colorCondition:v.color,model:s,context:o,domain:i,icon:v.icon,suffix:v.suffix,manualIds:c,..._})}case"line":case"bar":case"pie":return e.jsx(Wa,{model:s,context:o,domain:i,xml:g,limit:a,manualIds:c});default:return e.jsx(e.Fragment,{children:`Graph ${h.type} not implemented`})}},$t=l.forwardRef(Ua),{confirm:Ga}=p.Modal,ja=({onOk:t,lang:r})=>{Ga({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:za}=p.Modal,Ja=({onOk:t,lang:r})=>{za({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:Za}=p.theme,Xa=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:S,showCreateButton:y,showToggleButton:m}=t,{token:w}=Za();function v(){return e.jsx("div",{className:"inline-block w-3"})}function _(){return e.jsx("div",{className:"flex flex-grow h-8 text-white",style:{borderRadius:w.borderRadius,backgroundColor:w.colorPrimaryActive},children:e.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:e.jsx("span",{className:"pl-2 font-bold",children:r})})})}function k(){return e.jsx(Pe,{tooltip:u?"Unlink":"Delete",icon:u?e.jsx(H.ApiOutlined,{}):e.jsx(H.DeleteOutlined,{}),onClick:a,disabled:c===0||n||i!=="form"&&S.length===0})}function C(){let M="_";return c===0?M="_":M=(f+1).toString(),e.jsxs("span",{className:"pl-1 pr-1",children:["(",M,"/",c,")"]})}function V(){return e.jsxs(e.Fragment,{children:[v(),e.jsx(Pe,{tooltip:"Previous item",icon:e.jsx(H.LeftOutlined,{}),onClick:d}),C(),e.jsx(Pe,{tooltip:"Next item",icon:e.jsx(H.RightOutlined,{}),onClick:h})]})}return e.jsxs("div",{className:"flex mb-2",children:[_(),e.jsxs("div",{className:"flex-none h-8 pl-2",children:[i!=="graph"&&y&&e.jsx(Pe,{tooltip:"Create new item",icon:e.jsx(H.FileAddOutlined,{}),disabled:n,onClick:s}),u&&y&&e.jsx(Pe,{tooltip:"Search existing item",icon:e.jsx(H.SearchOutlined,{}),disabled:n,onClick:g}),i!=="graph"&&v(),i!=="graph"&&k(),i==="form"&&V(),v(),m&&e.jsx(Pe,{tooltip:"Toggle view mode",icon:e.jsx(H.AlignLeftOutlined,{}),onClick:o})]})]})},Qa={form:se.Form,tree:se.Tree,graph:$t};function Ra(t){const r=t.map(s=>s.id);return t.filter((s,o)=>{const{id:i}=s;return!r.includes(i,o+1)})}const el=t=>{var Xe;const{value:r,onChange:n,ooui:s,views:o}=t,{items:i=[]}=r||{},{currentView:a,setCurrentView:c,itemIndex:f,setItemIndex:d}=l.useContext(vn),h=l.useContext(Ve),{activeId:u,getFields:g,getValues:S,getContext:y,domain:m}=h||{},{lang:w,t:v}=l.useContext(pe),[_,k]=l.useState(!1),[C,V]=l.useState(!1),[M,L]=l.useState(),[b,T]=l.useState(!1),[F,x]=l.useState(!1),[N,I]=l.useState(),[O,E]=l.useState([]),[A,D]=l.useState(!1),B=l.useRef([]),[$,W]=l.useState(),J=l.useRef(),[G,Z]=l.useState(void 0),{readOnly:j,relation:P,context:Y,domain:te}=s,Q=s.type==="many2many",{id:ie}=s,ee=i.filter(R=>(R.values||R.treeValues)&&R.operation!=="pendingRemove"),X=l.useRef();l.useEffect(()=>{if(X.current!==a){X.current=a,ue();return}ue()},[i,a]);const ue=l.useCallback(()=>{(a==="form"&&i.some(R=>!R.values)||a==="tree"&&i.some(R=>!R.treeValues))&&Ee()},[i,a]);l.useEffect(()=>{Ie()},[m]);const we=R=>{var le,_e;n==null||n({fields:((le=o.get("form"))==null?void 0:le.fields)||((_e=o.get("tree"))==null?void 0:_e.fields),items:Ra(R)})},Ee=async()=>{await Te(),f>ee.length-1&&f!==0&&d(0)},Te=async R=>{var le,_e,he;V(!0),k(!1),L(void 0);try{const[ye,ve]=await zt({treeView:{arch:(le=o.get("tree"))==null?void 0:le.arch,fields:(_e=o.get("tree"))==null?void 0:_e.fields},formView:{fields:((he=o.get("form"))==null?void 0:he.fields)||{}},model:P,items:i,context:{...y==null?void 0:y(),...Y},currentView:R||a});return J.current||(J.current=ye.map(ke=>ke.id)),(a||R)==="tree"&&ve&&Z(ve),we(ye),ye}catch(ye){L(ye)}finally{V(!1)}};async function Ie(){te&&(B.current=await K.getHandler().evalDomain({domain:te,values:lt({fields:g(),values:S()}),fields:g(),context:y()})),m&&m.length>0&&(B.current=B.current.concat(se.transformDomainForChildWidget({domain:m,widgetFieldName:ie})))}const me=()=>{const R=Array.from(o.keys()),le=R[(R.indexOf(a)+1)%R.length];a==="form"?Oe(()=>{c(le)}):c(le)},ae=()=>{f>0&&(a==="form"?Oe(()=>{d(f-1)}):d(f-1))},Se=()=>{const R=ee.length;f<R-1&&(a==="form"?Oe(()=>{d(f+1)}):d(f+1))},Fe=async()=>{const R=ee[f].id,le=(await K.getHandler().readObjects({model:P,ids:[R],fields:o.get("form").fields,context:{...y==null?void 0:y(),...Y}}))[0],_e=(await K.getHandler().readObjects({model:P,ids:[R],fields:o.get("tree").fields,context:{...y==null?void 0:y(),...Y}}))[0],he=i.map(ye=>ye.id===R?{...ye,operation:"original",values:le,treeValues:_e}:ye);we(he)},Oe=R=>{_?wt({lang:w,onOk:()=>{Fe(),R(),k(!1)}}):R()},$e=()=>{if(Q){Ja({lang:w,onOk:()=>{a==="form"?xe():Me()}});return}ja({lang:w,onOk:()=>{a==="form"?xe():Me()}})},Ne=async()=>{const{inv_field:R}=s;let le;R&&u&&(le={[R]:u}),a==="form"?Oe(()=>{D(!0),I({defaultValues:le}),T(!0)}):(D(!0),I({defaultValues:le}),T(!0))},re=async()=>{a==="form"?Oe(()=>{x(!0)}):x(!0)},xe=async()=>{V(!0),k(!1),L(void 0);try{if(ee[f].id>0){const R=i.map(le=>le.id===ee[f].id?{...le,operation:"pendingRemove"}:le);we(R)}else we(i.filter(R=>R.id!==ee[f].id))}catch(R){L(R)}d(0),V(!1)},Me=async()=>{const R=ee.filter(le=>O.includes(le.id));V(!0),k(!1),L(void 0);try{const le=R.map(he=>he.id),_e=i.filter(he=>!(le.includes(he.id)&&he.id<0)).map(he=>le.includes(he.id)?{...he,operation:"pendingRemove"}:he);we(_e)}catch(le){L(le)}d(0),V(!1)},ce=(R,le,_e)=>{let he;if(R)he=i.map(ye=>ye.id===R?{id:R,operation:R>0?"pendingUpdate":"pendingCreate",values:{..._e,id:R},treeValues:{..._e,id:R}}:ye);else{const ye=ei(i);he=i.concat({id:ye,operation:"pendingCreate",values:{..._e,id:ye},treeValues:{..._e,id:ye}})}we(he),A||T(!1)},fe=async R=>{const{id:le}=R;let _e=i;const he=i.find(ye=>ye.id===le);(he==null?void 0:he.values)===void 0&&(_e=await Te("form")),I(_e.find(ye=>ye.id===le)),D(!1),T(!0)},Ce=async R=>{V(!0);let le=i;const _e=R.filter(he=>!i.find(ye=>ye.id===he));try{for(const he of _e){const ye=(await K.getHandler().readObjects({model:P,ids:[he],fields:o.get("form").fields,context:{...y==null?void 0:y(),...Y}}))[0],ve=(await K.getHandler().readObjects({model:P,ids:[he],fields:o.get("tree").fields,context:{...y==null?void 0:y(),...Y}}))[0];le.push({id:he,operation:"pendingLink",values:ye,treeValues:ve})}we(le)}catch(he){L(he)}finally{V(!1)}};function de(){const R=Qa[a];if(a==="graph")return se.parseGraph(o.get("graph").arch).string;{const le=new R(o.get(a).fields);return le.parse(o.get(a).arch),le.string}}const Ye=()=>{var le,_e,he,ye;if(a==="form")return ee.length===0?v("noCurrentEntries"):a!==X.current&&i.some(ve=>!ve.values)?e.jsx(p.Spin,{}):e.jsx(dt,{formView:o.get("form"),values:(le=ee[f])==null?void 0:le.values,parentContext:{...y==null?void 0:y(),...Y},model:P,id:(_e=ee[f])==null?void 0:_e.id,submitMode:"values",onFieldsChange:ve=>{var Ge;const ke=(Ge=ee[f])==null?void 0:Ge.id,We=i.map(Re=>Re.id===ke?{...Re,operation:Re.operation==="original"?"pendingUpdate":Re.operation,values:{...ve,id:ke},treeValues:{...ve,id:ke}}:Re);we(We),k(!0)},readOnly:j});let R=[];if(ee.some(ve=>ve.treeValues)&&(R=$?it({resultsToSort:ee.map(ve=>ve.treeValues),sorter:$,fields:{...o.get("tree").fields,...((he=o.get("form"))==null?void 0:he.fields)||{}}}):ee.map(ve=>ve.treeValues)),a==="tree")return e.jsx(Ct,{total:ee.length,limit:ee.length,treeView:o.get("tree"),results:R,loading:C,onRowClicked:((ye=o.get("form"))==null?void 0:ye.fields)!==void 0?fe:void 0,showPagination:!1,rowSelection:{selectedRowKeys:O,onChange:E},sorter:$,onChangeSort:W,context:{...y==null?void 0:y(),...Y},colorsForResults:G,readonly:j});if(a==="graph"){const ve=[[`${s.inv_field}`,"=",u]];return e.jsx($t,{view_id:o.get("graph").view_id,model:s.relation,domain:ve,context:{...y==null?void 0:y(),...Y},limit:0})}};if(M)return e.jsx(p.Alert,{className:"mt-10",message:M,type:"error",banner:!0});const Ae=A;return C?e.jsx(p.Spin,{}):e.jsxs(e.Fragment,{children:[e.jsx(Xa,{mode:a,title:de(),readOnly:j,isMany2Many:Q,formHasChanges:_,totalItems:ee.length,currentItemIndex:f,onDelete:$e,onCreateItem:Ne,onToggleViewMode:me,onPreviousItem:ae,onNextItem:Se,onSearchItem:re,selectedRowKeys:O,showCreateButton:((Xe=o.get("form"))==null?void 0:Xe.fields)!==void 0,showToggleButton:o.size>1}),Ye(),e.jsx(ut,{formView:o.get("form"),model:P,id:N==null?void 0:N.id,submitMode:"values",values:N==null?void 0:N.values,defaultValues:N==null?void 0:N.defaultValues,visible:b,onSubmitSucceed:ce,parentContext:{...y==null?void 0:y(),...Y},onCancel:()=>{D(!1),T(!1)},readOnly:j,mustClearAfterSave:Ae}),e.jsx(tr,{domain:B.current,model:P,context:{...y==null?void 0:y(),...Y},visible:F,onSelectValues:async R=>{x(!1),Ce(R)},onCloseModal:()=>{x(!1)}})]})},Tn=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,S]=l.useState(new Map),y=l.useContext(Ve),{getContext:m}=y||{};et.default(()=>{v()},[r]);const w=async k=>o&&o[k]?o[k]:await K.getHandler().getView({model:s,type:k,context:{...m==null?void 0:m(),...a}}),v=async()=>{d(!0),u(void 0);try{if(n&&n.length>0){for(const k of n){const C=await w(k);g.set(k,C)}S(g)}else{const k=await w("form"),C=await w("tree");g.set("form",k),g.set("tree",C),S(g)}}catch(k){u(JSON.stringify(k))}finally{d(!1)}};if(n&&n.length>0?c=n[0]:c="tree",f)return e.jsx(p.Spin,{});if(h)return e.jsx(p.Alert,{className:"mt-10",message:h,type:"error",banner:!0});const _=async(k,C)=>{if(!C)throw new Error;if(!C.items)throw new Error;if(!Array.isArray(C.items))throw new Error;if(C.items.length===0)throw new Error};return e.jsx(Ma,{initialView:c,children:e.jsx(ge,{required:i,type:"array",validator:_,...t,children:e.jsx(el,{ooui:r,views:g})})})},{useToken:tl}=p.theme,Fn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,type:"number",...t,children:e.jsx(rl,{ooui:r})})},rl=t=>{const{ooui:r,value:n,onChange:s}=t,{id:o,readOnly:i,required:a}=r,{token:c}=tl(),f=a&&!i?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useRef(),[h,u]=l.useState(),g=l.useContext(Ve),{elementHasLostFocus:S}=g||{};l.useEffect(()=>{u(sn(n))},[n]);const y=v=>{s==null||s(v)};function m(v){d.current=v.target.value,u(v.target.value)}async function w(){y(oa(h)),await new Promise(v=>setTimeout(v,300)),S==null||S()}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(gr.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:nl}=p.Tabs;function On(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(nl,{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:ol}=p.theme,{TextArea:or}=p.Input,_n=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o,height:i,translatable:a}=r,{token:c}=ol(),f=o&&!s?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useContext(Ve),{elementHasLostFocus:h}=d||{};return e.jsx(ge,{required:o,...t,children:a?e.jsx(sl,{field:n,height:i,requiredStyle:f}):e.jsx(or,{disabled:s||a,style:{minHeight:i?i+"px":"100%",...f},rows:4,onBlur:h})})},sl=({value:t,field:r,requiredStyle:n,onChange:s,height:o})=>{const i=l.useContext(Ve),{activeId:a,activeModel:c,fetchValues:f,formHasChanges:d,elementHasLostFocus:h}=i||{},[u,g]=l.useState(!1),{t:S}=l.useContext(pe);return a?e.jsxs(e.Fragment,{children:[e.jsx("div",{onClick:()=>{if(d!=null&&d()){ze(S("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(_r,{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(Pe,{tooltip:S("translate"),icon:e.jsx(H.TranslationOutlined,{}),onClick:async()=>{d!=null&&d()?ze(S("saveBeforeTranslate")):ze(S("enterTextBeforeTranslate"))},children:S("translate")})})]})},Dn=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]})})},il=({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 v=o;w.registersAmount==="selected"&&(s==null?void 0:s.length)!==0&&(v=[["id","in",s==null?void 0:s.map(C=>C.id)]]);const{datas:_}=await K.getHandler().exportData({model:t,fields:fl({keys:w.selectedKeys,fields:c.current}),domain:v,limit:w.registersAmount==="all"?0:i,context:r,format:w.exportType});a(),await new Promise(C=>setTimeout(C,200));const k=await ot(_);Ft(_,k.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,kn({fields:w})},[t,r,c]),u=l.useCallback(async w=>{const _=ir(w,c.current)[sr(w)],k=_.relation,C=await K.getHandler().getFields({model:k,context:r,fields:[]});for(const[V,M]of Object.entries(C))C[V].string=ll({parentTitle:_.string,title:M.string});return c.current[w]=C,kn({fields:C,parentKey:w})},[c.current,t,r]),g=l.useCallback(async()=>{const w=await cl({model:t,context:r}),v=await ul({predefinedExports:w,fields:c.current,onGetFieldChilds:u});return{predefinedExports:w.map(k=>({...k,fields:k.fields.map(C=>{const V=sr(C.key),L=ir(C.key,c.current)[V];return{key:C.key,title:L.string}})})),keysWithChilds:v}},[c.current]),S=l.useCallback(async w=>{const v=await m("ir.exports"),_=await m("ir.exports.line"),k=await K.getHandler().create({model:"ir.exports",values:{name:w.name,resource:t},fields:v,context:r});return await Promise.all(w.fields.map(async C=>await K.getHandler().create({model:"ir.exports.line",values:{name:C.key,export_id:k},fields:_,context:r}))),{...w,id:k}},[]),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 v=K.getHandler().getFields({model:w,context:r,fields:[]});f.current.set(w,v)},[f,r]);return{onGetFields:h,onGetFieldChilds:u,onExport:d,onGetPredefinedExports:g,onSavePredefinedExport:S,onRemovePredefinedExport:y}},kn=({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:al({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",al=({parentKey:t,key:r})=>`${t?t+"/":""}${r}`,bt=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[bt(t)],ll=({title:t,parentTitle:r})=>`${r?r+" \u2192 ":""}${t}`,cl=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}))}))},dl=({fields:t,keys:r})=>hl([...new Set(r.filter(n=>{var s,o,i;if(n.indexOf("/")===-1)return!((s=t["/"])!=null&&s[n]);{const a=bt(n);console.log({key:n,parentKey:a,fields:t});const c=(o=t==null?void 0:t[bt(n)])==null?void 0:o[n];return console.log({exists:c}),!((i=t==null?void 0:t[bt(n)])!=null&&i[n])}}).map(n=>bt(n)))]),ul=async({predefinedExports:t,fields:r,onGetFieldChilds:n})=>{const s=t.flatMap(a=>a.fields.map(c=>c.key)),o=dl({fields:r,keys:s}),i=[];for(const a of o)i.push({key:a,childs:await n(a)});return i},fl=({keys:t,fields:r})=>t.map(n=>{const s=sr(n),i=ir(n,r)[s];return Mn(i)?`${n}/id`:n}),hl=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},Vn=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:S,onGetPredefinedExports:y,onSavePredefinedExport:m,onRemovePredefinedExport:w}=il({model:o,context:i,domain:f,limit:d,selectedRegistersToExport:a,onClose:s,locale:n});return e.jsx(gr.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:S,visibleRegisters:h,onGetPredefinedExports:y,onSavePredefinedExport:m,onRemovePredefinedExport:w})},En=t=>{const{ooui:r}=t;return e.jsx(hn,{ooui:r})},In=t=>{const{ooui:r}=t;return e.jsx(hn,{ooui:r,showTime:!0})};var $n={exports:{}};(function(t,r){(function(n,s){t.exports=s()})(Qe,function(){var n={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},s=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,o=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,c={},f=function(m){return(m=+m)+(m>68?1900:2e3)},d=function(m){return function(w){this[m]=+w}},h=[/[+-]\d\d:?(\d\d)?|Z/,function(m){(this.zone||(this.zone={})).offset=function(w){if(!w||w==="Z")return 0;var v=w.match(/([+-]|\d\d)/g),_=60*v[1]+(+v[2]||0);return _===0?0:v[0]==="+"?-_:_}(m)}],u=function(m){var w=c[m];return w&&(w.indexOf?w:w.s.concat(w.f))},g=function(m,w){var v,_=c.meridiem;if(_){for(var k=1;k<=24;k+=1)if(m.indexOf(_(k,0,w))>-1){v=k>12;break}}else v=m===(w?"pm":"PM");return v},S={A:[a,function(m){this.afternoon=g(m,!1)}],a:[a,function(m){this.afternoon=g(m,!0)}],S:[/\d/,function(m){this.milliseconds=100*+m}],SS:[o,function(m){this.milliseconds=10*+m}],SSS:[/\d{3}/,function(m){this.milliseconds=+m}],s:[i,d("seconds")],ss:[i,d("seconds")],m:[i,d("minutes")],mm:[i,d("minutes")],H:[i,d("hours")],h:[i,d("hours")],HH:[i,d("hours")],hh:[i,d("hours")],D:[i,d("day")],DD:[o,d("day")],Do:[a,function(m){var w=c.ordinal,v=m.match(/\d+/);if(this.day=v[0],w)for(var _=1;_<=31;_+=1)w(_).replace(/\[|\]/g,"")===m&&(this.day=_)}],M:[i,d("month")],MM:[o,d("month")],MMM:[a,function(m){var w=u("months"),v=(u("monthsShort")||w.map(function(_){return _.slice(0,3)})).indexOf(m)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(m){var w=u("months").indexOf(m)+1;if(w<1)throw new Error;this.month=w%12||w}],Y:[/[+-]?\d+/,d("year")],YY:[o,function(m){this.year=f(m)}],YYYY:[/\d{4}/,d("year")],Z:h,ZZ:h};function y(m){var w,v;w=m,v=c&&c.formats;for(var _=(m=w.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(T,F,x){var N=x&&x.toUpperCase();return F||v[x]||n[x]||v[N].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(I,O,E){return O||E.slice(1)})})).match(s),k=_.length,C=0;C<k;C+=1){var V=_[C],M=S[V],L=M&&M[0],b=M&&M[1];_[C]=b?{regex:L,parser:b}:V.replace(/^\[|\]$/g,"")}return function(T){for(var F={},x=0,N=0;x<k;x+=1){var I=_[x];if(typeof I=="string")N+=I.length;else{var O=I.regex,E=I.parser,A=T.slice(N),D=O.exec(A)[0];E.call(F,D),T=T.replace(D,"")}}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}}(F),F}}return function(m,w,v){v.p.customParseFormat=!0,m&&m.parseTwoDigitYear&&(f=m.parseTwoDigitYear);var _=w.prototype,k=_.parse;_.parse=function(C){var V=C.date,M=C.utc,L=C.args;this.$u=M;var b=L[1];if(typeof b=="string"){var T=L[2]===!0,F=L[3]===!0,x=T||F,N=L[2];F&&(N=L[2]),c=this.$locale(),!T&&N&&(c=v.Ls[N]),this.$d=function(A,D,B){try{if(["x","X"].indexOf(D)>-1)return new Date((D==="X"?1e3:1)*A);var $=y(D)(A),W=$.year,J=$.month,G=$.day,Z=$.hours,j=$.minutes,P=$.seconds,Y=$.milliseconds,te=$.zone,Q=new Date,ie=G||(W||J?1:Q.getDate()),ee=W||Q.getFullYear(),X=0;W&&!J||(X=J>0?J-1:Q.getMonth());var ue=Z||0,we=j||0,Ee=P||0,Te=Y||0;return te?new Date(Date.UTC(ee,X,ie,ue,we,Ee,Te+60*te.offset*1e3)):B?new Date(Date.UTC(ee,X,ie,ue,we,Ee,Te)):new Date(ee,X,ie,ue,we,Ee,Te)}catch{return new Date("")}}(V,b,M),this.init(),N&&N!==!0&&(this.$L=this.locale(N).$L),x&&V!=this.format(b)&&(this.$d=new Date("")),c={}}else if(b instanceof Array)for(var I=b.length,O=1;O<=I;O+=1){L[1]=b[O-1];var E=v.apply(this,L);if(E.isValid()){this.$d=E.$d,this.$L=E.$L,this.init();break}O===I&&(this.$d=new Date(""))}else k.call(this,C)}}})})($n);const pl=$n.exports;Je.extend(pl);const An=t=>{const{ooui:r}=t;return e.jsx(ge,{...t,children:e.jsx(gl,{ooui:r})})},gl=t=>{const r=(n,s)=>{t.onChange&&t.onChange(s)};return e.jsx(p.TimePicker,{onChange:r,value:t.value?Je(t.value,"HH:mm:ss"):void 0})},Ln=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,...t,children:e.jsx(ml,{ooui:r})})},ml=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],S=r&&c&&c[1]&&parseInt(c[1]);d([S,void 0]),u(g)},[r]),e.jsxs(p.Row,{gutter:8,wrap:!1,children:[e.jsx(p.Col,{flex:"1",children:e.jsx(Dr,{ooui:new se.Selection({name:"model_selection",selection:i,readonly:a,required:o}),onChange:g=>{u(g);let S=f[0]||0;g!==h&&(d([]),S=0);const y=`${g},${S}`;y!==r&&(n==null||n(y))},value:h})}),e.jsx(p.Col,{flex:"3",children:e.jsx(wn,{ooui:new se.Many2one({name:"object_value",relation:h,readonly:a,required:o}),value:f,onChange:g=>{d(g);const S=`${h},${g[0]||0}`;S!==r&&(n==null||n(S))}})})]})},{useToken:yl}=p.theme,Nn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,...t,children:e.jsx(wl,{ooui:r})})},wl=t=>{const{ooui:r,value:n,onChange:s}=t,{readOnly:o,required:i,filenameField:a}=r,{token:c}=yl(),f=i&&!o?{backgroundColor:c.colorPrimaryBg}:void 0,d=l.useRef(null),{setFieldValue:h,getFieldValue:u}=l.useContext(Ve)||{},{t:g}=l.useContext(pe),S=n?Js(n):"",y=k=>{s==null||s(k)};async function m(){const k=await ot(n),C=`data:${k==null?void 0:k.mime};base64,${n}`,V=document.createElement("a"),M=u(a),L=u("name");V.href=C,V.download=M||L,V.click()}async function w(){const k=await ot(n);Ft(n,k.mime)}async function v(k){k.stopPropagation(),k.preventDefault();const C=k.target.files[0],V=await Kr(C);y(V),a&&h(a,C.name)}function _(){h(a,void 0),y(void 0)}return e.jsxs(p.Row,{gutter:8,children:[e.jsxs(p.Col,{style:{paddingBottom:5},children:[e.jsx("input",{type:"file",id:"file",ref:d,style:{display:"none"},onChange:v}),e.jsx(p.Input,{type:"text",disabled:!0,style:f,value:S})]}),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(Pe,{tooltip:g("download"),disabled:!n,onClick:m,icon:e.jsx(H.DownloadOutlined,{})}),e.jsx(Pe,{tooltip:g("clear"),disabled:o||!n,onClick:_,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 Pn(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(pe);function d(){const g=n.map((S,y)=>e.jsx(p.Menu.Item,{children:e.jsxs(p.Row,{wrap:!1,children:[e.jsx(p.Col,{flex:"none",style:{paddingRight:20},children:Pn(S)}),e.jsx(p.Col,{flex:"auto",style:{paddingRight:20},children:S.type.charAt(0).toUpperCase()+S.type.slice(1)}),e.jsx(p.Col,{flex:"none",children:e.jsx(H.CheckOutlined,{style:{opacity:r.view_id===S.view_id?1:0}})})]})},S.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){wt({lang:f,onOk:()=>{g()}});return}g()}function u(g){h(()=>{const S=n.find(y=>y.view_id===parseInt(g.key));s(S)})}return e.jsxs("div",{style:{display:"flex"},children:[e.jsx(Pe,{tooltip:a?c("viewAs")+" "+c(a.type):"",icon:Pn(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 ft(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 Be(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(Pe,{type:c,tooltip:o,onClick:r,disabled:n,children:[f,a]})}function Bn(t){const{disabled:r=!1}=t,{formHasChanges:n,onNewClicked:s}=l.useContext(Ke),{t:o,lang:i}=l.useContext(pe),a=()=>{if(n){wt({lang:i,onOk:()=>{s()}});return}s()};return e.jsx(Be,{icon:e.jsx(H.FileAddOutlined,{}),tooltip:o("new"),onClick:a,disabled:r})}const{confirm:vl}=p.Modal,Sl=({onOk:t,onCancel:r,lang:n})=>{vl({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 Hn(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 Cl=t=>{const{numberOfAttachments:r,disabled:n}=t,{t:s,lang:o}=l.useContext(pe),[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:bl(t,a,o),title:s("attachments"),arrowContent:null,children:c})},bl=(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 xl(t){const{attachments:r,disabled:n=!1,onAddNewAttachment:s,onListAllAttachments:o,onViewAttachmentDetails:i}=t,{formRef:a}=l.useContext(Ke),[c,f]=l.useState(!1),[d,h]=l.useState([]),[u,g]=l.useState(!1),{t:S}=l.useContext(pe),y=l.useCallback(async()=>{f(!0);try{const v=await K.getHandler().readObjects({model:"ir.attachment",ids:r.map(_=>_.id),fieldsToRetrieve:["name","datas_fname","link"],context:a.current.getContext()});h(v.map(_=>({id:_.id,name:_.name,datas_fname:_.datas_fname,link:_.link})))}catch(v){Le(v)}f(!1)},r),m=l.useCallback(async v=>{if(v.link){window.open(v.link);return}g(!0);let _;try{_=(await K.getHandler().readObjects({model:"ir.attachment",ids:[v.id],context:a.current.getContext()}))[0]}catch(k){Le(k)}if(g(!1),!!_)if(_.datas){const k=await ot(_.datas);Ft(_.datas,k.mime)}else i(_)},[]),w=l.useCallback(async v=>{i(v)},[]);return l.useEffect(()=>{y()},[y]),e.jsxs(e.Fragment,{children:[e.jsx(Cl,{numberOfAttachments:r.length,attachments:d,disabled:n,loading:c,onAddNewAttachment:s,onListAllAttachments:o,onopenAttachmentLink:m,onOpenAttachmentDetail:w}),e.jsx(p.Modal,{title:S("downloadingAttachment"),open:u,footer:null,closable:!1,centered:!0,maskClosable:!1,children:e.jsx(p.Spin,{})})]})}function Kn({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:S,removingItem:y,duplicatingItem:m,setDuplicatingItem:w,setResults:v,formIsLoading:_,attachments:k,formRef:C,setFormHasChanges:V,previousView:M,setPreviousView:L,goToResourceId:b}=l.useContext(Ke),{t:T,lang:F}=l.useContext(pe),x=l.useContext(ct),{processAction:N}=x||{},I=l.useContext(je),{openRelate:O,openDefaultActionForModel:E}=I||{};function A(P){if(i){Sl({lang:F,onOk:()=>{P()}});return}P()}function D(P){if(i){wt({lang:F,onOk:()=>{P()}});return}P()}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(){nt({confirmMessage:T("confirmRemoveItem"),lang:F,onOk:()=>{J()}})}async function J(){try{S==null||S(!0),await K.getHandler().delete({model:g,ids:[c]});const P=f==null?void 0:f.filter(te=>te.id!==c);v==null||v(P);let Y=0;h>0&&h<=f.length-1&&(Y=h-1),P!=null&&P[Y]?(u==null||u(P==null?void 0:P[Y].id),d==null||d(Y)):(u==null||u(void 0),d==null||d(void 0))}catch(P){kt(JSON.stringify(P))}finally{S==null||S(!1)}}async function G(){try{w==null||w(!0);const P=await K.getHandler().duplicate({id:c,model:g,context:C.current.getContext()});P&&await(b==null?void 0:b(P))}catch(P){kt(JSON.stringify(P))}finally{w==null||w(!1)}}const Z=a||y||_||m;function j(P){N==null||N({actionData:P,values:C.current.getValues(),fields:C.current.getFields(),context:C.current.getContext(),onRefreshParentValues:()=>{C.current.fetchValues()}})}return n?e.jsxs(p.Space,{wrap:!0,children:[_&&e.jsxs(e.Fragment,{children:[e.jsx(p.Spin,{}),ht(),ht()]}),e.jsx(Bn,{disabled:a||_||y||m}),e.jsx(Be,{icon:e.jsx(H.SaveOutlined,{}),tooltip:T("save"),disabled:!i||Z,loading:a,onClick:o}),e.jsx(Be,{icon:e.jsx(H.CopyOutlined,{}),tooltip:T("duplicate"),disabled:i||a||c===void 0||m||_,loading:m,onClick:G}),e.jsx(Be,{icon:e.jsx(H.DeleteOutlined,{}),tooltip:T("delete"),disabled:a||c===void 0||y||m||_,loading:y,onClick:W}),ht(),e.jsx(Be,{icon:e.jsx(H.InfoCircleOutlined,{}),tooltip:T("showLogs"),disabled:a||c===void 0||y||m||_,loading:!1,onClick:()=>{Hn(g,c,T)}}),e.jsx(Be,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:T("refresh"),disabled:a||c===void 0||y||m||_,loading:!1,onClick:()=>{A(()=>{C.current.fetchValues()})}}),ht(),e.jsx(lr,{currentView:n,previousView:M,availableViews:r,onChangeView:P=>{L==null||L(n),V==null||V(!1),s==null||s(P)},disabled:Z,formHasChanges:i}),ht(),e.jsxs(p.Space,{children:[e.jsx(Be,{icon:e.jsx(H.LeftOutlined,{}),tooltip:T("previous"),disabled:Z,loading:!1,onClick:()=>{D($)}}),e.jsx(Be,{icon:e.jsx(H.RightOutlined,{}),tooltip:T("next"),disabled:Z,loading:!1,onClick:()=>{D(B)}})]}),ht(),e.jsx(ft,{icon:e.jsx(H.ThunderboltOutlined,{}),disabled:Z,tooltip:T("actions"),items:t==null?void 0:t.action,onItemClick:async P=>{!P||!(await pt({onFormSave:o})).succeed||j(P)}}),e.jsx(ft,{icon:e.jsx(H.PrinterOutlined,{}),disabled:Z,tooltip:T("reports"),items:t==null?void 0:t.print,onItemClick:async P=>{if(!P)return;const Y=await pt({onFormSave:o});!Y.succeed||j({...P,datas:{...P.datas||{},ids:[Y.currentId]}})}}),e.jsx(ft,{icon:e.jsx(H.EnterOutlined,{}),disabled:Z,tooltip:T("related"),items:t==null?void 0:t.relate,onItemClick:async P=>{!P||!(await pt({onFormSave:o})).succeed||O({relateData:P,values:C.current.getValues(),fields:C.current.getFields(),action_id:P.id,action_type:P.type})}}),e.jsx(xl,{disabled:Z,attachments:k,onAddNewAttachment:async()=>{const P=await pt({onFormSave:o});if(!P.succeed)return;const Y=P.currentId,te=g;E({model:"ir.attachment",values:{selection_associated_object:`${te},${Y}`},forced_values:{res_model:te,res_id:Y},initialViewType:"form"})},onListAllAttachments:async()=>{const P=await pt({onFormSave:o});if(!P.succeed)return;const Y=P.currentId;E({model:"ir.attachment",domain:[["res_model","=",`${g}`],["res_id","=",`${Y}`]],initialViewType:"tree"})},onViewAttachmentDetails:async P=>{!(await pt({onFormSave:o})).succeed||E({model:"ir.attachment",res_id:P.id,initialViewType:"form"})}})]}):null}function ht(){return e.jsx("div",{className:"inline-block w-2"})}async function pt({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:Tl}=p.theme,Yn=t=>{const{ooui:r,value:n,onChange:s,valueValidator:o,linkPrefix:i=""}=t,{id:a,readOnly:c,required:f}=r,{token:d}=Tl(),h=f&&!c?{backgroundColor:d.colorPrimaryBg}:void 0,u=l.useContext(Ve),{elementHasLostFocus:g}=u||{},[S,y]=l.useState(!1),[m,w]=l.useState(!1);l.useEffect(()=>{c&&!S&&w(!1),!n&&!c&&(y(!0),w(!0))},[S,c]);const v=_=>{s==null||s(_.target.value)};return e.jsxs(p.Row,{gutter:8,wrap:!1,align:"middle",children:[c?null:e.jsx(p.Col,{flex:"32px",children:S?e.jsx(p.Button,{icon:e.jsx(H.CheckOutlined,{}),onClick:()=>{o(n)&&(y(!1),w(!1))},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1}):e.jsx(p.Button,{icon:e.jsx(H.EditOutlined,{}),onClick:()=>{y(!0),w(!0)},style:{borderTopRightRadius:0,borderBottomRightRadius:0},tabIndex:-1})}),e.jsx(p.Col,{flex:"auto",children:m?e.jsx(p.Input,{style:{borderTopLeftRadius:0,borderBottomLeftRadius:0,...h},id:a,onChange:v,value:n,onBlur:()=>{o(n)&&(y(!1),w(!1),g==null||g())}}):e.jsx("a",{href:`${i}${n}`,style:{color:d.colorPrimary,paddingRight:15},target:"_blank",children:n})})]})},Wn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,...t,children:e.jsx(Yn,{ooui:r,valueValidator:s=>s?Co.default(s):!1})})},qn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,...t,children:e.jsx(Yn,{ooui:r,linkPrefix:"mailto:",valueValidator:s=>s?bo.default(s):!1})})},Fl=t=>{const{visible:r,onIdSubmitted:n,onCancel:s,isSearching:o}=t,{t:i}=l.useContext(pe),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:Ol}=p.theme;function Un(t){const{badgeNumber:r=0,...n}=t,{token:s}=Ol();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(Pe,{...n,style:{width:46,zIndex:0}})]})}function _l({refreshGraph:t}){const{t:r}=l.useContext(pe),{availableViews:n,currentView:s,setCurrentView:o,searchParams:i,searchVisible:a,setSearchVisible:c,graphIsLoading:f,previousView:d,setPreviousView:h}=l.useContext(Ke);return e.jsxs(p.Space,{wrap:!0,children:[e.jsx(Un,{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(Be,{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:Dl}=p.theme,{Title:kl,Text:At}=p.Typography;function Lt(t){const{title:r,children:n}=t,{title:s,currentView:o,currentId:i,currentItemIndex:a,results:c,totalItems:f,selectedRowItems:d}=l.useContext(Ke),{t:h}=l.useContext(pe),{token:u}=Dl();function g(){if((o==null?void 0:o.type)==="form")return i?f===0?e.jsxs(e.Fragment,{children:[h("editingDocument")," (id:"," ",e.jsx(At,{copyable:{icon:e.jsx(H.CopyOutlined,{style:{color:"red"}})},children:i}),")"]}):e.jsxs(e.Fragment,{children:[h("register")," ",a===void 0?1:a+1," /"," ",c.length," ",h("of")," ",f," - ",h("editingDocument")," (id:"," ",e.jsx(At,{copyable:!0,children:i}),")"]}):"";if((o==null?void 0:o.type)==="tree"&&d){if(d.length===1)return e.jsxs(e.Fragment,{children:["1 ",h("selectedRegisters")," - (id:"," ",e.jsx(At,{copyable:!0,children:d[0].id}),")"]});if(d.length>1)return e.jsxs(e.Fragment,{children:[d.length," ",h("selectedRegisters"),e.jsx(At,{copyable:{text:d.map(S=>S.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(kl,{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 Ml=t=>{const{viewData:r,visible:n,model:s,context:o,domain:i,formView:a,treeView:c}=t,f=l.useRef(),d=l.useContext(Ke),{setResults:h=void 0,setCurrentItemIndex:u=void 0,currentId:g=void 0,results:S=void 0,setSelectedRowItems:y=void 0,setSearchParams:m=void 0,searchVisible:w=!0,setSearchVisible:v=void 0,sorter:_=void 0,setSorter:k=void 0,setTotalItems:C=void 0,setSearchTreeNameSearch:V=void 0,setTreeIsLoading:M=void 0,limit:L,setLimit:b,searchParams:T,searchValues:F,setSearchValues:x,currentView:N}=d||{},[I,O]=l.useState(!0);l.useEffect(()=>{var W;(W=f.current)==null||W.refresh()},[T]),l.useEffect(()=>{r.view_id!==N.view_id&&O(!0)},[N]);const{clear:E,searchFilterLoading:A,searchError:D,offset:B,tableRefreshing:$}=tn({model:s,setSearchTreeNameSearch:V,setSelectedRowItems:y,searchParams:T,setSearchValues:x,setSearchParams:m,setSearchVisible:v,setTreeIsLoading:M,context:o,formView:a,treeView:c,sorter:_,setSorter:k,setCurrentItemIndex:u,setResultsActionView:h,resultsActionView:S,domain:i,currentId:g,setActionViewTotalItems:C,limit:L,setLimit:b});return!n||!r?null:e.jsxs(e.Fragment,{children:[e.jsx(Lt,{title:r.name,children:e.jsx(_l,{refreshGraph:()=>{f.current.refresh()}})}),e.jsx(Qt,{fields:{...c.fields,...a.fields},searchFields:Gr([a.search_fields,c.search_fields]),formXml:a.arch,limit:L,onClear:E,offset:B,isSearching:A,onSubmit:W=>{O(!1),m==null||m(W.params),v==null||v(!1)},searchError:D,searchVisible:w,searchValues:F,showLimitOptions:!1}),$?e.jsx(p.Spin,{}):e.jsx($t,{ref:f,view_id:r.view_id,model:s,context:o,domain:Dt(T||[],i),limit:I?L:void 0,manualIds:I?S==null?void 0:S.map(W=>W.id):void 0})]})},Vl=t=>{const{visible:r,formRef:n,model:s,currentId:o,domain:i,formView:a,context:c,defaultValues:f,forcedValues:d,results:h,setResults:u,setCurrentItemIndex:g}=t;return r?e.jsxs(e.Fragment,{children:[e.jsx(Lt,{children:e.jsx(Kn,{toolbar:a==null?void 0:a.toolbar})}),e.jsx(dt,{rootForm:!0,ref:n,model:s,defaultValues:f,forcedValues:d,formView:a,actionDomain:i,id:o,parentContext:c,onSubmitSucceed:(S,y)=>{h.findIndex(w=>w.id===S)===-1&&(h.push(y),u(h),g(h.length-1))}})]}):null};function El(t){const{onSearch:r,disabled:n=!1,searchText:s}=t,{t:o}=l.useContext(pe),[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 Gn=He.default.createContext({previewFeatures:!1});function Il(t){var Z;const{availableViews:r,currentView:n,setCurrentView:s,selectedRowItems:o,setRemovingItem:i,removingItem:a,duplicatingItem:c,setDuplicatingItem:f,currentModel:d,searchTreeRef:h,setCurrentId:u,setCurrentItemIndex:g,searchParams:S,searchVisible:y,setSearchVisible:m,setSearchTreeNameSearch:w,searchTreeNameSearch:v,treeIsLoading:_,setPreviousView:k,previousView:C,results:V,limit:M,totalItems:L}=l.useContext(Ke),{parentContext:b={},treeExpandable:T,toolbar:F}=t,{previewFeatures:x}=l.useContext(Gn),{t:N,lang:I}=l.useContext(pe),O=l.useContext(ct),{processAction:E}=O||{},[A,D]=l.useState(!1),B=v!==void 0&&v.trim().length>0;function $(){nt({confirmMessage:N("confirmRemove"),lang:I,onOk:()=>{W()}})}async function W(){var j;try{i==null||i(!0),await K.getHandler().delete({model:d,ids:o.map(P=>P.id)}),u==null||u(void 0),g==null||g(void 0),(j=h==null?void 0:h.current)==null||j.refreshResults()}catch(P){Le(P)}finally{i==null||i(!1)}}async function J(){var j;try{f==null||f(!0);const P=o[0].id;await K.getHandler().duplicate({id:P,model:d,context:{...b}})&&((j=h==null?void 0:h.current)==null||j.refreshResults())}catch(P){Le(P)}finally{f==null||f(!1)}}function G(j){E==null||E({actionData:j,values:{active_id:o==null?void 0:o.map(P=>P.id)[0],active_ids:o==null?void 0:o.map(P=>P.id)},fields:{},context:{...b,active_id:o==null?void 0:o.map(P=>P.id)[0],active_ids:o==null?void 0:o.map(P=>P.id)},onRefreshParentValues:()=>{var P;(P=h==null?void 0:h.current)==null||P.refreshResults()}})}return e.jsxs(p.Space,{wrap:!0,children:[T?null:e.jsxs(e.Fragment,{children:[e.jsx(El,{disabled:c||a||_,searchText:v,onSearch:j=>{j&&j.trim().length>0?w==null||w(j):w==null||w(void 0)}}),!T&&e.jsx(Un,{icon:e.jsx(H.FilterOutlined,{style:{color:y?"white":void 0}}),tooltip:N("advanced_search"),type:y?"primary":"default",onClick:()=>{m==null||m(!y)},disabled:c||a||_,badgeNumber:S==null?void 0:S.length}),xt(),e.jsx(Bn,{disabled:_}),e.jsx(Be,{icon:e.jsx(H.CopyOutlined,{}),tooltip:N("duplicate"),disabled:!o||(o==null?void 0:o.length)!==1||c||_,loading:c,onClick:J}),e.jsx(Be,{icon:e.jsx(H.DeleteOutlined,{}),tooltip:N("delete"),disabled:!(o&&(o==null?void 0:o.length)>0)||_,loading:a,onClick:$}),xt()]}),e.jsx(Be,{icon:e.jsx(H.InfoCircleOutlined,{}),tooltip:N("showLogs"),disabled:!(o&&(o==null?void 0:o.length)>0)||_,loading:!1,onClick:()=>{Hn(d,o[0].id,N)}}),e.jsx(Be,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:N("refresh"),disabled:c||a||_,loading:!1,onClick:()=>{var j;(j=h==null?void 0:h.current)==null||j.refreshResults()}}),!T&&e.jsxs(e.Fragment,{children:[xt(),e.jsx(lr,{currentView:n,availableViews:r,onChangeView:j=>{k==null||k(n),s==null||s(j)},previousView:C,disabled:_})]}),xt(),e.jsx(ft,{icon:e.jsx(H.ThunderboltOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||_,tooltip:N("actions"),items:F==null?void 0:F.action,onItemClick:j=>{!j||G(j)}}),e.jsx(ft,{icon:e.jsx(H.PrinterOutlined,{}),disabled:!(o&&(o==null?void 0:o.length)>0)||_,tooltip:N("reports"),items:F==null?void 0:F.print,onItemClick:j=>{!j||G({...j,datas:{...j.datas||{},ids:o.map(P=>P.id)}})}}),x&&e.jsxs(e.Fragment,{children:[xt(),e.jsx(ft,{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:N("export"),items:[{id:"print_screen",name:N("printScreen")},{id:"export",name:N("advancedExport")}],onItemClick:j=>{if(j.id==="print_screen"){let P=(o==null?void 0:o.map(Y=>Y.id))||[];P.length===0&&(P=(V==null?void 0:V.map(Y=>Y.id))||[]),G({id:-1,model:d,report_name:"printscreen.list",type:"ir.actions.report.xml",datas:{model:d,ids:P}});return}D(!0)},disabled:c||a||_||B}),e.jsx(Vn,{visible:A,locale:I,onClose:()=>D(!1),model:d,domain:Dt(((Z=h==null?void 0:h.current)==null?void 0:Z.getDomain())||[],S||[]),limit:M,totalRegisters:L||0,selectedRegistersToExport:o,visibleRegisters:(V==null?void 0:V.length)||0,context:b})]})]})}function xt(){return e.jsx("div",{className:"inline-block w-2"})}const $l=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:S}=t,{currentView:y,setPreviousView:m}=l.useContext(Ke);return r?e.jsxs(e.Fragment,{children:[e.jsx(Lt,{children:e.jsx(Il,{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:S,formView:i,treeView:a,domain:c,onRowClicked:w=>{const{id:v}=w;h(v);const _=d.findIndex(C=>C.id===v);m==null||m(y),f(_);const k=g.find(C=>C.type==="form");u(k)}})]}):null},cr=He.default.createContext(null),Al=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 Ll(){const{isLoading:t,dashboardRef:r,moveItemsEnabled:n,setMoveItemsEnabled:s}=l.useContext(cr),{t:o}=l.useContext(pe);return e.jsxs(p.Space,{wrap:!0,children:[e.jsx(Be,{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)}}),Nl(),e.jsx(Be,{icon:e.jsx(H.SettingOutlined,{}),tooltip:o("configDashboard"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.configDashboard()}}),e.jsx(Be,{icon:e.jsx(H.ReloadOutlined,{}),tooltip:o("refresh"),disabled:t,loading:!1,onClick:()=>{r==null||r.current.refresh()}})]})}function Nl(){return e.jsx("div",{className:"inline-block w-2"})}const Pl=t=>{const{dashboardData:r}=t,n=l.useRef(),s=l.useContext(je),{openShortcut:o}=s||{};return r?e.jsxs(Al,{dashboardRef:n,openAction:i=>{o(i)},children:[e.jsx(Lt,{children:e.jsx(Ll,{})}),e.jsx(Zn,{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 Bl(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 Hl(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:S,action_type:y,treeExpandable:m=!1,limit:w}=t,[v,_]=l.useState(),[k,C]=l.useState([]),[V,M]=l.useState(!0),L=g||void 0,[b,T]=l.useState(L),[F,x]=l.useState([]),[N,I]=l.useState(),[O,E]=l.useState([]),[A,D]=l.useState(),[B,$]=l.useState(0),[W,J]=l.useState(!1),[G,Z]=l.useState(!1),[j,P]=l.useState(),{t:Y}=l.useContext(pe),te=l.useRef(),Q=l.useRef(),ie=l.useContext(je),{setCurrentView:ee,setCurrentId:X,tabs:ue,activeKey:we,openAction:Ee,onRemoveTab:Te}=ie||{};yo.useHotkeys("ctrl+g,command+g",re=>{re.preventDefault(),Fe()},[we,ue,v,N,O]);function Ie(re){T(re),X==null||X(re)}function me(re){_(re),ee==null||ee(re)}l.useImperativeHandle(r,()=>({canWeClose:Se}));const ae=async()=>{M(!0);const re=[],xe=[];for(const fe of i){const[Ce,de]=fe;de!=="dashboard"?xe.push({viewTuple:fe,promise:K.getHandler().getView({model:s,type:de,id:Ce,context:o})}):xe.push({viewTuple:fe})}const Me=await Bl(xe);for(const fe of Me){if(!fe)continue;const[,Ce]=fe.viewTuple;let de=fe.info;switch(Ce){case"dashboard":{const Ye=i.find(Xe=>{const[,R]=Xe;return R==="form"});let Ae;Ye&&(Ae={action_id:S,action_type:y,name:a,res_id:o.active_id,res_model:s,view_id:Ye[0],view_type:Ye[1]}),re.push({type:"dashboard",id:o.active_id,model:s,context:o,configAction:Ae});break}case"form":{re.push({...de,type:Ce});break}case"tree":{re.push({...de,isExpandable:m,type:Ce});break}case"graph":{re.push({...de,type:Ce});break}}}let ce;!d&&re.find(fe=>fe.type==="tree")?ce=re.find(Ce=>Ce.type==="tree"):d?ce=re.find(Ce=>d.id?Ce.type===d.type&&Ce.view_id===d.id:Ce.type===d.type):ce=re.find(Ce=>Ce.type==="form"),ce||(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`),Te==null||Te(f)),me(ce),C(re),M(!1)};c({tabKey:f,canWeClose:Se}),l.useEffect(()=>{const re=k.find(Me=>Me.type==="tree"),xe=k.find(Me=>d.id?Me.type===d.type&&Me.view_id===d.id:Me.type===d.type);me(xe||re),g?X==null||X(L):(Ie(void 0),I(void 0)),ae()},[s,i,g]),l.useEffect(()=>{we===f&&(X==null||X(b),ee==null||ee(v))},[ue,we]);async function Se(){return v&&v.type==="form"?await te.current.cancelUnsavedChanges():!0}async function Fe(){we===f&&(v.type==="form"&&!await te.current.cancelUnsavedChanges()||J(!0))}async function Oe(re){var fe;Z(!0);const xe=O.findIndex(Ce=>Ce.id===re);let Me;if(xe===-1){try{Me=(fe=await K.getHandler().readObjects({model:s,ids:[re],context:o}))==null?void 0:fe[0]}catch{}if(!Me){Z(!1),J(!1),ze(Y("idNotFound"));return}}else Me=O[xe];Z(!1),J(!1);const ce=i.find(Ce=>Ce[1]==="form");Ee({domain:[],context:o,model:s,views:i,title:a,target:"current",initialView:{id:ce==null?void 0:ce[0],type:"form"},action_id:S,action_type:y,res_id:re})}function $e(){return k.map(re=>{switch(re.type){case"form":return e.jsx(Vl,{formRef:te,currentId:b,visible:v.type===re.type&&v.view_id===re.view_id,formView:re,model:s,context:o,domain:n,defaultValues:h,forcedValues:u,results:O,setResults:E,setCurrentItemIndex:I},`${re.type}-${re.view_id}`);case"tree":return e.jsx($l,{visible:v.type===re.type&&v.view_id===re.view_id,limit:w,model:s,context:o,domain:n,formView:k.find(xe=>xe.type==="form"),treeView:re,searchTreeRef:Q,searchTreeNameSearch:j,availableViews:k,results:O,setCurrentItemIndex:I,setCurrentId:Ie,setCurrentView:me},`${re.type}-${re.view_id}`);case"graph":return e.jsx(Ml,{visible:v.type===re.type&&v.view_id===re.view_id,viewData:re,model:s,context:o,domain:n,treeView:k.find(xe=>xe.type==="tree"),formView:k.find(xe=>xe.type==="form")},`${re.type}-${re.view_id}`);case"dashboard":return e.jsx(Pl,{dashboardData:re},`${re.type}-${re.view_id}`)}})}function Ne(){if(b===void 0&&v.type==="form")te.current.clearAndReload();else{Ie(void 0);const re=k.find(xe=>xe.type==="form");me(re)}}return V?e.jsx(p.Spin,{}):v?e.jsxs($i,{title:a,currentView:v,setCurrentView:me,availableViews:k,formRef:te,searchTreeRef:Q,onNewClicked:Ne,currentId:b,setCurrentId:Ie,setCurrentItemIndex:I,currentItemIndex:N,results:O,setResults:E,currentModel:s,sorter:A,setSorter:D,totalItems:B,setTotalItems:$,selectedRowItems:F,setSelectedRowItems:x,setSearchTreeNameSearch:P,searchTreeNameSearch:j,goToResourceId:Oe,limit:w,children:[$e(),e.jsx(Fl,{visible:W,onIdSubmitted:Oe,isSearching:G,onCancel:()=>{J(!1)}})]}):null}const jn=l.forwardRef(Hl);async function Kl({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,S=g==="tree",y=[];for(const _ of d){const[k,C]=_;if(k)y.push(_);else{const{view_id:V}=await K.getHandler().getView({model:f,type:C,id:k,context:{...r,...a}});y.push([V,C])}}const[m,w]=y[0],v={id:m,type:w};return{title:h,actionId:t,actionType:s,key:yr.v4(),views:d,model:f,context:{...r,...a},domain:c,initialView:v,limit:u,treeExpandable:S}}const Ic="",Yl=mr.WidthProvider(mr.Responsive),zn=t=>{const{children:r=[],onPositionItemsChanged:n}=t,s=He.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(Yl,{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:Wl}=p.theme,{Text:ql}=p.Typography,Jn=t=>{const{title:r,children:n,action:s,openAction:o}=t,{token:i}=Wl();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(ql,{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]})},Ul=80;function Gl(t){const{action:r,model:n,view_id:s,onRowClicked:o,domain:i=[],visible:a=!0,parentContext:c={}}=t,[f,d]=l.useState(!1),[h,u]=l.useState(!1),[g,S]=l.useState(),[y,m]=l.useState(),[w,v]=l.useState(),[_,k]=l.useState(1),[C,V]=l.useState(0),M=l.useRef(Ul),L=l.useRef([]),[b,T]=l.useState(0),[F,x]=l.useState([]),[N,I]=l.useState(void 0),[O,E]=l.useState(),[A,D]=l.useState(),[B,$]=l.useState(),[W,J]=l.useState(!1),G=l.useRef([]),Z=X=>{J(!0),k(X),V((X-1)*M.current)},j=async()=>{const X=G.current.length>0?G.current:i,ue=Dt(L.current,X),{colors:we}=st(y),{totalItems:Ee,results:Te,attrsEvaluated:Ie}=await K.getHandler().searchForTree({params:ue,limit:M.current,offset:C,model:g,fields:y.fields,context:c,attrs:we&&{colors:we}});I(Ot(Ie));const me=it({resultsToSort:Te,sorter:O,fields:{...y.fields,...w.fields}});J(!1),x(me);const ae=await Ee;T(ae)},P=async()=>{try{J(!0),await j()}catch(X){D(JSON.stringify(X))}};l.useEffect(()=>{!h||a&&P()},[_,C,h,a]);const Y=async X=>{u(!1),d(!0),$(void 0);try{X==="action"?await te():await Q(),u(!0)}catch(ue){$(ue)}finally{d(!1)}},te=async()=>{const X=await K.getHandler().getViewsForAction({action:r,context:c});G.current=X.domain,v(X.views.get("form")),m(X.views.get("tree")),S(X.model),M.current=X.limit},Q=async()=>{S(n);const X=await K.getHandler().getView({model:n,type:"form",context:c});v(X);const ue=await K.getHandler().getView({model:n,type:"tree",id:s,context:c});m(ue)};l.useEffect(()=>{r?Y("action"):n&&Y("model")},[r,n]);const ie=X=>{const{id:ue}=X;o({id:ue,model:g,treeView:y})},ee=()=>!y||!w?null:e.jsxs("div",{style:{overflowY:"scroll"},children:[A&&e.jsx(p.Alert,{className:"mt-10",message:A,type:"error",banner:!0}),e.jsx(Ct,{showPagination:!1,total:b,limit:M.current,page:_,treeView:y,results:F,onRequestPageChange:Z,loading:W,onRowClicked:ie,colorsForResults:N,sorter:O,onChangeSort:X=>{E==null||E(X);const ue=it({resultsToSort:F,sorter:X,fields:{...y.fields,...w.fields}});x(ue)},context:c})]});return B?e.jsx(p.Alert,{className:"mt-10",message:B,type:"error",banner:!0}):f?e.jsx(p.Spin,{style:{padding:"2rem"}}):ee()}const jl=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(dt,{...t,model:r,id:n,readOnly:!0})})},dr="line_ids";function zl(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:S,moveItemsEnabled:y}=l.useContext(cr),m=l.useRef(),w=l.useRef();l.useEffect(()=>{v()},[n,o,s]),l.useImperativeHandle(r,()=>({refresh:()=>{v()},configDashboard:L}));async function v(){d(!0),g(!0),u(void 0);try{const b=await _(),T=await C(b),F=b.fields[dr].relation,x=T[dr].items;w.current=b.fields;const N=await k({items:x,model:F,context:s}),I=await V(N);c(I),d(!1),g(!1)}catch(b){u(JSON.stringify(b))}}async function _(){return await K.getHandler().getView({model:n,type:"form",context:s})}async function k({items:b,model:T,context:F}){m.current=(await K.getHandler().getView({model:T,type:"form",context:F})).fields;const[x]=await zt({treeView:{fields:m.current},formView:{fields:m.current},model:T,items:b,context:F,currentView:"form"});return x}async function C(b){return(await K.getHandler().readObjects({model:n,ids:[o],fields:b.fields,context:s}))[0]}async function V(b){const T=[];for(const F of b){const{values:x}=F;if(x.action_id&&x.action_id.length>0){const N=parseInt(x.action_id[0],10),I=await Kl({actionId:N,rootContext:s});T.push({...F,actionData:I})}}return T}async function M(b){if(!y)return;const T=b.filter(I=>{const O=a.find(A=>A.id===I.id);if(!O)return!1;if(!O.position)return!0;const E={...JSON.parse(O.position.replace(/'/g,'"')),id:O.id};return JSON.stringify(I)!==JSON.stringify(E)});if(T.length===0)return;const x=a.filter(I=>T.map(O=>O.id).includes(I.id)).map(I=>{const O={...T.find(E=>E.id===I.id)};return delete O.id,{...I},{...I,operation:"pendingUpdate",values:{...I.values,position:JSON.stringify(O).replace(/"/g,"'")}}}),N={fields:m.current,items:x};await K.getHandler().update({model:n,id:o,values:{[dr]:N},fields:w.current,context:s})}async function L(){S(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(zn,{onPositionItemsChanged:M,children:a.map((b,T)=>{const{actionData:F,values:x}=b,{position:N,id:I}=x,{actionId:O,actionType:E,key:A,title:D,views:B,model:$,context:W,domain:J,initialView:G,limit:Z}=F;let j={};try{j=JSON.parse(N.replace(/'/g,'"'))}catch{j={x:T*2,y:0,w:2,h:3}}let P=null;if((G==null?void 0:G.type)==="graph")P=e.jsx($t,{view_id:B.filter(Q=>Q[1]==="graph")[0][0],model:$,context:W,domain:J,limit:Z});else if((G==null?void 0:G.type)==="form")P=e.jsx(jl,{model:$,actionDomain:J});else if((G==null?void 0:G.type)==="tree")P=e.jsx(Gl,{model:$,domain:J,view_id:B.filter(Q=>Q[1]==="tree")[0][0],onRowClicked:Q=>{const ie=B.find(ee=>{const[,X]=ee;return X==="form"});if(ie){const[ee,X]=ie,{actionId:ue,actionType:we,title:Ee,model:Te}=F,Ie={action_id:ue,action_type:we,name:Ee,res_id:Q.id,res_model:Te,view_id:ee,view_type:X};S(Ie)}}});else if(G!==void 0){const Q=G&&Array.isArray(G.id)?{...G,id:G.id[0]}:G;P=e.jsx(jn,{action_id:O,action_type:E,tabKey:A,title:D,views:B,model:$,context:W,domain:J,setCanWeClose:()=>{},initialView:Q,limit:Z})}let Y;const te=B.find(Q=>{const[,ie]=Q;return ie==="tree"});if(te){const[Q,ie]=te,{actionId:ee,actionType:X,title:ue,model:we}=F;Y={action_id:ee,action_type:X,name:ue,res_id:!1,res_model:we,view_id:Q,view_type:ie}}return e.jsx(Jn,{id:I,title:D,parms:j,action:Y,openAction:S,children:P},I)})})}const Zn=l.forwardRef(zl),Xn=t=>{const{ooui:r}=t;return e.jsx(ge,{type:"array",...t,children:e.jsx(Jl,{ooui:r})})},Jl=t=>{const{value:r,ooui:n,onChange:s}=t,{items:o=[]}=r||{},i=o.filter(b=>b.operation!=="pendingRemove").map(b=>b.id),[a,c]=l.useState([]),[f,d]=l.useState(),[h,u]=l.useState(!1),{relation:g,context:S,readOnly:y,field:m,columns:w}=n,v=l.useContext(Ve),{getContext:_}=v||{};et.default(()=>{C()},[o]);const k=b=>{s==null||s({items:b})};async function C(){u(!0);let b=[];if(n.domain){const T=await K.getHandler().evalDomain({domain:n.domain,values:lt({fields:v==null?void 0:v.getFields(),values:v.getPlainValues()}),fields:v==null?void 0:v.getFields(),context:v.getContext()});b=[...b,...T]}try{const F=(await K.getHandler().search({model:g,params:b,fields:[m],context:{..._==null?void 0:_(),...S}})).map(x=>{const N=x[m];let I=N;return Array.isArray(N)&&(I=N[1]),{label:I,value:x.id}});c(F)}catch(T){d(T)}finally{u(!1)}if(f)return e.jsx(p.Alert,{className:"mt-10",message:f,type:"error",banner:!0})}const V=()=>{L(a.map(b=>b.value))},M=()=>{L([])},L=b=>{const T=o.map(x=>b.includes(x.id)?x.operation=="pendingRemove"?{...x,operation:"original"}:x:{id:x.id,operation:"pendingRemove"}),F=T.map(x=>x.id);b.filter(x=>!F.includes(x)).map(x=>{T.push({id:x,operation:"pendingLink"})}),k(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(b=>e.jsx(p.Col,{span:Math.floor(24/w),children:e.jsx(p.Checkbox,{value:b.value,children:b.label})}))})}),!y&&e.jsxs(p.Space,{children:[e.jsx(p.Button,{onClick:V,disabled:i.length==a.length,children:"Check all"}),e.jsx(p.Button,{onClick:M,disabled:i.length===0,children:"Uncheck all"})]})]})})},Qn=t=>e.jsx(ge,{...t,children:e.jsx(Zl,{...t})}),Zl=t=>{const{value:r,ooui:n}=t;return e.jsx("div",{style:{height:n.height?n.height+"px":"100%",overflow:"auto"},children:e.jsx(xo.default,{children:r,className:"ant-typography"})})},Rn=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,type:"any",...t,children:e.jsx(Xl,{...t})})},Xl=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})})},eo=t=>{const{ooui:r}=t,{id:n,readOnly:s,required:o}=r;return e.jsx(ge,{...t,valuePropName:"checked",children:e.jsx(Ql,{id:n,readOnly:s,required:o})})},Ql=t=>{const{required:r,readOnly:n,...s}=t;return e.jsx("div",{className:"flex flex-row",children:e.jsx(p.Switch,{disabled:n,...s})})},to=t=>{const{ooui:r}=t,{required:n}=r;return e.jsx(ge,{required:n,type:"any",...t,children:e.jsx(Rl,{...t})})},Rl=t=>{const{ooui:r,value:n}=t,{selectionValues:s,errorField:o}=r,i=l.useContext(Ve),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}))})},ro=t=>{const{ooui:r}=t,{lang:n,height:s}=r,o=l.useContext(Ve),{elementHasLostFocus:i}=o||{},a=c=>{c.onDidBlurEditorWidget(i)};return e.jsx(ge,{...t,children:e.jsx(To.default,{defaultLanguage:n||"",height:s||300,onMount:a})})},{Content:ec}=p.Layout,{Title:tc}=p.Typography;function rc(){const{t}=l.useContext(pe);return e.jsx(ec,{className:"m-5 select-none",children:e.jsx(tc,{level:5,children:t("welcome")})})}function nc(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(rc,{})}]),h=l.useRef(new Map),u=l.useRef();l.useImperativeHandle(r,()=>({retrieveAndOpenAction:y,openShortcut:v}));function g(C){if(C===a){const V=f.findIndex(M=>M.key===C);f[V-1]&&c(f[V-1].key),f[V+1]&&c(f[V+1].key)}d(f.filter(V=>V.key!==C)),h.current.delete(C)}function S({tabKey:C,canWeClose:V}){h.current.set(C,V)}async function y({action:C,values:V,forced_values:M,initialViewType:L,res_id:b,domain:T=[]}){const F=await K.getHandler().getActionData({action:C,context:o});if(F.type==="ir.actions.wizard"){Le("Action type not supported");return}const[x,N]=C.split(","),I=parseInt(N),O=se.parseContext({context:F.context,values:s,fields:{}}),E=F.domain?await K.getHandler().evalDomain({domain:F.domain,values:s,context:{...o,...O}}):[],{res_model:A,views:D,name:B,target:$,view_type:W,limit:J}=F,G=W==="tree",Z=[];for(const P of D){const[Y,te]=P;if(Y)Z.push(P);else if(te==="dashboard")Z.push([void 0,"dashboard"]);else{const{view_id:Q}=await K.getHandler().getView({model:A,type:te,id:Y,context:{...o,...O}});Z.push([Q,te])}}let j;if(L){const[P,Y]=Z.find(([te,Q])=>Q===L);j={id:P,type:Y}}else{const[P,Y]=Z[0];j={id:P,type:Y}}k({domain:[...E,...T],context:{...o,...O},model:A,views:Z,title:B,target:$,initialView:j,action_type:x,action_id:I,values:V,forced_values:M,res_id:b,treeExpandable:G,limit:J})}function m({title:C,content:V,key:M,action:L}){let b=[...f];f.length===1&&f[0].key==="welcome"&&(b=[...f.filter(T=>T.key!=="welcome")]),d([...b,{title:C,key:M,closable:!0,content:V,action:L}]),c(M)}async function w({relateData:C,fields:V,values:M,action_id:L,action_type:b}){const{res_model:T,context:F,domain:x,views:N,target:I,string:O,limit:E}=C,[A,D]=N[0],B={id:A,type:D},$=se.parseContext({context:F,values:{...M,...s},fields:V}),W=x?await K.getHandler().evalDomain({domain:x,values:lt({fields:V,values:{...M,...s}}),fields:V,context:{...o,...$}}):[];k({model:T,target:I,views:N,context:{...o,...$},domain:W,title:O,initialView:B,action_id:L,action_type:b,limit:E})}async function v(C){const{action_id:V,action_type:M,res_id:L,view_id:b}=C,T=`${M},${V}`,F=await K.getHandler().getActionData({action:T,context:o}),x=se.parseContext({context:F.context,values:s,fields:{}}),N=F.domain?await K.getHandler().evalDomain({domain:F.domain,values:s,context:{...o,...x}}):[],{res_model:I,views:O,name:E,target:A,view_type:D,limit:B}=F,$=D==="tree",W=[];for(const j of O){const[P,Y]=j;if(P)W.push(j);else if(Y==="dashboard")W.push([void 0,"dashboard"]);else{const{view_id:te}=await K.getHandler().getView({model:I,type:Y,id:P,context:{...o,...x}});W.push([te,Y])}}let J,G;if(b==null){const j=W.find(P=>P[0]===void 0);J=void 0,G=j[1]}else[J,G]=W.find(j=>j[0]===void 0?!1:j[0]===b);const Z={id:J,type:G};k({domain:N,context:{...o,...x},model:I,views:W,title:E,target:A,initialView:Z,action_id:V,action_type:M,res_id:L,treeExpandable:$,limit:B})}async function _({model:C,values:V,forced_values:M,initialViewType:L,res_id:b,domain:T}){const F=await K.getHandler().getActionStringForModel(C);await y({action:F,values:V,forced_values:M,initialViewType:L,res_id:b,domain:T})}async function k({domain:C,context:V,model:M,views:L,title:b,target:T,initialView:F,action_id:x,action_type:N,res_id:I,values:O,forced_values:E,treeExpandable:A=!1,limit:D}){const B=yr.v4();if(T!=="current"){const $=await K.getHandler().getView({model:M,type:"form",id:F.type==="form"?F.id:void 0,context:{...o,...V}});u.current.openActionModal({domain:C,model:M,formView:$,context:{...o,...V},actionData:{action_id:x,action_type:N,res_id:I,view_id:$.view_id}})}else{const $=F&&Array.isArray(F.id)?{...F,id:F.id[0]}:F;m({title:b,action:{id:x,type:N},content:e.jsx(jn,{action_id:x,action_type:N,tabKey:B,title:b,views:L,model:M,context:{...o,...V},domain:C,setCanWeClose:S,initialView:$,res_id:I,formDefaultValues:O,formForcedValues:E,treeExpandable:A,limit:D}),key:B})}}return e.jsx(Mo,{lang:i,children:e.jsx(Ai,{openShortcut:v,openAction:k,openRelate:w,openDefaultActionForModel:_,tabs:f,activeKey:a,onRemoveTab:async C=>{const V=h.current.get(C);(await(V==null?void 0:V())||a==="welcome")&&g(C)},onChangeTab:C=>{c(C)},children:e.jsx(nn,{ref:u,globalValues:s,children:n})})})}const oc=l.forwardRef(nc),{useToken:sc}=p.theme;function ic(t){const{label:r,onClose:n,tabKey:s,isActive:o,onSelected:i}=t,{token:a}=sc(),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 ac(){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(ic,{tabKey:i.key,label:i.title,onClose:s,isActive:r===i.key,onSelected:o},i.key))})}function lc(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 cc=He.default.memo(lc,()=>!0);function dc(){const t=l.useContext(je),{tabs:r}=t||{},n=(r==null?void 0:r.map(s=>e.jsx(cc,{tab:s},s.key)))||null;return e.jsx(e.Fragment,{children:n})}const{useToken:uc}=p.theme,fc=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),[S,y]=l.useState(),{t:m}=l.useContext(pe)||{},{token:w}=uc(),v=l.useContext(je),{openShortcut:_,tabs:k,activeKey:C,currentView:V,currentId:M,openDefaultActionForModel:L}=v||{};l.useEffect(()=>{b()},[]),l.useEffect(()=>{x()},[k,C,V,M]);async function b(){try{g(!0);const A=await r();h(A)}catch(A){Le(A)}finally{g(!1)}}function T(A){const{key:D}=A,B=d.find($=>$.id===Number(D));(B==null?void 0:B.action_type)!=="ir.actions.wizard"&&(B&&_(B),f(!1))}function F(A){A&&b(),f(A)}async function x(){if(!V)return;const A=k.find(G=>G.key===C),{id:D,type:B}=(A==null?void 0:A.action)||{};if(!D||!B){a(!1);return}const $=V.view_id;let W=!1;V.type==="form"&&(W=M||!1);const J=await n({action_id:D,action_type:B,view_id:$,res_id:W});J!==!1&&y(J),a(J!==!1)}async function N(){f(!1),L==null||L({model:"ir.ui.view_sc"})}const I=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:N})})})]}),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(O,{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 O({title:A,type:D}){const B=D==="tree"?e.jsx(H.TableOutlined,{}):e.jsx(H.FormOutlined,{});return e.jsxs(p.Row,{wrap:!1,children:[e.jsx(p.Col,{flex:"none",style:{paddingRight:20},children:B}),e.jsx(p.Col,{flex:"auto",children:A})]})}async function E(){if(i&&S)await o(S);else{if(!V)return;const A=k.find(J=>J.key===C),{id:D,type:B}=(A==null?void 0:A.action)||{},$=V.view_id;let W=!1;if(!D||!B){a(!1);return}V.type==="form"&&(W=M||!1),await s({action_id:D,action_type:B,view_id:$,res_id:W})}await b(),a(!i)}return e.jsxs(e.Fragment,{children:[e.jsx(p.Button,{type:i?"primary":"default",icon:i?e.jsx(H.StarFilled,{style:{color:"white"}}):e.jsx(H.StarOutlined,{}),style:{width:50,borderTopRightRadius:0,borderBottomRightRadius:0},onClick:E}),e.jsx(p.Dropdown,{overlay:I,onVisibleChange:F,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=Kn,U.Binary=Nn,U.Boolean=Mr,U.Button=qt,U.ButtonGroup=Tr,U.Char=Ut,U.CodeEditor=ro,U.ConfigContext=Gn,U.ConnectionProvider=K,U.ContentRootProvider=nn,U.CurrentTabContent=dc,U.Dashboard=Zn,U.DashboardGrid=zn,U.DashboardGridItem=Jn,U.Date=En,U.DateTime=In,U.Email=qn,U.ExportModal=Vn,U.FavouriteButton=fc,U.Float=Xt,U.FloatTime=Fn,U.Form=dt,U.FormModal=ut,U.GraphIndicator=Cn,U.Group=nr,U.Image=Yr,U.Integer=St,U.Label=mt,U.Many2one=yn,U.Markdown=Qn,U.MultiCheckbox=Xn,U.Notebook=On,U.One2many=Tn,U.ProgressBar=an,U.Radio=Rn,U.Reference=Ln,U.RootView=oc,U.SearchFilter=Qt,U.SearchModal=tr,U.SearchTree=er,U.Selection=Gt,U.Separator=Dn,U.Steps=to,U.Switch=eo,U.TabSelector=ac,U.Tag=zr,U.Tags=Xr,U.Text=_n,U.Time=An,U.Tree=Ct,U.Url=Wn,U.iconMapper=Ue,U.showConfirmDialog=nt,Object.defineProperties(U,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
37
37
|
//# sourceMappingURL=react-ooui.umd.js.map
|