@odoo/owl 3.0.0-alpha.21 → 3.0.0-alpha.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
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]?$.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?$.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?x.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?x.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?x.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}}}function $(t){t=""===t?{}:w(t);const e=this.classList;for(let n in t)u.call(e,n)}function x(t,e){e=""===e?{}:w(e),t=""===t?{}:w(t);const n=this.classList;for(let o in e)o in t||h.call(n,o);for(let o in t)o in e||u.call(n,o)}const N={};function k(t){if(t in N)return N[t];const e=t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase());return N[t]=e,e}function E(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&&(e[o]=s)}return e}case"object":for(let n in t){const o=t[n];(o||0===o)&&(e[k(n)]=String(o))}return e;default:return{}}}function T(t){t=""===t?{}:E(t);const e=this.style;for(let n in t)e.setProperty(n,t[n])}function A(t,e){e=""===e?{}:E(e),t=""===t?{}:E(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])}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=$,o=x):"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,n){try{t.destroy()}catch(t){}return Object.assign(new e("[Owl] Unhandled error. Destroying the root component"),{cause:n})}function Zt(t,e){if(!t)return!1;const n=t.fiber;n&&Gt.set(n,e);const o=qt.get(t);if(o){let n=!1;const s=()=>Xt(t.app,e);for(let t=o.length-1;t>=0;t--)try{o[t](e,s),n=!0;break}catch(t){e=t}if(n)return!0}return Zt(t.parent,e)}function Yt(t){let{error:e}=t;const n="node"in t?t.node:t.fiber.node,o="fiber"in t?t.fiber:n.fiber;if(o){let t=o;do{t.node.fiber=t,Gt.set(t,e),t=t.parent}while(t);Gt.set(o.root,e)}if(!Zt(n,e))throw Xt(n.app,e)}function Jt(){throw new e("Attempted to render cancelled fiber")}function Qt(t){let e=0;for(let n of t){let t=n.node;n.render=Jt,0===t.status&&t.cancel(),t.fiber=null,n.bdom?t.forceNextRender=!0:e++,e+=Qt(n.children)}return e}class te{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}this._render()}_render(){const t=this.node,e=this.root;if(e){const n=Vt();Kt(t.signalComputation),Wt(t.signalComputation);try{this.bdom=!0,this.bdom=t.renderFn()}catch(e){t.app.handleError({node:t,error:e})}Wt(n),e.setCounter(e.counter-1)}}}class ee extends te{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(o){for(let t of n)t.node.willUnmount=[];this.locked=!1,t.app.handleError({fiber:e||this,error:o})}}setCounter(t){this.counter=t,0===t&&this.node.app.scheduler.flush()}}class ne extends ee{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){this.node.app.handleError({fiber:t,error:e})}}}class oe{el;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}mountComponent(t,e){const n=new ne(this,t,e);this.app.scheduler.addFiber(n);let o=Vt();this.initiateRender(n),Wt(o)}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 void this.app.handleError({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-Qt(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 ee&&(e.mounted=e instanceof ne?[e]:[])),e}const n=new ee(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){this.app.handleError({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=function(t,e){let n=t.fiber;return n&&(Qt(n.children),n.root=null),new te(t,e)}(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 se=Symbol("Key changes"),ie=Object.prototype.toString,re=Object.prototype.hasOwnProperty;function le(t){if("object"!=typeof t||null===t)return!1;const e=he(t);return!!(Array.isArray(e)||e instanceof Set||e instanceof Map||e instanceof WeakMap)||"[object Object]"===ie.call(e)}function ae(t,e){return!e&&le(t)?ye(t):t}const ce=new WeakSet;function ue(t){return ce.add(t),t}function he(t){return me.has(t)?me.get(t):t}const de=new WeakMap;function fe(t,e,n){Pt(n??function(t,e){let n=de.get(t);n||(n=new Map,de.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 pe(t,e,n){if(!n){const o=de.get(t);if(!o)return;if(!o.has(e))return;n=o.get(e)}Mt(n)}const me=new WeakMap,ge=new WeakMap;function be(t,n){if(!le(t))throw new e("Cannot make the given value reactive");if(ce.has(t))return t;if(me.has(t))return t;const o=ge.get(t);if(o)return o;let s;s=t instanceof Map?Te(t,"Map",n):t instanceof Set?Te(t,"Set",n):t instanceof WeakMap?Te(t,"WeakMap",n):ve(n);const i=new Proxy(t,s);return ge.set(t,i),me.set(i,t),i}function ye(t){return be(t,null)}function ve(t){return{get(e,n,o){fe(e,n,t);const s=Reflect.get(e,n,o);if(t||"object"!=typeof s||null===s)return s;if(!le(s))return s;const i=Object.getOwnPropertyDescriptor(e,n);return!i||i.writable||i.configurable?be(s,null):s},set(e,n,o,s){const i=re.call(e,n),r=Reflect.get(e,n,s),l=Reflect.set(e,n,he(o),s);return!i&&re.call(e,n)&&pe(e,se,t),(r!==Reflect.get(e,n,s)||"length"===n&&Array.isArray(e))&&pe(e,n,t),l},deleteProperty(e,n){const o=Reflect.deleteProperty(e,n);return pe(e,se,t),pe(e,n,t),o},ownKeys:e=>(fe(e,se,t),Reflect.ownKeys(e)),has:(e,n)=>(fe(e,se,t),Reflect.has(e,n))}}function we(t,e,n){return o=>(o=he(o),fe(e,o,n),ae(e[t](o),n))}function $e(t,e,n){return function*(){fe(e,se,n);const o=e.keys();for(const s of e[t]()){const t=o.next().value;fe(e,t,n),yield ae(s,n)}}}function xe(t,e){return function(n,o){fe(t,se,e),t.forEach(function(s,i,r){fe(t,i,e),n.call(o,ae(s,e),ae(i,e),ae(r,e))},o)}}function Ne(t,e,n,o){return(s,i)=>{s=he(s);const r=n.has(s),l=n[e](s),a=n[t](s,i);return r!==n.has(s)&&pe(n,se,o),l!==n[e](s)&&pe(n,s,o),a}}function ke(t,e){return()=>{const n=[...t.keys()];t.clear(),pe(t,se,e);for(const o of n)pe(t,o,e)}}const Ee={Set:(t,e)=>({has:we("has",t,e),add:Ne("add","has",t,e),delete:Ne("delete","has",t,e),keys:$e("keys",t,e),values:$e("values",t,e),entries:$e("entries",t,e),[Symbol.iterator]:$e(Symbol.iterator,t,e),forEach:xe(t,e),clear:ke(t,e),get size(){return fe(t,se,e),t.size}}),Map:(t,e)=>({has:we("has",t,e),get:we("get",t,e),set:Ne("set","get",t,e),delete:Ne("delete","has",t,e),keys:$e("keys",t,e),values:$e("values",t,e),entries:$e("entries",t,e),[Symbol.iterator]:$e(Symbol.iterator,t,e),forEach:xe(t,e),clear:ke(t,e),get size(){return fe(t,se,e),t.size}}),WeakMap:(t,e)=>({has:we("has",t,e),get:we("get",t,e),set:Ne("set","get",t,e),delete:Ne("delete","has",t,e)})};function Te(t,e,n){const o=Ee[e](t,n);return Object.assign(ve(n),{get:(t,e)=>re.call(o,e)?o[e]:(fe(t,e,n),ae(t[e],n))})}const Ae=Object.create;class Ce{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 _e={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=Ae(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:Ce,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 Ce?(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:ue,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=oe.prototype.updateAndRender,h=oe.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)(a(p.props,s)||m.deep||p.forceNextRender)&&(p.forceNextRender=!1,u.call(p,s,m));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 oe(d,s,t,r,i),f[i]=p,h.call(p,new te(p,m))}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)}},De={text:Y,createBlock:ct,list:Nt,multi:U,html:Tt,toggler:l,comment:J};class Se{static registerTemplate(t,e){Oe[t]=e}dev;rawTemplates=Object.create(Oe);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={..._e,__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,De,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 Oe={};function Re(...t){const e="__template__"+Re.nextId++,n=String.raw(...t);return Oe[e]=n,e}Re.nextId=1;const Le="true,false,NaN,null,undefined,debugger,console,window,in,instanceof,new,function,return,eval,void,Math,RegExp,Array,Object,Date,__globals__".split(","),Be=Object.assign(Object.create(null),{and:"&&",or:"||",gt:">",gte:">=",lt:"<",lte:"<="}),Ie=Object.assign(Object.create(null),{"{":"LEFT_BRACE","}":"RIGHT_BRACE","[":"LEFT_BRACKET","]":"RIGHT_BRACKET",":":"COLON",",":"COMMA","(":"LEFT_PAREN",")":"RIGHT_PAREN"}),Pe="...,.,===,==,+,!==,!=,!,||,&&,>=,>,<=,<,?,-,*,/,%,typeof ,=>,=,;,in ,new ,|,&,^,~".split(",");const Me=[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 Pe)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 Be?{type:"OPERATOR",value:Be[e],size:e.length}:{type:"SYMBOL",value:e}}return!1},function(t){const e=t[0];return!(!e||!(e in Ie))&&{type:Ie[e],value:e}}];const je=t=>t&&("LEFT_BRACE"===t.type||"COMMA"===t.type),Ve=t=>t&&("RIGHT_BRACE"===t.type||"COMMA"===t.type),We=new Map([["in "," in "]]);function Fe(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 Me)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&&!Le.includes(t.value);if(c&&e&&("LEFT_BRACE"===a&&je(e)&&Ve(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=>Ke(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=>We.get(t.value)||t.value).join(""),freeVariables:l}}function Ke(t){return Fe(t).expr}const Ue=/\{\{.*?\}\}|\#\{.*?\}/g;function ze(t){return function(t,e){let n=t.match(Ue);if(n&&n[0].length===t.length)return`(${e(t.slice(2,"{"===n[0][0]?-2:-1))})`;let o=t.replace(Ue,t=>"${"+e(t.slice(2,"{"===t[0]?-2:-1))+"}");return"`"+o+"`"}(t,Ke)}const He=Symbol("zero"),Ge=/\s+/g;let qe;"undefined"!=typeof document&&(qe=document.implementation.createDocument(null,null,null));const Xe=new Set(["stop","capture","prevent","self","synthetic","passive"]);let Ze={};function Ye(t=""){return Ze[t]=(Ze[t]||0)+1,t+Ze[t]}function Je(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 Qe(t){return`\`${t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/,"\\${")}\``}class tn{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=tn.nextBlockId++,this.varName="b"+this.id,this.blockName="block"+this.id,this.target=t,this.type=e}insertData(t,e="d"){const n=Ye(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=qe.createElement("t");return t.appendChild(this.dom),t.innerHTML}}function en(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 nn{name;indentLevel=0;loopLevel=0;loopCtxVars=[];tSetVars=new Map;code=[];hasRoot=!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 on=["alt","aria-label","aria-placeholder","aria-roledescription","aria-valuetext","label","placeholder","title"],sn=/^(\s*)([\s\S]+?)(\s*)$/;class rn{blocks=[];nextBlockId=1;isDebug=!1;targets=[];target=new nn("template");templateName;dev;translateFn;translatableAttributes=on;ast;staticDefs=[];slotNames=new Set;helpers=new Set;constructor(t,e){if(this.translateFn=e.translateFn||(t=>t),e.translatableAttributes){const t=new Set(on);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.hasGlobalValues&&this.helpers.add("__globals__")}generateCode(){const t=this.ast;this.isDebug=11===t.type,tn.nextBlockId=1,Ze={},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=Qe(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=Ye(t),i=this.target,r=new nn(s,o);return this.targets.push(r),this.target=r,this.compileAST(e,en(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=qe.createElement(n);t.insert(o)}createBlock(t,e,n){const o=this.target.hasRoot,s=new tn(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.on&&(o=this.wrapWithEventCatcher(o,this.target.on)),this.addLine(`return ${o};`)):this.define(e.varName,o)}translate(t,e){const n=sn.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(${Ke(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(${Qe(t.value)})`,n,{...e,forceNewBlock:o&&!n});else{const e=qe.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(Ge," ")),!n||o)n=this.createBlock(n,"text",e),this.insertBlock(`text(${Qe(s)})`,n,{...e,forceNewBlock:o&&!n});else{const e=0===t.type?qe.createTextNode:qe.createComment;n.insert(e.call(qe,s))}return n.varName}generateHandlerCode(t,n){const o=t.split(".").slice(1).map(t=>{if(!Xe.has(t))throw new e(`Unknown event modifier: '${t}'`);return`"${t}"`});let s="";o.length&&(s=`${o.join(",")}, `);const i=Ke(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=Ye("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=Ye("tag");this.define(e,Ke(t.dynamicTag)),n.dynamicTagName=e}const r={};for(let o in t.attrs){let s,i;if(o.startsWith("t-attf")){s=ze(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=Ke(t.attrs[o]),i&&Je(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=Ke(o);d=t,f=e=>`${t} = ${e}`}else{const t=Ye("expr"),e=Ke(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=Ke(n))}p=n.insertData(`${d} === ${e}`,"prop"),r[`block-property-${p}`]=u}else if(e){l=`${Ye("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=Ke(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?qe.createElementNS(a,t.tag):qe.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=en(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(He);this.slotNames.add(He);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=tn.nextBlockId;const s=en(e);this.compileAST({type:3,content:t.body},s),this.helpers.add("safeOutput"),n=`safeOutput(${Ke(t.expr)}, b${o})`}else this.helpers.add("safeOutput"),n=`safeOutput(${Ke(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,en(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 (${Ke(t.condition)}) {`),this.compileTIfBranch(t.content,o,e),t.tElif)for(let n of t.tElif)this.addLine(`} else if (${Ke(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=Ye("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(${Ke(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?Ke(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=en(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=Ye("tKey_");return this.define(n,Ke(t.expr)),e=en(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){for(let n of t.content){const t=this.compileAST(n,e);o=o||t}return 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=en(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=Ue.test(t.name)?ze(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=Ye("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=Ye("ctx");this.addLine(`const ${e} = ${Ke(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(Ke(t.name),n,{...e,forceNewBlock:!n}),n.varName}compileTSet(t,e){const n=t.value?Ke(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=Qe(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=[Ye("__")];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=Qe(this.translateFn(n,e))}else n=Ke(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({}, ${Ke(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}=Fe(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=Ye("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=Ye("Comp"),this.define(a,Ke(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=Ye("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=Ye("catcher"),o={},s=[];for(let t in e){let n=Ye("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(Ue)?(i=!0,r=!0,o=ze(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=Ye("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 ln=new WeakMap;function an(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),cn(t,n)||{type:0,value:""}}function cn(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 cn(t,n)}}return null}(t,n)||function(t,e){if(t.hasAttribute("t-debug")){t.removeAttribute("t-debug");const n=cn(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=cn(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=cn(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=cn(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=cn(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=cn(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=cn(t,e);if(3===n?.type){return gn(n.content.map(fn))}return fn(n)}(t,n)||function(t,e){const n=t.getAttribute("t-translation-context");if(!n)return null;t.removeAttribute("t-translation-context");const o=cn(t,e);if(3===o?.type){return gn(o.content.map(t=>pn(t,n)))}return pn(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=bn(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=cn(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=cn(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:bn(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=dn.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=cn(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=bn(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&&hn.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=mn(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=mn(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 bn(t,e)}(t,n):function(t,e){if(t.nodeType===Node.TEXT_NODE){let n=t.textContent||"";return e.inPreTag||!un.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 un=/[\r\n]/;const hn=new Set(["svg","g","path"]);const dn=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 fn(t){const e={type:15,content:t};return t?.hasNoRepresentation&&(e.hasNoRepresentation=!0),e}function pn(t,e){const n={type:16,content:t,translationCtx:e};return t?.hasNoRepresentation&&(n.hasNoRepresentation=!0),n}function mn(t,e){const n=[];for(let o of t.childNodes){const t=cn(o,e);t&&(3===t.type?n.push(...t.content):n.push(t))}return n}function gn(t){const e={type:3,content:t};return t.every(t=>t.hasNoRepresentation)&&(e.hasNoRepresentation=!0),e}function bn(t,e){const n=mn(t,e);switch(n.length){case 0:return null;case 1:return n[0];default:return gn(n)}}function yn(t,o={hasGlobalValues:!1}){const s=function(t,e){const o={inPreTag:!1,customDirectives:e};if("string"==typeof t)return an(n(`<t>${t}</t>`).firstChild,o);let s=ln.get(t);return s||(s=an(t.cloneNode(!0),o),ln.set(t,s)),s}(t,o.customDirectives),i=new rn(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 vn(t){const e=It(()=>(Wt(void 0),wn(e),Wt(e),t()),!1);return Vt()?.observers.add(e),Ft(e),function(){const t=Vt();Wt(void 0),wn(e),Wt(t)}}function wn(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),wn(e);t.observers.clear()}class $n{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 xn{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 Nn(t,e){Array.isArray(e)?t.startPlugins(e):t.onDestroyCb.push(vn(()=>{const n=e.items();Ht(()=>t.startPlugins(n))}))}let kn;"undefined"!=typeof window&&(kn=window.requestAnimationFrame.bind(window));class En{static requestAnimationFrame=kn;tasks=new Set;requestAnimationFrame;frame=0;delayedRenders=[];cancelledNodes=new Set;processing=!1;constructor(){this.requestAnimationFrame=En.requestAnimationFrame}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)this.processFiber(t);for(let t of this.tasks)3===t.node.status&&this.tasks.delete(t);this.processing=!1}}processFiber(t){if(t.root!==t)return void this.tasks.delete(t);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)}}let Tn=!1;const An=new Set;"undefined"!=typeof window&&(window.__OWL_DEVTOOLS__||={apps:An,Fiber:te,RootFiber:ee,toRaw:he,proxy:ye});class Cn extends Se{static validateTarget=_;static apps=An;static version="3.0.0-alpha.21";name;scheduler=new En;roots=new Set;pluginManager;constructor(t={}){super(t),this.name=t.name||"",An.add(this),this.pluginManager=new xn(this,{config:t.config}),t.plugins&&Nn(this.pluginManager,t.plugins),t.test&&(this.dev=!0),!this.dev||t.test||Tn||(console.info("Owl is running in 'dev' mode."),Tn=!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 oe(t,n,this,null,null)}catch(t){a=t,s(t)}finally{r()}const c={node:l,promise:i,mount:(t,e)=>(a||(Cn.validateTarget(t),this.mountNode(l,t,o,s,e)),i),destroy:()=>{this.roots.delete(c),l.destroy(),this.scheduler.processTasks()}};return this.roots.add(c),c}mountNode(t,e,n,o,s){let i=qt.get(t);i||(i=[],qt.set(t,i)),i.unshift((t,e)=>{const n=e();o(n)}),t.mounted.push(()=>{n(t.component),i.shift()}),t.mountComponent(e,s)}destroy(){for(let t of this.roots)t.destroy();this.pluginManager.destroy(),this.scheduler.processTasks(),An.delete(this)}handleError(...t){return Yt(...t)}}function _n(t,e,n){const o=e.bind(t.component);if(t.app.dev){const t=e.name?` <${e.name}>`:"";Reflect.defineProperty(o,"name",{value:n+t})}return o}function Dn(t){const e=_t();"component"===e.type?e.node.willDestroy.unshift(_n(e.node,t,"onWillDestroy")):e.manager.onDestroyCb.push(t)}function Sn(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 On(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 Rn(t){return On(t,t=>t.value)}function Ln(t,n,o="Value does not match the type"){const s=In(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 Bn(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 Bn(t,this.value,this.path,this)},withKey(e){return Bn(t,this.value[e],this.path.concat(e),this)}}}function In(t,e){const n=[];return e(Bn(n,t,[])),n}Rn.invalidate=function(t){if("function"!=typeof t||"signal"!==t[Rt]?.type)throw new e(`Value is not a signal (${t})`);Mt(t[Rt])},Rn.Array=function(t){return On(t,t=>be(t.value,t))},Rn.Map=function(t){return On(t,t=>be(t.value,t))},Rn.Object=function(t){return On(t,t=>be(t.value,t))},Rn.Set=function(t){return On(t,t=>be(t.value,t))};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(){},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(t){"boolean"!=typeof t.value&&t.addIssue({message:"value is not a boolean"})},constructor:function(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`})}},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(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(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){Dn(vn(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:Cn.version};Se.prototype._compileTemplate=function(t,e){return yn(e,{name:t,dev:this.dev,translateFn:this.translateFn,translatableAttributes:this.translatableAttributes,customDirectives:this.customDirectives,hasGlobalValues:this.hasGlobalValues})},t.App=Cn,t.Component=St,t.EventBus=D,t.OwlError=e,t.Plugin=$n,t.Registry=class{_map=Rn.Object(Object.create(null));_name;_validation;constructor(t={}){this._name=t.name||"registry",this._validation=t.validation}entries=Sn(()=>Object.entries(this._map()).sort((t,e)=>t[1][0]-e[1][0]).map(([t,e])=>[t,e[1]]));items=Sn(()=>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}')`;Ln(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=Rn.Array([]);_name;_validation;constructor(t={}){this._name=t.name,this._validation=t.validation}items=Sn(()=>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}')`:"";Ln(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=Ln,t.batched=C,t.blockDom=Kn,t.computed=Sn,t.config=function(t,e){const{app:n,manager:o}=_t("plugin");return n.dev&&e&&Ln(o.config,Wn.object({[t]:e}),"Config does not match the type"),o.config[t.endsWith("?")?t.slice(0,-1):t]},t.effect=vn,t.htmlEscape=O,t.markRaw=ue,t.markup=R,t.mount=async function(t,e,n={}){return new Cn(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(_n(e,t,"onMounted"))},t.onPatched=function(t){const{node:e}=_t("component");e.patched.push(_n(e,t,"onPatched"))},t.onWillDestroy=Dn,t.onWillPatch=function(t){const{node:e}=_t("component");e.willPatch.unshift(_n(e,t,"onWillPatch"))},t.onWillStart=function(t){const{node:e}=_t("component");e.willStart.push(_n(e,t,"onWillStart"))},t.onWillUnmount=function(t){const{node:e}=_t("component");e.willUnmount.unshift(_n(e,t,"onWillUnmount"))},t.onWillUpdateProps=function(t){const{node:e}=_t("component");e.willUpdateProps.push(_n(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);Ln(n.props,o,`Invalid component props (${s})`),n.willUpdateProps.push(t=>{Ln(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 xn(n.app,{parent:n.pluginManager,config:e});n.pluginManager=o,Dn(()=>o.destroy()),Nn(o,t)},t.proxy=ye,t.signal=Rn,t.status=function(t){switch(t.__owl__.status){case 0:return"new";case 2:return"cancelled";case 1:return t instanceof $n?"started":"mounted";case 3:return"destroyed"}},t.toRaw=he,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),Dn(()=>t.removeEventListener(e,n,o)))},t.useResource=function(t,e){for(let n of e)t.add(n);Dn(()=>{for(let n of e)t.delete(n)})},t.validateType=In,t.whenReady=function(t){return new Promise(function(t){"loading"!==document.readyState?t(!0):document.addEventListener("DOMContentLoaded",t,!1)}).then(t||function(){})},t.xml=Re,Un.date="2026-04-02T11:14:58.432Z",Un.hash="9ca35d8",Un.url="https://github.com/odoo/owl"}(this.owl=this.owl||{});
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,n){try{t.destroy()}catch(t){}return Object.assign(new e("[Owl] Unhandled error. Destroying the root component"),{cause:n})}function Zt(t,e){if(!t)return!1;const n=t.fiber;n&&Gt.set(n,e);const o=qt.get(t);if(o){let n=!1;const s=()=>Xt(t.app,e);for(let t=o.length-1;t>=0;t--)try{o[t](e,s),n=!0;break}catch(t){e=t}if(n)return!0}return Zt(t.parent,e)}function Yt(t){let{error:e}=t;const n="node"in t?t.node:t.fiber.node,o="fiber"in t?t.fiber:n.fiber;if(o){let t=o;do{t.node.fiber=t,Gt.set(t,e),t=t.parent}while(t);Gt.set(o.root,e)}if(!Zt(n,e))throw Xt(n.app,e)}function Jt(){throw new e("Attempted to render cancelled fiber")}function Qt(t){let e=0;for(let n of t){let t=n.node;n.render=Jt,0===t.status&&t.cancel(),t.fiber=null,n.bdom?t.forceNextRender=!0:e++,e+=Qt(n.children)}return e}class te{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}this._render()}_render(){const t=this.node,e=this.root;if(e){const n=Vt();Kt(t.signalComputation),Wt(t.signalComputation);try{this.bdom=!0,this.bdom=t.renderFn()}catch(e){t.app.handleError({node:t,error:e})}Wt(n),e.setCounter(e.counter-1)}}}class ee extends te{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(o){for(let t of n)t.node.willUnmount=[];this.locked=!1,t.app.handleError({fiber:e||this,error:o})}}setCounter(t){this.counter=t,0===t&&this.node.app.scheduler.flush()}}class ne extends ee{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){this.node.app.handleError({fiber:t,error:e})}}}class oe{el;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}mountComponent(t,e){const n=new ne(this,t,e);this.app.scheduler.addFiber(n);let o=Vt();this.initiateRender(n),Wt(o)}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 void this.app.handleError({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-Qt(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 ee&&(e.mounted=e instanceof ne?[e]:[])),e}const n=new ee(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){this.app.handleError({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=function(t,e){let n=t.fiber;return n&&(Qt(n.children),n.root=null),new te(t,e)}(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 se=Symbol("Key changes"),ie=Object.prototype.toString,re=Object.prototype.hasOwnProperty;function le(t){if("object"!=typeof t||null===t)return!1;const e=he(t);return!!(Array.isArray(e)||e instanceof Set||e instanceof Map||e instanceof WeakMap)||"[object Object]"===ie.call(e)}function ae(t,e){return!e&&le(t)?ye(t):t}const ce=new WeakSet;function ue(t){return ce.add(t),t}function he(t){return me.has(t)?me.get(t):t}const de=new WeakMap;function fe(t,e,n){Pt(n??function(t,e){let n=de.get(t);n||(n=new Map,de.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 pe(t,e,n){if(!n){const o=de.get(t);if(!o)return;if(!o.has(e))return;n=o.get(e)}Mt(n)}const me=new WeakMap,ge=new WeakMap;function be(t,n){if(!le(t))throw new e("Cannot make the given value reactive");if(ce.has(t))return t;if(me.has(t))return t;const o=ge.get(t);if(o)return o;let s;s=t instanceof Map?Te(t,"Map",n):t instanceof Set?Te(t,"Set",n):t instanceof WeakMap?Te(t,"WeakMap",n):ve(n);const i=new Proxy(t,s);return ge.set(t,i),me.set(i,t),i}function ye(t){return be(t,null)}function ve(t){return{get(e,n,o){fe(e,n,t);const s=Reflect.get(e,n,o);if(t||"object"!=typeof s||null===s)return s;if(!le(s))return s;const i=Object.getOwnPropertyDescriptor(e,n);return!i||i.writable||i.configurable?be(s,null):s},set(e,n,o,s){const i=re.call(e,n),r=Reflect.get(e,n,s),l=Reflect.set(e,n,he(o),s);return!i&&re.call(e,n)&&pe(e,se,t),(r!==Reflect.get(e,n,s)||"length"===n&&Array.isArray(e))&&pe(e,n,t),l},deleteProperty(e,n){const o=Reflect.deleteProperty(e,n);return pe(e,se,t),pe(e,n,t),o},ownKeys:e=>(fe(e,se,t),Reflect.ownKeys(e)),has:(e,n)=>(fe(e,se,t),Reflect.has(e,n))}}function we(t,e,n){return o=>(o=he(o),fe(e,o,n),ae(e[t](o),n))}function $e(t,e,n){return function*(){fe(e,se,n);const o=e.keys();for(const s of e[t]()){const t=o.next().value;fe(e,t,n),yield ae(s,n)}}}function xe(t,e){return function(n,o){fe(t,se,e),t.forEach(function(s,i,r){fe(t,i,e),n.call(o,ae(s,e),ae(i,e),ae(r,e))},o)}}function Ne(t,e,n,o){return(s,i)=>{s=he(s);const r=n.has(s),l=n[e](s),a=n[t](s,i);return r!==n.has(s)&&pe(n,se,o),l!==n[e](s)&&pe(n,s,o),a}}function ke(t,e){return()=>{const n=[...t.keys()];t.clear(),pe(t,se,e);for(const o of n)pe(t,o,e)}}const Ee={Set:(t,e)=>({has:we("has",t,e),add:Ne("add","has",t,e),delete:Ne("delete","has",t,e),keys:$e("keys",t,e),values:$e("values",t,e),entries:$e("entries",t,e),[Symbol.iterator]:$e(Symbol.iterator,t,e),forEach:xe(t,e),clear:ke(t,e),get size(){return fe(t,se,e),t.size}}),Map:(t,e)=>({has:we("has",t,e),get:we("get",t,e),set:Ne("set","get",t,e),delete:Ne("delete","has",t,e),keys:$e("keys",t,e),values:$e("values",t,e),entries:$e("entries",t,e),[Symbol.iterator]:$e(Symbol.iterator,t,e),forEach:xe(t,e),clear:ke(t,e),get size(){return fe(t,se,e),t.size}}),WeakMap:(t,e)=>({has:we("has",t,e),get:we("get",t,e),set:Ne("set","get",t,e),delete:Ne("delete","has",t,e)})};function Te(t,e,n){const o=Ee[e](t,n);return Object.assign(ve(n),{get:(t,e)=>re.call(o,e)?o[e]:(fe(t,e,n),ae(t[e],n))})}const Ae=Object.create;class Ce{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 _e={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=Ae(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:Ce,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 Ce?(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:ue,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=oe.prototype.updateAndRender,h=oe.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)(a(p.props,s)||m.deep||p.forceNextRender)&&(p.forceNextRender=!1,u.call(p,s,m));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 oe(d,s,t,r,i),f[i]=p,h.call(p,new te(p,m))}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)}},De={text:Y,createBlock:ct,list:Nt,multi:U,html:Tt,toggler:l,comment:J};class Se{static registerTemplate(t,e){Oe[t]=e}dev;rawTemplates=Object.create(Oe);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={..._e,__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,De,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 Oe={};function Re(...t){const e="__template__"+Re.nextId++,n=String.raw(...t);return Oe[e]=n,e}Re.nextId=1;const Le="true,false,NaN,null,undefined,debugger,console,window,in,instanceof,new,function,return,eval,void,Math,RegExp,Array,Object,Date,__globals__".split(","),Be=Object.assign(Object.create(null),{and:"&&",or:"||",gt:">",gte:">=",lt:"<",lte:"<="}),Ie=Object.assign(Object.create(null),{"{":"LEFT_BRACE","}":"RIGHT_BRACE","[":"LEFT_BRACKET","]":"RIGHT_BRACKET",":":"COLON",",":"COMMA","(":"LEFT_PAREN",")":"RIGHT_PAREN"}),Pe="...,.,===,==,+,!==,!=,!,||,&&,>=,>,<=,<,?,-,*,/,%,typeof ,=>,=,;,in ,new ,|,&,^,~".split(",");const Me=[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 Pe)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 Be?{type:"OPERATOR",value:Be[e],size:e.length}:{type:"SYMBOL",value:e}}return!1},function(t){const e=t[0];return!(!e||!(e in Ie))&&{type:Ie[e],value:e}}];const je=t=>t&&("LEFT_BRACE"===t.type||"COMMA"===t.type),Ve=t=>t&&("RIGHT_BRACE"===t.type||"COMMA"===t.type),We=new Map([["in "," in "]]);function Fe(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 Me)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&&!Le.includes(t.value);if(c&&e&&("LEFT_BRACE"===a&&je(e)&&Ve(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=>Ke(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=>We.get(t.value)||t.value).join(""),freeVariables:l}}function Ke(t){return Fe(t).expr}const Ue=/\{\{.*?\}\}|\#\{.*?\}/g;function ze(t){return function(t,e){let n=t.match(Ue);if(n&&n[0].length===t.length)return`(${e(t.slice(2,"{"===n[0][0]?-2:-1))})`;let o=t.replace(Ue,t=>"${"+e(t.slice(2,"{"===t[0]?-2:-1))+"}");return"`"+o+"`"}(t,Ke)}const He=Symbol("zero"),Ge=/\s+/g;let qe;"undefined"!=typeof document&&(qe=document.implementation.createDocument(null,null,null));const Xe=new Set(["stop","capture","prevent","self","synthetic","passive"]);let Ze={};function Ye(t=""){return Ze[t]=(Ze[t]||0)+1,t+Ze[t]}function Je(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 Qe(t){return`\`${t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/,"\\${")}\``}class tn{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=tn.nextBlockId++,this.varName="b"+this.id,this.blockName="block"+this.id,this.target=t,this.type=e}insertData(t,e="d"){const n=Ye(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=qe.createElement("t");return t.appendChild(this.dom),t.innerHTML}}function en(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 nn{name;indentLevel=0;loopLevel=0;loopCtxVars=[];tSetVars=new Map;code=[];hasRoot=!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 on=["alt","aria-label","aria-placeholder","aria-roledescription","aria-valuetext","label","placeholder","title"],sn=/^(\s*)([\s\S]+?)(\s*)$/;class rn{blocks=[];nextBlockId=1;isDebug=!1;targets=[];target=new nn("template");templateName;dev;translateFn;translatableAttributes=on;ast;staticDefs=[];slotNames=new Set;helpers=new Set;constructor(t,e){if(this.translateFn=e.translateFn||(t=>t),e.translatableAttributes){const t=new Set(on);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.hasGlobalValues&&this.helpers.add("__globals__")}generateCode(){const t=this.ast;this.isDebug=11===t.type,tn.nextBlockId=1,Ze={},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=Qe(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=Ye(t),i=this.target,r=new nn(s,o);return this.targets.push(r),this.target=r,this.compileAST(e,en(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=qe.createElement(n);t.insert(o)}createBlock(t,e,n){const o=this.target.hasRoot,s=new tn(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.on&&(o=this.wrapWithEventCatcher(o,this.target.on)),this.addLine(`return ${o};`)):this.define(e.varName,o)}translate(t,e){const n=sn.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(${Ke(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(${Qe(t.value)})`,n,{...e,forceNewBlock:o&&!n});else{const e=qe.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(Ge," ")),!n||o)n=this.createBlock(n,"text",e),this.insertBlock(`text(${Qe(s)})`,n,{...e,forceNewBlock:o&&!n});else{const e=0===t.type?qe.createTextNode:qe.createComment;n.insert(e.call(qe,s))}return n.varName}generateHandlerCode(t,n){const o=t.split(".").slice(1).map(t=>{if(!Xe.has(t))throw new e(`Unknown event modifier: '${t}'`);return`"${t}"`});let s="";o.length&&(s=`${o.join(",")}, `);const i=Ke(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=Ye("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=Ye("tag");this.define(e,Ke(t.dynamicTag)),n.dynamicTagName=e}const r={};for(let o in t.attrs){let s,i;if(o.startsWith("t-attf")){s=ze(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=Ke(t.attrs[o]),i&&Je(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=Ke(o);d=t,f=e=>`${t} = ${e}`}else{const t=Ye("expr"),e=Ke(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=Ke(n))}p=n.insertData(`${d} === ${e}`,"prop"),r[`block-property-${p}`]=u}else if(e){l=`${Ye("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=Ke(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?qe.createElementNS(a,t.tag):qe.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=en(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(He);this.slotNames.add(He);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=tn.nextBlockId;const s=en(e);this.compileAST({type:3,content:t.body},s),this.helpers.add("safeOutput"),n=`safeOutput(${Ke(t.expr)}, b${o})`}else this.helpers.add("safeOutput"),n=`safeOutput(${Ke(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,en(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 (${Ke(t.condition)}) {`),this.compileTIfBranch(t.content,o,e),t.tElif)for(let n of t.tElif)this.addLine(`} else if (${Ke(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=Ye("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(${Ke(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?Ke(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=en(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=Ye("tKey_");return this.define(n,Ke(t.expr)),e=en(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){for(let n of t.content){const t=this.compileAST(n,e);o=o||t}return 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=en(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=Ue.test(t.name)?ze(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=Ye("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=Ye("ctx");this.addLine(`const ${e} = ${Ke(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(Ke(t.name),n,{...e,forceNewBlock:!n}),n.varName}compileTSet(t,e){const n=t.value?Ke(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=Qe(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=[Ye("__")];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=Qe(this.translateFn(n,e))}else n=Ke(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({}, ${Ke(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}=Fe(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=Ye("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=Ye("Comp"),this.define(a,Ke(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=Ye("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=Ye("catcher"),o={},s=[];for(let t in e){let n=Ye("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(Ue)?(i=!0,r=!0,o=ze(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=Ye("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 ln=new WeakMap;function an(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),cn(t,n)||{type:0,value:""}}function cn(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 cn(t,n)}}return null}(t,n)||function(t,e){if(t.hasAttribute("t-debug")){t.removeAttribute("t-debug");const n=cn(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=cn(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=cn(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=cn(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=cn(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=cn(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=cn(t,e);if(3===n?.type){return gn(n.content.map(fn))}return fn(n)}(t,n)||function(t,e){const n=t.getAttribute("t-translation-context");if(!n)return null;t.removeAttribute("t-translation-context");const o=cn(t,e);if(3===o?.type){return gn(o.content.map(t=>pn(t,n)))}return pn(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=bn(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=cn(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=cn(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:bn(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=dn.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=cn(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=bn(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&&hn.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=mn(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=mn(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 bn(t,e)}(t,n):function(t,e){if(t.nodeType===Node.TEXT_NODE){let n=t.textContent||"";return e.inPreTag||!un.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 un=/[\r\n]/;const hn=new Set(["svg","g","path"]);const dn=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 fn(t){const e={type:15,content:t};return t?.hasNoRepresentation&&(e.hasNoRepresentation=!0),e}function pn(t,e){const n={type:16,content:t,translationCtx:e};return t?.hasNoRepresentation&&(n.hasNoRepresentation=!0),n}function mn(t,e){const n=[];for(let o of t.childNodes){const t=cn(o,e);t&&(3===t.type?n.push(...t.content):n.push(t))}return n}function gn(t){const e={type:3,content:t};return t.every(t=>t.hasNoRepresentation)&&(e.hasNoRepresentation=!0),e}function bn(t,e){const n=mn(t,e);switch(n.length){case 0:return null;case 1:return n[0];default:return gn(n)}}function yn(t,o={hasGlobalValues:!1}){const s=function(t,e){const o={inPreTag:!1,customDirectives:e};if("string"==typeof t)return an(n(`<t>${t}</t>`).firstChild,o);let s=ln.get(t);return s||(s=an(t.cloneNode(!0),o),ln.set(t,s)),s}(t,o.customDirectives),i=new rn(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 vn(t){const e=It(()=>(Wt(void 0),wn(e),Wt(e),t()),!1);return Vt()?.observers.add(e),Ft(e),function(){const t=Vt();Wt(void 0),wn(e),Wt(t)}}function wn(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),wn(e);t.observers.clear()}class $n{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 xn{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 Nn(t,e){Array.isArray(e)?t.startPlugins(e):t.onDestroyCb.push(vn(()=>{const n=e.items();Ht(()=>t.startPlugins(n))}))}let kn;"undefined"!=typeof window&&(kn=window.requestAnimationFrame.bind(window));class En{static requestAnimationFrame=kn;tasks=new Set;requestAnimationFrame;frame=0;delayedRenders=[];cancelledNodes=new Set;processing=!1;constructor(){this.requestAnimationFrame=En.requestAnimationFrame}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)this.processFiber(t);for(let t of this.tasks)3===t.node.status&&this.tasks.delete(t);this.processing=!1}}processFiber(t){if(t.root!==t)return void this.tasks.delete(t);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)}}let Tn=!1;const An=new Set;"undefined"!=typeof window&&(window.__OWL_DEVTOOLS__||={apps:An,Fiber:te,RootFiber:ee,toRaw:he,proxy:ye});class Cn extends Se{static validateTarget=_;static apps=An;static version="3.0.0-alpha.22";name;scheduler=new En;roots=new Set;pluginManager;constructor(t={}){super(t),this.name=t.name||"",An.add(this),this.pluginManager=new xn(this,{config:t.config}),t.plugins&&Nn(this.pluginManager,t.plugins),t.test&&(this.dev=!0),!this.dev||t.test||Tn||(console.info("Owl is running in 'dev' mode."),Tn=!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 oe(t,n,this,null,null)}catch(t){a=t,s(t)}finally{r()}const c={node:l,promise:i,mount:(t,e)=>(a||(Cn.validateTarget(t),this.mountNode(l,t,o,s,e)),i),destroy:()=>{this.roots.delete(c),l.destroy(),this.scheduler.processTasks()}};return this.roots.add(c),c}mountNode(t,e,n,o,s){let i=qt.get(t);i||(i=[],qt.set(t,i)),i.unshift((t,e)=>{const n=e();o(n)}),t.mounted.push(()=>{n(t.component),i.shift()}),t.mountComponent(e,s)}destroy(){for(let t of this.roots)t.destroy();this.pluginManager.destroy(),this.scheduler.processTasks(),An.delete(this)}handleError(...t){return Yt(...t)}}function _n(t,e,n){const o=e.bind(t.component);if(t.app.dev){const t=e.name?` <${e.name}>`:"";Reflect.defineProperty(o,"name",{value:n+t})}return o}function Dn(t){const e=_t();"component"===e.type?e.node.willDestroy.unshift(_n(e.node,t,"onWillDestroy")):e.manager.onDestroyCb.push(t)}function Sn(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 On(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 Rn(t){return On(t,t=>t.value)}function Ln(t,n,o="Value does not match the type"){const s=In(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 Bn(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 Bn(t,this.value,this.path,this)},withKey(e){return Bn(t,this.value[e],this.path.concat(e),this)}}}function In(t,e){const n=[];return e(Bn(n,t,[])),n}Rn.invalidate=function(t){if("function"!=typeof t||"signal"!==t[Rt]?.type)throw new e(`Value is not a signal (${t})`);Mt(t[Rt])},Rn.Array=function(t){return On(t,t=>be(t.value,t))},Rn.Map=function(t){return On(t,t=>be(t.value,t))},Rn.Object=function(t){return On(t,t=>be(t.value,t))},Rn.Set=function(t){return On(t,t=>be(t.value,t))};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(){},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(t){"boolean"!=typeof t.value&&t.addIssue({message:"value is not a boolean"})},constructor:function(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`})}},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(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(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){Dn(vn(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:Cn.version};Se.prototype._compileTemplate=function(t,e){return yn(e,{name:t,dev:this.dev,translateFn:this.translateFn,translatableAttributes:this.translatableAttributes,customDirectives:this.customDirectives,hasGlobalValues:this.hasGlobalValues})},t.App=Cn,t.Component=St,t.EventBus=D,t.OwlError=e,t.Plugin=$n,t.Registry=class{_map=Rn.Object(Object.create(null));_name;_validation;constructor(t={}){this._name=t.name||"registry",this._validation=t.validation}entries=Sn(()=>Object.entries(this._map()).sort((t,e)=>t[1][0]-e[1][0]).map(([t,e])=>[t,e[1]]));items=Sn(()=>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}')`;Ln(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=Rn.Array([]);_name;_validation;constructor(t={}){this._name=t.name,this._validation=t.validation}items=Sn(()=>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}')`:"";Ln(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=Ln,t.batched=C,t.blockDom=Kn,t.computed=Sn,t.config=function(t,e){const{app:n,manager:o}=_t("plugin");return n.dev&&e&&Ln(o.config,Wn.object({[t]:e}),"Config does not match the type"),o.config[t.endsWith("?")?t.slice(0,-1):t]},t.effect=vn,t.htmlEscape=O,t.markRaw=ue,t.markup=R,t.mount=async function(t,e,n={}){return new Cn(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(_n(e,t,"onMounted"))},t.onPatched=function(t){const{node:e}=_t("component");e.patched.push(_n(e,t,"onPatched"))},t.onWillDestroy=Dn,t.onWillPatch=function(t){const{node:e}=_t("component");e.willPatch.unshift(_n(e,t,"onWillPatch"))},t.onWillStart=function(t){const{node:e}=_t("component");e.willStart.push(_n(e,t,"onWillStart"))},t.onWillUnmount=function(t){const{node:e}=_t("component");e.willUnmount.unshift(_n(e,t,"onWillUnmount"))},t.onWillUpdateProps=function(t){const{node:e}=_t("component");e.willUpdateProps.push(_n(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);Ln(n.props,o,`Invalid component props (${s})`),n.willUpdateProps.push(t=>{Ln(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 xn(n.app,{parent:n.pluginManager,config:e});n.pluginManager=o,Dn(()=>o.destroy()),Nn(o,t)},t.proxy=ye,t.signal=Rn,t.status=function(t){switch(t.__owl__.status){case 0:return"new";case 2:return"cancelled";case 1:return t instanceof $n?"started":"mounted";case 3:return"destroyed"}},t.toRaw=he,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),Dn(()=>t.removeEventListener(e,n,o)))},t.useResource=function(t,e){for(let n of e)t.add(n);Dn(()=>{for(let n of e)t.delete(n)})},t.validateType=In,t.whenReady=function(t){return new Promise(function(t){"loading"!==document.readyState?t(!0):document.addEventListener("DOMContentLoaded",t,!1)}).then(t||function(){})},t.xml=Re,Un.date="2026-04-08T13:31:02.500Z",Un.hash="2e9164e",Un.url="https://github.com/odoo/owl"}(this.owl=this.owl||{});
@@ -1 +1 @@
1
- export declare const version = "3.0.0-alpha.21";
1
+ export declare const version = "3.0.0-alpha.22";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/owl",
3
- "version": "3.0.0-alpha.21",
3
+ "version": "3.0.0-alpha.22",
4
4
  "description": "Odoo Web Library (OWL)",
5
5
  "main": "dist/owl.cjs.js",
6
6
  "module": "dist/owl.es.js",
@@ -42,7 +42,7 @@
42
42
  "prettier": "prettier {src/*.ts,src/**/*.ts,tests/*.ts,tests/**/*.ts,doc/*.md,doc/**/*.md,tools/devtools/**/*.js} --write",
43
43
  "check-formatting": "prettier {src/*.ts,src/**/*.ts,tests/*.ts,tests/**/*.ts,doc/*.md,doc/**/*.md,tools/devtools/**/*.js} --check",
44
44
  "lint": "eslint src/**/*.ts tests/**/*.ts",
45
- "release": "node tools/release.js",
45
+ "release": "node tools/release.cjs",
46
46
  "compile_templates": "node tools/compile_owl_templates.mjs"
47
47
  },
48
48
  "bin": {