@vue/runtime-dom 3.4.26 → 3.4.28
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/runtime-dom.cjs.js +23 -30
- package/dist/runtime-dom.cjs.prod.js +23 -30
- package/dist/runtime-dom.d.ts +4 -3
- package/dist/runtime-dom.esm-browser.js +4554 -4545
- package/dist/runtime-dom.esm-browser.prod.js +6 -6
- package/dist/runtime-dom.esm-bundler.js +25 -33
- package/dist/runtime-dom.global.js +4550 -4541
- package/dist/runtime-dom.global.prod.js +7 -6
- package/package.json +4 -3
package/dist/runtime-dom.cjs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vue/runtime-dom v3.4.
|
|
2
|
+
* @vue/runtime-dom v3.4.28
|
|
3
3
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
4
4
|
* @license MIT
|
|
5
5
|
**/
|
|
@@ -25,7 +25,7 @@ const nodeOps = {
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
createElement: (tag, namespace, is, props) => {
|
|
28
|
-
const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : doc.createElement(tag,
|
|
28
|
+
const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag);
|
|
29
29
|
if (tag === "select" && props && props.multiple != null) {
|
|
30
30
|
el.setAttribute("multiple", props.multiple);
|
|
31
31
|
}
|
|
@@ -54,8 +54,7 @@ const nodeOps = {
|
|
|
54
54
|
if (start && (start === end || start.nextSibling)) {
|
|
55
55
|
while (true) {
|
|
56
56
|
parent.insertBefore(start.cloneNode(true), anchor);
|
|
57
|
-
if (start === end || !(start = start.nextSibling))
|
|
58
|
-
break;
|
|
57
|
+
if (start === end || !(start = start.nextSibling)) break;
|
|
59
58
|
}
|
|
60
59
|
} else {
|
|
61
60
|
templateContainer.innerHTML = namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content;
|
|
@@ -339,8 +338,7 @@ function getTimeout(delays, durations) {
|
|
|
339
338
|
return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));
|
|
340
339
|
}
|
|
341
340
|
function toMs(s) {
|
|
342
|
-
if (s === "auto")
|
|
343
|
-
return 0;
|
|
341
|
+
if (s === "auto") return 0;
|
|
344
342
|
return Number(s.slice(0, -1).replace(",", ".")) * 1e3;
|
|
345
343
|
}
|
|
346
344
|
function forceReflow() {
|
|
@@ -378,8 +376,7 @@ const vShow = {
|
|
|
378
376
|
}
|
|
379
377
|
},
|
|
380
378
|
updated(el, { value, oldValue }, { transition }) {
|
|
381
|
-
if (!value === !oldValue)
|
|
382
|
-
return;
|
|
379
|
+
if (!value === !oldValue) return;
|
|
383
380
|
if (transition) {
|
|
384
381
|
if (value) {
|
|
385
382
|
transition.beforeEnter(el);
|
|
@@ -473,8 +470,7 @@ function setStyle(style, name, val) {
|
|
|
473
470
|
if (shared.isArray(val)) {
|
|
474
471
|
val.forEach((v) => setStyle(style, name, v));
|
|
475
472
|
} else {
|
|
476
|
-
if (val == null)
|
|
477
|
-
val = "";
|
|
473
|
+
if (val == null) val = "";
|
|
478
474
|
{
|
|
479
475
|
if (semicolonRE.test(val)) {
|
|
480
476
|
runtimeCore.warn(
|
|
@@ -520,7 +516,7 @@ function autoPrefix(style, rawName) {
|
|
|
520
516
|
}
|
|
521
517
|
|
|
522
518
|
const xlinkNS = "http://www.w3.org/1999/xlink";
|
|
523
|
-
function patchAttr(el, key, value, isSVG, instance) {
|
|
519
|
+
function patchAttr(el, key, value, isSVG, instance, isBoolean = shared.isSpecialBooleanAttr(key)) {
|
|
524
520
|
if (isSVG && key.startsWith("xlink:")) {
|
|
525
521
|
if (value == null) {
|
|
526
522
|
el.removeAttributeNS(xlinkNS, key.slice(6, key.length));
|
|
@@ -528,11 +524,10 @@ function patchAttr(el, key, value, isSVG, instance) {
|
|
|
528
524
|
el.setAttributeNS(xlinkNS, key, value);
|
|
529
525
|
}
|
|
530
526
|
} else {
|
|
531
|
-
const isBoolean = shared.isSpecialBooleanAttr(key);
|
|
532
527
|
if (value == null || isBoolean && !shared.includeBooleanAttr(value)) {
|
|
533
528
|
el.removeAttribute(key);
|
|
534
529
|
} else {
|
|
535
|
-
el.setAttribute(key, isBoolean ? "" : value);
|
|
530
|
+
el.setAttribute(key, isBoolean ? "" : String(value));
|
|
536
531
|
}
|
|
537
532
|
}
|
|
538
533
|
}
|
|
@@ -549,7 +544,7 @@ function patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspe
|
|
|
549
544
|
if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally
|
|
550
545
|
!tag.includes("-")) {
|
|
551
546
|
const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value;
|
|
552
|
-
const newValue = value == null ? "" : value;
|
|
547
|
+
const newValue = value == null ? "" : String(value);
|
|
553
548
|
if (oldValue !== newValue || !("_value" in el)) {
|
|
554
549
|
el.value = newValue;
|
|
555
550
|
}
|
|
@@ -693,6 +688,9 @@ const patchProp = (el, key, prevValue, nextValue, namespace, prevChildren, paren
|
|
|
693
688
|
parentSuspense,
|
|
694
689
|
unmountChildren
|
|
695
690
|
);
|
|
691
|
+
if (key === "value" || key === "checked" || key === "selected") {
|
|
692
|
+
patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value");
|
|
693
|
+
}
|
|
696
694
|
} else {
|
|
697
695
|
if (key === "true-value") {
|
|
698
696
|
el._trueValue = nextValue;
|
|
@@ -793,12 +791,12 @@ class VueElement extends BaseClass {
|
|
|
793
791
|
}
|
|
794
792
|
disconnectedCallback() {
|
|
795
793
|
this._connected = false;
|
|
796
|
-
if (this._ob) {
|
|
797
|
-
this._ob.disconnect();
|
|
798
|
-
this._ob = null;
|
|
799
|
-
}
|
|
800
794
|
runtimeCore.nextTick(() => {
|
|
801
795
|
if (!this._connected) {
|
|
796
|
+
if (this._ob) {
|
|
797
|
+
this._ob.disconnect();
|
|
798
|
+
this._ob = null;
|
|
799
|
+
}
|
|
802
800
|
render(null, this.shadowRoot);
|
|
803
801
|
this._instance = null;
|
|
804
802
|
}
|
|
@@ -1134,8 +1132,7 @@ const vModelText = {
|
|
|
1134
1132
|
el[assignKey] = getModelAssigner(vnode);
|
|
1135
1133
|
const castToNumber = number || vnode.props && vnode.props.type === "number";
|
|
1136
1134
|
addEventListener(el, lazy ? "change" : "input", (e) => {
|
|
1137
|
-
if (e.target.composing)
|
|
1138
|
-
return;
|
|
1135
|
+
if (e.target.composing) return;
|
|
1139
1136
|
let domValue = el.value;
|
|
1140
1137
|
if (trim) {
|
|
1141
1138
|
domValue = domValue.trim();
|
|
@@ -1160,17 +1157,16 @@ const vModelText = {
|
|
|
1160
1157
|
mounted(el, { value }) {
|
|
1161
1158
|
el.value = value == null ? "" : value;
|
|
1162
1159
|
},
|
|
1163
|
-
beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {
|
|
1160
|
+
beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) {
|
|
1164
1161
|
el[assignKey] = getModelAssigner(vnode);
|
|
1165
|
-
if (el.composing)
|
|
1166
|
-
return;
|
|
1162
|
+
if (el.composing) return;
|
|
1167
1163
|
const elValue = (number || el.type === "number") && !/^0\d/.test(el.value) ? shared.looseToNumber(el.value) : el.value;
|
|
1168
1164
|
const newValue = value == null ? "" : value;
|
|
1169
1165
|
if (elValue === newValue) {
|
|
1170
1166
|
return;
|
|
1171
1167
|
}
|
|
1172
1168
|
if (document.activeElement === el && el.type !== "range") {
|
|
1173
|
-
if (lazy) {
|
|
1169
|
+
if (lazy && value === oldValue) {
|
|
1174
1170
|
return;
|
|
1175
1171
|
}
|
|
1176
1172
|
if (trim && el.value.trim() === newValue) {
|
|
@@ -1302,8 +1298,7 @@ function setSelected(el, value, number) {
|
|
|
1302
1298
|
option.selected = value.has(optionValue);
|
|
1303
1299
|
}
|
|
1304
1300
|
} else if (shared.looseEqual(getValue(option), value)) {
|
|
1305
|
-
if (el.selectedIndex !== i)
|
|
1306
|
-
el.selectedIndex = i;
|
|
1301
|
+
if (el.selectedIndex !== i) el.selectedIndex = i;
|
|
1307
1302
|
return;
|
|
1308
1303
|
}
|
|
1309
1304
|
}
|
|
@@ -1412,8 +1407,7 @@ const withModifiers = (fn, modifiers) => {
|
|
|
1412
1407
|
return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => {
|
|
1413
1408
|
for (let i = 0; i < modifiers.length; i++) {
|
|
1414
1409
|
const guard = modifierGuards[modifiers[i]];
|
|
1415
|
-
if (guard && guard(event, modifiers))
|
|
1416
|
-
return;
|
|
1410
|
+
if (guard && guard(event, modifiers)) return;
|
|
1417
1411
|
}
|
|
1418
1412
|
return fn(event, ...args);
|
|
1419
1413
|
});
|
|
@@ -1467,8 +1461,7 @@ const createApp = (...args) => {
|
|
|
1467
1461
|
const { mount } = app;
|
|
1468
1462
|
app.mount = (containerOrSelector) => {
|
|
1469
1463
|
const container = normalizeContainer(containerOrSelector);
|
|
1470
|
-
if (!container)
|
|
1471
|
-
return;
|
|
1464
|
+
if (!container) return;
|
|
1472
1465
|
const component = app._component;
|
|
1473
1466
|
if (!shared.isFunction(component) && !component.render && !component.template) {
|
|
1474
1467
|
component.template = container.innerHTML;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vue/runtime-dom v3.4.
|
|
2
|
+
* @vue/runtime-dom v3.4.28
|
|
3
3
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
4
4
|
* @license MIT
|
|
5
5
|
**/
|
|
@@ -25,7 +25,7 @@ const nodeOps = {
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
createElement: (tag, namespace, is, props) => {
|
|
28
|
-
const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : doc.createElement(tag,
|
|
28
|
+
const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag);
|
|
29
29
|
if (tag === "select" && props && props.multiple != null) {
|
|
30
30
|
el.setAttribute("multiple", props.multiple);
|
|
31
31
|
}
|
|
@@ -54,8 +54,7 @@ const nodeOps = {
|
|
|
54
54
|
if (start && (start === end || start.nextSibling)) {
|
|
55
55
|
while (true) {
|
|
56
56
|
parent.insertBefore(start.cloneNode(true), anchor);
|
|
57
|
-
if (start === end || !(start = start.nextSibling))
|
|
58
|
-
break;
|
|
57
|
+
if (start === end || !(start = start.nextSibling)) break;
|
|
59
58
|
}
|
|
60
59
|
} else {
|
|
61
60
|
templateContainer.innerHTML = namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content;
|
|
@@ -336,8 +335,7 @@ function getTimeout(delays, durations) {
|
|
|
336
335
|
return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));
|
|
337
336
|
}
|
|
338
337
|
function toMs(s) {
|
|
339
|
-
if (s === "auto")
|
|
340
|
-
return 0;
|
|
338
|
+
if (s === "auto") return 0;
|
|
341
339
|
return Number(s.slice(0, -1).replace(",", ".")) * 1e3;
|
|
342
340
|
}
|
|
343
341
|
function forceReflow() {
|
|
@@ -375,8 +373,7 @@ const vShow = {
|
|
|
375
373
|
}
|
|
376
374
|
},
|
|
377
375
|
updated(el, { value, oldValue }, { transition }) {
|
|
378
|
-
if (!value === !oldValue)
|
|
379
|
-
return;
|
|
376
|
+
if (!value === !oldValue) return;
|
|
380
377
|
if (transition) {
|
|
381
378
|
if (value) {
|
|
382
379
|
transition.beforeEnter(el);
|
|
@@ -466,8 +463,7 @@ function setStyle(style, name, val) {
|
|
|
466
463
|
if (shared.isArray(val)) {
|
|
467
464
|
val.forEach((v) => setStyle(style, name, v));
|
|
468
465
|
} else {
|
|
469
|
-
if (val == null)
|
|
470
|
-
val = "";
|
|
466
|
+
if (val == null) val = "";
|
|
471
467
|
if (name.startsWith("--")) {
|
|
472
468
|
style.setProperty(name, val);
|
|
473
469
|
} else {
|
|
@@ -506,7 +502,7 @@ function autoPrefix(style, rawName) {
|
|
|
506
502
|
}
|
|
507
503
|
|
|
508
504
|
const xlinkNS = "http://www.w3.org/1999/xlink";
|
|
509
|
-
function patchAttr(el, key, value, isSVG, instance) {
|
|
505
|
+
function patchAttr(el, key, value, isSVG, instance, isBoolean = shared.isSpecialBooleanAttr(key)) {
|
|
510
506
|
if (isSVG && key.startsWith("xlink:")) {
|
|
511
507
|
if (value == null) {
|
|
512
508
|
el.removeAttributeNS(xlinkNS, key.slice(6, key.length));
|
|
@@ -514,11 +510,10 @@ function patchAttr(el, key, value, isSVG, instance) {
|
|
|
514
510
|
el.setAttributeNS(xlinkNS, key, value);
|
|
515
511
|
}
|
|
516
512
|
} else {
|
|
517
|
-
const isBoolean = shared.isSpecialBooleanAttr(key);
|
|
518
513
|
if (value == null || isBoolean && !shared.includeBooleanAttr(value)) {
|
|
519
514
|
el.removeAttribute(key);
|
|
520
515
|
} else {
|
|
521
|
-
el.setAttribute(key, isBoolean ? "" : value);
|
|
516
|
+
el.setAttribute(key, isBoolean ? "" : String(value));
|
|
522
517
|
}
|
|
523
518
|
}
|
|
524
519
|
}
|
|
@@ -535,7 +530,7 @@ function patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspe
|
|
|
535
530
|
if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally
|
|
536
531
|
!tag.includes("-")) {
|
|
537
532
|
const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value;
|
|
538
|
-
const newValue = value == null ? "" : value;
|
|
533
|
+
const newValue = value == null ? "" : String(value);
|
|
539
534
|
if (oldValue !== newValue || !("_value" in el)) {
|
|
540
535
|
el.value = newValue;
|
|
541
536
|
}
|
|
@@ -663,6 +658,9 @@ const patchProp = (el, key, prevValue, nextValue, namespace, prevChildren, paren
|
|
|
663
658
|
parentSuspense,
|
|
664
659
|
unmountChildren
|
|
665
660
|
);
|
|
661
|
+
if (key === "value" || key === "checked" || key === "selected") {
|
|
662
|
+
patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value");
|
|
663
|
+
}
|
|
666
664
|
} else {
|
|
667
665
|
if (key === "true-value") {
|
|
668
666
|
el._trueValue = nextValue;
|
|
@@ -758,12 +756,12 @@ class VueElement extends BaseClass {
|
|
|
758
756
|
}
|
|
759
757
|
disconnectedCallback() {
|
|
760
758
|
this._connected = false;
|
|
761
|
-
if (this._ob) {
|
|
762
|
-
this._ob.disconnect();
|
|
763
|
-
this._ob = null;
|
|
764
|
-
}
|
|
765
759
|
runtimeCore.nextTick(() => {
|
|
766
760
|
if (!this._connected) {
|
|
761
|
+
if (this._ob) {
|
|
762
|
+
this._ob.disconnect();
|
|
763
|
+
this._ob = null;
|
|
764
|
+
}
|
|
767
765
|
render(null, this.shadowRoot);
|
|
768
766
|
this._instance = null;
|
|
769
767
|
}
|
|
@@ -1080,8 +1078,7 @@ const vModelText = {
|
|
|
1080
1078
|
el[assignKey] = getModelAssigner(vnode);
|
|
1081
1079
|
const castToNumber = number || vnode.props && vnode.props.type === "number";
|
|
1082
1080
|
addEventListener(el, lazy ? "change" : "input", (e) => {
|
|
1083
|
-
if (e.target.composing)
|
|
1084
|
-
return;
|
|
1081
|
+
if (e.target.composing) return;
|
|
1085
1082
|
let domValue = el.value;
|
|
1086
1083
|
if (trim) {
|
|
1087
1084
|
domValue = domValue.trim();
|
|
@@ -1106,17 +1103,16 @@ const vModelText = {
|
|
|
1106
1103
|
mounted(el, { value }) {
|
|
1107
1104
|
el.value = value == null ? "" : value;
|
|
1108
1105
|
},
|
|
1109
|
-
beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {
|
|
1106
|
+
beforeUpdate(el, { value, oldValue, modifiers: { lazy, trim, number } }, vnode) {
|
|
1110
1107
|
el[assignKey] = getModelAssigner(vnode);
|
|
1111
|
-
if (el.composing)
|
|
1112
|
-
return;
|
|
1108
|
+
if (el.composing) return;
|
|
1113
1109
|
const elValue = (number || el.type === "number") && !/^0\d/.test(el.value) ? shared.looseToNumber(el.value) : el.value;
|
|
1114
1110
|
const newValue = value == null ? "" : value;
|
|
1115
1111
|
if (elValue === newValue) {
|
|
1116
1112
|
return;
|
|
1117
1113
|
}
|
|
1118
1114
|
if (document.activeElement === el && el.type !== "range") {
|
|
1119
|
-
if (lazy) {
|
|
1115
|
+
if (lazy && value === oldValue) {
|
|
1120
1116
|
return;
|
|
1121
1117
|
}
|
|
1122
1118
|
if (trim && el.value.trim() === newValue) {
|
|
@@ -1245,8 +1241,7 @@ function setSelected(el, value, number) {
|
|
|
1245
1241
|
option.selected = value.has(optionValue);
|
|
1246
1242
|
}
|
|
1247
1243
|
} else if (shared.looseEqual(getValue(option), value)) {
|
|
1248
|
-
if (el.selectedIndex !== i)
|
|
1249
|
-
el.selectedIndex = i;
|
|
1244
|
+
if (el.selectedIndex !== i) el.selectedIndex = i;
|
|
1250
1245
|
return;
|
|
1251
1246
|
}
|
|
1252
1247
|
}
|
|
@@ -1355,8 +1350,7 @@ const withModifiers = (fn, modifiers) => {
|
|
|
1355
1350
|
return cache[cacheKey] || (cache[cacheKey] = (event, ...args) => {
|
|
1356
1351
|
for (let i = 0; i < modifiers.length; i++) {
|
|
1357
1352
|
const guard = modifierGuards[modifiers[i]];
|
|
1358
|
-
if (guard && guard(event, modifiers))
|
|
1359
|
-
return;
|
|
1353
|
+
if (guard && guard(event, modifiers)) return;
|
|
1360
1354
|
}
|
|
1361
1355
|
return fn(event, ...args);
|
|
1362
1356
|
});
|
|
@@ -1406,8 +1400,7 @@ const createApp = (...args) => {
|
|
|
1406
1400
|
const { mount } = app;
|
|
1407
1401
|
app.mount = (containerOrSelector) => {
|
|
1408
1402
|
const container = normalizeContainer(containerOrSelector);
|
|
1409
|
-
if (!container)
|
|
1410
|
-
return;
|
|
1403
|
+
if (!container) return;
|
|
1411
1404
|
const component = app._component;
|
|
1412
1405
|
if (!shared.isFunction(component) && !component.render && !component.template) {
|
|
1413
1406
|
component.template = container.innerHTML;
|
package/dist/runtime-dom.d.ts
CHANGED
|
@@ -100,6 +100,7 @@ export declare const vModelRadio: ModelDirective<HTMLInputElement>;
|
|
|
100
100
|
export declare const vModelSelect: ModelDirective<HTMLSelectElement>;
|
|
101
101
|
export declare const vModelDynamic: ObjectDirective<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>;
|
|
102
102
|
|
|
103
|
+
type ModifierGuardsKeys = 'stop' | 'prevent' | 'self' | 'ctrl' | 'shift' | 'alt' | 'meta' | 'left' | 'middle' | 'right' | 'exact';
|
|
103
104
|
/**
|
|
104
105
|
* @private
|
|
105
106
|
*/
|
|
@@ -107,7 +108,7 @@ export declare const withModifiers: <T extends (event: Event, ...args: unknown[]
|
|
|
107
108
|
_withMods?: {
|
|
108
109
|
[key: string]: T;
|
|
109
110
|
};
|
|
110
|
-
}, modifiers:
|
|
111
|
+
}, modifiers: ModifierGuardsKeys[]) => T;
|
|
111
112
|
/**
|
|
112
113
|
* @private
|
|
113
114
|
*/
|
|
@@ -440,7 +441,7 @@ export interface DataHTMLAttributes extends HTMLAttributes {
|
|
|
440
441
|
}
|
|
441
442
|
export interface DetailsHTMLAttributes extends HTMLAttributes {
|
|
442
443
|
open?: Booleanish;
|
|
443
|
-
onToggle?:
|
|
444
|
+
onToggle?: (payload: ToggleEvent) => void;
|
|
444
445
|
}
|
|
445
446
|
export interface DelHTMLAttributes extends HTMLAttributes {
|
|
446
447
|
cite?: string;
|
|
@@ -1293,7 +1294,7 @@ type EventHandlers<E> = {
|
|
|
1293
1294
|
};
|
|
1294
1295
|
|
|
1295
1296
|
export type ReservedProps = {
|
|
1296
|
-
key?:
|
|
1297
|
+
key?: PropertyKey;
|
|
1297
1298
|
ref?: VNodeRef;
|
|
1298
1299
|
ref_for?: boolean;
|
|
1299
1300
|
ref_key?: string;
|