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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +1 -0
  2. package/dist/owl.cjs.js +1984 -1893
  3. package/dist/owl.es.js +1984 -1894
  4. package/dist/owl.iife.js +1984 -1893
  5. package/dist/owl.iife.min.js +1 -1
  6. package/dist/types/compiler/code_generator.d.ts +0 -8
  7. package/dist/types/compiler/index.d.ts +3 -2
  8. package/dist/types/index.d.ts +1 -27
  9. package/dist/types/{app → runtime}/app.d.ts +7 -5
  10. package/dist/types/{blockdom → runtime/blockdom}/attributes.d.ts +0 -0
  11. package/dist/types/{blockdom → runtime/blockdom}/block_compiler.d.ts +0 -0
  12. package/dist/types/{blockdom → runtime/blockdom}/config.d.ts +0 -0
  13. package/dist/types/{blockdom → runtime/blockdom}/event_catcher.d.ts +0 -0
  14. package/dist/types/{blockdom → runtime/blockdom}/events.d.ts +0 -0
  15. package/dist/types/{blockdom → runtime/blockdom}/html.d.ts +0 -0
  16. package/dist/types/{blockdom → runtime/blockdom}/index.d.ts +0 -0
  17. package/dist/types/{blockdom → runtime/blockdom}/list.d.ts +0 -0
  18. package/dist/types/{blockdom → runtime/blockdom}/multi.d.ts +0 -0
  19. package/dist/types/{blockdom → runtime/blockdom}/text.d.ts +0 -0
  20. package/dist/types/{blockdom → runtime/blockdom}/toggler.d.ts +0 -0
  21. package/dist/types/{component → runtime}/component.d.ts +5 -1
  22. package/dist/types/{component → runtime}/component_node.d.ts +10 -7
  23. package/dist/types/{component → runtime}/error_handling.d.ts +0 -0
  24. package/dist/types/{component/handler.d.ts → runtime/event_handling.d.ts} +0 -0
  25. package/dist/types/{component → runtime}/fibers.d.ts +1 -1
  26. package/dist/types/{hooks.d.ts → runtime/hooks.d.ts} +1 -1
  27. package/dist/types/runtime/index.d.ts +29 -0
  28. package/dist/types/{component → runtime}/lifecycle_hooks.d.ts +0 -0
  29. package/dist/types/{portal.d.ts → runtime/portal.d.ts} +5 -1
  30. package/dist/types/{reactivity.d.ts → runtime/reactivity.d.ts} +0 -0
  31. package/dist/types/{component → runtime}/scheduler.d.ts +0 -0
  32. package/dist/types/{component → runtime}/status.d.ts +0 -0
  33. package/dist/types/{app → runtime}/template_helpers.d.ts +11 -2
  34. package/dist/types/runtime/template_set.d.ts +32 -0
  35. package/dist/types/{utils.d.ts → runtime/utils.d.ts} +0 -7
  36. package/dist/types/runtime/validation.d.ts +30 -0
  37. package/package.json +5 -2
  38. package/dist/owl.cjs.min.js +0 -1
  39. package/dist/owl.es.min.js +0 -1
  40. package/dist/types/app/template_set.d.ts +0 -27
  41. package/dist/types/component/props_validation.d.ts +0 -14
@@ -0,0 +1,29 @@
1
+ import { createBlock, html, list, mount as blockMount, multi, patch, remove, text, toggler, comment } from "./blockdom";
2
+ export type { Reactive } from "./reactivity";
3
+ export declare const blockDom: {
4
+ config: {
5
+ shouldNormalizeDom: boolean;
6
+ mainEventHandler: (data: any, ev: Event, currentTarget?: EventTarget | null | undefined) => boolean;
7
+ };
8
+ mount: typeof blockMount;
9
+ patch: typeof patch;
10
+ remove: typeof remove;
11
+ list: typeof list;
12
+ multi: typeof multi;
13
+ text: typeof text;
14
+ toggler: typeof toggler;
15
+ createBlock: typeof createBlock;
16
+ html: typeof html;
17
+ comment: typeof comment;
18
+ };
19
+ export { App, mount } from "./app";
20
+ export { xml } from "./template_set";
21
+ export { Component } from "./component";
22
+ export { useComponent, useState } from "./component_node";
23
+ export { status } from "./status";
24
+ export { reactive, markRaw, toRaw } from "./reactivity";
25
+ export { useEffect, useEnv, useExternalListener, useRef, useChildSubEnv, useSubEnv } from "./hooks";
26
+ export { EventBus, whenReady, loadFile, markup } from "./utils";
27
+ export { onWillStart, onMounted, onWillUnmount, onWillUpdateProps, onWillPatch, onPatched, onWillRender, onRendered, onWillDestroy, onError, } from "./lifecycle_hooks";
28
+ export { validate } from "./validation";
29
+ export declare const __info__: {};
@@ -1,4 +1,8 @@
1
- import { Component } from "./component/component";
1
+ import { Component } from "./component";
2
+ /**
3
+ * <t t-slot="default"/>
4
+ */
5
+ export declare function portalTemplate(app: any, bdom: any, helpers: any): (ctx: any, node: any, key?: string) => any;
2
6
  export declare class Portal extends Component {
3
7
  static template: string;
4
8
  static props: {
File without changes
File without changes
@@ -1,5 +1,6 @@
1
- import { BDom, toggler, createCatcher } from "../blockdom";
2
- import { validateProps } from "../component/props_validation";
1
+ import { BDom, toggler, createCatcher } from "./blockdom";
2
+ import type { ComponentConstructor } from "./component";
3
+ import { markRaw } from "./reactivity";
3
4
  /**
4
5
  * This file contains utility functions that will be injected in each template,
5
6
  * to perform various useful tasks in the compiled code.
@@ -29,6 +30,13 @@ declare type RefMap = {
29
30
  };
30
31
  declare type RefSetter = (el: HTMLElement | null) => void;
31
32
  declare function multiRefSetter(refs: RefMap, name: string): RefSetter;
33
+ /**
34
+ * Validate the component props (or next props) against the (static) props
35
+ * description. This is potentially an expensive operation: it may needs to
36
+ * visit recursively the props and all the children to check if they are valid.
37
+ * This is why it is only done in 'dev' mode.
38
+ */
39
+ export declare function validateProps<P>(name: string | ComponentConstructor<P>, props: P, parent?: any): void;
32
40
  export declare const helpers: {
33
41
  withDefault: typeof withDefault;
34
42
  zero: symbol;
@@ -46,5 +54,6 @@ export declare const helpers: {
46
54
  safeOutput: typeof safeOutput;
47
55
  bind: typeof bind;
48
56
  createCatcher: typeof createCatcher;
57
+ markRaw: typeof markRaw;
49
58
  };
50
59
  export {};
@@ -0,0 +1,32 @@
1
+ import { compile, Template, TemplateFunction } from "../compiler";
2
+ import { Portal } from "./portal";
3
+ export interface TemplateSetConfig {
4
+ dev?: boolean;
5
+ translatableAttributes?: string[];
6
+ translateFn?: (s: string) => string;
7
+ templates?: string | Document;
8
+ }
9
+ export declare class TemplateSet {
10
+ static registerTemplate(name: string, fn: TemplateFunction): void;
11
+ dev: boolean;
12
+ rawTemplates: typeof globalTemplates;
13
+ templates: {
14
+ [name: string]: Template;
15
+ };
16
+ translateFn?: (s: string) => string;
17
+ translatableAttributes?: string[];
18
+ Portal: typeof Portal;
19
+ constructor(config?: TemplateSetConfig);
20
+ addTemplate(name: string, template: string | Element): void;
21
+ addTemplates(xml: string | Document): void;
22
+ getTemplate(name: string): Template;
23
+ _compileTemplate(name: string, template: string | Element): ReturnType<typeof compile>;
24
+ callTemplate(owner: any, subTemplate: string, ctx: any, parent: any, key: any): any;
25
+ }
26
+ export declare const globalTemplates: {
27
+ [key: string]: string | Element | TemplateFunction;
28
+ };
29
+ export declare function xml(...args: Parameters<typeof String.raw>): string;
30
+ export declare namespace xml {
31
+ var nextId: number;
32
+ }
@@ -16,10 +16,3 @@ export declare function loadFile(url: string): Promise<string>;
16
16
  export declare class Markup extends String {
17
17
  }
18
18
  export declare function markup(value: any): Markup;
19
- export declare const globalTemplates: {
20
- [key: string]: string | Element;
21
- };
22
- export declare function xml(...args: Parameters<typeof String.raw>): string;
23
- export declare namespace xml {
24
- var nextId: number;
25
- }
@@ -0,0 +1,30 @@
1
+ declare type BaseType = typeof String | typeof Boolean | typeof Number | typeof Date | typeof Object | typeof Array | true | "*";
2
+ declare type UnionType = (TypeInfo | BaseType)[];
3
+ declare type TypeDescription = BaseType | UnionType | TypeInfo;
4
+ interface TypeInfo {
5
+ type?: TypeDescription;
6
+ optional?: boolean;
7
+ validate?: Function;
8
+ shape?: Schema;
9
+ element?: TypeDescription;
10
+ }
11
+ declare type SimplifiedSchema = string[];
12
+ declare type NormalizedSchema = {
13
+ [key: string]: TypeDescription;
14
+ };
15
+ export declare type Schema = SimplifiedSchema | NormalizedSchema;
16
+ export declare function isOptional(t: TypeDescription): Boolean;
17
+ /**
18
+ * Main validate function
19
+ */
20
+ export declare function validate(obj: {
21
+ [key: string]: any;
22
+ }, spec: Schema): void;
23
+ /**
24
+ * Helper validate function, to get the list of errors. useful if one want to
25
+ * manipulate the errors without parsing an error object
26
+ */
27
+ export declare function validateSchema(obj: {
28
+ [key: string]: any;
29
+ }, schema: Schema): string[];
30
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/owl",
3
- "version": "2.0.0-beta-5",
3
+ "version": "2.0.0-beta-8",
4
4
  "description": "Odoo Web Library (OWL)",
5
5
  "main": "dist/owl.cjs.js",
6
6
  "browser": "dist/owl.iife.js",
@@ -14,6 +14,8 @@
14
14
  },
15
15
  "scripts": {
16
16
  "build:bundle": "rollup -c --failAfterWarnings",
17
+ "build:runtime": "rollup -c --failAfterWarnings runtime",
18
+ "build:compiler": "rollup -c --failAfterWarnings compiler",
17
19
  "build": "npm run build:bundle",
18
20
  "test": "jest",
19
21
  "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand --watch --testTimeout=5000000",
@@ -25,7 +27,8 @@
25
27
  "prettier": "prettier {src/*.ts,src/**/*.ts,tests/*.ts,tests/**/*.ts,doc/*.md,doc/**/*.md} --write",
26
28
  "check-formatting": "prettier {src/*.ts,src/**/*.ts,tests/*.ts,tests/**/*.ts,doc/*.md,doc/**/*.md} --check",
27
29
  "publish": "npm run build && npm publish",
28
- "release": "node tools/release.js"
30
+ "release": "node tools/release.js",
31
+ "compile_templates": "node tools/compile_xml.js"
29
32
  },
30
33
  "repository": {
31
34
  "type": "git",
@@ -1 +0,0 @@
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 +0,0 @@
1
- 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}}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:d}=String.prototype,u=/\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=d.call(t);if(!n)return{};let o=h.call(n,u);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,u);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,I=CharacterData.prototype,R=B.insertBefore,P=((t,e)=>Object.getOwnPropertyDescriptor(t,e))(I,"data").set,M=B.removeChild;class j{constructor(t){this.text=t}mountNode(t,e,n){this.parentEl=e,R.call(e,t,n),this.el=t}moveBefore(t,e){const n=t?t.el:e;R.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,d=U.cloneNode,u=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;u.call(this.parentEl,this.el,n)}toString(){const t=document.createElement("div");return this.mount(t,null),t.innerHTML}mount(e,n){const o=d.call(t,!0);u.call(e,o,n),this.el=o,this.parentEl=e}patch(t,e){}}h&&(p.prototype.mount=function(e,r){const h=d.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(u.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,dt=((t,e)=>Object.getOwnPropertyDescriptor(t,e))(lt,"textContent").set;class ut{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,d=this.anchor,u=this.isOnlyChild,f=this.parentEl;if(0===o.length&&u){if(e)for(let t=0,e=n.length;t<e;t++)a.call(n[t]);return dt.call(f,""),void ct.call(f,d)}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,d),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,d),w=n[--v],b=o[++m];continue}k=k||pt(n,p,v);let u=k[r];if(void 0===u)i.call(b,f,h.call(g)||null);else{const t=n[u];c.call(t,g,null),s.call(t,b,e),o[m]=t,n[u]=null}b=o[++m]}if(p<=v||m<=y)if(p>v){const t=o[y+1],e=t?h.call(t)||null:d;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)dt.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 ut(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),Rt.has(n)||Rt.set(n,new Set),Rt.get(n).add(t)}function It(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 Rt=new WeakMap;function Pt(t){const e=Rt.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&&It(t,$t),(i!==n||Array.isArray(t)&&"length"===e)&&It(t,e),s},deleteProperty(t,e){const n=Reflect.deleteProperty(t,e);return It(t,$t),It(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)&&It(n,$t),s!==r&&It(n,o),l}}function Ht(t){return()=>{const e=[...t.keys()];t.clear(),It(t,$t);for(const n of e)It(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}))}}function Gt(t){return new Promise((function(t){"loading"!==document.readyState?t(!0):document.addEventListener("DOMContentLoaded",t,!1)})).then(t||function(){})}async function Xt(t){const e=await fetch(t);if(!e.ok)throw new Error("Error while fetching xml templates");return await e.text()}class Yt extends String{}function Zt(t){return new Yt(t)}const Jt={};function Qt(...t){const e="__template__"+Qt.nextId++,n=String.raw(...t);return Jt[e]=n,e}Qt.nextId=1;const te=new WeakMap,ee=new WeakMap;function ne(t,e){if(!t)return!1;const n=t.fiber;n&&te.set(n,e);const o=ee.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 ne(t.parent,e)}function oe(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);te.set(o.root,e);if(!ne(n,e)){console.warn("[Owl] Unhandled error. Destroying the root component");try{n.app.destroy()}catch(t){console.error(t)}}}function re(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+=re(n.children)}return e}class ie{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){oe({node:t,error:e})}e.setCounter(e.counter-1)}}}class se extends ie{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,oe({fiber:e||this,error:t})}}setCounter(t){this.counter=t,0===t&&this.node.app.scheduler.flush()}}class le extends se{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){oe({fiber:t,error:e})}}}function ae(t,e){const n=e.defaultProps;if(n)for(let e in n)void 0===t[e]&&(t[e]=n[e])}function ce(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||ce(t,e[o]);return n}if(e.optional&&void 0===t)return!0;let n=!e.type||ce(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&&ce(t[o],e.element);if(e.type===Object&&e.shape){const o=e.shape;for(let e in o)n=n&&ce(t[e],o[e]);if(n)for(let e in t)if(!(e in o))throw new Error(`unknown prop '${e}'`)}return n}let he=null;function de(){if(!he)throw new Error("No active component (a hook function should only be called in 'setup')");return he}function ue(){return he.component}const fe=new WeakMap;function pe(t){const e=de();let n=fe.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)),fe.set(e,n),e.willDestroy.push(Pt.bind(null,n))),jt(t,n)}class me{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=[],he=this,this.app=n,this.parent=o,this.parentKey=r,this.level=o?o.level+1:0,ae(e,t);const i=o&&o.childEnv||n.env;this.childEnv=i,e=pe(e),this.component=new t(e,i,this),this.renderFn=n.getTemplate(t.template).bind(this.component,this.component,this),this.component.setup(),he=null}mountComponent(t,e){const n=new le(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 oe({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&&!te.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-re(e.children)),t.locked=!1,e.children=[],e.childrenMap={},e.bdom=null,te.has(e)&&(te.delete(e),te.delete(t),e.appliedToDom=!1),e}const n=new se(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){oe({error:t,node:this})}this.status=2}async updateAndRender(t,e){const n=function(t,e){let n=t.fiber;return n&&(re(n.children),n.root=null),new ie(t,e)}(this,e);this.fiber=n;const o=this.component;ae(t,o.constructor),he=this,t=pe(t),he=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=fe.get(this);return t?(e=t,[...Rt.get(e)||[]].map((t=>{const e=Ot.get(t);return{target:t,keys:e?[...e.keys()]:[]}}))):[];var e}}class ge{constructor(){this.tasks=new Set,this.frame=0,this.delayedRenders=[],this.requestAnimationFrame=ge.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=te.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)}}ge.requestAnimationFrame=window.requestAnimationFrame.bind(window);const be="true,false,NaN,null,undefined,debugger,console,window,in,instanceof,new,function,return,this,eval,void,Math,RegExp,Array,Object,Date".split(","),ve=Object.assign(Object.create(null),{and:"&&",or:"||",gt:">",gte:">=",lt:"<",lte:"<="}),ye=Object.assign(Object.create(null),{"{":"LEFT_BRACE","}":"RIGHT_BRACE","[":"LEFT_BRACKET","]":"RIGHT_BRACKET",":":"COLON",",":"COMMA","(":"LEFT_PAREN",")":"RIGHT_PAREN"}),we="...,.,===,==,+,!==,!=,!,||,&&,>=,>,<=,<,?,-,*,/,%,typeof ,=>,=,;,in ".split(",");const xe=[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 we)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 ve?{type:"OPERATOR",value:ve[e],size:e.length}:{type:"SYMBOL",value:e}}return!1},function(t){const e=t[0];return!(!e||!(e in ye))&&{type:ye[e],value:e}}];const ke=t=>t&&("LEFT_BRACE"===t.type||"COMMA"===t.type),$e=t=>t&&("RIGHT_BRACE"===t.type||"COMMA"===t.type);function Ne(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 xe)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&&!be.includes(t.value);if("SYMBOL"!==t.type||be.includes(t.value)||i&&("LEFT_BRACE"===l&&ke(i)&&$e(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=>Ee(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 Ee(t){return Ne(t).map((t=>t.value)).join("")}const Ae=/\{\{.*?\}\}/g,Te=/\{\{.*?\}\}/g;function _e(t){let e=t.match(Ae);return e&&e[0].length===t.length?`(${Ee(t.slice(2,-2))})`:"`"+t.replace(Te,(t=>"${"+Ee(t.slice(2,-2))+"}"))+"`"}const Se=document.implementation.createDocument(null,null,null),Ce=new Set(["stop","capture","prevent","self","synthetic"]);class Le{constructor(t,e){this.dynamicTagName=null,this.isRoot=!1,this.hasDynamicChildren=!1,this.children=[],this.data=[],this.childNumber=0,this.parentVar="",this.id=Le.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=Le.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=Se.createElement("t");return t.appendChild(this.dom),t.innerHTML}}function De(t,e){return Object.assign({block:null,index:0,forceNewBlock:!0,translate:t.translate,tKeyExpr:null,nameSpace:t.nameSpace,tModelSelectedExpr:t.tModelSelectedExpr},e)}Le.nextBlockId=1,Le.nextDataIds={};class Oe{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 Be=["label","title","placeholder","alt"],Ie=/^(\s*)([\s\S]+?)(\s*)$/;class Re{constructor(t,e){if(this.blocks=[],this.ids={},this.nextBlockId=1,this.isDebug=!1,this.targets=[],this.target=new Oe("template"),this.translatableAttributes=Be,this.staticDefs=[],this.helpers=new Set,this.translateFn=e.translateFn||(t=>t),e.translatableAttributes){const t=new Set(Be);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,Le.nextBlockId=1,Le.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 Oe(r,o);return this.targets.push(s),this.target=s,this.compileAST(e,De(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=Se.createElement(e);t.insert(n)}createBlock(t,e,n){const o=this.target.hasRoot,r=new Le(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 Ee(t);const n=Ne(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(${Ee(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=Se.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=Ie.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?Se.createTextNode:Se.createComment;n.insert(e.call(Se,r))}}generateHandlerCode(t,e){const n=t.split(".").slice(1).map((t=>{if(!Ce.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,Ee(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=_e(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=Ee(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(Ae.test(t.ref)){const e=t.ref.replace(Ae,(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:d}=t.model,u=Ee(o),f=this.generateId("bExpr");this.define(f,u);const p=Ee(r),m=this.generateId("expr");this.define(m,p);const g=`${f}[${m}]`;let b;if(d)b=n.insertData(`${g} === '${s[h]}'`,"attr"),s["block-attribute-"+b]=d;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=Se.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=De(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=Ee(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=Se.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(${Ee(t.expr)})`;if(t.body){const n=Le.nextBlockId,r=De(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 (${Ee(t.condition)}) {`),this.target.indentLevel++,this.insertAnchor(o);const c=De(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 (${Ee(n.condition)}) {`),this.target.indentLevel++,this.insertAnchor(o);const t=De(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=De(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(${Ee(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?Ee(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,Ee(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=De(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,Ee(t.expr)),e=De(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=De(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=Le.nextBlockId,o=De(e,{preventRoot:!0});this.compileAST({type:3,content:t.body},o),n!==Le.nextBlockId&&(this.helpers.add("zero"),this.addLine(`ctx[zero] = b${n};`))}const r=Ae.test(t.name),i=r?_e(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(Ee(t.name),n,{...e,forceNewBlock:!n})}compileTSet(t,e){this.target.shouldProtectScope=!0,this.helpers.add("isBoundary").add("withDefault");const n=t.value?Ee(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({}, ${Ee(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 d;t.isDynamic?(d=this.generateId("Comp"),this.define(d,Ee(t.name))):d=`\`${t.name}\``,this.dev&&this.addLine(`helpers.validateProps(${d}, ${a}, ctx);`),n&&(!1===e.forceNewBlock||e.tKeyExpr)&&this.insertAnchor(n);let u=`key + \`${h}\``;e.tKeyExpr&&(u=`${e.tKeyExpr} + ${u}`);let f=`component(${`${d}, ${c}, ${u}, node, ctx`})`;t.isDynamic&&(f=`toggler(${d}, ${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(Ae)?(i=!0,o=_e(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 Pe=new WeakMap;function Me(t){if("string"==typeof t){return je(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=Pe.get(t);return e||(e=je(t.cloneNode(!0)),Pe.set(t,e)),e}function je(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 We(t,{inPreTag:!1,inSVG:!1})||{type:0,value:""}}function We(t,e){return t instanceof Element?function(t,e){if(t.hasAttribute("t-debug"))return t.removeAttribute("t-debug"),{type:12,content:We(t,e)};if(t.hasAttribute("t-log")){const n=t.getAttribute("t-log");return t.removeAttribute("t-log"),{type:13,expr:n,content:We(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=We(t,e);if(!l)return null;const a=!n.includes("t-call"),c=a&&!n.includes(r+"_first"),h=a&&!n.includes(r+"_last"),d=a&&!n.includes(r+"_index"),u=a&&!n.includes(r+"_value");return{type:9,collection:o,elem:r,body:l,memo:s,key:i,hasNoFirst:c,hasNoLast:h,hasNoIndex:d,hasNoValue:u}}(t,e)||function(t,e){if(!t.hasAttribute("t-if"))return null;const n=t.getAttribute("t-if");t.removeAttribute("t-if");const o=We(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=We(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=We(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=We(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=We(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=qe(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=We(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=We(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:We(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:Ge(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=We(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=Ue.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=We(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=Ge(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=He.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(ze.test(r)){const t=r.lastIndexOf(".");i=r.slice(0,t),s=`'${r.slice(t+1)}'`}else{if(!Ke.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,d="textarea"===n,u=a&&"checkbox"===l,f=a&&"radio"===l,p=a&&!u&&!f,m=o.includes(".lazy"),g=o.includes(".number");h={baseExpr:i,expr:s,targetAttr:u?"checked":"value",specialInitTargetAttr:f?"checked":null,eventType:f?"click":c||m?"change":"input",hasDynamicChildren:!1,shouldTrim:o.includes(".trim")&&(p||d),shouldNumberize:g&&(p||d)},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 d=qe(t,e);return{type:2,tag:n,dynamicTag:o,attrs:a,on:c,ref:s,content:d,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=qe(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 Ge(t,e)}(t,e):function(t,e){if(t.nodeType===Node.TEXT_NODE){let n=t.textContent||"";if(!e.inPreTag){if(Fe.test(n)&&!n.trim())return null;n=n.replace(Ve," ")}return{type:0,value:n}}if(t.nodeType===Node.COMMENT_NODE)return{type:1,value:t.textContent||""};return null}(t,e)}const Fe=/[\r\n]/,Ve=/\s+/g;const ze=/\.[\w_]+\s*$/,Ke=/\[[^\[]+\]\s*$/,He=new Set(["svg","g","path"]);const Ue=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 qe(t,e){const n=[];for(let o of t.childNodes){const t=We(o,e);t&&(3===t.type?n.push(...t.content):n.push(t))}return n}function Ge(t,e){const n=qe(t,e);switch(n.length){case 0:return null;case 1:return n[0];default:return{type:3,content:n}}}const Xe=Symbol("timeout");function Ye(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=de();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(Xe)),3e3)))]).then((e=>{e===Xe&&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 Ze(t){const e=de(),n=e.app.dev?Ye:t=>t;e.willStart.push(n(t.bind(e.component),"onWillStart"))}function Je(t){const e=de(),n=e.app.dev?Ye:t=>t;e.willUpdateProps.push(n(t.bind(e.component),"onWillUpdateProps"))}function Qe(t){const e=de(),n=e.app.dev?Ye:t=>t;e.mounted.push(n(t.bind(e.component),"onMounted"))}function tn(t){const e=de(),n=e.app.dev?Ye:t=>t;e.willPatch.unshift(n(t.bind(e.component),"onWillPatch"))}function en(t){const e=de(),n=e.app.dev?Ye:t=>t;e.patched.push(n(t.bind(e.component),"onPatched"))}function nn(t){const e=de(),n=e.app.dev?Ye:t=>t;e.willUnmount.unshift(n(t.bind(e.component),"onWillUnmount"))}function on(t){const e=de(),n=e.app.dev?Ye:t=>t;e.willDestroy.push(n(t.bind(e.component),"onWillDestroy"))}function rn(t){const e=de(),n=e.renderFn,o=e.app.dev?Ye:t=>t;t=o(t.bind(e.component),"onWillRender"),e.renderFn=()=>(t(),n())}function sn(t){const e=de(),n=e.renderFn,o=e.app.dev?Ye:t=>t;t=o(t.bind(e.component),"onRendered"),e.renderFn=()=>{const e=n();return t(),e}}function ln(t){const e=de();let n=ee.get(e);n||(n=[],ee.set(e,n)),n.push(t.bind(e.component))}class an{constructor(t,e,n){this.props=t,this.env=e,this.__owl__=n}setup(){}render(t=!1){this.__owl__.render(t)}}an.template="";const cn=V("").constructor;class hn extends cn{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 dn extends an{setup(){const t=this.__owl__,e=t.renderFn;t.renderFn=()=>new hn(this.props.target,e()),nn((()=>{t.bdom&&t.bdom.remove()}))}}function un(t){const e=t.__owl__.component,n=Object.create(e);for(let e in t)n[e]=t[e];return n}dn.template=Qt`<t t-slot="default"/>`,dn.props={target:{type:String},slots:!0};const fn=Symbol("isBoundary");class pn{constructor(t,e,n){this.fn=t,this.ctx=un(e),this.node=n}evaluate(){return this.fn(this.ctx,this.node)}toString(){return this.evaluate().toString()}}let mn=new WeakMap;const gn={withDefault:function(t,e){return null==t||!1===t?e:t},zero:Symbol("zero"),isBoundary:fn,callSlot:function(t,e,n,r,i,s,l){n=n+"__slot_"+r;const a=t.props[xt].slots||{},{__render:c,__ctx:h,__scope:d}=a[r]||{},u=Object.create(h||{});d&&(u[d]=s);const f=c?c.call(h.__owl__.component,u,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:un,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(fn);){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;ae(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=ce(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:pn,safeOutput:function(t){if(!t)return t;let e,n;return t instanceof Yt?(e="string_safe",n=yt(t)):t instanceof pn?(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=mn.get(n);o||(o=new WeakMap,mn.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)}}},bn={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 me(a,e,o.app,o,n),o.children[n]=i,i.initiateRender(new ie(i,l))}return l.childrenMap[n]=i,i},comment:z};let vn=!1;class yn extends class{constructor(t={}){var e;this.rawTemplates=Object.create(Jt),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({},gn,{Portal:dn,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 "${de().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(bn,this.helpers);this.templates[t]=r}return this.templates[t]}_compileTemplate(t,e){return function(t,e={}){const n=Me(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 Re(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 ge,this.root=null,this.Root=t,e.test&&(this.dev=!0),!this.dev||e.test||vn||(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.`),vn=!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){yn.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 me(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=ee.get(t);r||(r=[],ee.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())}}async function wn(t,e,n={}){return new yn(t,n).mount(e,n)}function xn(t){switch(t.__owl__.status){case 0:return"new";case 1:return"mounted";case 2:return"destroyed"}}function kn(t){const e=de().refs;return{get el(){return e[t]||null}}}function $n(){return de().component.env}function Nn(t,e){const n=Object.create(t),o=Object.getOwnPropertyDescriptors(e);return Object.freeze(Object.defineProperties(n,o))}function En(t){const e=de();e.component.env=Nn(e.component.env,t),An(t)}function An(t){const e=de();e.childEnv=Nn(e.childEnv,t)}function Tn(t,e=(()=>[NaN])){let n,o;Qe((()=>{o=e(),n=t(...o)})),en((()=>{const r=e();r.some(((t,e)=>t!==o[e]))&&(o=r,n&&n(),n=t(...o))})),nn((()=>n&&n()))}function _n(t,e,n,o){const r=de(),i=n.bind(r.component);Qe((()=>t.addEventListener(e,i,o))),nn((()=>t.removeEventListener(e,i,o)))}yn.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 Sn={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},Cn={};export{yn as App,an as Component,qt as EventBus,Cn as __info__,Sn as blockDom,Xt as loadFile,Lt as markRaw,Zt as markup,wn as mount,ln as onError,Qe as onMounted,en as onPatched,sn as onRendered,on as onWillDestroy,tn as onWillPatch,rn as onWillRender,Ze as onWillStart,nn as onWillUnmount,Je as onWillUpdateProps,jt as reactive,xn as status,Dt as toRaw,An as useChildSubEnv,ue as useComponent,Tn as useEffect,$n as useEnv,_n as useExternalListener,kn as useRef,pe as useState,En as useSubEnv,Gt as whenReady,Qt as xml};Cn.version="2.0.0-beta-5",Cn.date="2022-04-07T13:36:37.300Z",Cn.hash="1179e84",Cn.url="https://github.com/odoo/owl";
@@ -1,27 +0,0 @@
1
- import { Template } from "../compiler";
2
- import { globalTemplates } from "../utils";
3
- export interface TemplateSetConfig {
4
- dev?: boolean;
5
- translatableAttributes?: string[];
6
- translateFn?: (s: string) => string;
7
- templates?: string | Document;
8
- }
9
- export declare class TemplateSet {
10
- dev: boolean;
11
- rawTemplates: typeof globalTemplates;
12
- templates: {
13
- [name: string]: Template;
14
- };
15
- translateFn?: (s: string) => string;
16
- translatableAttributes?: string[];
17
- helpers: any;
18
- constructor(config?: TemplateSetConfig);
19
- addTemplate(name: string, template: string | Element, options?: {
20
- allowDuplicate?: boolean;
21
- }): void;
22
- addTemplates(xml: string | Document, options?: {
23
- allowDuplicate?: boolean;
24
- }): void;
25
- getTemplate(name: string): Template;
26
- _compileTemplate(name: string, template: string | Element): import("../compiler").TemplateFunction;
27
- }
@@ -1,14 +0,0 @@
1
- import { ComponentConstructor } from "./component";
2
- /**
3
- * Apply default props (only top level).
4
- *
5
- * Note that this method does modify in place the props
6
- */
7
- export declare function applyDefaultProps<P>(props: P, ComponentClass: ComponentConstructor<P>): void;
8
- /**
9
- * Validate the component props (or next props) against the (static) props
10
- * description. This is potentially an expensive operation: it may needs to
11
- * visit recursively the props and all the children to check if they are valid.
12
- * This is why it is only done in 'dev' mode.
13
- */
14
- export declare function validateProps<P>(name: string | ComponentConstructor<P>, props: P, parent?: any): void;