@odoo/owl 3.0.0-alpha.35 → 3.0.0-alpha.36
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 +12 -24
- package/dist/owl.es.js +12 -24
- package/dist/owl.iife.js +12 -24
- package/dist/owl.iife.min.js +8 -8
- package/dist/types/owl.d.ts +38 -40
- package/package.json +4 -4
package/dist/owl.cjs.js
CHANGED
|
@@ -868,21 +868,7 @@ var optionalSymbol = /* @__PURE__ */ Symbol("optional");
|
|
|
868
868
|
function getDefault(type) {
|
|
869
869
|
return typeof type === "function" ? type[defaultSymbol] : void 0;
|
|
870
870
|
}
|
|
871
|
-
function
|
|
872
|
-
return typeof type === "function" && defaultSymbol in type;
|
|
873
|
-
}
|
|
874
|
-
function withDefault(type, value) {
|
|
875
|
-
const validate = function validateWithDefault(context) {
|
|
876
|
-
if (context.value === void 0) {
|
|
877
|
-
return;
|
|
878
|
-
}
|
|
879
|
-
context.validate(type);
|
|
880
|
-
};
|
|
881
|
-
validate[defaultSymbol] = typeof value === "function" ? value : () => value;
|
|
882
|
-
validate[innerTypeSymbol] = type;
|
|
883
|
-
return validate;
|
|
884
|
-
}
|
|
885
|
-
function makeOptional(type) {
|
|
871
|
+
function makeOptional(type, value) {
|
|
886
872
|
const validate = function validateOptional(context) {
|
|
887
873
|
if (context.value === void 0) {
|
|
888
874
|
return;
|
|
@@ -891,14 +877,16 @@ function makeOptional(type) {
|
|
|
891
877
|
};
|
|
892
878
|
validate[optionalSymbol] = true;
|
|
893
879
|
validate[innerTypeSymbol] = type;
|
|
880
|
+
if (value !== void 0) {
|
|
881
|
+
validate[defaultSymbol] = typeof value === "function" ? value : () => value;
|
|
882
|
+
}
|
|
894
883
|
return validate;
|
|
895
884
|
}
|
|
896
885
|
function isOptionalType(type) {
|
|
897
886
|
return typeof type === "function" && optionalSymbol in type;
|
|
898
887
|
}
|
|
899
888
|
function makeType(validate) {
|
|
900
|
-
validate.
|
|
901
|
-
validate.optional = () => makeOptional(validate);
|
|
889
|
+
validate.optional = (value) => makeOptional(validate, value);
|
|
902
890
|
return validate;
|
|
903
891
|
}
|
|
904
892
|
function applyDefaults(value, type) {
|
|
@@ -1068,7 +1056,7 @@ function validateObject(context, schema, isStrict) {
|
|
|
1068
1056
|
const missingKeys = [];
|
|
1069
1057
|
for (const key of keys) {
|
|
1070
1058
|
if (context.value[key] === void 0) {
|
|
1071
|
-
if (!isOptionalType(shape[key])
|
|
1059
|
+
if (!isOptionalType(shape[key])) {
|
|
1072
1060
|
missingKeys.push(key);
|
|
1073
1061
|
}
|
|
1074
1062
|
continue;
|
|
@@ -1543,7 +1531,7 @@ function markup(valueOrStrings, ...placeholders) {
|
|
|
1543
1531
|
}
|
|
1544
1532
|
|
|
1545
1533
|
// ../owl-runtime/dist/owl-runtime.es.js
|
|
1546
|
-
var version = "3.0.0-alpha.
|
|
1534
|
+
var version = "3.0.0-alpha.36";
|
|
1547
1535
|
var fibersInError = /* @__PURE__ */ new WeakMap();
|
|
1548
1536
|
var nodeErrorHandlers = /* @__PURE__ */ new WeakMap();
|
|
1549
1537
|
function invokeErrorHandlers(node, error, finalize, markFibers) {
|
|
@@ -3734,7 +3722,7 @@ var Component = class {
|
|
|
3734
3722
|
}
|
|
3735
3723
|
};
|
|
3736
3724
|
var ObjectCreate = Object.create;
|
|
3737
|
-
function
|
|
3725
|
+
function withDefault(value, defaultValue) {
|
|
3738
3726
|
return value === void 0 || value === null || value === false ? defaultValue : value;
|
|
3739
3727
|
}
|
|
3740
3728
|
function callSlot(ctx, parent, key, name, dynamic, extra, defaultContent) {
|
|
@@ -4020,7 +4008,7 @@ function callTemplate(subTemplate, owner, app, ctx, parent, key) {
|
|
|
4020
4008
|
return toggler(subTemplate, template.call(owner, ctx, parent, key + subTemplate));
|
|
4021
4009
|
}
|
|
4022
4010
|
var helpers = {
|
|
4023
|
-
withDefault
|
|
4011
|
+
withDefault,
|
|
4024
4012
|
zero: /* @__PURE__ */ Symbol("zero"),
|
|
4025
4013
|
callSlot,
|
|
4026
4014
|
withKey,
|
|
@@ -4482,7 +4470,7 @@ var ErrorBoundary = class extends Component {
|
|
|
4482
4470
|
<t t-call-slot="default"/>
|
|
4483
4471
|
</t>
|
|
4484
4472
|
`;
|
|
4485
|
-
props = props({ error: types2.signal().
|
|
4473
|
+
props = props({ error: types2.signal().optional(() => signal(null)) });
|
|
4486
4474
|
setup() {
|
|
4487
4475
|
onError((e) => this.props.error.set(e));
|
|
4488
4476
|
}
|
|
@@ -4599,8 +4587,8 @@ var blockDom = {
|
|
|
4599
4587
|
};
|
|
4600
4588
|
var __info__ = {
|
|
4601
4589
|
version: App.version,
|
|
4602
|
-
date: "2026-06-
|
|
4603
|
-
hash: "
|
|
4590
|
+
date: "2026-06-11T18:30:46.327Z",
|
|
4591
|
+
hash: "eb837019",
|
|
4604
4592
|
url: "https://github.com/odoo/owl"
|
|
4605
4593
|
};
|
|
4606
4594
|
|
package/dist/owl.es.js
CHANGED
|
@@ -790,21 +790,7 @@ var optionalSymbol = /* @__PURE__ */ Symbol("optional");
|
|
|
790
790
|
function getDefault(type) {
|
|
791
791
|
return typeof type === "function" ? type[defaultSymbol] : void 0;
|
|
792
792
|
}
|
|
793
|
-
function
|
|
794
|
-
return typeof type === "function" && defaultSymbol in type;
|
|
795
|
-
}
|
|
796
|
-
function withDefault(type, value) {
|
|
797
|
-
const validate = function validateWithDefault(context) {
|
|
798
|
-
if (context.value === void 0) {
|
|
799
|
-
return;
|
|
800
|
-
}
|
|
801
|
-
context.validate(type);
|
|
802
|
-
};
|
|
803
|
-
validate[defaultSymbol] = typeof value === "function" ? value : () => value;
|
|
804
|
-
validate[innerTypeSymbol] = type;
|
|
805
|
-
return validate;
|
|
806
|
-
}
|
|
807
|
-
function makeOptional(type) {
|
|
793
|
+
function makeOptional(type, value) {
|
|
808
794
|
const validate = function validateOptional(context) {
|
|
809
795
|
if (context.value === void 0) {
|
|
810
796
|
return;
|
|
@@ -813,14 +799,16 @@ function makeOptional(type) {
|
|
|
813
799
|
};
|
|
814
800
|
validate[optionalSymbol] = true;
|
|
815
801
|
validate[innerTypeSymbol] = type;
|
|
802
|
+
if (value !== void 0) {
|
|
803
|
+
validate[defaultSymbol] = typeof value === "function" ? value : () => value;
|
|
804
|
+
}
|
|
816
805
|
return validate;
|
|
817
806
|
}
|
|
818
807
|
function isOptionalType(type) {
|
|
819
808
|
return typeof type === "function" && optionalSymbol in type;
|
|
820
809
|
}
|
|
821
810
|
function makeType(validate) {
|
|
822
|
-
validate.
|
|
823
|
-
validate.optional = () => makeOptional(validate);
|
|
811
|
+
validate.optional = (value) => makeOptional(validate, value);
|
|
824
812
|
return validate;
|
|
825
813
|
}
|
|
826
814
|
function applyDefaults(value, type) {
|
|
@@ -990,7 +978,7 @@ function validateObject(context, schema, isStrict) {
|
|
|
990
978
|
const missingKeys = [];
|
|
991
979
|
for (const key of keys) {
|
|
992
980
|
if (context.value[key] === void 0) {
|
|
993
|
-
if (!isOptionalType(shape[key])
|
|
981
|
+
if (!isOptionalType(shape[key])) {
|
|
994
982
|
missingKeys.push(key);
|
|
995
983
|
}
|
|
996
984
|
continue;
|
|
@@ -1465,7 +1453,7 @@ function markup(valueOrStrings, ...placeholders) {
|
|
|
1465
1453
|
}
|
|
1466
1454
|
|
|
1467
1455
|
// ../owl-runtime/dist/owl-runtime.es.js
|
|
1468
|
-
var version = "3.0.0-alpha.
|
|
1456
|
+
var version = "3.0.0-alpha.36";
|
|
1469
1457
|
var fibersInError = /* @__PURE__ */ new WeakMap();
|
|
1470
1458
|
var nodeErrorHandlers = /* @__PURE__ */ new WeakMap();
|
|
1471
1459
|
function invokeErrorHandlers(node, error, finalize, markFibers) {
|
|
@@ -3656,7 +3644,7 @@ var Component = class {
|
|
|
3656
3644
|
}
|
|
3657
3645
|
};
|
|
3658
3646
|
var ObjectCreate = Object.create;
|
|
3659
|
-
function
|
|
3647
|
+
function withDefault(value, defaultValue) {
|
|
3660
3648
|
return value === void 0 || value === null || value === false ? defaultValue : value;
|
|
3661
3649
|
}
|
|
3662
3650
|
function callSlot(ctx, parent, key, name, dynamic, extra, defaultContent) {
|
|
@@ -3942,7 +3930,7 @@ function callTemplate(subTemplate, owner, app, ctx, parent, key) {
|
|
|
3942
3930
|
return toggler(subTemplate, template.call(owner, ctx, parent, key + subTemplate));
|
|
3943
3931
|
}
|
|
3944
3932
|
var helpers = {
|
|
3945
|
-
withDefault
|
|
3933
|
+
withDefault,
|
|
3946
3934
|
zero: /* @__PURE__ */ Symbol("zero"),
|
|
3947
3935
|
callSlot,
|
|
3948
3936
|
withKey,
|
|
@@ -4404,7 +4392,7 @@ var ErrorBoundary = class extends Component {
|
|
|
4404
4392
|
<t t-call-slot="default"/>
|
|
4405
4393
|
</t>
|
|
4406
4394
|
`;
|
|
4407
|
-
props = props({ error: types2.signal().
|
|
4395
|
+
props = props({ error: types2.signal().optional(() => signal(null)) });
|
|
4408
4396
|
setup() {
|
|
4409
4397
|
onError((e) => this.props.error.set(e));
|
|
4410
4398
|
}
|
|
@@ -4521,8 +4509,8 @@ var blockDom = {
|
|
|
4521
4509
|
};
|
|
4522
4510
|
var __info__ = {
|
|
4523
4511
|
version: App.version,
|
|
4524
|
-
date: "2026-06-
|
|
4525
|
-
hash: "
|
|
4512
|
+
date: "2026-06-11T18:30:46.327Z",
|
|
4513
|
+
hash: "eb837019",
|
|
4526
4514
|
url: "https://github.com/odoo/owl"
|
|
4527
4515
|
};
|
|
4528
4516
|
|
package/dist/owl.iife.js
CHANGED
|
@@ -868,21 +868,7 @@ ${issueStrings}`);
|
|
|
868
868
|
function getDefault(type) {
|
|
869
869
|
return typeof type === "function" ? type[defaultSymbol] : void 0;
|
|
870
870
|
}
|
|
871
|
-
function
|
|
872
|
-
return typeof type === "function" && defaultSymbol in type;
|
|
873
|
-
}
|
|
874
|
-
function withDefault(type, value) {
|
|
875
|
-
const validate = function validateWithDefault(context) {
|
|
876
|
-
if (context.value === void 0) {
|
|
877
|
-
return;
|
|
878
|
-
}
|
|
879
|
-
context.validate(type);
|
|
880
|
-
};
|
|
881
|
-
validate[defaultSymbol] = typeof value === "function" ? value : () => value;
|
|
882
|
-
validate[innerTypeSymbol] = type;
|
|
883
|
-
return validate;
|
|
884
|
-
}
|
|
885
|
-
function makeOptional(type) {
|
|
871
|
+
function makeOptional(type, value) {
|
|
886
872
|
const validate = function validateOptional(context) {
|
|
887
873
|
if (context.value === void 0) {
|
|
888
874
|
return;
|
|
@@ -891,14 +877,16 @@ ${issueStrings}`);
|
|
|
891
877
|
};
|
|
892
878
|
validate[optionalSymbol] = true;
|
|
893
879
|
validate[innerTypeSymbol] = type;
|
|
880
|
+
if (value !== void 0) {
|
|
881
|
+
validate[defaultSymbol] = typeof value === "function" ? value : () => value;
|
|
882
|
+
}
|
|
894
883
|
return validate;
|
|
895
884
|
}
|
|
896
885
|
function isOptionalType(type) {
|
|
897
886
|
return typeof type === "function" && optionalSymbol in type;
|
|
898
887
|
}
|
|
899
888
|
function makeType(validate) {
|
|
900
|
-
validate.
|
|
901
|
-
validate.optional = () => makeOptional(validate);
|
|
889
|
+
validate.optional = (value) => makeOptional(validate, value);
|
|
902
890
|
return validate;
|
|
903
891
|
}
|
|
904
892
|
function applyDefaults(value, type) {
|
|
@@ -1068,7 +1056,7 @@ ${issueStrings}`);
|
|
|
1068
1056
|
const missingKeys = [];
|
|
1069
1057
|
for (const key of keys) {
|
|
1070
1058
|
if (context.value[key] === void 0) {
|
|
1071
|
-
if (!isOptionalType(shape[key])
|
|
1059
|
+
if (!isOptionalType(shape[key])) {
|
|
1072
1060
|
missingKeys.push(key);
|
|
1073
1061
|
}
|
|
1074
1062
|
continue;
|
|
@@ -1543,7 +1531,7 @@ ${issueStrings}`);
|
|
|
1543
1531
|
}
|
|
1544
1532
|
|
|
1545
1533
|
// ../owl-runtime/dist/owl-runtime.es.js
|
|
1546
|
-
var version = "3.0.0-alpha.
|
|
1534
|
+
var version = "3.0.0-alpha.36";
|
|
1547
1535
|
var fibersInError = /* @__PURE__ */ new WeakMap();
|
|
1548
1536
|
var nodeErrorHandlers = /* @__PURE__ */ new WeakMap();
|
|
1549
1537
|
function invokeErrorHandlers(node, error, finalize, markFibers) {
|
|
@@ -3734,7 +3722,7 @@ ${issueStrings}`);
|
|
|
3734
3722
|
}
|
|
3735
3723
|
};
|
|
3736
3724
|
var ObjectCreate = Object.create;
|
|
3737
|
-
function
|
|
3725
|
+
function withDefault(value, defaultValue) {
|
|
3738
3726
|
return value === void 0 || value === null || value === false ? defaultValue : value;
|
|
3739
3727
|
}
|
|
3740
3728
|
function callSlot(ctx, parent, key, name, dynamic, extra, defaultContent) {
|
|
@@ -4020,7 +4008,7 @@ ${issueStrings}`);
|
|
|
4020
4008
|
return toggler(subTemplate, template.call(owner, ctx, parent, key + subTemplate));
|
|
4021
4009
|
}
|
|
4022
4010
|
var helpers = {
|
|
4023
|
-
withDefault
|
|
4011
|
+
withDefault,
|
|
4024
4012
|
zero: /* @__PURE__ */ Symbol("zero"),
|
|
4025
4013
|
callSlot,
|
|
4026
4014
|
withKey,
|
|
@@ -4482,7 +4470,7 @@ ${issueStrings}`);
|
|
|
4482
4470
|
<t t-call-slot="default"/>
|
|
4483
4471
|
</t>
|
|
4484
4472
|
`;
|
|
4485
|
-
props = props({ error: types2.signal().
|
|
4473
|
+
props = props({ error: types2.signal().optional(() => signal(null)) });
|
|
4486
4474
|
setup() {
|
|
4487
4475
|
onError((e) => this.props.error.set(e));
|
|
4488
4476
|
}
|
|
@@ -4599,8 +4587,8 @@ ${issueStrings}`);
|
|
|
4599
4587
|
};
|
|
4600
4588
|
var __info__ = {
|
|
4601
4589
|
version: App.version,
|
|
4602
|
-
date: "2026-06-
|
|
4603
|
-
hash: "
|
|
4590
|
+
date: "2026-06-11T18:30:46.327Z",
|
|
4591
|
+
hash: "eb837019",
|
|
4604
4592
|
url: "https://github.com/odoo/owl"
|
|
4605
4593
|
};
|
|
4606
4594
|
|
package/dist/owl.iife.min.js
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
"use strict";var owl=(()=>{var
|
|
2
|
-
${s}`)}}function mt(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.join(" > "),...i})},mergeIssues(i){e.push(...i)},validate(i){i(this),!this.isValid&&r&&(r.issueDepth=this.issueDepth+1)},withIssues(i){return mt(i,this.value,this.path,this)},withKey(i){return mt(e,this.value[i],this.path.concat(i),this)}}}function Tt(e,t){let n=[];return t(mt(n,e,[])),n}var ze=Symbol("default"),Nt=Symbol("innerType"),He=Symbol("shape"),on=Symbol("elementType"),ln=Symbol("optional");function oe(e){return typeof e=="function"?e[ze]:void 0}function Ir(e){return typeof e=="function"&&ze in e}function Pr(e,t){let n=function(i){i.value!==void 0&&i.validate(e)};return n[ze]=typeof t=="function"?t:()=>t,n[Nt]=e,n}function Lr(e){let t=function(r){r.value!==void 0&&r.validate(e)};return t[ln]=!0,t[Nt]=e,t}function Br(e){return typeof e=="function"&&ln in e}function M(e){return e.default=t=>Pr(e,t),e.optional=()=>Lr(e),e}function an(e,t){return gt(e,t)}function gt(e,t){if(typeof t!="function")return e;if(e===void 0){let o=t[ze];if(!o)return e;e=o()}let n=t[Nt]||t;if(typeof n!="function"||!e||typeof e!="object")return e;let r=n[on];if(r&&Array.isArray(e)){let o=e;for(let l=0;l<e.length;l++){let c=gt(e[l],r);c!==e[l]&&(o===e&&(o=[...e]),o[l]=c)}return o}let i=n[He];if(!i)return e;let s=e;for(let o in i){let l=s[o],c=gt(l,i[o]);c!==l&&(s===e&&(s=Array.isArray(e)?[...e]:{...e}),s[o]=c)}return s}function jr(){return M(function(){})}function Vr(){return M(function(t){typeof t.value!="boolean"&&t.addIssue({message:"value is not a boolean"})})}function Fr(){return M(function(t){typeof t.value!="number"&&t.addIssue({message:"value is not a number"})})}function Kr(){return M(function(t){typeof t.value!="string"&&!(t.value instanceof String)&&t.addIssue({message:"value is not a string"})})}function Wr(e){let t=M(function(r){if(!Array.isArray(r.value)){r.addIssue({message:"value is not an array"});return}if(e)for(let i=0;i<r.value.length;i++)r.withKey(i).validate(e)});return e&&(t[on]=e),t}function Et(e){return M(function(n){(typeof n.value!="function"||!(n.value===e||n.value.prototype instanceof e))&&n.addIssue({message:`value is not '${e.name}' or an extension`})})}function Ur(e,t,n="value does not match custom validation"){return M(function(i){i.validate(e),i.isValid&&(t(i.value)||i.addIssue({message:n}))})}function zr(e=[],t=void 0){return M(function(r){typeof r.value!="function"&&r.addIssue({message:"value is not a function"})})}function cn(e){return M(function(n){n.value instanceof e||n.addIssue({message:`value is not an instance of '${e.name}'`})})}function Hr(e){return M(function(n){for(let r of e)n.validate(r)})}function $t(e){return M(function(n){n.value!==e&&n.addIssue({message:`value is not equal to ${typeof e=="string"?`'${e}'`:e}`})})}function Gr(e){return St(e.map($t))}function un(e,t,n){if(typeof e.value!="object"||Array.isArray(e.value)||e.value===null){e.addIssue({message:"value is not an object"});return}if(!t)return;let r=!Array.isArray(t),i,s;if(r)s=Object.keys(t),i=t;else{s=t,i={};for(let l of s)i[l]=null}let o=[];for(let l of s){if(e.value[l]===void 0){!Br(i[l])&&!Ir(i[l])&&o.push(l);continue}r&&e.withKey(l).validate(i[l])}if(o.length&&e.addIssue({message:"object value has missing keys",missingKeys:o,expectedKeys:s}),n){let l=[];for(let c in e.value)s.includes(c)||l.push(c);l.length&&e.addIssue({message:"object value has unknown keys",unknownKeys:l,expectedKeys:s})}}function qr(e={}){let t=M(function(r){un(r,e,!1)});return Array.isArray(e)||(t[He]=e),t}function Xr(e){let t=M(function(r){un(r,e,!0)});return Array.isArray(e)||(t[He]=e),t}function Yr(e){return M(function(n){n.value instanceof Promise||n.addIssue({message:"value is not a promise"})})}function Zr(e){return M(function(n){if(typeof n.value!="object"||Array.isArray(n.value)||n.value===null){n.addIssue({message:"value is not an object"});return}if(e)for(let r in n.value)n.withKey(r).validate(e)})}function Jr(e){let t=M(function(r){if(!Array.isArray(r.value)){r.addIssue({message:"value is not an array"});return}if(r.value.length!==e.length){r.addIssue({message:"tuple value does not have the correct length"});return}for(let i=0;i<e.length;i++)r.withKey(i).validate(e[i])});return t[He]=e,t}function St(e){return M(function(n){let r=0,i=[];for(let s of e){let o=n.withIssues(i);if(o.validate(s),i.length===r||o.issueDepth>0){n.mergeIssues(i.slice(r));return}r=i.length}n.addIssue({message:"value does not match union type",subIssues:i})})}function Qr(e){return M(function(n){(typeof n.value!="function"||!n.value[re])&&n.addIssue({message:"value is not a reactive value"})})}function ei(e){if(typeof HTMLElement>"u")throw new Error("Cannot use ref in a non-DOM environment");return St([$t(null),cn(e||HTMLElement)])}var Ct={and:Hr,any:jr,array:Wr,boolean:Vr,constructor:Et,customValidator:Ur,function:zr,instanceOf:cn,literal:$t,number:Fr,object:qr,or:St,promise:Yr,record:Zr,ref:ei,selection:Gr,signal:Qr,strictObject:Xr,string:Kr,tuple:Jr},fn=class{_map=O.Object(Object.create(null));_name;_validation;constructor(e={}){this._name=e.name||"registry",this._validation=e.validation}entries=ie(()=>Object.entries(this._map()).sort((t,n)=>t[1][0]-n[1][0]).map(([t,n])=>[t,n[1]]));items=ie(()=>this.entries().map(e=>e[1]));addById(e,t={}){if(!e.id)throw new g(`Item should have an id key (registry '${this._name}')`);return this.add(e.id,e,t)}add(e,t,n={}){if(!n.force&&e in this._map())throw new g(`Key "${e}" is already registered (registry '${this._name}'). Use { force: true } to overwrite.`);if(this._validation){let r=this._name?` (registry '${this._name}', key: '${e}')`:` (key: '${e}')`;W(t,this._validation,`Registry entry does not match the type${r}`)}return this._map()[e]=[n.sequence??50,t],this}get(e,t){let n=e in this._map();if(!n&&arguments.length<2)throw new g(`Cannot find key "${e}" (registry '${this._name}')`);return n?this._map()[e][1]:t}delete(e){delete this._map()[e]}has(e){return e in this._map()}use(e,t,n={}){let r=K();return this.add(e,t,n),r.onDestroy(()=>{this._map()[e]?.[1]===t&&this.delete(e)}),this}useById(e,t={}){if(!e.id)throw new g(`Item should have an id key (registry '${this._name}')`);return this.use(e.id,e,t)}},hn=class{_items=O.Array([]);_name;_validation;constructor(e={}){this._name=e.name,this._validation=e.validation}items=ie(()=>this._items().sort((e,t)=>e[0]-t[0]).map(e=>e[1]));add(e,t={}){if(this._validation){let n=this._name?` (resource '${this._name}')`:"";W(e,this._validation,`Resource item does not match the type${n}`)}return this._items().push([t.sequence??50,e]),this}delete(e){let t=this._items().filter(([n,r])=>r!==e);return this._items.set(t),this}has(e){return this._items().some(([t,n])=>n===e)}use(e,t={}){let n=K();return this.add(e,t),n.onDestroy(()=>this.delete(e)),this}},Ge=class{static _shadowId;static get id(){return this._shadowId??this.name}static set id(e){this._shadowId=e}static sequence=50;__owl__;constructor(e){this.__owl__=e}setup(){}},pe=class extends Se{config;plugins;ready=Promise.resolve();hasPendingReady=!1;constructor(e,t={}){if(super(e),this.config=t.config??{},this.pluginManager=this,t.parent){let n=t.parent;n.onDestroy(()=>this.destroy()),this.plugins=Object.create(n.plugins)}else this.plugins={}}destroy(){this.finalize(e=>console.error(e))}getPluginById(e){return this.plugins[e]||null}getPlugin(e){return this.getPluginById(e.id)}startPlugin(e){if(!e.id)throw new g(`Plugin "${e.name}" has no id`);if(this.plugins.hasOwnProperty(e.id)){let n=this.getPluginById(e.id).constructor;if(n!==e)throw new g(`Trying to start a plugin with the same id as an other plugin (id: '${e.id}', existing plugin: '${n.name}', starting plugin: '${e.name}')`);return null}let t=new e(this);return this.plugins[e.id]=t,t.setup(),t}startPlugins(e){let t=e.filter(o=>!o.id||this.plugins.hasOwnProperty(o.id)?(this.startPlugin(o),!1):!0);if(!t.length)return;t.sort((o,l)=>o.sequence-l.sequence);let n=[];for(let o of t){let l=n[n.length-1];l&&l[0].sequence===o.sequence?l.push(o):n.push([o])}let r=o=>{H.push(this);try{for(let c of o)this.startPlugin(c)}finally{H.pop()}let l=this.willStart.splice(0);return l.length?Promise.all(l.map(c=>c())):null},i=this.hasPendingReady?this.ready:null;for(let o of n)i?i=i.then(()=>r(o)):i=r(o);if(!i){this.status<k.MOUNTED&&(this.status=k.MOUNTED);return}this.hasPendingReady=!0;let s=this.ready=i.then(()=>{this.status<k.MOUNTED&&(this.status=k.MOUNTED),this.ready===s&&(this.hasPendingReady=!1)})}};function qe(e,t){Array.isArray(t)?e.startPlugins(t):e.onDestroy(ke(()=>{let n=t.items();yt(()=>e.startPlugins(n))}))}function Xe(e){let t=K();t.willStart.push(t.decorate(e,"onWillStart"))}function Z(e){let t=K();t.onDestroy(t.decorate(e,"onWillDestroy"))}function Ae(e){Z(ke(e))}function dn(e,t,n,r){typeof e=="function"?Ae(()=>{let i=e();if(i)return i.addEventListener(t,n,r),()=>i.removeEventListener(t,n,r)}):(e.addEventListener(t,n,r),Z(()=>e.removeEventListener(t,n,r)))}function pn(){return K().app}function mn(e){let t=K(),n=t.pluginManager.getPluginById(e.id);if(!n)if(t instanceof pe)n=t.pluginManager.startPlugin(e);else throw new g(`Unknown plugin "${e.id}"`);return n}function gn(e,t){let n=K();if(!(n instanceof pe))throw new g("Expected to be in a plugin scope");n.app.dev&&t&&W(n.config,Ct.object({[e]:t}),"Config does not match the type");let r=n.config[e];return r===void 0?oe(t)?.():r}var bn=class extends EventTarget{trigger(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t}))}},Ne=class extends String{};function kt(e){return e instanceof Ne?e:e===void 0?Te(""):typeof e=="number"?Te(String(e)):([["&","&"],["<","<"],[">",">"],["'","'"],['"',"""],["`","`"]].forEach(t=>{e=String(e).replace(new RegExp(t[0],"g"),t[1])}),Te(e))}function Te(e,...t){if(!Array.isArray(e))return new Ne(e);let n=e,r="",i=0;for(;i<t.length;++i)r+=n[i]+kt(t[i]);return r+=n[i],new Ne(r)}var ti="3.0.0-alpha.35",J=new WeakMap,ae=new WeakMap;function An(e,t,n,r){for(;e;){r&&e.fiber&&J.set(e.fiber,t);let i=ae.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}=An(e,t,n,!1);r||e.app._handleError(n())}}function be(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,J.set(l,t),l=l.parent;while(l);J.set(r.root,t)}let s=()=>{try{i.destroy()}catch{}return t},o=An(n,t,s,!0);o.handled||(t=o.error,i._handleError(s()))}function _n(e){e=e.slice();let t=[],n;for(;(n=e[0])&&typeof n=="string";)t.push(e.shift());return{modifiers:t,data:e}}var ve={shouldNormalizeDom:!0,mainEventHandler:(e,t,n)=>(typeof e=="function"?e(t):Array.isArray(e)&&(e=_n(e).data,e[0](e[1],t)),!1)},vn=document.createTextNode(""),ni=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(vn,i),t&&n.beforeRemove(),n.remove(),r.mount(this.parentEl,vn),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 le(e,t){return new ni(e,t)}var xt,Oe,Ft,xn;if(typeof Element<"u"){({setAttribute:xt,removeAttribute:Oe}=Element.prototype);let e=DOMTokenList.prototype;Ft=e.add,xn=e.remove}var On=Array.isArray,{split:yn,trim:_e}=String.prototype,wn=/\s+/;function ge(e,t){switch(t){case!1:case null:case void 0:Oe.call(this,e);break;case!0:xt.call(this,e,"");break;default:xt.call(this,e,t)}}function ri(e){return function(t){ge.call(this,e,t)}}function ii(e){if(On(e))e[0]==="class"?Mt.call(this,e[1]):e[0]==="style"?It.call(this,e[1]):ge.call(this,e[0],e[1]);else for(let t in e)t==="class"?Mt.call(this,e[t]):t==="style"?It.call(this,e[t]):ge.call(this,t,e[t])}function si(e,t){if(On(e)){let n=e[0],r=e[1];if(n===t[0]){if(r===t[1])return;n==="class"?Ye.call(this,r,t[1]):n==="style"?Ze.call(this,r,t[1]):ge.call(this,n,r)}else Oe.call(this,t[0]),ge.call(this,n,r)}else{for(let n in t)n in e||(n==="class"?Ye.call(this,"",t[n]):n==="style"?Ze.call(this,"",t[n]):Oe.call(this,n));for(let n in e){let r=e[n];r!==t[n]&&(n==="class"?Ye.call(this,r,t[n]):n==="style"?Ze.call(this,r,t[n]):ge.call(this,n,r))}}}function Ot(e){let t={};switch(typeof e){case"string":let n=_e.call(e);if(!n)return{};let r=yn.call(n,wn);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=_e.call(i),!i)continue;let o=yn.call(i,wn);for(let l of o)t[l]=s}}return t;case"undefined":return{};case"number":return{[e]:!0};default:return{[e]:!0}}}var At={};function oi(e){if(e in At)return At[e];let t=e.replace(/[A-Z]/g,n=>"-"+n.toLowerCase());return At[e]=t,t}var Tn=/\s*!\s*important\s*$/i;function Rn(e,t,n){Tn.test(n)?e.setProperty(t,n.replace(Tn,""),"important"):e.setProperty(t,n)}function Rt(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=_e.call(n.slice(s,i));if(i++,!c)continue;let h=c.indexOf(":");if(h===-1)continue;let a=_e.call(c.slice(0,h)),u=_e.call(c.slice(h+1));a&&u&&u!=="undefined"&&(t[a]=u)}return t}case"object":for(let n in e){let r=e[n];(r||r===0)&&(t[oi(n)]=String(r))}return t;default:return{}}}function Mt(e){e=e===""?{}:Ot(e);for(let t in e)Ft.call(this.classList,t)}function Ye(e,t){t=t===""?{}:Ot(t),e=e===""?{}:Ot(e);for(let n in t)n in e||xn.call(this.classList,n);for(let n in e)e[n]!==t[n]&&Ft.call(this.classList,n)}function It(e){e=e===""?{}:Rt(e);let t=this.style;for(let n in e)Rn(t,n,e[n])}function Ze(e,t){t=t===""?{}:Rt(t),e=e===""?{}:Rt(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]&&Rn(n,r,e[r]);n.cssText||Oe.call(this,"style")}function li(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 ai(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 ci(e){let t=e&&e.ownerDocument;if(t){if(!t.defaultView)throw new g("Cannot mount a component: the target document is not attached to a window (defaultView is missing)");let n=t.defaultView.HTMLElement;if(e instanceof n||e instanceof ShadowRoot){if(!ai(e,t))throw new g("Cannot mount a component on a detached dom node");return}}throw new g("Cannot mount component: the target is not a valid DOM element")}function ui(e){return new Promise(function(t){document.readyState!=="loading"?t(!0):document.addEventListener("DOMContentLoaded",t,!1)}).then(e||function(){})}function Mn(e){let t=e.split(".")[0],n=e.includes(".capture"),r=e.includes(".passive");return e.includes(".synthetic")?pi(t,n,r):hi(t,n,r)}var fi=1;function hi(e,t=!1,n=!1){let r=`__event__${e}_${fi++}`;t&&(r=`${r}_capture`);function i(h){let a=h.currentTarget;if(!a||!li(a))return;let u=a[r];u&&ve.mainEventHandler(u,h,a)}let s={capture:t,passive:n};function o(h){this[r]=h,this.addEventListener(e,i,s)}function l(){delete this[r],this.removeEventListener(e,i,s)}function c(h){this[r]=h}return{setup:o,update:c,remove:l}}var di=1;function pi(e,t=!1,n=!1){let r=`__event__synthetic_${e}`;t&&(r=`${r}_capture`),gi(e,r,t,n);let i=di++;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 mi(e,t){let n=t.target;for(;n!==null;){let r=n[e];if(r){for(let i of Object.values(r))if(ve.mainEventHandler(i,t,n))return}n=n.parentNode}}var Nn={};function gi(e,t,n=!1,r=!1){Nn[t]||(document.addEventListener(e,i=>mi(t,i),{capture:n,passive:r}),Nn[t]=!0)}var bi=(e,t)=>Object.getOwnPropertyDescriptor(e,t),De,In,Pt;if(typeof Node<"u"){let e=Node.prototype;De=e.insertBefore,In=bi(e,"textContent").set,Pt=e.removeChild}var Pn=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,De.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];De.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];De.call(r,c,t)}}}patch(e,t){if(this===e)return;let n=this.children,r=e.children,i=this.anchors,s=this.parentEl;for(let o=0,l=n.length;o<l;o++){let c=n[o],h=r[o];if(c)if(h)c.patch(h,t);else{let a=c.firstNode(),u=document.createTextNode("");i[o]=u,De.call(s,u,a),t&&c.beforeRemove(),c.remove(),n[o]=void 0}else if(h){n[o]=h;let a=i[o];h.mount(s,a),Pt.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)In.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():Pt.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 Kt(e){return new Pn(e)}var vi=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Je,Ln,Bn;if(typeof Node<"u"){let e=Node.prototype;Je=e.insertBefore,Bn=e.removeChild,Ln=vi(CharacterData.prototype,"data").set}var yi=class{text;parentEl;el;constructor(e){this.text=e}mount(e,t){this.parentEl=e;let n=document.createTextNode(Lt(this.text));Je.call(e,n,t),this.el=n}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t,Je.call(t,this.el,e)}moveBeforeVNode(e,t){Je.call(this.parentEl,this.el,e?e.el:t)}beforeRemove(){}remove(){Bn.call(this.parentEl,this.el)}firstNode(){return this.el}patch(e){let t=e.text;this.text!==t&&(Ln.call(this.el,Lt(t)),this.text=t)}toString(){return this.text}};function Re(e){return new yi(e)}function Lt(e){switch(typeof e){case"string":return e;case"number":return String(e);case"boolean":return e?"true":"false";default:return e||""}}var Dt=(e,t)=>Object.getOwnPropertyDescriptor(e,t),xe,jn,Vn,tt,Wt;typeof Node<"u"&&(xe=Node.prototype,jn=Element.prototype,Vn=Dt(CharacterData.prototype,"data").set,tt=Dt(xe,"firstChild").get,Wt=Dt(xe,"nextSibling").get);var En=()=>{};function wi(e){return function(n){this[e]=n===0?0:n?n.valueOf():""}}var _t={};function Fn(e){if(e in _t)return _t[e];let n=new DOMParser().parseFromString(`<t>${e}</t>`,"text/xml").firstChild.firstChild;ve.shouldNormalizeDom&&Kn(n);let r=Bt(n),i=jt(r),s=r.el,o=Ei(s,i);return _t[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 Bt(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||$n(n);let c=parseInt(i.slice(12),10);o.push({type:"child",idx:c}),s=document.createTextNode("")}if(r||=e.namespaceURI,s||(s=r?document.createElementNS(r,i):document.createElement(i)),s instanceof Element){n||document.createElement("template").content.appendChild(s);let c=e.attributes;for(let h=0;h<c.length;h++){let a=c[h].name,u=c[h].value;if(a.startsWith("block-handler-")){let f=parseInt(a.slice(14),10);o.push({type:"handler",idx:f,event:u})}else if(a.startsWith("block-attribute-")){let f=parseInt(a.slice(16),10);o.push({type:"attribute",idx:f,name:u,tag:i})}else if(a.startsWith("block-property-")){let f=parseInt(a.slice(15),10);o.push({type:"property",idx:f,name:u,tag:i})}else a==="block-attributes"?o.push({type:"attributes",idx:parseInt(u,10)}):a==="block-ref"?o.push({type:"ref",idx:parseInt(u,10)}):s.setAttribute(c[h].name,u)}}let l={parent:t,firstChild:null,nextSibling:null,el:s,info:o,refN:0,currentNS:r};if(e.firstChild){let c=e.childNodes[0];if(e.childNodes.length===1&&c.nodeType===Node.ELEMENT_NODE&&c.tagName.startsWith("block-child-")){let h=c.tagName,a=parseInt(h.slice(12),10);o.push({idx:a,type:"child",isOnlyChild:!0})}else{l.firstChild=Bt(e.firstChild,l,l),s.appendChild(l.firstChild.el);let h=e.firstChild,a=l.firstChild;for(;h=h.nextSibling;)a.nextSibling=Bt(h,a,l),s.appendChild(a.nextSibling.el),a=a.nextSibling}}return l.info.length&&$n(l),l}case Node.TEXT_NODE:return{parent:t,firstChild:null,nextSibling:null,el:document.createTextNode(e.textContent),info:[],refN:0,currentNS:null}}throw new g("boom")}function $n(e){e.isRef=!0;do e.refN++;while(e=e.parent)}function Ti(e){let t=e.parent;for(;t&&t.nextSibling===e;)e=t,t=t.parent;return t}function jt(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,Ni(t,e),n++}if(o){let l=n+s;t.collectors.push({idx:l,prevIdx:r,getVal:Wt}),jt(e.nextSibling,t,l)}s&&(t.collectors.push({idx:n,prevIdx:r,getVal:tt}),jt(e.firstChild,t,n))}return t}function Ni(e,t){for(let n of t.info)switch(n.type){case"text":e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:Sn,updateData:Sn});break;case"child":n.isOnlyChild?e.children[n.idx]={parentRefIdx:n.refIdx,isOnlyChild:!0}:e.children[n.idx]={parentRefIdx:Ti(t).refIdx,afterRefIdx:n.refIdx};break;case"property":{let r=n.refIdx,i=wi(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=Mt,i=Ye):n.name==="style"?(s=It,i=Ze):(s=ri(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:ii,updateData:si});break;case"handler":{let{setup:r,update:i}=Mn(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:En,updateData:En}),e.cbRefs.push(n.idx);break}}}function Ei(e,t){let n=$i(e,t);return t.children.length?(n=class extends n{children;constructor(r,i){super(r),this.children=i}},n.prototype.beforeRemove=Pn.prototype.beforeRemove,(r,i=[])=>new n(r,i)):r=>new n(r)}function $i(e,t){let{refN:n,collectors:r,children:i,locations:s,cbRefs:o}=t;s.sort((y,w)=>y.idx-w.idx);let l=s.length,c=i.length,h=n>0,a=s.map(y=>y.refIdx),u=s.map(y=>y.setData),f=s.map(y=>y.updateData),m=[Wt,tt],p=r.length,b=r.map(y=>y.idx&32767|(y.prevIdx&32767)<<15|(y.getVal===tt?1:0)<<30),d=i.map(y=>y.parentRefIdx&32767|(y.isOnlyChild?1:0)<<15|((y.afterRefIdx??0)&32767)<<16),A=xe.cloneNode,E=xe.insertBefore,T=jn.remove;class C{el;parentEl;data;children;refs;constructor(w){this.data=w}beforeRemove(){}remove(){T.call(this.el)}firstNode(){return this.el}moveBeforeDOMNode(w,v=this.parentEl){this.parentEl=v,E.call(v,this.el,w)}moveBeforeVNode(w,v){E.call(this.parentEl,this.el,w?w.el:v)}toString(){let w=document.createElement("div");return this.mount(w,null),w.innerHTML}mount(w,v){let $=A.call(e,!0);E.call(w,$,v),this.el=$,this.parentEl=w}patch(w,v){}}return h&&(C.prototype.mount=function(w,v){let $=A.call(e,!0),D=new Array(n);this.refs=D,D[0]=$;for(let x=0;x<p;x++){let S=b[x];D[S&32767]=m[S>>30&1].call(D[S>>15&32767])}if(l){let x=this.data;for(let S=0;S<l;S++)u[S].call(D[a[S]],x[S])}if(c){let x=this.children;for(let S=0;S<c;S++){let R=x[S];if(R){let L=d[S],ye=L>>16&32767,Pe=ye?D[ye]:null;R.isOnlyChild=!!(L&32768),R.mount(D[L&32767],Pe)}}}if(E.call(w,$,v),this.el=$,this.parentEl=w,o.length){let x=this.data,S=this.refs;for(let R of o){let L=x[R];L(S[a[R]],null)}}},C.prototype.patch=function(w,v){if(this===w)return;let $=this.refs;if(l){let D=this.data,x=w.data;for(let S=0;S<l;S++){let R=D[S],L=x[S];R!==L&&f[S].call($[a[S]],L,R)}this.data=x}if(c){let D=this.children,x=w.children;for(let S=0;S<c;S++){let R=D[S],L=x[S];if(R)L?R.patch(L,v):(v&&R.beforeRemove(),R.remove(),D[S]=void 0);else if(L){let ye=d[S],Pe=ye>>16&32767,dr=Pe?$[Pe]:null;L.mount($[ye&32767],dr),D[S]=L}}}},C.prototype.remove=function(){if(o.length){let w=this.data,v=this.refs;for(let $ of o){let D=w[$];D(null,v[a[$]])}}T.call(this.el)}),C}function Sn(e){Vn.call(this,Lt(e))}var Si=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Wn,Un,zn,Vt;if(typeof Node<"u"){let e=Node.prototype;Wn=e.insertBefore,Un=e.appendChild,zn=e.removeChild,Vt=Si(e,"textContent").set}var Ci=class{children;anchor;parentEl;isOnlyChild;constructor(e){this.children=e}mount(e,t){let n=this.children,r=document.createTextNode("");this.anchor=r,Wn.call(e,r,t);let i=n.length;if(i){let s=n[0].mount;for(let o=0;o<i;o++)s.call(n[o],e,r)}this.parentEl=e}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;let n=this.children;for(let r=0,i=n.length;r<i;r++)n[r].moveBeforeDOMNode(e,t);t.insertBefore(this.anchor,e)}moveBeforeVNode(e,t){if(e){let r=e.children[0];t=(r?r.firstNode():e.anchor)||null}let n=this.children;for(let r=0,i=n.length;r<i;r++)n[r].moveBeforeVNode(null,t);this.parentEl.insertBefore(this.anchor,t)}patch(e,t){if(this===e)return;let n=this.children,r=e.children;if(r.length===0&&n.length===0)return;this.children=r;let i=r[0]||n[0],{mount:s,patch:o,remove:l,beforeRemove:c,moveBeforeVNode:h,firstNode:a}=i,u=this.anchor,f=this.isOnlyChild,m=this.parentEl;if(r.length===0&&f){if(t)for(let v=0,$=n.length;v<$;v++)c.call(n[v]);Vt.call(m,""),Un.call(m,u);return}let p=0,b=0,d=n[0],A=r[0],E=n.length-1,T=r.length-1,C=n[E],y=r[T],w;for(;p<=E&&b<=T;){if(d===null){d=n[++p];continue}if(C===null){C=n[--E];continue}let v=d.key,$=A.key;if(v===$){o.call(d,A,t),r[b]=d,d=n[++p],A=r[++b];continue}let D=C.key,x=y.key;if(D===x){o.call(C,y,t),r[T]=C,C=n[--E],y=r[--T];continue}if(v===x){o.call(d,y,t),r[T]=d;let R=r[T+1];h.call(d,R,u),d=n[++p],y=r[--T];continue}if(D===$){o.call(C,A,t),r[b]=C;let R=n[p];h.call(C,R,u),C=n[--E],A=r[++b];continue}w=w||ki(n,p,E);let S=w[$];if(S===void 0)s.call(A,m,a.call(d)||null);else{let R=n[S];h.call(R,d,null),o.call(R,A,t),r[b]=R,n[S]=null}A=r[++b]}if(p<=E||b<=T)if(p>E){let v=r[T+1],$=v?a.call(v)||null:u;for(let D=b;D<=T;D++)s.call(r[D],m,$)}else for(let v=p;v<=E;v++){let $=n[v];$&&(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)Vt.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])}zn.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 Hn(e){return new Ci(e)}function ki(e,t,n){let r={};for(let i=t;i<=n;i++)r[e[i].key]=i;return r}var me,Gn;if(typeof Node<"u"){let e=Node.prototype;me=e.insertBefore,Gn=e.removeChild}var Ai=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)me.call(e,r,t);if(!this.content.length){let r=document.createTextNode("");this.content.push(r),me.call(e,r,t)}}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;for(let n of this.content)me.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)me.call(n,o,r);if(!s.length){let o=document.createTextNode("");s.push(o),me.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)Gn.call(e,t)}firstNode(){return this.content[0]}toString(){return this.html}};function Ut(e){return new Ai(e)}function Di(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=Mn(o);this.handlerFns[l]=c,c.setup.call(i,this.handlerData[l])}}wrapHandlerData(){for(let i=0;i<t;i++){let s=this.handlerData[i],o=s.length-2,l=s[o],c=this;s[o]=function(h,a){let u=a.target,f=c.child.firstNode(),m=c.afterNode;for(;f&&f!==m;){if(f.contains(u))return l(h,a);f=f.nextSibling}}}}moveBeforeDOMNode(i,s=this.parentEl){this.parentEl=s,this.child.moveBeforeDOMNode(i,s),s.insertBefore(this.afterNode,i)}moveBeforeVNode(i,s){i&&(s=i.firstNode()||s),this.child.moveBeforeVNode(i?i.child:null,s),this.parentEl.insertBefore(this.afterNode,s)}patch(i,s){if(this!==i){this.handlerData=i.handlerData,this.wrapHandlerData();for(let o=0;o<t;o++)this.handlerFns[o].update.call(this.parentEl,this.handlerData[o]);this.child.patch(i.child,s)}}beforeRemove(){this.child.beforeRemove()}remove(){for(let i=0;i<t;i++)this.handlerFns[i].remove.call(this.parentEl);this.child.remove(),this.afterNode.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}}return function(r,i){return new n(r,i)}}function Qe(e,t,n=null){e.mount(t,n)}function _i(e,t,n=!1){e.patch(t,n)}function xi(e,t=!1){t&&e.beforeRemove(),e.remove()}function Oi(e){switch(e.__owl__.status){case k.NEW:return"new";case k.CANCELLED:return"cancelled";case k.MOUNTED:return e instanceof Ge?"started":"mounted";case k.DESTROYED:return"destroyed"}}function Ri(e,t){let n=e.fiber;return n&&(zt(n.children),n.root=null),new it(e,t)}function Mi(e){let t=e.fiber;if(t){let r=t.root;return r.locked=!0,r.setCounter(r.counter+1-zt(t.children)),r.locked=!1,t.children=[],t.childrenMap={},t.bdom=null,J.has(t)&&(J.delete(t),J.delete(r),t.appliedToDom=!1,t instanceof nt&&(t.mounted=t instanceof qn?[t]:[])),t}let n=new nt(e,null);return e.willPatch.length&&n.willPatch.push(n),e.patched.length&&n.patched.push(n),n}function Ii(){throw new g("Attempted to render cancelled fiber")}function zt(e){let t=0;for(let n of e){let r=n.node;n.render=Ii,r.status===k.NEW&&r.cancel(),r.fiber=null,n.bdom?r.forceNextRender=!0:(t++,r.bdom&&(r.forceNextRender=!0)),t+=zt(n.children)}return t}var it=class{node;bdom=null;root;parent;children=[];appliedToDom=!1;deep=!1;childrenMap={};constructor(e,t){if(this.node=e,this.parent=t,t){this.deep=t.deep;let n=t.root;n.setCounter(n.counter+1),this.root=n,t.children.push(this)}else this.root=this}render(){let e=this.root.node.app.scheduler;if(e.tasks.size>1){let r=this.root.node,i=r.parent;for(;i;){if(i.fiber){let s=i.fiber.root;if(s.counter===0&&r.parentKey in i.fiber.childrenMap)i=s.node;else{e.delayedRenders.push(this);return}}r=i,i=i.parent}}let t=this.node,n=this.root;if(n){let r=z();$e(t.signalComputation),P(t.signalComputation),t.signalComputation.state=Ee.EXECUTED;try{this.bdom=!0,this.bdom=t.renderFn()}catch(s){be({node:t,error:s})}finally{P(r)}let i=n.counter-1;n.counter=i,i===0&&e.flush()}}},nt=class extends it{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,be({fiber:t||this,error:r})}}setCounter(e){this.counter=e,e===0&&this.node.app.scheduler.flush()}},qn=class extends nt{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)Qe(t.bdom,this.target,this.afterNode);else if(this.position==="last-child"||this.target.childNodes.length===0)Qe(t.bdom,this.target);else{let r=this.target.childNodes[0];Qe(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){be({fiber:e,error:t})}}},Me=class extends Se{fiber=null;component;bdom=null;componentName;forceNextRender=!1;parentKey;props;defaultProps=null;renderFn;parent;children=Object.create(null);willUpdateProps=[];propsUpdated=[];willUnmount=[];mounted=[];willPatch=[];patched=[];signalComputation;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=Ve(()=>this.render(!1),!1,Ee.EXECUTED),this.props=t;let s=z();P(void 0),H.push(this);try{this.component=new e(this);let o={this:this.component,__owl__:this};this.renderFn=n.getTemplate(e.template).bind(this.component,o,this),this.component.setup()}finally{H.pop(),P(s)}}decorate(e,t){let n=this.component,r=this;if(this.app.dev){let i=`${this.componentName}.${t}`;return{[i](...o){return e.call(n,r,...o)}}[i]}return e.bind(n,r)}async initiateRender(e){this.fiber=e,this.mounted.length&&e.root.mounted.push(e);let t=this.component,n=z();P(void 0);try{let r=this.willStart.map(i=>i.call(t));P(n),await Promise.all(r)}catch(r){if(Be(r)&&this.status>k.MOUNTED)return;be({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&&!J.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=>be({error:t,node:this})),We(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 G(){let e=K();if(!(e instanceof Me))throw new g("Expected to be in a component scope");return e}var Xn;typeof window<"u"&&(Xn=window.requestAnimationFrame.bind(window));var Pi=class Yn{static requestAnimationFrame=Xn;tasks=new Set;requestAnimationFrame;frame=0;delayedRenders=[];cancelledNodes=new Set;processing=!1;constructor(){this.requestAnimationFrame=Yn.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=J.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}}},Q=class{static template="";__owl__;constructor(e){this.__owl__=e}setup(){}},Li=Object.create;function Bi(e,t){return e==null||e===!1?t:e}function ji(e,t,n,r,i,s,o){n=n+"__slot_"+r;let l=e.__owl__.props.slots||{},{__render:c,__ctx:h,__scope:a}=l[r]||{},u=Li(h||{});a&&(u[a]=s);let f=c?c(u,t,n):null;if(o){let m,p;return f?m=i?le(r,f):f:p=o(e,t,n),Kt([m,p])}return f||Re("")}function Vi(e,t){return e.key=t,e}function Fi(e){let t,n;if(Array.isArray(e))t=e,n=e;else if(e instanceof Map)t=[...e.keys()],n=[...e.values()];else if(Symbol.iterator in Object(e))t=[...e],n=t;else if(e&&typeof e=="object")n=Object.values(e),t=Object.keys(e);else throw new g(`Invalid loop expression: "${e}" is not iterable`);let r=n.length;return[t,n,r,new Array(r)]}function Ki(e){let t=parseFloat(e);return isNaN(t)?e:t}function Wi(e,t){for(let n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!1;return!0}var Zn=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 Ui(e,t){if(e==null)return t?le("default",t):le("undefined",Re(""));let n,r;return e instanceof Ne?(n="string_safe",r=Ut(e)):e instanceof Zn?(n="lazy_value",r=e.evaluate()):(n="string_unsafe",r=Re(e)),le(n,r)}function zi(e){if(!e)throw new g("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[re];n=r?i=>{r.value===i&&e.set(null)}:()=>e.set(null)}else throw new g("Ref should implement either a 'set' function or 'add' and 'delete' functions");return(r,i)=>{i&&n(i),r&&t(r)}}function Hi(e,t,n){if(typeof e!="function")throw new g(`Invalid handler expression: the \`t-on\` expression should evaluate to a function, but got '${typeof e}'. Did you mean to use an arrow function? (e.g. \`t-on-click="() => expr"\`)`);e.call(t.this,n)}var Cn=new WeakMap;function Gi(e,t,n){let r=Cn.get(e);r||(r=new Map,Cn.set(e,r));let i=r.get(t);if(i)return i.set(n),i.readonly;let s=O(n);return s.readonly=ie(s),r.set(t,s),s.readonly}function qi(e){if(typeof e!="function"||typeof e.set!="function")throw new g("Invalid t-model expression: expression should evaluate to a function with a 'set' method defined on it");return e}function Xi(e,t,n,r,i,s){let o=!n,l,c=s.length===0;r?l=(a,u)=>!0:i?l=function(a,u){for(let f in a)if(a[f]!==u[f])return!0;return Object.keys(a).length!==Object.keys(u).length}:c?l=(a,u)=>!1:l=function(a,u){for(let f of s)if(a[f]!==u[f])return!0;return!1};let h=Me.prototype.initiateRender;return(a,u,f,m,p)=>{let b=f.children,d=b[u];o&&d&&d.component.constructor!==p&&(d=void 0);let A=f.fiber;if(d){if(l(d.props,a)||A.deep||d.forceNextRender){d.forceNextRender=!1;let E=d.willUpdateProps,T=Ri(d,A);d.fiber=T;let C=A.root;d.willPatch.length&&C.willPatch.push(T),d.patched.length&&C.patched.push(T);let y;if(E.length){let w=a,v=d.defaultProps;if(v){w=Object.assign({},a);for(let x in v)w[x]===void 0&&(w[x]=v[x])}let $=d.component,D=z();P(void 0);for(let x of E){let S=x.call($,w);S&&typeof S.then=="function"&&(y||=[]).push(S)}P(D)}if(y)(y.length===1?y[0]:Promise.all(y)).then(()=>{if(T===d.fiber){d.props=a;for(let v of d.propsUpdated)v();T.render()}},v=>{be({node:d,error:v})});else{d.props=a;for(let w of d.propsUpdated)w();T.render()}}}else{if(n){let T=m.constructor.components;if(!T)throw new g(`Cannot find the definition of component "${t}", missing static components key in parent`);if(p=T[t],p){if(!(p.prototype instanceof Q))throw new g(`"${t}" is not a Component. It must inherit from the Component class`)}else throw new g(`Cannot find the definition of component "${t}"`)}d=new Me(p,a,e,f,u),b[u]=d;let E=new it(d,A);d.willStart.length?h.call(d,E):(d.fiber=E,d.mounted.length&&E.root.mounted.push(E),E.render())}return A.childrenMap[u]=d,d}}function Yi(e,t,n,r,i,s){let o=n.getTemplate(e);return le(e,o.call(t,r,i,s+e))}var Zi={withDefault:Bi,zero:Symbol("zero"),callSlot:ji,withKey:Vi,prepareList:Fi,shallowEqual:Wi,toNumber:Ki,LazyValue:Zn,safeOutput:Ui,createCatcher:Di,markRaw:Ue,OwlError:g,createRef:zi,modelExpr:qi,createComponent:Xi,callTemplate:Yi,callHandler:Hi,toSignal:Gi},Ji={text:Re,createBlock:Fn,list:Hn,multi:Kt,html:Ut,toggler:le},Ie=class{static registerTemplate(e,t){rt[e]=t}dev;rawTemplates=Object.create(rt);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={...Zi,__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(Qi(n,t))return;throw new g(`Template ${e} already defined with different content`)}this.rawTemplates[e]=t}addTemplates(e){if(e){e=e instanceof Document?e:this._parseXML(e);for(let t of e.querySelectorAll("[t-name]")){let n=t.getAttribute("t-name");this.addTemplate(n,t)}}}getTemplate(e){let t=e;if(!(t in this.templates)){let n=this.getRawTemplate?.(e)||this.rawTemplates[e];if(n===void 0){let l="",c=se();throw c instanceof Me&&(l=` (for component "${c.componentName}")`),new g(`Missing template: "${e}"${l}`)}let i=typeof n=="function"&&!(n instanceof Element)?n:this._compileTemplate(e,n),s=this.templates;this.templates[t]=function(l,c){return s[t].call(this,l,c)};let o=i(this,Ji,this.runtimeUtils);this.templates[t]=o}return this.templates[t]}_compileTemplate(e,t){throw new g("Unable to compile a template. Please use owl full build instead")}_parseXML(e){throw new g("Unable to parse XML templates. Please use owl full build instead, or pass a Document instance.")}},rt={};function ee(...e){let t=`__template__${ee.nextId++}`,n=String.raw(...e);return rt[t]=n,t}ee.nextId=1;function Qi(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 kn=!1,et=new Set;typeof window<"u"&&(window.__OWL_DEVTOOLS__||={apps:et,Fiber:it,RootFiber:nt,toRaw:Y,proxy:Ce});var Ht=class Jn extends Ie{static validateTarget=ci;static apps=et;static version=ti;name;scheduler=new Pi;roots=new Set;pluginManager;destroyed=!1;constructor(t={}){super(t),this.name=t.name||"",et.add(this),this.pluginManager=new pe(this,{config:t.config}),t.plugins?qe(this.pluginManager,t.plugins):this.pluginManager.status=k.MOUNTED,t.test&&(this.dev=!0),this.dev&&!t.test&&!kn&&(console.info("Owl is running in 'dev' mode."),kn=!0)}createRoot(t,n={}){let r=n.props||{},i,s,o=new Promise((p,b)=>{i=p,s=b}),l,c=null;try{l=new Me(t,r,this,null,null)}catch(p){c=p,s(p)}let h=null,a=null,u=()=>{if(a)return a;if(c)return Promise.reject(c);h=new qn(l,null);let p=ae.get(l);if(p||(p=[],ae.set(l,p)),p.unshift((d,A)=>{let E=A();s(E)}),a=new Promise(d=>{h.onPrepared=()=>d()}),l.mounted.push(()=>{i(l.component),p.shift()}),this.scheduler.addFiber(h),this.pluginManager.status<k.MOUNTED&&l.willStart.unshift(()=>this.pluginManager.ready),l.willStart.length)l.initiateRender(h);else{l.fiber=h,l.mounted.length&&h.root.mounted.push(h);try{h.render()}catch(d){s(d)}}return a},m={node:l,promise:o,prepare:u,mount:(p,b)=>(c||(Jn.validateTarget(p),u(),h.commit(p,b)),o),destroy:()=>{this.roots.delete(m),l?.destroy(),this.scheduler.processTasks()}};return this.roots.add(m),m}destroy(){for(let t of this.roots)t.destroy();this.pluginManager.destroy(),this.scheduler.processTasks(),et.delete(this),this.destroyed=!0}_handleError(t){throw t}};async function es(e,t,n={}){return new Ht(n).createRoot(e,n).mount(t,n)}var ts=(e,t,n)=>{let{data:r,modifiers:i}=_n(e);e=r;let s=!1;if(i.length){let o=!1,l=t.target===n;for(let c of i)switch(c){case"self":if(o=!0,l)continue;return s;case"prevent":(o&&l||!o)&&t.preventDefault();continue;case"stop":(o&&l||!o)&&t.stopPropagation(),s=!0;continue}}if(Object.hasOwnProperty.call(e,0)){let o=e[0];if(typeof o!="function")throw new g(`Invalid handler (expected a function, received: '${o}')`);let l=e[1]?e[1].__owl__:null;(!l||l.status===k.MOUNTED)&&o(e[1],t)}return s};function ns(e){let t=G();function n(r,i){return e.call(this,i,r)}t.willUpdateProps.push(t.decorate(n,"onWillUpdateProps"))}function Qn(e){let t=G();t.mounted.push(t.decorate(e,"onMounted"))}function rs(e){let t=G();t.willPatch.unshift(t.decorate(e,"onWillPatch"))}function is(e){let t=G();t.patched.push(t.decorate(e,"onPatched"))}function ss(e){let t=G();t.willUnmount.unshift(t.decorate(e,"onWillUnmount"))}function er(e){let t=G(),n=ae.get(t);n||(n=[],ae.set(t,n)),n.push(e.bind(t.component))}function os(e,t){let n=G(),r=oe(t),i=n.props[e];return n.app.dev&&(t!==void 0&&(!r||i!==void 0)&&W(i,t,`Invalid prop '${e}' in '${n.componentName}'`),n.willUpdateProps.push(s=>{if(s[e]!==n.props[e])throw new g(`Prop '${e}' changed in component '${n.componentName}'. Props declared with \`props.static()\` are static and should not change. If the prop is a signal, pass the same signal reference (its inner value may change).`)})),i===void 0&&r?r():i}function ls(){return Et(Q)}var j={...Ct,component:ls};function as(e){let t=G(),{app:n,componentName:r}=t,i=null;if(e&&!Array.isArray(e))for(let u in e){let f=oe(e[u]);f&&((i||={})[u]=f())}i&&(t.defaultProps=Object.assign(t.defaultProps||{},i));function s(u,f){return u[f]===void 0&&i&&f in i?i[f]:u[f]}let o=Object.create(null),l=Object.create(null);function c(u){o[u]=O(s(t.props,u)),Reflect.defineProperty(l,u,{enumerable:!0,configurable:!0,get:o[u]})}function h(u){for(let f of u)c(f)}function a(u){for(let f of u)o[f].set(s(t.props,f))}if(e){let u=Array.isArray(e)?e:Object.keys(e);if(h(u),t.propsUpdated.push(()=>a(u)),n.dev){if(i){let m={};for(let p in e)p in i&&(m[p]=e[p]);W(i,j.object(m),`Invalid component default props (${r})`)}let f=j.object(e);W(t.props,f,`Invalid component props (${r})`),t.willUpdateProps.push(m=>{W(m,f,`Invalid component props (${r})`)})}}else{let u=m=>{let p=[];for(let b in m)b.charCodeAt(0)!==1&&p.push(b);return p},f=u(t.props);h(f),t.propsUpdated.push(()=>{let m=u(t.props),p=new Set(m);for(let b of f)p.has(b)||(Reflect.deleteProperty(l,b),delete o[b]);for(let b of m)b in o||c(b);a(m),f=m})}return l}var st=Object.assign(as,{static:os}),cs=class extends Q{static template=ee`
|
|
1
|
+
"use strict";var owl=(()=>{var ct=Object.defineProperty;var pr=Object.getOwnPropertyDescriptor;var mr=Object.getOwnPropertyNames;var gr=Object.prototype.hasOwnProperty;var br=(e,t)=>{for(var n in t)ct(e,n,{get:t[n],enumerable:!0})},vr=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of mr(t))!gr.call(e,i)&&i!==n&&ct(e,i,{get:()=>t[i],enumerable:!(r=pr(t,i))||r.enumerable});return e};var yr=e=>vr(ct({},"__esModule",{value:!0}),e);var io={};br(io,{App:()=>zt,Component:()=>Q,ErrorBoundary:()=>ls,EventBus:()=>bn,OwlError:()=>g,Plugin:()=>He,Portal:()=>us,Registry:()=>fn,Resource:()=>hn,Scope:()=>Se,Suspense:()=>ds,TemplateSet:()=>Ie,__info__:()=>gs,applyDefaults:()=>an,assertType:()=>W,asyncComputed:()=>rn,batched:()=>gt,blockDom:()=>ms,computed:()=>ie,config:()=>gn,effect:()=>ke,getDefault:()=>oe,getScope:()=>se,globalTemplates:()=>nt,htmlEscape:()=>Ct,markRaw:()=>Ue,markup:()=>Te,mount:()=>Ji,onError:()=>er,onMounted:()=>Qn,onPatched:()=>ns,onWillDestroy:()=>Z,onWillPatch:()=>ts,onWillStart:()=>qe,onWillUnmount:()=>rs,onWillUpdateProps:()=>es,plugin:()=>mn,props:()=>it,providePlugins:()=>ps,proxy:()=>Ce,signal:()=>O,status:()=>_i,t:()=>j,toRaw:()=>Y,types:()=>j,untrack:()=>vt,useApp:()=>as,useEffect:()=>Ae,useListener:()=>dn,useScope:()=>K,validateType:()=>wt,whenReady:()=>ai,xml:()=>ee});var g=class extends Error{cause},k={NEW:0,MOUNTED:1,CANCELLED:2,DESTROYED:3};function gt(e){let t=!1;return function(...r){t||(t=!0,Promise.resolve().then(()=>{t=!1,e(...r)}))}}var Ee=(e=>(e[e.EXECUTED=0]="EXECUTED",e[e.STALE=1]="STALE",e[e.PENDING=2]="PENDING",e))(Ee||{}),re=Symbol("Atom"),Le=[],V;function Ve(e,t,n=1){return{state:n,value:void 0,compute:e,sources:new Set,observers:new Set,isDerived:t}}function bt(e){V&&(V.sources.add(e),e.observers.add(V))}function Fe(e){for(let t of e.observers)t.state===0&&(t.isDerived?Nr(t):Le.push(t)),t.state=1;wr()}var wr=gt(Tr);function Tr(){let e=Le;Le=[];for(let t=0;t<e.length;t++)Ke(e[t])}function z(){return V}function P(e){V=e}function Ke(e){let t=e.state;if(t===0)return;if(t===2){for(let r of e.sources)if("compute"in r&&(Ke(r),e.state===1))break;if(e.state!==1){e.state=0;return}}$e(e);let n=V;V=e;try{e.value=e.compute(),e.state=0}finally{V=n}}function $e(e){let t=e.sources;for(let n of t)n.observers.delete(e);t.clear()}function We(e){let t=e.sources;for(let n of t){n.observers.delete(e);let r=n;r.isDerived&&r.observers.size===0&&We(r)}t.clear(),e.state=1}function Nr(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):Le.push(r))}function vt(e){let t=V;V=void 0;let n;try{n=e()}finally{V=t}return n}var H=[];function K(){let e=se();if(!e)throw new g("No active scope");return e}var Se=class{app;pluginManager;status=k.NEW;computations=[];willStart=[];_controller=null;_destroyCbs=null;constructor(e){this.app=e,this.pluginManager=e.pluginManager}run(e){H.push(this);try{return e()}finally{H.pop()}}get abortSignal(){return this.status>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 Zt();let t=await e;if(this.status>k.MOUNTED)throw Zt();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)We(n);this.status=k.DESTROYED}decorate(e,t){return e.bind(void 0,this)}};function se(){let e=H.length;return e?H[e-1]:null}function Be(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function Zt(){let e=new Error("The operation was aborted");return e.name="AbortError",e}var U=Symbol("Key changes"),Er=Object.prototype.toString,ft=Object.prototype.hasOwnProperty;function yt(e){if(typeof e!="object"||e===null)return!1;let t=Y(e);return Array.isArray(t)||t instanceof Set||t instanceof Map||t instanceof WeakMap?!0:Er.call(t)==="[object Object]"}function fe(e,t){return!t&&yt(e)?Ce(e):e}var tn=new WeakSet;function Ue(e){return tn.add(e),e}function Y(e){return je.has(e)?je.get(e):e}var ht=new WeakMap;function $r(e,t){let n=ht.get(e);n||(n=new Map,ht.set(e,n));let r=n.get(t);return r||(r={value:void 0,observers:new Set},n.set(t,r)),r}function F(e,t,n){bt(n??$r(e,t))}function X(e,t,n){if(!n){let r=ht.get(e);if(!r||!r.has(t))return;n=r.get(t)}Fe(n)}var je=new WeakMap,Jt=new WeakMap;function he(e,t){if(!yt(e))throw new g("Cannot make the given value reactive");if(tn.has(e)||je.has(e))return e;let n=Jt.get(e);if(n)return n;let r;e instanceof Map?r=ut(e,"Map",t):e instanceof Set?r=ut(e,"Set",t):e instanceof WeakMap?r=ut(e,"WeakMap",t):r=nn(t);let i=new Proxy(e,r);return Jt.set(e,i),je.set(i,e),i}function Ce(e){return he(e,null)}function nn(e){return{get(t,n,r){F(t,n,e);let i=Reflect.get(t,n,r);if(e||typeof i!="object"||i===null||!yt(i))return i;let s=Object.getOwnPropertyDescriptor(t,n);return s&&!s.writable&&!s.configurable?i:he(i,null)},set(t,n,r,i){let s=ft.call(t,n),o=Reflect.get(t,n,i),l=Reflect.set(t,n,Y(r),i);return!s&&ft.call(t,n)&&X(t,U,e),(o!==Reflect.get(t,n,i)||n==="length"&&Array.isArray(t))&&X(t,n,e),l},deleteProperty(t,n){let r=Reflect.deleteProperty(t,n);return X(t,U,e),X(t,n,e),r},ownKeys(t){return F(t,U,e),Reflect.ownKeys(t)},has(t,n){return F(t,U,e),Reflect.has(t,n)}}}function we(e,t,n){return r=>(r=Y(r),F(t,r,n),fe(t[e](r),n))}function q(e,t,n){return function*(){F(t,U,n);let r=t.keys();for(let i of t[e]()){let s=r.next().value;F(t,s,n),yield fe(i,n)}}}function Qt(e,t){return function(r,i){F(e,U,t),e.forEach(function(s,o,l){F(e,o,t),r.call(i,fe(s,t),fe(o,t),fe(l,t))},i)}}function ue(e,t,n,r){return(i,s)=>{i=Y(i);let o=n.has(i),l=n[t](i),c=n[e](i,s),h=n.has(i);return o!==h&&X(n,U,r),l!==n[t](i)&&X(n,i,r),c}}function en(e,t){return()=>{let n=[...e.keys()];e.clear(),X(e,U,t);for(let r of n)X(e,r,t)}}var Sr={Set:(e,t)=>({has:we("has",e,t),add:ue("add","has",e,t),delete:ue("delete","has",e,t),keys:q("keys",e,t),values:q("values",e,t),entries:q("entries",e,t),[Symbol.iterator]:q(Symbol.iterator,e,t),forEach:Qt(e,t),clear:en(e,t),get size(){return F(e,U,t),e.size}}),Map:(e,t)=>({has:we("has",e,t),get:we("get",e,t),set:ue("set","get",e,t),delete:ue("delete","has",e,t),keys:q("keys",e,t),values:q("values",e,t),entries:q("entries",e,t),[Symbol.iterator]:q(Symbol.iterator,e,t),forEach:Qt(e,t),clear:en(e,t),get size(){return F(e,U,t),e.size}}),WeakMap:(e,t)=>({has:we("has",e,t),get:we("get",e,t),set:ue("set","get",e,t),delete:ue("delete","has",e,t)})};function ut(e,t,n){let r=Sr[t](e,n);return Object.assign(nn(n),{get(i,s){return ft.call(r,s)?r[s]:(F(i,s,n),fe(i[s],n))}})}function de(e,t){let n={type:"signal",value:e,observers:new Set},r=t(n),i=()=>(bt(n),r);return i[re]=n,i.set=function(o){Object.is(n.value,o)||(n.value=o,r=t(n),Fe(n))},i}function Cr(e){if(typeof e!="function"||e[re]?.type!=="signal")throw new g(`Value is not a signal (${e})`);Fe(e[re])}function kr(){return de(null,e=>e.value)}function Ar(e){return de(e,t=>he(t.value,t))}function Dr(e){return de(e,t=>he(t.value,t))}function _r(e){return de(e,t=>he(t.value,t))}function xr(e){return de(e,t=>he(t.value,t))}function O(e){return de(e,t=>t.value)}O.trigger=Cr;O.ref=kr;O.Array=Ar;O.Map=_r;O.Object=Dr;O.Set=xr;function Or(){throw new g("Cannot write to a read-only computed value. Pass a `set` option to make it writable.")}function ie(e,t={}){let n=Ve(()=>{let i=e();return Object.is(n.value,i)||Fe(n),i},!0);function r(){return n.state!==0&&Ke(n),bt(n),n.value}return r[re]=n,r.set=t.set??Or,se()?.computations.push(n),r}function ke(e){let t=Ve(()=>(t.value||t.observers.size?(P(void 0),dt(t),P(t)):$e(t),e()),!1);return z()?.observers.add(t),Ke(t),function(){t.state=0;let r=z();P(void 0),dt(t),P(r)}}function dt(e){$e(e),Rr(e);for(let t of e.observers)t.state=0,dt(t);e.observers.clear()}function Rr(e){let t=e.value;t&&typeof t=="function"&&(t(),e.value=void 0)}function rn(e,t={}){let n=O(t.initial),r=O(!1),i=O(null),s=O(0),o=se(),l=0,c=null,h=ke(()=>{s();let f=++l;c&&c.abort();let m=new AbortController;c=m;let p=[m.signal];o?.abortSignal&&p.push(o.abortSignal),r.set(!0),i.set(null);let b;try{b=e({abortSignal:AbortSignal.any(p)})}catch(d){if(f!==l)return;if(Be(d)){r.set(!1);return}i.set(d),r.set(!1);return}b.then(d=>{f===l&&(n.set(d),r.set(!1))},d=>{if(f===l){if(Be(d)){r.set(!1);return}i.set(d),r.set(!1)}})});function a(){h(),c?.abort(),c=null}o?.onDestroy(a);let u=(()=>n());return u.loading=()=>r(),u.error=()=>i(),u.refresh=()=>s.set(s()+1),u.dispose=a,u}function Mr(e,t,n){if(typeof n=="function")return n.name||"[Function]";if(n&&typeof n=="object"){let r=n.constructor;if(r&&r!==Object&&r!==Array)return`[Instance of ${r.name||"anonymous"}]`;if(e.includes(n))return"[Known object]";e.push(n)}return n}function W(e,t,n="Value does not match the type"){let r=wt(e,t);if(r.length){let i=[],s=JSON.stringify(r,Mr.bind(null,i),2);throw new g(`${n}
|
|
2
|
+
${s}`)}}function pt(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.join(" > "),...i})},mergeIssues(i){e.push(...i)},validate(i){i(this),!this.isValid&&r&&(r.issueDepth=this.issueDepth+1)},withIssues(i){return pt(i,this.value,this.path,this)},withKey(i){return pt(e,this.value[i],this.path.concat(i),this)}}}function wt(e,t){let n=[];return t(pt(n,e,[])),n}var Tt=Symbol("default"),sn=Symbol("innerType"),ze=Symbol("shape"),on=Symbol("elementType"),ln=Symbol("optional");function oe(e){return typeof e=="function"?e[Tt]:void 0}function Ir(e,t){let n=function(i){i.value!==void 0&&i.validate(e)};return n[ln]=!0,n[sn]=e,t!==void 0&&(n[Tt]=typeof t=="function"?t:()=>t),n}function Pr(e){return typeof e=="function"&&ln in e}function M(e){return e.optional=t=>Ir(e,t),e}function an(e,t){return mt(e,t)}function mt(e,t){if(typeof t!="function")return e;if(e===void 0){let o=t[Tt];if(!o)return e;e=o()}let n=t[sn]||t;if(typeof n!="function"||!e||typeof e!="object")return e;let r=n[on];if(r&&Array.isArray(e)){let o=e;for(let l=0;l<e.length;l++){let c=mt(e[l],r);c!==e[l]&&(o===e&&(o=[...e]),o[l]=c)}return o}let i=n[ze];if(!i)return e;let s=e;for(let o in i){let l=s[o],c=mt(l,i[o]);c!==l&&(s===e&&(s=Array.isArray(e)?[...e]:{...e}),s[o]=c)}return s}function Lr(){return M(function(){})}function Br(){return M(function(t){typeof t.value!="boolean"&&t.addIssue({message:"value is not a boolean"})})}function jr(){return M(function(t){typeof t.value!="number"&&t.addIssue({message:"value is not a number"})})}function Vr(){return M(function(t){typeof t.value!="string"&&!(t.value instanceof String)&&t.addIssue({message:"value is not a string"})})}function Fr(e){let t=M(function(r){if(!Array.isArray(r.value)){r.addIssue({message:"value is not an array"});return}if(e)for(let i=0;i<r.value.length;i++)r.withKey(i).validate(e)});return e&&(t[on]=e),t}function Nt(e){return M(function(n){(typeof n.value!="function"||!(n.value===e||n.value.prototype instanceof e))&&n.addIssue({message:`value is not '${e.name}' or an extension`})})}function Kr(e,t,n="value does not match custom validation"){return M(function(i){i.validate(e),i.isValid&&(t(i.value)||i.addIssue({message:n}))})}function Wr(e=[],t=void 0){return M(function(r){typeof r.value!="function"&&r.addIssue({message:"value is not a function"})})}function cn(e){return M(function(n){n.value instanceof e||n.addIssue({message:`value is not an instance of '${e.name}'`})})}function Ur(e){return M(function(n){for(let r of e)n.validate(r)})}function Et(e){return M(function(n){n.value!==e&&n.addIssue({message:`value is not equal to ${typeof e=="string"?`'${e}'`:e}`})})}function zr(e){return $t(e.map(Et))}function un(e,t,n){if(typeof e.value!="object"||Array.isArray(e.value)||e.value===null){e.addIssue({message:"value is not an object"});return}if(!t)return;let r=!Array.isArray(t),i,s;if(r)s=Object.keys(t),i=t;else{s=t,i={};for(let l of s)i[l]=null}let o=[];for(let l of s){if(e.value[l]===void 0){Pr(i[l])||o.push(l);continue}r&&e.withKey(l).validate(i[l])}if(o.length&&e.addIssue({message:"object value has missing keys",missingKeys:o,expectedKeys:s}),n){let l=[];for(let c in e.value)s.includes(c)||l.push(c);l.length&&e.addIssue({message:"object value has unknown keys",unknownKeys:l,expectedKeys:s})}}function Hr(e={}){let t=M(function(r){un(r,e,!1)});return Array.isArray(e)||(t[ze]=e),t}function Gr(e){let t=M(function(r){un(r,e,!0)});return Array.isArray(e)||(t[ze]=e),t}function qr(e){return M(function(n){n.value instanceof Promise||n.addIssue({message:"value is not a promise"})})}function Xr(e){return M(function(n){if(typeof n.value!="object"||Array.isArray(n.value)||n.value===null){n.addIssue({message:"value is not an object"});return}if(e)for(let r in n.value)n.withKey(r).validate(e)})}function Yr(e){let t=M(function(r){if(!Array.isArray(r.value)){r.addIssue({message:"value is not an array"});return}if(r.value.length!==e.length){r.addIssue({message:"tuple value does not have the correct length"});return}for(let i=0;i<e.length;i++)r.withKey(i).validate(e[i])});return t[ze]=e,t}function $t(e){return M(function(n){let r=0,i=[];for(let s of e){let o=n.withIssues(i);if(o.validate(s),i.length===r||o.issueDepth>0){n.mergeIssues(i.slice(r));return}r=i.length}n.addIssue({message:"value does not match union type",subIssues:i})})}function Zr(e){return M(function(n){(typeof n.value!="function"||!n.value[re])&&n.addIssue({message:"value is not a reactive value"})})}function Jr(e){if(typeof HTMLElement>"u")throw new Error("Cannot use ref in a non-DOM environment");return $t([Et(null),cn(e||HTMLElement)])}var St={and:Ur,any:Lr,array:Fr,boolean:Br,constructor:Nt,customValidator:Kr,function:Wr,instanceOf:cn,literal:Et,number:jr,object:Hr,or:$t,promise:qr,record:Xr,ref:Jr,selection:zr,signal:Zr,strictObject:Gr,string:Vr,tuple:Yr},fn=class{_map=O.Object(Object.create(null));_name;_validation;constructor(e={}){this._name=e.name||"registry",this._validation=e.validation}entries=ie(()=>Object.entries(this._map()).sort((t,n)=>t[1][0]-n[1][0]).map(([t,n])=>[t,n[1]]));items=ie(()=>this.entries().map(e=>e[1]));addById(e,t={}){if(!e.id)throw new g(`Item should have an id key (registry '${this._name}')`);return this.add(e.id,e,t)}add(e,t,n={}){if(!n.force&&e in this._map())throw new g(`Key "${e}" is already registered (registry '${this._name}'). Use { force: true } to overwrite.`);if(this._validation){let r=this._name?` (registry '${this._name}', key: '${e}')`:` (key: '${e}')`;W(t,this._validation,`Registry entry does not match the type${r}`)}return this._map()[e]=[n.sequence??50,t],this}get(e,t){let n=e in this._map();if(!n&&arguments.length<2)throw new g(`Cannot find key "${e}" (registry '${this._name}')`);return n?this._map()[e][1]:t}delete(e){delete this._map()[e]}has(e){return e in this._map()}use(e,t,n={}){let r=K();return this.add(e,t,n),r.onDestroy(()=>{this._map()[e]?.[1]===t&&this.delete(e)}),this}useById(e,t={}){if(!e.id)throw new g(`Item should have an id key (registry '${this._name}')`);return this.use(e.id,e,t)}},hn=class{_items=O.Array([]);_name;_validation;constructor(e={}){this._name=e.name,this._validation=e.validation}items=ie(()=>this._items().sort((e,t)=>e[0]-t[0]).map(e=>e[1]));add(e,t={}){if(this._validation){let n=this._name?` (resource '${this._name}')`:"";W(e,this._validation,`Resource item does not match the type${n}`)}return this._items().push([t.sequence??50,e]),this}delete(e){let t=this._items().filter(([n,r])=>r!==e);return this._items.set(t),this}has(e){return this._items().some(([t,n])=>n===e)}use(e,t={}){let n=K();return this.add(e,t),n.onDestroy(()=>this.delete(e)),this}},He=class{static _shadowId;static get id(){return this._shadowId??this.name}static set id(e){this._shadowId=e}static sequence=50;__owl__;constructor(e){this.__owl__=e}setup(){}},pe=class extends Se{config;plugins;ready=Promise.resolve();hasPendingReady=!1;constructor(e,t={}){if(super(e),this.config=t.config??{},this.pluginManager=this,t.parent){let n=t.parent;n.onDestroy(()=>this.destroy()),this.plugins=Object.create(n.plugins)}else this.plugins={}}destroy(){this.finalize(e=>console.error(e))}getPluginById(e){return this.plugins[e]||null}getPlugin(e){return this.getPluginById(e.id)}startPlugin(e){if(!e.id)throw new g(`Plugin "${e.name}" has no id`);if(this.plugins.hasOwnProperty(e.id)){let n=this.getPluginById(e.id).constructor;if(n!==e)throw new g(`Trying to start a plugin with the same id as an other plugin (id: '${e.id}', existing plugin: '${n.name}', starting plugin: '${e.name}')`);return null}let t=new e(this);return this.plugins[e.id]=t,t.setup(),t}startPlugins(e){let t=e.filter(o=>!o.id||this.plugins.hasOwnProperty(o.id)?(this.startPlugin(o),!1):!0);if(!t.length)return;t.sort((o,l)=>o.sequence-l.sequence);let n=[];for(let o of t){let l=n[n.length-1];l&&l[0].sequence===o.sequence?l.push(o):n.push([o])}let r=o=>{H.push(this);try{for(let c of o)this.startPlugin(c)}finally{H.pop()}let l=this.willStart.splice(0);return l.length?Promise.all(l.map(c=>c())):null},i=this.hasPendingReady?this.ready:null;for(let o of n)i?i=i.then(()=>r(o)):i=r(o);if(!i){this.status<k.MOUNTED&&(this.status=k.MOUNTED);return}this.hasPendingReady=!0;let s=this.ready=i.then(()=>{this.status<k.MOUNTED&&(this.status=k.MOUNTED),this.ready===s&&(this.hasPendingReady=!1)})}};function Ge(e,t){Array.isArray(t)?e.startPlugins(t):e.onDestroy(ke(()=>{let n=t.items();vt(()=>e.startPlugins(n))}))}function qe(e){let t=K();t.willStart.push(t.decorate(e,"onWillStart"))}function Z(e){let t=K();t.onDestroy(t.decorate(e,"onWillDestroy"))}function Ae(e){Z(ke(e))}function dn(e,t,n,r){typeof e=="function"?Ae(()=>{let i=e();if(i)return i.addEventListener(t,n,r),()=>i.removeEventListener(t,n,r)}):(e.addEventListener(t,n,r),Z(()=>e.removeEventListener(t,n,r)))}function pn(){return K().app}function mn(e){let t=K(),n=t.pluginManager.getPluginById(e.id);if(!n)if(t instanceof pe)n=t.pluginManager.startPlugin(e);else throw new g(`Unknown plugin "${e.id}"`);return n}function gn(e,t){let n=K();if(!(n instanceof pe))throw new g("Expected to be in a plugin scope");n.app.dev&&t&&W(n.config,St.object({[e]:t}),"Config does not match the type");let r=n.config[e];return r===void 0?oe(t)?.():r}var bn=class extends EventTarget{trigger(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t}))}},Ne=class extends String{};function Ct(e){return e instanceof Ne?e:e===void 0?Te(""):typeof e=="number"?Te(String(e)):([["&","&"],["<","<"],[">",">"],["'","'"],['"',"""],["`","`"]].forEach(t=>{e=String(e).replace(new RegExp(t[0],"g"),t[1])}),Te(e))}function Te(e,...t){if(!Array.isArray(e))return new Ne(e);let n=e,r="",i=0;for(;i<t.length;++i)r+=n[i]+Ct(t[i]);return r+=n[i],new Ne(r)}var Qr="3.0.0-alpha.36",J=new WeakMap,ae=new WeakMap;function An(e,t,n,r){for(;e;){r&&e.fiber&&J.set(e.fiber,t);let i=ae.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}=An(e,t,n,!1);r||e.app._handleError(n())}}function be(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,J.set(l,t),l=l.parent;while(l);J.set(r.root,t)}let s=()=>{try{i.destroy()}catch{}return t},o=An(n,t,s,!0);o.handled||(t=o.error,i._handleError(s()))}function _n(e){e=e.slice();let t=[],n;for(;(n=e[0])&&typeof n=="string";)t.push(e.shift());return{modifiers:t,data:e}}var ve={shouldNormalizeDom:!0,mainEventHandler:(e,t,n)=>(typeof e=="function"?e(t):Array.isArray(e)&&(e=_n(e).data,e[0](e[1],t)),!1)},vn=document.createTextNode(""),ei=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(vn,i),t&&n.beforeRemove(),n.remove(),r.mount(this.parentEl,vn),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 le(e,t){return new ei(e,t)}var _t,Oe,Vt,xn;if(typeof Element<"u"){({setAttribute:_t,removeAttribute:Oe}=Element.prototype);let e=DOMTokenList.prototype;Vt=e.add,xn=e.remove}var On=Array.isArray,{split:yn,trim:_e}=String.prototype,wn=/\s+/;function ge(e,t){switch(t){case!1:case null:case void 0:Oe.call(this,e);break;case!0:_t.call(this,e,"");break;default:_t.call(this,e,t)}}function ti(e){return function(t){ge.call(this,e,t)}}function ni(e){if(On(e))e[0]==="class"?Rt.call(this,e[1]):e[0]==="style"?Mt.call(this,e[1]):ge.call(this,e[0],e[1]);else for(let t in e)t==="class"?Rt.call(this,e[t]):t==="style"?Mt.call(this,e[t]):ge.call(this,t,e[t])}function ri(e,t){if(On(e)){let n=e[0],r=e[1];if(n===t[0]){if(r===t[1])return;n==="class"?Xe.call(this,r,t[1]):n==="style"?Ye.call(this,r,t[1]):ge.call(this,n,r)}else Oe.call(this,t[0]),ge.call(this,n,r)}else{for(let n in t)n in e||(n==="class"?Xe.call(this,"",t[n]):n==="style"?Ye.call(this,"",t[n]):Oe.call(this,n));for(let n in e){let r=e[n];r!==t[n]&&(n==="class"?Xe.call(this,r,t[n]):n==="style"?Ye.call(this,r,t[n]):ge.call(this,n,r))}}}function xt(e){let t={};switch(typeof e){case"string":let n=_e.call(e);if(!n)return{};let r=yn.call(n,wn);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=_e.call(i),!i)continue;let o=yn.call(i,wn);for(let l of o)t[l]=s}}return t;case"undefined":return{};case"number":return{[e]:!0};default:return{[e]:!0}}}var kt={};function ii(e){if(e in kt)return kt[e];let t=e.replace(/[A-Z]/g,n=>"-"+n.toLowerCase());return kt[e]=t,t}var Tn=/\s*!\s*important\s*$/i;function Rn(e,t,n){Tn.test(n)?e.setProperty(t,n.replace(Tn,""),"important"):e.setProperty(t,n)}function Ot(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=_e.call(n.slice(s,i));if(i++,!c)continue;let h=c.indexOf(":");if(h===-1)continue;let a=_e.call(c.slice(0,h)),u=_e.call(c.slice(h+1));a&&u&&u!=="undefined"&&(t[a]=u)}return t}case"object":for(let n in e){let r=e[n];(r||r===0)&&(t[ii(n)]=String(r))}return t;default:return{}}}function Rt(e){e=e===""?{}:xt(e);for(let t in e)Vt.call(this.classList,t)}function Xe(e,t){t=t===""?{}:xt(t),e=e===""?{}:xt(e);for(let n in t)n in e||xn.call(this.classList,n);for(let n in e)e[n]!==t[n]&&Vt.call(this.classList,n)}function Mt(e){e=e===""?{}:Ot(e);let t=this.style;for(let n in e)Rn(t,n,e[n])}function Ye(e,t){t=t===""?{}:Ot(t),e=e===""?{}:Ot(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]&&Rn(n,r,e[r]);n.cssText||Oe.call(this,"style")}function si(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 oi(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 li(e){let t=e&&e.ownerDocument;if(t){if(!t.defaultView)throw new g("Cannot mount a component: the target document is not attached to a window (defaultView is missing)");let n=t.defaultView.HTMLElement;if(e instanceof n||e instanceof ShadowRoot){if(!oi(e,t))throw new g("Cannot mount a component on a detached dom node");return}}throw new g("Cannot mount component: the target is not a valid DOM element")}function ai(e){return new Promise(function(t){document.readyState!=="loading"?t(!0):document.addEventListener("DOMContentLoaded",t,!1)}).then(e||function(){})}function Mn(e){let t=e.split(".")[0],n=e.includes(".capture"),r=e.includes(".passive");return e.includes(".synthetic")?hi(t,n,r):ui(t,n,r)}var ci=1;function ui(e,t=!1,n=!1){let r=`__event__${e}_${ci++}`;t&&(r=`${r}_capture`);function i(h){let a=h.currentTarget;if(!a||!si(a))return;let u=a[r];u&&ve.mainEventHandler(u,h,a)}let s={capture:t,passive:n};function o(h){this[r]=h,this.addEventListener(e,i,s)}function l(){delete this[r],this.removeEventListener(e,i,s)}function c(h){this[r]=h}return{setup:o,update:c,remove:l}}var fi=1;function hi(e,t=!1,n=!1){let r=`__event__synthetic_${e}`;t&&(r=`${r}_capture`),pi(e,r,t,n);let i=fi++;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 di(e,t){let n=t.target;for(;n!==null;){let r=n[e];if(r){for(let i of Object.values(r))if(ve.mainEventHandler(i,t,n))return}n=n.parentNode}}var Nn={};function pi(e,t,n=!1,r=!1){Nn[t]||(document.addEventListener(e,i=>di(t,i),{capture:n,passive:r}),Nn[t]=!0)}var mi=(e,t)=>Object.getOwnPropertyDescriptor(e,t),De,In,It;if(typeof Node<"u"){let e=Node.prototype;De=e.insertBefore,In=mi(e,"textContent").set,It=e.removeChild}var Pn=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,De.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];De.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];De.call(r,c,t)}}}patch(e,t){if(this===e)return;let n=this.children,r=e.children,i=this.anchors,s=this.parentEl;for(let o=0,l=n.length;o<l;o++){let c=n[o],h=r[o];if(c)if(h)c.patch(h,t);else{let a=c.firstNode(),u=document.createTextNode("");i[o]=u,De.call(s,u,a),t&&c.beforeRemove(),c.remove(),n[o]=void 0}else if(h){n[o]=h;let a=i[o];h.mount(s,a),It.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)In.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():It.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 Ft(e){return new Pn(e)}var gi=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Ze,Ln,Bn;if(typeof Node<"u"){let e=Node.prototype;Ze=e.insertBefore,Bn=e.removeChild,Ln=gi(CharacterData.prototype,"data").set}var bi=class{text;parentEl;el;constructor(e){this.text=e}mount(e,t){this.parentEl=e;let n=document.createTextNode(Pt(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(){Bn.call(this.parentEl,this.el)}firstNode(){return this.el}patch(e){let t=e.text;this.text!==t&&(Ln.call(this.el,Pt(t)),this.text=t)}toString(){return this.text}};function Re(e){return new bi(e)}function Pt(e){switch(typeof e){case"string":return e;case"number":return String(e);case"boolean":return e?"true":"false";default:return e||""}}var At=(e,t)=>Object.getOwnPropertyDescriptor(e,t),xe,jn,Vn,et,Kt;typeof Node<"u"&&(xe=Node.prototype,jn=Element.prototype,Vn=At(CharacterData.prototype,"data").set,et=At(xe,"firstChild").get,Kt=At(xe,"nextSibling").get);var En=()=>{};function vi(e){return function(n){this[e]=n===0?0:n?n.valueOf():""}}var Dt={};function Fn(e){if(e in Dt)return Dt[e];let n=new DOMParser().parseFromString(`<t>${e}</t>`,"text/xml").firstChild.firstChild;ve.shouldNormalizeDom&&Kn(n);let r=Lt(n),i=Bt(r),s=r.el,o=Ti(s,i);return Dt[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 Lt(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||$n(n);let c=parseInt(i.slice(12),10);o.push({type:"child",idx:c}),s=document.createTextNode("")}if(r||=e.namespaceURI,s||(s=r?document.createElementNS(r,i):document.createElement(i)),s instanceof Element){n||document.createElement("template").content.appendChild(s);let c=e.attributes;for(let h=0;h<c.length;h++){let a=c[h].name,u=c[h].value;if(a.startsWith("block-handler-")){let f=parseInt(a.slice(14),10);o.push({type:"handler",idx:f,event:u})}else if(a.startsWith("block-attribute-")){let f=parseInt(a.slice(16),10);o.push({type:"attribute",idx:f,name:u,tag:i})}else if(a.startsWith("block-property-")){let f=parseInt(a.slice(15),10);o.push({type:"property",idx:f,name:u,tag:i})}else a==="block-attributes"?o.push({type:"attributes",idx:parseInt(u,10)}):a==="block-ref"?o.push({type:"ref",idx:parseInt(u,10)}):s.setAttribute(c[h].name,u)}}let l={parent:t,firstChild:null,nextSibling:null,el:s,info:o,refN:0,currentNS:r};if(e.firstChild){let c=e.childNodes[0];if(e.childNodes.length===1&&c.nodeType===Node.ELEMENT_NODE&&c.tagName.startsWith("block-child-")){let h=c.tagName,a=parseInt(h.slice(12),10);o.push({idx:a,type:"child",isOnlyChild:!0})}else{l.firstChild=Lt(e.firstChild,l,l),s.appendChild(l.firstChild.el);let h=e.firstChild,a=l.firstChild;for(;h=h.nextSibling;)a.nextSibling=Lt(h,a,l),s.appendChild(a.nextSibling.el),a=a.nextSibling}}return l.info.length&&$n(l),l}case Node.TEXT_NODE:return{parent:t,firstChild:null,nextSibling:null,el:document.createTextNode(e.textContent),info:[],refN:0,currentNS:null}}throw new g("boom")}function $n(e){e.isRef=!0;do e.refN++;while(e=e.parent)}function yi(e){let t=e.parent;for(;t&&t.nextSibling===e;)e=t,t=t.parent;return t}function Bt(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,wi(t,e),n++}if(o){let l=n+s;t.collectors.push({idx:l,prevIdx:r,getVal:Kt}),Bt(e.nextSibling,t,l)}s&&(t.collectors.push({idx:n,prevIdx:r,getVal:et}),Bt(e.firstChild,t,n))}return t}function wi(e,t){for(let n of t.info)switch(n.type){case"text":e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:Sn,updateData:Sn});break;case"child":n.isOnlyChild?e.children[n.idx]={parentRefIdx:n.refIdx,isOnlyChild:!0}:e.children[n.idx]={parentRefIdx:yi(t).refIdx,afterRefIdx:n.refIdx};break;case"property":{let r=n.refIdx,i=vi(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=Rt,i=Xe):n.name==="style"?(s=Mt,i=Ye):(s=ti(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:ni,updateData:ri});break;case"handler":{let{setup:r,update:i}=Mn(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:En,updateData:En}),e.cbRefs.push(n.idx);break}}}function Ti(e,t){let n=Ni(e,t);return t.children.length?(n=class extends n{children;constructor(r,i){super(r),this.children=i}},n.prototype.beforeRemove=Pn.prototype.beforeRemove,(r,i=[])=>new n(r,i)):r=>new n(r)}function Ni(e,t){let{refN:n,collectors:r,children:i,locations:s,cbRefs:o}=t;s.sort((y,w)=>y.idx-w.idx);let l=s.length,c=i.length,h=n>0,a=s.map(y=>y.refIdx),u=s.map(y=>y.setData),f=s.map(y=>y.updateData),m=[Kt,et],p=r.length,b=r.map(y=>y.idx&32767|(y.prevIdx&32767)<<15|(y.getVal===et?1:0)<<30),d=i.map(y=>y.parentRefIdx&32767|(y.isOnlyChild?1:0)<<15|((y.afterRefIdx??0)&32767)<<16),A=xe.cloneNode,E=xe.insertBefore,T=jn.remove;class C{el;parentEl;data;children;refs;constructor(w){this.data=w}beforeRemove(){}remove(){T.call(this.el)}firstNode(){return this.el}moveBeforeDOMNode(w,v=this.parentEl){this.parentEl=v,E.call(v,this.el,w)}moveBeforeVNode(w,v){E.call(this.parentEl,this.el,w?w.el:v)}toString(){let w=document.createElement("div");return this.mount(w,null),w.innerHTML}mount(w,v){let $=A.call(e,!0);E.call(w,$,v),this.el=$,this.parentEl=w}patch(w,v){}}return h&&(C.prototype.mount=function(w,v){let $=A.call(e,!0),D=new Array(n);this.refs=D,D[0]=$;for(let x=0;x<p;x++){let S=b[x];D[S&32767]=m[S>>30&1].call(D[S>>15&32767])}if(l){let x=this.data;for(let S=0;S<l;S++)u[S].call(D[a[S]],x[S])}if(c){let x=this.children;for(let S=0;S<c;S++){let R=x[S];if(R){let L=d[S],ye=L>>16&32767,Pe=ye?D[ye]:null;R.isOnlyChild=!!(L&32768),R.mount(D[L&32767],Pe)}}}if(E.call(w,$,v),this.el=$,this.parentEl=w,o.length){let x=this.data,S=this.refs;for(let R of o){let L=x[R];L(S[a[R]],null)}}},C.prototype.patch=function(w,v){if(this===w)return;let $=this.refs;if(l){let D=this.data,x=w.data;for(let S=0;S<l;S++){let R=D[S],L=x[S];R!==L&&f[S].call($[a[S]],L,R)}this.data=x}if(c){let D=this.children,x=w.children;for(let S=0;S<c;S++){let R=D[S],L=x[S];if(R)L?R.patch(L,v):(v&&R.beforeRemove(),R.remove(),D[S]=void 0);else if(L){let ye=d[S],Pe=ye>>16&32767,dr=Pe?$[Pe]:null;L.mount($[ye&32767],dr),D[S]=L}}}},C.prototype.remove=function(){if(o.length){let w=this.data,v=this.refs;for(let $ of o){let D=w[$];D(null,v[a[$]])}}T.call(this.el)}),C}function Sn(e){Vn.call(this,Pt(e))}var Ei=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Wn,Un,zn,jt;if(typeof Node<"u"){let e=Node.prototype;Wn=e.insertBefore,Un=e.appendChild,zn=e.removeChild,jt=Ei(e,"textContent").set}var $i=class{children;anchor;parentEl;isOnlyChild;constructor(e){this.children=e}mount(e,t){let n=this.children,r=document.createTextNode("");this.anchor=r,Wn.call(e,r,t);let i=n.length;if(i){let s=n[0].mount;for(let o=0;o<i;o++)s.call(n[o],e,r)}this.parentEl=e}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;let n=this.children;for(let r=0,i=n.length;r<i;r++)n[r].moveBeforeDOMNode(e,t);t.insertBefore(this.anchor,e)}moveBeforeVNode(e,t){if(e){let r=e.children[0];t=(r?r.firstNode():e.anchor)||null}let n=this.children;for(let r=0,i=n.length;r<i;r++)n[r].moveBeforeVNode(null,t);this.parentEl.insertBefore(this.anchor,t)}patch(e,t){if(this===e)return;let n=this.children,r=e.children;if(r.length===0&&n.length===0)return;this.children=r;let i=r[0]||n[0],{mount:s,patch:o,remove:l,beforeRemove:c,moveBeforeVNode:h,firstNode:a}=i,u=this.anchor,f=this.isOnlyChild,m=this.parentEl;if(r.length===0&&f){if(t)for(let v=0,$=n.length;v<$;v++)c.call(n[v]);jt.call(m,""),Un.call(m,u);return}let p=0,b=0,d=n[0],A=r[0],E=n.length-1,T=r.length-1,C=n[E],y=r[T],w;for(;p<=E&&b<=T;){if(d===null){d=n[++p];continue}if(C===null){C=n[--E];continue}let v=d.key,$=A.key;if(v===$){o.call(d,A,t),r[b]=d,d=n[++p],A=r[++b];continue}let D=C.key,x=y.key;if(D===x){o.call(C,y,t),r[T]=C,C=n[--E],y=r[--T];continue}if(v===x){o.call(d,y,t),r[T]=d;let R=r[T+1];h.call(d,R,u),d=n[++p],y=r[--T];continue}if(D===$){o.call(C,A,t),r[b]=C;let R=n[p];h.call(C,R,u),C=n[--E],A=r[++b];continue}w=w||Si(n,p,E);let S=w[$];if(S===void 0)s.call(A,m,a.call(d)||null);else{let R=n[S];h.call(R,d,null),o.call(R,A,t),r[b]=R,n[S]=null}A=r[++b]}if(p<=E||b<=T)if(p>E){let v=r[T+1],$=v?a.call(v)||null:u;for(let D=b;D<=T;D++)s.call(r[D],m,$)}else for(let v=p;v<=E;v++){let $=n[v];$&&(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)jt.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])}zn.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 Hn(e){return new $i(e)}function Si(e,t,n){let r={};for(let i=t;i<=n;i++)r[e[i].key]=i;return r}var me,Gn;if(typeof Node<"u"){let e=Node.prototype;me=e.insertBefore,Gn=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)me.call(e,r,t);if(!this.content.length){let r=document.createTextNode("");this.content.push(r),me.call(e,r,t)}}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;for(let n of this.content)me.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)me.call(n,o,r);if(!s.length){let o=document.createTextNode("");s.push(o),me.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)Gn.call(e,t)}firstNode(){return this.content[0]}toString(){return this.html}};function Wt(e){return new Ci(e)}function ki(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=Mn(o);this.handlerFns[l]=c,c.setup.call(i,this.handlerData[l])}}wrapHandlerData(){for(let i=0;i<t;i++){let s=this.handlerData[i],o=s.length-2,l=s[o],c=this;s[o]=function(h,a){let u=a.target,f=c.child.firstNode(),m=c.afterNode;for(;f&&f!==m;){if(f.contains(u))return l(h,a);f=f.nextSibling}}}}moveBeforeDOMNode(i,s=this.parentEl){this.parentEl=s,this.child.moveBeforeDOMNode(i,s),s.insertBefore(this.afterNode,i)}moveBeforeVNode(i,s){i&&(s=i.firstNode()||s),this.child.moveBeforeVNode(i?i.child:null,s),this.parentEl.insertBefore(this.afterNode,s)}patch(i,s){if(this!==i){this.handlerData=i.handlerData,this.wrapHandlerData();for(let o=0;o<t;o++)this.handlerFns[o].update.call(this.parentEl,this.handlerData[o]);this.child.patch(i.child,s)}}beforeRemove(){this.child.beforeRemove()}remove(){for(let i=0;i<t;i++)this.handlerFns[i].remove.call(this.parentEl);this.child.remove(),this.afterNode.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}}return function(r,i){return new n(r,i)}}function Je(e,t,n=null){e.mount(t,n)}function Ai(e,t,n=!1){e.patch(t,n)}function Di(e,t=!1){t&&e.beforeRemove(),e.remove()}function _i(e){switch(e.__owl__.status){case k.NEW:return"new";case k.CANCELLED:return"cancelled";case k.MOUNTED:return e instanceof He?"started":"mounted";case k.DESTROYED:return"destroyed"}}function xi(e,t){let n=e.fiber;return n&&(Ut(n.children),n.root=null),new rt(e,t)}function Oi(e){let t=e.fiber;if(t){let r=t.root;return r.locked=!0,r.setCounter(r.counter+1-Ut(t.children)),r.locked=!1,t.children=[],t.childrenMap={},t.bdom=null,J.has(t)&&(J.delete(t),J.delete(r),t.appliedToDom=!1,t instanceof tt&&(t.mounted=t instanceof qn?[t]:[])),t}let n=new tt(e,null);return e.willPatch.length&&n.willPatch.push(n),e.patched.length&&n.patched.push(n),n}function Ri(){throw new g("Attempted to render cancelled fiber")}function Ut(e){let t=0;for(let n of e){let r=n.node;n.render=Ri,r.status===k.NEW&&r.cancel(),r.fiber=null,n.bdom?r.forceNextRender=!0:(t++,r.bdom&&(r.forceNextRender=!0)),t+=Ut(n.children)}return t}var rt=class{node;bdom=null;root;parent;children=[];appliedToDom=!1;deep=!1;childrenMap={};constructor(e,t){if(this.node=e,this.parent=t,t){this.deep=t.deep;let n=t.root;n.setCounter(n.counter+1),this.root=n,t.children.push(this)}else this.root=this}render(){let e=this.root.node.app.scheduler;if(e.tasks.size>1){let r=this.root.node,i=r.parent;for(;i;){if(i.fiber){let s=i.fiber.root;if(s.counter===0&&r.parentKey in i.fiber.childrenMap)i=s.node;else{e.delayedRenders.push(this);return}}r=i,i=i.parent}}let t=this.node,n=this.root;if(n){let r=z();$e(t.signalComputation),P(t.signalComputation),t.signalComputation.state=Ee.EXECUTED;try{this.bdom=!0,this.bdom=t.renderFn()}catch(s){be({node:t,error:s})}finally{P(r)}let i=n.counter-1;n.counter=i,i===0&&e.flush()}}},tt=class extends rt{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,be({fiber:t||this,error:r})}}setCounter(e){this.counter=e,e===0&&this.node.app.scheduler.flush()}},qn=class extends tt{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)Je(t.bdom,this.target,this.afterNode);else if(this.position==="last-child"||this.target.childNodes.length===0)Je(t.bdom,this.target);else{let r=this.target.childNodes[0];Je(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){be({fiber:e,error:t})}}},Me=class extends Se{fiber=null;component;bdom=null;componentName;forceNextRender=!1;parentKey;props;defaultProps=null;renderFn;parent;children=Object.create(null);willUpdateProps=[];propsUpdated=[];willUnmount=[];mounted=[];willPatch=[];patched=[];signalComputation;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=Ve(()=>this.render(!1),!1,Ee.EXECUTED),this.props=t;let s=z();P(void 0),H.push(this);try{this.component=new e(this);let o={this:this.component,__owl__:this};this.renderFn=n.getTemplate(e.template).bind(this.component,o,this),this.component.setup()}finally{H.pop(),P(s)}}decorate(e,t){let n=this.component,r=this;if(this.app.dev){let i=`${this.componentName}.${t}`;return{[i](...o){return e.call(n,r,...o)}}[i]}return e.bind(n,r)}async initiateRender(e){this.fiber=e,this.mounted.length&&e.root.mounted.push(e);let t=this.component,n=z();P(void 0);try{let r=this.willStart.map(i=>i.call(t));P(n),await Promise.all(r)}catch(r){if(Be(r)&&this.status>k.MOUNTED)return;be({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&&!J.has(t)){e&&(t.deep=e);return}e=e||t.deep}else if(!this.bdom)return;let n=Oi(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=>be({error:t,node:this})),We(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 G(){let e=K();if(!(e instanceof Me))throw new g("Expected to be in a component scope");return e}var Xn;typeof window<"u"&&(Xn=window.requestAnimationFrame.bind(window));var Mi=class Yn{static requestAnimationFrame=Xn;tasks=new Set;requestAnimationFrame;frame=0;delayedRenders=[];cancelledNodes=new Set;processing=!1;constructor(){this.requestAnimationFrame=Yn.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=J.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}}},Q=class{static template="";__owl__;constructor(e){this.__owl__=e}setup(){}},Ii=Object.create;function Pi(e,t){return e==null||e===!1?t:e}function Li(e,t,n,r,i,s,o){n=n+"__slot_"+r;let l=e.__owl__.props.slots||{},{__render:c,__ctx:h,__scope:a}=l[r]||{},u=Ii(h||{});a&&(u[a]=s);let f=c?c(u,t,n):null;if(o){let m,p;return f?m=i?le(r,f):f:p=o(e,t,n),Ft([m,p])}return f||Re("")}function Bi(e,t){return e.key=t,e}function ji(e){let t,n;if(Array.isArray(e))t=e,n=e;else if(e instanceof Map)t=[...e.keys()],n=[...e.values()];else if(Symbol.iterator in Object(e))t=[...e],n=t;else if(e&&typeof e=="object")n=Object.values(e),t=Object.keys(e);else throw new g(`Invalid loop expression: "${e}" is not iterable`);let r=n.length;return[t,n,r,new Array(r)]}function Vi(e){let t=parseFloat(e);return isNaN(t)?e:t}function Fi(e,t){for(let n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!1;return!0}var Zn=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 Ki(e,t){if(e==null)return t?le("default",t):le("undefined",Re(""));let n,r;return e instanceof Ne?(n="string_safe",r=Wt(e)):e instanceof Zn?(n="lazy_value",r=e.evaluate()):(n="string_unsafe",r=Re(e)),le(n,r)}function Wi(e){if(!e)throw new g("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[re];n=r?i=>{r.value===i&&e.set(null)}:()=>e.set(null)}else throw new g("Ref should implement either a 'set' function or 'add' and 'delete' functions");return(r,i)=>{i&&n(i),r&&t(r)}}function Ui(e,t,n){if(typeof e!="function")throw new g(`Invalid handler expression: the \`t-on\` expression should evaluate to a function, but got '${typeof e}'. Did you mean to use an arrow function? (e.g. \`t-on-click="() => expr"\`)`);e.call(t.this,n)}var Cn=new WeakMap;function zi(e,t,n){let r=Cn.get(e);r||(r=new Map,Cn.set(e,r));let i=r.get(t);if(i)return i.set(n),i.readonly;let s=O(n);return s.readonly=ie(s),r.set(t,s),s.readonly}function Hi(e){if(typeof e!="function"||typeof e.set!="function")throw new g("Invalid t-model expression: expression should evaluate to a function with a 'set' method defined on it");return e}function Gi(e,t,n,r,i,s){let o=!n,l,c=s.length===0;r?l=(a,u)=>!0:i?l=function(a,u){for(let f in a)if(a[f]!==u[f])return!0;return Object.keys(a).length!==Object.keys(u).length}:c?l=(a,u)=>!1:l=function(a,u){for(let f of s)if(a[f]!==u[f])return!0;return!1};let h=Me.prototype.initiateRender;return(a,u,f,m,p)=>{let b=f.children,d=b[u];o&&d&&d.component.constructor!==p&&(d=void 0);let A=f.fiber;if(d){if(l(d.props,a)||A.deep||d.forceNextRender){d.forceNextRender=!1;let E=d.willUpdateProps,T=xi(d,A);d.fiber=T;let C=A.root;d.willPatch.length&&C.willPatch.push(T),d.patched.length&&C.patched.push(T);let y;if(E.length){let w=a,v=d.defaultProps;if(v){w=Object.assign({},a);for(let x in v)w[x]===void 0&&(w[x]=v[x])}let $=d.component,D=z();P(void 0);for(let x of E){let S=x.call($,w);S&&typeof S.then=="function"&&(y||=[]).push(S)}P(D)}if(y)(y.length===1?y[0]:Promise.all(y)).then(()=>{if(T===d.fiber){d.props=a;for(let v of d.propsUpdated)v();T.render()}},v=>{be({node:d,error:v})});else{d.props=a;for(let w of d.propsUpdated)w();T.render()}}}else{if(n){let T=m.constructor.components;if(!T)throw new g(`Cannot find the definition of component "${t}", missing static components key in parent`);if(p=T[t],p){if(!(p.prototype instanceof Q))throw new g(`"${t}" is not a Component. It must inherit from the Component class`)}else throw new g(`Cannot find the definition of component "${t}"`)}d=new Me(p,a,e,f,u),b[u]=d;let E=new rt(d,A);d.willStart.length?h.call(d,E):(d.fiber=E,d.mounted.length&&E.root.mounted.push(E),E.render())}return A.childrenMap[u]=d,d}}function qi(e,t,n,r,i,s){let o=n.getTemplate(e);return le(e,o.call(t,r,i,s+e))}var Xi={withDefault:Pi,zero:Symbol("zero"),callSlot:Li,withKey:Bi,prepareList:ji,shallowEqual:Fi,toNumber:Vi,LazyValue:Zn,safeOutput:Ki,createCatcher:ki,markRaw:Ue,OwlError:g,createRef:Wi,modelExpr:Hi,createComponent:Gi,callTemplate:qi,callHandler:Ui,toSignal:zi},Yi={text:Re,createBlock:Fn,list:Hn,multi:Ft,html:Wt,toggler:le},Ie=class{static registerTemplate(e,t){nt[e]=t}dev;rawTemplates=Object.create(nt);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={...Xi,__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(Zi(n,t))return;throw new g(`Template ${e} already defined with different content`)}this.rawTemplates[e]=t}addTemplates(e){if(e){e=e instanceof Document?e:this._parseXML(e);for(let t of e.querySelectorAll("[t-name]")){let n=t.getAttribute("t-name");this.addTemplate(n,t)}}}getTemplate(e){let t=e;if(!(t in this.templates)){let n=this.getRawTemplate?.(e)||this.rawTemplates[e];if(n===void 0){let l="",c=se();throw c instanceof Me&&(l=` (for component "${c.componentName}")`),new g(`Missing template: "${e}"${l}`)}let i=typeof n=="function"&&!(n instanceof Element)?n:this._compileTemplate(e,n),s=this.templates;this.templates[t]=function(l,c){return s[t].call(this,l,c)};let o=i(this,Yi,this.runtimeUtils);this.templates[t]=o}return this.templates[t]}_compileTemplate(e,t){throw new g("Unable to compile a template. Please use owl full build instead")}_parseXML(e){throw new g("Unable to parse XML templates. Please use owl full build instead, or pass a Document instance.")}},nt={};function ee(...e){let t=`__template__${ee.nextId++}`,n=String.raw(...e);return nt[t]=n,t}ee.nextId=1;function Zi(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 kn=!1,Qe=new Set;typeof window<"u"&&(window.__OWL_DEVTOOLS__||={apps:Qe,Fiber:rt,RootFiber:tt,toRaw:Y,proxy:Ce});var zt=class Jn extends Ie{static validateTarget=li;static apps=Qe;static version=Qr;name;scheduler=new Mi;roots=new Set;pluginManager;destroyed=!1;constructor(t={}){super(t),this.name=t.name||"",Qe.add(this),this.pluginManager=new pe(this,{config:t.config}),t.plugins?Ge(this.pluginManager,t.plugins):this.pluginManager.status=k.MOUNTED,t.test&&(this.dev=!0),this.dev&&!t.test&&!kn&&(console.info("Owl is running in 'dev' mode."),kn=!0)}createRoot(t,n={}){let r=n.props||{},i,s,o=new Promise((p,b)=>{i=p,s=b}),l,c=null;try{l=new Me(t,r,this,null,null)}catch(p){c=p,s(p)}let h=null,a=null,u=()=>{if(a)return a;if(c)return Promise.reject(c);h=new qn(l,null);let p=ae.get(l);if(p||(p=[],ae.set(l,p)),p.unshift((d,A)=>{let E=A();s(E)}),a=new Promise(d=>{h.onPrepared=()=>d()}),l.mounted.push(()=>{i(l.component),p.shift()}),this.scheduler.addFiber(h),this.pluginManager.status<k.MOUNTED&&l.willStart.unshift(()=>this.pluginManager.ready),l.willStart.length)l.initiateRender(h);else{l.fiber=h,l.mounted.length&&h.root.mounted.push(h);try{h.render()}catch(d){s(d)}}return a},m={node:l,promise:o,prepare:u,mount:(p,b)=>(c||(Jn.validateTarget(p),u(),h.commit(p,b)),o),destroy:()=>{this.roots.delete(m),l?.destroy(),this.scheduler.processTasks()}};return this.roots.add(m),m}destroy(){for(let t of this.roots)t.destroy();this.pluginManager.destroy(),this.scheduler.processTasks(),Qe.delete(this),this.destroyed=!0}_handleError(t){throw t}};async function Ji(e,t,n={}){return new zt(n).createRoot(e,n).mount(t,n)}var Qi=(e,t,n)=>{let{data:r,modifiers:i}=_n(e);e=r;let s=!1;if(i.length){let o=!1,l=t.target===n;for(let c of i)switch(c){case"self":if(o=!0,l)continue;return s;case"prevent":(o&&l||!o)&&t.preventDefault();continue;case"stop":(o&&l||!o)&&t.stopPropagation(),s=!0;continue}}if(Object.hasOwnProperty.call(e,0)){let o=e[0];if(typeof o!="function")throw new g(`Invalid handler (expected a function, received: '${o}')`);let l=e[1]?e[1].__owl__:null;(!l||l.status===k.MOUNTED)&&o(e[1],t)}return s};function es(e){let t=G();function n(r,i){return e.call(this,i,r)}t.willUpdateProps.push(t.decorate(n,"onWillUpdateProps"))}function Qn(e){let t=G();t.mounted.push(t.decorate(e,"onMounted"))}function ts(e){let t=G();t.willPatch.unshift(t.decorate(e,"onWillPatch"))}function ns(e){let t=G();t.patched.push(t.decorate(e,"onPatched"))}function rs(e){let t=G();t.willUnmount.unshift(t.decorate(e,"onWillUnmount"))}function er(e){let t=G(),n=ae.get(t);n||(n=[],ae.set(t,n)),n.push(e.bind(t.component))}function is(e,t){let n=G(),r=oe(t),i=n.props[e];return n.app.dev&&(t!==void 0&&(!r||i!==void 0)&&W(i,t,`Invalid prop '${e}' in '${n.componentName}'`),n.willUpdateProps.push(s=>{if(s[e]!==n.props[e])throw new g(`Prop '${e}' changed in component '${n.componentName}'. Props declared with \`props.static()\` are static and should not change. If the prop is a signal, pass the same signal reference (its inner value may change).`)})),i===void 0&&r?r():i}function ss(){return Nt(Q)}var j={...St,component:ss};function os(e){let t=G(),{app:n,componentName:r}=t,i=null;if(e&&!Array.isArray(e))for(let u in e){let f=oe(e[u]);f&&((i||={})[u]=f())}i&&(t.defaultProps=Object.assign(t.defaultProps||{},i));function s(u,f){return u[f]===void 0&&i&&f in i?i[f]:u[f]}let o=Object.create(null),l=Object.create(null);function c(u){o[u]=O(s(t.props,u)),Reflect.defineProperty(l,u,{enumerable:!0,configurable:!0,get:o[u]})}function h(u){for(let f of u)c(f)}function a(u){for(let f of u)o[f].set(s(t.props,f))}if(e){let u=Array.isArray(e)?e:Object.keys(e);if(h(u),t.propsUpdated.push(()=>a(u)),n.dev){if(i){let m={};for(let p in e)p in i&&(m[p]=e[p]);W(i,j.object(m),`Invalid component default props (${r})`)}let f=j.object(e);W(t.props,f,`Invalid component props (${r})`),t.willUpdateProps.push(m=>{W(m,f,`Invalid component props (${r})`)})}}else{let u=m=>{let p=[];for(let b in m)b.charCodeAt(0)!==1&&p.push(b);return p},f=u(t.props);h(f),t.propsUpdated.push(()=>{let m=u(t.props),p=new Set(m);for(let b of f)p.has(b)||(Reflect.deleteProperty(l,b),delete o[b]);for(let b of m)b in o||c(b);a(m),f=m})}return l}var it=Object.assign(os,{static:is}),ls=class extends Q{static template=ee`
|
|
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=
|
|
9
|
+
`;props=it({error:j.signal().optional(()=>O(null))});setup(){er(e=>this.props.error.set(e))}},as=pn,cs=class extends Q{static template=ee`<t t-call-slot="default"/>`},us=class extends Q{static template=ee``;props=it({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)};Ae(()=>{let s=fs(this.props.target);if(s)return r=t.createRoot(cs,{props:{slots:n}}),r.node.pluginManager=e.pluginManager,ae.set(r.node,[Dn(e)]),r.mount(s),i}),Z(i)}};function fs(e){return typeof e=="function"&&(e=e()),typeof e=="string"?document.querySelector(e):e instanceof HTMLElement?e:null}var hs=class extends Q{static template=ee`<t t-call-slot="default"/>`},ds=class extends Q{static template=ee`
|
|
10
10
|
<t t-if="!this.prepared()">
|
|
11
11
|
<t t-call-slot="fallback"/>
|
|
12
12
|
</t>
|
|
13
|
-
`;props=
|
|
13
|
+
`;props=it({slots:j.object({default:j.any(),fallback:j.any().optional()})});prepared=O(!1);mounted=O(!1);subRootMounted=!1;setup(){let e=this.__owl__,t=e.app.createRoot(hs,{props:{slots:this.props.slots}});t.node.pluginManager=e.pluginManager,ae.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),Qn(()=>this.mounted.set(!0)),Ae(()=>{if(this.subRootMounted||!this.prepared()||!this.mounted())return;this.subRootMounted=!0;let r=e.bdom.firstNode();t.mount(r.parentElement,{afterNode:r})}),Z(()=>t.destroy())}};function ps(e,t){let n=G(),r=new pe(n.app,{parent:n.pluginManager,config:t});n.pluginManager=r,Z(()=>r.destroy()),Ge(r,e),r.status<k.MOUNTED&&qe(()=>r.ready)}ve.shouldNormalizeDom=!1;ve.mainEventHandler=Qi;var ms={config:ve,mount:Je,patch:Ai,remove:Di,list:Hn,multi:Ft,text:Re,toggler:le,createBlock:Fn,html:Wt},gs={version:zt.version,date:"2026-06-11T18:30:46.327Z",hash:"eb837019",url:"https://github.com/odoo/owl"};var bs="true,false,NaN,null,undefined,debugger,console,window,in,instanceof,new,function,return,eval,void,Math,RegExp,Array,Object,Date,__globals__".split(","),tr=Object.assign(Object.create(null),{and:"&&",or:"||",gt:">",gte:">=",lt:"<",lte:"<="}),nr=Object.assign(Object.create(null),{"{":"LEFT_BRACE","}":"RIGHT_BRACE","[":"LEFT_BRACKET","]":"RIGHT_BRACKET",":":"COLON",",":"COMMA","(":"LEFT_PAREN",")":"RIGHT_PAREN"}),vs="...,.,===,==,+,!==,!=,!,||,&&,>=,>,<=,<,?,-,*,/,%,typeof ,=>,=,;,in ,new ,|,&,^,~".split(","),ys=function(e){let t=e[0],n=t;if(t!=="'"&&t!=='"'&&t!=="`")return!1;let r=1,i;for(;e[r]&&e[r]!==n;){if(i=e[r],t+=i,i==="\\"){if(r++,i=e[r],!i)throw new g("Invalid expression");t+=i}r++}if(e[r]!==n)throw new g("Invalid expression");return t+=n,n==="`"?{type:"TEMPLATE_STRING",value:t,replace(s){return t.replace(/\$\{(.*?)\}/g,(o,l)=>"${"+s(l)+"}")}}:{type:"VALUE",value:t}},ws=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},Ts=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 tr?{type:"OPERATOR",value:tr[t],size:t.length}:{type:"SYMBOL",value:t}}else return!1},Ns=function(e){let t=e[0];return t&&t in nr?{type:nr[t],value:t}:!1},Es=function(e){for(let t of vs)if(e.startsWith(t))return{type:"OPERATOR",value:t};return!1},$s=[ys,ws,Es,Ts,Ns];function Ss(e){let t=[],n=!0,r,i=e;try{for(;n;)if(i=i.trim(),i){for(let s of $s)if(n=s(i),n){t.push(n),i=i.slice(n.size||n.value.length);break}}else n=!1}catch(s){r=s}if(i.length||r)throw new g(`Tokenizer error: could not tokenize \`${e}\``);return t}var Cs=e=>e&&(e.type==="LEFT_BRACE"||e.type==="COMMA"),ks=e=>e&&(e.type==="RIGHT_BRACE"||e.type==="COMMA"),As=new Map([["in "," in "]]);function ur(e,t){let n=[];t?.size&&n.push({vars:t,depth:-1/0});let r=Ss(e),i=0,s=[],o=-1;function l(a){return n.some(u=>u.vars.has(a))}for(;i<r.length;){let a=r[i],u=r[i-1],f=r[i+1],m=s[s.length-1];switch(a.type){case"LEFT_BRACE":case"LEFT_BRACKET":case"LEFT_PAREN":s.push(a.type);break;case"RIGHT_BRACE":case"RIGHT_BRACKET":case"RIGHT_PAREN":for(s.pop();n.length>0&&s.length<n[n.length-1].depth;)n.pop();break}let p=a.type==="SYMBOL"&&!bs.includes(a.value);if(p&&u&&(m==="LEFT_BRACE"&&Cs(u)&&ks(f)&&(r.splice(i+1,0,{type:"COLON",value:":"},{...a}),f=r[i+1]),(u.type==="OPERATOR"&&u.value==="."||(u.type==="LEFT_BRACE"||u.type==="COMMA")&&f&&f.type==="COLON")&&(p=!1)),a.type==="TEMPLATE_STRING"){let b=new Set;for(let d of n)for(let A of d.vars)b.add(A);a.value=a.replace(d=>_(d,b))}if(f&&f.type==="OPERATOR"&&f.value==="=>"){let b=new Set;if(s.length===0&&(o=i+1),a.type==="RIGHT_PAREN"){let d=i-1;for(;d>0&&r[d].type!=="LEFT_PAREN";)r[d].type==="SYMBOL"&&r[d].originalValue&&(b.add(r[d].originalValue),r[d].value=`_${r[d].originalValue}`,r[d].isLocal=!0),d--}else b.add(a.value);n.push({vars:b,depth:s.length})}p&&(a.varName=a.value,l(a.value)?(a.value=`_${a.value}`,a.isLocal=!0):(a.originalValue=a.value,a.value=`ctx['${a.value}']`)),i++}let c=null;if(o!==-1){c=[];let a=new Set;for(let u=o+1;u<r.length;u++){let f=r[u];f.varName&&!f.isLocal&&f.varName!=="this"&&!a.has(f.varName)&&(a.add(f.varName),c.push(f.varName))}}return{expr:r.map(a=>As.get(a.value)||a.value).join(""),freeVariables:c}}function _(e,t){return ur(e,t).expr}var lt=/\{\{.*?\}\}|\#\{.*?\}/g;function Ds(e,t){let n=e.match(lt);return n&&n[0].length===e.length?`(${t(e.slice(2,n[0][0]==="{"?-2:-1))})`:"`"+e.replace(lt,i=>"${"+t(i.slice(2,i[0]==="{"?-2:-1))+"}")+"`"}function Ht(e){return Ds(e,_)}function qt(e){let n=new DOMParser().parseFromString(e,"text/xml");if(n.getElementsByTagName("parsererror").length){let r="Invalid XML in template.",i=n.getElementsByTagName("parsererror")[0].textContent;if(i){r+=`
|
|
14
14
|
The parser has produced the following error message:
|
|
15
15
|
`+i;let s=/\d+/g,o=s.exec(i);if(o){let l=Number(o[0]),c=e.split(`
|
|
16
16
|
`)[l-1],h=s.exec(i);if(c&&h){let a=Number(h[0])-1;c[a]&&(r+=`
|
|
17
17
|
The error might be located at xml line ${l} column ${a}
|
|
18
18
|
${c}
|
|
19
|
-
${"-".repeat(a-1)}^`)}}}throw new g(r)}return n}var N={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},ne={First:1,Last:2,Index:4,Value:8},rr=new WeakMap;function Os(e,t){let n={inPreTag:!1,customDirectives:t};if(typeof e=="string"){let i=Xt(`<t>${e}</t>`).firstChild;return ir(i,n)}let r=rr.get(e);return r||(r=ir(e.cloneNode(!0),n),rr.set(e,r)),r}function ir(e,t){return eo(e),B(e,t)||{type:N.Text,value:""}}function B(e,t){return e instanceof Element?Ps(e,t)||Ls(e,t)||Fs(e,t)||zs(e,t)||Ys(e,t)||Zs(e,t)||Ws(e,t)||Us(e,t)||Ks(e,t)||Vs(e,t)||Xs(e,t)||qs(e,t)||js(e,t)||Hs(e,t)||Rs(e,t):Is(e,t)}function Rs(e,t){return e.tagName!=="t"?null:ct(e,t)}var Ms=/[\r\n]/;function Is(e,t){if(e.nodeType===Node.TEXT_NODE){let n=e.textContent||"";return!t.inPreTag&&Ms.test(n)&&!n.trim()?null:{type:N.Text,value:n}}return null}function Ps(e,t){if(!t.customDirectives)return null;let n=e.getAttributeNames();for(let r of n){if(r==="t-custom"||r==="t-custom-")throw new g("Missing custom directive name with t-custom directive");if(r.startsWith("t-custom-")){let i=r.split(".")[0].slice(9),s=t.customDirectives[i];if(!s)throw new g(`Custom directive "${i}" is not defined`);let o=e.getAttribute(r),l=r.split(".").slice(1);e.removeAttribute(r);try{s(e,o,l)}catch(c){throw new g(`Custom directive "${i}" throw the following error: ${c}`)}return B(e,t)}}return null}function Ls(e,t){if(e.hasAttribute("t-debug")){e.removeAttribute("t-debug");let n=B(e,t),r={type:N.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:N.TLog,expr:n,content:r};return r?.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}return null}var Bs=new Set(["svg","g","path"]);function js(e,t){let{tagName:n}=e,r=e.getAttribute("t-tag");if(e.removeAttribute("t-tag"),n==="t"&&!r)return null;if(n.startsWith("block-"))throw new g(`Invalid tag name: '${n}'`);t=Object.assign({},t),n==="pre"&&(t.inPreTag=!0);let i=!t.nameSpace&&Bs.has(n)?"http://www.w3.org/2000/svg":null,s=e.getAttribute("t-ref");e.removeAttribute("t-ref");let o=e.getAttributeNames(),l=null,c=null,h=null,a=null;for(let f of o){let m=e.getAttribute(f);if(f==="t-on"||f==="t-on-")throw new g("Missing event name with t-on directive");if(f.startsWith("t-on-"))h=h||{},h[f.slice(5)]=m;else if(f.startsWith("t-model")){if(!["input","select","textarea"].includes(n))throw new g("The t-model directive only works with <input>, <textarea> and <select>");let p=e.getAttribute("type"),b=n==="input",d=n==="select",A=b&&p==="checkbox",E=b&&p==="radio",T=f.includes(".trim"),C=T||f.includes(".lazy"),y=f.includes(".number"),w=f.includes(".proxy");a={expr:m,targetAttr:A?"checked":"value",specialInitTargetAttr:E?"checked":null,eventType:E?"click":d||C?"change":"input",hasDynamicChildren:!1,shouldTrim:T,shouldNumberize:y,isProxy:w},d&&(t=Object.assign({},t),t.tModelInfo=a)}else{if(f.startsWith("block-"))throw new g(`Invalid attribute: '${f}'`);if(f==="xmlns")i=m;else if(f.startsWith("t-translation-context-")){let p=f.slice(22);c=c||{},c[p]=m}else if(f!=="t-name"){if(f.startsWith("t-")&&!f.startsWith("t-att"))throw new g(`Unknown QWeb directive: '${f}'`);let p=t.tModelInfo;p&&["t-att-value","t-attf-value"].includes(f)&&(p.hasDynamicChildren=!0),l=l||{},l[f]=m}}}i&&(t.nameSpace=i);let u=Yt(e,t);return{type:N.DomNode,tag:n,dynamicTag:r,attrs:l,attrsTranslationCtx:c,on:h,ref:s,content:u,model:a,ns:i}}function Vs(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:N.TOut,expr:n,body:null},i=e.getAttribute("t-ref");e.removeAttribute("t-ref");let s=B(e,t);return s&&s.type===N.DomNode?(r.body=s.content.length?s.content:null,{...s,ref:i,content:[r]}):r}function Fs(e,t){if(!e.hasAttribute("t-foreach"))return null;let n=e.outerHTML,r=e.getAttribute("t-foreach");e.removeAttribute("t-foreach");let i=e.getAttribute("t-as")||"";e.removeAttribute("t-as");let s=e.getAttribute("t-key");if(!s)throw new g(`"Directive t-foreach should always be used with a t-key!" (expression: t-foreach="${r}" t-as="${i}")`);e.removeAttribute("t-key");let o=B(e,t);if(!o)return null;let l=!n.includes("t-call"),c=0;return l&&!n.includes(`${i}_first`)&&(c|=ne.First),l&&!n.includes(`${i}_last`)&&(c|=ne.Last),l&&!n.includes(`${i}_index`)&&(c|=ne.Index),l&&!n.includes(`${i}_value`)&&(c|=ne.Value),{type:N.TForEach,collection:r,elem:i,body:o,key:s,noFlags:c}}function Ks(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:N.TKey,expr:n,content:r};return r.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}function Ws(e,t){if(!e.hasAttribute("t-call"))return null;if(e.tagName!=="t")throw new g(`Directive 't-call' can only be used on <t> nodes (used on a <${e.tagName}>)`);let n=e.getAttribute("t-call"),r=e.getAttribute("t-call-context");e.removeAttribute("t-call"),e.removeAttribute("t-call-context");let i=null,s=null;for(let l of e.getAttributeNames()){let c=e.getAttribute(l);if(l.startsWith("t-translation-context-")){let h=l.slice(22);s=s||{},s[h]=c}else i=i||{},i[l]=c}let o=ct(e,t);return{type:N.TCall,name:n,attrs:i,attrsTranslationCtx:s,body:o,context:r}}function Us(e,t){if(!e.hasAttribute("t-call-block"))return null;let n=e.getAttribute("t-call-block");return{type:N.TCallBlock,name:n}}function zs(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:N.Text,value:""},i=e.nextElementSibling,s=[];for(;i&&i.hasAttribute("t-elif");){let l=i.getAttribute("t-elif");i.removeAttribute("t-elif");let c=B(i,t),h=i.nextElementSibling;i.remove(),i=h,c&&s.push({condition:l,content:c})}let o=null;return i&&i.hasAttribute("t-else")&&(i.removeAttribute("t-else"),o=B(i,t),i.remove()),{type:N.TIf,condition:n,content:r,tElif:s.length?s:null,tElse:o}}function Hs(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=Yt(e,t)),{type:N.TSet,name:n,value:r,defaultValue:i,body:s,hasNoRepresentation:!0}}var Gs=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 qs(e,t){let n=e.tagName,r=n[0],i=e.hasAttribute("t-component");if(i&&n!=="t")throw new g(`Directive 't-component' can only be used on <t> nodes (used on a <${n}>)`);if(!(r===r.toUpperCase()||i))return null;i&&(n=e.getAttribute("t-component"),e.removeAttribute("t-component"));let s=e.getAttribute("t-props");e.removeAttribute("t-props");let o=e.getAttribute("t-slot-scope");e.removeAttribute("t-slot-scope");let l=null,c=null,h=null;for(let u of e.getAttributeNames()){let f=e.getAttribute(u);if(u.startsWith("t-translation-context-")){let m=u.slice(22);h=h||{},h[m]=f}else if(u.startsWith("t-"))if(u.startsWith("t-on-"))l=l||{},l[u.slice(5)]=f;else{let m=Gs.get(u.split("-").slice(0,2).join("-"));throw new g(m||`unsupported directive on Component: ${u}`)}else c=c||{},c[u]=f}let a=null;if(e.hasChildNodes()){let u=e.cloneNode(!0),f=Array.from(u.querySelectorAll("[t-set-slot]"));for(let p of f){if(p.tagName!=="t")throw new g(`Directive 't-set-slot' can only be used on <t> nodes (used on a <${p.tagName}>)`);let b=p.getAttribute("t-set-slot"),d=p.parentElement,A=!1;for(;d&&d!==u;){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),T=null,C=null,y=null,w=null;for(let v of p.getAttributeNames()){let $=p.getAttribute(v);if(v==="t-slot-scope"){w=$;continue}else if(v.startsWith("t-translation-context-")){let D=v.slice(22);y=y||{},y[D]=$}else v.startsWith("t-on-")?(T=T||{},T[v.slice(5)]=$):(C=C||{},C[v]=$)}a=a||{},a[b]={content:E,on:T,attrs:C,attrsTranslationCtx:y,scope:w}}let m=ct(u,t);a=a||{},m&&!a.default&&(a.default={content:m,on:null,attrs:null,attrsTranslationCtx:null,scope:o})}return{type:N.TComponent,name:n,isDynamic:i,dynamicProps:s,props:c,propsTranslationCtx:h,slots:a,on:l}}function Xs(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:N.TCallSlot,name:n,attrs:r,attrsTranslationCtx:i,on:s,defaultContent:ct(e,t)}}function sr(e){let t={type:N.TTranslation,content:e};return e?.hasNoRepresentation&&(t.hasNoRepresentation=!0),t}function Ys(e,t){if(e.getAttribute("t-translation")!=="off")return null;e.removeAttribute("t-translation");let n=B(e,t);if(n?.type===N.Multi){let r=n.content.map(sr);return Zt(r)}return sr(n)}function or(e,t){let n={type:N.TTranslationContext,content:e,translationCtx:t};return e?.hasNoRepresentation&&(n.hasNoRepresentation=!0),n}function Zs(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===N.Multi){let i=r.content.map(s=>or(s,n));return Zt(i)}return or(r,n)}function Yt(e,t){let n=[];for(let r of e.childNodes){let i=B(r,t);i&&(i.type===N.Multi?n.push(...i.content):n.push(i))}return n}function Zt(e){let t={type:N.Multi,content:e};return e.every(n=>n.hasNoRepresentation)&&(t.hasNoRepresentation=!0),t}function ct(e,t){let n=Yt(e,t);switch(n.length){case 0:return null;case 1:return n[0];default:return Zt(n)}}function Js(e){let t=e.querySelectorAll("[t-elif], [t-else]");for(let n=0,r=t.length;n<r;n++){let i=t[n],s=i.previousElementSibling,o=c=>s.getAttribute(c),l=c=>+!!i.getAttribute(c);if(s&&(o("t-if")||o("t-elif"))){if(o("t-foreach"))throw new g("t-if cannot stay at the same level as t-foreach when using t-elif or t-else");if(["t-if","t-elif","t-else"].map(l).reduce(function(h,a){return h+a})>1)throw new g("Only one conditional branching directive is allowed per node");let c;for(;(c=i.previousSibling)!==s;){if(c.nodeValue.trim().length&&c.nodeType!==8)throw new g("text is not allowed between branching directives");c.remove()}}else throw new g("t-elif and t-else directives must be preceded by a t-if or t-elif directive")}}function Qs(e){let t=[...e.querySelectorAll("[t-out]")].filter(n=>n.tagName[0]===n.tagName[0].toUpperCase()||n.hasAttribute("t-component"));for(let n of t){if(n.childNodes.length)throw new g("Cannot have t-out on a component that already has content");let r=n.getAttribute("t-out");n.removeAttribute("t-out");let i=n.ownerDocument.createElement("t");r!=null&&i.setAttribute("t-out",r),n.appendChild(i)}}function eo(e){Js(e),Qs(e)}var lr=Symbol("zero"),to=/\s+/g,te;typeof document<"u"&&(te=document.implementation.createDocument(null,null,null));var no=new Set(["stop","capture","prevent","self","synthetic","passive"]),lt={};function I(e=""){return lt[e]=(lt[e]||0)+1,e+lt[e]}function ro(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 ot(e){return`\`${e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/,"\\${")}\``}var qt=class fr{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=fr.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=te.createElement("t");return t.appendChild(this.dom),t.innerHTML}};function ce(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 ar=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
|
-
`)}currentKey(e){let t=this.loopLevel?`key${this.loopLevel}`:"key";return e.tKeyExpr&&(t=`${e.tKeyExpr} + ${t}`),t}},cr=["alt","aria-label","aria-placeholder","aria-roledescription","aria-valuetext","label","placeholder","title"],
|
|
19
|
+
${"-".repeat(a-1)}^`)}}}throw new g(r)}return n}var N={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},ne={First:1,Last:2,Index:4,Value:8},rr=new WeakMap;function _s(e,t){let n={inPreTag:!1,customDirectives:t};if(typeof e=="string"){let i=qt(`<t>${e}</t>`).firstChild;return ir(i,n)}let r=rr.get(e);return r||(r=ir(e.cloneNode(!0),n),rr.set(e,r)),r}function ir(e,t){return Js(e),B(e,t)||{type:N.Text,value:""}}function B(e,t){return e instanceof Element?Ms(e,t)||Is(e,t)||js(e,t)||Ws(e,t)||qs(e,t)||Xs(e,t)||Fs(e,t)||Ks(e,t)||Vs(e,t)||Bs(e,t)||Gs(e,t)||Hs(e,t)||Ls(e,t)||Us(e,t)||xs(e,t):Rs(e,t)}function xs(e,t){return e.tagName!=="t"?null:at(e,t)}var Os=/[\r\n]/;function Rs(e,t){if(e.nodeType===Node.TEXT_NODE){let n=e.textContent||"";return!t.inPreTag&&Os.test(n)&&!n.trim()?null:{type:N.Text,value:n}}return null}function Ms(e,t){if(!t.customDirectives)return null;let n=e.getAttributeNames();for(let r of n){if(r==="t-custom"||r==="t-custom-")throw new g("Missing custom directive name with t-custom directive");if(r.startsWith("t-custom-")){let i=r.split(".")[0].slice(9),s=t.customDirectives[i];if(!s)throw new g(`Custom directive "${i}" is not defined`);let o=e.getAttribute(r),l=r.split(".").slice(1);e.removeAttribute(r);try{s(e,o,l)}catch(c){throw new g(`Custom directive "${i}" throw the following error: ${c}`)}return B(e,t)}}return null}function Is(e,t){if(e.hasAttribute("t-debug")){e.removeAttribute("t-debug");let n=B(e,t),r={type:N.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:N.TLog,expr:n,content:r};return r?.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}return null}var Ps=new Set(["svg","g","path"]);function Ls(e,t){let{tagName:n}=e,r=e.getAttribute("t-tag");if(e.removeAttribute("t-tag"),n==="t"&&!r)return null;if(n.startsWith("block-"))throw new g(`Invalid tag name: '${n}'`);t=Object.assign({},t),n==="pre"&&(t.inPreTag=!0);let i=!t.nameSpace&&Ps.has(n)?"http://www.w3.org/2000/svg":null,s=e.getAttribute("t-ref");e.removeAttribute("t-ref");let o=e.getAttributeNames(),l=null,c=null,h=null,a=null;for(let f of o){let m=e.getAttribute(f);if(f==="t-on"||f==="t-on-")throw new g("Missing event name with t-on directive");if(f.startsWith("t-on-"))h=h||{},h[f.slice(5)]=m;else if(f.startsWith("t-model")){if(!["input","select","textarea"].includes(n))throw new g("The t-model directive only works with <input>, <textarea> and <select>");let p=e.getAttribute("type"),b=n==="input",d=n==="select",A=b&&p==="checkbox",E=b&&p==="radio",T=f.includes(".trim"),C=T||f.includes(".lazy"),y=f.includes(".number"),w=f.includes(".proxy");a={expr:m,targetAttr:A?"checked":"value",specialInitTargetAttr:E?"checked":null,eventType:E?"click":d||C?"change":"input",hasDynamicChildren:!1,shouldTrim:T,shouldNumberize:y,isProxy:w},d&&(t=Object.assign({},t),t.tModelInfo=a)}else{if(f.startsWith("block-"))throw new g(`Invalid attribute: '${f}'`);if(f==="xmlns")i=m;else if(f.startsWith("t-translation-context-")){let p=f.slice(22);c=c||{},c[p]=m}else if(f!=="t-name"){if(f.startsWith("t-")&&!f.startsWith("t-att"))throw new g(`Unknown QWeb directive: '${f}'`);let p=t.tModelInfo;p&&["t-att-value","t-attf-value"].includes(f)&&(p.hasDynamicChildren=!0),l=l||{},l[f]=m}}}i&&(t.nameSpace=i);let u=Xt(e,t);return{type:N.DomNode,tag:n,dynamicTag:r,attrs:l,attrsTranslationCtx:c,on:h,ref:s,content:u,model:a,ns:i}}function Bs(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:N.TOut,expr:n,body:null},i=e.getAttribute("t-ref");e.removeAttribute("t-ref");let s=B(e,t);return s&&s.type===N.DomNode?(r.body=s.content.length?s.content:null,{...s,ref:i,content:[r]}):r}function js(e,t){if(!e.hasAttribute("t-foreach"))return null;let n=e.outerHTML,r=e.getAttribute("t-foreach");e.removeAttribute("t-foreach");let i=e.getAttribute("t-as")||"";e.removeAttribute("t-as");let s=e.getAttribute("t-key");if(!s)throw new g(`"Directive t-foreach should always be used with a t-key!" (expression: t-foreach="${r}" t-as="${i}")`);e.removeAttribute("t-key");let o=B(e,t);if(!o)return null;let l=!n.includes("t-call"),c=0;return l&&!n.includes(`${i}_first`)&&(c|=ne.First),l&&!n.includes(`${i}_last`)&&(c|=ne.Last),l&&!n.includes(`${i}_index`)&&(c|=ne.Index),l&&!n.includes(`${i}_value`)&&(c|=ne.Value),{type:N.TForEach,collection:r,elem:i,body:o,key:s,noFlags:c}}function Vs(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:N.TKey,expr:n,content:r};return r.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}function Fs(e,t){if(!e.hasAttribute("t-call"))return null;if(e.tagName!=="t")throw new g(`Directive 't-call' can only be used on <t> nodes (used on a <${e.tagName}>)`);let n=e.getAttribute("t-call"),r=e.getAttribute("t-call-context");e.removeAttribute("t-call"),e.removeAttribute("t-call-context");let i=null,s=null;for(let l of e.getAttributeNames()){let c=e.getAttribute(l);if(l.startsWith("t-translation-context-")){let h=l.slice(22);s=s||{},s[h]=c}else i=i||{},i[l]=c}let o=at(e,t);return{type:N.TCall,name:n,attrs:i,attrsTranslationCtx:s,body:o,context:r}}function Ks(e,t){if(!e.hasAttribute("t-call-block"))return null;let n=e.getAttribute("t-call-block");return{type:N.TCallBlock,name:n}}function Ws(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:N.Text,value:""},i=e.nextElementSibling,s=[];for(;i&&i.hasAttribute("t-elif");){let l=i.getAttribute("t-elif");i.removeAttribute("t-elif");let c=B(i,t),h=i.nextElementSibling;i.remove(),i=h,c&&s.push({condition:l,content:c})}let o=null;return i&&i.hasAttribute("t-else")&&(i.removeAttribute("t-else"),o=B(i,t),i.remove()),{type:N.TIf,condition:n,content:r,tElif:s.length?s:null,tElse:o}}function Us(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=Xt(e,t)),{type:N.TSet,name:n,value:r,defaultValue:i,body:s,hasNoRepresentation:!0}}var zs=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 Hs(e,t){let n=e.tagName,r=n[0],i=e.hasAttribute("t-component");if(i&&n!=="t")throw new g(`Directive 't-component' can only be used on <t> nodes (used on a <${n}>)`);if(!(r===r.toUpperCase()||i))return null;i&&(n=e.getAttribute("t-component"),e.removeAttribute("t-component"));let s=e.getAttribute("t-props");e.removeAttribute("t-props");let o=e.getAttribute("t-slot-scope");e.removeAttribute("t-slot-scope");let l=null,c=null,h=null;for(let u of e.getAttributeNames()){let f=e.getAttribute(u);if(u.startsWith("t-translation-context-")){let m=u.slice(22);h=h||{},h[m]=f}else if(u.startsWith("t-"))if(u.startsWith("t-on-"))l=l||{},l[u.slice(5)]=f;else{let m=zs.get(u.split("-").slice(0,2).join("-"));throw new g(m||`unsupported directive on Component: ${u}`)}else c=c||{},c[u]=f}let a=null;if(e.hasChildNodes()){let u=e.cloneNode(!0),f=Array.from(u.querySelectorAll("[t-set-slot]"));for(let p of f){if(p.tagName!=="t")throw new g(`Directive 't-set-slot' can only be used on <t> nodes (used on a <${p.tagName}>)`);let b=p.getAttribute("t-set-slot"),d=p.parentElement,A=!1;for(;d&&d!==u;){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),T=null,C=null,y=null,w=null;for(let v of p.getAttributeNames()){let $=p.getAttribute(v);if(v==="t-slot-scope"){w=$;continue}else if(v.startsWith("t-translation-context-")){let D=v.slice(22);y=y||{},y[D]=$}else v.startsWith("t-on-")?(T=T||{},T[v.slice(5)]=$):(C=C||{},C[v]=$)}a=a||{},a[b]={content:E,on:T,attrs:C,attrsTranslationCtx:y,scope:w}}let m=at(u,t);a=a||{},m&&!a.default&&(a.default={content:m,on:null,attrs:null,attrsTranslationCtx:null,scope:o})}return{type:N.TComponent,name:n,isDynamic:i,dynamicProps:s,props:c,propsTranslationCtx:h,slots:a,on:l}}function Gs(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:N.TCallSlot,name:n,attrs:r,attrsTranslationCtx:i,on:s,defaultContent:at(e,t)}}function sr(e){let t={type:N.TTranslation,content:e};return e?.hasNoRepresentation&&(t.hasNoRepresentation=!0),t}function qs(e,t){if(e.getAttribute("t-translation")!=="off")return null;e.removeAttribute("t-translation");let n=B(e,t);if(n?.type===N.Multi){let r=n.content.map(sr);return Yt(r)}return sr(n)}function or(e,t){let n={type:N.TTranslationContext,content:e,translationCtx:t};return e?.hasNoRepresentation&&(n.hasNoRepresentation=!0),n}function Xs(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===N.Multi){let i=r.content.map(s=>or(s,n));return Yt(i)}return or(r,n)}function Xt(e,t){let n=[];for(let r of e.childNodes){let i=B(r,t);i&&(i.type===N.Multi?n.push(...i.content):n.push(i))}return n}function Yt(e){let t={type:N.Multi,content:e};return e.every(n=>n.hasNoRepresentation)&&(t.hasNoRepresentation=!0),t}function at(e,t){let n=Xt(e,t);switch(n.length){case 0:return null;case 1:return n[0];default:return Yt(n)}}function Ys(e){let t=e.querySelectorAll("[t-elif], [t-else]");for(let n=0,r=t.length;n<r;n++){let i=t[n],s=i.previousElementSibling,o=c=>s.getAttribute(c),l=c=>+!!i.getAttribute(c);if(s&&(o("t-if")||o("t-elif"))){if(o("t-foreach"))throw new g("t-if cannot stay at the same level as t-foreach when using t-elif or t-else");if(["t-if","t-elif","t-else"].map(l).reduce(function(h,a){return h+a})>1)throw new g("Only one conditional branching directive is allowed per node");let c;for(;(c=i.previousSibling)!==s;){if(c.nodeValue.trim().length&&c.nodeType!==8)throw new g("text is not allowed between branching directives");c.remove()}}else throw new g("t-elif and t-else directives must be preceded by a t-if or t-elif directive")}}function Zs(e){let t=[...e.querySelectorAll("[t-out]")].filter(n=>n.tagName[0]===n.tagName[0].toUpperCase()||n.hasAttribute("t-component"));for(let n of t){if(n.childNodes.length)throw new g("Cannot have t-out on a component that already has content");let r=n.getAttribute("t-out");n.removeAttribute("t-out");let i=n.ownerDocument.createElement("t");r!=null&&i.setAttribute("t-out",r),n.appendChild(i)}}function Js(e){Ys(e),Zs(e)}var lr=Symbol("zero"),Qs=/\s+/g,te;typeof document<"u"&&(te=document.implementation.createDocument(null,null,null));var eo=new Set(["stop","capture","prevent","self","synthetic","passive"]),ot={};function I(e=""){return ot[e]=(ot[e]||0)+1,e+ot[e]}function to(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 st(e){return`\`${e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/,"\\${")}\``}var Gt=class fr{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=fr.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=te.createElement("t");return t.appendChild(this.dom),t.innerHTML}};function ce(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 ar=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
|
+
`)}currentKey(e){let t=this.loopLevel?`key${this.loopLevel}`:"key";return e.tKeyExpr&&(t=`${e.tKeyExpr} + ${t}`),t}},cr=["alt","aria-label","aria-placeholder","aria-roledescription","aria-valuetext","label","placeholder","title"],no=/^(\s*)([\s\S]+?)(\s*)$/,ro=class{blocks=[];nextBlockId=1;isDebug=!1;targets=[];target=new ar("template");templateName;dev;translateFn;translatableAttributes=cr;ast;staticDefs=[];slotNames=new Set;helpers=new Set;constructor(e,t){if(this.translateFn=t.translateFn||(n=>n),t.translatableAttributes){let n=new Set(cr);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===N.TDebug,Gt.nextBlockId=1,ot={},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=st(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 ar(i,r);return this.targets.push(o),this.target=o,this.compileAST(t,ce(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=te.createElement(n);e.insert(r)}createBlock(e,t,n){let r=this.target.hasRoot,i=new qt(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=io.exec(e);return n[1]+this.translateFn(n[2],t)+n[3]}compileAST(e,t){switch(e.type){case N.Text:return this.compileText(e,t);case N.DomNode:return this.compileTDomNode(e,t);case N.TOut:return this.compileTOut(e,t);case N.TIf:return this.compileTIf(e,t);case N.TForEach:return this.compileTForeach(e,t);case N.TKey:return this.compileTKey(e,t);case N.Multi:return this.compileMulti(e,t);case N.TCall:return this.compileTCall(e,t);case N.TCallBlock:return this.compileTCallBlock(e,t);case N.TSet:return this.compileTSet(e,t);case N.TComponent:return this.compileComponent(e,t);case N.TDebug:return this.compileDebug(e,t);case N.TLog:return this.compileLog(e,t);case N.TCallSlot:return this.compileTCallSlot(e,t);case N.TTranslation:return this.compileTTranslation(e,t);case N.TTranslationContext:return this.compileTTranslationContext(e,t)}}compileDebug(e,t){return this.addLine("debugger;"),e.content?this.compileAST(e.content,t):null}compileLog(e,t){return this.addLine(`console.log(${_(e.expr)});`),e.content?this.compileAST(e.content,t):null}compileText(e,t){let{block:n,forceNewBlock:r}=t,i=e.value;if(i&&t.translate!==!1&&(i=this.translate(i,t.translationCtx)),t.inPreTag||(i=i.replace(to," ")),!n||r)n=this.createBlock(n,"text",t),this.insertBlock(`text(${ot(i)})`,n,{...t,forceNewBlock:r&&!n});else{let s=e.type===N.Text?te.createTextNode:te.createComment;n.insert(s.call(te,i))}return n.varName}generateHandlerCode(e,t){let n=e.split(".").slice(1).map(h=>{if(!no.has(h))throw new g(`Unknown event modifier: '${h}'`);return`"${h}"`}),r="";n.length&&(r=`${n.join(",")}, `);let i=_(t);if(!i.trim())return`[${r}, ctx]`;let s,o=i.match(/^(\([^)]*\))\s*=>/),l=!o&&i.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=>/);if(o){let h=o[1].slice(1,-1).trim(),a=i.slice(o[0].length);s=h?`(ctx,${h})=>${a}`:`(ctx)=>${a}`}else if(l){let h=i.slice(l[0].length);s=`(ctx,${l[1]})=>${h}`}else this.helpers.add("callHandler"),s=`(ctx, ev) => callHandler(${i}, ctx, ev)`;let c=I("hdlr_fn");return this.staticDefs.push({id:c,expr:s}),`[${r}${c}, ctx]`}compileTDomNode(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r||e.dynamicTag!==null||e.ns,s=this.target.code.length;if(i&&((e.dynamicTag||t.tKeyExpr||e.ns)&&t.block&&this.insertAnchor(t.block),n=this.createBlock(n,"block",t),this.blocks.push(n),e.dynamicTag)){let a=I("tag");this.define(a,_(e.dynamicTag)),n.dynamicTagName=a}let o={};for(let a in e.attrs){let u,f;if(a.startsWith("t-attf")){u=Gt(e.attrs[a]);let m=n.insertData(u,"attr");f=a.slice(7),o["block-attribute-"+m]=f}else if(a.startsWith("t-att"))if(f=a==="t-att"?null:a.slice(6),u=_(e.attrs[a]),f&&ro(e.tag,f)){f==="readonly"&&(f="readOnly"),f==="value"?u=`new String((${u}) === 0 ? 0 : ((${u}) || ""))`:u=`new Boolean(${u})`;let m=n.insertData(u,"prop");o[`block-property-${m}`]=f}else{let m=n.insertData(u,"attr");a==="t-att"?o["block-attributes"]=String(m):o[`block-attribute-${m}`]=f}else if(this.translatableAttributes.includes(a)){let m=e.attrsTranslationCtx?.[a]||t.translationCtx;o[a]=this.translateFn(e.attrs[a],m)}else u=`"${e.attrs[a]}"`,f=a,o[a]=e.attrs[a];if(f==="value"&&t.tModelSelectedExpr){let m=n.insertData(`${t.tModelSelectedExpr} === ${u}`,"attr");o[`block-attribute-${m}`]="selected"}}let l;if(e.model){let{hasDynamicChildren:a,expr:u,eventType:f,shouldNumberize:m,shouldTrim:p,targetAttr:b,specialInitTargetAttr:d,isProxy:A}=e.model,E,T;if(A){let v=_(u);E=v,T=$=>`${v} = ${$}`}else{let v=I("expr"),$=_(u);this.helpers.add("modelExpr"),this.define(v,`modelExpr(${$})`),E=`${v}()`,T=D=>`${v}.set(${D})`}let C;if(d){let v=b in o&&`'${o[b]}'`;if(!v&&e.attrs){let $=e.attrs[`t-att-${b}`];$&&(v=_($))}C=n.insertData(`${E} === ${v}`,"prop"),o[`block-property-${C}`]=d}else a?(l=`${I("bValue")}`,this.define(l,E)):(C=n.insertData(E,"prop"),o[`block-property-${C}`]=b);this.helpers.add("toNumber");let y=`ev.target.${b}`;y=p?`${y}.trim()`:y,y=m?`toNumber(${y})`:y;let w=`[(ctx, ev) => { ${T(y)}; }, ctx]`;C=n.insertData(w,"hdlr"),o[`block-handler-${C}`]=f}for(let a in e.on){let u=this.generateHandlerCode(a,e.on[a]),f=n.insertData(u,"hdlr");o[`block-handler-${f}`]=a}if(e.ref){let a=_(e.ref);this.helpers.add("createRef");let u=`createRef(${a})`,f=n.insertData(u,"ref");o["block-ref"]=String(f)}let c=e.ns||t.nameSpace,h=c?te.createElementNS(c,e.tag):te.createElement(e.tag);for(let[a,u]of Object.entries(o))a==="class"&&u===""||h.setAttribute(a,u);if(n.insert(h),e.content.length){let a=n.currentDom;n.currentDom=h;let u=e.content;for(let f=0;f<u.length;f++){let m=e.content[f],p=ce(t,{block:n,index:n.childNumber,forceNewBlock:!1,tKeyExpr:t.tKeyExpr,nameSpace:c,tModelSelectedExpr:l,inPreTag:t.inPreTag||e.tag==="pre"});this.compileAST(m,p)}n.currentDom=a}if(i&&(this.insertBlock(`${n.blockName}(ddd)`,n,t),n.children.length&&n.hasDynamicChildren)){let a=this.target.code,u=n.children.slice(),f=u.shift();for(let m=s;m<a.length&&!(a[m].trimStart().startsWith(`const ${f.varName} `)&&(a[m]=a[m].replace(`const ${f.varName}`,f.varName),f=u.shift(),!f));m++);this.addLine(`let ${n.children.map(m=>m.varName).join(", ")};`,s)}return n.varName}compileZero(){this.helpers.add("zero");let e=this.slotNames.has(lr);this.slotNames.add(lr);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=qt.nextBlockId;let s=ce(t);this.compileAST({type:N.Multi,content:e.body},s),this.helpers.add("safeOutput"),r=`safeOutput(${_(e.expr)}, b${i})`}else this.helpers.add("safeOutput"),r=`safeOutput(${_(e.expr)})`;return this.insertBlock(r,n,t),n.varName}compileTIfBranch(e,t,n){this.target.indentLevel++;let r=t.children.length;this.compileAST(e,ce(n,{block:t,index:n.index})),t.children.length>r&&this.insertAnchor(t,r),this.target.indentLevel--}compileTIf(e,t,n){let{block:r,forceNewBlock:i}=t,s=this.target.code.length,o=!r||r.type!=="multi"&&i;if(r&&(r.hasDynamicChildren=!0),(!r||r.type!=="multi"&&i)&&(r=this.createBlock(r,"multi",t)),this.addLine(`if (${_(e.condition)}) {`),this.compileTIfBranch(e.content,r,t),e.tElif)for(let l of e.tElif)this.addLine(`} else if (${_(l.condition)}) {`),this.compileTIfBranch(l.content,r,t);if(e.tElse&&(this.addLine("} else {"),this.compileTIfBranch(e.tElse,r,t)),this.addLine("}"),o){if(r.children.length){let c=this.target.code,h=r.children.slice(),a=h.shift();for(let u=s;u<c.length&&!(c[u].trimStart().startsWith(`const ${a.varName} `)&&(c[u]=c[u].replace(`const ${a.varName}`,a.varName),a=h.shift(),!a));u++);this.addLine(`let ${r.children.map(u=>u.varName).join(", ")};`,s)}let l=r.children.map(c=>c.varName).join(", ");this.insertBlock(`multi([${l}])`,r,t)}return r.varName}compileTForeach(e,t){let{block:n}=t;n&&this.insertAnchor(n),n=this.createBlock(n,"list",t),this.target.loopLevel++;let r=`i${this.target.loopLevel}`,i=I("ctx");this.addLine(`const ${i} = ctx;`),this.target.loopCtxVars.push(i);let s=`v_block${n.id}`,o=`k_block${n.id}`,l=`l_block${n.id}`,c=`c_block${n.id}`;this.helpers.add("prepareList"),this.define(`[${o}, ${s}, ${l}, ${c}]`,`prepareList(${_(e.collection)});`),this.dev&&this.define(`keys${n.id}`,"new Set()"),this.addLine(`for (let ${r} = 0; ${r} < ${l}; ${r}++) {`),this.target.indentLevel++,this.addLine(`let ctx = Object.create(${i});`),this.addLine(`ctx[\`${e.elem}\`] = ${o}[${r}];`),e.noFlags&ne.First||this.addLine(`ctx[\`${e.elem}_first\`] = ${r} === 0;`),e.noFlags&ne.Last||this.addLine(`ctx[\`${e.elem}_last\`] = ${r} === ${o}.length - 1;`),e.noFlags&ne.Index||this.addLine(`ctx[\`${e.elem}_index\`] = ${r};`),e.noFlags&ne.Value||this.addLine(`ctx[\`${e.elem}_value\`] = ${s}[${r}];`),this.define(`key${this.target.loopLevel}`,e.key?_(e.key):r),this.dev&&(this.helpers.add("OwlError"),this.addLine(`if (keys${n.id}.has(String(key${this.target.loopLevel}))) { throw new OwlError(\`Got duplicate key in t-foreach: \${key${this.target.loopLevel}}\`)}`),this.addLine(`keys${n.id}.add(String(key${this.target.loopLevel}));`));let h=ce(t,{block:n,index:r});return this.compileAST(e.body,h),this.target.indentLevel--,this.target.loopLevel--,this.target.loopCtxVars.pop(),this.addLine("}"),this.insertBlock("l",n,t),n.varName}compileTKey(e,t){let n=I("tKey_");return this.define(n,_(e.expr)),t=ce(t,{tKeyExpr:n,block:t.block,index:t.index}),this.compileAST(e.content,t)}compileMulti(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r,s=this.target.code.length;if(i){let l=e.content.filter(h=>!h.hasNoRepresentation).length,c=null;if(l<=1){let h=!this.target.hasRoot&&e.content[e.content.length-1].hasNoRepresentation;h&&(this.target.deferReturn=!0);for(let a of e.content){let u=this.compileAST(a,t);c=c||u}return h&&(this.target.deferReturn=!1,this.addLine(`return ${c};`)),c}n=this.createBlock(n,"multi",t)}let o=0;for(let l=0,c=e.content.length;l<c;l++){let h=e.content[l],a=!h.hasNoRepresentation,u=ce(t,{block:n,index:o,forceNewBlock:a});this.compileAST(h,u),a&&o++}if(i){if(n.hasDynamicChildren&&n.children.length){let c=this.target.code,h=n.children.slice(),a=h.shift();for(let u=s;u<c.length&&!(c[u].trimStart().startsWith(`const ${a.varName} `)&&(c[u]=c[u].replace(`const ${a.varName}`,a.varName),a=h.shift(),!a));u++);this.addLine(`let ${n.children.map(u=>u.varName).join(", ")};`,s)}let l=n.children.map(c=>c.varName).join(", ");this.insertBlock(`multi([${l}])`,n,t)}return n.varName}compileTCall(e,t){let{block:n,forceNewBlock:r}=t,i=e.attrs?this.formatPropObject(e.attrs,e.attrsTranslationCtx,t.translationCtx):[],o=at.test(e.name)?Gt(e.name):"`"+e.name+"`";if(n&&!r&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),e.body){let a=this.compileInNewTarget("callBody",e.body,t),u=I("lazyBlock");this.define(u,`${a}.bind(this, ctx)`),this.helpers.add("zero"),i.push(`[zero]: ${u}`)}let l,c=`{${i.join(", ")}}`;if(e.context){let a=I("ctx");this.addLine(`const ${a} = ${_(e.context)};`),i.length?l=`Object.assign({this: ${a}}, ${c})`:l=`{this: ${a}}`}else i.length===0?l="ctx":l=`Object.assign(Object.create(ctx), ${c})`;let h=this.generateComponentKey();return this.helpers.add("callTemplate"),this.insertBlock(`callTemplate(${o}, this, app, ${l}, node, ${h})`,n,{...t,forceNewBlock:!n}),n.varName}compileTCallBlock(e,t){let{block:n,forceNewBlock:r}=t;return n&&(r||this.insertAnchor(n)),n=this.createBlock(n,"multi",t),this.insertBlock(_(e.name),n,{...t,forceNewBlock:!n}),n.varName}compileTSet(e,t){let n=e.value?_(e.value||""):"null",r=this.target.loopLevel===0,i=this.target.tSetVars.get(e.name),s=i!==void 0&&this.target.loopLevel>i;if(e.body){this.helpers.add("LazyValue");let o={type:N.Multi,content:e.body},l=this.compileInNewTarget("value",o,t),c=this.target.currentKey(t),h=`new LazyValue(${l}, ctx, this, node, ${c})`;if(h=e.value?h?`withDefault(${n}, ${h})`:n:h,this.helpers.add("withDefault"),s){let a=this.target.loopCtxVars[i];this.addLine(`${a}[\`${e.name}\`] = ${h};`)}else r?(this.target.needsScopeProtection=!0,this.addLine(`ctx[\`${e.name}\`] = ${h};`),this.target.tSetVars.set(e.name,0)):(this.addLine(`ctx[\`${e.name}\`] = ${h};`),this.target.tSetVars.set(e.name,this.target.loopLevel))}else{let o;if(e.defaultValue){let l=ot(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=ot(this.translateFn(t,i))}else t=_(t);if(e.includes(".")){let[i,s]=e.split(".");switch(e=i,s){case"bind":t=`(${t}).bind(this)`;break;case"alike":case"translate":break;default:throw new g(`Invalid prop suffix: ${s}`)}}return e=/^[a-z_]+$/i.test(e)?e:`'${e}'`,`${e}: ${t||void 0}`}formatPropObject(e,t,n){return Object.entries(e).map(([r,i])=>this.formatProp(r,i,t,n))}getPropString(e,t){let n=`{${e.join(",")}}`;return t&&(n=`Object.assign({}, ${_(t)}${e.length?", "+n:""})`),n}compileComponent(e,t){let{block:n}=t,r="slots"in(e.props||{}),i=[],s=[];for(let m in e.props||{}){let[p,b]=m.split(".");if(b==="signal"){let T=_(e.props[m]),C=/^[a-z_]+$/i.test(p)?p:`'${p}'`;this.helpers.add("toSignal");let y=this.generateSignalCacheKey();i.push(`${C}: toSignal(node, ${y}, ${T})`);continue}if(b){i.push(this.formatProp(m,e.props[m],e.propsTranslationCtx,t.translationCtx));continue}let{expr:d,freeVariables:A}=ur(e.props[m]),E=/^[a-z_]+$/i.test(p)?p:`'${p}'`;if(i.push(`${E}: ${d||void 0}`),A)for(let T of A){let C=`${p}.${T}`;s.push(`"${C}"`),i.push(`"${C}": ctx['${T}']`)}else s.push(`"${p}"`)}let o="";if(e.slots){let m=[];for(let p in e.slots){let b=e.slots[p],d=[];if(b.content){let T=this.compileInNewTarget("slot",b.content,t,b.on);d.push(`__render: ${T}.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(", ")}}`;m.push(`'${p}': ${E}`)}o=`{${m.join(", ")}}`}o&&!(e.dynamicProps||r)&&(this.helpers.add("markRaw"),i.push(`slots: markRaw(${o})`));let l=this.getPropString(i,e.dynamicProps),c;(o&&(e.dynamicProps||r)||this.dev)&&(c=I("props"),this.define(c,l),l=c),o&&(e.dynamicProps||r)&&(this.helpers.add("markRaw"),this.addLine(`${c}.slots = markRaw(Object.assign(${o}, ${c}.slots))`));let h;e.isDynamic?(h=I("Comp"),this.define(h,_(e.name))):h=`\`${e.name}\``,n&&(t.forceNewBlock===!1||t.tKeyExpr)&&this.insertAnchor(n);let a=this.generateComponentKey();t.tKeyExpr&&(a=`${t.tKeyExpr} + ${a}`);let u=I("comp");this.helpers.add("createComponent"),this.staticDefs.push({id:u,expr:`createComponent(app, ${e.isDynamic?null:h}, ${!e.isDynamic}, ${!!e.slots}, ${!!e.dynamicProps}, [${s}])`}),e.isDynamic&&(a=`(${h}).name + ${a}`);let f=`${u}(${l}, ${a}, node, this, ${e.isDynamic?h:null})`;return e.isDynamic&&(f=`toggler(${h}, ${f})`),e.on&&(f=this.wrapWithEventCatcher(f,e.on)),n=this.createBlock(n,"multi",t),this.insertBlock(f,n,t),n.varName}wrapWithEventCatcher(e,t){this.helpers.add("createCatcher");let n=I("catcher"),r={},i=[];for(let s in t){let o=I("hdlr"),l=i.push(o)-1;r[s]=l;let c=this.generateHandlerCode(s,t[s]);this.define(o,c)}return this.staticDefs.push({id:n,expr:`createCatcher(${JSON.stringify(r)})`}),`${n}(${e}, [${i.join(",")}])`}compileTCallSlot(e,t){this.helpers.add("callSlot");let{block:n}=t,r,i,s=!1,o=!1;e.name.match(at)?(s=!0,o=!0,i=Gt(e.name)):(i="'"+e.name+"'",o=o||this.slotNames.has(e.name),this.slotNames.add(e.name));let l={...e.attrs},c=l["t-props"];delete l["t-props"];let h=this.target.loopLevel?`key${this.target.loopLevel}`:"key";o&&(h=this.generateComponentKey(h));let a=e.attrs?this.formatPropObject(l,e.attrsTranslationCtx,t.translationCtx):[],u=this.getPropString(a,c);if(e.defaultContent){let f=this.compileInNewTarget("defaultContent",e.defaultContent,t);r=`callSlot(ctx, node, ${h}, ${i}, ${s}, ${u}, ${f}.bind(this))`}else if(s){let f=I("slot");this.define(f,i),r=`toggler(${f}, callSlot(ctx, node, ${h}, ${f}, ${s}, ${u}))`}else r=`callSlot(ctx, node, ${h}, ${i}, ${s}, ${u})`;return e.on&&(r=this.wrapWithEventCatcher(r,e.on)),n&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),this.insertBlock(r,n,{...t,forceNewBlock:!1}),n.varName}compileTTranslation(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translate:!1})):null}compileTTranslationContext(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translationCtx:e.translationCtx})):null}};function hr(e,t={hasGlobalValues:!1}){let n=Os(e,t.customDirectives),i=new so(n,t).generateCode();try{return new Function("app, bdom, helpers",i)}catch(s){let{name:o}=t,l=o?`template "${o}"`:"anonymous template",c=new g(`Failed to compile ${l}: ${s.message}
|
|
22
|
+
${n}`;console.log(r)}return n}compileInNewTarget(e,t,n,r){let i=I(e),s=this.target,o=new ar(i,r);return this.targets.push(o),this.target=o,this.compileAST(t,ce(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=te.createElement(n);e.insert(r)}createBlock(e,t,n){let r=this.target.hasRoot,i=new Gt(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=no.exec(e);return n[1]+this.translateFn(n[2],t)+n[3]}compileAST(e,t){switch(e.type){case N.Text:return this.compileText(e,t);case N.DomNode:return this.compileTDomNode(e,t);case N.TOut:return this.compileTOut(e,t);case N.TIf:return this.compileTIf(e,t);case N.TForEach:return this.compileTForeach(e,t);case N.TKey:return this.compileTKey(e,t);case N.Multi:return this.compileMulti(e,t);case N.TCall:return this.compileTCall(e,t);case N.TCallBlock:return this.compileTCallBlock(e,t);case N.TSet:return this.compileTSet(e,t);case N.TComponent:return this.compileComponent(e,t);case N.TDebug:return this.compileDebug(e,t);case N.TLog:return this.compileLog(e,t);case N.TCallSlot:return this.compileTCallSlot(e,t);case N.TTranslation:return this.compileTTranslation(e,t);case N.TTranslationContext:return this.compileTTranslationContext(e,t)}}compileDebug(e,t){return this.addLine("debugger;"),e.content?this.compileAST(e.content,t):null}compileLog(e,t){return this.addLine(`console.log(${_(e.expr)});`),e.content?this.compileAST(e.content,t):null}compileText(e,t){let{block:n,forceNewBlock:r}=t,i=e.value;if(i&&t.translate!==!1&&(i=this.translate(i,t.translationCtx)),t.inPreTag||(i=i.replace(Qs," ")),!n||r)n=this.createBlock(n,"text",t),this.insertBlock(`text(${st(i)})`,n,{...t,forceNewBlock:r&&!n});else{let s=e.type===N.Text?te.createTextNode:te.createComment;n.insert(s.call(te,i))}return n.varName}generateHandlerCode(e,t){let n=e.split(".").slice(1).map(h=>{if(!eo.has(h))throw new g(`Unknown event modifier: '${h}'`);return`"${h}"`}),r="";n.length&&(r=`${n.join(",")}, `);let i=_(t);if(!i.trim())return`[${r}, ctx]`;let s,o=i.match(/^(\([^)]*\))\s*=>/),l=!o&&i.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=>/);if(o){let h=o[1].slice(1,-1).trim(),a=i.slice(o[0].length);s=h?`(ctx,${h})=>${a}`:`(ctx)=>${a}`}else if(l){let h=i.slice(l[0].length);s=`(ctx,${l[1]})=>${h}`}else this.helpers.add("callHandler"),s=`(ctx, ev) => callHandler(${i}, ctx, ev)`;let c=I("hdlr_fn");return this.staticDefs.push({id:c,expr:s}),`[${r}${c}, ctx]`}compileTDomNode(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r||e.dynamicTag!==null||e.ns,s=this.target.code.length;if(i&&((e.dynamicTag||t.tKeyExpr||e.ns)&&t.block&&this.insertAnchor(t.block),n=this.createBlock(n,"block",t),this.blocks.push(n),e.dynamicTag)){let a=I("tag");this.define(a,_(e.dynamicTag)),n.dynamicTagName=a}let o={};for(let a in e.attrs){let u,f;if(a.startsWith("t-attf")){u=Ht(e.attrs[a]);let m=n.insertData(u,"attr");f=a.slice(7),o["block-attribute-"+m]=f}else if(a.startsWith("t-att"))if(f=a==="t-att"?null:a.slice(6),u=_(e.attrs[a]),f&&to(e.tag,f)){f==="readonly"&&(f="readOnly"),f==="value"?u=`new String((${u}) === 0 ? 0 : ((${u}) || ""))`:u=`new Boolean(${u})`;let m=n.insertData(u,"prop");o[`block-property-${m}`]=f}else{let m=n.insertData(u,"attr");a==="t-att"?o["block-attributes"]=String(m):o[`block-attribute-${m}`]=f}else if(this.translatableAttributes.includes(a)){let m=e.attrsTranslationCtx?.[a]||t.translationCtx;o[a]=this.translateFn(e.attrs[a],m)}else u=`"${e.attrs[a]}"`,f=a,o[a]=e.attrs[a];if(f==="value"&&t.tModelSelectedExpr){let m=n.insertData(`${t.tModelSelectedExpr} === ${u}`,"attr");o[`block-attribute-${m}`]="selected"}}let l;if(e.model){let{hasDynamicChildren:a,expr:u,eventType:f,shouldNumberize:m,shouldTrim:p,targetAttr:b,specialInitTargetAttr:d,isProxy:A}=e.model,E,T;if(A){let v=_(u);E=v,T=$=>`${v} = ${$}`}else{let v=I("expr"),$=_(u);this.helpers.add("modelExpr"),this.define(v,`modelExpr(${$})`),E=`${v}()`,T=D=>`${v}.set(${D})`}let C;if(d){let v=b in o&&`'${o[b]}'`;if(!v&&e.attrs){let $=e.attrs[`t-att-${b}`];$&&(v=_($))}C=n.insertData(`${E} === ${v}`,"prop"),o[`block-property-${C}`]=d}else a?(l=`${I("bValue")}`,this.define(l,E)):(C=n.insertData(E,"prop"),o[`block-property-${C}`]=b);this.helpers.add("toNumber");let y=`ev.target.${b}`;y=p?`${y}.trim()`:y,y=m?`toNumber(${y})`:y;let w=`[(ctx, ev) => { ${T(y)}; }, ctx]`;C=n.insertData(w,"hdlr"),o[`block-handler-${C}`]=f}for(let a in e.on){let u=this.generateHandlerCode(a,e.on[a]),f=n.insertData(u,"hdlr");o[`block-handler-${f}`]=a}if(e.ref){let a=_(e.ref);this.helpers.add("createRef");let u=`createRef(${a})`,f=n.insertData(u,"ref");o["block-ref"]=String(f)}let c=e.ns||t.nameSpace,h=c?te.createElementNS(c,e.tag):te.createElement(e.tag);for(let[a,u]of Object.entries(o))a==="class"&&u===""||h.setAttribute(a,u);if(n.insert(h),e.content.length){let a=n.currentDom;n.currentDom=h;let u=e.content;for(let f=0;f<u.length;f++){let m=e.content[f],p=ce(t,{block:n,index:n.childNumber,forceNewBlock:!1,tKeyExpr:t.tKeyExpr,nameSpace:c,tModelSelectedExpr:l,inPreTag:t.inPreTag||e.tag==="pre"});this.compileAST(m,p)}n.currentDom=a}if(i&&(this.insertBlock(`${n.blockName}(ddd)`,n,t),n.children.length&&n.hasDynamicChildren)){let a=this.target.code,u=n.children.slice(),f=u.shift();for(let m=s;m<a.length&&!(a[m].trimStart().startsWith(`const ${f.varName} `)&&(a[m]=a[m].replace(`const ${f.varName}`,f.varName),f=u.shift(),!f));m++);this.addLine(`let ${n.children.map(m=>m.varName).join(", ")};`,s)}return n.varName}compileZero(){this.helpers.add("zero");let e=this.slotNames.has(lr);this.slotNames.add(lr);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=Gt.nextBlockId;let s=ce(t);this.compileAST({type:N.Multi,content:e.body},s),this.helpers.add("safeOutput"),r=`safeOutput(${_(e.expr)}, b${i})`}else this.helpers.add("safeOutput"),r=`safeOutput(${_(e.expr)})`;return this.insertBlock(r,n,t),n.varName}compileTIfBranch(e,t,n){this.target.indentLevel++;let r=t.children.length;this.compileAST(e,ce(n,{block:t,index:n.index})),t.children.length>r&&this.insertAnchor(t,r),this.target.indentLevel--}compileTIf(e,t,n){let{block:r,forceNewBlock:i}=t,s=this.target.code.length,o=!r||r.type!=="multi"&&i;if(r&&(r.hasDynamicChildren=!0),(!r||r.type!=="multi"&&i)&&(r=this.createBlock(r,"multi",t)),this.addLine(`if (${_(e.condition)}) {`),this.compileTIfBranch(e.content,r,t),e.tElif)for(let l of e.tElif)this.addLine(`} else if (${_(l.condition)}) {`),this.compileTIfBranch(l.content,r,t);if(e.tElse&&(this.addLine("} else {"),this.compileTIfBranch(e.tElse,r,t)),this.addLine("}"),o){if(r.children.length){let c=this.target.code,h=r.children.slice(),a=h.shift();for(let u=s;u<c.length&&!(c[u].trimStart().startsWith(`const ${a.varName} `)&&(c[u]=c[u].replace(`const ${a.varName}`,a.varName),a=h.shift(),!a));u++);this.addLine(`let ${r.children.map(u=>u.varName).join(", ")};`,s)}let l=r.children.map(c=>c.varName).join(", ");this.insertBlock(`multi([${l}])`,r,t)}return r.varName}compileTForeach(e,t){let{block:n}=t;n&&this.insertAnchor(n),n=this.createBlock(n,"list",t),this.target.loopLevel++;let r=`i${this.target.loopLevel}`,i=I("ctx");this.addLine(`const ${i} = ctx;`),this.target.loopCtxVars.push(i);let s=`v_block${n.id}`,o=`k_block${n.id}`,l=`l_block${n.id}`,c=`c_block${n.id}`;this.helpers.add("prepareList"),this.define(`[${o}, ${s}, ${l}, ${c}]`,`prepareList(${_(e.collection)});`),this.dev&&this.define(`keys${n.id}`,"new Set()"),this.addLine(`for (let ${r} = 0; ${r} < ${l}; ${r}++) {`),this.target.indentLevel++,this.addLine(`let ctx = Object.create(${i});`),this.addLine(`ctx[\`${e.elem}\`] = ${o}[${r}];`),e.noFlags&ne.First||this.addLine(`ctx[\`${e.elem}_first\`] = ${r} === 0;`),e.noFlags&ne.Last||this.addLine(`ctx[\`${e.elem}_last\`] = ${r} === ${o}.length - 1;`),e.noFlags&ne.Index||this.addLine(`ctx[\`${e.elem}_index\`] = ${r};`),e.noFlags&ne.Value||this.addLine(`ctx[\`${e.elem}_value\`] = ${s}[${r}];`),this.define(`key${this.target.loopLevel}`,e.key?_(e.key):r),this.dev&&(this.helpers.add("OwlError"),this.addLine(`if (keys${n.id}.has(String(key${this.target.loopLevel}))) { throw new OwlError(\`Got duplicate key in t-foreach: \${key${this.target.loopLevel}}\`)}`),this.addLine(`keys${n.id}.add(String(key${this.target.loopLevel}));`));let h=ce(t,{block:n,index:r});return this.compileAST(e.body,h),this.target.indentLevel--,this.target.loopLevel--,this.target.loopCtxVars.pop(),this.addLine("}"),this.insertBlock("l",n,t),n.varName}compileTKey(e,t){let n=I("tKey_");return this.define(n,_(e.expr)),t=ce(t,{tKeyExpr:n,block:t.block,index:t.index}),this.compileAST(e.content,t)}compileMulti(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r,s=this.target.code.length;if(i){let l=e.content.filter(h=>!h.hasNoRepresentation).length,c=null;if(l<=1){let h=!this.target.hasRoot&&e.content[e.content.length-1].hasNoRepresentation;h&&(this.target.deferReturn=!0);for(let a of e.content){let u=this.compileAST(a,t);c=c||u}return h&&(this.target.deferReturn=!1,this.addLine(`return ${c};`)),c}n=this.createBlock(n,"multi",t)}let o=0;for(let l=0,c=e.content.length;l<c;l++){let h=e.content[l],a=!h.hasNoRepresentation,u=ce(t,{block:n,index:o,forceNewBlock:a});this.compileAST(h,u),a&&o++}if(i){if(n.hasDynamicChildren&&n.children.length){let c=this.target.code,h=n.children.slice(),a=h.shift();for(let u=s;u<c.length&&!(c[u].trimStart().startsWith(`const ${a.varName} `)&&(c[u]=c[u].replace(`const ${a.varName}`,a.varName),a=h.shift(),!a));u++);this.addLine(`let ${n.children.map(u=>u.varName).join(", ")};`,s)}let l=n.children.map(c=>c.varName).join(", ");this.insertBlock(`multi([${l}])`,n,t)}return n.varName}compileTCall(e,t){let{block:n,forceNewBlock:r}=t,i=e.attrs?this.formatPropObject(e.attrs,e.attrsTranslationCtx,t.translationCtx):[],o=lt.test(e.name)?Ht(e.name):"`"+e.name+"`";if(n&&!r&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),e.body){let a=this.compileInNewTarget("callBody",e.body,t),u=I("lazyBlock");this.define(u,`${a}.bind(this, ctx)`),this.helpers.add("zero"),i.push(`[zero]: ${u}`)}let l,c=`{${i.join(", ")}}`;if(e.context){let a=I("ctx");this.addLine(`const ${a} = ${_(e.context)};`),i.length?l=`Object.assign({this: ${a}}, ${c})`:l=`{this: ${a}}`}else i.length===0?l="ctx":l=`Object.assign(Object.create(ctx), ${c})`;let h=this.generateComponentKey();return this.helpers.add("callTemplate"),this.insertBlock(`callTemplate(${o}, this, app, ${l}, node, ${h})`,n,{...t,forceNewBlock:!n}),n.varName}compileTCallBlock(e,t){let{block:n,forceNewBlock:r}=t;return n&&(r||this.insertAnchor(n)),n=this.createBlock(n,"multi",t),this.insertBlock(_(e.name),n,{...t,forceNewBlock:!n}),n.varName}compileTSet(e,t){let n=e.value?_(e.value||""):"null",r=this.target.loopLevel===0,i=this.target.tSetVars.get(e.name),s=i!==void 0&&this.target.loopLevel>i;if(e.body){this.helpers.add("LazyValue");let o={type:N.Multi,content:e.body},l=this.compileInNewTarget("value",o,t),c=this.target.currentKey(t),h=`new LazyValue(${l}, ctx, this, node, ${c})`;if(h=e.value?h?`withDefault(${n}, ${h})`:n:h,this.helpers.add("withDefault"),s){let a=this.target.loopCtxVars[i];this.addLine(`${a}[\`${e.name}\`] = ${h};`)}else r?(this.target.needsScopeProtection=!0,this.addLine(`ctx[\`${e.name}\`] = ${h};`),this.target.tSetVars.set(e.name,0)):(this.addLine(`ctx[\`${e.name}\`] = ${h};`),this.target.tSetVars.set(e.name,this.target.loopLevel))}else{let o;if(e.defaultValue){let l=st(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=st(this.translateFn(t,i))}else t=_(t);if(e.includes(".")){let[i,s]=e.split(".");switch(e=i,s){case"bind":t=`(${t}).bind(this)`;break;case"alike":case"translate":break;default:throw new g(`Invalid prop suffix: ${s}`)}}return e=/^[a-z_]+$/i.test(e)?e:`'${e}'`,`${e}: ${t||void 0}`}formatPropObject(e,t,n){return Object.entries(e).map(([r,i])=>this.formatProp(r,i,t,n))}getPropString(e,t){let n=`{${e.join(",")}}`;return t&&(n=`Object.assign({}, ${_(t)}${e.length?", "+n:""})`),n}compileComponent(e,t){let{block:n}=t,r="slots"in(e.props||{}),i=[],s=[];for(let m in e.props||{}){let[p,b]=m.split(".");if(b==="signal"){let T=_(e.props[m]),C=/^[a-z_]+$/i.test(p)?p:`'${p}'`;this.helpers.add("toSignal");let y=this.generateSignalCacheKey();i.push(`${C}: toSignal(node, ${y}, ${T})`);continue}if(b){i.push(this.formatProp(m,e.props[m],e.propsTranslationCtx,t.translationCtx));continue}let{expr:d,freeVariables:A}=ur(e.props[m]),E=/^[a-z_]+$/i.test(p)?p:`'${p}'`;if(i.push(`${E}: ${d||void 0}`),A)for(let T of A){let C=`${p}.${T}`;s.push(`"${C}"`),i.push(`"${C}": ctx['${T}']`)}else s.push(`"${p}"`)}let o="";if(e.slots){let m=[];for(let p in e.slots){let b=e.slots[p],d=[];if(b.content){let T=this.compileInNewTarget("slot",b.content,t,b.on);d.push(`__render: ${T}.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(", ")}}`;m.push(`'${p}': ${E}`)}o=`{${m.join(", ")}}`}o&&!(e.dynamicProps||r)&&(this.helpers.add("markRaw"),i.push(`slots: markRaw(${o})`));let l=this.getPropString(i,e.dynamicProps),c;(o&&(e.dynamicProps||r)||this.dev)&&(c=I("props"),this.define(c,l),l=c),o&&(e.dynamicProps||r)&&(this.helpers.add("markRaw"),this.addLine(`${c}.slots = markRaw(Object.assign(${o}, ${c}.slots))`));let h;e.isDynamic?(h=I("Comp"),this.define(h,_(e.name))):h=`\`${e.name}\``,n&&(t.forceNewBlock===!1||t.tKeyExpr)&&this.insertAnchor(n);let a=this.generateComponentKey();t.tKeyExpr&&(a=`${t.tKeyExpr} + ${a}`);let u=I("comp");this.helpers.add("createComponent"),this.staticDefs.push({id:u,expr:`createComponent(app, ${e.isDynamic?null:h}, ${!e.isDynamic}, ${!!e.slots}, ${!!e.dynamicProps}, [${s}])`}),e.isDynamic&&(a=`(${h}).name + ${a}`);let f=`${u}(${l}, ${a}, node, this, ${e.isDynamic?h:null})`;return e.isDynamic&&(f=`toggler(${h}, ${f})`),e.on&&(f=this.wrapWithEventCatcher(f,e.on)),n=this.createBlock(n,"multi",t),this.insertBlock(f,n,t),n.varName}wrapWithEventCatcher(e,t){this.helpers.add("createCatcher");let n=I("catcher"),r={},i=[];for(let s in t){let o=I("hdlr"),l=i.push(o)-1;r[s]=l;let c=this.generateHandlerCode(s,t[s]);this.define(o,c)}return this.staticDefs.push({id:n,expr:`createCatcher(${JSON.stringify(r)})`}),`${n}(${e}, [${i.join(",")}])`}compileTCallSlot(e,t){this.helpers.add("callSlot");let{block:n}=t,r,i,s=!1,o=!1;e.name.match(lt)?(s=!0,o=!0,i=Ht(e.name)):(i="'"+e.name+"'",o=o||this.slotNames.has(e.name),this.slotNames.add(e.name));let l={...e.attrs},c=l["t-props"];delete l["t-props"];let h=this.target.loopLevel?`key${this.target.loopLevel}`:"key";o&&(h=this.generateComponentKey(h));let a=e.attrs?this.formatPropObject(l,e.attrsTranslationCtx,t.translationCtx):[],u=this.getPropString(a,c);if(e.defaultContent){let f=this.compileInNewTarget("defaultContent",e.defaultContent,t);r=`callSlot(ctx, node, ${h}, ${i}, ${s}, ${u}, ${f}.bind(this))`}else if(s){let f=I("slot");this.define(f,i),r=`toggler(${f}, callSlot(ctx, node, ${h}, ${f}, ${s}, ${u}))`}else r=`callSlot(ctx, node, ${h}, ${i}, ${s}, ${u})`;return e.on&&(r=this.wrapWithEventCatcher(r,e.on)),n&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),this.insertBlock(r,n,{...t,forceNewBlock:!1}),n.varName}compileTTranslation(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translate:!1})):null}compileTTranslationContext(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translationCtx:e.translationCtx})):null}};function hr(e,t={hasGlobalValues:!1}){let n=_s(e,t.customDirectives),i=new ro(n,t).generateCode();try{return new Function("app, bdom, helpers",i)}catch(s){let{name:o}=t,l=o?`template "${o}"`:"anonymous template",c=new g(`Failed to compile ${l}: ${s.message}
|
|
23
23
|
|
|
24
24
|
generated code:
|
|
25
25
|
function(app, bdom, helpers) {
|
|
26
26
|
${i}
|
|
27
|
-
}`);throw c.cause=s,c}}Ie.prototype._compileTemplate=function(t,n){return hr(n,{name:t,dev:this.dev,translateFn:this.translateFn,translatableAttributes:this.translatableAttributes,customDirectives:this.customDirectives,hasGlobalValues:this.hasGlobalValues})};Ie.prototype._parseXML=function(t){return
|
|
27
|
+
}`);throw c.cause=s,c}}Ie.prototype._compileTemplate=function(t,n){return hr(n,{name:t,dev:this.dev,translateFn:this.translateFn,translatableAttributes:this.translatableAttributes,customDirectives:this.customDirectives,hasGlobalValues:this.hasGlobalValues})};Ie.prototype._parseXML=function(t){return qt(t)};return yr(io);})();
|
package/dist/types/owl.d.ts
CHANGED
|
@@ -156,21 +156,19 @@ export type Optional<T> = T & {
|
|
|
156
156
|
declare const typeBrand: unique symbol;
|
|
157
157
|
export type Type<T> = T & {
|
|
158
158
|
[typeBrand]: T;
|
|
159
|
-
/**
|
|
160
|
-
* Attaches a default value to the type. A defaulted value is implicitly
|
|
161
|
-
* optional: `undefined` passes validation (the default is meant to fill
|
|
162
|
-
* it). The default can be given as a factory (`() => value`), which is
|
|
163
|
-
* called once per consumer, so mutable defaults ([], {}) are not shared. A
|
|
164
|
-
* default for a function type must use the factory form.
|
|
165
|
-
*/
|
|
166
|
-
default(value: T extends Function ? () => T : T | (() => T)): WithDefault<T>;
|
|
167
159
|
/**
|
|
168
160
|
* Marks the type as optional: `undefined` passes validation, and an object
|
|
169
|
-
* key with an optional type may be omitted.
|
|
170
|
-
* already implicitly optional, so `.optional()` and `.default()` do not
|
|
171
|
-
* need to be combined (and cannot be chained).
|
|
161
|
+
* key with an optional type may be omitted.
|
|
172
162
|
*/
|
|
173
163
|
optional(): Optional<T>;
|
|
164
|
+
/**
|
|
165
|
+
* Marks the type as optional, with a default value to fill it: the reader
|
|
166
|
+
* of the value always gets one (the default replaces an omitted value). The
|
|
167
|
+
* default can be given as a factory (`() => value`), which is called once
|
|
168
|
+
* per consumer, so mutable defaults ([], {}) are not shared. A default for
|
|
169
|
+
* a function type must use the factory form.
|
|
170
|
+
*/
|
|
171
|
+
optional(value: T extends Function ? () => T : T | (() => T)): WithDefault<T>;
|
|
174
172
|
};
|
|
175
173
|
export type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
176
174
|
export type HasDefault<T> = IsAny<T> extends true ? false : T extends {
|
|
@@ -192,9 +190,7 @@ export type StripBrands<T> = StripType<StripDefault<StripOptional<T>>>;
|
|
|
192
190
|
export type StripBrandsAll<T extends any[]> = {
|
|
193
191
|
[K in keyof T]: StripBrands<T[K]>;
|
|
194
192
|
};
|
|
195
|
-
export type
|
|
196
|
-
[K in keyof T as HasDefault<T[K]> extends true ? K : never]: StripBrands<T[K]>;
|
|
197
|
-
};
|
|
193
|
+
export type GetDefaultedKeys<T> = keyof T extends infer K ? K extends keyof T ? HasDefault<T[K]> extends true ? K : never : never : never;
|
|
198
194
|
export type GetOptionalEntries<T> = {
|
|
199
195
|
[K in keyof T as IsOptional<T[K]> extends true ? K : HasDefault<T[K]> extends true ? K : never]?: StripBrands<T[K]>;
|
|
200
196
|
};
|
|
@@ -205,6 +201,11 @@ export type PrettifyShape<T> = T extends Function ? T : {
|
|
|
205
201
|
[K in keyof T]: T[K];
|
|
206
202
|
};
|
|
207
203
|
export type ResolveOptionalEntries<T> = PrettifyShape<GetRequiredEntries<T> & GetOptionalEntries<T>>;
|
|
204
|
+
export type ResolveReaderObjectType<T> = PrettifyShape<{
|
|
205
|
+
[K in keyof T as IsOptional<T[K]> extends true ? never : K]: StripBrands<T[K]>;
|
|
206
|
+
} & {
|
|
207
|
+
[K in keyof T as IsOptional<T[K]> extends true ? K : never]?: StripBrands<T[K]>;
|
|
208
|
+
}>;
|
|
208
209
|
export type KeyedObject<K extends string[]> = {
|
|
209
210
|
[P in K[number]]: any;
|
|
210
211
|
};
|
|
@@ -212,8 +213,8 @@ export type ResolveShapedObject<T extends {}> = PrettifyShape<ResolveOptionalEnt
|
|
|
212
213
|
export type ResolveObjectType<T extends {}> = ResolveShapedObject<T extends string[] ? KeyedObject<T> : T>;
|
|
213
214
|
export type UnionToIntersection<U> = (U extends any ? (_: U) => any : never) extends (_: infer I) => void ? I : never;
|
|
214
215
|
/**
|
|
215
|
-
* Returns the default value factory attached to a type by `.
|
|
216
|
-
* any. This is how consumers (props, config, ...) resolve defaults at
|
|
216
|
+
* Returns the default value factory attached to a type by `.optional(value)`,
|
|
217
|
+
* if any. This is how consumers (props, config, ...) resolve defaults at
|
|
217
218
|
* runtime: validation only runs in dev mode, so defaults are metadata on the
|
|
218
219
|
* schema, not a validation side-effect.
|
|
219
220
|
*/
|
|
@@ -680,22 +681,31 @@ declare function staticProp<T>(key: string, type: WithDefault<T>): T;
|
|
|
680
681
|
declare function staticProp<T>(key: string, type: Optional<T>): T | undefined;
|
|
681
682
|
declare function staticProp<T>(key: string, type: T): StripBrands<T>;
|
|
682
683
|
declare const isProps: unique symbol;
|
|
683
|
-
export type WithDefaults<T, D> = T & Required<D>;
|
|
684
684
|
export type Props<T extends {}> = T & {
|
|
685
|
-
[isProps]:
|
|
685
|
+
[isProps]: never;
|
|
686
686
|
};
|
|
687
|
-
export type
|
|
687
|
+
export type PropsWithDefaults<T extends {}, DK extends PropertyKey> = T & {
|
|
688
|
+
[isProps]: DK;
|
|
689
|
+
};
|
|
690
|
+
export type GetPropsWithOptionals<T> = T extends {
|
|
691
|
+
[isProps]: infer DK extends PropertyKey;
|
|
692
|
+
} ? Omit<T, typeof isProps | (DK & keyof T)> & Partial<Pick<T, DK & keyof T>> : never;
|
|
688
693
|
export type GetProps<T> = {
|
|
689
694
|
[K in keyof T]: T[K] extends {
|
|
690
|
-
[isProps]:
|
|
695
|
+
[isProps]: PropertyKey;
|
|
691
696
|
} ? (x: GetPropsWithOptionals<T[K]>) => void : never;
|
|
692
697
|
}[keyof T] extends (x: infer I) => void ? {
|
|
693
698
|
[K in keyof I]: I[K];
|
|
694
699
|
} : never;
|
|
700
|
+
export type ResolveProps<Shape> = [
|
|
701
|
+
GetDefaultedKeys<Shape>
|
|
702
|
+
] extends [
|
|
703
|
+
never
|
|
704
|
+
] ? Props<ResolveReaderObjectType<Shape>> : PropsWithDefaults<ResolveReaderObjectType<Shape>, GetDefaultedKeys<Shape> & PropertyKey>;
|
|
695
705
|
export interface PropsFunction {
|
|
696
706
|
(): Props<Record<string, any>>;
|
|
697
707
|
<const Keys extends string[]>(keys: Keys): Props<ResolveObjectType<Keys>>;
|
|
698
|
-
<Shape extends {}>(shape: Shape):
|
|
708
|
+
<Shape extends {}>(shape: Shape): ResolveProps<Shape>;
|
|
699
709
|
static: typeof staticProp;
|
|
700
710
|
}
|
|
701
711
|
export declare const props: PropsFunction;
|
|
@@ -789,41 +799,29 @@ export declare class App extends TemplateSet {
|
|
|
789
799
|
declare function mount$1<T extends ComponentConstructor>(C: T, target: MountTarget, config?: AppConfig & RootConfig<GetProps<ComponentInstance<T>>> & MountOptions): Promise<ComponentInstance<T>>;
|
|
790
800
|
export declare class ErrorBoundary extends Component {
|
|
791
801
|
static template: string;
|
|
792
|
-
props:
|
|
793
|
-
error
|
|
794
|
-
},
|
|
795
|
-
error: WithDefault<ReactiveValue<any, any>>;
|
|
796
|
-
}>>>;
|
|
802
|
+
props: PropsWithDefaults<{
|
|
803
|
+
error: ReactiveValue<any, any>;
|
|
804
|
+
}, "error">;
|
|
797
805
|
setup(): void;
|
|
798
806
|
}
|
|
799
807
|
export declare class Portal extends Component {
|
|
800
808
|
static template: string;
|
|
801
|
-
props: Props<
|
|
809
|
+
props: Props<{
|
|
802
810
|
slots: {
|
|
803
811
|
default: any;
|
|
804
812
|
};
|
|
805
813
|
target: any;
|
|
806
|
-
}
|
|
807
|
-
slots: Type<{
|
|
808
|
-
default: any;
|
|
809
|
-
}>;
|
|
810
|
-
target: any;
|
|
811
|
-
}>>>;
|
|
814
|
+
}>;
|
|
812
815
|
setup(): void;
|
|
813
816
|
}
|
|
814
817
|
export declare class Suspense extends Component {
|
|
815
818
|
static template: string;
|
|
816
|
-
props: Props<
|
|
819
|
+
props: Props<{
|
|
817
820
|
slots: {
|
|
818
821
|
default: any;
|
|
819
822
|
fallback: any;
|
|
820
823
|
};
|
|
821
|
-
}
|
|
822
|
-
slots: Type<{
|
|
823
|
-
default: any;
|
|
824
|
-
fallback: any;
|
|
825
|
-
}>;
|
|
826
|
-
}>>>;
|
|
824
|
+
}>;
|
|
827
825
|
private prepared;
|
|
828
826
|
private mounted;
|
|
829
827
|
private subRootMounted;
|
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.36",
|
|
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.36",
|
|
47
|
+
"@odoo/owl-core": "3.0.0-alpha.36",
|
|
48
|
+
"@odoo/owl-runtime": "3.0.0-alpha.36",
|
|
49
49
|
"jsdom": "^25.0.1"
|
|
50
50
|
}
|
|
51
51
|
}
|