@odoo/owl 2.8.1 → 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.
- package/dist/compile_templates.mjs +4 -1
- package/dist/compiler.js +2478 -0
- package/dist/owl-devtools.zip +0 -0
- package/dist/owl.cjs.js +86 -39
- package/dist/owl.es.js +86 -39
- package/dist/owl.iife.js +86 -39
- package/dist/owl.iife.min.js +1 -1
- package/dist/types/owl.d.ts +1 -1
- package/dist/types/runtime/scheduler.d.ts +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +11 -1
package/dist/owl-devtools.zip
CHANGED
|
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
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
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
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
const
|
|
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,13 +694,19 @@ function toText(value) {
|
|
|
679
694
|
}
|
|
680
695
|
|
|
681
696
|
const getDescriptor$1 = (o, p) => Object.getOwnPropertyDescriptor(o, p);
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
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
|
+
}
|
|
709
|
+
const NO_OP$1 = () => { };
|
|
689
710
|
function makePropSetter(name) {
|
|
690
711
|
return function setProp(value) {
|
|
691
712
|
// support 0, fallback to empty string for other falsy values
|
|
@@ -1015,7 +1036,7 @@ function updateCtx(ctx, tree) {
|
|
|
1015
1036
|
idx: info.idx,
|
|
1016
1037
|
refIdx: info.refIdx,
|
|
1017
1038
|
setData: makeRefSetter(index, ctx.refList),
|
|
1018
|
-
updateData: NO_OP,
|
|
1039
|
+
updateData: NO_OP$1,
|
|
1019
1040
|
});
|
|
1020
1041
|
}
|
|
1021
1042
|
}
|
|
@@ -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
|
|
1077
|
-
const nodeInsertBefore = nodeProto
|
|
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
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
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
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
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 = [];
|
|
@@ -1641,6 +1672,7 @@ function handleError(params) {
|
|
|
1641
1672
|
let current = fiber;
|
|
1642
1673
|
do {
|
|
1643
1674
|
current.node.fiber = current;
|
|
1675
|
+
fibersInError.set(current, error);
|
|
1644
1676
|
current = current.parent;
|
|
1645
1677
|
} while (current);
|
|
1646
1678
|
fibersInError.set(fiber.root, error);
|
|
@@ -2387,13 +2419,19 @@ function useState(state) {
|
|
|
2387
2419
|
const node = getCurrent();
|
|
2388
2420
|
let render = batchedRenderFunctions.get(node);
|
|
2389
2421
|
if (!render) {
|
|
2390
|
-
|
|
2422
|
+
const wrapper = { fn: batched(node.render.bind(node, false)) };
|
|
2423
|
+
render = (...args) => wrapper.fn(...args);
|
|
2391
2424
|
batchedRenderFunctions.set(node, render);
|
|
2392
2425
|
// manual implementation of onWillDestroy to break cyclic dependency
|
|
2393
|
-
node.willDestroy.push(
|
|
2426
|
+
node.willDestroy.push(cleanupRenderAndReactives.bind(null, wrapper, render));
|
|
2394
2427
|
}
|
|
2395
2428
|
return reactive(state, render);
|
|
2396
2429
|
}
|
|
2430
|
+
const NO_OP = () => { };
|
|
2431
|
+
function cleanupRenderAndReactives(wrapper, render) {
|
|
2432
|
+
wrapper.fn = NO_OP;
|
|
2433
|
+
clearReactivesForCallback(render);
|
|
2434
|
+
}
|
|
2397
2435
|
class ComponentNode {
|
|
2398
2436
|
constructor(C, props, app, parent, parentKey) {
|
|
2399
2437
|
this.fiber = null;
|
|
@@ -3698,7 +3736,10 @@ function interpolate(s) {
|
|
|
3698
3736
|
const whitespaceRE = /\s+/g;
|
|
3699
3737
|
// using a non-html document so that <inner/outer>HTML serializes as XML instead
|
|
3700
3738
|
// of HTML (as we will parse it as xml later)
|
|
3701
|
-
|
|
3739
|
+
let xmlDoc;
|
|
3740
|
+
if (typeof document !== "undefined") {
|
|
3741
|
+
xmlDoc = document.implementation.createDocument(null, null, null);
|
|
3742
|
+
}
|
|
3702
3743
|
const MODS = new Set(["stop", "capture", "prevent", "self", "synthetic"]);
|
|
3703
3744
|
let nextDataIds = {};
|
|
3704
3745
|
function generateId(prefix = "") {
|
|
@@ -5817,11 +5858,15 @@ function compile(template, options = {
|
|
|
5817
5858
|
}
|
|
5818
5859
|
|
|
5819
5860
|
// do not modify manually. This file is generated by the release script.
|
|
5820
|
-
const version = "2.8.
|
|
5861
|
+
const version = "2.8.3";
|
|
5821
5862
|
|
|
5822
5863
|
// -----------------------------------------------------------------------------
|
|
5823
5864
|
// Scheduler
|
|
5824
5865
|
// -----------------------------------------------------------------------------
|
|
5866
|
+
let requestAnimationFrame;
|
|
5867
|
+
if (typeof window !== "undefined") {
|
|
5868
|
+
requestAnimationFrame = window.requestAnimationFrame.bind(window);
|
|
5869
|
+
}
|
|
5825
5870
|
class Scheduler {
|
|
5826
5871
|
constructor() {
|
|
5827
5872
|
this.tasks = new Set();
|
|
@@ -5909,11 +5954,13 @@ class Scheduler {
|
|
|
5909
5954
|
}
|
|
5910
5955
|
// capture the value of requestAnimationFrame as soon as possible, to avoid
|
|
5911
5956
|
// interactions with other code, such as test frameworks that override them
|
|
5912
|
-
Scheduler.requestAnimationFrame =
|
|
5957
|
+
Scheduler.requestAnimationFrame = requestAnimationFrame;
|
|
5913
5958
|
|
|
5914
5959
|
let hasBeenLogged = false;
|
|
5915
5960
|
const apps = new Set();
|
|
5916
|
-
|
|
5961
|
+
if (typeof window !== "undefined") {
|
|
5962
|
+
window.__OWL_DEVTOOLS__ || (window.__OWL_DEVTOOLS__ = { apps, Fiber, RootFiber, toRaw, reactive });
|
|
5963
|
+
}
|
|
5917
5964
|
class App extends TemplateSet {
|
|
5918
5965
|
constructor(Root, config = {}) {
|
|
5919
5966
|
super(config);
|
|
@@ -6324,6 +6371,6 @@ exports.whenReady = whenReady;
|
|
|
6324
6371
|
exports.xml = xml;
|
|
6325
6372
|
|
|
6326
6373
|
|
|
6327
|
-
__info__.date = '
|
|
6328
|
-
__info__.hash = '
|
|
6374
|
+
__info__.date = '2026-03-30T13:05:32.099Z';
|
|
6375
|
+
__info__.hash = 'efae3e4';
|
|
6329
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
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
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
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
const
|
|
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,13 +690,19 @@ function toText(value) {
|
|
|
675
690
|
}
|
|
676
691
|
|
|
677
692
|
const getDescriptor$1 = (o, p) => Object.getOwnPropertyDescriptor(o, p);
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
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
|
+
}
|
|
705
|
+
const NO_OP$1 = () => { };
|
|
685
706
|
function makePropSetter(name) {
|
|
686
707
|
return function setProp(value) {
|
|
687
708
|
// support 0, fallback to empty string for other falsy values
|
|
@@ -1011,7 +1032,7 @@ function updateCtx(ctx, tree) {
|
|
|
1011
1032
|
idx: info.idx,
|
|
1012
1033
|
refIdx: info.refIdx,
|
|
1013
1034
|
setData: makeRefSetter(index, ctx.refList),
|
|
1014
|
-
updateData: NO_OP,
|
|
1035
|
+
updateData: NO_OP$1,
|
|
1015
1036
|
});
|
|
1016
1037
|
}
|
|
1017
1038
|
}
|
|
@@ -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
|
|
1073
|
-
const nodeInsertBefore = nodeProto
|
|
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
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
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
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
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 = [];
|
|
@@ -1637,6 +1668,7 @@ function handleError(params) {
|
|
|
1637
1668
|
let current = fiber;
|
|
1638
1669
|
do {
|
|
1639
1670
|
current.node.fiber = current;
|
|
1671
|
+
fibersInError.set(current, error);
|
|
1640
1672
|
current = current.parent;
|
|
1641
1673
|
} while (current);
|
|
1642
1674
|
fibersInError.set(fiber.root, error);
|
|
@@ -2383,13 +2415,19 @@ function useState(state) {
|
|
|
2383
2415
|
const node = getCurrent();
|
|
2384
2416
|
let render = batchedRenderFunctions.get(node);
|
|
2385
2417
|
if (!render) {
|
|
2386
|
-
|
|
2418
|
+
const wrapper = { fn: batched(node.render.bind(node, false)) };
|
|
2419
|
+
render = (...args) => wrapper.fn(...args);
|
|
2387
2420
|
batchedRenderFunctions.set(node, render);
|
|
2388
2421
|
// manual implementation of onWillDestroy to break cyclic dependency
|
|
2389
|
-
node.willDestroy.push(
|
|
2422
|
+
node.willDestroy.push(cleanupRenderAndReactives.bind(null, wrapper, render));
|
|
2390
2423
|
}
|
|
2391
2424
|
return reactive(state, render);
|
|
2392
2425
|
}
|
|
2426
|
+
const NO_OP = () => { };
|
|
2427
|
+
function cleanupRenderAndReactives(wrapper, render) {
|
|
2428
|
+
wrapper.fn = NO_OP;
|
|
2429
|
+
clearReactivesForCallback(render);
|
|
2430
|
+
}
|
|
2393
2431
|
class ComponentNode {
|
|
2394
2432
|
constructor(C, props, app, parent, parentKey) {
|
|
2395
2433
|
this.fiber = null;
|
|
@@ -3694,7 +3732,10 @@ function interpolate(s) {
|
|
|
3694
3732
|
const whitespaceRE = /\s+/g;
|
|
3695
3733
|
// using a non-html document so that <inner/outer>HTML serializes as XML instead
|
|
3696
3734
|
// of HTML (as we will parse it as xml later)
|
|
3697
|
-
|
|
3735
|
+
let xmlDoc;
|
|
3736
|
+
if (typeof document !== "undefined") {
|
|
3737
|
+
xmlDoc = document.implementation.createDocument(null, null, null);
|
|
3738
|
+
}
|
|
3698
3739
|
const MODS = new Set(["stop", "capture", "prevent", "self", "synthetic"]);
|
|
3699
3740
|
let nextDataIds = {};
|
|
3700
3741
|
function generateId(prefix = "") {
|
|
@@ -5813,11 +5854,15 @@ function compile(template, options = {
|
|
|
5813
5854
|
}
|
|
5814
5855
|
|
|
5815
5856
|
// do not modify manually. This file is generated by the release script.
|
|
5816
|
-
const version = "2.8.
|
|
5857
|
+
const version = "2.8.3";
|
|
5817
5858
|
|
|
5818
5859
|
// -----------------------------------------------------------------------------
|
|
5819
5860
|
// Scheduler
|
|
5820
5861
|
// -----------------------------------------------------------------------------
|
|
5862
|
+
let requestAnimationFrame;
|
|
5863
|
+
if (typeof window !== "undefined") {
|
|
5864
|
+
requestAnimationFrame = window.requestAnimationFrame.bind(window);
|
|
5865
|
+
}
|
|
5821
5866
|
class Scheduler {
|
|
5822
5867
|
constructor() {
|
|
5823
5868
|
this.tasks = new Set();
|
|
@@ -5905,11 +5950,13 @@ class Scheduler {
|
|
|
5905
5950
|
}
|
|
5906
5951
|
// capture the value of requestAnimationFrame as soon as possible, to avoid
|
|
5907
5952
|
// interactions with other code, such as test frameworks that override them
|
|
5908
|
-
Scheduler.requestAnimationFrame =
|
|
5953
|
+
Scheduler.requestAnimationFrame = requestAnimationFrame;
|
|
5909
5954
|
|
|
5910
5955
|
let hasBeenLogged = false;
|
|
5911
5956
|
const apps = new Set();
|
|
5912
|
-
|
|
5957
|
+
if (typeof window !== "undefined") {
|
|
5958
|
+
window.__OWL_DEVTOOLS__ || (window.__OWL_DEVTOOLS__ = { apps, Fiber, RootFiber, toRaw, reactive });
|
|
5959
|
+
}
|
|
5913
5960
|
class App extends TemplateSet {
|
|
5914
5961
|
constructor(Root, config = {}) {
|
|
5915
5962
|
super(config);
|
|
@@ -6284,6 +6331,6 @@ TemplateSet.prototype._compileTemplate = function _compileTemplate(name, templat
|
|
|
6284
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 };
|
|
6285
6332
|
|
|
6286
6333
|
|
|
6287
|
-
__info__.date = '
|
|
6288
|
-
__info__.hash = '
|
|
6334
|
+
__info__.date = '2026-03-30T13:05:32.099Z';
|
|
6335
|
+
__info__.hash = 'efae3e4';
|
|
6289
6336
|
__info__.url = 'https://github.com/odoo/owl';
|