@odoo/owl 2.8.2 → 2.8.3

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.
Binary file
package/dist/owl.cjs.js CHANGED
@@ -88,10 +88,16 @@ function toggler(key, child) {
88
88
  class OwlError extends Error {
89
89
  }
90
90
 
91
- const { setAttribute: elemSetAttribute, removeAttribute } = Element.prototype;
92
- const tokenList = DOMTokenList.prototype;
93
- const tokenListAdd = tokenList.add;
94
- const tokenListRemove = tokenList.remove;
91
+ let elemSetAttribute;
92
+ let removeAttribute;
93
+ let tokenListAdd;
94
+ let tokenListRemove;
95
+ if (typeof Element !== "undefined") {
96
+ ({ setAttribute: elemSetAttribute, removeAttribute } = Element.prototype);
97
+ const tokenList = DOMTokenList.prototype;
98
+ tokenListAdd = tokenList.add;
99
+ tokenListRemove = tokenList.remove;
100
+ }
95
101
  const isArray = Array.isArray;
96
102
  const { split, trim } = String.prototype;
97
103
  const wordRegexp = /\s+/;
@@ -470,10 +476,15 @@ function setupSyntheticEvent(evName, eventKey, capture = false) {
470
476
  }
471
477
 
472
478
  const getDescriptor$3 = (o, p) => Object.getOwnPropertyDescriptor(o, p);
473
- const nodeProto$4 = Node.prototype;
474
- const nodeInsertBefore$3 = nodeProto$4.insertBefore;
475
- const nodeSetTextContent$1 = getDescriptor$3(nodeProto$4, "textContent").set;
476
- const nodeRemoveChild$3 = nodeProto$4.removeChild;
479
+ let nodeInsertBefore$3;
480
+ let nodeSetTextContent$1;
481
+ let nodeRemoveChild$3;
482
+ if (typeof Node !== "undefined") {
483
+ const nodeProto = Node.prototype;
484
+ nodeInsertBefore$3 = nodeProto.insertBefore;
485
+ nodeSetTextContent$1 = getDescriptor$3(nodeProto, "textContent").set;
486
+ nodeRemoveChild$3 = nodeProto.removeChild;
487
+ }
477
488
  // -----------------------------------------------------------------------------
478
489
  // Multi NODE
479
490
  // -----------------------------------------------------------------------------
@@ -609,11 +620,15 @@ function multi(children) {
609
620
  }
610
621
 
611
622
  const getDescriptor$2 = (o, p) => Object.getOwnPropertyDescriptor(o, p);
612
- const nodeProto$3 = Node.prototype;
613
- const characterDataProto$1 = CharacterData.prototype;
614
- const nodeInsertBefore$2 = nodeProto$3.insertBefore;
615
- const characterDataSetData$1 = getDescriptor$2(characterDataProto$1, "data").set;
616
- const nodeRemoveChild$2 = nodeProto$3.removeChild;
623
+ let nodeInsertBefore$2;
624
+ let characterDataSetData$1;
625
+ let nodeRemoveChild$2;
626
+ if (typeof Node !== "undefined") {
627
+ const nodeProto = Node.prototype;
628
+ nodeInsertBefore$2 = nodeProto.insertBefore;
629
+ nodeRemoveChild$2 = nodeProto.removeChild;
630
+ characterDataSetData$1 = getDescriptor$2(CharacterData.prototype, "data").set;
631
+ }
617
632
  class VSimpleNode {
618
633
  constructor(text) {
619
634
  this.text = text;
@@ -679,12 +694,18 @@ function toText(value) {
679
694
  }
680
695
 
681
696
  const getDescriptor$1 = (o, p) => Object.getOwnPropertyDescriptor(o, p);
682
- const nodeProto$2 = Node.prototype;
683
- const elementProto = Element.prototype;
684
- const characterDataProto = CharacterData.prototype;
685
- const characterDataSetData = getDescriptor$1(characterDataProto, "data").set;
686
- const nodeGetFirstChild = getDescriptor$1(nodeProto$2, "firstChild").get;
687
- const nodeGetNextSibling = getDescriptor$1(nodeProto$2, "nextSibling").get;
697
+ let nodeProto;
698
+ let elementProto;
699
+ let characterDataSetData;
700
+ let nodeGetFirstChild;
701
+ let nodeGetNextSibling;
702
+ if (typeof Node !== "undefined") {
703
+ nodeProto = Node.prototype;
704
+ elementProto = Element.prototype;
705
+ characterDataSetData = getDescriptor$1(CharacterData.prototype, "data").set;
706
+ nodeGetFirstChild = getDescriptor$1(nodeProto, "firstChild").get;
707
+ nodeGetNextSibling = getDescriptor$1(nodeProto, "nextSibling").get;
708
+ }
688
709
  const NO_OP$1 = () => { };
689
710
  function makePropSetter(name) {
690
711
  return function setProp(value) {
@@ -1073,8 +1094,8 @@ function createBlockClass(template, ctx) {
1073
1094
  const isDynamic = refN > 0;
1074
1095
  // these values are defined here to make them faster to lookup in the class
1075
1096
  // block scope
1076
- const nodeCloneNode = nodeProto$2.cloneNode;
1077
- const nodeInsertBefore = nodeProto$2.insertBefore;
1097
+ const nodeCloneNode = nodeProto.cloneNode;
1098
+ const nodeInsertBefore = nodeProto.insertBefore;
1078
1099
  const elementRemove = elementProto.remove;
1079
1100
  class Block {
1080
1101
  constructor(data) {
@@ -1203,11 +1224,17 @@ function makeRefSetter(index, refs) {
1203
1224
  }
1204
1225
 
1205
1226
  const getDescriptor = (o, p) => Object.getOwnPropertyDescriptor(o, p);
1206
- const nodeProto$1 = Node.prototype;
1207
- const nodeInsertBefore$1 = nodeProto$1.insertBefore;
1208
- const nodeAppendChild = nodeProto$1.appendChild;
1209
- const nodeRemoveChild$1 = nodeProto$1.removeChild;
1210
- const nodeSetTextContent = getDescriptor(nodeProto$1, "textContent").set;
1227
+ let nodeInsertBefore$1;
1228
+ let nodeAppendChild;
1229
+ let nodeRemoveChild$1;
1230
+ let nodeSetTextContent;
1231
+ if (typeof Node !== "undefined") {
1232
+ const nodeProto = Node.prototype;
1233
+ nodeInsertBefore$1 = nodeProto.insertBefore;
1234
+ nodeAppendChild = nodeProto.appendChild;
1235
+ nodeRemoveChild$1 = nodeProto.removeChild;
1236
+ nodeSetTextContent = getDescriptor(nodeProto, "textContent").set;
1237
+ }
1211
1238
  // -----------------------------------------------------------------------------
1212
1239
  // List Node
1213
1240
  // -----------------------------------------------------------------------------
@@ -1419,9 +1446,13 @@ function createMapping(ch1, startIdx1, endIdx2) {
1419
1446
  return mapping;
1420
1447
  }
1421
1448
 
1422
- const nodeProto = Node.prototype;
1423
- const nodeInsertBefore = nodeProto.insertBefore;
1424
- const nodeRemoveChild = nodeProto.removeChild;
1449
+ let nodeInsertBefore;
1450
+ let nodeRemoveChild;
1451
+ if (typeof Node !== "undefined") {
1452
+ const nodeProto = Node.prototype;
1453
+ nodeInsertBefore = nodeProto.insertBefore;
1454
+ nodeRemoveChild = nodeProto.removeChild;
1455
+ }
1425
1456
  class VHtml {
1426
1457
  constructor(html) {
1427
1458
  this.content = [];
@@ -3705,7 +3736,10 @@ function interpolate(s) {
3705
3736
  const whitespaceRE = /\s+/g;
3706
3737
  // using a non-html document so that <inner/outer>HTML serializes as XML instead
3707
3738
  // of HTML (as we will parse it as xml later)
3708
- const xmlDoc = document.implementation.createDocument(null, null, null);
3739
+ let xmlDoc;
3740
+ if (typeof document !== "undefined") {
3741
+ xmlDoc = document.implementation.createDocument(null, null, null);
3742
+ }
3709
3743
  const MODS = new Set(["stop", "capture", "prevent", "self", "synthetic"]);
3710
3744
  let nextDataIds = {};
3711
3745
  function generateId(prefix = "") {
@@ -5824,11 +5858,15 @@ function compile(template, options = {
5824
5858
  }
5825
5859
 
5826
5860
  // do not modify manually. This file is generated by the release script.
5827
- const version = "2.8.2";
5861
+ const version = "2.8.3";
5828
5862
 
5829
5863
  // -----------------------------------------------------------------------------
5830
5864
  // Scheduler
5831
5865
  // -----------------------------------------------------------------------------
5866
+ let requestAnimationFrame;
5867
+ if (typeof window !== "undefined") {
5868
+ requestAnimationFrame = window.requestAnimationFrame.bind(window);
5869
+ }
5832
5870
  class Scheduler {
5833
5871
  constructor() {
5834
5872
  this.tasks = new Set();
@@ -5916,11 +5954,13 @@ class Scheduler {
5916
5954
  }
5917
5955
  // capture the value of requestAnimationFrame as soon as possible, to avoid
5918
5956
  // interactions with other code, such as test frameworks that override them
5919
- Scheduler.requestAnimationFrame = window.requestAnimationFrame.bind(window);
5957
+ Scheduler.requestAnimationFrame = requestAnimationFrame;
5920
5958
 
5921
5959
  let hasBeenLogged = false;
5922
5960
  const apps = new Set();
5923
- window.__OWL_DEVTOOLS__ || (window.__OWL_DEVTOOLS__ = { apps, Fiber, RootFiber, toRaw, reactive });
5961
+ if (typeof window !== "undefined") {
5962
+ window.__OWL_DEVTOOLS__ || (window.__OWL_DEVTOOLS__ = { apps, Fiber, RootFiber, toRaw, reactive });
5963
+ }
5924
5964
  class App extends TemplateSet {
5925
5965
  constructor(Root, config = {}) {
5926
5966
  super(config);
@@ -6331,6 +6371,6 @@ exports.whenReady = whenReady;
6331
6371
  exports.xml = xml;
6332
6372
 
6333
6373
 
6334
- __info__.date = '2026-01-30T07:49:47.618Z';
6335
- __info__.hash = '52abf8d';
6374
+ __info__.date = '2026-03-30T13:05:32.099Z';
6375
+ __info__.hash = 'efae3e4';
6336
6376
  __info__.url = 'https://github.com/odoo/owl';
package/dist/owl.es.js CHANGED
@@ -84,10 +84,16 @@ function toggler(key, child) {
84
84
  class OwlError extends Error {
85
85
  }
86
86
 
87
- const { setAttribute: elemSetAttribute, removeAttribute } = Element.prototype;
88
- const tokenList = DOMTokenList.prototype;
89
- const tokenListAdd = tokenList.add;
90
- const tokenListRemove = tokenList.remove;
87
+ let elemSetAttribute;
88
+ let removeAttribute;
89
+ let tokenListAdd;
90
+ let tokenListRemove;
91
+ if (typeof Element !== "undefined") {
92
+ ({ setAttribute: elemSetAttribute, removeAttribute } = Element.prototype);
93
+ const tokenList = DOMTokenList.prototype;
94
+ tokenListAdd = tokenList.add;
95
+ tokenListRemove = tokenList.remove;
96
+ }
91
97
  const isArray = Array.isArray;
92
98
  const { split, trim } = String.prototype;
93
99
  const wordRegexp = /\s+/;
@@ -466,10 +472,15 @@ function setupSyntheticEvent(evName, eventKey, capture = false) {
466
472
  }
467
473
 
468
474
  const getDescriptor$3 = (o, p) => Object.getOwnPropertyDescriptor(o, p);
469
- const nodeProto$4 = Node.prototype;
470
- const nodeInsertBefore$3 = nodeProto$4.insertBefore;
471
- const nodeSetTextContent$1 = getDescriptor$3(nodeProto$4, "textContent").set;
472
- const nodeRemoveChild$3 = nodeProto$4.removeChild;
475
+ let nodeInsertBefore$3;
476
+ let nodeSetTextContent$1;
477
+ let nodeRemoveChild$3;
478
+ if (typeof Node !== "undefined") {
479
+ const nodeProto = Node.prototype;
480
+ nodeInsertBefore$3 = nodeProto.insertBefore;
481
+ nodeSetTextContent$1 = getDescriptor$3(nodeProto, "textContent").set;
482
+ nodeRemoveChild$3 = nodeProto.removeChild;
483
+ }
473
484
  // -----------------------------------------------------------------------------
474
485
  // Multi NODE
475
486
  // -----------------------------------------------------------------------------
@@ -605,11 +616,15 @@ function multi(children) {
605
616
  }
606
617
 
607
618
  const getDescriptor$2 = (o, p) => Object.getOwnPropertyDescriptor(o, p);
608
- const nodeProto$3 = Node.prototype;
609
- const characterDataProto$1 = CharacterData.prototype;
610
- const nodeInsertBefore$2 = nodeProto$3.insertBefore;
611
- const characterDataSetData$1 = getDescriptor$2(characterDataProto$1, "data").set;
612
- const nodeRemoveChild$2 = nodeProto$3.removeChild;
619
+ let nodeInsertBefore$2;
620
+ let characterDataSetData$1;
621
+ let nodeRemoveChild$2;
622
+ if (typeof Node !== "undefined") {
623
+ const nodeProto = Node.prototype;
624
+ nodeInsertBefore$2 = nodeProto.insertBefore;
625
+ nodeRemoveChild$2 = nodeProto.removeChild;
626
+ characterDataSetData$1 = getDescriptor$2(CharacterData.prototype, "data").set;
627
+ }
613
628
  class VSimpleNode {
614
629
  constructor(text) {
615
630
  this.text = text;
@@ -675,12 +690,18 @@ function toText(value) {
675
690
  }
676
691
 
677
692
  const getDescriptor$1 = (o, p) => Object.getOwnPropertyDescriptor(o, p);
678
- const nodeProto$2 = Node.prototype;
679
- const elementProto = Element.prototype;
680
- const characterDataProto = CharacterData.prototype;
681
- const characterDataSetData = getDescriptor$1(characterDataProto, "data").set;
682
- const nodeGetFirstChild = getDescriptor$1(nodeProto$2, "firstChild").get;
683
- const nodeGetNextSibling = getDescriptor$1(nodeProto$2, "nextSibling").get;
693
+ let nodeProto;
694
+ let elementProto;
695
+ let characterDataSetData;
696
+ let nodeGetFirstChild;
697
+ let nodeGetNextSibling;
698
+ if (typeof Node !== "undefined") {
699
+ nodeProto = Node.prototype;
700
+ elementProto = Element.prototype;
701
+ characterDataSetData = getDescriptor$1(CharacterData.prototype, "data").set;
702
+ nodeGetFirstChild = getDescriptor$1(nodeProto, "firstChild").get;
703
+ nodeGetNextSibling = getDescriptor$1(nodeProto, "nextSibling").get;
704
+ }
684
705
  const NO_OP$1 = () => { };
685
706
  function makePropSetter(name) {
686
707
  return function setProp(value) {
@@ -1069,8 +1090,8 @@ function createBlockClass(template, ctx) {
1069
1090
  const isDynamic = refN > 0;
1070
1091
  // these values are defined here to make them faster to lookup in the class
1071
1092
  // block scope
1072
- const nodeCloneNode = nodeProto$2.cloneNode;
1073
- const nodeInsertBefore = nodeProto$2.insertBefore;
1093
+ const nodeCloneNode = nodeProto.cloneNode;
1094
+ const nodeInsertBefore = nodeProto.insertBefore;
1074
1095
  const elementRemove = elementProto.remove;
1075
1096
  class Block {
1076
1097
  constructor(data) {
@@ -1199,11 +1220,17 @@ function makeRefSetter(index, refs) {
1199
1220
  }
1200
1221
 
1201
1222
  const getDescriptor = (o, p) => Object.getOwnPropertyDescriptor(o, p);
1202
- const nodeProto$1 = Node.prototype;
1203
- const nodeInsertBefore$1 = nodeProto$1.insertBefore;
1204
- const nodeAppendChild = nodeProto$1.appendChild;
1205
- const nodeRemoveChild$1 = nodeProto$1.removeChild;
1206
- const nodeSetTextContent = getDescriptor(nodeProto$1, "textContent").set;
1223
+ let nodeInsertBefore$1;
1224
+ let nodeAppendChild;
1225
+ let nodeRemoveChild$1;
1226
+ let nodeSetTextContent;
1227
+ if (typeof Node !== "undefined") {
1228
+ const nodeProto = Node.prototype;
1229
+ nodeInsertBefore$1 = nodeProto.insertBefore;
1230
+ nodeAppendChild = nodeProto.appendChild;
1231
+ nodeRemoveChild$1 = nodeProto.removeChild;
1232
+ nodeSetTextContent = getDescriptor(nodeProto, "textContent").set;
1233
+ }
1207
1234
  // -----------------------------------------------------------------------------
1208
1235
  // List Node
1209
1236
  // -----------------------------------------------------------------------------
@@ -1415,9 +1442,13 @@ function createMapping(ch1, startIdx1, endIdx2) {
1415
1442
  return mapping;
1416
1443
  }
1417
1444
 
1418
- const nodeProto = Node.prototype;
1419
- const nodeInsertBefore = nodeProto.insertBefore;
1420
- const nodeRemoveChild = nodeProto.removeChild;
1445
+ let nodeInsertBefore;
1446
+ let nodeRemoveChild;
1447
+ if (typeof Node !== "undefined") {
1448
+ const nodeProto = Node.prototype;
1449
+ nodeInsertBefore = nodeProto.insertBefore;
1450
+ nodeRemoveChild = nodeProto.removeChild;
1451
+ }
1421
1452
  class VHtml {
1422
1453
  constructor(html) {
1423
1454
  this.content = [];
@@ -3701,7 +3732,10 @@ function interpolate(s) {
3701
3732
  const whitespaceRE = /\s+/g;
3702
3733
  // using a non-html document so that <inner/outer>HTML serializes as XML instead
3703
3734
  // of HTML (as we will parse it as xml later)
3704
- const xmlDoc = document.implementation.createDocument(null, null, null);
3735
+ let xmlDoc;
3736
+ if (typeof document !== "undefined") {
3737
+ xmlDoc = document.implementation.createDocument(null, null, null);
3738
+ }
3705
3739
  const MODS = new Set(["stop", "capture", "prevent", "self", "synthetic"]);
3706
3740
  let nextDataIds = {};
3707
3741
  function generateId(prefix = "") {
@@ -5820,11 +5854,15 @@ function compile(template, options = {
5820
5854
  }
5821
5855
 
5822
5856
  // do not modify manually. This file is generated by the release script.
5823
- const version = "2.8.2";
5857
+ const version = "2.8.3";
5824
5858
 
5825
5859
  // -----------------------------------------------------------------------------
5826
5860
  // Scheduler
5827
5861
  // -----------------------------------------------------------------------------
5862
+ let requestAnimationFrame;
5863
+ if (typeof window !== "undefined") {
5864
+ requestAnimationFrame = window.requestAnimationFrame.bind(window);
5865
+ }
5828
5866
  class Scheduler {
5829
5867
  constructor() {
5830
5868
  this.tasks = new Set();
@@ -5912,11 +5950,13 @@ class Scheduler {
5912
5950
  }
5913
5951
  // capture the value of requestAnimationFrame as soon as possible, to avoid
5914
5952
  // interactions with other code, such as test frameworks that override them
5915
- Scheduler.requestAnimationFrame = window.requestAnimationFrame.bind(window);
5953
+ Scheduler.requestAnimationFrame = requestAnimationFrame;
5916
5954
 
5917
5955
  let hasBeenLogged = false;
5918
5956
  const apps = new Set();
5919
- window.__OWL_DEVTOOLS__ || (window.__OWL_DEVTOOLS__ = { apps, Fiber, RootFiber, toRaw, reactive });
5957
+ if (typeof window !== "undefined") {
5958
+ window.__OWL_DEVTOOLS__ || (window.__OWL_DEVTOOLS__ = { apps, Fiber, RootFiber, toRaw, reactive });
5959
+ }
5920
5960
  class App extends TemplateSet {
5921
5961
  constructor(Root, config = {}) {
5922
5962
  super(config);
@@ -6291,6 +6331,6 @@ TemplateSet.prototype._compileTemplate = function _compileTemplate(name, templat
6291
6331
  export { App, Component, EventBus, OwlError, __info__, batched, blockDom, htmlEscape, loadFile, markRaw, markup, mount, onError, onMounted, onPatched, onRendered, onWillDestroy, onWillPatch, onWillRender, onWillStart, onWillUnmount, onWillUpdateProps, reactive, status, toRaw, useChildSubEnv, useComponent, useEffect, useEnv, useExternalListener, useRef, useState, useSubEnv, validate, validateType, whenReady, xml };
6292
6332
 
6293
6333
 
6294
- __info__.date = '2026-01-30T07:49:47.618Z';
6295
- __info__.hash = '52abf8d';
6334
+ __info__.date = '2026-03-30T13:05:32.099Z';
6335
+ __info__.hash = 'efae3e4';
6296
6336
  __info__.url = 'https://github.com/odoo/owl';
package/dist/owl.iife.js CHANGED
@@ -87,10 +87,16 @@
87
87
  class OwlError extends Error {
88
88
  }
89
89
 
90
- const { setAttribute: elemSetAttribute, removeAttribute } = Element.prototype;
91
- const tokenList = DOMTokenList.prototype;
92
- const tokenListAdd = tokenList.add;
93
- const tokenListRemove = tokenList.remove;
90
+ let elemSetAttribute;
91
+ let removeAttribute;
92
+ let tokenListAdd;
93
+ let tokenListRemove;
94
+ if (typeof Element !== "undefined") {
95
+ ({ setAttribute: elemSetAttribute, removeAttribute } = Element.prototype);
96
+ const tokenList = DOMTokenList.prototype;
97
+ tokenListAdd = tokenList.add;
98
+ tokenListRemove = tokenList.remove;
99
+ }
94
100
  const isArray = Array.isArray;
95
101
  const { split, trim } = String.prototype;
96
102
  const wordRegexp = /\s+/;
@@ -469,10 +475,15 @@
469
475
  }
470
476
 
471
477
  const getDescriptor$3 = (o, p) => Object.getOwnPropertyDescriptor(o, p);
472
- const nodeProto$4 = Node.prototype;
473
- const nodeInsertBefore$3 = nodeProto$4.insertBefore;
474
- const nodeSetTextContent$1 = getDescriptor$3(nodeProto$4, "textContent").set;
475
- const nodeRemoveChild$3 = nodeProto$4.removeChild;
478
+ let nodeInsertBefore$3;
479
+ let nodeSetTextContent$1;
480
+ let nodeRemoveChild$3;
481
+ if (typeof Node !== "undefined") {
482
+ const nodeProto = Node.prototype;
483
+ nodeInsertBefore$3 = nodeProto.insertBefore;
484
+ nodeSetTextContent$1 = getDescriptor$3(nodeProto, "textContent").set;
485
+ nodeRemoveChild$3 = nodeProto.removeChild;
486
+ }
476
487
  // -----------------------------------------------------------------------------
477
488
  // Multi NODE
478
489
  // -----------------------------------------------------------------------------
@@ -608,11 +619,15 @@
608
619
  }
609
620
 
610
621
  const getDescriptor$2 = (o, p) => Object.getOwnPropertyDescriptor(o, p);
611
- const nodeProto$3 = Node.prototype;
612
- const characterDataProto$1 = CharacterData.prototype;
613
- const nodeInsertBefore$2 = nodeProto$3.insertBefore;
614
- const characterDataSetData$1 = getDescriptor$2(characterDataProto$1, "data").set;
615
- const nodeRemoveChild$2 = nodeProto$3.removeChild;
622
+ let nodeInsertBefore$2;
623
+ let characterDataSetData$1;
624
+ let nodeRemoveChild$2;
625
+ if (typeof Node !== "undefined") {
626
+ const nodeProto = Node.prototype;
627
+ nodeInsertBefore$2 = nodeProto.insertBefore;
628
+ nodeRemoveChild$2 = nodeProto.removeChild;
629
+ characterDataSetData$1 = getDescriptor$2(CharacterData.prototype, "data").set;
630
+ }
616
631
  class VSimpleNode {
617
632
  constructor(text) {
618
633
  this.text = text;
@@ -678,12 +693,18 @@
678
693
  }
679
694
 
680
695
  const getDescriptor$1 = (o, p) => Object.getOwnPropertyDescriptor(o, p);
681
- const nodeProto$2 = Node.prototype;
682
- const elementProto = Element.prototype;
683
- const characterDataProto = CharacterData.prototype;
684
- const characterDataSetData = getDescriptor$1(characterDataProto, "data").set;
685
- const nodeGetFirstChild = getDescriptor$1(nodeProto$2, "firstChild").get;
686
- const nodeGetNextSibling = getDescriptor$1(nodeProto$2, "nextSibling").get;
696
+ let nodeProto;
697
+ let elementProto;
698
+ let characterDataSetData;
699
+ let nodeGetFirstChild;
700
+ let nodeGetNextSibling;
701
+ if (typeof Node !== "undefined") {
702
+ nodeProto = Node.prototype;
703
+ elementProto = Element.prototype;
704
+ characterDataSetData = getDescriptor$1(CharacterData.prototype, "data").set;
705
+ nodeGetFirstChild = getDescriptor$1(nodeProto, "firstChild").get;
706
+ nodeGetNextSibling = getDescriptor$1(nodeProto, "nextSibling").get;
707
+ }
687
708
  const NO_OP$1 = () => { };
688
709
  function makePropSetter(name) {
689
710
  return function setProp(value) {
@@ -1072,8 +1093,8 @@
1072
1093
  const isDynamic = refN > 0;
1073
1094
  // these values are defined here to make them faster to lookup in the class
1074
1095
  // block scope
1075
- const nodeCloneNode = nodeProto$2.cloneNode;
1076
- const nodeInsertBefore = nodeProto$2.insertBefore;
1096
+ const nodeCloneNode = nodeProto.cloneNode;
1097
+ const nodeInsertBefore = nodeProto.insertBefore;
1077
1098
  const elementRemove = elementProto.remove;
1078
1099
  class Block {
1079
1100
  constructor(data) {
@@ -1202,11 +1223,17 @@
1202
1223
  }
1203
1224
 
1204
1225
  const getDescriptor = (o, p) => Object.getOwnPropertyDescriptor(o, p);
1205
- const nodeProto$1 = Node.prototype;
1206
- const nodeInsertBefore$1 = nodeProto$1.insertBefore;
1207
- const nodeAppendChild = nodeProto$1.appendChild;
1208
- const nodeRemoveChild$1 = nodeProto$1.removeChild;
1209
- const nodeSetTextContent = getDescriptor(nodeProto$1, "textContent").set;
1226
+ let nodeInsertBefore$1;
1227
+ let nodeAppendChild;
1228
+ let nodeRemoveChild$1;
1229
+ let nodeSetTextContent;
1230
+ if (typeof Node !== "undefined") {
1231
+ const nodeProto = Node.prototype;
1232
+ nodeInsertBefore$1 = nodeProto.insertBefore;
1233
+ nodeAppendChild = nodeProto.appendChild;
1234
+ nodeRemoveChild$1 = nodeProto.removeChild;
1235
+ nodeSetTextContent = getDescriptor(nodeProto, "textContent").set;
1236
+ }
1210
1237
  // -----------------------------------------------------------------------------
1211
1238
  // List Node
1212
1239
  // -----------------------------------------------------------------------------
@@ -1418,9 +1445,13 @@
1418
1445
  return mapping;
1419
1446
  }
1420
1447
 
1421
- const nodeProto = Node.prototype;
1422
- const nodeInsertBefore = nodeProto.insertBefore;
1423
- const nodeRemoveChild = nodeProto.removeChild;
1448
+ let nodeInsertBefore;
1449
+ let nodeRemoveChild;
1450
+ if (typeof Node !== "undefined") {
1451
+ const nodeProto = Node.prototype;
1452
+ nodeInsertBefore = nodeProto.insertBefore;
1453
+ nodeRemoveChild = nodeProto.removeChild;
1454
+ }
1424
1455
  class VHtml {
1425
1456
  constructor(html) {
1426
1457
  this.content = [];
@@ -3704,7 +3735,10 @@
3704
3735
  const whitespaceRE = /\s+/g;
3705
3736
  // using a non-html document so that <inner/outer>HTML serializes as XML instead
3706
3737
  // of HTML (as we will parse it as xml later)
3707
- const xmlDoc = document.implementation.createDocument(null, null, null);
3738
+ let xmlDoc;
3739
+ if (typeof document !== "undefined") {
3740
+ xmlDoc = document.implementation.createDocument(null, null, null);
3741
+ }
3708
3742
  const MODS = new Set(["stop", "capture", "prevent", "self", "synthetic"]);
3709
3743
  let nextDataIds = {};
3710
3744
  function generateId(prefix = "") {
@@ -5823,11 +5857,15 @@
5823
5857
  }
5824
5858
 
5825
5859
  // do not modify manually. This file is generated by the release script.
5826
- const version = "2.8.2";
5860
+ const version = "2.8.3";
5827
5861
 
5828
5862
  // -----------------------------------------------------------------------------
5829
5863
  // Scheduler
5830
5864
  // -----------------------------------------------------------------------------
5865
+ let requestAnimationFrame;
5866
+ if (typeof window !== "undefined") {
5867
+ requestAnimationFrame = window.requestAnimationFrame.bind(window);
5868
+ }
5831
5869
  class Scheduler {
5832
5870
  constructor() {
5833
5871
  this.tasks = new Set();
@@ -5915,11 +5953,13 @@
5915
5953
  }
5916
5954
  // capture the value of requestAnimationFrame as soon as possible, to avoid
5917
5955
  // interactions with other code, such as test frameworks that override them
5918
- Scheduler.requestAnimationFrame = window.requestAnimationFrame.bind(window);
5956
+ Scheduler.requestAnimationFrame = requestAnimationFrame;
5919
5957
 
5920
5958
  let hasBeenLogged = false;
5921
5959
  const apps = new Set();
5922
- window.__OWL_DEVTOOLS__ || (window.__OWL_DEVTOOLS__ = { apps, Fiber, RootFiber, toRaw, reactive });
5960
+ if (typeof window !== "undefined") {
5961
+ window.__OWL_DEVTOOLS__ || (window.__OWL_DEVTOOLS__ = { apps, Fiber, RootFiber, toRaw, reactive });
5962
+ }
5923
5963
  class App extends TemplateSet {
5924
5964
  constructor(Root, config = {}) {
5925
5965
  super(config);
@@ -6332,8 +6372,8 @@
6332
6372
  Object.defineProperty(exports, '__esModule', { value: true });
6333
6373
 
6334
6374
 
6335
- __info__.date = '2026-01-30T07:49:47.618Z';
6336
- __info__.hash = '52abf8d';
6375
+ __info__.date = '2026-03-30T13:05:32.099Z';
6376
+ __info__.hash = 'efae3e4';
6337
6377
  __info__.url = 'https://github.com/odoo/owl';
6338
6378
 
6339
6379