@odoo/owl 3.0.0-alpha.38 → 3.0.0-alpha.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/owl.cjs.js CHANGED
@@ -741,6 +741,18 @@ function asyncComputed(fetcher, options = {}) {
741
741
  const scope = getScope();
742
742
  let runId = 0;
743
743
  let runController = null;
744
+ let inFlight = false;
745
+ let pending = null;
746
+ function beginRun() {
747
+ loading.set(true);
748
+ inFlight = true;
749
+ }
750
+ function endRun() {
751
+ loading.set(false);
752
+ inFlight = false;
753
+ pending?.resolve();
754
+ pending = null;
755
+ }
744
756
  const stopEffect = effect(() => {
745
757
  refreshTick();
746
758
  const myRunId = ++runId;
@@ -753,7 +765,7 @@ function asyncComputed(fetcher, options = {}) {
753
765
  if (scope?.abortSignal) {
754
766
  abortSignals.push(scope.abortSignal);
755
767
  }
756
- loading.set(true);
768
+ beginRun();
757
769
  error.set(null);
758
770
  let promise;
759
771
  try {
@@ -761,27 +773,27 @@ function asyncComputed(fetcher, options = {}) {
761
773
  } catch (e) {
762
774
  if (myRunId !== runId) return;
763
775
  if (isAbortError(e)) {
764
- loading.set(false);
776
+ endRun();
765
777
  return;
766
778
  }
767
779
  error.set(e);
768
- loading.set(false);
780
+ endRun();
769
781
  return;
770
782
  }
771
783
  promise.then(
772
784
  (result) => {
773
785
  if (myRunId !== runId) return;
774
786
  value.set(result);
775
- loading.set(false);
787
+ endRun();
776
788
  },
777
789
  (e) => {
778
790
  if (myRunId !== runId) return;
779
791
  if (isAbortError(e)) {
780
- loading.set(false);
792
+ endRun();
781
793
  return;
782
794
  }
783
795
  error.set(e);
784
- loading.set(false);
796
+ endRun();
785
797
  }
786
798
  );
787
799
  });
@@ -789,6 +801,9 @@ function asyncComputed(fetcher, options = {}) {
789
801
  stopEffect();
790
802
  runController?.abort();
791
803
  runController = null;
804
+ inFlight = false;
805
+ pending?.resolve();
806
+ pending = null;
792
807
  }
793
808
  scope?.onDestroy(dispose);
794
809
  const read = (() => value());
@@ -796,6 +811,16 @@ function asyncComputed(fetcher, options = {}) {
796
811
  read.error = () => error();
797
812
  read.refresh = () => refreshTick.set(refreshTick() + 1);
798
813
  read.dispose = dispose;
814
+ read.currentPromise = () => {
815
+ if (!inFlight) {
816
+ return Promise.resolve();
817
+ }
818
+ if (!pending) {
819
+ let resolve;
820
+ pending = { promise: new Promise((res) => resolve = res), resolve };
821
+ }
822
+ return pending.promise;
823
+ };
799
824
  return read;
800
825
  }
801
826
  function safeReplacer(knownObjects, _key, value) {
@@ -865,6 +890,7 @@ var innerTypeSymbol = /* @__PURE__ */ Symbol("innerType");
865
890
  var shapeSymbol = /* @__PURE__ */ Symbol("shape");
866
891
  var elementTypeSymbol = /* @__PURE__ */ Symbol("elementType");
867
892
  var optionalSymbol = /* @__PURE__ */ Symbol("optional");
893
+ var intersectionSymbol = /* @__PURE__ */ Symbol("intersection");
868
894
  function getDefault(type) {
869
895
  return typeof type === "function" ? type[defaultSymbol] : void 0;
870
896
  }
@@ -907,6 +933,14 @@ function applyDefaultsRec(value, type) {
907
933
  if (typeof inner !== "function" || !value || typeof value !== "object") {
908
934
  return value;
909
935
  }
936
+ const members = inner[intersectionSymbol];
937
+ if (members) {
938
+ let result2 = value;
939
+ for (const member of members) {
940
+ result2 = applyDefaultsRec(result2, member);
941
+ }
942
+ return result2;
943
+ }
910
944
  const elementType = inner[elementTypeSymbol];
911
945
  if (elementType && Array.isArray(value)) {
912
946
  let result2 = value;
@@ -1014,11 +1048,13 @@ function instanceType(constructor) {
1014
1048
  });
1015
1049
  }
1016
1050
  function intersection(types22) {
1017
- return makeType(function validateIntersection(context) {
1051
+ const validate = makeType(function validateIntersection(context) {
1018
1052
  for (const type of types22) {
1019
1053
  context.validate(type);
1020
1054
  }
1021
1055
  });
1056
+ validate[intersectionSymbol] = types22;
1057
+ return validate;
1022
1058
  }
1023
1059
  function literalType(literal) {
1024
1060
  return makeType(function validateLiteral(context) {
@@ -1529,7 +1565,7 @@ function markup(valueOrStrings, ...placeholders) {
1529
1565
  }
1530
1566
 
1531
1567
  // ../owl-runtime/dist/owl-runtime.es.js
1532
- var version = "3.0.0-alpha.38";
1568
+ var version = "3.0.0-alpha.39";
1533
1569
  var fibersInError = /* @__PURE__ */ new WeakMap();
1534
1570
  var nodeErrorHandlers = /* @__PURE__ */ new WeakMap();
1535
1571
  function invokeErrorHandlers(node, error, finalize, markFibers) {
@@ -4662,8 +4698,8 @@ var blockDom = {
4662
4698
  };
4663
4699
  var __info__ = {
4664
4700
  version: App.version,
4665
- date: "2026-06-22T09:21:02.010Z",
4666
- hash: "ac221141",
4701
+ date: "2026-06-25T07:13:07.565Z",
4702
+ hash: "99d4bdda",
4667
4703
  url: "https://github.com/odoo/owl"
4668
4704
  };
4669
4705
 
package/dist/owl.es.js CHANGED
@@ -663,6 +663,18 @@ function asyncComputed(fetcher, options = {}) {
663
663
  const scope = getScope();
664
664
  let runId = 0;
665
665
  let runController = null;
666
+ let inFlight = false;
667
+ let pending = null;
668
+ function beginRun() {
669
+ loading.set(true);
670
+ inFlight = true;
671
+ }
672
+ function endRun() {
673
+ loading.set(false);
674
+ inFlight = false;
675
+ pending?.resolve();
676
+ pending = null;
677
+ }
666
678
  const stopEffect = effect(() => {
667
679
  refreshTick();
668
680
  const myRunId = ++runId;
@@ -675,7 +687,7 @@ function asyncComputed(fetcher, options = {}) {
675
687
  if (scope?.abortSignal) {
676
688
  abortSignals.push(scope.abortSignal);
677
689
  }
678
- loading.set(true);
690
+ beginRun();
679
691
  error.set(null);
680
692
  let promise;
681
693
  try {
@@ -683,27 +695,27 @@ function asyncComputed(fetcher, options = {}) {
683
695
  } catch (e) {
684
696
  if (myRunId !== runId) return;
685
697
  if (isAbortError(e)) {
686
- loading.set(false);
698
+ endRun();
687
699
  return;
688
700
  }
689
701
  error.set(e);
690
- loading.set(false);
702
+ endRun();
691
703
  return;
692
704
  }
693
705
  promise.then(
694
706
  (result) => {
695
707
  if (myRunId !== runId) return;
696
708
  value.set(result);
697
- loading.set(false);
709
+ endRun();
698
710
  },
699
711
  (e) => {
700
712
  if (myRunId !== runId) return;
701
713
  if (isAbortError(e)) {
702
- loading.set(false);
714
+ endRun();
703
715
  return;
704
716
  }
705
717
  error.set(e);
706
- loading.set(false);
718
+ endRun();
707
719
  }
708
720
  );
709
721
  });
@@ -711,6 +723,9 @@ function asyncComputed(fetcher, options = {}) {
711
723
  stopEffect();
712
724
  runController?.abort();
713
725
  runController = null;
726
+ inFlight = false;
727
+ pending?.resolve();
728
+ pending = null;
714
729
  }
715
730
  scope?.onDestroy(dispose);
716
731
  const read = (() => value());
@@ -718,6 +733,16 @@ function asyncComputed(fetcher, options = {}) {
718
733
  read.error = () => error();
719
734
  read.refresh = () => refreshTick.set(refreshTick() + 1);
720
735
  read.dispose = dispose;
736
+ read.currentPromise = () => {
737
+ if (!inFlight) {
738
+ return Promise.resolve();
739
+ }
740
+ if (!pending) {
741
+ let resolve;
742
+ pending = { promise: new Promise((res) => resolve = res), resolve };
743
+ }
744
+ return pending.promise;
745
+ };
721
746
  return read;
722
747
  }
723
748
  function safeReplacer(knownObjects, _key, value) {
@@ -787,6 +812,7 @@ var innerTypeSymbol = /* @__PURE__ */ Symbol("innerType");
787
812
  var shapeSymbol = /* @__PURE__ */ Symbol("shape");
788
813
  var elementTypeSymbol = /* @__PURE__ */ Symbol("elementType");
789
814
  var optionalSymbol = /* @__PURE__ */ Symbol("optional");
815
+ var intersectionSymbol = /* @__PURE__ */ Symbol("intersection");
790
816
  function getDefault(type) {
791
817
  return typeof type === "function" ? type[defaultSymbol] : void 0;
792
818
  }
@@ -829,6 +855,14 @@ function applyDefaultsRec(value, type) {
829
855
  if (typeof inner !== "function" || !value || typeof value !== "object") {
830
856
  return value;
831
857
  }
858
+ const members = inner[intersectionSymbol];
859
+ if (members) {
860
+ let result2 = value;
861
+ for (const member of members) {
862
+ result2 = applyDefaultsRec(result2, member);
863
+ }
864
+ return result2;
865
+ }
832
866
  const elementType = inner[elementTypeSymbol];
833
867
  if (elementType && Array.isArray(value)) {
834
868
  let result2 = value;
@@ -936,11 +970,13 @@ function instanceType(constructor) {
936
970
  });
937
971
  }
938
972
  function intersection(types22) {
939
- return makeType(function validateIntersection(context) {
973
+ const validate = makeType(function validateIntersection(context) {
940
974
  for (const type of types22) {
941
975
  context.validate(type);
942
976
  }
943
977
  });
978
+ validate[intersectionSymbol] = types22;
979
+ return validate;
944
980
  }
945
981
  function literalType(literal) {
946
982
  return makeType(function validateLiteral(context) {
@@ -1451,7 +1487,7 @@ function markup(valueOrStrings, ...placeholders) {
1451
1487
  }
1452
1488
 
1453
1489
  // ../owl-runtime/dist/owl-runtime.es.js
1454
- var version = "3.0.0-alpha.38";
1490
+ var version = "3.0.0-alpha.39";
1455
1491
  var fibersInError = /* @__PURE__ */ new WeakMap();
1456
1492
  var nodeErrorHandlers = /* @__PURE__ */ new WeakMap();
1457
1493
  function invokeErrorHandlers(node, error, finalize, markFibers) {
@@ -4584,8 +4620,8 @@ var blockDom = {
4584
4620
  };
4585
4621
  var __info__ = {
4586
4622
  version: App.version,
4587
- date: "2026-06-22T09:21:02.010Z",
4588
- hash: "ac221141",
4623
+ date: "2026-06-25T07:13:07.565Z",
4624
+ hash: "99d4bdda",
4589
4625
  url: "https://github.com/odoo/owl"
4590
4626
  };
4591
4627
 
package/dist/owl.iife.js CHANGED
@@ -741,6 +741,18 @@ var owl = (() => {
741
741
  const scope = getScope();
742
742
  let runId = 0;
743
743
  let runController = null;
744
+ let inFlight = false;
745
+ let pending = null;
746
+ function beginRun() {
747
+ loading.set(true);
748
+ inFlight = true;
749
+ }
750
+ function endRun() {
751
+ loading.set(false);
752
+ inFlight = false;
753
+ pending?.resolve();
754
+ pending = null;
755
+ }
744
756
  const stopEffect = effect(() => {
745
757
  refreshTick();
746
758
  const myRunId = ++runId;
@@ -753,7 +765,7 @@ var owl = (() => {
753
765
  if (scope?.abortSignal) {
754
766
  abortSignals.push(scope.abortSignal);
755
767
  }
756
- loading.set(true);
768
+ beginRun();
757
769
  error.set(null);
758
770
  let promise;
759
771
  try {
@@ -761,27 +773,27 @@ var owl = (() => {
761
773
  } catch (e) {
762
774
  if (myRunId !== runId) return;
763
775
  if (isAbortError(e)) {
764
- loading.set(false);
776
+ endRun();
765
777
  return;
766
778
  }
767
779
  error.set(e);
768
- loading.set(false);
780
+ endRun();
769
781
  return;
770
782
  }
771
783
  promise.then(
772
784
  (result) => {
773
785
  if (myRunId !== runId) return;
774
786
  value.set(result);
775
- loading.set(false);
787
+ endRun();
776
788
  },
777
789
  (e) => {
778
790
  if (myRunId !== runId) return;
779
791
  if (isAbortError(e)) {
780
- loading.set(false);
792
+ endRun();
781
793
  return;
782
794
  }
783
795
  error.set(e);
784
- loading.set(false);
796
+ endRun();
785
797
  }
786
798
  );
787
799
  });
@@ -789,6 +801,9 @@ var owl = (() => {
789
801
  stopEffect();
790
802
  runController?.abort();
791
803
  runController = null;
804
+ inFlight = false;
805
+ pending?.resolve();
806
+ pending = null;
792
807
  }
793
808
  scope?.onDestroy(dispose);
794
809
  const read = (() => value());
@@ -796,6 +811,16 @@ var owl = (() => {
796
811
  read.error = () => error();
797
812
  read.refresh = () => refreshTick.set(refreshTick() + 1);
798
813
  read.dispose = dispose;
814
+ read.currentPromise = () => {
815
+ if (!inFlight) {
816
+ return Promise.resolve();
817
+ }
818
+ if (!pending) {
819
+ let resolve;
820
+ pending = { promise: new Promise((res) => resolve = res), resolve };
821
+ }
822
+ return pending.promise;
823
+ };
799
824
  return read;
800
825
  }
801
826
  function safeReplacer(knownObjects, _key, value) {
@@ -865,6 +890,7 @@ ${issueStrings}`);
865
890
  var shapeSymbol = /* @__PURE__ */ Symbol("shape");
866
891
  var elementTypeSymbol = /* @__PURE__ */ Symbol("elementType");
867
892
  var optionalSymbol = /* @__PURE__ */ Symbol("optional");
893
+ var intersectionSymbol = /* @__PURE__ */ Symbol("intersection");
868
894
  function getDefault(type) {
869
895
  return typeof type === "function" ? type[defaultSymbol] : void 0;
870
896
  }
@@ -907,6 +933,14 @@ ${issueStrings}`);
907
933
  if (typeof inner !== "function" || !value || typeof value !== "object") {
908
934
  return value;
909
935
  }
936
+ const members = inner[intersectionSymbol];
937
+ if (members) {
938
+ let result2 = value;
939
+ for (const member of members) {
940
+ result2 = applyDefaultsRec(result2, member);
941
+ }
942
+ return result2;
943
+ }
910
944
  const elementType = inner[elementTypeSymbol];
911
945
  if (elementType && Array.isArray(value)) {
912
946
  let result2 = value;
@@ -1014,11 +1048,13 @@ ${issueStrings}`);
1014
1048
  });
1015
1049
  }
1016
1050
  function intersection(types22) {
1017
- return makeType(function validateIntersection(context) {
1051
+ const validate = makeType(function validateIntersection(context) {
1018
1052
  for (const type of types22) {
1019
1053
  context.validate(type);
1020
1054
  }
1021
1055
  });
1056
+ validate[intersectionSymbol] = types22;
1057
+ return validate;
1022
1058
  }
1023
1059
  function literalType(literal) {
1024
1060
  return makeType(function validateLiteral(context) {
@@ -1529,7 +1565,7 @@ ${issueStrings}`);
1529
1565
  }
1530
1566
 
1531
1567
  // ../owl-runtime/dist/owl-runtime.es.js
1532
- var version = "3.0.0-alpha.38";
1568
+ var version = "3.0.0-alpha.39";
1533
1569
  var fibersInError = /* @__PURE__ */ new WeakMap();
1534
1570
  var nodeErrorHandlers = /* @__PURE__ */ new WeakMap();
1535
1571
  function invokeErrorHandlers(node, error, finalize, markFibers) {
@@ -4662,8 +4698,8 @@ ${issueStrings}`);
4662
4698
  };
4663
4699
  var __info__ = {
4664
4700
  version: App.version,
4665
- date: "2026-06-22T09:21:02.010Z",
4666
- hash: "ac221141",
4701
+ date: "2026-06-25T07:13:07.565Z",
4702
+ hash: "99d4bdda",
4667
4703
  url: "https://github.com/odoo/owl"
4668
4704
  };
4669
4705
 
@@ -1,27 +1,27 @@
1
- "use strict";var owl=(()=>{var ft=Object.defineProperty;var br=Object.getOwnPropertyDescriptor;var vr=Object.getOwnPropertyNames;var yr=Object.prototype.hasOwnProperty;var wr=(e,t)=>{for(var n in t)ft(e,n,{get:t[n],enumerable:!0})},Tr=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of vr(t))!yr.call(e,i)&&i!==n&&ft(e,i,{get:()=>t[i],enumerable:!(r=br(t,i))||r.enumerable});return e};var Nr=e=>Tr(ft({},"__esModule",{value:!0}),e);var lo={};wr(lo,{App:()=>qt,Component:()=>ee,ErrorBoundary:()=>us,EventBus:()=>wn,OwlError:()=>g,Plugin:()=>Ge,Portal:()=>ds,Registry:()=>pn,Resource:()=>mn,Scope:()=>ke,Suspense:()=>gs,TemplateSet:()=>Pe,__info__:()=>ys,applyDefaults:()=>fn,assertType:()=>W,asyncComputed:()=>ln,batched:()=>vt,blockDom:()=>vs,computed:()=>se,config:()=>yn,effect:()=>Ae,getDefault:()=>le,getScope:()=>oe,globalTemplates:()=>it,htmlEscape:()=>At,markRaw:()=>ze,markup:()=>Ne,mount:()=>ts,onError:()=>rr,onMounted:()=>nr,onPatched:()=>ss,onWillDestroy:()=>Z,onWillPatch:()=>is,onWillStart:()=>Xe,onWillUnmount:()=>os,onWillUpdateProps:()=>rs,plugin:()=>vn,props:()=>ot,providePlugins:()=>bs,proxy:()=>Ce,signal:()=>x,status:()=>Ri,t:()=>j,toRaw:()=>Y,types:()=>j,untrack:()=>wt,useApp:()=>fs,useEffect:()=>De,useListener:()=>gn,useScope:()=>K,validateType:()=>Nt,whenReady:()=>fi,xml:()=>te});var g=class extends Error{cause},C={NEW:0,MOUNTED:1,CANCELLED:2,DESTROYED:3};function vt(e){let t=!1;return function(...r){t||(t=!0,Promise.resolve().then(()=>{t=!1,e(...r)}))}}var $e=(e=>(e[e.EXECUTED=0]="EXECUTED",e[e.STALE=1]="STALE",e[e.PENDING=2]="PENDING",e))($e||{}),ie=Symbol("Atom"),Be=[],V;function Fe(e,t,n=1){return{state:n,value:void 0,compute:e,sources:new Set,observers:new Set,isDerived:t}}function yt(e){V&&(V.sources.add(e),e.observers.add(V))}function Ke(e){for(let t of e.observers)t.state===0&&(t.isDerived?Sr(t):Be.push(t)),t.state=1;Er()}var Er=vt($r);function $r(){let e=Be;Be=[];for(let t=0;t<e.length;t++)We(e[t])}function z(){return V}function P(e){V=e}function We(e){let t=e.state;if(t===0)return;if(t===2){for(let r of e.sources)if("compute"in r&&(We(r),e.state===1))break;if(e.state!==1){e.state=0;return}}Se(e);let n=V;V=e;try{e.value=e.compute(),e.state=0}finally{V=n}}function Se(e){let t=e.sources;for(let n of t)n.observers.delete(e);t.clear()}function Ue(e){let t=e.sources;for(let n of t){n.observers.delete(e);let r=n;r.isDerived&&r.observers.size===0&&Ue(r)}t.clear(),e.state=1}function Sr(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):Be.push(r))}function wt(e){let t=V;V=void 0;let n;try{n=e()}finally{V=t}return n}var H=[];function K(){let e=oe();if(!e)throw new g("No active scope");return e}var ke=class{app;pluginManager;status=C.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>C.MOUNTED?(this._controller||(this._controller=new AbortController,this._controller.abort()),this._controller.signal):(this._controller??=new AbortController).signal}async until(e){if(this.status>C.MOUNTED)throw en();let t=await e;if(this.status>C.MOUNTED)throw en();return t}onDestroy(e){if(this.status>=C.DESTROYED){e();return}(this._destroyCbs??=[]).push(e)}cancel(){this.status>C.MOUNTED||(this.status=C.CANCELLED,this._controller?.abort())}finalize(e){if(this.status>=C.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)Ue(n);this.status=C.DESTROYED}decorate(e,t){return e.bind(void 0,this)}};function oe(){let e=H.length;return e?H[e-1]:null}function je(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function en(){let e=new Error("The operation was aborted");return e.name="AbortError",e}var U=Symbol("Key changes"),kr=Object.prototype.toString,dt=Object.prototype.hasOwnProperty;function Tt(e){if(typeof e!="object"||e===null)return!1;let t=Y(e);return Array.isArray(t)||t instanceof Set||t instanceof Map||t instanceof WeakMap?!0:kr.call(t)==="[object Object]"}function he(e,t){return!t&&Tt(e)?Ce(e):e}var sn=new WeakSet;function ze(e){return sn.add(e),e}function Y(e){return Ve.has(e)?Ve.get(e):e}var pt=new WeakMap;function Cr(e,t){let n=pt.get(e);n||(n=new Map,pt.set(e,n));let r=n.get(t);return r||(r={value:void 0,observers:new Set},n.set(t,r)),r}function F(e,t,n){yt(n??Cr(e,t))}function X(e,t,n){if(!n){let r=pt.get(e);if(!r||!r.has(t))return;n=r.get(t)}Ke(n)}var Ve=new WeakMap,tn=new WeakMap;function de(e,t){if(!Tt(e))throw new g("Cannot make the given value reactive");if(sn.has(e)||Ve.has(e))return e;let n=tn.get(e);if(n)return n;let r;e instanceof Map?r=ht(e,"Map",t):e instanceof Set?r=ht(e,"Set",t):e instanceof WeakMap?r=ht(e,"WeakMap",t):r=on(t);let i=new Proxy(e,r);return tn.set(e,i),Ve.set(i,e),i}function Ce(e){return de(e,null)}function on(e){return{get(t,n,r){F(t,n,e);let i=Reflect.get(t,n,r);if(e||typeof i!="object"||i===null||!Tt(i))return i;let s=Object.getOwnPropertyDescriptor(t,n);return s&&!s.writable&&!s.configurable?i:de(i,null)},set(t,n,r,i){let s=dt.call(t,n),o=Reflect.get(t,n,i),l=Reflect.set(t,n,Y(r),i);return!s&&dt.call(t,n)&&X(t,U,e),(o!==Reflect.get(t,n,i)||n==="length"&&Array.isArray(t))&&X(t,n,e),l},deleteProperty(t,n){let r=Reflect.deleteProperty(t,n);return X(t,U,e),X(t,n,e),r},ownKeys(t){return F(t,U,e),Reflect.ownKeys(t)},has(t,n){return F(t,U,e),Reflect.has(t,n)}}}function Te(e,t,n){return r=>(r=Y(r),F(t,r,n),he(t[e](r),n))}function q(e,t,n){return function*(){F(t,U,n);let r=t.keys();for(let i of t[e]()){let s=r.next().value;F(t,s,n),yield he(i,n)}}}function nn(e,t){return function(r,i){F(e,U,t),e.forEach(function(s,o,l){F(e,o,t),r.call(i,he(s,t),he(o,t),he(l,t))},i)}}function fe(e,t,n,r){return(i,s)=>{i=Y(i);let o=n.has(i),l=n[t](i),c=n[e](i,s),h=n.has(i);return o!==h&&X(n,U,r),l!==n[t](i)&&X(n,i,r),c}}function rn(e,t){return()=>{let n=[...e.keys()];e.clear(),X(e,U,t);for(let r of n)X(e,r,t)}}var Ar={Set:(e,t)=>({has:Te("has",e,t),add:fe("add","has",e,t),delete:fe("delete","has",e,t),keys:q("keys",e,t),values:q("values",e,t),entries:q("entries",e,t),[Symbol.iterator]:q(Symbol.iterator,e,t),forEach:nn(e,t),clear:rn(e,t),get size(){return F(e,U,t),e.size}}),Map:(e,t)=>({has:Te("has",e,t),get:Te("get",e,t),set:fe("set","get",e,t),delete:fe("delete","has",e,t),keys:q("keys",e,t),values:q("values",e,t),entries:q("entries",e,t),[Symbol.iterator]:q(Symbol.iterator,e,t),forEach:nn(e,t),clear:rn(e,t),get size(){return F(e,U,t),e.size}}),WeakMap:(e,t)=>({has:Te("has",e,t),get:Te("get",e,t),set:fe("set","get",e,t),delete:fe("delete","has",e,t)})};function ht(e,t,n){let r=Ar[t](e,n);return Object.assign(on(n),{get(i,s){return dt.call(r,s)?r[s]:(F(i,s,n),he(i[s],n))}})}function pe(e,t){let n={type:"signal",value:e,observers:new Set},r=t(n),i=()=>(yt(n),r);return i[ie]=n,i.set=function(o){Object.is(n.value,o)||(n.value=o,r=t(n),Ke(n))},i}function Dr(e){if(typeof e!="function"||e[ie]?.type!=="signal")throw new g(`Value is not a signal (${e})`);Ke(e[ie])}function _r(){return pe(null,e=>e.value)}function Or(e){return pe(e,t=>de(t.value,t))}function xr(e){return pe(e,t=>de(t.value,t))}function Rr(e){return pe(e,t=>de(t.value,t))}function Mr(e){return pe(e,t=>de(t.value,t))}function x(e){return pe(e,t=>t.value)}x.trigger=Dr;x.ref=_r;x.Array=Or;x.Map=Rr;x.Object=xr;x.Set=Mr;function Ir(){throw new g("Cannot write to a read-only computed value. Pass a `set` option to make it writable.")}function se(e,t={}){let n=Fe(()=>{let i=e();return Object.is(n.value,i)||Ke(n),i},!0);function r(){return n.state!==0&&We(n),yt(n),n.value}return r[ie]=n,r.set=t.set??Ir,oe()?.computations.push(n),r}function Ae(e){let t=Fe(()=>(t.value||t.observers.size?(P(void 0),mt(t),P(t)):Se(t),e()),!1);return z()?.observers.add(t),We(t),function(){t.state=0;let r=z();P(void 0),mt(t),P(r)}}function mt(e){Se(e),Pr(e);for(let t of e.observers)t.state=0,mt(t);e.observers.clear()}function Pr(e){let t=e.value;t&&typeof t=="function"&&(t(),e.value=void 0)}function ln(e,t={}){let n=x(t.initial),r=x(!1),i=x(null),s=x(0),o=oe(),l=0,c=null,h=Ae(()=>{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(je(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(je(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 Lr(e,t,n){if(typeof n=="function")return n.name||"[Function]";if(n&&typeof n=="object"){let r=n.constructor;if(r&&r!==Object&&r!==Array)return`[Instance of ${r.name||"anonymous"}]`;if(e.includes(n))return"[Known object]";e.push(n)}return n}function W(e,t,n="Value does not match the type"){let r=Nt(e,t);if(r.length){let i=[],s=JSON.stringify(r,Lr.bind(null,i),2);throw new g(`${n}
2
- ${s}`)}}function gt(e,t,n,r,i=1){return{issueDepth:0,path:n,value:t,get isValid(){return!e.length},addIssue(s){e.push({received:this.value,path:this.path.join(" > "),...s})},mergeIssues(s){e.push(...s)},validate(s){s(this),!this.isValid&&r&&(r.issueDepth=this.issueDepth+i)},withIssues(s){return gt(s,this.value,this.path,this,0)},withKey(s){return gt(e,this.value[s],this.path.concat(s),this)}}}function Nt(e,t){let n=[];return t(gt(n,e,[])),n}var Et=Symbol("default"),an=Symbol("innerType"),He=Symbol("shape"),cn=Symbol("elementType"),un=Symbol("optional");function le(e){return typeof e=="function"?e[Et]:void 0}function Br(e,t){let n=function(i){i.value!==void 0&&i.validate(e)};return n[un]=!0,n[an]=e,t!==void 0&&(n[Et]=typeof t=="function"?t:()=>t),n}function jr(e){return typeof e=="function"&&un in e}function M(e){return e.optional=t=>Br(e,t),e}function fn(e,t){return bt(e,t)}function bt(e,t){if(typeof t!="function")return e;if(e===void 0){let o=t[Et];if(!o)return e;e=o()}let n=t[an]||t;if(typeof n!="function"||!e||typeof e!="object")return e;let r=n[cn];if(r&&Array.isArray(e)){let o=e;for(let l=0;l<e.length;l++){let c=bt(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=bt(l,i[o]);c!==l&&(s===e&&(s=Array.isArray(e)?[...e]:{...e}),s[o]=c)}return s}function Vr(){return M(function(){})}function Fr(){return M(function(t){typeof t.value!="boolean"&&t.addIssue({message:"value is not a boolean"})})}function Kr(){return M(function(t){typeof t.value!="number"&&t.addIssue({message:"value is not a number"})})}function Wr(){return M(function(t){typeof t.value!="string"&&!(t.value instanceof String)&&t.addIssue({message:"value is not a string"})})}function Ur(e){let t=M(function(r){if(!Array.isArray(r.value)){r.addIssue({message:"value is not an array"});return}if(e)for(let i=0;i<r.value.length;i++)r.withKey(i).validate(e)});return e&&(t[cn]=e),t}function $t(e){return M(function(n){(typeof n.value!="function"||!(n.value===e||n.value.prototype instanceof e))&&n.addIssue({message:`value is not '${e.name}' or an extension`})})}function zr(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 Hr(e=[],t=void 0){return M(function(r){typeof r.value!="function"&&r.addIssue({message:"value is not a function"})})}function hn(e){return M(function(n){n.value instanceof e||n.addIssue({message:`value is not an instance of '${e.name}'`})})}function Gr(e){return M(function(n){for(let r of e)n.validate(r)})}function St(e){return M(function(n){n.value!==e&&n.addIssue({message:`value is not equal to ${typeof e=="string"?`'${e}'`:e}`})})}function qr(e){return kt(e.map(St))}function dn(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){jr(i[l])||o.push(l);continue}r&&e.withKey(l).validate(i[l])}if(o.length&&e.addIssue({message:"object value has missing keys",missingKeys:o}),n){let l=[];for(let c in e.value)s.includes(c)||l.push(c);l.length&&e.addIssue({message:"object value has unknown keys",unknownKeys:l})}}function Xr(e={}){let t=M(function(r){dn(r,e,!1)});return Array.isArray(e)||(t[He]=e),t}function Yr(e){let t=M(function(r){dn(r,e,!0)});return Array.isArray(e)||(t[He]=e),t}function Zr(e){return M(function(n){n.value instanceof Promise||n.addIssue({message:"value is not a promise"})})}function Jr(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 Qr(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 kt(e){return M(function(n){let r=0,i=[];for(let s of e){let o=n.withIssues(i);if(o.validate(s),i.length===r||o.issueDepth>0){n.mergeIssues(i.slice(r));return}r=i.length}n.addIssue({message:"value does not match union type",subIssues:i})})}function ei(e){return M(function(n){(typeof n.value!="function"||!n.value[ie])&&n.addIssue({message:"value is not a reactive value"})})}function ti(e){if(typeof HTMLElement>"u")throw new Error("Cannot use ref in a non-DOM environment");return kt([St(null),hn(e||HTMLElement)])}var Ct={and:Gr,any:Vr,array:Ur,boolean:Fr,constructor:$t,customValidator:zr,function:Hr,instanceOf:hn,literal:St,number:Kr,object:Xr,or:kt,promise:Zr,record:Jr,ref:ti,selection:qr,signal:ei,strictObject:Yr,string:Wr,tuple:Qr},pn=class{_map=x.Object(Object.create(null));_name;_validation;constructor(e={}){this._name=e.name||"registry",this._validation=e.validation}entries=se(()=>Object.entries(this._map()).sort((t,n)=>t[1][0]-n[1][0]).map(([t,n])=>[t,n[1]]));items=se(()=>this.entries().map(e=>e[1]));addById(e,t={}){if(!e.id)throw new g(`Item should have an id key (registry '${this._name}')`);return this.add(e.id,e,t)}add(e,t,n={}){if(!n.force&&e in this._map())throw new g(`Key "${e}" is already registered (registry '${this._name}'). Use { force: true } to overwrite.`);if(this._validation){let r=this._name?` (registry '${this._name}', key: '${e}')`:` (key: '${e}')`;W(t,this._validation,`Registry entry does not match the type${r}`)}return this._map()[e]=[n.sequence??50,t],this}get(e,t){let n=e in this._map();if(!n&&arguments.length<2)throw new g(`Cannot find key "${e}" (registry '${this._name}')`);return n?this._map()[e][1]:t}delete(e){delete this._map()[e]}has(e){return e in this._map()}use(e,t,n={}){let r=K();return this.add(e,t,n),r.onDestroy(()=>{this._map()[e]?.[1]===t&&this.delete(e)}),this}useById(e,t={}){if(!e.id)throw new g(`Item should have an id key (registry '${this._name}')`);return this.use(e.id,e,t)}},mn=class{_items=x.Array([]);_name;_validation;constructor(e={}){this._name=e.name,this._validation=e.validation}items=se(()=>this._items().sort((e,t)=>e[0]-t[0]).map(e=>e[1]));add(e,t={}){if(this._validation){let n=this._name?` (resource '${this._name}')`:"";W(e,this._validation,`Resource item does not match the type${n}`)}return this._items().push([t.sequence??50,e]),this}delete(e){let t=this._items().filter(([n,r])=>r!==e);return this._items.set(t),this}has(e){return this._items().some(([t,n])=>n===e)}use(e,t={}){let n=K();return this.add(e,t),n.onDestroy(()=>this.delete(e)),this}},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(){}},me=class extends ke{config;plugins;ready=Promise.resolve();hasPendingReady=!1;constructor(e,t={}){if(super(e),this.config=t.config??{},this.pluginManager=this,t.parent){let n=t.parent;n.onDestroy(()=>this.destroy()),this.plugins=Object.create(n.plugins)}else this.plugins={}}destroy(){this.finalize(e=>console.error(e))}getPluginById(e){return this.plugins[e]||null}getPlugin(e){return this.getPluginById(e.id)}startPlugin(e){if(!e.id)throw new g(`Plugin "${e.name}" has no id`);if(this.plugins.hasOwnProperty(e.id)){let n=this.getPluginById(e.id).constructor;if(n!==e)throw new g(`Trying to start a plugin with the same id as an other plugin (id: '${e.id}', existing plugin: '${n.name}', starting plugin: '${e.name}')`);return null}let t=new e(this);return this.plugins[e.id]=t,t.setup(),t}startPlugins(e){let t=e.filter(o=>!o.id||this.plugins.hasOwnProperty(o.id)?(this.startPlugin(o),!1):!0);if(!t.length)return;t.sort((o,l)=>o.sequence-l.sequence);let n=[];for(let o of t){let l=n[n.length-1];l&&l[0].sequence===o.sequence?l.push(o):n.push([o])}let r=o=>{H.push(this);try{for(let c of o)this.startPlugin(c)}finally{H.pop()}let l=this.willStart.splice(0);return l.length?Promise.all(l.map(c=>c())):null},i=this.hasPendingReady?this.ready:null;for(let o of n)i?i=i.then(()=>r(o)):i=r(o);if(!i){this.status<C.MOUNTED&&(this.status=C.MOUNTED);return}this.hasPendingReady=!0;let s=this.ready=i.then(()=>{this.status<C.MOUNTED&&(this.status=C.MOUNTED),this.ready===s&&(this.hasPendingReady=!1)})}};function qe(e,t){Array.isArray(t)?e.startPlugins(t):e.onDestroy(Ae(()=>{let n=t.items();wt(()=>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 De(e){Z(Ae(e))}function gn(e,t,n,r){typeof e=="function"?De(()=>{let i=e();if(i)return i.addEventListener(t,n,r),()=>i.removeEventListener(t,n,r)}):(e.addEventListener(t,n,r),Z(()=>e.removeEventListener(t,n,r)))}function bn(){return K().app}function vn(e){let t=K(),n=t.pluginManager.getPluginById(e.id);if(!n)if(t instanceof me)n=t.pluginManager.startPlugin(e);else throw new g(`Unknown plugin "${e.id}"`);return n}function yn(e,t){let n=K();if(!(n instanceof me))throw new g("Expected to be in a plugin scope");n.app.dev&&t&&W(n.config,Ct.object({[e]:t}),"Config does not match the type");let r=n.config[e];return r===void 0?le(t)?.():r}var wn=class extends EventTarget{trigger(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t}))}},Ee=class extends String{};function At(e){return e instanceof Ee?e:e===void 0?Ne(""):typeof e=="number"?Ne(String(e)):([["&","&amp;"],["<","&lt;"],[">","&gt;"],["'","&#x27;"],['"',"&quot;"],["`","&#x60;"]].forEach(t=>{e=String(e).replace(new RegExp(t[0],"g"),t[1])}),Ne(e))}function Ne(e,...t){if(!Array.isArray(e))return new Ee(e);let n=e,r="",i=0;for(;i<t.length;++i)r+=n[i]+At(t[i]);return r+=n[i],new Ee(r)}var ni="3.0.0-alpha.38",Q=new WeakMap,ce=new WeakMap;function On(e,t,n,r){for(;e;){r&&e.fiber&&Q.set(e.fiber,t);let i=ce.get(e);if(i)for(let s=i.length-1;s>=0;s--)try{return i[s](t,n),{handled:!0,error:t}}catch(o){t=o}e=e.parent}return{handled:!1,error:t}}function xn(e){return(t,n)=>{if(e.app.destroyed)throw t;let{handled:r}=On(e,t,n,!1);r||e.app._handleError(n())}}function ve(e){let{error:t}=e,n="node"in e?e.node:e.fiber.node,r="fiber"in e?e.fiber:n.fiber,i=n.app;if(i.destroyed)throw t;if(r){let l=r;do l.node.fiber=l,Q.set(l,t),l=l.parent;while(l);Q.set(r.root,t)}let s=()=>{try{i.destroy()}catch{}return t},o=On(n,t,s,!0);o.handled||(t=o.error,i._handleError(s()))}function Rn(e){e=e.slice();let t=[],n;for(;(n=e[0])&&typeof n=="string";)t.push(e.shift());return{modifiers:t,data:e}}var ye={shouldNormalizeDom:!0,mainEventHandler:(e,t,n)=>(typeof e=="function"?e(t):Array.isArray(e)&&(e=Rn(e).data,e[0](e[1],t)),!1)},Tn=globalThis.document?.createTextNode(""),ri=class{key;child;parentEl;constructor(e,t){this.key=e,this.child=t}mount(e,t){this.parentEl=e,this.child.mount(e,t)}moveBeforeDOMNode(e,t){this.child.moveBeforeDOMNode(e,t)}moveBeforeVNode(e,t){this.moveBeforeDOMNode(e&&e.firstNode()||t)}patch(e,t){if(this===e)return;let n=this.child,r=e.child;if(this.key===e.key)n.patch(r,t);else{let i=n.firstNode();i.parentElement.insertBefore(Tn,i),t&&n.beforeRemove(),n.remove(),r.mount(this.parentEl,Tn),this.child=r,this.key=e.key}}beforeRemove(){this.child.beforeRemove()}remove(){this.child.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}};function ae(e,t){return new ri(e,t)}var Rt,Re,Wt,Mn;if(typeof Element<"u"){({setAttribute:Rt,removeAttribute:Re}=Element.prototype);let e=DOMTokenList.prototype;Wt=e.add,Mn=e.remove}var In=Array.isArray,{split:Nn,trim:Oe}=String.prototype,En=/\s+/;function be(e,t){switch(t){case!1:case null:case void 0:Re.call(this,e);break;case!0:Rt.call(this,e,"");break;default:Rt.call(this,e,t)}}function ii(e){return function(t){be.call(this,e,t)}}function si(e){if(In(e))e[0]==="class"?Pt.call(this,e[1]):e[0]==="style"?Lt.call(this,e[1]):be.call(this,e[0],e[1]);else for(let t in e)t==="class"?Pt.call(this,e[t]):t==="style"?Lt.call(this,e[t]):be.call(this,t,e[t])}function oi(e,t){if(In(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]):be.call(this,n,r)}else Re.call(this,t[0]),be.call(this,n,r)}else{for(let n in t)n in e||(n==="class"?Ye.call(this,"",t[n]):n==="style"?Ze.call(this,"",t[n]):Re.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]):be.call(this,n,r))}}}function Mt(e){let t={};switch(typeof e){case"string":let n=Oe.call(e);if(!n)return{};let r=Nn.call(n,En);for(let i=0,s=r.length;i<s;i++)t[r[i]]=!0;return t;case"object":for(let i in e){let s=e[i];if(s){if(i=Oe.call(i),!i)continue;let o=Nn.call(i,En);for(let l of o)t[l]=s}}return t;case"undefined":return{};case"number":return{[e]:!0};default:return{[e]:!0}}}var Dt={};function li(e){if(e in Dt)return Dt[e];let t=e.replace(/[A-Z]/g,n=>"-"+n.toLowerCase());return Dt[e]=t,t}var $n=/\s*!\s*important\s*$/i;function Pn(e,t,n){$n.test(n)?e.setProperty(t,n.replace($n,""),"important"):e.setProperty(t,n)}function It(e){let t={};switch(typeof e){case"string":{let n=e,r=n.length,i=0;for(;i<r;){let s=i,o=0,l=0;for(;i<r;){let f=n.charCodeAt(i);if(l){if(f===92){i+=2;continue}f===l&&(l=0)}else if(f===34||f===39)l=f;else if(f===40)o++;else if(f===41)o>0&&o--;else if(f===59&&o===0)break;i++}let c=Oe.call(n.slice(s,i));if(i++,!c)continue;let h=c.indexOf(":");if(h===-1)continue;let a=Oe.call(c.slice(0,h)),u=Oe.call(c.slice(h+1));a&&u&&u!=="undefined"&&(t[a]=u)}return t}case"object":for(let n in e){let r=e[n];(r||r===0)&&(t[li(n)]=String(r))}return t;default:return{}}}function Pt(e){e=e===""?{}:Mt(e);for(let t in e)Wt.call(this.classList,t)}function Ye(e,t){t=t===""?{}:Mt(t),e=e===""?{}:Mt(e);for(let n in t)n in e||Mn.call(this.classList,n);for(let n in e)e[n]!==t[n]&&Wt.call(this.classList,n)}function Lt(e){e=e===""?{}:It(e);let t=this.style;for(let n in e)Pn(t,n,e[n])}function Ze(e,t){t=t===""?{}:It(t),e=e===""?{}:It(e);let n=this.style;for(let r in t)r in e||n.removeProperty(r);for(let r in e)e[r]!==t[r]&&Pn(n,r,e[r]);n.cssText||Re.call(this,"style")}function ai(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 ci(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 ui(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(!ci(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 fi(e){return new Promise(function(t){document.readyState!=="loading"?t(!0):document.addEventListener("DOMContentLoaded",t,!1)}).then(e||function(){})}function Ln(e){let t=e.split(".")[0],n=e.includes(".capture"),r=e.includes(".passive");return e.includes(".synthetic")?mi(t,n,r):di(t,n,r)}var hi=1;function di(e,t=!1,n=!1){let r=`__event__${e}_${hi++}`;t&&(r=`${r}_capture`);function i(h){let a=h.currentTarget;if(!a||!ai(a))return;let u=a[r];u&&ye.mainEventHandler(u,h,a)}let s={capture:t,passive:n};function o(h){this[r]=h,this.addEventListener(e,i,s)}function l(){delete this[r],this.removeEventListener(e,i,s)}function c(h){this[r]=h}return{setup:o,update:c,remove:l}}var pi=1;function mi(e,t=!1,n=!1){let r=`__event__synthetic_${e}`;t&&(r=`${r}_capture`),bi(e,r,t,n);let i=pi++;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 gi(e,t){let n=t.target;for(;n!==null;){let r=n[e];if(r){for(let i of Object.values(r))if(ye.mainEventHandler(i,t,n))return}n=n.parentNode}}var Sn={};function bi(e,t,n=!1,r=!1){Sn[t]||(document.addEventListener(e,i=>gi(t,i),{capture:n,passive:r}),Sn[t]=!0)}var vi=(e,t)=>Object.getOwnPropertyDescriptor(e,t),_e,Bn,Bt;if(typeof Node<"u"){let e=Node.prototype;_e=e.insertBefore,Bn=vi(e,"textContent").set,Bt=e.removeChild}var jn=class{children;anchors;parentEl;isOnlyChild;constructor(e){this.children=e}mount(e,t){let n=this.children,r=n.length,i=new Array(r);for(let s=0;s<r;s++){let o=n[s];if(o)o.mount(e,t);else{let l=document.createTextNode("");i[s]=l,_e.call(e,l,t)}}this.anchors=i,this.parentEl=e}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;let n=this.children,r=this.anchors;for(let i=0,s=n.length;i<s;i++){let o=n[i];if(o)o.moveBeforeDOMNode(e,t);else{let l=r[i];_e.call(t,l,e)}}}moveBeforeVNode(e,t){if(e){let s=e.children[0];t=(s?s.firstNode():e.anchors[0])||null}let n=this.children,r=this.parentEl,i=this.anchors;for(let s=0,o=n.length;s<o;s++){let l=n[s];if(l)l.moveBeforeVNode(null,t);else{let c=i[s];_e.call(r,c,t)}}}patch(e,t){if(this===e)return;let n=this.children,r=e.children,i=this.anchors,s=this.parentEl;for(let o=0,l=n.length;o<l;o++){let c=n[o],h=r[o];if(c)if(h)c.patch(h,t);else{let a=c.firstNode(),u=document.createTextNode("");i[o]=u,_e.call(s,u,a),t&&c.beforeRemove(),c.remove(),n[o]=void 0}else if(h){n[o]=h;let a=i[o];h.mount(s,a),Bt.call(s,a)}}}beforeRemove(){let e=this.children;for(let t=0,n=e.length;t<n;t++){let r=e[t];r&&r.beforeRemove()}}remove(){let e=this.parentEl;if(this.isOnlyChild)Bn.call(e,"");else{let t=this.children,n=this.anchors;for(let r=0,i=t.length;r<i;r++){let s=t[r];s?s.remove():Bt.call(e,n[r])}}}firstNode(){let e=this.children[0];return e?e.firstNode():this.anchors[0]}toString(){return this.children.map(e=>e?e.toString():"").join("")}};function Ut(e){return new jn(e)}var yi=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Je,Vn,Fn;if(typeof Node<"u"){let e=Node.prototype;Je=e.insertBefore,Fn=e.removeChild,Vn=yi(CharacterData.prototype,"data").set}var wi=class{text;parentEl;el;constructor(e){this.text=e}mount(e,t){this.parentEl=e;let n=document.createTextNode(jt(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(){Fn.call(this.parentEl,this.el)}firstNode(){return this.el}patch(e){let t=e.text;this.text!==t&&(Vn.call(this.el,jt(t)),this.text=t)}toString(){return this.text}};function Me(e){return new wi(e)}function jt(e){switch(typeof e){case"string":return e;case"number":return String(e);case"boolean":return e?"true":"false";default:return e||""}}var _t=(e,t)=>Object.getOwnPropertyDescriptor(e,t),xe,Kn,Wn,nt,zt;typeof Node<"u"&&(xe=Node.prototype,Kn=Element.prototype,Wn=_t(CharacterData.prototype,"data").set,nt=_t(xe,"firstChild").get,zt=_t(xe,"nextSibling").get);var kn=()=>{};function Ti(e){return function(n){this[e]=n===0?0:n?n.valueOf():""}}var Ot={};function Un(e){if(e in Ot)return Ot[e];let n=new DOMParser().parseFromString(`<t>${e}</t>`,"text/xml").firstChild.firstChild;ye.shouldNormalizeDom&&zn(n);let r=Vt(n),i=Ft(r),s=r.el,o=$i(s,i);return Ot[e]=o,o}function zn(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)zn(e.childNodes.item(t))}function Vt(e,t=null,n=null){switch(e.nodeType){case Node.ELEMENT_NODE:{let r=n&&n.currentNS,i=e.tagName,s,o=[];if(i.startsWith("block-text-")){let c=parseInt(i.slice(11),10);o.push({type:"text",idx:c}),s=document.createTextNode("")}if(i.startsWith("block-child-")){n.isRef||Cn(n);let c=parseInt(i.slice(12),10);o.push({type:"child",idx:c}),s=document.createTextNode("")}if(r||=e.namespaceURI,s||(s=r?document.createElementNS(r,i):document.createElement(i)),s instanceof Element){n||document.createElement("template").content.appendChild(s);let c=e.attributes;for(let h=0;h<c.length;h++){let a=c[h].name,u=c[h].value;if(a.startsWith("block-handler-")){let f=parseInt(a.slice(14),10);o.push({type:"handler",idx:f,event:u})}else if(a.startsWith("block-attribute-")){let f=parseInt(a.slice(16),10);o.push({type:"attribute",idx:f,name:u,tag:i})}else if(a.startsWith("block-property-")){let f=parseInt(a.slice(15),10);o.push({type:"property",idx:f,name:u,tag:i})}else a==="block-attributes"?o.push({type:"attributes",idx:parseInt(u,10)}):a==="block-ref"?o.push({type:"ref",idx:parseInt(u,10)}):s.setAttribute(c[h].name,u)}}let l={parent:t,firstChild:null,nextSibling:null,el:s,info:o,refN:0,currentNS:r};if(e.firstChild){let c=e.childNodes[0];if(e.childNodes.length===1&&c.nodeType===Node.ELEMENT_NODE&&c.tagName.startsWith("block-child-")){let h=c.tagName,a=parseInt(h.slice(12),10);o.push({idx:a,type:"child",isOnlyChild:!0})}else{l.firstChild=Vt(e.firstChild,l,l),s.appendChild(l.firstChild.el);let h=e.firstChild,a=l.firstChild;for(;h=h.nextSibling;)a.nextSibling=Vt(h,a,l),s.appendChild(a.nextSibling.el),a=a.nextSibling}}return l.info.length&&Cn(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 Cn(e){e.isRef=!0;do e.refN++;while(e=e.parent)}function Ni(e){let t=e.parent;for(;t&&t.nextSibling===e;)e=t,t=t.parent;return t}function Ft(e,t,n){if(!t){let r=new Array(e.info.filter(i=>i.type==="child").length);t={collectors:[],locations:[],children:r,cbRefs:[],refN:e.refN},n=0}if(e.refN){let r=n,i=e.isRef,s=e.firstChild?e.firstChild.refN:0,o=e.nextSibling?e.nextSibling.refN:0;if(i){for(let l of e.info)l.refIdx=r;e.refIdx=r,Ei(t,e),n++}if(o){let l=n+s;t.collectors.push({idx:l,prevIdx:r,getVal:zt}),Ft(e.nextSibling,t,l)}s&&(t.collectors.push({idx:n,prevIdx:r,getVal:nt}),Ft(e.firstChild,t,n))}return t}function Ei(e,t){for(let n of t.info)switch(n.type){case"text":e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:An,updateData:An});break;case"child":n.isOnlyChild?e.children[n.idx]={parentRefIdx:n.refIdx,isOnlyChild:!0}:e.children[n.idx]={parentRefIdx:Ni(t).refIdx,afterRefIdx:n.refIdx};break;case"property":{let r=n.refIdx,i=Ti(n.name);e.locations.push({idx:n.idx,refIdx:r,setData:i,updateData:i});break}case"attribute":{let r=n.refIdx,i,s;n.name==="class"?(s=Pt,i=Ye):n.name==="style"?(s=Lt,i=Ze):(s=ii(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:si,updateData:oi});break;case"handler":{let{setup:r,update:i}=Ln(n.event);e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:r,updateData:i});break}case"ref":{e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:kn,updateData:kn}),e.cbRefs.push(n.idx);break}}}function $i(e,t){let n=Si(e,t);return t.children.length?(n=class extends n{children;constructor(r,i){super(r),this.children=i}},n.prototype.beforeRemove=jn.prototype.beforeRemove,(r,i=[])=>new n(r,i)):r=>new n(r)}function Si(e,t){let{refN:n,collectors:r,children:i,locations:s,cbRefs:o}=t;s.sort((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=[zt,nt],p=r.length,b=r.map(y=>y.idx&32767|(y.prevIdx&32767)<<15|(y.getVal===nt?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=Kn.remove;class k{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&&(k.prototype.mount=function(w,v){let $=A.call(e,!0),D=new Array(n);this.refs=D,D[0]=$;for(let O=0;O<p;O++){let S=b[O];D[S&32767]=m[S>>30&1].call(D[S>>15&32767])}if(l){let O=this.data;for(let S=0;S<l;S++)u[S].call(D[a[S]],O[S])}if(c){let O=this.children;for(let S=0;S<c;S++){let R=O[S];if(R){let L=d[S],we=L>>16&32767,Le=we?D[we]:null;R.isOnlyChild=!!(L&32768),R.mount(D[L&32767],Le)}}}if(E.call(w,$,v),this.el=$,this.parentEl=w,o.length){let O=this.data,S=this.refs;for(let R of o){let L=O[R];L(S[a[R]],null)}}},k.prototype.patch=function(w,v){if(this===w)return;let $=this.refs;if(l){let D=this.data,O=w.data;for(let S=0;S<l;S++){let R=D[S],L=O[S];R!==L&&f[S].call($[a[S]],L,R)}this.data=O}if(c){let D=this.children,O=w.children;for(let S=0;S<c;S++){let R=D[S],L=O[S];if(R)L?R.patch(L,v):(v&&R.beforeRemove(),R.remove(),D[S]=void 0);else if(L){let we=d[S],Le=we>>16&32767,gr=Le?$[Le]:null;L.mount($[we&32767],gr),D[S]=L}}}},k.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)}),k}function An(e){Wn.call(this,jt(e))}var ki=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Hn,Gn,qn,Kt;if(typeof Node<"u"){let e=Node.prototype;Hn=e.insertBefore,Gn=e.appendChild,qn=e.removeChild,Kt=ki(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,Hn.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]);Kt.call(m,""),Gn.call(m,u);return}let p=0,b=0,d=n[0],A=r[0],E=n.length-1,T=r.length-1,k=n[E],y=r[T],w;for(;p<=E&&b<=T;){if(d===null){d=n[++p];continue}if(k===null){k=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=k.key,O=y.key;if(D===O){o.call(k,y,t),r[T]=k,k=n[--E],y=r[--T];continue}if(v===O){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(k,A,t),r[b]=k;let R=n[p];h.call(k,R,u),k=n[--E],A=r[++b];continue}w=w||Ai(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)Kt.call(e,"");else{let n=this.children,r=n.length;if(r){let i=n[0].remove;for(let s=0;s<r;s++)i.call(n[s])}qn.call(e,t)}}firstNode(){let e=this.children[0];return e?e.firstNode():void 0}toString(){return this.children.map(e=>e.toString()).join("")}};function Xn(e){return new Ci(e)}function Ai(e,t,n){let r={};for(let i=t;i<=n;i++)r[e[i].key]=i;return r}var ge,Yn;if(typeof Node<"u"){let e=Node.prototype;ge=e.insertBefore,Yn=e.removeChild}var Di=class{html;parentEl;content=[];constructor(e){this.html=e}mount(e,t){this.parentEl=e;let n=document.createElement("template");n.innerHTML=this.html,this.content=[...n.content.childNodes];for(let r of this.content)ge.call(e,r,t);if(!this.content.length){let r=document.createTextNode("");this.content.push(r),ge.call(e,r,t)}}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;for(let n of this.content)ge.call(t,n,e)}moveBeforeVNode(e,t){let n=e?e.content[0]:t;this.moveBeforeDOMNode(n)}patch(e){if(this===e)return;let t=e.html;if(this.html!==t){let n=this.parentEl,r=this.content[0],i=document.createElement("template");i.innerHTML=t;let s=[...i.content.childNodes];for(let o of s)ge.call(n,o,r);if(!s.length){let o=document.createTextNode("");s.push(o),ge.call(n,o,r)}this.remove(),this.content=s,this.html=e.html}}beforeRemove(){}remove(){let e=this.parentEl;for(let t of this.content)Yn.call(e,t)}firstNode(){return this.content[0]}toString(){return this.html}};function Ht(e){return new Di(e)}function _i(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=Ln(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 Oi(e,t,n=!1){e.patch(t,n)}function xi(e,t=!1){t&&e.beforeRemove(),e.remove()}function Ri(e){switch(e.__owl__.status){case C.NEW:return"new";case C.CANCELLED:return"cancelled";case C.MOUNTED:return e instanceof Ge?"started":"mounted";case C.DESTROYED:return"destroyed"}}function Mi(e,t){let n=e.fiber;return n&&(Gt(n.children),n.root=null),new st(e,t)}function Ii(e){let t=e.fiber;if(t){let r=t.root;return r.locked=!0,r.setCounter(r.counter+1-Gt(t.children)),r.locked=!1,t.children=[],t.childrenMap={},t.bdom=null,Q.has(t)&&(Q.delete(t),Q.delete(r),t.appliedToDom=!1,t instanceof rt&&(t.mounted=t instanceof Zn?[t]:[])),t}let n=new rt(e,null);return e.willPatch.length&&n.willPatch.push(n),e.patched.length&&n.patched.push(n),n}function Pi(){throw new g("Attempted to render cancelled fiber")}function Gt(e){let t=0;for(let n of e){let r=n.node;n.render=Pi,r.status===C.NEW&&r.cancel(),r.fiber=null,n.bdom?r.forceNextRender=!0:(t++,r.bdom&&(r.forceNextRender=!0)),t+=Gt(n.children)}return t}var st=class{node;bdom=null;root;parent;children=[];appliedToDom=!1;deep=!1;childrenMap={};constructor(e,t){if(this.node=e,this.parent=t,t){this.deep=t.deep;let n=t.root;n.setCounter(n.counter+1),this.root=n,t.children.push(this)}else this.root=this}render(){let e=this.root.node.app.scheduler;if(e.tasks.size>1){let r=this.root.node,i=r.parent;for(;i;){if(i.fiber){let s=i.fiber.root;if(s.counter===0&&r.parentKey in i.fiber.childrenMap)i=s.node;else{e.delayedRenders.push(this);return}}r=i,i=i.parent}}let t=this.node,n=this.root;if(n){let r=z();Se(t.signalComputation),P(t.signalComputation),t.signalComputation.state=$e.EXECUTED;try{this.bdom=!0,this.bdom=t.renderFn()}catch(s){ve({node:t,error:s})}finally{P(r)}let i=n.counter-1;n.counter=i,i===0&&e.flush()}}},rt=class extends st{counter=1;willPatch=[];patched=[];mounted=[];locked=!1;complete(){let e=this.node;this.locked=!0;let t,n=this.mounted;try{for(t of this.willPatch){let i=t.node;if(i.fiber===t){let s=i.component;for(let o of i.willPatch)o.call(s)}}for(t=void 0,e._patch(),this.locked=!1;t=n.pop();)if(t=t,t.appliedToDom)for(let i of t.node.mounted)i();let r=this.patched;for(;t=r.pop();)if(t=t,t.appliedToDom)for(let i of t.node.patched)i()}catch(r){for(let i of n)i.node.willUnmount=[];this.locked=!1,ve({fiber:t||this,error:r})}}setCounter(e){this.counter=e,e===0&&this.node.app.scheduler.flush()}},Zn=class extends rt{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=C.MOUNTED,this.appliedToDom=!0;let n=this.mounted;for(;e=n.pop();)if(e.appliedToDom)for(let r of e.node.mounted)r()}catch(t){ve({fiber:e,error:t})}}},Ie=class extends ke{fiber=null;component;bdom=null;componentName;forceNextRender=!1;parentKey;props;defaultProps=null;renderFn;parent;children=Object.create(null);willUpdateProps=[];propsUpdated=[];willUnmount=[];mounted=[];willPatch=[];patched=[];signalComputation;trackedRefs=null;constructor(e,t,n,r,i){super(n),this.parent=r,this.parentKey=i,this.pluginManager=r?r.pluginManager:n.pluginManager,this.componentName=e.name,this.signalComputation=Fe(()=>this.render(!1),!1,$e.EXECUTED),this.props=t;let s=z();P(void 0),H.push(this);try{this.component=new e(this);let o={this:this.component,__owl__:this};this.renderFn=n.getTemplate(e.template).bind(this.component,o,this),this.component.setup()}finally{H.pop(),P(s)}}decorate(e,t){let n=this.component,r=this;if(this.app.dev){let i=`${this.componentName}.${t}`;return{[i](...o){return e.call(n,r,...o)}}[i]}return e.bind(n,r)}async initiateRender(e){this.fiber=e,this.mounted.length&&e.root.mounted.push(e);let t=this.component,n=z();P(void 0);try{let r=this.willStart.map(i=>i.call(t));P(n),await Promise.all(r)}catch(r){if(je(r)&&this.status>C.MOUNTED)return;ve({node:this,error:r});return}this.status===C.NEW&&this.fiber===e&&e.render()}async render(e){if(this.status>=C.CANCELLED)return;let t=this.fiber;if(t&&(t.root.locked||t.bdom===!0)&&(await Promise.resolve(),t=this.fiber),t){if(!t.bdom&&!Q.has(t)){e&&(t.deep=e);return}e=e||t.deep}else if(!this.bdom)return;let n=Ii(this);n.deep=e,this.fiber=n,this.app.scheduler.addFiber(n),await Promise.resolve(),!(this.status>=C.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===C.MOUNTED;J++;try{this._destroy()}finally{J--}e&&(this.bdom.remove(),xt())}_destroy(){let e=this.component;if(this.status===C.MOUNTED)for(let t of this.willUnmount)t.call(e);J&&this.trackedRefs&&(et||=[]).push(this);for(let t in this.children)this.children[t]._destroy();this.finalize(t=>ve({error:t,node:this})),Ue(this.signalComputation)}sweepRefs(){let e=this.trackedRefs;if(e)for(let[t,n]of e){let r=n.value;r?r.isConnected||(t.set(null),e.delete(t)):e.delete(t)}}updateDom(){if(this.fiber)if(this.bdom===this.fiber.bdom)for(let e in this.children)this.children[e].updateDom();else{J++;try{this.bdom.patch(this.fiber.bdom,!1)}finally{J--}this.sweepRefs(),xt(),this.fiber.appliedToDom=!0,this.fiber=null}}firstNode(){let e=this.bdom;return e?e.firstNode():void 0}mount(e,t){let n=this.fiber.bdom;this.bdom=n,n.mount(e,t),this.status=C.MOUNTED,this.fiber.appliedToDom=!0,this.children=this.fiber.childrenMap,this.fiber=null}moveBeforeDOMNode(e,t){this.bdom.moveBeforeDOMNode(e,t)}moveBeforeVNode(e,t){this.bdom.moveBeforeVNode(e?e.bdom:null,t)}trackRef(e,t){(this.trackedRefs||=new Map).set(e,t)}patch(){this.fiber&&this.fiber.parent&&this._patch()}_patch(){let e=!1;for(let n in this.children){e=!0;break}let t=this.fiber;this.children=t.childrenMap,J++;try{this.bdom.patch(t.bdom,e)}finally{J--}this.sweepRefs(),xt(),t.appliedToDom=!0,this.fiber=null}beforeRemove(){this._destroy()}remove(){this.bdom.remove()}},J=0,et=null;function xt(){if(J===0&&et){let e=et;et=null;for(let t=0;t<e.length;t++)e[t].sweepRefs()}}function G(){let e=K();if(!(e instanceof Ie))throw new g("Expected to be in a component scope");return e}var Jn;typeof window<"u"&&(Jn=window.requestAnimationFrame.bind(window));var Li=class Qn{static requestAnimationFrame=Jn;tasks=new Set;requestAnimationFrame;frame=0;delayedRenders=[];cancelledNodes=new Set;processing=!1;constructor(){this.requestAnimationFrame=Qn.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!==C.DESTROYED&&n.node.fiber===n&&n.render()}this.frame===0&&(this.frame=this.requestAnimationFrame(this.processTasks))}processTasks(){if(!this.processing){this.processing=!0,this.frame=0;for(let t of this.cancelledNodes)t._destroy();this.cancelledNodes.clear();for(let t of this.tasks){if(t.root!==t){this.tasks.delete(t);continue}let n=Q.has(t);if(n&&t.counter!==0){this.tasks.delete(t);continue}if(t.node.status===C.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===C.DESTROYED&&this.tasks.delete(t);this.processing=!1}}},ee=class{static template="";__owl__;constructor(e){this.__owl__=e}setup(){}},Bi=Object.create;function ji(e,t){return e==null||e===!1?t:e}function Vi(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=Bi(h||{});a&&(u[a]=s);let f=c?c(u,t,n):null;if(o){let m,p;return f?m=i?ae(r,f):f:p=o(e,t,n),Ut([m,p])}return f||Me("")}function Fi(e,t){return e.key=t,e}function Ki(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 Wi(e){let t=parseFloat(e);return isNaN(t)?e:t}function Ui(e,t){for(let n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!1;return!0}var er=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 zi(e,t){if(e==null)return t?ae("default",t):ae("undefined",Me(""));let n,r;return e instanceof Ee?(n="string_safe",r=Ht(e)):e instanceof er?(n="lazy_value",r=e.evaluate()):(n="string_unsafe",r=Me(e)),ae(n,r)}function Hi(e,t){if(!e)throw new g("Ref is undefined or null");let n,r;if(e.add&&e.delete)n=e.add.bind(e),r=e.delete.bind(e);else if(e.set){n=e.set.bind(e);let i=e[ie];r=i?s=>{i.value===s&&e.set(null)}:()=>e.set(null),i&&t.trackRef(e,i)}else throw new g("Ref should implement either a 'set' function or 'add' and 'delete' functions");return(i,s)=>{s&&r(s),i&&n(i)}}function Gi(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 Dn=new WeakMap;function qi(e,t,n){let r=Dn.get(e);r||(r=new Map,Dn.set(e,r));let i=r.get(t);if(i)return i.set(n),i.readonly;let s=x(n);return s.readonly=se(s),r.set(t,s),s.readonly}function Xi(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 Yi(e,t,n,r,i,s){let o=!n,l,c=s.length===0;r?l=(a,u)=>!0:i?l=function(a,u){for(let f in a)if(a[f]!==u[f])return!0;return Object.keys(a).length!==Object.keys(u).length}:c?l=(a,u)=>!1:l=function(a,u){for(let f of s)if(a[f]!==u[f])return!0;return!1};let h=Ie.prototype.initiateRender;return(a,u,f,m,p)=>{let b=f.children,d=b[u];o&&d&&d.component.constructor!==p&&(d=void 0);let A=f.fiber;if(d){if(l(d.props,a)||A.deep||d.forceNextRender){d.forceNextRender=!1;let E=d.willUpdateProps,T=Mi(d,A);d.fiber=T;let k=A.root;d.willPatch.length&&k.willPatch.push(T),d.patched.length&&k.patched.push(T);let y;if(E.length){let w=a,v=d.defaultProps;if(v){w=Object.assign({},a);for(let O in v)w[O]===void 0&&(w[O]=v[O])}let $=d.component,D=z();P(void 0);for(let O of E){let S=O.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=>{ve({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 ee))throw new g(`"${t}" is not a Component. It must inherit from the Component class`)}else throw new g(`Cannot find the definition of component "${t}"`)}d=new Ie(p,a,e,f,u),b[u]=d;let E=new st(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 Zi(e,t,n,r,i,s){let o=n.getTemplate(e);return ae(e,o.call(t,r,i,s+e))}var Ji={withDefault:ji,zero:Symbol("zero"),callSlot:Vi,withKey:Fi,prepareList:Ki,shallowEqual:Ui,toNumber:Wi,LazyValue:er,safeOutput:zi,createCatcher:_i,markRaw:ze,OwlError:g,createRef:Hi,modelExpr:Xi,createComponent:Yi,callTemplate:Zi,callHandler:Gi,toSignal:qi},Qi={text:Me,createBlock:Un,list:Xn,multi:Ut,html:Ht,toggler:ae},Pe=class{static registerTemplate(e,t){it[e]=t}dev;rawTemplates=Object.create(it);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={...Ji,__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(es(n,t))return;throw new g(`Template ${e} already defined with different content`)}this.rawTemplates[e]=t}addTemplates(e){if(e){e=e instanceof Document?e:this._parseXML(e);for(let t of e.querySelectorAll("[t-name]")){let n=t.getAttribute("t-name");this.addTemplate(n,t)}}}getTemplate(e){let t=e;if(!(t in this.templates)){let n=this.getRawTemplate?.(e)||this.rawTemplates[e];if(n===void 0){let l="",c=oe();throw c instanceof Ie&&(l=` (for component "${c.componentName}")`),new g(`Missing template: "${e}"${l}`)}let i=typeof n=="function"&&!(n instanceof Element)?n:this._compileTemplate(e,n),s=this.templates;this.templates[t]=function(l,c){return s[t].call(this,l,c)};let o=i(this,Qi,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.")}},it={};function te(...e){let t=`__template__${te.nextId++}`,n=String.raw(...e);return it[t]=n,t}te.nextId=1;function es(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 _n=!1,tt=new Set;typeof window<"u"&&(window.__OWL_DEVTOOLS__||={apps:tt,Fiber:st,RootFiber:rt,toRaw:Y,proxy:Ce});var qt=class tr extends Pe{static validateTarget=ui;static apps=tt;static version=ni;name;scheduler=new Li;roots=new Set;pluginManager;destroyed=!1;constructor(t={}){super(t),this.name=t.name||"",tt.add(this),this.pluginManager=new me(this,{config:t.config}),t.plugins?qe(this.pluginManager,t.plugins):this.pluginManager.status=C.MOUNTED,t.test&&(this.dev=!0),this.dev&&!t.test&&!_n&&(console.info("Owl is running in 'dev' mode."),_n=!0)}createRoot(t,n={}){let r=n.props||{},i,s,o=new Promise((p,b)=>{i=p,s=b}),l,c=null;try{l=new Ie(t,r,this,null,null)}catch(p){c=p,s(p)}let h=null,a=null,u=()=>{if(a)return a;if(c)return Promise.reject(c);h=new Zn(l,null);let p=ce.get(l);if(p||(p=[],ce.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<C.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||(tr.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(),tt.delete(this),this.destroyed=!0}_handleError(t){throw t}};async function ts(e,t,n={}){return new qt(n).createRoot(e,n).mount(t,n)}var ns=(e,t,n)=>{let{data:r,modifiers:i}=Rn(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===C.MOUNTED)&&o(e[1],t)}return s};function rs(e){let t=G();function n(r,i){return e.call(this,i,r)}t.willUpdateProps.push(t.decorate(n,"onWillUpdateProps"))}function nr(e){let t=G();t.mounted.push(t.decorate(e,"onMounted"))}function is(e){let t=G();t.willPatch.unshift(t.decorate(e,"onWillPatch"))}function ss(e){let t=G();t.patched.push(t.decorate(e,"onPatched"))}function os(e){let t=G();t.willUnmount.unshift(t.decorate(e,"onWillUnmount"))}function rr(e){let t=G(),n=ce.get(t);n||(n=[],ce.set(t,n)),n.push(e.bind(t.component))}function ls(e,t){let n=G(),r=le(t),i=n.props[e];return n.app.dev&&(t!==void 0&&(!r||i!==void 0)&&W(i,t,`Invalid prop '${e}' in '${n.componentName}'`),n.willUpdateProps.push(s=>{if(s[e]!==n.props[e])throw new g(`Prop '${e}' changed in component '${n.componentName}'. Props declared with \`props.static()\` are static and should not change. If the prop is a signal, pass the same signal reference (its inner value may change).`)})),i===void 0&&r?r():i}function as(){return $t(ee)}var j={...Ct,component:as};function cs(e){let t=G(),{app:n,componentName:r}=t,i=null;if(e&&!Array.isArray(e))for(let u in e){let f=le(e[u]);f&&((i||={})[u]=f())}i&&(t.defaultProps=Object.assign(t.defaultProps||{},i));function s(u,f){return u[f]===void 0&&i&&f in i?i[f]:u[f]}let o=Object.create(null),l=Object.create(null);function c(u){o[u]=x(s(t.props,u)),Reflect.defineProperty(l,u,{enumerable:!0,configurable:!0,get:o[u]})}function h(u){for(let f of u)c(f)}function a(u){for(let f of u)o[f].set(s(t.props,f))}if(e){let u=Array.isArray(e)?e:Object.keys(e);if(h(u),t.propsUpdated.push(()=>a(u)),n.dev){if(i){let m={};for(let p in e)p in i&&(m[p]=e[p]);W(i,j.object(m),`Invalid component default props (${r})`)}let f=j.object(e);W(t.props,f,`Invalid component props (${r})`),t.willUpdateProps.push(m=>{W(m,f,`Invalid component props (${r})`)})}}else{let u=m=>{let p=[];for(let b in m)b.charCodeAt(0)!==1&&p.push(b);return p},f=u(t.props);h(f),t.propsUpdated.push(()=>{let m=u(t.props),p=new Set(m);for(let b of f)p.has(b)||(Reflect.deleteProperty(l,b),delete o[b]);for(let b of m)b in o||c(b);a(m),f=m})}return l}var ot=Object.assign(cs,{static:ls}),us=class extends ee{static template=te`
1
+ "use strict";var owl=(()=>{var ht=Object.defineProperty;var vr=Object.getOwnPropertyDescriptor;var yr=Object.getOwnPropertyNames;var wr=Object.prototype.hasOwnProperty;var Tr=(e,t)=>{for(var n in t)ht(e,n,{get:t[n],enumerable:!0})},Nr=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of yr(t))!wr.call(e,i)&&i!==n&&ht(e,i,{get:()=>t[i],enumerable:!(r=vr(t,i))||r.enumerable});return e};var Er=e=>Nr(ht({},"__esModule",{value:!0}),e);var ao={};Tr(ao,{App:()=>qt,Component:()=>ee,ErrorBoundary:()=>fs,EventBus:()=>Tn,OwlError:()=>g,Plugin:()=>qe,Portal:()=>ps,Registry:()=>mn,Resource:()=>gn,Scope:()=>ke,Suspense:()=>bs,TemplateSet:()=>Pe,__info__:()=>ws,applyDefaults:()=>hn,assertType:()=>W,asyncComputed:()=>ln,batched:()=>vt,blockDom:()=>ys,computed:()=>se,config:()=>wn,effect:()=>Ae,getDefault:()=>le,getScope:()=>oe,globalTemplates:()=>st,htmlEscape:()=>At,markRaw:()=>He,markup:()=>Ne,mount:()=>ns,onError:()=>ir,onMounted:()=>rr,onPatched:()=>os,onWillDestroy:()=>Z,onWillPatch:()=>ss,onWillStart:()=>Ye,onWillUnmount:()=>ls,onWillUpdateProps:()=>is,plugin:()=>yn,props:()=>lt,providePlugins:()=>vs,proxy:()=>Ce,signal:()=>x,status:()=>Mi,t:()=>j,toRaw:()=>Y,types:()=>j,untrack:()=>wt,useApp:()=>hs,useEffect:()=>De,useListener:()=>bn,useScope:()=>K,validateType:()=>Nt,whenReady:()=>hi,xml:()=>te});var g=class extends Error{cause},A={NEW:0,MOUNTED:1,CANCELLED:2,DESTROYED:3};function vt(e){let t=!1;return function(...r){t||(t=!0,Promise.resolve().then(()=>{t=!1,e(...r)}))}}var $e=(e=>(e[e.EXECUTED=0]="EXECUTED",e[e.STALE=1]="STALE",e[e.PENDING=2]="PENDING",e))($e||{}),ie=Symbol("Atom"),je=[],V;function Ke(e,t,n=1){return{state:n,value:void 0,compute:e,sources:new Set,observers:new Set,isDerived:t}}function yt(e){V&&(V.sources.add(e),e.observers.add(V))}function We(e){for(let t of e.observers)t.state===0&&(t.isDerived?kr(t):je.push(t)),t.state=1;$r()}var $r=vt(Sr);function Sr(){let e=je;je=[];for(let t=0;t<e.length;t++)Ue(e[t])}function z(){return V}function P(e){V=e}function Ue(e){let t=e.state;if(t===0)return;if(t===2){for(let r of e.sources)if("compute"in r&&(Ue(r),e.state===1))break;if(e.state!==1){e.state=0;return}}Se(e);let n=V;V=e;try{e.value=e.compute(),e.state=0}finally{V=n}}function Se(e){let t=e.sources;for(let n of t)n.observers.delete(e);t.clear()}function ze(e){let t=e.sources;for(let n of t){n.observers.delete(e);let r=n;r.isDerived&&r.observers.size===0&&ze(r)}t.clear(),e.state=1}function kr(e){let t=[e],n;for(;n=t.pop();)for(let r of n.observers)r.state||(r.state=2,r.isDerived?t.push(r):je.push(r))}function wt(e){let t=V;V=void 0;let n;try{n=e()}finally{V=t}return n}var H=[];function K(){let e=oe();if(!e)throw new g("No active scope");return e}var ke=class{app;pluginManager;status=A.NEW;computations=[];willStart=[];_controller=null;_destroyCbs=null;constructor(e){this.app=e,this.pluginManager=e.pluginManager}run(e){H.push(this);try{return e()}finally{H.pop()}}get abortSignal(){return this.status>A.MOUNTED?(this._controller||(this._controller=new AbortController,this._controller.abort()),this._controller.signal):(this._controller??=new AbortController).signal}async until(e){if(this.status>A.MOUNTED)throw en();let t=await e;if(this.status>A.MOUNTED)throw en();return t}onDestroy(e){if(this.status>=A.DESTROYED){e();return}(this._destroyCbs??=[]).push(e)}cancel(){this.status>A.MOUNTED||(this.status=A.CANCELLED,this._controller?.abort())}finalize(e){if(this.status>=A.DESTROYED)return;this._controller&&!this._controller.signal.aborted&&this._controller.abort();let t=this._destroyCbs;if(t){this._destroyCbs=null;for(let n=t.length-1;n>=0;n--)try{t[n]()}catch(r){e(r)}}for(let n of this.computations)ze(n);this.status=A.DESTROYED}decorate(e,t){return e.bind(void 0,this)}};function oe(){let e=H.length;return e?H[e-1]:null}function Ve(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function en(){let e=new Error("The operation was aborted");return e.name="AbortError",e}var U=Symbol("Key changes"),Cr=Object.prototype.toString,pt=Object.prototype.hasOwnProperty;function Tt(e){if(typeof e!="object"||e===null)return!1;let t=Y(e);return Array.isArray(t)||t instanceof Set||t instanceof Map||t instanceof WeakMap?!0:Cr.call(t)==="[object Object]"}function he(e,t){return!t&&Tt(e)?Ce(e):e}var sn=new WeakSet;function He(e){return sn.add(e),e}function Y(e){return Fe.has(e)?Fe.get(e):e}var mt=new WeakMap;function Ar(e,t){let n=mt.get(e);n||(n=new Map,mt.set(e,n));let r=n.get(t);return r||(r={value:void 0,observers:new Set},n.set(t,r)),r}function F(e,t,n){yt(n??Ar(e,t))}function X(e,t,n){if(!n){let r=mt.get(e);if(!r||!r.has(t))return;n=r.get(t)}We(n)}var Fe=new WeakMap,tn=new WeakMap;function de(e,t){if(!Tt(e))throw new g("Cannot make the given value reactive");if(sn.has(e)||Fe.has(e))return e;let n=tn.get(e);if(n)return n;let r;e instanceof Map?r=dt(e,"Map",t):e instanceof Set?r=dt(e,"Set",t):e instanceof WeakMap?r=dt(e,"WeakMap",t):r=on(t);let i=new Proxy(e,r);return tn.set(e,i),Fe.set(i,e),i}function Ce(e){return de(e,null)}function on(e){return{get(t,n,r){F(t,n,e);let i=Reflect.get(t,n,r);if(e||typeof i!="object"||i===null||!Tt(i))return i;let s=Object.getOwnPropertyDescriptor(t,n);return s&&!s.writable&&!s.configurable?i:de(i,null)},set(t,n,r,i){let s=pt.call(t,n),o=Reflect.get(t,n,i),l=Reflect.set(t,n,Y(r),i);return!s&&pt.call(t,n)&&X(t,U,e),(o!==Reflect.get(t,n,i)||n==="length"&&Array.isArray(t))&&X(t,n,e),l},deleteProperty(t,n){let r=Reflect.deleteProperty(t,n);return X(t,U,e),X(t,n,e),r},ownKeys(t){return F(t,U,e),Reflect.ownKeys(t)},has(t,n){return F(t,U,e),Reflect.has(t,n)}}}function Te(e,t,n){return r=>(r=Y(r),F(t,r,n),he(t[e](r),n))}function q(e,t,n){return function*(){F(t,U,n);let r=t.keys();for(let i of t[e]()){let s=r.next().value;F(t,s,n),yield he(i,n)}}}function nn(e,t){return function(r,i){F(e,U,t),e.forEach(function(s,o,l){F(e,o,t),r.call(i,he(s,t),he(o,t),he(l,t))},i)}}function fe(e,t,n,r){return(i,s)=>{i=Y(i);let o=n.has(i),l=n[t](i),c=n[e](i,s),h=n.has(i);return o!==h&&X(n,U,r),l!==n[t](i)&&X(n,i,r),c}}function rn(e,t){return()=>{let n=[...e.keys()];e.clear(),X(e,U,t);for(let r of n)X(e,r,t)}}var Dr={Set:(e,t)=>({has:Te("has",e,t),add:fe("add","has",e,t),delete:fe("delete","has",e,t),keys:q("keys",e,t),values:q("values",e,t),entries:q("entries",e,t),[Symbol.iterator]:q(Symbol.iterator,e,t),forEach:nn(e,t),clear:rn(e,t),get size(){return F(e,U,t),e.size}}),Map:(e,t)=>({has:Te("has",e,t),get:Te("get",e,t),set:fe("set","get",e,t),delete:fe("delete","has",e,t),keys:q("keys",e,t),values:q("values",e,t),entries:q("entries",e,t),[Symbol.iterator]:q(Symbol.iterator,e,t),forEach:nn(e,t),clear:rn(e,t),get size(){return F(e,U,t),e.size}}),WeakMap:(e,t)=>({has:Te("has",e,t),get:Te("get",e,t),set:fe("set","get",e,t),delete:fe("delete","has",e,t)})};function dt(e,t,n){let r=Dr[t](e,n);return Object.assign(on(n),{get(i,s){return pt.call(r,s)?r[s]:(F(i,s,n),he(i[s],n))}})}function pe(e,t){let n={type:"signal",value:e,observers:new Set},r=t(n),i=()=>(yt(n),r);return i[ie]=n,i.set=function(o){Object.is(n.value,o)||(n.value=o,r=t(n),We(n))},i}function _r(e){if(typeof e!="function"||e[ie]?.type!=="signal")throw new g(`Value is not a signal (${e})`);We(e[ie])}function Or(){return pe(null,e=>e.value)}function xr(e){return pe(e,t=>de(t.value,t))}function Rr(e){return pe(e,t=>de(t.value,t))}function Mr(e){return pe(e,t=>de(t.value,t))}function Ir(e){return pe(e,t=>de(t.value,t))}function x(e){return pe(e,t=>t.value)}x.trigger=_r;x.ref=Or;x.Array=xr;x.Map=Mr;x.Object=Rr;x.Set=Ir;function Pr(){throw new g("Cannot write to a read-only computed value. Pass a `set` option to make it writable.")}function se(e,t={}){let n=Ke(()=>{let i=e();return Object.is(n.value,i)||We(n),i},!0);function r(){return n.state!==0&&Ue(n),yt(n),n.value}return r[ie]=n,r.set=t.set??Pr,oe()?.computations.push(n),r}function Ae(e){let t=Ke(()=>(t.value||t.observers.size?(P(void 0),gt(t),P(t)):Se(t),e()),!1);return z()?.observers.add(t),Ue(t),function(){t.state=0;let r=z();P(void 0),gt(t),P(r)}}function gt(e){Se(e),Lr(e);for(let t of e.observers)t.state=0,gt(t);e.observers.clear()}function Lr(e){let t=e.value;t&&typeof t=="function"&&(t(),e.value=void 0)}function ln(e,t={}){let n=x(t.initial),r=x(!1),i=x(null),s=x(0),o=oe(),l=0,c=null,h=!1,a=null;function u(){r.set(!0),h=!0}function f(){r.set(!1),h=!1,a?.resolve(),a=null}let m=Ae(()=>{s();let d=++l;c&&c.abort();let S=new AbortController;c=S;let N=[S.signal];o?.abortSignal&&N.push(o.abortSignal),u(),i.set(null);let w;try{w=e({abortSignal:AbortSignal.any(N)})}catch(T){if(d!==l)return;if(Ve(T)){f();return}i.set(T),f();return}w.then(T=>{d===l&&(n.set(T),f())},T=>{if(d===l){if(Ve(T)){f();return}i.set(T),f()}})});function p(){m(),c?.abort(),c=null,h=!1,a?.resolve(),a=null}o?.onDestroy(p);let b=(()=>n());return b.loading=()=>r(),b.error=()=>i(),b.refresh=()=>s.set(s()+1),b.dispose=p,b.currentPromise=()=>{if(!h)return Promise.resolve();if(!a){let d;a={promise:new Promise(S=>d=S),resolve:d}}return a.promise},b}function Br(e,t,n){if(typeof n=="function")return n.name||"[Function]";if(n&&typeof n=="object"){let r=n.constructor;if(r&&r!==Object&&r!==Array)return`[Instance of ${r.name||"anonymous"}]`;if(e.includes(n))return"[Known object]";e.push(n)}return n}function W(e,t,n="Value does not match the type"){let r=Nt(e,t);if(r.length){let i=[],s=JSON.stringify(r,Br.bind(null,i),2);throw new g(`${n}
2
+ ${s}`)}}function bt(e,t,n,r,i=1){return{issueDepth:0,path:n,value:t,get isValid(){return!e.length},addIssue(s){e.push({received:this.value,path:this.path.join(" > "),...s})},mergeIssues(s){e.push(...s)},validate(s){s(this),!this.isValid&&r&&(r.issueDepth=this.issueDepth+i)},withIssues(s){return bt(s,this.value,this.path,this,0)},withKey(s){return bt(e,this.value[s],this.path.concat(s),this)}}}function Nt(e,t){let n=[];return t(bt(n,e,[])),n}var Et=Symbol("default"),an=Symbol("innerType"),Ge=Symbol("shape"),cn=Symbol("elementType"),un=Symbol("optional"),fn=Symbol("intersection");function le(e){return typeof e=="function"?e[Et]:void 0}function jr(e,t){let n=function(i){i.value!==void 0&&i.validate(e)};return n[un]=!0,n[an]=e,t!==void 0&&(n[Et]=typeof t=="function"?t:()=>t),n}function Vr(e){return typeof e=="function"&&un in e}function M(e){return e.optional=t=>jr(e,t),e}function hn(e,t){return Be(e,t)}function Be(e,t){if(typeof t!="function")return e;if(e===void 0){let l=t[Et];if(!l)return e;e=l()}let n=t[an]||t;if(typeof n!="function"||!e||typeof e!="object")return e;let r=n[fn];if(r){let l=e;for(let c of r)l=Be(l,c);return l}let i=n[cn];if(i&&Array.isArray(e)){let l=e;for(let c=0;c<e.length;c++){let h=Be(e[c],i);h!==e[c]&&(l===e&&(l=[...e]),l[c]=h)}return l}let s=n[Ge];if(!s)return e;let o=e;for(let l in s){let c=o[l],h=Be(c,s[l]);h!==c&&(o===e&&(o=Array.isArray(e)?[...e]:{...e}),o[l]=h)}return o}function Fr(){return M(function(){})}function Kr(){return M(function(t){typeof t.value!="boolean"&&t.addIssue({message:"value is not a boolean"})})}function Wr(){return M(function(t){typeof t.value!="number"&&t.addIssue({message:"value is not a number"})})}function Ur(){return M(function(t){typeof t.value!="string"&&!(t.value instanceof String)&&t.addIssue({message:"value is not a string"})})}function zr(e){let t=M(function(r){if(!Array.isArray(r.value)){r.addIssue({message:"value is not an array"});return}if(e)for(let i=0;i<r.value.length;i++)r.withKey(i).validate(e)});return e&&(t[cn]=e),t}function $t(e){return M(function(n){(typeof n.value!="function"||!(n.value===e||n.value.prototype instanceof e))&&n.addIssue({message:`value is not '${e.name}' or an extension`})})}function Hr(e,t,n="value does not match custom validation"){return M(function(i){i.validate(e),i.isValid&&(t(i.value)||i.addIssue({message:n}))})}function Gr(e=[],t=void 0){return M(function(r){typeof r.value!="function"&&r.addIssue({message:"value is not a function"})})}function dn(e){return M(function(n){n.value instanceof e||n.addIssue({message:`value is not an instance of '${e.name}'`})})}function qr(e){let t=M(function(r){for(let i of e)r.validate(i)});return t[fn]=e,t}function St(e){return M(function(n){n.value!==e&&n.addIssue({message:`value is not equal to ${typeof e=="string"?`'${e}'`:e}`})})}function Xr(e){return kt(e.map(St))}function pn(e,t,n){if(typeof e.value!="object"||Array.isArray(e.value)||e.value===null){e.addIssue({message:"value is not an object"});return}if(!t)return;let r=!Array.isArray(t),i,s;if(r)s=Object.keys(t),i=t;else{s=t,i={};for(let l of s)i[l]=null}let o=[];for(let l of s){if(e.value[l]===void 0){Vr(i[l])||o.push(l);continue}r&&e.withKey(l).validate(i[l])}if(o.length&&e.addIssue({message:"object value has missing keys",missingKeys:o}),n){let l=[];for(let c in e.value)s.includes(c)||l.push(c);l.length&&e.addIssue({message:"object value has unknown keys",unknownKeys:l})}}function Yr(e={}){let t=M(function(r){pn(r,e,!1)});return Array.isArray(e)||(t[Ge]=e),t}function Zr(e){let t=M(function(r){pn(r,e,!0)});return Array.isArray(e)||(t[Ge]=e),t}function Jr(e){return M(function(n){n.value instanceof Promise||n.addIssue({message:"value is not a promise"})})}function Qr(e){return M(function(n){if(typeof n.value!="object"||Array.isArray(n.value)||n.value===null){n.addIssue({message:"value is not an object"});return}if(e)for(let r in n.value)n.withKey(r).validate(e)})}function ei(e){let t=M(function(r){if(!Array.isArray(r.value)){r.addIssue({message:"value is not an array"});return}if(r.value.length!==e.length){r.addIssue({message:"tuple value does not have the correct length"});return}for(let i=0;i<e.length;i++)r.withKey(i).validate(e[i])});return t[Ge]=e,t}function kt(e){return M(function(n){let r=0,i=[];for(let s of e){let o=n.withIssues(i);if(o.validate(s),i.length===r||o.issueDepth>0){n.mergeIssues(i.slice(r));return}r=i.length}n.addIssue({message:"value does not match union type",subIssues:i})})}function ti(e){return M(function(n){(typeof n.value!="function"||!n.value[ie])&&n.addIssue({message:"value is not a reactive value"})})}function ni(e){if(typeof HTMLElement>"u")throw new Error("Cannot use ref in a non-DOM environment");return kt([St(null),dn(e||HTMLElement)])}var Ct={and:qr,any:Fr,array:zr,boolean:Kr,constructor:$t,customValidator:Hr,function:Gr,instanceOf:dn,literal:St,number:Wr,object:Yr,or:kt,promise:Jr,record:Qr,ref:ni,selection:Xr,signal:ti,strictObject:Zr,string:Ur,tuple:ei},mn=class{_map=x.Object(Object.create(null));_name;_validation;constructor(e={}){this._name=e.name||"registry",this._validation=e.validation}entries=se(()=>Object.entries(this._map()).sort((t,n)=>t[1][0]-n[1][0]).map(([t,n])=>[t,n[1]]));items=se(()=>this.entries().map(e=>e[1]));addById(e,t={}){if(!e.id)throw new g(`Item should have an id key (registry '${this._name}')`);return this.add(e.id,e,t)}add(e,t,n={}){if(!n.force&&e in this._map())throw new g(`Key "${e}" is already registered (registry '${this._name}'). Use { force: true } to overwrite.`);if(this._validation){let r=this._name?` (registry '${this._name}', key: '${e}')`:` (key: '${e}')`;W(t,this._validation,`Registry entry does not match the type${r}`)}return this._map()[e]=[n.sequence??50,t],this}get(e,t){let n=e in this._map();if(!n&&arguments.length<2)throw new g(`Cannot find key "${e}" (registry '${this._name}')`);return n?this._map()[e][1]:t}delete(e){delete this._map()[e]}has(e){return e in this._map()}use(e,t,n={}){let r=K();return this.add(e,t,n),r.onDestroy(()=>{this._map()[e]?.[1]===t&&this.delete(e)}),this}useById(e,t={}){if(!e.id)throw new g(`Item should have an id key (registry '${this._name}')`);return this.use(e.id,e,t)}},gn=class{_items=x.Array([]);_name;_validation;constructor(e={}){this._name=e.name,this._validation=e.validation}items=se(()=>this._items().sort((e,t)=>e[0]-t[0]).map(e=>e[1]));add(e,t={}){if(this._validation){let n=this._name?` (resource '${this._name}')`:"";W(e,this._validation,`Resource item does not match the type${n}`)}return this._items().push([t.sequence??50,e]),this}delete(e){let t=this._items().filter(([n,r])=>r!==e);return this._items.set(t),this}has(e){return this._items().some(([t,n])=>n===e)}use(e,t={}){let n=K();return this.add(e,t),n.onDestroy(()=>this.delete(e)),this}},qe=class{static _shadowId;static get id(){return this._shadowId??this.name}static set id(e){this._shadowId=e}static sequence=50;__owl__;constructor(e){this.__owl__=e}setup(){}},me=class extends ke{config;plugins;ready=Promise.resolve();hasPendingReady=!1;constructor(e,t={}){if(super(e),this.config=t.config??{},this.pluginManager=this,t.parent){let n=t.parent;n.onDestroy(()=>this.destroy()),this.plugins=Object.create(n.plugins)}else this.plugins={}}destroy(){this.finalize(e=>console.error(e))}getPluginById(e){return this.plugins[e]||null}getPlugin(e){return this.getPluginById(e.id)}startPlugin(e){if(!e.id)throw new g(`Plugin "${e.name}" has no id`);if(this.plugins.hasOwnProperty(e.id)){let n=this.getPluginById(e.id).constructor;if(n!==e)throw new g(`Trying to start a plugin with the same id as an other plugin (id: '${e.id}', existing plugin: '${n.name}', starting plugin: '${e.name}')`);return null}let t=new e(this);return this.plugins[e.id]=t,t.setup(),t}startPlugins(e){let t=e.filter(o=>!o.id||this.plugins.hasOwnProperty(o.id)?(this.startPlugin(o),!1):!0);if(!t.length)return;t.sort((o,l)=>o.sequence-l.sequence);let n=[];for(let o of t){let l=n[n.length-1];l&&l[0].sequence===o.sequence?l.push(o):n.push([o])}let r=o=>{H.push(this);try{for(let c of o)this.startPlugin(c)}finally{H.pop()}let l=this.willStart.splice(0);return l.length?Promise.all(l.map(c=>c())):null},i=this.hasPendingReady?this.ready:null;for(let o of n)i?i=i.then(()=>r(o)):i=r(o);if(!i){this.status<A.MOUNTED&&(this.status=A.MOUNTED);return}this.hasPendingReady=!0;let s=this.ready=i.then(()=>{this.status<A.MOUNTED&&(this.status=A.MOUNTED),this.ready===s&&(this.hasPendingReady=!1)})}};function Xe(e,t){Array.isArray(t)?e.startPlugins(t):e.onDestroy(Ae(()=>{let n=t.items();wt(()=>e.startPlugins(n))}))}function Ye(e){let t=K();t.willStart.push(t.decorate(e,"onWillStart"))}function Z(e){let t=K();t.onDestroy(t.decorate(e,"onWillDestroy"))}function De(e){Z(Ae(e))}function bn(e,t,n,r){typeof e=="function"?De(()=>{let i=e();if(i)return i.addEventListener(t,n,r),()=>i.removeEventListener(t,n,r)}):(e.addEventListener(t,n,r),Z(()=>e.removeEventListener(t,n,r)))}function vn(){return K().app}function yn(e){let t=K(),n=t.pluginManager.getPluginById(e.id);if(!n)if(t instanceof me)n=t.pluginManager.startPlugin(e);else throw new g(`Unknown plugin "${e.id}"`);return n}function wn(e,t){let n=K();if(!(n instanceof me))throw new g("Expected to be in a plugin scope");n.app.dev&&t&&W(n.config,Ct.object({[e]:t}),"Config does not match the type");let r=n.config[e];return r===void 0?le(t)?.():r}var Tn=class extends EventTarget{trigger(e,t){this.dispatchEvent(new CustomEvent(e,{detail:t}))}},Ee=class extends String{};function At(e){return e instanceof Ee?e:e===void 0?Ne(""):typeof e=="number"?Ne(String(e)):([["&","&amp;"],["<","&lt;"],[">","&gt;"],["'","&#x27;"],['"',"&quot;"],["`","&#x60;"]].forEach(t=>{e=String(e).replace(new RegExp(t[0],"g"),t[1])}),Ne(e))}function Ne(e,...t){if(!Array.isArray(e))return new Ee(e);let n=e,r="",i=0;for(;i<t.length;++i)r+=n[i]+At(t[i]);return r+=n[i],new Ee(r)}var ri="3.0.0-alpha.39",Q=new WeakMap,ce=new WeakMap;function xn(e,t,n,r){for(;e;){r&&e.fiber&&Q.set(e.fiber,t);let i=ce.get(e);if(i)for(let s=i.length-1;s>=0;s--)try{return i[s](t,n),{handled:!0,error:t}}catch(o){t=o}e=e.parent}return{handled:!1,error:t}}function Rn(e){return(t,n)=>{if(e.app.destroyed)throw t;let{handled:r}=xn(e,t,n,!1);r||e.app._handleError(n())}}function ve(e){let{error:t}=e,n="node"in e?e.node:e.fiber.node,r="fiber"in e?e.fiber:n.fiber,i=n.app;if(i.destroyed)throw t;if(r){let l=r;do l.node.fiber=l,Q.set(l,t),l=l.parent;while(l);Q.set(r.root,t)}let s=()=>{try{i.destroy()}catch{}return t},o=xn(n,t,s,!0);o.handled||(t=o.error,i._handleError(s()))}function Mn(e){e=e.slice();let t=[],n;for(;(n=e[0])&&typeof n=="string";)t.push(e.shift());return{modifiers:t,data:e}}var ye={shouldNormalizeDom:!0,mainEventHandler:(e,t,n)=>(typeof e=="function"?e(t):Array.isArray(e)&&(e=Mn(e).data,e[0](e[1],t)),!1)},Nn=globalThis.document?.createTextNode(""),ii=class{key;child;parentEl;constructor(e,t){this.key=e,this.child=t}mount(e,t){this.parentEl=e,this.child.mount(e,t)}moveBeforeDOMNode(e,t){this.child.moveBeforeDOMNode(e,t)}moveBeforeVNode(e,t){this.moveBeforeDOMNode(e&&e.firstNode()||t)}patch(e,t){if(this===e)return;let n=this.child,r=e.child;if(this.key===e.key)n.patch(r,t);else{let i=n.firstNode();i.parentElement.insertBefore(Nn,i),t&&n.beforeRemove(),n.remove(),r.mount(this.parentEl,Nn),this.child=r,this.key=e.key}}beforeRemove(){this.child.beforeRemove()}remove(){this.child.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}};function ae(e,t){return new ii(e,t)}var Rt,Re,Wt,In;if(typeof Element<"u"){({setAttribute:Rt,removeAttribute:Re}=Element.prototype);let e=DOMTokenList.prototype;Wt=e.add,In=e.remove}var Pn=Array.isArray,{split:En,trim:Oe}=String.prototype,$n=/\s+/;function be(e,t){switch(t){case!1:case null:case void 0:Re.call(this,e);break;case!0:Rt.call(this,e,"");break;default:Rt.call(this,e,t)}}function si(e){return function(t){be.call(this,e,t)}}function oi(e){if(Pn(e))e[0]==="class"?Pt.call(this,e[1]):e[0]==="style"?Lt.call(this,e[1]):be.call(this,e[0],e[1]);else for(let t in e)t==="class"?Pt.call(this,e[t]):t==="style"?Lt.call(this,e[t]):be.call(this,t,e[t])}function li(e,t){if(Pn(e)){let n=e[0],r=e[1];if(n===t[0]){if(r===t[1])return;n==="class"?Ze.call(this,r,t[1]):n==="style"?Je.call(this,r,t[1]):be.call(this,n,r)}else Re.call(this,t[0]),be.call(this,n,r)}else{for(let n in t)n in e||(n==="class"?Ze.call(this,"",t[n]):n==="style"?Je.call(this,"",t[n]):Re.call(this,n));for(let n in e){let r=e[n];r!==t[n]&&(n==="class"?Ze.call(this,r,t[n]):n==="style"?Je.call(this,r,t[n]):be.call(this,n,r))}}}function Mt(e){let t={};switch(typeof e){case"string":let n=Oe.call(e);if(!n)return{};let r=En.call(n,$n);for(let i=0,s=r.length;i<s;i++)t[r[i]]=!0;return t;case"object":for(let i in e){let s=e[i];if(s){if(i=Oe.call(i),!i)continue;let o=En.call(i,$n);for(let l of o)t[l]=s}}return t;case"undefined":return{};case"number":return{[e]:!0};default:return{[e]:!0}}}var Dt={};function ai(e){if(e in Dt)return Dt[e];let t=e.replace(/[A-Z]/g,n=>"-"+n.toLowerCase());return Dt[e]=t,t}var Sn=/\s*!\s*important\s*$/i;function Ln(e,t,n){Sn.test(n)?e.setProperty(t,n.replace(Sn,""),"important"):e.setProperty(t,n)}function It(e){let t={};switch(typeof e){case"string":{let n=e,r=n.length,i=0;for(;i<r;){let s=i,o=0,l=0;for(;i<r;){let f=n.charCodeAt(i);if(l){if(f===92){i+=2;continue}f===l&&(l=0)}else if(f===34||f===39)l=f;else if(f===40)o++;else if(f===41)o>0&&o--;else if(f===59&&o===0)break;i++}let c=Oe.call(n.slice(s,i));if(i++,!c)continue;let h=c.indexOf(":");if(h===-1)continue;let a=Oe.call(c.slice(0,h)),u=Oe.call(c.slice(h+1));a&&u&&u!=="undefined"&&(t[a]=u)}return t}case"object":for(let n in e){let r=e[n];(r||r===0)&&(t[ai(n)]=String(r))}return t;default:return{}}}function Pt(e){e=e===""?{}:Mt(e);for(let t in e)Wt.call(this.classList,t)}function Ze(e,t){t=t===""?{}:Mt(t),e=e===""?{}:Mt(e);for(let n in t)n in e||In.call(this.classList,n);for(let n in e)e[n]!==t[n]&&Wt.call(this.classList,n)}function Lt(e){e=e===""?{}:It(e);let t=this.style;for(let n in e)Ln(t,n,e[n])}function Je(e,t){t=t===""?{}:It(t),e=e===""?{}:It(e);let n=this.style;for(let r in t)r in e||n.removeProperty(r);for(let r in e)e[r]!==t[r]&&Ln(n,r,e[r]);n.cssText||Re.call(this,"style")}function ci(e){if(!e)return!1;if(e.ownerDocument.contains(e))return!0;let t=e.getRootNode();return t instanceof ShadowRoot&&e.ownerDocument.contains(t.host)}function ui(e,t){let n=e,r=t.defaultView.ShadowRoot;for(;n;){if(n===t)return!0;if(n.parentNode)n=n.parentNode;else if(n instanceof r&&n.host)n=n.host;else return!1}return!1}function fi(e){let t=e&&e.ownerDocument;if(t){if(!t.defaultView)throw new g("Cannot mount a component: the target document is not attached to a window (defaultView is missing)");let n=t.defaultView.HTMLElement;if(e instanceof n||e instanceof ShadowRoot){if(!ui(e,t))throw new g("Cannot mount a component on a detached dom node");return}}throw new g("Cannot mount component: the target is not a valid DOM element")}function hi(e){return new Promise(function(t){document.readyState!=="loading"?t(!0):document.addEventListener("DOMContentLoaded",t,!1)}).then(e||function(){})}function Bn(e){let t=e.split(".")[0],n=e.includes(".capture"),r=e.includes(".passive");return e.includes(".synthetic")?gi(t,n,r):pi(t,n,r)}var di=1;function pi(e,t=!1,n=!1){let r=`__event__${e}_${di++}`;t&&(r=`${r}_capture`);function i(h){let a=h.currentTarget;if(!a||!ci(a))return;let u=a[r];u&&ye.mainEventHandler(u,h,a)}let s={capture:t,passive:n};function o(h){this[r]=h,this.addEventListener(e,i,s)}function l(){delete this[r],this.removeEventListener(e,i,s)}function c(h){this[r]=h}return{setup:o,update:c,remove:l}}var mi=1;function gi(e,t=!1,n=!1){let r=`__event__synthetic_${e}`;t&&(r=`${r}_capture`),vi(e,r,t,n);let i=mi++;function s(l){let c=this[r]||{};c[i]=l,this[r]=c}function o(){delete this[r]}return{setup:s,update:s,remove:o}}function bi(e,t){let n=t.target;for(;n!==null;){let r=n[e];if(r){for(let i of Object.values(r))if(ye.mainEventHandler(i,t,n))return}n=n.parentNode}}var kn={};function vi(e,t,n=!1,r=!1){kn[t]||(document.addEventListener(e,i=>bi(t,i),{capture:n,passive:r}),kn[t]=!0)}var yi=(e,t)=>Object.getOwnPropertyDescriptor(e,t),_e,jn,Bt;if(typeof Node<"u"){let e=Node.prototype;_e=e.insertBefore,jn=yi(e,"textContent").set,Bt=e.removeChild}var Vn=class{children;anchors;parentEl;isOnlyChild;constructor(e){this.children=e}mount(e,t){let n=this.children,r=n.length,i=new Array(r);for(let s=0;s<r;s++){let o=n[s];if(o)o.mount(e,t);else{let l=document.createTextNode("");i[s]=l,_e.call(e,l,t)}}this.anchors=i,this.parentEl=e}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;let n=this.children,r=this.anchors;for(let i=0,s=n.length;i<s;i++){let o=n[i];if(o)o.moveBeforeDOMNode(e,t);else{let l=r[i];_e.call(t,l,e)}}}moveBeforeVNode(e,t){if(e){let s=e.children[0];t=(s?s.firstNode():e.anchors[0])||null}let n=this.children,r=this.parentEl,i=this.anchors;for(let s=0,o=n.length;s<o;s++){let l=n[s];if(l)l.moveBeforeVNode(null,t);else{let c=i[s];_e.call(r,c,t)}}}patch(e,t){if(this===e)return;let n=this.children,r=e.children,i=this.anchors,s=this.parentEl;for(let o=0,l=n.length;o<l;o++){let c=n[o],h=r[o];if(c)if(h)c.patch(h,t);else{let a=c.firstNode(),u=document.createTextNode("");i[o]=u,_e.call(s,u,a),t&&c.beforeRemove(),c.remove(),n[o]=void 0}else if(h){n[o]=h;let a=i[o];h.mount(s,a),Bt.call(s,a)}}}beforeRemove(){let e=this.children;for(let t=0,n=e.length;t<n;t++){let r=e[t];r&&r.beforeRemove()}}remove(){let e=this.parentEl;if(this.isOnlyChild)jn.call(e,"");else{let t=this.children,n=this.anchors;for(let r=0,i=t.length;r<i;r++){let s=t[r];s?s.remove():Bt.call(e,n[r])}}}firstNode(){let e=this.children[0];return e?e.firstNode():this.anchors[0]}toString(){return this.children.map(e=>e?e.toString():"").join("")}};function Ut(e){return new Vn(e)}var wi=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Qe,Fn,Kn;if(typeof Node<"u"){let e=Node.prototype;Qe=e.insertBefore,Kn=e.removeChild,Fn=wi(CharacterData.prototype,"data").set}var Ti=class{text;parentEl;el;constructor(e){this.text=e}mount(e,t){this.parentEl=e;let n=document.createTextNode(jt(this.text));Qe.call(e,n,t),this.el=n}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t,Qe.call(t,this.el,e)}moveBeforeVNode(e,t){Qe.call(this.parentEl,this.el,e?e.el:t)}beforeRemove(){}remove(){Kn.call(this.parentEl,this.el)}firstNode(){return this.el}patch(e){let t=e.text;this.text!==t&&(Fn.call(this.el,jt(t)),this.text=t)}toString(){return this.text}};function Me(e){return new Ti(e)}function jt(e){switch(typeof e){case"string":return e;case"number":return String(e);case"boolean":return e?"true":"false";default:return e||""}}var _t=(e,t)=>Object.getOwnPropertyDescriptor(e,t),xe,Wn,Un,rt,zt;typeof Node<"u"&&(xe=Node.prototype,Wn=Element.prototype,Un=_t(CharacterData.prototype,"data").set,rt=_t(xe,"firstChild").get,zt=_t(xe,"nextSibling").get);var Cn=()=>{};function Ni(e){return function(n){this[e]=n===0?0:n?n.valueOf():""}}var Ot={};function zn(e){if(e in Ot)return Ot[e];let n=new DOMParser().parseFromString(`<t>${e}</t>`,"text/xml").firstChild.firstChild;ye.shouldNormalizeDom&&Hn(n);let r=Vt(n),i=Ft(r),s=r.el,o=Si(s,i);return Ot[e]=o,o}function Hn(e){if(e.nodeType===Node.TEXT_NODE&&!/\S/.test(e.textContent)){e.remove();return}if(!(e.nodeType===Node.ELEMENT_NODE&&e.tagName==="pre"))for(let t=e.childNodes.length-1;t>=0;--t)Hn(e.childNodes.item(t))}function Vt(e,t=null,n=null){switch(e.nodeType){case Node.ELEMENT_NODE:{let r=n&&n.currentNS,i=e.tagName,s,o=[];if(i.startsWith("block-text-")){let c=parseInt(i.slice(11),10);o.push({type:"text",idx:c}),s=document.createTextNode("")}if(i.startsWith("block-child-")){n.isRef||An(n);let c=parseInt(i.slice(12),10);o.push({type:"child",idx:c}),s=document.createTextNode("")}if(r||=e.namespaceURI,s||(s=r?document.createElementNS(r,i):document.createElement(i)),s instanceof Element){n||document.createElement("template").content.appendChild(s);let c=e.attributes;for(let h=0;h<c.length;h++){let a=c[h].name,u=c[h].value;if(a.startsWith("block-handler-")){let f=parseInt(a.slice(14),10);o.push({type:"handler",idx:f,event:u})}else if(a.startsWith("block-attribute-")){let f=parseInt(a.slice(16),10);o.push({type:"attribute",idx:f,name:u,tag:i})}else if(a.startsWith("block-property-")){let f=parseInt(a.slice(15),10);o.push({type:"property",idx:f,name:u,tag:i})}else a==="block-attributes"?o.push({type:"attributes",idx:parseInt(u,10)}):a==="block-ref"?o.push({type:"ref",idx:parseInt(u,10)}):s.setAttribute(c[h].name,u)}}let l={parent:t,firstChild:null,nextSibling:null,el:s,info:o,refN:0,currentNS:r};if(e.firstChild){let c=e.childNodes[0];if(e.childNodes.length===1&&c.nodeType===Node.ELEMENT_NODE&&c.tagName.startsWith("block-child-")){let h=c.tagName,a=parseInt(h.slice(12),10);o.push({idx:a,type:"child",isOnlyChild:!0})}else{l.firstChild=Vt(e.firstChild,l,l),s.appendChild(l.firstChild.el);let h=e.firstChild,a=l.firstChild;for(;h=h.nextSibling;)a.nextSibling=Vt(h,a,l),s.appendChild(a.nextSibling.el),a=a.nextSibling}}return l.info.length&&An(l),l}case Node.TEXT_NODE:return{parent:t,firstChild:null,nextSibling:null,el:document.createTextNode(e.textContent),info:[],refN:0,currentNS:null}}throw new g("boom")}function An(e){e.isRef=!0;do e.refN++;while(e=e.parent)}function Ei(e){let t=e.parent;for(;t&&t.nextSibling===e;)e=t,t=t.parent;return t}function Ft(e,t,n){if(!t){let r=new Array(e.info.filter(i=>i.type==="child").length);t={collectors:[],locations:[],children:r,cbRefs:[],refN:e.refN},n=0}if(e.refN){let r=n,i=e.isRef,s=e.firstChild?e.firstChild.refN:0,o=e.nextSibling?e.nextSibling.refN:0;if(i){for(let l of e.info)l.refIdx=r;e.refIdx=r,$i(t,e),n++}if(o){let l=n+s;t.collectors.push({idx:l,prevIdx:r,getVal:zt}),Ft(e.nextSibling,t,l)}s&&(t.collectors.push({idx:n,prevIdx:r,getVal:rt}),Ft(e.firstChild,t,n))}return t}function $i(e,t){for(let n of t.info)switch(n.type){case"text":e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:Dn,updateData:Dn});break;case"child":n.isOnlyChild?e.children[n.idx]={parentRefIdx:n.refIdx,isOnlyChild:!0}:e.children[n.idx]={parentRefIdx:Ei(t).refIdx,afterRefIdx:n.refIdx};break;case"property":{let r=n.refIdx,i=Ni(n.name);e.locations.push({idx:n.idx,refIdx:r,setData:i,updateData:i});break}case"attribute":{let r=n.refIdx,i,s;n.name==="class"?(s=Pt,i=Ze):n.name==="style"?(s=Lt,i=Je):(s=si(n.name),i=s),e.locations.push({idx:n.idx,refIdx:r,setData:s,updateData:i});break}case"attributes":e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:oi,updateData:li});break;case"handler":{let{setup:r,update:i}=Bn(n.event);e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:r,updateData:i});break}case"ref":{e.locations.push({idx:n.idx,refIdx:n.refIdx,setData:Cn,updateData:Cn}),e.cbRefs.push(n.idx);break}}}function Si(e,t){let n=ki(e,t);return t.children.length?(n=class extends n{children;constructor(r,i){super(r),this.children=i}},n.prototype.beforeRemove=Vn.prototype.beforeRemove,(r,i=[])=>new n(r,i)):r=>new n(r)}function ki(e,t){let{refN:n,collectors:r,children:i,locations:s,cbRefs:o}=t;s.sort((y,E)=>y.idx-E.idx);let l=s.length,c=i.length,h=n>0,a=s.map(y=>y.refIdx),u=s.map(y=>y.setData),f=s.map(y=>y.updateData),m=[zt,rt],p=r.length,b=r.map(y=>y.idx&32767|(y.prevIdx&32767)<<15|(y.getVal===rt?1:0)<<30),d=i.map(y=>y.parentRefIdx&32767|(y.isOnlyChild?1:0)<<15|((y.afterRefIdx??0)&32767)<<16),S=xe.cloneNode,N=xe.insertBefore,w=Wn.remove;class T{el;parentEl;data;children;refs;constructor(E){this.data=E}beforeRemove(){}remove(){w.call(this.el)}firstNode(){return this.el}moveBeforeDOMNode(E,v=this.parentEl){this.parentEl=v,N.call(v,this.el,E)}moveBeforeVNode(E,v){N.call(this.parentEl,this.el,E?E.el:v)}toString(){let E=document.createElement("div");return this.mount(E,null),E.innerHTML}mount(E,v){let k=S.call(e,!0);N.call(E,k,v),this.el=k,this.parentEl=E}patch(E,v){}}return h&&(T.prototype.mount=function(E,v){let k=S.call(e,!0),D=new Array(n);this.refs=D,D[0]=k;for(let O=0;O<p;O++){let C=b[O];D[C&32767]=m[C>>30&1].call(D[C>>15&32767])}if(l){let O=this.data;for(let C=0;C<l;C++)u[C].call(D[a[C]],O[C])}if(c){let O=this.children;for(let C=0;C<c;C++){let R=O[C];if(R){let L=d[C],we=L>>16&32767,Le=we?D[we]:null;R.isOnlyChild=!!(L&32768),R.mount(D[L&32767],Le)}}}if(N.call(E,k,v),this.el=k,this.parentEl=E,o.length){let O=this.data,C=this.refs;for(let R of o){let L=O[R];L(C[a[R]],null)}}},T.prototype.patch=function(E,v){if(this===E)return;let k=this.refs;if(l){let D=this.data,O=E.data;for(let C=0;C<l;C++){let R=D[C],L=O[C];R!==L&&f[C].call(k[a[C]],L,R)}this.data=O}if(c){let D=this.children,O=E.children;for(let C=0;C<c;C++){let R=D[C],L=O[C];if(R)L?R.patch(L,v):(v&&R.beforeRemove(),R.remove(),D[C]=void 0);else if(L){let we=d[C],Le=we>>16&32767,br=Le?k[Le]:null;L.mount(k[we&32767],br),D[C]=L}}}},T.prototype.remove=function(){if(o.length){let E=this.data,v=this.refs;for(let k of o){let D=E[k];D(null,v[a[k]])}}w.call(this.el)}),T}function Dn(e){Un.call(this,jt(e))}var Ci=(e,t)=>Object.getOwnPropertyDescriptor(e,t),Gn,qn,Xn,Kt;if(typeof Node<"u"){let e=Node.prototype;Gn=e.insertBefore,qn=e.appendChild,Xn=e.removeChild,Kt=Ci(e,"textContent").set}var Ai=class{children;anchor;parentEl;isOnlyChild;constructor(e){this.children=e}mount(e,t){let n=this.children,r=document.createTextNode("");this.anchor=r,Gn.call(e,r,t);let i=n.length;if(i){let s=n[0].mount;for(let o=0;o<i;o++)s.call(n[o],e,r)}this.parentEl=e}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;let n=this.children;for(let r=0,i=n.length;r<i;r++)n[r].moveBeforeDOMNode(e,t);t.insertBefore(this.anchor,e)}moveBeforeVNode(e,t){if(e){let r=e.children[0];t=(r?r.firstNode():e.anchor)||null}let n=this.children;for(let r=0,i=n.length;r<i;r++)n[r].moveBeforeVNode(null,t);this.parentEl.insertBefore(this.anchor,t)}patch(e,t){if(this===e)return;let n=this.children,r=e.children;if(r.length===0&&n.length===0)return;this.children=r;let i=r[0]||n[0],{mount:s,patch:o,remove:l,beforeRemove:c,moveBeforeVNode:h,firstNode:a}=i,u=this.anchor,f=this.isOnlyChild,m=this.parentEl;if(r.length===0&&f){if(t)for(let v=0,k=n.length;v<k;v++)c.call(n[v]);Kt.call(m,""),qn.call(m,u);return}let p=0,b=0,d=n[0],S=r[0],N=n.length-1,w=r.length-1,T=n[N],y=r[w],E;for(;p<=N&&b<=w;){if(d===null){d=n[++p];continue}if(T===null){T=n[--N];continue}let v=d.key,k=S.key;if(v===k){o.call(d,S,t),r[b]=d,d=n[++p],S=r[++b];continue}let D=T.key,O=y.key;if(D===O){o.call(T,y,t),r[w]=T,T=n[--N],y=r[--w];continue}if(v===O){o.call(d,y,t),r[w]=d;let R=r[w+1];h.call(d,R,u),d=n[++p],y=r[--w];continue}if(D===k){o.call(T,S,t),r[b]=T;let R=n[p];h.call(T,R,u),T=n[--N],S=r[++b];continue}E=E||Di(n,p,N);let C=E[k];if(C===void 0)s.call(S,m,a.call(d)||null);else{let R=n[C];h.call(R,d,null),o.call(R,S,t),r[b]=R,n[C]=null}S=r[++b]}if(p<=N||b<=w)if(p>N){let v=r[w+1],k=v?a.call(v)||null:u;for(let D=b;D<=w;D++)s.call(r[D],m,k)}else for(let v=p;v<=N;v++){let k=n[v];k&&(t&&c.call(k),l.call(k))}}beforeRemove(){let e=this.children,t=e.length;if(t){let n=e[0].beforeRemove;for(let r=0;r<t;r++)n.call(e[r])}}remove(){let{parentEl:e,anchor:t}=this;if(this.isOnlyChild)Kt.call(e,"");else{let n=this.children,r=n.length;if(r){let i=n[0].remove;for(let s=0;s<r;s++)i.call(n[s])}Xn.call(e,t)}}firstNode(){let e=this.children[0];return e?e.firstNode():void 0}toString(){return this.children.map(e=>e.toString()).join("")}};function Yn(e){return new Ai(e)}function Di(e,t,n){let r={};for(let i=t;i<=n;i++)r[e[i].key]=i;return r}var ge,Zn;if(typeof Node<"u"){let e=Node.prototype;ge=e.insertBefore,Zn=e.removeChild}var _i=class{html;parentEl;content=[];constructor(e){this.html=e}mount(e,t){this.parentEl=e;let n=document.createElement("template");n.innerHTML=this.html,this.content=[...n.content.childNodes];for(let r of this.content)ge.call(e,r,t);if(!this.content.length){let r=document.createTextNode("");this.content.push(r),ge.call(e,r,t)}}moveBeforeDOMNode(e,t=this.parentEl){this.parentEl=t;for(let n of this.content)ge.call(t,n,e)}moveBeforeVNode(e,t){let n=e?e.content[0]:t;this.moveBeforeDOMNode(n)}patch(e){if(this===e)return;let t=e.html;if(this.html!==t){let n=this.parentEl,r=this.content[0],i=document.createElement("template");i.innerHTML=t;let s=[...i.content.childNodes];for(let o of s)ge.call(n,o,r);if(!s.length){let o=document.createTextNode("");s.push(o),ge.call(n,o,r)}this.remove(),this.content=s,this.html=e.html}}beforeRemove(){}remove(){let e=this.parentEl;for(let t of this.content)Zn.call(e,t)}firstNode(){return this.content[0]}toString(){return this.html}};function Ht(e){return new _i(e)}function Oi(e){let t=Object.keys(e).length;class n{child;handlerData;handlerFns=[];parentEl;afterNode=null;constructor(i,s){this.child=i,this.handlerData=s}mount(i,s){this.parentEl=i,this.child.mount(i,s),this.afterNode=document.createTextNode(""),i.insertBefore(this.afterNode,s),this.wrapHandlerData();for(let o in e){let l=e[o],c=Bn(o);this.handlerFns[l]=c,c.setup.call(i,this.handlerData[l])}}wrapHandlerData(){for(let i=0;i<t;i++){let s=this.handlerData[i],o=s.length-2,l=s[o],c=this;s[o]=function(h,a){let u=a.target,f=c.child.firstNode(),m=c.afterNode;for(;f&&f!==m;){if(f.contains(u))return l(h,a);f=f.nextSibling}}}}moveBeforeDOMNode(i,s=this.parentEl){this.parentEl=s,this.child.moveBeforeDOMNode(i,s),s.insertBefore(this.afterNode,i)}moveBeforeVNode(i,s){i&&(s=i.firstNode()||s),this.child.moveBeforeVNode(i?i.child:null,s),this.parentEl.insertBefore(this.afterNode,s)}patch(i,s){if(this!==i){this.handlerData=i.handlerData,this.wrapHandlerData();for(let o=0;o<t;o++)this.handlerFns[o].update.call(this.parentEl,this.handlerData[o]);this.child.patch(i.child,s)}}beforeRemove(){this.child.beforeRemove()}remove(){for(let i=0;i<t;i++)this.handlerFns[i].remove.call(this.parentEl);this.child.remove(),this.afterNode.remove()}firstNode(){return this.child.firstNode()}toString(){return this.child.toString()}}return function(r,i){return new n(r,i)}}function et(e,t,n=null){e.mount(t,n)}function xi(e,t,n=!1){e.patch(t,n)}function Ri(e,t=!1){t&&e.beforeRemove(),e.remove()}function Mi(e){switch(e.__owl__.status){case A.NEW:return"new";case A.CANCELLED:return"cancelled";case A.MOUNTED:return e instanceof qe?"started":"mounted";case A.DESTROYED:return"destroyed"}}function Ii(e,t){let n=e.fiber;return n&&(Gt(n.children),n.root=null),new ot(e,t)}function Pi(e){let t=e.fiber;if(t){let r=t.root;return r.locked=!0,r.setCounter(r.counter+1-Gt(t.children)),r.locked=!1,t.children=[],t.childrenMap={},t.bdom=null,Q.has(t)&&(Q.delete(t),Q.delete(r),t.appliedToDom=!1,t instanceof it&&(t.mounted=t instanceof Jn?[t]:[])),t}let n=new it(e,null);return e.willPatch.length&&n.willPatch.push(n),e.patched.length&&n.patched.push(n),n}function Li(){throw new g("Attempted to render cancelled fiber")}function Gt(e){let t=0;for(let n of e){let r=n.node;n.render=Li,r.status===A.NEW&&r.cancel(),r.fiber=null,n.bdom?r.forceNextRender=!0:(t++,r.bdom&&(r.forceNextRender=!0)),t+=Gt(n.children)}return t}var ot=class{node;bdom=null;root;parent;children=[];appliedToDom=!1;deep=!1;childrenMap={};constructor(e,t){if(this.node=e,this.parent=t,t){this.deep=t.deep;let n=t.root;n.setCounter(n.counter+1),this.root=n,t.children.push(this)}else this.root=this}render(){let e=this.root.node.app.scheduler;if(e.tasks.size>1){let r=this.root.node,i=r.parent;for(;i;){if(i.fiber){let s=i.fiber.root;if(s.counter===0&&r.parentKey in i.fiber.childrenMap)i=s.node;else{e.delayedRenders.push(this);return}}r=i,i=i.parent}}let t=this.node,n=this.root;if(n){let r=z();Se(t.signalComputation),P(t.signalComputation),t.signalComputation.state=$e.EXECUTED;try{this.bdom=!0,this.bdom=t.renderFn()}catch(s){ve({node:t,error:s})}finally{P(r)}let i=n.counter-1;n.counter=i,i===0&&e.flush()}}},it=class extends ot{counter=1;willPatch=[];patched=[];mounted=[];locked=!1;complete(){let e=this.node;this.locked=!0;let t,n=this.mounted;try{for(t of this.willPatch){let i=t.node;if(i.fiber===t){let s=i.component;for(let o of i.willPatch)o.call(s)}}for(t=void 0,e._patch(),this.locked=!1;t=n.pop();)if(t=t,t.appliedToDom)for(let i of t.node.mounted)i();let r=this.patched;for(;t=r.pop();)if(t=t,t.appliedToDom)for(let i of t.node.patched)i()}catch(r){for(let i of n)i.node.willUnmount=[];this.locked=!1,ve({fiber:t||this,error:r})}}setCounter(e){this.counter=e,e===0&&this.node.app.scheduler.flush()}},Jn=class extends it{target;position;afterNode=null;prepared=!1;onPrepared=null;constructor(e,t,n={}){super(e,null),this.target=t,this.position=n.position||"last-child",this.afterNode=n.afterNode??null}complete(){this.prepared=!0,this.target?this._mount():(this.appliedToDom=!0,this.onPrepared?.())}commit(e,t={}){this.target=e,this.position=t.position||"last-child",this.afterNode=t.afterNode??null,this.prepared&&this._mount()}_mount(){let e=this;try{let t=this.node;if(t.children=this.childrenMap,t.app.constructor.validateTarget(this.target),t.bdom)t.updateDom();else if(t.bdom=this.bdom,this.afterNode)et(t.bdom,this.target,this.afterNode);else if(this.position==="last-child"||this.target.childNodes.length===0)et(t.bdom,this.target);else{let r=this.target.childNodes[0];et(t.bdom,this.target,r)}t.fiber=null,t.status=A.MOUNTED,this.appliedToDom=!0;let n=this.mounted;for(;e=n.pop();)if(e.appliedToDom)for(let r of e.node.mounted)r()}catch(t){ve({fiber:e,error:t})}}},Ie=class extends ke{fiber=null;component;bdom=null;componentName;forceNextRender=!1;parentKey;props;defaultProps=null;renderFn;parent;children=Object.create(null);willUpdateProps=[];propsUpdated=[];willUnmount=[];mounted=[];willPatch=[];patched=[];signalComputation;trackedRefs=null;constructor(e,t,n,r,i){super(n),this.parent=r,this.parentKey=i,this.pluginManager=r?r.pluginManager:n.pluginManager,this.componentName=e.name,this.signalComputation=Ke(()=>this.render(!1),!1,$e.EXECUTED),this.props=t;let s=z();P(void 0),H.push(this);try{this.component=new e(this);let o={this:this.component,__owl__:this};this.renderFn=n.getTemplate(e.template).bind(this.component,o,this),this.component.setup()}finally{H.pop(),P(s)}}decorate(e,t){let n=this.component,r=this;if(this.app.dev){let i=`${this.componentName}.${t}`;return{[i](...o){return e.call(n,r,...o)}}[i]}return e.bind(n,r)}async initiateRender(e){this.fiber=e,this.mounted.length&&e.root.mounted.push(e);let t=this.component,n=z();P(void 0);try{let r=this.willStart.map(i=>i.call(t));P(n),await Promise.all(r)}catch(r){if(Ve(r)&&this.status>A.MOUNTED)return;ve({node:this,error:r});return}this.status===A.NEW&&this.fiber===e&&e.render()}async render(e){if(this.status>=A.CANCELLED)return;let t=this.fiber;if(t&&(t.root.locked||t.bdom===!0)&&(await Promise.resolve(),t=this.fiber),t){if(!t.bdom&&!Q.has(t)){e&&(t.deep=e);return}e=e||t.deep}else if(!this.bdom)return;let n=Pi(this);n.deep=e,this.fiber=n,this.app.scheduler.addFiber(n),await Promise.resolve(),!(this.status>=A.CANCELLED)&&this.fiber===n&&(t||!n.parent)&&n.render()}cancel(){this._cancel(),delete this.parent.children[this.parentKey],this.app.scheduler.scheduleDestroy(this)}_cancel(){super.cancel();let e=this.children;for(let t in e)e[t]._cancel()}destroy(){let e=this.status===A.MOUNTED;J++;try{this._destroy()}finally{J--}e&&(this.bdom.remove(),xt())}_destroy(){let e=this.component;if(this.status===A.MOUNTED)for(let t of this.willUnmount)t.call(e);J&&this.trackedRefs&&(tt||=[]).push(this);for(let t in this.children)this.children[t]._destroy();this.finalize(t=>ve({error:t,node:this})),ze(this.signalComputation)}sweepRefs(){let e=this.trackedRefs;if(e)for(let[t,n]of e){let r=n.value;r?r.isConnected||(t.set(null),e.delete(t)):e.delete(t)}}updateDom(){if(this.fiber)if(this.bdom===this.fiber.bdom)for(let e in this.children)this.children[e].updateDom();else{J++;try{this.bdom.patch(this.fiber.bdom,!1)}finally{J--}this.sweepRefs(),xt(),this.fiber.appliedToDom=!0,this.fiber=null}}firstNode(){let e=this.bdom;return e?e.firstNode():void 0}mount(e,t){let n=this.fiber.bdom;this.bdom=n,n.mount(e,t),this.status=A.MOUNTED,this.fiber.appliedToDom=!0,this.children=this.fiber.childrenMap,this.fiber=null}moveBeforeDOMNode(e,t){this.bdom.moveBeforeDOMNode(e,t)}moveBeforeVNode(e,t){this.bdom.moveBeforeVNode(e?e.bdom:null,t)}trackRef(e,t){(this.trackedRefs||=new Map).set(e,t)}patch(){this.fiber&&this.fiber.parent&&this._patch()}_patch(){let e=!1;for(let n in this.children){e=!0;break}let t=this.fiber;this.children=t.childrenMap,J++;try{this.bdom.patch(t.bdom,e)}finally{J--}this.sweepRefs(),xt(),t.appliedToDom=!0,this.fiber=null}beforeRemove(){this._destroy()}remove(){this.bdom.remove()}},J=0,tt=null;function xt(){if(J===0&&tt){let e=tt;tt=null;for(let t=0;t<e.length;t++)e[t].sweepRefs()}}function G(){let e=K();if(!(e instanceof Ie))throw new g("Expected to be in a component scope");return e}var Qn;typeof window<"u"&&(Qn=window.requestAnimationFrame.bind(window));var Bi=class er{static requestAnimationFrame=Qn;tasks=new Set;requestAnimationFrame;frame=0;delayedRenders=[];cancelledNodes=new Set;processing=!1;constructor(){this.requestAnimationFrame=er.requestAnimationFrame,this.processTasks=this.processTasks.bind(this)}addFiber(t){this.tasks.add(t.root)}scheduleDestroy(t){this.cancelledNodes.add(t),this.frame===0&&(this.frame=this.requestAnimationFrame(this.processTasks))}flush(){if(this.delayedRenders.length){let t=this.delayedRenders;this.delayedRenders=[];for(let n of t)n.root&&n.node.status!==A.DESTROYED&&n.node.fiber===n&&n.render()}this.frame===0&&(this.frame=this.requestAnimationFrame(this.processTasks))}processTasks(){if(!this.processing){this.processing=!0,this.frame=0;for(let t of this.cancelledNodes)t._destroy();this.cancelledNodes.clear();for(let t of this.tasks){if(t.root!==t){this.tasks.delete(t);continue}let n=Q.has(t);if(n&&t.counter!==0){this.tasks.delete(t);continue}if(t.node.status===A.DESTROYED){this.tasks.delete(t);continue}t.counter===0&&(n||t.complete(),t.appliedToDom&&this.tasks.delete(t))}for(let t of this.tasks)t.node.status===A.DESTROYED&&this.tasks.delete(t);this.processing=!1}}},ee=class{static template="";__owl__;constructor(e){this.__owl__=e}setup(){}},ji=Object.create;function Vi(e,t){return e==null||e===!1?t:e}function Fi(e,t,n,r,i,s,o){n=n+"__slot_"+r;let l=e.__owl__.props.slots||{},{__render:c,__ctx:h,__scope:a}=l[r]||{},u=ji(h||{});a&&(u[a]=s);let f=c?c(u,t,n):null;if(o){let m,p;return f?m=i?ae(r,f):f:p=o(e,t,n),Ut([m,p])}return f||Me("")}function Ki(e,t){return e.key=t,e}function Wi(e){let t,n;if(Array.isArray(e))t=e,n=e;else if(e instanceof Map)t=[...e.keys()],n=[...e.values()];else if(Symbol.iterator in Object(e))t=[...e],n=t;else if(e&&typeof e=="object")n=Object.values(e),t=Object.keys(e);else throw new g(`Invalid loop expression: "${e}" is not iterable`);let r=n.length;return[t,n,r,new Array(r)]}function Ui(e){let t=parseFloat(e);return isNaN(t)?e:t}function zi(e,t){for(let n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!1;return!0}var tr=class{fn;ctx;component;node;key;constructor(e,t,n,r,i){this.fn=e,this.ctx=t,this.component=n,this.node=r,this.key=i}evaluate(){return this.fn.call(this.component,this.ctx,this.node,this.key)}toString(){return this.evaluate().toString()}};function Hi(e,t){if(e==null)return t?ae("default",t):ae("undefined",Me(""));let n,r;return e instanceof Ee?(n="string_safe",r=Ht(e)):e instanceof tr?(n="lazy_value",r=e.evaluate()):(n="string_unsafe",r=Me(e)),ae(n,r)}function Gi(e,t){if(!e)throw new g("Ref is undefined or null");let n,r;if(e.add&&e.delete)n=e.add.bind(e),r=e.delete.bind(e);else if(e.set){n=e.set.bind(e);let i=e[ie];r=i?s=>{i.value===s&&e.set(null)}:()=>e.set(null),i&&t.trackRef(e,i)}else throw new g("Ref should implement either a 'set' function or 'add' and 'delete' functions");return(i,s)=>{s&&r(s),i&&n(i)}}function qi(e,t,n){if(typeof e!="function")throw new g(`Invalid handler expression: the \`t-on\` expression should evaluate to a function, but got '${typeof e}'. Did you mean to use an arrow function? (e.g. \`t-on-click="() => expr"\`)`);e.call(t.this,n)}var _n=new WeakMap;function Xi(e,t,n){let r=_n.get(e);r||(r=new Map,_n.set(e,r));let i=r.get(t);if(i)return i.set(n),i.readonly;let s=x(n);return s.readonly=se(s),r.set(t,s),s.readonly}function Yi(e){if(typeof e!="function"||typeof e.set!="function")throw new g("Invalid t-model expression: expression should evaluate to a function with a 'set' method defined on it");return e}function Zi(e,t,n,r,i,s){let o=!n,l,c=s.length===0;r?l=(a,u)=>!0:i?l=function(a,u){for(let f in a)if(a[f]!==u[f])return!0;return Object.keys(a).length!==Object.keys(u).length}:c?l=(a,u)=>!1:l=function(a,u){for(let f of s)if(a[f]!==u[f])return!0;return!1};let h=Ie.prototype.initiateRender;return(a,u,f,m,p)=>{let b=f.children,d=b[u];o&&d&&d.component.constructor!==p&&(d=void 0);let S=f.fiber;if(d){if(l(d.props,a)||S.deep||d.forceNextRender){d.forceNextRender=!1;let N=d.willUpdateProps,w=Ii(d,S);d.fiber=w;let T=S.root;d.willPatch.length&&T.willPatch.push(w),d.patched.length&&T.patched.push(w);let y;if(N.length){let E=a,v=d.defaultProps;if(v){E=Object.assign({},a);for(let O in v)E[O]===void 0&&(E[O]=v[O])}let k=d.component,D=z();P(void 0);for(let O of N){let C=O.call(k,E);C&&typeof C.then=="function"&&(y||=[]).push(C)}P(D)}if(y)(y.length===1?y[0]:Promise.all(y)).then(()=>{if(w===d.fiber){d.props=a;for(let v of d.propsUpdated)v();w.render()}},v=>{ve({node:d,error:v})});else{d.props=a;for(let E of d.propsUpdated)E();w.render()}}}else{if(n){let w=m.constructor.components;if(!w)throw new g(`Cannot find the definition of component "${t}", missing static components key in parent`);if(p=w[t],p){if(!(p.prototype instanceof ee))throw new g(`"${t}" is not a Component. It must inherit from the Component class`)}else throw new g(`Cannot find the definition of component "${t}"`)}d=new Ie(p,a,e,f,u),b[u]=d;let N=new ot(d,S);d.willStart.length?h.call(d,N):(d.fiber=N,d.mounted.length&&N.root.mounted.push(N),N.render())}return S.childrenMap[u]=d,d}}function Ji(e,t,n,r,i,s){let o=n.getTemplate(e);return ae(e,o.call(t,r,i,s+e))}var Qi={withDefault:Vi,zero:Symbol("zero"),callSlot:Fi,withKey:Ki,prepareList:Wi,shallowEqual:zi,toNumber:Ui,LazyValue:tr,safeOutput:Hi,createCatcher:Oi,markRaw:He,OwlError:g,createRef:Gi,modelExpr:Yi,createComponent:Zi,callTemplate:Ji,callHandler:qi,toSignal:Xi},es={text:Me,createBlock:zn,list:Yn,multi:Ut,html:Ht,toggler:ae},Pe=class{static registerTemplate(e,t){st[e]=t}dev;rawTemplates=Object.create(st);templates={};getRawTemplate;translateFn;translatableAttributes;customDirectives;runtimeUtils;hasGlobalValues;constructor(e={}){if(this.dev=e.dev||!1,this.translateFn=e.translateFn,this.translatableAttributes=e.translatableAttributes,e.templates)if(e.templates instanceof Document||typeof e.templates=="string")this.addTemplates(e.templates);else for(let t in e.templates)this.addTemplate(t,e.templates[t]);this.getRawTemplate=e.getTemplate,this.customDirectives=e.customDirectives||{},this.runtimeUtils={...Qi,__globals__:e.globalValues||{}},this.hasGlobalValues=!!(e.globalValues&&Object.keys(e.globalValues).length)}addTemplate(e,t){if(e in this.rawTemplates){if(!this.dev)return;let n=this.rawTemplates[e];if(ts(n,t))return;throw new g(`Template ${e} already defined with different content`)}this.rawTemplates[e]=t}addTemplates(e){if(e){e=e instanceof Document?e:this._parseXML(e);for(let t of e.querySelectorAll("[t-name]")){let n=t.getAttribute("t-name");this.addTemplate(n,t)}}}getTemplate(e){let t=e;if(!(t in this.templates)){let n=this.getRawTemplate?.(e)||this.rawTemplates[e];if(n===void 0){let l="",c=oe();throw c instanceof Ie&&(l=` (for component "${c.componentName}")`),new g(`Missing template: "${e}"${l}`)}let i=typeof n=="function"&&!(n instanceof Element)?n:this._compileTemplate(e,n),s=this.templates;this.templates[t]=function(l,c){return s[t].call(this,l,c)};let o=i(this,es,this.runtimeUtils);this.templates[t]=o}return this.templates[t]}_compileTemplate(e,t){throw new g("Unable to compile a template. Please use owl full build instead")}_parseXML(e){throw new g("Unable to parse XML templates. Please use owl full build instead, or pass a Document instance.")}},st={};function te(...e){let t=`__template__${te.nextId++}`,n=String.raw(...e);return st[t]=n,t}te.nextId=1;function ts(e,t){if(e===t)return!0;if(typeof e=="function"!=(typeof t=="function"))return!1;let n=e instanceof Element?e.outerHTML:String(e),r=t instanceof Element?t.outerHTML:String(t);return n===r}var On=!1,nt=new Set;typeof window<"u"&&(window.__OWL_DEVTOOLS__||={apps:nt,Fiber:ot,RootFiber:it,toRaw:Y,proxy:Ce});var qt=class nr extends Pe{static validateTarget=fi;static apps=nt;static version=ri;name;scheduler=new Bi;roots=new Set;pluginManager;destroyed=!1;constructor(t={}){super(t),this.name=t.name||"",nt.add(this),this.pluginManager=new me(this,{config:t.config}),t.plugins?Xe(this.pluginManager,t.plugins):this.pluginManager.status=A.MOUNTED,t.test&&(this.dev=!0),this.dev&&!t.test&&!On&&(console.info("Owl is running in 'dev' mode."),On=!0)}createRoot(t,n={}){let r=n.props||{},i,s,o=new Promise((p,b)=>{i=p,s=b}),l,c=null;try{l=new Ie(t,r,this,null,null)}catch(p){c=p,s(p)}let h=null,a=null,u=()=>{if(a)return a;if(c)return Promise.reject(c);h=new Jn(l,null);let p=ce.get(l);if(p||(p=[],ce.set(l,p)),p.unshift((d,S)=>{let N=S();s(N)}),a=new Promise(d=>{h.onPrepared=()=>d()}),l.mounted.push(()=>{i(l.component),p.shift()}),this.scheduler.addFiber(h),this.pluginManager.status<A.MOUNTED&&l.willStart.unshift(()=>this.pluginManager.ready),l.willStart.length)l.initiateRender(h);else{l.fiber=h,l.mounted.length&&h.root.mounted.push(h);try{h.render()}catch(d){s(d)}}return a},m={node:l,promise:o,prepare:u,mount:(p,b)=>(c||(nr.validateTarget(p),u(),h.commit(p,b)),o),destroy:()=>{this.roots.delete(m),l?.destroy(),this.scheduler.processTasks()}};return this.roots.add(m),m}destroy(){for(let t of this.roots)t.destroy();this.pluginManager.destroy(),this.scheduler.processTasks(),nt.delete(this),this.destroyed=!0}_handleError(t){throw t}};async function ns(e,t,n={}){return new qt(n).createRoot(e,n).mount(t,n)}var rs=(e,t,n)=>{let{data:r,modifiers:i}=Mn(e);e=r;let s=!1;if(i.length){let o=!1,l=t.target===n;for(let c of i)switch(c){case"self":if(o=!0,l)continue;return s;case"prevent":(o&&l||!o)&&t.preventDefault();continue;case"stop":(o&&l||!o)&&t.stopPropagation(),s=!0;continue}}if(Object.hasOwnProperty.call(e,0)){let o=e[0];if(typeof o!="function")throw new g(`Invalid handler (expected a function, received: '${o}')`);let l=e[1]?e[1].__owl__:null;(!l||l.status===A.MOUNTED)&&o(e[1],t)}return s};function is(e){let t=G();function n(r,i){return e.call(this,i,r)}t.willUpdateProps.push(t.decorate(n,"onWillUpdateProps"))}function rr(e){let t=G();t.mounted.push(t.decorate(e,"onMounted"))}function ss(e){let t=G();t.willPatch.unshift(t.decorate(e,"onWillPatch"))}function os(e){let t=G();t.patched.push(t.decorate(e,"onPatched"))}function ls(e){let t=G();t.willUnmount.unshift(t.decorate(e,"onWillUnmount"))}function ir(e){let t=G(),n=ce.get(t);n||(n=[],ce.set(t,n)),n.push(e.bind(t.component))}function as(e,t){let n=G(),r=le(t),i=n.props[e];return n.app.dev&&(t!==void 0&&(!r||i!==void 0)&&W(i,t,`Invalid prop '${e}' in '${n.componentName}'`),n.willUpdateProps.push(s=>{if(s[e]!==n.props[e])throw new g(`Prop '${e}' changed in component '${n.componentName}'. Props declared with \`props.static()\` are static and should not change. If the prop is a signal, pass the same signal reference (its inner value may change).`)})),i===void 0&&r?r():i}function cs(){return $t(ee)}var j={...Ct,component:cs};function us(e){let t=G(),{app:n,componentName:r}=t,i=null;if(e&&!Array.isArray(e))for(let u in e){let f=le(e[u]);f&&((i||={})[u]=f())}i&&(t.defaultProps=Object.assign(t.defaultProps||{},i));function s(u,f){return u[f]===void 0&&i&&f in i?i[f]:u[f]}let o=Object.create(null),l=Object.create(null);function c(u){o[u]=x(s(t.props,u)),Reflect.defineProperty(l,u,{enumerable:!0,configurable:!0,get:o[u]})}function h(u){for(let f of u)c(f)}function a(u){for(let f of u)o[f].set(s(t.props,f))}if(e){let u=Array.isArray(e)?e:Object.keys(e);if(h(u),t.propsUpdated.push(()=>a(u)),n.dev){if(i){let m={};for(let p in e)p in i&&(m[p]=e[p]);W(i,j.object(m),`Invalid component default props (${r})`)}let f=j.object(e);W(t.props,f,`Invalid component props (${r})`),t.willUpdateProps.push(m=>{W(m,f,`Invalid component props (${r})`)})}}else{let u=m=>{let p=[];for(let b in m)b.charCodeAt(0)!==1&&p.push(b);return p},f=u(t.props);h(f),t.propsUpdated.push(()=>{let m=u(t.props),p=new Set(m);for(let b of f)p.has(b)||(Reflect.deleteProperty(l,b),delete o[b]);for(let b of m)b in o||c(b);a(m),f=m})}return l}var lt=Object.assign(us,{static:as}),fs=class extends ee{static template=te`
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=ot({error:j.signal().optional(()=>x(null))});setup(){rr(e=>this.props.error.set(e))}},fs=bn,hs=class extends ee{static template=te`<t t-call-slot="default"/>`},ds=class extends ee{static template=te``;props=ot({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)};De(()=>{let s=ps(this.props.target);if(s)return r=t.createRoot(hs,{props:{slots:n}}),r.node.pluginManager=e.pluginManager,ce.set(r.node,[xn(e)]),r.mount(s),i}),Z(i)}};function ps(e){return typeof e=="function"&&(e=e()),typeof e=="string"?document.querySelector(e):e instanceof HTMLElement?e:null}var ms=class extends ee{static template=te`<t t-call-slot="default"/>`},gs=class extends ee{static template=te`
9
+ `;props=lt({error:j.signal().optional(()=>x(null))});setup(){ir(e=>this.props.error.set(e))}},hs=vn,ds=class extends ee{static template=te`<t t-call-slot="default"/>`},ps=class extends ee{static template=te``;props=lt({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)};De(()=>{let s=ms(this.props.target);if(s)return r=t.createRoot(ds,{props:{slots:n}}),r.node.pluginManager=e.pluginManager,ce.set(r.node,[Rn(e)]),r.mount(s),i}),Z(i)}};function ms(e){return typeof e=="function"&&(e=e()),typeof e=="string"?document.querySelector(e):e instanceof HTMLElement?e:null}var gs=class extends ee{static template=te`<t t-call-slot="default"/>`},bs=class extends ee{static template=te`
10
10
  <t t-if="!this.prepared()">
11
11
  <t t-call-slot="fallback"/>
12
12
  </t>
13
- `;props=ot({slots:j.object({default:j.any(),fallback:j.any().optional()})});prepared=x(!1);mounted=x(!1);subRootMounted=!1;setup(){let e=this.__owl__,t=e.app.createRoot(ms,{props:{slots:this.props.slots}});t.node.pluginManager=e.pluginManager,ce.set(t.node,[xn(e)]),t.prepare().then(()=>this.prepared.set(!0));let n=t.node.fiber;n&&n.counter===0&&this.prepared.set(!0),nr(()=>this.mounted.set(!0)),De(()=>{if(this.subRootMounted||!this.prepared()||!this.mounted())return;this.subRootMounted=!0;let r=e.bdom.firstNode();t.mount(r.parentElement,{afterNode:r})}),Z(()=>t.destroy())}};function bs(e,t){let n=G(),r=new me(n.app,{parent:n.pluginManager,config:t});n.pluginManager=r,Z(()=>r.destroy()),qe(r,e),r.status<C.MOUNTED&&Xe(()=>r.ready)}ye.shouldNormalizeDom=!1;ye.mainEventHandler=ns;var vs={config:ye,mount:Qe,patch:Oi,remove:xi,list:Xn,multi:Ut,text:Me,toggler:ae,createBlock:Un,html:Ht},ys={version:qt.version,date:"2026-06-22T09:21:02.010Z",hash:"ac221141",url:"https://github.com/odoo/owl"};var ws="true,false,NaN,null,undefined,debugger,console,window,in,instanceof,new,function,return,eval,void,Math,RegExp,Array,Object,Date,__globals__".split(","),ir=Object.assign(Object.create(null),{and:"&&",or:"||",gt:">",gte:">=",lt:"<",lte:"<="}),sr=Object.assign(Object.create(null),{"{":"LEFT_BRACE","}":"RIGHT_BRACE","[":"LEFT_BRACKET","]":"RIGHT_BRACKET",":":"COLON",",":"COMMA","(":"LEFT_PAREN",")":"RIGHT_PAREN"}),Ts="...,.,===,==,+,!==,!=,!,||,&&,>=,>,<=,<,?,-,*,/,%,typeof ,=>,=,;,in ,new ,|,&,^,~".split(","),Ns=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}},Es=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},$s=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 ir?{type:"OPERATOR",value:ir[t],size:t.length}:{type:"SYMBOL",value:t}}else return!1},Ss=function(e){let t=e[0];return t&&t in sr?{type:sr[t],value:t}:!1},ks=function(e){for(let t of Ts)if(e.startsWith(t))return{type:"OPERATOR",value:t};return!1},Cs=[Ns,Es,ks,$s,Ss];function As(e){let t=[],n=!0,r,i=e;try{for(;n;)if(i=i.trim(),i){for(let s of Cs)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 Ds=e=>e&&(e.type==="LEFT_BRACE"||e.type==="COMMA"),_s=e=>e&&(e.type==="RIGHT_BRACE"||e.type==="COMMA"),Os=new Map([["in "," in "]]);function dr(e,t){let n=[];t?.size&&n.push({vars:t,depth:-1/0});let r=As(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"&&!ws.includes(a.value);if(p&&u&&(m==="LEFT_BRACE"&&Ds(u)&&_s(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=>Os.get(a.value)||a.value).join(""),freeVariables:c}}function _(e,t){return dr(e,t).expr}var ct=/\{\{.*?\}\}|\#\{.*?\}/g;function xs(e,t){let n=e.match(ct);return n&&n[0].length===e.length?`(${t(e.slice(2,n[0][0]==="{"?-2:-1))})`:"`"+e.replace(ct,i=>"${"+t(i.slice(2,i[0]==="{"?-2:-1))+"}")+"`"}function Xt(e){return xs(e,_)}function Zt(e){let n=new DOMParser().parseFromString(e,"text/xml");if(n.getElementsByTagName("parsererror").length){let r="Invalid XML in template.",i=n.getElementsByTagName("parsererror")[0].textContent;if(i){r+=`
13
+ `;props=lt({slots:j.object({default:j.any(),fallback:j.any().optional()})});prepared=x(!1);mounted=x(!1);subRootMounted=!1;setup(){let e=this.__owl__,t=e.app.createRoot(gs,{props:{slots:this.props.slots}});t.node.pluginManager=e.pluginManager,ce.set(t.node,[Rn(e)]),t.prepare().then(()=>this.prepared.set(!0));let n=t.node.fiber;n&&n.counter===0&&this.prepared.set(!0),rr(()=>this.mounted.set(!0)),De(()=>{if(this.subRootMounted||!this.prepared()||!this.mounted())return;this.subRootMounted=!0;let r=e.bdom.firstNode();t.mount(r.parentElement,{afterNode:r})}),Z(()=>t.destroy())}};function vs(e,t){let n=G(),r=new me(n.app,{parent:n.pluginManager,config:t});n.pluginManager=r,Z(()=>r.destroy()),Xe(r,e),r.status<A.MOUNTED&&Ye(()=>r.ready)}ye.shouldNormalizeDom=!1;ye.mainEventHandler=rs;var ys={config:ye,mount:et,patch:xi,remove:Ri,list:Yn,multi:Ut,text:Me,toggler:ae,createBlock:zn,html:Ht},ws={version:qt.version,date:"2026-06-25T07:13:07.565Z",hash:"99d4bdda",url:"https://github.com/odoo/owl"};var Ts="true,false,NaN,null,undefined,debugger,console,window,in,instanceof,new,function,return,eval,void,Math,RegExp,Array,Object,Date,__globals__".split(","),sr=Object.assign(Object.create(null),{and:"&&",or:"||",gt:">",gte:">=",lt:"<",lte:"<="}),or=Object.assign(Object.create(null),{"{":"LEFT_BRACE","}":"RIGHT_BRACE","[":"LEFT_BRACKET","]":"RIGHT_BRACKET",":":"COLON",",":"COMMA","(":"LEFT_PAREN",")":"RIGHT_PAREN"}),Ns="...,.,===,==,+,!==,!=,!,||,&&,>=,>,<=,<,?,-,*,/,%,typeof ,=>,=,;,in ,new ,|,&,^,~".split(","),Es=function(e){let t=e[0],n=t;if(t!=="'"&&t!=='"'&&t!=="`")return!1;let r=1,i;for(;e[r]&&e[r]!==n;){if(i=e[r],t+=i,i==="\\"){if(r++,i=e[r],!i)throw new g("Invalid expression");t+=i}r++}if(e[r]!==n)throw new g("Invalid expression");return t+=n,n==="`"?{type:"TEMPLATE_STRING",value:t,replace(s){return t.replace(/\$\{(.*?)\}/g,(o,l)=>"${"+s(l)+"}")}}:{type:"VALUE",value:t}},$s=function(e){let t=e[0];if(t&&t.match(/[0-9]/)){let n=1;for(;e[n]&&e[n].match(/[0-9]|\./);)t+=e[n],n++;return{type:"VALUE",value:t}}else return!1},Ss=function(e){let t=e[0];if(t&&t.match(/[a-zA-Z_\$]/)){let n=1;for(;e[n]&&e[n].match(/[\w\$]/);)t+=e[n],n++;return t in sr?{type:"OPERATOR",value:sr[t],size:t.length}:{type:"SYMBOL",value:t}}else return!1},ks=function(e){let t=e[0];return t&&t in or?{type:or[t],value:t}:!1},Cs=function(e){for(let t of Ns)if(e.startsWith(t))return{type:"OPERATOR",value:t};return!1},As=[Es,$s,Cs,Ss,ks];function Ds(e){let t=[],n=!0,r,i=e;try{for(;n;)if(i=i.trim(),i){for(let s of As)if(n=s(i),n){t.push(n),i=i.slice(n.size||n.value.length);break}}else n=!1}catch(s){r=s}if(i.length||r)throw new g(`Tokenizer error: could not tokenize \`${e}\``);return t}var _s=e=>e&&(e.type==="LEFT_BRACE"||e.type==="COMMA"),Os=e=>e&&(e.type==="RIGHT_BRACE"||e.type==="COMMA"),xs=new Map([["in "," in "]]);function pr(e,t){let n=[];t?.size&&n.push({vars:t,depth:-1/0});let r=Ds(e),i=0,s=[],o=-1;function l(a){return n.some(u=>u.vars.has(a))}for(;i<r.length;){let a=r[i],u=r[i-1],f=r[i+1],m=s[s.length-1];switch(a.type){case"LEFT_BRACE":case"LEFT_BRACKET":case"LEFT_PAREN":s.push(a.type);break;case"RIGHT_BRACE":case"RIGHT_BRACKET":case"RIGHT_PAREN":for(s.pop();n.length>0&&s.length<n[n.length-1].depth;)n.pop();break}let p=a.type==="SYMBOL"&&!Ts.includes(a.value);if(p&&u&&(m==="LEFT_BRACE"&&_s(u)&&Os(f)&&(r.splice(i+1,0,{type:"COLON",value:":"},{...a}),f=r[i+1]),(u.type==="OPERATOR"&&u.value==="."||(u.type==="LEFT_BRACE"||u.type==="COMMA")&&f&&f.type==="COLON")&&(p=!1)),a.type==="TEMPLATE_STRING"){let b=new Set;for(let d of n)for(let S of d.vars)b.add(S);a.value=a.replace(d=>_(d,b))}if(f&&f.type==="OPERATOR"&&f.value==="=>"){let b=new Set;if(s.length===0&&(o=i+1),a.type==="RIGHT_PAREN"){let d=i-1;for(;d>0&&r[d].type!=="LEFT_PAREN";)r[d].type==="SYMBOL"&&r[d].originalValue&&(b.add(r[d].originalValue),r[d].value=`_${r[d].originalValue}`,r[d].isLocal=!0),d--}else b.add(a.value);n.push({vars:b,depth:s.length})}p&&(a.varName=a.value,l(a.value)?(a.value=`_${a.value}`,a.isLocal=!0):(a.originalValue=a.value,a.value=`ctx['${a.value}']`)),i++}let c=null;if(o!==-1){c=[];let a=new Set;for(let u=o+1;u<r.length;u++){let f=r[u];f.varName&&!f.isLocal&&f.varName!=="this"&&!a.has(f.varName)&&(a.add(f.varName),c.push(f.varName))}}return{expr:r.map(a=>xs.get(a.value)||a.value).join(""),freeVariables:c}}function _(e,t){return pr(e,t).expr}var ut=/\{\{.*?\}\}|\#\{.*?\}/g;function Rs(e,t){let n=e.match(ut);return n&&n[0].length===e.length?`(${t(e.slice(2,n[0][0]==="{"?-2:-1))})`:"`"+e.replace(ut,i=>"${"+t(i.slice(2,i[0]==="{"?-2:-1))+"}")+"`"}function Xt(e){return Rs(e,_)}function Zt(e){let n=new DOMParser().parseFromString(e,"text/xml");if(n.getElementsByTagName("parsererror").length){let r="Invalid XML in template.",i=n.getElementsByTagName("parsererror")[0].textContent;if(i){r+=`
14
14
  The parser has produced the following error message:
15
15
  `+i;let s=/\d+/g,o=s.exec(i);if(o){let l=Number(o[0]),c=e.split(`
16
16
  `)[l-1],h=s.exec(i);if(c&&h){let a=Number(h[0])-1;c[a]&&(r+=`
17
17
  The error might be located at xml line ${l} column ${a}
18
18
  ${c}
19
- ${"-".repeat(a-1)}^`)}}}throw new g(r)}return n}var 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},re={First:1,Last:2,Index:4,Value:8},or=new WeakMap;function Rs(e,t){let n={inPreTag:!1,customDirectives:t};if(typeof e=="string"){let i=Zt(`<t>${e}</t>`).firstChild;return lr(i,n)}let r=or.get(e);return r||(r=lr(e.cloneNode(!0),n),or.set(e,r)),r}function lr(e,t){return to(e),B(e,t)||{type:N.Text,value:""}}function B(e,t){return e instanceof Element?Ls(e,t)||Bs(e,t)||Ks(e,t)||Hs(e,t)||Zs(e,t)||Js(e,t)||Us(e,t)||zs(e,t)||Ws(e,t)||Fs(e,t)||Ys(e,t)||Xs(e,t)||Vs(e,t)||Gs(e,t)||Ms(e,t):Ps(e,t)}function Ms(e,t){return e.tagName!=="t"?null:ut(e,t)}var Is=/[\r\n]/;function Ps(e,t){if(e.nodeType===Node.TEXT_NODE){let n=e.textContent||"";return!t.inPreTag&&Is.test(n)&&!n.trim()?null:{type:N.Text,value:n}}return null}function Ls(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 Bs(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 js=new Set(["svg","g","path"]);function Vs(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&&js.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"),k=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||k?"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=Jt(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 Fs(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 Ks(e,t){if(!e.hasAttribute("t-foreach"))return null;let n=e.outerHTML,r=e.getAttribute("t-foreach");e.removeAttribute("t-foreach");let i=e.getAttribute("t-as")||"";e.removeAttribute("t-as");let s=e.getAttribute("t-key");if(!s)throw new g(`"Directive t-foreach should always be used with a t-key!" (expression: t-foreach="${r}" t-as="${i}")`);e.removeAttribute("t-key");let o=B(e,t);if(!o)return null;let l=!n.includes("t-call"),c=0;return l&&!n.includes(`${i}_first`)&&(c|=re.First),l&&!n.includes(`${i}_last`)&&(c|=re.Last),l&&!n.includes(`${i}_index`)&&(c|=re.Index),l&&!n.includes(`${i}_value`)&&(c|=re.Value),{type:N.TForEach,collection:r,elem:i,body:o,key:s,noFlags:c}}function Ws(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 Us(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=ut(e,t);return{type:N.TCall,name:n,attrs:i,attrsTranslationCtx:s,body:o,context:r}}function zs(e,t){if(!e.hasAttribute("t-call-block"))return null;let n=e.getAttribute("t-call-block");return{type:N.TCallBlock,name:n}}function Hs(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 Gs(e,t){if(!e.hasAttribute("t-set"))return null;let n=e.getAttribute("t-set"),r=e.getAttribute("t-value")||null,i=e.innerHTML===e.textContent&&e.textContent||null,s=null;return e.textContent!==e.innerHTML&&(s=Jt(e,t)),{type:N.TSet,name:n,value:r,defaultValue:i,body:s,hasNoRepresentation:!0}}var qs=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 Xs(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=qs.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,k=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)]=$):(k=k||{},k[v]=$)}a=a||{},a[b]={content:E,on:T,attrs:k,attrsTranslationCtx:y,scope:w}}let m=ut(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 Ys(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:ut(e,t)}}function ar(e){let t={type:N.TTranslation,content:e};return e?.hasNoRepresentation&&(t.hasNoRepresentation=!0),t}function Zs(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(ar);return Qt(r)}return ar(n)}function cr(e,t){let n={type:N.TTranslationContext,content:e,translationCtx:t};return e?.hasNoRepresentation&&(n.hasNoRepresentation=!0),n}function Js(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=>cr(s,n));return Qt(i)}return cr(r,n)}function Jt(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 Qt(e){let t={type:N.Multi,content:e};return e.every(n=>n.hasNoRepresentation)&&(t.hasNoRepresentation=!0),t}function ut(e,t){let n=Jt(e,t);switch(n.length){case 0:return null;case 1:return n[0];default:return Qt(n)}}function Qs(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 eo(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 to(e){Qs(e),eo(e)}var ur=Symbol("zero"),no=/\s+/g,ne;typeof document<"u"&&(ne=document.implementation.createDocument(null,null,null));var ro=new Set(["stop","capture","prevent","self","synthetic","passive"]),at={};function I(e=""){return at[e]=(at[e]||0)+1,e+at[e]}function io(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 lt(e){return`\`${e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/,"\\${")}\``}var Yt=class pr{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=pr.nextBlockId++,this.varName="b"+this.id,this.blockName="block"+this.id,this.target=t,this.type=n}insertData(t,n="d"){let r=I(n);return this.target.addLine(`let ${r} = ${t};`),this.data.push(r)-1}insert(t){this.currentDom?this.currentDom.appendChild(t):this.dom=t}generateExpr(t){if(this.type==="block"){let n=this.children.length,r=this.data.length?`[${this.data.join(", ")}]`:n?"[]":"";return n&&(r+=", ["+this.children.map(i=>i.varName).join(", ")+"]"),this.dynamicTagName?`toggler(${this.dynamicTagName}, ${this.blockName}(${this.dynamicTagName})(${r}))`:`${this.blockName}(${r})`}else if(this.type==="list")return`list(c_block${this.id})`;return t}asXmlString(){let t=ne.createElement("t");return t.appendChild(this.dom),t.innerHTML}};function ue(e,t){return Object.assign({block:null,index:0,forceNewBlock:!0,translate:e.translate,translationCtx:e.translationCtx,tKeyExpr:null,nameSpace:e.nameSpace,tModelSelectedExpr:e.tModelSelectedExpr},t)}var fr=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}},hr=["alt","aria-label","aria-placeholder","aria-roledescription","aria-valuetext","label","placeholder","title"],so=/^(\s*)([\s\S]+?)(\s*)$/,oo=class{blocks=[];nextBlockId=1;isDebug=!1;targets=[];target=new fr("template");templateName;dev;translateFn;translatableAttributes=hr;ast;staticDefs=[];slotNames=new Set;helpers=new Set;constructor(e,t){if(this.translateFn=t.translateFn||(n=>n),t.translatableAttributes){let n=new Set(hr);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,Yt.nextBlockId=1,at={},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=lt(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(`
19
+ ${"-".repeat(a-1)}^`)}}}throw new g(r)}return n}var $={Text:0,DomNode:2,Multi:3,TIf:4,TSet:5,TCall:6,TOut:7,TForEach:8,TKey:9,TComponent:10,TDebug:11,TLog:12,TCallSlot:13,TCallBlock:14,TTranslation:15,TTranslationContext:16},re={First:1,Last:2,Index:4,Value:8},lr=new WeakMap;function Ms(e,t){let n={inPreTag:!1,customDirectives:t};if(typeof e=="string"){let i=Zt(`<t>${e}</t>`).firstChild;return ar(i,n)}let r=lr.get(e);return r||(r=ar(e.cloneNode(!0),n),lr.set(e,r)),r}function ar(e,t){return no(e),B(e,t)||{type:$.Text,value:""}}function B(e,t){return e instanceof Element?Bs(e,t)||js(e,t)||Ws(e,t)||Gs(e,t)||Js(e,t)||Qs(e,t)||zs(e,t)||Hs(e,t)||Us(e,t)||Ks(e,t)||Zs(e,t)||Ys(e,t)||Fs(e,t)||qs(e,t)||Is(e,t):Ls(e,t)}function Is(e,t){return e.tagName!=="t"?null:ft(e,t)}var Ps=/[\r\n]/;function Ls(e,t){if(e.nodeType===Node.TEXT_NODE){let n=e.textContent||"";return!t.inPreTag&&Ps.test(n)&&!n.trim()?null:{type:$.Text,value:n}}return null}function Bs(e,t){if(!t.customDirectives)return null;let n=e.getAttributeNames();for(let r of n){if(r==="t-custom"||r==="t-custom-")throw new g("Missing custom directive name with t-custom directive");if(r.startsWith("t-custom-")){let i=r.split(".")[0].slice(9),s=t.customDirectives[i];if(!s)throw new g(`Custom directive "${i}" is not defined`);let o=e.getAttribute(r),l=r.split(".").slice(1);e.removeAttribute(r);try{s(e,o,l)}catch(c){throw new g(`Custom directive "${i}" throw the following error: ${c}`)}return B(e,t)}}return null}function js(e,t){if(e.hasAttribute("t-debug")){e.removeAttribute("t-debug");let n=B(e,t),r={type:$.TDebug,content:n};return n?.hasNoRepresentation&&(r.hasNoRepresentation=!0),r}if(e.hasAttribute("t-log")){let n=e.getAttribute("t-log");e.removeAttribute("t-log");let r=B(e,t),i={type:$.TLog,expr:n,content:r};return r?.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}return null}var Vs=new Set(["svg","g","path"]);function Fs(e,t){let{tagName:n}=e,r=e.getAttribute("t-tag");if(e.removeAttribute("t-tag"),n==="t"&&!r)return null;if(n.startsWith("block-"))throw new g(`Invalid tag name: '${n}'`);t=Object.assign({},t),n==="pre"&&(t.inPreTag=!0);let i=!t.nameSpace&&Vs.has(n)?"http://www.w3.org/2000/svg":null,s=e.getAttribute("t-ref");e.removeAttribute("t-ref");let o=e.getAttributeNames(),l=null,c=null,h=null,a=null;for(let f of o){let m=e.getAttribute(f);if(f==="t-on"||f==="t-on-")throw new g("Missing event name with t-on directive");if(f.startsWith("t-on-"))h=h||{},h[f.slice(5)]=m;else if(f.startsWith("t-model")){if(!["input","select","textarea"].includes(n))throw new g("The t-model directive only works with <input>, <textarea> and <select>");let p=e.getAttribute("type"),b=n==="input",d=n==="select",S=b&&p==="checkbox",N=b&&p==="radio",w=f.includes(".trim"),T=w||f.includes(".lazy"),y=f.includes(".number"),E=f.includes(".proxy");a={expr:m,targetAttr:S?"checked":"value",specialInitTargetAttr:N?"checked":null,eventType:N?"click":d||T?"change":"input",hasDynamicChildren:!1,shouldTrim:w,shouldNumberize:y,isProxy:E},d&&(t=Object.assign({},t),t.tModelInfo=a)}else{if(f.startsWith("block-"))throw new g(`Invalid attribute: '${f}'`);if(f==="xmlns")i=m;else if(f.startsWith("t-translation-context-")){let p=f.slice(22);c=c||{},c[p]=m}else if(f!=="t-name"){if(f.startsWith("t-")&&!f.startsWith("t-att"))throw new g(`Unknown QWeb directive: '${f}'`);let p=t.tModelInfo;p&&["t-att-value","t-attf-value"].includes(f)&&(p.hasDynamicChildren=!0),l=l||{},l[f]=m}}}i&&(t.nameSpace=i);let u=Jt(e,t);return{type:$.DomNode,tag:n,dynamicTag:r,attrs:l,attrsTranslationCtx:c,on:h,ref:s,content:u,model:a,ns:i}}function Ks(e,t){if(!e.hasAttribute("t-out")&&!e.hasAttribute("t-esc"))return null;e.hasAttribute("t-esc")&&console.warn('t-esc has been deprecated in favor of t-out. If the value to render is not wrapped by the "markup" function, it will be escaped');let n=e.getAttribute("t-out")||e.getAttribute("t-esc");e.removeAttribute("t-out"),e.removeAttribute("t-esc");let r={type:$.TOut,expr:n,body:null},i=e.getAttribute("t-ref");e.removeAttribute("t-ref");let s=B(e,t);return s&&s.type===$.DomNode?(r.body=s.content.length?s.content:null,{...s,ref:i,content:[r]}):r}function Ws(e,t){if(!e.hasAttribute("t-foreach"))return null;let n=e.outerHTML,r=e.getAttribute("t-foreach");e.removeAttribute("t-foreach");let i=e.getAttribute("t-as")||"";e.removeAttribute("t-as");let s=e.getAttribute("t-key");if(!s)throw new g(`"Directive t-foreach should always be used with a t-key!" (expression: t-foreach="${r}" t-as="${i}")`);e.removeAttribute("t-key");let o=B(e,t);if(!o)return null;let l=!n.includes("t-call"),c=0;return l&&!n.includes(`${i}_first`)&&(c|=re.First),l&&!n.includes(`${i}_last`)&&(c|=re.Last),l&&!n.includes(`${i}_index`)&&(c|=re.Index),l&&!n.includes(`${i}_value`)&&(c|=re.Value),{type:$.TForEach,collection:r,elem:i,body:o,key:s,noFlags:c}}function Us(e,t){if(!e.hasAttribute("t-key"))return null;let n=e.getAttribute("t-key");e.removeAttribute("t-key");let r=B(e,t);if(!r)return null;let i={type:$.TKey,expr:n,content:r};return r.hasNoRepresentation&&(i.hasNoRepresentation=!0),i}function zs(e,t){if(!e.hasAttribute("t-call"))return null;if(e.tagName!=="t")throw new g(`Directive 't-call' can only be used on <t> nodes (used on a <${e.tagName}>)`);let n=e.getAttribute("t-call"),r=e.getAttribute("t-call-context");e.removeAttribute("t-call"),e.removeAttribute("t-call-context");let i=null,s=null;for(let l of e.getAttributeNames()){let c=e.getAttribute(l);if(l.startsWith("t-translation-context-")){let h=l.slice(22);s=s||{},s[h]=c}else i=i||{},i[l]=c}let o=ft(e,t);return{type:$.TCall,name:n,attrs:i,attrsTranslationCtx:s,body:o,context:r}}function Hs(e,t){if(!e.hasAttribute("t-call-block"))return null;let n=e.getAttribute("t-call-block");return{type:$.TCallBlock,name:n}}function Gs(e,t){if(!e.hasAttribute("t-if"))return null;let n=e.getAttribute("t-if");e.removeAttribute("t-if");let r=B(e,t)||{type:$.Text,value:""},i=e.nextElementSibling,s=[];for(;i&&i.hasAttribute("t-elif");){let l=i.getAttribute("t-elif");i.removeAttribute("t-elif");let c=B(i,t),h=i.nextElementSibling;i.remove(),i=h,c&&s.push({condition:l,content:c})}let o=null;return i&&i.hasAttribute("t-else")&&(i.removeAttribute("t-else"),o=B(i,t),i.remove()),{type:$.TIf,condition:n,content:r,tElif:s.length?s:null,tElse:o}}function qs(e,t){if(!e.hasAttribute("t-set"))return null;let n=e.getAttribute("t-set"),r=e.getAttribute("t-value")||null,i=e.innerHTML===e.textContent&&e.textContent||null,s=null;return e.textContent!==e.innerHTML&&(s=Jt(e,t)),{type:$.TSet,name:n,value:r,defaultValue:i,body:s,hasNoRepresentation:!0}}var Xs=new Map([["t-ref","t-ref is no longer supported on components. Consider exposing only the public part of the component's API through a callback prop."],["t-att","t-att makes no sense on component: props are already treated as expressions"],["t-attf","t-attf is not supported on components: use template strings for string interpolation in props"]]);function Ys(e,t){let n=e.tagName,r=n[0],i=e.hasAttribute("t-component");if(i&&n!=="t")throw new g(`Directive 't-component' can only be used on <t> nodes (used on a <${n}>)`);if(!(r===r.toUpperCase()||i))return null;i&&(n=e.getAttribute("t-component"),e.removeAttribute("t-component"));let s=e.getAttribute("t-props");e.removeAttribute("t-props");let o=e.getAttribute("t-slot-scope");e.removeAttribute("t-slot-scope");let l=null,c=null,h=null;for(let u of e.getAttributeNames()){let f=e.getAttribute(u);if(u.startsWith("t-translation-context-")){let m=u.slice(22);h=h||{},h[m]=f}else if(u.startsWith("t-"))if(u.startsWith("t-on-"))l=l||{},l[u.slice(5)]=f;else{let m=Xs.get(u.split("-").slice(0,2).join("-"));throw new g(m||`unsupported directive on Component: ${u}`)}else c=c||{},c[u]=f}let a=null;if(e.hasChildNodes()){let u=e.cloneNode(!0),f=Array.from(u.querySelectorAll("[t-set-slot]"));for(let p of f){if(p.tagName!=="t")throw new g(`Directive 't-set-slot' can only be used on <t> nodes (used on a <${p.tagName}>)`);let b=p.getAttribute("t-set-slot"),d=p.parentElement,S=!1;for(;d&&d!==u;){if(d.hasAttribute("t-component")||d.tagName[0]===d.tagName[0].toUpperCase()){S=!0;break}d=d.parentElement}if(S||!d)continue;p.removeAttribute("t-set-slot"),p.remove();let N=B(p,t),w=null,T=null,y=null,E=null;for(let v of p.getAttributeNames()){let k=p.getAttribute(v);if(v==="t-slot-scope"){E=k;continue}else if(v.startsWith("t-translation-context-")){let D=v.slice(22);y=y||{},y[D]=k}else v.startsWith("t-on-")?(w=w||{},w[v.slice(5)]=k):(T=T||{},T[v]=k)}a=a||{},a[b]={content:N,on:w,attrs:T,attrsTranslationCtx:y,scope:E}}let m=ft(u,t);a=a||{},m&&!a.default&&(a.default={content:m,on:null,attrs:null,attrsTranslationCtx:null,scope:o})}return{type:$.TComponent,name:n,isDynamic:i,dynamicProps:s,props:c,propsTranslationCtx:h,slots:a,on:l}}function Zs(e,t){if(!e.hasAttribute("t-call-slot")&&!e.hasAttribute("t-slot"))return null;e.hasAttribute("t-slot")&&console.warn("t-slot has been renamed t-call-slot.");let n=e.getAttribute("t-call-slot")||e.getAttribute("t-slot");e.removeAttribute("t-call-slot"),e.removeAttribute("t-slot");let r=null,i=null,s=null;for(let o of e.getAttributeNames()){let l=e.getAttribute(o);if(o.startsWith("t-on-"))s=s||{},s[o.slice(5)]=l;else if(o.startsWith("t-translation-context-")){let c=o.slice(22);i=i||{},i[c]=l}else r=r||{},r[o]=l}return{type:$.TCallSlot,name:n,attrs:r,attrsTranslationCtx:i,on:s,defaultContent:ft(e,t)}}function cr(e){let t={type:$.TTranslation,content:e};return e?.hasNoRepresentation&&(t.hasNoRepresentation=!0),t}function Js(e,t){if(e.getAttribute("t-translation")!=="off")return null;e.removeAttribute("t-translation");let n=B(e,t);if(n?.type===$.Multi){let r=n.content.map(cr);return Qt(r)}return cr(n)}function ur(e,t){let n={type:$.TTranslationContext,content:e,translationCtx:t};return e?.hasNoRepresentation&&(n.hasNoRepresentation=!0),n}function Qs(e,t){let n=e.getAttribute("t-translation-context");if(!n)return null;e.removeAttribute("t-translation-context");let r=B(e,t);if(r?.type===$.Multi){let i=r.content.map(s=>ur(s,n));return Qt(i)}return ur(r,n)}function Jt(e,t){let n=[];for(let r of e.childNodes){let i=B(r,t);i&&(i.type===$.Multi?n.push(...i.content):n.push(i))}return n}function Qt(e){let t={type:$.Multi,content:e};return e.every(n=>n.hasNoRepresentation)&&(t.hasNoRepresentation=!0),t}function ft(e,t){let n=Jt(e,t);switch(n.length){case 0:return null;case 1:return n[0];default:return Qt(n)}}function eo(e){let t=e.querySelectorAll("[t-elif], [t-else]");for(let n=0,r=t.length;n<r;n++){let i=t[n],s=i.previousElementSibling,o=c=>s.getAttribute(c),l=c=>+!!i.getAttribute(c);if(s&&(o("t-if")||o("t-elif"))){if(o("t-foreach"))throw new g("t-if cannot stay at the same level as t-foreach when using t-elif or t-else");if(["t-if","t-elif","t-else"].map(l).reduce(function(h,a){return h+a})>1)throw new g("Only one conditional branching directive is allowed per node");let c;for(;(c=i.previousSibling)!==s;){if(c.nodeValue.trim().length&&c.nodeType!==8)throw new g("text is not allowed between branching directives");c.remove()}}else throw new g("t-elif and t-else directives must be preceded by a t-if or t-elif directive")}}function to(e){let t=[...e.querySelectorAll("[t-out]")].filter(n=>n.tagName[0]===n.tagName[0].toUpperCase()||n.hasAttribute("t-component"));for(let n of t){if(n.childNodes.length)throw new g("Cannot have t-out on a component that already has content");let r=n.getAttribute("t-out");n.removeAttribute("t-out");let i=n.ownerDocument.createElement("t");r!=null&&i.setAttribute("t-out",r),n.appendChild(i)}}function no(e){eo(e),to(e)}var fr=Symbol("zero"),ro=/\s+/g,ne;typeof document<"u"&&(ne=document.implementation.createDocument(null,null,null));var io=new Set(["stop","capture","prevent","self","synthetic","passive"]),ct={};function I(e=""){return ct[e]=(ct[e]||0)+1,e+ct[e]}function so(e,t){switch(e){case"input":return t==="checked"||t==="indeterminate"||t==="value"||t==="readonly"||t==="readOnly"||t==="disabled";case"option":return t==="selected"||t==="disabled";case"textarea":return t==="value"||t==="readonly"||t==="readOnly"||t==="disabled";case"select":return t==="value"||t==="disabled";case"button":case"optgroup":return t==="disabled"}return!1}function at(e){return`\`${e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/,"\\${")}\``}var Yt=class mr{static nextBlockId=1;varName;blockName;dynamicTagName=null;isRoot=!1;hasDynamicChildren=!1;children=[];data=[];dom;currentDom;childNumber=0;target;type;parentVar="";id;constructor(t,n){this.id=mr.nextBlockId++,this.varName="b"+this.id,this.blockName="block"+this.id,this.target=t,this.type=n}insertData(t,n="d"){let r=I(n);return this.target.addLine(`let ${r} = ${t};`),this.data.push(r)-1}insert(t){this.currentDom?this.currentDom.appendChild(t):this.dom=t}generateExpr(t){if(this.type==="block"){let n=this.children.length,r=this.data.length?`[${this.data.join(", ")}]`:n?"[]":"";return n&&(r+=", ["+this.children.map(i=>i.varName).join(", ")+"]"),this.dynamicTagName?`toggler(${this.dynamicTagName}, ${this.blockName}(${this.dynamicTagName})(${r}))`:`${this.blockName}(${r})`}else if(this.type==="list")return`list(c_block${this.id})`;return t}asXmlString(){let t=ne.createElement("t");return t.appendChild(this.dom),t.innerHTML}};function ue(e,t){return Object.assign({block:null,index:0,forceNewBlock:!0,translate:e.translate,translationCtx:e.translationCtx,tKeyExpr:null,nameSpace:e.nameSpace,tModelSelectedExpr:e.tModelSelectedExpr},t)}var hr=class{name;indentLevel=0;loopLevel=0;loopCtxVars=[];tSetVars=new Map;code=[];hasRoot=!1;deferReturn=!1;needsScopeProtection=!1;on;constructor(e,t){this.name=e,this.on=t||null}addLine(e,t){let n=new Array(this.indentLevel+2).join(" ");t===void 0?this.code.push(n+e):this.code.splice(t,0,n+e)}generateCode(){let e=[];e.push(`function ${this.name}(ctx, node, key = "") {`),this.needsScopeProtection&&e.push(" ctx = Object.create(ctx);");for(let t of this.code)e.push(t);return this.hasRoot||e.push("return text('');"),e.push("}"),e.join(`
20
+ `)}currentKey(e){let t=this.loopLevel?`key${this.loopLevel}`:"key";return e.tKeyExpr&&(t=`${e.tKeyExpr} + ${t}`),t}},dr=["alt","aria-label","aria-placeholder","aria-roledescription","aria-valuetext","label","placeholder","title"],oo=/^(\s*)([\s\S]+?)(\s*)$/,lo=class{blocks=[];nextBlockId=1;isDebug=!1;targets=[];target=new hr("template");templateName;dev;translateFn;translatableAttributes=dr;ast;staticDefs=[];slotNames=new Set;helpers=new Set;constructor(e,t){if(this.translateFn=t.translateFn||(n=>n),t.translatableAttributes){let n=new Set(dr);for(let r of t.translatableAttributes)r.startsWith("-")?n.delete(r.slice(1)):n.add(r);this.translatableAttributes=[...n]}this.dev=t.dev||!1,this.ast=e,this.templateName=t.name,t.name&&(t.name.startsWith("__")?this.target.name=t.name:this.target.name=`template_${t.name.replace(/[^a-zA-Z0-9_$]/g,"_")}`),t.hasGlobalValues&&this.helpers.add("__globals__")}generateCode(){let e=this.ast;this.isDebug=e.type===$.TDebug,Yt.nextBlockId=1,ct={},this.compileAST(e,{block:null,index:0,forceNewBlock:!1,translate:!0,translationCtx:"",tKeyExpr:null});let t=[" let { text, createBlock, list, multi, html, toggler } = bdom;"];this.helpers.size&&t.push(`let { ${[...this.helpers].join(", ")} } = helpers;`),this.templateName&&t.push(`// Template name: "${this.templateName}"`);for(let{id:r,expr:i}of this.staticDefs)t.push(`const ${r} = ${i};`);if(this.blocks.length){t.push("");for(let r of this.blocks)if(r.dom){let i=at(r.asXmlString());r.dynamicTagName?(i=i.replace(/^`<\w+/,`\`<\${tag || '${r.dom.nodeName}'}`),i=i.replace(/\w+>`$/,`\${tag || '${r.dom.nodeName}'}>\``),t.push(`let ${r.blockName} = tag => createBlock(${i});`)):t.push(`let ${r.blockName} = createBlock(${i});`)}}if(this.targets.length)for(let r of this.targets)t.push(""),t=t.concat(r.generateCode());t.push(""),t=t.concat("return "+this.target.generateCode());let n=t.join(`
21
21
  `);if(this.isDebug){let r=`[Owl Debug]
22
- ${n}`;console.log(r)}return n}compileInNewTarget(e,t,n,r){let i=I(e),s=this.target,o=new fr(i,r);return this.targets.push(o),this.target=o,this.compileAST(t,ue(n)),this.target=s,i}addLine(e,t){this.target.addLine(e,t)}define(e,t){this.addLine(`const ${e} = ${t};`)}insertAnchor(e,t=e.children.length){let n=`block-child-${t}`,r=ne.createElement(n);e.insert(r)}createBlock(e,t,n){let r=this.target.hasRoot,i=new Yt(this.target,t);return r||(this.target.hasRoot=!0,i.isRoot=!0),e&&(e.children.push(i),e.type==="list"&&(i.parentVar=`c_block${e.id}`)),i}insertBlock(e,t,n){let r=t.generateExpr(e);if(t.parentVar){let i=this.target.currentKey(n);this.helpers.add("withKey"),this.addLine(`${t.parentVar}[${n.index}] = withKey(${r}, ${i});`);return}n.tKeyExpr&&(r=`toggler(${n.tKeyExpr}, ${r})`),t.isRoot&&!this.target.deferReturn?(this.target.on&&(r=this.wrapWithEventCatcher(r,this.target.on)),this.addLine(`return ${r};`)):this.define(t.varName,r)}translate(e,t){let n=so.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(no," ")),!n||r)n=this.createBlock(n,"text",t),this.insertBlock(`text(${lt(i)})`,n,{...t,forceNewBlock:r&&!n});else{let s=e.type===N.Text?ne.createTextNode:ne.createComment;n.insert(s.call(ne,i))}return n.varName}generateHandlerCode(e,t){let n=e.split(".").slice(1).map(h=>{if(!ro.has(h))throw new g(`Unknown event modifier: '${h}'`);return`"${h}"`}),r="";n.length&&(r=`${n.join(",")}, `);let i=_(t);if(!i.trim())return`[${r}, ctx]`;let s,o=i.match(/^(\([^)]*\))\s*=>/),l=!o&&i.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=>/);if(o){let h=o[1].slice(1,-1).trim(),a=i.slice(o[0].length);s=h?`(ctx,${h})=>${a}`:`(ctx)=>${a}`}else if(l){let h=i.slice(l[0].length);s=`(ctx,${l[1]})=>${h}`}else this.helpers.add("callHandler"),s=`(ctx, ev) => callHandler(${i}, ctx, ev)`;let c=I("hdlr_fn");return this.staticDefs.push({id:c,expr:s}),`[${r}${c}, ctx]`}compileTDomNode(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r||e.dynamicTag!==null||e.ns,s=this.target.code.length;if(i&&((e.dynamicTag||t.tKeyExpr||e.ns)&&t.block&&this.insertAnchor(t.block),n=this.createBlock(n,"block",t),this.blocks.push(n),e.dynamicTag)){let a=I("tag");this.define(a,_(e.dynamicTag)),n.dynamicTagName=a}let o={};for(let a in e.attrs){let u,f;if(a.startsWith("t-attf")){u=Xt(e.attrs[a]);let m=n.insertData(u,"attr");f=a.slice(7),o["block-attribute-"+m]=f}else if(a.startsWith("t-att"))if(f=a==="t-att"?null:a.slice(6),u=_(e.attrs[a]),f&&io(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 k;if(d){let v=b in o&&`'${o[b]}'`;if(!v&&e.attrs){let $=e.attrs[`t-att-${b}`];$&&(v=_($))}k=n.insertData(`${E} === ${v}`,"prop"),o[`block-property-${k}`]=d}else a?(l=`${I("bValue")}`,this.define(l,E)):(k=n.insertData(E,"prop"),o[`block-property-${k}`]=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]`;k=n.insertData(w,"hdlr"),o[`block-handler-${k}`]=f}for(let a in e.on){let u=this.generateHandlerCode(a,e.on[a]),f=n.insertData(u,"hdlr");o[`block-handler-${f}`]=a}if(e.ref){let a=_(e.ref);this.helpers.add("createRef");let u=`createRef(${a}, node)`,f=n.insertData(u,"ref");o["block-ref"]=String(f)}let c=e.ns||t.nameSpace,h=c?ne.createElementNS(c,e.tag):ne.createElement(e.tag);for(let[a,u]of Object.entries(o))a==="class"&&u===""||h.setAttribute(a,u);if(n.insert(h),e.content.length){let a=n.currentDom;n.currentDom=h;let u=e.content;for(let f=0;f<u.length;f++){let m=e.content[f],p=ue(t,{block:n,index:n.childNumber,forceNewBlock:!1,tKeyExpr:t.tKeyExpr,nameSpace:c,tModelSelectedExpr:l,inPreTag:t.inPreTag||e.tag==="pre"});this.compileAST(m,p)}n.currentDom=a}if(i&&(this.insertBlock(`${n.blockName}(ddd)`,n,t),n.children.length&&n.hasDynamicChildren)){let a=this.target.code,u=n.children.slice(),f=u.shift();for(let m=s;m<a.length&&!(a[m].trimStart().startsWith(`const ${f.varName} `)&&(a[m]=a[m].replace(`const ${f.varName}`,f.varName),f=u.shift(),!f));m++);this.addLine(`let ${n.children.map(m=>m.varName).join(", ")};`,s)}return n.varName}compileZero(){this.helpers.add("zero");let e=this.slotNames.has(ur);this.slotNames.add(ur);let t=this.target.loopLevel?`key${this.target.loopLevel}`:"key";return e&&(t=this.generateComponentKey(t)),`ctx[zero]?.(node, ${t}) || text("")`}compileTOut(e,t){let{block:n}=t;n&&this.insertAnchor(n),n=this.createBlock(n,"html",t);let r;if(e.expr==="0")r=this.compileZero();else if(e.body){let i=null;i=Yt.nextBlockId;let s=ue(t);this.compileAST({type: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,ue(n,{block:t,index:n.index})),t.children.length>r&&this.insertAnchor(t,r),this.target.indentLevel--}compileTIf(e,t,n){let{block:r,forceNewBlock:i}=t,s=this.target.code.length,o=!r||r.type!=="multi"&&i;if(r&&(r.hasDynamicChildren=!0),(!r||r.type!=="multi"&&i)&&(r=this.createBlock(r,"multi",t)),this.addLine(`if (${_(e.condition)}) {`),this.compileTIfBranch(e.content,r,t),e.tElif)for(let l of e.tElif)this.addLine(`} else if (${_(l.condition)}) {`),this.compileTIfBranch(l.content,r,t);if(e.tElse&&(this.addLine("} else {"),this.compileTIfBranch(e.tElse,r,t)),this.addLine("}"),o){if(r.children.length){let c=this.target.code,h=r.children.slice(),a=h.shift();for(let u=s;u<c.length&&!(c[u].trimStart().startsWith(`const ${a.varName} `)&&(c[u]=c[u].replace(`const ${a.varName}`,a.varName),a=h.shift(),!a));u++);this.addLine(`let ${r.children.map(u=>u.varName).join(", ")};`,s)}let l=r.children.map(c=>c.varName).join(", ");this.insertBlock(`multi([${l}])`,r,t)}return r.varName}compileTForeach(e,t){let{block:n}=t;n&&this.insertAnchor(n),n=this.createBlock(n,"list",t),this.target.loopLevel++;let r=`i${this.target.loopLevel}`,i=I("ctx");this.addLine(`const ${i} = ctx;`),this.target.loopCtxVars.push(i);let s=`v_block${n.id}`,o=`k_block${n.id}`,l=`l_block${n.id}`,c=`c_block${n.id}`;this.helpers.add("prepareList"),this.define(`[${o}, ${s}, ${l}, ${c}]`,`prepareList(${_(e.collection)});`),this.dev&&this.define(`keys${n.id}`,"new Set()"),this.addLine(`for (let ${r} = 0; ${r} < ${l}; ${r}++) {`),this.target.indentLevel++,this.addLine(`let ctx = Object.create(${i});`),this.addLine(`ctx[\`${e.elem}\`] = ${o}[${r}];`),e.noFlags&re.First||this.addLine(`ctx[\`${e.elem}_first\`] = ${r} === 0;`),e.noFlags&re.Last||this.addLine(`ctx[\`${e.elem}_last\`] = ${r} === ${o}.length - 1;`),e.noFlags&re.Index||this.addLine(`ctx[\`${e.elem}_index\`] = ${r};`),e.noFlags&re.Value||this.addLine(`ctx[\`${e.elem}_value\`] = ${s}[${r}];`),this.define(`key${this.target.loopLevel}`,e.key?_(e.key):r),this.dev&&(this.helpers.add("OwlError"),this.addLine(`if (keys${n.id}.has(String(key${this.target.loopLevel}))) { throw new OwlError(\`Got duplicate key in t-foreach: \${key${this.target.loopLevel}}\`)}`),this.addLine(`keys${n.id}.add(String(key${this.target.loopLevel}));`));let h=ue(t,{block:n,index:r});return this.compileAST(e.body,h),this.target.indentLevel--,this.target.loopLevel--,this.target.loopCtxVars.pop(),this.addLine("}"),this.insertBlock("l",n,t),n.varName}compileTKey(e,t){let n=I("tKey_");return this.define(n,_(e.expr)),t=ue(t,{tKeyExpr:n,block:t.block,index:t.index}),this.compileAST(e.content,t)}compileMulti(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r,s=this.target.code.length;if(i){let l=e.content.filter(h=>!h.hasNoRepresentation).length,c=null;if(l<=1){let h=!this.target.hasRoot&&e.content[e.content.length-1].hasNoRepresentation;h&&(this.target.deferReturn=!0);for(let a of e.content){let u=this.compileAST(a,t);c=c||u}return h&&(this.target.deferReturn=!1,this.addLine(`return ${c};`)),c}n=this.createBlock(n,"multi",t)}let o=0;for(let l=0,c=e.content.length;l<c;l++){let h=e.content[l],a=!h.hasNoRepresentation,u=ue(t,{block:n,index:o,forceNewBlock:a});this.compileAST(h,u),a&&o++}if(i){if(n.hasDynamicChildren&&n.children.length){let c=this.target.code,h=n.children.slice(),a=h.shift();for(let u=s;u<c.length&&!(c[u].trimStart().startsWith(`const ${a.varName} `)&&(c[u]=c[u].replace(`const ${a.varName}`,a.varName),a=h.shift(),!a));u++);this.addLine(`let ${n.children.map(u=>u.varName).join(", ")};`,s)}let l=n.children.map(c=>c.varName).join(", ");this.insertBlock(`multi([${l}])`,n,t)}return n.varName}compileTCall(e,t){let{block:n,forceNewBlock:r}=t,i=e.attrs?this.formatPropObject(e.attrs,e.attrsTranslationCtx,t.translationCtx):[],o=ct.test(e.name)?Xt(e.name):"`"+e.name+"`";if(n&&!r&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),e.body){let a=this.compileInNewTarget("callBody",e.body,t),u=I("lazyBlock");this.define(u,`${a}.bind(this, ctx)`),this.helpers.add("zero"),i.push(`[zero]: ${u}`)}let l,c=`{${i.join(", ")}}`;if(e.context){let a=I("ctx");this.addLine(`const ${a} = ${_(e.context)};`),i.length?l=`Object.assign({this: ${a}}, ${c})`:l=`{this: ${a}}`}else i.length===0?l="ctx":l=`Object.assign(Object.create(ctx), ${c})`;let h=this.generateComponentKey();return this.helpers.add("callTemplate"),this.insertBlock(`callTemplate(${o}, this, app, ${l}, node, ${h})`,n,{...t,forceNewBlock:!n}),n.varName}compileTCallBlock(e,t){let{block:n,forceNewBlock:r}=t;return n&&(r||this.insertAnchor(n)),n=this.createBlock(n,"multi",t),this.insertBlock(_(e.name),n,{...t,forceNewBlock:!n}),n.varName}compileTSet(e,t){let n=e.value?_(e.value||""):"null",r=this.target.loopLevel===0,i=this.target.tSetVars.get(e.name),s=i!==void 0&&this.target.loopLevel>i;if(e.body){this.helpers.add("LazyValue");let o={type: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=lt(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=lt(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]),k=/^[a-z_]+$/i.test(p)?p:`'${p}'`;this.helpers.add("toSignal");let y=this.generateSignalCacheKey();i.push(`${k}: 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}=dr(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 k=`${p}.${T}`;s.push(`"${k}"`),i.push(`"${k}": 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(ct)?(s=!0,o=!0,i=Xt(e.name)):(i="'"+e.name+"'",o=o||this.slotNames.has(e.name),this.slotNames.add(e.name));let l={...e.attrs},c=l["t-props"];delete l["t-props"];let h=this.target.loopLevel?`key${this.target.loopLevel}`:"key";o&&(h=this.generateComponentKey(h));let a=e.attrs?this.formatPropObject(l,e.attrsTranslationCtx,t.translationCtx):[],u=this.getPropString(a,c);if(e.defaultContent){let f=this.compileInNewTarget("defaultContent",e.defaultContent,t);r=`callSlot(ctx, node, ${h}, ${i}, ${s}, ${u}, ${f}.bind(this))`}else if(s){let f=I("slot");this.define(f,i),r=`toggler(${f}, callSlot(ctx, node, ${h}, ${f}, ${s}, ${u}))`}else r=`callSlot(ctx, node, ${h}, ${i}, ${s}, ${u})`;return e.on&&(r=this.wrapWithEventCatcher(r,e.on)),n&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),this.insertBlock(r,n,{...t,forceNewBlock:!1}),n.varName}compileTTranslation(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translate:!1})):null}compileTTranslationContext(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translationCtx:e.translationCtx})):null}};function mr(e,t={hasGlobalValues:!1}){let n=Rs(e,t.customDirectives),i=new oo(n,t).generateCode();try{return new Function("app, bdom, helpers",i)}catch(s){let{name:o}=t,l=o?`template "${o}"`:"anonymous template",c=new g(`Failed to compile ${l}: ${s.message}
22
+ ${n}`;console.log(r)}return n}compileInNewTarget(e,t,n,r){let i=I(e),s=this.target,o=new hr(i,r);return this.targets.push(o),this.target=o,this.compileAST(t,ue(n)),this.target=s,i}addLine(e,t){this.target.addLine(e,t)}define(e,t){this.addLine(`const ${e} = ${t};`)}insertAnchor(e,t=e.children.length){let n=`block-child-${t}`,r=ne.createElement(n);e.insert(r)}createBlock(e,t,n){let r=this.target.hasRoot,i=new Yt(this.target,t);return r||(this.target.hasRoot=!0,i.isRoot=!0),e&&(e.children.push(i),e.type==="list"&&(i.parentVar=`c_block${e.id}`)),i}insertBlock(e,t,n){let r=t.generateExpr(e);if(t.parentVar){let i=this.target.currentKey(n);this.helpers.add("withKey"),this.addLine(`${t.parentVar}[${n.index}] = withKey(${r}, ${i});`);return}n.tKeyExpr&&(r=`toggler(${n.tKeyExpr}, ${r})`),t.isRoot&&!this.target.deferReturn?(this.target.on&&(r=this.wrapWithEventCatcher(r,this.target.on)),this.addLine(`return ${r};`)):this.define(t.varName,r)}translate(e,t){let n=oo.exec(e);return n[1]+this.translateFn(n[2],t)+n[3]}compileAST(e,t){switch(e.type){case $.Text:return this.compileText(e,t);case $.DomNode:return this.compileTDomNode(e,t);case $.TOut:return this.compileTOut(e,t);case $.TIf:return this.compileTIf(e,t);case $.TForEach:return this.compileTForeach(e,t);case $.TKey:return this.compileTKey(e,t);case $.Multi:return this.compileMulti(e,t);case $.TCall:return this.compileTCall(e,t);case $.TCallBlock:return this.compileTCallBlock(e,t);case $.TSet:return this.compileTSet(e,t);case $.TComponent:return this.compileComponent(e,t);case $.TDebug:return this.compileDebug(e,t);case $.TLog:return this.compileLog(e,t);case $.TCallSlot:return this.compileTCallSlot(e,t);case $.TTranslation:return this.compileTTranslation(e,t);case $.TTranslationContext:return this.compileTTranslationContext(e,t)}}compileDebug(e,t){return this.addLine("debugger;"),e.content?this.compileAST(e.content,t):null}compileLog(e,t){return this.addLine(`console.log(${_(e.expr)});`),e.content?this.compileAST(e.content,t):null}compileText(e,t){let{block:n,forceNewBlock:r}=t,i=e.value;if(i&&t.translate!==!1&&(i=this.translate(i,t.translationCtx)),t.inPreTag||(i=i.replace(ro," ")),!n||r)n=this.createBlock(n,"text",t),this.insertBlock(`text(${at(i)})`,n,{...t,forceNewBlock:r&&!n});else{let s=e.type===$.Text?ne.createTextNode:ne.createComment;n.insert(s.call(ne,i))}return n.varName}generateHandlerCode(e,t){let n=e.split(".").slice(1).map(h=>{if(!io.has(h))throw new g(`Unknown event modifier: '${h}'`);return`"${h}"`}),r="";n.length&&(r=`${n.join(",")}, `);let i=_(t);if(!i.trim())return`[${r}, ctx]`;let s,o=i.match(/^(\([^)]*\))\s*=>/),l=!o&&i.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=>/);if(o){let h=o[1].slice(1,-1).trim(),a=i.slice(o[0].length);s=h?`(ctx,${h})=>${a}`:`(ctx)=>${a}`}else if(l){let h=i.slice(l[0].length);s=`(ctx,${l[1]})=>${h}`}else this.helpers.add("callHandler"),s=`(ctx, ev) => callHandler(${i}, ctx, ev)`;let c=I("hdlr_fn");return this.staticDefs.push({id:c,expr:s}),`[${r}${c}, ctx]`}compileTDomNode(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r||e.dynamicTag!==null||e.ns,s=this.target.code.length;if(i&&((e.dynamicTag||t.tKeyExpr||e.ns)&&t.block&&this.insertAnchor(t.block),n=this.createBlock(n,"block",t),this.blocks.push(n),e.dynamicTag)){let a=I("tag");this.define(a,_(e.dynamicTag)),n.dynamicTagName=a}let o={};for(let a in e.attrs){let u,f;if(a.startsWith("t-attf")){u=Xt(e.attrs[a]);let m=n.insertData(u,"attr");f=a.slice(7),o["block-attribute-"+m]=f}else if(a.startsWith("t-att"))if(f=a==="t-att"?null:a.slice(6),u=_(e.attrs[a]),f&&so(e.tag,f)){f==="readonly"&&(f="readOnly"),f==="value"?u=`new String((${u}) === 0 ? 0 : ((${u}) || ""))`:u=`new Boolean(${u})`;let m=n.insertData(u,"prop");o[`block-property-${m}`]=f}else{let m=n.insertData(u,"attr");a==="t-att"?o["block-attributes"]=String(m):o[`block-attribute-${m}`]=f}else if(this.translatableAttributes.includes(a)){let m=e.attrsTranslationCtx?.[a]||t.translationCtx;o[a]=this.translateFn(e.attrs[a],m)}else u=`"${e.attrs[a]}"`,f=a,o[a]=e.attrs[a];if(f==="value"&&t.tModelSelectedExpr){let m=n.insertData(`${t.tModelSelectedExpr} === ${u}`,"attr");o[`block-attribute-${m}`]="selected"}}let l;if(e.model){let{hasDynamicChildren:a,expr:u,eventType:f,shouldNumberize:m,shouldTrim:p,targetAttr:b,specialInitTargetAttr:d,isProxy:S}=e.model,N,w;if(S){let v=_(u);N=v,w=k=>`${v} = ${k}`}else{let v=I("expr"),k=_(u);this.helpers.add("modelExpr"),this.define(v,`modelExpr(${k})`),N=`${v}()`,w=D=>`${v}.set(${D})`}let T;if(d){let v=b in o&&`'${o[b]}'`;if(!v&&e.attrs){let k=e.attrs[`t-att-${b}`];k&&(v=_(k))}T=n.insertData(`${N} === ${v}`,"prop"),o[`block-property-${T}`]=d}else a?(l=`${I("bValue")}`,this.define(l,N)):(T=n.insertData(N,"prop"),o[`block-property-${T}`]=b);this.helpers.add("toNumber");let y=`ev.target.${b}`;y=p?`${y}.trim()`:y,y=m?`toNumber(${y})`:y;let E=`[(ctx, ev) => { ${w(y)}; }, ctx]`;T=n.insertData(E,"hdlr"),o[`block-handler-${T}`]=f}for(let a in e.on){let u=this.generateHandlerCode(a,e.on[a]),f=n.insertData(u,"hdlr");o[`block-handler-${f}`]=a}if(e.ref){let a=_(e.ref);this.helpers.add("createRef");let u=`createRef(${a}, node)`,f=n.insertData(u,"ref");o["block-ref"]=String(f)}let c=e.ns||t.nameSpace,h=c?ne.createElementNS(c,e.tag):ne.createElement(e.tag);for(let[a,u]of Object.entries(o))a==="class"&&u===""||h.setAttribute(a,u);if(n.insert(h),e.content.length){let a=n.currentDom;n.currentDom=h;let u=e.content;for(let f=0;f<u.length;f++){let m=e.content[f],p=ue(t,{block:n,index:n.childNumber,forceNewBlock:!1,tKeyExpr:t.tKeyExpr,nameSpace:c,tModelSelectedExpr:l,inPreTag:t.inPreTag||e.tag==="pre"});this.compileAST(m,p)}n.currentDom=a}if(i&&(this.insertBlock(`${n.blockName}(ddd)`,n,t),n.children.length&&n.hasDynamicChildren)){let a=this.target.code,u=n.children.slice(),f=u.shift();for(let m=s;m<a.length&&!(a[m].trimStart().startsWith(`const ${f.varName} `)&&(a[m]=a[m].replace(`const ${f.varName}`,f.varName),f=u.shift(),!f));m++);this.addLine(`let ${n.children.map(m=>m.varName).join(", ")};`,s)}return n.varName}compileZero(){this.helpers.add("zero");let e=this.slotNames.has(fr);this.slotNames.add(fr);let t=this.target.loopLevel?`key${this.target.loopLevel}`:"key";return e&&(t=this.generateComponentKey(t)),`ctx[zero]?.(node, ${t}) || text("")`}compileTOut(e,t){let{block:n}=t;n&&this.insertAnchor(n),n=this.createBlock(n,"html",t);let r;if(e.expr==="0")r=this.compileZero();else if(e.body){let i=null;i=Yt.nextBlockId;let s=ue(t);this.compileAST({type:$.Multi,content:e.body},s),this.helpers.add("safeOutput"),r=`safeOutput(${_(e.expr)}, b${i})`}else this.helpers.add("safeOutput"),r=`safeOutput(${_(e.expr)})`;return this.insertBlock(r,n,t),n.varName}compileTIfBranch(e,t,n){this.target.indentLevel++;let r=t.children.length;this.compileAST(e,ue(n,{block:t,index:n.index})),t.children.length>r&&this.insertAnchor(t,r),this.target.indentLevel--}compileTIf(e,t,n){let{block:r,forceNewBlock:i}=t,s=this.target.code.length,o=!r||r.type!=="multi"&&i;if(r&&(r.hasDynamicChildren=!0),(!r||r.type!=="multi"&&i)&&(r=this.createBlock(r,"multi",t)),this.addLine(`if (${_(e.condition)}) {`),this.compileTIfBranch(e.content,r,t),e.tElif)for(let l of e.tElif)this.addLine(`} else if (${_(l.condition)}) {`),this.compileTIfBranch(l.content,r,t);if(e.tElse&&(this.addLine("} else {"),this.compileTIfBranch(e.tElse,r,t)),this.addLine("}"),o){if(r.children.length){let c=this.target.code,h=r.children.slice(),a=h.shift();for(let u=s;u<c.length&&!(c[u].trimStart().startsWith(`const ${a.varName} `)&&(c[u]=c[u].replace(`const ${a.varName}`,a.varName),a=h.shift(),!a));u++);this.addLine(`let ${r.children.map(u=>u.varName).join(", ")};`,s)}let l=r.children.map(c=>c.varName).join(", ");this.insertBlock(`multi([${l}])`,r,t)}return r.varName}compileTForeach(e,t){let{block:n}=t;n&&this.insertAnchor(n),n=this.createBlock(n,"list",t),this.target.loopLevel++;let r=`i${this.target.loopLevel}`,i=I("ctx");this.addLine(`const ${i} = ctx;`),this.target.loopCtxVars.push(i);let s=`v_block${n.id}`,o=`k_block${n.id}`,l=`l_block${n.id}`,c=`c_block${n.id}`;this.helpers.add("prepareList"),this.define(`[${o}, ${s}, ${l}, ${c}]`,`prepareList(${_(e.collection)});`),this.dev&&this.define(`keys${n.id}`,"new Set()"),this.addLine(`for (let ${r} = 0; ${r} < ${l}; ${r}++) {`),this.target.indentLevel++,this.addLine(`let ctx = Object.create(${i});`),this.addLine(`ctx[\`${e.elem}\`] = ${o}[${r}];`),e.noFlags&re.First||this.addLine(`ctx[\`${e.elem}_first\`] = ${r} === 0;`),e.noFlags&re.Last||this.addLine(`ctx[\`${e.elem}_last\`] = ${r} === ${o}.length - 1;`),e.noFlags&re.Index||this.addLine(`ctx[\`${e.elem}_index\`] = ${r};`),e.noFlags&re.Value||this.addLine(`ctx[\`${e.elem}_value\`] = ${s}[${r}];`),this.define(`key${this.target.loopLevel}`,e.key?_(e.key):r),this.dev&&(this.helpers.add("OwlError"),this.addLine(`if (keys${n.id}.has(String(key${this.target.loopLevel}))) { throw new OwlError(\`Got duplicate key in t-foreach: \${key${this.target.loopLevel}}\`)}`),this.addLine(`keys${n.id}.add(String(key${this.target.loopLevel}));`));let h=ue(t,{block:n,index:r});return this.compileAST(e.body,h),this.target.indentLevel--,this.target.loopLevel--,this.target.loopCtxVars.pop(),this.addLine("}"),this.insertBlock("l",n,t),n.varName}compileTKey(e,t){let n=I("tKey_");return this.define(n,_(e.expr)),t=ue(t,{tKeyExpr:n,block:t.block,index:t.index}),this.compileAST(e.content,t)}compileMulti(e,t){let{block:n,forceNewBlock:r}=t,i=!n||r,s=this.target.code.length;if(i){let l=e.content.filter(h=>!h.hasNoRepresentation).length,c=null;if(l<=1){let h=!this.target.hasRoot&&e.content[e.content.length-1].hasNoRepresentation;h&&(this.target.deferReturn=!0);for(let a of e.content){let u=this.compileAST(a,t);c=c||u}return h&&(this.target.deferReturn=!1,this.addLine(`return ${c};`)),c}n=this.createBlock(n,"multi",t)}let o=0;for(let l=0,c=e.content.length;l<c;l++){let h=e.content[l],a=!h.hasNoRepresentation,u=ue(t,{block:n,index:o,forceNewBlock:a});this.compileAST(h,u),a&&o++}if(i){if(n.hasDynamicChildren&&n.children.length){let c=this.target.code,h=n.children.slice(),a=h.shift();for(let u=s;u<c.length&&!(c[u].trimStart().startsWith(`const ${a.varName} `)&&(c[u]=c[u].replace(`const ${a.varName}`,a.varName),a=h.shift(),!a));u++);this.addLine(`let ${n.children.map(u=>u.varName).join(", ")};`,s)}let l=n.children.map(c=>c.varName).join(", ");this.insertBlock(`multi([${l}])`,n,t)}return n.varName}compileTCall(e,t){let{block:n,forceNewBlock:r}=t,i=e.attrs?this.formatPropObject(e.attrs,e.attrsTranslationCtx,t.translationCtx):[],o=ut.test(e.name)?Xt(e.name):"`"+e.name+"`";if(n&&!r&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),e.body){let a=this.compileInNewTarget("callBody",e.body,t),u=I("lazyBlock");this.define(u,`${a}.bind(this, ctx)`),this.helpers.add("zero"),i.push(`[zero]: ${u}`)}let l,c=`{${i.join(", ")}}`;if(e.context){let a=I("ctx");this.addLine(`const ${a} = ${_(e.context)};`),i.length?l=`Object.assign({this: ${a}}, ${c})`:l=`{this: ${a}}`}else i.length===0?l="ctx":l=`Object.assign(Object.create(ctx), ${c})`;let h=this.generateComponentKey();return this.helpers.add("callTemplate"),this.insertBlock(`callTemplate(${o}, this, app, ${l}, node, ${h})`,n,{...t,forceNewBlock:!n}),n.varName}compileTCallBlock(e,t){let{block:n,forceNewBlock:r}=t;return n&&(r||this.insertAnchor(n)),n=this.createBlock(n,"multi",t),this.insertBlock(_(e.name),n,{...t,forceNewBlock:!n}),n.varName}compileTSet(e,t){let n=e.value?_(e.value||""):"null",r=this.target.loopLevel===0,i=this.target.tSetVars.get(e.name),s=i!==void 0&&this.target.loopLevel>i;if(e.body){this.helpers.add("LazyValue");let o={type:$.Multi,content:e.body},l=this.compileInNewTarget("value",o,t),c=this.target.currentKey(t),h=`new LazyValue(${l}, ctx, this, node, ${c})`;if(h=e.value?h?`withDefault(${n}, ${h})`:n:h,this.helpers.add("withDefault"),s){let a=this.target.loopCtxVars[i];this.addLine(`${a}[\`${e.name}\`] = ${h};`)}else r?(this.target.needsScopeProtection=!0,this.addLine(`ctx[\`${e.name}\`] = ${h};`),this.target.tSetVars.set(e.name,0)):(this.addLine(`ctx[\`${e.name}\`] = ${h};`),this.target.tSetVars.set(e.name,this.target.loopLevel))}else{let o;if(e.defaultValue){let l=at(t.translate?this.translate(e.defaultValue,t.translationCtx):e.defaultValue);e.value?(this.helpers.add("withDefault"),o=`withDefault(${n}, ${l})`):o=l}else o=n;if(s){let l=this.target.loopCtxVars[i];this.addLine(`${l}["${e.name}"] = ${o};`)}else r?(this.target.needsScopeProtection=!0,this.addLine(`ctx["${e.name}"] = ${o};`),this.target.tSetVars.set(e.name,0)):(this.addLine(`ctx["${e.name}"] = ${o};`),this.target.tSetVars.set(e.name,this.target.loopLevel))}return null}generateComponentKey(e="key"){let t=[I("__")];for(let n=0;n<this.target.loopLevel;n++)t.push(`\${key${n+1}}`);return`${e} + \`${t.join("__")}\``}generateSignalCacheKey(){let e=[I("__sig_")];for(let t=0;t<this.target.loopLevel;t++)e.push(`\${key${t+1}}`);return`\`${e.join("__")}\``}formatProp(e,t,n,r){if(e.endsWith(".translate")){let i=n?.[e]||r;t=at(this.translateFn(t,i))}else t=_(t);if(e.includes(".")){let[i,s]=e.split(".");switch(e=i,s){case"bind":t=`(${t}).bind(this)`;break;case"alike":case"translate":break;default:throw new g(`Invalid prop suffix: ${s}`)}}return e=/^[a-z_]+$/i.test(e)?e:`'${e}'`,`${e}: ${t||void 0}`}formatPropObject(e,t,n){return Object.entries(e).map(([r,i])=>this.formatProp(r,i,t,n))}getPropString(e,t){let n=`{${e.join(",")}}`;return t&&(n=`Object.assign({}, ${_(t)}${e.length?", "+n:""})`),n}compileComponent(e,t){let{block:n}=t,r="slots"in(e.props||{}),i=[],s=[];for(let m in e.props||{}){let[p,b]=m.split(".");if(b==="signal"){let w=_(e.props[m]),T=/^[a-z_]+$/i.test(p)?p:`'${p}'`;this.helpers.add("toSignal");let y=this.generateSignalCacheKey();i.push(`${T}: toSignal(node, ${y}, ${w})`);continue}if(b){i.push(this.formatProp(m,e.props[m],e.propsTranslationCtx,t.translationCtx));continue}let{expr:d,freeVariables:S}=pr(e.props[m]),N=/^[a-z_]+$/i.test(p)?p:`'${p}'`;if(i.push(`${N}: ${d||void 0}`),S)for(let w of S){let T=`${p}.${w}`;s.push(`"${T}"`),i.push(`"${T}": ctx['${w}']`)}else s.push(`"${p}"`)}let o="";if(e.slots){let m=[];for(let p in e.slots){let b=e.slots[p],d=[];if(b.content){let w=this.compileInNewTarget("slot",b.content,t,b.on);d.push(`__render: ${w}.bind(this), __ctx: ctx`)}let S=e.slots[p].scope;S&&d.push(`__scope: "${S}"`),e.slots[p].attrs&&d.push(...this.formatPropObject(e.slots[p].attrs,e.slots[p].attrsTranslationCtx,t.translationCtx));let N=`{${d.join(", ")}}`;m.push(`'${p}': ${N}`)}o=`{${m.join(", ")}}`}o&&!(e.dynamicProps||r)&&(this.helpers.add("markRaw"),i.push(`slots: markRaw(${o})`));let l=this.getPropString(i,e.dynamicProps),c;(o&&(e.dynamicProps||r)||this.dev)&&(c=I("props"),this.define(c,l),l=c),o&&(e.dynamicProps||r)&&(this.helpers.add("markRaw"),this.addLine(`${c}.slots = markRaw(Object.assign(${o}, ${c}.slots))`));let h;e.isDynamic?(h=I("Comp"),this.define(h,_(e.name))):h=`\`${e.name}\``,n&&(t.forceNewBlock===!1||t.tKeyExpr)&&this.insertAnchor(n);let a=this.generateComponentKey();t.tKeyExpr&&(a=`${t.tKeyExpr} + ${a}`);let u=I("comp");this.helpers.add("createComponent"),this.staticDefs.push({id:u,expr:`createComponent(app, ${e.isDynamic?null:h}, ${!e.isDynamic}, ${!!e.slots}, ${!!e.dynamicProps}, [${s}])`}),e.isDynamic&&(a=`(${h}).name + ${a}`);let f=`${u}(${l}, ${a}, node, this, ${e.isDynamic?h:null})`;return e.isDynamic&&(f=`toggler(${h}, ${f})`),e.on&&(f=this.wrapWithEventCatcher(f,e.on)),n=this.createBlock(n,"multi",t),this.insertBlock(f,n,t),n.varName}wrapWithEventCatcher(e,t){this.helpers.add("createCatcher");let n=I("catcher"),r={},i=[];for(let s in t){let o=I("hdlr"),l=i.push(o)-1;r[s]=l;let c=this.generateHandlerCode(s,t[s]);this.define(o,c)}return this.staticDefs.push({id:n,expr:`createCatcher(${JSON.stringify(r)})`}),`${n}(${e}, [${i.join(",")}])`}compileTCallSlot(e,t){this.helpers.add("callSlot");let{block:n}=t,r,i,s=!1,o=!1;e.name.match(ut)?(s=!0,o=!0,i=Xt(e.name)):(i="'"+e.name+"'",o=o||this.slotNames.has(e.name),this.slotNames.add(e.name));let l={...e.attrs},c=l["t-props"];delete l["t-props"];let h=this.target.loopLevel?`key${this.target.loopLevel}`:"key";o&&(h=this.generateComponentKey(h));let a=e.attrs?this.formatPropObject(l,e.attrsTranslationCtx,t.translationCtx):[],u=this.getPropString(a,c);if(e.defaultContent){let f=this.compileInNewTarget("defaultContent",e.defaultContent,t);r=`callSlot(ctx, node, ${h}, ${i}, ${s}, ${u}, ${f}.bind(this))`}else if(s){let f=I("slot");this.define(f,i),r=`toggler(${f}, callSlot(ctx, node, ${h}, ${f}, ${s}, ${u}))`}else r=`callSlot(ctx, node, ${h}, ${i}, ${s}, ${u})`;return e.on&&(r=this.wrapWithEventCatcher(r,e.on)),n&&this.insertAnchor(n),n=this.createBlock(n,"multi",t),this.insertBlock(r,n,{...t,forceNewBlock:!1}),n.varName}compileTTranslation(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translate:!1})):null}compileTTranslationContext(e,t){return e.content?this.compileAST(e.content,Object.assign({},t,{translationCtx:e.translationCtx})):null}};function gr(e,t={hasGlobalValues:!1}){let n=Ms(e,t.customDirectives),i=new lo(n,t).generateCode();try{return new Function("app, bdom, helpers",i)}catch(s){let{name:o}=t,l=o?`template "${o}"`:"anonymous template",c=new g(`Failed to compile ${l}: ${s.message}
23
23
 
24
24
  generated code:
25
25
  function(app, bdom, helpers) {
26
26
  ${i}
27
- }`);throw c.cause=s,c}}Pe.prototype._compileTemplate=function(t,n){return mr(n,{name:t,dev:this.dev,translateFn:this.translateFn,translatableAttributes:this.translatableAttributes,customDirectives:this.customDirectives,hasGlobalValues:this.hasGlobalValues})};Pe.prototype._parseXML=function(t){return Zt(t)};return Nr(lo);})();
27
+ }`);throw c.cause=s,c}}Pe.prototype._compileTemplate=function(t,n){return gr(n,{name:t,dev:this.dev,translateFn:this.translateFn,translatableAttributes:this.translatableAttributes,customDirectives:this.customDirectives,hasGlobalValues:this.hasGlobalValues})};Pe.prototype._parseXML=function(t){return Zt(t)};return Er(ao);})();
@@ -145,15 +145,15 @@ export declare function untrack<T>(fn: (...args: any[]) => T): T;
145
145
  export type Constructor<T = any> = {
146
146
  new (...args: any[]): T;
147
147
  };
148
- declare const hasDefault: unique symbol;
148
+ export declare const hasDefault: unique symbol;
149
149
  export type WithDefault<T> = T & {
150
150
  [hasDefault]: T;
151
151
  };
152
- declare const isOptional: unique symbol;
152
+ export declare const isOptional: unique symbol;
153
153
  export type Optional<T> = T & {
154
154
  [isOptional]: T;
155
155
  };
156
- declare const typeBrand: unique symbol;
156
+ export declare const typeBrand: unique symbol;
157
157
  export type Type<T> = T & {
158
158
  [typeBrand]: T;
159
159
  /**
@@ -495,6 +495,14 @@ export interface AsyncComputed<T> {
495
495
  error(): Error | null;
496
496
  refresh(): void;
497
497
  dispose(): void;
498
+ /**
499
+ * Returns a promise that resolves as soon as no run is in flight: if a run
500
+ * is currently running it resolves once that run (or any run that supersedes
501
+ * it) settles, otherwise it resolves immediately. It never rejects — fetcher
502
+ * errors are surfaced through `error()`. Handy to await the value in
503
+ * `onWillStart`: `onWillStart(() => data.currentPromise())`.
504
+ */
505
+ currentPromise(): Promise<void>;
498
506
  }
499
507
  /**
500
508
  * @experimental The exact API is subject to change in future versions.
@@ -709,7 +717,7 @@ declare function staticProp<T = any>(key: string): T;
709
717
  declare function staticProp<T>(key: string, type: WithDefault<T>): T;
710
718
  declare function staticProp<T>(key: string, type: Optional<T>): T | undefined;
711
719
  declare function staticProp<T>(key: string, type: T): StripBrands<T>;
712
- declare const isProps: unique symbol;
720
+ export declare const isProps: unique symbol;
713
721
  export type Props<T extends {}> = T & {
714
722
  [isProps]: never;
715
723
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/owl",
3
- "version": "3.0.0-alpha.38",
3
+ "version": "3.0.0-alpha.39",
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.38",
47
- "@odoo/owl-core": "3.0.0-alpha.38",
48
- "@odoo/owl-runtime": "3.0.0-alpha.38",
46
+ "@odoo/owl-compiler": "3.0.0-alpha.39",
47
+ "@odoo/owl-core": "3.0.0-alpha.39",
48
+ "@odoo/owl-runtime": "3.0.0-alpha.39",
49
49
  "jsdom": "^25.0.1"
50
50
  }
51
51
  }