@odoo/owl 3.0.0-alpha.39 → 3.0.0-alpha.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{owl.cjs.js → owl.cjs} +19 -9
- package/dist/owl.es.js +19 -9
- package/dist/owl.iife.js +19 -9
- package/dist/owl.iife.min.js +5 -5
- package/dist/types/owl.d.ts +1 -0
- package/package.json +6 -6
|
@@ -1565,7 +1565,7 @@ function markup(valueOrStrings, ...placeholders) {
|
|
|
1565
1565
|
}
|
|
1566
1566
|
|
|
1567
1567
|
// ../owl-runtime/dist/owl-runtime.es.js
|
|
1568
|
-
var version = "3.0.0-alpha.
|
|
1568
|
+
var version = "3.0.0-alpha.40";
|
|
1569
1569
|
var fibersInError = /* @__PURE__ */ new WeakMap();
|
|
1570
1570
|
var nodeErrorHandlers = /* @__PURE__ */ new WeakMap();
|
|
1571
1571
|
function invokeErrorHandlers(node, error, finalize, markFibers) {
|
|
@@ -3785,10 +3785,7 @@ var Scheduler = class _Scheduler {
|
|
|
3785
3785
|
}
|
|
3786
3786
|
this.processing = true;
|
|
3787
3787
|
this.frame = 0;
|
|
3788
|
-
|
|
3789
|
-
node._destroy();
|
|
3790
|
-
}
|
|
3791
|
-
this.cancelledNodes.clear();
|
|
3788
|
+
this.processCancelledNodes();
|
|
3792
3789
|
for (let fiber of this.tasks) {
|
|
3793
3790
|
if (fiber.root !== fiber) {
|
|
3794
3791
|
this.tasks.delete(fiber);
|
|
@@ -3819,6 +3816,17 @@ var Scheduler = class _Scheduler {
|
|
|
3819
3816
|
}
|
|
3820
3817
|
this.processing = false;
|
|
3821
3818
|
}
|
|
3819
|
+
processCancelledNodes() {
|
|
3820
|
+
for (let node of this.cancelledNodes) {
|
|
3821
|
+
node._destroy();
|
|
3822
|
+
}
|
|
3823
|
+
this.cancelledNodes.clear();
|
|
3824
|
+
for (let task of this.tasks) {
|
|
3825
|
+
if (task.node.status === STATUS.DESTROYED) {
|
|
3826
|
+
this.tasks.delete(task);
|
|
3827
|
+
}
|
|
3828
|
+
}
|
|
3829
|
+
}
|
|
3822
3830
|
};
|
|
3823
3831
|
var Component = class {
|
|
3824
3832
|
static template = "";
|
|
@@ -4355,7 +4363,7 @@ var App = class _App extends TemplateSet {
|
|
|
4355
4363
|
destroy: () => {
|
|
4356
4364
|
this.roots.delete(root);
|
|
4357
4365
|
node?.destroy();
|
|
4358
|
-
this.scheduler.
|
|
4366
|
+
this.scheduler.processCancelledNodes();
|
|
4359
4367
|
}
|
|
4360
4368
|
};
|
|
4361
4369
|
this.roots.add(root);
|
|
@@ -4366,7 +4374,9 @@ var App = class _App extends TemplateSet {
|
|
|
4366
4374
|
root.destroy();
|
|
4367
4375
|
}
|
|
4368
4376
|
this.pluginManager.destroy();
|
|
4369
|
-
this.scheduler.
|
|
4377
|
+
this.scheduler.processCancelledNodes();
|
|
4378
|
+
this.scheduler.tasks.clear();
|
|
4379
|
+
this.scheduler.delayedRenders = [];
|
|
4370
4380
|
apps.delete(this);
|
|
4371
4381
|
this.destroyed = true;
|
|
4372
4382
|
}
|
|
@@ -4698,8 +4708,8 @@ var blockDom = {
|
|
|
4698
4708
|
};
|
|
4699
4709
|
var __info__ = {
|
|
4700
4710
|
version: App.version,
|
|
4701
|
-
date: "2026-06-
|
|
4702
|
-
hash: "
|
|
4711
|
+
date: "2026-06-26T12:29:22.680Z",
|
|
4712
|
+
hash: "5565ac15",
|
|
4703
4713
|
url: "https://github.com/odoo/owl"
|
|
4704
4714
|
};
|
|
4705
4715
|
|
package/dist/owl.es.js
CHANGED
|
@@ -1487,7 +1487,7 @@ function markup(valueOrStrings, ...placeholders) {
|
|
|
1487
1487
|
}
|
|
1488
1488
|
|
|
1489
1489
|
// ../owl-runtime/dist/owl-runtime.es.js
|
|
1490
|
-
var version = "3.0.0-alpha.
|
|
1490
|
+
var version = "3.0.0-alpha.40";
|
|
1491
1491
|
var fibersInError = /* @__PURE__ */ new WeakMap();
|
|
1492
1492
|
var nodeErrorHandlers = /* @__PURE__ */ new WeakMap();
|
|
1493
1493
|
function invokeErrorHandlers(node, error, finalize, markFibers) {
|
|
@@ -3707,10 +3707,7 @@ var Scheduler = class _Scheduler {
|
|
|
3707
3707
|
}
|
|
3708
3708
|
this.processing = true;
|
|
3709
3709
|
this.frame = 0;
|
|
3710
|
-
|
|
3711
|
-
node._destroy();
|
|
3712
|
-
}
|
|
3713
|
-
this.cancelledNodes.clear();
|
|
3710
|
+
this.processCancelledNodes();
|
|
3714
3711
|
for (let fiber of this.tasks) {
|
|
3715
3712
|
if (fiber.root !== fiber) {
|
|
3716
3713
|
this.tasks.delete(fiber);
|
|
@@ -3741,6 +3738,17 @@ var Scheduler = class _Scheduler {
|
|
|
3741
3738
|
}
|
|
3742
3739
|
this.processing = false;
|
|
3743
3740
|
}
|
|
3741
|
+
processCancelledNodes() {
|
|
3742
|
+
for (let node of this.cancelledNodes) {
|
|
3743
|
+
node._destroy();
|
|
3744
|
+
}
|
|
3745
|
+
this.cancelledNodes.clear();
|
|
3746
|
+
for (let task of this.tasks) {
|
|
3747
|
+
if (task.node.status === STATUS.DESTROYED) {
|
|
3748
|
+
this.tasks.delete(task);
|
|
3749
|
+
}
|
|
3750
|
+
}
|
|
3751
|
+
}
|
|
3744
3752
|
};
|
|
3745
3753
|
var Component = class {
|
|
3746
3754
|
static template = "";
|
|
@@ -4277,7 +4285,7 @@ var App = class _App extends TemplateSet {
|
|
|
4277
4285
|
destroy: () => {
|
|
4278
4286
|
this.roots.delete(root);
|
|
4279
4287
|
node?.destroy();
|
|
4280
|
-
this.scheduler.
|
|
4288
|
+
this.scheduler.processCancelledNodes();
|
|
4281
4289
|
}
|
|
4282
4290
|
};
|
|
4283
4291
|
this.roots.add(root);
|
|
@@ -4288,7 +4296,9 @@ var App = class _App extends TemplateSet {
|
|
|
4288
4296
|
root.destroy();
|
|
4289
4297
|
}
|
|
4290
4298
|
this.pluginManager.destroy();
|
|
4291
|
-
this.scheduler.
|
|
4299
|
+
this.scheduler.processCancelledNodes();
|
|
4300
|
+
this.scheduler.tasks.clear();
|
|
4301
|
+
this.scheduler.delayedRenders = [];
|
|
4292
4302
|
apps.delete(this);
|
|
4293
4303
|
this.destroyed = true;
|
|
4294
4304
|
}
|
|
@@ -4620,8 +4630,8 @@ var blockDom = {
|
|
|
4620
4630
|
};
|
|
4621
4631
|
var __info__ = {
|
|
4622
4632
|
version: App.version,
|
|
4623
|
-
date: "2026-06-
|
|
4624
|
-
hash: "
|
|
4633
|
+
date: "2026-06-26T12:29:22.680Z",
|
|
4634
|
+
hash: "5565ac15",
|
|
4625
4635
|
url: "https://github.com/odoo/owl"
|
|
4626
4636
|
};
|
|
4627
4637
|
|
package/dist/owl.iife.js
CHANGED
|
@@ -1565,7 +1565,7 @@ ${issueStrings}`);
|
|
|
1565
1565
|
}
|
|
1566
1566
|
|
|
1567
1567
|
// ../owl-runtime/dist/owl-runtime.es.js
|
|
1568
|
-
var version = "3.0.0-alpha.
|
|
1568
|
+
var version = "3.0.0-alpha.40";
|
|
1569
1569
|
var fibersInError = /* @__PURE__ */ new WeakMap();
|
|
1570
1570
|
var nodeErrorHandlers = /* @__PURE__ */ new WeakMap();
|
|
1571
1571
|
function invokeErrorHandlers(node, error, finalize, markFibers) {
|
|
@@ -3785,10 +3785,7 @@ ${issueStrings}`);
|
|
|
3785
3785
|
}
|
|
3786
3786
|
this.processing = true;
|
|
3787
3787
|
this.frame = 0;
|
|
3788
|
-
|
|
3789
|
-
node._destroy();
|
|
3790
|
-
}
|
|
3791
|
-
this.cancelledNodes.clear();
|
|
3788
|
+
this.processCancelledNodes();
|
|
3792
3789
|
for (let fiber of this.tasks) {
|
|
3793
3790
|
if (fiber.root !== fiber) {
|
|
3794
3791
|
this.tasks.delete(fiber);
|
|
@@ -3819,6 +3816,17 @@ ${issueStrings}`);
|
|
|
3819
3816
|
}
|
|
3820
3817
|
this.processing = false;
|
|
3821
3818
|
}
|
|
3819
|
+
processCancelledNodes() {
|
|
3820
|
+
for (let node of this.cancelledNodes) {
|
|
3821
|
+
node._destroy();
|
|
3822
|
+
}
|
|
3823
|
+
this.cancelledNodes.clear();
|
|
3824
|
+
for (let task of this.tasks) {
|
|
3825
|
+
if (task.node.status === STATUS.DESTROYED) {
|
|
3826
|
+
this.tasks.delete(task);
|
|
3827
|
+
}
|
|
3828
|
+
}
|
|
3829
|
+
}
|
|
3822
3830
|
};
|
|
3823
3831
|
var Component = class {
|
|
3824
3832
|
static template = "";
|
|
@@ -4355,7 +4363,7 @@ ${issueStrings}`);
|
|
|
4355
4363
|
destroy: () => {
|
|
4356
4364
|
this.roots.delete(root);
|
|
4357
4365
|
node?.destroy();
|
|
4358
|
-
this.scheduler.
|
|
4366
|
+
this.scheduler.processCancelledNodes();
|
|
4359
4367
|
}
|
|
4360
4368
|
};
|
|
4361
4369
|
this.roots.add(root);
|
|
@@ -4366,7 +4374,9 @@ ${issueStrings}`);
|
|
|
4366
4374
|
root.destroy();
|
|
4367
4375
|
}
|
|
4368
4376
|
this.pluginManager.destroy();
|
|
4369
|
-
this.scheduler.
|
|
4377
|
+
this.scheduler.processCancelledNodes();
|
|
4378
|
+
this.scheduler.tasks.clear();
|
|
4379
|
+
this.scheduler.delayedRenders = [];
|
|
4370
4380
|
apps.delete(this);
|
|
4371
4381
|
this.destroyed = true;
|
|
4372
4382
|
}
|
|
@@ -4698,8 +4708,8 @@ ${issueStrings}`);
|
|
|
4698
4708
|
};
|
|
4699
4709
|
var __info__ = {
|
|
4700
4710
|
version: App.version,
|
|
4701
|
-
date: "2026-06-
|
|
4702
|
-
hash: "
|
|
4711
|
+
date: "2026-06-26T12:29:22.680Z",
|
|
4712
|
+
hash: "5565ac15",
|
|
4703
4713
|
url: "https://github.com/odoo/owl"
|
|
4704
4714
|
};
|
|
4705
4715
|
|
package/dist/owl.iife.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var owl=(()=>{var ht=Object.defineProperty;var vr=Object.getOwnPropertyDescriptor;var yr=Object.getOwnPropertyNames;var wr=Object.prototype.hasOwnProperty;var Tr=(e,t)=>{for(var n in t)ht(e,n,{get:t[n],enumerable:!0})},Nr=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of yr(t))!wr.call(e,i)&&i!==n&&ht(e,i,{get:()=>t[i],enumerable:!(r=vr(t,i))||r.enumerable});return e};var Er=e=>Nr(ht({},"__esModule",{value:!0}),e);var ao={};Tr(ao,{App:()=>qt,Component:()=>ee,ErrorBoundary:()=>fs,EventBus:()=>Tn,OwlError:()=>g,Plugin:()=>qe,Portal:()=>ps,Registry:()=>mn,Resource:()=>gn,Scope:()=>
|
|
2
|
-
${s}`)}}function bt(e,t,n,r,i=1){return{issueDepth:0,path:n,value:t,get isValid(){return!e.length},addIssue(s){e.push({received:this.value,path:this.path.join(" > "),...s})},mergeIssues(s){e.push(...s)},validate(s){s(this),!this.isValid&&r&&(r.issueDepth=this.issueDepth+i)},withIssues(s){return bt(s,this.value,this.path,this,0)},withKey(s){return bt(e,this.value[s],this.path.concat(s),this)}}}function Nt(e,t){let n=[];return t(bt(n,e,[])),n}var Et=Symbol("default"),an=Symbol("innerType"),Ge=Symbol("shape"),cn=Symbol("elementType"),un=Symbol("optional"),fn=Symbol("intersection");function le(e){return typeof e=="function"?e[Et]:void 0}function jr(e,t){let n=function(i){i.value!==void 0&&i.validate(e)};return n[un]=!0,n[an]=e,t!==void 0&&(n[Et]=typeof t=="function"?t:()=>t),n}function Vr(e){return typeof e=="function"&&un in e}function M(e){return e.optional=t=>jr(e,t),e}function hn(e,t){return Be(e,t)}function Be(e,t){if(typeof t!="function")return e;if(e===void 0){let l=t[Et];if(!l)return e;e=l()}let n=t[an]||t;if(typeof n!="function"||!e||typeof e!="object")return e;let r=n[fn];if(r){let l=e;for(let c of r)l=Be(l,c);return l}let i=n[cn];if(i&&Array.isArray(e)){let l=e;for(let c=0;c<e.length;c++){let h=Be(e[c],i);h!==e[c]&&(l===e&&(l=[...e]),l[c]=h)}return l}let s=n[Ge];if(!s)return e;let o=e;for(let l in s){let c=o[l],h=Be(c,s[l]);h!==c&&(o===e&&(o=Array.isArray(e)?[...e]:{...e}),o[l]=h)}return o}function Fr(){return M(function(){})}function Kr(){return M(function(t){typeof t.value!="boolean"&&t.addIssue({message:"value is not a boolean"})})}function Wr(){return M(function(t){typeof t.value!="number"&&t.addIssue({message:"value is not a number"})})}function Ur(){return M(function(t){typeof t.value!="string"&&!(t.value instanceof String)&&t.addIssue({message:"value is not a string"})})}function zr(e){let t=M(function(r){if(!Array.isArray(r.value)){r.addIssue({message:"value is not an array"});return}if(e)for(let i=0;i<r.value.length;i++)r.withKey(i).validate(e)});return e&&(t[cn]=e),t}function $t(e){return M(function(n){(typeof n.value!="function"||!(n.value===e||n.value.prototype instanceof e))&&n.addIssue({message:`value is not '${e.name}' or an extension`})})}function Hr(e,t,n="value does not match custom validation"){return M(function(i){i.validate(e),i.isValid&&(t(i.value)||i.addIssue({message:n}))})}function Gr(e=[],t=void 0){return M(function(r){typeof r.value!="function"&&r.addIssue({message:"value is not a function"})})}function dn(e){return M(function(n){n.value instanceof e||n.addIssue({message:`value is not an instance of '${e.name}'`})})}function qr(e){let t=M(function(r){for(let i of e)r.validate(i)});return t[fn]=e,t}function St(e){return M(function(n){n.value!==e&&n.addIssue({message:`value is not equal to ${typeof e=="string"?`'${e}'`:e}`})})}function Xr(e){return kt(e.map(St))}function pn(e,t,n){if(typeof e.value!="object"||Array.isArray(e.value)||e.value===null){e.addIssue({message:"value is not an object"});return}if(!t)return;let r=!Array.isArray(t),i,s;if(r)s=Object.keys(t),i=t;else{s=t,i={};for(let l of s)i[l]=null}let o=[];for(let l of s){if(e.value[l]===void 0){Vr(i[l])||o.push(l);continue}r&&e.withKey(l).validate(i[l])}if(o.length&&e.addIssue({message:"object value has missing keys",missingKeys:o}),n){let l=[];for(let c in e.value)s.includes(c)||l.push(c);l.length&&e.addIssue({message:"object value has unknown keys",unknownKeys:l})}}function Yr(e={}){let t=M(function(r){pn(r,e,!1)});return Array.isArray(e)||(t[Ge]=e),t}function Zr(e){let t=M(function(r){pn(r,e,!0)});return Array.isArray(e)||(t[Ge]=e),t}function Jr(e){return M(function(n){n.value instanceof Promise||n.addIssue({message:"value is not a promise"})})}function Qr(e){return M(function(n){if(typeof n.value!="object"||Array.isArray(n.value)||n.value===null){n.addIssue({message:"value is not an object"});return}if(e)for(let r in n.value)n.withKey(r).validate(e)})}function ei(e){let t=M(function(r){if(!Array.isArray(r.value)){r.addIssue({message:"value is not an array"});return}if(r.value.length!==e.length){r.addIssue({message:"tuple value does not have the correct length"});return}for(let i=0;i<e.length;i++)r.withKey(i).validate(e[i])});return t[Ge]=e,t}function kt(e){return M(function(n){let r=0,i=[];for(let s of e){let o=n.withIssues(i);if(o.validate(s),i.length===r||o.issueDepth>0){n.mergeIssues(i.slice(r));return}r=i.length}n.addIssue({message:"value does not match union type",subIssues:i})})}function ti(e){return M(function(n){(typeof n.value!="function"||!n.value[ie])&&n.addIssue({message:"value is not a reactive value"})})}function ni(e){if(typeof HTMLElement>"u")throw new Error("Cannot use ref in a non-DOM environment");return kt([St(null),dn(e||HTMLElement)])}var Ct={and:qr,any:Fr,array:zr,boolean:Kr,constructor:$t,customValidator:Hr,function:Gr,instanceOf:dn,literal:St,number:Wr,object:Yr,or:kt,promise:Jr,record:Qr,ref:ni,selection:Xr,signal:ti,strictObject:Zr,string:Ur,tuple:ei},mn=class{_map=x.Object(Object.create(null));_name;_validation;constructor(e={}){this._name=e.name||"registry",this._validation=e.validation}entries=se(()=>Object.entries(this._map()).sort((t,n)=>t[1][0]-n[1][0]).map(([t,n])=>[t,n[1]]));items=se(()=>this.entries().map(e=>e[1]));addById(e,t={}){if(!e.id)throw new g(`Item should have an id key (registry '${this._name}')`);return this.add(e.id,e,t)}add(e,t,n={}){if(!n.force&&e in this._map())throw new g(`Key "${e}" is already registered (registry '${this._name}'). Use { force: true } to overwrite.`);if(this._validation){let r=this._name?` (registry '${this._name}', key: '${e}')`:` (key: '${e}')`;W(t,this._validation,`Registry entry does not match the type${r}`)}return this._map()[e]=[n.sequence??50,t],this}get(e,t){let n=e in this._map();if(!n&&arguments.length<2)throw new g(`Cannot find key "${e}" (registry '${this._name}')`);return n?this._map()[e][1]:t}delete(e){delete this._map()[e]}has(e){return e in this._map()}use(e,t,n={}){let r=K();return this.add(e,t,n),r.onDestroy(()=>{this._map()[e]?.[1]===t&&this.delete(e)}),this}useById(e,t={}){if(!e.id)throw new g(`Item should have an id key (registry '${this._name}')`);return this.use(e.id,e,t)}},gn=class{_items=x.Array([]);_name;_validation;constructor(e={}){this._name=e.name,this._validation=e.validation}items=se(()=>this._items().sort((e,t)=>e[0]-t[0]).map(e=>e[1]));add(e,t={}){if(this._validation){let n=this._name?` (resource '${this._name}')`:"";W(e,this._validation,`Resource item does not match the type${n}`)}return this._items().push([t.sequence??50,e]),this}delete(e){let t=this._items().filter(([n,r])=>r!==e);return this._items.set(t),this}has(e){return this._items().some(([t,n])=>n===e)}use(e,t={}){let n=K();return this.add(e,t),n.onDestroy(()=>this.delete(e)),this}},qe=class{static _shadowId;static get id(){return this._shadowId??this.name}static set id(e){this._shadowId=e}static sequence=50;__owl__;constructor(e){this.__owl__=e}setup(){}},me=class extends ke{config;plugins;ready=Promise.resolve();hasPendingReady=!1;constructor(e,t={}){if(super(e),this.config=t.config??{},this.pluginManager=this,t.parent){let n=t.parent;n.onDestroy(()=>this.destroy()),this.plugins=Object.create(n.plugins)}else this.plugins={}}destroy(){this.finalize(e=>console.error(e))}getPluginById(e){return this.plugins[e]||null}getPlugin(e){return this.getPluginById(e.id)}startPlugin(e){if(!e.id)throw new g(`Plugin "${e.name}" has no id`);if(this.plugins.hasOwnProperty(e.id)){let n=this.getPluginById(e.id).constructor;if(n!==e)throw new g(`Trying to start a plugin with the same id as an other plugin (id: '${e.id}', existing plugin: '${n.name}', starting plugin: '${e.name}')`);return null}let t=new e(this);return this.plugins[e.id]=t,t.setup(),t}startPlugins(e){let t=e.filter(o=>!o.id||this.plugins.hasOwnProperty(o.id)?(this.startPlugin(o),!1):!0);if(!t.length)return;t.sort((o,l)=>o.sequence-l.sequence);let n=[];for(let o of t){let l=n[n.length-1];l&&l[0].sequence===o.sequence?l.push(o):n.push([o])}let r=o=>{H.push(this);try{for(let c of o)this.startPlugin(c)}finally{H.pop()}let l=this.willStart.splice(0);return l.length?Promise.all(l.map(c=>c())):null},i=this.hasPendingReady?this.ready:null;for(let o of n)i?i=i.then(()=>r(o)):i=r(o);if(!i){this.status<A.MOUNTED&&(this.status=A.MOUNTED);return}this.hasPendingReady=!0;let s=this.ready=i.then(()=>{this.status<A.MOUNTED&&(this.status=A.MOUNTED),this.ready===s&&(this.hasPendingReady=!1)})}};function Xe(e,t){Array.isArray(t)?e.startPlugins(t):e.onDestroy(Ae(()=>{let n=t.items();wt(()=>e.startPlugins(n))}))}function Ye(e){let t=K();t.willStart.push(t.decorate(e,"onWillStart"))}function Z(e){let t=K();t.onDestroy(t.decorate(e,"onWillDestroy"))}function De(e){Z(Ae(e))}function bn(e,t,n,r){typeof e=="function"?De(()=>{let i=e();if(i)return i.addEventListener(t,n,r),()=>i.removeEventListener(t,n,r)}):(e.addEventListener(t,n,r),Z(()=>e.removeEventListener(t,n,r)))}function vn(){return K().app}function yn(e){let t=K(),n=t.pluginManager.getPluginById(e.id);if(!n)if(t instanceof me)n=t.pluginManager.startPlugin(e);else throw new g(`Unknown plugin "${e.id}"`);return n}function wn(e,t){let n=K();if(!(n instanceof me))throw new g("Expected to be in a plugin scope");n.app.dev&&t&&W(n.config,Ct.object({[e]:t}),"Config does not match the type");let r=n.config[e];return r===void 0?le(t)?.():r}var Tn=class extends EventTarget{trigger(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t}))}},Ee=class extends String{};function At(e){return e instanceof Ee?e:e===void 0?Ne(""):typeof e=="number"?Ne(String(e)):([["&","&"],["<","<"],[">",">"],["'","'"],['"',"""],["`","`"]].forEach(t=>{e=String(e).replace(new RegExp(t[0],"g"),t[1])}),Ne(e))}function Ne(e,...t){if(!Array.isArray(e))return new Ee(e);let n=e,r="",i=0;for(;i<t.length;++i)r+=n[i]+At(t[i]);return r+=n[i],new Ee(r)}var ri="3.0.0-alpha.39",Q=new WeakMap,ce=new WeakMap;function xn(e,t,n,r){for(;e;){r&&e.fiber&&Q.set(e.fiber,t);let i=ce.get(e);if(i)for(let s=i.length-1;s>=0;s--)try{return i[s](t,n),{handled:!0,error:t}}catch(o){t=o}e=e.parent}return{handled:!1,error:t}}function Rn(e){return(t,n)=>{if(e.app.destroyed)throw t;let{handled:r}=xn(e,t,n,!1);r||e.app._handleError(n())}}function ve(e){let{error:t}=e,n="node"in e?e.node:e.fiber.node,r="fiber"in e?e.fiber:n.fiber,i=n.app;if(i.destroyed)throw t;if(r){let l=r;do l.node.fiber=l,Q.set(l,t),l=l.parent;while(l);Q.set(r.root,t)}let s=()=>{try{i.destroy()}catch{}return t},o=xn(n,t,s,!0);o.handled||(t=o.error,i._handleError(s()))}function Mn(e){e=e.slice();let t=[],n;for(;(n=e[0])&&typeof n=="string";)t.push(e.shift());return{modifiers:t,data:e}}var ye={shouldNormalizeDom:!0,mainEventHandler:(e,t,n)=>(typeof e=="function"?e(t):Array.isArray(e)&&(e=Mn(e).data,e[0](e[1],t)),!1)},Nn=globalThis.document?.createTextNode(""),ii=class{key;child;parentEl;constructor(e,t){this.key=e,this.child=t}mount(e,t){this.parentEl=e,this.child.mount(e,t)}moveBeforeDOMNode(e,t){this.child.moveBeforeDOMNode(e,t)}moveBeforeVNode(e,t){this.moveBeforeDOMNode(e&&e.firstNode()||t)}patch(e,t){if(this===e)return;let n=this.child,r=e.child;if(this.key===e.key)n.patch(r,t);else{let i=n.firstNode();i.parentElement.insertBefore(Nn,i),t&&n.beforeRemove(),n.remove(),r.mount(this.parentEl,Nn),this.child=r,this.key=e.key}}beforeRemove(){this.child.beforeRemove()}remove(){this.child.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}};function ae(e,t){return new ii(e,t)}var Rt,Re,Wt,In;if(typeof Element<"u"){({setAttribute:Rt,removeAttribute:Re}=Element.prototype);let e=DOMTokenList.prototype;Wt=e.add,In=e.remove}var Pn=Array.isArray,{split:En,trim:Oe}=String.prototype,$n=/\s+/;function be(e,t){switch(t){case!1:case null:case void 0:Re.call(this,e);break;case!0:Rt.call(this,e,"");break;default:Rt.call(this,e,t)}}function si(e){return function(t){be.call(this,e,t)}}function oi(e){if(Pn(e))e[0]==="class"?Pt.call(this,e[1]):e[0]==="style"?Lt.call(this,e[1]):be.call(this,e[0],e[1]);else for(let t in e)t==="class"?Pt.call(this,e[t]):t==="style"?Lt.call(this,e[t]):be.call(this,t,e[t])}function li(e,t){if(Pn(e)){let n=e[0],r=e[1];if(n===t[0]){if(r===t[1])return;n==="class"?Ze.call(this,r,t[1]):n==="style"?Je.call(this,r,t[1]):be.call(this,n,r)}else Re.call(this,t[0]),be.call(this,n,r)}else{for(let n in t)n in e||(n==="class"?Ze.call(this,"",t[n]):n==="style"?Je.call(this,"",t[n]):Re.call(this,n));for(let n in e){let r=e[n];r!==t[n]&&(n==="class"?Ze.call(this,r,t[n]):n==="style"?Je.call(this,r,t[n]):be.call(this,n,r))}}}function Mt(e){let t={};switch(typeof e){case"string":let n=Oe.call(e);if(!n)return{};let r=En.call(n,$n);for(let i=0,s=r.length;i<s;i++)t[r[i]]=!0;return t;case"object":for(let i in e){let s=e[i];if(s){if(i=Oe.call(i),!i)continue;let o=En.call(i,$n);for(let l of o)t[l]=s}}return t;case"undefined":return{};case"number":return{[e]:!0};default:return{[e]:!0}}}var Dt={};function ai(e){if(e in Dt)return Dt[e];let t=e.replace(/[A-Z]/g,n=>"-"+n.toLowerCase());return Dt[e]=t,t}var Sn=/\s*!\s*important\s*$/i;function Ln(e,t,n){Sn.test(n)?e.setProperty(t,n.replace(Sn,""),"important"):e.setProperty(t,n)}function It(e){let t={};switch(typeof e){case"string":{let n=e,r=n.length,i=0;for(;i<r;){let s=i,o=0,l=0;for(;i<r;){let f=n.charCodeAt(i);if(l){if(f===92){i+=2;continue}f===l&&(l=0)}else if(f===34||f===39)l=f;else if(f===40)o++;else if(f===41)o>0&&o--;else if(f===59&&o===0)break;i++}let c=Oe.call(n.slice(s,i));if(i++,!c)continue;let h=c.indexOf(":");if(h===-1)continue;let a=Oe.call(c.slice(0,h)),u=Oe.call(c.slice(h+1));a&&u&&u!=="undefined"&&(t[a]=u)}return t}case"object":for(let n in e){let r=e[n];(r||r===0)&&(t[ai(n)]=String(r))}return t;default:return{}}}function Pt(e){e=e===""?{}:Mt(e);for(let t in e)Wt.call(this.classList,t)}function Ze(e,t){t=t===""?{}:Mt(t),e=e===""?{}:Mt(e);for(let n in t)n in e||In.call(this.classList,n);for(let n in e)e[n]!==t[n]&&Wt.call(this.classList,n)}function Lt(e){e=e===""?{}:It(e);let t=this.style;for(let n in e)Ln(t,n,e[n])}function Je(e,t){t=t===""?{}:It(t),e=e===""?{}:It(e);let n=this.style;for(let r in t)r in e||n.removeProperty(r);for(let r in e)e[r]!==t[r]&&Ln(n,r,e[r]);n.cssText||Re.call(this,"style")}function ci(e){if(!e)return!1;if(e.ownerDocument.contains(e))return!0;let t=e.getRootNode();return t instanceof ShadowRoot&&e.ownerDocument.contains(t.host)}function ui(e,t){let n=e,r=t.defaultView.ShadowRoot;for(;n;){if(n===t)return!0;if(n.parentNode)n=n.parentNode;else if(n instanceof r&&n.host)n=n.host;else return!1}return!1}function fi(e){let t=e&&e.ownerDocument;if(t){if(!t.defaultView)throw new g("Cannot mount a component: the target document is not attached to a window (defaultView is missing)");let n=t.defaultView.HTMLElement;if(e instanceof n||e instanceof ShadowRoot){if(!ui(e,t))throw new g("Cannot mount a component on a detached dom node");return}}throw new g("Cannot mount component: the target is not a valid DOM element")}function hi(e){return new Promise(function(t){document.readyState!=="loading"?t(!0):document.addEventListener("DOMContentLoaded",t,!1)}).then(e||function(){})}function Bn(e){let t=e.split(".")[0],n=e.includes(".capture"),r=e.includes(".passive");return e.includes(".synthetic")?gi(t,n,r):pi(t,n,r)}var di=1;function pi(e,t=!1,n=!1){let r=`__event__${e}_${di++}`;t&&(r=`${r}_capture`);function i(h){let a=h.currentTarget;if(!a||!ci(a))return;let u=a[r];u&&ye.mainEventHandler(u,h,a)}let s={capture:t,passive:n};function o(h){this[r]=h,this.addEventListener(e,i,s)}function l(){delete this[r],this.removeEventListener(e,i,s)}function c(h){this[r]=h}return{setup:o,update:c,remove:l}}var mi=1;function gi(e,t=!1,n=!1){let r=`__event__synthetic_${e}`;t&&(r=`${r}_capture`),vi(e,r,t,n);let i=mi++;function s(l){let c=this[r]||{};c[i]=l,this[r]=c}function o(){delete this[r]}return{setup:s,update:s,remove:o}}function bi(e,t){let n=t.target;for(;n!==null;){let r=n[e];if(r){for(let i of Object.values(r))if(ye.mainEventHandler(i,t,n))return}n=n.parentNode}}var kn={};function vi(e,t,n=!1,r=!1){kn[t]||(document.addEventListener(e,i=>bi(t,i),{capture:n,passive:r}),kn[t]=!0)}var yi=(e,t)=>Object.getOwnPropertyDescriptor(e,t),_e,jn,Bt;if(typeof Node<"u"){let e=Node.prototype;_e=e.insertBefore,jn=yi(e,"textContent").set,Bt=e.removeChild}var Vn=class{children;anchors;parentEl;isOnlyChild;constructor(e){this.children=e}mount(e,t){let n=this.children,r=n.length,i=new Array(r);for(let s=0;s<r;s++){let o=n[s];if(o)o.mount(e,t);else{let l=document.createTextNode("");i[s]=l,_e.call(e,l,t)}}this.anchors=i,this.parentEl=e}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;let n=this.children,r=this.anchors;for(let i=0,s=n.length;i<s;i++){let o=n[i];if(o)o.moveBeforeDOMNode(e,t);else{let l=r[i];_e.call(t,l,e)}}}moveBeforeVNode(e,t){if(e){let s=e.children[0];t=(s?s.firstNode():e.anchors[0])||null}let n=this.children,r=this.parentEl,i=this.anchors;for(let s=0,o=n.length;s<o;s++){let l=n[s];if(l)l.moveBeforeVNode(null,t);else{let c=i[s];_e.call(r,c,t)}}}patch(e,t){if(this===e)return;let n=this.children,r=e.children,i=this.anchors,s=this.parentEl;for(let o=0,l=n.length;o<l;o++){let c=n[o],h=r[o];if(c)if(h)c.patch(h,t);else{let a=c.firstNode(),u=document.createTextNode("");i[o]=u,_e.call(s,u,a),t&&c.beforeRemove(),c.remove(),n[o]=void 0}else if(h){n[o]=h;let a=i[o];h.mount(s,a),Bt.call(s,a)}}}beforeRemove(){let e=this.children;for(let t=0,n=e.length;t<n;t++){let r=e[t];r&&r.beforeRemove()}}remove(){let e=this.parentEl;if(this.isOnlyChild)jn.call(e,"");else{let t=this.children,n=this.anchors;for(let r=0,i=t.length;r<i;r++){let s=t[r];s?s.remove():Bt.call(e,n[r])}}}firstNode(){let e=this.children[0];return e?e.firstNode():this.anchors[0]}toString(){return this.children.map(e=>e?e.toString():"").join("")}};function Ut(e){return new Vn(e)}var wi=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Qe,Fn,Kn;if(typeof Node<"u"){let e=Node.prototype;Qe=e.insertBefore,Kn=e.removeChild,Fn=wi(CharacterData.prototype,"data").set}var Ti=class{text;parentEl;el;constructor(e){this.text=e}mount(e,t){this.parentEl=e;let n=document.createTextNode(jt(this.text));Qe.call(e,n,t),this.el=n}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t,Qe.call(t,this.el,e)}moveBeforeVNode(e,t){Qe.call(this.parentEl,this.el,e?e.el:t)}beforeRemove(){}remove(){Kn.call(this.parentEl,this.el)}firstNode(){return this.el}patch(e){let t=e.text;this.text!==t&&(Fn.call(this.el,jt(t)),this.text=t)}toString(){return this.text}};function Me(e){return new Ti(e)}function jt(e){switch(typeof e){case"string":return e;case"number":return String(e);case"boolean":return e?"true":"false";default:return e||""}}var _t=(e,t)=>Object.getOwnPropertyDescriptor(e,t),xe,Wn,Un,rt,zt;typeof Node<"u"&&(xe=Node.prototype,Wn=Element.prototype,Un=_t(CharacterData.prototype,"data").set,rt=_t(xe,"firstChild").get,zt=_t(xe,"nextSibling").get);var Cn=()=>{};function Ni(e){return function(n){this[e]=n===0?0:n?n.valueOf():""}}var Ot={};function zn(e){if(e in Ot)return Ot[e];let n=new DOMParser().parseFromString(`<t>${e}</t>`,"text/xml").firstChild.firstChild;ye.shouldNormalizeDom&&Hn(n);let r=Vt(n),i=Ft(r),s=r.el,o=Si(s,i);return Ot[e]=o,o}function Hn(e){if(e.nodeType===Node.TEXT_NODE&&!/\S/.test(e.textContent)){e.remove();return}if(!(e.nodeType===Node.ELEMENT_NODE&&e.tagName==="pre"))for(let t=e.childNodes.length-1;t>=0;--t)Hn(e.childNodes.item(t))}function Vt(e,t=null,n=null){switch(e.nodeType){case Node.ELEMENT_NODE:{let r=n&&n.currentNS,i=e.tagName,s,o=[];if(i.startsWith("block-text-")){let c=parseInt(i.slice(11),10);o.push({type:"text",idx:c}),s=document.createTextNode("")}if(i.startsWith("block-child-")){n.isRef||An(n);let c=parseInt(i.slice(12),10);o.push({type:"child",idx:c}),s=document.createTextNode("")}if(r||=e.namespaceURI,s||(s=r?document.createElementNS(r,i):document.createElement(i)),s instanceof Element){n||document.createElement("template").content.appendChild(s);let c=e.attributes;for(let h=0;h<c.length;h++){let a=c[h].name,u=c[h].value;if(a.startsWith("block-handler-")){let f=parseInt(a.slice(14),10);o.push({type:"handler",idx:f,event:u})}else if(a.startsWith("block-attribute-")){let f=parseInt(a.slice(16),10);o.push({type:"attribute",idx:f,name:u,tag:i})}else if(a.startsWith("block-property-")){let f=parseInt(a.slice(15),10);o.push({type:"property",idx:f,name:u,tag:i})}else a==="block-attributes"?o.push({type:"attributes",idx:parseInt(u,10)}):a==="block-ref"?o.push({type:"ref",idx:parseInt(u,10)}):s.setAttribute(c[h].name,u)}}let l={parent:t,firstChild:null,nextSibling:null,el:s,info:o,refN:0,currentNS:r};if(e.firstChild){let c=e.childNodes[0];if(e.childNodes.length===1&&c.nodeType===Node.ELEMENT_NODE&&c.tagName.startsWith("block-child-")){let h=c.tagName,a=parseInt(h.slice(12),10);o.push({idx:a,type:"child",isOnlyChild:!0})}else{l.firstChild=Vt(e.firstChild,l,l),s.appendChild(l.firstChild.el);let h=e.firstChild,a=l.firstChild;for(;h=h.nextSibling;)a.nextSibling=Vt(h,a,l),s.appendChild(a.nextSibling.el),a=a.nextSibling}}return l.info.length&&An(l),l}case Node.TEXT_NODE:return{parent:t,firstChild:null,nextSibling:null,el:document.createTextNode(e.textContent),info:[],refN:0,currentNS:null}}throw new g("boom")}function An(e){e.isRef=!0;do e.refN++;while(e=e.parent)}function Ei(e){let t=e.parent;for(;t&&t.nextSibling===e;)e=t,t=t.parent;return t}function Ft(e,t,n){if(!t){let r=new Array(e.info.filter(i=>i.type==="child").length);t={collectors:[],locations:[],children:r,cbRefs:[],refN:e.refN},n=0}if(e.refN){let r=n,i=e.isRef,s=e.firstChild?e.firstChild.refN:0,o=e.nextSibling?e.nextSibling.refN:0;if(i){for(let l of e.info)l.refIdx=r;e.refIdx=r,$i(t,e),n++}if(o){let l=n+s;t.collectors.push({idx:l,prevIdx:r,getVal:zt}),Ft(e.nextSibling,t,l)}s&&(t.collectors.push({idx:n,prevIdx:r,getVal:rt}),Ft(e.firstChild,t,n))}return t}function $i(e,t){for(let n of t.info)switch(n.type){case"text":e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:Dn,updateData:Dn});break;case"child":n.isOnlyChild?e.children[n.idx]={parentRefIdx:n.refIdx,isOnlyChild:!0}:e.children[n.idx]={parentRefIdx:Ei(t).refIdx,afterRefIdx:n.refIdx};break;case"property":{let r=n.refIdx,i=Ni(n.name);e.locations.push({idx:n.idx,refIdx:r,setData:i,updateData:i});break}case"attribute":{let r=n.refIdx,i,s;n.name==="class"?(s=Pt,i=Ze):n.name==="style"?(s=Lt,i=Je):(s=si(n.name),i=s),e.locations.push({idx:n.idx,refIdx:r,setData:s,updateData:i});break}case"attributes":e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:oi,updateData:li});break;case"handler":{let{setup:r,update:i}=Bn(n.event);e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:r,updateData:i});break}case"ref":{e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:Cn,updateData:Cn}),e.cbRefs.push(n.idx);break}}}function Si(e,t){let n=ki(e,t);return t.children.length?(n=class extends n{children;constructor(r,i){super(r),this.children=i}},n.prototype.beforeRemove=Vn.prototype.beforeRemove,(r,i=[])=>new n(r,i)):r=>new n(r)}function ki(e,t){let{refN:n,collectors:r,children:i,locations:s,cbRefs:o}=t;s.sort((y,E)=>y.idx-E.idx);let l=s.length,c=i.length,h=n>0,a=s.map(y=>y.refIdx),u=s.map(y=>y.setData),f=s.map(y=>y.updateData),m=[zt,rt],p=r.length,b=r.map(y=>y.idx&32767|(y.prevIdx&32767)<<15|(y.getVal===rt?1:0)<<30),d=i.map(y=>y.parentRefIdx&32767|(y.isOnlyChild?1:0)<<15|((y.afterRefIdx??0)&32767)<<16),S=xe.cloneNode,N=xe.insertBefore,w=Wn.remove;class T{el;parentEl;data;children;refs;constructor(E){this.data=E}beforeRemove(){}remove(){w.call(this.el)}firstNode(){return this.el}moveBeforeDOMNode(E,v=this.parentEl){this.parentEl=v,N.call(v,this.el,E)}moveBeforeVNode(E,v){N.call(this.parentEl,this.el,E?E.el:v)}toString(){let E=document.createElement("div");return this.mount(E,null),E.innerHTML}mount(E,v){let k=S.call(e,!0);N.call(E,k,v),this.el=k,this.parentEl=E}patch(E,v){}}return h&&(T.prototype.mount=function(E,v){let k=S.call(e,!0),D=new Array(n);this.refs=D,D[0]=k;for(let O=0;O<p;O++){let C=b[O];D[C&32767]=m[C>>30&1].call(D[C>>15&32767])}if(l){let O=this.data;for(let C=0;C<l;C++)u[C].call(D[a[C]],O[C])}if(c){let O=this.children;for(let C=0;C<c;C++){let R=O[C];if(R){let L=d[C],we=L>>16&32767,Le=we?D[we]:null;R.isOnlyChild=!!(L&32768),R.mount(D[L&32767],Le)}}}if(N.call(E,k,v),this.el=k,this.parentEl=E,o.length){let O=this.data,C=this.refs;for(let R of o){let L=O[R];L(C[a[R]],null)}}},T.prototype.patch=function(E,v){if(this===E)return;let k=this.refs;if(l){let D=this.data,O=E.data;for(let C=0;C<l;C++){let R=D[C],L=O[C];R!==L&&f[C].call(k[a[C]],L,R)}this.data=O}if(c){let D=this.children,O=E.children;for(let C=0;C<c;C++){let R=D[C],L=O[C];if(R)L?R.patch(L,v):(v&&R.beforeRemove(),R.remove(),D[C]=void 0);else if(L){let we=d[C],Le=we>>16&32767,br=Le?k[Le]:null;L.mount(k[we&32767],br),D[C]=L}}}},T.prototype.remove=function(){if(o.length){let E=this.data,v=this.refs;for(let k of o){let D=E[k];D(null,v[a[k]])}}w.call(this.el)}),T}function Dn(e){Un.call(this,jt(e))}var Ci=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Gn,qn,Xn,Kt;if(typeof Node<"u"){let e=Node.prototype;Gn=e.insertBefore,qn=e.appendChild,Xn=e.removeChild,Kt=Ci(e,"textContent").set}var Ai=class{children;anchor;parentEl;isOnlyChild;constructor(e){this.children=e}mount(e,t){let n=this.children,r=document.createTextNode("");this.anchor=r,Gn.call(e,r,t);let i=n.length;if(i){let s=n[0].mount;for(let o=0;o<i;o++)s.call(n[o],e,r)}this.parentEl=e}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;let n=this.children;for(let r=0,i=n.length;r<i;r++)n[r].moveBeforeDOMNode(e,t);t.insertBefore(this.anchor,e)}moveBeforeVNode(e,t){if(e){let r=e.children[0];t=(r?r.firstNode():e.anchor)||null}let n=this.children;for(let r=0,i=n.length;r<i;r++)n[r].moveBeforeVNode(null,t);this.parentEl.insertBefore(this.anchor,t)}patch(e,t){if(this===e)return;let n=this.children,r=e.children;if(r.length===0&&n.length===0)return;this.children=r;let i=r[0]||n[0],{mount:s,patch:o,remove:l,beforeRemove:c,moveBeforeVNode:h,firstNode:a}=i,u=this.anchor,f=this.isOnlyChild,m=this.parentEl;if(r.length===0&&f){if(t)for(let v=0,k=n.length;v<k;v++)c.call(n[v]);Kt.call(m,""),qn.call(m,u);return}let p=0,b=0,d=n[0],S=r[0],N=n.length-1,w=r.length-1,T=n[N],y=r[w],E;for(;p<=N&&b<=w;){if(d===null){d=n[++p];continue}if(T===null){T=n[--N];continue}let v=d.key,k=S.key;if(v===k){o.call(d,S,t),r[b]=d,d=n[++p],S=r[++b];continue}let D=T.key,O=y.key;if(D===O){o.call(T,y,t),r[w]=T,T=n[--N],y=r[--w];continue}if(v===O){o.call(d,y,t),r[w]=d;let R=r[w+1];h.call(d,R,u),d=n[++p],y=r[--w];continue}if(D===k){o.call(T,S,t),r[b]=T;let R=n[p];h.call(T,R,u),T=n[--N],S=r[++b];continue}E=E||Di(n,p,N);let C=E[k];if(C===void 0)s.call(S,m,a.call(d)||null);else{let R=n[C];h.call(R,d,null),o.call(R,S,t),r[b]=R,n[C]=null}S=r[++b]}if(p<=N||b<=w)if(p>N){let v=r[w+1],k=v?a.call(v)||null:u;for(let D=b;D<=w;D++)s.call(r[D],m,k)}else for(let v=p;v<=N;v++){let k=n[v];k&&(t&&c.call(k),l.call(k))}}beforeRemove(){let e=this.children,t=e.length;if(t){let n=e[0].beforeRemove;for(let r=0;r<t;r++)n.call(e[r])}}remove(){let{parentEl:e,anchor:t}=this;if(this.isOnlyChild)Kt.call(e,"");else{let n=this.children,r=n.length;if(r){let i=n[0].remove;for(let s=0;s<r;s++)i.call(n[s])}Xn.call(e,t)}}firstNode(){let e=this.children[0];return e?e.firstNode():void 0}toString(){return this.children.map(e=>e.toString()).join("")}};function Yn(e){return new Ai(e)}function Di(e,t,n){let r={};for(let i=t;i<=n;i++)r[e[i].key]=i;return r}var ge,Zn;if(typeof Node<"u"){let e=Node.prototype;ge=e.insertBefore,Zn=e.removeChild}var _i=class{html;parentEl;content=[];constructor(e){this.html=e}mount(e,t){this.parentEl=e;let n=document.createElement("template");n.innerHTML=this.html,this.content=[...n.content.childNodes];for(let r of this.content)ge.call(e,r,t);if(!this.content.length){let r=document.createTextNode("");this.content.push(r),ge.call(e,r,t)}}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;for(let n of this.content)ge.call(t,n,e)}moveBeforeVNode(e,t){let n=e?e.content[0]:t;this.moveBeforeDOMNode(n)}patch(e){if(this===e)return;let t=e.html;if(this.html!==t){let n=this.parentEl,r=this.content[0],i=document.createElement("template");i.innerHTML=t;let s=[...i.content.childNodes];for(let o of s)ge.call(n,o,r);if(!s.length){let o=document.createTextNode("");s.push(o),ge.call(n,o,r)}this.remove(),this.content=s,this.html=e.html}}beforeRemove(){}remove(){let e=this.parentEl;for(let t of this.content)Zn.call(e,t)}firstNode(){return this.content[0]}toString(){return this.html}};function Ht(e){return new _i(e)}function Oi(e){let t=Object.keys(e).length;class n{child;handlerData;handlerFns=[];parentEl;afterNode=null;constructor(i,s){this.child=i,this.handlerData=s}mount(i,s){this.parentEl=i,this.child.mount(i,s),this.afterNode=document.createTextNode(""),i.insertBefore(this.afterNode,s),this.wrapHandlerData();for(let o in e){let l=e[o],c=Bn(o);this.handlerFns[l]=c,c.setup.call(i,this.handlerData[l])}}wrapHandlerData(){for(let i=0;i<t;i++){let s=this.handlerData[i],o=s.length-2,l=s[o],c=this;s[o]=function(h,a){let u=a.target,f=c.child.firstNode(),m=c.afterNode;for(;f&&f!==m;){if(f.contains(u))return l(h,a);f=f.nextSibling}}}}moveBeforeDOMNode(i,s=this.parentEl){this.parentEl=s,this.child.moveBeforeDOMNode(i,s),s.insertBefore(this.afterNode,i)}moveBeforeVNode(i,s){i&&(s=i.firstNode()||s),this.child.moveBeforeVNode(i?i.child:null,s),this.parentEl.insertBefore(this.afterNode,s)}patch(i,s){if(this!==i){this.handlerData=i.handlerData,this.wrapHandlerData();for(let o=0;o<t;o++)this.handlerFns[o].update.call(this.parentEl,this.handlerData[o]);this.child.patch(i.child,s)}}beforeRemove(){this.child.beforeRemove()}remove(){for(let i=0;i<t;i++)this.handlerFns[i].remove.call(this.parentEl);this.child.remove(),this.afterNode.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}}return function(r,i){return new n(r,i)}}function et(e,t,n=null){e.mount(t,n)}function xi(e,t,n=!1){e.patch(t,n)}function Ri(e,t=!1){t&&e.beforeRemove(),e.remove()}function Mi(e){switch(e.__owl__.status){case A.NEW:return"new";case A.CANCELLED:return"cancelled";case A.MOUNTED:return e instanceof qe?"started":"mounted";case A.DESTROYED:return"destroyed"}}function Ii(e,t){let n=e.fiber;return n&&(Gt(n.children),n.root=null),new ot(e,t)}function Pi(e){let t=e.fiber;if(t){let r=t.root;return r.locked=!0,r.setCounter(r.counter+1-Gt(t.children)),r.locked=!1,t.children=[],t.childrenMap={},t.bdom=null,Q.has(t)&&(Q.delete(t),Q.delete(r),t.appliedToDom=!1,t instanceof it&&(t.mounted=t instanceof Jn?[t]:[])),t}let n=new it(e,null);return e.willPatch.length&&n.willPatch.push(n),e.patched.length&&n.patched.push(n),n}function Li(){throw new g("Attempted to render cancelled fiber")}function Gt(e){let t=0;for(let n of e){let r=n.node;n.render=Li,r.status===A.NEW&&r.cancel(),r.fiber=null,n.bdom?r.forceNextRender=!0:(t++,r.bdom&&(r.forceNextRender=!0)),t+=Gt(n.children)}return t}var ot=class{node;bdom=null;root;parent;children=[];appliedToDom=!1;deep=!1;childrenMap={};constructor(e,t){if(this.node=e,this.parent=t,t){this.deep=t.deep;let n=t.root;n.setCounter(n.counter+1),this.root=n,t.children.push(this)}else this.root=this}render(){let e=this.root.node.app.scheduler;if(e.tasks.size>1){let r=this.root.node,i=r.parent;for(;i;){if(i.fiber){let s=i.fiber.root;if(s.counter===0&&r.parentKey in i.fiber.childrenMap)i=s.node;else{e.delayedRenders.push(this);return}}r=i,i=i.parent}}let t=this.node,n=this.root;if(n){let r=z();Se(t.signalComputation),P(t.signalComputation),t.signalComputation.state=$e.EXECUTED;try{this.bdom=!0,this.bdom=t.renderFn()}catch(s){ve({node:t,error:s})}finally{P(r)}let i=n.counter-1;n.counter=i,i===0&&e.flush()}}},it=class extends ot{counter=1;willPatch=[];patched=[];mounted=[];locked=!1;complete(){let e=this.node;this.locked=!0;let t,n=this.mounted;try{for(t of this.willPatch){let i=t.node;if(i.fiber===t){let s=i.component;for(let o of i.willPatch)o.call(s)}}for(t=void 0,e._patch(),this.locked=!1;t=n.pop();)if(t=t,t.appliedToDom)for(let i of t.node.mounted)i();let r=this.patched;for(;t=r.pop();)if(t=t,t.appliedToDom)for(let i of t.node.patched)i()}catch(r){for(let i of n)i.node.willUnmount=[];this.locked=!1,ve({fiber:t||this,error:r})}}setCounter(e){this.counter=e,e===0&&this.node.app.scheduler.flush()}},Jn=class extends it{target;position;afterNode=null;prepared=!1;onPrepared=null;constructor(e,t,n={}){super(e,null),this.target=t,this.position=n.position||"last-child",this.afterNode=n.afterNode??null}complete(){this.prepared=!0,this.target?this._mount():(this.appliedToDom=!0,this.onPrepared?.())}commit(e,t={}){this.target=e,this.position=t.position||"last-child",this.afterNode=t.afterNode??null,this.prepared&&this._mount()}_mount(){let e=this;try{let t=this.node;if(t.children=this.childrenMap,t.app.constructor.validateTarget(this.target),t.bdom)t.updateDom();else if(t.bdom=this.bdom,this.afterNode)et(t.bdom,this.target,this.afterNode);else if(this.position==="last-child"||this.target.childNodes.length===0)et(t.bdom,this.target);else{let r=this.target.childNodes[0];et(t.bdom,this.target,r)}t.fiber=null,t.status=A.MOUNTED,this.appliedToDom=!0;let n=this.mounted;for(;e=n.pop();)if(e.appliedToDom)for(let r of e.node.mounted)r()}catch(t){ve({fiber:e,error:t})}}},Ie=class extends ke{fiber=null;component;bdom=null;componentName;forceNextRender=!1;parentKey;props;defaultProps=null;renderFn;parent;children=Object.create(null);willUpdateProps=[];propsUpdated=[];willUnmount=[];mounted=[];willPatch=[];patched=[];signalComputation;trackedRefs=null;constructor(e,t,n,r,i){super(n),this.parent=r,this.parentKey=i,this.pluginManager=r?r.pluginManager:n.pluginManager,this.componentName=e.name,this.signalComputation=Ke(()=>this.render(!1),!1,$e.EXECUTED),this.props=t;let s=z();P(void 0),H.push(this);try{this.component=new e(this);let o={this:this.component,__owl__:this};this.renderFn=n.getTemplate(e.template).bind(this.component,o,this),this.component.setup()}finally{H.pop(),P(s)}}decorate(e,t){let n=this.component,r=this;if(this.app.dev){let i=`${this.componentName}.${t}`;return{[i](...o){return e.call(n,r,...o)}}[i]}return e.bind(n,r)}async initiateRender(e){this.fiber=e,this.mounted.length&&e.root.mounted.push(e);let t=this.component,n=z();P(void 0);try{let r=this.willStart.map(i=>i.call(t));P(n),await Promise.all(r)}catch(r){if(Ve(r)&&this.status>A.MOUNTED)return;ve({node:this,error:r});return}this.status===A.NEW&&this.fiber===e&&e.render()}async render(e){if(this.status>=A.CANCELLED)return;let t=this.fiber;if(t&&(t.root.locked||t.bdom===!0)&&(await Promise.resolve(),t=this.fiber),t){if(!t.bdom&&!Q.has(t)){e&&(t.deep=e);return}e=e||t.deep}else if(!this.bdom)return;let n=Pi(this);n.deep=e,this.fiber=n,this.app.scheduler.addFiber(n),await Promise.resolve(),!(this.status>=A.CANCELLED)&&this.fiber===n&&(t||!n.parent)&&n.render()}cancel(){this._cancel(),delete this.parent.children[this.parentKey],this.app.scheduler.scheduleDestroy(this)}_cancel(){super.cancel();let e=this.children;for(let t in e)e[t]._cancel()}destroy(){let e=this.status===A.MOUNTED;J++;try{this._destroy()}finally{J--}e&&(this.bdom.remove(),xt())}_destroy(){let e=this.component;if(this.status===A.MOUNTED)for(let t of this.willUnmount)t.call(e);J&&this.trackedRefs&&(tt||=[]).push(this);for(let t in this.children)this.children[t]._destroy();this.finalize(t=>ve({error:t,node:this})),ze(this.signalComputation)}sweepRefs(){let e=this.trackedRefs;if(e)for(let[t,n]of e){let r=n.value;r?r.isConnected||(t.set(null),e.delete(t)):e.delete(t)}}updateDom(){if(this.fiber)if(this.bdom===this.fiber.bdom)for(let e in this.children)this.children[e].updateDom();else{J++;try{this.bdom.patch(this.fiber.bdom,!1)}finally{J--}this.sweepRefs(),xt(),this.fiber.appliedToDom=!0,this.fiber=null}}firstNode(){let e=this.bdom;return e?e.firstNode():void 0}mount(e,t){let n=this.fiber.bdom;this.bdom=n,n.mount(e,t),this.status=A.MOUNTED,this.fiber.appliedToDom=!0,this.children=this.fiber.childrenMap,this.fiber=null}moveBeforeDOMNode(e,t){this.bdom.moveBeforeDOMNode(e,t)}moveBeforeVNode(e,t){this.bdom.moveBeforeVNode(e?e.bdom:null,t)}trackRef(e,t){(this.trackedRefs||=new Map).set(e,t)}patch(){this.fiber&&this.fiber.parent&&this._patch()}_patch(){let e=!1;for(let n in this.children){e=!0;break}let t=this.fiber;this.children=t.childrenMap,J++;try{this.bdom.patch(t.bdom,e)}finally{J--}this.sweepRefs(),xt(),t.appliedToDom=!0,this.fiber=null}beforeRemove(){this._destroy()}remove(){this.bdom.remove()}},J=0,tt=null;function xt(){if(J===0&&tt){let e=tt;tt=null;for(let t=0;t<e.length;t++)e[t].sweepRefs()}}function G(){let e=K();if(!(e instanceof Ie))throw new g("Expected to be in a component scope");return e}var Qn;typeof window<"u"&&(Qn=window.requestAnimationFrame.bind(window));var Bi=class er{static requestAnimationFrame=Qn;tasks=new Set;requestAnimationFrame;frame=0;delayedRenders=[];cancelledNodes=new Set;processing=!1;constructor(){this.requestAnimationFrame=er.requestAnimationFrame,this.processTasks=this.processTasks.bind(this)}addFiber(t){this.tasks.add(t.root)}scheduleDestroy(t){this.cancelledNodes.add(t),this.frame===0&&(this.frame=this.requestAnimationFrame(this.processTasks))}flush(){if(this.delayedRenders.length){let t=this.delayedRenders;this.delayedRenders=[];for(let n of t)n.root&&n.node.status!==A.DESTROYED&&n.node.fiber===n&&n.render()}this.frame===0&&(this.frame=this.requestAnimationFrame(this.processTasks))}processTasks(){if(!this.processing){this.processing=!0,this.frame=0;for(let t of this.cancelledNodes)t._destroy();this.cancelledNodes.clear();for(let t of this.tasks){if(t.root!==t){this.tasks.delete(t);continue}let n=Q.has(t);if(n&&t.counter!==0){this.tasks.delete(t);continue}if(t.node.status===A.DESTROYED){this.tasks.delete(t);continue}t.counter===0&&(n||t.complete(),t.appliedToDom&&this.tasks.delete(t))}for(let t of this.tasks)t.node.status===A.DESTROYED&&this.tasks.delete(t);this.processing=!1}}},ee=class{static template="";__owl__;constructor(e){this.__owl__=e}setup(){}},ji=Object.create;function Vi(e,t){return e==null||e===!1?t:e}function Fi(e,t,n,r,i,s,o){n=n+"__slot_"+r;let l=e.__owl__.props.slots||{},{__render:c,__ctx:h,__scope:a}=l[r]||{},u=ji(h||{});a&&(u[a]=s);let f=c?c(u,t,n):null;if(o){let m,p;return f?m=i?ae(r,f):f:p=o(e,t,n),Ut([m,p])}return f||Me("")}function Ki(e,t){return e.key=t,e}function Wi(e){let t,n;if(Array.isArray(e))t=e,n=e;else if(e instanceof Map)t=[...e.keys()],n=[...e.values()];else if(Symbol.iterator in Object(e))t=[...e],n=t;else if(e&&typeof e=="object")n=Object.values(e),t=Object.keys(e);else throw new g(`Invalid loop expression: "${e}" is not iterable`);let r=n.length;return[t,n,r,new Array(r)]}function Ui(e){let t=parseFloat(e);return isNaN(t)?e:t}function zi(e,t){for(let n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!1;return!0}var tr=class{fn;ctx;component;node;key;constructor(e,t,n,r,i){this.fn=e,this.ctx=t,this.component=n,this.node=r,this.key=i}evaluate(){return this.fn.call(this.component,this.ctx,this.node,this.key)}toString(){return this.evaluate().toString()}};function Hi(e,t){if(e==null)return t?ae("default",t):ae("undefined",Me(""));let n,r;return e instanceof Ee?(n="string_safe",r=Ht(e)):e instanceof tr?(n="lazy_value",r=e.evaluate()):(n="string_unsafe",r=Me(e)),ae(n,r)}function Gi(e,t){if(!e)throw new g("Ref is undefined or null");let n,r;if(e.add&&e.delete)n=e.add.bind(e),r=e.delete.bind(e);else if(e.set){n=e.set.bind(e);let i=e[ie];r=i?s=>{i.value===s&&e.set(null)}:()=>e.set(null),i&&t.trackRef(e,i)}else throw new g("Ref should implement either a 'set' function or 'add' and 'delete' functions");return(i,s)=>{s&&r(s),i&&n(i)}}function qi(e,t,n){if(typeof e!="function")throw new g(`Invalid handler expression: the \`t-on\` expression should evaluate to a function, but got '${typeof e}'. Did you mean to use an arrow function? (e.g. \`t-on-click="() => expr"\`)`);e.call(t.this,n)}var _n=new WeakMap;function Xi(e,t,n){let r=_n.get(e);r||(r=new Map,_n.set(e,r));let i=r.get(t);if(i)return i.set(n),i.readonly;let s=x(n);return s.readonly=se(s),r.set(t,s),s.readonly}function Yi(e){if(typeof e!="function"||typeof e.set!="function")throw new g("Invalid t-model expression: expression should evaluate to a function with a 'set' method defined on it");return e}function Zi(e,t,n,r,i,s){let o=!n,l,c=s.length===0;r?l=(a,u)=>!0:i?l=function(a,u){for(let f in a)if(a[f]!==u[f])return!0;return Object.keys(a).length!==Object.keys(u).length}:c?l=(a,u)=>!1:l=function(a,u){for(let f of s)if(a[f]!==u[f])return!0;return!1};let h=Ie.prototype.initiateRender;return(a,u,f,m,p)=>{let b=f.children,d=b[u];o&&d&&d.component.constructor!==p&&(d=void 0);let S=f.fiber;if(d){if(l(d.props,a)||S.deep||d.forceNextRender){d.forceNextRender=!1;let N=d.willUpdateProps,w=Ii(d,S);d.fiber=w;let T=S.root;d.willPatch.length&&T.willPatch.push(w),d.patched.length&&T.patched.push(w);let y;if(N.length){let E=a,v=d.defaultProps;if(v){E=Object.assign({},a);for(let O in v)E[O]===void 0&&(E[O]=v[O])}let k=d.component,D=z();P(void 0);for(let O of N){let C=O.call(k,E);C&&typeof C.then=="function"&&(y||=[]).push(C)}P(D)}if(y)(y.length===1?y[0]:Promise.all(y)).then(()=>{if(w===d.fiber){d.props=a;for(let v of d.propsUpdated)v();w.render()}},v=>{ve({node:d,error:v})});else{d.props=a;for(let E of d.propsUpdated)E();w.render()}}}else{if(n){let w=m.constructor.components;if(!w)throw new g(`Cannot find the definition of component "${t}", missing static components key in parent`);if(p=w[t],p){if(!(p.prototype instanceof ee))throw new g(`"${t}" is not a Component. It must inherit from the Component class`)}else throw new g(`Cannot find the definition of component "${t}"`)}d=new Ie(p,a,e,f,u),b[u]=d;let N=new ot(d,S);d.willStart.length?h.call(d,N):(d.fiber=N,d.mounted.length&&N.root.mounted.push(N),N.render())}return S.childrenMap[u]=d,d}}function Ji(e,t,n,r,i,s){let o=n.getTemplate(e);return ae(e,o.call(t,r,i,s+e))}var Qi={withDefault:Vi,zero:Symbol("zero"),callSlot:Fi,withKey:Ki,prepareList:Wi,shallowEqual:zi,toNumber:Ui,LazyValue:tr,safeOutput:Hi,createCatcher:Oi,markRaw:He,OwlError:g,createRef:Gi,modelExpr:Yi,createComponent:Zi,callTemplate:Ji,callHandler:qi,toSignal:Xi},es={text:Me,createBlock:zn,list:Yn,multi:Ut,html:Ht,toggler:ae},Pe=class{static registerTemplate(e,t){st[e]=t}dev;rawTemplates=Object.create(st);templates={};getRawTemplate;translateFn;translatableAttributes;customDirectives;runtimeUtils;hasGlobalValues;constructor(e={}){if(this.dev=e.dev||!1,this.translateFn=e.translateFn,this.translatableAttributes=e.translatableAttributes,e.templates)if(e.templates instanceof Document||typeof e.templates=="string")this.addTemplates(e.templates);else for(let t in e.templates)this.addTemplate(t,e.templates[t]);this.getRawTemplate=e.getTemplate,this.customDirectives=e.customDirectives||{},this.runtimeUtils={...Qi,__globals__:e.globalValues||{}},this.hasGlobalValues=!!(e.globalValues&&Object.keys(e.globalValues).length)}addTemplate(e,t){if(e in this.rawTemplates){if(!this.dev)return;let n=this.rawTemplates[e];if(ts(n,t))return;throw new g(`Template ${e} already defined with different content`)}this.rawTemplates[e]=t}addTemplates(e){if(e){e=e instanceof Document?e:this._parseXML(e);for(let t of e.querySelectorAll("[t-name]")){let n=t.getAttribute("t-name");this.addTemplate(n,t)}}}getTemplate(e){let t=e;if(!(t in this.templates)){let n=this.getRawTemplate?.(e)||this.rawTemplates[e];if(n===void 0){let l="",c=oe();throw c instanceof Ie&&(l=` (for component "${c.componentName}")`),new g(`Missing template: "${e}"${l}`)}let i=typeof n=="function"&&!(n instanceof Element)?n:this._compileTemplate(e,n),s=this.templates;this.templates[t]=function(l,c){return s[t].call(this,l,c)};let o=i(this,es,this.runtimeUtils);this.templates[t]=o}return this.templates[t]}_compileTemplate(e,t){throw new g("Unable to compile a template. Please use owl full build instead")}_parseXML(e){throw new g("Unable to parse XML templates. Please use owl full build instead, or pass a Document instance.")}},st={};function te(...e){let t=`__template__${te.nextId++}`,n=String.raw(...e);return st[t]=n,t}te.nextId=1;function ts(e,t){if(e===t)return!0;if(typeof e=="function"!=(typeof t=="function"))return!1;let n=e instanceof Element?e.outerHTML:String(e),r=t instanceof Element?t.outerHTML:String(t);return n===r}var On=!1,nt=new Set;typeof window<"u"&&(window.__OWL_DEVTOOLS__||={apps:nt,Fiber:ot,RootFiber:it,toRaw:Y,proxy:Ce});var qt=class nr extends Pe{static validateTarget=fi;static apps=nt;static version=ri;name;scheduler=new Bi;roots=new Set;pluginManager;destroyed=!1;constructor(t={}){super(t),this.name=t.name||"",nt.add(this),this.pluginManager=new me(this,{config:t.config}),t.plugins?Xe(this.pluginManager,t.plugins):this.pluginManager.status=A.MOUNTED,t.test&&(this.dev=!0),this.dev&&!t.test&&!On&&(console.info("Owl is running in 'dev' mode."),On=!0)}createRoot(t,n={}){let r=n.props||{},i,s,o=new Promise((p,b)=>{i=p,s=b}),l,c=null;try{l=new Ie(t,r,this,null,null)}catch(p){c=p,s(p)}let h=null,a=null,u=()=>{if(a)return a;if(c)return Promise.reject(c);h=new Jn(l,null);let p=ce.get(l);if(p||(p=[],ce.set(l,p)),p.unshift((d,S)=>{let N=S();s(N)}),a=new Promise(d=>{h.onPrepared=()=>d()}),l.mounted.push(()=>{i(l.component),p.shift()}),this.scheduler.addFiber(h),this.pluginManager.status<A.MOUNTED&&l.willStart.unshift(()=>this.pluginManager.ready),l.willStart.length)l.initiateRender(h);else{l.fiber=h,l.mounted.length&&h.root.mounted.push(h);try{h.render()}catch(d){s(d)}}return a},m={node:l,promise:o,prepare:u,mount:(p,b)=>(c||(nr.validateTarget(p),u(),h.commit(p,b)),o),destroy:()=>{this.roots.delete(m),l?.destroy(),this.scheduler.processTasks()}};return this.roots.add(m),m}destroy(){for(let t of this.roots)t.destroy();this.pluginManager.destroy(),this.scheduler.processTasks(),nt.delete(this),this.destroyed=!0}_handleError(t){throw t}};async function ns(e,t,n={}){return new qt(n).createRoot(e,n).mount(t,n)}var rs=(e,t,n)=>{let{data:r,modifiers:i}=Mn(e);e=r;let s=!1;if(i.length){let o=!1,l=t.target===n;for(let c of i)switch(c){case"self":if(o=!0,l)continue;return s;case"prevent":(o&&l||!o)&&t.preventDefault();continue;case"stop":(o&&l||!o)&&t.stopPropagation(),s=!0;continue}}if(Object.hasOwnProperty.call(e,0)){let o=e[0];if(typeof o!="function")throw new g(`Invalid handler (expected a function, received: '${o}')`);let l=e[1]?e[1].__owl__:null;(!l||l.status===A.MOUNTED)&&o(e[1],t)}return s};function is(e){let t=G();function n(r,i){return e.call(this,i,r)}t.willUpdateProps.push(t.decorate(n,"onWillUpdateProps"))}function rr(e){let t=G();t.mounted.push(t.decorate(e,"onMounted"))}function ss(e){let t=G();t.willPatch.unshift(t.decorate(e,"onWillPatch"))}function os(e){let t=G();t.patched.push(t.decorate(e,"onPatched"))}function ls(e){let t=G();t.willUnmount.unshift(t.decorate(e,"onWillUnmount"))}function ir(e){let t=G(),n=ce.get(t);n||(n=[],ce.set(t,n)),n.push(e.bind(t.component))}function as(e,t){let n=G(),r=le(t),i=n.props[e];return n.app.dev&&(t!==void 0&&(!r||i!==void 0)&&W(i,t,`Invalid prop '${e}' in '${n.componentName}'`),n.willUpdateProps.push(s=>{if(s[e]!==n.props[e])throw new g(`Prop '${e}' changed in component '${n.componentName}'. Props declared with \`props.static()\` are static and should not change. If the prop is a signal, pass the same signal reference (its inner value may change).`)})),i===void 0&&r?r():i}function cs(){return $t(ee)}var j={...Ct,component:cs};function us(e){let t=G(),{app:n,componentName:r}=t,i=null;if(e&&!Array.isArray(e))for(let u in e){let f=le(e[u]);f&&((i||={})[u]=f())}i&&(t.defaultProps=Object.assign(t.defaultProps||{},i));function s(u,f){return u[f]===void 0&&i&&f in i?i[f]:u[f]}let o=Object.create(null),l=Object.create(null);function c(u){o[u]=x(s(t.props,u)),Reflect.defineProperty(l,u,{enumerable:!0,configurable:!0,get:o[u]})}function h(u){for(let f of u)c(f)}function a(u){for(let f of u)o[f].set(s(t.props,f))}if(e){let u=Array.isArray(e)?e:Object.keys(e);if(h(u),t.propsUpdated.push(()=>a(u)),n.dev){if(i){let m={};for(let p in e)p in i&&(m[p]=e[p]);W(i,j.object(m),`Invalid component default props (${r})`)}let f=j.object(e);W(t.props,f,`Invalid component props (${r})`),t.willUpdateProps.push(m=>{W(m,f,`Invalid component props (${r})`)})}}else{let u=m=>{let p=[];for(let b in m)b.charCodeAt(0)!==1&&p.push(b);return p},f=u(t.props);h(f),t.propsUpdated.push(()=>{let m=u(t.props),p=new Set(m);for(let b of f)p.has(b)||(Reflect.deleteProperty(l,b),delete o[b]);for(let b of m)b in o||c(b);a(m),f=m})}return l}var lt=Object.assign(us,{static:as}),fs=class extends ee{static template=te`
|
|
1
|
+
"use strict";var owl=(()=>{var ht=Object.defineProperty;var vr=Object.getOwnPropertyDescriptor;var yr=Object.getOwnPropertyNames;var wr=Object.prototype.hasOwnProperty;var Tr=(e,t)=>{for(var n in t)ht(e,n,{get:t[n],enumerable:!0})},Nr=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of yr(t))!wr.call(e,i)&&i!==n&&ht(e,i,{get:()=>t[i],enumerable:!(r=vr(t,i))||r.enumerable});return e};var Er=e=>Nr(ht({},"__esModule",{value:!0}),e);var ao={};Tr(ao,{App:()=>qt,Component:()=>ee,ErrorBoundary:()=>fs,EventBus:()=>Tn,OwlError:()=>g,Plugin:()=>qe,Portal:()=>ps,Registry:()=>mn,Resource:()=>gn,Scope:()=>Ce,Suspense:()=>bs,TemplateSet:()=>Pe,__info__:()=>ws,applyDefaults:()=>hn,assertType:()=>W,asyncComputed:()=>ln,batched:()=>vt,blockDom:()=>ys,computed:()=>se,config:()=>wn,effect:()=>Ae,getDefault:()=>le,getScope:()=>oe,globalTemplates:()=>st,htmlEscape:()=>At,markRaw:()=>He,markup:()=>Ne,mount:()=>ns,onError:()=>ir,onMounted:()=>rr,onPatched:()=>os,onWillDestroy:()=>Z,onWillPatch:()=>ss,onWillStart:()=>Ye,onWillUnmount:()=>ls,onWillUpdateProps:()=>is,plugin:()=>yn,props:()=>lt,providePlugins:()=>vs,proxy:()=>ke,signal:()=>x,status:()=>Mi,t:()=>j,toRaw:()=>Y,types:()=>j,untrack:()=>wt,useApp:()=>hs,useEffect:()=>De,useListener:()=>bn,useScope:()=>K,validateType:()=>Nt,whenReady:()=>hi,xml:()=>te});var g=class extends Error{cause},A={NEW:0,MOUNTED:1,CANCELLED:2,DESTROYED:3};function vt(e){let t=!1;return function(...r){t||(t=!0,Promise.resolve().then(()=>{t=!1,e(...r)}))}}var $e=(e=>(e[e.EXECUTED=0]="EXECUTED",e[e.STALE=1]="STALE",e[e.PENDING=2]="PENDING",e))($e||{}),ie=Symbol("Atom"),je=[],V;function Ke(e,t,n=1){return{state:n,value:void 0,compute:e,sources:new Set,observers:new Set,isDerived:t}}function yt(e){V&&(V.sources.add(e),e.observers.add(V))}function We(e){for(let t of e.observers)t.state===0&&(t.isDerived?Cr(t):je.push(t)),t.state=1;$r()}var $r=vt(Sr);function Sr(){let e=je;je=[];for(let t=0;t<e.length;t++)Ue(e[t])}function z(){return V}function P(e){V=e}function Ue(e){let t=e.state;if(t===0)return;if(t===2){for(let r of e.sources)if("compute"in r&&(Ue(r),e.state===1))break;if(e.state!==1){e.state=0;return}}Se(e);let n=V;V=e;try{e.value=e.compute(),e.state=0}finally{V=n}}function Se(e){let t=e.sources;for(let n of t)n.observers.delete(e);t.clear()}function ze(e){let t=e.sources;for(let n of t){n.observers.delete(e);let r=n;r.isDerived&&r.observers.size===0&&ze(r)}t.clear(),e.state=1}function Cr(e){let t=[e],n;for(;n=t.pop();)for(let r of n.observers)r.state||(r.state=2,r.isDerived?t.push(r):je.push(r))}function wt(e){let t=V;V=void 0;let n;try{n=e()}finally{V=t}return n}var H=[];function K(){let e=oe();if(!e)throw new g("No active scope");return e}var Ce=class{app;pluginManager;status=A.NEW;computations=[];willStart=[];_controller=null;_destroyCbs=null;constructor(e){this.app=e,this.pluginManager=e.pluginManager}run(e){H.push(this);try{return e()}finally{H.pop()}}get abortSignal(){return this.status>A.MOUNTED?(this._controller||(this._controller=new AbortController,this._controller.abort()),this._controller.signal):(this._controller??=new AbortController).signal}async until(e){if(this.status>A.MOUNTED)throw en();let t=await e;if(this.status>A.MOUNTED)throw en();return t}onDestroy(e){if(this.status>=A.DESTROYED){e();return}(this._destroyCbs??=[]).push(e)}cancel(){this.status>A.MOUNTED||(this.status=A.CANCELLED,this._controller?.abort())}finalize(e){if(this.status>=A.DESTROYED)return;this._controller&&!this._controller.signal.aborted&&this._controller.abort();let t=this._destroyCbs;if(t){this._destroyCbs=null;for(let n=t.length-1;n>=0;n--)try{t[n]()}catch(r){e(r)}}for(let n of this.computations)ze(n);this.status=A.DESTROYED}decorate(e,t){return e.bind(void 0,this)}};function oe(){let e=H.length;return e?H[e-1]:null}function Ve(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function en(){let e=new Error("The operation was aborted");return e.name="AbortError",e}var U=Symbol("Key changes"),kr=Object.prototype.toString,pt=Object.prototype.hasOwnProperty;function Tt(e){if(typeof e!="object"||e===null)return!1;let t=Y(e);return Array.isArray(t)||t instanceof Set||t instanceof Map||t instanceof WeakMap?!0:kr.call(t)==="[object Object]"}function he(e,t){return!t&&Tt(e)?ke(e):e}var sn=new WeakSet;function He(e){return sn.add(e),e}function Y(e){return Fe.has(e)?Fe.get(e):e}var mt=new WeakMap;function Ar(e,t){let n=mt.get(e);n||(n=new Map,mt.set(e,n));let r=n.get(t);return r||(r={value:void 0,observers:new Set},n.set(t,r)),r}function F(e,t,n){yt(n??Ar(e,t))}function X(e,t,n){if(!n){let r=mt.get(e);if(!r||!r.has(t))return;n=r.get(t)}We(n)}var Fe=new WeakMap,tn=new WeakMap;function de(e,t){if(!Tt(e))throw new g("Cannot make the given value reactive");if(sn.has(e)||Fe.has(e))return e;let n=tn.get(e);if(n)return n;let r;e instanceof Map?r=dt(e,"Map",t):e instanceof Set?r=dt(e,"Set",t):e instanceof WeakMap?r=dt(e,"WeakMap",t):r=on(t);let i=new Proxy(e,r);return tn.set(e,i),Fe.set(i,e),i}function ke(e){return de(e,null)}function on(e){return{get(t,n,r){F(t,n,e);let i=Reflect.get(t,n,r);if(e||typeof i!="object"||i===null||!Tt(i))return i;let s=Object.getOwnPropertyDescriptor(t,n);return s&&!s.writable&&!s.configurable?i:de(i,null)},set(t,n,r,i){let s=pt.call(t,n),o=Reflect.get(t,n,i),l=Reflect.set(t,n,Y(r),i);return!s&&pt.call(t,n)&&X(t,U,e),(o!==Reflect.get(t,n,i)||n==="length"&&Array.isArray(t))&&X(t,n,e),l},deleteProperty(t,n){let r=Reflect.deleteProperty(t,n);return X(t,U,e),X(t,n,e),r},ownKeys(t){return F(t,U,e),Reflect.ownKeys(t)},has(t,n){return F(t,U,e),Reflect.has(t,n)}}}function Te(e,t,n){return r=>(r=Y(r),F(t,r,n),he(t[e](r),n))}function q(e,t,n){return function*(){F(t,U,n);let r=t.keys();for(let i of t[e]()){let s=r.next().value;F(t,s,n),yield he(i,n)}}}function nn(e,t){return function(r,i){F(e,U,t),e.forEach(function(s,o,l){F(e,o,t),r.call(i,he(s,t),he(o,t),he(l,t))},i)}}function fe(e,t,n,r){return(i,s)=>{i=Y(i);let o=n.has(i),l=n[t](i),c=n[e](i,s),h=n.has(i);return o!==h&&X(n,U,r),l!==n[t](i)&&X(n,i,r),c}}function rn(e,t){return()=>{let n=[...e.keys()];e.clear(),X(e,U,t);for(let r of n)X(e,r,t)}}var Dr={Set:(e,t)=>({has:Te("has",e,t),add:fe("add","has",e,t),delete:fe("delete","has",e,t),keys:q("keys",e,t),values:q("values",e,t),entries:q("entries",e,t),[Symbol.iterator]:q(Symbol.iterator,e,t),forEach:nn(e,t),clear:rn(e,t),get size(){return F(e,U,t),e.size}}),Map:(e,t)=>({has:Te("has",e,t),get:Te("get",e,t),set:fe("set","get",e,t),delete:fe("delete","has",e,t),keys:q("keys",e,t),values:q("values",e,t),entries:q("entries",e,t),[Symbol.iterator]:q(Symbol.iterator,e,t),forEach:nn(e,t),clear:rn(e,t),get size(){return F(e,U,t),e.size}}),WeakMap:(e,t)=>({has:Te("has",e,t),get:Te("get",e,t),set:fe("set","get",e,t),delete:fe("delete","has",e,t)})};function dt(e,t,n){let r=Dr[t](e,n);return Object.assign(on(n),{get(i,s){return pt.call(r,s)?r[s]:(F(i,s,n),he(i[s],n))}})}function pe(e,t){let n={type:"signal",value:e,observers:new Set},r=t(n),i=()=>(yt(n),r);return i[ie]=n,i.set=function(o){Object.is(n.value,o)||(n.value=o,r=t(n),We(n))},i}function _r(e){if(typeof e!="function"||e[ie]?.type!=="signal")throw new g(`Value is not a signal (${e})`);We(e[ie])}function Or(){return pe(null,e=>e.value)}function xr(e){return pe(e,t=>de(t.value,t))}function Rr(e){return pe(e,t=>de(t.value,t))}function Mr(e){return pe(e,t=>de(t.value,t))}function Ir(e){return pe(e,t=>de(t.value,t))}function x(e){return pe(e,t=>t.value)}x.trigger=_r;x.ref=Or;x.Array=xr;x.Map=Mr;x.Object=Rr;x.Set=Ir;function Pr(){throw new g("Cannot write to a read-only computed value. Pass a `set` option to make it writable.")}function se(e,t={}){let n=Ke(()=>{let i=e();return Object.is(n.value,i)||We(n),i},!0);function r(){return n.state!==0&&Ue(n),yt(n),n.value}return r[ie]=n,r.set=t.set??Pr,oe()?.computations.push(n),r}function Ae(e){let t=Ke(()=>(t.value||t.observers.size?(P(void 0),gt(t),P(t)):Se(t),e()),!1);return z()?.observers.add(t),Ue(t),function(){t.state=0;let r=z();P(void 0),gt(t),P(r)}}function gt(e){Se(e),Lr(e);for(let t of e.observers)t.state=0,gt(t);e.observers.clear()}function Lr(e){let t=e.value;t&&typeof t=="function"&&(t(),e.value=void 0)}function ln(e,t={}){let n=x(t.initial),r=x(!1),i=x(null),s=x(0),o=oe(),l=0,c=null,h=!1,a=null;function u(){r.set(!0),h=!0}function f(){r.set(!1),h=!1,a?.resolve(),a=null}let m=Ae(()=>{s();let d=++l;c&&c.abort();let S=new AbortController;c=S;let N=[S.signal];o?.abortSignal&&N.push(o.abortSignal),u(),i.set(null);let w;try{w=e({abortSignal:AbortSignal.any(N)})}catch(T){if(d!==l)return;if(Ve(T)){f();return}i.set(T),f();return}w.then(T=>{d===l&&(n.set(T),f())},T=>{if(d===l){if(Ve(T)){f();return}i.set(T),f()}})});function p(){m(),c?.abort(),c=null,h=!1,a?.resolve(),a=null}o?.onDestroy(p);let b=(()=>n());return b.loading=()=>r(),b.error=()=>i(),b.refresh=()=>s.set(s()+1),b.dispose=p,b.currentPromise=()=>{if(!h)return Promise.resolve();if(!a){let d;a={promise:new Promise(S=>d=S),resolve:d}}return a.promise},b}function Br(e,t,n){if(typeof n=="function")return n.name||"[Function]";if(n&&typeof n=="object"){let r=n.constructor;if(r&&r!==Object&&r!==Array)return`[Instance of ${r.name||"anonymous"}]`;if(e.includes(n))return"[Known object]";e.push(n)}return n}function W(e,t,n="Value does not match the type"){let r=Nt(e,t);if(r.length){let i=[],s=JSON.stringify(r,Br.bind(null,i),2);throw new g(`${n}
|
|
2
|
+
${s}`)}}function bt(e,t,n,r,i=1){return{issueDepth:0,path:n,value:t,get isValid(){return!e.length},addIssue(s){e.push({received:this.value,path:this.path.join(" > "),...s})},mergeIssues(s){e.push(...s)},validate(s){s(this),!this.isValid&&r&&(r.issueDepth=this.issueDepth+i)},withIssues(s){return bt(s,this.value,this.path,this,0)},withKey(s){return bt(e,this.value[s],this.path.concat(s),this)}}}function Nt(e,t){let n=[];return t(bt(n,e,[])),n}var Et=Symbol("default"),an=Symbol("innerType"),Ge=Symbol("shape"),cn=Symbol("elementType"),un=Symbol("optional"),fn=Symbol("intersection");function le(e){return typeof e=="function"?e[Et]:void 0}function jr(e,t){let n=function(i){i.value!==void 0&&i.validate(e)};return n[un]=!0,n[an]=e,t!==void 0&&(n[Et]=typeof t=="function"?t:()=>t),n}function Vr(e){return typeof e=="function"&&un in e}function M(e){return e.optional=t=>jr(e,t),e}function hn(e,t){return Be(e,t)}function Be(e,t){if(typeof t!="function")return e;if(e===void 0){let l=t[Et];if(!l)return e;e=l()}let n=t[an]||t;if(typeof n!="function"||!e||typeof e!="object")return e;let r=n[fn];if(r){let l=e;for(let c of r)l=Be(l,c);return l}let i=n[cn];if(i&&Array.isArray(e)){let l=e;for(let c=0;c<e.length;c++){let h=Be(e[c],i);h!==e[c]&&(l===e&&(l=[...e]),l[c]=h)}return l}let s=n[Ge];if(!s)return e;let o=e;for(let l in s){let c=o[l],h=Be(c,s[l]);h!==c&&(o===e&&(o=Array.isArray(e)?[...e]:{...e}),o[l]=h)}return o}function Fr(){return M(function(){})}function Kr(){return M(function(t){typeof t.value!="boolean"&&t.addIssue({message:"value is not a boolean"})})}function Wr(){return M(function(t){typeof t.value!="number"&&t.addIssue({message:"value is not a number"})})}function Ur(){return M(function(t){typeof t.value!="string"&&!(t.value instanceof String)&&t.addIssue({message:"value is not a string"})})}function zr(e){let t=M(function(r){if(!Array.isArray(r.value)){r.addIssue({message:"value is not an array"});return}if(e)for(let i=0;i<r.value.length;i++)r.withKey(i).validate(e)});return e&&(t[cn]=e),t}function $t(e){return M(function(n){(typeof n.value!="function"||!(n.value===e||n.value.prototype instanceof e))&&n.addIssue({message:`value is not '${e.name}' or an extension`})})}function Hr(e,t,n="value does not match custom validation"){return M(function(i){i.validate(e),i.isValid&&(t(i.value)||i.addIssue({message:n}))})}function Gr(e=[],t=void 0){return M(function(r){typeof r.value!="function"&&r.addIssue({message:"value is not a function"})})}function dn(e){return M(function(n){n.value instanceof e||n.addIssue({message:`value is not an instance of '${e.name}'`})})}function qr(e){let t=M(function(r){for(let i of e)r.validate(i)});return t[fn]=e,t}function St(e){return M(function(n){n.value!==e&&n.addIssue({message:`value is not equal to ${typeof e=="string"?`'${e}'`:e}`})})}function Xr(e){return Ct(e.map(St))}function pn(e,t,n){if(typeof e.value!="object"||Array.isArray(e.value)||e.value===null){e.addIssue({message:"value is not an object"});return}if(!t)return;let r=!Array.isArray(t),i,s;if(r)s=Object.keys(t),i=t;else{s=t,i={};for(let l of s)i[l]=null}let o=[];for(let l of s){if(e.value[l]===void 0){Vr(i[l])||o.push(l);continue}r&&e.withKey(l).validate(i[l])}if(o.length&&e.addIssue({message:"object value has missing keys",missingKeys:o}),n){let l=[];for(let c in e.value)s.includes(c)||l.push(c);l.length&&e.addIssue({message:"object value has unknown keys",unknownKeys:l})}}function Yr(e={}){let t=M(function(r){pn(r,e,!1)});return Array.isArray(e)||(t[Ge]=e),t}function Zr(e){let t=M(function(r){pn(r,e,!0)});return Array.isArray(e)||(t[Ge]=e),t}function Jr(e){return M(function(n){n.value instanceof Promise||n.addIssue({message:"value is not a promise"})})}function Qr(e){return M(function(n){if(typeof n.value!="object"||Array.isArray(n.value)||n.value===null){n.addIssue({message:"value is not an object"});return}if(e)for(let r in n.value)n.withKey(r).validate(e)})}function ei(e){let t=M(function(r){if(!Array.isArray(r.value)){r.addIssue({message:"value is not an array"});return}if(r.value.length!==e.length){r.addIssue({message:"tuple value does not have the correct length"});return}for(let i=0;i<e.length;i++)r.withKey(i).validate(e[i])});return t[Ge]=e,t}function Ct(e){return M(function(n){let r=0,i=[];for(let s of e){let o=n.withIssues(i);if(o.validate(s),i.length===r||o.issueDepth>0){n.mergeIssues(i.slice(r));return}r=i.length}n.addIssue({message:"value does not match union type",subIssues:i})})}function ti(e){return M(function(n){(typeof n.value!="function"||!n.value[ie])&&n.addIssue({message:"value is not a reactive value"})})}function ni(e){if(typeof HTMLElement>"u")throw new Error("Cannot use ref in a non-DOM environment");return Ct([St(null),dn(e||HTMLElement)])}var kt={and:qr,any:Fr,array:zr,boolean:Kr,constructor:$t,customValidator:Hr,function:Gr,instanceOf:dn,literal:St,number:Wr,object:Yr,or:Ct,promise:Jr,record:Qr,ref:ni,selection:Xr,signal:ti,strictObject:Zr,string:Ur,tuple:ei},mn=class{_map=x.Object(Object.create(null));_name;_validation;constructor(e={}){this._name=e.name||"registry",this._validation=e.validation}entries=se(()=>Object.entries(this._map()).sort((t,n)=>t[1][0]-n[1][0]).map(([t,n])=>[t,n[1]]));items=se(()=>this.entries().map(e=>e[1]));addById(e,t={}){if(!e.id)throw new g(`Item should have an id key (registry '${this._name}')`);return this.add(e.id,e,t)}add(e,t,n={}){if(!n.force&&e in this._map())throw new g(`Key "${e}" is already registered (registry '${this._name}'). Use { force: true } to overwrite.`);if(this._validation){let r=this._name?` (registry '${this._name}', key: '${e}')`:` (key: '${e}')`;W(t,this._validation,`Registry entry does not match the type${r}`)}return this._map()[e]=[n.sequence??50,t],this}get(e,t){let n=e in this._map();if(!n&&arguments.length<2)throw new g(`Cannot find key "${e}" (registry '${this._name}')`);return n?this._map()[e][1]:t}delete(e){delete this._map()[e]}has(e){return e in this._map()}use(e,t,n={}){let r=K();return this.add(e,t,n),r.onDestroy(()=>{this._map()[e]?.[1]===t&&this.delete(e)}),this}useById(e,t={}){if(!e.id)throw new g(`Item should have an id key (registry '${this._name}')`);return this.use(e.id,e,t)}},gn=class{_items=x.Array([]);_name;_validation;constructor(e={}){this._name=e.name,this._validation=e.validation}items=se(()=>this._items().sort((e,t)=>e[0]-t[0]).map(e=>e[1]));add(e,t={}){if(this._validation){let n=this._name?` (resource '${this._name}')`:"";W(e,this._validation,`Resource item does not match the type${n}`)}return this._items().push([t.sequence??50,e]),this}delete(e){let t=this._items().filter(([n,r])=>r!==e);return this._items.set(t),this}has(e){return this._items().some(([t,n])=>n===e)}use(e,t={}){let n=K();return this.add(e,t),n.onDestroy(()=>this.delete(e)),this}},qe=class{static _shadowId;static get id(){return this._shadowId??this.name}static set id(e){this._shadowId=e}static sequence=50;__owl__;constructor(e){this.__owl__=e}setup(){}},me=class extends Ce{config;plugins;ready=Promise.resolve();hasPendingReady=!1;constructor(e,t={}){if(super(e),this.config=t.config??{},this.pluginManager=this,t.parent){let n=t.parent;n.onDestroy(()=>this.destroy()),this.plugins=Object.create(n.plugins)}else this.plugins={}}destroy(){this.finalize(e=>console.error(e))}getPluginById(e){return this.plugins[e]||null}getPlugin(e){return this.getPluginById(e.id)}startPlugin(e){if(!e.id)throw new g(`Plugin "${e.name}" has no id`);if(this.plugins.hasOwnProperty(e.id)){let n=this.getPluginById(e.id).constructor;if(n!==e)throw new g(`Trying to start a plugin with the same id as an other plugin (id: '${e.id}', existing plugin: '${n.name}', starting plugin: '${e.name}')`);return null}let t=new e(this);return this.plugins[e.id]=t,t.setup(),t}startPlugins(e){let t=e.filter(o=>!o.id||this.plugins.hasOwnProperty(o.id)?(this.startPlugin(o),!1):!0);if(!t.length)return;t.sort((o,l)=>o.sequence-l.sequence);let n=[];for(let o of t){let l=n[n.length-1];l&&l[0].sequence===o.sequence?l.push(o):n.push([o])}let r=o=>{H.push(this);try{for(let c of o)this.startPlugin(c)}finally{H.pop()}let l=this.willStart.splice(0);return l.length?Promise.all(l.map(c=>c())):null},i=this.hasPendingReady?this.ready:null;for(let o of n)i?i=i.then(()=>r(o)):i=r(o);if(!i){this.status<A.MOUNTED&&(this.status=A.MOUNTED);return}this.hasPendingReady=!0;let s=this.ready=i.then(()=>{this.status<A.MOUNTED&&(this.status=A.MOUNTED),this.ready===s&&(this.hasPendingReady=!1)})}};function Xe(e,t){Array.isArray(t)?e.startPlugins(t):e.onDestroy(Ae(()=>{let n=t.items();wt(()=>e.startPlugins(n))}))}function Ye(e){let t=K();t.willStart.push(t.decorate(e,"onWillStart"))}function Z(e){let t=K();t.onDestroy(t.decorate(e,"onWillDestroy"))}function De(e){Z(Ae(e))}function bn(e,t,n,r){typeof e=="function"?De(()=>{let i=e();if(i)return i.addEventListener(t,n,r),()=>i.removeEventListener(t,n,r)}):(e.addEventListener(t,n,r),Z(()=>e.removeEventListener(t,n,r)))}function vn(){return K().app}function yn(e){let t=K(),n=t.pluginManager.getPluginById(e.id);if(!n)if(t instanceof me)n=t.pluginManager.startPlugin(e);else throw new g(`Unknown plugin "${e.id}"`);return n}function wn(e,t){let n=K();if(!(n instanceof me))throw new g("Expected to be in a plugin scope");n.app.dev&&t&&W(n.config,kt.object({[e]:t}),"Config does not match the type");let r=n.config[e];return r===void 0?le(t)?.():r}var Tn=class extends EventTarget{trigger(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t}))}},Ee=class extends String{};function At(e){return e instanceof Ee?e:e===void 0?Ne(""):typeof e=="number"?Ne(String(e)):([["&","&"],["<","<"],[">",">"],["'","'"],['"',"""],["`","`"]].forEach(t=>{e=String(e).replace(new RegExp(t[0],"g"),t[1])}),Ne(e))}function Ne(e,...t){if(!Array.isArray(e))return new Ee(e);let n=e,r="",i=0;for(;i<t.length;++i)r+=n[i]+At(t[i]);return r+=n[i],new Ee(r)}var ri="3.0.0-alpha.40",Q=new WeakMap,ce=new WeakMap;function xn(e,t,n,r){for(;e;){r&&e.fiber&&Q.set(e.fiber,t);let i=ce.get(e);if(i)for(let s=i.length-1;s>=0;s--)try{return i[s](t,n),{handled:!0,error:t}}catch(o){t=o}e=e.parent}return{handled:!1,error:t}}function Rn(e){return(t,n)=>{if(e.app.destroyed)throw t;let{handled:r}=xn(e,t,n,!1);r||e.app._handleError(n())}}function ve(e){let{error:t}=e,n="node"in e?e.node:e.fiber.node,r="fiber"in e?e.fiber:n.fiber,i=n.app;if(i.destroyed)throw t;if(r){let l=r;do l.node.fiber=l,Q.set(l,t),l=l.parent;while(l);Q.set(r.root,t)}let s=()=>{try{i.destroy()}catch{}return t},o=xn(n,t,s,!0);o.handled||(t=o.error,i._handleError(s()))}function Mn(e){e=e.slice();let t=[],n;for(;(n=e[0])&&typeof n=="string";)t.push(e.shift());return{modifiers:t,data:e}}var ye={shouldNormalizeDom:!0,mainEventHandler:(e,t,n)=>(typeof e=="function"?e(t):Array.isArray(e)&&(e=Mn(e).data,e[0](e[1],t)),!1)},Nn=globalThis.document?.createTextNode(""),ii=class{key;child;parentEl;constructor(e,t){this.key=e,this.child=t}mount(e,t){this.parentEl=e,this.child.mount(e,t)}moveBeforeDOMNode(e,t){this.child.moveBeforeDOMNode(e,t)}moveBeforeVNode(e,t){this.moveBeforeDOMNode(e&&e.firstNode()||t)}patch(e,t){if(this===e)return;let n=this.child,r=e.child;if(this.key===e.key)n.patch(r,t);else{let i=n.firstNode();i.parentElement.insertBefore(Nn,i),t&&n.beforeRemove(),n.remove(),r.mount(this.parentEl,Nn),this.child=r,this.key=e.key}}beforeRemove(){this.child.beforeRemove()}remove(){this.child.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}};function ae(e,t){return new ii(e,t)}var Rt,Re,Wt,In;if(typeof Element<"u"){({setAttribute:Rt,removeAttribute:Re}=Element.prototype);let e=DOMTokenList.prototype;Wt=e.add,In=e.remove}var Pn=Array.isArray,{split:En,trim:Oe}=String.prototype,$n=/\s+/;function be(e,t){switch(t){case!1:case null:case void 0:Re.call(this,e);break;case!0:Rt.call(this,e,"");break;default:Rt.call(this,e,t)}}function si(e){return function(t){be.call(this,e,t)}}function oi(e){if(Pn(e))e[0]==="class"?Pt.call(this,e[1]):e[0]==="style"?Lt.call(this,e[1]):be.call(this,e[0],e[1]);else for(let t in e)t==="class"?Pt.call(this,e[t]):t==="style"?Lt.call(this,e[t]):be.call(this,t,e[t])}function li(e,t){if(Pn(e)){let n=e[0],r=e[1];if(n===t[0]){if(r===t[1])return;n==="class"?Ze.call(this,r,t[1]):n==="style"?Je.call(this,r,t[1]):be.call(this,n,r)}else Re.call(this,t[0]),be.call(this,n,r)}else{for(let n in t)n in e||(n==="class"?Ze.call(this,"",t[n]):n==="style"?Je.call(this,"",t[n]):Re.call(this,n));for(let n in e){let r=e[n];r!==t[n]&&(n==="class"?Ze.call(this,r,t[n]):n==="style"?Je.call(this,r,t[n]):be.call(this,n,r))}}}function Mt(e){let t={};switch(typeof e){case"string":let n=Oe.call(e);if(!n)return{};let r=En.call(n,$n);for(let i=0,s=r.length;i<s;i++)t[r[i]]=!0;return t;case"object":for(let i in e){let s=e[i];if(s){if(i=Oe.call(i),!i)continue;let o=En.call(i,$n);for(let l of o)t[l]=s}}return t;case"undefined":return{};case"number":return{[e]:!0};default:return{[e]:!0}}}var Dt={};function ai(e){if(e in Dt)return Dt[e];let t=e.replace(/[A-Z]/g,n=>"-"+n.toLowerCase());return Dt[e]=t,t}var Sn=/\s*!\s*important\s*$/i;function Ln(e,t,n){Sn.test(n)?e.setProperty(t,n.replace(Sn,""),"important"):e.setProperty(t,n)}function It(e){let t={};switch(typeof e){case"string":{let n=e,r=n.length,i=0;for(;i<r;){let s=i,o=0,l=0;for(;i<r;){let f=n.charCodeAt(i);if(l){if(f===92){i+=2;continue}f===l&&(l=0)}else if(f===34||f===39)l=f;else if(f===40)o++;else if(f===41)o>0&&o--;else if(f===59&&o===0)break;i++}let c=Oe.call(n.slice(s,i));if(i++,!c)continue;let h=c.indexOf(":");if(h===-1)continue;let a=Oe.call(c.slice(0,h)),u=Oe.call(c.slice(h+1));a&&u&&u!=="undefined"&&(t[a]=u)}return t}case"object":for(let n in e){let r=e[n];(r||r===0)&&(t[ai(n)]=String(r))}return t;default:return{}}}function Pt(e){e=e===""?{}:Mt(e);for(let t in e)Wt.call(this.classList,t)}function Ze(e,t){t=t===""?{}:Mt(t),e=e===""?{}:Mt(e);for(let n in t)n in e||In.call(this.classList,n);for(let n in e)e[n]!==t[n]&&Wt.call(this.classList,n)}function Lt(e){e=e===""?{}:It(e);let t=this.style;for(let n in e)Ln(t,n,e[n])}function Je(e,t){t=t===""?{}:It(t),e=e===""?{}:It(e);let n=this.style;for(let r in t)r in e||n.removeProperty(r);for(let r in e)e[r]!==t[r]&&Ln(n,r,e[r]);n.cssText||Re.call(this,"style")}function ci(e){if(!e)return!1;if(e.ownerDocument.contains(e))return!0;let t=e.getRootNode();return t instanceof ShadowRoot&&e.ownerDocument.contains(t.host)}function ui(e,t){let n=e,r=t.defaultView.ShadowRoot;for(;n;){if(n===t)return!0;if(n.parentNode)n=n.parentNode;else if(n instanceof r&&n.host)n=n.host;else return!1}return!1}function fi(e){let t=e&&e.ownerDocument;if(t){if(!t.defaultView)throw new g("Cannot mount a component: the target document is not attached to a window (defaultView is missing)");let n=t.defaultView.HTMLElement;if(e instanceof n||e instanceof ShadowRoot){if(!ui(e,t))throw new g("Cannot mount a component on a detached dom node");return}}throw new g("Cannot mount component: the target is not a valid DOM element")}function hi(e){return new Promise(function(t){document.readyState!=="loading"?t(!0):document.addEventListener("DOMContentLoaded",t,!1)}).then(e||function(){})}function Bn(e){let t=e.split(".")[0],n=e.includes(".capture"),r=e.includes(".passive");return e.includes(".synthetic")?gi(t,n,r):pi(t,n,r)}var di=1;function pi(e,t=!1,n=!1){let r=`__event__${e}_${di++}`;t&&(r=`${r}_capture`);function i(h){let a=h.currentTarget;if(!a||!ci(a))return;let u=a[r];u&&ye.mainEventHandler(u,h,a)}let s={capture:t,passive:n};function o(h){this[r]=h,this.addEventListener(e,i,s)}function l(){delete this[r],this.removeEventListener(e,i,s)}function c(h){this[r]=h}return{setup:o,update:c,remove:l}}var mi=1;function gi(e,t=!1,n=!1){let r=`__event__synthetic_${e}`;t&&(r=`${r}_capture`),vi(e,r,t,n);let i=mi++;function s(l){let c=this[r]||{};c[i]=l,this[r]=c}function o(){delete this[r]}return{setup:s,update:s,remove:o}}function bi(e,t){let n=t.target;for(;n!==null;){let r=n[e];if(r){for(let i of Object.values(r))if(ye.mainEventHandler(i,t,n))return}n=n.parentNode}}var Cn={};function vi(e,t,n=!1,r=!1){Cn[t]||(document.addEventListener(e,i=>bi(t,i),{capture:n,passive:r}),Cn[t]=!0)}var yi=(e,t)=>Object.getOwnPropertyDescriptor(e,t),_e,jn,Bt;if(typeof Node<"u"){let e=Node.prototype;_e=e.insertBefore,jn=yi(e,"textContent").set,Bt=e.removeChild}var Vn=class{children;anchors;parentEl;isOnlyChild;constructor(e){this.children=e}mount(e,t){let n=this.children,r=n.length,i=new Array(r);for(let s=0;s<r;s++){let o=n[s];if(o)o.mount(e,t);else{let l=document.createTextNode("");i[s]=l,_e.call(e,l,t)}}this.anchors=i,this.parentEl=e}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;let n=this.children,r=this.anchors;for(let i=0,s=n.length;i<s;i++){let o=n[i];if(o)o.moveBeforeDOMNode(e,t);else{let l=r[i];_e.call(t,l,e)}}}moveBeforeVNode(e,t){if(e){let s=e.children[0];t=(s?s.firstNode():e.anchors[0])||null}let n=this.children,r=this.parentEl,i=this.anchors;for(let s=0,o=n.length;s<o;s++){let l=n[s];if(l)l.moveBeforeVNode(null,t);else{let c=i[s];_e.call(r,c,t)}}}patch(e,t){if(this===e)return;let n=this.children,r=e.children,i=this.anchors,s=this.parentEl;for(let o=0,l=n.length;o<l;o++){let c=n[o],h=r[o];if(c)if(h)c.patch(h,t);else{let a=c.firstNode(),u=document.createTextNode("");i[o]=u,_e.call(s,u,a),t&&c.beforeRemove(),c.remove(),n[o]=void 0}else if(h){n[o]=h;let a=i[o];h.mount(s,a),Bt.call(s,a)}}}beforeRemove(){let e=this.children;for(let t=0,n=e.length;t<n;t++){let r=e[t];r&&r.beforeRemove()}}remove(){let e=this.parentEl;if(this.isOnlyChild)jn.call(e,"");else{let t=this.children,n=this.anchors;for(let r=0,i=t.length;r<i;r++){let s=t[r];s?s.remove():Bt.call(e,n[r])}}}firstNode(){let e=this.children[0];return e?e.firstNode():this.anchors[0]}toString(){return this.children.map(e=>e?e.toString():"").join("")}};function Ut(e){return new Vn(e)}var wi=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Qe,Fn,Kn;if(typeof Node<"u"){let e=Node.prototype;Qe=e.insertBefore,Kn=e.removeChild,Fn=wi(CharacterData.prototype,"data").set}var Ti=class{text;parentEl;el;constructor(e){this.text=e}mount(e,t){this.parentEl=e;let n=document.createTextNode(jt(this.text));Qe.call(e,n,t),this.el=n}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t,Qe.call(t,this.el,e)}moveBeforeVNode(e,t){Qe.call(this.parentEl,this.el,e?e.el:t)}beforeRemove(){}remove(){Kn.call(this.parentEl,this.el)}firstNode(){return this.el}patch(e){let t=e.text;this.text!==t&&(Fn.call(this.el,jt(t)),this.text=t)}toString(){return this.text}};function Me(e){return new Ti(e)}function jt(e){switch(typeof e){case"string":return e;case"number":return String(e);case"boolean":return e?"true":"false";default:return e||""}}var _t=(e,t)=>Object.getOwnPropertyDescriptor(e,t),xe,Wn,Un,rt,zt;typeof Node<"u"&&(xe=Node.prototype,Wn=Element.prototype,Un=_t(CharacterData.prototype,"data").set,rt=_t(xe,"firstChild").get,zt=_t(xe,"nextSibling").get);var kn=()=>{};function Ni(e){return function(n){this[e]=n===0?0:n?n.valueOf():""}}var Ot={};function zn(e){if(e in Ot)return Ot[e];let n=new DOMParser().parseFromString(`<t>${e}</t>`,"text/xml").firstChild.firstChild;ye.shouldNormalizeDom&&Hn(n);let r=Vt(n),i=Ft(r),s=r.el,o=Si(s,i);return Ot[e]=o,o}function Hn(e){if(e.nodeType===Node.TEXT_NODE&&!/\S/.test(e.textContent)){e.remove();return}if(!(e.nodeType===Node.ELEMENT_NODE&&e.tagName==="pre"))for(let t=e.childNodes.length-1;t>=0;--t)Hn(e.childNodes.item(t))}function Vt(e,t=null,n=null){switch(e.nodeType){case Node.ELEMENT_NODE:{let r=n&&n.currentNS,i=e.tagName,s,o=[];if(i.startsWith("block-text-")){let c=parseInt(i.slice(11),10);o.push({type:"text",idx:c}),s=document.createTextNode("")}if(i.startsWith("block-child-")){n.isRef||An(n);let c=parseInt(i.slice(12),10);o.push({type:"child",idx:c}),s=document.createTextNode("")}if(r||=e.namespaceURI,s||(s=r?document.createElementNS(r,i):document.createElement(i)),s instanceof Element){n||document.createElement("template").content.appendChild(s);let c=e.attributes;for(let h=0;h<c.length;h++){let a=c[h].name,u=c[h].value;if(a.startsWith("block-handler-")){let f=parseInt(a.slice(14),10);o.push({type:"handler",idx:f,event:u})}else if(a.startsWith("block-attribute-")){let f=parseInt(a.slice(16),10);o.push({type:"attribute",idx:f,name:u,tag:i})}else if(a.startsWith("block-property-")){let f=parseInt(a.slice(15),10);o.push({type:"property",idx:f,name:u,tag:i})}else a==="block-attributes"?o.push({type:"attributes",idx:parseInt(u,10)}):a==="block-ref"?o.push({type:"ref",idx:parseInt(u,10)}):s.setAttribute(c[h].name,u)}}let l={parent:t,firstChild:null,nextSibling:null,el:s,info:o,refN:0,currentNS:r};if(e.firstChild){let c=e.childNodes[0];if(e.childNodes.length===1&&c.nodeType===Node.ELEMENT_NODE&&c.tagName.startsWith("block-child-")){let h=c.tagName,a=parseInt(h.slice(12),10);o.push({idx:a,type:"child",isOnlyChild:!0})}else{l.firstChild=Vt(e.firstChild,l,l),s.appendChild(l.firstChild.el);let h=e.firstChild,a=l.firstChild;for(;h=h.nextSibling;)a.nextSibling=Vt(h,a,l),s.appendChild(a.nextSibling.el),a=a.nextSibling}}return l.info.length&&An(l),l}case Node.TEXT_NODE:return{parent:t,firstChild:null,nextSibling:null,el:document.createTextNode(e.textContent),info:[],refN:0,currentNS:null}}throw new g("boom")}function An(e){e.isRef=!0;do e.refN++;while(e=e.parent)}function Ei(e){let t=e.parent;for(;t&&t.nextSibling===e;)e=t,t=t.parent;return t}function Ft(e,t,n){if(!t){let r=new Array(e.info.filter(i=>i.type==="child").length);t={collectors:[],locations:[],children:r,cbRefs:[],refN:e.refN},n=0}if(e.refN){let r=n,i=e.isRef,s=e.firstChild?e.firstChild.refN:0,o=e.nextSibling?e.nextSibling.refN:0;if(i){for(let l of e.info)l.refIdx=r;e.refIdx=r,$i(t,e),n++}if(o){let l=n+s;t.collectors.push({idx:l,prevIdx:r,getVal:zt}),Ft(e.nextSibling,t,l)}s&&(t.collectors.push({idx:n,prevIdx:r,getVal:rt}),Ft(e.firstChild,t,n))}return t}function $i(e,t){for(let n of t.info)switch(n.type){case"text":e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:Dn,updateData:Dn});break;case"child":n.isOnlyChild?e.children[n.idx]={parentRefIdx:n.refIdx,isOnlyChild:!0}:e.children[n.idx]={parentRefIdx:Ei(t).refIdx,afterRefIdx:n.refIdx};break;case"property":{let r=n.refIdx,i=Ni(n.name);e.locations.push({idx:n.idx,refIdx:r,setData:i,updateData:i});break}case"attribute":{let r=n.refIdx,i,s;n.name==="class"?(s=Pt,i=Ze):n.name==="style"?(s=Lt,i=Je):(s=si(n.name),i=s),e.locations.push({idx:n.idx,refIdx:r,setData:s,updateData:i});break}case"attributes":e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:oi,updateData:li});break;case"handler":{let{setup:r,update:i}=Bn(n.event);e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:r,updateData:i});break}case"ref":{e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:kn,updateData:kn}),e.cbRefs.push(n.idx);break}}}function Si(e,t){let n=Ci(e,t);return t.children.length?(n=class extends n{children;constructor(r,i){super(r),this.children=i}},n.prototype.beforeRemove=Vn.prototype.beforeRemove,(r,i=[])=>new n(r,i)):r=>new n(r)}function Ci(e,t){let{refN:n,collectors:r,children:i,locations:s,cbRefs:o}=t;s.sort((y,E)=>y.idx-E.idx);let l=s.length,c=i.length,h=n>0,a=s.map(y=>y.refIdx),u=s.map(y=>y.setData),f=s.map(y=>y.updateData),m=[zt,rt],p=r.length,b=r.map(y=>y.idx&32767|(y.prevIdx&32767)<<15|(y.getVal===rt?1:0)<<30),d=i.map(y=>y.parentRefIdx&32767|(y.isOnlyChild?1:0)<<15|((y.afterRefIdx??0)&32767)<<16),S=xe.cloneNode,N=xe.insertBefore,w=Wn.remove;class T{el;parentEl;data;children;refs;constructor(E){this.data=E}beforeRemove(){}remove(){w.call(this.el)}firstNode(){return this.el}moveBeforeDOMNode(E,v=this.parentEl){this.parentEl=v,N.call(v,this.el,E)}moveBeforeVNode(E,v){N.call(this.parentEl,this.el,E?E.el:v)}toString(){let E=document.createElement("div");return this.mount(E,null),E.innerHTML}mount(E,v){let C=S.call(e,!0);N.call(E,C,v),this.el=C,this.parentEl=E}patch(E,v){}}return h&&(T.prototype.mount=function(E,v){let C=S.call(e,!0),D=new Array(n);this.refs=D,D[0]=C;for(let O=0;O<p;O++){let k=b[O];D[k&32767]=m[k>>30&1].call(D[k>>15&32767])}if(l){let O=this.data;for(let k=0;k<l;k++)u[k].call(D[a[k]],O[k])}if(c){let O=this.children;for(let k=0;k<c;k++){let R=O[k];if(R){let L=d[k],we=L>>16&32767,Le=we?D[we]:null;R.isOnlyChild=!!(L&32768),R.mount(D[L&32767],Le)}}}if(N.call(E,C,v),this.el=C,this.parentEl=E,o.length){let O=this.data,k=this.refs;for(let R of o){let L=O[R];L(k[a[R]],null)}}},T.prototype.patch=function(E,v){if(this===E)return;let C=this.refs;if(l){let D=this.data,O=E.data;for(let k=0;k<l;k++){let R=D[k],L=O[k];R!==L&&f[k].call(C[a[k]],L,R)}this.data=O}if(c){let D=this.children,O=E.children;for(let k=0;k<c;k++){let R=D[k],L=O[k];if(R)L?R.patch(L,v):(v&&R.beforeRemove(),R.remove(),D[k]=void 0);else if(L){let we=d[k],Le=we>>16&32767,br=Le?C[Le]:null;L.mount(C[we&32767],br),D[k]=L}}}},T.prototype.remove=function(){if(o.length){let E=this.data,v=this.refs;for(let C of o){let D=E[C];D(null,v[a[C]])}}w.call(this.el)}),T}function Dn(e){Un.call(this,jt(e))}var ki=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Gn,qn,Xn,Kt;if(typeof Node<"u"){let e=Node.prototype;Gn=e.insertBefore,qn=e.appendChild,Xn=e.removeChild,Kt=ki(e,"textContent").set}var Ai=class{children;anchor;parentEl;isOnlyChild;constructor(e){this.children=e}mount(e,t){let n=this.children,r=document.createTextNode("");this.anchor=r,Gn.call(e,r,t);let i=n.length;if(i){let s=n[0].mount;for(let o=0;o<i;o++)s.call(n[o],e,r)}this.parentEl=e}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;let n=this.children;for(let r=0,i=n.length;r<i;r++)n[r].moveBeforeDOMNode(e,t);t.insertBefore(this.anchor,e)}moveBeforeVNode(e,t){if(e){let r=e.children[0];t=(r?r.firstNode():e.anchor)||null}let n=this.children;for(let r=0,i=n.length;r<i;r++)n[r].moveBeforeVNode(null,t);this.parentEl.insertBefore(this.anchor,t)}patch(e,t){if(this===e)return;let n=this.children,r=e.children;if(r.length===0&&n.length===0)return;this.children=r;let i=r[0]||n[0],{mount:s,patch:o,remove:l,beforeRemove:c,moveBeforeVNode:h,firstNode:a}=i,u=this.anchor,f=this.isOnlyChild,m=this.parentEl;if(r.length===0&&f){if(t)for(let v=0,C=n.length;v<C;v++)c.call(n[v]);Kt.call(m,""),qn.call(m,u);return}let p=0,b=0,d=n[0],S=r[0],N=n.length-1,w=r.length-1,T=n[N],y=r[w],E;for(;p<=N&&b<=w;){if(d===null){d=n[++p];continue}if(T===null){T=n[--N];continue}let v=d.key,C=S.key;if(v===C){o.call(d,S,t),r[b]=d,d=n[++p],S=r[++b];continue}let D=T.key,O=y.key;if(D===O){o.call(T,y,t),r[w]=T,T=n[--N],y=r[--w];continue}if(v===O){o.call(d,y,t),r[w]=d;let R=r[w+1];h.call(d,R,u),d=n[++p],y=r[--w];continue}if(D===C){o.call(T,S,t),r[b]=T;let R=n[p];h.call(T,R,u),T=n[--N],S=r[++b];continue}E=E||Di(n,p,N);let k=E[C];if(k===void 0)s.call(S,m,a.call(d)||null);else{let R=n[k];h.call(R,d,null),o.call(R,S,t),r[b]=R,n[k]=null}S=r[++b]}if(p<=N||b<=w)if(p>N){let v=r[w+1],C=v?a.call(v)||null:u;for(let D=b;D<=w;D++)s.call(r[D],m,C)}else for(let v=p;v<=N;v++){let C=n[v];C&&(t&&c.call(C),l.call(C))}}beforeRemove(){let e=this.children,t=e.length;if(t){let n=e[0].beforeRemove;for(let r=0;r<t;r++)n.call(e[r])}}remove(){let{parentEl:e,anchor:t}=this;if(this.isOnlyChild)Kt.call(e,"");else{let n=this.children,r=n.length;if(r){let i=n[0].remove;for(let s=0;s<r;s++)i.call(n[s])}Xn.call(e,t)}}firstNode(){let e=this.children[0];return e?e.firstNode():void 0}toString(){return this.children.map(e=>e.toString()).join("")}};function Yn(e){return new Ai(e)}function Di(e,t,n){let r={};for(let i=t;i<=n;i++)r[e[i].key]=i;return r}var ge,Zn;if(typeof Node<"u"){let e=Node.prototype;ge=e.insertBefore,Zn=e.removeChild}var _i=class{html;parentEl;content=[];constructor(e){this.html=e}mount(e,t){this.parentEl=e;let n=document.createElement("template");n.innerHTML=this.html,this.content=[...n.content.childNodes];for(let r of this.content)ge.call(e,r,t);if(!this.content.length){let r=document.createTextNode("");this.content.push(r),ge.call(e,r,t)}}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;for(let n of this.content)ge.call(t,n,e)}moveBeforeVNode(e,t){let n=e?e.content[0]:t;this.moveBeforeDOMNode(n)}patch(e){if(this===e)return;let t=e.html;if(this.html!==t){let n=this.parentEl,r=this.content[0],i=document.createElement("template");i.innerHTML=t;let s=[...i.content.childNodes];for(let o of s)ge.call(n,o,r);if(!s.length){let o=document.createTextNode("");s.push(o),ge.call(n,o,r)}this.remove(),this.content=s,this.html=e.html}}beforeRemove(){}remove(){let e=this.parentEl;for(let t of this.content)Zn.call(e,t)}firstNode(){return this.content[0]}toString(){return this.html}};function Ht(e){return new _i(e)}function Oi(e){let t=Object.keys(e).length;class n{child;handlerData;handlerFns=[];parentEl;afterNode=null;constructor(i,s){this.child=i,this.handlerData=s}mount(i,s){this.parentEl=i,this.child.mount(i,s),this.afterNode=document.createTextNode(""),i.insertBefore(this.afterNode,s),this.wrapHandlerData();for(let o in e){let l=e[o],c=Bn(o);this.handlerFns[l]=c,c.setup.call(i,this.handlerData[l])}}wrapHandlerData(){for(let i=0;i<t;i++){let s=this.handlerData[i],o=s.length-2,l=s[o],c=this;s[o]=function(h,a){let u=a.target,f=c.child.firstNode(),m=c.afterNode;for(;f&&f!==m;){if(f.contains(u))return l(h,a);f=f.nextSibling}}}}moveBeforeDOMNode(i,s=this.parentEl){this.parentEl=s,this.child.moveBeforeDOMNode(i,s),s.insertBefore(this.afterNode,i)}moveBeforeVNode(i,s){i&&(s=i.firstNode()||s),this.child.moveBeforeVNode(i?i.child:null,s),this.parentEl.insertBefore(this.afterNode,s)}patch(i,s){if(this!==i){this.handlerData=i.handlerData,this.wrapHandlerData();for(let o=0;o<t;o++)this.handlerFns[o].update.call(this.parentEl,this.handlerData[o]);this.child.patch(i.child,s)}}beforeRemove(){this.child.beforeRemove()}remove(){for(let i=0;i<t;i++)this.handlerFns[i].remove.call(this.parentEl);this.child.remove(),this.afterNode.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}}return function(r,i){return new n(r,i)}}function et(e,t,n=null){e.mount(t,n)}function xi(e,t,n=!1){e.patch(t,n)}function Ri(e,t=!1){t&&e.beforeRemove(),e.remove()}function Mi(e){switch(e.__owl__.status){case A.NEW:return"new";case A.CANCELLED:return"cancelled";case A.MOUNTED:return e instanceof qe?"started":"mounted";case A.DESTROYED:return"destroyed"}}function Ii(e,t){let n=e.fiber;return n&&(Gt(n.children),n.root=null),new ot(e,t)}function Pi(e){let t=e.fiber;if(t){let r=t.root;return r.locked=!0,r.setCounter(r.counter+1-Gt(t.children)),r.locked=!1,t.children=[],t.childrenMap={},t.bdom=null,Q.has(t)&&(Q.delete(t),Q.delete(r),t.appliedToDom=!1,t instanceof it&&(t.mounted=t instanceof Jn?[t]:[])),t}let n=new it(e,null);return e.willPatch.length&&n.willPatch.push(n),e.patched.length&&n.patched.push(n),n}function Li(){throw new g("Attempted to render cancelled fiber")}function Gt(e){let t=0;for(let n of e){let r=n.node;n.render=Li,r.status===A.NEW&&r.cancel(),r.fiber=null,n.bdom?r.forceNextRender=!0:(t++,r.bdom&&(r.forceNextRender=!0)),t+=Gt(n.children)}return t}var ot=class{node;bdom=null;root;parent;children=[];appliedToDom=!1;deep=!1;childrenMap={};constructor(e,t){if(this.node=e,this.parent=t,t){this.deep=t.deep;let n=t.root;n.setCounter(n.counter+1),this.root=n,t.children.push(this)}else this.root=this}render(){let e=this.root.node.app.scheduler;if(e.tasks.size>1){let r=this.root.node,i=r.parent;for(;i;){if(i.fiber){let s=i.fiber.root;if(s.counter===0&&r.parentKey in i.fiber.childrenMap)i=s.node;else{e.delayedRenders.push(this);return}}r=i,i=i.parent}}let t=this.node,n=this.root;if(n){let r=z();Se(t.signalComputation),P(t.signalComputation),t.signalComputation.state=$e.EXECUTED;try{this.bdom=!0,this.bdom=t.renderFn()}catch(s){ve({node:t,error:s})}finally{P(r)}let i=n.counter-1;n.counter=i,i===0&&e.flush()}}},it=class extends ot{counter=1;willPatch=[];patched=[];mounted=[];locked=!1;complete(){let e=this.node;this.locked=!0;let t,n=this.mounted;try{for(t of this.willPatch){let i=t.node;if(i.fiber===t){let s=i.component;for(let o of i.willPatch)o.call(s)}}for(t=void 0,e._patch(),this.locked=!1;t=n.pop();)if(t=t,t.appliedToDom)for(let i of t.node.mounted)i();let r=this.patched;for(;t=r.pop();)if(t=t,t.appliedToDom)for(let i of t.node.patched)i()}catch(r){for(let i of n)i.node.willUnmount=[];this.locked=!1,ve({fiber:t||this,error:r})}}setCounter(e){this.counter=e,e===0&&this.node.app.scheduler.flush()}},Jn=class extends it{target;position;afterNode=null;prepared=!1;onPrepared=null;constructor(e,t,n={}){super(e,null),this.target=t,this.position=n.position||"last-child",this.afterNode=n.afterNode??null}complete(){this.prepared=!0,this.target?this._mount():(this.appliedToDom=!0,this.onPrepared?.())}commit(e,t={}){this.target=e,this.position=t.position||"last-child",this.afterNode=t.afterNode??null,this.prepared&&this._mount()}_mount(){let e=this;try{let t=this.node;if(t.children=this.childrenMap,t.app.constructor.validateTarget(this.target),t.bdom)t.updateDom();else if(t.bdom=this.bdom,this.afterNode)et(t.bdom,this.target,this.afterNode);else if(this.position==="last-child"||this.target.childNodes.length===0)et(t.bdom,this.target);else{let r=this.target.childNodes[0];et(t.bdom,this.target,r)}t.fiber=null,t.status=A.MOUNTED,this.appliedToDom=!0;let n=this.mounted;for(;e=n.pop();)if(e.appliedToDom)for(let r of e.node.mounted)r()}catch(t){ve({fiber:e,error:t})}}},Ie=class extends Ce{fiber=null;component;bdom=null;componentName;forceNextRender=!1;parentKey;props;defaultProps=null;renderFn;parent;children=Object.create(null);willUpdateProps=[];propsUpdated=[];willUnmount=[];mounted=[];willPatch=[];patched=[];signalComputation;trackedRefs=null;constructor(e,t,n,r,i){super(n),this.parent=r,this.parentKey=i,this.pluginManager=r?r.pluginManager:n.pluginManager,this.componentName=e.name,this.signalComputation=Ke(()=>this.render(!1),!1,$e.EXECUTED),this.props=t;let s=z();P(void 0),H.push(this);try{this.component=new e(this);let o={this:this.component,__owl__:this};this.renderFn=n.getTemplate(e.template).bind(this.component,o,this),this.component.setup()}finally{H.pop(),P(s)}}decorate(e,t){let n=this.component,r=this;if(this.app.dev){let i=`${this.componentName}.${t}`;return{[i](...o){return e.call(n,r,...o)}}[i]}return e.bind(n,r)}async initiateRender(e){this.fiber=e,this.mounted.length&&e.root.mounted.push(e);let t=this.component,n=z();P(void 0);try{let r=this.willStart.map(i=>i.call(t));P(n),await Promise.all(r)}catch(r){if(Ve(r)&&this.status>A.MOUNTED)return;ve({node:this,error:r});return}this.status===A.NEW&&this.fiber===e&&e.render()}async render(e){if(this.status>=A.CANCELLED)return;let t=this.fiber;if(t&&(t.root.locked||t.bdom===!0)&&(await Promise.resolve(),t=this.fiber),t){if(!t.bdom&&!Q.has(t)){e&&(t.deep=e);return}e=e||t.deep}else if(!this.bdom)return;let n=Pi(this);n.deep=e,this.fiber=n,this.app.scheduler.addFiber(n),await Promise.resolve(),!(this.status>=A.CANCELLED)&&this.fiber===n&&(t||!n.parent)&&n.render()}cancel(){this._cancel(),delete this.parent.children[this.parentKey],this.app.scheduler.scheduleDestroy(this)}_cancel(){super.cancel();let e=this.children;for(let t in e)e[t]._cancel()}destroy(){let e=this.status===A.MOUNTED;J++;try{this._destroy()}finally{J--}e&&(this.bdom.remove(),xt())}_destroy(){let e=this.component;if(this.status===A.MOUNTED)for(let t of this.willUnmount)t.call(e);J&&this.trackedRefs&&(tt||=[]).push(this);for(let t in this.children)this.children[t]._destroy();this.finalize(t=>ve({error:t,node:this})),ze(this.signalComputation)}sweepRefs(){let e=this.trackedRefs;if(e)for(let[t,n]of e){let r=n.value;r?r.isConnected||(t.set(null),e.delete(t)):e.delete(t)}}updateDom(){if(this.fiber)if(this.bdom===this.fiber.bdom)for(let e in this.children)this.children[e].updateDom();else{J++;try{this.bdom.patch(this.fiber.bdom,!1)}finally{J--}this.sweepRefs(),xt(),this.fiber.appliedToDom=!0,this.fiber=null}}firstNode(){let e=this.bdom;return e?e.firstNode():void 0}mount(e,t){let n=this.fiber.bdom;this.bdom=n,n.mount(e,t),this.status=A.MOUNTED,this.fiber.appliedToDom=!0,this.children=this.fiber.childrenMap,this.fiber=null}moveBeforeDOMNode(e,t){this.bdom.moveBeforeDOMNode(e,t)}moveBeforeVNode(e,t){this.bdom.moveBeforeVNode(e?e.bdom:null,t)}trackRef(e,t){(this.trackedRefs||=new Map).set(e,t)}patch(){this.fiber&&this.fiber.parent&&this._patch()}_patch(){let e=!1;for(let n in this.children){e=!0;break}let t=this.fiber;this.children=t.childrenMap,J++;try{this.bdom.patch(t.bdom,e)}finally{J--}this.sweepRefs(),xt(),t.appliedToDom=!0,this.fiber=null}beforeRemove(){this._destroy()}remove(){this.bdom.remove()}},J=0,tt=null;function xt(){if(J===0&&tt){let e=tt;tt=null;for(let t=0;t<e.length;t++)e[t].sweepRefs()}}function G(){let e=K();if(!(e instanceof Ie))throw new g("Expected to be in a component scope");return e}var Qn;typeof window<"u"&&(Qn=window.requestAnimationFrame.bind(window));var Bi=class er{static requestAnimationFrame=Qn;tasks=new Set;requestAnimationFrame;frame=0;delayedRenders=[];cancelledNodes=new Set;processing=!1;constructor(){this.requestAnimationFrame=er.requestAnimationFrame,this.processTasks=this.processTasks.bind(this)}addFiber(t){this.tasks.add(t.root)}scheduleDestroy(t){this.cancelledNodes.add(t),this.frame===0&&(this.frame=this.requestAnimationFrame(this.processTasks))}flush(){if(this.delayedRenders.length){let t=this.delayedRenders;this.delayedRenders=[];for(let n of t)n.root&&n.node.status!==A.DESTROYED&&n.node.fiber===n&&n.render()}this.frame===0&&(this.frame=this.requestAnimationFrame(this.processTasks))}processTasks(){if(!this.processing){this.processing=!0,this.frame=0,this.processCancelledNodes();for(let t of this.tasks){if(t.root!==t){this.tasks.delete(t);continue}let n=Q.has(t);if(n&&t.counter!==0){this.tasks.delete(t);continue}if(t.node.status===A.DESTROYED){this.tasks.delete(t);continue}t.counter===0&&(n||t.complete(),t.appliedToDom&&this.tasks.delete(t))}for(let t of this.tasks)t.node.status===A.DESTROYED&&this.tasks.delete(t);this.processing=!1}}processCancelledNodes(){for(let t of this.cancelledNodes)t._destroy();this.cancelledNodes.clear();for(let t of this.tasks)t.node.status===A.DESTROYED&&this.tasks.delete(t)}},ee=class{static template="";__owl__;constructor(e){this.__owl__=e}setup(){}},ji=Object.create;function Vi(e,t){return e==null||e===!1?t:e}function Fi(e,t,n,r,i,s,o){n=n+"__slot_"+r;let l=e.__owl__.props.slots||{},{__render:c,__ctx:h,__scope:a}=l[r]||{},u=ji(h||{});a&&(u[a]=s);let f=c?c(u,t,n):null;if(o){let m,p;return f?m=i?ae(r,f):f:p=o(e,t,n),Ut([m,p])}return f||Me("")}function Ki(e,t){return e.key=t,e}function Wi(e){let t,n;if(Array.isArray(e))t=e,n=e;else if(e instanceof Map)t=[...e.keys()],n=[...e.values()];else if(Symbol.iterator in Object(e))t=[...e],n=t;else if(e&&typeof e=="object")n=Object.values(e),t=Object.keys(e);else throw new g(`Invalid loop expression: "${e}" is not iterable`);let r=n.length;return[t,n,r,new Array(r)]}function Ui(e){let t=parseFloat(e);return isNaN(t)?e:t}function zi(e,t){for(let n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!1;return!0}var tr=class{fn;ctx;component;node;key;constructor(e,t,n,r,i){this.fn=e,this.ctx=t,this.component=n,this.node=r,this.key=i}evaluate(){return this.fn.call(this.component,this.ctx,this.node,this.key)}toString(){return this.evaluate().toString()}};function Hi(e,t){if(e==null)return t?ae("default",t):ae("undefined",Me(""));let n,r;return e instanceof Ee?(n="string_safe",r=Ht(e)):e instanceof tr?(n="lazy_value",r=e.evaluate()):(n="string_unsafe",r=Me(e)),ae(n,r)}function Gi(e,t){if(!e)throw new g("Ref is undefined or null");let n,r;if(e.add&&e.delete)n=e.add.bind(e),r=e.delete.bind(e);else if(e.set){n=e.set.bind(e);let i=e[ie];r=i?s=>{i.value===s&&e.set(null)}:()=>e.set(null),i&&t.trackRef(e,i)}else throw new g("Ref should implement either a 'set' function or 'add' and 'delete' functions");return(i,s)=>{s&&r(s),i&&n(i)}}function qi(e,t,n){if(typeof e!="function")throw new g(`Invalid handler expression: the \`t-on\` expression should evaluate to a function, but got '${typeof e}'. Did you mean to use an arrow function? (e.g. \`t-on-click="() => expr"\`)`);e.call(t.this,n)}var _n=new WeakMap;function Xi(e,t,n){let r=_n.get(e);r||(r=new Map,_n.set(e,r));let i=r.get(t);if(i)return i.set(n),i.readonly;let s=x(n);return s.readonly=se(s),r.set(t,s),s.readonly}function Yi(e){if(typeof e!="function"||typeof e.set!="function")throw new g("Invalid t-model expression: expression should evaluate to a function with a 'set' method defined on it");return e}function Zi(e,t,n,r,i,s){let o=!n,l,c=s.length===0;r?l=(a,u)=>!0:i?l=function(a,u){for(let f in a)if(a[f]!==u[f])return!0;return Object.keys(a).length!==Object.keys(u).length}:c?l=(a,u)=>!1:l=function(a,u){for(let f of s)if(a[f]!==u[f])return!0;return!1};let h=Ie.prototype.initiateRender;return(a,u,f,m,p)=>{let b=f.children,d=b[u];o&&d&&d.component.constructor!==p&&(d=void 0);let S=f.fiber;if(d){if(l(d.props,a)||S.deep||d.forceNextRender){d.forceNextRender=!1;let N=d.willUpdateProps,w=Ii(d,S);d.fiber=w;let T=S.root;d.willPatch.length&&T.willPatch.push(w),d.patched.length&&T.patched.push(w);let y;if(N.length){let E=a,v=d.defaultProps;if(v){E=Object.assign({},a);for(let O in v)E[O]===void 0&&(E[O]=v[O])}let C=d.component,D=z();P(void 0);for(let O of N){let k=O.call(C,E);k&&typeof k.then=="function"&&(y||=[]).push(k)}P(D)}if(y)(y.length===1?y[0]:Promise.all(y)).then(()=>{if(w===d.fiber){d.props=a;for(let v of d.propsUpdated)v();w.render()}},v=>{ve({node:d,error:v})});else{d.props=a;for(let E of d.propsUpdated)E();w.render()}}}else{if(n){let w=m.constructor.components;if(!w)throw new g(`Cannot find the definition of component "${t}", missing static components key in parent`);if(p=w[t],p){if(!(p.prototype instanceof ee))throw new g(`"${t}" is not a Component. It must inherit from the Component class`)}else throw new g(`Cannot find the definition of component "${t}"`)}d=new Ie(p,a,e,f,u),b[u]=d;let N=new ot(d,S);d.willStart.length?h.call(d,N):(d.fiber=N,d.mounted.length&&N.root.mounted.push(N),N.render())}return S.childrenMap[u]=d,d}}function Ji(e,t,n,r,i,s){let o=n.getTemplate(e);return ae(e,o.call(t,r,i,s+e))}var Qi={withDefault:Vi,zero:Symbol("zero"),callSlot:Fi,withKey:Ki,prepareList:Wi,shallowEqual:zi,toNumber:Ui,LazyValue:tr,safeOutput:Hi,createCatcher:Oi,markRaw:He,OwlError:g,createRef:Gi,modelExpr:Yi,createComponent:Zi,callTemplate:Ji,callHandler:qi,toSignal:Xi},es={text:Me,createBlock:zn,list:Yn,multi:Ut,html:Ht,toggler:ae},Pe=class{static registerTemplate(e,t){st[e]=t}dev;rawTemplates=Object.create(st);templates={};getRawTemplate;translateFn;translatableAttributes;customDirectives;runtimeUtils;hasGlobalValues;constructor(e={}){if(this.dev=e.dev||!1,this.translateFn=e.translateFn,this.translatableAttributes=e.translatableAttributes,e.templates)if(e.templates instanceof Document||typeof e.templates=="string")this.addTemplates(e.templates);else for(let t in e.templates)this.addTemplate(t,e.templates[t]);this.getRawTemplate=e.getTemplate,this.customDirectives=e.customDirectives||{},this.runtimeUtils={...Qi,__globals__:e.globalValues||{}},this.hasGlobalValues=!!(e.globalValues&&Object.keys(e.globalValues).length)}addTemplate(e,t){if(e in this.rawTemplates){if(!this.dev)return;let n=this.rawTemplates[e];if(ts(n,t))return;throw new g(`Template ${e} already defined with different content`)}this.rawTemplates[e]=t}addTemplates(e){if(e){e=e instanceof Document?e:this._parseXML(e);for(let t of e.querySelectorAll("[t-name]")){let n=t.getAttribute("t-name");this.addTemplate(n,t)}}}getTemplate(e){let t=e;if(!(t in this.templates)){let n=this.getRawTemplate?.(e)||this.rawTemplates[e];if(n===void 0){let l="",c=oe();throw c instanceof Ie&&(l=` (for component "${c.componentName}")`),new g(`Missing template: "${e}"${l}`)}let i=typeof n=="function"&&!(n instanceof Element)?n:this._compileTemplate(e,n),s=this.templates;this.templates[t]=function(l,c){return s[t].call(this,l,c)};let o=i(this,es,this.runtimeUtils);this.templates[t]=o}return this.templates[t]}_compileTemplate(e,t){throw new g("Unable to compile a template. Please use owl full build instead")}_parseXML(e){throw new g("Unable to parse XML templates. Please use owl full build instead, or pass a Document instance.")}},st={};function te(...e){let t=`__template__${te.nextId++}`,n=String.raw(...e);return st[t]=n,t}te.nextId=1;function ts(e,t){if(e===t)return!0;if(typeof e=="function"!=(typeof t=="function"))return!1;let n=e instanceof Element?e.outerHTML:String(e),r=t instanceof Element?t.outerHTML:String(t);return n===r}var On=!1,nt=new Set;typeof window<"u"&&(window.__OWL_DEVTOOLS__||={apps:nt,Fiber:ot,RootFiber:it,toRaw:Y,proxy:ke});var qt=class nr extends Pe{static validateTarget=fi;static apps=nt;static version=ri;name;scheduler=new Bi;roots=new Set;pluginManager;destroyed=!1;constructor(t={}){super(t),this.name=t.name||"",nt.add(this),this.pluginManager=new me(this,{config:t.config}),t.plugins?Xe(this.pluginManager,t.plugins):this.pluginManager.status=A.MOUNTED,t.test&&(this.dev=!0),this.dev&&!t.test&&!On&&(console.info("Owl is running in 'dev' mode."),On=!0)}createRoot(t,n={}){let r=n.props||{},i,s,o=new Promise((p,b)=>{i=p,s=b}),l,c=null;try{l=new Ie(t,r,this,null,null)}catch(p){c=p,s(p)}let h=null,a=null,u=()=>{if(a)return a;if(c)return Promise.reject(c);h=new Jn(l,null);let p=ce.get(l);if(p||(p=[],ce.set(l,p)),p.unshift((d,S)=>{let N=S();s(N)}),a=new Promise(d=>{h.onPrepared=()=>d()}),l.mounted.push(()=>{i(l.component),p.shift()}),this.scheduler.addFiber(h),this.pluginManager.status<A.MOUNTED&&l.willStart.unshift(()=>this.pluginManager.ready),l.willStart.length)l.initiateRender(h);else{l.fiber=h,l.mounted.length&&h.root.mounted.push(h);try{h.render()}catch(d){s(d)}}return a},m={node:l,promise:o,prepare:u,mount:(p,b)=>(c||(nr.validateTarget(p),u(),h.commit(p,b)),o),destroy:()=>{this.roots.delete(m),l?.destroy(),this.scheduler.processCancelledNodes()}};return this.roots.add(m),m}destroy(){for(let t of this.roots)t.destroy();this.pluginManager.destroy(),this.scheduler.processCancelledNodes(),this.scheduler.tasks.clear(),this.scheduler.delayedRenders=[],nt.delete(this),this.destroyed=!0}_handleError(t){throw t}};async function ns(e,t,n={}){return new qt(n).createRoot(e,n).mount(t,n)}var rs=(e,t,n)=>{let{data:r,modifiers:i}=Mn(e);e=r;let s=!1;if(i.length){let o=!1,l=t.target===n;for(let c of i)switch(c){case"self":if(o=!0,l)continue;return s;case"prevent":(o&&l||!o)&&t.preventDefault();continue;case"stop":(o&&l||!o)&&t.stopPropagation(),s=!0;continue}}if(Object.hasOwnProperty.call(e,0)){let o=e[0];if(typeof o!="function")throw new g(`Invalid handler (expected a function, received: '${o}')`);let l=e[1]?e[1].__owl__:null;(!l||l.status===A.MOUNTED)&&o(e[1],t)}return s};function is(e){let t=G();function n(r,i){return e.call(this,i,r)}t.willUpdateProps.push(t.decorate(n,"onWillUpdateProps"))}function rr(e){let t=G();t.mounted.push(t.decorate(e,"onMounted"))}function ss(e){let t=G();t.willPatch.unshift(t.decorate(e,"onWillPatch"))}function os(e){let t=G();t.patched.push(t.decorate(e,"onPatched"))}function ls(e){let t=G();t.willUnmount.unshift(t.decorate(e,"onWillUnmount"))}function ir(e){let t=G(),n=ce.get(t);n||(n=[],ce.set(t,n)),n.push(e.bind(t.component))}function as(e,t){let n=G(),r=le(t),i=n.props[e];return n.app.dev&&(t!==void 0&&(!r||i!==void 0)&&W(i,t,`Invalid prop '${e}' in '${n.componentName}'`),n.willUpdateProps.push(s=>{if(s[e]!==n.props[e])throw new g(`Prop '${e}' changed in component '${n.componentName}'. Props declared with \`props.static()\` are static and should not change. If the prop is a signal, pass the same signal reference (its inner value may change).`)})),i===void 0&&r?r():i}function cs(){return $t(ee)}var j={...kt,component:cs};function us(e){let t=G(),{app:n,componentName:r}=t,i=null;if(e&&!Array.isArray(e))for(let u in e){let f=le(e[u]);f&&((i||={})[u]=f())}i&&(t.defaultProps=Object.assign(t.defaultProps||{},i));function s(u,f){return u[f]===void 0&&i&&f in i?i[f]:u[f]}let o=Object.create(null),l=Object.create(null);function c(u){o[u]=x(s(t.props,u)),Reflect.defineProperty(l,u,{enumerable:!0,configurable:!0,get:o[u]})}function h(u){for(let f of u)c(f)}function a(u){for(let f of u)o[f].set(s(t.props,f))}if(e){let u=Array.isArray(e)?e:Object.keys(e);if(h(u),t.propsUpdated.push(()=>a(u)),n.dev){if(i){let m={};for(let p in e)p in i&&(m[p]=e[p]);W(i,j.object(m),`Invalid component default props (${r})`)}let f=j.object(e);W(t.props,f,`Invalid component props (${r})`),t.willUpdateProps.push(m=>{W(m,f,`Invalid component props (${r})`)})}}else{let u=m=>{let p=[];for(let b in m)b.charCodeAt(0)!==1&&p.push(b);return p},f=u(t.props);h(f),t.propsUpdated.push(()=>{let m=u(t.props),p=new Set(m);for(let b of f)p.has(b)||(Reflect.deleteProperty(l,b),delete o[b]);for(let b of m)b in o||c(b);a(m),f=m})}return l}var lt=Object.assign(us,{static:as}),fs=class extends ee{static template=te`
|
|
3
3
|
<t t-if="this.props.error()">
|
|
4
4
|
<t t-call-slot="fallback"/>
|
|
5
5
|
</t>
|
|
@@ -10,16 +10,16 @@ ${s}`)}}function bt(e,t,n,r,i=1){return{issueDepth:0,path:n,value:t,get isValid(
|
|
|
10
10
|
<t t-if="!this.prepared()">
|
|
11
11
|
<t t-call-slot="fallback"/>
|
|
12
12
|
</t>
|
|
13
|
-
`;props=lt({slots:j.object({default:j.any(),fallback:j.any().optional()})});prepared=x(!1);mounted=x(!1);subRootMounted=!1;setup(){let e=this.__owl__,t=e.app.createRoot(gs,{props:{slots:this.props.slots}});t.node.pluginManager=e.pluginManager,ce.set(t.node,[Rn(e)]),t.prepare().then(()=>this.prepared.set(!0));let n=t.node.fiber;n&&n.counter===0&&this.prepared.set(!0),rr(()=>this.mounted.set(!0)),De(()=>{if(this.subRootMounted||!this.prepared()||!this.mounted())return;this.subRootMounted=!0;let r=e.bdom.firstNode();t.mount(r.parentElement,{afterNode:r})}),Z(()=>t.destroy())}};function vs(e,t){let n=G(),r=new me(n.app,{parent:n.pluginManager,config:t});n.pluginManager=r,Z(()=>r.destroy()),Xe(r,e),r.status<A.MOUNTED&&Ye(()=>r.ready)}ye.shouldNormalizeDom=!1;ye.mainEventHandler=rs;var ys={config:ye,mount:et,patch:xi,remove:Ri,list:Yn,multi:Ut,text:Me,toggler:ae,createBlock:zn,html:Ht},ws={version:qt.version,date:"2026-06-
|
|
13
|
+
`;props=lt({slots:j.object({default:j.any(),fallback:j.any().optional()})});prepared=x(!1);mounted=x(!1);subRootMounted=!1;setup(){let e=this.__owl__,t=e.app.createRoot(gs,{props:{slots:this.props.slots}});t.node.pluginManager=e.pluginManager,ce.set(t.node,[Rn(e)]),t.prepare().then(()=>this.prepared.set(!0));let n=t.node.fiber;n&&n.counter===0&&this.prepared.set(!0),rr(()=>this.mounted.set(!0)),De(()=>{if(this.subRootMounted||!this.prepared()||!this.mounted())return;this.subRootMounted=!0;let r=e.bdom.firstNode();t.mount(r.parentElement,{afterNode:r})}),Z(()=>t.destroy())}};function vs(e,t){let n=G(),r=new me(n.app,{parent:n.pluginManager,config:t});n.pluginManager=r,Z(()=>r.destroy()),Xe(r,e),r.status<A.MOUNTED&&Ye(()=>r.ready)}ye.shouldNormalizeDom=!1;ye.mainEventHandler=rs;var ys={config:ye,mount:et,patch:xi,remove:Ri,list:Yn,multi:Ut,text:Me,toggler:ae,createBlock:zn,html:Ht},ws={version:qt.version,date:"2026-06-26T12:29:22.680Z",hash:"5565ac15",url:"https://github.com/odoo/owl"};var Ts="true,false,NaN,null,undefined,debugger,console,window,in,instanceof,new,function,return,eval,void,Math,RegExp,Array,Object,Date,__globals__".split(","),sr=Object.assign(Object.create(null),{and:"&&",or:"||",gt:">",gte:">=",lt:"<",lte:"<="}),or=Object.assign(Object.create(null),{"{":"LEFT_BRACE","}":"RIGHT_BRACE","[":"LEFT_BRACKET","]":"RIGHT_BRACKET",":":"COLON",",":"COMMA","(":"LEFT_PAREN",")":"RIGHT_PAREN"}),Ns="...,.,===,==,+,!==,!=,!,||,&&,>=,>,<=,<,?,-,*,/,%,typeof ,=>,=,;,in ,new ,|,&,^,~".split(","),Es=function(e){let t=e[0],n=t;if(t!=="'"&&t!=='"'&&t!=="`")return!1;let r=1,i;for(;e[r]&&e[r]!==n;){if(i=e[r],t+=i,i==="\\"){if(r++,i=e[r],!i)throw new g("Invalid expression");t+=i}r++}if(e[r]!==n)throw new g("Invalid expression");return t+=n,n==="`"?{type:"TEMPLATE_STRING",value:t,replace(s){return t.replace(/\$\{(.*?)\}/g,(o,l)=>"${"+s(l)+"}")}}:{type:"VALUE",value:t}},$s=function(e){let t=e[0];if(t&&t.match(/[0-9]/)){let n=1;for(;e[n]&&e[n].match(/[0-9]|\./);)t+=e[n],n++;return{type:"VALUE",value:t}}else return!1},Ss=function(e){let t=e[0];if(t&&t.match(/[a-zA-Z_\$]/)){let n=1;for(;e[n]&&e[n].match(/[\w\$]/);)t+=e[n],n++;return t in sr?{type:"OPERATOR",value:sr[t],size:t.length}:{type:"SYMBOL",value:t}}else return!1},Cs=function(e){let t=e[0];return t&&t in or?{type:or[t],value:t}:!1},ks=function(e){for(let t of Ns)if(e.startsWith(t))return{type:"OPERATOR",value:t};return!1},As=[Es,$s,ks,Ss,Cs];function Ds(e){let t=[],n=!0,r,i=e;try{for(;n;)if(i=i.trim(),i){for(let s of As)if(n=s(i),n){t.push(n),i=i.slice(n.size||n.value.length);break}}else n=!1}catch(s){r=s}if(i.length||r)throw new g(`Tokenizer error: could not tokenize \`${e}\``);return t}var _s=e=>e&&(e.type==="LEFT_BRACE"||e.type==="COMMA"),Os=e=>e&&(e.type==="RIGHT_BRACE"||e.type==="COMMA"),xs=new Map([["in "," in "]]);function pr(e,t){let n=[];t?.size&&n.push({vars:t,depth:-1/0});let r=Ds(e),i=0,s=[],o=-1;function l(a){return n.some(u=>u.vars.has(a))}for(;i<r.length;){let a=r[i],u=r[i-1],f=r[i+1],m=s[s.length-1];switch(a.type){case"LEFT_BRACE":case"LEFT_BRACKET":case"LEFT_PAREN":s.push(a.type);break;case"RIGHT_BRACE":case"RIGHT_BRACKET":case"RIGHT_PAREN":for(s.pop();n.length>0&&s.length<n[n.length-1].depth;)n.pop();break}let p=a.type==="SYMBOL"&&!Ts.includes(a.value);if(p&&u&&(m==="LEFT_BRACE"&&_s(u)&&Os(f)&&(r.splice(i+1,0,{type:"COLON",value:":"},{...a}),f=r[i+1]),(u.type==="OPERATOR"&&u.value==="."||(u.type==="LEFT_BRACE"||u.type==="COMMA")&&f&&f.type==="COLON")&&(p=!1)),a.type==="TEMPLATE_STRING"){let b=new Set;for(let d of n)for(let S of d.vars)b.add(S);a.value=a.replace(d=>_(d,b))}if(f&&f.type==="OPERATOR"&&f.value==="=>"){let b=new Set;if(s.length===0&&(o=i+1),a.type==="RIGHT_PAREN"){let d=i-1;for(;d>0&&r[d].type!=="LEFT_PAREN";)r[d].type==="SYMBOL"&&r[d].originalValue&&(b.add(r[d].originalValue),r[d].value=`_${r[d].originalValue}`,r[d].isLocal=!0),d--}else b.add(a.value);n.push({vars:b,depth:s.length})}p&&(a.varName=a.value,l(a.value)?(a.value=`_${a.value}`,a.isLocal=!0):(a.originalValue=a.value,a.value=`ctx['${a.value}']`)),i++}let c=null;if(o!==-1){c=[];let a=new Set;for(let u=o+1;u<r.length;u++){let f=r[u];f.varName&&!f.isLocal&&f.varName!=="this"&&!a.has(f.varName)&&(a.add(f.varName),c.push(f.varName))}}return{expr:r.map(a=>xs.get(a.value)||a.value).join(""),freeVariables:c}}function _(e,t){return pr(e,t).expr}var ut=/\{\{.*?\}\}|\#\{.*?\}/g;function Rs(e,t){let n=e.match(ut);return n&&n[0].length===e.length?`(${t(e.slice(2,n[0][0]==="{"?-2:-1))})`:"`"+e.replace(ut,i=>"${"+t(i.slice(2,i[0]==="{"?-2:-1))+"}")+"`"}function Xt(e){return Rs(e,_)}function Zt(e){let n=new DOMParser().parseFromString(e,"text/xml");if(n.getElementsByTagName("parsererror").length){let r="Invalid XML in template.",i=n.getElementsByTagName("parsererror")[0].textContent;if(i){r+=`
|
|
14
14
|
The parser has produced the following error message:
|
|
15
15
|
`+i;let s=/\d+/g,o=s.exec(i);if(o){let l=Number(o[0]),c=e.split(`
|
|
16
16
|
`)[l-1],h=s.exec(i);if(c&&h){let a=Number(h[0])-1;c[a]&&(r+=`
|
|
17
17
|
The error might be located at xml line ${l} column ${a}
|
|
18
18
|
${c}
|
|
19
|
-
${"-".repeat(a-1)}^`)}}}throw new g(r)}return n}var $={Text:0,DomNode:2,Multi:3,TIf:4,TSet:5,TCall:6,TOut:7,TForEach:8,TKey:9,TComponent:10,TDebug:11,TLog:12,TCallSlot:13,TCallBlock:14,TTranslation:15,TTranslationContext:16},re={First:1,Last:2,Index:4,Value:8},lr=new WeakMap;function Ms(e,t){let n={inPreTag:!1,customDirectives:t};if(typeof e=="string"){let i=Zt(`<t>${e}</t>`).firstChild;return ar(i,n)}let r=lr.get(e);return r||(r=ar(e.cloneNode(!0),n),lr.set(e,r)),r}function ar(e,t){return no(e),B(e,t)||{type:$.Text,value:""}}function B(e,t){return e instanceof Element?Bs(e,t)||js(e,t)||Ws(e,t)||Gs(e,t)||Js(e,t)||Qs(e,t)||zs(e,t)||Hs(e,t)||Us(e,t)||Ks(e,t)||Zs(e,t)||Ys(e,t)||Fs(e,t)||qs(e,t)||Is(e,t):Ls(e,t)}function Is(e,t){return e.tagName!=="t"?null:ft(e,t)}var Ps=/[\r\n]/;function Ls(e,t){if(e.nodeType===Node.TEXT_NODE){let n=e.textContent||"";return!t.inPreTag&&Ps.test(n)&&!n.trim()?null:{type:$.Text,value:n}}return null}function Bs(e,t){if(!t.customDirectives)return null;let n=e.getAttributeNames();for(let r of n){if(r==="t-custom"||r==="t-custom-")throw new g("Missing custom directive name with t-custom directive");if(r.startsWith("t-custom-")){let i=r.split(".")[0].slice(9),s=t.customDirectives[i];if(!s)throw new g(`Custom directive "${i}" is not defined`);let o=e.getAttribute(r),l=r.split(".").slice(1);e.removeAttribute(r);try{s(e,o,l)}catch(c){throw new g(`Custom directive "${i}" throw the following error: ${c}`)}return B(e,t)}}return null}function js(e,t){if(e.hasAttribute("t-debug")){e.removeAttribute("t-debug");let n=B(e,t),r={type:$.TDebug,content:n};return n?.hasNoRepresentation&&(r.hasNoRepresentation=!0),r}if(e.hasAttribute("t-log")){let n=e.getAttribute("t-log");e.removeAttribute("t-log");let r=B(e,t),i={type:$.TLog,expr:n,content:r};return r?.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}return null}var Vs=new Set(["svg","g","path"]);function Fs(e,t){let{tagName:n}=e,r=e.getAttribute("t-tag");if(e.removeAttribute("t-tag"),n==="t"&&!r)return null;if(n.startsWith("block-"))throw new g(`Invalid tag name: '${n}'`);t=Object.assign({},t),n==="pre"&&(t.inPreTag=!0);let i=!t.nameSpace&&Vs.has(n)?"http://www.w3.org/2000/svg":null,s=e.getAttribute("t-ref");e.removeAttribute("t-ref");let o=e.getAttributeNames(),l=null,c=null,h=null,a=null;for(let f of o){let m=e.getAttribute(f);if(f==="t-on"||f==="t-on-")throw new g("Missing event name with t-on directive");if(f.startsWith("t-on-"))h=h||{},h[f.slice(5)]=m;else if(f.startsWith("t-model")){if(!["input","select","textarea"].includes(n))throw new g("The t-model directive only works with <input>, <textarea> and <select>");let p=e.getAttribute("type"),b=n==="input",d=n==="select",S=b&&p==="checkbox",N=b&&p==="radio",w=f.includes(".trim"),T=w||f.includes(".lazy"),y=f.includes(".number"),E=f.includes(".proxy");a={expr:m,targetAttr:S?"checked":"value",specialInitTargetAttr:N?"checked":null,eventType:N?"click":d||T?"change":"input",hasDynamicChildren:!1,shouldTrim:w,shouldNumberize:y,isProxy:E},d&&(t=Object.assign({},t),t.tModelInfo=a)}else{if(f.startsWith("block-"))throw new g(`Invalid attribute: '${f}'`);if(f==="xmlns")i=m;else if(f.startsWith("t-translation-context-")){let p=f.slice(22);c=c||{},c[p]=m}else if(f!=="t-name"){if(f.startsWith("t-")&&!f.startsWith("t-att"))throw new g(`Unknown QWeb directive: '${f}'`);let p=t.tModelInfo;p&&["t-att-value","t-attf-value"].includes(f)&&(p.hasDynamicChildren=!0),l=l||{},l[f]=m}}}i&&(t.nameSpace=i);let u=Jt(e,t);return{type:$.DomNode,tag:n,dynamicTag:r,attrs:l,attrsTranslationCtx:c,on:h,ref:s,content:u,model:a,ns:i}}function Ks(e,t){if(!e.hasAttribute("t-out")&&!e.hasAttribute("t-esc"))return null;e.hasAttribute("t-esc")&&console.warn('t-esc has been deprecated in favor of t-out. If the value to render is not wrapped by the "markup" function, it will be escaped');let n=e.getAttribute("t-out")||e.getAttribute("t-esc");e.removeAttribute("t-out"),e.removeAttribute("t-esc");let r={type:$.TOut,expr:n,body:null},i=e.getAttribute("t-ref");e.removeAttribute("t-ref");let s=B(e,t);return s&&s.type===$.DomNode?(r.body=s.content.length?s.content:null,{...s,ref:i,content:[r]}):r}function Ws(e,t){if(!e.hasAttribute("t-foreach"))return null;let n=e.outerHTML,r=e.getAttribute("t-foreach");e.removeAttribute("t-foreach");let i=e.getAttribute("t-as")||"";e.removeAttribute("t-as");let s=e.getAttribute("t-key");if(!s)throw new g(`"Directive t-foreach should always be used with a t-key!" (expression: t-foreach="${r}" t-as="${i}")`);e.removeAttribute("t-key");let o=B(e,t);if(!o)return null;let l=!n.includes("t-call"),c=0;return l&&!n.includes(`${i}_first`)&&(c|=re.First),l&&!n.includes(`${i}_last`)&&(c|=re.Last),l&&!n.includes(`${i}_index`)&&(c|=re.Index),l&&!n.includes(`${i}_value`)&&(c|=re.Value),{type:$.TForEach,collection:r,elem:i,body:o,key:s,noFlags:c}}function Us(e,t){if(!e.hasAttribute("t-key"))return null;let n=e.getAttribute("t-key");e.removeAttribute("t-key");let r=B(e,t);if(!r)return null;let i={type:$.TKey,expr:n,content:r};return r.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}function zs(e,t){if(!e.hasAttribute("t-call"))return null;if(e.tagName!=="t")throw new g(`Directive 't-call' can only be used on <t> nodes (used on a <${e.tagName}>)`);let n=e.getAttribute("t-call"),r=e.getAttribute("t-call-context");e.removeAttribute("t-call"),e.removeAttribute("t-call-context");let i=null,s=null;for(let l of e.getAttributeNames()){let c=e.getAttribute(l);if(l.startsWith("t-translation-context-")){let h=l.slice(22);s=s||{},s[h]=c}else i=i||{},i[l]=c}let o=ft(e,t);return{type:$.TCall,name:n,attrs:i,attrsTranslationCtx:s,body:o,context:r}}function Hs(e,t){if(!e.hasAttribute("t-call-block"))return null;let n=e.getAttribute("t-call-block");return{type:$.TCallBlock,name:n}}function Gs(e,t){if(!e.hasAttribute("t-if"))return null;let n=e.getAttribute("t-if");e.removeAttribute("t-if");let r=B(e,t)||{type:$.Text,value:""},i=e.nextElementSibling,s=[];for(;i&&i.hasAttribute("t-elif");){let l=i.getAttribute("t-elif");i.removeAttribute("t-elif");let c=B(i,t),h=i.nextElementSibling;i.remove(),i=h,c&&s.push({condition:l,content:c})}let o=null;return i&&i.hasAttribute("t-else")&&(i.removeAttribute("t-else"),o=B(i,t),i.remove()),{type:$.TIf,condition:n,content:r,tElif:s.length?s:null,tElse:o}}function qs(e,t){if(!e.hasAttribute("t-set"))return null;let n=e.getAttribute("t-set"),r=e.getAttribute("t-value")||null,i=e.innerHTML===e.textContent&&e.textContent||null,s=null;return e.textContent!==e.innerHTML&&(s=Jt(e,t)),{type:$.TSet,name:n,value:r,defaultValue:i,body:s,hasNoRepresentation:!0}}var Xs=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 Ys(e,t){let n=e.tagName,r=n[0],i=e.hasAttribute("t-component");if(i&&n!=="t")throw new g(`Directive 't-component' can only be used on <t> nodes (used on a <${n}>)`);if(!(r===r.toUpperCase()||i))return null;i&&(n=e.getAttribute("t-component"),e.removeAttribute("t-component"));let s=e.getAttribute("t-props");e.removeAttribute("t-props");let o=e.getAttribute("t-slot-scope");e.removeAttribute("t-slot-scope");let l=null,c=null,h=null;for(let u of e.getAttributeNames()){let f=e.getAttribute(u);if(u.startsWith("t-translation-context-")){let m=u.slice(22);h=h||{},h[m]=f}else if(u.startsWith("t-"))if(u.startsWith("t-on-"))l=l||{},l[u.slice(5)]=f;else{let m=Xs.get(u.split("-").slice(0,2).join("-"));throw new g(m||`unsupported directive on Component: ${u}`)}else c=c||{},c[u]=f}let a=null;if(e.hasChildNodes()){let u=e.cloneNode(!0),f=Array.from(u.querySelectorAll("[t-set-slot]"));for(let p of f){if(p.tagName!=="t")throw new g(`Directive 't-set-slot' can only be used on <t> nodes (used on a <${p.tagName}>)`);let b=p.getAttribute("t-set-slot"),d=p.parentElement,S=!1;for(;d&&d!==u;){if(d.hasAttribute("t-component")||d.tagName[0]===d.tagName[0].toUpperCase()){S=!0;break}d=d.parentElement}if(S||!d)continue;p.removeAttribute("t-set-slot"),p.remove();let N=B(p,t),w=null,T=null,y=null,E=null;for(let v of p.getAttributeNames()){let k=p.getAttribute(v);if(v==="t-slot-scope"){E=k;continue}else if(v.startsWith("t-translation-context-")){let D=v.slice(22);y=y||{},y[D]=k}else v.startsWith("t-on-")?(w=w||{},w[v.slice(5)]=k):(T=T||{},T[v]=k)}a=a||{},a[b]={content:N,on:w,attrs:T,attrsTranslationCtx:y,scope:E}}let m=ft(u,t);a=a||{},m&&!a.default&&(a.default={content:m,on:null,attrs:null,attrsTranslationCtx:null,scope:o})}return{type:$.TComponent,name:n,isDynamic:i,dynamicProps:s,props:c,propsTranslationCtx:h,slots:a,on:l}}function Zs(e,t){if(!e.hasAttribute("t-call-slot")&&!e.hasAttribute("t-slot"))return null;e.hasAttribute("t-slot")&&console.warn("t-slot has been renamed t-call-slot.");let n=e.getAttribute("t-call-slot")||e.getAttribute("t-slot");e.removeAttribute("t-call-slot"),e.removeAttribute("t-slot");let r=null,i=null,s=null;for(let o of e.getAttributeNames()){let l=e.getAttribute(o);if(o.startsWith("t-on-"))s=s||{},s[o.slice(5)]=l;else if(o.startsWith("t-translation-context-")){let c=o.slice(22);i=i||{},i[c]=l}else r=r||{},r[o]=l}return{type:$.TCallSlot,name:n,attrs:r,attrsTranslationCtx:i,on:s,defaultContent:ft(e,t)}}function cr(e){let t={type:$.TTranslation,content:e};return e?.hasNoRepresentation&&(t.hasNoRepresentation=!0),t}function Js(e,t){if(e.getAttribute("t-translation")!=="off")return null;e.removeAttribute("t-translation");let n=B(e,t);if(n?.type===$.Multi){let r=n.content.map(cr);return Qt(r)}return cr(n)}function ur(e,t){let n={type:$.TTranslationContext,content:e,translationCtx:t};return e?.hasNoRepresentation&&(n.hasNoRepresentation=!0),n}function Qs(e,t){let n=e.getAttribute("t-translation-context");if(!n)return null;e.removeAttribute("t-translation-context");let r=B(e,t);if(r?.type===$.Multi){let i=r.content.map(s=>ur(s,n));return Qt(i)}return ur(r,n)}function Jt(e,t){let n=[];for(let r of e.childNodes){let i=B(r,t);i&&(i.type===$.Multi?n.push(...i.content):n.push(i))}return n}function Qt(e){let t={type:$.Multi,content:e};return e.every(n=>n.hasNoRepresentation)&&(t.hasNoRepresentation=!0),t}function ft(e,t){let n=Jt(e,t);switch(n.length){case 0:return null;case 1:return n[0];default:return Qt(n)}}function eo(e){let t=e.querySelectorAll("[t-elif], [t-else]");for(let n=0,r=t.length;n<r;n++){let i=t[n],s=i.previousElementSibling,o=c=>s.getAttribute(c),l=c=>+!!i.getAttribute(c);if(s&&(o("t-if")||o("t-elif"))){if(o("t-foreach"))throw new g("t-if cannot stay at the same level as t-foreach when using t-elif or t-else");if(["t-if","t-elif","t-else"].map(l).reduce(function(h,a){return h+a})>1)throw new g("Only one conditional branching directive is allowed per node");let c;for(;(c=i.previousSibling)!==s;){if(c.nodeValue.trim().length&&c.nodeType!==8)throw new g("text is not allowed between branching directives");c.remove()}}else throw new g("t-elif and t-else directives must be preceded by a t-if or t-elif directive")}}function to(e){let t=[...e.querySelectorAll("[t-out]")].filter(n=>n.tagName[0]===n.tagName[0].toUpperCase()||n.hasAttribute("t-component"));for(let n of t){if(n.childNodes.length)throw new g("Cannot have t-out on a component that already has content");let r=n.getAttribute("t-out");n.removeAttribute("t-out");let i=n.ownerDocument.createElement("t");r!=null&&i.setAttribute("t-out",r),n.appendChild(i)}}function no(e){eo(e),to(e)}var fr=Symbol("zero"),ro=/\s+/g,ne;typeof document<"u"&&(ne=document.implementation.createDocument(null,null,null));var io=new Set(["stop","capture","prevent","self","synthetic","passive"]),ct={};function I(e=""){return ct[e]=(ct[e]||0)+1,e+ct[e]}function so(e,t){switch(e){case"input":return t==="checked"||t==="indeterminate"||t==="value"||t==="readonly"||t==="readOnly"||t==="disabled";case"option":return t==="selected"||t==="disabled";case"textarea":return t==="value"||t==="readonly"||t==="readOnly"||t==="disabled";case"select":return t==="value"||t==="disabled";case"button":case"optgroup":return t==="disabled"}return!1}function at(e){return`\`${e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/,"\\${")}\``}var Yt=class mr{static nextBlockId=1;varName;blockName;dynamicTagName=null;isRoot=!1;hasDynamicChildren=!1;children=[];data=[];dom;currentDom;childNumber=0;target;type;parentVar="";id;constructor(t,n){this.id=mr.nextBlockId++,this.varName="b"+this.id,this.blockName="block"+this.id,this.target=t,this.type=n}insertData(t,n="d"){let r=I(n);return this.target.addLine(`let ${r} = ${t};`),this.data.push(r)-1}insert(t){this.currentDom?this.currentDom.appendChild(t):this.dom=t}generateExpr(t){if(this.type==="block"){let n=this.children.length,r=this.data.length?`[${this.data.join(", ")}]`:n?"[]":"";return n&&(r+=", ["+this.children.map(i=>i.varName).join(", ")+"]"),this.dynamicTagName?`toggler(${this.dynamicTagName}, ${this.blockName}(${this.dynamicTagName})(${r}))`:`${this.blockName}(${r})`}else if(this.type==="list")return`list(c_block${this.id})`;return t}asXmlString(){let t=ne.createElement("t");return t.appendChild(this.dom),t.innerHTML}};function ue(e,t){return Object.assign({block:null,index:0,forceNewBlock:!0,translate:e.translate,translationCtx:e.translationCtx,tKeyExpr:null,nameSpace:e.nameSpace,tModelSelectedExpr:e.tModelSelectedExpr},t)}var hr=class{name;indentLevel=0;loopLevel=0;loopCtxVars=[];tSetVars=new Map;code=[];hasRoot=!1;deferReturn=!1;needsScopeProtection=!1;on;constructor(e,t){this.name=e,this.on=t||null}addLine(e,t){let n=new Array(this.indentLevel+2).join(" ");t===void 0?this.code.push(n+e):this.code.splice(t,0,n+e)}generateCode(){let e=[];e.push(`function ${this.name}(ctx, node, key = "") {`),this.needsScopeProtection&&e.push(" ctx = Object.create(ctx);");for(let t of this.code)e.push(t);return this.hasRoot||e.push("return text('');"),e.push("}"),e.join(`
|
|
19
|
+
${"-".repeat(a-1)}^`)}}}throw new g(r)}return n}var $={Text:0,DomNode:2,Multi:3,TIf:4,TSet:5,TCall:6,TOut:7,TForEach:8,TKey:9,TComponent:10,TDebug:11,TLog:12,TCallSlot:13,TCallBlock:14,TTranslation:15,TTranslationContext:16},re={First:1,Last:2,Index:4,Value:8},lr=new WeakMap;function Ms(e,t){let n={inPreTag:!1,customDirectives:t};if(typeof e=="string"){let i=Zt(`<t>${e}</t>`).firstChild;return ar(i,n)}let r=lr.get(e);return r||(r=ar(e.cloneNode(!0),n),lr.set(e,r)),r}function ar(e,t){return no(e),B(e,t)||{type:$.Text,value:""}}function B(e,t){return e instanceof Element?Bs(e,t)||js(e,t)||Ws(e,t)||Gs(e,t)||Js(e,t)||Qs(e,t)||zs(e,t)||Hs(e,t)||Us(e,t)||Ks(e,t)||Zs(e,t)||Ys(e,t)||Fs(e,t)||qs(e,t)||Is(e,t):Ls(e,t)}function Is(e,t){return e.tagName!=="t"?null:ft(e,t)}var Ps=/[\r\n]/;function Ls(e,t){if(e.nodeType===Node.TEXT_NODE){let n=e.textContent||"";return!t.inPreTag&&Ps.test(n)&&!n.trim()?null:{type:$.Text,value:n}}return null}function Bs(e,t){if(!t.customDirectives)return null;let n=e.getAttributeNames();for(let r of n){if(r==="t-custom"||r==="t-custom-")throw new g("Missing custom directive name with t-custom directive");if(r.startsWith("t-custom-")){let i=r.split(".")[0].slice(9),s=t.customDirectives[i];if(!s)throw new g(`Custom directive "${i}" is not defined`);let o=e.getAttribute(r),l=r.split(".").slice(1);e.removeAttribute(r);try{s(e,o,l)}catch(c){throw new g(`Custom directive "${i}" throw the following error: ${c}`)}return B(e,t)}}return null}function js(e,t){if(e.hasAttribute("t-debug")){e.removeAttribute("t-debug");let n=B(e,t),r={type:$.TDebug,content:n};return n?.hasNoRepresentation&&(r.hasNoRepresentation=!0),r}if(e.hasAttribute("t-log")){let n=e.getAttribute("t-log");e.removeAttribute("t-log");let r=B(e,t),i={type:$.TLog,expr:n,content:r};return r?.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}return null}var Vs=new Set(["svg","g","path"]);function Fs(e,t){let{tagName:n}=e,r=e.getAttribute("t-tag");if(e.removeAttribute("t-tag"),n==="t"&&!r)return null;if(n.startsWith("block-"))throw new g(`Invalid tag name: '${n}'`);t=Object.assign({},t),n==="pre"&&(t.inPreTag=!0);let i=!t.nameSpace&&Vs.has(n)?"http://www.w3.org/2000/svg":null,s=e.getAttribute("t-ref");e.removeAttribute("t-ref");let o=e.getAttributeNames(),l=null,c=null,h=null,a=null;for(let f of o){let m=e.getAttribute(f);if(f==="t-on"||f==="t-on-")throw new g("Missing event name with t-on directive");if(f.startsWith("t-on-"))h=h||{},h[f.slice(5)]=m;else if(f.startsWith("t-model")){if(!["input","select","textarea"].includes(n))throw new g("The t-model directive only works with <input>, <textarea> and <select>");let p=e.getAttribute("type"),b=n==="input",d=n==="select",S=b&&p==="checkbox",N=b&&p==="radio",w=f.includes(".trim"),T=w||f.includes(".lazy"),y=f.includes(".number"),E=f.includes(".proxy");a={expr:m,targetAttr:S?"checked":"value",specialInitTargetAttr:N?"checked":null,eventType:N?"click":d||T?"change":"input",hasDynamicChildren:!1,shouldTrim:w,shouldNumberize:y,isProxy:E},d&&(t=Object.assign({},t),t.tModelInfo=a)}else{if(f.startsWith("block-"))throw new g(`Invalid attribute: '${f}'`);if(f==="xmlns")i=m;else if(f.startsWith("t-translation-context-")){let p=f.slice(22);c=c||{},c[p]=m}else if(f!=="t-name"){if(f.startsWith("t-")&&!f.startsWith("t-att"))throw new g(`Unknown QWeb directive: '${f}'`);let p=t.tModelInfo;p&&["t-att-value","t-attf-value"].includes(f)&&(p.hasDynamicChildren=!0),l=l||{},l[f]=m}}}i&&(t.nameSpace=i);let u=Jt(e,t);return{type:$.DomNode,tag:n,dynamicTag:r,attrs:l,attrsTranslationCtx:c,on:h,ref:s,content:u,model:a,ns:i}}function Ks(e,t){if(!e.hasAttribute("t-out")&&!e.hasAttribute("t-esc"))return null;e.hasAttribute("t-esc")&&console.warn('t-esc has been deprecated in favor of t-out. If the value to render is not wrapped by the "markup" function, it will be escaped');let n=e.getAttribute("t-out")||e.getAttribute("t-esc");e.removeAttribute("t-out"),e.removeAttribute("t-esc");let r={type:$.TOut,expr:n,body:null},i=e.getAttribute("t-ref");e.removeAttribute("t-ref");let s=B(e,t);return s&&s.type===$.DomNode?(r.body=s.content.length?s.content:null,{...s,ref:i,content:[r]}):r}function Ws(e,t){if(!e.hasAttribute("t-foreach"))return null;let n=e.outerHTML,r=e.getAttribute("t-foreach");e.removeAttribute("t-foreach");let i=e.getAttribute("t-as")||"";e.removeAttribute("t-as");let s=e.getAttribute("t-key");if(!s)throw new g(`"Directive t-foreach should always be used with a t-key!" (expression: t-foreach="${r}" t-as="${i}")`);e.removeAttribute("t-key");let o=B(e,t);if(!o)return null;let l=!n.includes("t-call"),c=0;return l&&!n.includes(`${i}_first`)&&(c|=re.First),l&&!n.includes(`${i}_last`)&&(c|=re.Last),l&&!n.includes(`${i}_index`)&&(c|=re.Index),l&&!n.includes(`${i}_value`)&&(c|=re.Value),{type:$.TForEach,collection:r,elem:i,body:o,key:s,noFlags:c}}function Us(e,t){if(!e.hasAttribute("t-key"))return null;let n=e.getAttribute("t-key");e.removeAttribute("t-key");let r=B(e,t);if(!r)return null;let i={type:$.TKey,expr:n,content:r};return r.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}function zs(e,t){if(!e.hasAttribute("t-call"))return null;if(e.tagName!=="t")throw new g(`Directive 't-call' can only be used on <t> nodes (used on a <${e.tagName}>)`);let n=e.getAttribute("t-call"),r=e.getAttribute("t-call-context");e.removeAttribute("t-call"),e.removeAttribute("t-call-context");let i=null,s=null;for(let l of e.getAttributeNames()){let c=e.getAttribute(l);if(l.startsWith("t-translation-context-")){let h=l.slice(22);s=s||{},s[h]=c}else i=i||{},i[l]=c}let o=ft(e,t);return{type:$.TCall,name:n,attrs:i,attrsTranslationCtx:s,body:o,context:r}}function Hs(e,t){if(!e.hasAttribute("t-call-block"))return null;let n=e.getAttribute("t-call-block");return{type:$.TCallBlock,name:n}}function Gs(e,t){if(!e.hasAttribute("t-if"))return null;let n=e.getAttribute("t-if");e.removeAttribute("t-if");let r=B(e,t)||{type:$.Text,value:""},i=e.nextElementSibling,s=[];for(;i&&i.hasAttribute("t-elif");){let l=i.getAttribute("t-elif");i.removeAttribute("t-elif");let c=B(i,t),h=i.nextElementSibling;i.remove(),i=h,c&&s.push({condition:l,content:c})}let o=null;return i&&i.hasAttribute("t-else")&&(i.removeAttribute("t-else"),o=B(i,t),i.remove()),{type:$.TIf,condition:n,content:r,tElif:s.length?s:null,tElse:o}}function qs(e,t){if(!e.hasAttribute("t-set"))return null;let n=e.getAttribute("t-set"),r=e.getAttribute("t-value")||null,i=e.innerHTML===e.textContent&&e.textContent||null,s=null;return e.textContent!==e.innerHTML&&(s=Jt(e,t)),{type:$.TSet,name:n,value:r,defaultValue:i,body:s,hasNoRepresentation:!0}}var Xs=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 Ys(e,t){let n=e.tagName,r=n[0],i=e.hasAttribute("t-component");if(i&&n!=="t")throw new g(`Directive 't-component' can only be used on <t> nodes (used on a <${n}>)`);if(!(r===r.toUpperCase()||i))return null;i&&(n=e.getAttribute("t-component"),e.removeAttribute("t-component"));let s=e.getAttribute("t-props");e.removeAttribute("t-props");let o=e.getAttribute("t-slot-scope");e.removeAttribute("t-slot-scope");let l=null,c=null,h=null;for(let u of e.getAttributeNames()){let f=e.getAttribute(u);if(u.startsWith("t-translation-context-")){let m=u.slice(22);h=h||{},h[m]=f}else if(u.startsWith("t-"))if(u.startsWith("t-on-"))l=l||{},l[u.slice(5)]=f;else{let m=Xs.get(u.split("-").slice(0,2).join("-"));throw new g(m||`unsupported directive on Component: ${u}`)}else c=c||{},c[u]=f}let a=null;if(e.hasChildNodes()){let u=e.cloneNode(!0),f=Array.from(u.querySelectorAll("[t-set-slot]"));for(let p of f){if(p.tagName!=="t")throw new g(`Directive 't-set-slot' can only be used on <t> nodes (used on a <${p.tagName}>)`);let b=p.getAttribute("t-set-slot"),d=p.parentElement,S=!1;for(;d&&d!==u;){if(d.hasAttribute("t-component")||d.tagName[0]===d.tagName[0].toUpperCase()){S=!0;break}d=d.parentElement}if(S||!d)continue;p.removeAttribute("t-set-slot"),p.remove();let N=B(p,t),w=null,T=null,y=null,E=null;for(let v of p.getAttributeNames()){let C=p.getAttribute(v);if(v==="t-slot-scope"){E=C;continue}else if(v.startsWith("t-translation-context-")){let D=v.slice(22);y=y||{},y[D]=C}else v.startsWith("t-on-")?(w=w||{},w[v.slice(5)]=C):(T=T||{},T[v]=C)}a=a||{},a[b]={content:N,on:w,attrs:T,attrsTranslationCtx:y,scope:E}}let m=ft(u,t);a=a||{},m&&!a.default&&(a.default={content:m,on:null,attrs:null,attrsTranslationCtx:null,scope:o})}return{type:$.TComponent,name:n,isDynamic:i,dynamicProps:s,props:c,propsTranslationCtx:h,slots:a,on:l}}function Zs(e,t){if(!e.hasAttribute("t-call-slot")&&!e.hasAttribute("t-slot"))return null;e.hasAttribute("t-slot")&&console.warn("t-slot has been renamed t-call-slot.");let n=e.getAttribute("t-call-slot")||e.getAttribute("t-slot");e.removeAttribute("t-call-slot"),e.removeAttribute("t-slot");let r=null,i=null,s=null;for(let o of e.getAttributeNames()){let l=e.getAttribute(o);if(o.startsWith("t-on-"))s=s||{},s[o.slice(5)]=l;else if(o.startsWith("t-translation-context-")){let c=o.slice(22);i=i||{},i[c]=l}else r=r||{},r[o]=l}return{type:$.TCallSlot,name:n,attrs:r,attrsTranslationCtx:i,on:s,defaultContent:ft(e,t)}}function cr(e){let t={type:$.TTranslation,content:e};return e?.hasNoRepresentation&&(t.hasNoRepresentation=!0),t}function Js(e,t){if(e.getAttribute("t-translation")!=="off")return null;e.removeAttribute("t-translation");let n=B(e,t);if(n?.type===$.Multi){let r=n.content.map(cr);return Qt(r)}return cr(n)}function ur(e,t){let n={type:$.TTranslationContext,content:e,translationCtx:t};return e?.hasNoRepresentation&&(n.hasNoRepresentation=!0),n}function Qs(e,t){let n=e.getAttribute("t-translation-context");if(!n)return null;e.removeAttribute("t-translation-context");let r=B(e,t);if(r?.type===$.Multi){let i=r.content.map(s=>ur(s,n));return Qt(i)}return ur(r,n)}function Jt(e,t){let n=[];for(let r of e.childNodes){let i=B(r,t);i&&(i.type===$.Multi?n.push(...i.content):n.push(i))}return n}function Qt(e){let t={type:$.Multi,content:e};return e.every(n=>n.hasNoRepresentation)&&(t.hasNoRepresentation=!0),t}function ft(e,t){let n=Jt(e,t);switch(n.length){case 0:return null;case 1:return n[0];default:return Qt(n)}}function eo(e){let t=e.querySelectorAll("[t-elif], [t-else]");for(let n=0,r=t.length;n<r;n++){let i=t[n],s=i.previousElementSibling,o=c=>s.getAttribute(c),l=c=>+!!i.getAttribute(c);if(s&&(o("t-if")||o("t-elif"))){if(o("t-foreach"))throw new g("t-if cannot stay at the same level as t-foreach when using t-elif or t-else");if(["t-if","t-elif","t-else"].map(l).reduce(function(h,a){return h+a})>1)throw new g("Only one conditional branching directive is allowed per node");let c;for(;(c=i.previousSibling)!==s;){if(c.nodeValue.trim().length&&c.nodeType!==8)throw new g("text is not allowed between branching directives");c.remove()}}else throw new g("t-elif and t-else directives must be preceded by a t-if or t-elif directive")}}function to(e){let t=[...e.querySelectorAll("[t-out]")].filter(n=>n.tagName[0]===n.tagName[0].toUpperCase()||n.hasAttribute("t-component"));for(let n of t){if(n.childNodes.length)throw new g("Cannot have t-out on a component that already has content");let r=n.getAttribute("t-out");n.removeAttribute("t-out");let i=n.ownerDocument.createElement("t");r!=null&&i.setAttribute("t-out",r),n.appendChild(i)}}function no(e){eo(e),to(e)}var fr=Symbol("zero"),ro=/\s+/g,ne;typeof document<"u"&&(ne=document.implementation.createDocument(null,null,null));var io=new Set(["stop","capture","prevent","self","synthetic","passive"]),ct={};function I(e=""){return ct[e]=(ct[e]||0)+1,e+ct[e]}function so(e,t){switch(e){case"input":return t==="checked"||t==="indeterminate"||t==="value"||t==="readonly"||t==="readOnly"||t==="disabled";case"option":return t==="selected"||t==="disabled";case"textarea":return t==="value"||t==="readonly"||t==="readOnly"||t==="disabled";case"select":return t==="value"||t==="disabled";case"button":case"optgroup":return t==="disabled"}return!1}function at(e){return`\`${e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/,"\\${")}\``}var Yt=class mr{static nextBlockId=1;varName;blockName;dynamicTagName=null;isRoot=!1;hasDynamicChildren=!1;children=[];data=[];dom;currentDom;childNumber=0;target;type;parentVar="";id;constructor(t,n){this.id=mr.nextBlockId++,this.varName="b"+this.id,this.blockName="block"+this.id,this.target=t,this.type=n}insertData(t,n="d"){let r=I(n);return this.target.addLine(`let ${r} = ${t};`),this.data.push(r)-1}insert(t){this.currentDom?this.currentDom.appendChild(t):this.dom=t}generateExpr(t){if(this.type==="block"){let n=this.children.length,r=this.data.length?`[${this.data.join(", ")}]`:n?"[]":"";return n&&(r+=", ["+this.children.map(i=>i.varName).join(", ")+"]"),this.dynamicTagName?`toggler(${this.dynamicTagName}, ${this.blockName}(${this.dynamicTagName})(${r}))`:`${this.blockName}(${r})`}else if(this.type==="list")return`list(c_block${this.id})`;return t}asXmlString(){let t=ne.createElement("t");return t.appendChild(this.dom),t.innerHTML}};function ue(e,t){return Object.assign({block:null,index:0,forceNewBlock:!0,translate:e.translate,translationCtx:e.translationCtx,tKeyExpr:null,nameSpace:e.nameSpace,tModelSelectedExpr:e.tModelSelectedExpr},t)}var hr=class{name;indentLevel=0;loopLevel=0;loopCtxVars=[];tSetVars=new Map;code=[];hasRoot=!1;deferReturn=!1;needsScopeProtection=!1;on;constructor(e,t){this.name=e,this.on=t||null}addLine(e,t){let n=new Array(this.indentLevel+2).join(" ");t===void 0?this.code.push(n+e):this.code.splice(t,0,n+e)}generateCode(){let e=[];e.push(`function ${this.name}(ctx, node, key = "") {`),this.needsScopeProtection&&e.push(" ctx = Object.create(ctx);");for(let t of this.code)e.push(t);return this.hasRoot||e.push("return text('');"),e.push("}"),e.join(`
|
|
20
20
|
`)}currentKey(e){let t=this.loopLevel?`key${this.loopLevel}`:"key";return e.tKeyExpr&&(t=`${e.tKeyExpr} + ${t}`),t}},dr=["alt","aria-label","aria-placeholder","aria-roledescription","aria-valuetext","label","placeholder","title"],oo=/^(\s*)([\s\S]+?)(\s*)$/,lo=class{blocks=[];nextBlockId=1;isDebug=!1;targets=[];target=new hr("template");templateName;dev;translateFn;translatableAttributes=dr;ast;staticDefs=[];slotNames=new Set;helpers=new Set;constructor(e,t){if(this.translateFn=t.translateFn||(n=>n),t.translatableAttributes){let n=new Set(dr);for(let r of t.translatableAttributes)r.startsWith("-")?n.delete(r.slice(1)):n.add(r);this.translatableAttributes=[...n]}this.dev=t.dev||!1,this.ast=e,this.templateName=t.name,t.name&&(t.name.startsWith("__")?this.target.name=t.name:this.target.name=`template_${t.name.replace(/[^a-zA-Z0-9_$]/g,"_")}`),t.hasGlobalValues&&this.helpers.add("__globals__")}generateCode(){let e=this.ast;this.isDebug=e.type===$.TDebug,Yt.nextBlockId=1,ct={},this.compileAST(e,{block:null,index:0,forceNewBlock:!1,translate:!0,translationCtx:"",tKeyExpr:null});let t=[" let { text, createBlock, list, multi, html, toggler } = bdom;"];this.helpers.size&&t.push(`let { ${[...this.helpers].join(", ")} } = helpers;`),this.templateName&&t.push(`// Template name: "${this.templateName}"`);for(let{id:r,expr:i}of this.staticDefs)t.push(`const ${r} = ${i};`);if(this.blocks.length){t.push("");for(let r of this.blocks)if(r.dom){let i=at(r.asXmlString());r.dynamicTagName?(i=i.replace(/^`<\w+/,`\`<\${tag || '${r.dom.nodeName}'}`),i=i.replace(/\w+>`$/,`\${tag || '${r.dom.nodeName}'}>\``),t.push(`let ${r.blockName} = tag => createBlock(${i});`)):t.push(`let ${r.blockName} = createBlock(${i});`)}}if(this.targets.length)for(let r of this.targets)t.push(""),t=t.concat(r.generateCode());t.push(""),t=t.concat("return "+this.target.generateCode());let n=t.join(`
|
|
21
21
|
`);if(this.isDebug){let r=`[Owl Debug]
|
|
22
|
-
${n}`;console.log(r)}return n}compileInNewTarget(e,t,n,r){let i=I(e),s=this.target,o=new hr(i,r);return this.targets.push(o),this.target=o,this.compileAST(t,ue(n)),this.target=s,i}addLine(e,t){this.target.addLine(e,t)}define(e,t){this.addLine(`const ${e} = ${t};`)}insertAnchor(e,t=e.children.length){let n=`block-child-${t}`,r=ne.createElement(n);e.insert(r)}createBlock(e,t,n){let r=this.target.hasRoot,i=new Yt(this.target,t);return r||(this.target.hasRoot=!0,i.isRoot=!0),e&&(e.children.push(i),e.type==="list"&&(i.parentVar=`c_block${e.id}`)),i}insertBlock(e,t,n){let r=t.generateExpr(e);if(t.parentVar){let i=this.target.currentKey(n);this.helpers.add("withKey"),this.addLine(`${t.parentVar}[${n.index}] = withKey(${r}, ${i});`);return}n.tKeyExpr&&(r=`toggler(${n.tKeyExpr}, ${r})`),t.isRoot&&!this.target.deferReturn?(this.target.on&&(r=this.wrapWithEventCatcher(r,this.target.on)),this.addLine(`return ${r};`)):this.define(t.varName,r)}translate(e,t){let n=oo.exec(e);return n[1]+this.translateFn(n[2],t)+n[3]}compileAST(e,t){switch(e.type){case $.Text:return this.compileText(e,t);case $.DomNode:return this.compileTDomNode(e,t);case $.TOut:return this.compileTOut(e,t);case $.TIf:return this.compileTIf(e,t);case $.TForEach:return this.compileTForeach(e,t);case $.TKey:return this.compileTKey(e,t);case $.Multi:return this.compileMulti(e,t);case $.TCall:return this.compileTCall(e,t);case $.TCallBlock:return this.compileTCallBlock(e,t);case $.TSet:return this.compileTSet(e,t);case $.TComponent:return this.compileComponent(e,t);case $.TDebug:return this.compileDebug(e,t);case $.TLog:return this.compileLog(e,t);case $.TCallSlot:return this.compileTCallSlot(e,t);case $.TTranslation:return this.compileTTranslation(e,t);case $.TTranslationContext:return this.compileTTranslationContext(e,t)}}compileDebug(e,t){return this.addLine("debugger;"),e.content?this.compileAST(e.content,t):null}compileLog(e,t){return this.addLine(`console.log(${_(e.expr)});`),e.content?this.compileAST(e.content,t):null}compileText(e,t){let{block:n,forceNewBlock:r}=t,i=e.value;if(i&&t.translate!==!1&&(i=this.translate(i,t.translationCtx)),t.inPreTag||(i=i.replace(ro," ")),!n||r)n=this.createBlock(n,"text",t),this.insertBlock(`text(${at(i)})`,n,{...t,forceNewBlock:r&&!n});else{let s=e.type===$.Text?ne.createTextNode:ne.createComment;n.insert(s.call(ne,i))}return n.varName}generateHandlerCode(e,t){let n=e.split(".").slice(1).map(h=>{if(!io.has(h))throw new g(`Unknown event modifier: '${h}'`);return`"${h}"`}),r="";n.length&&(r=`${n.join(",")}, `);let i=_(t);if(!i.trim())return`[${r}, ctx]`;let s,o=i.match(/^(\([^)]*\))\s*=>/),l=!o&&i.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=>/);if(o){let h=o[1].slice(1,-1).trim(),a=i.slice(o[0].length);s=h?`(ctx,${h})=>${a}`:`(ctx)=>${a}`}else if(l){let h=i.slice(l[0].length);s=`(ctx,${l[1]})=>${h}`}else this.helpers.add("callHandler"),s=`(ctx, ev) => callHandler(${i}, ctx, ev)`;let c=I("hdlr_fn");return this.staticDefs.push({id:c,expr:s}),`[${r}${c}, ctx]`}compileTDomNode(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r||e.dynamicTag!==null||e.ns,s=this.target.code.length;if(i&&((e.dynamicTag||t.tKeyExpr||e.ns)&&t.block&&this.insertAnchor(t.block),n=this.createBlock(n,"block",t),this.blocks.push(n),e.dynamicTag)){let a=I("tag");this.define(a,_(e.dynamicTag)),n.dynamicTagName=a}let o={};for(let a in e.attrs){let u,f;if(a.startsWith("t-attf")){u=Xt(e.attrs[a]);let m=n.insertData(u,"attr");f=a.slice(7),o["block-attribute-"+m]=f}else if(a.startsWith("t-att"))if(f=a==="t-att"?null:a.slice(6),u=_(e.attrs[a]),f&&so(e.tag,f)){f==="readonly"&&(f="readOnly"),f==="value"?u=`new String((${u}) === 0 ? 0 : ((${u}) || ""))`:u=`new Boolean(${u})`;let m=n.insertData(u,"prop");o[`block-property-${m}`]=f}else{let m=n.insertData(u,"attr");a==="t-att"?o["block-attributes"]=String(m):o[`block-attribute-${m}`]=f}else if(this.translatableAttributes.includes(a)){let m=e.attrsTranslationCtx?.[a]||t.translationCtx;o[a]=this.translateFn(e.attrs[a],m)}else u=`"${e.attrs[a]}"`,f=a,o[a]=e.attrs[a];if(f==="value"&&t.tModelSelectedExpr){let m=n.insertData(`${t.tModelSelectedExpr} === ${u}`,"attr");o[`block-attribute-${m}`]="selected"}}let l;if(e.model){let{hasDynamicChildren:a,expr:u,eventType:f,shouldNumberize:m,shouldTrim:p,targetAttr:b,specialInitTargetAttr:d,isProxy:S}=e.model,N,w;if(S){let v=_(u);N=v,w=k=>`${v} = ${k}`}else{let v=I("expr"),k=_(u);this.helpers.add("modelExpr"),this.define(v,`modelExpr(${k})`),N=`${v}()`,w=D=>`${v}.set(${D})`}let T;if(d){let v=b in o&&`'${o[b]}'`;if(!v&&e.attrs){let k=e.attrs[`t-att-${b}`];k&&(v=_(k))}T=n.insertData(`${N} === ${v}`,"prop"),o[`block-property-${T}`]=d}else a?(l=`${I("bValue")}`,this.define(l,N)):(T=n.insertData(N,"prop"),o[`block-property-${T}`]=b);this.helpers.add("toNumber");let y=`ev.target.${b}`;y=p?`${y}.trim()`:y,y=m?`toNumber(${y})`:y;let E=`[(ctx, ev) => { ${w(y)}; }, ctx]`;T=n.insertData(E,"hdlr"),o[`block-handler-${T}`]=f}for(let a in e.on){let u=this.generateHandlerCode(a,e.on[a]),f=n.insertData(u,"hdlr");o[`block-handler-${f}`]=a}if(e.ref){let a=_(e.ref);this.helpers.add("createRef");let u=`createRef(${a}, node)`,f=n.insertData(u,"ref");o["block-ref"]=String(f)}let c=e.ns||t.nameSpace,h=c?ne.createElementNS(c,e.tag):ne.createElement(e.tag);for(let[a,u]of Object.entries(o))a==="class"&&u===""||h.setAttribute(a,u);if(n.insert(h),e.content.length){let a=n.currentDom;n.currentDom=h;let u=e.content;for(let f=0;f<u.length;f++){let m=e.content[f],p=ue(t,{block:n,index:n.childNumber,forceNewBlock:!1,tKeyExpr:t.tKeyExpr,nameSpace:c,tModelSelectedExpr:l,inPreTag:t.inPreTag||e.tag==="pre"});this.compileAST(m,p)}n.currentDom=a}if(i&&(this.insertBlock(`${n.blockName}(ddd)`,n,t),n.children.length&&n.hasDynamicChildren)){let a=this.target.code,u=n.children.slice(),f=u.shift();for(let m=s;m<a.length&&!(a[m].trimStart().startsWith(`const ${f.varName} `)&&(a[m]=a[m].replace(`const ${f.varName}`,f.varName),f=u.shift(),!f));m++);this.addLine(`let ${n.children.map(m=>m.varName).join(", ")};`,s)}return n.varName}compileZero(){this.helpers.add("zero");let e=this.slotNames.has(fr);this.slotNames.add(fr);let t=this.target.loopLevel?`key${this.target.loopLevel}`:"key";return e&&(t=this.generateComponentKey(t)),`ctx[zero]?.(node, ${t}) || text("")`}compileTOut(e,t){let{block:n}=t;n&&this.insertAnchor(n),n=this.createBlock(n,"html",t);let r;if(e.expr==="0")r=this.compileZero();else if(e.body){let i=null;i=Yt.nextBlockId;let s=ue(t);this.compileAST({type:$.Multi,content:e.body},s),this.helpers.add("safeOutput"),r=`safeOutput(${_(e.expr)}, b${i})`}else this.helpers.add("safeOutput"),r=`safeOutput(${_(e.expr)})`;return this.insertBlock(r,n,t),n.varName}compileTIfBranch(e,t,n){this.target.indentLevel++;let r=t.children.length;this.compileAST(e,ue(n,{block:t,index:n.index})),t.children.length>r&&this.insertAnchor(t,r),this.target.indentLevel--}compileTIf(e,t,n){let{block:r,forceNewBlock:i}=t,s=this.target.code.length,o=!r||r.type!=="multi"&&i;if(r&&(r.hasDynamicChildren=!0),(!r||r.type!=="multi"&&i)&&(r=this.createBlock(r,"multi",t)),this.addLine(`if (${_(e.condition)}) {`),this.compileTIfBranch(e.content,r,t),e.tElif)for(let l of e.tElif)this.addLine(`} else if (${_(l.condition)}) {`),this.compileTIfBranch(l.content,r,t);if(e.tElse&&(this.addLine("} else {"),this.compileTIfBranch(e.tElse,r,t)),this.addLine("}"),o){if(r.children.length){let c=this.target.code,h=r.children.slice(),a=h.shift();for(let u=s;u<c.length&&!(c[u].trimStart().startsWith(`const ${a.varName} `)&&(c[u]=c[u].replace(`const ${a.varName}`,a.varName),a=h.shift(),!a));u++);this.addLine(`let ${r.children.map(u=>u.varName).join(", ")};`,s)}let l=r.children.map(c=>c.varName).join(", ");this.insertBlock(`multi([${l}])`,r,t)}return r.varName}compileTForeach(e,t){let{block:n}=t;n&&this.insertAnchor(n),n=this.createBlock(n,"list",t),this.target.loopLevel++;let r=`i${this.target.loopLevel}`,i=I("ctx");this.addLine(`const ${i} = ctx;`),this.target.loopCtxVars.push(i);let s=`v_block${n.id}`,o=`k_block${n.id}`,l=`l_block${n.id}`,c=`c_block${n.id}`;this.helpers.add("prepareList"),this.define(`[${o}, ${s}, ${l}, ${c}]`,`prepareList(${_(e.collection)});`),this.dev&&this.define(`keys${n.id}`,"new Set()"),this.addLine(`for (let ${r} = 0; ${r} < ${l}; ${r}++) {`),this.target.indentLevel++,this.addLine(`let ctx = Object.create(${i});`),this.addLine(`ctx[\`${e.elem}\`] = ${o}[${r}];`),e.noFlags&re.First||this.addLine(`ctx[\`${e.elem}_first\`] = ${r} === 0;`),e.noFlags&re.Last||this.addLine(`ctx[\`${e.elem}_last\`] = ${r} === ${o}.length - 1;`),e.noFlags&re.Index||this.addLine(`ctx[\`${e.elem}_index\`] = ${r};`),e.noFlags&re.Value||this.addLine(`ctx[\`${e.elem}_value\`] = ${s}[${r}];`),this.define(`key${this.target.loopLevel}`,e.key?_(e.key):r),this.dev&&(this.helpers.add("OwlError"),this.addLine(`if (keys${n.id}.has(String(key${this.target.loopLevel}))) { throw new OwlError(\`Got duplicate key in t-foreach: \${key${this.target.loopLevel}}\`)}`),this.addLine(`keys${n.id}.add(String(key${this.target.loopLevel}));`));let h=ue(t,{block:n,index:r});return this.compileAST(e.body,h),this.target.indentLevel--,this.target.loopLevel--,this.target.loopCtxVars.pop(),this.addLine("}"),this.insertBlock("l",n,t),n.varName}compileTKey(e,t){let n=I("tKey_");return this.define(n,_(e.expr)),t=ue(t,{tKeyExpr:n,block:t.block,index:t.index}),this.compileAST(e.content,t)}compileMulti(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r,s=this.target.code.length;if(i){let l=e.content.filter(h=>!h.hasNoRepresentation).length,c=null;if(l<=1){let h=!this.target.hasRoot&&e.content[e.content.length-1].hasNoRepresentation;h&&(this.target.deferReturn=!0);for(let a of e.content){let u=this.compileAST(a,t);c=c||u}return h&&(this.target.deferReturn=!1,this.addLine(`return ${c};`)),c}n=this.createBlock(n,"multi",t)}let o=0;for(let l=0,c=e.content.length;l<c;l++){let h=e.content[l],a=!h.hasNoRepresentation,u=ue(t,{block:n,index:o,forceNewBlock:a});this.compileAST(h,u),a&&o++}if(i){if(n.hasDynamicChildren&&n.children.length){let c=this.target.code,h=n.children.slice(),a=h.shift();for(let u=s;u<c.length&&!(c[u].trimStart().startsWith(`const ${a.varName} `)&&(c[u]=c[u].replace(`const ${a.varName}`,a.varName),a=h.shift(),!a));u++);this.addLine(`let ${n.children.map(u=>u.varName).join(", ")};`,s)}let l=n.children.map(c=>c.varName).join(", ");this.insertBlock(`multi([${l}])`,n,t)}return n.varName}compileTCall(e,t){let{block:n,forceNewBlock:r}=t,i=e.attrs?this.formatPropObject(e.attrs,e.attrsTranslationCtx,t.translationCtx):[],o=ut.test(e.name)?Xt(e.name):"`"+e.name+"`";if(n&&!r&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),e.body){let a=this.compileInNewTarget("callBody",e.body,t),u=I("lazyBlock");this.define(u,`${a}.bind(this, ctx)`),this.helpers.add("zero"),i.push(`[zero]: ${u}`)}let l,c=`{${i.join(", ")}}`;if(e.context){let a=I("ctx");this.addLine(`const ${a} = ${_(e.context)};`),i.length?l=`Object.assign({this: ${a}}, ${c})`:l=`{this: ${a}}`}else i.length===0?l="ctx":l=`Object.assign(Object.create(ctx), ${c})`;let h=this.generateComponentKey();return this.helpers.add("callTemplate"),this.insertBlock(`callTemplate(${o}, this, app, ${l}, node, ${h})`,n,{...t,forceNewBlock:!n}),n.varName}compileTCallBlock(e,t){let{block:n,forceNewBlock:r}=t;return n&&(r||this.insertAnchor(n)),n=this.createBlock(n,"multi",t),this.insertBlock(_(e.name),n,{...t,forceNewBlock:!n}),n.varName}compileTSet(e,t){let n=e.value?_(e.value||""):"null",r=this.target.loopLevel===0,i=this.target.tSetVars.get(e.name),s=i!==void 0&&this.target.loopLevel>i;if(e.body){this.helpers.add("LazyValue");let o={type:$.Multi,content:e.body},l=this.compileInNewTarget("value",o,t),c=this.target.currentKey(t),h=`new LazyValue(${l}, ctx, this, node, ${c})`;if(h=e.value?h?`withDefault(${n}, ${h})`:n:h,this.helpers.add("withDefault"),s){let a=this.target.loopCtxVars[i];this.addLine(`${a}[\`${e.name}\`] = ${h};`)}else r?(this.target.needsScopeProtection=!0,this.addLine(`ctx[\`${e.name}\`] = ${h};`),this.target.tSetVars.set(e.name,0)):(this.addLine(`ctx[\`${e.name}\`] = ${h};`),this.target.tSetVars.set(e.name,this.target.loopLevel))}else{let o;if(e.defaultValue){let l=at(t.translate?this.translate(e.defaultValue,t.translationCtx):e.defaultValue);e.value?(this.helpers.add("withDefault"),o=`withDefault(${n}, ${l})`):o=l}else o=n;if(s){let l=this.target.loopCtxVars[i];this.addLine(`${l}["${e.name}"] = ${o};`)}else r?(this.target.needsScopeProtection=!0,this.addLine(`ctx["${e.name}"] = ${o};`),this.target.tSetVars.set(e.name,0)):(this.addLine(`ctx["${e.name}"] = ${o};`),this.target.tSetVars.set(e.name,this.target.loopLevel))}return null}generateComponentKey(e="key"){let t=[I("__")];for(let n=0;n<this.target.loopLevel;n++)t.push(`\${key${n+1}}`);return`${e} + \`${t.join("__")}\``}generateSignalCacheKey(){let e=[I("__sig_")];for(let t=0;t<this.target.loopLevel;t++)e.push(`\${key${t+1}}`);return`\`${e.join("__")}\``}formatProp(e,t,n,r){if(e.endsWith(".translate")){let i=n?.[e]||r;t=at(this.translateFn(t,i))}else t=_(t);if(e.includes(".")){let[i,s]=e.split(".");switch(e=i,s){case"bind":t=`(${t}).bind(this)`;break;case"alike":case"translate":break;default:throw new g(`Invalid prop suffix: ${s}`)}}return e=/^[a-z_]+$/i.test(e)?e:`'${e}'`,`${e}: ${t||void 0}`}formatPropObject(e,t,n){return Object.entries(e).map(([r,i])=>this.formatProp(r,i,t,n))}getPropString(e,t){let n=`{${e.join(",")}}`;return t&&(n=`Object.assign({}, ${_(t)}${e.length?", "+n:""})`),n}compileComponent(e,t){let{block:n}=t,r="slots"in(e.props||{}),i=[],s=[];for(let m in e.props||{}){let[p,b]=m.split(".");if(b==="signal"){let w=_(e.props[m]),T=/^[a-z_]+$/i.test(p)?p:`'${p}'`;this.helpers.add("toSignal");let y=this.generateSignalCacheKey();i.push(`${T}: toSignal(node, ${y}, ${w})`);continue}if(b){i.push(this.formatProp(m,e.props[m],e.propsTranslationCtx,t.translationCtx));continue}let{expr:d,freeVariables:S}=pr(e.props[m]),N=/^[a-z_]+$/i.test(p)?p:`'${p}'`;if(i.push(`${N}: ${d||void 0}`),S)for(let w of S){let T=`${p}.${w}`;s.push(`"${T}"`),i.push(`"${T}": ctx['${w}']`)}else s.push(`"${p}"`)}let o="";if(e.slots){let m=[];for(let p in e.slots){let b=e.slots[p],d=[];if(b.content){let w=this.compileInNewTarget("slot",b.content,t,b.on);d.push(`__render: ${w}.bind(this), __ctx: ctx`)}let S=e.slots[p].scope;S&&d.push(`__scope: "${S}"`),e.slots[p].attrs&&d.push(...this.formatPropObject(e.slots[p].attrs,e.slots[p].attrsTranslationCtx,t.translationCtx));let N=`{${d.join(", ")}}`;m.push(`'${p}': ${N}`)}o=`{${m.join(", ")}}`}o&&!(e.dynamicProps||r)&&(this.helpers.add("markRaw"),i.push(`slots: markRaw(${o})`));let l=this.getPropString(i,e.dynamicProps),c;(o&&(e.dynamicProps||r)||this.dev)&&(c=I("props"),this.define(c,l),l=c),o&&(e.dynamicProps||r)&&(this.helpers.add("markRaw"),this.addLine(`${c}.slots = markRaw(Object.assign(${o}, ${c}.slots))`));let h;e.isDynamic?(h=I("Comp"),this.define(h,_(e.name))):h=`\`${e.name}\``,n&&(t.forceNewBlock===!1||t.tKeyExpr)&&this.insertAnchor(n);let a=this.generateComponentKey();t.tKeyExpr&&(a=`${t.tKeyExpr} + ${a}`);let u=I("comp");this.helpers.add("createComponent"),this.staticDefs.push({id:u,expr:`createComponent(app, ${e.isDynamic?null:h}, ${!e.isDynamic}, ${!!e.slots}, ${!!e.dynamicProps}, [${s}])`}),e.isDynamic&&(a=`(${h}).name + ${a}`);let f=`${u}(${l}, ${a}, node, this, ${e.isDynamic?h:null})`;return e.isDynamic&&(f=`toggler(${h}, ${f})`),e.on&&(f=this.wrapWithEventCatcher(f,e.on)),n=this.createBlock(n,"multi",t),this.insertBlock(f,n,t),n.varName}wrapWithEventCatcher(e,t){this.helpers.add("createCatcher");let n=I("catcher"),r={},i=[];for(let s in t){let o=I("hdlr"),l=i.push(o)-1;r[s]=l;let c=this.generateHandlerCode(s,t[s]);this.define(o,c)}return this.staticDefs.push({id:n,expr:`createCatcher(${JSON.stringify(r)})`}),`${n}(${e}, [${i.join(",")}])`}compileTCallSlot(e,t){this.helpers.add("callSlot");let{block:n}=t,r,i,s=!1,o=!1;e.name.match(ut)?(s=!0,o=!0,i=Xt(e.name)):(i="'"+e.name+"'",o=o||this.slotNames.has(e.name),this.slotNames.add(e.name));let l={...e.attrs},c=l["t-props"];delete l["t-props"];let h=this.target.loopLevel?`key${this.target.loopLevel}`:"key";o&&(h=this.generateComponentKey(h));let a=e.attrs?this.formatPropObject(l,e.attrsTranslationCtx,t.translationCtx):[],u=this.getPropString(a,c);if(e.defaultContent){let f=this.compileInNewTarget("defaultContent",e.defaultContent,t);r=`callSlot(ctx, node, ${h}, ${i}, ${s}, ${u}, ${f}.bind(this))`}else if(s){let f=I("slot");this.define(f,i),r=`toggler(${f}, callSlot(ctx, node, ${h}, ${f}, ${s}, ${u}))`}else r=`callSlot(ctx, node, ${h}, ${i}, ${s}, ${u})`;return e.on&&(r=this.wrapWithEventCatcher(r,e.on)),n&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),this.insertBlock(r,n,{...t,forceNewBlock:!1}),n.varName}compileTTranslation(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translate:!1})):null}compileTTranslationContext(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translationCtx:e.translationCtx})):null}};function gr(e,t={hasGlobalValues:!1}){let n=Ms(e,t.customDirectives),i=new lo(n,t).generateCode();try{return new Function("app, bdom, helpers",i)}catch(s){let{name:o}=t,l=o?`template "${o}"`:"anonymous template",c=new g(`Failed to compile ${l}: ${s.message}
|
|
22
|
+
${n}`;console.log(r)}return n}compileInNewTarget(e,t,n,r){let i=I(e),s=this.target,o=new hr(i,r);return this.targets.push(o),this.target=o,this.compileAST(t,ue(n)),this.target=s,i}addLine(e,t){this.target.addLine(e,t)}define(e,t){this.addLine(`const ${e} = ${t};`)}insertAnchor(e,t=e.children.length){let n=`block-child-${t}`,r=ne.createElement(n);e.insert(r)}createBlock(e,t,n){let r=this.target.hasRoot,i=new Yt(this.target,t);return r||(this.target.hasRoot=!0,i.isRoot=!0),e&&(e.children.push(i),e.type==="list"&&(i.parentVar=`c_block${e.id}`)),i}insertBlock(e,t,n){let r=t.generateExpr(e);if(t.parentVar){let i=this.target.currentKey(n);this.helpers.add("withKey"),this.addLine(`${t.parentVar}[${n.index}] = withKey(${r}, ${i});`);return}n.tKeyExpr&&(r=`toggler(${n.tKeyExpr}, ${r})`),t.isRoot&&!this.target.deferReturn?(this.target.on&&(r=this.wrapWithEventCatcher(r,this.target.on)),this.addLine(`return ${r};`)):this.define(t.varName,r)}translate(e,t){let n=oo.exec(e);return n[1]+this.translateFn(n[2],t)+n[3]}compileAST(e,t){switch(e.type){case $.Text:return this.compileText(e,t);case $.DomNode:return this.compileTDomNode(e,t);case $.TOut:return this.compileTOut(e,t);case $.TIf:return this.compileTIf(e,t);case $.TForEach:return this.compileTForeach(e,t);case $.TKey:return this.compileTKey(e,t);case $.Multi:return this.compileMulti(e,t);case $.TCall:return this.compileTCall(e,t);case $.TCallBlock:return this.compileTCallBlock(e,t);case $.TSet:return this.compileTSet(e,t);case $.TComponent:return this.compileComponent(e,t);case $.TDebug:return this.compileDebug(e,t);case $.TLog:return this.compileLog(e,t);case $.TCallSlot:return this.compileTCallSlot(e,t);case $.TTranslation:return this.compileTTranslation(e,t);case $.TTranslationContext:return this.compileTTranslationContext(e,t)}}compileDebug(e,t){return this.addLine("debugger;"),e.content?this.compileAST(e.content,t):null}compileLog(e,t){return this.addLine(`console.log(${_(e.expr)});`),e.content?this.compileAST(e.content,t):null}compileText(e,t){let{block:n,forceNewBlock:r}=t,i=e.value;if(i&&t.translate!==!1&&(i=this.translate(i,t.translationCtx)),t.inPreTag||(i=i.replace(ro," ")),!n||r)n=this.createBlock(n,"text",t),this.insertBlock(`text(${at(i)})`,n,{...t,forceNewBlock:r&&!n});else{let s=e.type===$.Text?ne.createTextNode:ne.createComment;n.insert(s.call(ne,i))}return n.varName}generateHandlerCode(e,t){let n=e.split(".").slice(1).map(h=>{if(!io.has(h))throw new g(`Unknown event modifier: '${h}'`);return`"${h}"`}),r="";n.length&&(r=`${n.join(",")}, `);let i=_(t);if(!i.trim())return`[${r}, ctx]`;let s,o=i.match(/^(\([^)]*\))\s*=>/),l=!o&&i.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=>/);if(o){let h=o[1].slice(1,-1).trim(),a=i.slice(o[0].length);s=h?`(ctx,${h})=>${a}`:`(ctx)=>${a}`}else if(l){let h=i.slice(l[0].length);s=`(ctx,${l[1]})=>${h}`}else this.helpers.add("callHandler"),s=`(ctx, ev) => callHandler(${i}, ctx, ev)`;let c=I("hdlr_fn");return this.staticDefs.push({id:c,expr:s}),`[${r}${c}, ctx]`}compileTDomNode(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r||e.dynamicTag!==null||e.ns,s=this.target.code.length;if(i&&((e.dynamicTag||t.tKeyExpr||e.ns)&&t.block&&this.insertAnchor(t.block),n=this.createBlock(n,"block",t),this.blocks.push(n),e.dynamicTag)){let a=I("tag");this.define(a,_(e.dynamicTag)),n.dynamicTagName=a}let o={};for(let a in e.attrs){let u,f;if(a.startsWith("t-attf")){u=Xt(e.attrs[a]);let m=n.insertData(u,"attr");f=a.slice(7),o["block-attribute-"+m]=f}else if(a.startsWith("t-att"))if(f=a==="t-att"?null:a.slice(6),u=_(e.attrs[a]),f&&so(e.tag,f)){f==="readonly"&&(f="readOnly"),f==="value"?u=`new String((${u}) === 0 ? 0 : ((${u}) || ""))`:u=`new Boolean(${u})`;let m=n.insertData(u,"prop");o[`block-property-${m}`]=f}else{let m=n.insertData(u,"attr");a==="t-att"?o["block-attributes"]=String(m):o[`block-attribute-${m}`]=f}else if(this.translatableAttributes.includes(a)){let m=e.attrsTranslationCtx?.[a]||t.translationCtx;o[a]=this.translateFn(e.attrs[a],m)}else u=`"${e.attrs[a]}"`,f=a,o[a]=e.attrs[a];if(f==="value"&&t.tModelSelectedExpr){let m=n.insertData(`${t.tModelSelectedExpr} === ${u}`,"attr");o[`block-attribute-${m}`]="selected"}}let l;if(e.model){let{hasDynamicChildren:a,expr:u,eventType:f,shouldNumberize:m,shouldTrim:p,targetAttr:b,specialInitTargetAttr:d,isProxy:S}=e.model,N,w;if(S){let v=_(u);N=v,w=C=>`${v} = ${C}`}else{let v=I("expr"),C=_(u);this.helpers.add("modelExpr"),this.define(v,`modelExpr(${C})`),N=`${v}()`,w=D=>`${v}.set(${D})`}let T;if(d){let v=b in o&&`'${o[b]}'`;if(!v&&e.attrs){let C=e.attrs[`t-att-${b}`];C&&(v=_(C))}T=n.insertData(`${N} === ${v}`,"prop"),o[`block-property-${T}`]=d}else a?(l=`${I("bValue")}`,this.define(l,N)):(T=n.insertData(N,"prop"),o[`block-property-${T}`]=b);this.helpers.add("toNumber");let y=`ev.target.${b}`;y=p?`${y}.trim()`:y,y=m?`toNumber(${y})`:y;let E=`[(ctx, ev) => { ${w(y)}; }, ctx]`;T=n.insertData(E,"hdlr"),o[`block-handler-${T}`]=f}for(let a in e.on){let u=this.generateHandlerCode(a,e.on[a]),f=n.insertData(u,"hdlr");o[`block-handler-${f}`]=a}if(e.ref){let a=_(e.ref);this.helpers.add("createRef");let u=`createRef(${a}, node)`,f=n.insertData(u,"ref");o["block-ref"]=String(f)}let c=e.ns||t.nameSpace,h=c?ne.createElementNS(c,e.tag):ne.createElement(e.tag);for(let[a,u]of Object.entries(o))a==="class"&&u===""||h.setAttribute(a,u);if(n.insert(h),e.content.length){let a=n.currentDom;n.currentDom=h;let u=e.content;for(let f=0;f<u.length;f++){let m=e.content[f],p=ue(t,{block:n,index:n.childNumber,forceNewBlock:!1,tKeyExpr:t.tKeyExpr,nameSpace:c,tModelSelectedExpr:l,inPreTag:t.inPreTag||e.tag==="pre"});this.compileAST(m,p)}n.currentDom=a}if(i&&(this.insertBlock(`${n.blockName}(ddd)`,n,t),n.children.length&&n.hasDynamicChildren)){let a=this.target.code,u=n.children.slice(),f=u.shift();for(let m=s;m<a.length&&!(a[m].trimStart().startsWith(`const ${f.varName} `)&&(a[m]=a[m].replace(`const ${f.varName}`,f.varName),f=u.shift(),!f));m++);this.addLine(`let ${n.children.map(m=>m.varName).join(", ")};`,s)}return n.varName}compileZero(){this.helpers.add("zero");let e=this.slotNames.has(fr);this.slotNames.add(fr);let t=this.target.loopLevel?`key${this.target.loopLevel}`:"key";return e&&(t=this.generateComponentKey(t)),`ctx[zero]?.(node, ${t}) || text("")`}compileTOut(e,t){let{block:n}=t;n&&this.insertAnchor(n),n=this.createBlock(n,"html",t);let r;if(e.expr==="0")r=this.compileZero();else if(e.body){let i=null;i=Yt.nextBlockId;let s=ue(t);this.compileAST({type:$.Multi,content:e.body},s),this.helpers.add("safeOutput"),r=`safeOutput(${_(e.expr)}, b${i})`}else this.helpers.add("safeOutput"),r=`safeOutput(${_(e.expr)})`;return this.insertBlock(r,n,t),n.varName}compileTIfBranch(e,t,n){this.target.indentLevel++;let r=t.children.length;this.compileAST(e,ue(n,{block:t,index:n.index})),t.children.length>r&&this.insertAnchor(t,r),this.target.indentLevel--}compileTIf(e,t,n){let{block:r,forceNewBlock:i}=t,s=this.target.code.length,o=!r||r.type!=="multi"&&i;if(r&&(r.hasDynamicChildren=!0),(!r||r.type!=="multi"&&i)&&(r=this.createBlock(r,"multi",t)),this.addLine(`if (${_(e.condition)}) {`),this.compileTIfBranch(e.content,r,t),e.tElif)for(let l of e.tElif)this.addLine(`} else if (${_(l.condition)}) {`),this.compileTIfBranch(l.content,r,t);if(e.tElse&&(this.addLine("} else {"),this.compileTIfBranch(e.tElse,r,t)),this.addLine("}"),o){if(r.children.length){let c=this.target.code,h=r.children.slice(),a=h.shift();for(let u=s;u<c.length&&!(c[u].trimStart().startsWith(`const ${a.varName} `)&&(c[u]=c[u].replace(`const ${a.varName}`,a.varName),a=h.shift(),!a));u++);this.addLine(`let ${r.children.map(u=>u.varName).join(", ")};`,s)}let l=r.children.map(c=>c.varName).join(", ");this.insertBlock(`multi([${l}])`,r,t)}return r.varName}compileTForeach(e,t){let{block:n}=t;n&&this.insertAnchor(n),n=this.createBlock(n,"list",t),this.target.loopLevel++;let r=`i${this.target.loopLevel}`,i=I("ctx");this.addLine(`const ${i} = ctx;`),this.target.loopCtxVars.push(i);let s=`v_block${n.id}`,o=`k_block${n.id}`,l=`l_block${n.id}`,c=`c_block${n.id}`;this.helpers.add("prepareList"),this.define(`[${o}, ${s}, ${l}, ${c}]`,`prepareList(${_(e.collection)});`),this.dev&&this.define(`keys${n.id}`,"new Set()"),this.addLine(`for (let ${r} = 0; ${r} < ${l}; ${r}++) {`),this.target.indentLevel++,this.addLine(`let ctx = Object.create(${i});`),this.addLine(`ctx[\`${e.elem}\`] = ${o}[${r}];`),e.noFlags&re.First||this.addLine(`ctx[\`${e.elem}_first\`] = ${r} === 0;`),e.noFlags&re.Last||this.addLine(`ctx[\`${e.elem}_last\`] = ${r} === ${o}.length - 1;`),e.noFlags&re.Index||this.addLine(`ctx[\`${e.elem}_index\`] = ${r};`),e.noFlags&re.Value||this.addLine(`ctx[\`${e.elem}_value\`] = ${s}[${r}];`),this.define(`key${this.target.loopLevel}`,e.key?_(e.key):r),this.dev&&(this.helpers.add("OwlError"),this.addLine(`if (keys${n.id}.has(String(key${this.target.loopLevel}))) { throw new OwlError(\`Got duplicate key in t-foreach: \${key${this.target.loopLevel}}\`)}`),this.addLine(`keys${n.id}.add(String(key${this.target.loopLevel}));`));let h=ue(t,{block:n,index:r});return this.compileAST(e.body,h),this.target.indentLevel--,this.target.loopLevel--,this.target.loopCtxVars.pop(),this.addLine("}"),this.insertBlock("l",n,t),n.varName}compileTKey(e,t){let n=I("tKey_");return this.define(n,_(e.expr)),t=ue(t,{tKeyExpr:n,block:t.block,index:t.index}),this.compileAST(e.content,t)}compileMulti(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r,s=this.target.code.length;if(i){let l=e.content.filter(h=>!h.hasNoRepresentation).length,c=null;if(l<=1){let h=!this.target.hasRoot&&e.content[e.content.length-1].hasNoRepresentation;h&&(this.target.deferReturn=!0);for(let a of e.content){let u=this.compileAST(a,t);c=c||u}return h&&(this.target.deferReturn=!1,this.addLine(`return ${c};`)),c}n=this.createBlock(n,"multi",t)}let o=0;for(let l=0,c=e.content.length;l<c;l++){let h=e.content[l],a=!h.hasNoRepresentation,u=ue(t,{block:n,index:o,forceNewBlock:a});this.compileAST(h,u),a&&o++}if(i){if(n.hasDynamicChildren&&n.children.length){let c=this.target.code,h=n.children.slice(),a=h.shift();for(let u=s;u<c.length&&!(c[u].trimStart().startsWith(`const ${a.varName} `)&&(c[u]=c[u].replace(`const ${a.varName}`,a.varName),a=h.shift(),!a));u++);this.addLine(`let ${n.children.map(u=>u.varName).join(", ")};`,s)}let l=n.children.map(c=>c.varName).join(", ");this.insertBlock(`multi([${l}])`,n,t)}return n.varName}compileTCall(e,t){let{block:n,forceNewBlock:r}=t,i=e.attrs?this.formatPropObject(e.attrs,e.attrsTranslationCtx,t.translationCtx):[],o=ut.test(e.name)?Xt(e.name):"`"+e.name+"`";if(n&&!r&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),e.body){let a=this.compileInNewTarget("callBody",e.body,t),u=I("lazyBlock");this.define(u,`${a}.bind(this, ctx)`),this.helpers.add("zero"),i.push(`[zero]: ${u}`)}let l,c=`{${i.join(", ")}}`;if(e.context){let a=I("ctx");this.addLine(`const ${a} = ${_(e.context)};`),i.length?l=`Object.assign({this: ${a}}, ${c})`:l=`{this: ${a}}`}else i.length===0?l="ctx":l=`Object.assign(Object.create(ctx), ${c})`;let h=this.generateComponentKey();return this.helpers.add("callTemplate"),this.insertBlock(`callTemplate(${o}, this, app, ${l}, node, ${h})`,n,{...t,forceNewBlock:!n}),n.varName}compileTCallBlock(e,t){let{block:n,forceNewBlock:r}=t;return n&&(r||this.insertAnchor(n)),n=this.createBlock(n,"multi",t),this.insertBlock(_(e.name),n,{...t,forceNewBlock:!n}),n.varName}compileTSet(e,t){let n=e.value?_(e.value||""):"null",r=this.target.loopLevel===0,i=this.target.tSetVars.get(e.name),s=i!==void 0&&this.target.loopLevel>i;if(e.body){this.helpers.add("LazyValue");let o={type:$.Multi,content:e.body},l=this.compileInNewTarget("value",o,t),c=this.target.currentKey(t),h=`new LazyValue(${l}, ctx, this, node, ${c})`;if(h=e.value?h?`withDefault(${n}, ${h})`:n:h,this.helpers.add("withDefault"),s){let a=this.target.loopCtxVars[i];this.addLine(`${a}[\`${e.name}\`] = ${h};`)}else r?(this.target.needsScopeProtection=!0,this.addLine(`ctx[\`${e.name}\`] = ${h};`),this.target.tSetVars.set(e.name,0)):(this.addLine(`ctx[\`${e.name}\`] = ${h};`),this.target.tSetVars.set(e.name,this.target.loopLevel))}else{let o;if(e.defaultValue){let l=at(t.translate?this.translate(e.defaultValue,t.translationCtx):e.defaultValue);e.value?(this.helpers.add("withDefault"),o=`withDefault(${n}, ${l})`):o=l}else o=n;if(s){let l=this.target.loopCtxVars[i];this.addLine(`${l}["${e.name}"] = ${o};`)}else r?(this.target.needsScopeProtection=!0,this.addLine(`ctx["${e.name}"] = ${o};`),this.target.tSetVars.set(e.name,0)):(this.addLine(`ctx["${e.name}"] = ${o};`),this.target.tSetVars.set(e.name,this.target.loopLevel))}return null}generateComponentKey(e="key"){let t=[I("__")];for(let n=0;n<this.target.loopLevel;n++)t.push(`\${key${n+1}}`);return`${e} + \`${t.join("__")}\``}generateSignalCacheKey(){let e=[I("__sig_")];for(let t=0;t<this.target.loopLevel;t++)e.push(`\${key${t+1}}`);return`\`${e.join("__")}\``}formatProp(e,t,n,r){if(e.endsWith(".translate")){let i=n?.[e]||r;t=at(this.translateFn(t,i))}else t=_(t);if(e.includes(".")){let[i,s]=e.split(".");switch(e=i,s){case"bind":t=`(${t}).bind(this)`;break;case"alike":case"translate":break;default:throw new g(`Invalid prop suffix: ${s}`)}}return e=/^[a-z_]+$/i.test(e)?e:`'${e}'`,`${e}: ${t||void 0}`}formatPropObject(e,t,n){return Object.entries(e).map(([r,i])=>this.formatProp(r,i,t,n))}getPropString(e,t){let n=`{${e.join(",")}}`;return t&&(n=`Object.assign({}, ${_(t)}${e.length?", "+n:""})`),n}compileComponent(e,t){let{block:n}=t,r="slots"in(e.props||{}),i=[],s=[];for(let m in e.props||{}){let[p,b]=m.split(".");if(b==="signal"){let w=_(e.props[m]),T=/^[a-z_]+$/i.test(p)?p:`'${p}'`;this.helpers.add("toSignal");let y=this.generateSignalCacheKey();i.push(`${T}: toSignal(node, ${y}, ${w})`);continue}if(b){i.push(this.formatProp(m,e.props[m],e.propsTranslationCtx,t.translationCtx));continue}let{expr:d,freeVariables:S}=pr(e.props[m]),N=/^[a-z_]+$/i.test(p)?p:`'${p}'`;if(i.push(`${N}: ${d||void 0}`),S)for(let w of S){let T=`${p}.${w}`;s.push(`"${T}"`),i.push(`"${T}": ctx['${w}']`)}else s.push(`"${p}"`)}let o="";if(e.slots){let m=[];for(let p in e.slots){let b=e.slots[p],d=[];if(b.content){let w=this.compileInNewTarget("slot",b.content,t,b.on);d.push(`__render: ${w}.bind(this), __ctx: ctx`)}let S=e.slots[p].scope;S&&d.push(`__scope: "${S}"`),e.slots[p].attrs&&d.push(...this.formatPropObject(e.slots[p].attrs,e.slots[p].attrsTranslationCtx,t.translationCtx));let N=`{${d.join(", ")}}`;m.push(`'${p}': ${N}`)}o=`{${m.join(", ")}}`}o&&!(e.dynamicProps||r)&&(this.helpers.add("markRaw"),i.push(`slots: markRaw(${o})`));let l=this.getPropString(i,e.dynamicProps),c;(o&&(e.dynamicProps||r)||this.dev)&&(c=I("props"),this.define(c,l),l=c),o&&(e.dynamicProps||r)&&(this.helpers.add("markRaw"),this.addLine(`${c}.slots = markRaw(Object.assign(${o}, ${c}.slots))`));let h;e.isDynamic?(h=I("Comp"),this.define(h,_(e.name))):h=`\`${e.name}\``,n&&(t.forceNewBlock===!1||t.tKeyExpr)&&this.insertAnchor(n);let a=this.generateComponentKey();t.tKeyExpr&&(a=`${t.tKeyExpr} + ${a}`);let u=I("comp");this.helpers.add("createComponent"),this.staticDefs.push({id:u,expr:`createComponent(app, ${e.isDynamic?null:h}, ${!e.isDynamic}, ${!!e.slots}, ${!!e.dynamicProps}, [${s}])`}),e.isDynamic&&(a=`(${h}).name + ${a}`);let f=`${u}(${l}, ${a}, node, this, ${e.isDynamic?h:null})`;return e.isDynamic&&(f=`toggler(${h}, ${f})`),e.on&&(f=this.wrapWithEventCatcher(f,e.on)),n=this.createBlock(n,"multi",t),this.insertBlock(f,n,t),n.varName}wrapWithEventCatcher(e,t){this.helpers.add("createCatcher");let n=I("catcher"),r={},i=[];for(let s in t){let o=I("hdlr"),l=i.push(o)-1;r[s]=l;let c=this.generateHandlerCode(s,t[s]);this.define(o,c)}return this.staticDefs.push({id:n,expr:`createCatcher(${JSON.stringify(r)})`}),`${n}(${e}, [${i.join(",")}])`}compileTCallSlot(e,t){this.helpers.add("callSlot");let{block:n}=t,r,i,s=!1,o=!1;e.name.match(ut)?(s=!0,o=!0,i=Xt(e.name)):(i="'"+e.name+"'",o=o||this.slotNames.has(e.name),this.slotNames.add(e.name));let l={...e.attrs},c=l["t-props"];delete l["t-props"];let h=this.target.loopLevel?`key${this.target.loopLevel}`:"key";o&&(h=this.generateComponentKey(h));let a=e.attrs?this.formatPropObject(l,e.attrsTranslationCtx,t.translationCtx):[],u=this.getPropString(a,c);if(e.defaultContent){let f=this.compileInNewTarget("defaultContent",e.defaultContent,t);r=`callSlot(ctx, node, ${h}, ${i}, ${s}, ${u}, ${f}.bind(this))`}else if(s){let f=I("slot");this.define(f,i),r=`toggler(${f}, callSlot(ctx, node, ${h}, ${f}, ${s}, ${u}))`}else r=`callSlot(ctx, node, ${h}, ${i}, ${s}, ${u})`;return e.on&&(r=this.wrapWithEventCatcher(r,e.on)),n&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),this.insertBlock(r,n,{...t,forceNewBlock:!1}),n.varName}compileTTranslation(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translate:!1})):null}compileTTranslationContext(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translationCtx:e.translationCtx})):null}};function gr(e,t={hasGlobalValues:!1}){let n=Ms(e,t.customDirectives),i=new lo(n,t).generateCode();try{return new Function("app, bdom, helpers",i)}catch(s){let{name:o}=t,l=o?`template "${o}"`:"anonymous template",c=new g(`Failed to compile ${l}: ${s.message}
|
|
23
23
|
|
|
24
24
|
generated code:
|
|
25
25
|
function(app, bdom, helpers) {
|
package/dist/types/owl.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@odoo/owl",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.40",
|
|
4
4
|
"description": "Odoo Web Library (OWL)",
|
|
5
|
-
"main": "dist/owl.cjs
|
|
5
|
+
"main": "dist/owl.cjs",
|
|
6
6
|
"module": "dist/owl.es.js",
|
|
7
7
|
"types": "dist/types/owl.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
10
|
"types": "./dist/types/owl.d.ts",
|
|
11
11
|
"import": "./dist/owl.es.js",
|
|
12
|
-
"require": "./dist/owl.cjs
|
|
12
|
+
"require": "./dist/owl.cjs",
|
|
13
13
|
"default": "./dist/owl.es.js"
|
|
14
14
|
},
|
|
15
15
|
"./dist/*": "./dist/*",
|
|
@@ -43,9 +43,9 @@
|
|
|
43
43
|
},
|
|
44
44
|
"homepage": "https://github.com/odoo/owl#readme",
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@odoo/owl-compiler": "3.0.0-alpha.
|
|
47
|
-
"@odoo/owl-core": "3.0.0-alpha.
|
|
48
|
-
"@odoo/owl-runtime": "3.0.0-alpha.
|
|
46
|
+
"@odoo/owl-compiler": "3.0.0-alpha.40",
|
|
47
|
+
"@odoo/owl-core": "3.0.0-alpha.40",
|
|
48
|
+
"@odoo/owl-runtime": "3.0.0-alpha.40",
|
|
49
49
|
"jsdom": "^25.0.1"
|
|
50
50
|
}
|
|
51
51
|
}
|