@odoo/owl 3.0.0-alpha.26 → 3.0.0-alpha.29

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.
Files changed (58) hide show
  1. package/README.md +4 -37
  2. package/dist/owl.cjs.js +6698 -6657
  3. package/dist/owl.es.js +6664 -6602
  4. package/dist/owl.iife.js +6874 -6835
  5. package/dist/owl.iife.min.js +27 -1
  6. package/dist/types/owl.d.ts +682 -624
  7. package/package.json +11 -95
  8. package/dist/compile_templates.mjs +0 -2474
  9. package/dist/owl-devtools.zip +0 -0
  10. package/dist/types/common/owl_error.d.ts +0 -3
  11. package/dist/types/common/utils.d.ts +0 -8
  12. package/dist/types/compiler/code_generator.d.ts +0 -134
  13. package/dist/types/compiler/index.d.ts +0 -13
  14. package/dist/types/compiler/inline_expressions.d.ts +0 -35
  15. package/dist/types/compiler/parser.d.ts +0 -170
  16. package/dist/types/compiler/standalone/index.d.ts +0 -2
  17. package/dist/types/compiler/standalone/setup_jsdom.d.ts +0 -1
  18. package/dist/types/index.d.ts +0 -1
  19. package/dist/types/runtime/app.d.ts +0 -53
  20. package/dist/types/runtime/blockdom/attributes.d.ts +0 -8
  21. package/dist/types/runtime/blockdom/block_compiler.d.ts +0 -20
  22. package/dist/types/runtime/blockdom/config.d.ts +0 -8
  23. package/dist/types/runtime/blockdom/event_catcher.d.ts +0 -7
  24. package/dist/types/runtime/blockdom/events.d.ts +0 -8
  25. package/dist/types/runtime/blockdom/html.d.ts +0 -17
  26. package/dist/types/runtime/blockdom/index.d.ts +0 -26
  27. package/dist/types/runtime/blockdom/list.d.ts +0 -18
  28. package/dist/types/runtime/blockdom/multi.d.ts +0 -17
  29. package/dist/types/runtime/blockdom/text.d.ts +0 -26
  30. package/dist/types/runtime/blockdom/toggler.d.ts +0 -17
  31. package/dist/types/runtime/component.d.ts +0 -17
  32. package/dist/types/runtime/component_node.d.ts +0 -57
  33. package/dist/types/runtime/context.d.ts +0 -36
  34. package/dist/types/runtime/event_handling.d.ts +0 -1
  35. package/dist/types/runtime/hooks.d.ts +0 -32
  36. package/dist/types/runtime/index.d.ts +0 -46
  37. package/dist/types/runtime/lifecycle_hooks.d.ts +0 -10
  38. package/dist/types/runtime/plugin_hooks.d.ts +0 -6
  39. package/dist/types/runtime/plugin_manager.d.ts +0 -36
  40. package/dist/types/runtime/props.d.ts +0 -21
  41. package/dist/types/runtime/reactivity/computations.d.ts +0 -34
  42. package/dist/types/runtime/reactivity/computed.d.ts +0 -6
  43. package/dist/types/runtime/reactivity/effect.d.ts +0 -1
  44. package/dist/types/runtime/reactivity/proxy.d.ts +0 -47
  45. package/dist/types/runtime/reactivity/signal.d.ts +0 -31
  46. package/dist/types/runtime/registry.d.ts +0 -24
  47. package/dist/types/runtime/rendering/error_handling.d.ts +0 -13
  48. package/dist/types/runtime/rendering/fibers.d.ts +0 -36
  49. package/dist/types/runtime/rendering/scheduler.d.ts +0 -20
  50. package/dist/types/runtime/rendering/template_helpers.d.ts +0 -51
  51. package/dist/types/runtime/resource.d.ts +0 -18
  52. package/dist/types/runtime/status.d.ts +0 -11
  53. package/dist/types/runtime/template_set.d.ts +0 -36
  54. package/dist/types/runtime/types.d.ts +0 -77
  55. package/dist/types/runtime/utils.d.ts +0 -25
  56. package/dist/types/runtime/validation.d.ts +0 -19
  57. package/dist/types/version.d.ts +0 -1
  58. package/tools/compile_owl_templates.mjs +0 -31
@@ -1 +1,27 @@
1
- !function(t){"use strict";class e extends Error{cause}function n(t){const n=(new DOMParser).parseFromString(t,"text/xml");if(n.getElementsByTagName("parsererror").length){let o="Invalid XML in template.";const s=n.getElementsByTagName("parsererror")[0].textContent;if(s){o+="\nThe parser has produced the following error message:\n"+s;const e=/\d+/g,n=e.exec(s);if(n){const i=Number(n[0]),r=t.split("\n")[i-1],l=e.exec(s);if(r&&l){const t=Number(l[0])-1;r[t]&&(o+=`\nThe error might be located at xml line ${i} column ${t}\n${r}\n${"-".repeat(t-1)}^`)}}}throw new e(o)}return n}function o(t){t=t.slice();const e=[];let n;for(;(n=t[0])&&"string"==typeof n;)e.push(t.shift());return{modifiers:e,data:t}}const s={shouldNormalizeDom:!0,mainEventHandler:(t,e,n)=>("function"==typeof t?t(e):Array.isArray(t)&&(t=o(t).data)[0](t[1],e),!1)},i=document.createTextNode("");class r{key;child;parentEl;constructor(t,e){this.key=t,this.child=e}mount(t,e){this.parentEl=t,this.child.mount(t,e)}moveBeforeDOMNode(t,e){this.child.moveBeforeDOMNode(t,e)}moveBeforeVNode(t,e){this.moveBeforeDOMNode(t&&t.firstNode()||e)}patch(t,e){if(this===t)return;let n=this.child,o=t.child;if(this.key===t.key)n.patch(o,e);else{const s=n.firstNode();s.parentElement.insertBefore(i,s),e&&n.beforeRemove(),n.remove(),o.mount(this.parentEl,i),this.child=o,this.key=t.key}}beforeRemove(){this.child.beforeRemove()}remove(){this.child.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}}function l(t,e){return new r(t,e)}let a,c,u,h;if("undefined"!=typeof Element){({setAttribute:a,removeAttribute:c}=Element.prototype);const t=DOMTokenList.prototype;u=t.add,h=t.remove}const d=Array.isArray,{split:f,trim:p}=String.prototype,m=/\s+/;function g(t,e){switch(e){case!1:case void 0:c.call(this,t);break;case!0:a.call(this,t,"");break;default:a.call(this,t,e)}}function b(t){return function(e){g.call(this,t,e)}}function y(t){if(d(t))"class"===t[0]?k.call(this,t[1]):"style"===t[0]?T.call(this,t[1]):g.call(this,t[0],t[1]);else for(let e in t)"class"===e?k.call(this,t[e]):"style"===e?T.call(this,t[e]):g.call(this,e,t[e])}function v(t,e){if(d(t)){const n=t[0],o=t[1];if(n===e[0]){if(o===e[1])return;"class"===n?E.call(this,o,e[1]):"style"===n?A.call(this,o,e[1]):g.call(this,n,o)}else c.call(this,e[0]),g.call(this,n,o)}else{for(let n in e)n in t||("class"===n?E.call(this,"",e[n]):"style"===n?A.call(this,"",e[n]):c.call(this,n));for(let n in t){const o=t[n];o!==e[n]&&("class"===n?E.call(this,o,e[n]):"style"===n?A.call(this,o,e[n]):g.call(this,n,o))}}}function w(t){const e={};switch(typeof t){case"string":const n=p.call(t);if(!n)return{};let o=f.call(n,m);for(let t=0,n=o.length;t<n;t++)e[o[t]]=!0;return e;case"object":for(let n in t){const o=t[n];if(o){if(n=p.call(n),!n)continue;const t=f.call(n,m);for(let n of t)e[n]=o}}return e;case"undefined":return{};case"number":return{[t]:!0};default:return{[t]:!0}}}const $={};function x(t){if(t in $)return $[t];const e=t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase());return $[t]=e,e}function N(t){const e={};switch(typeof t){case"string":{const n=p.call(t);if(!n)return{};const o=n.split(";");for(let t of o){if(t=p.call(t),!t)continue;const n=t.indexOf(":");if(-1===n)continue;const o=p.call(t.slice(0,n)),s=p.call(t.slice(n+1));o&&s&&"undefined"!==s&&(e[o]=s)}return e}case"object":for(let n in t){const o=t[n];(o||0===o)&&(e[x(n)]=String(o))}return e;default:return{}}}function k(t){t=""===t?{}:w(t);for(let e in t)u.call(this.classList,e)}function E(t,e){e=""===e?{}:w(e),t=""===t?{}:w(t);for(let n in e)n in t||h.call(this.classList,n);for(let n in t)t[n]!==e[n]&&u.call(this.classList,n)}function T(t){t=""===t?{}:N(t);const e=this.style;for(let n in t)e.setProperty(n,t[n])}function A(t,e){e=""===e?{}:N(e),t=""===t?{}:N(t);const n=this.style;for(let o in e)o in t||n.removeProperty(o);for(let o in t)t[o]!==e[o]&&n.setProperty(o,t[o]);n.cssText||c.call(this,"style")}function C(t){let e=!1;return function(...n){e||(e=!0,queueMicrotask(()=>{e=!1,t(...n)}))}}function _(t){const n=t&&t.ownerDocument;if(n){if(!n.defaultView)throw new e("Cannot mount a component: the target document is not attached to a window (defaultView is missing)");if(t instanceof n.defaultView.HTMLElement||t instanceof ShadowRoot){if(!function(t,e){let n=t;const o=e.defaultView.ShadowRoot;for(;n;){if(n===e)return!0;if(n.parentNode)n=n.parentNode;else{if(!(n instanceof o&&n.host))return!1;n=n.host}}return!1}(t,n))throw new e("Cannot mount a component on a detached dom node");return}}throw new e("Cannot mount component: the target is not a valid DOM element")}class D extends EventTarget{trigger(t,e){this.dispatchEvent(new CustomEvent(t,{detail:e}))}}class S extends String{}function O(t){return t instanceof S?t:void 0===t?R(""):"number"==typeof t?R(String(t)):([["&","&amp;"],["<","&lt;"],[">","&gt;"],["'","&#x27;"],['"',"&quot;"],["`","&#x60;"]].forEach(e=>{t=String(t).replace(new RegExp(e[0],"g"),e[1])}),R(t))}function R(t,...e){if(!Array.isArray(t))return new S(t);const n=t;let o="",s=0;for(;s<e.length;++s)o+=n[s]+O(e[s]);return o+=n[s],new S(o)}function L(t){const e=t.split(".")[0],n=t.includes(".capture"),o=t.includes(".passive");return t.includes(".synthetic")?function(t,e=!1,n=!1){let o=`__event__synthetic_${t}`;e&&(o=`${o}_capture`);!function(t,e,n=!1,o=!1){if(P[e])return;document.addEventListener(t,t=>function(t,e){let n=e.target;for(;null!==n;){const o=n[t];if(o)for(const t of Object.values(o)){if(s.mainEventHandler(t,e,n))return}n=n.parentNode}}(e,t),{capture:n,passive:o}),P[e]=!0}(t,o,e,n);const i=I++;function r(t){const e=this[o]||{};e[i]=t,this[o]=e}function l(){delete this[o]}return{setup:r,update:r,remove:l}}(e,n,o):function(t,e=!1,n=!1){let o=`__event__${t}_${B++}`;e&&(o=`${o}_capture`);function i(t){const e=t.currentTarget;if(!e||!function(t){if(!t)return!1;if(t.ownerDocument.contains(t))return!0;const e=t.getRootNode();return e instanceof ShadowRoot&&t.ownerDocument.contains(e.host)}(e))return;const n=e[o];n&&s.mainEventHandler(n,t,e)}const r={capture:e,passive:n};function l(e){this[o]=e,this.addEventListener(t,i,r)}function a(){delete this[o],this.removeEventListener(t,i,r)}function c(t){this[o]=t}return{setup:l,update:c,remove:a}}(e,n,o)}let B=1;let I=1;const P={};let M,j,V;if("undefined"!=typeof Node){const t=Node.prototype;M=t.insertBefore,j=(W=t,F="textContent",Object.getOwnPropertyDescriptor(W,F)).set,V=t.removeChild}var W,F;class K{children;anchors;parentEl;isOnlyChild;constructor(t){this.children=t}mount(t,e){const n=this.children,o=n.length,s=new Array(o);for(let i=0;i<o;i++){let o=n[i];if(o)o.mount(t,e);else{const n=document.createTextNode("");s[i]=n,M.call(t,n,e)}}this.anchors=s,this.parentEl=t}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e;const n=this.children,o=this.anchors;for(let s=0,i=n.length;s<i;s++){let i=n[s];if(i)i.moveBeforeDOMNode(t,e);else{const n=o[s];M.call(e,n,t)}}}moveBeforeVNode(t,e){if(t){const n=t.children[0];e=(n?n.firstNode():t.anchors[0])||null}const n=this.children,o=this.parentEl,s=this.anchors;for(let t=0,i=n.length;t<i;t++){let i=n[t];if(i)i.moveBeforeVNode(null,e);else{const n=s[t];M.call(o,n,e)}}}patch(t,e){if(this===t)return;const n=this.children,o=t.children,s=this.anchors,i=this.parentEl;for(let t=0,r=n.length;t<r;t++){const r=n[t],l=o[t];if(r)if(l)r.patch(l,e);else{const o=r.firstNode(),l=document.createTextNode("");s[t]=l,M.call(i,l,o),e&&r.beforeRemove(),r.remove(),n[t]=void 0}else if(l){n[t]=l;const e=s[t];l.mount(i,e),V.call(i,e)}}}beforeRemove(){const t=this.children;for(let e=0,n=t.length;e<n;e++){const n=t[e];n&&n.beforeRemove()}}remove(){const t=this.parentEl;if(this.isOnlyChild)j.call(t,"");else{const e=this.children,n=this.anchors;for(let o=0,s=e.length;o<s;o++){const s=e[o];s?s.remove():V.call(t,n[o])}}}firstNode(){const t=this.children[0];return t?t.firstNode():this.anchors[0]}toString(){return this.children.map(t=>t?t.toString():"").join("")}}function U(t){return new K(t)}let z,H,G;if("undefined"!=typeof Node){const t=Node.prototype;z=t.insertBefore,G=t.removeChild,H=((t,e)=>Object.getOwnPropertyDescriptor(t,e))(CharacterData.prototype,"data").set}class q{text;parentEl;el;constructor(t){this.text=t}mountNode(t,e,n){this.parentEl=e,z.call(e,t,n),this.el=t}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e,z.call(e,this.el,t)}moveBeforeVNode(t,e){z.call(this.parentEl,this.el,t?t.el:e)}beforeRemove(){}remove(){G.call(this.parentEl,this.el)}firstNode(){return this.el}toString(){return this.text}}class X extends q{mount(t,e){this.mountNode(document.createTextNode(Q(this.text)),t,e)}patch(t){const e=t.text;this.text!==e&&(H.call(this.el,Q(e)),this.text=e)}}class Z extends q{mount(t,e){this.mountNode(document.createComment(Q(this.text)),t,e)}patch(){}}function Y(t){return new X(t)}function J(t){return new Z(t)}function Q(t){switch(typeof t){case"string":return t;case"number":return String(t);case"boolean":return t?"true":"false";default:return t||""}}const tt=(t,e)=>Object.getOwnPropertyDescriptor(t,e);let et,nt,ot,st,it;"undefined"!=typeof Node&&(et=Node.prototype,nt=Element.prototype,ot=tt(CharacterData.prototype,"data").set,st=tt(et,"firstChild").get,it=tt(et,"nextSibling").get);const rt=()=>{};function lt(t){return function(e){this[t]=0===e?0:e?e.valueOf():""}}const at={};function ct(t){if(t in at)return at[t];const e=(new DOMParser).parseFromString(`<t>${t}</t>`,"text/xml").firstChild.firstChild;s.shouldNormalizeDom&&ut(e);const n=ht(e),o=pt(n),i=function(t,e){let n=function(t,e){const{refN:n,collectors:o,children:s,locations:i,cbRefs:r}=e;i.sort((t,e)=>t.idx-e.idx);const l=i.length,a=s.length,c=n>0,u=i.map(t=>t.refIdx),h=i.map(t=>t.setData),d=i.map(t=>t.updateData),f=[it,st],p=o.length,m=o.map(t=>32767&t.idx|(32767&t.prevIdx)<<15|(t.getVal===st?1:0)<<30),g=s.map(t=>32767&t.parentRefIdx|(t.isOnlyChild?1:0)<<15|(32767&(t.afterRefIdx??0))<<16),b=et.cloneNode,y=et.insertBefore,v=nt.remove;class w{el;parentEl;data;children;refs;constructor(t){this.data=t}beforeRemove(){}remove(){v.call(this.el)}firstNode(){return this.el}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e,y.call(e,this.el,t)}moveBeforeVNode(t,e){y.call(this.parentEl,this.el,t?t.el:e)}toString(){const t=document.createElement("div");return this.mount(t,null),t.innerHTML}mount(e,n){const o=b.call(t,!0);y.call(e,o,n),this.el=o,this.parentEl=e}patch(t,e){}}c&&(w.prototype.mount=function(e,o){const s=b.call(t,!0),i=new Array(n);this.refs=i,i[0]=s;for(let t=0;t<p;t++){const e=m[t];i[32767&e]=f[e>>30&1].call(i[e>>15&32767])}if(l){const t=this.data;for(let e=0;e<l;e++)h[e].call(i[u[e]],t[e])}if(a){const t=this.children;for(let e=0;e<a;e++){const n=t[e];if(n){const t=g[e],o=t>>16&32767,s=o?i[o]:null;n.isOnlyChild=!!(32768&t),n.mount(i[32767&t],s)}}}if(y.call(e,s,o),this.el=s,this.parentEl=e,r.length){const t=this.data,e=this.refs;for(let n of r){(0,t[n])(e[u[n]],null)}}},w.prototype.patch=function(t,e){if(this===t)return;const n=this.refs;if(l){const e=this.data,o=t.data;for(let t=0;t<l;t++){const s=e[t],i=o[t];s!==i&&d[t].call(n[u[t]],i,s)}this.data=o}if(a){let o=this.children;const s=t.children;for(let t=0;t<a;t++){const i=o[t],r=s[t];if(i)r?i.patch(r,e):(e&&i.beforeRemove(),i.remove(),o[t]=void 0);else if(r){const e=g[t],s=e>>16&32767,i=s?n[s]:null;r.mount(n[32767&e],i),o[t]=r}}}},w.prototype.remove=function(){if(r.length){const t=this.data,e=this.refs;for(let n of r){(0,t[n])(null,e[u[n]])}}v.call(this.el)});return w}(t,e);if(e.children.length)return n=class extends n{children;constructor(t,e){super(t),this.children=e}},n.prototype.beforeRemove=K.prototype.beforeRemove,(t,e=[])=>new n(t,e);return t=>new n(t)}(n.el,o);return at[t]=i,i}function ut(t){if(t.nodeType!==Node.TEXT_NODE||/\S/.test(t.textContent)){if(t.nodeType!==Node.ELEMENT_NODE||"pre"!==t.tagName)for(let e=t.childNodes.length-1;e>=0;--e)ut(t.childNodes.item(e))}else t.remove()}function ht(t,n=null,o=null){switch(t.nodeType){case Node.ELEMENT_NODE:{let e=o&&o.currentNS;const s=t.tagName;let i;const r=[];if(s.startsWith("block-text-")){const t=parseInt(s.slice(11),10);r.push({type:"text",idx:t}),i=document.createTextNode("")}if(s.startsWith("block-child-")){o.isRef||dt(o);const t=parseInt(s.slice(12),10);r.push({type:"child",idx:t}),i=document.createTextNode("")}if(e||=t.namespaceURI,i||(i=e?document.createElementNS(e,s):document.createElement(s)),i instanceof Element){if(!o){document.createElement("template").content.appendChild(i)}const e=t.attributes;for(let t=0;t<e.length;t++){const n=e[t].name,o=e[t].value;if(n.startsWith("block-handler-")){const t=parseInt(n.slice(14),10);r.push({type:"handler",idx:t,event:o})}else if(n.startsWith("block-attribute-")){const t=parseInt(n.slice(16),10);r.push({type:"attribute",idx:t,name:o,tag:s})}else if(n.startsWith("block-property-")){const t=parseInt(n.slice(15),10);r.push({type:"property",idx:t,name:o,tag:s})}else"block-attributes"===n?r.push({type:"attributes",idx:parseInt(o,10)}):"block-ref"===n?r.push({type:"ref",idx:parseInt(o,10)}):i.setAttribute(e[t].name,o)}}const l={parent:n,firstChild:null,nextSibling:null,el:i,info:r,refN:0,currentNS:e};if(t.firstChild){const e=t.childNodes[0];if(1===t.childNodes.length&&e.nodeType===Node.ELEMENT_NODE&&e.tagName.startsWith("block-child-")){const t=e.tagName,n=parseInt(t.slice(12),10);r.push({idx:n,type:"child",isOnlyChild:!0})}else{l.firstChild=ht(t.firstChild,l,l),i.appendChild(l.firstChild.el);let e=t.firstChild,n=l.firstChild;for(;e=e.nextSibling;)n.nextSibling=ht(e,n,l),i.appendChild(n.nextSibling.el),n=n.nextSibling}}return l.info.length&&dt(l),l}case Node.TEXT_NODE:case Node.COMMENT_NODE:return{parent:n,firstChild:null,nextSibling:null,el:t.nodeType===Node.TEXT_NODE?document.createTextNode(t.textContent):document.createComment(t.textContent),info:[],refN:0,currentNS:null}}throw new e("boom")}function dt(t){t.isRef=!0;do{t.refN++}while(t=t.parent)}function ft(t){let e=t.parent;for(;e&&e.nextSibling===t;)t=e,e=e.parent;return e}function pt(t,e,n){if(!e){e={collectors:[],locations:[],children:new Array(t.info.filter(t=>"child"===t.type).length),cbRefs:[],refN:t.refN},n=0}if(t.refN){const o=n,s=t.isRef,i=t.firstChild?t.firstChild.refN:0,r=t.nextSibling?t.nextSibling.refN:0;if(s){for(let e of t.info)e.refIdx=o;t.refIdx=o,function(t,e){for(let n of e.info)switch(n.type){case"text":t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:mt,updateData:mt});break;case"child":n.isOnlyChild?t.children[n.idx]={parentRefIdx:n.refIdx,isOnlyChild:!0}:t.children[n.idx]={parentRefIdx:ft(e).refIdx,afterRefIdx:n.refIdx};break;case"property":{const e=n.refIdx,o=lt(n.name);t.locations.push({idx:n.idx,refIdx:e,setData:o,updateData:o});break}case"attribute":{const e=n.refIdx;let o,s;"class"===n.name?(s=k,o=E):"style"===n.name?(s=T,o=A):(s=b(n.name),o=s),t.locations.push({idx:n.idx,refIdx:e,setData:s,updateData:o});break}case"attributes":t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:y,updateData:v});break;case"handler":{const{setup:e,update:o}=L(n.event);t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:e,updateData:o});break}case"ref":t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:rt,updateData:rt}),t.cbRefs.push(n.idx)}}(e,t),n++}if(r){const s=n+i;e.collectors.push({idx:s,prevIdx:o,getVal:it}),pt(t.nextSibling,e,s)}i&&(e.collectors.push({idx:n,prevIdx:o,getVal:st}),pt(t.firstChild,e,n))}return e}function mt(t){ot.call(this,Q(t))}let gt,bt,yt,vt,wt,$t;if("undefined"!=typeof Node){const t=Node.prototype;gt=t.insertBefore,bt=t.appendChild,yt=t.removeChild,vt=((t,e)=>Object.getOwnPropertyDescriptor(t,e))(t,"textContent").set}class xt{children;anchor;parentEl;isOnlyChild;constructor(t){this.children=t}mount(t,e){const n=this.children,o=document.createTextNode("");this.anchor=o,gt.call(t,o,e);const s=n.length;if(s){const e=n[0].mount;for(let i=0;i<s;i++)e.call(n[i],t,o)}this.parentEl=t}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e;const n=this.children;for(let o=0,s=n.length;o<s;o++)n[o].moveBeforeDOMNode(t,e);e.insertBefore(this.anchor,t)}moveBeforeVNode(t,e){if(t){const n=t.children[0];e=(n?n.firstNode():t.anchor)||null}const n=this.children;for(let t=0,o=n.length;t<o;t++)n[t].moveBeforeVNode(null,e);this.parentEl.insertBefore(this.anchor,e)}patch(t,e){if(this===t)return;const n=this.children,o=t.children;if(0===o.length&&0===n.length)return;this.children=o;const s=o[0]||n[0],{mount:i,patch:r,remove:l,beforeRemove:a,moveBeforeVNode:c,firstNode:u}=s,h=this.anchor,d=this.isOnlyChild,f=this.parentEl;if(0===o.length&&d){if(e)for(let t=0,e=n.length;t<e;t++)a.call(n[t]);return vt.call(f,""),void bt.call(f,h)}let p,m=0,g=0,b=n[0],y=o[0],v=n.length-1,w=o.length-1,$=n[v],x=o[w];for(;m<=v&&g<=w;){if(null===b){b=n[++m];continue}if(null===$){$=n[--v];continue}let t=b.key,s=y.key;if(t===s){r.call(b,y,e),o[g]=b,b=n[++m],y=o[++g];continue}let l=$.key,a=x.key;if(l===a){r.call($,x,e),o[w]=$,$=n[--v],x=o[--w];continue}if(t===a){r.call(b,x,e),o[w]=b;const t=o[w+1];c.call(b,t,h),b=n[++m],x=o[--w];continue}if(l===s){r.call($,y,e),o[g]=$;const t=n[m];c.call($,t,h),$=n[--v],y=o[++g];continue}p=p||kt(n,m,v);let d=p[s];if(void 0===d)i.call(y,f,u.call(b)||null);else{const t=n[d];c.call(t,b,null),r.call(t,y,e),o[g]=t,n[d]=null}y=o[++g]}if(m<=v||g<=w)if(m>v){const t=o[w+1],e=t?u.call(t)||null:h;for(let t=g;t<=w;t++)i.call(o[t],f,e)}else for(let t=m;t<=v;t++){let o=n[t];o&&(e&&a.call(o),l.call(o))}}beforeRemove(){const t=this.children,e=t.length;if(e){const n=t[0].beforeRemove;for(let o=0;o<e;o++)n.call(t[o])}}remove(){const{parentEl:t,anchor:e}=this;if(this.isOnlyChild)vt.call(t,"");else{const n=this.children,o=n.length;if(o){const t=n[0].remove;for(let e=0;e<o;e++)t.call(n[e])}yt.call(t,e)}}firstNode(){const t=this.children[0];return t?t.firstNode():void 0}toString(){return this.children.map(t=>t.toString()).join("")}}function Nt(t){return new xt(t)}function kt(t,e,n){let o={};for(let s=e;s<=n;s++)o[t[s].key]=s;return o}if("undefined"!=typeof Node){const t=Node.prototype;wt=t.insertBefore,$t=t.removeChild}class Et{html;parentEl;content=[];constructor(t){this.html=t}mount(t,e){this.parentEl=t;const n=document.createElement("template");n.innerHTML=this.html,this.content=[...n.content.childNodes];for(let n of this.content)wt.call(t,n,e);if(!this.content.length){const n=document.createTextNode("");this.content.push(n),wt.call(t,n,e)}}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e;for(let n of this.content)wt.call(e,n,t)}moveBeforeVNode(t,e){const n=t?t.content[0]:e;this.moveBeforeDOMNode(n)}patch(t){if(this===t)return;const e=t.html;if(this.html!==e){const n=this.parentEl,o=this.content[0],s=document.createElement("template");s.innerHTML=e;const i=[...s.content.childNodes];for(let t of i)wt.call(n,t,o);if(!i.length){const t=document.createTextNode("");i.push(t),wt.call(n,t,o)}this.remove(),this.content=i,this.html=t.html}}beforeRemove(){}remove(){const t=this.parentEl;for(let e of this.content)$t.call(t,e)}firstNode(){return this.content[0]}toString(){return this.html}}function Tt(t){return new Et(t)}function At(t,e,n=null){t.mount(e,n)}let Ct=[];function _t(t){const n=Ct.at(-1);if(!n)throw new e("No active context");if(t&&t!==n.type)throw new e(`Expected to be in a ${t} context`);return n}function Dt(t,n){return async function(...o){if(t.status>1)throw new e(`Function called after the end of life of the ${t.type}`);const s=await n.call(this,...o);return t.status>1?new Promise(()=>{}):s}}class St{static template="";__owl__;constructor(t){this.__owl__=t}setup(){}}var Ot;!function(t){t[t.EXECUTED=0]="EXECUTED",t[t.STALE=1]="STALE",t[t.PENDING=2]="PENDING"}(Ot||(Ot={}));const Rt=Symbol("Atom");let Lt,Bt=[];function It(t,e,n=Ot.STALE){return{state:n,value:void 0,compute:t,sources:new Set,observers:new Set,isDerived:e}}function Pt(t){Lt&&(Lt.sources.add(t),t.observers.add(Lt))}function Mt(t){for(const e of t.observers)e.state===Ot.EXECUTED&&(e.isDerived?zt(e):Bt.push(e)),e.state=Ot.STALE;jt()}const jt=C(function(){for(let t=0;t<Bt.length;t++)Ft(Bt[t]);Bt.length=0});function Vt(){return Lt}function Wt(t){Lt=t}function Ft(t){const e=t.state;if(e===Ot.EXECUTED)return;if(e===Ot.PENDING){for(const e of t.sources)"compute"in e&&Ft(e);if(t.state!==Ot.STALE)return void(t.state=Ot.EXECUTED)}Kt(t);const n=Lt;Lt=t,t.value=t.compute(),t.state=Ot.EXECUTED,Lt=n}function Kt(t){const e=t.sources;for(const n of e){n.observers.delete(t)}e.clear()}function Ut(t){for(const e of t.sources)e.observers.delete(t),"compute"in e&&e.isDerived&&0===e.observers.size&&Ut(e);t.sources.clear(),t.state=Ot.STALE}function zt(t){const e=[t];let n;for(;n=e.pop();)for(const t of n.observers)t.state||(t.state=Ot.PENDING,t.isDerived?e.push(t):Bt.push(t))}function Ht(t){const e=Lt;let n;Lt=void 0;try{n=t()}finally{Lt=e}return n}const Gt=new WeakMap,qt=new WeakMap;function Xt(t){let{error:n}=t,o="node"in t?t.node:t.fiber.node;const s="fiber"in t?t.fiber:o.fiber,i=o.app;if(s){let t=s;do{t.node.fiber=t,Gt.set(t,n),t=t.parent}while(t);Gt.set(s.root,n)}const r=()=>{try{i.destroy()}catch(t){}return Object.assign(new e("[Owl] Unhandled error. Destroying the root component"),{cause:n})};for(;o;){const t=o.fiber;t&&Gt.set(t,n);const e=qt.get(o);if(e)for(let t=e.length-1;t>=0;t--)try{return void e[t](n,r)}catch(t){n=t}o=o.parent}const l=r();i._handleError(l)}function Zt(t,e){let n=t.fiber;return n&&(Jt(n.children),n.root=null),new Qt(t,e)}function Yt(){throw new e("Attempted to render cancelled fiber")}function Jt(t){let e=0;for(let n of t){let t=n.node;n.render=Yt,0===t.status&&t.cancel(),t.fiber=null,n.bdom?t.forceNextRender=!0:e++,e+=Jt(n.children)}return e}class Qt{node;bdom=null;root;parent;children=[];appliedToDom=!1;deep=!1;childrenMap={};constructor(t,e){if(this.node=t,this.parent=e,e){this.deep=e.deep;const t=e.root;t.setCounter(t.counter+1),this.root=t,e.children.push(this)}else this.root=this}render(){let t=this.root.node,e=t.app.scheduler,n=t.parent;for(;n;){if(n.fiber){let o=n.fiber.root;if(0!==o.counter||!(t.parentKey in n.fiber.childrenMap))return void e.delayedRenders.push(this);n=o.node}t=n,n=n.parent}const o=this.node,s=this.root;if(s){const t=Vt();Kt(o.signalComputation),Wt(o.signalComputation);try{this.bdom=!0,this.bdom=o.renderFn()}catch(t){Xt({node:o,error:t})}Wt(t);const e=s.counter-1;s.counter=e,0===e&&this.node.app.scheduler.flush()}}}class te extends Qt{counter=1;willPatch=[];patched=[];mounted=[];locked=!1;complete(){const t=this.node;let e;this.locked=!0;let n=this.mounted;try{for(e of this.willPatch){let t=e.node;if(t.fiber===e){const e=t.component;for(let n of t.willPatch)n.call(e)}}for(e=void 0,t._patch(),this.locked=!1;e=n.pop();)if(e.appliedToDom)for(let t of e.node.mounted)t();let o=this.patched;for(;e=o.pop();)if(e.appliedToDom)for(let t of e.node.patched)t()}catch(t){for(let t of n)t.node.willUnmount=[];this.locked=!1,Xt({fiber:e||this,error:t})}}setCounter(t){this.counter=t,0===t&&this.node.app.scheduler.flush()}}class ee extends te{target;position;constructor(t,e,n={}){super(t,null),this.target=e,this.position=n.position||"last-child"}complete(){let t=this;try{const e=this.node;if(e.children=this.childrenMap,e.app.constructor.validateTarget(this.target),e.bdom)e.updateDom();else if(e.bdom=this.bdom,"last-child"===this.position||0===this.target.childNodes.length)At(e.bdom,this.target);else{const t=this.target.childNodes[0];At(e.bdom,this.target,t)}e.fiber=null,e.status=1,this.appliedToDom=!0;let n=this.mounted;for(;t=n.pop();)if(t.appliedToDom)for(let e of t.node.mounted)e()}catch(e){Xt({fiber:t,error:e})}}}class ne{app;fiber=null;component;bdom=null;status=0;forceNextRender=!1;parentKey;props;defaultProps={};renderFn;parent;children=Object.create(null);willStart=[];willUpdateProps=[];willUnmount=[];mounted=[];willPatch=[];patched=[];willDestroy=[];signalComputation;computations=[];pluginManager;constructor(t,e,n,o,s){this.app=n,this.parent=o,this.parentKey=s,this.pluginManager=o?o.pluginManager:n.pluginManager,this.signalComputation=It(()=>this.render(!1),!1,Ot.EXECUTED),this.props=e,Ct.push({type:"component",app:n,componentName:t.name,node:this,get status(){return this.node.status}});const i=Vt();Wt(void 0),this.component=new t(this);const r={this:this.component,__owl__:this};this.renderFn=n.getTemplate(t.template).bind(this.component,r,this),this.component.setup(),Wt(i),Ct.length=0}async initiateRender(t){this.fiber=t,this.mounted.length&&t.root.mounted.push(t);const e=this.component;let n=Vt();Wt(void 0);try{let t=this.willStart.map(t=>t.call(e));Wt(n),await Promise.all(t)}catch(t){return Wt(n),void Xt({node:this,error:t})}0===this.status&&this.fiber===t&&t.render()}async render(t){if(this.status>=2)return;let e=this.fiber;if(e&&(e.root.locked||!0===e.bdom)&&(await Promise.resolve(),e=this.fiber),e){if(!e.bdom&&!Gt.has(e))return void(t&&(e.deep=t));t=t||e.deep}else if(!this.bdom)return;const n=function(t){let e=t.fiber;if(e){let t=e.root;return t.locked=!0,t.setCounter(t.counter+1-Jt(e.children)),t.locked=!1,e.children=[],e.childrenMap={},e.bdom=null,Gt.has(e)&&(Gt.delete(e),Gt.delete(t),e.appliedToDom=!1,e instanceof te&&(e.mounted=e instanceof ee?[e]:[])),e}const n=new te(t,null);return t.willPatch.length&&n.willPatch.push(n),t.patched.length&&n.patched.push(n),n}(this);n.deep=t,this.fiber=n,this.app.scheduler.addFiber(n),await Promise.resolve(),this.status>=2||this.fiber!==n||!e&&n.parent||n.render()}cancel(){this._cancel(),delete this.parent.children[this.parentKey],this.app.scheduler.scheduleDestroy(this)}_cancel(){this.status=2;const t=this.children;for(let e in t)t[e]._cancel()}destroy(){let t=1===this.status;this._destroy(),t&&this.bdom.remove()}_destroy(){const t=this.component;if(1===this.status)for(let e of this.willUnmount)e.call(t);for(let t in this.children)this.children[t]._destroy();if(this.willDestroy.length)try{for(let e of this.willDestroy)e.call(t)}catch(t){Xt({error:t,node:this})}for(const t of this.computations)Ut(t);Ut(this.signalComputation),this.status=3}async updateAndRender(t,e){t=Object.assign({},t);for(const e in this.defaultProps)void 0===t[e]&&(t[e]=this.defaultProps[e]);const n=Zt(this,e);this.fiber=n;const o=this.component;let s=Vt();Wt(void 0);let i=this.willUpdateProps.map(e=>e.call(o,t));if(Wt(s),await Promise.all(i),n!==this.fiber)return;this.props=t,n.render();const r=e.root;this.willPatch.length&&r.willPatch.push(n),this.patched.length&&r.patched.push(n)}updateDom(){if(this.fiber)if(this.bdom===this.fiber.bdom)for(let t in this.children){this.children[t].updateDom()}else this.bdom.patch(this.fiber.bdom,!1),this.fiber.appliedToDom=!0,this.fiber=null}firstNode(){const t=this.bdom;return t?t.firstNode():void 0}mount(t,e){const n=this.fiber.bdom;this.bdom=n,n.mount(t,e),this.status=1,this.fiber.appliedToDom=!0,this.children=this.fiber.childrenMap,this.fiber=null}moveBeforeDOMNode(t,e){this.bdom.moveBeforeDOMNode(t,e)}moveBeforeVNode(t,e){this.bdom.moveBeforeVNode(t?t.bdom:null,e)}patch(){this.fiber&&this.fiber.parent&&this._patch()}_patch(){let t=!1;for(let e in this.children){t=!0;break}const e=this.fiber;this.children=e.childrenMap,this.bdom.patch(e.bdom,t),e.appliedToDom=!0,this.fiber=null}beforeRemove(){this._destroy()}remove(){this.bdom.remove()}}const oe=Symbol("Key changes"),se=Object.prototype.toString,ie=Object.prototype.hasOwnProperty;function re(t){if("object"!=typeof t||null===t)return!1;const e=ue(t);return!!(Array.isArray(e)||e instanceof Set||e instanceof Map||e instanceof WeakMap)||"[object Object]"===se.call(e)}function le(t,e){return!e&&re(t)?be(t):t}const ae=new WeakSet;function ce(t){return ae.add(t),t}function ue(t){return pe.has(t)?pe.get(t):t}const he=new WeakMap;function de(t,e,n){Pt(n??function(t,e){let n=he.get(t);n||(n=new Map,he.set(t,n));let o=n.get(e);return o||(o={value:void 0,observers:new Set},n.set(e,o)),o}(t,e))}function fe(t,e,n){if(!n){const o=he.get(t);if(!o)return;if(!o.has(e))return;n=o.get(e)}Mt(n)}const pe=new WeakMap,me=new WeakMap;function ge(t,n){if(!re(t))throw new e("Cannot make the given value reactive");if(ae.has(t))return t;if(pe.has(t))return t;const o=me.get(t);if(o)return o;let s;s=t instanceof Map?Ee(t,"Map",n):t instanceof Set?Ee(t,"Set",n):t instanceof WeakMap?Ee(t,"WeakMap",n):ye(n);const i=new Proxy(t,s);return me.set(t,i),pe.set(i,t),i}function be(t){return ge(t,null)}function ye(t){return{get(e,n,o){de(e,n,t);const s=Reflect.get(e,n,o);if(t||"object"!=typeof s||null===s)return s;if(!re(s))return s;const i=Object.getOwnPropertyDescriptor(e,n);return!i||i.writable||i.configurable?ge(s,null):s},set(e,n,o,s){const i=ie.call(e,n),r=Reflect.get(e,n,s),l=Reflect.set(e,n,ue(o),s);return!i&&ie.call(e,n)&&fe(e,oe,t),(r!==Reflect.get(e,n,s)||"length"===n&&Array.isArray(e))&&fe(e,n,t),l},deleteProperty(e,n){const o=Reflect.deleteProperty(e,n);return fe(e,oe,t),fe(e,n,t),o},ownKeys:e=>(de(e,oe,t),Reflect.ownKeys(e)),has:(e,n)=>(de(e,oe,t),Reflect.has(e,n))}}function ve(t,e,n){return o=>(o=ue(o),de(e,o,n),le(e[t](o),n))}function we(t,e,n){return function*(){de(e,oe,n);const o=e.keys();for(const s of e[t]()){const t=o.next().value;de(e,t,n),yield le(s,n)}}}function $e(t,e){return function(n,o){de(t,oe,e),t.forEach(function(s,i,r){de(t,i,e),n.call(o,le(s,e),le(i,e),le(r,e))},o)}}function xe(t,e,n,o){return(s,i)=>{s=ue(s);const r=n.has(s),l=n[e](s),a=n[t](s,i);return r!==n.has(s)&&fe(n,oe,o),l!==n[e](s)&&fe(n,s,o),a}}function Ne(t,e){return()=>{const n=[...t.keys()];t.clear(),fe(t,oe,e);for(const o of n)fe(t,o,e)}}const ke={Set:(t,e)=>({has:ve("has",t,e),add:xe("add","has",t,e),delete:xe("delete","has",t,e),keys:we("keys",t,e),values:we("values",t,e),entries:we("entries",t,e),[Symbol.iterator]:we(Symbol.iterator,t,e),forEach:$e(t,e),clear:Ne(t,e),get size(){return de(t,oe,e),t.size}}),Map:(t,e)=>({has:ve("has",t,e),get:ve("get",t,e),set:xe("set","get",t,e),delete:xe("delete","has",t,e),keys:we("keys",t,e),values:we("values",t,e),entries:we("entries",t,e),[Symbol.iterator]:we(Symbol.iterator,t,e),forEach:$e(t,e),clear:Ne(t,e),get size(){return de(t,oe,e),t.size}}),WeakMap:(t,e)=>({has:ve("has",t,e),get:ve("get",t,e),set:xe("set","get",t,e),delete:xe("delete","has",t,e)})};function Ee(t,e,n){const o=ke[e](t,n);return Object.assign(ye(n),{get:(t,e)=>ie.call(o,e)?o[e]:(de(t,e,n),le(t[e],n))})}const Te=Object.create;class Ae{fn;ctx;component;node;key;constructor(t,e,n,o,s){this.fn=t,this.ctx=e,this.component=n,this.node=o,this.key=s}evaluate(){return this.fn.call(this.component,this.ctx,this.node,this.key)}toString(){return this.evaluate().toString()}}const Ce={withDefault:function(t,e){return null==t||!1===t?e:t},zero:Symbol("zero"),callSlot:function(t,e,n,o,s,i,r){n=n+"__slot_"+o;const a=t.__owl__.props.slots||{},{__render:c,__ctx:u,__scope:h}=a[o]||{},d=Te(u||{});h&&(d[h]=i);const f=c?c(d,e,n):null;if(r){let i,a;return f?i=s?l(o,f):f:a=r(t,e,n),U([i,a])}return f||Y("")},withKey:function(t,e){return t.key=e,t},prepareList:function(t){let n,o;if(Array.isArray(t))n=t,o=t;else if(t instanceof Map)n=[...t.keys()],o=[...t.values()];else if(Symbol.iterator in Object(t))n=[...t],o=n;else{if(!t||"object"!=typeof t)throw new e(`Invalid loop expression: "${t}" is not iterable`);o=Object.values(t),n=Object.keys(t)}const s=o.length;return[n,o,s,new Array(s)]},shallowEqual:function(t,e){for(let n=0,o=t.length;n<o;n++)if(t[n]!==e[n])return!1;return!0},toNumber:function(t){const e=parseFloat(t);return isNaN(e)?t:e},LazyValue:Ae,safeOutput:function(t,e){if(null==t)return e?l("default",e):l("undefined",Y(""));let n,o;return t instanceof S?(n="string_safe",o=Tt(t)):t instanceof Ae?(n="lazy_value",o=t.evaluate()):(n="string_unsafe",o=Y(t)),l(n,o)},createCatcher:function(t){const e=Object.keys(t).length;class n{child;handlerData;handlerFns=[];parentEl;afterNode=null;constructor(t,e){this.child=t,this.handlerData=e}mount(e,n){this.parentEl=e,this.child.mount(e,n),this.afterNode=document.createTextNode(""),e.insertBefore(this.afterNode,n),this.wrapHandlerData();for(let n in t){const o=t[n],s=L(n);this.handlerFns[o]=s,s.setup.call(e,this.handlerData[o])}}wrapHandlerData(){for(let t=0;t<e;t++){let e=this.handlerData[t],n=e.length-2,o=e[n];const s=this;e[n]=function(t,e){const n=e.target;let i=s.child.firstNode();const r=s.afterNode;for(;i&&i!==r;){if(i.contains(n))return o(t,e);i=i.nextSibling}}}}moveBeforeDOMNode(t,e=this.parentEl){this.parentEl=e,this.child.moveBeforeDOMNode(t,e),e.insertBefore(this.afterNode,t)}moveBeforeVNode(t,e){t&&(e=t.firstNode()||e),this.child.moveBeforeVNode(t?t.child:null,e),this.parentEl.insertBefore(this.afterNode,e)}patch(t,n){if(this!==t){this.handlerData=t.handlerData,this.wrapHandlerData();for(let t=0;t<e;t++)this.handlerFns[t].update.call(this.parentEl,this.handlerData[t]);this.child.patch(t.child,n)}}beforeRemove(){this.child.beforeRemove()}remove(){for(let t=0;t<e;t++)this.handlerFns[t].remove.call(this.parentEl);this.child.remove(),this.afterNode.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}}return function(t,e){return new n(t,e)}},markRaw:ce,OwlError:e,createRef:function(t){if(!t)throw new e("Ref is undefined or null");let n,o;if(t.add&&t.delete)n=t.add.bind(t),o=t.delete.bind(t);else{if(!t.set)throw new e("Ref should implement either a 'set' function or 'add' and 'delete' functions");n=t.set.bind(t),o=()=>t.set(null)}return(t,e)=>{e&&o(e),t&&n(t)}},modelExpr:function(t){if("function"!=typeof t||"function"!=typeof t.set)throw new e("Invalid t-model expression: expression should evaluate to a function with a 'set' method defined on it");return t},createComponent:function(t,n,o,s,i,r){const l=!o;let a;const c=0===r.length;a=s?(t,e)=>!0:i?function(t,e){for(let n in t)if(t[n]!==e[n])return!0;return Object.keys(t).length!==Object.keys(e).length}:c?(t,e)=>!1:function(t,e){for(let n of r)if(t[n]!==e[n])return!0;return!1};const u=ne.prototype.updateAndRender,h=ne.prototype.initiateRender;return(s,i,r,c,d)=>{let f=r.children,p=f[i];l&&p&&p.component.constructor!==d&&(p=void 0);const m=r.fiber;if(p){if(a(p.props,s)||m.deep||p.forceNextRender)if(p.forceNextRender=!1,p.willUpdateProps.length)u.call(p,s,m);else{const t=Zt(p,m);p.fiber=t,p.props=s;const e=m.root;p.willPatch.length&&e.willPatch.push(t),p.patched.length&&e.patched.push(t),t.render()}}else{if(o){const t=c.constructor.components;if(!t)throw new e(`Cannot find the definition of component "${n}", missing static components key in parent`);if(!(d=t[n]))throw new e(`Cannot find the definition of component "${n}"`);if(!(d.prototype instanceof St))throw new e(`"${n}" is not a Component. It must inherit from the Component class`)}p=new ne(d,s,t,r,i),f[i]=p;const l=new Qt(p,m);p.willStart.length?h.call(p,l):(p.fiber=l,p.mounted.length&&l.root.mounted.push(l),l.render())}return m.childrenMap[i]=p,p}},callTemplate:function(t,e,n,o,s,i){return l(t,n.getTemplate(t).call(e,o,s,i+t))},callHandler:function(t,n,o){if("function"!=typeof t)throw new e(`Invalid handler expression: the \`t-on\` expression should evaluate to a function, but got '${typeof t}'. Did you mean to use an arrow function? (e.g. \`t-on-click="() => expr"\`)`);t.call(n.this,o)}},_e={text:Y,createBlock:ct,list:Nt,multi:U,html:Tt,toggler:l,comment:J};class De{static registerTemplate(t,e){Se[t]=e}dev;rawTemplates=Object.create(Se);templates={};getRawTemplate;translateFn;translatableAttributes;customDirectives;runtimeUtils;hasGlobalValues;constructor(t={}){if(this.dev=t.dev||!1,this.translateFn=t.translateFn,this.translatableAttributes=t.translatableAttributes,t.templates)if(t.templates instanceof Document||"string"==typeof t.templates)this.addTemplates(t.templates);else for(const e in t.templates)this.addTemplate(e,t.templates[e]);this.getRawTemplate=t.getTemplate,this.customDirectives=t.customDirectives||{},this.runtimeUtils={...Ce,__globals__:t.globalValues||{}},this.hasGlobalValues=Boolean(t.globalValues&&Object.keys(t.globalValues).length)}addTemplate(t,n){if(t in this.rawTemplates){if(!this.dev)return;const o=this.rawTemplates[t];if(("string"==typeof o?o:o instanceof Element?o.outerHTML:o.toString())===("string"==typeof n?n:n.outerHTML))return;throw new e(`Template ${t} already defined with different content`)}this.rawTemplates[t]=n}addTemplates(t){if(t){t=t instanceof Document?t:n(t);for(const e of t.querySelectorAll("[t-name]")){const t=e.getAttribute("t-name");this.addTemplate(t,e)}}}getTemplate(t){const n=t;if(!(n in this.templates)){const o=this.getRawTemplate?.(t)||this.rawTemplates[t];if(void 0===o){let n="";try{const{componentName:t}=_t("component");n=` (for component "${t}")`}catch{}throw new e(`Missing template: "${t}"${n}`)}const s="function"==typeof o&&!(o instanceof Element)?o:this._compileTemplate(t,o),i=this.templates;this.templates[n]=function(t,e){return i[n].call(this,t,e)};const r=s(this,_e,this.runtimeUtils);this.templates[n]=r}return this.templates[n]}_compileTemplate(t,n){throw new e("Unable to compile a template. Please use owl full build instead")}}const Se={};function Oe(...t){const e="__template__"+Oe.nextId++,n=String.raw(...t);return Se[e]=n,e}Oe.nextId=1;const Re="true,false,NaN,null,undefined,debugger,console,window,in,instanceof,new,function,return,eval,void,Math,RegExp,Array,Object,Date,__globals__".split(","),Le=Object.assign(Object.create(null),{and:"&&",or:"||",gt:">",gte:">=",lt:"<",lte:"<="}),Be=Object.assign(Object.create(null),{"{":"LEFT_BRACE","}":"RIGHT_BRACE","[":"LEFT_BRACKET","]":"RIGHT_BRACKET",":":"COLON",",":"COMMA","(":"LEFT_PAREN",")":"RIGHT_PAREN"}),Ie="...,.,===,==,+,!==,!=,!,||,&&,>=,>,<=,<,?,-,*,/,%,typeof ,=>,=,;,in ,new ,|,&,^,~".split(",");const Pe=[function(t){let n=t[0],o=n;if("'"!==n&&'"'!==n&&"`"!==n)return!1;let s,i=1;for(;t[i]&&t[i]!==o;){if(s=t[i],n+=s,"\\"===s){if(i++,s=t[i],!s)throw new e("Invalid expression");n+=s}i++}if(t[i]!==o)throw new e("Invalid expression");return n+=o,"`"===o?{type:"TEMPLATE_STRING",value:n,replace:t=>n.replace(/\$\{(.*?)\}/g,(e,n)=>"${"+t(n)+"}")}:{type:"VALUE",value:n}},function(t){let e=t[0];if(e&&e.match(/[0-9]/)){let n=1;for(;t[n]&&t[n].match(/[0-9]|\./);)e+=t[n],n++;return{type:"VALUE",value:e}}return!1},function(t){for(let e of Ie)if(t.startsWith(e))return{type:"OPERATOR",value:e};return!1},function(t){let e=t[0];if(e&&e.match(/[a-zA-Z_\$]/)){let n=1;for(;t[n]&&t[n].match(/[\w\$]/);)e+=t[n],n++;return e in Le?{type:"OPERATOR",value:Le[e],size:e.length}:{type:"SYMBOL",value:e}}return!1},function(t){const e=t[0];return!(!e||!(e in Be))&&{type:Be[e],value:e}}];const Me=t=>t&&("LEFT_BRACE"===t.type||"COMMA"===t.type),je=t=>t&&("RIGHT_BRACE"===t.type||"COMMA"===t.type),Ve=new Map([["in "," in "]]);function We(t){const n=new Set,o=function(t){const n=[];let o,s=!0,i=t;try{for(;s;)if(i=i.trim(),i){for(let t of Pe)if(s=t(i),s){n.push(s),i=i.slice(s.size||s.value.length);break}}else s=!1}catch(t){o=t}if(i.length||o)throw new e(`Tokenizer error: could not tokenize \`${t}\``);return n}(t);let s=0,i=[],r=-1;for(;s<o.length;){let t=o[s],e=o[s-1],l=o[s+1],a=i[i.length-1];switch(t.type){case"LEFT_BRACE":case"LEFT_BRACKET":case"LEFT_PAREN":i.push(t.type);break;case"RIGHT_BRACE":case"RIGHT_BRACKET":case"RIGHT_PAREN":i.pop()}let c="SYMBOL"===t.type&&!Re.includes(t.value);if(c&&e&&("LEFT_BRACE"===a&&Me(e)&&je(l)&&(o.splice(s+1,0,{type:"COLON",value:":"},{...t}),l=o[s+1]),"OPERATOR"===e.type&&"."===e.value?c=!1:"LEFT_BRACE"!==e.type&&"COMMA"!==e.type||l&&"COLON"===l.type&&(c=!1)),"TEMPLATE_STRING"===t.type&&(t.value=t.replace(t=>Fe(t))),l&&"OPERATOR"===l.type&&"=>"===l.value)if(0===i.length&&(r=s+1),"RIGHT_PAREN"===t.type){let t=s-1;for(;t>0&&"LEFT_PAREN"!==o[t].type;)"SYMBOL"===o[t].type&&o[t].originalValue&&(o[t].value=o[t].originalValue,n.add(o[t].value)),t--}else n.add(t.value);c&&(t.varName=t.value,n.has(t.value)||(t.originalValue=t.value,t.value=`ctx['${t.value}']`)),s++}for(const t of o)"SYMBOL"===t.type&&t.varName&&n.has(t.value)&&(t.originalValue=t.value,t.value=`_${t.value}`,t.isLocal=!0);let l=null;if(-1!==r){l=[];const t=new Set;for(let e=r+1;e<o.length;e++){const n=o[e];!n.varName||n.isLocal||"this"===n.varName||t.has(n.varName)||(t.add(n.varName),l.push(n.varName))}}return{expr:o.map(t=>Ve.get(t.value)||t.value).join(""),freeVariables:l}}function Fe(t){return We(t).expr}const Ke=/\{\{.*?\}\}|\#\{.*?\}/g;function Ue(t){return function(t,e){let n=t.match(Ke);if(n&&n[0].length===t.length)return`(${e(t.slice(2,"{"===n[0][0]?-2:-1))})`;let o=t.replace(Ke,t=>"${"+e(t.slice(2,"{"===t[0]?-2:-1))+"}");return"`"+o+"`"}(t,Fe)}const ze=Symbol("zero"),He=/\s+/g;let Ge;"undefined"!=typeof document&&(Ge=document.implementation.createDocument(null,null,null));const qe=new Set(["stop","capture","prevent","self","synthetic","passive"]);let Xe={};function Ze(t=""){return Xe[t]=(Xe[t]||0)+1,t+Xe[t]}function Ye(t,e){switch(t){case"input":return"checked"===e||"indeterminate"===e||"value"===e||"readonly"===e||"readOnly"===e||"disabled"===e;case"option":return"selected"===e||"disabled"===e;case"textarea":return"value"===e||"readonly"===e||"readOnly"===e||"disabled"===e;case"select":return"value"===e||"disabled"===e;case"button":case"optgroup":return"disabled"===e}return!1}function Je(t){return`\`${t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/,"\\${")}\``}class Qe{static nextBlockId=1;varName;blockName;dynamicTagName=null;isRoot=!1;hasDynamicChildren=!1;children=[];data=[];dom;currentDom;childNumber=0;target;type;parentVar="";id;constructor(t,e){this.id=Qe.nextBlockId++,this.varName="b"+this.id,this.blockName="block"+this.id,this.target=t,this.type=e}insertData(t,e="d"){const n=Ze(e);return this.target.addLine(`let ${n} = ${t};`),this.data.push(n)-1}insert(t){this.currentDom?this.currentDom.appendChild(t):this.dom=t}generateExpr(t){if("block"===this.type){const t=this.children.length;let e=this.data.length?`[${this.data.join(", ")}]`:t?"[]":"";return t&&(e+=", ["+this.children.map(t=>t.varName).join(", ")+"]"),this.dynamicTagName?`toggler(${this.dynamicTagName}, ${this.blockName}(${this.dynamicTagName})(${e}))`:`${this.blockName}(${e})`}return"list"===this.type?`list(c_block${this.id})`:t}asXmlString(){const t=Ge.createElement("t");return t.appendChild(this.dom),t.innerHTML}}function tn(t,e){return Object.assign({block:null,index:0,forceNewBlock:!0,translate:t.translate,translationCtx:t.translationCtx,tKeyExpr:null,nameSpace:t.nameSpace,tModelSelectedExpr:t.tModelSelectedExpr},e)}class en{name;indentLevel=0;loopLevel=0;loopCtxVars=[];tSetVars=new Map;code=[];hasRoot=!1;deferReturn=!1;needsScopeProtection=!1;on;constructor(t,e){this.name=t,this.on=e||null}addLine(t,e){const n=new Array(this.indentLevel+2).join(" ");void 0===e?this.code.push(n+t):this.code.splice(e,0,n+t)}generateCode(){let t=[];t.push(`function ${this.name}(ctx, node, key = "") {`),this.needsScopeProtection&&t.push(" ctx = Object.create(ctx);");for(let e of this.code)t.push(e);return this.hasRoot||t.push("return text('');"),t.push("}"),t.join("\n ")}currentKey(t){let e=this.loopLevel?`key${this.loopLevel}`:"key";return t.tKeyExpr&&(e=`${t.tKeyExpr} + ${e}`),e}}const nn=["alt","aria-label","aria-placeholder","aria-roledescription","aria-valuetext","label","placeholder","title"],on=/^(\s*)([\s\S]+?)(\s*)$/;class sn{blocks=[];nextBlockId=1;isDebug=!1;targets=[];target=new en("template");templateName;dev;translateFn;translatableAttributes=nn;ast;staticDefs=[];slotNames=new Set;helpers=new Set;constructor(t,e){if(this.translateFn=e.translateFn||(t=>t),e.translatableAttributes){const t=new Set(nn);for(let n of e.translatableAttributes)n.startsWith("-")?t.delete(n.slice(1)):t.add(n);this.translatableAttributes=[...t]}this.dev=e.dev||!1,this.ast=t,this.templateName=e.name,e.name&&(e.name.startsWith("__")?this.target.name=e.name:this.target.name=`template_${e.name.replace(/[^a-zA-Z0-9_$]/g,"_")}`),e.hasGlobalValues&&this.helpers.add("__globals__")}generateCode(){const t=this.ast;this.isDebug=11===t.type,Qe.nextBlockId=1,Xe={},this.compileAST(t,{block:null,index:0,forceNewBlock:!1,translate:!0,translationCtx:"",tKeyExpr:null});let e=[" let { text, createBlock, list, multi, html, toggler, comment } = bdom;"];this.helpers.size&&e.push(`let { ${[...this.helpers].join(", ")} } = helpers;`),this.templateName&&e.push(`// Template name: "${this.templateName}"`);for(let{id:t,expr:n}of this.staticDefs)e.push(`const ${t} = ${n};`);if(this.blocks.length){e.push("");for(let t of this.blocks)if(t.dom){let n=Je(t.asXmlString());t.dynamicTagName?(n=n.replace(/^`<\w+/,`\`<\${tag || '${t.dom.nodeName}'}`),n=n.replace(/\w+>`$/,`\${tag || '${t.dom.nodeName}'}>\``),e.push(`let ${t.blockName} = tag => createBlock(${n});`)):e.push(`let ${t.blockName} = createBlock(${n});`)}}if(this.targets.length)for(let t of this.targets)e.push(""),e=e.concat(t.generateCode());e.push(""),e=e.concat("return "+this.target.generateCode());const n=e.join("\n ");if(this.isDebug){const t=`[Owl Debug]\n${n}`;console.log(t)}return n}compileInNewTarget(t,e,n,o){const s=Ze(t),i=this.target,r=new en(s,o);return this.targets.push(r),this.target=r,this.compileAST(e,tn(n)),this.target=i,s}addLine(t,e){this.target.addLine(t,e)}define(t,e){this.addLine(`const ${t} = ${e};`)}insertAnchor(t,e=t.children.length){const n=`block-child-${e}`,o=Ge.createElement(n);t.insert(o)}createBlock(t,e,n){const o=this.target.hasRoot,s=new Qe(this.target,e);return o||(this.target.hasRoot=!0,s.isRoot=!0),t&&(t.children.push(s),"list"===t.type&&(s.parentVar=`c_block${t.id}`)),s}insertBlock(t,e,n){let o=e.generateExpr(t);if(e.parentVar){let t=this.target.currentKey(n);return this.helpers.add("withKey"),void this.addLine(`${e.parentVar}[${n.index}] = withKey(${o}, ${t});`)}n.tKeyExpr&&(o=`toggler(${n.tKeyExpr}, ${o})`),e.isRoot&&!this.target.deferReturn?(this.target.on&&(o=this.wrapWithEventCatcher(o,this.target.on)),this.addLine(`return ${o};`)):this.define(e.varName,o)}translate(t,e){const n=on.exec(t);return n[1]+this.translateFn(n[2],e)+n[3]}compileAST(t,e){switch(t.type){case 1:return this.compileComment(t,e);case 0:return this.compileText(t,e);case 2:return this.compileTDomNode(t,e);case 7:return this.compileTOut(t,e);case 4:return this.compileTIf(t,e);case 8:return this.compileTForeach(t,e);case 9:return this.compileTKey(t,e);case 3:return this.compileMulti(t,e);case 6:return this.compileTCall(t,e);case 14:return this.compileTCallBlock(t,e);case 5:return this.compileTSet(t,e);case 10:return this.compileComponent(t,e);case 11:return this.compileDebug(t,e);case 12:return this.compileLog(t,e);case 13:return this.compileTCallSlot(t,e);case 15:return this.compileTTranslation(t,e);case 16:return this.compileTTranslationContext(t,e)}}compileDebug(t,e){return this.addLine("debugger;"),t.content?this.compileAST(t.content,e):null}compileLog(t,e){return this.addLine(`console.log(${Fe(t.expr)});`),t.content?this.compileAST(t.content,e):null}compileComment(t,e){let{block:n,forceNewBlock:o}=e;if(!n||o)n=this.createBlock(n,"comment",e),this.insertBlock(`comment(${Je(t.value)})`,n,{...e,forceNewBlock:o&&!n});else{const e=Ge.createComment(t.value);n.insert(e)}return n.varName}compileText(t,e){let{block:n,forceNewBlock:o}=e,s=t.value;if(s&&!1!==e.translate&&(s=this.translate(s,e.translationCtx)),e.inPreTag||(s=s.replace(He," ")),!n||o)n=this.createBlock(n,"text",e),this.insertBlock(`text(${Je(s)})`,n,{...e,forceNewBlock:o&&!n});else{const e=0===t.type?Ge.createTextNode:Ge.createComment;n.insert(e.call(Ge,s))}return n.varName}generateHandlerCode(t,n){const o=t.split(".").slice(1).map(t=>{if(!qe.has(t))throw new e(`Unknown event modifier: '${t}'`);return`"${t}"`});let s="";o.length&&(s=`${o.join(",")}, `);const i=Fe(n);if(!i.trim())return`[${s}, ctx]`;let r;const l=i.match(/^(\([^)]*\))\s*=>/),a=!l&&i.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=>/);if(l){const t=l[1].slice(1,-1).trim(),e=i.slice(l[0].length);r=t?`(ctx,${t})=>${e}`:`(ctx)=>${e}`}else if(a){const t=i.slice(a[0].length);r=`(ctx,${a[1]})=>${t}`}else this.helpers.add("callHandler"),r=`(ctx, ev) => callHandler(${i}, ctx, ev)`;const c=Ze("hdlr_fn");return this.staticDefs.push({id:c,expr:r}),`[${s}${c}, ctx]`}compileTDomNode(t,e){let{block:n,forceNewBlock:o}=e;const s=!n||o||null!==t.dynamicTag||t.ns;let i=this.target.code.length;if(s&&((t.dynamicTag||e.tKeyExpr||t.ns)&&e.block&&this.insertAnchor(e.block),n=this.createBlock(n,"block",e),this.blocks.push(n),t.dynamicTag)){const e=Ze("tag");this.define(e,Fe(t.dynamicTag)),n.dynamicTagName=e}const r={};for(let o in t.attrs){let s,i;if(o.startsWith("t-attf")){s=Ue(t.attrs[o]);const e=n.insertData(s,"attr");i=o.slice(7),r["block-attribute-"+e]=i}else if(o.startsWith("t-att"))if(i="t-att"===o?null:o.slice(6),s=Fe(t.attrs[o]),i&&Ye(t.tag,i)){"readonly"===i&&(i="readOnly"),s="value"===i?`new String((${s}) === 0 ? 0 : ((${s}) || ""))`:`new Boolean(${s})`;r[`block-property-${n.insertData(s,"prop")}`]=i}else{const t=n.insertData(s,"attr");"t-att"===o?r["block-attributes"]=String(t):r[`block-attribute-${t}`]=i}else if(this.translatableAttributes.includes(o)){const n=t.attrsTranslationCtx?.[o]||e.translationCtx;r[o]=this.translateFn(t.attrs[o],n)}else s=`"${t.attrs[o]}"`,i=o,r[o]=t.attrs[o];if("value"===i&&e.tModelSelectedExpr){r[`block-attribute-${n.insertData(`${e.tModelSelectedExpr} === ${s}`,"attr")}`]="selected"}}let l;if(t.model){const{hasDynamicChildren:e,expr:o,eventType:s,shouldNumberize:i,shouldTrim:a,targetAttr:c,specialInitTargetAttr:u,isProxy:h}=t.model;let d,f,p;if(h){const t=Fe(o);d=t,f=e=>`${t} = ${e}`}else{const t=Ze("expr"),e=Fe(o);this.helpers.add("modelExpr"),this.define(t,`modelExpr(${e})`),d=`${t}()`,f=e=>`${t}.set(${e})`}if(u){let e=c in r&&`'${r[c]}'`;if(!e&&t.attrs){const n=t.attrs[`t-att-${c}`];n&&(e=Fe(n))}p=n.insertData(`${d} === ${e}`,"prop"),r[`block-property-${p}`]=u}else if(e){l=`${Ze("bValue")}`,this.define(l,d)}else p=n.insertData(d,"prop"),r[`block-property-${p}`]=c;this.helpers.add("toNumber");let m=`ev.target.${c}`;m=a?`${m}.trim()`:m,m=i?`toNumber(${m})`:m;const g=`[(ctx, ev) => { ${f(m)}; }, ctx]`;p=n.insertData(g,"hdlr"),r[`block-handler-${p}`]=s}for(let e in t.on){const o=this.generateHandlerCode(e,t.on[e]);r[`block-handler-${n.insertData(o,"hdlr")}`]=e}if(t.ref){const e=Fe(t.ref);this.helpers.add("createRef");const o=`createRef(${e})`,s=n.insertData(o,"ref");r["block-ref"]=String(s)}const a=t.ns||e.nameSpace,c=a?Ge.createElementNS(a,t.tag):Ge.createElement(t.tag);for(const[t,e]of Object.entries(r))"class"===t&&""===e||c.setAttribute(t,e);if(n.insert(c),t.content.length){const o=n.currentDom;n.currentDom=c;const s=t.content;for(let o=0;o<s.length;o++){const s=t.content[o],i=tn(e,{block:n,index:n.childNumber,forceNewBlock:!1,tKeyExpr:e.tKeyExpr,nameSpace:a,tModelSelectedExpr:l,inPreTag:e.inPreTag||"pre"===t.tag});this.compileAST(s,i)}n.currentDom=o}if(s&&(this.insertBlock(`${n.blockName}(ddd)`,n,e),n.children.length&&n.hasDynamicChildren)){const t=this.target.code,e=n.children.slice();let o=e.shift();for(let n=i;n<t.length&&(!t[n].trimStart().startsWith(`const ${o.varName} `)||(t[n]=t[n].replace(`const ${o.varName}`,o.varName),o=e.shift(),o));n++);this.addLine(`let ${n.children.map(t=>t.varName).join(", ")};`,i)}return n.varName}compileZero(){this.helpers.add("zero");const t=this.slotNames.has(ze);this.slotNames.add(ze);let e=this.target.loopLevel?`key${this.target.loopLevel}`:"key";return t&&(e=this.generateComponentKey(e)),`ctx[zero]?.(node, ${e}) || text("")`}compileTOut(t,e){let n,{block:o}=e;if(o&&this.insertAnchor(o),o=this.createBlock(o,"html",e),"0"===t.expr)n=this.compileZero();else if(t.body){let o=null;o=Qe.nextBlockId;const s=tn(e);this.compileAST({type:3,content:t.body},s),this.helpers.add("safeOutput"),n=`safeOutput(${Fe(t.expr)}, b${o})`}else this.helpers.add("safeOutput"),n=`safeOutput(${Fe(t.expr)})`;return this.insertBlock(n,o,e),o.varName}compileTIfBranch(t,e,n){this.target.indentLevel++;let o=e.children.length;this.compileAST(t,tn(n,{block:e,index:n.index})),e.children.length>o&&this.insertAnchor(e,o),this.target.indentLevel--}compileTIf(t,e,n){let{block:o,forceNewBlock:s}=e;const i=this.target.code.length,r=!o||"multi"!==o.type&&s;if(o&&(o.hasDynamicChildren=!0),(!o||"multi"!==o.type&&s)&&(o=this.createBlock(o,"multi",e)),this.addLine(`if (${Fe(t.condition)}) {`),this.compileTIfBranch(t.content,o,e),t.tElif)for(let n of t.tElif)this.addLine(`} else if (${Fe(n.condition)}) {`),this.compileTIfBranch(n.content,o,e);if(t.tElse&&(this.addLine("} else {"),this.compileTIfBranch(t.tElse,o,e)),this.addLine("}"),r){if(o.children.length){const t=this.target.code,e=o.children.slice();let n=e.shift();for(let o=i;o<t.length&&(!t[o].trimStart().startsWith(`const ${n.varName} `)||(t[o]=t[o].replace(`const ${n.varName}`,n.varName),n=e.shift(),n));o++);this.addLine(`let ${o.children.map(t=>t.varName).join(", ")};`,i)}const t=o.children.map(t=>t.varName).join(", ");this.insertBlock(`multi([${t}])`,o,e)}return o.varName}compileTForeach(t,e){let{block:n}=e;n&&this.insertAnchor(n),n=this.createBlock(n,"list",e),this.target.loopLevel++;const o=`i${this.target.loopLevel}`,s=Ze("ctx");this.addLine(`const ${s} = ctx;`),this.target.loopCtxVars.push(s);const i=`v_block${n.id}`,r=`k_block${n.id}`,l=`l_block${n.id}`,a=`c_block${n.id}`;this.helpers.add("prepareList"),this.define(`[${r}, ${i}, ${l}, ${a}]`,`prepareList(${Fe(t.collection)});`),this.dev&&this.define(`keys${n.id}`,"new Set()"),this.addLine(`for (let ${o} = 0; ${o} < ${l}; ${o}++) {`),this.target.indentLevel++,this.addLine(`let ctx = Object.create(${s});`),this.addLine(`ctx[\`${t.elem}\`] = ${r}[${o}];`),1&t.noFlags||this.addLine(`ctx[\`${t.elem}_first\`] = ${o} === 0;`),2&t.noFlags||this.addLine(`ctx[\`${t.elem}_last\`] = ${o} === ${r}.length - 1;`),4&t.noFlags||this.addLine(`ctx[\`${t.elem}_index\`] = ${o};`),8&t.noFlags||this.addLine(`ctx[\`${t.elem}_value\`] = ${i}[${o}];`),this.define(`key${this.target.loopLevel}`,t.key?Fe(t.key):o),this.dev&&(this.helpers.add("OwlError"),this.addLine(`if (keys${n.id}.has(String(key${this.target.loopLevel}))) { throw new OwlError(\`Got duplicate key in t-foreach: \${key${this.target.loopLevel}}\`)}`),this.addLine(`keys${n.id}.add(String(key${this.target.loopLevel}));`));const c=tn(e,{block:n,index:o});return this.compileAST(t.body,c),this.target.indentLevel--,this.target.loopLevel--,this.target.loopCtxVars.pop(),this.addLine("}"),this.insertBlock("l",n,e),n.varName}compileTKey(t,e){const n=Ze("tKey_");return this.define(n,Fe(t.expr)),e=tn(e,{tKeyExpr:n,block:e.block,index:e.index}),this.compileAST(t.content,e)}compileMulti(t,e){let{block:n,forceNewBlock:o}=e;const s=!n||o;let i=this.target.code.length;if(s){let o=null;if(t.content.filter(t=>!t.hasNoRepresentation).length<=1){const n=!this.target.hasRoot&&t.content[t.content.length-1].hasNoRepresentation;n&&(this.target.deferReturn=!0);for(let n of t.content){const t=this.compileAST(n,e);o=o||t}return n&&(this.target.deferReturn=!1,this.addLine(`return ${o};`)),o}n=this.createBlock(n,"multi",e)}let r=0;for(let o=0,s=t.content.length;o<s;o++){const s=t.content[o],i=!s.hasNoRepresentation,l=tn(e,{block:n,index:r,forceNewBlock:i});this.compileAST(s,l),i&&r++}if(s){if(n.hasDynamicChildren&&n.children.length){const t=this.target.code,e=n.children.slice();let o=e.shift();for(let n=i;n<t.length&&(!t[n].trimStart().startsWith(`const ${o.varName} `)||(t[n]=t[n].replace(`const ${o.varName}`,o.varName),o=e.shift(),o));n++);this.addLine(`let ${n.children.map(t=>t.varName).join(", ")};`,i)}const t=n.children.map(t=>t.varName).join(", ");this.insertBlock(`multi([${t}])`,n,e)}return n.varName}compileTCall(t,e){let{block:n,forceNewBlock:o}=e;const s=t.attrs?this.formatPropObject(t.attrs,t.attrsTranslationCtx,e.translationCtx):[],i=Ke.test(t.name)?Ue(t.name):"`"+t.name+"`";if(n&&!o&&this.insertAnchor(n),n=this.createBlock(n,"multi",e),t.body){const n=this.compileInNewTarget("callBody",t.body,e),o=Ze("lazyBlock");this.define(o,`${n}.bind(this, ctx)`),this.helpers.add("zero"),s.push(`[zero]: ${o}`)}let r;const l=`{${s.join(", ")}}`;if(t.context){const e=Ze("ctx");this.addLine(`const ${e} = ${Fe(t.context)};`),r=s.length?`Object.assign({this: ${e}}, ${l})`:`{this: ${e}}`}else r=0===s.length?"ctx":`Object.assign(Object.create(ctx), ${l})`;const a=this.generateComponentKey();return this.helpers.add("callTemplate"),this.insertBlock(`callTemplate(${i}, this, app, ${r}, node, ${a})`,n,{...e,forceNewBlock:!n}),n.varName}compileTCallBlock(t,e){let{block:n,forceNewBlock:o}=e;return n&&(o||this.insertAnchor(n)),n=this.createBlock(n,"multi",e),this.insertBlock(Fe(t.name),n,{...e,forceNewBlock:!n}),n.varName}compileTSet(t,e){const n=t.value?Fe(t.value||""):"null",o=0===this.target.loopLevel,s=this.target.tSetVars.get(t.name),i=void 0!==s&&this.target.loopLevel>s;if(t.body){this.helpers.add("LazyValue");const r={type:3,content:t.body};let l=`new LazyValue(${this.compileInNewTarget("value",r,e)}, ctx, this, node, ${this.target.currentKey(e)})`;if(l=t.value?l?`withDefault(${n}, ${l})`:n:l,this.helpers.add("withDefault"),i){const e=this.target.loopCtxVars[s];this.addLine(`${e}[\`${t.name}\`] = ${l};`)}else o?(this.target.needsScopeProtection=!0,this.addLine(`ctx[\`${t.name}\`] = ${l};`),this.target.tSetVars.set(t.name,0)):(this.addLine(`ctx[\`${t.name}\`] = ${l};`),this.target.tSetVars.set(t.name,this.target.loopLevel))}else{let r;if(t.defaultValue){const o=Je(e.translate?this.translate(t.defaultValue,e.translationCtx):t.defaultValue);t.value?(this.helpers.add("withDefault"),r=`withDefault(${n}, ${o})`):r=o}else r=n;if(i){const e=this.target.loopCtxVars[s];this.addLine(`${e}["${t.name}"] = ${r};`)}else o?(this.target.needsScopeProtection=!0,this.addLine(`ctx["${t.name}"] = ${r};`),this.target.tSetVars.set(t.name,0)):(this.addLine(`ctx["${t.name}"] = ${r};`),this.target.tSetVars.set(t.name,this.target.loopLevel))}return null}generateComponentKey(t="key"){const e=[Ze("__")];for(let t=0;t<this.target.loopLevel;t++)e.push(`\${key${t+1}}`);return`${t} + \`${e.join("__")}\``}formatProp(t,n,o,s){if(t.endsWith(".translate")){const e=o?.[t]||s;n=Je(this.translateFn(n,e))}else n=Fe(n);if(t.includes(".")){let[o,s]=t.split(".");switch(t=o,s){case"bind":n=`(${n}).bind(this)`;break;case"alike":case"translate":break;default:throw new e(`Invalid prop suffix: ${s}`)}}return`${t=/^[a-z_]+$/i.test(t)?t:`'${t}'`}: ${n||void 0}`}formatPropObject(t,e,n){return Object.entries(t).map(([t,o])=>this.formatProp(t,o,e,n))}getPropString(t,e){let n=`{${t.join(",")}}`;return e&&(n=`Object.assign({}, ${Fe(e)}${t.length?", "+n:""})`),n}compileComponent(t,e){let{block:n}=e;const o="slots"in(t.props||{}),s=[],i=[];for(let n in t.props||{}){let[o,r]=n.split(".");if(r){s.push(this.formatProp(n,t.props[n],t.propsTranslationCtx,e.translationCtx));continue}const{expr:l,freeVariables:a}=We(t.props[n]),c=/^[a-z_]+$/i.test(o)?o:`'${o}'`;if(s.push(`${c}: ${l||void 0}`),a)for(const t of a){const e=`${o}.${t}`;i.push(`"${e}"`),s.push(`"${e}": ctx['${t}']`)}else i.push(`"${o}"`)}let r="";if(t.slots){let n=[];for(let o in t.slots){const s=t.slots[o],i=[];if(s.content){const t=this.compileInNewTarget("slot",s.content,e,s.on);i.push(`__render: ${t}.bind(this), __ctx: ctx`)}const r=t.slots[o].scope;r&&i.push(`__scope: "${r}"`),t.slots[o].attrs&&i.push(...this.formatPropObject(t.slots[o].attrs,t.slots[o].attrsTranslationCtx,e.translationCtx));const l=`{${i.join(", ")}}`;n.push(`'${o}': ${l}`)}r=`{${n.join(", ")}}`}!r||t.dynamicProps||o||(this.helpers.add("markRaw"),s.push(`slots: markRaw(${r})`));let l,a,c=this.getPropString(s,t.dynamicProps);(r&&(t.dynamicProps||o)||this.dev)&&(l=Ze("props"),this.define(l,c),c=l),r&&(t.dynamicProps||o)&&(this.helpers.add("markRaw"),this.addLine(`${l}.slots = markRaw(Object.assign(${r}, ${l}.slots))`)),t.isDynamic?(a=Ze("Comp"),this.define(a,Fe(t.name))):a=`\`${t.name}\``,n&&(!1===e.forceNewBlock||e.tKeyExpr)&&this.insertAnchor(n);let u=this.generateComponentKey();e.tKeyExpr&&(u=`${e.tKeyExpr} + ${u}`);let h=Ze("comp");this.helpers.add("createComponent"),this.staticDefs.push({id:h,expr:`createComponent(app, ${t.isDynamic?null:a}, ${!t.isDynamic}, ${!!t.slots}, ${!!t.dynamicProps}, [${i}])`}),t.isDynamic&&(u=`(${a}).name + ${u}`);let d=`${h}(${c}, ${u}, node, this, ${t.isDynamic?a:null})`;return t.isDynamic&&(d=`toggler(${a}, ${d})`),t.on&&(d=this.wrapWithEventCatcher(d,t.on)),n=this.createBlock(n,"multi",e),this.insertBlock(d,n,e),n.varName}wrapWithEventCatcher(t,e){this.helpers.add("createCatcher");let n=Ze("catcher"),o={},s=[];for(let t in e){let n=Ze("hdlr"),i=s.push(n)-1;o[t]=i;const r=this.generateHandlerCode(t,e[t]);this.define(n,r)}return this.staticDefs.push({id:n,expr:`createCatcher(${JSON.stringify(o)})`}),`${n}(${t}, [${s.join(",")}])`}compileTCallSlot(t,e){this.helpers.add("callSlot");let n,o,{block:s}=e,i=!1,r=!1;t.name.match(Ke)?(i=!0,r=!0,o=Ue(t.name)):(o="'"+t.name+"'",r=r||this.slotNames.has(t.name),this.slotNames.add(t.name));const l={...t.attrs},a=l["t-props"];delete l["t-props"];let c=this.target.loopLevel?`key${this.target.loopLevel}`:"key";r&&(c=this.generateComponentKey(c));const u=t.attrs?this.formatPropObject(l,t.attrsTranslationCtx,e.translationCtx):[],h=this.getPropString(u,a);if(t.defaultContent){n=`callSlot(ctx, node, ${c}, ${o}, ${i}, ${h}, ${this.compileInNewTarget("defaultContent",t.defaultContent,e)}.bind(this))`}else if(i){let t=Ze("slot");this.define(t,o),n=`toggler(${t}, callSlot(ctx, node, ${c}, ${t}, ${i}, ${h}))`}else n=`callSlot(ctx, node, ${c}, ${o}, ${i}, ${h})`;return t.on&&(n=this.wrapWithEventCatcher(n,t.on)),s&&this.insertAnchor(s),s=this.createBlock(s,"multi",e),this.insertBlock(n,s,{...e,forceNewBlock:!1}),s.varName}compileTTranslation(t,e){return t.content?this.compileAST(t.content,Object.assign({},e,{translate:!1})):null}compileTTranslationContext(t,e){return t.content?this.compileAST(t.content,Object.assign({},e,{translationCtx:t.translationCtx})):null}}const rn=new WeakMap;function ln(t,n){var o;return function(t){let n=t.querySelectorAll("[t-elif], [t-else]");for(let t=0,o=n.length;t<o;t++){let o=n[t],s=o.previousElementSibling,i=t=>s.getAttribute(t),r=t=>+!!o.getAttribute(t);if(!s||!i("t-if")&&!i("t-elif"))throw new e("t-elif and t-else directives must be preceded by a t-if or t-elif directive");{if(i("t-foreach"))throw new e("t-if cannot stay at the same level as t-foreach when using t-elif or t-else");if(["t-if","t-elif","t-else"].map(r).reduce(function(t,e){return t+e})>1)throw new e("Only one conditional branching directive is allowed per node");let t;for(;(t=o.previousSibling)!==s;){if(t.nodeValue.trim().length&&8!==t.nodeType)throw new e("text is not allowed between branching directives");t.remove()}}}}(o=t),function(t){const n=[...t.querySelectorAll("[t-out]")].filter(t=>t.tagName[0]===t.tagName[0].toUpperCase()||t.hasAttribute("t-component"));for(const t of n){if(t.childNodes.length)throw new e("Cannot have t-out on a component that already has content");const n=t.getAttribute("t-out");t.removeAttribute("t-out");const o=t.ownerDocument.createElement("t");null!=n&&o.setAttribute("t-out",n),t.appendChild(o)}}(o),an(t,n)||{type:0,value:""}}function an(t,n){return t instanceof Element?function(t,n){if(!n.customDirectives)return null;const o=t.getAttributeNames();for(let s of o){if("t-custom"===s||"t-custom-"===s)throw new e("Missing custom directive name with t-custom directive");if(s.startsWith("t-custom-")){const o=s.split(".")[0].slice(9),i=n.customDirectives[o];if(!i)throw new e(`Custom directive "${o}" is not defined`);const r=t.getAttribute(s),l=s.split(".").slice(1);t.removeAttribute(s);try{i(t,r,l)}catch(t){throw new e(`Custom directive "${o}" throw the following error: ${t}`)}return an(t,n)}}return null}(t,n)||function(t,e){if(t.hasAttribute("t-debug")){t.removeAttribute("t-debug");const n=an(t,e),o={type:11,content:n};return n?.hasNoRepresentation&&(o.hasNoRepresentation=!0),o}if(t.hasAttribute("t-log")){const n=t.getAttribute("t-log");t.removeAttribute("t-log");const o=an(t,e),s={type:12,expr:n,content:o};return o?.hasNoRepresentation&&(s.hasNoRepresentation=!0),s}return null}(t,n)||function(t,n){if(!t.hasAttribute("t-foreach"))return null;const o=t.outerHTML,s=t.getAttribute("t-foreach");t.removeAttribute("t-foreach");const i=t.getAttribute("t-as")||"";t.removeAttribute("t-as");const r=t.getAttribute("t-key");if(!r)throw new e(`"Directive t-foreach should always be used with a t-key!" (expression: t-foreach="${s}" t-as="${i}")`);t.removeAttribute("t-key");const l=an(t,n);if(!l)return null;const a=!o.includes("t-call");let c=0;a&&!o.includes(`${i}_first`)&&(c|=1);a&&!o.includes(`${i}_last`)&&(c|=2);a&&!o.includes(`${i}_index`)&&(c|=4);a&&!o.includes(`${i}_value`)&&(c|=8);return{type:8,collection:s,elem:i,body:l,key:r,noFlags:c}}(t,n)||function(t,e){if(!t.hasAttribute("t-if"))return null;const n=t.getAttribute("t-if");t.removeAttribute("t-if");const o=an(t,e)||{type:0,value:""};let s=t.nextElementSibling;const i=[];for(;s&&s.hasAttribute("t-elif");){const t=s.getAttribute("t-elif");s.removeAttribute("t-elif");const n=an(s,e),o=s.nextElementSibling;s.remove(),s=o,n&&i.push({condition:t,content:n})}let r=null;s&&s.hasAttribute("t-else")&&(s.removeAttribute("t-else"),r=an(s,e),s.remove());return{type:4,condition:n,content:o,tElif:i.length?i:null,tElse:r}}(t,n)||function(t,e){if("off"!==t.getAttribute("t-translation"))return null;t.removeAttribute("t-translation");const n=an(t,e);if(3===n?.type){return mn(n.content.map(dn))}return dn(n)}(t,n)||function(t,e){const n=t.getAttribute("t-translation-context");if(!n)return null;t.removeAttribute("t-translation-context");const o=an(t,e);if(3===o?.type){return mn(o.content.map(t=>fn(t,n)))}return fn(o,n)}(t,n)||function(t,n){if(!t.hasAttribute("t-call"))return null;if("t"!==t.tagName)throw new e(`Directive 't-call' can only be used on <t> nodes (used on a <${t.tagName}>)`);const o=t.getAttribute("t-call"),s=t.getAttribute("t-call-context");t.removeAttribute("t-call"),t.removeAttribute("t-call-context");let i=null,r=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);if(e.startsWith("t-translation-context-")){r=r||{},r[e.slice(22)]=n}else i=i||{},i[e]=n}const l=gn(t,n);return{type:6,name:o,attrs:i,attrsTranslationCtx:r,body:l,context:s}}(t,n)||function(t){if(!t.hasAttribute("t-call-block"))return null;const e=t.getAttribute("t-call-block");return{type:14,name:e}}(t)||function(t,e){if(!t.hasAttribute("t-key"))return null;const n=t.getAttribute("t-key");t.removeAttribute("t-key");const o=an(t,e);if(!o)return null;const s={type:9,expr:n,content:o};o.hasNoRepresentation&&(s.hasNoRepresentation=!0);return s}(t,n)||function(t,e){if(!t.hasAttribute("t-out")&&!t.hasAttribute("t-esc"))return null;t.hasAttribute("t-esc")&&console.warn('t-esc has been deprecated in favor of t-out. If the value to render is not wrapped by the "markup" function, it will be escaped');const n=t.getAttribute("t-out")||t.getAttribute("t-esc");t.removeAttribute("t-out"),t.removeAttribute("t-esc");const o={type:7,expr:n,body:null},s=t.getAttribute("t-ref");t.removeAttribute("t-ref");const i=an(t,e);if(!i)return o;if(2===i.type)return o.body=i.content.length?i.content:null,{...i,ref:s,content:[o]};return o}(t,n)||function(t,e){if(!t.hasAttribute("t-call-slot")&&!t.hasAttribute("t-slot"))return null;t.hasAttribute("t-slot")&&console.warn("t-slot has been renamed t-call-slot.");const n=t.getAttribute("t-call-slot")||t.getAttribute("t-slot");t.removeAttribute("t-call-slot"),t.removeAttribute("t-slot");let o=null,s=null,i=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);if(e.startsWith("t-on-"))i=i||{},i[e.slice(5)]=n;else if(e.startsWith("t-translation-context-")){s=s||{},s[e.slice(22)]=n}else o=o||{},o[e]=n}return{type:13,name:n,attrs:o,attrsTranslationCtx:s,on:i,defaultContent:gn(t,e)}}(t,n)||function(t,n){let o=t.tagName;const s=o[0];let i=t.hasAttribute("t-component");if(i&&"t"!==o)throw new e(`Directive 't-component' can only be used on <t> nodes (used on a <${o}>)`);if(s!==s.toUpperCase()&&!i)return null;i&&(o=t.getAttribute("t-component"),t.removeAttribute("t-component"));const r=t.getAttribute("t-props");t.removeAttribute("t-props");const l=t.getAttribute("t-slot-scope");t.removeAttribute("t-slot-scope");let a=null,c=null,u=null;for(let n of t.getAttributeNames()){const o=t.getAttribute(n);if(n.startsWith("t-translation-context-")){u=u||{},u[n.slice(22)]=o}else if(n.startsWith("t-")){if(!n.startsWith("t-on-")){const t=hn.get(n.split("-").slice(0,2).join("-"));throw new e(t||`unsupported directive on Component: ${n}`)}a=a||{},a[n.slice(5)]=o}else c=c||{},c[n]=o}let h=null;if(t.hasChildNodes()){const o=t.cloneNode(!0),s=Array.from(o.querySelectorAll("[t-set-slot]"));for(let t of s){if("t"!==t.tagName)throw new e(`Directive 't-set-slot' can only be used on <t> nodes (used on a <${t.tagName}>)`);const s=t.getAttribute("t-set-slot");let i=t.parentElement,r=!1;for(;i&&i!==o;){if(i.hasAttribute("t-component")||i.tagName[0]===i.tagName[0].toUpperCase()){r=!0;break}i=i.parentElement}if(r||!i)continue;t.removeAttribute("t-set-slot"),t.remove();const l=an(t,n);let a=null,c=null,u=null,d=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);if("t-slot-scope"!==e)if(e.startsWith("t-translation-context-")){u=u||{},u[e.slice(22)]=n}else e.startsWith("t-on-")?(a=a||{},a[e.slice(5)]=n):(c=c||{},c[e]=n);else d=n}h=h||{},h[s]={content:l,on:a,attrs:c,attrsTranslationCtx:u,scope:d}}const i=gn(o,n);h=h||{},i&&!h.default&&(h.default={content:i,on:a,attrs:null,attrsTranslationCtx:null,scope:l})}return{type:10,name:o,isDynamic:i,dynamicProps:r,props:c,propsTranslationCtx:u,slots:h,on:a}}(t,n)||function(t,n){const{tagName:o}=t,s=t.getAttribute("t-tag");if(t.removeAttribute("t-tag"),"t"===o&&!s)return null;if(o.startsWith("block-"))throw new e(`Invalid tag name: '${o}'`);n=Object.assign({},n),"pre"===o&&(n.inPreTag=!0);let i=!n.nameSpace&&un.has(o)?"http://www.w3.org/2000/svg":null;const r=t.getAttribute("t-ref");t.removeAttribute("t-ref");const l=t.getAttributeNames();let a=null,c=null,u=null,h=null;for(let s of l){const r=t.getAttribute(s);if("t-on"===s||"t-on-"===s)throw new e("Missing event name with t-on directive");if(s.startsWith("t-on-"))u=u||{},u[s.slice(5)]=r;else if(s.startsWith("t-model")){if(!["input","select","textarea"].includes(o))throw new e("The t-model directive only works with <input>, <textarea> and <select>");const i=t.getAttribute("type"),l="input"===o,a="select"===o,c=l&&"checkbox"===i,u=l&&"radio"===i,d=s.includes(".trim"),f=d||s.includes(".lazy");h={expr:r,targetAttr:c?"checked":"value",specialInitTargetAttr:u?"checked":null,eventType:u?"click":a||f?"change":"input",hasDynamicChildren:!1,shouldTrim:d,shouldNumberize:s.includes(".number"),isProxy:s.includes(".proxy")},a&&((n=Object.assign({},n)).tModelInfo=h)}else{if(s.startsWith("block-"))throw new e(`Invalid attribute: '${s}'`);if("xmlns"===s)i=r;else if(s.startsWith("t-translation-context-")){c=c||{},c[s.slice(22)]=r}else if("t-name"!==s){if(s.startsWith("t-")&&!s.startsWith("t-att"))throw new e(`Unknown QWeb directive: '${s}'`);const t=n.tModelInfo;t&&["t-att-value","t-attf-value"].includes(s)&&(t.hasDynamicChildren=!0),a=a||{},a[s]=r}}}i&&(n.nameSpace=i);const d=pn(t,n);return{type:2,tag:o,dynamicTag:s,attrs:a,attrsTranslationCtx:c,on:u,ref:r,content:d,model:h,ns:i}}(t,n)||function(t,e){if(!t.hasAttribute("t-set"))return null;const n=t.getAttribute("t-set"),o=t.getAttribute("t-value")||null,s=t.innerHTML===t.textContent&&t.textContent||null;let i=null;t.textContent!==t.innerHTML&&(i=pn(t,e));return{type:5,name:n,value:o,defaultValue:s,body:i,hasNoRepresentation:!0}}(t,n)||function(t,e){if("t"!==t.tagName)return null;return gn(t,e)}(t,n):function(t,e){if(t.nodeType===Node.TEXT_NODE){let n=t.textContent||"";return e.inPreTag||!cn.test(n)||n.trim()?{type:0,value:n}:null}if(t.nodeType===Node.COMMENT_NODE)return{type:1,value:t.textContent||""};return null}(t,n)}const cn=/[\r\n]/;const un=new Set(["svg","g","path"]);const hn=new Map([["t-ref","t-ref is no longer supported on components. Consider exposing only the public part of the component's API through a callback prop."],["t-att","t-att makes no sense on component: props are already treated as expressions"],["t-attf","t-attf is not supported on components: use template strings for string interpolation in props"]]);function dn(t){const e={type:15,content:t};return t?.hasNoRepresentation&&(e.hasNoRepresentation=!0),e}function fn(t,e){const n={type:16,content:t,translationCtx:e};return t?.hasNoRepresentation&&(n.hasNoRepresentation=!0),n}function pn(t,e){const n=[];for(let o of t.childNodes){const t=an(o,e);t&&(3===t.type?n.push(...t.content):n.push(t))}return n}function mn(t){const e={type:3,content:t};return t.every(t=>t.hasNoRepresentation)&&(e.hasNoRepresentation=!0),e}function gn(t,e){const n=pn(t,e);switch(n.length){case 0:return null;case 1:return n[0];default:return mn(n)}}function bn(t,o={hasGlobalValues:!1}){const s=function(t,e){const o={inPreTag:!1,customDirectives:e};if("string"==typeof t)return ln(n(`<t>${t}</t>`).firstChild,o);let s=rn.get(t);return s||(s=ln(t.cloneNode(!0),o),rn.set(t,s)),s}(t,o.customDirectives),i=new sn(s,o).generateCode();try{return new Function("app, bdom, helpers",i)}catch(t){const{name:n}=o,s=new e(`Failed to compile ${n?`template "${n}"`:"anonymous template"}: ${t.message}\n\ngenerated code:\nfunction(app, bdom, helpers) {\n${i}\n}`);throw s.cause=t,s}}function yn(t){const e=It(()=>(Wt(void 0),vn(e),Wt(e),t()),!1);return Vt()?.observers.add(e),Ft(e),function(){const t=Vt();Wt(void 0),vn(e),Wt(t)}}function vn(t){Kt(t),function(t){const e=t.value;e&&"function"==typeof e&&(e(),t.value=void 0)}(t);for(const e of t.observers)e.state=Ot.EXECUTED,Kt(e),vn(e);t.observers.clear()}class wn{static _shadowId;static get id(){return this._shadowId??this.name}static set id(t){this._shadowId=t}__owl__;constructor(t){this.__owl__=t}setup(){}}class $n{app;config;onDestroyCb=[];computations=[];plugins;status=0;constructor(t,e={}){if(this.app=t,this.config=e.config??{},e.parent){const t=e.parent;t.onDestroyCb.push(()=>this.destroy()),this.plugins=Object.create(t.plugins)}else this.plugins={}}destroy(){const t=this.onDestroyCb;for(;t.length;)t.pop()();for(const t of this.computations)Ut(t);this.status=3}getPluginById(t){return this.plugins[t]||null}getPlugin(t){return this.getPluginById(t.id)}startPlugin(t){if(!t.id)throw new e(`Plugin "${t.name}" has no id`);if(this.plugins.hasOwnProperty(t.id)){const n=this.getPluginById(t.id).constructor;if(n!==t)throw new e(`Trying to start a plugin with the same id as an other plugin (id: '${t.id}', existing plugin: '${n.name}', starting plugin: '${t.name}')`);return null}const n=new t(this);return this.plugins[t.id]=n,n.setup(),n}startPlugins(t){Ct.push({type:"plugin",app:this.app,manager:this,get status(){return this.manager.status}});try{for(const e of t)this.startPlugin(e)}finally{Ct.pop()}this.status=1}}function xn(t,e){Array.isArray(e)?t.startPlugins(e):t.onDestroyCb.push(yn(()=>{const n=e.items();Ht(()=>t.startPlugins(n))}))}let Nn;"undefined"!=typeof window&&(Nn=window.requestAnimationFrame.bind(window));class kn{static requestAnimationFrame=Nn;tasks=new Set;requestAnimationFrame;frame=0;delayedRenders=[];cancelledNodes=new Set;processing=!1;constructor(){this.requestAnimationFrame=kn.requestAnimationFrame,this.processTasks=this.processTasks.bind(this)}addFiber(t){this.tasks.add(t.root)}scheduleDestroy(t){this.cancelledNodes.add(t),0===this.frame&&(this.frame=this.requestAnimationFrame(this.processTasks))}flush(){if(this.delayedRenders.length){let t=this.delayedRenders;this.delayedRenders=[];for(let e of t)e.root&&3!==e.node.status&&e.node.fiber===e&&e.render()}0===this.frame&&(this.frame=this.requestAnimationFrame(this.processTasks))}processTasks(){if(!this.processing){this.processing=!0,this.frame=0;for(let t of this.cancelledNodes)t._destroy();this.cancelledNodes.clear();for(let t of this.tasks){if(t.root!==t){this.tasks.delete(t);continue}const e=Gt.has(t);e&&0!==t.counter?this.tasks.delete(t):3!==t.node.status?0===t.counter&&(e||t.complete(),t.appliedToDom&&this.tasks.delete(t)):this.tasks.delete(t)}for(let t of this.tasks)3===t.node.status&&this.tasks.delete(t);this.processing=!1}}}let En=!1;const Tn=new Set;"undefined"!=typeof window&&(window.__OWL_DEVTOOLS__||={apps:Tn,Fiber:Qt,RootFiber:te,toRaw:ue,proxy:be});class An extends De{static validateTarget=_;static apps=Tn;static version="3.0.0-alpha.26";name;scheduler=new kn;roots=new Set;pluginManager;constructor(t={}){super(t),this.name=t.name||"",Tn.add(this),this.pluginManager=new $n(this,{config:t.config}),t.plugins&&xn(this.pluginManager,t.plugins),t.test&&(this.dev=!0),!this.dev||t.test||En||(console.info("Owl is running in 'dev' mode."),En=!0)}createRoot(t,e={}){const n=e.props||{};let o,s;const i=new Promise((t,e)=>{o=t,s=e}),r=function(){const t=Ct.slice();return()=>{Ct=t}}();let l,a=null;try{l=new ne(t,n,this,null,null)}catch(t){a=t,s(t)}finally{r()}const c={node:l,promise:i,mount:(t,e)=>{if(a)return i;An.validateTarget(t);let n=qt.get(l);n||(n=[],qt.set(l,n)),n.unshift((t,e)=>{const n=e();s(n)}),l.mounted.push(()=>{o(l.component),n.shift()});const r=new ee(l,t,e);if(this.scheduler.addFiber(r),l.willStart.length)l.initiateRender(r);else{l.fiber=r,l.mounted.length&&r.root.mounted.push(r);try{r.render()}catch(t){s(t)}}return i},destroy:()=>{this.roots.delete(c),l.destroy(),this.scheduler.processTasks()}};return this.roots.add(c),c}destroy(){for(let t of this.roots)t.destroy();this.pluginManager.destroy(),this.scheduler.processTasks(),Tn.delete(this)}_handleError(t){throw t}}function Cn(t,e,n){if(t.app.dev){const o=t.component,s=`${o?o.constructor.name:"Component"}.${n}`;return{[s]:(...t)=>e.call(o,...t)}[s]}return e.bind(t.component)}function _n(t){const e=_t();"component"===e.type?e.node.willDestroy.unshift(Cn(e.node,t,"onWillDestroy")):e.manager.onDestroyCb.push(t)}function Dn(t,e={}){const n=It(()=>{const e=t();return Object.is(n.value,e)||Mt(n),e},!0);function o(){return n.state!==Ot.EXECUTED&&Ft(n),Pt(n),n.value}o[Rt]=n,o.set=e.set??(()=>{});const s=Ct.at(-1);return s&&("component"===s.type?s.node.computations.push(n):"plugin"===s.type&&s.manager.computations.push(n)),o}function Sn(t,e){const n={type:"signal",value:t,observers:new Set};let o=e(n);const s=()=>(Pt(n),o);return s[Rt]=n,s.set=function(t){Object.is(n.value,t)||(n.value=t,o=e(n),Mt(n))},s}function On(t){return Sn(t,t=>t.value)}function Rn(t,n,o="Value does not match the type"){const s=Bn(t,n);if(s.length){const t=JSON.stringify(s,(t,e)=>"function"==typeof e?e.name:e,2);throw new e(`${o}\n${t}`)}}function Ln(t,e,n,o){return{issueDepth:0,path:n,value:e,get isValid(){return!t.length},addIssue(e){t.push({received:this.value,path:this.path,...e})},mergeIssues(e){t.push(...e)},validate(t){t(this),!this.isValid&&o&&(o.issueDepth=this.issueDepth+1)},withIssues(t){return Ln(t,this.value,this.path,this)},withKey(e){return Ln(t,this.value[e],this.path.concat(e),this)}}}function Bn(t,e){const n=[];return e(Ln(n,t,[])),n}On.invalidate=function(t){if("function"!=typeof t||"signal"!==t[Rt]?.type)throw new e(`Value is not a signal (${t})`);Mt(t[Rt])},On.Array=function(t){return Sn(t,t=>ge(t.value,t))},On.Map=function(t){return Sn(t,t=>ge(t.value,t))},On.Object=function(t){return Sn(t,t=>ge(t.value,t))},On.Set=function(t){return Sn(t,t=>ge(t.value,t))};function In(t){return function(e){"function"==typeof e.value&&(e.value===t||e.value.prototype instanceof t)||e.addIssue({message:`value is not '${t.name}' or an extension`})}}function Pn(t){return function(e){e.value instanceof t||e.addIssue({message:`value is not an instance of '${t.name}'`})}}function Mn(t){return function(e){e.value!==t&&e.addIssue({message:`value is not equal to ${"string"==typeof t?`'${t}'`:t}`})}}function jn(t,e,n){if("object"!=typeof t.value||Array.isArray(t.value)||null===t.value)return void t.addIssue({message:"value is not an object"});if(!e)return;const o=!Array.isArray(e);let s=e;if(Array.isArray(e)){s={};for(const t of e)s[t]=null}const i=[];for(const e in s){const n=e.endsWith("?")?e.slice(0,-1):e;void 0!==t.value[n]?o&&t.withKey(n).validate(s[e]):e.endsWith("?")||i.push(n)}if(i.length&&t.addIssue({message:"object value has missing keys",missingKeys:i}),n){const e=[];for(const n in t.value)n in s||`${n}?`in s||e.push(n);e.length&&t.addIssue({message:"object value has unknown keys",unknownKeys:e})}}function Vn(t){return function(e){let n=0;const o=[];for(const s of t){const t=e.withIssues(o);if(t.validate(s),o.length===n||t.issueDepth>0)return void e.mergeIssues(o.slice(n));n=o.length}e.addIssue({message:"value does not match union type",subIssues:o})}}const Wn={and:function(t){return function(e){for(const n of t)e.validate(n)}},any:function(){return function(){}},array:function(t){return function(e){if(Array.isArray(e.value)){if(t)for(let n=0;n<e.value.length;n++)e.withKey(n).validate(t)}else e.addIssue({message:"value is not an array"})}},boolean:function(){return function(t){"boolean"!=typeof t.value&&t.addIssue({message:"value is not a boolean"})}},component:function(){return In(St)},constructor:In,customValidator:function(t,e,n="value does not match custom validation"){return function(o){o.validate(t),o.isValid&&(e(o.value)||o.addIssue({message:n}))}},function:function(t=[],e=void 0){return function(t){"function"!=typeof t.value&&t.addIssue({message:"value is not a function"})}},instanceOf:Pn,literal:Mn,number:function(){return function(t){"number"!=typeof t.value&&t.addIssue({message:"value is not a number"})}},object:function(t={}){return function(e){jn(e,t,!1)}},or:Vn,promise:function(t){return function(t){t.value instanceof Promise||t.addIssue({message:"value is not a promise"})}},record:function(t){return function(e){if("object"!=typeof e.value||Array.isArray(e.value)||null===e.value)e.addIssue({message:"value is not an object"});else if(t)for(const n in e.value)e.withKey(n).validate(t)}},ref:function(t){return Vn([Mn(null),Pn(t)])},selection:function(t){return Vn(t.map(Mn))},signal:function(t){return function(t){"function"==typeof t.value&&t.value[Rt]||t.addIssue({message:"value is not a reactive value"})}},strictObject:function(t){return function(e){jn(e,t,!0)}},string:function(){return function(t){"string"!=typeof t.value&&t.addIssue({message:"value is not a string"})}},tuple:function(t){return function(e){if(Array.isArray(e.value))if(e.value.length===t.length)for(let n=0;n<t.length;n++)e.withKey(n).validate(t[n]);else e.addIssue({message:"tuple value does not have the correct length"});else e.addIssue({message:"value is not an array"})}}};function Fn(t){_n(yn(t))}s.shouldNormalizeDom=!1,s.mainEventHandler=(t,n,s)=>{const{data:i,modifiers:r}=o(t);t=i;let l=!1;if(r.length){let t=!1;const e=n.target===s;for(const o of r)switch(o){case"self":if(t=!0,e)continue;return l;case"prevent":(t&&e||!t)&&n.preventDefault();continue;case"stop":(t&&e||!t)&&n.stopPropagation(),l=!0;continue}}if(Object.hasOwnProperty.call(t,0)){const o=t[0];if("function"!=typeof o)throw new e(`Invalid handler (expected a function, received: '${o}')`);let s=t[1]?t[1].__owl__:null;s&&1!==s.status||o(t[1],n)}return l};const Kn={config:s,mount:At,patch:function(t,e,n=!1){t.patch(e,n)},remove:function(t,e=!1){e&&t.beforeRemove(),t.remove()},list:Nt,multi:U,text:Y,toggler:l,createBlock:ct,html:Tt,comment:J},Un={version:An.version};De.prototype._compileTemplate=function(t,e){return bn(e,{name:t,dev:this.dev,translateFn:this.translateFn,translatableAttributes:this.translatableAttributes,customDirectives:this.customDirectives,hasGlobalValues:this.hasGlobalValues})},t.App=An,t.Component=St,t.EventBus=D,t.OwlError=e,t.Plugin=wn,t.Registry=class{_map=On.Object(Object.create(null));_name;_validation;constructor(t={}){this._name=t.name||"registry",this._validation=t.validation}entries=Dn(()=>Object.entries(this._map()).sort((t,e)=>t[1][0]-e[1][0]).map(([t,e])=>[t,e[1]]));items=Dn(()=>this.entries().map(t=>t[1]));addById(t,n={}){if(!t.id)throw new e(`Item should have an id key (registry '${this._name}')`);return this.add(t.id,t,{sequence:n.sequence??50})}add(t,e,n={}){if(this._validation){const n=this._name?` (registry '${this._name}', key: '${t}')`:` (key: '${t}')`;Rn(e,this._validation,`Registry entry does not match the type${n}`)}return this._map()[t]=[n.sequence??50,e],this}get(t,e){const n=t in this._map();if(!n&&arguments.length<2)throw new Error(`KeyNotFoundError: Cannot find key "${t}" (registry '${this._name}')`);return n?this._map()[t][1]:e}delete(t){delete this._map()[t]}has(t){return t in this._map()}},t.Resource=class{_items=On.Array([]);_name;_validation;constructor(t={}){this._name=t.name,this._validation=t.validation}items=Dn(()=>this._items().sort((t,e)=>t[0]-e[0]).map(t=>t[1]));add(t,e={}){if(this._validation){const e=this._name?` (resource '${this._name}')`:"";Rn(t,this._validation,`Resource item does not match the type${e}`)}return this._items().push([e.sequence??50,t]),this}delete(t){const e=this._items().filter(([e,n])=>n!==t);return this._items.set(e),this}has(t){return this._items().some(([e,n])=>n===t)}},t.__info__=Un,t.assertType=Rn,t.batched=C,t.blockDom=Kn,t.computed=Dn,t.config=function(t,e){const{app:n,manager:o}=_t("plugin");return n.dev&&e&&Rn(o.config,Wn.object({[t]:e}),"Config does not match the type"),o.config[t.endsWith("?")?t.slice(0,-1):t]},t.effect=yn,t.htmlEscape=O,t.markRaw=ce,t.markup=R,t.mount=async function(t,e,n={}){return new An(n).createRoot(t,n).mount(e,n)},t.onError=function(t){const{node:e}=_t("component");let n=qt.get(e);n||(n=[],qt.set(e,n)),n.push(t.bind(e.component))},t.onMounted=function(t){const{node:e}=_t("component");e.mounted.push(Cn(e,t,"onMounted"))},t.onPatched=function(t){const{node:e}=_t("component");e.patched.push(Cn(e,t,"onPatched"))},t.onWillDestroy=_n,t.onWillPatch=function(t){const{node:e}=_t("component");e.willPatch.unshift(Cn(e,t,"onWillPatch"))},t.onWillStart=function(t){const{node:e}=_t("component");e.willStart.push(Cn(e,t,"onWillStart"))},t.onWillUnmount=function(t){const{node:e}=_t("component");e.willUnmount.unshift(Cn(e,t,"onWillUnmount"))},t.onWillUpdateProps=function(t){const{node:e}=_t("component");e.willUpdateProps.push(Cn(e,t,"onWillUpdateProps"))},t.plugin=function(t){const n=_t(),o="component"===n.type?n.node.pluginManager:n.manager;let s=o.getPluginById(t.id);if(!s){if("plugin"!==n.type)throw new e(`Unknown plugin "${t.id}"`);s=o.startPlugin(t)}return s},t.props=function(t,e){const{node:n,app:o,componentName:s}=_t("component");function i(t){return void 0===n.props[t]&&e?e[t]:n.props[t]}Object.assign(n.defaultProps,e);const r=Object.create(null);function l(t){for(const e of t)Reflect.defineProperty(r,e,{enumerable:!0,get:i.bind(null,e)})}if(t){if(l((Array.isArray(t)?t:Object.keys(t)).map(t=>t.endsWith("?")?t.slice(0,-1):t)),o.dev){const o=e?function(t,e){const n=(Array.isArray(t)?t:Object.keys(t)).filter(t=>!t.endsWith("?")&&t in e);return e=>{n.length&&e.addIssue({message:"props have default values on mandatory keys",keys:n}),e.validate(Wn.object(t))}}(t,e):Wn.object(t);Rn(n.props,o,`Invalid component props (${s})`),n.willUpdateProps.push(t=>{Rn(t,o,`Invalid component props (${s})`)})}}else{const t=t=>{const n=[];for(const e in t)1!==e.charCodeAt(0)&&n.push(e);if(e)for(const o in e)o in t||n.push(o);return n};let o=t(n.props);l(o),n.willUpdateProps.push(e=>{for(const t of o)Reflect.deleteProperty(r,t);o=t(e),l(o)})}return r},t.providePlugins=function(t,e){const{node:n}=_t("component"),o=new $n(n.app,{parent:n.pluginManager,config:e});n.pluginManager=o,_n(()=>o.destroy()),xn(o,t)},t.proxy=be,t.signal=On,t.status=function(t){switch(t.__owl__.status){case 0:return"new";case 2:return"cancelled";case 1:return t instanceof wn?"started":"mounted";case 3:return"destroyed"}},t.toRaw=ue,t.types=Wn,t.untrack=Ht,t.useApp=function(){return _t().app},t.useContext=function(){const t=Ct.at(-1);return{run(e){if(t){let n;Ct.push(t);try{n=e()}finally{Ct.pop()}return n}return e()},protectAsync:e=>(t&&(e=Dt(t,e)),e),runWithAsyncProtection:e=>(t&&(e=Dt(t,e)),e())}},t.useEffect=Fn,t.useListener=function(t,e,n,o){"function"==typeof t?Fn(()=>{const s=t();if(s)return s.addEventListener(e,n,o),()=>s.removeEventListener(e,n,o)}):(t.addEventListener(e,n,o),_n(()=>t.removeEventListener(e,n,o)))},t.useResource=function(t,e){for(let n of e)t.add(n);_n(()=>{for(let n of e)t.delete(n)})},t.validateType=Bn,t.whenReady=function(t){return new Promise(function(t){"loading"!==document.readyState?t(!0):document.addEventListener("DOMContentLoaded",t,!1)}).then(t||function(){})},t.xml=Oe,Un.date="2026-04-13T09:25:02.574Z",Un.hash="fddcc27",Un.url="https://github.com/odoo/owl"}(this.owl=this.owl||{});
1
+ "use strict";var owl=(()=>{var ht=Object.defineProperty;var Er=Object.getOwnPropertyDescriptor;var $r=Object.getOwnPropertyNames;var Sr=Object.prototype.hasOwnProperty;var kr=(e,t)=>{for(var n in t)ht(e,n,{get:t[n],enumerable:!0})},Ar=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of $r(t))!Sr.call(e,i)&&i!==n&&ht(e,i,{get:()=>t[i],enumerable:!(r=Er(t,i))||r.enumerable});return e};var Cr=e=>Ar(ht({},"__esModule",{value:!0}),e);var Oo={};kr(Oo,{App:()=>zt,Component:()=>Z,ErrorBoundary:()=>ms,EventBus:()=>vi,OwlError:()=>S,Plugin:()=>An,Portal:()=>ys,Registry:()=>li,Resource:()=>ai,Scope:()=>It,Suspense:()=>Ns,TemplateSet:()=>Me,__info__:()=>Cs,assertType:()=>ie,asyncComputed:()=>Wr,batched:()=>gn,blockDom:()=>As,computed:()=>De,config:()=>Ss,effect:()=>et,getScope:()=>Oe,globalTemplates:()=>Ze,htmlEscape:()=>In,markRaw:()=>Tn,markup:()=>Fe,mount:()=>ls,onError:()=>rr,onMounted:()=>nr,onPatched:()=>hs,onWillDestroy:()=>ve,onWillPatch:()=>us,onWillStart:()=>tr,onWillUnmount:()=>fs,onWillUpdateProps:()=>cs,plugin:()=>$s,prop:()=>Es,props:()=>rt,providePlugins:()=>ks,proxy:()=>Pt,signal:()=>I,status:()=>Vi,toRaw:()=>pe,types:()=>j,untrack:()=>yn,useApp:()=>vs,useEffect:()=>it,useListener:()=>bs,useScope:()=>z,validateType:()=>En,whenReady:()=>gi,xml:()=>J});var Dr="3.0.0-alpha.29",S=class extends Error{cause},A={NEW:0,MOUNTED:1,CANCELLED:2,DESTROYED:3};function gn(e){let t=!1;return function(...r){t||(t=!0,queueMicrotask(()=>{t=!1,e(...r)}))}}var xt=(e=>(e[e.EXECUTED=0]="EXECUTED",e[e.STALE=1]="STALE",e[e.PENDING=2]="PENDING",e))(xt||{}),Ce=Symbol("Atom"),Se=[],V;function Ot(e,t,n=1){return{state:n,value:void 0,compute:e,sources:new Set,observers:new Set,isDerived:t}}function Rt(e){V&&(V.sources.add(e),e.observers.add(V))}function Je(e){for(let t of e.observers)t.state===0&&(t.isDerived?Or(t):Se.push(t)),t.state=1;_r()}var _r=gn(xr);function xr(){for(let e=0;e<Se.length;e++)Qe(Se[e]);Se.length=0}function he(){return V}function B(e){V=e}function Qe(e){let t=e.state;if(t===0)return;if(t===2){for(let r of e.sources)"compute"in r&&Qe(r);if(e.state!==1){e.state=0;return}}He(e);let n=V;V=e,e.value=e.compute(),e.state=0,V=n}function He(e){let t=e.sources;for(let n of t)n.observers.delete(e);t.clear()}function Mt(e){for(let t of e.sources)t.observers.delete(e),"compute"in t&&t.isDerived&&t.observers.size===0&&Mt(t);e.sources.clear(),e.state=1}function Or(e){let t=[e],n;for(;n=t.pop();)for(let r of n.observers)r.state||(r.state=2,r.isDerived?t.push(r):Se.push(r))}function yn(e){let t=V;V=void 0;let n;try{n=e()}finally{V=t}return n}var Y=[];function z(){let e=Oe();if(!e)throw new S("No active scope");return e}var It=class{app;status=A.NEW;computations=[];willStart=[];_controller=null;_destroyCbs=null;constructor(e){this.app=e}run(e){Y.push(this);try{return e()}finally{Y.pop()}}get abortSignal(){return this.status>A.MOUNTED?(this._controller||(this._controller=new AbortController,this._controller.abort()),this._controller.signal):(this._controller??=new AbortController).signal}async until(e){if(this.status>A.MOUNTED)throw rn();let t=await e;if(this.status>A.MOUNTED)throw rn();return t}onDestroy(e){if(this.status>=A.DESTROYED){e();return}(this._destroyCbs??=[]).push(e)}cancel(){this.status>A.MOUNTED||(this.status=A.CANCELLED,this._controller?.abort())}finalize(e){if(this.status>=A.DESTROYED)return;this._controller&&!this._controller.signal.aborted&&this._controller.abort();let t=this._destroyCbs;if(t){this._destroyCbs=null;for(let n=t.length-1;n>=0;n--)try{t[n]()}catch(r){e(r)}}for(let n of this.computations)Mt(n);this.status=A.DESTROYED}decorate(e,t){return e.bind(void 0,this)}};function Oe(){let e=Y.length;return e?Y[e-1]:null}function bt(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function rn(){let e=new Error("The operation was aborted");return e.name="AbortError",e}var W=Symbol("Key changes"),Rr=Object.prototype.toString,vt=Object.prototype.hasOwnProperty;function Lt(e){if(typeof e!="object"||e===null)return!1;let t=pe(e);return Array.isArray(t)||t instanceof Set||t instanceof Map||t instanceof WeakMap?!0:Rr.call(t)==="[object Object]"}function ce(e,t){return!t&&Lt(e)?Pt(e):e}var wn=new WeakSet;function Tn(e){return wn.add(e),e}function pe(e){return Ge.has(e)?Ge.get(e):e}var gt=new WeakMap;function Mr(e,t){let n=gt.get(e);n||(n=new Map,gt.set(e,n));let r=n.get(t);return r||(r={value:void 0,observers:new Set},n.set(t,r)),r}function K(e,t,n){Rt(n??Mr(e,t))}function q(e,t,n){if(!n){let r=gt.get(e);if(!r||!r.has(t))return;n=r.get(t)}Je(n)}var Ge=new WeakMap,sn=new WeakMap;function me(e,t){if(!Lt(e))throw new S("Cannot make the given value reactive");if(wn.has(e)||Ge.has(e))return e;let n=sn.get(e);if(n)return n;let r;e instanceof Map?r=ft(e,"Map",t):e instanceof Set?r=ft(e,"Set",t):e instanceof WeakMap?r=ft(e,"WeakMap",t):r=Nn(t);let i=new Proxy(e,r);return sn.set(e,i),Ge.set(i,e),i}function Pt(e){return me(e,null)}function Nn(e){return{get(t,n,r){K(t,n,e);let i=Reflect.get(t,n,r);if(e||typeof i!="object"||i===null||!Lt(i))return i;let s=Object.getOwnPropertyDescriptor(t,n);return s&&!s.writable&&!s.configurable?i:me(i,null)},set(t,n,r,i){let s=vt.call(t,n),o=Reflect.get(t,n,i),l=Reflect.set(t,n,pe(r),i);return!s&&vt.call(t,n)&&q(t,W,e),(o!==Reflect.get(t,n,i)||n==="length"&&Array.isArray(t))&&q(t,n,e),l},deleteProperty(t,n){let r=Reflect.deleteProperty(t,n);return q(t,W,e),q(t,n,e),r},ownKeys(t){return K(t,W,e),Reflect.ownKeys(t)},has(t,n){return K(t,W,e),Reflect.has(t,n)}}}function Ee(e,t,n){return r=>(r=pe(r),K(t,r,n),ce(t[e](r),n))}function G(e,t,n){return function*(){K(t,W,n);let r=t.keys();for(let i of t[e]()){let s=r.next().value;K(t,s,n),yield ce(i,n)}}}function on(e,t){return function(r,i){K(e,W,t),e.forEach(function(s,o,l){K(e,o,t),r.call(i,ce(s,t),ce(o,t),ce(l,t))},i)}}function le(e,t,n,r){return(i,s)=>{i=pe(i);let o=n.has(i),l=n[t](i),a=n[e](i,s),u=n.has(i);return o!==u&&q(n,W,r),l!==n[t](i)&&q(n,i,r),a}}function ln(e,t){return()=>{let n=[...e.keys()];e.clear(),q(e,W,t);for(let r of n)q(e,r,t)}}var Ir={Set:(e,t)=>({has:Ee("has",e,t),add:le("add","has",e,t),delete:le("delete","has",e,t),keys:G("keys",e,t),values:G("values",e,t),entries:G("entries",e,t),[Symbol.iterator]:G(Symbol.iterator,e,t),forEach:on(e,t),clear:ln(e,t),get size(){return K(e,W,t),e.size}}),Map:(e,t)=>({has:Ee("has",e,t),get:Ee("get",e,t),set:le("set","get",e,t),delete:le("delete","has",e,t),keys:G("keys",e,t),values:G("values",e,t),entries:G("entries",e,t),[Symbol.iterator]:G(Symbol.iterator,e,t),forEach:on(e,t),clear:ln(e,t),get size(){return K(e,W,t),e.size}}),WeakMap:(e,t)=>({has:Ee("has",e,t),get:Ee("get",e,t),set:le("set","get",e,t),delete:le("delete","has",e,t)})};function ft(e,t,n){let r=Ir[t](e,n);return Object.assign(Nn(n),{get(i,s){return vt.call(r,s)?r[s]:(K(i,s,n),ce(i[s],n))}})}function Re(e,t){let n={type:"signal",value:e,observers:new Set},r=t(n),i=()=>(Rt(n),r);return i[Ce]=n,i.set=function(o){Object.is(n.value,o)||(n.value=o,r=t(n),Je(n))},i}function Lr(e){if(typeof e!="function"||e[Ce]?.type!=="signal")throw new S(`Value is not a signal (${e})`);Je(e[Ce])}function Pr(e){return Re(e,t=>me(t.value,t))}function Br(e){return Re(e,t=>me(t.value,t))}function jr(e){return Re(e,t=>me(t.value,t))}function Vr(e){return Re(e,t=>me(t.value,t))}function I(e){return Re(e,t=>t.value)}I.trigger=Lr;I.Array=Pr;I.Map=jr;I.Object=Br;I.Set=Vr;function Kr(){throw new S("Cannot write to a read-only computed value. Pass a `set` option to make it writable.")}function De(e,t={}){let n=Ot(()=>{let i=e();return Object.is(n.value,i)||Je(n),i},!0);function r(){return n.state!==0&&Qe(n),Rt(n),n.value}return r[Ce]=n,r.set=t.set??Kr,Oe()?.computations.push(n),r}function et(e){let t=Ot(()=>(B(void 0),yt(t),B(t),e()),!1);return he()?.observers.add(t),Qe(t),function(){let r=he();B(void 0),yt(t),B(r)}}function yt(e){He(e),Fr(e);for(let t of e.observers)t.state=0,He(t),yt(t);e.observers.clear()}function Fr(e){let t=e.value;t&&typeof t=="function"&&(t(),e.value=void 0)}function Wr(e,t={}){let n=I(t.initial),r=I(!1),i=I(null),s=I(0),o=Oe(),l=0,a=null,u=et(()=>{s();let f=++l;a&&a.abort();let p=new AbortController;a=p;let m=[p.signal];o?.abortSignal&&m.push(o.abortSignal),r.set(!0),i.set(null);let w;try{w=e({abortSignal:AbortSignal.any(m)})}catch(d){if(f!==l)return;if(bt(d)){r.set(!1);return}i.set(d),r.set(!1);return}w.then(d=>{f===l&&(n.set(d),r.set(!1))},d=>{if(f===l){if(bt(d)){r.set(!1);return}i.set(d),r.set(!1)}})});function c(){u(),a?.abort(),a=null}o?.onDestroy(c);let h=(()=>n());return h.loading=()=>r(),h.error=()=>i(),h.refresh=()=>s.set(s()+1),h.dispose=c,h}function ie(e,t,n="Value does not match the type"){let r=En(e,t);if(r.length){let i=JSON.stringify(r,(s,o)=>typeof o=="function"?o.name:o,2);throw new S(`${n}
2
+ ${i}`)}}function wt(e,t,n,r){return{issueDepth:0,path:n,value:t,get isValid(){return!e.length},addIssue(i){e.push({received:this.value,path:this.path,...i})},mergeIssues(i){e.push(...i)},validate(i){i(this),!this.isValid&&r&&(r.issueDepth=this.issueDepth+1)},withIssues(i){return wt(i,this.value,this.path,this)},withKey(i){return wt(e,this.value[i],this.path.concat(i),this)}}}function En(e,t){let n=[];return t(wt(n,e,[])),n}function Ur(){return function(){}}function zr(){return function(t){typeof t.value!="boolean"&&t.addIssue({message:"value is not a boolean"})}}function Hr(){return function(t){typeof t.value!="number"&&t.addIssue({message:"value is not a number"})}}function Gr(){return function(t){typeof t.value!="string"&&t.addIssue({message:"value is not a string"})}}function qr(e){return function(n){if(!Array.isArray(n.value)){n.addIssue({message:"value is not an array"});return}if(e)for(let r=0;r<n.value.length;r++)n.withKey(r).validate(e)}}function $n(e){return function(n){(typeof n.value!="function"||!(n.value===e||n.value.prototype instanceof e))&&n.addIssue({message:`value is not '${e.name}' or an extension`})}}function Xr(e,t,n="value does not match custom validation"){return function(i){i.validate(e),i.isValid&&(t(i.value)||i.addIssue({message:n}))}}function Yr(e=[],t=void 0){return function(r){typeof r.value!="function"&&r.addIssue({message:"value is not a function"})}}function Sn(e){return function(n){n.value instanceof e||n.addIssue({message:`value is not an instance of '${e.name}'`})}}function Zr(e){return function(n){for(let r of e)n.validate(r)}}function Bt(e){return function(n){n.value!==e&&n.addIssue({message:`value is not equal to ${typeof e=="string"?`'${e}'`:e}`})}}function Jr(e){return jt(e.map(Bt))}function kn(e,t,n){if(typeof e.value!="object"||Array.isArray(e.value)||e.value===null){e.addIssue({message:"value is not an object"});return}if(!t)return;let r=!Array.isArray(t),i=t;if(Array.isArray(t)){i={};for(let o of t)i[o]=null}let s=[];for(let o in i){let l=o.endsWith("?")?o.slice(0,-1):o;if(e.value[l]===void 0){o.endsWith("?")||s.push(l);continue}r&&e.withKey(l).validate(i[o])}if(s.length&&e.addIssue({message:"object value has missing keys",missingKeys:s}),n){let o=[];for(let l in e.value)!(l in i)&&!(`${l}?`in i)&&o.push(l);o.length&&e.addIssue({message:"object value has unknown keys",unknownKeys:o})}}function Qr(e={}){return function(n){kn(n,e,!1)}}function ei(e){return function(n){kn(n,e,!0)}}function ti(e){return function(n){n.value instanceof Promise||n.addIssue({message:"value is not a promise"})}}function ni(e){return function(n){if(typeof n.value!="object"||Array.isArray(n.value)||n.value===null){n.addIssue({message:"value is not an object"});return}if(e)for(let r in n.value)n.withKey(r).validate(e)}}function ri(e){return function(n){if(!Array.isArray(n.value)){n.addIssue({message:"value is not an array"});return}if(n.value.length!==e.length){n.addIssue({message:"tuple value does not have the correct length"});return}for(let r=0;r<e.length;r++)n.withKey(r).validate(e[r])}}function jt(e){return function(n){let r=0,i=[];for(let s of e){let o=n.withIssues(i);if(o.validate(s),i.length===r||o.issueDepth>0){n.mergeIssues(i.slice(r));return}r=i.length}n.addIssue({message:"value does not match union type",subIssues:i})}}function ii(e){return function(n){(typeof n.value!="function"||!n.value[Ce])&&n.addIssue({message:"value is not a reactive value"})}}function si(e){return jt([Bt(null),Sn(e)])}var oi={and:Zr,any:Ur,array:qr,boolean:zr,constructor:$n,customValidator:Xr,function:Yr,instanceOf:Sn,literal:Bt,number:Hr,object:Qr,or:jt,promise:ti,record:ni,ref:si,selection:Jr,signal:ii,strictObject:ei,string:Gr,tuple:ri},li=class{_map=I.Object(Object.create(null));_name;_validation;constructor(e={}){this._name=e.name||"registry",this._validation=e.validation}entries=De(()=>Object.entries(this._map()).sort((t,n)=>t[1][0]-n[1][0]).map(([t,n])=>[t,n[1]]));items=De(()=>this.entries().map(e=>e[1]));addById(e,t={}){if(!e.id)throw new S(`Item should have an id key (registry '${this._name}')`);return this.add(e.id,e,t)}add(e,t,n={}){if(!n.force&&e in this._map())throw new S(`Key "${e}" is already registered (registry '${this._name}'). Use { force: true } to overwrite.`);if(this._validation){let r=this._name?` (registry '${this._name}', key: '${e}')`:` (key: '${e}')`;ie(t,this._validation,`Registry entry does not match the type${r}`)}return this._map()[e]=[n.sequence??50,t],this}get(e,t){let n=e in this._map();if(!n&&arguments.length<2)throw new S(`Cannot find key "${e}" (registry '${this._name}')`);return n?this._map()[e][1]:t}delete(e){delete this._map()[e]}has(e){return e in this._map()}use(e,t,n={}){let r=z();return this.add(e,t,n),r.onDestroy(()=>{this._map()[e]?.[1]===t&&this.delete(e)}),this}useById(e,t={}){if(!e.id)throw new S(`Item should have an id key (registry '${this._name}')`);return this.use(e.id,e,t)}},ai=class{_items=I.Array([]);_name;_validation;constructor(e={}){this._name=e.name,this._validation=e.validation}items=De(()=>this._items().sort((e,t)=>e[0]-t[0]).map(e=>e[1]));add(e,t={}){if(this._validation){let n=this._name?` (resource '${this._name}')`:"";ie(e,this._validation,`Resource item does not match the type${n}`)}return this._items().push([t.sequence??50,e]),this}delete(e){let t=this._items().filter(([n,r])=>r!==e);return this._items.set(t),this}has(e){return this._items().some(([t,n])=>n===e)}use(e,t={}){let n=z();return this.add(e,t),n.onDestroy(()=>this.delete(e)),this}},An=class{static _shadowId;static get id(){return this._shadowId??this.name}static set id(e){this._shadowId=e}__owl__;constructor(e){this.__owl__=e}setup(){}},tt=class extends It{config;plugins;ready=Promise.resolve();constructor(e,t={}){if(super(e),this.config=t.config??{},t.parent){let n=t.parent;n.onDestroy(()=>this.destroy()),this.plugins=Object.create(n.plugins)}else this.plugins={}}destroy(){this.finalize(e=>console.error(e))}getPluginById(e){return this.plugins[e]||null}getPlugin(e){return this.getPluginById(e.id)}startPlugin(e){if(!e.id)throw new S(`Plugin "${e.name}" has no id`);if(this.plugins.hasOwnProperty(e.id)){let n=this.getPluginById(e.id).constructor;if(n!==e)throw new S(`Trying to start a plugin with the same id as an other plugin (id: '${e.id}', existing plugin: '${n.name}', starting plugin: '${e.name}')`);return null}let t=new e(this);return this.plugins[e.id]=t,t.setup(),t}startPlugins(e){Y.push(this);try{for(let n of e)this.startPlugin(n)}finally{Y.pop()}let t=this.willStart.splice(0);t.length?this.ready=Promise.all(t.map(n=>n())).then(()=>{this.status<A.MOUNTED&&(this.status=A.MOUNTED)}):this.status<A.MOUNTED&&(this.status=A.MOUNTED)}};function Cn(e,t){Array.isArray(t)?e.startPlugins(t):e.onDestroy(et(()=>{let n=t.items();yn(()=>e.startPlugins(n))}))}var X=new WeakMap,se=new WeakMap;function Dn(e,t,n,r){for(;e;){r&&e.fiber&&X.set(e.fiber,t);let i=se.get(e);if(i)for(let s=i.length-1;s>=0;s--)try{return i[s](t,n),{handled:!0,error:t}}catch(o){t=o}e=e.parent}return{handled:!1,error:t}}function _n(e){return(t,n)=>{if(e.app.destroyed)throw t;let{handled:r}=Dn(e,t,n,!1);r||e.app._handleError(n())}}function fe(e){let{error:t}=e,n="node"in e?e.node:e.fiber.node,r="fiber"in e?e.fiber:n.fiber,i=n.app;if(i.destroyed)throw t;if(r){let l=r;do l.node.fiber=l,X.set(l,t),l=l.parent;while(l);X.set(r.root,t)}let s=()=>{try{i.destroy()}catch{}return t instanceof S?t:Object.assign(new S("[Owl] Unhandled error. Destroying the root component"),{cause:t})},o=Dn(n,t,s,!0);o.handled||(t=o.error,i._handleError(s()))}function xn(e){e=e.slice();let t=[],n;for(;(n=e[0])&&typeof n=="string";)t.push(e.shift());return{modifiers:t,data:e}}var be={shouldNormalizeDom:!0,mainEventHandler:(e,t,n)=>(typeof e=="function"?e(t):Array.isArray(e)&&(e=xn(e).data,e[0](e[1],t)),!1)},an=document.createTextNode(""),ci=class{key;child;parentEl;constructor(e,t){this.key=e,this.child=t}mount(e,t){this.parentEl=e,this.child.mount(e,t)}moveBeforeDOMNode(e,t){this.child.moveBeforeDOMNode(e,t)}moveBeforeVNode(e,t){this.moveBeforeDOMNode(e&&e.firstNode()||t)}patch(e,t){if(this===e)return;let n=this.child,r=e.child;if(this.key===e.key)n.patch(r,t);else{let i=n.firstNode();i.parentElement.insertBefore(an,i),t&&n.beforeRemove(),n.remove(),r.mount(this.parentEl,an),this.child=r,this.key=e.key}}beforeRemove(){this.child.beforeRemove()}remove(){this.child.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}};function re(e,t){return new ci(e,t)}var Tt,_e,Vt,On;if(typeof Element<"u"){({setAttribute:Tt,removeAttribute:_e}=Element.prototype);let e=DOMTokenList.prototype;Vt=e.add,On=e.remove}var Rn=Array.isArray,{split:cn,trim:ke}=String.prototype,un=/\s+/;function ue(e,t){switch(t){case!1:case null:case void 0:_e.call(this,e);break;case!0:Tt.call(this,e,"");break;default:Tt.call(this,e,t)}}function ui(e){return function(t){ue.call(this,e,t)}}function hi(e){if(Rn(e))e[0]==="class"?$t.call(this,e[1]):e[0]==="style"?St.call(this,e[1]):ue.call(this,e[0],e[1]);else for(let t in e)t==="class"?$t.call(this,e[t]):t==="style"?St.call(this,e[t]):ue.call(this,t,e[t])}function fi(e,t){if(Rn(e)){let n=e[0],r=e[1];if(n===t[0]){if(r===t[1])return;n==="class"?Ve.call(this,r,t[1]):n==="style"?Ke.call(this,r,t[1]):ue.call(this,n,r)}else _e.call(this,t[0]),ue.call(this,n,r)}else{for(let n in t)n in e||(n==="class"?Ve.call(this,"",t[n]):n==="style"?Ke.call(this,"",t[n]):_e.call(this,n));for(let n in e){let r=e[n];r!==t[n]&&(n==="class"?Ve.call(this,r,t[n]):n==="style"?Ke.call(this,r,t[n]):ue.call(this,n,r))}}}function Nt(e){let t={};switch(typeof e){case"string":let n=ke.call(e);if(!n)return{};let r=cn.call(n,un);for(let i=0,s=r.length;i<s;i++)t[r[i]]=!0;return t;case"object":for(let i in e){let s=e[i];if(s){if(i=ke.call(i),!i)continue;let o=cn.call(i,un);for(let l of o)t[l]=s}}return t;case"undefined":return{};case"number":return{[e]:!0};default:return{[e]:!0}}}var dt={};function di(e){if(e in dt)return dt[e];let t=e.replace(/[A-Z]/g,n=>"-"+n.toLowerCase());return dt[e]=t,t}var hn=/\s*!\s*important\s*$/i;function Mn(e,t,n){hn.test(n)?e.setProperty(t,n.replace(hn,""),"important"):e.setProperty(t,n)}function Et(e){let t={};switch(typeof e){case"string":{let n=e,r=n.length,i=0;for(;i<r;){let s=i,o=0,l=0;for(;i<r;){let f=n.charCodeAt(i);if(l){if(f===92){i+=2;continue}f===l&&(l=0)}else if(f===34||f===39)l=f;else if(f===40)o++;else if(f===41)o>0&&o--;else if(f===59&&o===0)break;i++}let a=ke.call(n.slice(s,i));if(i++,!a)continue;let u=a.indexOf(":");if(u===-1)continue;let c=ke.call(a.slice(0,u)),h=ke.call(a.slice(u+1));c&&h&&h!=="undefined"&&(t[c]=h)}return t}case"object":for(let n in e){let r=e[n];(r||r===0)&&(t[di(n)]=String(r))}return t;default:return{}}}function $t(e){e=e===""?{}:Nt(e);for(let t in e)Vt.call(this.classList,t)}function Ve(e,t){t=t===""?{}:Nt(t),e=e===""?{}:Nt(e);for(let n in t)n in e||On.call(this.classList,n);for(let n in e)e[n]!==t[n]&&Vt.call(this.classList,n)}function St(e){e=e===""?{}:Et(e);let t=this.style;for(let n in e)Mn(t,n,e[n])}function Ke(e,t){t=t===""?{}:Et(t),e=e===""?{}:Et(e);let n=this.style;for(let r in t)r in e||n.removeProperty(r);for(let r in e)e[r]!==t[r]&&Mn(n,r,e[r]);n.cssText||_e.call(this,"style")}function pi(e){if(!e)return!1;if(e.ownerDocument.contains(e))return!0;let t=e.getRootNode();return t instanceof ShadowRoot&&e.ownerDocument.contains(t.host)}function mi(e,t){let n=e,r=t.defaultView.ShadowRoot;for(;n;){if(n===t)return!0;if(n.parentNode)n=n.parentNode;else if(n instanceof r&&n.host)n=n.host;else return!1}return!1}function bi(e){let t=e&&e.ownerDocument;if(t){if(!t.defaultView)throw new S("Cannot mount a component: the target document is not attached to a window (defaultView is missing)");let n=t.defaultView.HTMLElement;if(e instanceof n||e instanceof ShadowRoot){if(!mi(e,t))throw new S("Cannot mount a component on a detached dom node");return}}throw new S("Cannot mount component: the target is not a valid DOM element")}var vi=class extends EventTarget{trigger(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t}))}};function gi(e){return new Promise(function(t){document.readyState!=="loading"?t(!0):document.addEventListener("DOMContentLoaded",t,!1)}).then(e||function(){})}var qe=class extends String{};function In(e){return e instanceof qe?e:e===void 0?Fe(""):typeof e=="number"?Fe(String(e)):([["&","&amp;"],["<","&lt;"],[">","&gt;"],["'","&#x27;"],['"',"&quot;"],["`","&#x60;"]].forEach(t=>{e=String(e).replace(new RegExp(t[0],"g"),t[1])}),Fe(e))}function Fe(e,...t){if(!Array.isArray(e))return new qe(e);let n=e,r="",i=0;for(;i<t.length;++i)r+=n[i]+In(t[i]);return r+=n[i],new qe(r)}function Ln(e){let t=e.split(".")[0],n=e.includes(".capture"),r=e.includes(".passive");return e.includes(".synthetic")?Ni(t,n,r):wi(t,n,r)}var yi=1;function wi(e,t=!1,n=!1){let r=`__event__${e}_${yi++}`;t&&(r=`${r}_capture`);function i(u){let c=u.currentTarget;if(!c||!pi(c))return;let h=c[r];h&&be.mainEventHandler(h,u,c)}let s={capture:t,passive:n};function o(u){this[r]=u,this.addEventListener(e,i,s)}function l(){delete this[r],this.removeEventListener(e,i,s)}function a(u){this[r]=u}return{setup:o,update:a,remove:l}}var Ti=1;function Ni(e,t=!1,n=!1){let r=`__event__synthetic_${e}`;t&&(r=`${r}_capture`),$i(e,r,t,n);let i=Ti++;function s(l){let a=this[r]||{};a[i]=l,this[r]=a}function o(){delete this[r]}return{setup:s,update:s,remove:o}}function Ei(e,t){let n=t.target;for(;n!==null;){let r=n[e];if(r){for(let i of Object.values(r))if(be.mainEventHandler(i,t,n))return}n=n.parentNode}}var fn={};function $i(e,t,n=!1,r=!1){fn[t]||(document.addEventListener(e,i=>Ei(t,i),{capture:n,passive:r}),fn[t]=!0)}var Si=(e,t)=>Object.getOwnPropertyDescriptor(e,t),$e,Pn,kt;if(typeof Node<"u"){let e=Node.prototype;$e=e.insertBefore,Pn=Si(e,"textContent").set,kt=e.removeChild}var Bn=class{children;anchors;parentEl;isOnlyChild;constructor(e){this.children=e}mount(e,t){let n=this.children,r=n.length,i=new Array(r);for(let s=0;s<r;s++){let o=n[s];if(o)o.mount(e,t);else{let l=document.createTextNode("");i[s]=l,$e.call(e,l,t)}}this.anchors=i,this.parentEl=e}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;let n=this.children,r=this.anchors;for(let i=0,s=n.length;i<s;i++){let o=n[i];if(o)o.moveBeforeDOMNode(e,t);else{let l=r[i];$e.call(t,l,e)}}}moveBeforeVNode(e,t){if(e){let s=e.children[0];t=(s?s.firstNode():e.anchors[0])||null}let n=this.children,r=this.parentEl,i=this.anchors;for(let s=0,o=n.length;s<o;s++){let l=n[s];if(l)l.moveBeforeVNode(null,t);else{let a=i[s];$e.call(r,a,t)}}}patch(e,t){if(this===e)return;let n=this.children,r=e.children,i=this.anchors,s=this.parentEl;for(let o=0,l=n.length;o<l;o++){let a=n[o],u=r[o];if(a)if(u)a.patch(u,t);else{let c=a.firstNode(),h=document.createTextNode("");i[o]=h,$e.call(s,h,c),t&&a.beforeRemove(),a.remove(),n[o]=void 0}else if(u){n[o]=u;let c=i[o];u.mount(s,c),kt.call(s,c)}}}beforeRemove(){let e=this.children;for(let t=0,n=e.length;t<n;t++){let r=e[t];r&&r.beforeRemove()}}remove(){let e=this.parentEl;if(this.isOnlyChild)Pn.call(e,"");else{let t=this.children,n=this.anchors;for(let r=0,i=t.length;r<i;r++){let s=t[r];s?s.remove():kt.call(e,n[r])}}}firstNode(){let e=this.children[0];return e?e.firstNode():this.anchors[0]}toString(){return this.children.map(e=>e?e.toString():"").join("")}};function Kt(e){return new Bn(e)}var ki=(e,t)=>Object.getOwnPropertyDescriptor(e,t),We,jn,Vn;if(typeof Node<"u"){let e=Node.prototype;We=e.insertBefore,Vn=e.removeChild,jn=ki(CharacterData.prototype,"data").set}var Ai=class{text;parentEl;el;constructor(e){this.text=e}mount(e,t){this.parentEl=e;let n=document.createTextNode(At(this.text));We.call(e,n,t),this.el=n}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t,We.call(t,this.el,e)}moveBeforeVNode(e,t){We.call(this.parentEl,this.el,e?e.el:t)}beforeRemove(){}remove(){Vn.call(this.parentEl,this.el)}firstNode(){return this.el}patch(e){let t=e.text;this.text!==t&&(jn.call(this.el,At(t)),this.text=t)}toString(){return this.text}};function xe(e){return new Ai(e)}function At(e){switch(typeof e){case"string":return e;case"number":return String(e);case"boolean":return e?"true":"false";default:return e||""}}var pt=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Ae,Kn,Fn,Xe,Ft;typeof Node<"u"&&(Ae=Node.prototype,Kn=Element.prototype,Fn=pt(CharacterData.prototype,"data").set,Xe=pt(Ae,"firstChild").get,Ft=pt(Ae,"nextSibling").get);var dn=()=>{};function Ci(e){return function(n){this[e]=n===0?0:n?n.valueOf():""}}var mt={};function Wn(e){if(e in mt)return mt[e];let n=new DOMParser().parseFromString(`<t>${e}</t>`,"text/xml").firstChild.firstChild;be.shouldNormalizeDom&&Un(n);let r=Ct(n),i=Dt(r),s=r.el,o=xi(s,i);return mt[e]=o,o}function Un(e){if(e.nodeType===Node.TEXT_NODE&&!/\S/.test(e.textContent)){e.remove();return}if(!(e.nodeType===Node.ELEMENT_NODE&&e.tagName==="pre"))for(let t=e.childNodes.length-1;t>=0;--t)Un(e.childNodes.item(t))}function Ct(e,t=null,n=null){switch(e.nodeType){case Node.ELEMENT_NODE:{let r=n&&n.currentNS,i=e.tagName,s,o=[];if(i.startsWith("block-text-")){let a=parseInt(i.slice(11),10);o.push({type:"text",idx:a}),s=document.createTextNode("")}if(i.startsWith("block-child-")){n.isRef||pn(n);let a=parseInt(i.slice(12),10);o.push({type:"child",idx:a}),s=document.createTextNode("")}if(r||=e.namespaceURI,s||(s=r?document.createElementNS(r,i):document.createElement(i)),s instanceof Element){n||document.createElement("template").content.appendChild(s);let a=e.attributes;for(let u=0;u<a.length;u++){let c=a[u].name,h=a[u].value;if(c.startsWith("block-handler-")){let f=parseInt(c.slice(14),10);o.push({type:"handler",idx:f,event:h})}else if(c.startsWith("block-attribute-")){let f=parseInt(c.slice(16),10);o.push({type:"attribute",idx:f,name:h,tag:i})}else if(c.startsWith("block-property-")){let f=parseInt(c.slice(15),10);o.push({type:"property",idx:f,name:h,tag:i})}else c==="block-attributes"?o.push({type:"attributes",idx:parseInt(h,10)}):c==="block-ref"?o.push({type:"ref",idx:parseInt(h,10)}):s.setAttribute(a[u].name,h)}}let l={parent:t,firstChild:null,nextSibling:null,el:s,info:o,refN:0,currentNS:r};if(e.firstChild){let a=e.childNodes[0];if(e.childNodes.length===1&&a.nodeType===Node.ELEMENT_NODE&&a.tagName.startsWith("block-child-")){let u=a.tagName,c=parseInt(u.slice(12),10);o.push({idx:c,type:"child",isOnlyChild:!0})}else{l.firstChild=Ct(e.firstChild,l,l),s.appendChild(l.firstChild.el);let u=e.firstChild,c=l.firstChild;for(;u=u.nextSibling;)c.nextSibling=Ct(u,c,l),s.appendChild(c.nextSibling.el),c=c.nextSibling}}return l.info.length&&pn(l),l}case Node.TEXT_NODE:return{parent:t,firstChild:null,nextSibling:null,el:document.createTextNode(e.textContent),info:[],refN:0,currentNS:null}}throw new S("boom")}function pn(e){e.isRef=!0;do e.refN++;while(e=e.parent)}function Di(e){let t=e.parent;for(;t&&t.nextSibling===e;)e=t,t=t.parent;return t}function Dt(e,t,n){if(!t){let r=new Array(e.info.filter(i=>i.type==="child").length);t={collectors:[],locations:[],children:r,cbRefs:[],refN:e.refN},n=0}if(e.refN){let r=n,i=e.isRef,s=e.firstChild?e.firstChild.refN:0,o=e.nextSibling?e.nextSibling.refN:0;if(i){for(let l of e.info)l.refIdx=r;e.refIdx=r,_i(t,e),n++}if(o){let l=n+s;t.collectors.push({idx:l,prevIdx:r,getVal:Ft}),Dt(e.nextSibling,t,l)}s&&(t.collectors.push({idx:n,prevIdx:r,getVal:Xe}),Dt(e.firstChild,t,n))}return t}function _i(e,t){for(let n of t.info)switch(n.type){case"text":e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:mn,updateData:mn});break;case"child":n.isOnlyChild?e.children[n.idx]={parentRefIdx:n.refIdx,isOnlyChild:!0}:e.children[n.idx]={parentRefIdx:Di(t).refIdx,afterRefIdx:n.refIdx};break;case"property":{let r=n.refIdx,i=Ci(n.name);e.locations.push({idx:n.idx,refIdx:r,setData:i,updateData:i});break}case"attribute":{let r=n.refIdx,i,s;n.name==="class"?(s=$t,i=Ve):n.name==="style"?(s=St,i=Ke):(s=ui(n.name),i=s),e.locations.push({idx:n.idx,refIdx:r,setData:s,updateData:i});break}case"attributes":e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:hi,updateData:fi});break;case"handler":{let{setup:r,update:i}=Ln(n.event);e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:r,updateData:i});break}case"ref":{e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:dn,updateData:dn}),e.cbRefs.push(n.idx);break}}}function xi(e,t){let n=Oi(e,t);return t.children.length?(n=class extends n{children;constructor(r,i){super(r),this.children=i}},n.prototype.beforeRemove=Bn.prototype.beforeRemove,(r,i=[])=>new n(r,i)):r=>new n(r)}function Oi(e,t){let{refN:n,collectors:r,children:i,locations:s,cbRefs:o}=t;s.sort((v,N)=>v.idx-N.idx);let l=s.length,a=i.length,u=n>0,c=s.map(v=>v.refIdx),h=s.map(v=>v.setData),f=s.map(v=>v.updateData),p=[Ft,Xe],m=r.length,w=r.map(v=>v.idx&32767|(v.prevIdx&32767)<<15|(v.getVal===Xe?1:0)<<30),d=i.map(v=>v.parentRefIdx&32767|(v.isOnlyChild?1:0)<<15|((v.afterRefIdx??0)&32767)<<16),C=Ae.cloneNode,T=Ae.insertBefore,g=Kn.remove;class ${el;parentEl;data;children;refs;constructor(N){this.data=N}beforeRemove(){}remove(){g.call(this.el)}firstNode(){return this.el}moveBeforeDOMNode(N,b=this.parentEl){this.parentEl=b,T.call(b,this.el,N)}moveBeforeVNode(N,b){T.call(this.parentEl,this.el,N?N.el:b)}toString(){let N=document.createElement("div");return this.mount(N,null),N.innerHTML}mount(N,b){let E=C.call(e,!0);T.call(N,E,b),this.el=E,this.parentEl=N}patch(N,b){}}return u&&($.prototype.mount=function(N,b){let E=C.call(e,!0),D=new Array(n);this.refs=D,D[0]=E;for(let R=0;R<m;R++){let k=w[R];D[k&32767]=p[k>>30&1].call(D[k>>15&32767])}if(l){let R=this.data;for(let k=0;k<l;k++)h[k].call(D[c[k]],R[k])}if(a){let R=this.children;for(let k=0;k<a;k++){let O=R[k];if(O){let L=d[k],Ne=L>>16&32767,je=Ne?D[Ne]:null;O.isOnlyChild=!!(L&32768),O.mount(D[L&32767],je)}}}if(T.call(N,E,b),this.el=E,this.parentEl=N,o.length){let R=this.data,k=this.refs;for(let O of o){let L=R[O];L(k[c[O]],null)}}},$.prototype.patch=function(N,b){if(this===N)return;let E=this.refs;if(l){let D=this.data,R=N.data;for(let k=0;k<l;k++){let O=D[k],L=R[k];O!==L&&f[k].call(E[c[k]],L,O)}this.data=R}if(a){let D=this.children,R=N.children;for(let k=0;k<a;k++){let O=D[k],L=R[k];if(O)L?O.patch(L,b):(b&&O.beforeRemove(),O.remove(),D[k]=void 0);else if(L){let Ne=d[k],je=Ne>>16&32767,Nr=je?E[je]:null;L.mount(E[Ne&32767],Nr),D[k]=L}}}},$.prototype.remove=function(){if(o.length){let N=this.data,b=this.refs;for(let E of o){let D=N[E];D(null,b[c[E]])}}g.call(this.el)}),$}function mn(e){Fn.call(this,At(e))}var Ri=(e,t)=>Object.getOwnPropertyDescriptor(e,t),zn,Hn,Gn,_t;if(typeof Node<"u"){let e=Node.prototype;zn=e.insertBefore,Hn=e.appendChild,Gn=e.removeChild,_t=Ri(e,"textContent").set}var Mi=class{children;anchor;parentEl;isOnlyChild;constructor(e){this.children=e}mount(e,t){let n=this.children,r=document.createTextNode("");this.anchor=r,zn.call(e,r,t);let i=n.length;if(i){let s=n[0].mount;for(let o=0;o<i;o++)s.call(n[o],e,r)}this.parentEl=e}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;let n=this.children;for(let r=0,i=n.length;r<i;r++)n[r].moveBeforeDOMNode(e,t);t.insertBefore(this.anchor,e)}moveBeforeVNode(e,t){if(e){let r=e.children[0];t=(r?r.firstNode():e.anchor)||null}let n=this.children;for(let r=0,i=n.length;r<i;r++)n[r].moveBeforeVNode(null,t);this.parentEl.insertBefore(this.anchor,t)}patch(e,t){if(this===e)return;let n=this.children,r=e.children;if(r.length===0&&n.length===0)return;this.children=r;let i=r[0]||n[0],{mount:s,patch:o,remove:l,beforeRemove:a,moveBeforeVNode:u,firstNode:c}=i,h=this.anchor,f=this.isOnlyChild,p=this.parentEl;if(r.length===0&&f){if(t)for(let b=0,E=n.length;b<E;b++)a.call(n[b]);_t.call(p,""),Hn.call(p,h);return}let m=0,w=0,d=n[0],C=r[0],T=n.length-1,g=r.length-1,$=n[T],v=r[g],N;for(;m<=T&&w<=g;){if(d===null){d=n[++m];continue}if($===null){$=n[--T];continue}let b=d.key,E=C.key;if(b===E){o.call(d,C,t),r[w]=d,d=n[++m],C=r[++w];continue}let D=$.key,R=v.key;if(D===R){o.call($,v,t),r[g]=$,$=n[--T],v=r[--g];continue}if(b===R){o.call(d,v,t),r[g]=d;let O=r[g+1];u.call(d,O,h),d=n[++m],v=r[--g];continue}if(D===E){o.call($,C,t),r[w]=$;let O=n[m];u.call($,O,h),$=n[--T],C=r[++w];continue}N=N||Ii(n,m,T);let k=N[E];if(k===void 0)s.call(C,p,c.call(d)||null);else{let O=n[k];u.call(O,d,null),o.call(O,C,t),r[w]=O,n[k]=null}C=r[++w]}if(m<=T||w<=g)if(m>T){let b=r[g+1],E=b?c.call(b)||null:h;for(let D=w;D<=g;D++)s.call(r[D],p,E)}else for(let b=m;b<=T;b++){let E=n[b];E&&(t&&a.call(E),l.call(E))}}beforeRemove(){let e=this.children,t=e.length;if(t){let n=e[0].beforeRemove;for(let r=0;r<t;r++)n.call(e[r])}}remove(){let{parentEl:e,anchor:t}=this;if(this.isOnlyChild)_t.call(e,"");else{let n=this.children,r=n.length;if(r){let i=n[0].remove;for(let s=0;s<r;s++)i.call(n[s])}Gn.call(e,t)}}firstNode(){let e=this.children[0];return e?e.firstNode():void 0}toString(){return this.children.map(e=>e.toString()).join("")}};function qn(e){return new Mi(e)}function Ii(e,t,n){let r={};for(let i=t;i<=n;i++)r[e[i].key]=i;return r}var ae,Xn;if(typeof Node<"u"){let e=Node.prototype;ae=e.insertBefore,Xn=e.removeChild}var Li=class{html;parentEl;content=[];constructor(e){this.html=e}mount(e,t){this.parentEl=e;let n=document.createElement("template");n.innerHTML=this.html,this.content=[...n.content.childNodes];for(let r of this.content)ae.call(e,r,t);if(!this.content.length){let r=document.createTextNode("");this.content.push(r),ae.call(e,r,t)}}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;for(let n of this.content)ae.call(t,n,e)}moveBeforeVNode(e,t){let n=e?e.content[0]:t;this.moveBeforeDOMNode(n)}patch(e){if(this===e)return;let t=e.html;if(this.html!==t){let n=this.parentEl,r=this.content[0],i=document.createElement("template");i.innerHTML=t;let s=[...i.content.childNodes];for(let o of s)ae.call(n,o,r);if(!s.length){let o=document.createTextNode("");s.push(o),ae.call(n,o,r)}this.remove(),this.content=s,this.html=e.html}}beforeRemove(){}remove(){let e=this.parentEl;for(let t of this.content)Xn.call(e,t)}firstNode(){return this.content[0]}toString(){return this.html}};function Wt(e){return new Li(e)}function Pi(e){let t=Object.keys(e).length;class n{child;handlerData;handlerFns=[];parentEl;afterNode=null;constructor(i,s){this.child=i,this.handlerData=s}mount(i,s){this.parentEl=i,this.child.mount(i,s),this.afterNode=document.createTextNode(""),i.insertBefore(this.afterNode,s),this.wrapHandlerData();for(let o in e){let l=e[o],a=Ln(o);this.handlerFns[l]=a,a.setup.call(i,this.handlerData[l])}}wrapHandlerData(){for(let i=0;i<t;i++){let s=this.handlerData[i],o=s.length-2,l=s[o],a=this;s[o]=function(u,c){let h=c.target,f=a.child.firstNode(),p=a.afterNode;for(;f&&f!==p;){if(f.contains(h))return l(u,c);f=f.nextSibling}}}}moveBeforeDOMNode(i,s=this.parentEl){this.parentEl=s,this.child.moveBeforeDOMNode(i,s),s.insertBefore(this.afterNode,i)}moveBeforeVNode(i,s){i&&(s=i.firstNode()||s),this.child.moveBeforeVNode(i?i.child:null,s),this.parentEl.insertBefore(this.afterNode,s)}patch(i,s){if(this!==i){this.handlerData=i.handlerData,this.wrapHandlerData();for(let o=0;o<t;o++)this.handlerFns[o].update.call(this.parentEl,this.handlerData[o]);this.child.patch(i.child,s)}}beforeRemove(){this.child.beforeRemove()}remove(){for(let i=0;i<t;i++)this.handlerFns[i].remove.call(this.parentEl);this.child.remove(),this.afterNode.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}}return function(r,i){return new n(r,i)}}function Ue(e,t,n=null){e.mount(t,n)}function Bi(e,t,n=!1){e.patch(t,n)}function ji(e,t=!1){t&&e.beforeRemove(),e.remove()}function Vi(e){switch(e.__owl__.status){case A.NEW:return"new";case A.CANCELLED:return"cancelled";case A.MOUNTED:return e instanceof An?"started":"mounted";case A.DESTROYED:return"destroyed"}}function Ki(e,t){let n=e.fiber;return n&&(Ut(n.children),n.root=null),new nt(e,t)}function Fi(e){let t=e.fiber;if(t){let r=t.root;return r.locked=!0,r.setCounter(r.counter+1-Ut(t.children)),r.locked=!1,t.children=[],t.childrenMap={},t.bdom=null,X.has(t)&&(X.delete(t),X.delete(r),t.appliedToDom=!1,t instanceof Ye&&(t.mounted=t instanceof Yn?[t]:[])),t}let n=new Ye(e,null);return e.willPatch.length&&n.willPatch.push(n),e.patched.length&&n.patched.push(n),n}function Wi(){throw new S("Attempted to render cancelled fiber")}function Ut(e){let t=0;for(let n of e){let r=n.node;n.render=Wi,r.status===A.NEW&&r.cancel(),r.fiber=null,n.bdom?r.forceNextRender=!0:t++,t+=Ut(n.children)}return t}var nt=class{node;bdom=null;root;parent;children=[];appliedToDom=!1;deep=!1;childrenMap={};constructor(e,t){if(this.node=e,this.parent=t,t){this.deep=t.deep;let n=t.root;n.setCounter(n.counter+1),this.root=n,t.children.push(this)}else this.root=this}render(){let e=this.root.node.app.scheduler;if(e.tasks.size>1){let r=this.root.node,i=r.parent;for(;i;){if(i.fiber){let s=i.fiber.root;if(s.counter===0&&r.parentKey in i.fiber.childrenMap)i=s.node;else{e.delayedRenders.push(this);return}}r=i,i=i.parent}}let t=this.node,n=this.root;if(n){let r=he();He(t.signalComputation),B(t.signalComputation),t.signalComputation.state=xt.EXECUTED;try{this.bdom=!0,this.bdom=t.renderFn()}catch(s){fe({node:t,error:s})}B(r);let i=n.counter-1;n.counter=i,i===0&&e.flush()}}},Ye=class extends nt{counter=1;willPatch=[];patched=[];mounted=[];locked=!1;complete(){let e=this.node;this.locked=!0;let t,n=this.mounted;try{for(t of this.willPatch){let i=t.node;if(i.fiber===t){let s=i.component;for(let o of i.willPatch)o.call(s)}}for(t=void 0,e._patch(),this.locked=!1;t=n.pop();)if(t=t,t.appliedToDom)for(let i of t.node.mounted)i();let r=this.patched;for(;t=r.pop();)if(t=t,t.appliedToDom)for(let i of t.node.patched)i()}catch(r){for(let i of n)i.node.willUnmount=[];this.locked=!1,fe({fiber:t||this,error:r})}}setCounter(e){this.counter=e,e===0&&this.node.app.scheduler.flush()}},Yn=class extends Ye{target;position;afterNode=null;prepared=!1;onPrepared=null;constructor(e,t,n={}){super(e,null),this.target=t,this.position=n.position||"last-child",this.afterNode=n.afterNode??null}complete(){this.prepared=!0,this.target?this._mount():(this.appliedToDom=!0,this.onPrepared?.())}commit(e,t={}){this.target=e,this.position=t.position||"last-child",this.afterNode=t.afterNode??null,this.prepared&&this._mount()}_mount(){let e=this;try{let t=this.node;if(t.children=this.childrenMap,t.app.constructor.validateTarget(this.target),t.bdom)t.updateDom();else if(t.bdom=this.bdom,this.afterNode)Ue(t.bdom,this.target,this.afterNode);else if(this.position==="last-child"||this.target.childNodes.length===0)Ue(t.bdom,this.target);else{let r=this.target.childNodes[0];Ue(t.bdom,this.target,r)}t.fiber=null,t.status=A.MOUNTED,this.appliedToDom=!0;let n=this.mounted;for(;e=n.pop();)if(e.appliedToDom)for(let r of e.node.mounted)r()}catch(t){fe({fiber:e,error:t})}}},de=class extends It{fiber=null;component;bdom=null;componentName;forceNextRender=!1;parentKey;props;defaultProps=null;renderFn;parent;children=Object.create(null);willUpdateProps=[];willUnmount=[];mounted=[];willPatch=[];patched=[];signalComputation;pluginManager;constructor(e,t,n,r,i){super(n),this.parent=r,this.parentKey=i,this.pluginManager=r?r.pluginManager:n.pluginManager,this.componentName=e.name,this.signalComputation=Ot(()=>this.render(!1),!1,xt.EXECUTED),this.props=t;let s=he();B(void 0),Y.push(this);try{this.component=new e(this);let o={this:this.component,__owl__:this};this.renderFn=n.getTemplate(e.template).bind(this.component,o,this),this.component.setup()}finally{Y.pop(),B(s)}}decorate(e,t){let n=this.component,r=this;if(this.app.dev){let i=`${this.componentName}.${t}`;return{[i](...o){return e.call(n,r,...o)}}[i]}return e.bind(n,r)}async initiateRender(e){this.fiber=e,this.mounted.length&&e.root.mounted.push(e);let t=this.component,n=he();B(void 0);try{let r=this.willStart.map(i=>i.call(t));B(n),await Promise.all(r)}catch(r){if(B(n),bt(r)&&this.status>A.MOUNTED)return;fe({node:this,error:r});return}this.status===A.NEW&&this.fiber===e&&e.render()}async render(e){if(this.status>=A.CANCELLED)return;let t=this.fiber;if(t&&(t.root.locked||t.bdom===!0)&&(await Promise.resolve(),t=this.fiber),t){if(!t.bdom&&!X.has(t)){e&&(t.deep=e);return}e=e||t.deep}else if(!this.bdom)return;let n=Fi(this);n.deep=e,this.fiber=n,this.app.scheduler.addFiber(n),await Promise.resolve(),!(this.status>=A.CANCELLED)&&this.fiber===n&&(t||!n.parent)&&n.render()}cancel(){this._cancel(),delete this.parent.children[this.parentKey],this.app.scheduler.scheduleDestroy(this)}_cancel(){super.cancel();let e=this.children;for(let t in e)e[t]._cancel()}destroy(){let e=this.status===A.MOUNTED;this._destroy(),e&&this.bdom.remove()}_destroy(){let e=this.component;if(this.status===A.MOUNTED)for(let t of this.willUnmount)t.call(e);for(let t in this.children)this.children[t]._destroy();this.finalize(t=>fe({error:t,node:this})),Mt(this.signalComputation)}updateDom(){if(this.fiber)if(this.bdom===this.fiber.bdom)for(let e in this.children)this.children[e].updateDom();else this.bdom.patch(this.fiber.bdom,!1),this.fiber.appliedToDom=!0,this.fiber=null}firstNode(){let e=this.bdom;return e?e.firstNode():void 0}mount(e,t){let n=this.fiber.bdom;this.bdom=n,n.mount(e,t),this.status=A.MOUNTED,this.fiber.appliedToDom=!0,this.children=this.fiber.childrenMap,this.fiber=null}moveBeforeDOMNode(e,t){this.bdom.moveBeforeDOMNode(e,t)}moveBeforeVNode(e,t){this.bdom.moveBeforeVNode(e?e.bdom:null,t)}patch(){this.fiber&&this.fiber.parent&&this._patch()}_patch(){let e=!1;for(let n in this.children){e=!0;break}let t=this.fiber;this.children=t.childrenMap,this.bdom.patch(t.bdom,e),t.appliedToDom=!0,this.fiber=null}beforeRemove(){this._destroy()}remove(){this.bdom.remove()}};function H(){let e=z();if(!(e instanceof de))throw new S("Expected to be in a component scope");return e}var Zn;typeof window<"u"&&(Zn=window.requestAnimationFrame.bind(window));var Ui=class Jn{static requestAnimationFrame=Zn;tasks=new Set;requestAnimationFrame;frame=0;delayedRenders=[];cancelledNodes=new Set;processing=!1;constructor(){this.requestAnimationFrame=Jn.requestAnimationFrame,this.processTasks=this.processTasks.bind(this)}addFiber(t){this.tasks.add(t.root)}scheduleDestroy(t){this.cancelledNodes.add(t),this.frame===0&&(this.frame=this.requestAnimationFrame(this.processTasks))}flush(){if(this.delayedRenders.length){let t=this.delayedRenders;this.delayedRenders=[];for(let n of t)n.root&&n.node.status!==A.DESTROYED&&n.node.fiber===n&&n.render()}this.frame===0&&(this.frame=this.requestAnimationFrame(this.processTasks))}processTasks(){if(!this.processing){this.processing=!0,this.frame=0;for(let t of this.cancelledNodes)t._destroy();this.cancelledNodes.clear();for(let t of this.tasks){if(t.root!==t){this.tasks.delete(t);continue}let n=X.has(t);if(n&&t.counter!==0){this.tasks.delete(t);continue}if(t.node.status===A.DESTROYED){this.tasks.delete(t);continue}t.counter===0&&(n||t.complete(),t.appliedToDom&&this.tasks.delete(t))}for(let t of this.tasks)t.node.status===A.DESTROYED&&this.tasks.delete(t);this.processing=!1}}},Z=class{static template="";__owl__;constructor(e){this.__owl__=e}setup(){}},zi=Object.create;function Hi(e,t){return e==null||e===!1?t:e}function Gi(e,t,n,r,i,s,o){n=n+"__slot_"+r;let l=e.__owl__.props.slots||{},{__render:a,__ctx:u,__scope:c}=l[r]||{},h=zi(u||{});c&&(h[c]=s);let f=a?a(h,t,n):null;if(o){let p,m;return f?p=i?re(r,f):f:m=o(e,t,n),Kt([p,m])}return f||xe("")}function qi(e,t){return e.key=t,e}function Xi(e){let t,n;if(Array.isArray(e))t=e,n=e;else if(e instanceof Map)t=[...e.keys()],n=[...e.values()];else if(Symbol.iterator in Object(e))t=[...e],n=t;else if(e&&typeof e=="object")n=Object.values(e),t=Object.keys(e);else throw new S(`Invalid loop expression: "${e}" is not iterable`);let r=n.length;return[t,n,r,new Array(r)]}function Yi(e){let t=parseFloat(e);return isNaN(t)?e:t}function Zi(e,t){for(let n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!1;return!0}var Qn=class{fn;ctx;component;node;key;constructor(e,t,n,r,i){this.fn=e,this.ctx=t,this.component=n,this.node=r,this.key=i}evaluate(){return this.fn.call(this.component,this.ctx,this.node,this.key)}toString(){return this.evaluate().toString()}};function Ji(e,t){if(e==null)return t?re("default",t):re("undefined",xe(""));let n,r;return e instanceof qe?(n="string_safe",r=Wt(e)):e instanceof Qn?(n="lazy_value",r=e.evaluate()):(n="string_unsafe",r=xe(e)),re(n,r)}function Qi(e){if(!e)throw new S("Ref is undefined or null");let t,n;if(e.add&&e.delete)t=e.add.bind(e),n=e.delete.bind(e);else if(e.set)t=e.set.bind(e),n=()=>e.set(null);else throw new S("Ref should implement either a 'set' function or 'add' and 'delete' functions");return(r,i)=>{i&&n(i),r&&t(r)}}function es(e,t,n){if(typeof e!="function")throw new S(`Invalid handler expression: the \`t-on\` expression should evaluate to a function, but got '${typeof e}'. Did you mean to use an arrow function? (e.g. \`t-on-click="() => expr"\`)`);e.call(t.this,n)}var bn=new WeakMap;function ts(e,t,n){let r=bn.get(e);r||(r=new Map,bn.set(e,r));let i=r.get(t);if(i)return i.set(n),i.readonly;let s=I(n);return s.readonly=De(s),r.set(t,s),s.readonly}function ns(e){if(typeof e!="function"||typeof e.set!="function")throw new S("Invalid t-model expression: expression should evaluate to a function with a 'set' method defined on it");return e}function rs(e,t,n,r,i,s){let o=!n,l,a=s.length===0;r?l=(c,h)=>!0:i?l=function(c,h){for(let f in c)if(c[f]!==h[f])return!0;return Object.keys(c).length!==Object.keys(h).length}:a?l=(c,h)=>!1:l=function(c,h){for(let f of s)if(c[f]!==h[f])return!0;return!1};let u=de.prototype.initiateRender;return(c,h,f,p,m)=>{let w=f.children,d=w[h];o&&d&&d.component.constructor!==m&&(d=void 0);let C=f.fiber;if(d){if(l(d.props,c)||C.deep||d.forceNextRender){d.forceNextRender=!1;let T=d.willUpdateProps,g=Ki(d,C);d.fiber=g;let $=C.root;d.willPatch.length&&$.willPatch.push(g),d.patched.length&&$.patched.push(g);let v;if(T.length){let N=d.defaultProps;if(N){c=Object.assign({},c);for(let D in N)c[D]===void 0&&(c[D]=N[D])}let b=d.component,E=he();B(void 0);for(let D of T){let R=D.call(b,c);R&&typeof R.then=="function"&&(v||=[]).push(R)}B(E)}v?(v.length===1?v[0]:Promise.all(v)).then(()=>{g===d.fiber&&(d.props=c,g.render())},b=>{fe({node:d,error:b})}):(d.props=c,g.render())}}else{if(n){let g=p.constructor.components;if(!g)throw new S(`Cannot find the definition of component "${t}", missing static components key in parent`);if(m=g[t],m){if(!(m.prototype instanceof Z))throw new S(`"${t}" is not a Component. It must inherit from the Component class`)}else throw new S(`Cannot find the definition of component "${t}"`)}d=new de(m,c,e,f,h),w[h]=d;let T=new nt(d,C);d.willStart.length?u.call(d,T):(d.fiber=T,d.mounted.length&&T.root.mounted.push(T),T.render())}return C.childrenMap[h]=d,d}}function is(e,t,n,r,i,s){let o=n.getTemplate(e);return re(e,o.call(t,r,i,s+e))}var ss={withDefault:Hi,zero:Symbol("zero"),callSlot:Gi,withKey:qi,prepareList:Xi,shallowEqual:Zi,toNumber:Yi,LazyValue:Qn,safeOutput:Ji,createCatcher:Pi,markRaw:Tn,OwlError:S,createRef:Qi,modelExpr:ns,createComponent:rs,callTemplate:is,callHandler:es,toSignal:ts},os={text:xe,createBlock:Wn,list:qn,multi:Kt,html:Wt,toggler:re},Me=class{static registerTemplate(e,t){Ze[e]=t}dev;rawTemplates=Object.create(Ze);templates={};getRawTemplate;translateFn;translatableAttributes;customDirectives;runtimeUtils;hasGlobalValues;constructor(e={}){if(this.dev=e.dev||!1,this.translateFn=e.translateFn,this.translatableAttributes=e.translatableAttributes,e.templates)if(e.templates instanceof Document||typeof e.templates=="string")this.addTemplates(e.templates);else for(let t in e.templates)this.addTemplate(t,e.templates[t]);this.getRawTemplate=e.getTemplate,this.customDirectives=e.customDirectives||{},this.runtimeUtils={...ss,__globals__:e.globalValues||{}},this.hasGlobalValues=!!(e.globalValues&&Object.keys(e.globalValues).length)}addTemplate(e,t){if(e in this.rawTemplates){if(!this.dev)return;let n=this.rawTemplates[e],r=typeof n=="string"?n:n instanceof Element?n.outerHTML:n.toString(),i=typeof t=="string"?t:t.outerHTML;if(r===i)return;throw new S(`Template ${e} already defined with different content`)}this.rawTemplates[e]=t}addTemplates(e){if(e){e=e instanceof Document?e:this._parseXML(e);for(let t of e.querySelectorAll("[t-name]")){let n=t.getAttribute("t-name");this.addTemplate(n,t)}}}getTemplate(e){let t=e;if(!(t in this.templates)){let n=this.getRawTemplate?.(e)||this.rawTemplates[e];if(n===void 0){let l="",a=Oe();throw a instanceof de&&(l=` (for component "${a.componentName}")`),new S(`Missing template: "${e}"${l}`)}let i=typeof n=="function"&&!(n instanceof Element)?n:this._compileTemplate(e,n),s=this.templates;this.templates[t]=function(l,a){return s[t].call(this,l,a)};let o=i(this,os,this.runtimeUtils);this.templates[t]=o}return this.templates[t]}_compileTemplate(e,t){throw new S("Unable to compile a template. Please use owl full build instead")}_parseXML(e){throw new S("Unable to parse XML templates. Please use owl full build instead, or pass a Document instance.")}},Ze={};function J(...e){let t=`__template__${J.nextId++}`,n=String.raw(...e);return Ze[t]=n,t}J.nextId=1;var vn=!1,ze=new Set;typeof window<"u"&&(window.__OWL_DEVTOOLS__||={apps:ze,Fiber:nt,RootFiber:Ye,toRaw:pe,proxy:Pt});var zt=class er extends Me{static validateTarget=bi;static apps=ze;static version=Dr;name;scheduler=new Ui;roots=new Set;pluginManager;destroyed=!1;constructor(t={}){super(t),this.name=t.name||"",ze.add(this),this.pluginManager=new tt(this,{config:t.config}),t.plugins?Cn(this.pluginManager,t.plugins):this.pluginManager.status=A.MOUNTED,t.test&&(this.dev=!0),this.dev&&!t.test&&!vn&&(console.info("Owl is running in 'dev' mode."),vn=!0)}createRoot(t,n={}){let r=n.props||{},i,s,o=new Promise((m,w)=>{i=m,s=w}),l,a=null;try{l=new de(t,r,this,null,null)}catch(m){a=m,s(m)}let u=null,c=null,h=()=>{if(c)return c;if(a)return Promise.reject(a);u=new Yn(l,null);let m=se.get(l);if(m||(m=[],se.set(l,m)),m.unshift((d,C)=>{let T=C();s(T)}),c=new Promise(d=>{u.onPrepared=()=>d()}),l.mounted.push(()=>{i(l.component),m.shift()}),this.scheduler.addFiber(u),this.pluginManager.status<A.MOUNTED&&l.willStart.unshift(()=>this.pluginManager.ready),l.willStart.length)l.initiateRender(u);else{l.fiber=u,l.mounted.length&&u.root.mounted.push(u);try{u.render()}catch(d){s(d)}}return c},p={node:l,promise:o,prepare:h,mount:(m,w)=>(a||(er.validateTarget(m),h(),u.commit(m,w)),o),destroy:()=>{this.roots.delete(p),l?.destroy(),this.scheduler.processTasks()}};return this.roots.add(p),p}destroy(){for(let t of this.roots)t.destroy();this.pluginManager.destroy(),this.scheduler.processTasks(),ze.delete(this),this.destroyed=!0}_handleError(t){throw t}};async function ls(e,t,n={}){return new zt(n).createRoot(e,n).mount(t,n)}var as=(e,t,n)=>{let{data:r,modifiers:i}=xn(e);e=r;let s=!1;if(i.length){let o=!1,l=t.target===n;for(let a of i)switch(a){case"self":if(o=!0,l)continue;return s;case"prevent":(o&&l||!o)&&t.preventDefault();continue;case"stop":(o&&l||!o)&&t.stopPropagation(),s=!0;continue}}if(Object.hasOwnProperty.call(e,0)){let o=e[0];if(typeof o!="function")throw new S(`Invalid handler (expected a function, received: '${o}')`);let l=e[1]?e[1].__owl__:null;(!l||l.status===A.MOUNTED)&&o(e[1],t)}return s};function tr(e){let t=z();t.willStart.push(t.decorate(e,"onWillStart"))}function cs(e){let t=H();function n(r,i){return e.call(this,i,r)}t.willUpdateProps.push(t.decorate(n,"onWillUpdateProps"))}function nr(e){let t=H();t.mounted.push(t.decorate(e,"onMounted"))}function us(e){let t=H();t.willPatch.unshift(t.decorate(e,"onWillPatch"))}function hs(e){let t=H();t.patched.push(t.decorate(e,"onPatched"))}function fs(e){let t=H();t.willUnmount.unshift(t.decorate(e,"onWillUnmount"))}function ve(e){let t=z();t.onDestroy(t.decorate(e,"onWillDestroy"))}function rr(e){let t=H(),n=se.get(t);n||(n=[],se.set(t,n)),n.push(e.bind(t.component))}function ds(){return $n(Z)}var j={...oi,component:ds};function ps(e,t){let r=(Array.isArray(e)?e:Object.keys(e)).filter(i=>!i.endsWith("?")&&i in t);return i=>{r.length&&i.addIssue({message:"props have default values on mandatory keys",keys:r}),i.validate(j.object(e))}}function rt(e,t){let n=H(),{app:r,componentName:i}=n;t&&(n.defaultProps=Object.assign(n.defaultProps||{},t));function s(a){return n.props[a]===void 0&&t?t[a]:n.props[a]}let o=Object.create(null);function l(a){for(let u of a)Reflect.defineProperty(o,u,{enumerable:!0,get:s.bind(null,u)})}if(e){let a=(Array.isArray(e)?e:Object.keys(e)).map(u=>u.endsWith("?")?u.slice(0,-1):u);if(l(a),r.dev){let u=t?ps(e,t):j.object(e);ie(n.props,u,`Invalid component props (${i})`),n.willUpdateProps.push(c=>{ie(c,u,`Invalid component props (${i})`)})}}else{let a=c=>{let h=[];for(let f in c)f.charCodeAt(0)!==1&&h.push(f);if(t)for(let f in t)f in c||h.push(f);return h},u=a(n.props);l(u),n.willUpdateProps.push(c=>{for(let h of u)Reflect.deleteProperty(o,h);u=a(c),l(u)})}return o}var ms=class extends Z{static template=J`
3
+ <t t-if="this.props.error()">
4
+ <t t-call-slot="fallback"/>
5
+ </t>
6
+ <t t-else="">
7
+ <t t-call-slot="default"/>
8
+ </t>
9
+ `;props=rt({"error?":j.signal()},{error:I(null)});setup(){rr(e=>this.props.error.set(e))}};function it(e){ve(et(e))}function bs(e,t,n,r){typeof e=="function"?it(()=>{let i=e();if(i)return i.addEventListener(t,n,r),()=>i.removeEventListener(t,n,r)}):(e.addEventListener(t,n,r),ve(()=>e.removeEventListener(t,n,r)))}function vs(){return z().app}var gs=class extends Z{static template=J`<t t-call-slot="default"/>`},ys=class extends Z{static template=J``;props=rt({slots:j.object(["default"]),target:j.or([j.string(),j.signal(j.instanceOf(HTMLElement)),j.instanceOf(HTMLElement)])});setup(){let e=this.__owl__,t=e.app,n=this.props.slots,r=null,i=()=>{r&&(r.destroy(),r=null)};it(()=>{let s=ws(this.props.target);if(s)return r=t.createRoot(gs,{props:{slots:n}}),r.node.pluginManager=e.pluginManager,se.set(r.node,[_n(e)]),r.mount(s),i}),ve(i)}};function ws(e){return typeof e=="function"&&(e=e()),typeof e=="string"?document.querySelector(e):e instanceof HTMLElement?e:null}var Ts=class extends Z{static template=J`<t t-call-slot="default"/>`},Ns=class extends Z{static template=J`
10
+ <t t-if="!this.prepared()">
11
+ <t t-call-slot="fallback"/>
12
+ </t>
13
+ `;props=rt({slots:j.object(["default","fallback?"])});prepared=I(!1);mounted=I(!1);subRootMounted=!1;setup(){let e=this.__owl__,t=e.app.createRoot(Ts,{props:{slots:this.props.slots}});t.node.pluginManager=e.pluginManager,se.set(t.node,[_n(e)]),t.prepare().then(()=>this.prepared.set(!0));let n=t.node.fiber;n&&n.counter===0&&this.prepared.set(!0),nr(()=>this.mounted.set(!0)),it(()=>{if(this.subRootMounted||!this.prepared()||!this.mounted())return;this.subRootMounted=!0;let r=e.bdom.firstNode();t.mount(r.parentElement,{afterNode:r})}),ve(()=>t.destroy())}};function Es(e,t,...n){let r=H(),i=n.length>0,s=r.props[e];return r.app.dev&&(t!==void 0&&(!i||s!==void 0)&&ie(s,t,`Invalid prop '${e}' in '${r.componentName}'`),r.willUpdateProps.push(o=>{if(o[e]!==r.props[e])throw new S(`Prop '${e}' changed in component '${r.componentName}'. Props declared with \`prop()\` are static and should not change. If the prop is a signal, pass the same signal reference (its inner value may change).`)})),s===void 0&&i?n[0]:s}function $s(e){let t=z(),n=t instanceof de?t.pluginManager:t,r=n.getPluginById(e.id);if(!r)if(t instanceof tt)r=n.startPlugin(e);else throw new S(`Unknown plugin "${e.id}"`);return r}function Ss(e,t){let n=z();if(!(n instanceof tt))throw new S("Expected to be in a plugin scope");return n.app.dev&&t&&ie(n.config,j.object({[e]:t}),"Config does not match the type"),n.config[e.endsWith("?")?e.slice(0,-1):e]}function ks(e,t){let n=H(),r=new tt(n.app,{parent:n.pluginManager,config:t});n.pluginManager=r,ve(()=>r.destroy()),Cn(r,e),r.status<A.MOUNTED&&tr(()=>r.ready)}be.shouldNormalizeDom=!1;be.mainEventHandler=as;var As={config:be,mount:Ue,patch:Bi,remove:ji,list:qn,multi:Kt,text:xe,toggler:re,createBlock:Wn,html:Wt},Cs={version:zt.version,date:"2026-04-23T11:09:22.692Z",hash:"2220e1dd",url:"https://github.com/odoo/owl"};var _=class extends Error{cause};function Ds(e){let t=!1;return function(...r){t||(t=!0,queueMicrotask(()=>{t=!1,e(...r)}))}}var Xt=Symbol("Atom"),Le=[],ye;function br(e){ye&&(ye.sources.add(e),e.observers.add(ye))}function Jt(e){for(let t of e.observers)t.state===0&&(t.isDerived?Rs(t):Le.push(t)),t.state=1;_s()}var _s=Ds(xs);function xs(){for(let e=0;e<Le.length;e++)vr(Le[e]);Le.length=0}function vr(e){let t=e.state;if(t===0)return;if(t===2){for(let r of e.sources)"compute"in r&&vr(r);if(e.state!==1){e.state=0;return}}Os(e);let n=ye;ye=e,e.value=e.compute(),e.state=0,ye=n}function Os(e){let t=e.sources;for(let n of t)n.observers.delete(e);t.clear()}function Rs(e){let t=[e],n;for(;n=t.pop();)for(let r of n.observers)r.state||(r.state=2,r.isDerived?t.push(r):Le.push(r))}var U=Symbol("Key changes"),Ms=Object.prototype.toString,Yt=Object.prototype.hasOwnProperty;function Qt(e){if(typeof e!="object"||e===null)return!1;let t=ct(e);return Array.isArray(t)||t instanceof Set||t instanceof Map||t instanceof WeakMap?!0:Ms.call(t)==="[object Object]"}function we(e,t){return!t&&Qt(e)?Ps(e):e}var Is=new WeakSet;function ct(e){return lt.has(e)?lt.get(e):e}var Zt=new WeakMap;function Ls(e,t){let n=Zt.get(e);n||(n=new Map,Zt.set(e,n));let r=n.get(t);return r||(r={value:void 0,observers:new Set},n.set(t,r)),r}function F(e,t,n){br(n??Ls(e,t))}function te(e,t,n){if(!n){let r=Zt.get(e);if(!r||!r.has(t))return;n=r.get(t)}Jt(n)}var lt=new WeakMap,ir=new WeakMap;function Te(e,t){if(!Qt(e))throw new _("Cannot make the given value reactive");if(Is.has(e)||lt.has(e))return e;let n=ir.get(e);if(n)return n;let r;e instanceof Map?r=Ht(e,"Map",t):e instanceof Set?r=Ht(e,"Set",t):e instanceof WeakMap?r=Ht(e,"WeakMap",t):r=gr(t);let i=new Proxy(e,r);return ir.set(e,i),lt.set(i,e),i}function Ps(e){return Te(e,null)}function gr(e){return{get(t,n,r){F(t,n,e);let i=Reflect.get(t,n,r);if(e||typeof i!="object"||i===null||!Qt(i))return i;let s=Object.getOwnPropertyDescriptor(t,n);return s&&!s.writable&&!s.configurable?i:Te(i,null)},set(t,n,r,i){let s=Yt.call(t,n),o=Reflect.get(t,n,i),l=Reflect.set(t,n,ct(r),i);return!s&&Yt.call(t,n)&&te(t,U,e),(o!==Reflect.get(t,n,i)||n==="length"&&Array.isArray(t))&&te(t,n,e),l},deleteProperty(t,n){let r=Reflect.deleteProperty(t,n);return te(t,U,e),te(t,n,e),r},ownKeys(t){return F(t,U,e),Reflect.ownKeys(t)},has(t,n){return F(t,U,e),Reflect.has(t,n)}}}function Ie(e,t,n){return r=>(r=ct(r),F(t,r,n),we(t[e](r),n))}function Q(e,t,n){return function*(){F(t,U,n);let r=t.keys();for(let i of t[e]()){let s=r.next().value;F(t,s,n),yield we(i,n)}}}function sr(e,t){return function(r,i){F(e,U,t),e.forEach(function(s,o,l){F(e,o,t),r.call(i,we(s,t),we(o,t),we(l,t))},i)}}function ge(e,t,n,r){return(i,s)=>{i=ct(i);let o=n.has(i),l=n[t](i),a=n[e](i,s),u=n.has(i);return o!==u&&te(n,U,r),l!==n[t](i)&&te(n,i,r),a}}function or(e,t){return()=>{let n=[...e.keys()];e.clear(),te(e,U,t);for(let r of n)te(e,r,t)}}var Bs={Set:(e,t)=>({has:Ie("has",e,t),add:ge("add","has",e,t),delete:ge("delete","has",e,t),keys:Q("keys",e,t),values:Q("values",e,t),entries:Q("entries",e,t),[Symbol.iterator]:Q(Symbol.iterator,e,t),forEach:sr(e,t),clear:or(e,t),get size(){return F(e,U,t),e.size}}),Map:(e,t)=>({has:Ie("has",e,t),get:Ie("get",e,t),set:ge("set","get",e,t),delete:ge("delete","has",e,t),keys:Q("keys",e,t),values:Q("values",e,t),entries:Q("entries",e,t),[Symbol.iterator]:Q(Symbol.iterator,e,t),forEach:sr(e,t),clear:or(e,t),get size(){return F(e,U,t),e.size}}),WeakMap:(e,t)=>({has:Ie("has",e,t),get:Ie("get",e,t),set:ge("set","get",e,t),delete:ge("delete","has",e,t)})};function Ht(e,t,n){let r=Bs[t](e,n);return Object.assign(gr(n),{get(i,s){return Yt.call(r,s)?r[s]:(F(i,s,n),we(i[s],n))}})}function Pe(e,t){let n={type:"signal",value:e,observers:new Set},r=t(n),i=()=>(br(n),r);return i[Xt]=n,i.set=function(o){Object.is(n.value,o)||(n.value=o,r=t(n),Jt(n))},i}function js(e){if(typeof e!="function"||e[Xt]?.type!=="signal")throw new _(`Value is not a signal (${e})`);Jt(e[Xt])}function Vs(e){return Pe(e,t=>Te(t.value,t))}function Ks(e){return Pe(e,t=>Te(t.value,t))}function Fs(e){return Pe(e,t=>Te(t.value,t))}function Ws(e){return Pe(e,t=>Te(t.value,t))}function Be(e){return Pe(e,t=>t.value)}Be.trigger=js;Be.Array=Vs;Be.Map=Fs;Be.Object=Ks;Be.Set=Ws;var Us="true,false,NaN,null,undefined,debugger,console,window,in,instanceof,new,function,return,eval,void,Math,RegExp,Array,Object,Date,__globals__".split(","),lr=Object.assign(Object.create(null),{and:"&&",or:"||",gt:">",gte:">=",lt:"<",lte:"<="}),ar=Object.assign(Object.create(null),{"{":"LEFT_BRACE","}":"RIGHT_BRACE","[":"LEFT_BRACKET","]":"RIGHT_BRACKET",":":"COLON",",":"COMMA","(":"LEFT_PAREN",")":"RIGHT_PAREN"}),zs="...,.,===,==,+,!==,!=,!,||,&&,>=,>,<=,<,?,-,*,/,%,typeof ,=>,=,;,in ,new ,|,&,^,~".split(","),Hs=function(e){let t=e[0],n=t;if(t!=="'"&&t!=='"'&&t!=="`")return!1;let r=1,i;for(;e[r]&&e[r]!==n;){if(i=e[r],t+=i,i==="\\"){if(r++,i=e[r],!i)throw new _("Invalid expression");t+=i}r++}if(e[r]!==n)throw new _("Invalid expression");return t+=n,n==="`"?{type:"TEMPLATE_STRING",value:t,replace(s){return t.replace(/\$\{(.*?)\}/g,(o,l)=>"${"+s(l)+"}")}}:{type:"VALUE",value:t}},Gs=function(e){let t=e[0];if(t&&t.match(/[0-9]/)){let n=1;for(;e[n]&&e[n].match(/[0-9]|\./);)t+=e[n],n++;return{type:"VALUE",value:t}}else return!1},qs=function(e){let t=e[0];if(t&&t.match(/[a-zA-Z_\$]/)){let n=1;for(;e[n]&&e[n].match(/[\w\$]/);)t+=e[n],n++;return t in lr?{type:"OPERATOR",value:lr[t],size:t.length}:{type:"SYMBOL",value:t}}else return!1},Xs=function(e){let t=e[0];return t&&t in ar?{type:ar[t],value:t}:!1},Ys=function(e){for(let t of zs)if(e.startsWith(t))return{type:"OPERATOR",value:t};return!1},Zs=[Hs,Gs,Ys,qs,Xs];function Js(e){let t=[],n=!0,r,i=e;try{for(;n;)if(i=i.trim(),i){for(let s of Zs)if(n=s(i),n){t.push(n),i=i.slice(n.size||n.value.length);break}}else n=!1}catch(s){r=s}if(i.length||r)throw new _(`Tokenizer error: could not tokenize \`${e}\``);return t}var Qs=e=>e&&(e.type==="LEFT_BRACE"||e.type==="COMMA"),eo=e=>e&&(e.type==="RIGHT_BRACE"||e.type==="COMMA"),to=new Map([["in "," in "]]);function yr(e){let t=new Set,n=Js(e),r=0,i=[],s=-1;for(;r<n.length;){let a=n[r],u=n[r-1],c=n[r+1],h=i[i.length-1];switch(a.type){case"LEFT_BRACE":case"LEFT_BRACKET":case"LEFT_PAREN":i.push(a.type);break;case"RIGHT_BRACE":case"RIGHT_BRACKET":case"RIGHT_PAREN":i.pop()}let f=a.type==="SYMBOL"&&!Us.includes(a.value);if(f&&u&&(h==="LEFT_BRACE"&&Qs(u)&&eo(c)&&(n.splice(r+1,0,{type:"COLON",value:":"},{...a}),c=n[r+1]),(u.type==="OPERATOR"&&u.value==="."||(u.type==="LEFT_BRACE"||u.type==="COMMA")&&c&&c.type==="COLON")&&(f=!1)),a.type==="TEMPLATE_STRING"&&(a.value=a.replace(p=>x(p))),c&&c.type==="OPERATOR"&&c.value==="=>")if(i.length===0&&(s=r+1),a.type==="RIGHT_PAREN"){let p=r-1;for(;p>0&&n[p].type!=="LEFT_PAREN";)n[p].type==="SYMBOL"&&n[p].originalValue&&(n[p].value=n[p].originalValue,t.add(n[p].value)),p--}else t.add(a.value);f&&(a.varName=a.value,t.has(a.value)||(a.originalValue=a.value,a.value=`ctx['${a.value}']`)),r++}for(let a of n)a.type==="SYMBOL"&&a.varName&&t.has(a.value)&&(a.originalValue=a.value,a.value=`_${a.value}`,a.isLocal=!0);let o=null;if(s!==-1){o=[];let a=new Set;for(let u=s+1;u<n.length;u++){let c=n[u];c.varName&&!c.isLocal&&c.varName!=="this"&&!a.has(c.varName)&&(a.add(c.varName),o.push(c.varName))}}return{expr:n.map(a=>to.get(a.value)||a.value).join(""),freeVariables:o}}function x(e){return yr(e).expr}var at=/\{\{.*?\}\}|\#\{.*?\}/g;function no(e,t){let n=e.match(at);return n&&n[0].length===e.length?`(${t(e.slice(2,n[0][0]==="{"?-2:-1))})`:"`"+e.replace(at,i=>"${"+t(i.slice(2,i[0]==="{"?-2:-1))+"}")+"`"}function Gt(e){return no(e,x)}function en(e){let n=new DOMParser().parseFromString(e,"text/xml");if(n.getElementsByTagName("parsererror").length){let r="Invalid XML in template.",i=n.getElementsByTagName("parsererror")[0].textContent;if(i){r+=`
14
+ The parser has produced the following error message:
15
+ `+i;let s=/\d+/g,o=s.exec(i);if(o){let l=Number(o[0]),a=e.split(`
16
+ `)[l-1],u=s.exec(i);if(a&&u){let c=Number(u[0])-1;a[c]&&(r+=`
17
+ The error might be located at xml line ${l} column ${c}
18
+ ${a}
19
+ ${"-".repeat(c-1)}^`)}}}throw new _(r)}return n}var y={Text:0,DomNode:2,Multi:3,TIf:4,TSet:5,TCall:6,TOut:7,TForEach:8,TKey:9,TComponent:10,TDebug:11,TLog:12,TCallSlot:13,TCallBlock:14,TTranslation:15,TTranslationContext:16},ne={First:1,Last:2,Index:4,Value:8},cr=new WeakMap;function ro(e,t){let n={inPreTag:!1,customDirectives:t};if(typeof e=="string"){let i=en(`<t>${e}</t>`).firstChild;return ur(i,n)}let r=cr.get(e);return r||(r=ur(e.cloneNode(!0),n),cr.set(e,r)),r}function ur(e,t){return ko(e),P(e,t)||{type:y.Text,value:""}}function P(e,t){return e instanceof Element?lo(e,t)||ao(e,t)||fo(e,t)||vo(e,t)||No(e,t)||Eo(e,t)||mo(e,t)||bo(e,t)||po(e,t)||ho(e,t)||To(e,t)||wo(e,t)||uo(e,t)||go(e,t)||io(e,t):oo(e,t)}function io(e,t){return e.tagName!=="t"?null:ut(e,t)}var so=/[\r\n]/;function oo(e,t){if(e.nodeType===Node.TEXT_NODE){let n=e.textContent||"";return!t.inPreTag&&so.test(n)&&!n.trim()?null:{type:y.Text,value:n}}return null}function lo(e,t){if(!t.customDirectives)return null;let n=e.getAttributeNames();for(let r of n){if(r==="t-custom"||r==="t-custom-")throw new _("Missing custom directive name with t-custom directive");if(r.startsWith("t-custom-")){let i=r.split(".")[0].slice(9),s=t.customDirectives[i];if(!s)throw new _(`Custom directive "${i}" is not defined`);let o=e.getAttribute(r),l=r.split(".").slice(1);e.removeAttribute(r);try{s(e,o,l)}catch(a){throw new _(`Custom directive "${i}" throw the following error: ${a}`)}return P(e,t)}}return null}function ao(e,t){if(e.hasAttribute("t-debug")){e.removeAttribute("t-debug");let n=P(e,t),r={type:y.TDebug,content:n};return n?.hasNoRepresentation&&(r.hasNoRepresentation=!0),r}if(e.hasAttribute("t-log")){let n=e.getAttribute("t-log");e.removeAttribute("t-log");let r=P(e,t),i={type:y.TLog,expr:n,content:r};return r?.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}return null}var co=new Set(["svg","g","path"]);function uo(e,t){let{tagName:n}=e,r=e.getAttribute("t-tag");if(e.removeAttribute("t-tag"),n==="t"&&!r)return null;if(n.startsWith("block-"))throw new _(`Invalid tag name: '${n}'`);t=Object.assign({},t),n==="pre"&&(t.inPreTag=!0);let i=!t.nameSpace&&co.has(n)?"http://www.w3.org/2000/svg":null,s=e.getAttribute("t-ref");e.removeAttribute("t-ref");let o=e.getAttributeNames(),l=null,a=null,u=null,c=null;for(let f of o){let p=e.getAttribute(f);if(f==="t-on"||f==="t-on-")throw new _("Missing event name with t-on directive");if(f.startsWith("t-on-"))u=u||{},u[f.slice(5)]=p;else if(f.startsWith("t-model")){if(!["input","select","textarea"].includes(n))throw new _("The t-model directive only works with <input>, <textarea> and <select>");let m=e.getAttribute("type"),w=n==="input",d=n==="select",C=w&&m==="checkbox",T=w&&m==="radio",g=f.includes(".trim"),$=g||f.includes(".lazy"),v=f.includes(".number"),N=f.includes(".proxy");c={expr:p,targetAttr:C?"checked":"value",specialInitTargetAttr:T?"checked":null,eventType:T?"click":d||$?"change":"input",hasDynamicChildren:!1,shouldTrim:g,shouldNumberize:v,isProxy:N},d&&(t=Object.assign({},t),t.tModelInfo=c)}else{if(f.startsWith("block-"))throw new _(`Invalid attribute: '${f}'`);if(f==="xmlns")i=p;else if(f.startsWith("t-translation-context-")){let m=f.slice(22);a=a||{},a[m]=p}else if(f!=="t-name"){if(f.startsWith("t-")&&!f.startsWith("t-att"))throw new _(`Unknown QWeb directive: '${f}'`);let m=t.tModelInfo;m&&["t-att-value","t-attf-value"].includes(f)&&(m.hasDynamicChildren=!0),l=l||{},l[f]=p}}}i&&(t.nameSpace=i);let h=tn(e,t);return{type:y.DomNode,tag:n,dynamicTag:r,attrs:l,attrsTranslationCtx:a,on:u,ref:s,content:h,model:c,ns:i}}function ho(e,t){if(!e.hasAttribute("t-out")&&!e.hasAttribute("t-esc"))return null;e.hasAttribute("t-esc")&&console.warn('t-esc has been deprecated in favor of t-out. If the value to render is not wrapped by the "markup" function, it will be escaped');let n=e.getAttribute("t-out")||e.getAttribute("t-esc");e.removeAttribute("t-out"),e.removeAttribute("t-esc");let r={type:y.TOut,expr:n,body:null},i=e.getAttribute("t-ref");e.removeAttribute("t-ref");let s=P(e,t);return s&&s.type===y.DomNode?(r.body=s.content.length?s.content:null,{...s,ref:i,content:[r]}):r}function fo(e,t){if(!e.hasAttribute("t-foreach"))return null;let n=e.outerHTML,r=e.getAttribute("t-foreach");e.removeAttribute("t-foreach");let i=e.getAttribute("t-as")||"";e.removeAttribute("t-as");let s=e.getAttribute("t-key");if(!s)throw new _(`"Directive t-foreach should always be used with a t-key!" (expression: t-foreach="${r}" t-as="${i}")`);e.removeAttribute("t-key");let o=P(e,t);if(!o)return null;let l=!n.includes("t-call"),a=0;return l&&!n.includes(`${i}_first`)&&(a|=ne.First),l&&!n.includes(`${i}_last`)&&(a|=ne.Last),l&&!n.includes(`${i}_index`)&&(a|=ne.Index),l&&!n.includes(`${i}_value`)&&(a|=ne.Value),{type:y.TForEach,collection:r,elem:i,body:o,key:s,noFlags:a}}function po(e,t){if(!e.hasAttribute("t-key"))return null;let n=e.getAttribute("t-key");e.removeAttribute("t-key");let r=P(e,t);if(!r)return null;let i={type:y.TKey,expr:n,content:r};return r.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}function mo(e,t){if(!e.hasAttribute("t-call"))return null;if(e.tagName!=="t")throw new _(`Directive 't-call' can only be used on <t> nodes (used on a <${e.tagName}>)`);let n=e.getAttribute("t-call"),r=e.getAttribute("t-call-context");e.removeAttribute("t-call"),e.removeAttribute("t-call-context");let i=null,s=null;for(let l of e.getAttributeNames()){let a=e.getAttribute(l);if(l.startsWith("t-translation-context-")){let u=l.slice(22);s=s||{},s[u]=a}else i=i||{},i[l]=a}let o=ut(e,t);return{type:y.TCall,name:n,attrs:i,attrsTranslationCtx:s,body:o,context:r}}function bo(e,t){if(!e.hasAttribute("t-call-block"))return null;let n=e.getAttribute("t-call-block");return{type:y.TCallBlock,name:n}}function vo(e,t){if(!e.hasAttribute("t-if"))return null;let n=e.getAttribute("t-if");e.removeAttribute("t-if");let r=P(e,t)||{type:y.Text,value:""},i=e.nextElementSibling,s=[];for(;i&&i.hasAttribute("t-elif");){let l=i.getAttribute("t-elif");i.removeAttribute("t-elif");let a=P(i,t),u=i.nextElementSibling;i.remove(),i=u,a&&s.push({condition:l,content:a})}let o=null;return i&&i.hasAttribute("t-else")&&(i.removeAttribute("t-else"),o=P(i,t),i.remove()),{type:y.TIf,condition:n,content:r,tElif:s.length?s:null,tElse:o}}function go(e,t){if(!e.hasAttribute("t-set"))return null;let n=e.getAttribute("t-set"),r=e.getAttribute("t-value")||null,i=e.innerHTML===e.textContent&&e.textContent||null,s=null;return e.textContent!==e.innerHTML&&(s=tn(e,t)),{type:y.TSet,name:n,value:r,defaultValue:i,body:s,hasNoRepresentation:!0}}var yo=new Map([["t-ref","t-ref is no longer supported on components. Consider exposing only the public part of the component's API through a callback prop."],["t-att","t-att makes no sense on component: props are already treated as expressions"],["t-attf","t-attf is not supported on components: use template strings for string interpolation in props"]]);function wo(e,t){let n=e.tagName,r=n[0],i=e.hasAttribute("t-component");if(i&&n!=="t")throw new _(`Directive 't-component' can only be used on <t> nodes (used on a <${n}>)`);if(!(r===r.toUpperCase()||i))return null;i&&(n=e.getAttribute("t-component"),e.removeAttribute("t-component"));let s=e.getAttribute("t-props");e.removeAttribute("t-props");let o=e.getAttribute("t-slot-scope");e.removeAttribute("t-slot-scope");let l=null,a=null,u=null;for(let h of e.getAttributeNames()){let f=e.getAttribute(h);if(h.startsWith("t-translation-context-")){let p=h.slice(22);u=u||{},u[p]=f}else if(h.startsWith("t-"))if(h.startsWith("t-on-"))l=l||{},l[h.slice(5)]=f;else{let p=yo.get(h.split("-").slice(0,2).join("-"));throw new _(p||`unsupported directive on Component: ${h}`)}else a=a||{},a[h]=f}let c=null;if(e.hasChildNodes()){let h=e.cloneNode(!0),f=Array.from(h.querySelectorAll("[t-set-slot]"));for(let m of f){if(m.tagName!=="t")throw new _(`Directive 't-set-slot' can only be used on <t> nodes (used on a <${m.tagName}>)`);let w=m.getAttribute("t-set-slot"),d=m.parentElement,C=!1;for(;d&&d!==h;){if(d.hasAttribute("t-component")||d.tagName[0]===d.tagName[0].toUpperCase()){C=!0;break}d=d.parentElement}if(C||!d)continue;m.removeAttribute("t-set-slot"),m.remove();let T=P(m,t),g=null,$=null,v=null,N=null;for(let b of m.getAttributeNames()){let E=m.getAttribute(b);if(b==="t-slot-scope"){N=E;continue}else if(b.startsWith("t-translation-context-")){let D=b.slice(22);v=v||{},v[D]=E}else b.startsWith("t-on-")?(g=g||{},g[b.slice(5)]=E):($=$||{},$[b]=E)}c=c||{},c[w]={content:T,on:g,attrs:$,attrsTranslationCtx:v,scope:N}}let p=ut(h,t);c=c||{},p&&!c.default&&(c.default={content:p,on:l,attrs:null,attrsTranslationCtx:null,scope:o})}return{type:y.TComponent,name:n,isDynamic:i,dynamicProps:s,props:a,propsTranslationCtx:u,slots:c,on:l}}function To(e,t){if(!e.hasAttribute("t-call-slot")&&!e.hasAttribute("t-slot"))return null;e.hasAttribute("t-slot")&&console.warn("t-slot has been renamed t-call-slot.");let n=e.getAttribute("t-call-slot")||e.getAttribute("t-slot");e.removeAttribute("t-call-slot"),e.removeAttribute("t-slot");let r=null,i=null,s=null;for(let o of e.getAttributeNames()){let l=e.getAttribute(o);if(o.startsWith("t-on-"))s=s||{},s[o.slice(5)]=l;else if(o.startsWith("t-translation-context-")){let a=o.slice(22);i=i||{},i[a]=l}else r=r||{},r[o]=l}return{type:y.TCallSlot,name:n,attrs:r,attrsTranslationCtx:i,on:s,defaultContent:ut(e,t)}}function hr(e){let t={type:y.TTranslation,content:e};return e?.hasNoRepresentation&&(t.hasNoRepresentation=!0),t}function No(e,t){if(e.getAttribute("t-translation")!=="off")return null;e.removeAttribute("t-translation");let n=P(e,t);if(n?.type===y.Multi){let r=n.content.map(hr);return nn(r)}return hr(n)}function fr(e,t){let n={type:y.TTranslationContext,content:e,translationCtx:t};return e?.hasNoRepresentation&&(n.hasNoRepresentation=!0),n}function Eo(e,t){let n=e.getAttribute("t-translation-context");if(!n)return null;e.removeAttribute("t-translation-context");let r=P(e,t);if(r?.type===y.Multi){let i=r.content.map(s=>fr(s,n));return nn(i)}return fr(r,n)}function tn(e,t){let n=[];for(let r of e.childNodes){let i=P(r,t);i&&(i.type===y.Multi?n.push(...i.content):n.push(i))}return n}function nn(e){let t={type:y.Multi,content:e};return e.every(n=>n.hasNoRepresentation)&&(t.hasNoRepresentation=!0),t}function ut(e,t){let n=tn(e,t);switch(n.length){case 0:return null;case 1:return n[0];default:return nn(n)}}function $o(e){let t=e.querySelectorAll("[t-elif], [t-else]");for(let n=0,r=t.length;n<r;n++){let i=t[n],s=i.previousElementSibling,o=a=>s.getAttribute(a),l=a=>+!!i.getAttribute(a);if(s&&(o("t-if")||o("t-elif"))){if(o("t-foreach"))throw new _("t-if cannot stay at the same level as t-foreach when using t-elif or t-else");if(["t-if","t-elif","t-else"].map(l).reduce(function(u,c){return u+c})>1)throw new _("Only one conditional branching directive is allowed per node");let a;for(;(a=i.previousSibling)!==s;){if(a.nodeValue.trim().length&&a.nodeType!==8)throw new _("text is not allowed between branching directives");a.remove()}}else throw new _("t-elif and t-else directives must be preceded by a t-if or t-elif directive")}}function So(e){let t=[...e.querySelectorAll("[t-out]")].filter(n=>n.tagName[0]===n.tagName[0].toUpperCase()||n.hasAttribute("t-component"));for(let n of t){if(n.childNodes.length)throw new _("Cannot have t-out on a component that already has content");let r=n.getAttribute("t-out");n.removeAttribute("t-out");let i=n.ownerDocument.createElement("t");r!=null&&i.setAttribute("t-out",r),n.appendChild(i)}}function ko(e){$o(e),So(e)}var dr=Symbol("zero"),Ao=/\s+/g,ee;typeof document<"u"&&(ee=document.implementation.createDocument(null,null,null));var Co=new Set(["stop","capture","prevent","self","synthetic","passive"]),ot={};function M(e=""){return ot[e]=(ot[e]||0)+1,e+ot[e]}function Do(e,t){switch(e){case"input":return t==="checked"||t==="indeterminate"||t==="value"||t==="readonly"||t==="readOnly"||t==="disabled";case"option":return t==="selected"||t==="disabled";case"textarea":return t==="value"||t==="readonly"||t==="readOnly"||t==="disabled";case"select":return t==="value"||t==="disabled";case"button":case"optgroup":return t==="disabled"}return!1}function st(e){return`\`${e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/,"\\${")}\``}var qt=class wr{static nextBlockId=1;varName;blockName;dynamicTagName=null;isRoot=!1;hasDynamicChildren=!1;children=[];data=[];dom;currentDom;childNumber=0;target;type;parentVar="";id;constructor(t,n){this.id=wr.nextBlockId++,this.varName="b"+this.id,this.blockName="block"+this.id,this.target=t,this.type=n}insertData(t,n="d"){let r=M(n);return this.target.addLine(`let ${r} = ${t};`),this.data.push(r)-1}insert(t){this.currentDom?this.currentDom.appendChild(t):this.dom=t}generateExpr(t){if(this.type==="block"){let n=this.children.length,r=this.data.length?`[${this.data.join(", ")}]`:n?"[]":"";return n&&(r+=", ["+this.children.map(i=>i.varName).join(", ")+"]"),this.dynamicTagName?`toggler(${this.dynamicTagName}, ${this.blockName}(${this.dynamicTagName})(${r}))`:`${this.blockName}(${r})`}else if(this.type==="list")return`list(c_block${this.id})`;return t}asXmlString(){let t=ee.createElement("t");return t.appendChild(this.dom),t.innerHTML}};function oe(e,t){return Object.assign({block:null,index:0,forceNewBlock:!0,translate:e.translate,translationCtx:e.translationCtx,tKeyExpr:null,nameSpace:e.nameSpace,tModelSelectedExpr:e.tModelSelectedExpr},t)}var pr=class{name;indentLevel=0;loopLevel=0;loopCtxVars=[];tSetVars=new Map;code=[];hasRoot=!1;deferReturn=!1;needsScopeProtection=!1;on;constructor(e,t){this.name=e,this.on=t||null}addLine(e,t){let n=new Array(this.indentLevel+2).join(" ");t===void 0?this.code.push(n+e):this.code.splice(t,0,n+e)}generateCode(){let e=[];e.push(`function ${this.name}(ctx, node, key = "") {`),this.needsScopeProtection&&e.push(" ctx = Object.create(ctx);");for(let t of this.code)e.push(t);return this.hasRoot||e.push("return text('');"),e.push("}"),e.join(`
20
+ `)}currentKey(e){let t=this.loopLevel?`key${this.loopLevel}`:"key";return e.tKeyExpr&&(t=`${e.tKeyExpr} + ${t}`),t}},mr=["alt","aria-label","aria-placeholder","aria-roledescription","aria-valuetext","label","placeholder","title"],_o=/^(\s*)([\s\S]+?)(\s*)$/,xo=class{blocks=[];nextBlockId=1;isDebug=!1;targets=[];target=new pr("template");templateName;dev;translateFn;translatableAttributes=mr;ast;staticDefs=[];slotNames=new Set;helpers=new Set;constructor(e,t){if(this.translateFn=t.translateFn||(n=>n),t.translatableAttributes){let n=new Set(mr);for(let r of t.translatableAttributes)r.startsWith("-")?n.delete(r.slice(1)):n.add(r);this.translatableAttributes=[...n]}this.dev=t.dev||!1,this.ast=e,this.templateName=t.name,t.name&&(t.name.startsWith("__")?this.target.name=t.name:this.target.name=`template_${t.name.replace(/[^a-zA-Z0-9_$]/g,"_")}`),t.hasGlobalValues&&this.helpers.add("__globals__")}generateCode(){let e=this.ast;this.isDebug=e.type===y.TDebug,qt.nextBlockId=1,ot={},this.compileAST(e,{block:null,index:0,forceNewBlock:!1,translate:!0,translationCtx:"",tKeyExpr:null});let t=[" let { text, createBlock, list, multi, html, toggler } = bdom;"];this.helpers.size&&t.push(`let { ${[...this.helpers].join(", ")} } = helpers;`),this.templateName&&t.push(`// Template name: "${this.templateName}"`);for(let{id:r,expr:i}of this.staticDefs)t.push(`const ${r} = ${i};`);if(this.blocks.length){t.push("");for(let r of this.blocks)if(r.dom){let i=st(r.asXmlString());r.dynamicTagName?(i=i.replace(/^`<\w+/,`\`<\${tag || '${r.dom.nodeName}'}`),i=i.replace(/\w+>`$/,`\${tag || '${r.dom.nodeName}'}>\``),t.push(`let ${r.blockName} = tag => createBlock(${i});`)):t.push(`let ${r.blockName} = createBlock(${i});`)}}if(this.targets.length)for(let r of this.targets)t.push(""),t=t.concat(r.generateCode());t.push(""),t=t.concat("return "+this.target.generateCode());let n=t.join(`
21
+ `);if(this.isDebug){let r=`[Owl Debug]
22
+ ${n}`;console.log(r)}return n}compileInNewTarget(e,t,n,r){let i=M(e),s=this.target,o=new pr(i,r);return this.targets.push(o),this.target=o,this.compileAST(t,oe(n)),this.target=s,i}addLine(e,t){this.target.addLine(e,t)}define(e,t){this.addLine(`const ${e} = ${t};`)}insertAnchor(e,t=e.children.length){let n=`block-child-${t}`,r=ee.createElement(n);e.insert(r)}createBlock(e,t,n){let r=this.target.hasRoot,i=new qt(this.target,t);return r||(this.target.hasRoot=!0,i.isRoot=!0),e&&(e.children.push(i),e.type==="list"&&(i.parentVar=`c_block${e.id}`)),i}insertBlock(e,t,n){let r=t.generateExpr(e);if(t.parentVar){let i=this.target.currentKey(n);this.helpers.add("withKey"),this.addLine(`${t.parentVar}[${n.index}] = withKey(${r}, ${i});`);return}n.tKeyExpr&&(r=`toggler(${n.tKeyExpr}, ${r})`),t.isRoot&&!this.target.deferReturn?(this.target.on&&(r=this.wrapWithEventCatcher(r,this.target.on)),this.addLine(`return ${r};`)):this.define(t.varName,r)}translate(e,t){let n=_o.exec(e);return n[1]+this.translateFn(n[2],t)+n[3]}compileAST(e,t){switch(e.type){case y.Text:return this.compileText(e,t);case y.DomNode:return this.compileTDomNode(e,t);case y.TOut:return this.compileTOut(e,t);case y.TIf:return this.compileTIf(e,t);case y.TForEach:return this.compileTForeach(e,t);case y.TKey:return this.compileTKey(e,t);case y.Multi:return this.compileMulti(e,t);case y.TCall:return this.compileTCall(e,t);case y.TCallBlock:return this.compileTCallBlock(e,t);case y.TSet:return this.compileTSet(e,t);case y.TComponent:return this.compileComponent(e,t);case y.TDebug:return this.compileDebug(e,t);case y.TLog:return this.compileLog(e,t);case y.TCallSlot:return this.compileTCallSlot(e,t);case y.TTranslation:return this.compileTTranslation(e,t);case y.TTranslationContext:return this.compileTTranslationContext(e,t)}}compileDebug(e,t){return this.addLine("debugger;"),e.content?this.compileAST(e.content,t):null}compileLog(e,t){return this.addLine(`console.log(${x(e.expr)});`),e.content?this.compileAST(e.content,t):null}compileText(e,t){let{block:n,forceNewBlock:r}=t,i=e.value;if(i&&t.translate!==!1&&(i=this.translate(i,t.translationCtx)),t.inPreTag||(i=i.replace(Ao," ")),!n||r)n=this.createBlock(n,"text",t),this.insertBlock(`text(${st(i)})`,n,{...t,forceNewBlock:r&&!n});else{let s=e.type===y.Text?ee.createTextNode:ee.createComment;n.insert(s.call(ee,i))}return n.varName}generateHandlerCode(e,t){let n=e.split(".").slice(1).map(u=>{if(!Co.has(u))throw new _(`Unknown event modifier: '${u}'`);return`"${u}"`}),r="";n.length&&(r=`${n.join(",")}, `);let i=x(t);if(!i.trim())return`[${r}, ctx]`;let s,o=i.match(/^(\([^)]*\))\s*=>/),l=!o&&i.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=>/);if(o){let u=o[1].slice(1,-1).trim(),c=i.slice(o[0].length);s=u?`(ctx,${u})=>${c}`:`(ctx)=>${c}`}else if(l){let u=i.slice(l[0].length);s=`(ctx,${l[1]})=>${u}`}else this.helpers.add("callHandler"),s=`(ctx, ev) => callHandler(${i}, ctx, ev)`;let a=M("hdlr_fn");return this.staticDefs.push({id:a,expr:s}),`[${r}${a}, ctx]`}compileTDomNode(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r||e.dynamicTag!==null||e.ns,s=this.target.code.length;if(i&&((e.dynamicTag||t.tKeyExpr||e.ns)&&t.block&&this.insertAnchor(t.block),n=this.createBlock(n,"block",t),this.blocks.push(n),e.dynamicTag)){let c=M("tag");this.define(c,x(e.dynamicTag)),n.dynamicTagName=c}let o={};for(let c in e.attrs){let h,f;if(c.startsWith("t-attf")){h=Gt(e.attrs[c]);let p=n.insertData(h,"attr");f=c.slice(7),o["block-attribute-"+p]=f}else if(c.startsWith("t-att"))if(f=c==="t-att"?null:c.slice(6),h=x(e.attrs[c]),f&&Do(e.tag,f)){f==="readonly"&&(f="readOnly"),f==="value"?h=`new String((${h}) === 0 ? 0 : ((${h}) || ""))`:h=`new Boolean(${h})`;let p=n.insertData(h,"prop");o[`block-property-${p}`]=f}else{let p=n.insertData(h,"attr");c==="t-att"?o["block-attributes"]=String(p):o[`block-attribute-${p}`]=f}else if(this.translatableAttributes.includes(c)){let p=e.attrsTranslationCtx?.[c]||t.translationCtx;o[c]=this.translateFn(e.attrs[c],p)}else h=`"${e.attrs[c]}"`,f=c,o[c]=e.attrs[c];if(f==="value"&&t.tModelSelectedExpr){let p=n.insertData(`${t.tModelSelectedExpr} === ${h}`,"attr");o[`block-attribute-${p}`]="selected"}}let l;if(e.model){let{hasDynamicChildren:c,expr:h,eventType:f,shouldNumberize:p,shouldTrim:m,targetAttr:w,specialInitTargetAttr:d,isProxy:C}=e.model,T,g;if(C){let b=x(h);T=b,g=E=>`${b} = ${E}`}else{let b=M("expr"),E=x(h);this.helpers.add("modelExpr"),this.define(b,`modelExpr(${E})`),T=`${b}()`,g=D=>`${b}.set(${D})`}let $;if(d){let b=w in o&&`'${o[w]}'`;if(!b&&e.attrs){let E=e.attrs[`t-att-${w}`];E&&(b=x(E))}$=n.insertData(`${T} === ${b}`,"prop"),o[`block-property-${$}`]=d}else c?(l=`${M("bValue")}`,this.define(l,T)):($=n.insertData(T,"prop"),o[`block-property-${$}`]=w);this.helpers.add("toNumber");let v=`ev.target.${w}`;v=m?`${v}.trim()`:v,v=p?`toNumber(${v})`:v;let N=`[(ctx, ev) => { ${g(v)}; }, ctx]`;$=n.insertData(N,"hdlr"),o[`block-handler-${$}`]=f}for(let c in e.on){let h=this.generateHandlerCode(c,e.on[c]),f=n.insertData(h,"hdlr");o[`block-handler-${f}`]=c}if(e.ref){let c=x(e.ref);this.helpers.add("createRef");let h=`createRef(${c})`,f=n.insertData(h,"ref");o["block-ref"]=String(f)}let a=e.ns||t.nameSpace,u=a?ee.createElementNS(a,e.tag):ee.createElement(e.tag);for(let[c,h]of Object.entries(o))c==="class"&&h===""||u.setAttribute(c,h);if(n.insert(u),e.content.length){let c=n.currentDom;n.currentDom=u;let h=e.content;for(let f=0;f<h.length;f++){let p=e.content[f],m=oe(t,{block:n,index:n.childNumber,forceNewBlock:!1,tKeyExpr:t.tKeyExpr,nameSpace:a,tModelSelectedExpr:l,inPreTag:t.inPreTag||e.tag==="pre"});this.compileAST(p,m)}n.currentDom=c}if(i&&(this.insertBlock(`${n.blockName}(ddd)`,n,t),n.children.length&&n.hasDynamicChildren)){let c=this.target.code,h=n.children.slice(),f=h.shift();for(let p=s;p<c.length&&!(c[p].trimStart().startsWith(`const ${f.varName} `)&&(c[p]=c[p].replace(`const ${f.varName}`,f.varName),f=h.shift(),!f));p++);this.addLine(`let ${n.children.map(p=>p.varName).join(", ")};`,s)}return n.varName}compileZero(){this.helpers.add("zero");let e=this.slotNames.has(dr);this.slotNames.add(dr);let t=this.target.loopLevel?`key${this.target.loopLevel}`:"key";return e&&(t=this.generateComponentKey(t)),`ctx[zero]?.(node, ${t}) || text("")`}compileTOut(e,t){let{block:n}=t;n&&this.insertAnchor(n),n=this.createBlock(n,"html",t);let r;if(e.expr==="0")r=this.compileZero();else if(e.body){let i=null;i=qt.nextBlockId;let s=oe(t);this.compileAST({type:y.Multi,content:e.body},s),this.helpers.add("safeOutput"),r=`safeOutput(${x(e.expr)}, b${i})`}else this.helpers.add("safeOutput"),r=`safeOutput(${x(e.expr)})`;return this.insertBlock(r,n,t),n.varName}compileTIfBranch(e,t,n){this.target.indentLevel++;let r=t.children.length;this.compileAST(e,oe(n,{block:t,index:n.index})),t.children.length>r&&this.insertAnchor(t,r),this.target.indentLevel--}compileTIf(e,t,n){let{block:r,forceNewBlock:i}=t,s=this.target.code.length,o=!r||r.type!=="multi"&&i;if(r&&(r.hasDynamicChildren=!0),(!r||r.type!=="multi"&&i)&&(r=this.createBlock(r,"multi",t)),this.addLine(`if (${x(e.condition)}) {`),this.compileTIfBranch(e.content,r,t),e.tElif)for(let l of e.tElif)this.addLine(`} else if (${x(l.condition)}) {`),this.compileTIfBranch(l.content,r,t);if(e.tElse&&(this.addLine("} else {"),this.compileTIfBranch(e.tElse,r,t)),this.addLine("}"),o){if(r.children.length){let a=this.target.code,u=r.children.slice(),c=u.shift();for(let h=s;h<a.length&&!(a[h].trimStart().startsWith(`const ${c.varName} `)&&(a[h]=a[h].replace(`const ${c.varName}`,c.varName),c=u.shift(),!c));h++);this.addLine(`let ${r.children.map(h=>h.varName).join(", ")};`,s)}let l=r.children.map(a=>a.varName).join(", ");this.insertBlock(`multi([${l}])`,r,t)}return r.varName}compileTForeach(e,t){let{block:n}=t;n&&this.insertAnchor(n),n=this.createBlock(n,"list",t),this.target.loopLevel++;let r=`i${this.target.loopLevel}`,i=M("ctx");this.addLine(`const ${i} = ctx;`),this.target.loopCtxVars.push(i);let s=`v_block${n.id}`,o=`k_block${n.id}`,l=`l_block${n.id}`,a=`c_block${n.id}`;this.helpers.add("prepareList"),this.define(`[${o}, ${s}, ${l}, ${a}]`,`prepareList(${x(e.collection)});`),this.dev&&this.define(`keys${n.id}`,"new Set()"),this.addLine(`for (let ${r} = 0; ${r} < ${l}; ${r}++) {`),this.target.indentLevel++,this.addLine(`let ctx = Object.create(${i});`),this.addLine(`ctx[\`${e.elem}\`] = ${o}[${r}];`),e.noFlags&ne.First||this.addLine(`ctx[\`${e.elem}_first\`] = ${r} === 0;`),e.noFlags&ne.Last||this.addLine(`ctx[\`${e.elem}_last\`] = ${r} === ${o}.length - 1;`),e.noFlags&ne.Index||this.addLine(`ctx[\`${e.elem}_index\`] = ${r};`),e.noFlags&ne.Value||this.addLine(`ctx[\`${e.elem}_value\`] = ${s}[${r}];`),this.define(`key${this.target.loopLevel}`,e.key?x(e.key):r),this.dev&&(this.helpers.add("OwlError"),this.addLine(`if (keys${n.id}.has(String(key${this.target.loopLevel}))) { throw new OwlError(\`Got duplicate key in t-foreach: \${key${this.target.loopLevel}}\`)}`),this.addLine(`keys${n.id}.add(String(key${this.target.loopLevel}));`));let u=oe(t,{block:n,index:r});return this.compileAST(e.body,u),this.target.indentLevel--,this.target.loopLevel--,this.target.loopCtxVars.pop(),this.addLine("}"),this.insertBlock("l",n,t),n.varName}compileTKey(e,t){let n=M("tKey_");return this.define(n,x(e.expr)),t=oe(t,{tKeyExpr:n,block:t.block,index:t.index}),this.compileAST(e.content,t)}compileMulti(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r,s=this.target.code.length;if(i){let l=e.content.filter(u=>!u.hasNoRepresentation).length,a=null;if(l<=1){let u=!this.target.hasRoot&&e.content[e.content.length-1].hasNoRepresentation;u&&(this.target.deferReturn=!0);for(let c of e.content){let h=this.compileAST(c,t);a=a||h}return u&&(this.target.deferReturn=!1,this.addLine(`return ${a};`)),a}n=this.createBlock(n,"multi",t)}let o=0;for(let l=0,a=e.content.length;l<a;l++){let u=e.content[l],c=!u.hasNoRepresentation,h=oe(t,{block:n,index:o,forceNewBlock:c});this.compileAST(u,h),c&&o++}if(i){if(n.hasDynamicChildren&&n.children.length){let a=this.target.code,u=n.children.slice(),c=u.shift();for(let h=s;h<a.length&&!(a[h].trimStart().startsWith(`const ${c.varName} `)&&(a[h]=a[h].replace(`const ${c.varName}`,c.varName),c=u.shift(),!c));h++);this.addLine(`let ${n.children.map(h=>h.varName).join(", ")};`,s)}let l=n.children.map(a=>a.varName).join(", ");this.insertBlock(`multi([${l}])`,n,t)}return n.varName}compileTCall(e,t){let{block:n,forceNewBlock:r}=t,i=e.attrs?this.formatPropObject(e.attrs,e.attrsTranslationCtx,t.translationCtx):[],o=at.test(e.name)?Gt(e.name):"`"+e.name+"`";if(n&&!r&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),e.body){let c=this.compileInNewTarget("callBody",e.body,t),h=M("lazyBlock");this.define(h,`${c}.bind(this, ctx)`),this.helpers.add("zero"),i.push(`[zero]: ${h}`)}let l,a=`{${i.join(", ")}}`;if(e.context){let c=M("ctx");this.addLine(`const ${c} = ${x(e.context)};`),i.length?l=`Object.assign({this: ${c}}, ${a})`:l=`{this: ${c}}`}else i.length===0?l="ctx":l=`Object.assign(Object.create(ctx), ${a})`;let u=this.generateComponentKey();return this.helpers.add("callTemplate"),this.insertBlock(`callTemplate(${o}, this, app, ${l}, node, ${u})`,n,{...t,forceNewBlock:!n}),n.varName}compileTCallBlock(e,t){let{block:n,forceNewBlock:r}=t;return n&&(r||this.insertAnchor(n)),n=this.createBlock(n,"multi",t),this.insertBlock(x(e.name),n,{...t,forceNewBlock:!n}),n.varName}compileTSet(e,t){let n=e.value?x(e.value||""):"null",r=this.target.loopLevel===0,i=this.target.tSetVars.get(e.name),s=i!==void 0&&this.target.loopLevel>i;if(e.body){this.helpers.add("LazyValue");let o={type:y.Multi,content:e.body},l=this.compileInNewTarget("value",o,t),a=this.target.currentKey(t),u=`new LazyValue(${l}, ctx, this, node, ${a})`;if(u=e.value?u?`withDefault(${n}, ${u})`:n:u,this.helpers.add("withDefault"),s){let c=this.target.loopCtxVars[i];this.addLine(`${c}[\`${e.name}\`] = ${u};`)}else r?(this.target.needsScopeProtection=!0,this.addLine(`ctx[\`${e.name}\`] = ${u};`),this.target.tSetVars.set(e.name,0)):(this.addLine(`ctx[\`${e.name}\`] = ${u};`),this.target.tSetVars.set(e.name,this.target.loopLevel))}else{let o;if(e.defaultValue){let l=st(t.translate?this.translate(e.defaultValue,t.translationCtx):e.defaultValue);e.value?(this.helpers.add("withDefault"),o=`withDefault(${n}, ${l})`):o=l}else o=n;if(s){let l=this.target.loopCtxVars[i];this.addLine(`${l}["${e.name}"] = ${o};`)}else r?(this.target.needsScopeProtection=!0,this.addLine(`ctx["${e.name}"] = ${o};`),this.target.tSetVars.set(e.name,0)):(this.addLine(`ctx["${e.name}"] = ${o};`),this.target.tSetVars.set(e.name,this.target.loopLevel))}return null}generateComponentKey(e="key"){let t=[M("__")];for(let n=0;n<this.target.loopLevel;n++)t.push(`\${key${n+1}}`);return`${e} + \`${t.join("__")}\``}generateSignalCacheKey(){let e=[M("__sig_")];for(let t=0;t<this.target.loopLevel;t++)e.push(`\${key${t+1}}`);return`\`${e.join("__")}\``}formatProp(e,t,n,r){if(e.endsWith(".translate")){let i=n?.[e]||r;t=st(this.translateFn(t,i))}else t=x(t);if(e.includes(".")){let[i,s]=e.split(".");switch(e=i,s){case"bind":t=`(${t}).bind(this)`;break;case"alike":case"translate":break;default:throw new _(`Invalid prop suffix: ${s}`)}}return e=/^[a-z_]+$/i.test(e)?e:`'${e}'`,`${e}: ${t||void 0}`}formatPropObject(e,t,n){return Object.entries(e).map(([r,i])=>this.formatProp(r,i,t,n))}getPropString(e,t){let n=`{${e.join(",")}}`;return t&&(n=`Object.assign({}, ${x(t)}${e.length?", "+n:""})`),n}compileComponent(e,t){let{block:n}=t,r="slots"in(e.props||{}),i=[],s=[];for(let p in e.props||{}){let[m,w]=p.split(".");if(w==="signal"){let g=x(e.props[p]),$=/^[a-z_]+$/i.test(m)?m:`'${m}'`;this.helpers.add("toSignal");let v=this.generateSignalCacheKey();i.push(`${$}: toSignal(node, ${v}, ${g})`);continue}if(w){i.push(this.formatProp(p,e.props[p],e.propsTranslationCtx,t.translationCtx));continue}let{expr:d,freeVariables:C}=yr(e.props[p]),T=/^[a-z_]+$/i.test(m)?m:`'${m}'`;if(i.push(`${T}: ${d||void 0}`),C)for(let g of C){let $=`${m}.${g}`;s.push(`"${$}"`),i.push(`"${$}": ctx['${g}']`)}else s.push(`"${m}"`)}let o="";if(e.slots){let p=[];for(let m in e.slots){let w=e.slots[m],d=[];if(w.content){let g=this.compileInNewTarget("slot",w.content,t,w.on);d.push(`__render: ${g}.bind(this), __ctx: ctx`)}let C=e.slots[m].scope;C&&d.push(`__scope: "${C}"`),e.slots[m].attrs&&d.push(...this.formatPropObject(e.slots[m].attrs,e.slots[m].attrsTranslationCtx,t.translationCtx));let T=`{${d.join(", ")}}`;p.push(`'${m}': ${T}`)}o=`{${p.join(", ")}}`}o&&!(e.dynamicProps||r)&&(this.helpers.add("markRaw"),i.push(`slots: markRaw(${o})`));let l=this.getPropString(i,e.dynamicProps),a;(o&&(e.dynamicProps||r)||this.dev)&&(a=M("props"),this.define(a,l),l=a),o&&(e.dynamicProps||r)&&(this.helpers.add("markRaw"),this.addLine(`${a}.slots = markRaw(Object.assign(${o}, ${a}.slots))`));let u;e.isDynamic?(u=M("Comp"),this.define(u,x(e.name))):u=`\`${e.name}\``,n&&(t.forceNewBlock===!1||t.tKeyExpr)&&this.insertAnchor(n);let c=this.generateComponentKey();t.tKeyExpr&&(c=`${t.tKeyExpr} + ${c}`);let h=M("comp");this.helpers.add("createComponent"),this.staticDefs.push({id:h,expr:`createComponent(app, ${e.isDynamic?null:u}, ${!e.isDynamic}, ${!!e.slots}, ${!!e.dynamicProps}, [${s}])`}),e.isDynamic&&(c=`(${u}).name + ${c}`);let f=`${h}(${l}, ${c}, node, this, ${e.isDynamic?u:null})`;return e.isDynamic&&(f=`toggler(${u}, ${f})`),e.on&&(f=this.wrapWithEventCatcher(f,e.on)),n=this.createBlock(n,"multi",t),this.insertBlock(f,n,t),n.varName}wrapWithEventCatcher(e,t){this.helpers.add("createCatcher");let n=M("catcher"),r={},i=[];for(let s in t){let o=M("hdlr"),l=i.push(o)-1;r[s]=l;let a=this.generateHandlerCode(s,t[s]);this.define(o,a)}return this.staticDefs.push({id:n,expr:`createCatcher(${JSON.stringify(r)})`}),`${n}(${e}, [${i.join(",")}])`}compileTCallSlot(e,t){this.helpers.add("callSlot");let{block:n}=t,r,i,s=!1,o=!1;e.name.match(at)?(s=!0,o=!0,i=Gt(e.name)):(i="'"+e.name+"'",o=o||this.slotNames.has(e.name),this.slotNames.add(e.name));let l={...e.attrs},a=l["t-props"];delete l["t-props"];let u=this.target.loopLevel?`key${this.target.loopLevel}`:"key";o&&(u=this.generateComponentKey(u));let c=e.attrs?this.formatPropObject(l,e.attrsTranslationCtx,t.translationCtx):[],h=this.getPropString(c,a);if(e.defaultContent){let f=this.compileInNewTarget("defaultContent",e.defaultContent,t);r=`callSlot(ctx, node, ${u}, ${i}, ${s}, ${h}, ${f}.bind(this))`}else if(s){let f=M("slot");this.define(f,i),r=`toggler(${f}, callSlot(ctx, node, ${u}, ${f}, ${s}, ${h}))`}else r=`callSlot(ctx, node, ${u}, ${i}, ${s}, ${h})`;return e.on&&(r=this.wrapWithEventCatcher(r,e.on)),n&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),this.insertBlock(r,n,{...t,forceNewBlock:!1}),n.varName}compileTTranslation(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translate:!1})):null}compileTTranslationContext(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translationCtx:e.translationCtx})):null}};function Tr(e,t={hasGlobalValues:!1}){let n=ro(e,t.customDirectives),i=new xo(n,t).generateCode();try{return new Function("app, bdom, helpers",i)}catch(s){let{name:o}=t,l=o?`template "${o}"`:"anonymous template",a=new _(`Failed to compile ${l}: ${s.message}
23
+
24
+ generated code:
25
+ function(app, bdom, helpers) {
26
+ ${i}
27
+ }`);throw a.cause=s,a}}Me.prototype._compileTemplate=function(t,n){return Tr(n,{name:t,dev:this.dev,translateFn:this.translateFn,translatableAttributes:this.translatableAttributes,customDirectives:this.customDirectives,hasGlobalValues:this.hasGlobalValues})};Me.prototype._parseXML=function(t){return en(t)};return Cr(Oo);})();