@odoo/owl 3.0.0-alpha.30 → 3.0.0-alpha.32
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 +26 -19
- package/dist/owl.es.js +26 -19
- package/dist/owl.iife.js +26 -19
- package/dist/owl.iife.min.js +6 -6
- package/package.json +4 -4
package/dist/owl.cjs.js
CHANGED
|
@@ -858,7 +858,7 @@ function numberType() {
|
|
|
858
858
|
}
|
|
859
859
|
function stringType() {
|
|
860
860
|
return function validateString(context) {
|
|
861
|
-
if (typeof context.value !== "string") {
|
|
861
|
+
if (typeof context.value !== "string" && !(context.value instanceof String)) {
|
|
862
862
|
context.addIssue({ message: "value is not a string" });
|
|
863
863
|
}
|
|
864
864
|
};
|
|
@@ -1267,7 +1267,7 @@ function startPlugins(manager, plugins) {
|
|
|
1267
1267
|
}
|
|
1268
1268
|
|
|
1269
1269
|
// ../owl-runtime/dist/owl-runtime.es.js
|
|
1270
|
-
var version = "3.0.0-alpha.
|
|
1270
|
+
var version = "3.0.0-alpha.32";
|
|
1271
1271
|
var fibersInError = /* @__PURE__ */ new WeakMap();
|
|
1272
1272
|
var nodeErrorHandlers = /* @__PURE__ */ new WeakMap();
|
|
1273
1273
|
function invokeErrorHandlers(node, error, finalize, markFibers) {
|
|
@@ -2984,6 +2984,9 @@ function cancelFibers(fibers) {
|
|
|
2984
2984
|
node.forceNextRender = true;
|
|
2985
2985
|
} else {
|
|
2986
2986
|
result++;
|
|
2987
|
+
if (node.bdom) {
|
|
2988
|
+
node.forceNextRender = true;
|
|
2989
|
+
}
|
|
2987
2990
|
}
|
|
2988
2991
|
result += cancelFibers(fiber.children);
|
|
2989
2992
|
}
|
|
@@ -4120,18 +4123,22 @@ function componentType() {
|
|
|
4120
4123
|
return constructorType(Component);
|
|
4121
4124
|
}
|
|
4122
4125
|
var types2 = { ...types, component: componentType };
|
|
4123
|
-
function
|
|
4124
|
-
const
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
|
|
4128
|
-
|
|
4129
|
-
|
|
4130
|
-
keys: mandatoryDefaultedKeys
|
|
4131
|
-
});
|
|
4126
|
+
function validateDefaults(schema) {
|
|
4127
|
+
const validation = {};
|
|
4128
|
+
if (Array.isArray(schema)) {
|
|
4129
|
+
for (const key of schema) {
|
|
4130
|
+
if (key.endsWith("?")) {
|
|
4131
|
+
validation[key] = types2.any();
|
|
4132
|
+
}
|
|
4132
4133
|
}
|
|
4133
|
-
|
|
4134
|
-
|
|
4134
|
+
} else {
|
|
4135
|
+
for (const key in schema) {
|
|
4136
|
+
if (key.endsWith("?")) {
|
|
4137
|
+
validation[key] = schema[key];
|
|
4138
|
+
}
|
|
4139
|
+
}
|
|
4140
|
+
}
|
|
4141
|
+
return types2.strictObject(validation);
|
|
4135
4142
|
}
|
|
4136
4143
|
function props(type, defaults) {
|
|
4137
4144
|
const node = getComponentScope();
|
|
@@ -4160,11 +4167,11 @@ function props(type, defaults) {
|
|
|
4160
4167
|
);
|
|
4161
4168
|
applyPropGetters(keys);
|
|
4162
4169
|
if (app.dev) {
|
|
4163
|
-
const validation = defaults ? validateObjectWithDefaults(type, defaults) : types2.object(type);
|
|
4164
|
-
assertType(node.props, validation, `Invalid component props (${componentName})`);
|
|
4165
4170
|
if (defaults) {
|
|
4166
|
-
assertType(defaults,
|
|
4171
|
+
assertType(defaults, validateDefaults(type), `Invalid component default props (${componentName})`);
|
|
4167
4172
|
}
|
|
4173
|
+
const validation = types2.object(type);
|
|
4174
|
+
assertType(node.props, validation, `Invalid component props (${componentName})`);
|
|
4168
4175
|
node.willUpdateProps.push((np) => {
|
|
4169
4176
|
assertType(np, validation, `Invalid component props (${componentName})`);
|
|
4170
4177
|
});
|
|
@@ -4385,8 +4392,8 @@ var blockDom = {
|
|
|
4385
4392
|
};
|
|
4386
4393
|
var __info__ = {
|
|
4387
4394
|
version: App.version,
|
|
4388
|
-
date: "2026-05-
|
|
4389
|
-
hash: "
|
|
4395
|
+
date: "2026-05-28T07:14:22.717Z",
|
|
4396
|
+
hash: "578ed435",
|
|
4390
4397
|
url: "https://github.com/odoo/owl"
|
|
4391
4398
|
};
|
|
4392
4399
|
|
|
@@ -5193,7 +5200,7 @@ function parseComponent(node, ctx) {
|
|
|
5193
5200
|
if (defaultContent && !slots.default) {
|
|
5194
5201
|
slots.default = {
|
|
5195
5202
|
content: defaultContent,
|
|
5196
|
-
on,
|
|
5203
|
+
on: null,
|
|
5197
5204
|
attrs: null,
|
|
5198
5205
|
attrsTranslationCtx: null,
|
|
5199
5206
|
scope: defaultSlotScope
|
package/dist/owl.es.js
CHANGED
|
@@ -782,7 +782,7 @@ function numberType() {
|
|
|
782
782
|
}
|
|
783
783
|
function stringType() {
|
|
784
784
|
return function validateString(context) {
|
|
785
|
-
if (typeof context.value !== "string") {
|
|
785
|
+
if (typeof context.value !== "string" && !(context.value instanceof String)) {
|
|
786
786
|
context.addIssue({ message: "value is not a string" });
|
|
787
787
|
}
|
|
788
788
|
};
|
|
@@ -1191,7 +1191,7 @@ function startPlugins(manager, plugins) {
|
|
|
1191
1191
|
}
|
|
1192
1192
|
|
|
1193
1193
|
// ../owl-runtime/dist/owl-runtime.es.js
|
|
1194
|
-
var version = "3.0.0-alpha.
|
|
1194
|
+
var version = "3.0.0-alpha.32";
|
|
1195
1195
|
var fibersInError = /* @__PURE__ */ new WeakMap();
|
|
1196
1196
|
var nodeErrorHandlers = /* @__PURE__ */ new WeakMap();
|
|
1197
1197
|
function invokeErrorHandlers(node, error, finalize, markFibers) {
|
|
@@ -2908,6 +2908,9 @@ function cancelFibers(fibers) {
|
|
|
2908
2908
|
node.forceNextRender = true;
|
|
2909
2909
|
} else {
|
|
2910
2910
|
result++;
|
|
2911
|
+
if (node.bdom) {
|
|
2912
|
+
node.forceNextRender = true;
|
|
2913
|
+
}
|
|
2911
2914
|
}
|
|
2912
2915
|
result += cancelFibers(fiber.children);
|
|
2913
2916
|
}
|
|
@@ -4044,18 +4047,22 @@ function componentType() {
|
|
|
4044
4047
|
return constructorType(Component);
|
|
4045
4048
|
}
|
|
4046
4049
|
var types2 = { ...types, component: componentType };
|
|
4047
|
-
function
|
|
4048
|
-
const
|
|
4049
|
-
|
|
4050
|
-
|
|
4051
|
-
|
|
4052
|
-
|
|
4053
|
-
|
|
4054
|
-
keys: mandatoryDefaultedKeys
|
|
4055
|
-
});
|
|
4050
|
+
function validateDefaults(schema) {
|
|
4051
|
+
const validation = {};
|
|
4052
|
+
if (Array.isArray(schema)) {
|
|
4053
|
+
for (const key of schema) {
|
|
4054
|
+
if (key.endsWith("?")) {
|
|
4055
|
+
validation[key] = types2.any();
|
|
4056
|
+
}
|
|
4056
4057
|
}
|
|
4057
|
-
|
|
4058
|
-
|
|
4058
|
+
} else {
|
|
4059
|
+
for (const key in schema) {
|
|
4060
|
+
if (key.endsWith("?")) {
|
|
4061
|
+
validation[key] = schema[key];
|
|
4062
|
+
}
|
|
4063
|
+
}
|
|
4064
|
+
}
|
|
4065
|
+
return types2.strictObject(validation);
|
|
4059
4066
|
}
|
|
4060
4067
|
function props(type, defaults) {
|
|
4061
4068
|
const node = getComponentScope();
|
|
@@ -4084,11 +4091,11 @@ function props(type, defaults) {
|
|
|
4084
4091
|
);
|
|
4085
4092
|
applyPropGetters(keys);
|
|
4086
4093
|
if (app.dev) {
|
|
4087
|
-
const validation = defaults ? validateObjectWithDefaults(type, defaults) : types2.object(type);
|
|
4088
|
-
assertType(node.props, validation, `Invalid component props (${componentName})`);
|
|
4089
4094
|
if (defaults) {
|
|
4090
|
-
assertType(defaults,
|
|
4095
|
+
assertType(defaults, validateDefaults(type), `Invalid component default props (${componentName})`);
|
|
4091
4096
|
}
|
|
4097
|
+
const validation = types2.object(type);
|
|
4098
|
+
assertType(node.props, validation, `Invalid component props (${componentName})`);
|
|
4092
4099
|
node.willUpdateProps.push((np) => {
|
|
4093
4100
|
assertType(np, validation, `Invalid component props (${componentName})`);
|
|
4094
4101
|
});
|
|
@@ -4309,8 +4316,8 @@ var blockDom = {
|
|
|
4309
4316
|
};
|
|
4310
4317
|
var __info__ = {
|
|
4311
4318
|
version: App.version,
|
|
4312
|
-
date: "2026-05-
|
|
4313
|
-
hash: "
|
|
4319
|
+
date: "2026-05-28T07:14:22.717Z",
|
|
4320
|
+
hash: "578ed435",
|
|
4314
4321
|
url: "https://github.com/odoo/owl"
|
|
4315
4322
|
};
|
|
4316
4323
|
|
|
@@ -5117,7 +5124,7 @@ function parseComponent(node, ctx) {
|
|
|
5117
5124
|
if (defaultContent && !slots.default) {
|
|
5118
5125
|
slots.default = {
|
|
5119
5126
|
content: defaultContent,
|
|
5120
|
-
on,
|
|
5127
|
+
on: null,
|
|
5121
5128
|
attrs: null,
|
|
5122
5129
|
attrsTranslationCtx: null,
|
|
5123
5130
|
scope: defaultSlotScope
|
package/dist/owl.iife.js
CHANGED
|
@@ -858,7 +858,7 @@ ${issueStrings}`);
|
|
|
858
858
|
}
|
|
859
859
|
function stringType() {
|
|
860
860
|
return function validateString(context) {
|
|
861
|
-
if (typeof context.value !== "string") {
|
|
861
|
+
if (typeof context.value !== "string" && !(context.value instanceof String)) {
|
|
862
862
|
context.addIssue({ message: "value is not a string" });
|
|
863
863
|
}
|
|
864
864
|
};
|
|
@@ -1267,7 +1267,7 @@ ${issueStrings}`);
|
|
|
1267
1267
|
}
|
|
1268
1268
|
|
|
1269
1269
|
// ../owl-runtime/dist/owl-runtime.es.js
|
|
1270
|
-
var version = "3.0.0-alpha.
|
|
1270
|
+
var version = "3.0.0-alpha.32";
|
|
1271
1271
|
var fibersInError = /* @__PURE__ */ new WeakMap();
|
|
1272
1272
|
var nodeErrorHandlers = /* @__PURE__ */ new WeakMap();
|
|
1273
1273
|
function invokeErrorHandlers(node, error, finalize, markFibers) {
|
|
@@ -2984,6 +2984,9 @@ ${issueStrings}`);
|
|
|
2984
2984
|
node.forceNextRender = true;
|
|
2985
2985
|
} else {
|
|
2986
2986
|
result++;
|
|
2987
|
+
if (node.bdom) {
|
|
2988
|
+
node.forceNextRender = true;
|
|
2989
|
+
}
|
|
2987
2990
|
}
|
|
2988
2991
|
result += cancelFibers(fiber.children);
|
|
2989
2992
|
}
|
|
@@ -4120,18 +4123,22 @@ ${issueStrings}`);
|
|
|
4120
4123
|
return constructorType(Component);
|
|
4121
4124
|
}
|
|
4122
4125
|
var types2 = { ...types, component: componentType };
|
|
4123
|
-
function
|
|
4124
|
-
const
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
|
|
4128
|
-
|
|
4129
|
-
|
|
4130
|
-
keys: mandatoryDefaultedKeys
|
|
4131
|
-
});
|
|
4126
|
+
function validateDefaults(schema) {
|
|
4127
|
+
const validation = {};
|
|
4128
|
+
if (Array.isArray(schema)) {
|
|
4129
|
+
for (const key of schema) {
|
|
4130
|
+
if (key.endsWith("?")) {
|
|
4131
|
+
validation[key] = types2.any();
|
|
4132
|
+
}
|
|
4132
4133
|
}
|
|
4133
|
-
|
|
4134
|
-
|
|
4134
|
+
} else {
|
|
4135
|
+
for (const key in schema) {
|
|
4136
|
+
if (key.endsWith("?")) {
|
|
4137
|
+
validation[key] = schema[key];
|
|
4138
|
+
}
|
|
4139
|
+
}
|
|
4140
|
+
}
|
|
4141
|
+
return types2.strictObject(validation);
|
|
4135
4142
|
}
|
|
4136
4143
|
function props(type, defaults) {
|
|
4137
4144
|
const node = getComponentScope();
|
|
@@ -4160,11 +4167,11 @@ ${issueStrings}`);
|
|
|
4160
4167
|
);
|
|
4161
4168
|
applyPropGetters(keys);
|
|
4162
4169
|
if (app.dev) {
|
|
4163
|
-
const validation = defaults ? validateObjectWithDefaults(type, defaults) : types2.object(type);
|
|
4164
|
-
assertType(node.props, validation, `Invalid component props (${componentName})`);
|
|
4165
4170
|
if (defaults) {
|
|
4166
|
-
assertType(defaults,
|
|
4171
|
+
assertType(defaults, validateDefaults(type), `Invalid component default props (${componentName})`);
|
|
4167
4172
|
}
|
|
4173
|
+
const validation = types2.object(type);
|
|
4174
|
+
assertType(node.props, validation, `Invalid component props (${componentName})`);
|
|
4168
4175
|
node.willUpdateProps.push((np) => {
|
|
4169
4176
|
assertType(np, validation, `Invalid component props (${componentName})`);
|
|
4170
4177
|
});
|
|
@@ -4385,8 +4392,8 @@ ${issueStrings}`);
|
|
|
4385
4392
|
};
|
|
4386
4393
|
var __info__ = {
|
|
4387
4394
|
version: App.version,
|
|
4388
|
-
date: "2026-05-
|
|
4389
|
-
hash: "
|
|
4395
|
+
date: "2026-05-28T07:14:22.717Z",
|
|
4396
|
+
hash: "578ed435",
|
|
4390
4397
|
url: "https://github.com/odoo/owl"
|
|
4391
4398
|
};
|
|
4392
4399
|
|
|
@@ -5193,7 +5200,7 @@ ${"-".repeat(columnIndex - 1)}^`;
|
|
|
5193
5200
|
if (defaultContent && !slots.default) {
|
|
5194
5201
|
slots.default = {
|
|
5195
5202
|
content: defaultContent,
|
|
5196
|
-
on,
|
|
5203
|
+
on: null,
|
|
5197
5204
|
attrs: null,
|
|
5198
5205
|
attrsTranslationCtx: null,
|
|
5199
5206
|
scope: defaultSlotScope
|
package/dist/owl.iife.min.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
"use strict";var owl=(()=>{var st=Object.defineProperty;var er=Object.getOwnPropertyDescriptor;var tr=Object.getOwnPropertyNames;var nr=Object.prototype.hasOwnProperty;var rr=(e,t)=>{for(var n in t)st(e,n,{get:t[n],enumerable:!0})},ir=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of tr(t))!nr.call(e,i)&&i!==n&&st(e,i,{get:()=>t[i],enumerable:!(r=er(t,i))||r.enumerable});return e};var sr=e=>ir(st({},"__esModule",{value:!0}),e);var Us={};rr(Us,{App:()=>Pt,Component:()=>Z,ErrorBoundary:()=>Wi,EventBus:()=>Ur,OwlError:()=>m,Plugin:()=>Ve,Portal:()=>Gi,Registry:()=>Qt,Resource:()=>en,Scope:()=>Ne,Suspense:()=>Yi,TemplateSet:()=>De,__info__:()=>ns,assertType:()=>
|
|
2
|
-
${i}`)}}function ut(e,t,n,r){return{issueDepth:0,path:n,value:t,get isValid(){return!e.length},addIssue(i){e.push({received:this.value,path:this.path,...i})},mergeIssues(i){e.push(...i)},validate(i){i(this),!this.isValid&&r&&(r.issueDepth=this.issueDepth+1)},withIssues(i){return ut(i,this.value,this.path,this)},withKey(i){return ut(e,this.value[i],this.path.concat(i),this)}}}function mt(e,t){let n=[];return t(ut(n,e,[])),n}function yr(){return function(){}}function wr(){return function(t){typeof t.value!="boolean"&&t.addIssue({message:"value is not a boolean"})}}function Tr(){return function(t){typeof t.value!="number"&&t.addIssue({message:"value is not a number"})}}function Nr(){return function(t){typeof t.value!="string"&&t.addIssue({message:"value is not a string"})}}function Er(e){return function(n){if(!Array.isArray(n.value)){n.addIssue({message:"value is not an array"});return}if(e)for(let r=0;r<n.value.length;r++)n.withKey(r).validate(e)}}function gt(e){return function(n){(typeof n.value!="function"||!(n.value===e||n.value.prototype instanceof e))&&n.addIssue({message:`value is not '${e.name}' or an extension`})}}function $r(e,t,n="value does not match custom validation"){return function(i){i.validate(e),i.isValid&&(t(i.value)||i.addIssue({message:n}))}}function Sr(e=[],t=void 0){return function(r){typeof r.value!="function"&&r.addIssue({message:"value is not a function"})}}function Yt(e){return function(n){n.value instanceof e||n.addIssue({message:`value is not an instance of '${e.name}'`})}}function Cr(e){return function(n){for(let r of e)n.validate(r)}}function bt(e){return function(n){n.value!==e&&n.addIssue({message:`value is not equal to ${typeof e=="string"?`'${e}'`:e}`})}}function kr(e){return vt(e.map(bt))}function Zt(e,t,n){if(typeof e.value!="object"||Array.isArray(e.value)||e.value===null){e.addIssue({message:"value is not an object"});return}if(!t)return;let r=!Array.isArray(t),i=t;if(Array.isArray(t)){i={};for(let o of t)i[o]=null}let s=[];for(let o in i){let l=o.endsWith("?")?o.slice(0,-1):o;if(e.value[l]===void 0){o.endsWith("?")||s.push(l);continue}r&&e.withKey(l).validate(i[o])}if(s.length&&e.addIssue({message:"object value has missing keys",missingKeys:s}),n){let o=[];for(let l in e.value)!(l in i)&&!(`${l}?`in i)&&o.push(l);o.length&&e.addIssue({message:"object value has unknown keys",unknownKeys:o})}}function Ar(e={}){return function(n){Zt(n,e,!1)}}function _r(e){return function(n){Zt(n,e,!0)}}function Dr(e){return function(n){n.value instanceof Promise||n.addIssue({message:"value is not a promise"})}}function xr(e){return function(n){if(typeof n.value!="object"||Array.isArray(n.value)||n.value===null){n.addIssue({message:"value is not an object"});return}if(e)for(let r in n.value)n.withKey(r).validate(e)}}function Or(e){return function(n){if(!Array.isArray(n.value)){n.addIssue({message:"value is not an array"});return}if(n.value.length!==e.length){n.addIssue({message:"tuple value does not have the correct length"});return}for(let r=0;r<e.length;r++)n.withKey(r).validate(e[r])}}function vt(e){return function(n){let r=0,i=[];for(let s of e){let o=n.withIssues(i);if(o.validate(s),i.length===r||o.issueDepth>0){n.mergeIssues(i.slice(r));return}r=i.length}n.addIssue({message:"value does not match union type",subIssues:i})}}function Rr(e){return function(n){(typeof n.value!="function"||!n.value[te])&&n.addIssue({message:"value is not a reactive value"})}}function Ir(e){return vt([bt(null),Yt(e)])}var Jt={and:Cr,any:yr,array:Er,boolean:wr,constructor:gt,customValidator:$r,function:Sr,instanceOf:Yt,literal:bt,number:Tr,object:Ar,or:vt,promise:Dr,record:xr,ref:Ir,selection:kr,signal:Rr,strictObject:_r,string:Nr,tuple:Or},Qt=class{_map=R.Object(Object.create(null));_name;_validation;constructor(e={}){this._name=e.name||"registry",this._validation=e.validation}entries=ne(()=>Object.entries(this._map()).sort((t,n)=>t[1][0]-n[1][0]).map(([t,n])=>[t,n[1]]));items=ne(()=>this.entries().map(e=>e[1]));addById(e,t={}){if(!e.id)throw new m(`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 m(`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}')`;j(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 m(`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=P();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 m(`Item should have an id key (registry '${this._name}')`);return this.use(e.id,e,t)}},en=class{_items=R.Array([]);_name;_validation;constructor(e={}){this._name=e.name,this._validation=e.validation}items=ne(()=>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}')`:"";j(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=P();return this.add(e,t),n.onDestroy(()=>this.delete(e)),this}},Ve=class{static _shadowId;static get id(){return this._shadowId??this.name}static set id(e){this._shadowId=e}__owl__;constructor(e){this.__owl__=e}setup(){}},he=class extends Ne{config;plugins;ready=Promise.resolve();constructor(e,t={}){if(super(e),this.config=t.config??{},t.parent){let n=t.parent;n.onDestroy(()=>this.destroy()),this.plugins=Object.create(n.plugins)}else this.plugins={}}destroy(){this.finalize(e=>console.error(e))}getPluginById(e){return this.plugins[e]||null}getPlugin(e){return this.getPluginById(e.id)}startPlugin(e){if(!e.id)throw new m(`Plugin "${e.name}" has no id`);if(this.plugins.hasOwnProperty(e.id)){let n=this.getPluginById(e.id).constructor;if(n!==e)throw new m(`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){z.push(this);try{for(let n of e)this.startPlugin(n)}finally{z.pop()}let t=this.willStart.splice(0);t.length?this.ready=Promise.all(t.map(n=>n())).then(()=>{this.status<k.MOUNTED&&(this.status=k.MOUNTED)}):this.status<k.MOUNTED&&(this.status=k.MOUNTED)}};function Fe(e,t){Array.isArray(t)?e.startPlugins(t):e.onDestroy(ue(()=>{let n=t.items();dt(()=>e.startPlugins(n))}))}var Mr="3.0.0-alpha.30",Y=new WeakMap,se=new WeakMap;function fn(e,t,n,r){for(;e;){r&&e.fiber&&Y.set(e.fiber,t);let i=se.get(e);if(i)for(let s=i.length-1;s>=0;s--)try{return i[s](t,n),{handled:!0,error:t}}catch(o){t=o}e=e.parent}return{handled:!1,error:t}}function dn(e){return(t,n)=>{if(e.app.destroyed)throw t;let{handled:r}=fn(e,t,n,!1);r||e.app._handleError(n())}}function pe(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,Y.set(l,t),l=l.parent;while(l);Y.set(r.root,t)}let s=()=>{try{i.destroy()}catch{}return t},o=fn(n,t,s,!0);o.handled||(t=o.error,i._handleError(s()))}function pn(e){e=e.slice();let t=[],n;for(;(n=e[0])&&typeof n=="string";)t.push(e.shift());return{modifiers:t,data:e}}var ge={shouldNormalizeDom:!0,mainEventHandler:(e,t,n)=>(typeof e=="function"?e(t):Array.isArray(e)&&(e=pn(e).data,e[0](e[1],t)),!1)},tn=document.createTextNode(""),Lr=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(tn,i),t&&n.beforeRemove(),n.remove(),r.mount(this.parentEl,tn),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 ie(e,t){return new Lr(e,t)}var Nt,Ae,Ot,mn;if(typeof Element<"u"){({setAttribute:Nt,removeAttribute:Ae}=Element.prototype);let e=DOMTokenList.prototype;Ot=e.add,mn=e.remove}var gn=Array.isArray,{split:nn,trim:Ce}=String.prototype,rn=/\s+/;function de(e,t){switch(t){case!1:case null:case void 0:Ae.call(this,e);break;case!0:Nt.call(this,e,"");break;default:Nt.call(this,e,t)}}function Pr(e){return function(t){de.call(this,e,t)}}function Br(e){if(gn(e))e[0]==="class"?St.call(this,e[1]):e[0]==="style"?Ct.call(this,e[1]):de.call(this,e[0],e[1]);else for(let t in e)t==="class"?St.call(this,e[t]):t==="style"?Ct.call(this,e[t]):de.call(this,t,e[t])}function jr(e,t){if(gn(e)){let n=e[0],r=e[1];if(n===t[0]){if(r===t[1])return;n==="class"?Ke.call(this,r,t[1]):n==="style"?We.call(this,r,t[1]):de.call(this,n,r)}else Ae.call(this,t[0]),de.call(this,n,r)}else{for(let n in t)n in e||(n==="class"?Ke.call(this,"",t[n]):n==="style"?We.call(this,"",t[n]):Ae.call(this,n));for(let n in e){let r=e[n];r!==t[n]&&(n==="class"?Ke.call(this,r,t[n]):n==="style"?We.call(this,r,t[n]):de.call(this,n,r))}}}function Et(e){let t={};switch(typeof e){case"string":let n=Ce.call(e);if(!n)return{};let r=nn.call(n,rn);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=Ce.call(i),!i)continue;let o=nn.call(i,rn);for(let l of o)t[l]=s}}return t;case"undefined":return{};case"number":return{[e]:!0};default:return{[e]:!0}}}var yt={};function Vr(e){if(e in yt)return yt[e];let t=e.replace(/[A-Z]/g,n=>"-"+n.toLowerCase());return yt[e]=t,t}var sn=/\s*!\s*important\s*$/i;function bn(e,t,n){sn.test(n)?e.setProperty(t,n.replace(sn,""),"important"):e.setProperty(t,n)}function $t(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=Ce.call(n.slice(s,i));if(i++,!c)continue;let u=c.indexOf(":");if(u===-1)continue;let a=Ce.call(c.slice(0,u)),h=Ce.call(c.slice(u+1));a&&h&&h!=="undefined"&&(t[a]=h)}return t}case"object":for(let n in e){let r=e[n];(r||r===0)&&(t[Vr(n)]=String(r))}return t;default:return{}}}function St(e){e=e===""?{}:Et(e);for(let t in e)Ot.call(this.classList,t)}function Ke(e,t){t=t===""?{}:Et(t),e=e===""?{}:Et(e);for(let n in t)n in e||mn.call(this.classList,n);for(let n in e)e[n]!==t[n]&&Ot.call(this.classList,n)}function Ct(e){e=e===""?{}:$t(e);let t=this.style;for(let n in e)bn(t,n,e[n])}function We(e,t){t=t===""?{}:$t(t),e=e===""?{}:$t(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]&&bn(n,r,e[r]);n.cssText||Ae.call(this,"style")}function Fr(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 Kr(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 Wr(e){let t=e&&e.ownerDocument;if(t){if(!t.defaultView)throw new m("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(!Kr(e,t))throw new m("Cannot mount a component on a detached dom node");return}}throw new m("Cannot mount component: the target is not a valid DOM element")}var Ur=class extends EventTarget{trigger(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t}))}};function zr(e){return new Promise(function(t){document.readyState!=="loading"?t(!0):document.addEventListener("DOMContentLoaded",t,!1)}).then(e||function(){})}var qe=class extends String{};function vn(e){return e instanceof qe?e:e===void 0?Ue(""):typeof e=="number"?Ue(String(e)):([["&","&"],["<","<"],[">",">"],["'","'"],['"',"""],["`","`"]].forEach(t=>{e=String(e).replace(new RegExp(t[0],"g"),t[1])}),Ue(e))}function Ue(e,...t){if(!Array.isArray(e))return new qe(e);let n=e,r="",i=0;for(;i<t.length;++i)r+=n[i]+vn(t[i]);return r+=n[i],new qe(r)}function yn(e){let t=e.split(".")[0],n=e.includes(".capture"),r=e.includes(".passive");return e.includes(".synthetic")?Xr(t,n,r):Gr(t,n,r)}var Hr=1;function Gr(e,t=!1,n=!1){let r=`__event__${e}_${Hr++}`;t&&(r=`${r}_capture`);function i(u){let a=u.currentTarget;if(!a||!Fr(a))return;let h=a[r];h&&ge.mainEventHandler(h,u,a)}let s={capture:t,passive:n};function o(u){this[r]=u,this.addEventListener(e,i,s)}function l(){delete this[r],this.removeEventListener(e,i,s)}function c(u){this[r]=u}return{setup:o,update:c,remove:l}}var qr=1;function Xr(e,t=!1,n=!1){let r=`__event__synthetic_${e}`;t&&(r=`${r}_capture`),Zr(e,r,t,n);let i=qr++;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 Yr(e,t){let n=t.target;for(;n!==null;){let r=n[e];if(r){for(let i of Object.values(r))if(ge.mainEventHandler(i,t,n))return}n=n.parentNode}}var on={};function Zr(e,t,n=!1,r=!1){on[t]||(document.addEventListener(e,i=>Yr(t,i),{capture:n,passive:r}),on[t]=!0)}var Jr=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Se,wn,kt;if(typeof Node<"u"){let e=Node.prototype;Se=e.insertBefore,wn=Jr(e,"textContent").set,kt=e.removeChild}var Tn=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,Se.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];Se.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];Se.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],u=r[o];if(c)if(u)c.patch(u,t);else{let a=c.firstNode(),h=document.createTextNode("");i[o]=h,Se.call(s,h,a),t&&c.beforeRemove(),c.remove(),n[o]=void 0}else if(u){n[o]=u;let a=i[o];u.mount(s,a),kt.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)wn.call(e,"");else{let t=this.children,n=this.anchors;for(let r=0,i=t.length;r<i;r++){let s=t[r];s?s.remove():kt.call(e,n[r])}}}firstNode(){let e=this.children[0];return e?e.firstNode():this.anchors[0]}toString(){return this.children.map(e=>e?e.toString():"").join("")}};function Rt(e){return new Tn(e)}var Qr=(e,t)=>Object.getOwnPropertyDescriptor(e,t),ze,Nn,En;if(typeof Node<"u"){let e=Node.prototype;ze=e.insertBefore,En=e.removeChild,Nn=Qr(CharacterData.prototype,"data").set}var ei=class{text;parentEl;el;constructor(e){this.text=e}mount(e,t){this.parentEl=e;let n=document.createTextNode(At(this.text));ze.call(e,n,t),this.el=n}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t,ze.call(t,this.el,e)}moveBeforeVNode(e,t){ze.call(this.parentEl,this.el,e?e.el:t)}beforeRemove(){}remove(){En.call(this.parentEl,this.el)}firstNode(){return this.el}patch(e){let t=e.text;this.text!==t&&(Nn.call(this.el,At(t)),this.text=t)}toString(){return this.text}};function _e(e){return new ei(e)}function At(e){switch(typeof e){case"string":return e;case"number":return String(e);case"boolean":return e?"true":"false";default:return e||""}}var wt=(e,t)=>Object.getOwnPropertyDescriptor(e,t),ke,$n,Sn,Xe,It;typeof Node<"u"&&(ke=Node.prototype,$n=Element.prototype,Sn=wt(CharacterData.prototype,"data").set,Xe=wt(ke,"firstChild").get,It=wt(ke,"nextSibling").get);var ln=()=>{};function ti(e){return function(n){this[e]=n===0?0:n?n.valueOf():""}}var Tt={};function Cn(e){if(e in Tt)return Tt[e];let n=new DOMParser().parseFromString(`<t>${e}</t>`,"text/xml").firstChild.firstChild;ge.shouldNormalizeDom&&kn(n);let r=_t(n),i=Dt(r),s=r.el,o=ii(s,i);return Tt[e]=o,o}function kn(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)kn(e.childNodes.item(t))}function _t(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 u=0;u<c.length;u++){let a=c[u].name,h=c[u].value;if(a.startsWith("block-handler-")){let f=parseInt(a.slice(14),10);o.push({type:"handler",idx:f,event:h})}else if(a.startsWith("block-attribute-")){let f=parseInt(a.slice(16),10);o.push({type:"attribute",idx:f,name:h,tag:i})}else if(a.startsWith("block-property-")){let f=parseInt(a.slice(15),10);o.push({type:"property",idx:f,name:h,tag:i})}else a==="block-attributes"?o.push({type:"attributes",idx:parseInt(h,10)}):a==="block-ref"?o.push({type:"ref",idx:parseInt(h,10)}):s.setAttribute(c[u].name,h)}}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 u=c.tagName,a=parseInt(u.slice(12),10);o.push({idx:a,type:"child",isOnlyChild:!0})}else{l.firstChild=_t(e.firstChild,l,l),s.appendChild(l.firstChild.el);let u=e.firstChild,a=l.firstChild;for(;u=u.nextSibling;)a.nextSibling=_t(u,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 m("boom")}function an(e){e.isRef=!0;do e.refN++;while(e=e.parent)}function ni(e){let t=e.parent;for(;t&&t.nextSibling===e;)e=t,t=t.parent;return t}function Dt(e,t,n){if(!t){let r=new Array(e.info.filter(i=>i.type==="child").length);t={collectors:[],locations:[],children:r,cbRefs:[],refN:e.refN},n=0}if(e.refN){let r=n,i=e.isRef,s=e.firstChild?e.firstChild.refN:0,o=e.nextSibling?e.nextSibling.refN:0;if(i){for(let l of e.info)l.refIdx=r;e.refIdx=r,ri(t,e),n++}if(o){let l=n+s;t.collectors.push({idx:l,prevIdx:r,getVal:It}),Dt(e.nextSibling,t,l)}s&&(t.collectors.push({idx:n,prevIdx:r,getVal:Xe}),Dt(e.firstChild,t,n))}return t}function ri(e,t){for(let n of t.info)switch(n.type){case"text":e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:cn,updateData:cn});break;case"child":n.isOnlyChild?e.children[n.idx]={parentRefIdx:n.refIdx,isOnlyChild:!0}:e.children[n.idx]={parentRefIdx:ni(t).refIdx,afterRefIdx:n.refIdx};break;case"property":{let r=n.refIdx,i=ti(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=St,i=Ke):n.name==="style"?(s=Ct,i=We):(s=Pr(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:Br,updateData:jr});break;case"handler":{let{setup:r,update:i}=yn(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:ln,updateData:ln}),e.cbRefs.push(n.idx);break}}}function ii(e,t){let n=si(e,t);return t.children.length?(n=class extends n{children;constructor(r,i){super(r),this.children=i}},n.prototype.beforeRemove=Tn.prototype.beforeRemove,(r,i=[])=>new n(r,i)):r=>new n(r)}function si(e,t){let{refN:n,collectors:r,children:i,locations:s,cbRefs:o}=t;s.sort((v,N)=>v.idx-N.idx);let l=s.length,c=i.length,u=n>0,a=s.map(v=>v.refIdx),h=s.map(v=>v.setData),f=s.map(v=>v.updateData),g=[It,Xe],p=r.length,y=r.map(v=>v.idx&32767|(v.prevIdx&32767)<<15|(v.getVal===Xe?1:0)<<30),d=i.map(v=>v.parentRefIdx&32767|(v.isOnlyChild?1:0)<<15|((v.afterRefIdx??0)&32767)<<16),A=ke.cloneNode,E=ke.insertBefore,w=$n.remove;class C{el;parentEl;data;children;refs;constructor(N){this.data=N}beforeRemove(){}remove(){w.call(this.el)}firstNode(){return this.el}moveBeforeDOMNode(N,b=this.parentEl){this.parentEl=b,E.call(b,this.el,N)}moveBeforeVNode(N,b){E.call(this.parentEl,this.el,N?N.el:b)}toString(){let N=document.createElement("div");return this.mount(N,null),N.innerHTML}mount(N,b){let $=A.call(e,!0);E.call(N,$,b),this.el=$,this.parentEl=N}patch(N,b){}}return u&&(C.prototype.mount=function(N,b){let $=A.call(e,!0),_=new Array(n);this.refs=_,_[0]=$;for(let x=0;x<p;x++){let S=y[x];_[S&32767]=g[S>>30&1].call(_[S>>15&32767])}if(l){let x=this.data;for(let S=0;S<l;S++)h[S].call(_[a[S]],x[S])}if(c){let x=this.children;for(let S=0;S<c;S++){let O=x[S];if(O){let L=d[S],ve=L>>16&32767,xe=ve?_[ve]:null;O.isOnlyChild=!!(L&32768),O.mount(_[L&32767],xe)}}}if(E.call(N,$,b),this.el=$,this.parentEl=N,o.length){let x=this.data,S=this.refs;for(let O of o){let L=x[O];L(S[a[O]],null)}}},C.prototype.patch=function(N,b){if(this===N)return;let $=this.refs;if(l){let _=this.data,x=N.data;for(let S=0;S<l;S++){let O=_[S],L=x[S];O!==L&&f[S].call($[a[S]],L,O)}this.data=x}if(c){let _=this.children,x=N.children;for(let S=0;S<c;S++){let O=_[S],L=x[S];if(O)L?O.patch(L,b):(b&&O.beforeRemove(),O.remove(),_[S]=void 0);else if(L){let ve=d[S],xe=ve>>16&32767,Qn=xe?$[xe]:null;L.mount($[ve&32767],Qn),_[S]=L}}}},C.prototype.remove=function(){if(o.length){let N=this.data,b=this.refs;for(let $ of o){let _=N[$];_(null,b[a[$]])}}w.call(this.el)}),C}function cn(e){Sn.call(this,At(e))}var oi=(e,t)=>Object.getOwnPropertyDescriptor(e,t),An,_n,Dn,xt;if(typeof Node<"u"){let e=Node.prototype;An=e.insertBefore,_n=e.appendChild,Dn=e.removeChild,xt=oi(e,"textContent").set}var li=class{children;anchor;parentEl;isOnlyChild;constructor(e){this.children=e}mount(e,t){let n=this.children,r=document.createTextNode("");this.anchor=r,An.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:u,firstNode:a}=i,h=this.anchor,f=this.isOnlyChild,g=this.parentEl;if(r.length===0&&f){if(t)for(let b=0,$=n.length;b<$;b++)c.call(n[b]);xt.call(g,""),_n.call(g,h);return}let p=0,y=0,d=n[0],A=r[0],E=n.length-1,w=r.length-1,C=n[E],v=r[w],N;for(;p<=E&&y<=w;){if(d===null){d=n[++p];continue}if(C===null){C=n[--E];continue}let b=d.key,$=A.key;if(b===$){o.call(d,A,t),r[y]=d,d=n[++p],A=r[++y];continue}let _=C.key,x=v.key;if(_===x){o.call(C,v,t),r[w]=C,C=n[--E],v=r[--w];continue}if(b===x){o.call(d,v,t),r[w]=d;let O=r[w+1];u.call(d,O,h),d=n[++p],v=r[--w];continue}if(_===$){o.call(C,A,t),r[y]=C;let O=n[p];u.call(C,O,h),C=n[--E],A=r[++y];continue}N=N||ai(n,p,E);let S=N[$];if(S===void 0)s.call(A,g,a.call(d)||null);else{let O=n[S];u.call(O,d,null),o.call(O,A,t),r[y]=O,n[S]=null}A=r[++y]}if(p<=E||y<=w)if(p>E){let b=r[w+1],$=b?a.call(b)||null:h;for(let _=y;_<=w;_++)s.call(r[_],g,$)}else for(let b=p;b<=E;b++){let $=n[b];$&&(t&&c.call($),l.call($))}}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)xt.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])}Dn.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 xn(e){return new li(e)}function ai(e,t,n){let r={};for(let i=t;i<=n;i++)r[e[i].key]=i;return r}var fe,On;if(typeof Node<"u"){let e=Node.prototype;fe=e.insertBefore,On=e.removeChild}var ci=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)fe.call(e,r,t);if(!this.content.length){let r=document.createTextNode("");this.content.push(r),fe.call(e,r,t)}}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;for(let n of this.content)fe.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)fe.call(n,o,r);if(!s.length){let o=document.createTextNode("");s.push(o),fe.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)On.call(e,t)}firstNode(){return this.content[0]}toString(){return this.html}};function Mt(e){return new ci(e)}function ui(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=yn(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(u,a){let h=a.target,f=c.child.firstNode(),g=c.afterNode;for(;f&&f!==g;){if(f.contains(h))return l(u,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 He(e,t,n=null){e.mount(t,n)}function hi(e,t,n=!1){e.patch(t,n)}function fi(e,t=!1){t&&e.beforeRemove(),e.remove()}function di(e){switch(e.__owl__.status){case k.NEW:return"new";case k.CANCELLED:return"cancelled";case k.MOUNTED:return e instanceof Ve?"started":"mounted";case k.DESTROYED:return"destroyed"}}function pi(e,t){let n=e.fiber;return n&&(Lt(n.children),n.root=null),new Je(e,t)}function mi(e){let t=e.fiber;if(t){let r=t.root;return r.locked=!0,r.setCounter(r.counter+1-Lt(t.children)),r.locked=!1,t.children=[],t.childrenMap={},t.bdom=null,Y.has(t)&&(Y.delete(t),Y.delete(r),t.appliedToDom=!1,t instanceof Ye&&(t.mounted=t instanceof Rn?[t]:[])),t}let n=new Ye(e,null);return e.willPatch.length&&n.willPatch.push(n),e.patched.length&&n.patched.push(n),n}function gi(){throw new m("Attempted to render cancelled fiber")}function Lt(e){let t=0;for(let n of e){let r=n.node;n.render=gi,r.status===k.NEW&&r.cancel(),r.fiber=null,n.bdom?r.forceNextRender=!0:t++,t+=Lt(n.children)}return t}var Je=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=U();we(t.signalComputation),M(t.signalComputation),t.signalComputation.state=Te.EXECUTED;try{this.bdom=!0,this.bdom=t.renderFn()}catch(s){pe({node:t,error:s})}finally{M(r)}let i=n.counter-1;n.counter=i,i===0&&e.flush()}}},Ye=class extends Je{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,pe({fiber:t||this,error:r})}}setCounter(e){this.counter=e,e===0&&this.node.app.scheduler.flush()}},Rn=class extends Ye{target;position;afterNode=null;prepared=!1;onPrepared=null;constructor(e,t,n={}){super(e,null),this.target=t,this.position=n.position||"last-child",this.afterNode=n.afterNode??null}complete(){this.prepared=!0,this.target?this._mount():(this.appliedToDom=!0,this.onPrepared?.())}commit(e,t={}){this.target=e,this.position=t.position||"last-child",this.afterNode=t.afterNode??null,this.prepared&&this._mount()}_mount(){let e=this;try{let t=this.node;if(t.children=this.childrenMap,t.app.constructor.validateTarget(this.target),t.bdom)t.updateDom();else if(t.bdom=this.bdom,this.afterNode)He(t.bdom,this.target,this.afterNode);else if(this.position==="last-child"||this.target.childNodes.length===0)He(t.bdom,this.target);else{let r=this.target.childNodes[0];He(t.bdom,this.target,r)}t.fiber=null,t.status=k.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){pe({fiber:e,error:t})}}},me=class extends Ne{fiber=null;component;bdom=null;componentName;forceNextRender=!1;parentKey;props;defaultProps=null;renderFn;parent;children=Object.create(null);willUpdateProps=[];willUnmount=[];mounted=[];willPatch=[];patched=[];signalComputation;pluginManager;constructor(e,t,n,r,i){super(n),this.parent=r,this.parentKey=i,this.pluginManager=r?r.pluginManager:n.pluginManager,this.componentName=e.name,this.signalComputation=Me(()=>this.render(!1),!1,Te.EXECUTED),this.props=t;let s=U();M(void 0),z.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{z.pop(),M(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=U();M(void 0);try{let r=this.willStart.map(i=>i.call(t));M(n),await Promise.all(r)}catch(r){if(Re(r)&&this.status>k.MOUNTED)return;pe({node:this,error:r});return}this.status===k.NEW&&this.fiber===e&&e.render()}async render(e){if(this.status>=k.CANCELLED)return;let t=this.fiber;if(t&&(t.root.locked||t.bdom===!0)&&(await Promise.resolve(),t=this.fiber),t){if(!t.bdom&&!Y.has(t)){e&&(t.deep=e);return}e=e||t.deep}else if(!this.bdom)return;let n=mi(this);n.deep=e,this.fiber=n,this.app.scheduler.addFiber(n),await Promise.resolve(),!(this.status>=k.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===k.MOUNTED;this._destroy(),e&&this.bdom.remove()}_destroy(){let e=this.component;if(this.status===k.MOUNTED)for(let t of this.willUnmount)t.call(e);for(let t in this.children)this.children[t]._destroy();this.finalize(t=>pe({error:t,node:this})),Be(this.signalComputation)}updateDom(){if(this.fiber)if(this.bdom===this.fiber.bdom)for(let e in this.children)this.children[e].updateDom();else this.bdom.patch(this.fiber.bdom,!1),this.fiber.appliedToDom=!0,this.fiber=null}firstNode(){let e=this.bdom;return e?e.firstNode():void 0}mount(e,t){let n=this.fiber.bdom;this.bdom=n,n.mount(e,t),this.status=k.MOUNTED,this.fiber.appliedToDom=!0,this.children=this.fiber.childrenMap,this.fiber=null}moveBeforeDOMNode(e,t){this.bdom.moveBeforeDOMNode(e,t)}moveBeforeVNode(e,t){this.bdom.moveBeforeVNode(e?e.bdom:null,t)}patch(){this.fiber&&this.fiber.parent&&this._patch()}_patch(){let e=!1;for(let n in this.children){e=!0;break}let t=this.fiber;this.children=t.childrenMap,this.bdom.patch(t.bdom,e),t.appliedToDom=!0,this.fiber=null}beforeRemove(){this._destroy()}remove(){this.bdom.remove()}};function H(){let e=P();if(!(e instanceof me))throw new m("Expected to be in a component scope");return e}var In;typeof window<"u"&&(In=window.requestAnimationFrame.bind(window));var bi=class Mn{static requestAnimationFrame=In;tasks=new Set;requestAnimationFrame;frame=0;delayedRenders=[];cancelledNodes=new Set;processing=!1;constructor(){this.requestAnimationFrame=Mn.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!==k.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=Y.has(t);if(n&&t.counter!==0){this.tasks.delete(t);continue}if(t.node.status===k.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===k.DESTROYED&&this.tasks.delete(t);this.processing=!1}}},Z=class{static template="";__owl__;constructor(e){this.__owl__=e}setup(){}},vi=Object.create;function yi(e,t){return e==null||e===!1?t:e}function wi(e,t,n,r,i,s,o){n=n+"__slot_"+r;let l=e.__owl__.props.slots||{},{__render:c,__ctx:u,__scope:a}=l[r]||{},h=vi(u||{});a&&(h[a]=s);let f=c?c(h,t,n):null;if(o){let g,p;return f?g=i?ie(r,f):f:p=o(e,t,n),Rt([g,p])}return f||_e("")}function Ti(e,t){return e.key=t,e}function Ni(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 m(`Invalid loop expression: "${e}" is not iterable`);let r=n.length;return[t,n,r,new Array(r)]}function Ei(e){let t=parseFloat(e);return isNaN(t)?e:t}function $i(e,t){for(let n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!1;return!0}var Ln=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 Si(e,t){if(e==null)return t?ie("default",t):ie("undefined",_e(""));let n,r;return e instanceof qe?(n="string_safe",r=Mt(e)):e instanceof Ln?(n="lazy_value",r=e.evaluate()):(n="string_unsafe",r=_e(e)),ie(n,r)}function Ci(e){if(!e)throw new m("Ref is undefined or null");let t,n;if(e.add&&e.delete)t=e.add.bind(e),n=e.delete.bind(e);else if(e.set){t=e.set.bind(e);let r=e[te];n=r?i=>{r.value===i&&e.set(null)}:()=>e.set(null)}else throw new m("Ref should implement either a 'set' function or 'add' and 'delete' functions");return(r,i)=>{i&&n(i),r&&t(r)}}function ki(e,t,n){if(typeof e!="function")throw new m(`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 un=new WeakMap;function Ai(e,t,n){let r=un.get(e);r||(r=new Map,un.set(e,r));let i=r.get(t);if(i)return i.set(n),i.readonly;let s=R(n);return s.readonly=ne(s),r.set(t,s),s.readonly}function _i(e){if(typeof e!="function"||typeof e.set!="function")throw new m("Invalid t-model expression: expression should evaluate to a function with a 'set' method defined on it");return e}function Di(e,t,n,r,i,s){let o=!n,l,c=s.length===0;r?l=(a,h)=>!0:i?l=function(a,h){for(let f in a)if(a[f]!==h[f])return!0;return Object.keys(a).length!==Object.keys(h).length}:c?l=(a,h)=>!1:l=function(a,h){for(let f of s)if(a[f]!==h[f])return!0;return!1};let u=me.prototype.initiateRender;return(a,h,f,g,p)=>{let y=f.children,d=y[h];o&&d&&d.component.constructor!==p&&(d=void 0);let A=f.fiber;if(d){if(l(d.props,a)||A.deep||d.forceNextRender){d.forceNextRender=!1;let E=d.willUpdateProps,w=pi(d,A);d.fiber=w;let C=A.root;d.willPatch.length&&C.willPatch.push(w),d.patched.length&&C.patched.push(w);let v;if(E.length){let N=a,b=d.defaultProps;if(b){N=Object.assign({},a);for(let x in b)N[x]===void 0&&(N[x]=b[x])}let $=d.component,_=U();M(void 0);for(let x of E){let S=x.call($,N);S&&typeof S.then=="function"&&(v||=[]).push(S)}M(_)}v?(v.length===1?v[0]:Promise.all(v)).then(()=>{w===d.fiber&&(d.props=a,w.render())},b=>{pe({node:d,error:b})}):(d.props=a,w.render())}}else{if(n){let w=g.constructor.components;if(!w)throw new m(`Cannot find the definition of component "${t}", missing static components key in parent`);if(p=w[t],p){if(!(p.prototype instanceof Z))throw new m(`"${t}" is not a Component. It must inherit from the Component class`)}else throw new m(`Cannot find the definition of component "${t}"`)}d=new me(p,a,e,f,h),y[h]=d;let E=new Je(d,A);d.willStart.length?u.call(d,E):(d.fiber=E,d.mounted.length&&E.root.mounted.push(E),E.render())}return A.childrenMap[h]=d,d}}function xi(e,t,n,r,i,s){let o=n.getTemplate(e);return ie(e,o.call(t,r,i,s+e))}var Oi={withDefault:yi,zero:Symbol("zero"),callSlot:wi,withKey:Ti,prepareList:Ni,shallowEqual:$i,toNumber:Ei,LazyValue:Ln,safeOutput:Si,createCatcher:ui,markRaw:je,OwlError:m,createRef:Ci,modelExpr:_i,createComponent:Di,callTemplate:xi,callHandler:ki,toSignal:Ai},Ri={text:_e,createBlock:Cn,list:xn,multi:Rt,html:Mt,toggler:ie},De=class{static registerTemplate(e,t){Ze[e]=t}dev;rawTemplates=Object.create(Ze);templates={};getRawTemplate;translateFn;translatableAttributes;customDirectives;runtimeUtils;hasGlobalValues;constructor(e={}){if(this.dev=e.dev||!1,this.translateFn=e.translateFn,this.translatableAttributes=e.translatableAttributes,e.templates)if(e.templates instanceof Document||typeof e.templates=="string")this.addTemplates(e.templates);else for(let t in e.templates)this.addTemplate(t,e.templates[t]);this.getRawTemplate=e.getTemplate,this.customDirectives=e.customDirectives||{},this.runtimeUtils={...Oi,__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(Ii(n,t))return;throw new m(`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=re();throw c instanceof me&&(l=` (for component "${c.componentName}")`),new m(`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,Ri,this.runtimeUtils);this.templates[t]=o}return this.templates[t]}_compileTemplate(e,t){throw new m("Unable to compile a template. Please use owl full build instead")}_parseXML(e){throw new m("Unable to parse XML templates. Please use owl full build instead, or pass a Document instance.")}},Ze={};function J(...e){let t=`__template__${J.nextId++}`,n=String.raw(...e);return Ze[t]=n,t}J.nextId=1;function Ii(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 hn=!1,Ge=new Set;typeof window<"u"&&(window.__OWL_DEVTOOLS__||={apps:Ge,Fiber:Je,RootFiber:Ye,toRaw:X,proxy:Ee});var Pt=class Pn extends De{static validateTarget=Wr;static apps=Ge;static version=Mr;name;scheduler=new bi;roots=new Set;pluginManager;destroyed=!1;constructor(t={}){super(t),this.name=t.name||"",Ge.add(this),this.pluginManager=new he(this,{config:t.config}),t.plugins?Fe(this.pluginManager,t.plugins):this.pluginManager.status=k.MOUNTED,t.test&&(this.dev=!0),this.dev&&!t.test&&!hn&&(console.info("Owl is running in 'dev' mode."),hn=!0)}createRoot(t,n={}){let r=n.props||{},i,s,o=new Promise((p,y)=>{i=p,s=y}),l,c=null;try{l=new me(t,r,this,null,null)}catch(p){c=p,s(p)}let u=null,a=null,h=()=>{if(a)return a;if(c)return Promise.reject(c);u=new Rn(l,null);let p=se.get(l);if(p||(p=[],se.set(l,p)),p.unshift((d,A)=>{let E=A();s(E)}),a=new Promise(d=>{u.onPrepared=()=>d()}),l.mounted.push(()=>{i(l.component),p.shift()}),this.scheduler.addFiber(u),this.pluginManager.status<k.MOUNTED&&l.willStart.unshift(()=>this.pluginManager.ready),l.willStart.length)l.initiateRender(u);else{l.fiber=u,l.mounted.length&&u.root.mounted.push(u);try{u.render()}catch(d){s(d)}}return a},g={node:l,promise:o,prepare:h,mount:(p,y)=>(c||(Pn.validateTarget(p),h(),u.commit(p,y)),o),destroy:()=>{this.roots.delete(g),l?.destroy(),this.scheduler.processTasks()}};return this.roots.add(g),g}destroy(){for(let t of this.roots)t.destroy();this.pluginManager.destroy(),this.scheduler.processTasks(),Ge.delete(this),this.destroyed=!0}_handleError(t){throw t}};async function Mi(e,t,n={}){return new Pt(n).createRoot(e,n).mount(t,n)}var Li=(e,t,n)=>{let{data:r,modifiers:i}=pn(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 m(`Invalid handler (expected a function, received: '${o}')`);let l=e[1]?e[1].__owl__:null;(!l||l.status===k.MOUNTED)&&o(e[1],t)}return s};function Bn(e){let t=P();t.willStart.push(t.decorate(e,"onWillStart"))}function Pi(e){let t=H();function n(r,i){return e.call(this,i,r)}t.willUpdateProps.push(t.decorate(n,"onWillUpdateProps"))}function jn(e){let t=H();t.mounted.push(t.decorate(e,"onMounted"))}function Bi(e){let t=H();t.willPatch.unshift(t.decorate(e,"onWillPatch"))}function ji(e){let t=H();t.patched.push(t.decorate(e,"onPatched"))}function Vi(e){let t=H();t.willUnmount.unshift(t.decorate(e,"onWillUnmount"))}function be(e){let t=P();t.onDestroy(t.decorate(e,"onWillDestroy"))}function Vn(e){let t=H(),n=se.get(t);n||(n=[],se.set(t,n)),n.push(e.bind(t.component))}function Fi(){return gt(Z)}var V={...Jt,component:Fi};function Ki(e,t){let r=(Array.isArray(e)?e:Object.keys(e)).filter(i=>!i.endsWith("?")&&i in t);return i=>{r.length&&i.addIssue({message:"props have default values on mandatory keys",keys:r}),i.validate(V.object(e))}}function Qe(e,t){let n=H(),{app:r,componentName:i}=n;t&&(n.defaultProps=Object.assign(n.defaultProps||{},t));function s(c){return n.props[c]===void 0&&t?t[c]:n.props[c]}let o=Object.create(null);function l(c){for(let u of c)Reflect.defineProperty(o,u,{enumerable:!0,get:s.bind(null,u)})}if(e){let c=(Array.isArray(e)?e:Object.keys(e)).map(u=>u.endsWith("?")?u.slice(0,-1):u);if(l(c),r.dev){let u=t?Ki(e,t):V.object(e);j(n.props,u,`Invalid component props (${i})`),t&&j(t,u,`Invalid default props (${i})`),n.willUpdateProps.push(a=>{j(a,u,`Invalid component props (${i})`)})}}else{let c=a=>{let h=[];for(let f in a)f.charCodeAt(0)!==1&&h.push(f);if(t)for(let f in t)f in a||h.push(f);return h},u=c(n.props);l(u),n.willUpdateProps.push(a=>{for(let h of u)Reflect.deleteProperty(o,h);u=c(a),l(u)})}return o}var Wi=class extends Z{static template=J`
|
|
1
|
+
"use strict";var owl=(()=>{var st=Object.defineProperty;var er=Object.getOwnPropertyDescriptor;var tr=Object.getOwnPropertyNames;var nr=Object.prototype.hasOwnProperty;var rr=(e,t)=>{for(var n in t)st(e,n,{get:t[n],enumerable:!0})},ir=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of tr(t))!nr.call(e,i)&&i!==n&&st(e,i,{get:()=>t[i],enumerable:!(r=er(t,i))||r.enumerable});return e};var sr=e=>ir(st({},"__esModule",{value:!0}),e);var Us={};rr(Us,{App:()=>Pt,Component:()=>Z,ErrorBoundary:()=>Wi,EventBus:()=>Ur,OwlError:()=>m,Plugin:()=>Ve,Portal:()=>Gi,Registry:()=>Qt,Resource:()=>en,Scope:()=>Ne,Suspense:()=>Yi,TemplateSet:()=>De,__info__:()=>ns,assertType:()=>V,asyncComputed:()=>Xt,batched:()=>ht,blockDom:()=>ts,computed:()=>ne,config:()=>Qi,effect:()=>ue,getScope:()=>re,globalTemplates:()=>Ze,htmlEscape:()=>vn,markRaw:()=>je,markup:()=>Ue,mount:()=>Ii,onError:()=>Vn,onMounted:()=>jn,onPatched:()=>ji,onWillDestroy:()=>be,onWillPatch:()=>Bi,onWillStart:()=>Bn,onWillUnmount:()=>Vi,onWillUpdateProps:()=>Pi,plugin:()=>Ji,prop:()=>Zi,props:()=>Qe,providePlugins:()=>es,proxy:()=>Ee,signal:()=>R,status:()=>di,toRaw:()=>X,types:()=>j,untrack:()=>dt,useApp:()=>zi,useEffect:()=>et,useListener:()=>Ui,useScope:()=>P,validateType:()=>mt,whenReady:()=>zr,xml:()=>J});var m=class extends Error{cause},k={NEW:0,MOUNTED:1,CANCELLED:2,DESTROYED:3};function ht(e){let t=!1;return function(...r){t||(t=!0,Promise.resolve().then(()=>{t=!1,e(...r)}))}}var Te=(e=>(e[e.EXECUTED=0]="EXECUTED",e[e.STALE=1]="STALE",e[e.PENDING=2]="PENDING",e))(Te||{}),te=Symbol("Atom"),Oe=[],F;function Ie(e,t,n=1){return{state:n,value:void 0,compute:e,sources:new Set,observers:new Set,isDerived:t}}function ft(e){F&&(F.sources.add(e),e.observers.add(F))}function Le(e){for(let t of e.observers)t.state===0&&(t.isDerived?ar(t):Oe.push(t)),t.state=1;or()}var or=ht(lr);function lr(){let e=Oe;Oe=[];for(let t=0;t<e.length;t++)Pe(e[t])}function U(){return F}function I(e){F=e}function Pe(e){let t=e.state;if(t===0)return;if(t===2){for(let r of e.sources)if("compute"in r&&(Pe(r),e.state===1))break;if(e.state!==1){e.state=0;return}}we(e);let n=F;F=e;try{e.value=e.compute(),e.state=0}finally{F=n}}function we(e){let t=e.sources;for(let n of t)n.observers.delete(e);t.clear()}function Be(e){for(let t of e.sources)t.observers.delete(e),"compute"in t&&t.isDerived&&t.observers.size===0&&Be(t);e.sources.clear(),e.state=1}function ar(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):Oe.push(r))}function dt(e){let t=F;F=void 0;let n;try{n=e()}finally{F=t}return n}var z=[];function P(){let e=re();if(!e)throw new m("No active scope");return e}var Ne=class{app;status=k.NEW;computations=[];willStart=[];_controller=null;_destroyCbs=null;constructor(e){this.app=e}run(e){z.push(this);try{return e()}finally{z.pop()}}get abortSignal(){return this.status>k.MOUNTED?(this._controller||(this._controller=new AbortController,this._controller.abort()),this._controller.signal):(this._controller??=new AbortController).signal}async until(e){if(this.status>k.MOUNTED)throw Wt();let t=await e;if(this.status>k.MOUNTED)throw Wt();return t}onDestroy(e){if(this.status>=k.DESTROYED){e();return}(this._destroyCbs??=[]).push(e)}cancel(){this.status>k.MOUNTED||(this.status=k.CANCELLED,this._controller?.abort())}finalize(e){if(this.status>=k.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)Be(n);this.status=k.DESTROYED}decorate(e,t){return e.bind(void 0,this)}};function re(){let e=z.length;return e?z[e-1]:null}function Re(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function Wt(){let e=new Error("The operation was aborted");return e.name="AbortError",e}var W=Symbol("Key changes"),cr=Object.prototype.toString,lt=Object.prototype.hasOwnProperty;function pt(e){if(typeof e!="object"||e===null)return!1;let t=X(e);return Array.isArray(t)||t instanceof Set||t instanceof Map||t instanceof WeakMap?!0:cr.call(t)==="[object Object]"}function ae(e,t){return!t&&pt(e)?Ee(e):e}var Gt=new WeakSet;function je(e){return Gt.add(e),e}function X(e){return Me.has(e)?Me.get(e):e}var at=new WeakMap;function ur(e,t){let n=at.get(e);n||(n=new Map,at.set(e,n));let r=n.get(t);return r||(r={value:void 0,observers:new Set},n.set(t,r)),r}function K(e,t,n){ft(n??ur(e,t))}function q(e,t,n){if(!n){let r=at.get(e);if(!r||!r.has(t))return;n=r.get(t)}Le(n)}var Me=new WeakMap,Ut=new WeakMap;function ce(e,t){if(!pt(e))throw new m("Cannot make the given value reactive");if(Gt.has(e)||Me.has(e))return e;let n=Ut.get(e);if(n)return n;let r;e instanceof Map?r=ot(e,"Map",t):e instanceof Set?r=ot(e,"Set",t):e instanceof WeakMap?r=ot(e,"WeakMap",t):r=qt(t);let i=new Proxy(e,r);return Ut.set(e,i),Me.set(i,e),i}function Ee(e){return ce(e,null)}function qt(e){return{get(t,n,r){K(t,n,e);let i=Reflect.get(t,n,r);if(e||typeof i!="object"||i===null||!pt(i))return i;let s=Object.getOwnPropertyDescriptor(t,n);return s&&!s.writable&&!s.configurable?i:ce(i,null)},set(t,n,r,i){let s=lt.call(t,n),o=Reflect.get(t,n,i),l=Reflect.set(t,n,X(r),i);return!s&<.call(t,n)&&q(t,W,e),(o!==Reflect.get(t,n,i)||n==="length"&&Array.isArray(t))&&q(t,n,e),l},deleteProperty(t,n){let r=Reflect.deleteProperty(t,n);return q(t,W,e),q(t,n,e),r},ownKeys(t){return K(t,W,e),Reflect.ownKeys(t)},has(t,n){return K(t,W,e),Reflect.has(t,n)}}}function ye(e,t,n){return r=>(r=X(r),K(t,r,n),ae(t[e](r),n))}function G(e,t,n){return function*(){K(t,W,n);let r=t.keys();for(let i of t[e]()){let s=r.next().value;K(t,s,n),yield ae(i,n)}}}function zt(e,t){return function(r,i){K(e,W,t),e.forEach(function(s,o,l){K(e,o,t),r.call(i,ae(s,t),ae(o,t),ae(l,t))},i)}}function le(e,t,n,r){return(i,s)=>{i=X(i);let o=n.has(i),l=n[t](i),c=n[e](i,s),u=n.has(i);return o!==u&&q(n,W,r),l!==n[t](i)&&q(n,i,r),c}}function Ht(e,t){return()=>{let n=[...e.keys()];e.clear(),q(e,W,t);for(let r of n)q(e,r,t)}}var hr={Set:(e,t)=>({has:ye("has",e,t),add:le("add","has",e,t),delete:le("delete","has",e,t),keys:G("keys",e,t),values:G("values",e,t),entries:G("entries",e,t),[Symbol.iterator]:G(Symbol.iterator,e,t),forEach:zt(e,t),clear:Ht(e,t),get size(){return K(e,W,t),e.size}}),Map:(e,t)=>({has:ye("has",e,t),get:ye("get",e,t),set:le("set","get",e,t),delete:le("delete","has",e,t),keys:G("keys",e,t),values:G("values",e,t),entries:G("entries",e,t),[Symbol.iterator]:G(Symbol.iterator,e,t),forEach:zt(e,t),clear:Ht(e,t),get size(){return K(e,W,t),e.size}}),WeakMap:(e,t)=>({has:ye("has",e,t),get:ye("get",e,t),set:le("set","get",e,t),delete:le("delete","has",e,t)})};function ot(e,t,n){let r=hr[t](e,n);return Object.assign(qt(n),{get(i,s){return lt.call(r,s)?r[s]:(K(i,s,n),ae(i[s],n))}})}function $e(e,t){let n={type:"signal",value:e,observers:new Set},r=t(n),i=()=>(ft(n),r);return i[te]=n,i.set=function(o){Object.is(n.value,o)||(n.value=o,r=t(n),Le(n))},i}function fr(e){if(typeof e!="function"||e[te]?.type!=="signal")throw new m(`Value is not a signal (${e})`);Le(e[te])}function dr(e){return $e(e,t=>ce(t.value,t))}function pr(e){return $e(e,t=>ce(t.value,t))}function mr(e){return $e(e,t=>ce(t.value,t))}function gr(e){return $e(e,t=>ce(t.value,t))}function R(e){return $e(e,t=>t.value)}R.trigger=fr;R.Array=dr;R.Map=mr;R.Object=pr;R.Set=gr;function br(){throw new m("Cannot write to a read-only computed value. Pass a `set` option to make it writable.")}function ne(e,t={}){let n=Ie(()=>{let i=e();return Object.is(n.value,i)||Le(n),i},!0);function r(){return n.state!==0&&Pe(n),ft(n),n.value}return r[te]=n,r.set=t.set??br,re()?.computations.push(n),r}function ue(e){let t=Ie(()=>(I(void 0),ct(t),I(t),e()),!1);return U()?.observers.add(t),Pe(t),function(){let r=U();I(void 0),ct(t),I(r)}}function ct(e){we(e),vr(e);for(let t of e.observers)t.state=0,we(t),ct(t);e.observers.clear()}function vr(e){let t=e.value;t&&typeof t=="function"&&(t(),e.value=void 0)}function Xt(e,t={}){let n=R(t.initial),r=R(!1),i=R(null),s=R(0),o=re(),l=0,c=null,u=ue(()=>{s();let f=++l;c&&c.abort();let g=new AbortController;c=g;let p=[g.signal];o?.abortSignal&&p.push(o.abortSignal),r.set(!0),i.set(null);let y;try{y=e({abortSignal:AbortSignal.any(p)})}catch(d){if(f!==l)return;if(Re(d)){r.set(!1);return}i.set(d),r.set(!1);return}y.then(d=>{f===l&&(n.set(d),r.set(!1))},d=>{if(f===l){if(Re(d)){r.set(!1);return}i.set(d),r.set(!1)}})});function a(){u(),c?.abort(),c=null}o?.onDestroy(a);let h=(()=>n());return h.loading=()=>r(),h.error=()=>i(),h.refresh=()=>s.set(s()+1),h.dispose=a,h}function V(e,t,n="Value does not match the type"){let r=mt(e,t);if(r.length){let i=JSON.stringify(r,(s,o)=>typeof o=="function"?o.name:o,2);throw new m(`${n}
|
|
2
|
+
${i}`)}}function ut(e,t,n,r){return{issueDepth:0,path:n,value:t,get isValid(){return!e.length},addIssue(i){e.push({received:this.value,path:this.path,...i})},mergeIssues(i){e.push(...i)},validate(i){i(this),!this.isValid&&r&&(r.issueDepth=this.issueDepth+1)},withIssues(i){return ut(i,this.value,this.path,this)},withKey(i){return ut(e,this.value[i],this.path.concat(i),this)}}}function mt(e,t){let n=[];return t(ut(n,e,[])),n}function yr(){return function(){}}function wr(){return function(t){typeof t.value!="boolean"&&t.addIssue({message:"value is not a boolean"})}}function Tr(){return function(t){typeof t.value!="number"&&t.addIssue({message:"value is not a number"})}}function Nr(){return function(t){typeof t.value!="string"&&!(t.value instanceof String)&&t.addIssue({message:"value is not a string"})}}function Er(e){return function(n){if(!Array.isArray(n.value)){n.addIssue({message:"value is not an array"});return}if(e)for(let r=0;r<n.value.length;r++)n.withKey(r).validate(e)}}function gt(e){return function(n){(typeof n.value!="function"||!(n.value===e||n.value.prototype instanceof e))&&n.addIssue({message:`value is not '${e.name}' or an extension`})}}function $r(e,t,n="value does not match custom validation"){return function(i){i.validate(e),i.isValid&&(t(i.value)||i.addIssue({message:n}))}}function Sr(e=[],t=void 0){return function(r){typeof r.value!="function"&&r.addIssue({message:"value is not a function"})}}function Yt(e){return function(n){n.value instanceof e||n.addIssue({message:`value is not an instance of '${e.name}'`})}}function Cr(e){return function(n){for(let r of e)n.validate(r)}}function bt(e){return function(n){n.value!==e&&n.addIssue({message:`value is not equal to ${typeof e=="string"?`'${e}'`:e}`})}}function kr(e){return vt(e.map(bt))}function Zt(e,t,n){if(typeof e.value!="object"||Array.isArray(e.value)||e.value===null){e.addIssue({message:"value is not an object"});return}if(!t)return;let r=!Array.isArray(t),i=t;if(Array.isArray(t)){i={};for(let o of t)i[o]=null}let s=[];for(let o in i){let l=o.endsWith("?")?o.slice(0,-1):o;if(e.value[l]===void 0){o.endsWith("?")||s.push(l);continue}r&&e.withKey(l).validate(i[o])}if(s.length&&e.addIssue({message:"object value has missing keys",missingKeys:s}),n){let o=[];for(let l in e.value)!(l in i)&&!(`${l}?`in i)&&o.push(l);o.length&&e.addIssue({message:"object value has unknown keys",unknownKeys:o})}}function Ar(e={}){return function(n){Zt(n,e,!1)}}function _r(e){return function(n){Zt(n,e,!0)}}function Dr(e){return function(n){n.value instanceof Promise||n.addIssue({message:"value is not a promise"})}}function xr(e){return function(n){if(typeof n.value!="object"||Array.isArray(n.value)||n.value===null){n.addIssue({message:"value is not an object"});return}if(e)for(let r in n.value)n.withKey(r).validate(e)}}function Or(e){return function(n){if(!Array.isArray(n.value)){n.addIssue({message:"value is not an array"});return}if(n.value.length!==e.length){n.addIssue({message:"tuple value does not have the correct length"});return}for(let r=0;r<e.length;r++)n.withKey(r).validate(e[r])}}function vt(e){return function(n){let r=0,i=[];for(let s of e){let o=n.withIssues(i);if(o.validate(s),i.length===r||o.issueDepth>0){n.mergeIssues(i.slice(r));return}r=i.length}n.addIssue({message:"value does not match union type",subIssues:i})}}function Rr(e){return function(n){(typeof n.value!="function"||!n.value[te])&&n.addIssue({message:"value is not a reactive value"})}}function Mr(e){return vt([bt(null),Yt(e)])}var Jt={and:Cr,any:yr,array:Er,boolean:wr,constructor:gt,customValidator:$r,function:Sr,instanceOf:Yt,literal:bt,number:Tr,object:Ar,or:vt,promise:Dr,record:xr,ref:Mr,selection:kr,signal:Rr,strictObject:_r,string:Nr,tuple:Or},Qt=class{_map=R.Object(Object.create(null));_name;_validation;constructor(e={}){this._name=e.name||"registry",this._validation=e.validation}entries=ne(()=>Object.entries(this._map()).sort((t,n)=>t[1][0]-n[1][0]).map(([t,n])=>[t,n[1]]));items=ne(()=>this.entries().map(e=>e[1]));addById(e,t={}){if(!e.id)throw new m(`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 m(`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}')`;V(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 m(`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=P();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 m(`Item should have an id key (registry '${this._name}')`);return this.use(e.id,e,t)}},en=class{_items=R.Array([]);_name;_validation;constructor(e={}){this._name=e.name,this._validation=e.validation}items=ne(()=>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}')`:"";V(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=P();return this.add(e,t),n.onDestroy(()=>this.delete(e)),this}},Ve=class{static _shadowId;static get id(){return this._shadowId??this.name}static set id(e){this._shadowId=e}__owl__;constructor(e){this.__owl__=e}setup(){}},he=class extends Ne{config;plugins;ready=Promise.resolve();constructor(e,t={}){if(super(e),this.config=t.config??{},t.parent){let n=t.parent;n.onDestroy(()=>this.destroy()),this.plugins=Object.create(n.plugins)}else this.plugins={}}destroy(){this.finalize(e=>console.error(e))}getPluginById(e){return this.plugins[e]||null}getPlugin(e){return this.getPluginById(e.id)}startPlugin(e){if(!e.id)throw new m(`Plugin "${e.name}" has no id`);if(this.plugins.hasOwnProperty(e.id)){let n=this.getPluginById(e.id).constructor;if(n!==e)throw new m(`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){z.push(this);try{for(let n of e)this.startPlugin(n)}finally{z.pop()}let t=this.willStart.splice(0);t.length?this.ready=Promise.all(t.map(n=>n())).then(()=>{this.status<k.MOUNTED&&(this.status=k.MOUNTED)}):this.status<k.MOUNTED&&(this.status=k.MOUNTED)}};function Fe(e,t){Array.isArray(t)?e.startPlugins(t):e.onDestroy(ue(()=>{let n=t.items();dt(()=>e.startPlugins(n))}))}var Ir="3.0.0-alpha.32",Y=new WeakMap,se=new WeakMap;function fn(e,t,n,r){for(;e;){r&&e.fiber&&Y.set(e.fiber,t);let i=se.get(e);if(i)for(let s=i.length-1;s>=0;s--)try{return i[s](t,n),{handled:!0,error:t}}catch(o){t=o}e=e.parent}return{handled:!1,error:t}}function dn(e){return(t,n)=>{if(e.app.destroyed)throw t;let{handled:r}=fn(e,t,n,!1);r||e.app._handleError(n())}}function pe(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,Y.set(l,t),l=l.parent;while(l);Y.set(r.root,t)}let s=()=>{try{i.destroy()}catch{}return t},o=fn(n,t,s,!0);o.handled||(t=o.error,i._handleError(s()))}function pn(e){e=e.slice();let t=[],n;for(;(n=e[0])&&typeof n=="string";)t.push(e.shift());return{modifiers:t,data:e}}var ge={shouldNormalizeDom:!0,mainEventHandler:(e,t,n)=>(typeof e=="function"?e(t):Array.isArray(e)&&(e=pn(e).data,e[0](e[1],t)),!1)},tn=document.createTextNode(""),Lr=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(tn,i),t&&n.beforeRemove(),n.remove(),r.mount(this.parentEl,tn),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 ie(e,t){return new Lr(e,t)}var Nt,Ae,Ot,mn;if(typeof Element<"u"){({setAttribute:Nt,removeAttribute:Ae}=Element.prototype);let e=DOMTokenList.prototype;Ot=e.add,mn=e.remove}var gn=Array.isArray,{split:nn,trim:Ce}=String.prototype,rn=/\s+/;function de(e,t){switch(t){case!1:case null:case void 0:Ae.call(this,e);break;case!0:Nt.call(this,e,"");break;default:Nt.call(this,e,t)}}function Pr(e){return function(t){de.call(this,e,t)}}function Br(e){if(gn(e))e[0]==="class"?St.call(this,e[1]):e[0]==="style"?Ct.call(this,e[1]):de.call(this,e[0],e[1]);else for(let t in e)t==="class"?St.call(this,e[t]):t==="style"?Ct.call(this,e[t]):de.call(this,t,e[t])}function jr(e,t){if(gn(e)){let n=e[0],r=e[1];if(n===t[0]){if(r===t[1])return;n==="class"?Ke.call(this,r,t[1]):n==="style"?We.call(this,r,t[1]):de.call(this,n,r)}else Ae.call(this,t[0]),de.call(this,n,r)}else{for(let n in t)n in e||(n==="class"?Ke.call(this,"",t[n]):n==="style"?We.call(this,"",t[n]):Ae.call(this,n));for(let n in e){let r=e[n];r!==t[n]&&(n==="class"?Ke.call(this,r,t[n]):n==="style"?We.call(this,r,t[n]):de.call(this,n,r))}}}function Et(e){let t={};switch(typeof e){case"string":let n=Ce.call(e);if(!n)return{};let r=nn.call(n,rn);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=Ce.call(i),!i)continue;let o=nn.call(i,rn);for(let l of o)t[l]=s}}return t;case"undefined":return{};case"number":return{[e]:!0};default:return{[e]:!0}}}var yt={};function Vr(e){if(e in yt)return yt[e];let t=e.replace(/[A-Z]/g,n=>"-"+n.toLowerCase());return yt[e]=t,t}var sn=/\s*!\s*important\s*$/i;function bn(e,t,n){sn.test(n)?e.setProperty(t,n.replace(sn,""),"important"):e.setProperty(t,n)}function $t(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=Ce.call(n.slice(s,i));if(i++,!c)continue;let u=c.indexOf(":");if(u===-1)continue;let a=Ce.call(c.slice(0,u)),h=Ce.call(c.slice(u+1));a&&h&&h!=="undefined"&&(t[a]=h)}return t}case"object":for(let n in e){let r=e[n];(r||r===0)&&(t[Vr(n)]=String(r))}return t;default:return{}}}function St(e){e=e===""?{}:Et(e);for(let t in e)Ot.call(this.classList,t)}function Ke(e,t){t=t===""?{}:Et(t),e=e===""?{}:Et(e);for(let n in t)n in e||mn.call(this.classList,n);for(let n in e)e[n]!==t[n]&&Ot.call(this.classList,n)}function Ct(e){e=e===""?{}:$t(e);let t=this.style;for(let n in e)bn(t,n,e[n])}function We(e,t){t=t===""?{}:$t(t),e=e===""?{}:$t(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]&&bn(n,r,e[r]);n.cssText||Ae.call(this,"style")}function Fr(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 Kr(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 Wr(e){let t=e&&e.ownerDocument;if(t){if(!t.defaultView)throw new m("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(!Kr(e,t))throw new m("Cannot mount a component on a detached dom node");return}}throw new m("Cannot mount component: the target is not a valid DOM element")}var Ur=class extends EventTarget{trigger(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t}))}};function zr(e){return new Promise(function(t){document.readyState!=="loading"?t(!0):document.addEventListener("DOMContentLoaded",t,!1)}).then(e||function(){})}var qe=class extends String{};function vn(e){return e instanceof qe?e:e===void 0?Ue(""):typeof e=="number"?Ue(String(e)):([["&","&"],["<","<"],[">",">"],["'","'"],['"',"""],["`","`"]].forEach(t=>{e=String(e).replace(new RegExp(t[0],"g"),t[1])}),Ue(e))}function Ue(e,...t){if(!Array.isArray(e))return new qe(e);let n=e,r="",i=0;for(;i<t.length;++i)r+=n[i]+vn(t[i]);return r+=n[i],new qe(r)}function yn(e){let t=e.split(".")[0],n=e.includes(".capture"),r=e.includes(".passive");return e.includes(".synthetic")?Xr(t,n,r):Gr(t,n,r)}var Hr=1;function Gr(e,t=!1,n=!1){let r=`__event__${e}_${Hr++}`;t&&(r=`${r}_capture`);function i(u){let a=u.currentTarget;if(!a||!Fr(a))return;let h=a[r];h&&ge.mainEventHandler(h,u,a)}let s={capture:t,passive:n};function o(u){this[r]=u,this.addEventListener(e,i,s)}function l(){delete this[r],this.removeEventListener(e,i,s)}function c(u){this[r]=u}return{setup:o,update:c,remove:l}}var qr=1;function Xr(e,t=!1,n=!1){let r=`__event__synthetic_${e}`;t&&(r=`${r}_capture`),Zr(e,r,t,n);let i=qr++;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 Yr(e,t){let n=t.target;for(;n!==null;){let r=n[e];if(r){for(let i of Object.values(r))if(ge.mainEventHandler(i,t,n))return}n=n.parentNode}}var on={};function Zr(e,t,n=!1,r=!1){on[t]||(document.addEventListener(e,i=>Yr(t,i),{capture:n,passive:r}),on[t]=!0)}var Jr=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Se,wn,kt;if(typeof Node<"u"){let e=Node.prototype;Se=e.insertBefore,wn=Jr(e,"textContent").set,kt=e.removeChild}var Tn=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,Se.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];Se.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];Se.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],u=r[o];if(c)if(u)c.patch(u,t);else{let a=c.firstNode(),h=document.createTextNode("");i[o]=h,Se.call(s,h,a),t&&c.beforeRemove(),c.remove(),n[o]=void 0}else if(u){n[o]=u;let a=i[o];u.mount(s,a),kt.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)wn.call(e,"");else{let t=this.children,n=this.anchors;for(let r=0,i=t.length;r<i;r++){let s=t[r];s?s.remove():kt.call(e,n[r])}}}firstNode(){let e=this.children[0];return e?e.firstNode():this.anchors[0]}toString(){return this.children.map(e=>e?e.toString():"").join("")}};function Rt(e){return new Tn(e)}var Qr=(e,t)=>Object.getOwnPropertyDescriptor(e,t),ze,Nn,En;if(typeof Node<"u"){let e=Node.prototype;ze=e.insertBefore,En=e.removeChild,Nn=Qr(CharacterData.prototype,"data").set}var ei=class{text;parentEl;el;constructor(e){this.text=e}mount(e,t){this.parentEl=e;let n=document.createTextNode(At(this.text));ze.call(e,n,t),this.el=n}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t,ze.call(t,this.el,e)}moveBeforeVNode(e,t){ze.call(this.parentEl,this.el,e?e.el:t)}beforeRemove(){}remove(){En.call(this.parentEl,this.el)}firstNode(){return this.el}patch(e){let t=e.text;this.text!==t&&(Nn.call(this.el,At(t)),this.text=t)}toString(){return this.text}};function _e(e){return new ei(e)}function At(e){switch(typeof e){case"string":return e;case"number":return String(e);case"boolean":return e?"true":"false";default:return e||""}}var wt=(e,t)=>Object.getOwnPropertyDescriptor(e,t),ke,$n,Sn,Xe,Mt;typeof Node<"u"&&(ke=Node.prototype,$n=Element.prototype,Sn=wt(CharacterData.prototype,"data").set,Xe=wt(ke,"firstChild").get,Mt=wt(ke,"nextSibling").get);var ln=()=>{};function ti(e){return function(n){this[e]=n===0?0:n?n.valueOf():""}}var Tt={};function Cn(e){if(e in Tt)return Tt[e];let n=new DOMParser().parseFromString(`<t>${e}</t>`,"text/xml").firstChild.firstChild;ge.shouldNormalizeDom&&kn(n);let r=_t(n),i=Dt(r),s=r.el,o=ii(s,i);return Tt[e]=o,o}function kn(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)kn(e.childNodes.item(t))}function _t(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 u=0;u<c.length;u++){let a=c[u].name,h=c[u].value;if(a.startsWith("block-handler-")){let f=parseInt(a.slice(14),10);o.push({type:"handler",idx:f,event:h})}else if(a.startsWith("block-attribute-")){let f=parseInt(a.slice(16),10);o.push({type:"attribute",idx:f,name:h,tag:i})}else if(a.startsWith("block-property-")){let f=parseInt(a.slice(15),10);o.push({type:"property",idx:f,name:h,tag:i})}else a==="block-attributes"?o.push({type:"attributes",idx:parseInt(h,10)}):a==="block-ref"?o.push({type:"ref",idx:parseInt(h,10)}):s.setAttribute(c[u].name,h)}}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 u=c.tagName,a=parseInt(u.slice(12),10);o.push({idx:a,type:"child",isOnlyChild:!0})}else{l.firstChild=_t(e.firstChild,l,l),s.appendChild(l.firstChild.el);let u=e.firstChild,a=l.firstChild;for(;u=u.nextSibling;)a.nextSibling=_t(u,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 m("boom")}function an(e){e.isRef=!0;do e.refN++;while(e=e.parent)}function ni(e){let t=e.parent;for(;t&&t.nextSibling===e;)e=t,t=t.parent;return t}function Dt(e,t,n){if(!t){let r=new Array(e.info.filter(i=>i.type==="child").length);t={collectors:[],locations:[],children:r,cbRefs:[],refN:e.refN},n=0}if(e.refN){let r=n,i=e.isRef,s=e.firstChild?e.firstChild.refN:0,o=e.nextSibling?e.nextSibling.refN:0;if(i){for(let l of e.info)l.refIdx=r;e.refIdx=r,ri(t,e),n++}if(o){let l=n+s;t.collectors.push({idx:l,prevIdx:r,getVal:Mt}),Dt(e.nextSibling,t,l)}s&&(t.collectors.push({idx:n,prevIdx:r,getVal:Xe}),Dt(e.firstChild,t,n))}return t}function ri(e,t){for(let n of t.info)switch(n.type){case"text":e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:cn,updateData:cn});break;case"child":n.isOnlyChild?e.children[n.idx]={parentRefIdx:n.refIdx,isOnlyChild:!0}:e.children[n.idx]={parentRefIdx:ni(t).refIdx,afterRefIdx:n.refIdx};break;case"property":{let r=n.refIdx,i=ti(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=St,i=Ke):n.name==="style"?(s=Ct,i=We):(s=Pr(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:Br,updateData:jr});break;case"handler":{let{setup:r,update:i}=yn(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:ln,updateData:ln}),e.cbRefs.push(n.idx);break}}}function ii(e,t){let n=si(e,t);return t.children.length?(n=class extends n{children;constructor(r,i){super(r),this.children=i}},n.prototype.beforeRemove=Tn.prototype.beforeRemove,(r,i=[])=>new n(r,i)):r=>new n(r)}function si(e,t){let{refN:n,collectors:r,children:i,locations:s,cbRefs:o}=t;s.sort((v,N)=>v.idx-N.idx);let l=s.length,c=i.length,u=n>0,a=s.map(v=>v.refIdx),h=s.map(v=>v.setData),f=s.map(v=>v.updateData),g=[Mt,Xe],p=r.length,y=r.map(v=>v.idx&32767|(v.prevIdx&32767)<<15|(v.getVal===Xe?1:0)<<30),d=i.map(v=>v.parentRefIdx&32767|(v.isOnlyChild?1:0)<<15|((v.afterRefIdx??0)&32767)<<16),A=ke.cloneNode,E=ke.insertBefore,w=$n.remove;class C{el;parentEl;data;children;refs;constructor(N){this.data=N}beforeRemove(){}remove(){w.call(this.el)}firstNode(){return this.el}moveBeforeDOMNode(N,b=this.parentEl){this.parentEl=b,E.call(b,this.el,N)}moveBeforeVNode(N,b){E.call(this.parentEl,this.el,N?N.el:b)}toString(){let N=document.createElement("div");return this.mount(N,null),N.innerHTML}mount(N,b){let $=A.call(e,!0);E.call(N,$,b),this.el=$,this.parentEl=N}patch(N,b){}}return u&&(C.prototype.mount=function(N,b){let $=A.call(e,!0),_=new Array(n);this.refs=_,_[0]=$;for(let x=0;x<p;x++){let S=y[x];_[S&32767]=g[S>>30&1].call(_[S>>15&32767])}if(l){let x=this.data;for(let S=0;S<l;S++)h[S].call(_[a[S]],x[S])}if(c){let x=this.children;for(let S=0;S<c;S++){let O=x[S];if(O){let L=d[S],ve=L>>16&32767,xe=ve?_[ve]:null;O.isOnlyChild=!!(L&32768),O.mount(_[L&32767],xe)}}}if(E.call(N,$,b),this.el=$,this.parentEl=N,o.length){let x=this.data,S=this.refs;for(let O of o){let L=x[O];L(S[a[O]],null)}}},C.prototype.patch=function(N,b){if(this===N)return;let $=this.refs;if(l){let _=this.data,x=N.data;for(let S=0;S<l;S++){let O=_[S],L=x[S];O!==L&&f[S].call($[a[S]],L,O)}this.data=x}if(c){let _=this.children,x=N.children;for(let S=0;S<c;S++){let O=_[S],L=x[S];if(O)L?O.patch(L,b):(b&&O.beforeRemove(),O.remove(),_[S]=void 0);else if(L){let ve=d[S],xe=ve>>16&32767,Qn=xe?$[xe]:null;L.mount($[ve&32767],Qn),_[S]=L}}}},C.prototype.remove=function(){if(o.length){let N=this.data,b=this.refs;for(let $ of o){let _=N[$];_(null,b[a[$]])}}w.call(this.el)}),C}function cn(e){Sn.call(this,At(e))}var oi=(e,t)=>Object.getOwnPropertyDescriptor(e,t),An,_n,Dn,xt;if(typeof Node<"u"){let e=Node.prototype;An=e.insertBefore,_n=e.appendChild,Dn=e.removeChild,xt=oi(e,"textContent").set}var li=class{children;anchor;parentEl;isOnlyChild;constructor(e){this.children=e}mount(e,t){let n=this.children,r=document.createTextNode("");this.anchor=r,An.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:u,firstNode:a}=i,h=this.anchor,f=this.isOnlyChild,g=this.parentEl;if(r.length===0&&f){if(t)for(let b=0,$=n.length;b<$;b++)c.call(n[b]);xt.call(g,""),_n.call(g,h);return}let p=0,y=0,d=n[0],A=r[0],E=n.length-1,w=r.length-1,C=n[E],v=r[w],N;for(;p<=E&&y<=w;){if(d===null){d=n[++p];continue}if(C===null){C=n[--E];continue}let b=d.key,$=A.key;if(b===$){o.call(d,A,t),r[y]=d,d=n[++p],A=r[++y];continue}let _=C.key,x=v.key;if(_===x){o.call(C,v,t),r[w]=C,C=n[--E],v=r[--w];continue}if(b===x){o.call(d,v,t),r[w]=d;let O=r[w+1];u.call(d,O,h),d=n[++p],v=r[--w];continue}if(_===$){o.call(C,A,t),r[y]=C;let O=n[p];u.call(C,O,h),C=n[--E],A=r[++y];continue}N=N||ai(n,p,E);let S=N[$];if(S===void 0)s.call(A,g,a.call(d)||null);else{let O=n[S];u.call(O,d,null),o.call(O,A,t),r[y]=O,n[S]=null}A=r[++y]}if(p<=E||y<=w)if(p>E){let b=r[w+1],$=b?a.call(b)||null:h;for(let _=y;_<=w;_++)s.call(r[_],g,$)}else for(let b=p;b<=E;b++){let $=n[b];$&&(t&&c.call($),l.call($))}}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)xt.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])}Dn.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 xn(e){return new li(e)}function ai(e,t,n){let r={};for(let i=t;i<=n;i++)r[e[i].key]=i;return r}var fe,On;if(typeof Node<"u"){let e=Node.prototype;fe=e.insertBefore,On=e.removeChild}var ci=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)fe.call(e,r,t);if(!this.content.length){let r=document.createTextNode("");this.content.push(r),fe.call(e,r,t)}}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;for(let n of this.content)fe.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)fe.call(n,o,r);if(!s.length){let o=document.createTextNode("");s.push(o),fe.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)On.call(e,t)}firstNode(){return this.content[0]}toString(){return this.html}};function It(e){return new ci(e)}function ui(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=yn(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(u,a){let h=a.target,f=c.child.firstNode(),g=c.afterNode;for(;f&&f!==g;){if(f.contains(h))return l(u,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 He(e,t,n=null){e.mount(t,n)}function hi(e,t,n=!1){e.patch(t,n)}function fi(e,t=!1){t&&e.beforeRemove(),e.remove()}function di(e){switch(e.__owl__.status){case k.NEW:return"new";case k.CANCELLED:return"cancelled";case k.MOUNTED:return e instanceof Ve?"started":"mounted";case k.DESTROYED:return"destroyed"}}function pi(e,t){let n=e.fiber;return n&&(Lt(n.children),n.root=null),new Je(e,t)}function mi(e){let t=e.fiber;if(t){let r=t.root;return r.locked=!0,r.setCounter(r.counter+1-Lt(t.children)),r.locked=!1,t.children=[],t.childrenMap={},t.bdom=null,Y.has(t)&&(Y.delete(t),Y.delete(r),t.appliedToDom=!1,t instanceof Ye&&(t.mounted=t instanceof Rn?[t]:[])),t}let n=new Ye(e,null);return e.willPatch.length&&n.willPatch.push(n),e.patched.length&&n.patched.push(n),n}function gi(){throw new m("Attempted to render cancelled fiber")}function Lt(e){let t=0;for(let n of e){let r=n.node;n.render=gi,r.status===k.NEW&&r.cancel(),r.fiber=null,n.bdom?r.forceNextRender=!0:(t++,r.bdom&&(r.forceNextRender=!0)),t+=Lt(n.children)}return t}var Je=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=U();we(t.signalComputation),I(t.signalComputation),t.signalComputation.state=Te.EXECUTED;try{this.bdom=!0,this.bdom=t.renderFn()}catch(s){pe({node:t,error:s})}finally{I(r)}let i=n.counter-1;n.counter=i,i===0&&e.flush()}}},Ye=class extends Je{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,pe({fiber:t||this,error:r})}}setCounter(e){this.counter=e,e===0&&this.node.app.scheduler.flush()}},Rn=class extends Ye{target;position;afterNode=null;prepared=!1;onPrepared=null;constructor(e,t,n={}){super(e,null),this.target=t,this.position=n.position||"last-child",this.afterNode=n.afterNode??null}complete(){this.prepared=!0,this.target?this._mount():(this.appliedToDom=!0,this.onPrepared?.())}commit(e,t={}){this.target=e,this.position=t.position||"last-child",this.afterNode=t.afterNode??null,this.prepared&&this._mount()}_mount(){let e=this;try{let t=this.node;if(t.children=this.childrenMap,t.app.constructor.validateTarget(this.target),t.bdom)t.updateDom();else if(t.bdom=this.bdom,this.afterNode)He(t.bdom,this.target,this.afterNode);else if(this.position==="last-child"||this.target.childNodes.length===0)He(t.bdom,this.target);else{let r=this.target.childNodes[0];He(t.bdom,this.target,r)}t.fiber=null,t.status=k.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){pe({fiber:e,error:t})}}},me=class extends Ne{fiber=null;component;bdom=null;componentName;forceNextRender=!1;parentKey;props;defaultProps=null;renderFn;parent;children=Object.create(null);willUpdateProps=[];willUnmount=[];mounted=[];willPatch=[];patched=[];signalComputation;pluginManager;constructor(e,t,n,r,i){super(n),this.parent=r,this.parentKey=i,this.pluginManager=r?r.pluginManager:n.pluginManager,this.componentName=e.name,this.signalComputation=Ie(()=>this.render(!1),!1,Te.EXECUTED),this.props=t;let s=U();I(void 0),z.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{z.pop(),I(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=U();I(void 0);try{let r=this.willStart.map(i=>i.call(t));I(n),await Promise.all(r)}catch(r){if(Re(r)&&this.status>k.MOUNTED)return;pe({node:this,error:r});return}this.status===k.NEW&&this.fiber===e&&e.render()}async render(e){if(this.status>=k.CANCELLED)return;let t=this.fiber;if(t&&(t.root.locked||t.bdom===!0)&&(await Promise.resolve(),t=this.fiber),t){if(!t.bdom&&!Y.has(t)){e&&(t.deep=e);return}e=e||t.deep}else if(!this.bdom)return;let n=mi(this);n.deep=e,this.fiber=n,this.app.scheduler.addFiber(n),await Promise.resolve(),!(this.status>=k.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===k.MOUNTED;this._destroy(),e&&this.bdom.remove()}_destroy(){let e=this.component;if(this.status===k.MOUNTED)for(let t of this.willUnmount)t.call(e);for(let t in this.children)this.children[t]._destroy();this.finalize(t=>pe({error:t,node:this})),Be(this.signalComputation)}updateDom(){if(this.fiber)if(this.bdom===this.fiber.bdom)for(let e in this.children)this.children[e].updateDom();else this.bdom.patch(this.fiber.bdom,!1),this.fiber.appliedToDom=!0,this.fiber=null}firstNode(){let e=this.bdom;return e?e.firstNode():void 0}mount(e,t){let n=this.fiber.bdom;this.bdom=n,n.mount(e,t),this.status=k.MOUNTED,this.fiber.appliedToDom=!0,this.children=this.fiber.childrenMap,this.fiber=null}moveBeforeDOMNode(e,t){this.bdom.moveBeforeDOMNode(e,t)}moveBeforeVNode(e,t){this.bdom.moveBeforeVNode(e?e.bdom:null,t)}patch(){this.fiber&&this.fiber.parent&&this._patch()}_patch(){let e=!1;for(let n in this.children){e=!0;break}let t=this.fiber;this.children=t.childrenMap,this.bdom.patch(t.bdom,e),t.appliedToDom=!0,this.fiber=null}beforeRemove(){this._destroy()}remove(){this.bdom.remove()}};function H(){let e=P();if(!(e instanceof me))throw new m("Expected to be in a component scope");return e}var Mn;typeof window<"u"&&(Mn=window.requestAnimationFrame.bind(window));var bi=class In{static requestAnimationFrame=Mn;tasks=new Set;requestAnimationFrame;frame=0;delayedRenders=[];cancelledNodes=new Set;processing=!1;constructor(){this.requestAnimationFrame=In.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!==k.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=Y.has(t);if(n&&t.counter!==0){this.tasks.delete(t);continue}if(t.node.status===k.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===k.DESTROYED&&this.tasks.delete(t);this.processing=!1}}},Z=class{static template="";__owl__;constructor(e){this.__owl__=e}setup(){}},vi=Object.create;function yi(e,t){return e==null||e===!1?t:e}function wi(e,t,n,r,i,s,o){n=n+"__slot_"+r;let l=e.__owl__.props.slots||{},{__render:c,__ctx:u,__scope:a}=l[r]||{},h=vi(u||{});a&&(h[a]=s);let f=c?c(h,t,n):null;if(o){let g,p;return f?g=i?ie(r,f):f:p=o(e,t,n),Rt([g,p])}return f||_e("")}function Ti(e,t){return e.key=t,e}function Ni(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 m(`Invalid loop expression: "${e}" is not iterable`);let r=n.length;return[t,n,r,new Array(r)]}function Ei(e){let t=parseFloat(e);return isNaN(t)?e:t}function $i(e,t){for(let n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!1;return!0}var Ln=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 Si(e,t){if(e==null)return t?ie("default",t):ie("undefined",_e(""));let n,r;return e instanceof qe?(n="string_safe",r=It(e)):e instanceof Ln?(n="lazy_value",r=e.evaluate()):(n="string_unsafe",r=_e(e)),ie(n,r)}function Ci(e){if(!e)throw new m("Ref is undefined or null");let t,n;if(e.add&&e.delete)t=e.add.bind(e),n=e.delete.bind(e);else if(e.set){t=e.set.bind(e);let r=e[te];n=r?i=>{r.value===i&&e.set(null)}:()=>e.set(null)}else throw new m("Ref should implement either a 'set' function or 'add' and 'delete' functions");return(r,i)=>{i&&n(i),r&&t(r)}}function ki(e,t,n){if(typeof e!="function")throw new m(`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 un=new WeakMap;function Ai(e,t,n){let r=un.get(e);r||(r=new Map,un.set(e,r));let i=r.get(t);if(i)return i.set(n),i.readonly;let s=R(n);return s.readonly=ne(s),r.set(t,s),s.readonly}function _i(e){if(typeof e!="function"||typeof e.set!="function")throw new m("Invalid t-model expression: expression should evaluate to a function with a 'set' method defined on it");return e}function Di(e,t,n,r,i,s){let o=!n,l,c=s.length===0;r?l=(a,h)=>!0:i?l=function(a,h){for(let f in a)if(a[f]!==h[f])return!0;return Object.keys(a).length!==Object.keys(h).length}:c?l=(a,h)=>!1:l=function(a,h){for(let f of s)if(a[f]!==h[f])return!0;return!1};let u=me.prototype.initiateRender;return(a,h,f,g,p)=>{let y=f.children,d=y[h];o&&d&&d.component.constructor!==p&&(d=void 0);let A=f.fiber;if(d){if(l(d.props,a)||A.deep||d.forceNextRender){d.forceNextRender=!1;let E=d.willUpdateProps,w=pi(d,A);d.fiber=w;let C=A.root;d.willPatch.length&&C.willPatch.push(w),d.patched.length&&C.patched.push(w);let v;if(E.length){let N=a,b=d.defaultProps;if(b){N=Object.assign({},a);for(let x in b)N[x]===void 0&&(N[x]=b[x])}let $=d.component,_=U();I(void 0);for(let x of E){let S=x.call($,N);S&&typeof S.then=="function"&&(v||=[]).push(S)}I(_)}v?(v.length===1?v[0]:Promise.all(v)).then(()=>{w===d.fiber&&(d.props=a,w.render())},b=>{pe({node:d,error:b})}):(d.props=a,w.render())}}else{if(n){let w=g.constructor.components;if(!w)throw new m(`Cannot find the definition of component "${t}", missing static components key in parent`);if(p=w[t],p){if(!(p.prototype instanceof Z))throw new m(`"${t}" is not a Component. It must inherit from the Component class`)}else throw new m(`Cannot find the definition of component "${t}"`)}d=new me(p,a,e,f,h),y[h]=d;let E=new Je(d,A);d.willStart.length?u.call(d,E):(d.fiber=E,d.mounted.length&&E.root.mounted.push(E),E.render())}return A.childrenMap[h]=d,d}}function xi(e,t,n,r,i,s){let o=n.getTemplate(e);return ie(e,o.call(t,r,i,s+e))}var Oi={withDefault:yi,zero:Symbol("zero"),callSlot:wi,withKey:Ti,prepareList:Ni,shallowEqual:$i,toNumber:Ei,LazyValue:Ln,safeOutput:Si,createCatcher:ui,markRaw:je,OwlError:m,createRef:Ci,modelExpr:_i,createComponent:Di,callTemplate:xi,callHandler:ki,toSignal:Ai},Ri={text:_e,createBlock:Cn,list:xn,multi:Rt,html:It,toggler:ie},De=class{static registerTemplate(e,t){Ze[e]=t}dev;rawTemplates=Object.create(Ze);templates={};getRawTemplate;translateFn;translatableAttributes;customDirectives;runtimeUtils;hasGlobalValues;constructor(e={}){if(this.dev=e.dev||!1,this.translateFn=e.translateFn,this.translatableAttributes=e.translatableAttributes,e.templates)if(e.templates instanceof Document||typeof e.templates=="string")this.addTemplates(e.templates);else for(let t in e.templates)this.addTemplate(t,e.templates[t]);this.getRawTemplate=e.getTemplate,this.customDirectives=e.customDirectives||{},this.runtimeUtils={...Oi,__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(Mi(n,t))return;throw new m(`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=re();throw c instanceof me&&(l=` (for component "${c.componentName}")`),new m(`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,Ri,this.runtimeUtils);this.templates[t]=o}return this.templates[t]}_compileTemplate(e,t){throw new m("Unable to compile a template. Please use owl full build instead")}_parseXML(e){throw new m("Unable to parse XML templates. Please use owl full build instead, or pass a Document instance.")}},Ze={};function J(...e){let t=`__template__${J.nextId++}`,n=String.raw(...e);return Ze[t]=n,t}J.nextId=1;function Mi(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 hn=!1,Ge=new Set;typeof window<"u"&&(window.__OWL_DEVTOOLS__||={apps:Ge,Fiber:Je,RootFiber:Ye,toRaw:X,proxy:Ee});var Pt=class Pn extends De{static validateTarget=Wr;static apps=Ge;static version=Ir;name;scheduler=new bi;roots=new Set;pluginManager;destroyed=!1;constructor(t={}){super(t),this.name=t.name||"",Ge.add(this),this.pluginManager=new he(this,{config:t.config}),t.plugins?Fe(this.pluginManager,t.plugins):this.pluginManager.status=k.MOUNTED,t.test&&(this.dev=!0),this.dev&&!t.test&&!hn&&(console.info("Owl is running in 'dev' mode."),hn=!0)}createRoot(t,n={}){let r=n.props||{},i,s,o=new Promise((p,y)=>{i=p,s=y}),l,c=null;try{l=new me(t,r,this,null,null)}catch(p){c=p,s(p)}let u=null,a=null,h=()=>{if(a)return a;if(c)return Promise.reject(c);u=new Rn(l,null);let p=se.get(l);if(p||(p=[],se.set(l,p)),p.unshift((d,A)=>{let E=A();s(E)}),a=new Promise(d=>{u.onPrepared=()=>d()}),l.mounted.push(()=>{i(l.component),p.shift()}),this.scheduler.addFiber(u),this.pluginManager.status<k.MOUNTED&&l.willStart.unshift(()=>this.pluginManager.ready),l.willStart.length)l.initiateRender(u);else{l.fiber=u,l.mounted.length&&u.root.mounted.push(u);try{u.render()}catch(d){s(d)}}return a},g={node:l,promise:o,prepare:h,mount:(p,y)=>(c||(Pn.validateTarget(p),h(),u.commit(p,y)),o),destroy:()=>{this.roots.delete(g),l?.destroy(),this.scheduler.processTasks()}};return this.roots.add(g),g}destroy(){for(let t of this.roots)t.destroy();this.pluginManager.destroy(),this.scheduler.processTasks(),Ge.delete(this),this.destroyed=!0}_handleError(t){throw t}};async function Ii(e,t,n={}){return new Pt(n).createRoot(e,n).mount(t,n)}var Li=(e,t,n)=>{let{data:r,modifiers:i}=pn(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 m(`Invalid handler (expected a function, received: '${o}')`);let l=e[1]?e[1].__owl__:null;(!l||l.status===k.MOUNTED)&&o(e[1],t)}return s};function Bn(e){let t=P();t.willStart.push(t.decorate(e,"onWillStart"))}function Pi(e){let t=H();function n(r,i){return e.call(this,i,r)}t.willUpdateProps.push(t.decorate(n,"onWillUpdateProps"))}function jn(e){let t=H();t.mounted.push(t.decorate(e,"onMounted"))}function Bi(e){let t=H();t.willPatch.unshift(t.decorate(e,"onWillPatch"))}function ji(e){let t=H();t.patched.push(t.decorate(e,"onPatched"))}function Vi(e){let t=H();t.willUnmount.unshift(t.decorate(e,"onWillUnmount"))}function be(e){let t=P();t.onDestroy(t.decorate(e,"onWillDestroy"))}function Vn(e){let t=H(),n=se.get(t);n||(n=[],se.set(t,n)),n.push(e.bind(t.component))}function Fi(){return gt(Z)}var j={...Jt,component:Fi};function Ki(e){let t={};if(Array.isArray(e))for(let n of e)n.endsWith("?")&&(t[n]=j.any());else for(let n in e)n.endsWith("?")&&(t[n]=e[n]);return j.strictObject(t)}function Qe(e,t){let n=H(),{app:r,componentName:i}=n;t&&(n.defaultProps=Object.assign(n.defaultProps||{},t));function s(c){return n.props[c]===void 0&&t?t[c]:n.props[c]}let o=Object.create(null);function l(c){for(let u of c)Reflect.defineProperty(o,u,{enumerable:!0,get:s.bind(null,u)})}if(e){let c=(Array.isArray(e)?e:Object.keys(e)).map(u=>u.endsWith("?")?u.slice(0,-1):u);if(l(c),r.dev){t&&V(t,Ki(e),`Invalid component default props (${i})`);let u=j.object(e);V(n.props,u,`Invalid component props (${i})`),n.willUpdateProps.push(a=>{V(a,u,`Invalid component props (${i})`)})}}else{let c=a=>{let h=[];for(let f in a)f.charCodeAt(0)!==1&&h.push(f);if(t)for(let f in t)f in a||h.push(f);return h},u=c(n.props);l(u),n.willUpdateProps.push(a=>{for(let h of u)Reflect.deleteProperty(o,h);u=c(a),l(u)})}return o}var Wi=class extends Z{static template=J`
|
|
3
3
|
<t t-if="this.props.error()">
|
|
4
4
|
<t t-call-slot="fallback"/>
|
|
5
5
|
</t>
|
|
6
6
|
<t t-else="">
|
|
7
7
|
<t t-call-slot="default"/>
|
|
8
8
|
</t>
|
|
9
|
-
`;props=Qe({"error?":
|
|
9
|
+
`;props=Qe({"error?":j.signal()},{error:R(null)});setup(){Vn(e=>this.props.error.set(e))}};function et(e){be(ue(e))}function Ui(e,t,n,r){typeof e=="function"?et(()=>{let i=e();if(i)return i.addEventListener(t,n,r),()=>i.removeEventListener(t,n,r)}):(e.addEventListener(t,n,r),be(()=>e.removeEventListener(t,n,r)))}function zi(){return P().app}var Hi=class extends Z{static template=J`<t t-call-slot="default"/>`},Gi=class extends Z{static template=J``;props=Qe({slots:j.object(["default"]),target:j.or([j.string(),j.signal(j.instanceOf(HTMLElement)),j.instanceOf(HTMLElement)])});setup(){let e=this.__owl__,t=e.app,n=this.props.slots,r=null,i=()=>{r&&(r.destroy(),r=null)};et(()=>{let s=qi(this.props.target);if(s)return r=t.createRoot(Hi,{props:{slots:n}}),r.node.pluginManager=e.pluginManager,se.set(r.node,[dn(e)]),r.mount(s),i}),be(i)}};function qi(e){return typeof e=="function"&&(e=e()),typeof e=="string"?document.querySelector(e):e instanceof HTMLElement?e:null}var Xi=class extends Z{static template=J`<t t-call-slot="default"/>`},Yi=class extends Z{static template=J`
|
|
10
10
|
<t t-if="!this.prepared()">
|
|
11
11
|
<t t-call-slot="fallback"/>
|
|
12
12
|
</t>
|
|
13
|
-
`;props=Qe({slots:
|
|
13
|
+
`;props=Qe({slots:j.object(["default","fallback?"])});prepared=R(!1);mounted=R(!1);subRootMounted=!1;setup(){let e=this.__owl__,t=e.app.createRoot(Xi,{props:{slots:this.props.slots}});t.node.pluginManager=e.pluginManager,se.set(t.node,[dn(e)]),t.prepare().then(()=>this.prepared.set(!0));let n=t.node.fiber;n&&n.counter===0&&this.prepared.set(!0),jn(()=>this.mounted.set(!0)),et(()=>{if(this.subRootMounted||!this.prepared()||!this.mounted())return;this.subRootMounted=!0;let r=e.bdom.firstNode();t.mount(r.parentElement,{afterNode:r})}),be(()=>t.destroy())}};function Zi(e,t,...n){let r=H(),i=n.length>0,s=r.props[e];return r.app.dev&&(t!==void 0&&(!i||s!==void 0)&&V(s,t,`Invalid prop '${e}' in '${r.componentName}'`),r.willUpdateProps.push(o=>{if(o[e]!==r.props[e])throw new m(`Prop '${e}' changed in component '${r.componentName}'. Props declared with \`prop()\` are static and should not change. If the prop is a signal, pass the same signal reference (its inner value may change).`)})),s===void 0&&i?n[0]:s}function Ji(e){let t=P(),n=t instanceof me?t.pluginManager:t,r=n.getPluginById(e.id);if(!r)if(t instanceof he)r=n.startPlugin(e);else throw new m(`Unknown plugin "${e.id}"`);return r}function Qi(e,t){let n=P();if(!(n instanceof he))throw new m("Expected to be in a plugin scope");return n.app.dev&&t&&V(n.config,j.object({[e]:t}),"Config does not match the type"),n.config[e.endsWith("?")?e.slice(0,-1):e]}function es(e,t){let n=H(),r=new he(n.app,{parent:n.pluginManager,config:t});n.pluginManager=r,be(()=>r.destroy()),Fe(r,e),r.status<k.MOUNTED&&Bn(()=>r.ready)}ge.shouldNormalizeDom=!1;ge.mainEventHandler=Li;var ts={config:ge,mount:He,patch:hi,remove:fi,list:xn,multi:Rt,text:_e,toggler:ie,createBlock:Cn,html:It},ns={version:Pt.version,date:"2026-05-28T07:14:22.717Z",hash:"578ed435",url:"https://github.com/odoo/owl"};var rs="true,false,NaN,null,undefined,debugger,console,window,in,instanceof,new,function,return,eval,void,Math,RegExp,Array,Object,Date,__globals__".split(","),Fn=Object.assign(Object.create(null),{and:"&&",or:"||",gt:">",gte:">=",lt:"<",lte:"<="}),Kn=Object.assign(Object.create(null),{"{":"LEFT_BRACE","}":"RIGHT_BRACE","[":"LEFT_BRACKET","]":"RIGHT_BRACKET",":":"COLON",",":"COMMA","(":"LEFT_PAREN",")":"RIGHT_PAREN"}),is="...,.,===,==,+,!==,!=,!,||,&&,>=,>,<=,<,?,-,*,/,%,typeof ,=>,=,;,in ,new ,|,&,^,~".split(","),ss=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 m("Invalid expression");t+=i}r++}if(e[r]!==n)throw new m("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}},os=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},ls=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 Fn?{type:"OPERATOR",value:Fn[t],size:t.length}:{type:"SYMBOL",value:t}}else return!1},as=function(e){let t=e[0];return t&&t in Kn?{type:Kn[t],value:t}:!1},cs=function(e){for(let t of is)if(e.startsWith(t))return{type:"OPERATOR",value:t};return!1},us=[ss,os,cs,ls,as];function hs(e){let t=[],n=!0,r,i=e;try{for(;n;)if(i=i.trim(),i){for(let s of us)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 m(`Tokenizer error: could not tokenize \`${e}\``);return t}var fs=e=>e&&(e.type==="LEFT_BRACE"||e.type==="COMMA"),ds=e=>e&&(e.type==="RIGHT_BRACE"||e.type==="COMMA"),ps=new Map([["in "," in "]]);function Yn(e,t){let n=[];t?.size&&n.push({vars:t,depth:-1/0});let r=hs(e),i=0,s=[],o=-1;function l(a){return n.some(h=>h.vars.has(a))}for(;i<r.length;){let a=r[i],h=r[i-1],f=r[i+1],g=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"&&!rs.includes(a.value);if(p&&h&&(g==="LEFT_BRACE"&&fs(h)&&ds(f)&&(r.splice(i+1,0,{type:"COLON",value:":"},{...a}),f=r[i+1]),(h.type==="OPERATOR"&&h.value==="."||(h.type==="LEFT_BRACE"||h.type==="COMMA")&&f&&f.type==="COLON")&&(p=!1)),a.type==="TEMPLATE_STRING"){let y=new Set;for(let d of n)for(let A of d.vars)y.add(A);a.value=a.replace(d=>D(d,y))}if(f&&f.type==="OPERATOR"&&f.value==="=>"){let y=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&&(y.add(r[d].originalValue),r[d].value=`_${r[d].originalValue}`,r[d].isLocal=!0),d--}else y.add(a.value);n.push({vars:y,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 h=o+1;h<r.length;h++){let f=r[h];f.varName&&!f.isLocal&&f.varName!=="this"&&!a.has(f.varName)&&(a.add(f.varName),c.push(f.varName))}}return{expr:r.map(a=>ps.get(a.value)||a.value).join(""),freeVariables:c}}function D(e,t){return Yn(e,t).expr}var rt=/\{\{.*?\}\}|\#\{.*?\}/g;function ms(e,t){let n=e.match(rt);return n&&n[0].length===e.length?`(${t(e.slice(2,n[0][0]==="{"?-2:-1))})`:"`"+e.replace(rt,i=>"${"+t(i.slice(2,i[0]==="{"?-2:-1))+"}")+"`"}function Bt(e){return ms(e,D)}function Vt(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],u=s.exec(i);if(c&&u){let a=Number(u[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 m(r)}return n}var T={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},ee={First:1,Last:2,Index:4,Value:8},Wn=new WeakMap;function gs(e,t){let n={inPreTag:!1,customDirectives:t};if(typeof e=="string"){let i=Vt(`<t>${e}</t>`).firstChild;return Un(i,n)}let r=Wn.get(e);return r||(r=Un(e.cloneNode(!0),n),Wn.set(e,r)),r}function Un(e,t){return Bs(e),B(e,t)||{type:T.Text,value:""}}function B(e,t){return e instanceof Element?ws(e,t)||Ts(e,t)||Ss(e,t)||_s(e,t)||Is(e,t)||Ms(e,t)||ks(e,t)||As(e,t)||Cs(e,t)||$s(e,t)||Rs(e,t)||Os(e,t)||Es(e,t)||Ds(e,t)||bs(e,t):ys(e,t)}function bs(e,t){return e.tagName!=="t"?null:it(e,t)}var vs=/[\r\n]/;function ys(e,t){if(e.nodeType===Node.TEXT_NODE){let n=e.textContent||"";return!t.inPreTag&&vs.test(n)&&!n.trim()?null:{type:T.Text,value:n}}return null}function ws(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 m("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 m(`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 m(`Custom directive "${i}" throw the following error: ${c}`)}return B(e,t)}}return null}function Ts(e,t){if(e.hasAttribute("t-debug")){e.removeAttribute("t-debug");let n=B(e,t),r={type:T.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:T.TLog,expr:n,content:r};return r?.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}return null}var Ns=new Set(["svg","g","path"]);function Es(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 m(`Invalid tag name: '${n}'`);t=Object.assign({},t),n==="pre"&&(t.inPreTag=!0);let i=!t.nameSpace&&Ns.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,u=null,a=null;for(let f of o){let g=e.getAttribute(f);if(f==="t-on"||f==="t-on-")throw new m("Missing event name with t-on directive");if(f.startsWith("t-on-"))u=u||{},u[f.slice(5)]=g;else if(f.startsWith("t-model")){if(!["input","select","textarea"].includes(n))throw new m("The t-model directive only works with <input>, <textarea> and <select>");let p=e.getAttribute("type"),y=n==="input",d=n==="select",A=y&&p==="checkbox",E=y&&p==="radio",w=f.includes(".trim"),C=w||f.includes(".lazy"),v=f.includes(".number"),N=f.includes(".proxy");a={expr:g,targetAttr:A?"checked":"value",specialInitTargetAttr:E?"checked":null,eventType:E?"click":d||C?"change":"input",hasDynamicChildren:!1,shouldTrim:w,shouldNumberize:v,isProxy:N},d&&(t=Object.assign({},t),t.tModelInfo=a)}else{if(f.startsWith("block-"))throw new m(`Invalid attribute: '${f}'`);if(f==="xmlns")i=g;else if(f.startsWith("t-translation-context-")){let p=f.slice(22);c=c||{},c[p]=g}else if(f!=="t-name"){if(f.startsWith("t-")&&!f.startsWith("t-att"))throw new m(`Unknown QWeb directive: '${f}'`);let p=t.tModelInfo;p&&["t-att-value","t-attf-value"].includes(f)&&(p.hasDynamicChildren=!0),l=l||{},l[f]=g}}}i&&(t.nameSpace=i);let h=Ft(e,t);return{type:T.DomNode,tag:n,dynamicTag:r,attrs:l,attrsTranslationCtx:c,on:u,ref:s,content:h,model:a,ns:i}}function $s(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:T.TOut,expr:n,body:null},i=e.getAttribute("t-ref");e.removeAttribute("t-ref");let s=B(e,t);return s&&s.type===T.DomNode?(r.body=s.content.length?s.content:null,{...s,ref:i,content:[r]}):r}function Ss(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 m(`"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|=ee.First),l&&!n.includes(`${i}_last`)&&(c|=ee.Last),l&&!n.includes(`${i}_index`)&&(c|=ee.Index),l&&!n.includes(`${i}_value`)&&(c|=ee.Value),{type:T.TForEach,collection:r,elem:i,body:o,key:s,noFlags:c}}function Cs(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:T.TKey,expr:n,content:r};return r.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}function ks(e,t){if(!e.hasAttribute("t-call"))return null;if(e.tagName!=="t")throw new m(`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 u=l.slice(22);s=s||{},s[u]=c}else i=i||{},i[l]=c}let o=it(e,t);return{type:T.TCall,name:n,attrs:i,attrsTranslationCtx:s,body:o,context:r}}function As(e,t){if(!e.hasAttribute("t-call-block"))return null;let n=e.getAttribute("t-call-block");return{type:T.TCallBlock,name:n}}function _s(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:T.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),u=i.nextElementSibling;i.remove(),i=u,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:T.TIf,condition:n,content:r,tElif:s.length?s:null,tElse:o}}function Ds(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=Ft(e,t)),{type:T.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 Os(e,t){let n=e.tagName,r=n[0],i=e.hasAttribute("t-component");if(i&&n!=="t")throw new m(`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,u=null;for(let h of e.getAttributeNames()){let f=e.getAttribute(h);if(h.startsWith("t-translation-context-")){let g=h.slice(22);u=u||{},u[g]=f}else if(h.startsWith("t-"))if(h.startsWith("t-on-"))l=l||{},l[h.slice(5)]=f;else{let g=xs.get(h.split("-").slice(0,2).join("-"));throw new m(g||`unsupported directive on Component: ${h}`)}else c=c||{},c[h]=f}let a=null;if(e.hasChildNodes()){let h=e.cloneNode(!0),f=Array.from(h.querySelectorAll("[t-set-slot]"));for(let p of f){if(p.tagName!=="t")throw new m(`Directive 't-set-slot' can only be used on <t> nodes (used on a <${p.tagName}>)`);let y=p.getAttribute("t-set-slot"),d=p.parentElement,A=!1;for(;d&&d!==h;){if(d.hasAttribute("t-component")||d.tagName[0]===d.tagName[0].toUpperCase()){A=!0;break}d=d.parentElement}if(A||!d)continue;p.removeAttribute("t-set-slot"),p.remove();let E=B(p,t),w=null,C=null,v=null,N=null;for(let b of p.getAttributeNames()){let $=p.getAttribute(b);if(b==="t-slot-scope"){N=$;continue}else if(b.startsWith("t-translation-context-")){let _=b.slice(22);v=v||{},v[_]=$}else b.startsWith("t-on-")?(w=w||{},w[b.slice(5)]=$):(C=C||{},C[b]=$)}a=a||{},a[y]={content:E,on:w,attrs:C,attrsTranslationCtx:v,scope:N}}let g=it(h,t);a=a||{},g&&!a.default&&(a.default={content:g,on:l,attrs:null,attrsTranslationCtx:null,scope:o})}return{type:T.TComponent,name:n,isDynamic:i,dynamicProps:s,props:c,propsTranslationCtx:u,slots:a,on:l}}function Rs(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:T.TCallSlot,name:n,attrs:r,attrsTranslationCtx:i,on:s,defaultContent:it(e,t)}}function zn(e){let t={type:T.TTranslation,content:e};return e?.hasNoRepresentation&&(t.hasNoRepresentation=!0),t}function Is(e,t){if(e.getAttribute("t-translation")!=="off")return null;e.removeAttribute("t-translation");let n=B(e,t);if(n?.type===T.Multi){let r=n.content.map(zn);return Kt(r)}return zn(n)}function Hn(e,t){let n={type:T.TTranslationContext,content:e,translationCtx:t};return e?.hasNoRepresentation&&(n.hasNoRepresentation=!0),n}function Ms(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===T.Multi){let i=r.content.map(s=>Hn(s,n));return Kt(i)}return Hn(r,n)}function Ft(e,t){let n=[];for(let r of e.childNodes){let i=B(r,t);i&&(i.type===T.Multi?n.push(...i.content):n.push(i))}return n}function Kt(e){let t={type:T.Multi,content:e};return e.every(n=>n.hasNoRepresentation)&&(t.hasNoRepresentation=!0),t}function it(e,t){let n=Ft(e,t);switch(n.length){case 0:return null;case 1:return n[0];default:return Kt(n)}}function Ls(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 m("t-if cannot stay at the same level as t-foreach when using t-elif or t-else");if(["t-if","t-elif","t-else"].map(l).reduce(function(u,a){return u+a})>1)throw new m("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 m("text is not allowed between branching directives");c.remove()}}else throw new m("t-elif and t-else directives must be preceded by a t-if or t-elif directive")}}function Ps(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 m("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 Bs(e){Ls(e),Ps(e)}var Gn=Symbol("zero"),js=/\s+/g,Q;typeof document<"u"&&(Q=document.implementation.createDocument(null,null,null));var Vs=new Set(["stop","capture","prevent","self","synthetic","passive"]),nt={};function I(e=""){return nt[e]=(nt[e]||0)+1,e+nt[e]}function Fs(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 tt(e){return`\`${e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/,"\\${")}\``}var jt=class Zn{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=Zn.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=Q.createElement("t");return t.appendChild(this.dom),t.innerHTML}};function oe(e,t){return Object.assign({block:null,index:0,forceNewBlock:!0,translate:e.translate,translationCtx:e.translationCtx,tKeyExpr:null,nameSpace:e.nameSpace,tModelSelectedExpr:e.tModelSelectedExpr},t)}var qn=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 m(r)}return n}var T={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},ee={First:1,Last:2,Index:4,Value:8},Wn=new WeakMap;function gs(e,t){let n={inPreTag:!1,customDirectives:t};if(typeof e=="string"){let i=Vt(`<t>${e}</t>`).firstChild;return Un(i,n)}let r=Wn.get(e);return r||(r=Un(e.cloneNode(!0),n),Wn.set(e,r)),r}function Un(e,t){return Bs(e),B(e,t)||{type:T.Text,value:""}}function B(e,t){return e instanceof Element?ws(e,t)||Ts(e,t)||Ss(e,t)||_s(e,t)||Ms(e,t)||Is(e,t)||ks(e,t)||As(e,t)||Cs(e,t)||$s(e,t)||Rs(e,t)||Os(e,t)||Es(e,t)||Ds(e,t)||bs(e,t):ys(e,t)}function bs(e,t){return e.tagName!=="t"?null:it(e,t)}var vs=/[\r\n]/;function ys(e,t){if(e.nodeType===Node.TEXT_NODE){let n=e.textContent||"";return!t.inPreTag&&vs.test(n)&&!n.trim()?null:{type:T.Text,value:n}}return null}function ws(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 m("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 m(`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 m(`Custom directive "${i}" throw the following error: ${c}`)}return B(e,t)}}return null}function Ts(e,t){if(e.hasAttribute("t-debug")){e.removeAttribute("t-debug");let n=B(e,t),r={type:T.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:T.TLog,expr:n,content:r};return r?.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}return null}var Ns=new Set(["svg","g","path"]);function Es(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 m(`Invalid tag name: '${n}'`);t=Object.assign({},t),n==="pre"&&(t.inPreTag=!0);let i=!t.nameSpace&&Ns.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,u=null,a=null;for(let f of o){let g=e.getAttribute(f);if(f==="t-on"||f==="t-on-")throw new m("Missing event name with t-on directive");if(f.startsWith("t-on-"))u=u||{},u[f.slice(5)]=g;else if(f.startsWith("t-model")){if(!["input","select","textarea"].includes(n))throw new m("The t-model directive only works with <input>, <textarea> and <select>");let p=e.getAttribute("type"),y=n==="input",d=n==="select",A=y&&p==="checkbox",E=y&&p==="radio",w=f.includes(".trim"),C=w||f.includes(".lazy"),v=f.includes(".number"),N=f.includes(".proxy");a={expr:g,targetAttr:A?"checked":"value",specialInitTargetAttr:E?"checked":null,eventType:E?"click":d||C?"change":"input",hasDynamicChildren:!1,shouldTrim:w,shouldNumberize:v,isProxy:N},d&&(t=Object.assign({},t),t.tModelInfo=a)}else{if(f.startsWith("block-"))throw new m(`Invalid attribute: '${f}'`);if(f==="xmlns")i=g;else if(f.startsWith("t-translation-context-")){let p=f.slice(22);c=c||{},c[p]=g}else if(f!=="t-name"){if(f.startsWith("t-")&&!f.startsWith("t-att"))throw new m(`Unknown QWeb directive: '${f}'`);let p=t.tModelInfo;p&&["t-att-value","t-attf-value"].includes(f)&&(p.hasDynamicChildren=!0),l=l||{},l[f]=g}}}i&&(t.nameSpace=i);let h=Ft(e,t);return{type:T.DomNode,tag:n,dynamicTag:r,attrs:l,attrsTranslationCtx:c,on:u,ref:s,content:h,model:a,ns:i}}function $s(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:T.TOut,expr:n,body:null},i=e.getAttribute("t-ref");e.removeAttribute("t-ref");let s=B(e,t);return s&&s.type===T.DomNode?(r.body=s.content.length?s.content:null,{...s,ref:i,content:[r]}):r}function Ss(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 m(`"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|=ee.First),l&&!n.includes(`${i}_last`)&&(c|=ee.Last),l&&!n.includes(`${i}_index`)&&(c|=ee.Index),l&&!n.includes(`${i}_value`)&&(c|=ee.Value),{type:T.TForEach,collection:r,elem:i,body:o,key:s,noFlags:c}}function Cs(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:T.TKey,expr:n,content:r};return r.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}function ks(e,t){if(!e.hasAttribute("t-call"))return null;if(e.tagName!=="t")throw new m(`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 u=l.slice(22);s=s||{},s[u]=c}else i=i||{},i[l]=c}let o=it(e,t);return{type:T.TCall,name:n,attrs:i,attrsTranslationCtx:s,body:o,context:r}}function As(e,t){if(!e.hasAttribute("t-call-block"))return null;let n=e.getAttribute("t-call-block");return{type:T.TCallBlock,name:n}}function _s(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:T.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),u=i.nextElementSibling;i.remove(),i=u,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:T.TIf,condition:n,content:r,tElif:s.length?s:null,tElse:o}}function Ds(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=Ft(e,t)),{type:T.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 Os(e,t){let n=e.tagName,r=n[0],i=e.hasAttribute("t-component");if(i&&n!=="t")throw new m(`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,u=null;for(let h of e.getAttributeNames()){let f=e.getAttribute(h);if(h.startsWith("t-translation-context-")){let g=h.slice(22);u=u||{},u[g]=f}else if(h.startsWith("t-"))if(h.startsWith("t-on-"))l=l||{},l[h.slice(5)]=f;else{let g=xs.get(h.split("-").slice(0,2).join("-"));throw new m(g||`unsupported directive on Component: ${h}`)}else c=c||{},c[h]=f}let a=null;if(e.hasChildNodes()){let h=e.cloneNode(!0),f=Array.from(h.querySelectorAll("[t-set-slot]"));for(let p of f){if(p.tagName!=="t")throw new m(`Directive 't-set-slot' can only be used on <t> nodes (used on a <${p.tagName}>)`);let y=p.getAttribute("t-set-slot"),d=p.parentElement,A=!1;for(;d&&d!==h;){if(d.hasAttribute("t-component")||d.tagName[0]===d.tagName[0].toUpperCase()){A=!0;break}d=d.parentElement}if(A||!d)continue;p.removeAttribute("t-set-slot"),p.remove();let E=B(p,t),w=null,C=null,v=null,N=null;for(let b of p.getAttributeNames()){let $=p.getAttribute(b);if(b==="t-slot-scope"){N=$;continue}else if(b.startsWith("t-translation-context-")){let _=b.slice(22);v=v||{},v[_]=$}else b.startsWith("t-on-")?(w=w||{},w[b.slice(5)]=$):(C=C||{},C[b]=$)}a=a||{},a[y]={content:E,on:w,attrs:C,attrsTranslationCtx:v,scope:N}}let g=it(h,t);a=a||{},g&&!a.default&&(a.default={content:g,on:null,attrs:null,attrsTranslationCtx:null,scope:o})}return{type:T.TComponent,name:n,isDynamic:i,dynamicProps:s,props:c,propsTranslationCtx:u,slots:a,on:l}}function Rs(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:T.TCallSlot,name:n,attrs:r,attrsTranslationCtx:i,on:s,defaultContent:it(e,t)}}function zn(e){let t={type:T.TTranslation,content:e};return e?.hasNoRepresentation&&(t.hasNoRepresentation=!0),t}function Ms(e,t){if(e.getAttribute("t-translation")!=="off")return null;e.removeAttribute("t-translation");let n=B(e,t);if(n?.type===T.Multi){let r=n.content.map(zn);return Kt(r)}return zn(n)}function Hn(e,t){let n={type:T.TTranslationContext,content:e,translationCtx:t};return e?.hasNoRepresentation&&(n.hasNoRepresentation=!0),n}function Is(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===T.Multi){let i=r.content.map(s=>Hn(s,n));return Kt(i)}return Hn(r,n)}function Ft(e,t){let n=[];for(let r of e.childNodes){let i=B(r,t);i&&(i.type===T.Multi?n.push(...i.content):n.push(i))}return n}function Kt(e){let t={type:T.Multi,content:e};return e.every(n=>n.hasNoRepresentation)&&(t.hasNoRepresentation=!0),t}function it(e,t){let n=Ft(e,t);switch(n.length){case 0:return null;case 1:return n[0];default:return Kt(n)}}function Ls(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 m("t-if cannot stay at the same level as t-foreach when using t-elif or t-else");if(["t-if","t-elif","t-else"].map(l).reduce(function(u,a){return u+a})>1)throw new m("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 m("text is not allowed between branching directives");c.remove()}}else throw new m("t-elif and t-else directives must be preceded by a t-if or t-elif directive")}}function Ps(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 m("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 Bs(e){Ls(e),Ps(e)}var Gn=Symbol("zero"),js=/\s+/g,Q;typeof document<"u"&&(Q=document.implementation.createDocument(null,null,null));var Vs=new Set(["stop","capture","prevent","self","synthetic","passive"]),nt={};function M(e=""){return nt[e]=(nt[e]||0)+1,e+nt[e]}function Fs(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 tt(e){return`\`${e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/,"\\${")}\``}var jt=class Zn{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=Zn.nextBlockId++,this.varName="b"+this.id,this.blockName="block"+this.id,this.target=t,this.type=n}insertData(t,n="d"){let r=M(n);return this.target.addLine(`let ${r} = ${t};`),this.data.push(r)-1}insert(t){this.currentDom?this.currentDom.appendChild(t):this.dom=t}generateExpr(t){if(this.type==="block"){let n=this.children.length,r=this.data.length?`[${this.data.join(", ")}]`:n?"[]":"";return n&&(r+=", ["+this.children.map(i=>i.varName).join(", ")+"]"),this.dynamicTagName?`toggler(${this.dynamicTagName}, ${this.blockName}(${this.dynamicTagName})(${r}))`:`${this.blockName}(${r})`}else if(this.type==="list")return`list(c_block${this.id})`;return t}asXmlString(){let t=Q.createElement("t");return t.appendChild(this.dom),t.innerHTML}};function oe(e,t){return Object.assign({block:null,index:0,forceNewBlock:!0,translate:e.translate,translationCtx:e.translationCtx,tKeyExpr:null,nameSpace:e.nameSpace,tModelSelectedExpr:e.tModelSelectedExpr},t)}var qn=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}},Xn=["alt","aria-label","aria-placeholder","aria-roledescription","aria-valuetext","label","placeholder","title"],Ks=/^(\s*)([\s\S]+?)(\s*)$/,Ws=class{blocks=[];nextBlockId=1;isDebug=!1;targets=[];target=new qn("template");templateName;dev;translateFn;translatableAttributes=Xn;ast;staticDefs=[];slotNames=new Set;helpers=new Set;constructor(e,t){if(this.translateFn=t.translateFn||(n=>n),t.translatableAttributes){let n=new Set(Xn);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===T.TDebug,jt.nextBlockId=1,nt={},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=tt(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 qn(i,r);return this.targets.push(o),this.target=o,this.compileAST(t,oe(n)),this.target=s,i}addLine(e,t){this.target.addLine(e,t)}define(e,t){this.addLine(`const ${e} = ${t};`)}insertAnchor(e,t=e.children.length){let n=`block-child-${t}`,r=Q.createElement(n);e.insert(r)}createBlock(e,t,n){let r=this.target.hasRoot,i=new jt(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=Ks.exec(e);return n[1]+this.translateFn(n[2],t)+n[3]}compileAST(e,t){switch(e.type){case T.Text:return this.compileText(e,t);case T.DomNode:return this.compileTDomNode(e,t);case T.TOut:return this.compileTOut(e,t);case T.TIf:return this.compileTIf(e,t);case T.TForEach:return this.compileTForeach(e,t);case T.TKey:return this.compileTKey(e,t);case T.Multi:return this.compileMulti(e,t);case T.TCall:return this.compileTCall(e,t);case T.TCallBlock:return this.compileTCallBlock(e,t);case T.TSet:return this.compileTSet(e,t);case T.TComponent:return this.compileComponent(e,t);case T.TDebug:return this.compileDebug(e,t);case T.TLog:return this.compileLog(e,t);case T.TCallSlot:return this.compileTCallSlot(e,t);case T.TTranslation:return this.compileTTranslation(e,t);case T.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(${D(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(js," ")),!n||r)n=this.createBlock(n,"text",t),this.insertBlock(`text(${tt(i)})`,n,{...t,forceNewBlock:r&&!n});else{let s=e.type===T.Text?Q.createTextNode:Q.createComment;n.insert(s.call(Q,i))}return n.varName}generateHandlerCode(e,t){let n=e.split(".").slice(1).map(u=>{if(!Vs.has(u))throw new m(`Unknown event modifier: '${u}'`);return`"${u}"`}),r="";n.length&&(r=`${n.join(",")}, `);let i=D(t);if(!i.trim())return`[${r}, ctx]`;let s,o=i.match(/^(\([^)]*\))\s*=>/),l=!o&&i.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=>/);if(o){let u=o[1].slice(1,-1).trim(),a=i.slice(o[0].length);s=u?`(ctx,${u})=>${a}`:`(ctx)=>${a}`}else if(l){let u=i.slice(l[0].length);s=`(ctx,${l[1]})=>${u}`}else this.helpers.add("callHandler"),s=`(ctx, ev) => callHandler(${i}, ctx, ev)`;let 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,D(e.dynamicTag)),n.dynamicTagName=a}let o={};for(let a in e.attrs){let h,f;if(a.startsWith("t-attf")){h=Bt(e.attrs[a]);let g=n.insertData(h,"attr");f=a.slice(7),o["block-attribute-"+g]=f}else if(a.startsWith("t-att"))if(f=a==="t-att"?null:a.slice(6),h=D(e.attrs[a]),f&&Fs(e.tag,f)){f==="readonly"&&(f="readOnly"),f==="value"?h=`new String((${h}) === 0 ? 0 : ((${h}) || ""))`:h=`new Boolean(${h})`;let g=n.insertData(h,"prop");o[`block-property-${g}`]=f}else{let g=n.insertData(h,"attr");a==="t-att"?o["block-attributes"]=String(g):o[`block-attribute-${g}`]=f}else if(this.translatableAttributes.includes(a)){let g=e.attrsTranslationCtx?.[a]||t.translationCtx;o[a]=this.translateFn(e.attrs[a],g)}else h=`"${e.attrs[a]}"`,f=a,o[a]=e.attrs[a];if(f==="value"&&t.tModelSelectedExpr){let g=n.insertData(`${t.tModelSelectedExpr} === ${h}`,"attr");o[`block-attribute-${g}`]="selected"}}let l;if(e.model){let{hasDynamicChildren:a,expr:h,eventType:f,shouldNumberize:g,shouldTrim:p,targetAttr:y,specialInitTargetAttr:d,isProxy:A}=e.model,E,w;if(A){let b=D(h);E=b,w=$=>`${b} = ${$}`}else{let b=I("expr"),$=D(h);this.helpers.add("modelExpr"),this.define(b,`modelExpr(${$})`),E=`${b}()`,w=_=>`${b}.set(${_})`}let C;if(d){let b=y in o&&`'${o[y]}'`;if(!b&&e.attrs){let $=e.attrs[`t-att-${y}`];$&&(b=D($))}C=n.insertData(`${E} === ${b}`,"prop"),o[`block-property-${C}`]=d}else a?(l=`${I("bValue")}`,this.define(l,E)):(C=n.insertData(E,"prop"),o[`block-property-${C}`]=y);this.helpers.add("toNumber");let v=`ev.target.${y}`;v=p?`${v}.trim()`:v,v=g?`toNumber(${v})`:v;let N=`[(ctx, ev) => { ${w(v)}; }, ctx]`;C=n.insertData(N,"hdlr"),o[`block-handler-${C}`]=f}for(let a in e.on){let h=this.generateHandlerCode(a,e.on[a]),f=n.insertData(h,"hdlr");o[`block-handler-${f}`]=a}if(e.ref){let a=D(e.ref);this.helpers.add("createRef");let h=`createRef(${a})`,f=n.insertData(h,"ref");o["block-ref"]=String(f)}let c=e.ns||t.nameSpace,u=c?Q.createElementNS(c,e.tag):Q.createElement(e.tag);for(let[a,h]of Object.entries(o))a==="class"&&h===""||u.setAttribute(a,h);if(n.insert(u),e.content.length){let a=n.currentDom;n.currentDom=u;let h=e.content;for(let f=0;f<h.length;f++){let g=e.content[f],p=oe(t,{block:n,index:n.childNumber,forceNewBlock:!1,tKeyExpr:t.tKeyExpr,nameSpace:c,tModelSelectedExpr:l,inPreTag:t.inPreTag||e.tag==="pre"});this.compileAST(g,p)}n.currentDom=a}if(i&&(this.insertBlock(`${n.blockName}(ddd)`,n,t),n.children.length&&n.hasDynamicChildren)){let a=this.target.code,h=n.children.slice(),f=h.shift();for(let g=s;g<a.length&&!(a[g].trimStart().startsWith(`const ${f.varName} `)&&(a[g]=a[g].replace(`const ${f.varName}`,f.varName),f=h.shift(),!f));g++);this.addLine(`let ${n.children.map(g=>g.varName).join(", ")};`,s)}return n.varName}compileZero(){this.helpers.add("zero");let e=this.slotNames.has(Gn);this.slotNames.add(Gn);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=jt.nextBlockId;let s=oe(t);this.compileAST({type:T.Multi,content:e.body},s),this.helpers.add("safeOutput"),r=`safeOutput(${D(e.expr)}, b${i})`}else this.helpers.add("safeOutput"),r=`safeOutput(${D(e.expr)})`;return this.insertBlock(r,n,t),n.varName}compileTIfBranch(e,t,n){this.target.indentLevel++;let r=t.children.length;this.compileAST(e,oe(n,{block:t,index:n.index})),t.children.length>r&&this.insertAnchor(t,r),this.target.indentLevel--}compileTIf(e,t,n){let{block:r,forceNewBlock:i}=t,s=this.target.code.length,o=!r||r.type!=="multi"&&i;if(r&&(r.hasDynamicChildren=!0),(!r||r.type!=="multi"&&i)&&(r=this.createBlock(r,"multi",t)),this.addLine(`if (${D(e.condition)}) {`),this.compileTIfBranch(e.content,r,t),e.tElif)for(let l of e.tElif)this.addLine(`} else if (${D(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,u=r.children.slice(),a=u.shift();for(let h=s;h<c.length&&!(c[h].trimStart().startsWith(`const ${a.varName} `)&&(c[h]=c[h].replace(`const ${a.varName}`,a.varName),a=u.shift(),!a));h++);this.addLine(`let ${r.children.map(h=>h.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(${D(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&ee.First||this.addLine(`ctx[\`${e.elem}_first\`] = ${r} === 0;`),e.noFlags&ee.Last||this.addLine(`ctx[\`${e.elem}_last\`] = ${r} === ${o}.length - 1;`),e.noFlags&ee.Index||this.addLine(`ctx[\`${e.elem}_index\`] = ${r};`),e.noFlags&ee.Value||this.addLine(`ctx[\`${e.elem}_value\`] = ${s}[${r}];`),this.define(`key${this.target.loopLevel}`,e.key?D(e.key):r),this.dev&&(this.helpers.add("OwlError"),this.addLine(`if (keys${n.id}.has(String(key${this.target.loopLevel}))) { throw new OwlError(\`Got duplicate key in t-foreach: \${key${this.target.loopLevel}}\`)}`),this.addLine(`keys${n.id}.add(String(key${this.target.loopLevel}));`));let u=oe(t,{block:n,index:r});return this.compileAST(e.body,u),this.target.indentLevel--,this.target.loopLevel--,this.target.loopCtxVars.pop(),this.addLine("}"),this.insertBlock("l",n,t),n.varName}compileTKey(e,t){let n=I("tKey_");return this.define(n,D(e.expr)),t=oe(t,{tKeyExpr:n,block:t.block,index:t.index}),this.compileAST(e.content,t)}compileMulti(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r,s=this.target.code.length;if(i){let l=e.content.filter(u=>!u.hasNoRepresentation).length,c=null;if(l<=1){let u=!this.target.hasRoot&&e.content[e.content.length-1].hasNoRepresentation;u&&(this.target.deferReturn=!0);for(let a of e.content){let h=this.compileAST(a,t);c=c||h}return u&&(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 u=e.content[l],a=!u.hasNoRepresentation,h=oe(t,{block:n,index:o,forceNewBlock:a});this.compileAST(u,h),a&&o++}if(i){if(n.hasDynamicChildren&&n.children.length){let c=this.target.code,u=n.children.slice(),a=u.shift();for(let h=s;h<c.length&&!(c[h].trimStart().startsWith(`const ${a.varName} `)&&(c[h]=c[h].replace(`const ${a.varName}`,a.varName),a=u.shift(),!a));h++);this.addLine(`let ${n.children.map(h=>h.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=rt.test(e.name)?Bt(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),h=I("lazyBlock");this.define(h,`${a}.bind(this, ctx)`),this.helpers.add("zero"),i.push(`[zero]: ${h}`)}let l,c=`{${i.join(", ")}}`;if(e.context){let a=I("ctx");this.addLine(`const ${a} = ${D(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 u=this.generateComponentKey();return this.helpers.add("callTemplate"),this.insertBlock(`callTemplate(${o}, this, app, ${l}, node, ${u})`,n,{...t,forceNewBlock:!n}),n.varName}compileTCallBlock(e,t){let{block:n,forceNewBlock:r}=t;return n&&(r||this.insertAnchor(n)),n=this.createBlock(n,"multi",t),this.insertBlock(D(e.name),n,{...t,forceNewBlock:!n}),n.varName}compileTSet(e,t){let n=e.value?D(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:T.Multi,content:e.body},l=this.compileInNewTarget("value",o,t),c=this.target.currentKey(t),u=`new LazyValue(${l}, ctx, this, node, ${c})`;if(u=e.value?u?`withDefault(${n}, ${u})`:n:u,this.helpers.add("withDefault"),s){let a=this.target.loopCtxVars[i];this.addLine(`${a}[\`${e.name}\`] = ${u};`)}else r?(this.target.needsScopeProtection=!0,this.addLine(`ctx[\`${e.name}\`] = ${u};`),this.target.tSetVars.set(e.name,0)):(this.addLine(`ctx[\`${e.name}\`] = ${u};`),this.target.tSetVars.set(e.name,this.target.loopLevel))}else{let o;if(e.defaultValue){let l=tt(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=tt(this.translateFn(t,i))}else t=D(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 m(`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({}, ${D(t)}${e.length?", "+n:""})`),n}compileComponent(e,t){let{block:n}=t,r="slots"in(e.props||{}),i=[],s=[];for(let g in e.props||{}){let[p,y]=g.split(".");if(y==="signal"){let w=D(e.props[g]),C=/^[a-z_]+$/i.test(p)?p:`'${p}'`;this.helpers.add("toSignal");let v=this.generateSignalCacheKey();i.push(`${C}: toSignal(node, ${v}, ${w})`);continue}if(y){i.push(this.formatProp(g,e.props[g],e.propsTranslationCtx,t.translationCtx));continue}let{expr:d,freeVariables:A}=Yn(e.props[g]),E=/^[a-z_]+$/i.test(p)?p:`'${p}'`;if(i.push(`${E}: ${d||void 0}`),A)for(let w of A){let C=`${p}.${w}`;s.push(`"${C}"`),i.push(`"${C}": ctx['${w}']`)}else s.push(`"${p}"`)}let o="";if(e.slots){let g=[];for(let p in e.slots){let y=e.slots[p],d=[];if(y.content){let w=this.compileInNewTarget("slot",y.content,t,y.on);d.push(`__render: ${w}.bind(this), __ctx: ctx`)}let A=e.slots[p].scope;A&&d.push(`__scope: "${A}"`),e.slots[p].attrs&&d.push(...this.formatPropObject(e.slots[p].attrs,e.slots[p].attrsTranslationCtx,t.translationCtx));let E=`{${d.join(", ")}}`;g.push(`'${p}': ${E}`)}o=`{${g.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 u;e.isDynamic?(u=I("Comp"),this.define(u,D(e.name))):u=`\`${e.name}\``,n&&(t.forceNewBlock===!1||t.tKeyExpr)&&this.insertAnchor(n);let a=this.generateComponentKey();t.tKeyExpr&&(a=`${t.tKeyExpr} + ${a}`);let h=I("comp");this.helpers.add("createComponent"),this.staticDefs.push({id:h,expr:`createComponent(app, ${e.isDynamic?null:u}, ${!e.isDynamic}, ${!!e.slots}, ${!!e.dynamicProps}, [${s}])`}),e.isDynamic&&(a=`(${u}).name + ${a}`);let f=`${h}(${l}, ${a}, node, this, ${e.isDynamic?u:null})`;return e.isDynamic&&(f=`toggler(${u}, ${f})`),e.on&&(f=this.wrapWithEventCatcher(f,e.on)),n=this.createBlock(n,"multi",t),this.insertBlock(f,n,t),n.varName}wrapWithEventCatcher(e,t){this.helpers.add("createCatcher");let n=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(rt)?(s=!0,o=!0,i=Bt(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 u=this.target.loopLevel?`key${this.target.loopLevel}`:"key";o&&(u=this.generateComponentKey(u));let a=e.attrs?this.formatPropObject(l,e.attrsTranslationCtx,t.translationCtx):[],h=this.getPropString(a,c);if(e.defaultContent){let f=this.compileInNewTarget("defaultContent",e.defaultContent,t);r=`callSlot(ctx, node, ${u}, ${i}, ${s}, ${h}, ${f}.bind(this))`}else if(s){let f=I("slot");this.define(f,i),r=`toggler(${f}, callSlot(ctx, node, ${u}, ${f}, ${s}, ${h}))`}else r=`callSlot(ctx, node, ${u}, ${i}, ${s}, ${h})`;return e.on&&(r=this.wrapWithEventCatcher(r,e.on)),n&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),this.insertBlock(r,n,{...t,forceNewBlock:!1}),n.varName}compileTTranslation(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translate:!1})):null}compileTTranslationContext(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translationCtx:e.translationCtx})):null}};function Jn(e,t={hasGlobalValues:!1}){let n=gs(e,t.customDirectives),i=new Ws(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 m(`Failed to compile ${l}: ${s.message}
|
|
22
|
+
${n}`;console.log(r)}return n}compileInNewTarget(e,t,n,r){let i=M(e),s=this.target,o=new qn(i,r);return this.targets.push(o),this.target=o,this.compileAST(t,oe(n)),this.target=s,i}addLine(e,t){this.target.addLine(e,t)}define(e,t){this.addLine(`const ${e} = ${t};`)}insertAnchor(e,t=e.children.length){let n=`block-child-${t}`,r=Q.createElement(n);e.insert(r)}createBlock(e,t,n){let r=this.target.hasRoot,i=new jt(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=Ks.exec(e);return n[1]+this.translateFn(n[2],t)+n[3]}compileAST(e,t){switch(e.type){case T.Text:return this.compileText(e,t);case T.DomNode:return this.compileTDomNode(e,t);case T.TOut:return this.compileTOut(e,t);case T.TIf:return this.compileTIf(e,t);case T.TForEach:return this.compileTForeach(e,t);case T.TKey:return this.compileTKey(e,t);case T.Multi:return this.compileMulti(e,t);case T.TCall:return this.compileTCall(e,t);case T.TCallBlock:return this.compileTCallBlock(e,t);case T.TSet:return this.compileTSet(e,t);case T.TComponent:return this.compileComponent(e,t);case T.TDebug:return this.compileDebug(e,t);case T.TLog:return this.compileLog(e,t);case T.TCallSlot:return this.compileTCallSlot(e,t);case T.TTranslation:return this.compileTTranslation(e,t);case T.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(${D(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(js," ")),!n||r)n=this.createBlock(n,"text",t),this.insertBlock(`text(${tt(i)})`,n,{...t,forceNewBlock:r&&!n});else{let s=e.type===T.Text?Q.createTextNode:Q.createComment;n.insert(s.call(Q,i))}return n.varName}generateHandlerCode(e,t){let n=e.split(".").slice(1).map(u=>{if(!Vs.has(u))throw new m(`Unknown event modifier: '${u}'`);return`"${u}"`}),r="";n.length&&(r=`${n.join(",")}, `);let i=D(t);if(!i.trim())return`[${r}, ctx]`;let s,o=i.match(/^(\([^)]*\))\s*=>/),l=!o&&i.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=>/);if(o){let u=o[1].slice(1,-1).trim(),a=i.slice(o[0].length);s=u?`(ctx,${u})=>${a}`:`(ctx)=>${a}`}else if(l){let u=i.slice(l[0].length);s=`(ctx,${l[1]})=>${u}`}else this.helpers.add("callHandler"),s=`(ctx, ev) => callHandler(${i}, ctx, ev)`;let c=M("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=M("tag");this.define(a,D(e.dynamicTag)),n.dynamicTagName=a}let o={};for(let a in e.attrs){let h,f;if(a.startsWith("t-attf")){h=Bt(e.attrs[a]);let g=n.insertData(h,"attr");f=a.slice(7),o["block-attribute-"+g]=f}else if(a.startsWith("t-att"))if(f=a==="t-att"?null:a.slice(6),h=D(e.attrs[a]),f&&Fs(e.tag,f)){f==="readonly"&&(f="readOnly"),f==="value"?h=`new String((${h}) === 0 ? 0 : ((${h}) || ""))`:h=`new Boolean(${h})`;let g=n.insertData(h,"prop");o[`block-property-${g}`]=f}else{let g=n.insertData(h,"attr");a==="t-att"?o["block-attributes"]=String(g):o[`block-attribute-${g}`]=f}else if(this.translatableAttributes.includes(a)){let g=e.attrsTranslationCtx?.[a]||t.translationCtx;o[a]=this.translateFn(e.attrs[a],g)}else h=`"${e.attrs[a]}"`,f=a,o[a]=e.attrs[a];if(f==="value"&&t.tModelSelectedExpr){let g=n.insertData(`${t.tModelSelectedExpr} === ${h}`,"attr");o[`block-attribute-${g}`]="selected"}}let l;if(e.model){let{hasDynamicChildren:a,expr:h,eventType:f,shouldNumberize:g,shouldTrim:p,targetAttr:y,specialInitTargetAttr:d,isProxy:A}=e.model,E,w;if(A){let b=D(h);E=b,w=$=>`${b} = ${$}`}else{let b=M("expr"),$=D(h);this.helpers.add("modelExpr"),this.define(b,`modelExpr(${$})`),E=`${b}()`,w=_=>`${b}.set(${_})`}let C;if(d){let b=y in o&&`'${o[y]}'`;if(!b&&e.attrs){let $=e.attrs[`t-att-${y}`];$&&(b=D($))}C=n.insertData(`${E} === ${b}`,"prop"),o[`block-property-${C}`]=d}else a?(l=`${M("bValue")}`,this.define(l,E)):(C=n.insertData(E,"prop"),o[`block-property-${C}`]=y);this.helpers.add("toNumber");let v=`ev.target.${y}`;v=p?`${v}.trim()`:v,v=g?`toNumber(${v})`:v;let N=`[(ctx, ev) => { ${w(v)}; }, ctx]`;C=n.insertData(N,"hdlr"),o[`block-handler-${C}`]=f}for(let a in e.on){let h=this.generateHandlerCode(a,e.on[a]),f=n.insertData(h,"hdlr");o[`block-handler-${f}`]=a}if(e.ref){let a=D(e.ref);this.helpers.add("createRef");let h=`createRef(${a})`,f=n.insertData(h,"ref");o["block-ref"]=String(f)}let c=e.ns||t.nameSpace,u=c?Q.createElementNS(c,e.tag):Q.createElement(e.tag);for(let[a,h]of Object.entries(o))a==="class"&&h===""||u.setAttribute(a,h);if(n.insert(u),e.content.length){let a=n.currentDom;n.currentDom=u;let h=e.content;for(let f=0;f<h.length;f++){let g=e.content[f],p=oe(t,{block:n,index:n.childNumber,forceNewBlock:!1,tKeyExpr:t.tKeyExpr,nameSpace:c,tModelSelectedExpr:l,inPreTag:t.inPreTag||e.tag==="pre"});this.compileAST(g,p)}n.currentDom=a}if(i&&(this.insertBlock(`${n.blockName}(ddd)`,n,t),n.children.length&&n.hasDynamicChildren)){let a=this.target.code,h=n.children.slice(),f=h.shift();for(let g=s;g<a.length&&!(a[g].trimStart().startsWith(`const ${f.varName} `)&&(a[g]=a[g].replace(`const ${f.varName}`,f.varName),f=h.shift(),!f));g++);this.addLine(`let ${n.children.map(g=>g.varName).join(", ")};`,s)}return n.varName}compileZero(){this.helpers.add("zero");let e=this.slotNames.has(Gn);this.slotNames.add(Gn);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=jt.nextBlockId;let s=oe(t);this.compileAST({type:T.Multi,content:e.body},s),this.helpers.add("safeOutput"),r=`safeOutput(${D(e.expr)}, b${i})`}else this.helpers.add("safeOutput"),r=`safeOutput(${D(e.expr)})`;return this.insertBlock(r,n,t),n.varName}compileTIfBranch(e,t,n){this.target.indentLevel++;let r=t.children.length;this.compileAST(e,oe(n,{block:t,index:n.index})),t.children.length>r&&this.insertAnchor(t,r),this.target.indentLevel--}compileTIf(e,t,n){let{block:r,forceNewBlock:i}=t,s=this.target.code.length,o=!r||r.type!=="multi"&&i;if(r&&(r.hasDynamicChildren=!0),(!r||r.type!=="multi"&&i)&&(r=this.createBlock(r,"multi",t)),this.addLine(`if (${D(e.condition)}) {`),this.compileTIfBranch(e.content,r,t),e.tElif)for(let l of e.tElif)this.addLine(`} else if (${D(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,u=r.children.slice(),a=u.shift();for(let h=s;h<c.length&&!(c[h].trimStart().startsWith(`const ${a.varName} `)&&(c[h]=c[h].replace(`const ${a.varName}`,a.varName),a=u.shift(),!a));h++);this.addLine(`let ${r.children.map(h=>h.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=M("ctx");this.addLine(`const ${i} = ctx;`),this.target.loopCtxVars.push(i);let s=`v_block${n.id}`,o=`k_block${n.id}`,l=`l_block${n.id}`,c=`c_block${n.id}`;this.helpers.add("prepareList"),this.define(`[${o}, ${s}, ${l}, ${c}]`,`prepareList(${D(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&ee.First||this.addLine(`ctx[\`${e.elem}_first\`] = ${r} === 0;`),e.noFlags&ee.Last||this.addLine(`ctx[\`${e.elem}_last\`] = ${r} === ${o}.length - 1;`),e.noFlags&ee.Index||this.addLine(`ctx[\`${e.elem}_index\`] = ${r};`),e.noFlags&ee.Value||this.addLine(`ctx[\`${e.elem}_value\`] = ${s}[${r}];`),this.define(`key${this.target.loopLevel}`,e.key?D(e.key):r),this.dev&&(this.helpers.add("OwlError"),this.addLine(`if (keys${n.id}.has(String(key${this.target.loopLevel}))) { throw new OwlError(\`Got duplicate key in t-foreach: \${key${this.target.loopLevel}}\`)}`),this.addLine(`keys${n.id}.add(String(key${this.target.loopLevel}));`));let u=oe(t,{block:n,index:r});return this.compileAST(e.body,u),this.target.indentLevel--,this.target.loopLevel--,this.target.loopCtxVars.pop(),this.addLine("}"),this.insertBlock("l",n,t),n.varName}compileTKey(e,t){let n=M("tKey_");return this.define(n,D(e.expr)),t=oe(t,{tKeyExpr:n,block:t.block,index:t.index}),this.compileAST(e.content,t)}compileMulti(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r,s=this.target.code.length;if(i){let l=e.content.filter(u=>!u.hasNoRepresentation).length,c=null;if(l<=1){let u=!this.target.hasRoot&&e.content[e.content.length-1].hasNoRepresentation;u&&(this.target.deferReturn=!0);for(let a of e.content){let h=this.compileAST(a,t);c=c||h}return u&&(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 u=e.content[l],a=!u.hasNoRepresentation,h=oe(t,{block:n,index:o,forceNewBlock:a});this.compileAST(u,h),a&&o++}if(i){if(n.hasDynamicChildren&&n.children.length){let c=this.target.code,u=n.children.slice(),a=u.shift();for(let h=s;h<c.length&&!(c[h].trimStart().startsWith(`const ${a.varName} `)&&(c[h]=c[h].replace(`const ${a.varName}`,a.varName),a=u.shift(),!a));h++);this.addLine(`let ${n.children.map(h=>h.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=rt.test(e.name)?Bt(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),h=M("lazyBlock");this.define(h,`${a}.bind(this, ctx)`),this.helpers.add("zero"),i.push(`[zero]: ${h}`)}let l,c=`{${i.join(", ")}}`;if(e.context){let a=M("ctx");this.addLine(`const ${a} = ${D(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 u=this.generateComponentKey();return this.helpers.add("callTemplate"),this.insertBlock(`callTemplate(${o}, this, app, ${l}, node, ${u})`,n,{...t,forceNewBlock:!n}),n.varName}compileTCallBlock(e,t){let{block:n,forceNewBlock:r}=t;return n&&(r||this.insertAnchor(n)),n=this.createBlock(n,"multi",t),this.insertBlock(D(e.name),n,{...t,forceNewBlock:!n}),n.varName}compileTSet(e,t){let n=e.value?D(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:T.Multi,content:e.body},l=this.compileInNewTarget("value",o,t),c=this.target.currentKey(t),u=`new LazyValue(${l}, ctx, this, node, ${c})`;if(u=e.value?u?`withDefault(${n}, ${u})`:n:u,this.helpers.add("withDefault"),s){let a=this.target.loopCtxVars[i];this.addLine(`${a}[\`${e.name}\`] = ${u};`)}else r?(this.target.needsScopeProtection=!0,this.addLine(`ctx[\`${e.name}\`] = ${u};`),this.target.tSetVars.set(e.name,0)):(this.addLine(`ctx[\`${e.name}\`] = ${u};`),this.target.tSetVars.set(e.name,this.target.loopLevel))}else{let o;if(e.defaultValue){let l=tt(t.translate?this.translate(e.defaultValue,t.translationCtx):e.defaultValue);e.value?(this.helpers.add("withDefault"),o=`withDefault(${n}, ${l})`):o=l}else o=n;if(s){let l=this.target.loopCtxVars[i];this.addLine(`${l}["${e.name}"] = ${o};`)}else r?(this.target.needsScopeProtection=!0,this.addLine(`ctx["${e.name}"] = ${o};`),this.target.tSetVars.set(e.name,0)):(this.addLine(`ctx["${e.name}"] = ${o};`),this.target.tSetVars.set(e.name,this.target.loopLevel))}return null}generateComponentKey(e="key"){let t=[M("__")];for(let n=0;n<this.target.loopLevel;n++)t.push(`\${key${n+1}}`);return`${e} + \`${t.join("__")}\``}generateSignalCacheKey(){let e=[M("__sig_")];for(let t=0;t<this.target.loopLevel;t++)e.push(`\${key${t+1}}`);return`\`${e.join("__")}\``}formatProp(e,t,n,r){if(e.endsWith(".translate")){let i=n?.[e]||r;t=tt(this.translateFn(t,i))}else t=D(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 m(`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({}, ${D(t)}${e.length?", "+n:""})`),n}compileComponent(e,t){let{block:n}=t,r="slots"in(e.props||{}),i=[],s=[];for(let g in e.props||{}){let[p,y]=g.split(".");if(y==="signal"){let w=D(e.props[g]),C=/^[a-z_]+$/i.test(p)?p:`'${p}'`;this.helpers.add("toSignal");let v=this.generateSignalCacheKey();i.push(`${C}: toSignal(node, ${v}, ${w})`);continue}if(y){i.push(this.formatProp(g,e.props[g],e.propsTranslationCtx,t.translationCtx));continue}let{expr:d,freeVariables:A}=Yn(e.props[g]),E=/^[a-z_]+$/i.test(p)?p:`'${p}'`;if(i.push(`${E}: ${d||void 0}`),A)for(let w of A){let C=`${p}.${w}`;s.push(`"${C}"`),i.push(`"${C}": ctx['${w}']`)}else s.push(`"${p}"`)}let o="";if(e.slots){let g=[];for(let p in e.slots){let y=e.slots[p],d=[];if(y.content){let w=this.compileInNewTarget("slot",y.content,t,y.on);d.push(`__render: ${w}.bind(this), __ctx: ctx`)}let A=e.slots[p].scope;A&&d.push(`__scope: "${A}"`),e.slots[p].attrs&&d.push(...this.formatPropObject(e.slots[p].attrs,e.slots[p].attrsTranslationCtx,t.translationCtx));let E=`{${d.join(", ")}}`;g.push(`'${p}': ${E}`)}o=`{${g.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=M("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 u;e.isDynamic?(u=M("Comp"),this.define(u,D(e.name))):u=`\`${e.name}\``,n&&(t.forceNewBlock===!1||t.tKeyExpr)&&this.insertAnchor(n);let a=this.generateComponentKey();t.tKeyExpr&&(a=`${t.tKeyExpr} + ${a}`);let h=M("comp");this.helpers.add("createComponent"),this.staticDefs.push({id:h,expr:`createComponent(app, ${e.isDynamic?null:u}, ${!e.isDynamic}, ${!!e.slots}, ${!!e.dynamicProps}, [${s}])`}),e.isDynamic&&(a=`(${u}).name + ${a}`);let f=`${h}(${l}, ${a}, node, this, ${e.isDynamic?u:null})`;return e.isDynamic&&(f=`toggler(${u}, ${f})`),e.on&&(f=this.wrapWithEventCatcher(f,e.on)),n=this.createBlock(n,"multi",t),this.insertBlock(f,n,t),n.varName}wrapWithEventCatcher(e,t){this.helpers.add("createCatcher");let n=M("catcher"),r={},i=[];for(let s in t){let o=M("hdlr"),l=i.push(o)-1;r[s]=l;let 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(rt)?(s=!0,o=!0,i=Bt(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 u=this.target.loopLevel?`key${this.target.loopLevel}`:"key";o&&(u=this.generateComponentKey(u));let a=e.attrs?this.formatPropObject(l,e.attrsTranslationCtx,t.translationCtx):[],h=this.getPropString(a,c);if(e.defaultContent){let f=this.compileInNewTarget("defaultContent",e.defaultContent,t);r=`callSlot(ctx, node, ${u}, ${i}, ${s}, ${h}, ${f}.bind(this))`}else if(s){let f=M("slot");this.define(f,i),r=`toggler(${f}, callSlot(ctx, node, ${u}, ${f}, ${s}, ${h}))`}else r=`callSlot(ctx, node, ${u}, ${i}, ${s}, ${h})`;return e.on&&(r=this.wrapWithEventCatcher(r,e.on)),n&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),this.insertBlock(r,n,{...t,forceNewBlock:!1}),n.varName}compileTTranslation(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translate:!1})):null}compileTTranslationContext(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translationCtx:e.translationCtx})):null}};function Jn(e,t={hasGlobalValues:!1}){let n=gs(e,t.customDirectives),i=new Ws(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 m(`Failed to compile ${l}: ${s.message}
|
|
23
23
|
|
|
24
24
|
generated code:
|
|
25
25
|
function(app, bdom, helpers) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@odoo/owl",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.32",
|
|
4
4
|
"description": "Odoo Web Library (OWL)",
|
|
5
5
|
"main": "dist/owl.cjs.js",
|
|
6
6
|
"module": "dist/owl.es.js",
|
|
@@ -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.32",
|
|
47
|
+
"@odoo/owl-core": "3.0.0-alpha.32",
|
|
48
|
+
"@odoo/owl-runtime": "3.0.0-alpha.32",
|
|
49
49
|
"jsdom": "^25.0.1"
|
|
50
50
|
}
|
|
51
51
|
}
|