lwc 2.38.1 → 2.39.0
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/engine-dom/esm/es2017/engine-dom.js +203 -122
- package/dist/engine-dom/esm/es2017/engine-dom.js.map +1 -1
- package/dist/engine-dom/iife/es2017/engine-dom.js +203 -122
- package/dist/engine-dom/iife/es2017/engine-dom.js.map +1 -1
- package/dist/engine-dom/iife/es2017/engine-dom.min.js +1 -1
- package/dist/engine-dom/iife/es2017/engine-dom_debug.js +154 -40
- package/dist/engine-dom/iife/es2017/engine-dom_debug.js.map +1 -1
- package/dist/engine-dom/iife/es5/engine-dom.js +353 -207
- package/dist/engine-dom/iife/es5/engine-dom.js.map +1 -1
- package/dist/engine-dom/iife/es5/engine-dom.min.js +1 -1
- package/dist/engine-dom/iife/es5/engine-dom_debug.js +305 -153
- package/dist/engine-dom/iife/es5/engine-dom_debug.js.map +1 -1
- package/dist/engine-dom/umd/es2017/engine-dom.js +203 -122
- package/dist/engine-dom/umd/es2017/engine-dom.js.map +1 -1
- package/dist/engine-dom/umd/es2017/engine-dom.min.js +1 -1
- package/dist/engine-dom/umd/es2017/engine-dom_debug.js +154 -40
- package/dist/engine-dom/umd/es2017/engine-dom_debug.js.map +1 -1
- package/dist/engine-dom/umd/es5/engine-dom.js +353 -207
- package/dist/engine-dom/umd/es5/engine-dom.js.map +1 -1
- package/dist/engine-dom/umd/es5/engine-dom.min.js +1 -1
- package/dist/engine-dom/umd/es5/engine-dom_debug.js +305 -153
- package/dist/engine-dom/umd/es5/engine-dom_debug.js.map +1 -1
- package/dist/engine-server/commonjs/es2017/engine-server.js +168 -75
- package/dist/engine-server/commonjs/es2017/engine-server.js.map +1 -1
- package/dist/engine-server/commonjs/es2017/engine-server.min.js +1 -1
- package/dist/engine-server/esm/es2017/engine-server.js +168 -75
- package/dist/engine-server/esm/es2017/engine-server.js.map +1 -1
- package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js +3 -3
- package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js.map +1 -1
- package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js +3 -3
- package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js.map +1 -1
- package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js +3 -3
- package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js.map +1 -1
- package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js +3 -3
- package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js.map +1 -1
- package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js +3 -3
- package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js.map +1 -1
- package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js +3 -3
- package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js.map +1 -1
- package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js +3 -3
- package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js.map +1 -1
- package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js +3 -3
- package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js.map +1 -1
- package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js +3 -3
- package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js.map +1 -1
- package/dist/wire-service/esm/es2017/wire-service.js +2 -2
- package/dist/wire-service/esm/es2017/wire-service.js.map +1 -1
- package/dist/wire-service/iife/es2017/wire-service.js +2 -2
- package/dist/wire-service/iife/es2017/wire-service.js.map +1 -1
- package/dist/wire-service/iife/es2017/wire-service_debug.js +2 -2
- package/dist/wire-service/iife/es2017/wire-service_debug.js.map +1 -1
- package/dist/wire-service/iife/es5/wire-service.js +2 -2
- package/dist/wire-service/iife/es5/wire-service.js.map +1 -1
- package/dist/wire-service/iife/es5/wire-service_debug.js +2 -2
- package/dist/wire-service/iife/es5/wire-service_debug.js.map +1 -1
- package/dist/wire-service/umd/es2017/wire-service.js +2 -2
- package/dist/wire-service/umd/es2017/wire-service.js.map +1 -1
- package/dist/wire-service/umd/es2017/wire-service_debug.js +2 -2
- package/dist/wire-service/umd/es2017/wire-service_debug.js.map +1 -1
- package/dist/wire-service/umd/es5/wire-service.js +2 -2
- package/dist/wire-service/umd/es5/wire-service.js.map +1 -1
- package/dist/wire-service/umd/es5/wire-service_debug.js +2 -2
- package/dist/wire-service/umd/es5/wire-service_debug.js.map +1 -1
- package/package.json +7 -7
|
@@ -444,9 +444,9 @@ function htmlEscape(str, attrMode = false) {
|
|
|
444
444
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
445
445
|
*/
|
|
446
446
|
// Increment whenever the LWC template compiler changes
|
|
447
|
-
const LWC_VERSION = "2.
|
|
447
|
+
const LWC_VERSION = "2.39.0";
|
|
448
448
|
const LWC_VERSION_COMMENT_REGEX = /\/\*LWC compiler v([\d.]+)\*\/\s*}/;
|
|
449
|
-
/** version: 2.
|
|
449
|
+
/** version: 2.39.0 */
|
|
450
450
|
|
|
451
451
|
/**
|
|
452
452
|
* Copyright (C) 2018 salesforce.com, inc.
|
|
@@ -525,7 +525,7 @@ function setFeatureFlagForTest(name, value) {
|
|
|
525
525
|
setFeatureFlag(name, value);
|
|
526
526
|
}
|
|
527
527
|
}
|
|
528
|
-
/** version: 2.
|
|
528
|
+
/** version: 2.39.0 */
|
|
529
529
|
|
|
530
530
|
/*
|
|
531
531
|
* Copyright (c) 2020, salesforce.com, inc.
|
|
@@ -621,7 +621,7 @@ function applyAriaReflection(prototype = Element.prototype) {
|
|
|
621
621
|
}
|
|
622
622
|
}
|
|
623
623
|
}
|
|
624
|
-
/** version: 2.
|
|
624
|
+
/** version: 2.39.0 */
|
|
625
625
|
|
|
626
626
|
/* proxy-compat-disable */
|
|
627
627
|
|
|
@@ -3106,6 +3106,93 @@ const BaseBridgeElement = HTMLBridgeElementFactory(HTMLElementConstructor, getOw
|
|
|
3106
3106
|
freeze(BaseBridgeElement);
|
|
3107
3107
|
seal(BaseBridgeElement.prototype);
|
|
3108
3108
|
|
|
3109
|
+
/*
|
|
3110
|
+
* Copyright (c) 2023, salesforce.com, inc.
|
|
3111
|
+
* All rights reserved.
|
|
3112
|
+
* SPDX-License-Identifier: MIT
|
|
3113
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
3114
|
+
*/
|
|
3115
|
+
const supportsWeakRefs = typeof WeakRef === 'function' && typeof FinalizationRegistry === 'function';
|
|
3116
|
+
// In browsers that doesn't support WeakRefs, the values will still leak, but at least the keys won't
|
|
3117
|
+
class LegacyWeakMultiMap {
|
|
3118
|
+
constructor() {
|
|
3119
|
+
this._map = new WeakMap();
|
|
3120
|
+
}
|
|
3121
|
+
_getValues(key) {
|
|
3122
|
+
let values = this._map.get(key);
|
|
3123
|
+
if (isUndefined$1(values)) {
|
|
3124
|
+
values = new Set();
|
|
3125
|
+
this._map.set(key, values);
|
|
3126
|
+
}
|
|
3127
|
+
return values;
|
|
3128
|
+
}
|
|
3129
|
+
get(key) {
|
|
3130
|
+
return this._getValues(key);
|
|
3131
|
+
}
|
|
3132
|
+
add(key, vm) {
|
|
3133
|
+
const set = this._getValues(key);
|
|
3134
|
+
set.add(vm);
|
|
3135
|
+
}
|
|
3136
|
+
delete(key) {
|
|
3137
|
+
this._map.delete(key);
|
|
3138
|
+
}
|
|
3139
|
+
}
|
|
3140
|
+
// This implementation relies on the WeakRef/FinalizationRegistry proposal.
|
|
3141
|
+
// For some background, see: https://github.com/tc39/proposal-weakrefs
|
|
3142
|
+
class ModernWeakMultiMap {
|
|
3143
|
+
constructor() {
|
|
3144
|
+
this._map = new WeakMap();
|
|
3145
|
+
this._registry = new FinalizationRegistry((weakRefs) => {
|
|
3146
|
+
// This should be considered an optional cleanup method to remove GC'ed values from their respective arrays.
|
|
3147
|
+
// JS VMs are not obligated to call FinalizationRegistry callbacks.
|
|
3148
|
+
// Work backwards, removing stale VMs
|
|
3149
|
+
for (let i = weakRefs.length - 1; i >= 0; i--) {
|
|
3150
|
+
const vm = weakRefs[i].deref();
|
|
3151
|
+
if (isUndefined$1(vm)) {
|
|
3152
|
+
ArraySplice.call(weakRefs, i, 1); // remove
|
|
3153
|
+
}
|
|
3154
|
+
}
|
|
3155
|
+
});
|
|
3156
|
+
}
|
|
3157
|
+
_getWeakRefs(key) {
|
|
3158
|
+
let weakRefs = this._map.get(key);
|
|
3159
|
+
if (isUndefined$1(weakRefs)) {
|
|
3160
|
+
weakRefs = [];
|
|
3161
|
+
this._map.set(key, weakRefs);
|
|
3162
|
+
}
|
|
3163
|
+
return weakRefs;
|
|
3164
|
+
}
|
|
3165
|
+
get(key) {
|
|
3166
|
+
const weakRefs = this._getWeakRefs(key);
|
|
3167
|
+
const result = new Set();
|
|
3168
|
+
for (const weakRef of weakRefs) {
|
|
3169
|
+
const vm = weakRef.deref();
|
|
3170
|
+
if (!isUndefined$1(vm)) {
|
|
3171
|
+
result.add(vm);
|
|
3172
|
+
}
|
|
3173
|
+
}
|
|
3174
|
+
return result;
|
|
3175
|
+
}
|
|
3176
|
+
add(key, value) {
|
|
3177
|
+
const weakRefs = this._getWeakRefs(key);
|
|
3178
|
+
// We could check for duplicate values here, but it doesn't seem worth it.
|
|
3179
|
+
// We transform the output into a Set anyway
|
|
3180
|
+
ArrayPush$1.call(weakRefs, new WeakRef(value));
|
|
3181
|
+
// It's important here not to leak the second argument, which is the "held value." The FinalizationRegistry
|
|
3182
|
+
// effectively creates a strong reference between the first argument (the "target") and the held value. When
|
|
3183
|
+
// the target is GC'ed, the callback is called, and then the held value is GC'ed.
|
|
3184
|
+
// Putting the key here would mean the key is not GC'ed until the value is GC'ed, which defeats the purpose
|
|
3185
|
+
// of the WeakMap. Whereas putting the weakRefs array here is fine, because it doesn't have a strong reference
|
|
3186
|
+
// to anything. See also this example:
|
|
3187
|
+
// https://gist.github.com/nolanlawson/79a3d36e8e6cc25c5048bb17c1795aea
|
|
3188
|
+
this._registry.register(value, weakRefs);
|
|
3189
|
+
}
|
|
3190
|
+
delete(key) {
|
|
3191
|
+
this._map.delete(key);
|
|
3192
|
+
}
|
|
3193
|
+
}
|
|
3194
|
+
const WeakMultiMap = supportsWeakRefs ? ModernWeakMultiMap : LegacyWeakMultiMap;
|
|
3195
|
+
|
|
3109
3196
|
/*
|
|
3110
3197
|
* Copyright (c) 2020, salesforce.com, inc.
|
|
3111
3198
|
* All rights reserved.
|
|
@@ -3115,9 +3202,13 @@ seal(BaseBridgeElement.prototype);
|
|
|
3115
3202
|
const swappedTemplateMap = new WeakMap();
|
|
3116
3203
|
const swappedComponentMap = new WeakMap();
|
|
3117
3204
|
const swappedStyleMap = new WeakMap();
|
|
3118
|
-
|
|
3119
|
-
|
|
3120
|
-
|
|
3205
|
+
// The important thing here is the weak values – VMs are transient (one per component instance) and should be GC'ed,
|
|
3206
|
+
// so we don't want to create strong references to them.
|
|
3207
|
+
// The weak keys are kind of useless, because Templates, LightningElementConstructors, and StylesheetFactories are
|
|
3208
|
+
// never GC'ed. But maybe they will be someday, so we may as well use weak keys too.
|
|
3209
|
+
const activeTemplates = new WeakMultiMap();
|
|
3210
|
+
const activeComponents = new WeakMultiMap();
|
|
3211
|
+
const activeStyles = new WeakMultiMap();
|
|
3121
3212
|
function getTemplateOrSwappedTemplate(tpl) {
|
|
3122
3213
|
assertNotProd(); // this method should never leak to prod
|
|
3123
3214
|
const visited = new Set();
|
|
@@ -3149,72 +3240,27 @@ function setActiveVM(vm) {
|
|
|
3149
3240
|
assertNotProd(); // this method should never leak to prod
|
|
3150
3241
|
// tracking active component
|
|
3151
3242
|
const Ctor = vm.def.ctor;
|
|
3152
|
-
let componentVMs = activeComponents.get(Ctor);
|
|
3153
|
-
if (isUndefined$1(componentVMs)) {
|
|
3154
|
-
componentVMs = new Set();
|
|
3155
|
-
activeComponents.set(Ctor, componentVMs);
|
|
3156
|
-
}
|
|
3157
3243
|
// this will allow us to keep track of the hot components
|
|
3158
|
-
|
|
3244
|
+
activeComponents.add(Ctor, vm);
|
|
3159
3245
|
// tracking active template
|
|
3160
3246
|
const tpl = vm.cmpTemplate;
|
|
3161
3247
|
if (tpl) {
|
|
3162
|
-
let templateVMs = activeTemplates.get(tpl);
|
|
3163
|
-
if (isUndefined$1(templateVMs)) {
|
|
3164
|
-
templateVMs = new Set();
|
|
3165
|
-
activeTemplates.set(tpl, templateVMs);
|
|
3166
|
-
}
|
|
3167
3248
|
// this will allow us to keep track of the templates that are
|
|
3168
3249
|
// being used by a hot component
|
|
3169
|
-
|
|
3250
|
+
activeTemplates.add(tpl, vm);
|
|
3170
3251
|
// tracking active styles associated to template
|
|
3171
3252
|
const stylesheets = tpl.stylesheets;
|
|
3172
3253
|
if (!isUndefined$1(stylesheets)) {
|
|
3173
|
-
flattenStylesheets(stylesheets)
|
|
3254
|
+
for (const stylesheet of flattenStylesheets(stylesheets)) {
|
|
3174
3255
|
// this is necessary because we don't hold the list of styles
|
|
3175
3256
|
// in the vm, we only hold the selected (already swapped template)
|
|
3176
3257
|
// but the styles attached to the template might not be the actual
|
|
3177
3258
|
// active ones, but the swapped versions of those.
|
|
3178
|
-
|
|
3179
|
-
let stylesheetVMs = activeStyles.get(stylesheet);
|
|
3180
|
-
if (isUndefined$1(stylesheetVMs)) {
|
|
3181
|
-
stylesheetVMs = new Set();
|
|
3182
|
-
activeStyles.set(stylesheet, stylesheetVMs);
|
|
3183
|
-
}
|
|
3259
|
+
const swappedStylesheet = getStyleOrSwappedStyle(stylesheet);
|
|
3184
3260
|
// this will allow us to keep track of the stylesheet that are
|
|
3185
3261
|
// being used by a hot component
|
|
3186
|
-
|
|
3187
|
-
}
|
|
3188
|
-
}
|
|
3189
|
-
}
|
|
3190
|
-
}
|
|
3191
|
-
function removeActiveVM(vm) {
|
|
3192
|
-
assertNotProd(); // this method should never leak to prod
|
|
3193
|
-
// tracking inactive component
|
|
3194
|
-
const Ctor = vm.def.ctor;
|
|
3195
|
-
let list = activeComponents.get(Ctor);
|
|
3196
|
-
if (!isUndefined$1(list)) {
|
|
3197
|
-
// deleting the vm from the set to avoid leaking memory
|
|
3198
|
-
list.delete(vm);
|
|
3199
|
-
}
|
|
3200
|
-
// removing inactive template
|
|
3201
|
-
const tpl = vm.cmpTemplate;
|
|
3202
|
-
if (tpl) {
|
|
3203
|
-
list = activeTemplates.get(tpl);
|
|
3204
|
-
if (!isUndefined$1(list)) {
|
|
3205
|
-
// deleting the vm from the set to avoid leaking memory
|
|
3206
|
-
list.delete(vm);
|
|
3207
|
-
}
|
|
3208
|
-
// removing active styles associated to template
|
|
3209
|
-
const styles = tpl.stylesheets;
|
|
3210
|
-
if (!isUndefined$1(styles)) {
|
|
3211
|
-
flattenStylesheets(styles).forEach((style) => {
|
|
3212
|
-
list = activeStyles.get(style);
|
|
3213
|
-
if (!isUndefined$1(list)) {
|
|
3214
|
-
// deleting the vm from the set to avoid leaking memory
|
|
3215
|
-
list.delete(vm);
|
|
3216
|
-
}
|
|
3217
|
-
});
|
|
3262
|
+
activeStyles.add(swappedStylesheet, vm);
|
|
3263
|
+
}
|
|
3218
3264
|
}
|
|
3219
3265
|
}
|
|
3220
3266
|
}
|
|
@@ -3591,6 +3637,9 @@ function isVBaseElement(vnode) {
|
|
|
3591
3637
|
function isSameVnode(vnode1, vnode2) {
|
|
3592
3638
|
return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;
|
|
3593
3639
|
}
|
|
3640
|
+
function isVCustomElement(vnode) {
|
|
3641
|
+
return vnode.type === 3 /* VNodeType.CustomElement */;
|
|
3642
|
+
}
|
|
3594
3643
|
function isVFragment(vnode) {
|
|
3595
3644
|
return vnode.type === 5 /* VNodeType.Fragment */;
|
|
3596
3645
|
}
|
|
@@ -3896,7 +3945,12 @@ function patch(n1, n2, parent, renderer) {
|
|
|
3896
3945
|
return;
|
|
3897
3946
|
}
|
|
3898
3947
|
if (process.env.NODE_ENV !== 'production') {
|
|
3899
|
-
if (!isSameVnode(n1, n2)
|
|
3948
|
+
if (!isSameVnode(n1, n2) &&
|
|
3949
|
+
// Currently the only scenario when patch does not receive the same vnodes are for
|
|
3950
|
+
// dynamic components. When a dynamic component's constructor changes, the value of its
|
|
3951
|
+
// tag name (sel) will be different. The engine will unmount the previous element
|
|
3952
|
+
// and mount the new one using the new constructor in patchCustomElement.
|
|
3953
|
+
!(isVCustomElement(n1) && isVCustomElement(n2))) {
|
|
3900
3954
|
throw new Error('Expected these VNodes to be the same: ' +
|
|
3901
3955
|
JSON.stringify({ sel: n1.sel, key: n1.key }) +
|
|
3902
3956
|
', ' +
|
|
@@ -4084,8 +4138,9 @@ function mountCustomElement(vnode, parent, anchor, renderer) {
|
|
|
4084
4138
|
}
|
|
4085
4139
|
}
|
|
4086
4140
|
function patchCustomElement(n1, n2, parent, renderer) {
|
|
4141
|
+
// TODO [#3331]: This if branch should be removed in 246 with lwc:dynamic
|
|
4087
4142
|
if (n1.ctor !== n2.ctor) {
|
|
4088
|
-
// If the constructor, unmount the current component and mount a new one using the new
|
|
4143
|
+
// If the constructor differs, unmount the current component and mount a new one using the new
|
|
4089
4144
|
// constructor.
|
|
4090
4145
|
const anchor = renderer.nextSibling(n1.elm);
|
|
4091
4146
|
unmount(n1, parent, renderer, true);
|
|
@@ -4578,9 +4633,17 @@ function updateStaticChildren(c1, c2, parent, renderer) {
|
|
|
4578
4633
|
if (n2 !== n1) {
|
|
4579
4634
|
if (isVNode(n1)) {
|
|
4580
4635
|
if (isVNode(n2)) {
|
|
4581
|
-
|
|
4582
|
-
|
|
4583
|
-
|
|
4636
|
+
if (isSameVnode(n1, n2)) {
|
|
4637
|
+
// both vnodes are equivalent, and we just need to patch them
|
|
4638
|
+
patch(n1, n2, parent, renderer);
|
|
4639
|
+
anchor = n2.elm;
|
|
4640
|
+
}
|
|
4641
|
+
else {
|
|
4642
|
+
// removing the old vnode since the new one is different
|
|
4643
|
+
unmount(n1, parent, renderer, true);
|
|
4644
|
+
mount(n2, parent, renderer, anchor);
|
|
4645
|
+
anchor = n2.elm;
|
|
4646
|
+
}
|
|
4584
4647
|
}
|
|
4585
4648
|
else {
|
|
4586
4649
|
// removing the old vnode since the new one is null
|
|
@@ -4982,16 +5045,18 @@ function fid(url) {
|
|
|
4982
5045
|
return url;
|
|
4983
5046
|
}
|
|
4984
5047
|
/**
|
|
4985
|
-
* create a dynamic component via `<x-foo lwc:dynamic={Ctor}>`
|
|
5048
|
+
* [ddc] - create a (deprecated) dynamic component via `<x-foo lwc:dynamic={Ctor}>`
|
|
5049
|
+
*
|
|
5050
|
+
* TODO [#3331]: remove usage of lwc:dynamic in 246
|
|
4986
5051
|
*/
|
|
4987
|
-
function
|
|
5052
|
+
function ddc(sel, Ctor, data, children = EmptyArray) {
|
|
4988
5053
|
if (process.env.NODE_ENV !== 'production') {
|
|
4989
5054
|
assert.isTrue(isString(sel), `dc() 1st argument sel must be a string.`);
|
|
4990
5055
|
assert.isTrue(isObject(data), `dc() 3nd argument data must be an object.`);
|
|
4991
5056
|
assert.isTrue(arguments.length === 3 || isArray$1(children), `dc() 4nd argument data must be an array.`);
|
|
4992
5057
|
}
|
|
4993
5058
|
// null or undefined values should produce a null value in the VNodes
|
|
4994
|
-
if (Ctor
|
|
5059
|
+
if (isNull(Ctor) || isUndefined$1(Ctor)) {
|
|
4995
5060
|
return null;
|
|
4996
5061
|
}
|
|
4997
5062
|
if (!isComponentConstructor(Ctor)) {
|
|
@@ -4999,6 +5064,30 @@ function dc(sel, Ctor, data, children = EmptyArray) {
|
|
|
4999
5064
|
}
|
|
5000
5065
|
return c(sel, Ctor, data, children);
|
|
5001
5066
|
}
|
|
5067
|
+
/**
|
|
5068
|
+
* [dc] - create a dynamic component via `<lwc:component lwc:is={Ctor}>`
|
|
5069
|
+
*/
|
|
5070
|
+
function dc(Ctor, data, children = EmptyArray) {
|
|
5071
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
5072
|
+
assert.isTrue(isObject(data), `dc() 2nd argument data must be an object.`);
|
|
5073
|
+
assert.isTrue(arguments.length === 3 || isArray$1(children), `dc() 3rd argument data must be an array.`);
|
|
5074
|
+
}
|
|
5075
|
+
// Null or undefined values should produce a null value in the VNodes.
|
|
5076
|
+
// This is the only value at compile time as the constructor will not be known.
|
|
5077
|
+
if (isNull(Ctor) || isUndefined$1(Ctor)) {
|
|
5078
|
+
return null;
|
|
5079
|
+
}
|
|
5080
|
+
if (!isComponentConstructor(Ctor)) {
|
|
5081
|
+
throw new Error(`Invalid constructor ${toString$1(Ctor)} is not a LightningElement constructor.`);
|
|
5082
|
+
}
|
|
5083
|
+
// Look up the dynamic component's name at runtime once the constructor is available.
|
|
5084
|
+
// This information is only known at runtime and is stored as part of registerComponent.
|
|
5085
|
+
const sel = getComponentRegisteredName(Ctor);
|
|
5086
|
+
if (isUndefined$1(sel) || sel === '') {
|
|
5087
|
+
throw new Error(`Invalid LWC constructor ${toString$1(Ctor)} does not have a registered name`);
|
|
5088
|
+
}
|
|
5089
|
+
return c(sel, Ctor, data, children);
|
|
5090
|
+
}
|
|
5002
5091
|
/**
|
|
5003
5092
|
* slow children collection marking mechanism. this API allows the compiler to signal
|
|
5004
5093
|
* to the engine that a particular collection of children must be diffed using the slow
|
|
@@ -5061,6 +5150,7 @@ const api = freeze({
|
|
|
5061
5150
|
fid,
|
|
5062
5151
|
shc,
|
|
5063
5152
|
ssf,
|
|
5153
|
+
ddc,
|
|
5064
5154
|
});
|
|
5065
5155
|
|
|
5066
5156
|
/*
|
|
@@ -5421,28 +5511,34 @@ function invokeEventListener(vm, fn, thisValue, event) {
|
|
|
5421
5511
|
* SPDX-License-Identifier: MIT
|
|
5422
5512
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
5423
5513
|
*/
|
|
5424
|
-
const
|
|
5514
|
+
const registeredComponentMap = new Map();
|
|
5425
5515
|
/**
|
|
5426
5516
|
* INTERNAL: This function can only be invoked by compiled code. The compiler
|
|
5427
5517
|
* will prevent this function from being imported by userland code.
|
|
5428
5518
|
*/
|
|
5429
5519
|
function registerComponent(
|
|
5430
5520
|
// We typically expect a LightningElementConstructor, but technically you can call this with anything
|
|
5431
|
-
Ctor,
|
|
5521
|
+
Ctor, metadata) {
|
|
5432
5522
|
if (isFunction$1(Ctor)) {
|
|
5433
5523
|
if (process.env.NODE_ENV !== 'production') {
|
|
5434
5524
|
// There is no point in running this in production, because the version mismatch check relies
|
|
5435
5525
|
// on code comments which are stripped out in production by minifiers
|
|
5436
5526
|
checkVersionMismatch(Ctor, 'component');
|
|
5437
5527
|
}
|
|
5438
|
-
|
|
5528
|
+
// TODO [#3331]: add validation to check the value of metadata.sel is not an empty string.
|
|
5529
|
+
registeredComponentMap.set(Ctor, metadata);
|
|
5439
5530
|
}
|
|
5440
5531
|
// chaining this method as a way to wrap existing assignment of component constructor easily,
|
|
5441
5532
|
// without too much transformation
|
|
5442
5533
|
return Ctor;
|
|
5443
5534
|
}
|
|
5444
5535
|
function getComponentRegisteredTemplate(Ctor) {
|
|
5445
|
-
|
|
5536
|
+
var _a;
|
|
5537
|
+
return (_a = registeredComponentMap.get(Ctor)) === null || _a === void 0 ? void 0 : _a.tmpl;
|
|
5538
|
+
}
|
|
5539
|
+
function getComponentRegisteredName(Ctor) {
|
|
5540
|
+
var _a;
|
|
5541
|
+
return (_a = registeredComponentMap.get(Ctor)) === null || _a === void 0 ? void 0 : _a.sel;
|
|
5446
5542
|
}
|
|
5447
5543
|
function getTemplateReactiveObserver(vm) {
|
|
5448
5544
|
return createReactiveObserver();
|
|
@@ -5572,9 +5668,6 @@ function resetComponentStateWhenRemoved(vm) {
|
|
|
5572
5668
|
runChildNodesDisconnectedCallback(vm);
|
|
5573
5669
|
runLightChildNodesDisconnectedCallback(vm);
|
|
5574
5670
|
}
|
|
5575
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
5576
|
-
removeActiveVM(vm);
|
|
5577
|
-
}
|
|
5578
5671
|
}
|
|
5579
5672
|
// this method is triggered by the diffing algo only when a vnode from the
|
|
5580
5673
|
// old vnode.children is removed from the DOM.
|
|
@@ -6219,7 +6312,7 @@ function readonly(obj) {
|
|
|
6219
6312
|
}
|
|
6220
6313
|
return getReadOnlyProxy(obj);
|
|
6221
6314
|
}
|
|
6222
|
-
/* version: 2.
|
|
6315
|
+
/* version: 2.39.0 */
|
|
6223
6316
|
|
|
6224
6317
|
/*
|
|
6225
6318
|
* Copyright (c) 2020, salesforce.com, inc.
|
|
@@ -6754,7 +6847,7 @@ seal(LightningElement.prototype);
|
|
|
6754
6847
|
function createElement() {
|
|
6755
6848
|
throw new Error('createElement is not supported in @lwc/engine-server, only @lwc/engine-dom.');
|
|
6756
6849
|
}
|
|
6757
|
-
/* version: 2.
|
|
6850
|
+
/* version: 2.39.0 */
|
|
6758
6851
|
|
|
6759
6852
|
exports.LightningElement = LightningElement;
|
|
6760
6853
|
exports.api = api$1;
|