@odoo/owl 2.0.0-beta-5 → 2.0.0-beta-6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/owl.cjs.js CHANGED
@@ -2372,7 +2372,7 @@ function useState(state) {
2372
2372
  const node = getCurrent();
2373
2373
  let render = batchedRenderFunctions.get(node);
2374
2374
  if (!render) {
2375
- render = batched(node.render.bind(node));
2375
+ render = batched(node.render.bind(node, false));
2376
2376
  batchedRenderFunctions.set(node, render);
2377
2377
  // manual implementation of onWillDestroy to break cyclic dependency
2378
2378
  node.willDestroy.push(clearReactivesForCallback.bind(null, render));
@@ -2480,7 +2480,7 @@ class ComponentNode {
2480
2480
  fiber.render();
2481
2481
  }
2482
2482
  }
2483
- async render(deep = false) {
2483
+ async render(deep) {
2484
2484
  let current = this.fiber;
2485
2485
  if (current && (current.root.locked || current.bdom === true)) {
2486
2486
  await Promise.resolve();
@@ -5013,7 +5013,7 @@ class Component {
5013
5013
  }
5014
5014
  setup() { }
5015
5015
  render(deep = false) {
5016
- this.__owl__.render(deep);
5016
+ this.__owl__.render(deep === true);
5017
5017
  }
5018
5018
  }
5019
5019
  Component.template = "";
@@ -5601,7 +5601,7 @@ exports.whenReady = whenReady;
5601
5601
  exports.xml = xml;
5602
5602
 
5603
5603
 
5604
- __info__.version = '2.0.0-beta-5';
5605
- __info__.date = '2022-04-07T13:36:37.300Z';
5606
- __info__.hash = '1179e84';
5604
+ __info__.version = '2.0.0-beta-6';
5605
+ __info__.date = '2022-04-11T09:01:42.605Z';
5606
+ __info__.hash = '41344ef';
5607
5607
  __info__.url = 'https://github.com/odoo/owl';
@@ -1 +1 @@
1
- "use strict";function t(t){t=t.slice();const e=[];let n;for(;(n=t[0])&&"string"==typeof n;)e.push(t.shift());return{modifiers:e,data:t}}Object.defineProperty(exports,"__esModule",{value:!0});const e={shouldNormalizeDom:!0,mainEventHandler:(e,n,o)=>("function"==typeof e?e(n):Array.isArray(e)&&(e=t(e).data)[0](e[1],n),!1)};class n{constructor(t,e){this.key=t,this.child=e}mount(t,e){this.parentEl=t,this.child.mount(t,e)}moveBefore(t,e){this.child.moveBefore(t?t.child:null,e)}patch(t,e){if(this===t)return;let n=this.child,o=t.child;this.key===t.key?n.patch(o,e):(o.mount(this.parentEl,n.firstNode()),e&&n.beforeRemove(),n.remove(),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 o(t,e){return new n(t,e)}const{setAttribute:r,removeAttribute:i}=Element.prototype,s=DOMTokenList.prototype,l=s.add,a=s.remove,c=Array.isArray,{split:h,trim:u}=String.prototype,d=/\s+/;function f(t,e){switch(e){case!1:case void 0:i.call(this,t);break;case!0:r.call(this,t,"");break;default:r.call(this,t,e)}}function p(t){return function(e){f.call(this,t,e)}}function m(t){if(c(t))f.call(this,t[0],t[1]);else for(let e in t)f.call(this,e,t[e])}function g(t,e){if(c(t)){const n=t[0],o=t[1];if(n===e[0]){if(o===e[1])return;f.call(this,n,o)}else i.call(this,e[0]),f.call(this,n,o)}else{for(let n in e)n in t||i.call(this,n);for(let n in t){const o=t[n];o!==e[n]&&f.call(this,n,o)}}}function b(t){const e={};switch(typeof t){case"string":const n=u.call(t);if(!n)return{};let o=h.call(n,d);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){const t=h.call(n,d);for(let n of t)e[n]=o}}return e;case"undefined":return{};case"number":return{[t]:!0};default:return{[t]:!0}}}function v(t){t=""===t?{}:b(t);const e=this.classList;for(let n in t)l.call(e,n)}function y(t,e){e=""===e?{}:b(e),t=""===t?{}:b(t);const n=this.classList;for(let o in e)o in t||a.call(n,o);for(let o in t)o in e||l.call(n,o)}function w(t){return function(e){this[t]=0===e?0:e||""}}function x(t,e){switch(t){case"input":return"checked"===e||"indeterminate"===e||"value"===e||"readonly"===e||"disabled"===e;case"option":return"selected"===e||"disabled"===e;case"textarea":return"value"===e||"readonly"===e||"disabled"===e;case"select":return"value"===e||"disabled"===e;case"button":case"optgroup":return"disabled"===e}return!1}function k(t){const n=t.split(".")[0],o=t.includes(".capture");return t.includes(".synthetic")?function(t,n=!1){let o="__event__synthetic_"+t;n&&(o+="_capture");!function(t,n,o=!1){if(E[n])return;document.addEventListener(t,(t=>function(t,n){let o=n.target;for(;null!==o;){const r=o[t];if(r)for(const t of Object.values(r)){if(e.mainEventHandler(t,n,o))return}o=o.parentNode}}(n,t)),{capture:o}),E[n]=!0}(t,o,n);const r=N++;function i(t){const e=this[o]||{};e[r]=t,this[o]=e}function s(){delete this[o]}return{setup:i,update:i,remove:s}}(n,o):function(t,n=!1){let o=`__event__${t}_${$++}`;n&&(o+="_capture");function r(t){const n=t.currentTarget;if(!n||!document.contains(n))return;const r=n[o];r&&e.mainEventHandler(r,t,n)}function i(e){this[o]=e,this.addEventListener(t,r,{capture:n})}function s(){delete this[o],this.removeEventListener(t,r,{capture:n})}function l(t){this[o]=t}return{setup:i,update:l,remove:s}}(n,o)}let $=1;let N=1;const E={};const A=Node.prototype,T=A.insertBefore,_=(S=A,C="textContent",Object.getOwnPropertyDescriptor(S,C)).set;var S,C;const L=A.removeChild;class D{constructor(t){this.children=t}mount(t,e){const n=this.children,o=n.length,r=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("");r[i]=n,T.call(t,n,e)}}this.anchors=r,this.parentEl=t}moveBefore(t,e){if(t){const n=t.children[0];e=(n?n.firstNode():t.anchors[0])||null}const n=this.children,o=this.parentEl,r=this.anchors;for(let t=0,i=n.length;t<i;t++){let i=n[t];if(i)i.moveBefore(null,e);else{const n=r[t];T.call(o,n,e)}}}patch(t,e){if(this===t)return;const n=this.children,o=t.children,r=this.anchors,i=this.parentEl;for(let t=0,s=n.length;t<s;t++){const s=n[t],l=o[t];if(s)if(l)s.patch(l,e);else{const o=s.firstNode(),l=document.createTextNode("");r[t]=l,T.call(i,l,o),e&&s.beforeRemove(),s.remove(),n[t]=void 0}else if(l){n[t]=l;const e=r[t];l.mount(i,e),L.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)_.call(t,"");else{const e=this.children,n=this.anchors;for(let o=0,r=e.length;o<r;o++){const r=e[o];r?r.remove():L.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 O(t){return new D(t)}const B=Node.prototype,R=CharacterData.prototype,I=B.insertBefore,P=((t,e)=>Object.getOwnPropertyDescriptor(t,e))(R,"data").set,M=B.removeChild;class j{constructor(t){this.text=t}mountNode(t,e,n){this.parentEl=e,I.call(e,t,n),this.el=t}moveBefore(t,e){const n=t?t.el:e;I.call(this.parentEl,this.el,n)}beforeRemove(){}remove(){M.call(this.parentEl,this.el)}firstNode(){return this.el}toString(){return this.text}}class W extends j{mount(t,e){this.mountNode(document.createTextNode(K(this.text)),t,e)}patch(t){const e=t.text;this.text!==e&&(P.call(this.el,K(e)),this.text=e)}}class F extends j{mount(t,e){this.mountNode(document.createComment(K(this.text)),t,e)}patch(){}}function V(t){return new W(t)}function z(t){return new F(t)}function K(t){switch(typeof t){case"string":return t;case"number":return String(t);case"boolean":return t?"true":"false";default:return t||""}}const H=(t,e)=>Object.getOwnPropertyDescriptor(t,e),U=Node.prototype,q=Element.prototype,G=H(CharacterData.prototype,"data").set,X=H(U,"firstChild").get,Y=H(U,"nextSibling").get,Z=()=>{},J={};function Q(t){if(t in J)return J[t];const n=(new DOMParser).parseFromString(`<t>${t}</t>`,"text/xml").firstChild.firstChild;e.shouldNormalizeDom&&tt(n);const o=et(n),r=rt(o),i=function(t,e){let n=function(t,e){const{refN:n,collectors:o,children:r}=e,i=o.length;e.locations.sort(((t,e)=>t.idx-e.idx));const s=e.locations.map((t=>({refIdx:t.refIdx,setData:t.setData,updateData:t.updateData}))),l=s.length,a=r.length,c=r,h=n>0,u=U.cloneNode,d=U.insertBefore,f=q.remove;class p{constructor(t){this.data=t}beforeRemove(){}remove(){f.call(this.el)}firstNode(){return this.el}moveBefore(t,e){const n=t?t.el:e;d.call(this.parentEl,this.el,n)}toString(){const t=document.createElement("div");return this.mount(t,null),t.innerHTML}mount(e,n){const o=u.call(t,!0);d.call(e,o,n),this.el=o,this.parentEl=e}patch(t,e){}}h&&(p.prototype.mount=function(e,r){const h=u.call(t,!0),f=new Array(n);this.refs=f,f[0]=h;for(let t=0;t<i;t++){const e=o[t];f[e.idx]=e.getVal.call(f[e.prevIdx])}if(l){const t=this.data;for(let e=0;e<l;e++){const n=s[e];n.setData.call(f[n.refIdx],t[e])}}if(d.call(e,h,r),a){const t=this.children;for(let e=0;e<a;e++){const n=t[e];if(n){const t=c[e],o=t.afterRefIdx?f[t.afterRefIdx]:null;n.isOnlyChild=t.isOnlyChild,n.mount(f[t.parentRefIdx],o)}}}this.el=h,this.parentEl=e},p.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 r=e[t],i=o[t];if(r!==i){const e=s[t];e.updateData.call(n[e.refIdx],i,r)}}this.data=o}if(a){let o=this.children;const r=t.children;for(let t=0;t<a;t++){const i=o[t],s=r[t];if(i)s?i.patch(s,e):(e&&i.beforeRemove(),i.remove(),o[t]=void 0);else if(s){const e=c[t],r=e.afterRefIdx?n[e.afterRefIdx]:null;s.mount(n[e.parentRefIdx],r),o[t]=s}}}});return p}(t,e);if(e.cbRefs.length){const t=e.cbRefs,o=e.refList;let r=t.length;n=class extends n{mount(t,e){o.push(new Array(r)),super.mount(t,e);for(let t of o.pop())t()}remove(){super.remove();for(let e of t){(0,this.data[e])(null)}}}}if(e.children.length)return n=class extends n{constructor(t,e){super(t),this.children=e}},n.prototype.beforeRemove=D.prototype.beforeRemove,(t,e=[])=>new n(t,e);return t=>new n(t)}(o.el,r);return J[t]=i,i}function tt(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)tt(t.childNodes.item(e))}else t.remove()}function et(t,e=null,n=null){switch(t.nodeType){case Node.ELEMENT_NODE:{let o=n&&n.currentNS;const r=t.tagName;let i=void 0;const s=[];if(r.startsWith("block-text-")){const t=parseInt(r.slice(11),10);s.push({type:"text",idx:t}),i=document.createTextNode("")}if(r.startsWith("block-child-")){n.isRef||nt(n);const t=parseInt(r.slice(12),10);s.push({type:"child",idx:t}),i=document.createTextNode("")}const l=t.attributes,a=l.getNamedItem("block-ns");if(a&&(l.removeNamedItem("block-ns"),o=a.value),i||(i=o?document.createElementNS(o,r):document.createElement(r)),i instanceof Element)for(let t=0;t<l.length;t++){const e=l[t].name,n=l[t].value;if(e.startsWith("block-handler-")){const t=parseInt(e.slice(14),10);s.push({type:"handler",idx:t,event:n})}else if(e.startsWith("block-attribute-")){const t=parseInt(e.slice(16),10);s.push({type:"attribute",idx:t,name:n,tag:r})}else"block-attributes"===e?s.push({type:"attributes",idx:parseInt(n,10)}):"block-ref"===e?s.push({type:"ref",idx:parseInt(n,10)}):i.setAttribute(l[t].name,n)}const c={parent:e,firstChild:null,nextSibling:null,el:i,info:s,refN:0,currentNS:o};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);s.push({idx:n,type:"child",isOnlyChild:!0})}else{c.firstChild=et(t.firstChild,c,c),i.appendChild(c.firstChild.el);let e=t.firstChild,n=c.firstChild;for(;e=e.nextSibling;)n.nextSibling=et(e,n,c),i.appendChild(n.nextSibling.el),n=n.nextSibling}}return c.info.length&&nt(c),c}case Node.TEXT_NODE:case Node.COMMENT_NODE:return{parent:e,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 Error("boom")}function nt(t){t.isRef=!0;do{t.refN++}while(t=t.parent)}function ot(t){let e=t.parent;for(;e&&e.nextSibling===t;)t=e,e=e.parent;return e}function rt(t,e,n){if(!e){e={collectors:[],locations:[],children:new Array(t.info.filter((t=>"child"===t.type)).length),cbRefs:[],refN:t.refN,refList:[]},n=0}if(t.refN){const o=n,r=t.isRef,i=t.firstChild?t.firstChild.refN:0,s=t.nextSibling?t.nextSibling.refN:0;if(r){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:it,updateData:it});break;case"child":n.isOnlyChild?t.children[n.idx]={parentRefIdx:n.refIdx,isOnlyChild:!0}:t.children[n.idx]={parentRefIdx:ot(e).refIdx,afterRefIdx:n.refIdx};break;case"attribute":{const e=n.refIdx;let o,r;if(x(n.tag,n.name)){const t=w(n.name);r=t,o=t}else"class"===n.name?(r=v,o=y):(r=p(n.name),o=r);t.locations.push({idx:n.idx,refIdx:e,setData:r,updateData:o});break}case"attributes":t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:m,updateData:g});break;case"handler":{const{setup:e,update:o}=k(n.event);t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:e,updateData:o});break}case"ref":const o=t.cbRefs.push(n.idx)-1;t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:st(o,t.refList),updateData:Z})}}(e,t),n++}if(s){const r=n+i;e.collectors.push({idx:r,prevIdx:o,getVal:Y}),rt(t.nextSibling,e,r)}i&&(e.collectors.push({idx:n,prevIdx:o,getVal:X}),rt(t.firstChild,e,n))}return e}function it(t){G.call(this,K(t))}function st(t,e){return function(n){e[e.length-1][t]=()=>n(this)}}const lt=Node.prototype,at=lt.insertBefore,ct=lt.appendChild,ht=lt.removeChild,ut=((t,e)=>Object.getOwnPropertyDescriptor(t,e))(lt,"textContent").set;class dt{constructor(t){this.children=t}mount(t,e){const n=this.children,o=document.createTextNode("");this.anchor=o,at.call(t,o,e);const r=n.length;if(r){const e=n[0].mount;for(let i=0;i<r;i++)e.call(n[i],t,o)}this.parentEl=t}moveBefore(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].moveBefore(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 r=o[0]||n[0],{mount:i,patch:s,remove:l,beforeRemove:a,moveBefore:c,firstNode:h}=r,u=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 ut.call(f,""),void ct.call(f,u)}let p=0,m=0,g=n[0],b=o[0],v=n.length-1,y=o.length-1,w=n[v],x=o[y],k=void 0;for(;p<=v&&m<=y;){if(null===g){g=n[++p];continue}if(null===w){w=n[--v];continue}let t=g.key,r=b.key;if(t===r){s.call(g,b,e),o[m]=g,g=n[++p],b=o[++m];continue}let l=w.key,a=x.key;if(l===a){s.call(w,x,e),o[y]=w,w=n[--v],x=o[--y];continue}if(t===a){s.call(g,x,e),o[y]=g;const t=o[y+1];c.call(g,t,u),g=n[++p],x=o[--y];continue}if(l===r){s.call(w,b,e),o[m]=w;const t=n[p];c.call(w,t,u),w=n[--v],b=o[++m];continue}k=k||pt(n,p,v);let d=k[r];if(void 0===d)i.call(b,f,h.call(g)||null);else{const t=n[d];c.call(t,g,null),s.call(t,b,e),o[m]=t,n[d]=null}b=o[++m]}if(p<=v||m<=y)if(p>v){const t=o[y+1],e=t?h.call(t)||null:u;for(let t=m;t<=y;t++)i.call(o[t],f,e)}else for(let t=p;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)ut.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])}ht.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 ft(t){return new dt(t)}function pt(t,e,n){let o={};for(let r=e;r<=n;r++)o[t[r].key]=r;return o}const mt=Node.prototype,gt=mt.insertBefore,bt=mt.removeChild;class vt{constructor(t){this.content=[],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)gt.call(t,n,e);if(!this.content.length){const n=document.createTextNode("");this.content.push(n),gt.call(t,n,e)}}moveBefore(t,e){const n=t?t.content[0]:e,o=this.parentEl;for(let t of this.content)gt.call(o,t,n)}patch(t){if(this===t)return;const e=t.html;if(this.html!==e){const n=this.parentEl,o=this.content[0],r=document.createElement("template");r.innerHTML=e;const i=[...r.content.childNodes];for(let t of i)gt.call(n,t,o);if(!i.length){const t=document.createTextNode("");i.push(t),gt.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)bt.call(t,e)}firstNode(){return this.content[0]}toString(){return this.html}}function yt(t){return new vt(t)}function wt(t,e,n=null){t.mount(e,n)}const xt=Symbol("Target"),kt=Symbol("Skip"),$t=Symbol("Key changes"),Nt=Object.prototype.toString,Et=Object.prototype.hasOwnProperty,At=new Set(["Object","Array","Set","Map","WeakMap"]),Tt=new Set(["Set","Map","WeakMap"]);function _t(t){return Nt.call(t).slice(8,-1)}function St(t){return"object"==typeof t&&At.has(_t(t))}function Ct(t,e){return St(t)?jt(t,e):t}function Lt(t){return t[kt]=!0,t}function Dt(t){return t[xt]||t}const Ot=new WeakMap;function Bt(t,e,n){Ot.get(t)||Ot.set(t,new Map);const o=Ot.get(t);o.get(e)||o.set(e,new Set),o.get(e).add(n),It.has(n)||It.set(n,new Set),It.get(n).add(t)}function Rt(t,e){const n=Ot.get(t);if(!n)return;const o=n.get(e);if(o)for(const t of[...o])Pt(t),t()}const It=new WeakMap;function Pt(t){const e=It.get(t);if(e){for(const n of e){const e=Ot.get(n);if(e)for(const n of e.values())n.delete(t)}e.clear()}}const Mt=new WeakMap;function jt(t,e=(()=>{})){if(!St(t))throw new Error("Cannot make the given value reactive");if(kt in t)return t;const n=t[xt];if(n)return jt(n,e);Mt.has(t)||Mt.set(t,new Map);const o=Mt.get(t);if(!o.has(e)){const n=_t(t),r=Tt.has(n)?function(t,e,n){const o=Ut[n](t,e);return Object.assign(Wt(e),{get:(t,n)=>n===xt?t:Et.call(o,n)?o[n]:(Bt(t,n,e),Ct(t[n],e))})}(t,e,n):Wt(e),i=new Proxy(t,r);o.set(e,i)}return o.get(e)}function Wt(t){return{get(e,n,o){if(n===xt)return e;const r=Object.getOwnPropertyDescriptor(e,n);return!r||r.writable||r.configurable?(Bt(e,n,t),Ct(Reflect.get(e,n,o),t)):Reflect.get(e,n,o)},set(t,e,n,o){const r=!Et.call(t,e),i=Reflect.get(t,e,o),s=Reflect.set(t,e,n,o);return r&&Rt(t,$t),(i!==n||Array.isArray(t)&&"length"===e)&&Rt(t,e),s},deleteProperty(t,e){const n=Reflect.deleteProperty(t,e);return Rt(t,$t),Rt(t,e),n},ownKeys:e=>(Bt(e,$t,t),Reflect.ownKeys(e)),has:(e,n)=>(Bt(e,$t,t),Reflect.has(e,n))}}function Ft(t,e,n){return o=>(o=Dt(o),Bt(e,o,n),Ct(e[t](o),n))}function Vt(t,e,n){return function*(){Bt(e,$t,n);const o=e.keys();for(const r of e[t]()){const t=o.next().value;Bt(e,t,n),yield Ct(r,n)}}}function zt(t,e){return function(n,o){Bt(t,$t,e),t.forEach((function(r,i,s){Bt(t,i,e),n.call(o,Ct(r,e),Ct(i,e),Ct(s,e))}),o)}}function Kt(t,e,n){return(o,r)=>{o=Dt(o);const i=n.has(o),s=n[e](o),l=n[t](o,r);return i!==n.has(o)&&Rt(n,$t),s!==r&&Rt(n,o),l}}function Ht(t){return()=>{const e=[...t.keys()];t.clear(),Rt(t,$t);for(const n of e)Rt(t,n)}}const Ut={Set:(t,e)=>({has:Ft("has",t,e),add:Kt("add","has",t),delete:Kt("delete","has",t),keys:Vt("keys",t,e),values:Vt("values",t,e),entries:Vt("entries",t,e),[Symbol.iterator]:Vt(Symbol.iterator,t,e),forEach:zt(t,e),clear:Ht(t),get size(){return Bt(t,$t,e),t.size}}),Map:(t,e)=>({has:Ft("has",t,e),get:Ft("get",t,e),set:Kt("set","get",t),delete:Kt("delete","has",t),keys:Vt("keys",t,e),values:Vt("values",t,e),entries:Vt("entries",t,e),[Symbol.iterator]:Vt(Symbol.iterator,t,e),forEach:zt(t,e),clear:Ht(t),get size(){return Bt(t,$t,e),t.size}}),WeakMap:(t,e)=>({has:Ft("has",t,e),get:Ft("get",t,e),set:Kt("set","get",t),delete:Kt("delete","has",t)})};class qt extends EventTarget{trigger(t,e){this.dispatchEvent(new CustomEvent(t,{detail:e}))}}class Gt extends String{}const Xt={};function Yt(...t){const e="__template__"+Yt.nextId++,n=String.raw(...t);return Xt[e]=n,e}Yt.nextId=1;const Zt=new WeakMap,Jt=new WeakMap;function Qt(t,e){if(!t)return!1;const n=t.fiber;n&&Zt.set(n,e);const o=Jt.get(t);if(o){let t=!1;for(let n=o.length-1;n>=0;n--)try{o[n](e),t=!0;break}catch(t){e=t}if(t)return!0}return Qt(t.parent,e)}function te(t){const e=t.error,n="node"in t?t.node:t.fiber.node,o="fiber"in t?t.fiber:n.fiber;let r=o;do{r.node.fiber=r,r=r.parent}while(r);Zt.set(o.root,e);if(!Qt(n,e)){console.warn("[Owl] Unhandled error. Destroying the root component");try{n.app.destroy()}catch(t){console.error(t)}}}function ee(t){let e=0;for(let n of t){let t=n.node;0===t.status&&t.destroy(),t.fiber=null,n.bdom?t.forceNextRender=!0:e++,e+=ee(n.children)}return e}class ne{constructor(t,e){if(this.bdom=null,this.children=[],this.appliedToDom=!1,this.deep=!1,this.childrenMap={},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){try{this.bdom=!0,this.bdom=t.renderFn()}catch(e){te({node:t,error:e})}e.setCounter(e.counter-1)}}}class oe extends ne{constructor(){super(...arguments),this.counter=1,this.willPatch=[],this.patched=[],this.mounted=[],this.locked=!1}complete(){const t=this.node;this.locked=!0;let e=void 0;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)}}e=void 0,t._patch(),this.locked=!1;let n=this.mounted;for(;e=n.pop();)if(e=e,e.appliedToDom)for(let t of e.node.mounted)t();let o=this.patched;for(;e=o.pop();)if(e=e,e.appliedToDom)for(let t of e.node.patched)t()}catch(t){this.locked=!1,te({fiber:e||this,error:t})}}setCounter(t){this.counter=t,0===t&&this.node.app.scheduler.flush()}}class re extends oe{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)wt(e.bdom,this.target);else{const t=this.target.childNodes[0];wt(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){te({fiber:t,error:e})}}}function ie(t,e){const n=e.defaultProps;if(n)for(let e in n)void 0===t[e]&&(t[e]=n[e])}function se(t,e){if(!0===e)return!0;if("function"==typeof e)return"object"==typeof t?t instanceof e:typeof t===e.name.toLowerCase();if(e instanceof Array){let n=!1;for(let o=0,r=e.length;o<r;o++)n=n||se(t,e[o]);return n}if(e.optional&&void 0===t)return!0;let n=!e.type||se(t,e.type);if(e.validate&&(n=n&&e.validate(t)),e.type===Array&&e.element)for(let o=0,r=t.length;o<r;o++)n=n&&se(t[o],e.element);if(e.type===Object&&e.shape){const o=e.shape;for(let e in o)n=n&&se(t[e],o[e]);if(n)for(let e in t)if(!(e in o))throw new Error(`unknown prop '${e}'`)}return n}let le=null;function ae(){if(!le)throw new Error("No active component (a hook function should only be called in 'setup')");return le}const ce=new WeakMap;function he(t){const e=ae();let n=ce.get(e);return n||(n=function(t){let e=!1;return async()=>{await Promise.resolve(),e||(e=!0,Promise.resolve().then((()=>e=!1)),t())}}(e.render.bind(e)),ce.set(e,n),e.willDestroy.push(Pt.bind(null,n))),jt(t,n)}class ue{constructor(t,e,n,o,r){this.fiber=null,this.bdom=null,this.status=0,this.forceNextRender=!1,this.children=Object.create(null),this.refs={},this.willStart=[],this.willUpdateProps=[],this.willUnmount=[],this.mounted=[],this.willPatch=[],this.patched=[],this.willDestroy=[],le=this,this.app=n,this.parent=o,this.parentKey=r,this.level=o?o.level+1:0,ie(e,t);const i=o&&o.childEnv||n.env;this.childEnv=i,e=he(e),this.component=new t(e,i,this),this.renderFn=n.getTemplate(t.template).bind(this.component,this.component,this),this.component.setup(),le=null}mountComponent(t,e){const n=new re(this,t,e);this.app.scheduler.addFiber(n),this.initiateRender(n)}async initiateRender(t){this.fiber=t,this.mounted.length&&t.root.mounted.push(t);const e=this.component;try{await Promise.all(this.willStart.map((t=>t.call(e))))}catch(t){return void te({node:this,error:t})}0===this.status&&this.fiber===t&&t.render()}async render(t=!1){let e=this.fiber;if(e&&(e.root.locked||!0===e.bdom)&&(await Promise.resolve(),e=this.fiber),e){if(!e.bdom&&!Zt.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-ee(e.children)),t.locked=!1,e.children=[],e.childrenMap={},e.bdom=null,Zt.has(e)&&(Zt.delete(e),Zt.delete(t),e.appliedToDom=!1),e}const n=new oe(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(),2!==this.status&&(this.fiber!==n||!e&&n.parent||n.render())}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 of Object.values(this.children))t._destroy();if(this.willDestroy.length)try{for(let e of this.willDestroy)e.call(t)}catch(t){te({error:t,node:this})}this.status=2}async updateAndRender(t,e){const n=function(t,e){let n=t.fiber;return n&&(ee(n.children),n.root=null),new ne(t,e)}(this,e);this.fiber=n;const o=this.component;ie(t,o.constructor),le=this,t=he(t),le=null;const r=Promise.all(this.willUpdateProps.map((e=>e.call(o,t))));if(await r,n!==this.fiber)return;o.props=t,n.render();const i=e.root;this.willPatch.length&&i.willPatch.push(n),this.patched.length&&i.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}moveBefore(t,e){this.bdom.moveBefore(t?t.bdom:null,e)}patch(){this.fiber&&this.fiber.parent&&this._patch()}_patch(){const t=Object.keys(this.children).length>0;this.children=this.fiber.childrenMap,this.bdom.patch(this.fiber.bdom,t),this.fiber.appliedToDom=!0,this.fiber=null}beforeRemove(){this._destroy()}remove(){this.bdom.remove()}get name(){return this.component.constructor.name}get subscriptions(){const t=ce.get(this);return t?(e=t,[...It.get(e)||[]].map((t=>{const e=Ot.get(t);return{target:t,keys:e?[...e.keys()]:[]}}))):[];var e}}class de{constructor(){this.tasks=new Set,this.frame=0,this.delayedRenders=[],this.requestAnimationFrame=de.requestAnimationFrame}addFiber(t){this.tasks.add(t.root)}flush(){if(this.delayedRenders.length){let t=this.delayedRenders;this.delayedRenders=[];for(let e of t)e.root&&2!==e.node.status&&e.render()}0===this.frame&&(this.frame=this.requestAnimationFrame((()=>{this.frame=0,this.tasks.forEach((t=>this.processFiber(t)));for(let t of this.tasks)2===t.node.status&&this.tasks.delete(t)})))}processFiber(t){if(t.root!==t)return void this.tasks.delete(t);const e=Zt.has(t);e&&0!==t.counter?this.tasks.delete(t):2!==t.node.status?0===t.counter&&(e||t.complete(),this.tasks.delete(t)):this.tasks.delete(t)}}de.requestAnimationFrame=window.requestAnimationFrame.bind(window);const fe="true,false,NaN,null,undefined,debugger,console,window,in,instanceof,new,function,return,this,eval,void,Math,RegExp,Array,Object,Date".split(","),pe=Object.assign(Object.create(null),{and:"&&",or:"||",gt:">",gte:">=",lt:"<",lte:"<="}),me=Object.assign(Object.create(null),{"{":"LEFT_BRACE","}":"RIGHT_BRACE","[":"LEFT_BRACKET","]":"RIGHT_BRACKET",":":"COLON",",":"COMMA","(":"LEFT_PAREN",")":"RIGHT_PAREN"}),ge="...,.,===,==,+,!==,!=,!,||,&&,>=,>,<=,<,?,-,*,/,%,typeof ,=>,=,;,in ".split(",");const be=[function(t){let e=t[0],n=e;if("'"!==e&&'"'!==e&&"`"!==e)return!1;let o,r=1;for(;t[r]&&t[r]!==n;){if(o=t[r],e+=o,"\\"===o){if(r++,o=t[r],!o)throw new Error("Invalid expression");e+=o}r++}if(t[r]!==n)throw new Error("Invalid expression");return e+=n,"`"===n?{type:"TEMPLATE_STRING",value:e,replace:t=>e.replace(/\$\{(.*?)\}/g,((e,n)=>"${"+t(n)+"}"))}:{type:"VALUE",value:e}},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 ge)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 pe?{type:"OPERATOR",value:pe[e],size:e.length}:{type:"SYMBOL",value:e}}return!1},function(t){const e=t[0];return!(!e||!(e in me))&&{type:me[e],value:e}}];const ve=t=>t&&("LEFT_BRACE"===t.type||"COMMA"===t.type),ye=t=>t&&("RIGHT_BRACE"===t.type||"COMMA"===t.type);function we(t){const e=new Set,n=function(t){const e=[];let n,o=!0,r=t;try{for(;o;)if(r=r.trim(),r){for(let t of be)if(o=t(r),o){e.push(o),r=r.slice(o.size||o.value.length);break}}else o=!1}catch(t){n=t}if(r.length||n)throw new Error(`Tokenizer error: could not tokenize \`${t}\``);return e}(t);let o=0,r=[];for(;o<n.length;){let t=n[o],i=n[o-1],s=n[o+1],l=r[r.length-1];switch(t.type){case"LEFT_BRACE":case"LEFT_BRACKET":r.push(t.type);break;case"RIGHT_BRACE":case"RIGHT_BRACKET":r.pop()}let a="SYMBOL"===t.type&&!fe.includes(t.value);if("SYMBOL"!==t.type||fe.includes(t.value)||i&&("LEFT_BRACE"===l&&ve(i)&&ye(s)&&(n.splice(o+1,0,{type:"COLON",value:":"},{...t}),s=n[o+1]),"OPERATOR"===i.type&&"."===i.value?a=!1:"LEFT_BRACE"!==i.type&&"COMMA"!==i.type||s&&"COLON"===s.type&&(a=!1)),"TEMPLATE_STRING"===t.type&&(t.value=t.replace((t=>xe(t)))),s&&"OPERATOR"===s.type&&"=>"===s.value)if("RIGHT_PAREN"===t.type){let t=o-1;for(;t>0&&"LEFT_PAREN"!==n[t].type;)"SYMBOL"===n[t].type&&n[t].originalValue&&(n[t].value=n[t].originalValue,e.add(n[t].value)),t--}else e.add(t.value);a&&(t.varName=t.value,e.has(t.value)||(t.originalValue=t.value,t.value=`ctx['${t.value}']`)),o++}for(const t of n)"SYMBOL"===t.type&&t.varName&&e.has(t.value)&&(t.originalValue=t.value,t.value="_"+t.value,t.isLocal=!0);return n}function xe(t){return we(t).map((t=>t.value)).join("")}const ke=/\{\{.*?\}\}/g,$e=/\{\{.*?\}\}/g;function Ne(t){let e=t.match(ke);return e&&e[0].length===t.length?`(${xe(t.slice(2,-2))})`:"`"+t.replace($e,(t=>"${"+xe(t.slice(2,-2))+"}"))+"`"}const Ee=document.implementation.createDocument(null,null,null),Ae=new Set(["stop","capture","prevent","self","synthetic"]);class Te{constructor(t,e){this.dynamicTagName=null,this.isRoot=!1,this.hasDynamicChildren=!1,this.children=[],this.data=[],this.childNumber=0,this.parentVar="",this.id=Te.nextBlockId++,this.varName="b"+this.id,this.blockName="block"+this.id,this.target=t,this.type=e}static generateId(t){return this.nextDataIds[t]=(this.nextDataIds[t]||0)+1,t+this.nextDataIds[t]}insertData(t,e="d"){const n=Te.generateId(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=Ee.createElement("t");return t.appendChild(this.dom),t.innerHTML}}function _e(t,e){return Object.assign({block:null,index:0,forceNewBlock:!0,translate:t.translate,tKeyExpr:null,nameSpace:t.nameSpace,tModelSelectedExpr:t.tModelSelectedExpr},e)}Te.nextBlockId=1,Te.nextDataIds={};class Se{constructor(t,e){this.indentLevel=0,this.loopLevel=0,this.code=[],this.hasRoot=!1,this.hasCache=!1,this.hasRef=!1,this.refInfo={},this.shouldProtectScope=!1,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=[];if(t.push(`function ${this.name}(ctx, node, key = "") {`),this.hasRef){t.push(" const refs = ctx.__owl__.refs;");for(let e in this.refInfo){const[n,o]=this.refInfo[e];t.push(` const ${n} = ${o};`)}}this.shouldProtectScope&&(t.push(" ctx = Object.create(ctx);"),t.push(" ctx[isBoundary] = 1")),this.hasCache&&(t.push(" let cache = ctx.cache || {};"),t.push(" let nextCache = ctx.cache = {};"));for(let e of this.code)t.push(e);return this.hasRoot||t.push("return text('');"),t.push("}"),t.join("\n ")}}const Ce=["label","title","placeholder","alt"],Le=/^(\s*)([\s\S]+?)(\s*)$/;class De{constructor(t,e){if(this.blocks=[],this.ids={},this.nextBlockId=1,this.isDebug=!1,this.targets=[],this.target=new Se("template"),this.translatableAttributes=Ce,this.staticDefs=[],this.helpers=new Set,this.translateFn=e.translateFn||(t=>t),e.translatableAttributes){const t=new Set(Ce);for(let n of e.translatableAttributes)n.startsWith("-")?t.delete(n.slice(1)):t.add(n);this.translatableAttributes=[...t]}this.hasSafeContext=e.hasSafeContext||!1,this.dev=e.dev||!1,this.ast=t,this.templateName=e.name}generateCode(){const t=this.ast;this.isDebug=12===t.type,Te.nextBlockId=1,Te.nextDataIds={},this.compileAST(t,{block:null,index:0,forceNewBlock:!1,isLast:!0,translate:!0,tKeyExpr:null});let e=[" let { text, createBlock, list, multi, html, toggler, component, 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=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 r=this.generateId(t),i=this.target,s=new Se(r,o);return this.targets.push(s),this.target=s,this.compileAST(e,_e(n)),this.target=i,r}addLine(t,e){this.target.addLine(t,e)}define(t,e){this.addLine(`const ${t} = ${e};`)}generateId(t=""){return this.ids[t]=(this.ids[t]||0)+1,t+this.ids[t]}insertAnchor(t){const e="block-child-"+t.children.length,n=Ee.createElement(e);t.insert(n)}createBlock(t,e,n){const o=this.target.hasRoot,r=new Te(this.target,e);return o||n.preventRoot||(this.target.hasRoot=!0,r.isRoot=!0),t&&(t.children.push(r),"list"===t.type&&(r.parentVar="c_block"+t.id)),r}insertBlock(t,e,n){let o=e.generateExpr(t);const r=n.tKeyExpr;if(e.parentVar){let t="key"+this.target.loopLevel;return r&&(t=`${r} + ${t}`),this.helpers.add("withKey"),void this.addLine(`${e.parentVar}[${n.index}] = withKey(${o}, ${t});`)}r&&(o=`toggler(${r}, ${o})`),e.isRoot&&!n.preventRoot?(this.target.on&&(o=this.wrapWithEventCatcher(o,this.target.on)),this.addLine(`return ${o};`)):this.define(e.varName,o)}captureExpression(t,e=!1){if(!e&&!t.includes("=>"))return xe(t);const n=we(t),o=new Map;return n.map((t=>{if(t.varName&&!t.isLocal){if(!o.has(t.varName)){const e=this.generateId("v");o.set(t.varName,e),this.define(e,t.value)}t.value=o.get(t.varName)}return t.value})).join("")}compileAST(t,e){switch(t.type){case 1:this.compileComment(t,e);break;case 0:this.compileText(t,e);break;case 2:this.compileTDomNode(t,e);break;case 4:this.compileTEsc(t,e);break;case 8:this.compileTOut(t,e);break;case 5:this.compileTIf(t,e);break;case 9:this.compileTForeach(t,e);break;case 10:this.compileTKey(t,e);break;case 3:this.compileMulti(t,e);break;case 7:this.compileTCall(t,e);break;case 15:this.compileTCallBlock(t,e);break;case 6:this.compileTSet(t,e);break;case 11:this.compileComponent(t,e);break;case 12:this.compileDebug(t,e);break;case 13:this.compileLog(t,e);break;case 14:this.compileTSlot(t,e);break;case 16:this.compileTTranslation(t,e);break;case 17:this.compileTPortal(t,e)}}compileDebug(t,e){this.addLine("debugger;"),t.content&&this.compileAST(t.content,e)}compileLog(t,e){this.addLine(`console.log(${xe(t.expr)});`),t.content&&this.compileAST(t.content,e)}compileComment(t,e){let{block:n,forceNewBlock:o}=e;if(!n||o)n=this.createBlock(n,"comment",e),this.insertBlock(`comment(\`${t.value}\`)`,n,{...e,forceNewBlock:o&&!n});else{const e=Ee.createComment(t.value);n.insert(e)}}compileText(t,e){let{block:n,forceNewBlock:o}=e,r=t.value;if(r&&!1!==e.translate){const t=Le.exec(r);r=t[1]+this.translateFn(t[2])+t[3]}if(!n||o)n=this.createBlock(n,"text",e),this.insertBlock(`text(\`${r}\`)`,n,{...e,forceNewBlock:o&&!n});else{const e=0===t.type?Ee.createTextNode:Ee.createComment;n.insert(e.call(Ee,r))}}generateHandlerCode(t,e){const n=t.split(".").slice(1).map((t=>{if(!Ae.has(t))throw new Error(`Unknown event modifier: '${t}'`);return`"${t}"`}));let o="";return n.length&&(o=n.join(",")+", "),`[${o}${this.captureExpression(e)}, ctx]`}compileTDomNode(t,e){let{block:n,forceNewBlock:o}=e;const r=!n||o||null!==t.dynamicTag||t.ns;let i=this.target.code.length;if(r&&((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=this.generateId("tag");this.define(e,xe(t.dynamicTag)),n.dynamicTagName=e}const s={},l=t.ns||e.nameSpace;l&&r&&(s["block-ns"]=l);for(let o in t.attrs){let r,i;if(o.startsWith("t-attf")){r=Ne(t.attrs[o]);const e=n.insertData(r,"attr");i=o.slice(7),s["block-attribute-"+e]=i}else if(o.startsWith("t-att")){r=xe(t.attrs[o]);const e=n.insertData(r,"attr");"t-att"===o?s["block-attributes"]=String(e):(i=o.slice(6),s["block-attribute-"+e]=i)}else this.translatableAttributes.includes(o)?s[o]=this.translateFn(t.attrs[o]):(r=`"${t.attrs[o]}"`,i=o,s[o]=t.attrs[o]);if("value"===i&&e.tModelSelectedExpr){s["block-attribute-"+n.insertData(`${e.tModelSelectedExpr} === ${r}`,"attr")]="selected"}}for(let e in t.on){const o=this.generateHandlerCode(e,t.on[e]);s["block-handler-"+n.insertData(o,"hdlr")]=e}if(t.ref){this.target.hasRef=!0;if(ke.test(t.ref)){const e=t.ref.replace(ke,(t=>"${"+this.captureExpression(t.slice(2,-2),!0)+"}")),o=n.insertData(`(el) => refs[\`${e}\`] = el`,"ref");s["block-ref"]=String(o)}else{let e=t.ref;if(e in this.target.refInfo){this.helpers.add("multiRefSetter");const t=this.target.refInfo[e],o=n.data.push(t[0])-1;s["block-ref"]=String(o),t[1]=`multiRefSetter(refs, \`${e}\`)`}else{let t=this.generateId("ref");this.target.refInfo[e]=[t,`(el) => refs[\`${e}\`] = el`];const o=n.data.push(t)-1;s["block-ref"]=String(o)}}}let a;if(t.model){const{hasDynamicChildren:e,baseExpr:o,expr:r,eventType:i,shouldNumberize:l,shouldTrim:c,targetAttr:h,specialInitTargetAttr:u}=t.model,d=xe(o),f=this.generateId("bExpr");this.define(f,d);const p=xe(r),m=this.generateId("expr");this.define(m,p);const g=`${f}[${m}]`;let b;if(u)b=n.insertData(`${g} === '${s[h]}'`,"attr"),s["block-attribute-"+b]=u;else if(e){a=""+this.generateId("bValue"),this.define(a,g)}else b=n.insertData(""+g,"attr"),s["block-attribute-"+b]=h;this.helpers.add("toNumber");let v="ev.target."+h;v=c?v+".trim()":v,v=l?`toNumber(${v})`:v;const y=`[(ev) => { ${g} = ${v}; }]`;b=n.insertData(y,"hdlr"),s["block-handler-"+b]=i}const c=Ee.createElement(t.tag);for(const[t,e]of Object.entries(s))"class"===t&&""===e||c.setAttribute(t,e);if(n.insert(c),t.content.length){const o=n.currentDom;n.currentDom=c;const r=t.content;for(let o=0;o<r.length;o++){const i=t.content[o],s=_e(e,{block:n,index:n.childNumber,forceNewBlock:!1,isLast:e.isLast&&o===r.length-1,tKeyExpr:e.tKeyExpr,nameSpace:l,tModelSelectedExpr:a});this.compileAST(i,s)}n.currentDom=o}if(r&&(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))};`,i)}}compileTEsc(t,e){let n,{block:o,forceNewBlock:r}=e;if("0"===t.expr?(this.helpers.add("zero"),n="ctx[zero]"):(n=xe(t.expr),t.defaultValue&&(this.helpers.add("withDefault"),n=`withDefault(${n}, \`${t.defaultValue}\`)`)),!o||r)o=this.createBlock(o,"text",e),this.insertBlock(`text(${n})`,o,{...e,forceNewBlock:r&&!o});else{const t=o.insertData(n,"txt"),e=Ee.createElement("block-text-"+t);o.insert(e)}}compileTOut(t,e){let{block:n}=e;n&&this.insertAnchor(n),n=this.createBlock(n,"html",e),this.helpers.add("0"===t.expr?"zero":"safeOutput");let o="0"===t.expr?"ctx[zero]":`safeOutput(${xe(t.expr)})`;if(t.body){const n=Te.nextBlockId,r=_e(e);this.compileAST({type:3,content:t.body},r),this.helpers.add("withDefault"),o=`withDefault(${o}, b${n})`}this.insertBlock(""+o,n,e)}compileTIf(t,e,n){let{block:o,forceNewBlock:r,index:i}=e,s=i;const l=this.target.code.length,a=!o||"multi"!==o.type&&r;o&&(o.hasDynamicChildren=!0),(!o||"multi"!==o.type&&r)&&(o=this.createBlock(o,"multi",e)),this.addLine(`if (${xe(t.condition)}) {`),this.target.indentLevel++,this.insertAnchor(o);const c=_e(e,{block:o,index:s});if(this.compileAST(t.content,c),this.target.indentLevel--,t.tElif)for(let n of t.tElif){this.addLine(`} else if (${xe(n.condition)}) {`),this.target.indentLevel++,this.insertAnchor(o);const t=_e(e,{block:o,index:s});this.compileAST(n.content,t),this.target.indentLevel--}if(t.tElse){this.addLine("} else {"),this.target.indentLevel++,this.insertAnchor(o);const n=_e(e,{block:o,index:s});this.compileAST(t.tElse,n),this.target.indentLevel--}if(this.addLine("}"),a){if(o.children.length){const t=this.target.code,e=o.children.slice();let n=e.shift();for(let o=l;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))};`,l)}const t=o.children.map((t=>t.varName)).join(", ");this.insertBlock(`multi([${t}])`,o,e)}}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;this.addLine("ctx = Object.create(ctx);");const r="v_block"+n.id,i="k_block"+n.id,s="l_block"+n.id,l="c_block"+n.id;let a;this.helpers.add("prepareList"),this.define(`[${i}, ${r}, ${s}, ${l}]`,`prepareList(${xe(t.collection)});`),this.dev&&this.define("keys"+n.id,"new Set()"),this.addLine(`for (let ${o} = 0; ${o} < ${s}; ${o}++) {`),this.target.indentLevel++,this.addLine(`ctx[\`${t.elem}\`] = ${r}[${o}];`),t.hasNoFirst||this.addLine(`ctx[\`${t.elem}_first\`] = ${o} === 0;`),t.hasNoLast||this.addLine(`ctx[\`${t.elem}_last\`] = ${o} === ${r}.length - 1;`),t.hasNoIndex||this.addLine(`ctx[\`${t.elem}_index\`] = ${o};`),t.hasNoValue||this.addLine(`ctx[\`${t.elem}_value\`] = ${i}[${o}];`),this.define("key"+this.target.loopLevel,t.key?xe(t.key):o),this.dev&&(this.addLine(`if (keys${n.id}.has(key${this.target.loopLevel})) { throw new Error(\`Got duplicate key in t-foreach: \${key${this.target.loopLevel}}\`)}`),this.addLine(`keys${n.id}.add(key${this.target.loopLevel});`)),t.memo&&(this.target.hasCache=!0,a=this.generateId(),this.define("memo"+a,xe(t.memo)),this.define("vnode"+a,`cache[key${this.target.loopLevel}];`),this.addLine(`if (vnode${a}) {`),this.target.indentLevel++,this.addLine(`if (shallowEqual(vnode${a}.memo, memo${a})) {`),this.target.indentLevel++,this.addLine(`${l}[${o}] = vnode${a};`),this.addLine(`nextCache[key${this.target.loopLevel}] = vnode${a};`),this.addLine("continue;"),this.target.indentLevel--,this.addLine("}"),this.target.indentLevel--,this.addLine("}"));const c=_e(e,{block:n,index:o});this.compileAST(t.body,c),t.memo&&this.addLine(`nextCache[key${this.target.loopLevel}] = Object.assign(${l}[${o}], {memo: memo${a}});`),this.target.indentLevel--,this.target.loopLevel--,this.addLine("}"),e.isLast||this.addLine("ctx = ctx.__proto__;"),this.insertBlock("l",n,e)}compileTKey(t,e){const n=this.generateId("tKey_");this.define(n,xe(t.expr)),e=_e(e,{tKeyExpr:n,block:e.block,index:e.index}),this.compileAST(t.content,e)}compileMulti(t,e){let{block:n,forceNewBlock:o}=e;const r=!n||o;let i=this.target.code.length;if(r){if(t.content.filter((t=>6!==t.type)).length<=1){for(let n of t.content)this.compileAST(n,e);return}n=this.createBlock(n,"multi",e)}let s=0;for(let o=0,r=t.content.length;o<r;o++){const i=t.content[o],l=6===i.type,a=_e(e,{block:n,index:s,forceNewBlock:!l,preventRoot:e.preventRoot,isLast:e.isLast&&o===r-1});this.compileAST(i,a),l||s++}if(r){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))};`,i)}const t=n.children.map((t=>t.varName)).join(", ");this.insertBlock(`multi([${t}])`,n,e)}}compileTCall(t,e){let{block:n,forceNewBlock:o}=e;if(t.body){this.addLine("ctx = Object.create(ctx);"),this.addLine("ctx[isBoundary] = 1;"),this.helpers.add("isBoundary");const n=Te.nextBlockId,o=_e(e,{preventRoot:!0});this.compileAST({type:3,content:t.body},o),n!==Te.nextBlockId&&(this.helpers.add("zero"),this.addLine(`ctx[zero] = b${n};`))}const r=ke.test(t.name),i=r?Ne(t.name):"`"+t.name+"`";n&&(o||this.insertAnchor(n));const s=`key + \`${this.generateComponentKey()}\``;if(r){const t=this.generateId("template");this.define(t,i),n=this.createBlock(n,"multi",e),this.helpers.add("call"),this.insertBlock(`call(this, ${t}, ctx, node, ${s})`,n,{...e,forceNewBlock:!n})}else{const t=this.generateId("callTemplate_");this.helpers.add("getTemplate"),this.staticDefs.push({id:t,expr:`getTemplate(${i})`}),n=this.createBlock(n,"multi",e),this.insertBlock(`${t}.call(this, ctx, node, ${s})`,n,{...e,forceNewBlock:!n})}t.body&&!e.isLast&&this.addLine("ctx = ctx.__proto__;")}compileTCallBlock(t,e){let{block:n,forceNewBlock:o}=e;n&&(o||this.insertAnchor(n)),n=this.createBlock(n,"multi",e),this.insertBlock(xe(t.name),n,{...e,forceNewBlock:!n})}compileTSet(t,e){this.target.shouldProtectScope=!0,this.helpers.add("isBoundary").add("withDefault");const n=t.value?xe(t.value||""):"null";if(t.body){this.helpers.add("LazyValue");const o={type:3,content:t.body};let r=`new LazyValue(${this.compileInNewTarget("value",o,e)}, ctx, node)`;r=t.value?r?`withDefault(${n}, ${r})`:n:r,this.addLine(`ctx[\`${t.name}\`] = ${r};`)}else{let e;e=t.defaultValue?t.value?`withDefault(${n}, \`${t.defaultValue}\`)`:`\`${t.defaultValue}\``:n,this.helpers.add("setContextValue"),this.addLine(`setContextValue(ctx, "${t.name}", ${e});`)}}generateComponentKey(){const t=[this.generateId("__")];for(let e=0;e<this.target.loopLevel;e++)t.push(`\${key${e+1}}`);return t.join("__")}formatProp(t,e){if(e=this.captureExpression(e),t.includes(".")){let[n,o]=t.split(".");if("bind"!==o)throw new Error("Invalid prop suffix");this.helpers.add("bind"),t=n,e=`bind(ctx, ${e||void 0})`}return`${t=/^[a-z_]+$/i.test(t)?t:`'${t}'`}: ${e||void 0}`}formatPropObject(t){const e=[];for(const[n,o]of Object.entries(t))e.push(this.formatProp(n,o));return e.join(", ")}compileComponent(t,e){let{block:n}=e;const o="slots"in(t.props||{}),r=[],i=this.formatPropObject(t.props||{});i&&r.push(i);let s="";if(t.slots){let n="ctx";!this.target.loopLevel&&this.hasSafeContext||(n=this.generateId("ctx"),this.helpers.add("capture"),this.define(n,"capture(ctx)"));let o=[];for(let r in t.slots){const i=t.slots[r],s=[];if(i.content){const t=this.compileInNewTarget("slot",i.content,e,i.on);s.push(`__render: ${t}, __ctx: ${n}`)}const l=t.slots[r].scope;l&&s.push(`__scope: "${l}"`),t.slots[r].attrs&&s.push(this.formatPropObject(t.slots[r].attrs));const a=`{${s.join(", ")}}`;o.push(`'${r}': ${a}`)}s=`{${o.join(", ")}}`}!s||t.dynamicProps||o||(this.helpers.add("markRaw"),r.push(`slots: markRaw(${s})`));const l=`{${r.join(",")}}`;let a,c=l;t.dynamicProps&&(c=`Object.assign({}, ${xe(t.dynamicProps)}${r.length?", "+l:""})`),(s&&(t.dynamicProps||o)||this.dev)&&(a=this.generateId("props"),this.define(a,c),c=a),s&&(t.dynamicProps||o)&&(this.helpers.add("markRaw"),this.addLine(`${a}.slots = markRaw(Object.assign(${s}, ${a}.slots))`));const h=this.generateComponentKey();let u;t.isDynamic?(u=this.generateId("Comp"),this.define(u,xe(t.name))):u=`\`${t.name}\``,this.dev&&this.addLine(`helpers.validateProps(${u}, ${a}, ctx);`),n&&(!1===e.forceNewBlock||e.tKeyExpr)&&this.insertAnchor(n);let d=`key + \`${h}\``;e.tKeyExpr&&(d=`${e.tKeyExpr} + ${d}`);let f=`component(${`${u}, ${c}, ${d}, node, ctx`})`;t.isDynamic&&(f=`toggler(${u}, ${f})`),t.on&&(f=this.wrapWithEventCatcher(f,t.on)),n=this.createBlock(n,"multi",e),this.insertBlock(f,n,e)}wrapWithEventCatcher(t,e){this.helpers.add("createCatcher");let n=this.generateId("catcher"),o={},r=[];for(let t in e){let n=this.generateId("hdlr"),i=r.push(n)-1;o[t]=i;const s=this.generateHandlerCode(t,e[t]);this.define(n,s)}return this.staticDefs.push({id:n,expr:`createCatcher(${JSON.stringify(o)})`}),`${n}(${t}, [${r.join(",")}])`}compileTSlot(t,e){this.helpers.add("callSlot");let n,o,{block:r}=e,i=!1;t.name.match(ke)?(i=!0,o=Ne(t.name)):o="'"+t.name+"'";const s=t.attrs?`{${this.formatPropObject(t.attrs)}}`:null;if(t.defaultContent){n=`callSlot(ctx, node, key, ${o}, ${i}, ${s}, ${this.compileInNewTarget("defaultContent",t.defaultContent,e)})`}else if(i){let t=this.generateId("slot");this.define(t,o),n=`toggler(${t}, callSlot(ctx, node, key, ${t}, ${i}, ${s}))`}else n=`callSlot(ctx, node, key, ${o}, ${i}, ${s})`;t.on&&(n=this.wrapWithEventCatcher(n,t.on)),r&&this.insertAnchor(r),r=this.createBlock(r,"multi",e),this.insertBlock(n,r,{...e,forceNewBlock:!1})}compileTTranslation(t,e){t.content&&this.compileAST(t.content,Object.assign({},e,{translate:!1}))}compileTPortal(t,e){this.helpers.add("Portal");let{block:n}=e;const o=this.compileInNewTarget("slot",t.content,e),r=this.generateComponentKey();let i="ctx";!this.target.loopLevel&&this.hasSafeContext||(i=this.generateId("ctx"),this.helpers.add("capture"),this.define(i,"capture(ctx);"));const s=`component(Portal, {target: ${t.target},slots: {'default': {__render: ${o}, __ctx: ${i}}}}, key + \`${r}\`, node, ctx)`;n&&this.insertAnchor(n),n=this.createBlock(n,"multi",e),this.insertBlock(s,n,{...e,forceNewBlock:!1})}}const Oe=new WeakMap;function Be(t){if("string"==typeof t){return Re(function(t){const e=(new DOMParser).parseFromString(t,"text/xml");if(e.getElementsByTagName("parsererror").length){let n="Invalid XML in template.";const o=e.getElementsByTagName("parsererror")[0].textContent;if(o){n+="\nThe parser has produced the following error message:\n"+o;const e=/\d+/g,r=e.exec(o);if(r){const i=Number(r[0]),s=t.split("\n")[i-1],l=e.exec(o);if(s&&l){const t=Number(l[0])-1;s[t]&&(n+=`\nThe error might be located at xml line ${i} column ${t}\n${s}\n${"-".repeat(t-1)}^`)}}}throw new Error(n)}return e}(`<t>${t}</t>`).firstChild)}let e=Oe.get(t);return e||(e=Re(t.cloneNode(!0)),Oe.set(t,e)),e}function Re(t){var e;(function(t){let e=t.querySelectorAll("[t-elif], [t-else]");for(let t=0,n=e.length;t<n;t++){let n=e[t],o=n.previousElementSibling,r=t=>o.getAttribute(t),i=t=>+!!n.getAttribute(t);if(!o||!r("t-if")&&!r("t-elif"))throw new Error("t-elif and t-else directives must be preceded by a t-if or t-elif directive");{if(r("t-foreach"))throw new Error("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(i).reduce((function(t,e){return t+e}))>1)throw new Error("Only one conditional branching directive is allowed per node");let t;for(;(t=n.previousSibling)!==o;){if(t.nodeValue.trim().length&&8!==t.nodeType)throw new Error("text is not allowed between branching directives");t.remove()}}}})(e=t),function(t){const e=[...t.querySelectorAll("[t-esc]")].filter((t=>t.tagName[0]===t.tagName[0].toUpperCase()||t.hasAttribute("t-component")));for(const t of e){if(t.childNodes.length)throw new Error("Cannot have t-esc on a component that already has content");const e=t.getAttribute("t-esc");t.removeAttribute("t-esc");const n=t.ownerDocument.createElement("t");null!=e&&n.setAttribute("t-esc",e),t.appendChild(n)}}(e);return Ie(t,{inPreTag:!1,inSVG:!1})||{type:0,value:""}}function Ie(t,e){return t instanceof Element?function(t,e){if(t.hasAttribute("t-debug"))return t.removeAttribute("t-debug"),{type:12,content:Ie(t,e)};if(t.hasAttribute("t-log")){const n=t.getAttribute("t-log");return t.removeAttribute("t-log"),{type:13,expr:n,content:Ie(t,e)}}return null}(t,e)||function(t,e){if(!t.hasAttribute("t-foreach"))return null;const n=t.outerHTML,o=t.getAttribute("t-foreach");t.removeAttribute("t-foreach");const r=t.getAttribute("t-as")||"";t.removeAttribute("t-as");const i=t.getAttribute("t-key");if(!i)throw new Error(`"Directive t-foreach should always be used with a t-key!" (expression: t-foreach="${o}" t-as="${r}")`);t.removeAttribute("t-key");const s=t.getAttribute("t-memo")||"";t.removeAttribute("t-memo");const l=Ie(t,e);if(!l)return null;const a=!n.includes("t-call"),c=a&&!n.includes(r+"_first"),h=a&&!n.includes(r+"_last"),u=a&&!n.includes(r+"_index"),d=a&&!n.includes(r+"_value");return{type:9,collection:o,elem:r,body:l,memo:s,key:i,hasNoFirst:c,hasNoLast:h,hasNoIndex:u,hasNoValue:d}}(t,e)||function(t,e){if(!t.hasAttribute("t-if"))return null;const n=t.getAttribute("t-if");t.removeAttribute("t-if");const o=Ie(t,e)||{type:0,value:""};let r=t.nextElementSibling;const i=[];for(;r&&r.hasAttribute("t-elif");){const t=r.getAttribute("t-elif");r.removeAttribute("t-elif");const n=Ie(r,e),o=r.nextElementSibling;r.remove(),r=o,n&&i.push({condition:t,content:n})}let s=null;r&&r.hasAttribute("t-else")&&(r.removeAttribute("t-else"),s=Ie(r,e),r.remove());return{type:5,condition:n,content:o,tElif:i.length?i:null,tElse:s}}(t,e)||function(t,e){if(!t.hasAttribute("t-portal"))return null;const n=t.getAttribute("t-portal");t.removeAttribute("t-portal");const o=Ie(t,e);if(!o)return{type:0,value:""};return{type:17,target:n,content:o}}(t,e)||function(t,e){if(!t.hasAttribute("t-call"))return null;const n=t.getAttribute("t-call");if(t.removeAttribute("t-call"),"t"!==t.tagName){const o=Ie(t,e),r={type:7,name:n,body:null};if(o&&2===o.type)return o.content=[r],o;if(o&&11===o.type)return{...o,slots:{default:{content:r,scope:null,on:null,attrs:null}}}}const o=ze(t,e);return{type:7,name:n,body:o.length?o:null}}(t,e)||function(t,e){if(!t.hasAttribute("t-call-block"))return null;return{type:15,name:t.getAttribute("t-call-block")}}(t)||function(t,e){if(!t.hasAttribute("t-esc"))return null;const n=t.getAttribute("t-esc");t.removeAttribute("t-esc");const o={type:4,expr:n,defaultValue:t.textContent||""};let r=t.getAttribute("t-ref");t.removeAttribute("t-ref");const i=Ie(t,e);if(!i)return o;if(2===i.type)return{...i,ref:r,content:[o]};if(11===i.type)throw new Error("t-esc is not supported on Component nodes");return o}(t,e)||function(t,e){if(!t.hasAttribute("t-key"))return null;const n=t.getAttribute("t-key");t.removeAttribute("t-key");const o=Ie(t,e);if(!o)return null;return{type:10,expr:n,content:o}}(t,e)||function(t,e){if("off"!==t.getAttribute("t-translation"))return null;return t.removeAttribute("t-translation"),{type:16,content:Ie(t,e)}}(t,e)||function(t,e){if(!t.hasAttribute("t-slot"))return null;const n=t.getAttribute("t-slot");t.removeAttribute("t-slot");let o=null,r=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);e.startsWith("t-on-")?(r=r||{},r[e.slice(5)]=n):(o=o||{},o[e]=n)}return{type:14,name:n,attrs:o,on:r,defaultContent:Ke(t,e)}}(t,e)||function(t,e){if(!t.hasAttribute("t-out")&&!t.hasAttribute("t-raw"))return null;t.hasAttribute("t-raw")&&console.warn('t-raw 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-raw");t.removeAttribute("t-out"),t.removeAttribute("t-raw");const o={type:8,expr:n,body:null},r=t.getAttribute("t-ref");t.removeAttribute("t-ref");const i=Ie(t,e);if(!i)return o;if(2===i.type)return o.body=i.content.length?i.content:null,{...i,ref:r,content:[o]};return o}(t,e)||function(t,e){let n=t.tagName;const o=n[0];let r=t.hasAttribute("t-component");if(r&&"t"!==n)throw new Error(`Directive 't-component' can only be used on <t> nodes (used on a <${n}>)`);if(o!==o.toUpperCase()&&!r)return null;r&&(n=t.getAttribute("t-component"),t.removeAttribute("t-component"));const i=t.getAttribute("t-props");t.removeAttribute("t-props");const s=t.getAttribute("t-slot-scope");t.removeAttribute("t-slot-scope");let l=null,a=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);if(e.startsWith("t-")){if(!e.startsWith("t-on-")){const t=Ve.get(e.split("-").slice(0,2).join("-"));throw new Error(t||"unsupported directive on Component: "+e)}l=l||{},l[e.slice(5)]=n}else a=a||{},a[e]=n}let c=null;if(t.hasChildNodes()){const n=t.cloneNode(!0),o=Array.from(n.querySelectorAll("[t-set-slot]"));for(let t of o){if("t"!==t.tagName)throw new Error(`Directive 't-set-slot' can only be used on <t> nodes (used on a <${t.tagName}>)`);const o=t.getAttribute("t-set-slot");let r=t.parentElement,i=!1;for(;r!==n;){if(r.hasAttribute("t-component")||r.tagName[0]===r.tagName[0].toUpperCase()){i=!0;break}r=r.parentElement}if(i)continue;t.removeAttribute("t-set-slot"),t.remove();const s=Ie(t,e);let l=null,a=null,h=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);"t-slot-scope"!==e?e.startsWith("t-on-")?(l=l||{},l[e.slice(5)]=n):(a=a||{},a[e]=n):h=n}c=c||{},c[o]={content:s,on:l,attrs:a,scope:h}}const r=Ke(n,e);r&&(c=c||{},c.default={content:r,on:l,attrs:null,scope:s})}return{type:11,name:n,isDynamic:r,dynamicProps:i,props:a,slots:c,on:l}}(t,e)||function(t,e){const{tagName:n}=t,o=t.getAttribute("t-tag");if(t.removeAttribute("t-tag"),"t"===n&&!o)return null;if(n.startsWith("block-"))throw new Error(`Invalid tag name: '${n}'`);e=Object.assign({},e),"pre"===n&&(e.inPreTag=!0);const r=Fe.has(n)&&!e.inSVG;e.inSVG=e.inSVG||r;const i=r?"http://www.w3.org/2000/svg":null,s=t.getAttribute("t-ref");t.removeAttribute("t-ref");const l=t.getAttributeNames();let a=null,c=null,h=null;for(let o of l){const r=t.getAttribute(o);if(o.startsWith("t-on")){if("t-on"===o)throw new Error("Missing event name with t-on directive");c=c||{},c[o.slice(5)]=r}else if(o.startsWith("t-model")){if(!["input","select","textarea"].includes(n))throw new Error("The t-model directive only works with <input>, <textarea> and <select>");let i,s;if(je.test(r)){const t=r.lastIndexOf(".");i=r.slice(0,t),s=`'${r.slice(t+1)}'`}else{if(!We.test(r))throw new Error(`Invalid t-model expression: "${r}" (it should be assignable)`);{const t=r.lastIndexOf("[");i=r.slice(0,t),s=r.slice(t+1,-1)}}const l=t.getAttribute("type"),a="input"===n,c="select"===n,u="textarea"===n,d=a&&"checkbox"===l,f=a&&"radio"===l,p=a&&!d&&!f,m=o.includes(".lazy"),g=o.includes(".number");h={baseExpr:i,expr:s,targetAttr:d?"checked":"value",specialInitTargetAttr:f?"checked":null,eventType:f?"click":c||m?"change":"input",hasDynamicChildren:!1,shouldTrim:o.includes(".trim")&&(p||u),shouldNumberize:g&&(p||u)},c&&((e=Object.assign({},e)).tModelInfo=h)}else{if(o.startsWith("block-"))throw new Error(`Invalid attribute: '${o}'`);if("t-name"!==o){if(o.startsWith("t-")&&!o.startsWith("t-att"))throw new Error(`Unknown QWeb directive: '${o}'`);const t=e.tModelInfo;t&&["t-att-value","t-attf-value"].includes(o)&&(t.hasDynamicChildren=!0),a=a||{},a[o]=r}}}const u=ze(t,e);return{type:2,tag:n,dynamicTag:o,attrs:a,on:c,ref:s,content:u,model:h,ns:i}}(t,e)||function(t,e){if(!t.hasAttribute("t-set"))return null;const n=t.getAttribute("t-set"),o=t.getAttribute("t-value")||null,r=t.innerHTML===t.textContent&&t.textContent||null;let i=null;t.textContent!==t.innerHTML&&(i=ze(t,e));return{type:6,name:n,value:o,defaultValue:r,body:i}}(t,e)||function(t,e){if("t"!==t.tagName)return null;return Ke(t,e)}(t,e):function(t,e){if(t.nodeType===Node.TEXT_NODE){let n=t.textContent||"";if(!e.inPreTag){if(Pe.test(n)&&!n.trim())return null;n=n.replace(Me," ")}return{type:0,value:n}}if(t.nodeType===Node.COMMENT_NODE)return{type:1,value:t.textContent||""};return null}(t,e)}const Pe=/[\r\n]/,Me=/\s+/g;const je=/\.[\w_]+\s*$/,We=/\[[^\[]+\]\s*$/,Fe=new Set(["svg","g","path"]);const Ve=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 ze(t,e){const n=[];for(let o of t.childNodes){const t=Ie(o,e);t&&(3===t.type?n.push(...t.content):n.push(t))}return n}function Ke(t,e){const n=ze(t,e);switch(n.length){case 0:return null;case 1:return n[0];default:return{type:3,content:n}}}const He=Symbol("timeout");function Ue(t,e){const n=new Error(`The following error occurred in ${e}: `),o=new Error(e+"'s promise hasn't resolved after 3 seconds"),r=ae();return(...i)=>{try{const s=t(...i);if(s instanceof Promise){if("onWillStart"===e||"onWillUpdateProps"===e){const t=r.fiber;Promise.race([s,new Promise((t=>setTimeout((()=>t(He)),3e3)))]).then((e=>{e===He&&r.fiber===t&&console.warn(o)}))}return s.catch((t=>{throw n.cause=t,t instanceof Error&&(n.message+=`"${t.message}"`),n}))}return s}catch(t){throw t instanceof Error&&(n.message+=`"${t.message}"`),n}}}function qe(t){const e=ae(),n=e.app.dev?Ue:t=>t;e.mounted.push(n(t.bind(e.component),"onMounted"))}function Ge(t){const e=ae(),n=e.app.dev?Ue:t=>t;e.patched.push(n(t.bind(e.component),"onPatched"))}function Xe(t){const e=ae(),n=e.app.dev?Ue:t=>t;e.willUnmount.unshift(n(t.bind(e.component),"onWillUnmount"))}class Ye{constructor(t,e,n){this.props=t,this.env=e,this.__owl__=n}setup(){}render(t=!1){this.__owl__.render(t)}}Ye.template="";const Ze=V("").constructor;class Je extends Ze{constructor(t,e){super(""),this.target=null,this.selector=t,this.realBDom=e}mount(t,e){if(super.mount(t,e),this.target=document.querySelector(this.selector),!this.target){let t=this.el;for(;t&&t.parentElement instanceof HTMLElement;)t=t.parentElement;if(this.target=t&&t.querySelector(this.selector),!this.target)throw new Error("invalid portal target")}this.realBDom.mount(this.target,null)}beforeRemove(){this.realBDom.beforeRemove()}remove(){this.realBDom&&(super.remove(),this.realBDom.remove(),this.realBDom=null)}patch(t){super.patch(t),this.realBDom?this.realBDom.patch(t.realBDom,!0):(this.realBDom=t.realBDom,this.realBDom.mount(this.target,null))}}class Qe extends Ye{setup(){const t=this.__owl__,e=t.renderFn;t.renderFn=()=>new Je(this.props.target,e()),Xe((()=>{t.bdom&&t.bdom.remove()}))}}function tn(t){const e=t.__owl__.component,n=Object.create(e);for(let e in t)n[e]=t[e];return n}Qe.template=Yt`<t t-slot="default"/>`,Qe.props={target:{type:String},slots:!0};const en=Symbol("isBoundary");class nn{constructor(t,e,n){this.fn=t,this.ctx=tn(e),this.node=n}evaluate(){return this.fn(this.ctx,this.node)}toString(){return this.evaluate().toString()}}let on=new WeakMap;const rn={withDefault:function(t,e){return null==t||!1===t?e:t},zero:Symbol("zero"),isBoundary:en,callSlot:function(t,e,n,r,i,s,l){n=n+"__slot_"+r;const a=t.props[xt].slots||{},{__render:c,__ctx:h,__scope:u}=a[r]||{},d=Object.create(h||{});u&&(d[u]=s);const f=c?c.call(h.__owl__.component,d,e,n):null;if(l){let s=void 0,a=void 0;return f?s=i?o(r,f):f:a=l.call(t.__owl__.component,t,e,n),O([s,a])}return f||V("")},capture:tn,withKey:function(t,e){return t.key=e,t},prepareList:function(t){let e,n;if(Array.isArray(t))e=t,n=t;else{if(!t)throw new Error("Invalid loop expression");n=Object.keys(t),e=Object.values(t)}const o=n.length;return[e,n,o,new Array(o)]},setContextValue:function(t,e,n){const o=t;for(;!t.hasOwnProperty(e)&&!t.hasOwnProperty(en);){const e=t.__proto__;if(!e){t=o;break}t=e}t[e]=n},multiRefSetter:function(t,e){let n=0;return o=>{if(o&&(n++,n>1))throw new Error("Cannot have 2 elements with same ref name at the same time");(0===n||o)&&(t[e]=o)}},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},validateProps:function(t,e,n){const o="string"!=typeof t?t:n.constructor.components[t];if(!o)return;ie(e,o);const r=o.defaultProps||{};let i=(s=o.props)instanceof Array?Object.fromEntries(s.map((t=>t.endsWith("?")?[t.slice(0,-1),!1]:[t,!0]))):s||{"*":!0};var s;const l="*"in i;for(let t in i){if("*"===t)continue;const n=i[t];let s,l=!!n;if("object"==typeof n&&"optional"in n&&(l=!n.optional),l&&t in r)throw new Error(`A default value cannot be defined for a mandatory prop (name: '${t}', component: ${o.name})`);if(void 0!==e[t]){try{s=se(e[t],n)}catch(e){throw e.message=`Invalid prop '${t}' in component ${o.name} (${e.message})`,e}if(!s)throw new Error(`Invalid Prop '${t}' in component '${o.name}'`)}else if(l)throw new Error(`Missing props '${t}' (component '${o.name}')`)}if(!l)for(let t in e)if(!(t in i))throw new Error(`Unknown prop '${t}' given to component '${o.name}'`)},LazyValue:nn,safeOutput:function(t){if(!t)return t;let e,n;return t instanceof Gt?(e="string_safe",n=yt(t)):t instanceof nn?(e="lazy_value",n=t.evaluate()):t instanceof String||"string"==typeof t?(e="string_unsafe",n=V(t)):(e="block_safe",n=t),o(e,n)},bind:function(t,e){let n=t.__owl__.component,o=on.get(n);o||(o=new WeakMap,on.set(n,o));let r=o.get(e);return r||(r=e.bind(n),o.set(e,r)),r},createCatcher:function(t){let e=[],n=[];for(let o in t){let r=t[o],{setup:i,remove:s}=k(o);e[r]=i,n[r]=s}let o=e.length;class r{constructor(t,e){this.afterNode=null,this.child=t,this.handlers=e}mount(t,n){this.parentEl=t,this.afterNode=n,this.child.mount(t,n);for(let n=0;n<o;n++){let o=this.handlers[n][0];const r=this;this.handlers[n][0]=function(t){const e=t.target;let n=r.child.firstNode();const i=r.afterNode;for(;n!==i;){if(n.contains(e))return o.call(this,t);n=n.nextSibling}},e[n].call(t,this.handlers[n])}}moveBefore(t,e){this.afterNode=null,this.child.moveBefore(t?t.child:null,e)}patch(t,e){this!==t&&(this.handlers=t.handlers,this.child.patch(t.child,e))}beforeRemove(){this.child.beforeRemove()}remove(){for(let t=0;t<o;t++)n[t].call(this.parentEl);this.child.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}}return function(t,e){return new r(t,e)}}},sn={text:V,createBlock:Q,list:ft,multi:O,html:yt,toggler:o,component:function(t,e,n,o,r){let i=o.children[n],s="string"!=typeof t;i&&2===i.status&&(i=void 0),s&&i&&i.component.constructor!==t&&(i=void 0);const l=o.fiber;if(i){let t=i.forceNextRender;if(t)i.forceNextRender=!1;else{const n=i.component.props[xt];t=l.deep||function(t,e){for(let n in t)if(t[n]!==e[n])return!0;return Object.keys(t).length!==Object.keys(e).length}(n,e)}t&&i.updateAndRender(e,l)}else{let a;if(s)a=t;else if(a=r.constructor.components[t],!a)throw new Error(`Cannot find the definition of component "${t}"`);i=new ue(a,e,o.app,o,n),o.children[n]=i,i.initiateRender(new ne(i,l))}return l.childrenMap[n]=i,i},comment:z};let ln=!1;class an extends class{constructor(t={}){var e;this.rawTemplates=Object.create(Xt),this.templates={},this.dev=t.dev||!1,this.translateFn=t.translateFn,this.translatableAttributes=t.translatableAttributes,t.templates&&this.addTemplates(t.templates),this.helpers=(e=this.getTemplate.bind(this),Object.assign({},rn,{Portal:Qe,markRaw:Lt,getTemplate:e,call:(t,n,r,i,s)=>o(n,e(n).call(t,r,i,s))}))}addTemplate(t,e,n={}){if(t in this.rawTemplates&&!n.allowDuplicate)throw new Error(`Template ${t} already defined`);this.rawTemplates[t]=e}addTemplates(t,e={}){if(t){t=t instanceof Document?t:function(t){const e=(new DOMParser).parseFromString(t,"text/xml");if(e.getElementsByTagName("parsererror").length){let n="Invalid XML in template.";const o=e.getElementsByTagName("parsererror")[0].textContent;if(o){n+="\nThe parser has produced the following error message:\n"+o;const e=/\d+/g,r=e.exec(o);if(r){const i=Number(r[0]),s=t.split("\n")[i-1],l=e.exec(o);if(s&&l){const t=Number(l[0])-1;s[t]&&(n+=`\nThe error might be located at xml line ${i} column ${t}\n${s}\n${"-".repeat(t-1)}^`)}}}throw new Error(n)}return e}(t);for(const n of t.querySelectorAll("[t-name]")){const t=n.getAttribute("t-name");this.addTemplate(t,n,e)}}}getTemplate(t){if(!(t in this.templates)){const e=this.rawTemplates[t];if(void 0===e){let e="";try{e=` (for component "${ae().component.constructor.name}")`}catch{}throw new Error(`Missing template: "${t}"${e}`)}const n=this._compileTemplate(t,e),o=this.templates;this.templates[t]=function(e,n){return o[t].call(this,e,n)};const r=n(sn,this.helpers);this.templates[t]=r}return this.templates[t]}_compileTemplate(t,e){return function(t,e={}){const n=Be(t),o=t instanceof Node?!(t instanceof Element)||null===t.querySelector("[t-set], [t-call]"):!t.includes("t-set")&&!t.includes("t-call"),r=new De(n,{...e,hasSafeContext:o}).generateCode();return new Function("bdom, helpers",r)}(e,{name:t,dev:this.dev,translateFn:this.translateFn,translatableAttributes:this.translatableAttributes})}}{constructor(t,e={}){super(e),this.scheduler=new de,this.root=null,this.Root=t,e.test&&(this.dev=!0),!this.dev||e.test||ln||(console.info(`Owl is running in 'dev' mode.\n\nThis is not suitable for production use.\nSee https://github.com/odoo/owl/blob/${window.owl?window.owl.__info__.hash:"master"}/doc/reference/app.md#configuration for more information.`),ln=!0);const n=e.env||{},o=Object.getOwnPropertyDescriptors(n);this.env=Object.freeze(Object.create(Object.getPrototypeOf(n),o)),this.props=e.props||{}}mount(t,e){an.validateTarget(t);const n=this.makeNode(this.Root,this.props),o=this.mountNode(n,t,e);return this.root=n,o}makeNode(t,e){return new ue(t,e,this,null,null)}mountNode(t,e,n){const o=new Promise(((e,n)=>{let o=!1;t.mounted.push((()=>{e(t.component),o=!0}));let r=Jt.get(t);r||(r=[],Jt.set(t,r)),r.unshift((t=>{throw o?console.error(t):n(t),t}))}));return t.mountComponent(e,n),o}destroy(){this.root&&(this.scheduler.flush(),this.root.destroy())}}function cn(t,e){const n=Object.create(t),o=Object.getOwnPropertyDescriptors(e);return Object.freeze(Object.defineProperties(n,o))}function hn(t){const e=ae();e.childEnv=cn(e.childEnv,t)}an.validateTarget=function(t){if(!(t instanceof HTMLElement))throw new Error("Cannot mount component: the target is not a valid DOM element");if(!document.body.contains(t))throw new Error("Cannot mount a component on a detached dom node")},e.shouldNormalizeDom=!1,e.mainEventHandler=(e,n,o)=>{const{data:r,modifiers:i}=t(e);e=r;let s=!1;if(i.length){let t=!1;const e=n.target===o;for(const o of i)switch(o){case"self":if(t=!0,e)continue;return s;case"prevent":(t&&e||!t)&&n.preventDefault();continue;case"stop":(t&&e||!t)&&n.stopPropagation(),s=!0;continue}}if(Object.hasOwnProperty.call(e,0)){const t=e[0];if("function"!=typeof t)throw new Error(`Invalid handler (expected a function, received: '${t}')`);let o=e[1]?e[1].__owl__:null;o&&1!==o.status||t.call(o?o.component:null,n)}return s};const un={config:e,mount:wt,patch:function(t,e,n=!1){t.patch(e,n)},remove:function(t,e=!1){e&&t.beforeRemove(),t.remove()},list:ft,multi:O,text:V,toggler:o,createBlock:Q,html:yt,comment:z},dn={};exports.App=an,exports.Component=Ye,exports.EventBus=qt,exports.__info__=dn,exports.blockDom=un,exports.loadFile=async function(t){const e=await fetch(t);if(!e.ok)throw new Error("Error while fetching xml templates");return await e.text()},exports.markRaw=Lt,exports.markup=function(t){return new Gt(t)},exports.mount=async function(t,e,n={}){return new an(t,n).mount(e,n)},exports.onError=function(t){const e=ae();let n=Jt.get(e);n||(n=[],Jt.set(e,n)),n.push(t.bind(e.component))},exports.onMounted=qe,exports.onPatched=Ge,exports.onRendered=function(t){const e=ae(),n=e.renderFn,o=e.app.dev?Ue:t=>t;t=o(t.bind(e.component),"onRendered"),e.renderFn=()=>{const e=n();return t(),e}},exports.onWillDestroy=function(t){const e=ae(),n=e.app.dev?Ue:t=>t;e.willDestroy.push(n(t.bind(e.component),"onWillDestroy"))},exports.onWillPatch=function(t){const e=ae(),n=e.app.dev?Ue:t=>t;e.willPatch.unshift(n(t.bind(e.component),"onWillPatch"))},exports.onWillRender=function(t){const e=ae(),n=e.renderFn,o=e.app.dev?Ue:t=>t;t=o(t.bind(e.component),"onWillRender"),e.renderFn=()=>(t(),n())},exports.onWillStart=function(t){const e=ae(),n=e.app.dev?Ue:t=>t;e.willStart.push(n(t.bind(e.component),"onWillStart"))},exports.onWillUnmount=Xe,exports.onWillUpdateProps=function(t){const e=ae(),n=e.app.dev?Ue:t=>t;e.willUpdateProps.push(n(t.bind(e.component),"onWillUpdateProps"))},exports.reactive=jt,exports.status=function(t){switch(t.__owl__.status){case 0:return"new";case 1:return"mounted";case 2:return"destroyed"}},exports.toRaw=Dt,exports.useChildSubEnv=hn,exports.useComponent=function(){return le.component},exports.useEffect=function(t,e=(()=>[NaN])){let n,o;qe((()=>{o=e(),n=t(...o)})),Ge((()=>{const r=e();r.some(((t,e)=>t!==o[e]))&&(o=r,n&&n(),n=t(...o))})),Xe((()=>n&&n()))},exports.useEnv=function(){return ae().component.env},exports.useExternalListener=function(t,e,n,o){const r=ae(),i=n.bind(r.component);qe((()=>t.addEventListener(e,i,o))),Xe((()=>t.removeEventListener(e,i,o)))},exports.useRef=function(t){const e=ae().refs;return{get el(){return e[t]||null}}},exports.useState=he,exports.useSubEnv=function(t){const e=ae();e.component.env=cn(e.component.env,t),hn(t)},exports.whenReady=function(t){return new Promise((function(t){"loading"!==document.readyState?t(!0):document.addEventListener("DOMContentLoaded",t,!1)})).then(t||function(){})},exports.xml=Yt,dn.version="2.0.0-beta-5",dn.date="2022-04-07T13:36:37.300Z",dn.hash="1179e84",dn.url="https://github.com/odoo/owl";
1
+ "use strict";function t(t){t=t.slice();const e=[];let n;for(;(n=t[0])&&"string"==typeof n;)e.push(t.shift());return{modifiers:e,data:t}}Object.defineProperty(exports,"__esModule",{value:!0});const e={shouldNormalizeDom:!0,mainEventHandler:(e,n,o)=>("function"==typeof e?e(n):Array.isArray(e)&&(e=t(e).data)[0](e[1],n),!1)};class n{constructor(t,e){this.key=t,this.child=e}mount(t,e){this.parentEl=t,this.child.mount(t,e)}moveBefore(t,e){this.child.moveBefore(t?t.child:null,e)}patch(t,e){if(this===t)return;let n=this.child,o=t.child;this.key===t.key?n.patch(o,e):(o.mount(this.parentEl,n.firstNode()),e&&n.beforeRemove(),n.remove(),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 o(t,e){return new n(t,e)}const{setAttribute:r,removeAttribute:i}=Element.prototype,s=DOMTokenList.prototype,l=s.add,a=s.remove,c=Array.isArray,{split:h,trim:u}=String.prototype,d=/\s+/;function f(t,e){switch(e){case!1:case void 0:i.call(this,t);break;case!0:r.call(this,t,"");break;default:r.call(this,t,e)}}function p(t){return function(e){f.call(this,t,e)}}function m(t){if(c(t))f.call(this,t[0],t[1]);else for(let e in t)f.call(this,e,t[e])}function g(t,e){if(c(t)){const n=t[0],o=t[1];if(n===e[0]){if(o===e[1])return;f.call(this,n,o)}else i.call(this,e[0]),f.call(this,n,o)}else{for(let n in e)n in t||i.call(this,n);for(let n in t){const o=t[n];o!==e[n]&&f.call(this,n,o)}}}function b(t){const e={};switch(typeof t){case"string":const n=u.call(t);if(!n)return{};let o=h.call(n,d);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){const t=h.call(n,d);for(let n of t)e[n]=o}}return e;case"undefined":return{};case"number":return{[t]:!0};default:return{[t]:!0}}}function v(t){t=""===t?{}:b(t);const e=this.classList;for(let n in t)l.call(e,n)}function y(t,e){e=""===e?{}:b(e),t=""===t?{}:b(t);const n=this.classList;for(let o in e)o in t||a.call(n,o);for(let o in t)o in e||l.call(n,o)}function w(t){return function(e){this[t]=0===e?0:e||""}}function x(t,e){switch(t){case"input":return"checked"===e||"indeterminate"===e||"value"===e||"readonly"===e||"disabled"===e;case"option":return"selected"===e||"disabled"===e;case"textarea":return"value"===e||"readonly"===e||"disabled"===e;case"select":return"value"===e||"disabled"===e;case"button":case"optgroup":return"disabled"===e}return!1}function k(t){const n=t.split(".")[0],o=t.includes(".capture");return t.includes(".synthetic")?function(t,n=!1){let o="__event__synthetic_"+t;n&&(o+="_capture");!function(t,n,o=!1){if(E[n])return;document.addEventListener(t,(t=>function(t,n){let o=n.target;for(;null!==o;){const r=o[t];if(r)for(const t of Object.values(r)){if(e.mainEventHandler(t,n,o))return}o=o.parentNode}}(n,t)),{capture:o}),E[n]=!0}(t,o,n);const r=N++;function i(t){const e=this[o]||{};e[r]=t,this[o]=e}function s(){delete this[o]}return{setup:i,update:i,remove:s}}(n,o):function(t,n=!1){let o=`__event__${t}_${$++}`;n&&(o+="_capture");function r(t){const n=t.currentTarget;if(!n||!document.contains(n))return;const r=n[o];r&&e.mainEventHandler(r,t,n)}function i(e){this[o]=e,this.addEventListener(t,r,{capture:n})}function s(){delete this[o],this.removeEventListener(t,r,{capture:n})}function l(t){this[o]=t}return{setup:i,update:l,remove:s}}(n,o)}let $=1;let N=1;const E={};const A=Node.prototype,T=A.insertBefore,_=(S=A,C="textContent",Object.getOwnPropertyDescriptor(S,C)).set;var S,C;const L=A.removeChild;class D{constructor(t){this.children=t}mount(t,e){const n=this.children,o=n.length,r=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("");r[i]=n,T.call(t,n,e)}}this.anchors=r,this.parentEl=t}moveBefore(t,e){if(t){const n=t.children[0];e=(n?n.firstNode():t.anchors[0])||null}const n=this.children,o=this.parentEl,r=this.anchors;for(let t=0,i=n.length;t<i;t++){let i=n[t];if(i)i.moveBefore(null,e);else{const n=r[t];T.call(o,n,e)}}}patch(t,e){if(this===t)return;const n=this.children,o=t.children,r=this.anchors,i=this.parentEl;for(let t=0,s=n.length;t<s;t++){const s=n[t],l=o[t];if(s)if(l)s.patch(l,e);else{const o=s.firstNode(),l=document.createTextNode("");r[t]=l,T.call(i,l,o),e&&s.beforeRemove(),s.remove(),n[t]=void 0}else if(l){n[t]=l;const e=r[t];l.mount(i,e),L.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)_.call(t,"");else{const e=this.children,n=this.anchors;for(let o=0,r=e.length;o<r;o++){const r=e[o];r?r.remove():L.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 O(t){return new D(t)}const B=Node.prototype,R=CharacterData.prototype,I=B.insertBefore,P=((t,e)=>Object.getOwnPropertyDescriptor(t,e))(R,"data").set,M=B.removeChild;class j{constructor(t){this.text=t}mountNode(t,e,n){this.parentEl=e,I.call(e,t,n),this.el=t}moveBefore(t,e){const n=t?t.el:e;I.call(this.parentEl,this.el,n)}beforeRemove(){}remove(){M.call(this.parentEl,this.el)}firstNode(){return this.el}toString(){return this.text}}class W extends j{mount(t,e){this.mountNode(document.createTextNode(K(this.text)),t,e)}patch(t){const e=t.text;this.text!==e&&(P.call(this.el,K(e)),this.text=e)}}class F extends j{mount(t,e){this.mountNode(document.createComment(K(this.text)),t,e)}patch(){}}function V(t){return new W(t)}function z(t){return new F(t)}function K(t){switch(typeof t){case"string":return t;case"number":return String(t);case"boolean":return t?"true":"false";default:return t||""}}const H=(t,e)=>Object.getOwnPropertyDescriptor(t,e),U=Node.prototype,q=Element.prototype,G=H(CharacterData.prototype,"data").set,X=H(U,"firstChild").get,Y=H(U,"nextSibling").get,Z=()=>{},J={};function Q(t){if(t in J)return J[t];const n=(new DOMParser).parseFromString(`<t>${t}</t>`,"text/xml").firstChild.firstChild;e.shouldNormalizeDom&&tt(n);const o=et(n),r=rt(o),i=function(t,e){let n=function(t,e){const{refN:n,collectors:o,children:r}=e,i=o.length;e.locations.sort(((t,e)=>t.idx-e.idx));const s=e.locations.map((t=>({refIdx:t.refIdx,setData:t.setData,updateData:t.updateData}))),l=s.length,a=r.length,c=r,h=n>0,u=U.cloneNode,d=U.insertBefore,f=q.remove;class p{constructor(t){this.data=t}beforeRemove(){}remove(){f.call(this.el)}firstNode(){return this.el}moveBefore(t,e){const n=t?t.el:e;d.call(this.parentEl,this.el,n)}toString(){const t=document.createElement("div");return this.mount(t,null),t.innerHTML}mount(e,n){const o=u.call(t,!0);d.call(e,o,n),this.el=o,this.parentEl=e}patch(t,e){}}h&&(p.prototype.mount=function(e,r){const h=u.call(t,!0),f=new Array(n);this.refs=f,f[0]=h;for(let t=0;t<i;t++){const e=o[t];f[e.idx]=e.getVal.call(f[e.prevIdx])}if(l){const t=this.data;for(let e=0;e<l;e++){const n=s[e];n.setData.call(f[n.refIdx],t[e])}}if(d.call(e,h,r),a){const t=this.children;for(let e=0;e<a;e++){const n=t[e];if(n){const t=c[e],o=t.afterRefIdx?f[t.afterRefIdx]:null;n.isOnlyChild=t.isOnlyChild,n.mount(f[t.parentRefIdx],o)}}}this.el=h,this.parentEl=e},p.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 r=e[t],i=o[t];if(r!==i){const e=s[t];e.updateData.call(n[e.refIdx],i,r)}}this.data=o}if(a){let o=this.children;const r=t.children;for(let t=0;t<a;t++){const i=o[t],s=r[t];if(i)s?i.patch(s,e):(e&&i.beforeRemove(),i.remove(),o[t]=void 0);else if(s){const e=c[t],r=e.afterRefIdx?n[e.afterRefIdx]:null;s.mount(n[e.parentRefIdx],r),o[t]=s}}}});return p}(t,e);if(e.cbRefs.length){const t=e.cbRefs,o=e.refList;let r=t.length;n=class extends n{mount(t,e){o.push(new Array(r)),super.mount(t,e);for(let t of o.pop())t()}remove(){super.remove();for(let e of t){(0,this.data[e])(null)}}}}if(e.children.length)return n=class extends n{constructor(t,e){super(t),this.children=e}},n.prototype.beforeRemove=D.prototype.beforeRemove,(t,e=[])=>new n(t,e);return t=>new n(t)}(o.el,r);return J[t]=i,i}function tt(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)tt(t.childNodes.item(e))}else t.remove()}function et(t,e=null,n=null){switch(t.nodeType){case Node.ELEMENT_NODE:{let o=n&&n.currentNS;const r=t.tagName;let i=void 0;const s=[];if(r.startsWith("block-text-")){const t=parseInt(r.slice(11),10);s.push({type:"text",idx:t}),i=document.createTextNode("")}if(r.startsWith("block-child-")){n.isRef||nt(n);const t=parseInt(r.slice(12),10);s.push({type:"child",idx:t}),i=document.createTextNode("")}const l=t.attributes,a=l.getNamedItem("block-ns");if(a&&(l.removeNamedItem("block-ns"),o=a.value),i||(i=o?document.createElementNS(o,r):document.createElement(r)),i instanceof Element)for(let t=0;t<l.length;t++){const e=l[t].name,n=l[t].value;if(e.startsWith("block-handler-")){const t=parseInt(e.slice(14),10);s.push({type:"handler",idx:t,event:n})}else if(e.startsWith("block-attribute-")){const t=parseInt(e.slice(16),10);s.push({type:"attribute",idx:t,name:n,tag:r})}else"block-attributes"===e?s.push({type:"attributes",idx:parseInt(n,10)}):"block-ref"===e?s.push({type:"ref",idx:parseInt(n,10)}):i.setAttribute(l[t].name,n)}const c={parent:e,firstChild:null,nextSibling:null,el:i,info:s,refN:0,currentNS:o};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);s.push({idx:n,type:"child",isOnlyChild:!0})}else{c.firstChild=et(t.firstChild,c,c),i.appendChild(c.firstChild.el);let e=t.firstChild,n=c.firstChild;for(;e=e.nextSibling;)n.nextSibling=et(e,n,c),i.appendChild(n.nextSibling.el),n=n.nextSibling}}return c.info.length&&nt(c),c}case Node.TEXT_NODE:case Node.COMMENT_NODE:return{parent:e,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 Error("boom")}function nt(t){t.isRef=!0;do{t.refN++}while(t=t.parent)}function ot(t){let e=t.parent;for(;e&&e.nextSibling===t;)t=e,e=e.parent;return e}function rt(t,e,n){if(!e){e={collectors:[],locations:[],children:new Array(t.info.filter((t=>"child"===t.type)).length),cbRefs:[],refN:t.refN,refList:[]},n=0}if(t.refN){const o=n,r=t.isRef,i=t.firstChild?t.firstChild.refN:0,s=t.nextSibling?t.nextSibling.refN:0;if(r){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:it,updateData:it});break;case"child":n.isOnlyChild?t.children[n.idx]={parentRefIdx:n.refIdx,isOnlyChild:!0}:t.children[n.idx]={parentRefIdx:ot(e).refIdx,afterRefIdx:n.refIdx};break;case"attribute":{const e=n.refIdx;let o,r;if(x(n.tag,n.name)){const t=w(n.name);r=t,o=t}else"class"===n.name?(r=v,o=y):(r=p(n.name),o=r);t.locations.push({idx:n.idx,refIdx:e,setData:r,updateData:o});break}case"attributes":t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:m,updateData:g});break;case"handler":{const{setup:e,update:o}=k(n.event);t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:e,updateData:o});break}case"ref":const o=t.cbRefs.push(n.idx)-1;t.locations.push({idx:n.idx,refIdx:n.refIdx,setData:st(o,t.refList),updateData:Z})}}(e,t),n++}if(s){const r=n+i;e.collectors.push({idx:r,prevIdx:o,getVal:Y}),rt(t.nextSibling,e,r)}i&&(e.collectors.push({idx:n,prevIdx:o,getVal:X}),rt(t.firstChild,e,n))}return e}function it(t){G.call(this,K(t))}function st(t,e){return function(n){e[e.length-1][t]=()=>n(this)}}const lt=Node.prototype,at=lt.insertBefore,ct=lt.appendChild,ht=lt.removeChild,ut=((t,e)=>Object.getOwnPropertyDescriptor(t,e))(lt,"textContent").set;class dt{constructor(t){this.children=t}mount(t,e){const n=this.children,o=document.createTextNode("");this.anchor=o,at.call(t,o,e);const r=n.length;if(r){const e=n[0].mount;for(let i=0;i<r;i++)e.call(n[i],t,o)}this.parentEl=t}moveBefore(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].moveBefore(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 r=o[0]||n[0],{mount:i,patch:s,remove:l,beforeRemove:a,moveBefore:c,firstNode:h}=r,u=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 ut.call(f,""),void ct.call(f,u)}let p=0,m=0,g=n[0],b=o[0],v=n.length-1,y=o.length-1,w=n[v],x=o[y],k=void 0;for(;p<=v&&m<=y;){if(null===g){g=n[++p];continue}if(null===w){w=n[--v];continue}let t=g.key,r=b.key;if(t===r){s.call(g,b,e),o[m]=g,g=n[++p],b=o[++m];continue}let l=w.key,a=x.key;if(l===a){s.call(w,x,e),o[y]=w,w=n[--v],x=o[--y];continue}if(t===a){s.call(g,x,e),o[y]=g;const t=o[y+1];c.call(g,t,u),g=n[++p],x=o[--y];continue}if(l===r){s.call(w,b,e),o[m]=w;const t=n[p];c.call(w,t,u),w=n[--v],b=o[++m];continue}k=k||pt(n,p,v);let d=k[r];if(void 0===d)i.call(b,f,h.call(g)||null);else{const t=n[d];c.call(t,g,null),s.call(t,b,e),o[m]=t,n[d]=null}b=o[++m]}if(p<=v||m<=y)if(p>v){const t=o[y+1],e=t?h.call(t)||null:u;for(let t=m;t<=y;t++)i.call(o[t],f,e)}else for(let t=p;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)ut.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])}ht.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 ft(t){return new dt(t)}function pt(t,e,n){let o={};for(let r=e;r<=n;r++)o[t[r].key]=r;return o}const mt=Node.prototype,gt=mt.insertBefore,bt=mt.removeChild;class vt{constructor(t){this.content=[],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)gt.call(t,n,e);if(!this.content.length){const n=document.createTextNode("");this.content.push(n),gt.call(t,n,e)}}moveBefore(t,e){const n=t?t.content[0]:e,o=this.parentEl;for(let t of this.content)gt.call(o,t,n)}patch(t){if(this===t)return;const e=t.html;if(this.html!==e){const n=this.parentEl,o=this.content[0],r=document.createElement("template");r.innerHTML=e;const i=[...r.content.childNodes];for(let t of i)gt.call(n,t,o);if(!i.length){const t=document.createTextNode("");i.push(t),gt.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)bt.call(t,e)}firstNode(){return this.content[0]}toString(){return this.html}}function yt(t){return new vt(t)}function wt(t,e,n=null){t.mount(e,n)}const xt=Symbol("Target"),kt=Symbol("Skip"),$t=Symbol("Key changes"),Nt=Object.prototype.toString,Et=Object.prototype.hasOwnProperty,At=new Set(["Object","Array","Set","Map","WeakMap"]),Tt=new Set(["Set","Map","WeakMap"]);function _t(t){return Nt.call(t).slice(8,-1)}function St(t){return"object"==typeof t&&At.has(_t(t))}function Ct(t,e){return St(t)?jt(t,e):t}function Lt(t){return t[kt]=!0,t}function Dt(t){return t[xt]||t}const Ot=new WeakMap;function Bt(t,e,n){Ot.get(t)||Ot.set(t,new Map);const o=Ot.get(t);o.get(e)||o.set(e,new Set),o.get(e).add(n),It.has(n)||It.set(n,new Set),It.get(n).add(t)}function Rt(t,e){const n=Ot.get(t);if(!n)return;const o=n.get(e);if(o)for(const t of[...o])Pt(t),t()}const It=new WeakMap;function Pt(t){const e=It.get(t);if(e){for(const n of e){const e=Ot.get(n);if(e)for(const n of e.values())n.delete(t)}e.clear()}}const Mt=new WeakMap;function jt(t,e=(()=>{})){if(!St(t))throw new Error("Cannot make the given value reactive");if(kt in t)return t;const n=t[xt];if(n)return jt(n,e);Mt.has(t)||Mt.set(t,new Map);const o=Mt.get(t);if(!o.has(e)){const n=_t(t),r=Tt.has(n)?function(t,e,n){const o=Ut[n](t,e);return Object.assign(Wt(e),{get:(t,n)=>n===xt?t:Et.call(o,n)?o[n]:(Bt(t,n,e),Ct(t[n],e))})}(t,e,n):Wt(e),i=new Proxy(t,r);o.set(e,i)}return o.get(e)}function Wt(t){return{get(e,n,o){if(n===xt)return e;const r=Object.getOwnPropertyDescriptor(e,n);return!r||r.writable||r.configurable?(Bt(e,n,t),Ct(Reflect.get(e,n,o),t)):Reflect.get(e,n,o)},set(t,e,n,o){const r=!Et.call(t,e),i=Reflect.get(t,e,o),s=Reflect.set(t,e,n,o);return r&&Rt(t,$t),(i!==n||Array.isArray(t)&&"length"===e)&&Rt(t,e),s},deleteProperty(t,e){const n=Reflect.deleteProperty(t,e);return Rt(t,$t),Rt(t,e),n},ownKeys:e=>(Bt(e,$t,t),Reflect.ownKeys(e)),has:(e,n)=>(Bt(e,$t,t),Reflect.has(e,n))}}function Ft(t,e,n){return o=>(o=Dt(o),Bt(e,o,n),Ct(e[t](o),n))}function Vt(t,e,n){return function*(){Bt(e,$t,n);const o=e.keys();for(const r of e[t]()){const t=o.next().value;Bt(e,t,n),yield Ct(r,n)}}}function zt(t,e){return function(n,o){Bt(t,$t,e),t.forEach((function(r,i,s){Bt(t,i,e),n.call(o,Ct(r,e),Ct(i,e),Ct(s,e))}),o)}}function Kt(t,e,n){return(o,r)=>{o=Dt(o);const i=n.has(o),s=n[e](o),l=n[t](o,r);return i!==n.has(o)&&Rt(n,$t),s!==r&&Rt(n,o),l}}function Ht(t){return()=>{const e=[...t.keys()];t.clear(),Rt(t,$t);for(const n of e)Rt(t,n)}}const Ut={Set:(t,e)=>({has:Ft("has",t,e),add:Kt("add","has",t),delete:Kt("delete","has",t),keys:Vt("keys",t,e),values:Vt("values",t,e),entries:Vt("entries",t,e),[Symbol.iterator]:Vt(Symbol.iterator,t,e),forEach:zt(t,e),clear:Ht(t),get size(){return Bt(t,$t,e),t.size}}),Map:(t,e)=>({has:Ft("has",t,e),get:Ft("get",t,e),set:Kt("set","get",t),delete:Kt("delete","has",t),keys:Vt("keys",t,e),values:Vt("values",t,e),entries:Vt("entries",t,e),[Symbol.iterator]:Vt(Symbol.iterator,t,e),forEach:zt(t,e),clear:Ht(t),get size(){return Bt(t,$t,e),t.size}}),WeakMap:(t,e)=>({has:Ft("has",t,e),get:Ft("get",t,e),set:Kt("set","get",t),delete:Kt("delete","has",t)})};class qt extends EventTarget{trigger(t,e){this.dispatchEvent(new CustomEvent(t,{detail:e}))}}class Gt extends String{}const Xt={};function Yt(...t){const e="__template__"+Yt.nextId++,n=String.raw(...t);return Xt[e]=n,e}Yt.nextId=1;const Zt=new WeakMap,Jt=new WeakMap;function Qt(t,e){if(!t)return!1;const n=t.fiber;n&&Zt.set(n,e);const o=Jt.get(t);if(o){let t=!1;for(let n=o.length-1;n>=0;n--)try{o[n](e),t=!0;break}catch(t){e=t}if(t)return!0}return Qt(t.parent,e)}function te(t){const e=t.error,n="node"in t?t.node:t.fiber.node,o="fiber"in t?t.fiber:n.fiber;let r=o;do{r.node.fiber=r,r=r.parent}while(r);Zt.set(o.root,e);if(!Qt(n,e)){console.warn("[Owl] Unhandled error. Destroying the root component");try{n.app.destroy()}catch(t){console.error(t)}}}function ee(t){let e=0;for(let n of t){let t=n.node;0===t.status&&t.destroy(),t.fiber=null,n.bdom?t.forceNextRender=!0:e++,e+=ee(n.children)}return e}class ne{constructor(t,e){if(this.bdom=null,this.children=[],this.appliedToDom=!1,this.deep=!1,this.childrenMap={},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){try{this.bdom=!0,this.bdom=t.renderFn()}catch(e){te({node:t,error:e})}e.setCounter(e.counter-1)}}}class oe extends ne{constructor(){super(...arguments),this.counter=1,this.willPatch=[],this.patched=[],this.mounted=[],this.locked=!1}complete(){const t=this.node;this.locked=!0;let e=void 0;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)}}e=void 0,t._patch(),this.locked=!1;let n=this.mounted;for(;e=n.pop();)if(e=e,e.appliedToDom)for(let t of e.node.mounted)t();let o=this.patched;for(;e=o.pop();)if(e=e,e.appliedToDom)for(let t of e.node.patched)t()}catch(t){this.locked=!1,te({fiber:e||this,error:t})}}setCounter(t){this.counter=t,0===t&&this.node.app.scheduler.flush()}}class re extends oe{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)wt(e.bdom,this.target);else{const t=this.target.childNodes[0];wt(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){te({fiber:t,error:e})}}}function ie(t,e){const n=e.defaultProps;if(n)for(let e in n)void 0===t[e]&&(t[e]=n[e])}function se(t,e){if(!0===e)return!0;if("function"==typeof e)return"object"==typeof t?t instanceof e:typeof t===e.name.toLowerCase();if(e instanceof Array){let n=!1;for(let o=0,r=e.length;o<r;o++)n=n||se(t,e[o]);return n}if(e.optional&&void 0===t)return!0;let n=!e.type||se(t,e.type);if(e.validate&&(n=n&&e.validate(t)),e.type===Array&&e.element)for(let o=0,r=t.length;o<r;o++)n=n&&se(t[o],e.element);if(e.type===Object&&e.shape){const o=e.shape;for(let e in o)n=n&&se(t[e],o[e]);if(n)for(let e in t)if(!(e in o))throw new Error(`unknown prop '${e}'`)}return n}let le=null;function ae(){if(!le)throw new Error("No active component (a hook function should only be called in 'setup')");return le}const ce=new WeakMap;function he(t){const e=ae();let n=ce.get(e);return n||(n=function(t){let e=!1;return async()=>{await Promise.resolve(),e||(e=!0,Promise.resolve().then((()=>e=!1)),t())}}(e.render.bind(e,!1)),ce.set(e,n),e.willDestroy.push(Pt.bind(null,n))),jt(t,n)}class ue{constructor(t,e,n,o,r){this.fiber=null,this.bdom=null,this.status=0,this.forceNextRender=!1,this.children=Object.create(null),this.refs={},this.willStart=[],this.willUpdateProps=[],this.willUnmount=[],this.mounted=[],this.willPatch=[],this.patched=[],this.willDestroy=[],le=this,this.app=n,this.parent=o,this.parentKey=r,this.level=o?o.level+1:0,ie(e,t);const i=o&&o.childEnv||n.env;this.childEnv=i,e=he(e),this.component=new t(e,i,this),this.renderFn=n.getTemplate(t.template).bind(this.component,this.component,this),this.component.setup(),le=null}mountComponent(t,e){const n=new re(this,t,e);this.app.scheduler.addFiber(n),this.initiateRender(n)}async initiateRender(t){this.fiber=t,this.mounted.length&&t.root.mounted.push(t);const e=this.component;try{await Promise.all(this.willStart.map((t=>t.call(e))))}catch(t){return void te({node:this,error:t})}0===this.status&&this.fiber===t&&t.render()}async render(t){let e=this.fiber;if(e&&(e.root.locked||!0===e.bdom)&&(await Promise.resolve(),e=this.fiber),e){if(!e.bdom&&!Zt.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-ee(e.children)),t.locked=!1,e.children=[],e.childrenMap={},e.bdom=null,Zt.has(e)&&(Zt.delete(e),Zt.delete(t),e.appliedToDom=!1),e}const n=new oe(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(),2!==this.status&&(this.fiber!==n||!e&&n.parent||n.render())}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 of Object.values(this.children))t._destroy();if(this.willDestroy.length)try{for(let e of this.willDestroy)e.call(t)}catch(t){te({error:t,node:this})}this.status=2}async updateAndRender(t,e){const n=function(t,e){let n=t.fiber;return n&&(ee(n.children),n.root=null),new ne(t,e)}(this,e);this.fiber=n;const o=this.component;ie(t,o.constructor),le=this,t=he(t),le=null;const r=Promise.all(this.willUpdateProps.map((e=>e.call(o,t))));if(await r,n!==this.fiber)return;o.props=t,n.render();const i=e.root;this.willPatch.length&&i.willPatch.push(n),this.patched.length&&i.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}moveBefore(t,e){this.bdom.moveBefore(t?t.bdom:null,e)}patch(){this.fiber&&this.fiber.parent&&this._patch()}_patch(){const t=Object.keys(this.children).length>0;this.children=this.fiber.childrenMap,this.bdom.patch(this.fiber.bdom,t),this.fiber.appliedToDom=!0,this.fiber=null}beforeRemove(){this._destroy()}remove(){this.bdom.remove()}get name(){return this.component.constructor.name}get subscriptions(){const t=ce.get(this);return t?(e=t,[...It.get(e)||[]].map((t=>{const e=Ot.get(t);return{target:t,keys:e?[...e.keys()]:[]}}))):[];var e}}class de{constructor(){this.tasks=new Set,this.frame=0,this.delayedRenders=[],this.requestAnimationFrame=de.requestAnimationFrame}addFiber(t){this.tasks.add(t.root)}flush(){if(this.delayedRenders.length){let t=this.delayedRenders;this.delayedRenders=[];for(let e of t)e.root&&2!==e.node.status&&e.render()}0===this.frame&&(this.frame=this.requestAnimationFrame((()=>{this.frame=0,this.tasks.forEach((t=>this.processFiber(t)));for(let t of this.tasks)2===t.node.status&&this.tasks.delete(t)})))}processFiber(t){if(t.root!==t)return void this.tasks.delete(t);const e=Zt.has(t);e&&0!==t.counter?this.tasks.delete(t):2!==t.node.status?0===t.counter&&(e||t.complete(),this.tasks.delete(t)):this.tasks.delete(t)}}de.requestAnimationFrame=window.requestAnimationFrame.bind(window);const fe="true,false,NaN,null,undefined,debugger,console,window,in,instanceof,new,function,return,this,eval,void,Math,RegExp,Array,Object,Date".split(","),pe=Object.assign(Object.create(null),{and:"&&",or:"||",gt:">",gte:">=",lt:"<",lte:"<="}),me=Object.assign(Object.create(null),{"{":"LEFT_BRACE","}":"RIGHT_BRACE","[":"LEFT_BRACKET","]":"RIGHT_BRACKET",":":"COLON",",":"COMMA","(":"LEFT_PAREN",")":"RIGHT_PAREN"}),ge="...,.,===,==,+,!==,!=,!,||,&&,>=,>,<=,<,?,-,*,/,%,typeof ,=>,=,;,in ".split(",");const be=[function(t){let e=t[0],n=e;if("'"!==e&&'"'!==e&&"`"!==e)return!1;let o,r=1;for(;t[r]&&t[r]!==n;){if(o=t[r],e+=o,"\\"===o){if(r++,o=t[r],!o)throw new Error("Invalid expression");e+=o}r++}if(t[r]!==n)throw new Error("Invalid expression");return e+=n,"`"===n?{type:"TEMPLATE_STRING",value:e,replace:t=>e.replace(/\$\{(.*?)\}/g,((e,n)=>"${"+t(n)+"}"))}:{type:"VALUE",value:e}},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 ge)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 pe?{type:"OPERATOR",value:pe[e],size:e.length}:{type:"SYMBOL",value:e}}return!1},function(t){const e=t[0];return!(!e||!(e in me))&&{type:me[e],value:e}}];const ve=t=>t&&("LEFT_BRACE"===t.type||"COMMA"===t.type),ye=t=>t&&("RIGHT_BRACE"===t.type||"COMMA"===t.type);function we(t){const e=new Set,n=function(t){const e=[];let n,o=!0,r=t;try{for(;o;)if(r=r.trim(),r){for(let t of be)if(o=t(r),o){e.push(o),r=r.slice(o.size||o.value.length);break}}else o=!1}catch(t){n=t}if(r.length||n)throw new Error(`Tokenizer error: could not tokenize \`${t}\``);return e}(t);let o=0,r=[];for(;o<n.length;){let t=n[o],i=n[o-1],s=n[o+1],l=r[r.length-1];switch(t.type){case"LEFT_BRACE":case"LEFT_BRACKET":r.push(t.type);break;case"RIGHT_BRACE":case"RIGHT_BRACKET":r.pop()}let a="SYMBOL"===t.type&&!fe.includes(t.value);if("SYMBOL"!==t.type||fe.includes(t.value)||i&&("LEFT_BRACE"===l&&ve(i)&&ye(s)&&(n.splice(o+1,0,{type:"COLON",value:":"},{...t}),s=n[o+1]),"OPERATOR"===i.type&&"."===i.value?a=!1:"LEFT_BRACE"!==i.type&&"COMMA"!==i.type||s&&"COLON"===s.type&&(a=!1)),"TEMPLATE_STRING"===t.type&&(t.value=t.replace((t=>xe(t)))),s&&"OPERATOR"===s.type&&"=>"===s.value)if("RIGHT_PAREN"===t.type){let t=o-1;for(;t>0&&"LEFT_PAREN"!==n[t].type;)"SYMBOL"===n[t].type&&n[t].originalValue&&(n[t].value=n[t].originalValue,e.add(n[t].value)),t--}else e.add(t.value);a&&(t.varName=t.value,e.has(t.value)||(t.originalValue=t.value,t.value=`ctx['${t.value}']`)),o++}for(const t of n)"SYMBOL"===t.type&&t.varName&&e.has(t.value)&&(t.originalValue=t.value,t.value="_"+t.value,t.isLocal=!0);return n}function xe(t){return we(t).map((t=>t.value)).join("")}const ke=/\{\{.*?\}\}/g,$e=/\{\{.*?\}\}/g;function Ne(t){let e=t.match(ke);return e&&e[0].length===t.length?`(${xe(t.slice(2,-2))})`:"`"+t.replace($e,(t=>"${"+xe(t.slice(2,-2))+"}"))+"`"}const Ee=document.implementation.createDocument(null,null,null),Ae=new Set(["stop","capture","prevent","self","synthetic"]);class Te{constructor(t,e){this.dynamicTagName=null,this.isRoot=!1,this.hasDynamicChildren=!1,this.children=[],this.data=[],this.childNumber=0,this.parentVar="",this.id=Te.nextBlockId++,this.varName="b"+this.id,this.blockName="block"+this.id,this.target=t,this.type=e}static generateId(t){return this.nextDataIds[t]=(this.nextDataIds[t]||0)+1,t+this.nextDataIds[t]}insertData(t,e="d"){const n=Te.generateId(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=Ee.createElement("t");return t.appendChild(this.dom),t.innerHTML}}function _e(t,e){return Object.assign({block:null,index:0,forceNewBlock:!0,translate:t.translate,tKeyExpr:null,nameSpace:t.nameSpace,tModelSelectedExpr:t.tModelSelectedExpr},e)}Te.nextBlockId=1,Te.nextDataIds={};class Se{constructor(t,e){this.indentLevel=0,this.loopLevel=0,this.code=[],this.hasRoot=!1,this.hasCache=!1,this.hasRef=!1,this.refInfo={},this.shouldProtectScope=!1,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=[];if(t.push(`function ${this.name}(ctx, node, key = "") {`),this.hasRef){t.push(" const refs = ctx.__owl__.refs;");for(let e in this.refInfo){const[n,o]=this.refInfo[e];t.push(` const ${n} = ${o};`)}}this.shouldProtectScope&&(t.push(" ctx = Object.create(ctx);"),t.push(" ctx[isBoundary] = 1")),this.hasCache&&(t.push(" let cache = ctx.cache || {};"),t.push(" let nextCache = ctx.cache = {};"));for(let e of this.code)t.push(e);return this.hasRoot||t.push("return text('');"),t.push("}"),t.join("\n ")}}const Ce=["label","title","placeholder","alt"],Le=/^(\s*)([\s\S]+?)(\s*)$/;class De{constructor(t,e){if(this.blocks=[],this.ids={},this.nextBlockId=1,this.isDebug=!1,this.targets=[],this.target=new Se("template"),this.translatableAttributes=Ce,this.staticDefs=[],this.helpers=new Set,this.translateFn=e.translateFn||(t=>t),e.translatableAttributes){const t=new Set(Ce);for(let n of e.translatableAttributes)n.startsWith("-")?t.delete(n.slice(1)):t.add(n);this.translatableAttributes=[...t]}this.hasSafeContext=e.hasSafeContext||!1,this.dev=e.dev||!1,this.ast=t,this.templateName=e.name}generateCode(){const t=this.ast;this.isDebug=12===t.type,Te.nextBlockId=1,Te.nextDataIds={},this.compileAST(t,{block:null,index:0,forceNewBlock:!1,isLast:!0,translate:!0,tKeyExpr:null});let e=[" let { text, createBlock, list, multi, html, toggler, component, 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=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 r=this.generateId(t),i=this.target,s=new Se(r,o);return this.targets.push(s),this.target=s,this.compileAST(e,_e(n)),this.target=i,r}addLine(t,e){this.target.addLine(t,e)}define(t,e){this.addLine(`const ${t} = ${e};`)}generateId(t=""){return this.ids[t]=(this.ids[t]||0)+1,t+this.ids[t]}insertAnchor(t){const e="block-child-"+t.children.length,n=Ee.createElement(e);t.insert(n)}createBlock(t,e,n){const o=this.target.hasRoot,r=new Te(this.target,e);return o||n.preventRoot||(this.target.hasRoot=!0,r.isRoot=!0),t&&(t.children.push(r),"list"===t.type&&(r.parentVar="c_block"+t.id)),r}insertBlock(t,e,n){let o=e.generateExpr(t);const r=n.tKeyExpr;if(e.parentVar){let t="key"+this.target.loopLevel;return r&&(t=`${r} + ${t}`),this.helpers.add("withKey"),void this.addLine(`${e.parentVar}[${n.index}] = withKey(${o}, ${t});`)}r&&(o=`toggler(${r}, ${o})`),e.isRoot&&!n.preventRoot?(this.target.on&&(o=this.wrapWithEventCatcher(o,this.target.on)),this.addLine(`return ${o};`)):this.define(e.varName,o)}captureExpression(t,e=!1){if(!e&&!t.includes("=>"))return xe(t);const n=we(t),o=new Map;return n.map((t=>{if(t.varName&&!t.isLocal){if(!o.has(t.varName)){const e=this.generateId("v");o.set(t.varName,e),this.define(e,t.value)}t.value=o.get(t.varName)}return t.value})).join("")}compileAST(t,e){switch(t.type){case 1:this.compileComment(t,e);break;case 0:this.compileText(t,e);break;case 2:this.compileTDomNode(t,e);break;case 4:this.compileTEsc(t,e);break;case 8:this.compileTOut(t,e);break;case 5:this.compileTIf(t,e);break;case 9:this.compileTForeach(t,e);break;case 10:this.compileTKey(t,e);break;case 3:this.compileMulti(t,e);break;case 7:this.compileTCall(t,e);break;case 15:this.compileTCallBlock(t,e);break;case 6:this.compileTSet(t,e);break;case 11:this.compileComponent(t,e);break;case 12:this.compileDebug(t,e);break;case 13:this.compileLog(t,e);break;case 14:this.compileTSlot(t,e);break;case 16:this.compileTTranslation(t,e);break;case 17:this.compileTPortal(t,e)}}compileDebug(t,e){this.addLine("debugger;"),t.content&&this.compileAST(t.content,e)}compileLog(t,e){this.addLine(`console.log(${xe(t.expr)});`),t.content&&this.compileAST(t.content,e)}compileComment(t,e){let{block:n,forceNewBlock:o}=e;if(!n||o)n=this.createBlock(n,"comment",e),this.insertBlock(`comment(\`${t.value}\`)`,n,{...e,forceNewBlock:o&&!n});else{const e=Ee.createComment(t.value);n.insert(e)}}compileText(t,e){let{block:n,forceNewBlock:o}=e,r=t.value;if(r&&!1!==e.translate){const t=Le.exec(r);r=t[1]+this.translateFn(t[2])+t[3]}if(!n||o)n=this.createBlock(n,"text",e),this.insertBlock(`text(\`${r}\`)`,n,{...e,forceNewBlock:o&&!n});else{const e=0===t.type?Ee.createTextNode:Ee.createComment;n.insert(e.call(Ee,r))}}generateHandlerCode(t,e){const n=t.split(".").slice(1).map((t=>{if(!Ae.has(t))throw new Error(`Unknown event modifier: '${t}'`);return`"${t}"`}));let o="";return n.length&&(o=n.join(",")+", "),`[${o}${this.captureExpression(e)}, ctx]`}compileTDomNode(t,e){let{block:n,forceNewBlock:o}=e;const r=!n||o||null!==t.dynamicTag||t.ns;let i=this.target.code.length;if(r&&((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=this.generateId("tag");this.define(e,xe(t.dynamicTag)),n.dynamicTagName=e}const s={},l=t.ns||e.nameSpace;l&&r&&(s["block-ns"]=l);for(let o in t.attrs){let r,i;if(o.startsWith("t-attf")){r=Ne(t.attrs[o]);const e=n.insertData(r,"attr");i=o.slice(7),s["block-attribute-"+e]=i}else if(o.startsWith("t-att")){r=xe(t.attrs[o]);const e=n.insertData(r,"attr");"t-att"===o?s["block-attributes"]=String(e):(i=o.slice(6),s["block-attribute-"+e]=i)}else this.translatableAttributes.includes(o)?s[o]=this.translateFn(t.attrs[o]):(r=`"${t.attrs[o]}"`,i=o,s[o]=t.attrs[o]);if("value"===i&&e.tModelSelectedExpr){s["block-attribute-"+n.insertData(`${e.tModelSelectedExpr} === ${r}`,"attr")]="selected"}}for(let e in t.on){const o=this.generateHandlerCode(e,t.on[e]);s["block-handler-"+n.insertData(o,"hdlr")]=e}if(t.ref){this.target.hasRef=!0;if(ke.test(t.ref)){const e=t.ref.replace(ke,(t=>"${"+this.captureExpression(t.slice(2,-2),!0)+"}")),o=n.insertData(`(el) => refs[\`${e}\`] = el`,"ref");s["block-ref"]=String(o)}else{let e=t.ref;if(e in this.target.refInfo){this.helpers.add("multiRefSetter");const t=this.target.refInfo[e],o=n.data.push(t[0])-1;s["block-ref"]=String(o),t[1]=`multiRefSetter(refs, \`${e}\`)`}else{let t=this.generateId("ref");this.target.refInfo[e]=[t,`(el) => refs[\`${e}\`] = el`];const o=n.data.push(t)-1;s["block-ref"]=String(o)}}}let a;if(t.model){const{hasDynamicChildren:e,baseExpr:o,expr:r,eventType:i,shouldNumberize:l,shouldTrim:c,targetAttr:h,specialInitTargetAttr:u}=t.model,d=xe(o),f=this.generateId("bExpr");this.define(f,d);const p=xe(r),m=this.generateId("expr");this.define(m,p);const g=`${f}[${m}]`;let b;if(u)b=n.insertData(`${g} === '${s[h]}'`,"attr"),s["block-attribute-"+b]=u;else if(e){a=""+this.generateId("bValue"),this.define(a,g)}else b=n.insertData(""+g,"attr"),s["block-attribute-"+b]=h;this.helpers.add("toNumber");let v="ev.target."+h;v=c?v+".trim()":v,v=l?`toNumber(${v})`:v;const y=`[(ev) => { ${g} = ${v}; }]`;b=n.insertData(y,"hdlr"),s["block-handler-"+b]=i}const c=Ee.createElement(t.tag);for(const[t,e]of Object.entries(s))"class"===t&&""===e||c.setAttribute(t,e);if(n.insert(c),t.content.length){const o=n.currentDom;n.currentDom=c;const r=t.content;for(let o=0;o<r.length;o++){const i=t.content[o],s=_e(e,{block:n,index:n.childNumber,forceNewBlock:!1,isLast:e.isLast&&o===r.length-1,tKeyExpr:e.tKeyExpr,nameSpace:l,tModelSelectedExpr:a});this.compileAST(i,s)}n.currentDom=o}if(r&&(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))};`,i)}}compileTEsc(t,e){let n,{block:o,forceNewBlock:r}=e;if("0"===t.expr?(this.helpers.add("zero"),n="ctx[zero]"):(n=xe(t.expr),t.defaultValue&&(this.helpers.add("withDefault"),n=`withDefault(${n}, \`${t.defaultValue}\`)`)),!o||r)o=this.createBlock(o,"text",e),this.insertBlock(`text(${n})`,o,{...e,forceNewBlock:r&&!o});else{const t=o.insertData(n,"txt"),e=Ee.createElement("block-text-"+t);o.insert(e)}}compileTOut(t,e){let{block:n}=e;n&&this.insertAnchor(n),n=this.createBlock(n,"html",e),this.helpers.add("0"===t.expr?"zero":"safeOutput");let o="0"===t.expr?"ctx[zero]":`safeOutput(${xe(t.expr)})`;if(t.body){const n=Te.nextBlockId,r=_e(e);this.compileAST({type:3,content:t.body},r),this.helpers.add("withDefault"),o=`withDefault(${o}, b${n})`}this.insertBlock(""+o,n,e)}compileTIf(t,e,n){let{block:o,forceNewBlock:r,index:i}=e,s=i;const l=this.target.code.length,a=!o||"multi"!==o.type&&r;o&&(o.hasDynamicChildren=!0),(!o||"multi"!==o.type&&r)&&(o=this.createBlock(o,"multi",e)),this.addLine(`if (${xe(t.condition)}) {`),this.target.indentLevel++,this.insertAnchor(o);const c=_e(e,{block:o,index:s});if(this.compileAST(t.content,c),this.target.indentLevel--,t.tElif)for(let n of t.tElif){this.addLine(`} else if (${xe(n.condition)}) {`),this.target.indentLevel++,this.insertAnchor(o);const t=_e(e,{block:o,index:s});this.compileAST(n.content,t),this.target.indentLevel--}if(t.tElse){this.addLine("} else {"),this.target.indentLevel++,this.insertAnchor(o);const n=_e(e,{block:o,index:s});this.compileAST(t.tElse,n),this.target.indentLevel--}if(this.addLine("}"),a){if(o.children.length){const t=this.target.code,e=o.children.slice();let n=e.shift();for(let o=l;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))};`,l)}const t=o.children.map((t=>t.varName)).join(", ");this.insertBlock(`multi([${t}])`,o,e)}}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;this.addLine("ctx = Object.create(ctx);");const r="v_block"+n.id,i="k_block"+n.id,s="l_block"+n.id,l="c_block"+n.id;let a;this.helpers.add("prepareList"),this.define(`[${i}, ${r}, ${s}, ${l}]`,`prepareList(${xe(t.collection)});`),this.dev&&this.define("keys"+n.id,"new Set()"),this.addLine(`for (let ${o} = 0; ${o} < ${s}; ${o}++) {`),this.target.indentLevel++,this.addLine(`ctx[\`${t.elem}\`] = ${r}[${o}];`),t.hasNoFirst||this.addLine(`ctx[\`${t.elem}_first\`] = ${o} === 0;`),t.hasNoLast||this.addLine(`ctx[\`${t.elem}_last\`] = ${o} === ${r}.length - 1;`),t.hasNoIndex||this.addLine(`ctx[\`${t.elem}_index\`] = ${o};`),t.hasNoValue||this.addLine(`ctx[\`${t.elem}_value\`] = ${i}[${o}];`),this.define("key"+this.target.loopLevel,t.key?xe(t.key):o),this.dev&&(this.addLine(`if (keys${n.id}.has(key${this.target.loopLevel})) { throw new Error(\`Got duplicate key in t-foreach: \${key${this.target.loopLevel}}\`)}`),this.addLine(`keys${n.id}.add(key${this.target.loopLevel});`)),t.memo&&(this.target.hasCache=!0,a=this.generateId(),this.define("memo"+a,xe(t.memo)),this.define("vnode"+a,`cache[key${this.target.loopLevel}];`),this.addLine(`if (vnode${a}) {`),this.target.indentLevel++,this.addLine(`if (shallowEqual(vnode${a}.memo, memo${a})) {`),this.target.indentLevel++,this.addLine(`${l}[${o}] = vnode${a};`),this.addLine(`nextCache[key${this.target.loopLevel}] = vnode${a};`),this.addLine("continue;"),this.target.indentLevel--,this.addLine("}"),this.target.indentLevel--,this.addLine("}"));const c=_e(e,{block:n,index:o});this.compileAST(t.body,c),t.memo&&this.addLine(`nextCache[key${this.target.loopLevel}] = Object.assign(${l}[${o}], {memo: memo${a}});`),this.target.indentLevel--,this.target.loopLevel--,this.addLine("}"),e.isLast||this.addLine("ctx = ctx.__proto__;"),this.insertBlock("l",n,e)}compileTKey(t,e){const n=this.generateId("tKey_");this.define(n,xe(t.expr)),e=_e(e,{tKeyExpr:n,block:e.block,index:e.index}),this.compileAST(t.content,e)}compileMulti(t,e){let{block:n,forceNewBlock:o}=e;const r=!n||o;let i=this.target.code.length;if(r){if(t.content.filter((t=>6!==t.type)).length<=1){for(let n of t.content)this.compileAST(n,e);return}n=this.createBlock(n,"multi",e)}let s=0;for(let o=0,r=t.content.length;o<r;o++){const i=t.content[o],l=6===i.type,a=_e(e,{block:n,index:s,forceNewBlock:!l,preventRoot:e.preventRoot,isLast:e.isLast&&o===r-1});this.compileAST(i,a),l||s++}if(r){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))};`,i)}const t=n.children.map((t=>t.varName)).join(", ");this.insertBlock(`multi([${t}])`,n,e)}}compileTCall(t,e){let{block:n,forceNewBlock:o}=e;if(t.body){this.addLine("ctx = Object.create(ctx);"),this.addLine("ctx[isBoundary] = 1;"),this.helpers.add("isBoundary");const n=Te.nextBlockId,o=_e(e,{preventRoot:!0});this.compileAST({type:3,content:t.body},o),n!==Te.nextBlockId&&(this.helpers.add("zero"),this.addLine(`ctx[zero] = b${n};`))}const r=ke.test(t.name),i=r?Ne(t.name):"`"+t.name+"`";n&&(o||this.insertAnchor(n));const s=`key + \`${this.generateComponentKey()}\``;if(r){const t=this.generateId("template");this.define(t,i),n=this.createBlock(n,"multi",e),this.helpers.add("call"),this.insertBlock(`call(this, ${t}, ctx, node, ${s})`,n,{...e,forceNewBlock:!n})}else{const t=this.generateId("callTemplate_");this.helpers.add("getTemplate"),this.staticDefs.push({id:t,expr:`getTemplate(${i})`}),n=this.createBlock(n,"multi",e),this.insertBlock(`${t}.call(this, ctx, node, ${s})`,n,{...e,forceNewBlock:!n})}t.body&&!e.isLast&&this.addLine("ctx = ctx.__proto__;")}compileTCallBlock(t,e){let{block:n,forceNewBlock:o}=e;n&&(o||this.insertAnchor(n)),n=this.createBlock(n,"multi",e),this.insertBlock(xe(t.name),n,{...e,forceNewBlock:!n})}compileTSet(t,e){this.target.shouldProtectScope=!0,this.helpers.add("isBoundary").add("withDefault");const n=t.value?xe(t.value||""):"null";if(t.body){this.helpers.add("LazyValue");const o={type:3,content:t.body};let r=`new LazyValue(${this.compileInNewTarget("value",o,e)}, ctx, node)`;r=t.value?r?`withDefault(${n}, ${r})`:n:r,this.addLine(`ctx[\`${t.name}\`] = ${r};`)}else{let e;e=t.defaultValue?t.value?`withDefault(${n}, \`${t.defaultValue}\`)`:`\`${t.defaultValue}\``:n,this.helpers.add("setContextValue"),this.addLine(`setContextValue(ctx, "${t.name}", ${e});`)}}generateComponentKey(){const t=[this.generateId("__")];for(let e=0;e<this.target.loopLevel;e++)t.push(`\${key${e+1}}`);return t.join("__")}formatProp(t,e){if(e=this.captureExpression(e),t.includes(".")){let[n,o]=t.split(".");if("bind"!==o)throw new Error("Invalid prop suffix");this.helpers.add("bind"),t=n,e=`bind(ctx, ${e||void 0})`}return`${t=/^[a-z_]+$/i.test(t)?t:`'${t}'`}: ${e||void 0}`}formatPropObject(t){const e=[];for(const[n,o]of Object.entries(t))e.push(this.formatProp(n,o));return e.join(", ")}compileComponent(t,e){let{block:n}=e;const o="slots"in(t.props||{}),r=[],i=this.formatPropObject(t.props||{});i&&r.push(i);let s="";if(t.slots){let n="ctx";!this.target.loopLevel&&this.hasSafeContext||(n=this.generateId("ctx"),this.helpers.add("capture"),this.define(n,"capture(ctx)"));let o=[];for(let r in t.slots){const i=t.slots[r],s=[];if(i.content){const t=this.compileInNewTarget("slot",i.content,e,i.on);s.push(`__render: ${t}, __ctx: ${n}`)}const l=t.slots[r].scope;l&&s.push(`__scope: "${l}"`),t.slots[r].attrs&&s.push(this.formatPropObject(t.slots[r].attrs));const a=`{${s.join(", ")}}`;o.push(`'${r}': ${a}`)}s=`{${o.join(", ")}}`}!s||t.dynamicProps||o||(this.helpers.add("markRaw"),r.push(`slots: markRaw(${s})`));const l=`{${r.join(",")}}`;let a,c=l;t.dynamicProps&&(c=`Object.assign({}, ${xe(t.dynamicProps)}${r.length?", "+l:""})`),(s&&(t.dynamicProps||o)||this.dev)&&(a=this.generateId("props"),this.define(a,c),c=a),s&&(t.dynamicProps||o)&&(this.helpers.add("markRaw"),this.addLine(`${a}.slots = markRaw(Object.assign(${s}, ${a}.slots))`));const h=this.generateComponentKey();let u;t.isDynamic?(u=this.generateId("Comp"),this.define(u,xe(t.name))):u=`\`${t.name}\``,this.dev&&this.addLine(`helpers.validateProps(${u}, ${a}, ctx);`),n&&(!1===e.forceNewBlock||e.tKeyExpr)&&this.insertAnchor(n);let d=`key + \`${h}\``;e.tKeyExpr&&(d=`${e.tKeyExpr} + ${d}`);let f=`component(${`${u}, ${c}, ${d}, node, ctx`})`;t.isDynamic&&(f=`toggler(${u}, ${f})`),t.on&&(f=this.wrapWithEventCatcher(f,t.on)),n=this.createBlock(n,"multi",e),this.insertBlock(f,n,e)}wrapWithEventCatcher(t,e){this.helpers.add("createCatcher");let n=this.generateId("catcher"),o={},r=[];for(let t in e){let n=this.generateId("hdlr"),i=r.push(n)-1;o[t]=i;const s=this.generateHandlerCode(t,e[t]);this.define(n,s)}return this.staticDefs.push({id:n,expr:`createCatcher(${JSON.stringify(o)})`}),`${n}(${t}, [${r.join(",")}])`}compileTSlot(t,e){this.helpers.add("callSlot");let n,o,{block:r}=e,i=!1;t.name.match(ke)?(i=!0,o=Ne(t.name)):o="'"+t.name+"'";const s=t.attrs?`{${this.formatPropObject(t.attrs)}}`:null;if(t.defaultContent){n=`callSlot(ctx, node, key, ${o}, ${i}, ${s}, ${this.compileInNewTarget("defaultContent",t.defaultContent,e)})`}else if(i){let t=this.generateId("slot");this.define(t,o),n=`toggler(${t}, callSlot(ctx, node, key, ${t}, ${i}, ${s}))`}else n=`callSlot(ctx, node, key, ${o}, ${i}, ${s})`;t.on&&(n=this.wrapWithEventCatcher(n,t.on)),r&&this.insertAnchor(r),r=this.createBlock(r,"multi",e),this.insertBlock(n,r,{...e,forceNewBlock:!1})}compileTTranslation(t,e){t.content&&this.compileAST(t.content,Object.assign({},e,{translate:!1}))}compileTPortal(t,e){this.helpers.add("Portal");let{block:n}=e;const o=this.compileInNewTarget("slot",t.content,e),r=this.generateComponentKey();let i="ctx";!this.target.loopLevel&&this.hasSafeContext||(i=this.generateId("ctx"),this.helpers.add("capture"),this.define(i,"capture(ctx);"));const s=`component(Portal, {target: ${t.target},slots: {'default': {__render: ${o}, __ctx: ${i}}}}, key + \`${r}\`, node, ctx)`;n&&this.insertAnchor(n),n=this.createBlock(n,"multi",e),this.insertBlock(s,n,{...e,forceNewBlock:!1})}}const Oe=new WeakMap;function Be(t){if("string"==typeof t){return Re(function(t){const e=(new DOMParser).parseFromString(t,"text/xml");if(e.getElementsByTagName("parsererror").length){let n="Invalid XML in template.";const o=e.getElementsByTagName("parsererror")[0].textContent;if(o){n+="\nThe parser has produced the following error message:\n"+o;const e=/\d+/g,r=e.exec(o);if(r){const i=Number(r[0]),s=t.split("\n")[i-1],l=e.exec(o);if(s&&l){const t=Number(l[0])-1;s[t]&&(n+=`\nThe error might be located at xml line ${i} column ${t}\n${s}\n${"-".repeat(t-1)}^`)}}}throw new Error(n)}return e}(`<t>${t}</t>`).firstChild)}let e=Oe.get(t);return e||(e=Re(t.cloneNode(!0)),Oe.set(t,e)),e}function Re(t){var e;(function(t){let e=t.querySelectorAll("[t-elif], [t-else]");for(let t=0,n=e.length;t<n;t++){let n=e[t],o=n.previousElementSibling,r=t=>o.getAttribute(t),i=t=>+!!n.getAttribute(t);if(!o||!r("t-if")&&!r("t-elif"))throw new Error("t-elif and t-else directives must be preceded by a t-if or t-elif directive");{if(r("t-foreach"))throw new Error("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(i).reduce((function(t,e){return t+e}))>1)throw new Error("Only one conditional branching directive is allowed per node");let t;for(;(t=n.previousSibling)!==o;){if(t.nodeValue.trim().length&&8!==t.nodeType)throw new Error("text is not allowed between branching directives");t.remove()}}}})(e=t),function(t){const e=[...t.querySelectorAll("[t-esc]")].filter((t=>t.tagName[0]===t.tagName[0].toUpperCase()||t.hasAttribute("t-component")));for(const t of e){if(t.childNodes.length)throw new Error("Cannot have t-esc on a component that already has content");const e=t.getAttribute("t-esc");t.removeAttribute("t-esc");const n=t.ownerDocument.createElement("t");null!=e&&n.setAttribute("t-esc",e),t.appendChild(n)}}(e);return Ie(t,{inPreTag:!1,inSVG:!1})||{type:0,value:""}}function Ie(t,e){return t instanceof Element?function(t,e){if(t.hasAttribute("t-debug"))return t.removeAttribute("t-debug"),{type:12,content:Ie(t,e)};if(t.hasAttribute("t-log")){const n=t.getAttribute("t-log");return t.removeAttribute("t-log"),{type:13,expr:n,content:Ie(t,e)}}return null}(t,e)||function(t,e){if(!t.hasAttribute("t-foreach"))return null;const n=t.outerHTML,o=t.getAttribute("t-foreach");t.removeAttribute("t-foreach");const r=t.getAttribute("t-as")||"";t.removeAttribute("t-as");const i=t.getAttribute("t-key");if(!i)throw new Error(`"Directive t-foreach should always be used with a t-key!" (expression: t-foreach="${o}" t-as="${r}")`);t.removeAttribute("t-key");const s=t.getAttribute("t-memo")||"";t.removeAttribute("t-memo");const l=Ie(t,e);if(!l)return null;const a=!n.includes("t-call"),c=a&&!n.includes(r+"_first"),h=a&&!n.includes(r+"_last"),u=a&&!n.includes(r+"_index"),d=a&&!n.includes(r+"_value");return{type:9,collection:o,elem:r,body:l,memo:s,key:i,hasNoFirst:c,hasNoLast:h,hasNoIndex:u,hasNoValue:d}}(t,e)||function(t,e){if(!t.hasAttribute("t-if"))return null;const n=t.getAttribute("t-if");t.removeAttribute("t-if");const o=Ie(t,e)||{type:0,value:""};let r=t.nextElementSibling;const i=[];for(;r&&r.hasAttribute("t-elif");){const t=r.getAttribute("t-elif");r.removeAttribute("t-elif");const n=Ie(r,e),o=r.nextElementSibling;r.remove(),r=o,n&&i.push({condition:t,content:n})}let s=null;r&&r.hasAttribute("t-else")&&(r.removeAttribute("t-else"),s=Ie(r,e),r.remove());return{type:5,condition:n,content:o,tElif:i.length?i:null,tElse:s}}(t,e)||function(t,e){if(!t.hasAttribute("t-portal"))return null;const n=t.getAttribute("t-portal");t.removeAttribute("t-portal");const o=Ie(t,e);if(!o)return{type:0,value:""};return{type:17,target:n,content:o}}(t,e)||function(t,e){if(!t.hasAttribute("t-call"))return null;const n=t.getAttribute("t-call");if(t.removeAttribute("t-call"),"t"!==t.tagName){const o=Ie(t,e),r={type:7,name:n,body:null};if(o&&2===o.type)return o.content=[r],o;if(o&&11===o.type)return{...o,slots:{default:{content:r,scope:null,on:null,attrs:null}}}}const o=ze(t,e);return{type:7,name:n,body:o.length?o:null}}(t,e)||function(t,e){if(!t.hasAttribute("t-call-block"))return null;return{type:15,name:t.getAttribute("t-call-block")}}(t)||function(t,e){if(!t.hasAttribute("t-esc"))return null;const n=t.getAttribute("t-esc");t.removeAttribute("t-esc");const o={type:4,expr:n,defaultValue:t.textContent||""};let r=t.getAttribute("t-ref");t.removeAttribute("t-ref");const i=Ie(t,e);if(!i)return o;if(2===i.type)return{...i,ref:r,content:[o]};if(11===i.type)throw new Error("t-esc is not supported on Component nodes");return o}(t,e)||function(t,e){if(!t.hasAttribute("t-key"))return null;const n=t.getAttribute("t-key");t.removeAttribute("t-key");const o=Ie(t,e);if(!o)return null;return{type:10,expr:n,content:o}}(t,e)||function(t,e){if("off"!==t.getAttribute("t-translation"))return null;return t.removeAttribute("t-translation"),{type:16,content:Ie(t,e)}}(t,e)||function(t,e){if(!t.hasAttribute("t-slot"))return null;const n=t.getAttribute("t-slot");t.removeAttribute("t-slot");let o=null,r=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);e.startsWith("t-on-")?(r=r||{},r[e.slice(5)]=n):(o=o||{},o[e]=n)}return{type:14,name:n,attrs:o,on:r,defaultContent:Ke(t,e)}}(t,e)||function(t,e){if(!t.hasAttribute("t-out")&&!t.hasAttribute("t-raw"))return null;t.hasAttribute("t-raw")&&console.warn('t-raw 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-raw");t.removeAttribute("t-out"),t.removeAttribute("t-raw");const o={type:8,expr:n,body:null},r=t.getAttribute("t-ref");t.removeAttribute("t-ref");const i=Ie(t,e);if(!i)return o;if(2===i.type)return o.body=i.content.length?i.content:null,{...i,ref:r,content:[o]};return o}(t,e)||function(t,e){let n=t.tagName;const o=n[0];let r=t.hasAttribute("t-component");if(r&&"t"!==n)throw new Error(`Directive 't-component' can only be used on <t> nodes (used on a <${n}>)`);if(o!==o.toUpperCase()&&!r)return null;r&&(n=t.getAttribute("t-component"),t.removeAttribute("t-component"));const i=t.getAttribute("t-props");t.removeAttribute("t-props");const s=t.getAttribute("t-slot-scope");t.removeAttribute("t-slot-scope");let l=null,a=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);if(e.startsWith("t-")){if(!e.startsWith("t-on-")){const t=Ve.get(e.split("-").slice(0,2).join("-"));throw new Error(t||"unsupported directive on Component: "+e)}l=l||{},l[e.slice(5)]=n}else a=a||{},a[e]=n}let c=null;if(t.hasChildNodes()){const n=t.cloneNode(!0),o=Array.from(n.querySelectorAll("[t-set-slot]"));for(let t of o){if("t"!==t.tagName)throw new Error(`Directive 't-set-slot' can only be used on <t> nodes (used on a <${t.tagName}>)`);const o=t.getAttribute("t-set-slot");let r=t.parentElement,i=!1;for(;r!==n;){if(r.hasAttribute("t-component")||r.tagName[0]===r.tagName[0].toUpperCase()){i=!0;break}r=r.parentElement}if(i)continue;t.removeAttribute("t-set-slot"),t.remove();const s=Ie(t,e);let l=null,a=null,h=null;for(let e of t.getAttributeNames()){const n=t.getAttribute(e);"t-slot-scope"!==e?e.startsWith("t-on-")?(l=l||{},l[e.slice(5)]=n):(a=a||{},a[e]=n):h=n}c=c||{},c[o]={content:s,on:l,attrs:a,scope:h}}const r=Ke(n,e);r&&(c=c||{},c.default={content:r,on:l,attrs:null,scope:s})}return{type:11,name:n,isDynamic:r,dynamicProps:i,props:a,slots:c,on:l}}(t,e)||function(t,e){const{tagName:n}=t,o=t.getAttribute("t-tag");if(t.removeAttribute("t-tag"),"t"===n&&!o)return null;if(n.startsWith("block-"))throw new Error(`Invalid tag name: '${n}'`);e=Object.assign({},e),"pre"===n&&(e.inPreTag=!0);const r=Fe.has(n)&&!e.inSVG;e.inSVG=e.inSVG||r;const i=r?"http://www.w3.org/2000/svg":null,s=t.getAttribute("t-ref");t.removeAttribute("t-ref");const l=t.getAttributeNames();let a=null,c=null,h=null;for(let o of l){const r=t.getAttribute(o);if(o.startsWith("t-on")){if("t-on"===o)throw new Error("Missing event name with t-on directive");c=c||{},c[o.slice(5)]=r}else if(o.startsWith("t-model")){if(!["input","select","textarea"].includes(n))throw new Error("The t-model directive only works with <input>, <textarea> and <select>");let i,s;if(je.test(r)){const t=r.lastIndexOf(".");i=r.slice(0,t),s=`'${r.slice(t+1)}'`}else{if(!We.test(r))throw new Error(`Invalid t-model expression: "${r}" (it should be assignable)`);{const t=r.lastIndexOf("[");i=r.slice(0,t),s=r.slice(t+1,-1)}}const l=t.getAttribute("type"),a="input"===n,c="select"===n,u="textarea"===n,d=a&&"checkbox"===l,f=a&&"radio"===l,p=a&&!d&&!f,m=o.includes(".lazy"),g=o.includes(".number");h={baseExpr:i,expr:s,targetAttr:d?"checked":"value",specialInitTargetAttr:f?"checked":null,eventType:f?"click":c||m?"change":"input",hasDynamicChildren:!1,shouldTrim:o.includes(".trim")&&(p||u),shouldNumberize:g&&(p||u)},c&&((e=Object.assign({},e)).tModelInfo=h)}else{if(o.startsWith("block-"))throw new Error(`Invalid attribute: '${o}'`);if("t-name"!==o){if(o.startsWith("t-")&&!o.startsWith("t-att"))throw new Error(`Unknown QWeb directive: '${o}'`);const t=e.tModelInfo;t&&["t-att-value","t-attf-value"].includes(o)&&(t.hasDynamicChildren=!0),a=a||{},a[o]=r}}}const u=ze(t,e);return{type:2,tag:n,dynamicTag:o,attrs:a,on:c,ref:s,content:u,model:h,ns:i}}(t,e)||function(t,e){if(!t.hasAttribute("t-set"))return null;const n=t.getAttribute("t-set"),o=t.getAttribute("t-value")||null,r=t.innerHTML===t.textContent&&t.textContent||null;let i=null;t.textContent!==t.innerHTML&&(i=ze(t,e));return{type:6,name:n,value:o,defaultValue:r,body:i}}(t,e)||function(t,e){if("t"!==t.tagName)return null;return Ke(t,e)}(t,e):function(t,e){if(t.nodeType===Node.TEXT_NODE){let n=t.textContent||"";if(!e.inPreTag){if(Pe.test(n)&&!n.trim())return null;n=n.replace(Me," ")}return{type:0,value:n}}if(t.nodeType===Node.COMMENT_NODE)return{type:1,value:t.textContent||""};return null}(t,e)}const Pe=/[\r\n]/,Me=/\s+/g;const je=/\.[\w_]+\s*$/,We=/\[[^\[]+\]\s*$/,Fe=new Set(["svg","g","path"]);const Ve=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 ze(t,e){const n=[];for(let o of t.childNodes){const t=Ie(o,e);t&&(3===t.type?n.push(...t.content):n.push(t))}return n}function Ke(t,e){const n=ze(t,e);switch(n.length){case 0:return null;case 1:return n[0];default:return{type:3,content:n}}}const He=Symbol("timeout");function Ue(t,e){const n=new Error(`The following error occurred in ${e}: `),o=new Error(e+"'s promise hasn't resolved after 3 seconds"),r=ae();return(...i)=>{try{const s=t(...i);if(s instanceof Promise){if("onWillStart"===e||"onWillUpdateProps"===e){const t=r.fiber;Promise.race([s,new Promise((t=>setTimeout((()=>t(He)),3e3)))]).then((e=>{e===He&&r.fiber===t&&console.warn(o)}))}return s.catch((t=>{throw n.cause=t,t instanceof Error&&(n.message+=`"${t.message}"`),n}))}return s}catch(t){throw t instanceof Error&&(n.message+=`"${t.message}"`),n}}}function qe(t){const e=ae(),n=e.app.dev?Ue:t=>t;e.mounted.push(n(t.bind(e.component),"onMounted"))}function Ge(t){const e=ae(),n=e.app.dev?Ue:t=>t;e.patched.push(n(t.bind(e.component),"onPatched"))}function Xe(t){const e=ae(),n=e.app.dev?Ue:t=>t;e.willUnmount.unshift(n(t.bind(e.component),"onWillUnmount"))}class Ye{constructor(t,e,n){this.props=t,this.env=e,this.__owl__=n}setup(){}render(t=!1){this.__owl__.render(!0===t)}}Ye.template="";const Ze=V("").constructor;class Je extends Ze{constructor(t,e){super(""),this.target=null,this.selector=t,this.realBDom=e}mount(t,e){if(super.mount(t,e),this.target=document.querySelector(this.selector),!this.target){let t=this.el;for(;t&&t.parentElement instanceof HTMLElement;)t=t.parentElement;if(this.target=t&&t.querySelector(this.selector),!this.target)throw new Error("invalid portal target")}this.realBDom.mount(this.target,null)}beforeRemove(){this.realBDom.beforeRemove()}remove(){this.realBDom&&(super.remove(),this.realBDom.remove(),this.realBDom=null)}patch(t){super.patch(t),this.realBDom?this.realBDom.patch(t.realBDom,!0):(this.realBDom=t.realBDom,this.realBDom.mount(this.target,null))}}class Qe extends Ye{setup(){const t=this.__owl__,e=t.renderFn;t.renderFn=()=>new Je(this.props.target,e()),Xe((()=>{t.bdom&&t.bdom.remove()}))}}function tn(t){const e=t.__owl__.component,n=Object.create(e);for(let e in t)n[e]=t[e];return n}Qe.template=Yt`<t t-slot="default"/>`,Qe.props={target:{type:String},slots:!0};const en=Symbol("isBoundary");class nn{constructor(t,e,n){this.fn=t,this.ctx=tn(e),this.node=n}evaluate(){return this.fn(this.ctx,this.node)}toString(){return this.evaluate().toString()}}let on=new WeakMap;const rn={withDefault:function(t,e){return null==t||!1===t?e:t},zero:Symbol("zero"),isBoundary:en,callSlot:function(t,e,n,r,i,s,l){n=n+"__slot_"+r;const a=t.props[xt].slots||{},{__render:c,__ctx:h,__scope:u}=a[r]||{},d=Object.create(h||{});u&&(d[u]=s);const f=c?c.call(h.__owl__.component,d,e,n):null;if(l){let s=void 0,a=void 0;return f?s=i?o(r,f):f:a=l.call(t.__owl__.component,t,e,n),O([s,a])}return f||V("")},capture:tn,withKey:function(t,e){return t.key=e,t},prepareList:function(t){let e,n;if(Array.isArray(t))e=t,n=t;else{if(!t)throw new Error("Invalid loop expression");n=Object.keys(t),e=Object.values(t)}const o=n.length;return[e,n,o,new Array(o)]},setContextValue:function(t,e,n){const o=t;for(;!t.hasOwnProperty(e)&&!t.hasOwnProperty(en);){const e=t.__proto__;if(!e){t=o;break}t=e}t[e]=n},multiRefSetter:function(t,e){let n=0;return o=>{if(o&&(n++,n>1))throw new Error("Cannot have 2 elements with same ref name at the same time");(0===n||o)&&(t[e]=o)}},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},validateProps:function(t,e,n){const o="string"!=typeof t?t:n.constructor.components[t];if(!o)return;ie(e,o);const r=o.defaultProps||{};let i=(s=o.props)instanceof Array?Object.fromEntries(s.map((t=>t.endsWith("?")?[t.slice(0,-1),!1]:[t,!0]))):s||{"*":!0};var s;const l="*"in i;for(let t in i){if("*"===t)continue;const n=i[t];let s,l=!!n;if("object"==typeof n&&"optional"in n&&(l=!n.optional),l&&t in r)throw new Error(`A default value cannot be defined for a mandatory prop (name: '${t}', component: ${o.name})`);if(void 0!==e[t]){try{s=se(e[t],n)}catch(e){throw e.message=`Invalid prop '${t}' in component ${o.name} (${e.message})`,e}if(!s)throw new Error(`Invalid Prop '${t}' in component '${o.name}'`)}else if(l)throw new Error(`Missing props '${t}' (component '${o.name}')`)}if(!l)for(let t in e)if(!(t in i))throw new Error(`Unknown prop '${t}' given to component '${o.name}'`)},LazyValue:nn,safeOutput:function(t){if(!t)return t;let e,n;return t instanceof Gt?(e="string_safe",n=yt(t)):t instanceof nn?(e="lazy_value",n=t.evaluate()):t instanceof String||"string"==typeof t?(e="string_unsafe",n=V(t)):(e="block_safe",n=t),o(e,n)},bind:function(t,e){let n=t.__owl__.component,o=on.get(n);o||(o=new WeakMap,on.set(n,o));let r=o.get(e);return r||(r=e.bind(n),o.set(e,r)),r},createCatcher:function(t){let e=[],n=[];for(let o in t){let r=t[o],{setup:i,remove:s}=k(o);e[r]=i,n[r]=s}let o=e.length;class r{constructor(t,e){this.afterNode=null,this.child=t,this.handlers=e}mount(t,n){this.parentEl=t,this.afterNode=n,this.child.mount(t,n);for(let n=0;n<o;n++){let o=this.handlers[n][0];const r=this;this.handlers[n][0]=function(t){const e=t.target;let n=r.child.firstNode();const i=r.afterNode;for(;n!==i;){if(n.contains(e))return o.call(this,t);n=n.nextSibling}},e[n].call(t,this.handlers[n])}}moveBefore(t,e){this.afterNode=null,this.child.moveBefore(t?t.child:null,e)}patch(t,e){this!==t&&(this.handlers=t.handlers,this.child.patch(t.child,e))}beforeRemove(){this.child.beforeRemove()}remove(){for(let t=0;t<o;t++)n[t].call(this.parentEl);this.child.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}}return function(t,e){return new r(t,e)}}},sn={text:V,createBlock:Q,list:ft,multi:O,html:yt,toggler:o,component:function(t,e,n,o,r){let i=o.children[n],s="string"!=typeof t;i&&2===i.status&&(i=void 0),s&&i&&i.component.constructor!==t&&(i=void 0);const l=o.fiber;if(i){let t=i.forceNextRender;if(t)i.forceNextRender=!1;else{const n=i.component.props[xt];t=l.deep||function(t,e){for(let n in t)if(t[n]!==e[n])return!0;return Object.keys(t).length!==Object.keys(e).length}(n,e)}t&&i.updateAndRender(e,l)}else{let a;if(s)a=t;else if(a=r.constructor.components[t],!a)throw new Error(`Cannot find the definition of component "${t}"`);i=new ue(a,e,o.app,o,n),o.children[n]=i,i.initiateRender(new ne(i,l))}return l.childrenMap[n]=i,i},comment:z};let ln=!1;class an extends class{constructor(t={}){var e;this.rawTemplates=Object.create(Xt),this.templates={},this.dev=t.dev||!1,this.translateFn=t.translateFn,this.translatableAttributes=t.translatableAttributes,t.templates&&this.addTemplates(t.templates),this.helpers=(e=this.getTemplate.bind(this),Object.assign({},rn,{Portal:Qe,markRaw:Lt,getTemplate:e,call:(t,n,r,i,s)=>o(n,e(n).call(t,r,i,s))}))}addTemplate(t,e,n={}){if(t in this.rawTemplates&&!n.allowDuplicate)throw new Error(`Template ${t} already defined`);this.rawTemplates[t]=e}addTemplates(t,e={}){if(t){t=t instanceof Document?t:function(t){const e=(new DOMParser).parseFromString(t,"text/xml");if(e.getElementsByTagName("parsererror").length){let n="Invalid XML in template.";const o=e.getElementsByTagName("parsererror")[0].textContent;if(o){n+="\nThe parser has produced the following error message:\n"+o;const e=/\d+/g,r=e.exec(o);if(r){const i=Number(r[0]),s=t.split("\n")[i-1],l=e.exec(o);if(s&&l){const t=Number(l[0])-1;s[t]&&(n+=`\nThe error might be located at xml line ${i} column ${t}\n${s}\n${"-".repeat(t-1)}^`)}}}throw new Error(n)}return e}(t);for(const n of t.querySelectorAll("[t-name]")){const t=n.getAttribute("t-name");this.addTemplate(t,n,e)}}}getTemplate(t){if(!(t in this.templates)){const e=this.rawTemplates[t];if(void 0===e){let e="";try{e=` (for component "${ae().component.constructor.name}")`}catch{}throw new Error(`Missing template: "${t}"${e}`)}const n=this._compileTemplate(t,e),o=this.templates;this.templates[t]=function(e,n){return o[t].call(this,e,n)};const r=n(sn,this.helpers);this.templates[t]=r}return this.templates[t]}_compileTemplate(t,e){return function(t,e={}){const n=Be(t),o=t instanceof Node?!(t instanceof Element)||null===t.querySelector("[t-set], [t-call]"):!t.includes("t-set")&&!t.includes("t-call"),r=new De(n,{...e,hasSafeContext:o}).generateCode();return new Function("bdom, helpers",r)}(e,{name:t,dev:this.dev,translateFn:this.translateFn,translatableAttributes:this.translatableAttributes})}}{constructor(t,e={}){super(e),this.scheduler=new de,this.root=null,this.Root=t,e.test&&(this.dev=!0),!this.dev||e.test||ln||(console.info(`Owl is running in 'dev' mode.\n\nThis is not suitable for production use.\nSee https://github.com/odoo/owl/blob/${window.owl?window.owl.__info__.hash:"master"}/doc/reference/app.md#configuration for more information.`),ln=!0);const n=e.env||{},o=Object.getOwnPropertyDescriptors(n);this.env=Object.freeze(Object.create(Object.getPrototypeOf(n),o)),this.props=e.props||{}}mount(t,e){an.validateTarget(t);const n=this.makeNode(this.Root,this.props),o=this.mountNode(n,t,e);return this.root=n,o}makeNode(t,e){return new ue(t,e,this,null,null)}mountNode(t,e,n){const o=new Promise(((e,n)=>{let o=!1;t.mounted.push((()=>{e(t.component),o=!0}));let r=Jt.get(t);r||(r=[],Jt.set(t,r)),r.unshift((t=>{throw o?console.error(t):n(t),t}))}));return t.mountComponent(e,n),o}destroy(){this.root&&(this.scheduler.flush(),this.root.destroy())}}function cn(t,e){const n=Object.create(t),o=Object.getOwnPropertyDescriptors(e);return Object.freeze(Object.defineProperties(n,o))}function hn(t){const e=ae();e.childEnv=cn(e.childEnv,t)}an.validateTarget=function(t){if(!(t instanceof HTMLElement))throw new Error("Cannot mount component: the target is not a valid DOM element");if(!document.body.contains(t))throw new Error("Cannot mount a component on a detached dom node")},e.shouldNormalizeDom=!1,e.mainEventHandler=(e,n,o)=>{const{data:r,modifiers:i}=t(e);e=r;let s=!1;if(i.length){let t=!1;const e=n.target===o;for(const o of i)switch(o){case"self":if(t=!0,e)continue;return s;case"prevent":(t&&e||!t)&&n.preventDefault();continue;case"stop":(t&&e||!t)&&n.stopPropagation(),s=!0;continue}}if(Object.hasOwnProperty.call(e,0)){const t=e[0];if("function"!=typeof t)throw new Error(`Invalid handler (expected a function, received: '${t}')`);let o=e[1]?e[1].__owl__:null;o&&1!==o.status||t.call(o?o.component:null,n)}return s};const un={config:e,mount:wt,patch:function(t,e,n=!1){t.patch(e,n)},remove:function(t,e=!1){e&&t.beforeRemove(),t.remove()},list:ft,multi:O,text:V,toggler:o,createBlock:Q,html:yt,comment:z},dn={};exports.App=an,exports.Component=Ye,exports.EventBus=qt,exports.__info__=dn,exports.blockDom=un,exports.loadFile=async function(t){const e=await fetch(t);if(!e.ok)throw new Error("Error while fetching xml templates");return await e.text()},exports.markRaw=Lt,exports.markup=function(t){return new Gt(t)},exports.mount=async function(t,e,n={}){return new an(t,n).mount(e,n)},exports.onError=function(t){const e=ae();let n=Jt.get(e);n||(n=[],Jt.set(e,n)),n.push(t.bind(e.component))},exports.onMounted=qe,exports.onPatched=Ge,exports.onRendered=function(t){const e=ae(),n=e.renderFn,o=e.app.dev?Ue:t=>t;t=o(t.bind(e.component),"onRendered"),e.renderFn=()=>{const e=n();return t(),e}},exports.onWillDestroy=function(t){const e=ae(),n=e.app.dev?Ue:t=>t;e.willDestroy.push(n(t.bind(e.component),"onWillDestroy"))},exports.onWillPatch=function(t){const e=ae(),n=e.app.dev?Ue:t=>t;e.willPatch.unshift(n(t.bind(e.component),"onWillPatch"))},exports.onWillRender=function(t){const e=ae(),n=e.renderFn,o=e.app.dev?Ue:t=>t;t=o(t.bind(e.component),"onWillRender"),e.renderFn=()=>(t(),n())},exports.onWillStart=function(t){const e=ae(),n=e.app.dev?Ue:t=>t;e.willStart.push(n(t.bind(e.component),"onWillStart"))},exports.onWillUnmount=Xe,exports.onWillUpdateProps=function(t){const e=ae(),n=e.app.dev?Ue:t=>t;e.willUpdateProps.push(n(t.bind(e.component),"onWillUpdateProps"))},exports.reactive=jt,exports.status=function(t){switch(t.__owl__.status){case 0:return"new";case 1:return"mounted";case 2:return"destroyed"}},exports.toRaw=Dt,exports.useChildSubEnv=hn,exports.useComponent=function(){return le.component},exports.useEffect=function(t,e=(()=>[NaN])){let n,o;qe((()=>{o=e(),n=t(...o)})),Ge((()=>{const r=e();r.some(((t,e)=>t!==o[e]))&&(o=r,n&&n(),n=t(...o))})),Xe((()=>n&&n()))},exports.useEnv=function(){return ae().component.env},exports.useExternalListener=function(t,e,n,o){const r=ae(),i=n.bind(r.component);qe((()=>t.addEventListener(e,i,o))),Xe((()=>t.removeEventListener(e,i,o)))},exports.useRef=function(t){const e=ae().refs;return{get el(){return e[t]||null}}},exports.useState=he,exports.useSubEnv=function(t){const e=ae();e.component.env=cn(e.component.env,t),hn(t)},exports.whenReady=function(t){return new Promise((function(t){"loading"!==document.readyState?t(!0):document.addEventListener("DOMContentLoaded",t,!1)})).then(t||function(){})},exports.xml=Yt,dn.version="2.0.0-beta-6",dn.date="2022-04-11T09:01:42.605Z",dn.hash="41344ef",dn.url="https://github.com/odoo/owl";
package/dist/owl.es.js CHANGED
@@ -2368,7 +2368,7 @@ function useState(state) {
2368
2368
  const node = getCurrent();
2369
2369
  let render = batchedRenderFunctions.get(node);
2370
2370
  if (!render) {
2371
- render = batched(node.render.bind(node));
2371
+ render = batched(node.render.bind(node, false));
2372
2372
  batchedRenderFunctions.set(node, render);
2373
2373
  // manual implementation of onWillDestroy to break cyclic dependency
2374
2374
  node.willDestroy.push(clearReactivesForCallback.bind(null, render));
@@ -2476,7 +2476,7 @@ class ComponentNode {
2476
2476
  fiber.render();
2477
2477
  }
2478
2478
  }
2479
- async render(deep = false) {
2479
+ async render(deep) {
2480
2480
  let current = this.fiber;
2481
2481
  if (current && (current.root.locked || current.bdom === true)) {
2482
2482
  await Promise.resolve();
@@ -5009,7 +5009,7 @@ class Component {
5009
5009
  }
5010
5010
  setup() { }
5011
5011
  render(deep = false) {
5012
- this.__owl__.render(deep);
5012
+ this.__owl__.render(deep === true);
5013
5013
  }
5014
5014
  }
5015
5015
  Component.template = "";
@@ -5566,7 +5566,7 @@ const __info__ = {};
5566
5566
  export { App, Component, EventBus, __info__, blockDom, loadFile, markRaw, markup, mount, onError, onMounted, onPatched, onRendered, onWillDestroy, onWillPatch, onWillRender, onWillStart, onWillUnmount, onWillUpdateProps, reactive, status, toRaw, useChildSubEnv, useComponent, useEffect, useEnv, useExternalListener, useRef, useState, useSubEnv, whenReady, xml };
5567
5567
 
5568
5568
 
5569
- __info__.version = '2.0.0-beta-5';
5570
- __info__.date = '2022-04-07T13:36:37.300Z';
5571
- __info__.hash = '1179e84';
5569
+ __info__.version = '2.0.0-beta-6';
5570
+ __info__.date = '2022-04-11T09:01:42.605Z';
5571
+ __info__.hash = '41344ef';
5572
5572
  __info__.url = 'https://github.com/odoo/owl';