lwc 2.35.1 → 2.36.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 +258 -102
- package/dist/engine-dom/iife/es2017/engine-dom.js +258 -102
- package/dist/engine-dom/iife/es2017/engine-dom.min.js +1 -1
- package/dist/engine-dom/iife/es2017/engine-dom_debug.js +286 -58
- package/dist/engine-dom/iife/es5/engine-dom.js +365 -202
- package/dist/engine-dom/iife/es5/engine-dom.min.js +1 -1
- package/dist/engine-dom/iife/es5/engine-dom_debug.js +412 -131
- package/dist/engine-dom/umd/es2017/engine-dom.js +258 -102
- package/dist/engine-dom/umd/es2017/engine-dom.min.js +1 -1
- package/dist/engine-dom/umd/es2017/engine-dom_debug.js +286 -58
- package/dist/engine-dom/umd/es5/engine-dom.js +365 -202
- package/dist/engine-dom/umd/es5/engine-dom.min.js +1 -1
- package/dist/engine-dom/umd/es5/engine-dom_debug.js +412 -131
- package/dist/engine-server/commonjs/es2017/engine-server.js +126 -79
- package/dist/engine-server/commonjs/es2017/engine-server.min.js +1 -1
- package/dist/engine-server/esm/es2017/engine-server.js +126 -79
- package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js +5 -5
- package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js +5 -5
- package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js +3 -3
- package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js +9 -9
- package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js +7 -7
- package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js +5 -5
- package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js +3 -3
- package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js +9 -9
- package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js +7 -7
- package/dist/wire-service/esm/es2017/wire-service.js +2 -2
- package/dist/wire-service/iife/es2017/wire-service.js +2 -2
- package/dist/wire-service/iife/es2017/wire-service_debug.js +2 -2
- package/dist/wire-service/iife/es5/wire-service.js +2 -2
- package/dist/wire-service/iife/es5/wire-service_debug.js +2 -2
- package/dist/wire-service/umd/es2017/wire-service.js +2 -2
- package/dist/wire-service/umd/es2017/wire-service_debug.js +2 -2
- package/dist/wire-service/umd/es5/wire-service.js +2 -2
- package/dist/wire-service/umd/es5/wire-service_debug.js +2 -2
- package/package.json +7 -7
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
|
|
36
36
|
var assert = /*#__PURE__*/Object.freeze({
|
|
37
37
|
__proto__: null,
|
|
38
|
+
fail: fail,
|
|
38
39
|
invariant: invariant,
|
|
39
|
-
isTrue: isTrue$1,
|
|
40
40
|
isFalse: isFalse$1,
|
|
41
|
-
|
|
41
|
+
isTrue: isTrue$1
|
|
42
42
|
});
|
|
43
43
|
|
|
44
44
|
/*
|
|
@@ -324,7 +324,7 @@
|
|
|
324
324
|
CACHED_ATTRIBUTE_PROPERTY_MAPPING.set(attrName, propertyName);
|
|
325
325
|
return propertyName;
|
|
326
326
|
}
|
|
327
|
-
/** version: 2.
|
|
327
|
+
/** version: 2.36.0 */
|
|
328
328
|
|
|
329
329
|
/**
|
|
330
330
|
* Copyright (C) 2018 salesforce.com, inc.
|
|
@@ -392,7 +392,7 @@
|
|
|
392
392
|
*/
|
|
393
393
|
function setFeatureFlagForTest(name, value) {
|
|
394
394
|
}
|
|
395
|
-
/** version: 2.
|
|
395
|
+
/** version: 2.36.0 */
|
|
396
396
|
|
|
397
397
|
/**
|
|
398
398
|
* Copyright (C) 2018 salesforce.com, inc.
|
|
@@ -456,7 +456,7 @@
|
|
|
456
456
|
}
|
|
457
457
|
}
|
|
458
458
|
}
|
|
459
|
-
/** version: 2.
|
|
459
|
+
/** version: 2.36.0 */
|
|
460
460
|
|
|
461
461
|
/*
|
|
462
462
|
* Copyright (c) 2018, salesforce.com, inc.
|
|
@@ -476,7 +476,6 @@
|
|
|
476
476
|
* SPDX-License-Identifier: MIT
|
|
477
477
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
478
478
|
*/
|
|
479
|
-
/** Callbacks to invoke when reporting is enabled **/
|
|
480
479
|
const onReportingEnabledCallbacks = [];
|
|
481
480
|
/** The currently assigned reporting dispatcher. */
|
|
482
481
|
let currentDispatcher$1 = noop;
|
|
@@ -534,11 +533,11 @@
|
|
|
534
533
|
/**
|
|
535
534
|
* Report to the current dispatcher, if there is one.
|
|
536
535
|
* @param reportingEventId
|
|
537
|
-
* @param
|
|
536
|
+
* @param payload - data to report
|
|
538
537
|
*/
|
|
539
|
-
function report(reportingEventId,
|
|
538
|
+
function report(reportingEventId, payload) {
|
|
540
539
|
if (enabled$1) {
|
|
541
|
-
currentDispatcher$1(reportingEventId,
|
|
540
|
+
currentDispatcher$1(reportingEventId, payload);
|
|
542
541
|
}
|
|
543
542
|
}
|
|
544
543
|
|
|
@@ -784,7 +783,7 @@
|
|
|
784
783
|
// Make a shallow copy of an object but omit the given key
|
|
785
784
|
function cloneAndOmitKey(object, keyToOmit) {
|
|
786
785
|
const result = {};
|
|
787
|
-
for (const key of
|
|
786
|
+
for (const key of keys(object)) {
|
|
788
787
|
if (key !== keyToOmit) {
|
|
789
788
|
result[key] = object[key];
|
|
790
789
|
}
|
|
@@ -794,7 +793,7 @@
|
|
|
794
793
|
function flattenStylesheets(stylesheets) {
|
|
795
794
|
const list = [];
|
|
796
795
|
for (const stylesheet of stylesheets) {
|
|
797
|
-
if (!
|
|
796
|
+
if (!isArray$1(stylesheet)) {
|
|
798
797
|
list.push(stylesheet);
|
|
799
798
|
}
|
|
800
799
|
else {
|
|
@@ -3759,7 +3758,12 @@
|
|
|
3759
3758
|
} else if (isVScopedSlotFragment(vnode)) {
|
|
3760
3759
|
slotName = vnode.slotName;
|
|
3761
3760
|
}
|
|
3762
|
-
|
|
3761
|
+
// Can't use toString here because Symbol(1).toString() is 'Symbol(1)'
|
|
3762
|
+
// but elm.setAttribute('slot', Symbol(1)) is an error.
|
|
3763
|
+
// the following line also throws same error for symbols
|
|
3764
|
+
// Similar for Object.create(null)
|
|
3765
|
+
const normalizedSlotName = '' + slotName;
|
|
3766
|
+
const vnodes = cmpSlotsMapping[normalizedSlotName] = cmpSlotsMapping[normalizedSlotName] || [];
|
|
3763
3767
|
ArrayPush$1.call(vnodes, vnode);
|
|
3764
3768
|
}
|
|
3765
3769
|
vm.cmpSlots = {
|
|
@@ -5192,7 +5196,7 @@
|
|
|
5192
5196
|
function isSyntheticShadowRootInstance(rootNode) {
|
|
5193
5197
|
return rootNode !== document && isTrue(rootNode.synthetic);
|
|
5194
5198
|
}
|
|
5195
|
-
function reportViolation(source, target, attrName) {
|
|
5199
|
+
function reportViolation$1(source, target, attrName) {
|
|
5196
5200
|
// The vm is either for the source, the target, or both. Either one or both must be using synthetic
|
|
5197
5201
|
// shadow for a violation to be detected.
|
|
5198
5202
|
let vm = getAssociatedVMIfPresent(source.getRootNode().host);
|
|
@@ -5203,7 +5207,10 @@
|
|
|
5203
5207
|
// vm should never be undefined here, but just to be safe, bail out and don't report
|
|
5204
5208
|
return;
|
|
5205
5209
|
}
|
|
5206
|
-
report(0 /* ReportingEventId.CrossRootAriaInSyntheticShadow */,
|
|
5210
|
+
report(0 /* ReportingEventId.CrossRootAriaInSyntheticShadow */, {
|
|
5211
|
+
tagName: vm.tagName,
|
|
5212
|
+
attributeName: attrName,
|
|
5213
|
+
});
|
|
5207
5214
|
}
|
|
5208
5215
|
function parseIdRefAttributeValue(attrValue) {
|
|
5209
5216
|
// split on whitespace and skip empty strings after splitting
|
|
@@ -5229,7 +5236,7 @@
|
|
|
5229
5236
|
const sourceElement = sourceElements[i];
|
|
5230
5237
|
const sourceRoot = sourceElement.getRootNode();
|
|
5231
5238
|
if (sourceRoot !== root) {
|
|
5232
|
-
reportViolation(sourceElement, elm);
|
|
5239
|
+
reportViolation$1(sourceElement, elm, idRefAttrName);
|
|
5233
5240
|
break;
|
|
5234
5241
|
}
|
|
5235
5242
|
}
|
|
@@ -5244,7 +5251,7 @@
|
|
|
5244
5251
|
const targetRoot = target.getRootNode();
|
|
5245
5252
|
if (targetRoot !== root) {
|
|
5246
5253
|
// target element's shadow root is not the same as ours
|
|
5247
|
-
reportViolation(elm, target);
|
|
5254
|
+
reportViolation$1(elm, target, attrName);
|
|
5248
5255
|
}
|
|
5249
5256
|
}
|
|
5250
5257
|
}
|
|
@@ -5253,7 +5260,7 @@
|
|
|
5253
5260
|
let enabled = false;
|
|
5254
5261
|
// We want to avoid patching globals whenever possible, so this should be tree-shaken out in prod-mode and if
|
|
5255
5262
|
// reporting is not enabled. It should also only run once
|
|
5256
|
-
function enableDetection() {
|
|
5263
|
+
function enableDetection$1() {
|
|
5257
5264
|
if (enabled) {
|
|
5258
5265
|
return; // don't double-apply the patches
|
|
5259
5266
|
}
|
|
@@ -5306,10 +5313,94 @@
|
|
|
5306
5313
|
// Always run detection in dev mode, so we can at least print to the console
|
|
5307
5314
|
{
|
|
5308
5315
|
// In prod mode, only enable detection if reporting is enabled
|
|
5309
|
-
onReportingEnabled(enableDetection);
|
|
5316
|
+
onReportingEnabled(enableDetection$1);
|
|
5310
5317
|
}
|
|
5311
5318
|
}
|
|
5312
5319
|
|
|
5320
|
+
/*
|
|
5321
|
+
* Copyright (c) 2018, salesforce.com, inc.
|
|
5322
|
+
* All rights reserved.
|
|
5323
|
+
* SPDX-License-Identifier: MIT
|
|
5324
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
5325
|
+
*/
|
|
5326
|
+
//
|
|
5327
|
+
// The goal of this code is to detect usages of non-standard reflected ARIA properties. These are caused by
|
|
5328
|
+
// legacy non-standard Element.prototype extensions added by the @lwc/aria-reflection package.
|
|
5329
|
+
//
|
|
5330
|
+
// See the README for @lwc/aria-reflection
|
|
5331
|
+
const NON_STANDARD_ARIA_PROPS = ['ariaActiveDescendant', 'ariaControls', 'ariaDescribedBy', 'ariaDetails', 'ariaErrorMessage', 'ariaFlowTo', 'ariaLabelledBy', 'ariaOwns'];
|
|
5332
|
+
function isLightningElement(elm) {
|
|
5333
|
+
// The former case is for `this.prop` (inside component) and the latter is for `element.prop` (outside component).
|
|
5334
|
+
// In both cases, we apply the non-standard prop even when the global polyfill is disabled, so this is kosher.
|
|
5335
|
+
return elm instanceof LightningElement || elm instanceof BaseBridgeElement;
|
|
5336
|
+
}
|
|
5337
|
+
function findVM(elm) {
|
|
5338
|
+
// If it's a shadow DOM component, then it has a host
|
|
5339
|
+
const {
|
|
5340
|
+
host
|
|
5341
|
+
} = elm.getRootNode();
|
|
5342
|
+
const vm = isUndefined$1(host) ? undefined : getAssociatedVMIfPresent(host);
|
|
5343
|
+
if (!isUndefined$1(vm)) {
|
|
5344
|
+
return vm;
|
|
5345
|
+
}
|
|
5346
|
+
// Else it might be a light DOM component. Walk up the tree trying to find the owner
|
|
5347
|
+
let parentElement = elm;
|
|
5348
|
+
while (!isNull(parentElement = parentElement.parentElement)) {
|
|
5349
|
+
if (isLightningElement(parentElement)) {
|
|
5350
|
+
const vm = getAssociatedVMIfPresent(parentElement);
|
|
5351
|
+
if (!isUndefined$1(vm)) {
|
|
5352
|
+
return vm;
|
|
5353
|
+
}
|
|
5354
|
+
}
|
|
5355
|
+
}
|
|
5356
|
+
// If we return undefined, it's because the element was rendered wholly outside a LightningElement
|
|
5357
|
+
}
|
|
5358
|
+
|
|
5359
|
+
function checkAndReportViolation(elm, prop) {
|
|
5360
|
+
if (!isLightningElement(elm)) {
|
|
5361
|
+
const vm = findVM(elm);
|
|
5362
|
+
report(2 /* ReportingEventId.NonStandardAriaReflection */, {
|
|
5363
|
+
tagName: vm === null || vm === void 0 ? void 0 : vm.tagName,
|
|
5364
|
+
propertyName: prop
|
|
5365
|
+
});
|
|
5366
|
+
}
|
|
5367
|
+
}
|
|
5368
|
+
function enableDetection() {
|
|
5369
|
+
const {
|
|
5370
|
+
prototype
|
|
5371
|
+
} = Element;
|
|
5372
|
+
for (const prop of NON_STANDARD_ARIA_PROPS) {
|
|
5373
|
+
const descriptor = getOwnPropertyDescriptor$1(prototype, prop);
|
|
5374
|
+
// @ts-ignore
|
|
5375
|
+
const {
|
|
5376
|
+
get,
|
|
5377
|
+
set
|
|
5378
|
+
} = descriptor;
|
|
5379
|
+
defineProperty(prototype, prop, {
|
|
5380
|
+
get() {
|
|
5381
|
+
checkAndReportViolation(this, prop);
|
|
5382
|
+
return get.call(this);
|
|
5383
|
+
},
|
|
5384
|
+
set(val) {
|
|
5385
|
+
checkAndReportViolation(this, prop);
|
|
5386
|
+
return set.call(this, val);
|
|
5387
|
+
},
|
|
5388
|
+
configurable: true,
|
|
5389
|
+
enumerable: true
|
|
5390
|
+
});
|
|
5391
|
+
}
|
|
5392
|
+
}
|
|
5393
|
+
// No point in running this code if we're not in a browser, or if the global polyfill is not loaded
|
|
5394
|
+
{
|
|
5395
|
+
if (!lwcRuntimeFlags.DISABLE_ARIA_REFLECTION_POLYFILL) {
|
|
5396
|
+
// Always run detection in dev mode, so we can at least print to the console
|
|
5397
|
+
{
|
|
5398
|
+
// In prod mode, only enable detection if reporting is enabled
|
|
5399
|
+
onReportingEnabled(enableDetection);
|
|
5400
|
+
}
|
|
5401
|
+
}
|
|
5402
|
+
}
|
|
5403
|
+
|
|
5313
5404
|
/*
|
|
5314
5405
|
* Copyright (c) 2018, salesforce.com, inc.
|
|
5315
5406
|
* All rights reserved.
|
|
@@ -5714,6 +5805,97 @@
|
|
|
5714
5805
|
hooksAreSet = true;
|
|
5715
5806
|
setSanitizeHtmlContentHook(hooks.sanitizeHtmlContent);
|
|
5716
5807
|
}
|
|
5808
|
+
|
|
5809
|
+
/*
|
|
5810
|
+
* Copyright (c) 2018, salesforce.com, inc.
|
|
5811
|
+
* All rights reserved.
|
|
5812
|
+
* SPDX-License-Identifier: MIT
|
|
5813
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
|
5814
|
+
*/
|
|
5815
|
+
// See @lwc/engine-core/src/framework/template.ts
|
|
5816
|
+
const TEMPLATE_PROPS = ['slots', 'stylesheetToken', 'stylesheets', 'renderMode'];
|
|
5817
|
+
// Expandos that may be placed on a stylesheet factory function, and which are meaningful to LWC at runtime
|
|
5818
|
+
const STYLESHEET_PROPS = [
|
|
5819
|
+
// SEE `KEY__SCOPED_CSS` in @lwc/style-compiler
|
|
5820
|
+
'$scoped$'];
|
|
5821
|
+
// Via https://www.npmjs.com/package/object-observer
|
|
5822
|
+
const ARRAY_MUTATION_METHODS = ['pop', 'push', 'shift', 'unshift', 'reverse', 'sort', 'fill', 'splice', 'copyWithin'];
|
|
5823
|
+
let mutationTrackingDisabled = false;
|
|
5824
|
+
function getOriginalArrayMethod(prop) {
|
|
5825
|
+
switch (prop) {
|
|
5826
|
+
case 'pop':
|
|
5827
|
+
return ArrayPop;
|
|
5828
|
+
case 'push':
|
|
5829
|
+
return ArrayPush$1;
|
|
5830
|
+
case 'shift':
|
|
5831
|
+
return ArrayShift;
|
|
5832
|
+
case 'unshift':
|
|
5833
|
+
return ArrayUnshift;
|
|
5834
|
+
case 'reverse':
|
|
5835
|
+
return ArrayReverse;
|
|
5836
|
+
case 'sort':
|
|
5837
|
+
return ArraySort;
|
|
5838
|
+
case 'fill':
|
|
5839
|
+
return ArrayFill;
|
|
5840
|
+
case 'splice':
|
|
5841
|
+
return ArraySplice;
|
|
5842
|
+
case 'copyWithin':
|
|
5843
|
+
return ArrayCopyWithin;
|
|
5844
|
+
}
|
|
5845
|
+
}
|
|
5846
|
+
function reportViolation(type, eventId, prop) {
|
|
5847
|
+
report(eventId, {
|
|
5848
|
+
propertyName: prop
|
|
5849
|
+
});
|
|
5850
|
+
}
|
|
5851
|
+
function reportTemplateViolation(prop) {
|
|
5852
|
+
reportViolation('template', 3 /* ReportingEventId.TemplateMutation */, prop);
|
|
5853
|
+
}
|
|
5854
|
+
function reportStylesheetViolation(prop) {
|
|
5855
|
+
reportViolation('stylesheet', 4 /* ReportingEventId.StylesheetMutation */, prop);
|
|
5856
|
+
}
|
|
5857
|
+
// Warn if the user tries to mutate a stylesheets array, e.g.:
|
|
5858
|
+
// `tmpl.stylesheets.push(someStylesheetFunction)`
|
|
5859
|
+
function warnOnArrayMutation(stylesheets) {
|
|
5860
|
+
// We can't handle users calling Array.prototype.slice.call(tmpl.stylesheets), but
|
|
5861
|
+
// we can at least warn when they use the most common mutation methods.
|
|
5862
|
+
for (const prop of ARRAY_MUTATION_METHODS) {
|
|
5863
|
+
const originalArrayMethod = getOriginalArrayMethod(prop);
|
|
5864
|
+
stylesheets[prop] = function arrayMutationWarningWrapper() {
|
|
5865
|
+
reportTemplateViolation('stylesheets');
|
|
5866
|
+
// @ts-ignore
|
|
5867
|
+
return originalArrayMethod.apply(this, arguments);
|
|
5868
|
+
};
|
|
5869
|
+
}
|
|
5870
|
+
}
|
|
5871
|
+
// Warn if the user tries to mutate a stylesheet factory function, e.g.:
|
|
5872
|
+
// `stylesheet.$scoped$ = true`
|
|
5873
|
+
function warnOnStylesheetFunctionMutation(stylesheet) {
|
|
5874
|
+
for (const prop of STYLESHEET_PROPS) {
|
|
5875
|
+
let value = stylesheet[prop];
|
|
5876
|
+
defineProperty(stylesheet, prop, {
|
|
5877
|
+
enumerable: true,
|
|
5878
|
+
configurable: true,
|
|
5879
|
+
get() {
|
|
5880
|
+
return value;
|
|
5881
|
+
},
|
|
5882
|
+
set(newValue) {
|
|
5883
|
+
reportStylesheetViolation(prop);
|
|
5884
|
+
value = newValue;
|
|
5885
|
+
}
|
|
5886
|
+
});
|
|
5887
|
+
}
|
|
5888
|
+
}
|
|
5889
|
+
// Warn on either array or stylesheet (function) mutation, in a deeply-nested array
|
|
5890
|
+
function trackStylesheetsMutation(stylesheets) {
|
|
5891
|
+
traverseStylesheets(stylesheets, subStylesheets => {
|
|
5892
|
+
if (isArray$1(subStylesheets)) {
|
|
5893
|
+
warnOnArrayMutation(subStylesheets);
|
|
5894
|
+
} else {
|
|
5895
|
+
warnOnStylesheetFunctionMutation(subStylesheets);
|
|
5896
|
+
}
|
|
5897
|
+
});
|
|
5898
|
+
}
|
|
5717
5899
|
// Deeply freeze the entire array (of arrays) of stylesheet factory functions
|
|
5718
5900
|
function deepFreeze(stylesheets) {
|
|
5719
5901
|
traverseStylesheets(stylesheets, subStylesheets => {
|
|
@@ -5732,7 +5914,70 @@
|
|
|
5732
5914
|
}
|
|
5733
5915
|
}
|
|
5734
5916
|
}
|
|
5917
|
+
function trackMutations(tmpl) {
|
|
5918
|
+
if (!isUndefined$1(tmpl.stylesheets)) {
|
|
5919
|
+
trackStylesheetsMutation(tmpl.stylesheets);
|
|
5920
|
+
}
|
|
5921
|
+
for (const prop of TEMPLATE_PROPS) {
|
|
5922
|
+
let value = tmpl[prop];
|
|
5923
|
+
defineProperty(tmpl, prop, {
|
|
5924
|
+
enumerable: true,
|
|
5925
|
+
configurable: true,
|
|
5926
|
+
get() {
|
|
5927
|
+
return value;
|
|
5928
|
+
},
|
|
5929
|
+
set(newValue) {
|
|
5930
|
+
if (!mutationTrackingDisabled) {
|
|
5931
|
+
reportTemplateViolation(prop);
|
|
5932
|
+
}
|
|
5933
|
+
value = newValue;
|
|
5934
|
+
}
|
|
5935
|
+
});
|
|
5936
|
+
}
|
|
5937
|
+
const originalDescriptor = getOwnPropertyDescriptor$1(tmpl, 'stylesheetTokens');
|
|
5938
|
+
defineProperty(tmpl, 'stylesheetTokens', {
|
|
5939
|
+
enumerable: true,
|
|
5940
|
+
configurable: true,
|
|
5941
|
+
get: originalDescriptor.get,
|
|
5942
|
+
set(value) {
|
|
5943
|
+
reportTemplateViolation('stylesheetTokens');
|
|
5944
|
+
// Avoid logging/reporting twice (for both stylesheetToken and stylesheetTokens)
|
|
5945
|
+
mutationTrackingDisabled = true;
|
|
5946
|
+
originalDescriptor.set.call(this, value);
|
|
5947
|
+
mutationTrackingDisabled = false;
|
|
5948
|
+
}
|
|
5949
|
+
});
|
|
5950
|
+
}
|
|
5951
|
+
function addLegacyStylesheetTokensShim(tmpl) {
|
|
5952
|
+
// When ENABLE_FROZEN_TEMPLATE is false, then we shim stylesheetTokens on top of stylesheetToken for anyone who
|
|
5953
|
+
// is accessing the old internal API (backwards compat). Details: https://salesforce.quip.com/v1rmAFu2cKAr
|
|
5954
|
+
defineProperty(tmpl, 'stylesheetTokens', {
|
|
5955
|
+
enumerable: true,
|
|
5956
|
+
configurable: true,
|
|
5957
|
+
get() {
|
|
5958
|
+
const {
|
|
5959
|
+
stylesheetToken
|
|
5960
|
+
} = this;
|
|
5961
|
+
if (isUndefined$1(stylesheetToken)) {
|
|
5962
|
+
return stylesheetToken;
|
|
5963
|
+
}
|
|
5964
|
+
// Shim for the old `stylesheetTokens` property
|
|
5965
|
+
// See https://github.com/salesforce/lwc/pull/2332/files#diff-7901555acef29969adaa6583185b3e9bce475cdc6f23e799a54e0018cb18abaa
|
|
5966
|
+
return {
|
|
5967
|
+
hostAttribute: `${stylesheetToken}-host`,
|
|
5968
|
+
shadowAttribute: stylesheetToken
|
|
5969
|
+
};
|
|
5970
|
+
},
|
|
5971
|
+
set(value) {
|
|
5972
|
+
// If the value is null or some other exotic object, you would be broken anyway in the past
|
|
5973
|
+
// because the engine would try to access hostAttribute/shadowAttribute, which would throw an error.
|
|
5974
|
+
// However it may be undefined in newer versions of LWC, so we need to guard against that case.
|
|
5975
|
+
this.stylesheetToken = isUndefined$1(value) ? undefined : value.shadowAttribute;
|
|
5976
|
+
}
|
|
5977
|
+
});
|
|
5978
|
+
}
|
|
5735
5979
|
function freezeTemplate(tmpl) {
|
|
5980
|
+
// TODO [#2782]: remove this flag and delete the legacy behavior
|
|
5736
5981
|
if (lwcRuntimeFlags.ENABLE_FROZEN_TEMPLATE) {
|
|
5737
5982
|
// Deep freeze the template
|
|
5738
5983
|
freeze(tmpl);
|
|
@@ -5740,33 +5985,16 @@
|
|
|
5740
5985
|
deepFreeze(tmpl.stylesheets);
|
|
5741
5986
|
}
|
|
5742
5987
|
} else {
|
|
5743
|
-
//
|
|
5744
|
-
//
|
|
5745
|
-
|
|
5746
|
-
|
|
5747
|
-
|
|
5748
|
-
|
|
5749
|
-
|
|
5750
|
-
|
|
5751
|
-
|
|
5752
|
-
|
|
5753
|
-
if (isUndefined$1(stylesheetToken)) {
|
|
5754
|
-
return stylesheetToken;
|
|
5755
|
-
}
|
|
5756
|
-
// Shim for the old `stylesheetTokens` property
|
|
5757
|
-
// See https://github.com/salesforce/lwc/pull/2332/files#diff-7901555acef29969adaa6583185b3e9bce475cdc6f23e799a54e0018cb18abaa
|
|
5758
|
-
return {
|
|
5759
|
-
hostAttribute: `${stylesheetToken}-host`,
|
|
5760
|
-
shadowAttribute: stylesheetToken
|
|
5761
|
-
};
|
|
5762
|
-
},
|
|
5763
|
-
set(value) {
|
|
5764
|
-
// If the value is null or some other exotic object, you would be broken anyway in the past
|
|
5765
|
-
// because the engine would try to access hostAttribute/shadowAttribute, which would throw an error.
|
|
5766
|
-
// However it may be undefined in newer versions of LWC, so we need to guard against that case.
|
|
5767
|
-
this.stylesheetToken = isUndefined$1(value) ? undefined : value.shadowAttribute;
|
|
5768
|
-
}
|
|
5769
|
-
});
|
|
5988
|
+
// template is not frozen - shim, report, and warn
|
|
5989
|
+
// this shim should be applied in both dev and prod
|
|
5990
|
+
addLegacyStylesheetTokensShim(tmpl);
|
|
5991
|
+
// When ENABLE_FROZEN_TEMPLATE is false, we want to warn in dev mode whenever someone is mutating the template
|
|
5992
|
+
{
|
|
5993
|
+
// In prod mode, we only track mutations if reporting is enabled
|
|
5994
|
+
onReportingEnabled(() => {
|
|
5995
|
+
trackMutations(tmpl);
|
|
5996
|
+
});
|
|
5997
|
+
}
|
|
5770
5998
|
}
|
|
5771
5999
|
}
|
|
5772
6000
|
|
|
@@ -5979,7 +6207,7 @@
|
|
|
5979
6207
|
const cachedConstructors = new Map();
|
|
5980
6208
|
const elementsUpgradedOutsideLWC = new WeakSet();
|
|
5981
6209
|
let elementBeingUpgradedByLWC = false;
|
|
5982
|
-
// Creates a constructor that is intended to be used as a
|
|
6210
|
+
// Creates a constructor that is intended to be used directly as a custom element, except that the upgradeCallback is
|
|
5983
6211
|
// passed in to the constructor so LWC can reuse the same custom element constructor for multiple components.
|
|
5984
6212
|
// Another benefit is that only LWC can create components that actually do anything – if you do
|
|
5985
6213
|
// `customElements.define('x-foo')`, then you don't have access to the upgradeCallback, so it's a dummy custom element.
|
|
@@ -6024,7 +6252,7 @@
|
|
|
6024
6252
|
}
|
|
6025
6253
|
return UpgradableConstructor;
|
|
6026
6254
|
};
|
|
6027
|
-
const
|
|
6255
|
+
const createCustomElementUsingUpgradableConstructor = (tagName, upgradeCallback, connectedCallback, disconnectedCallback) => {
|
|
6028
6256
|
// use global custom elements registry
|
|
6029
6257
|
let UpgradableConstructor = cachedConstructors.get(tagName);
|
|
6030
6258
|
if (isUndefined$1(UpgradableConstructor)) {
|
|
@@ -6052,7 +6280,7 @@
|
|
|
6052
6280
|
*/
|
|
6053
6281
|
/**
|
|
6054
6282
|
* Create a scoped registry, i.e. a function that can create custom elements whose tag names
|
|
6055
|
-
* do not conflict with
|
|
6283
|
+
* do not conflict with third-party custom elements having the same tag name.
|
|
6056
6284
|
*/
|
|
6057
6285
|
function createScopedRegistry() {
|
|
6058
6286
|
if (!hasCustomElements) {
|
|
@@ -6593,10 +6821,10 @@
|
|
|
6593
6821
|
* We have three modes for creating custom elements:
|
|
6594
6822
|
*
|
|
6595
6823
|
* 1. Compat (legacy) browser support (e.g. IE11). Totally custom, doesn't rely on native browser APIs.
|
|
6596
|
-
* 2. "
|
|
6597
|
-
*
|
|
6598
|
-
*
|
|
6599
|
-
* constructor, which allows us to have completely customized functionality for different components.
|
|
6824
|
+
* 2. "Upgradable constructor" custom element. This allows us to have two LWC components with the same tag name,
|
|
6825
|
+
* via a trick: every custom element constructor we define in the registry is basically the same. It's essentially
|
|
6826
|
+
* a dummy `class extends HTMLElement` that accepts an `upgradeCallback` in its constructor ("upgradable
|
|
6827
|
+
* constructor"), which allows us to have completely customized functionality for different components.
|
|
6600
6828
|
* 3. "Scoped" (or "pivot") custom elements. This relies on a sophisticated system that emulates the "scoped custom
|
|
6601
6829
|
* elements registry" proposal, with support for avoiding conflicts in tag names both between LWC components and
|
|
6602
6830
|
* between LWC components and third-party elements. This uses a similar trick to #2, but is much more complex
|
|
@@ -6607,8 +6835,8 @@
|
|
|
6607
6835
|
if (lwcRuntimeFlags.ENABLE_SCOPED_CUSTOM_ELEMENT_REGISTRY) {
|
|
6608
6836
|
createCustomElement = createCustomElementScoped;
|
|
6609
6837
|
} else {
|
|
6610
|
-
// use global
|
|
6611
|
-
createCustomElement =
|
|
6838
|
+
// use the global registry, with an upgradable constructor for the defined custom element
|
|
6839
|
+
createCustomElement = createCustomElementUsingUpgradableConstructor;
|
|
6612
6840
|
}
|
|
6613
6841
|
} else {
|
|
6614
6842
|
// no registry available here
|
|
@@ -6664,10 +6892,10 @@
|
|
|
6664
6892
|
|
|
6665
6893
|
var assert = /*#__PURE__*/Object.freeze({
|
|
6666
6894
|
__proto__: null,
|
|
6895
|
+
fail: fail,
|
|
6667
6896
|
invariant: invariant,
|
|
6668
|
-
isTrue: isTrue$1,
|
|
6669
6897
|
isFalse: isFalse$1,
|
|
6670
|
-
|
|
6898
|
+
isTrue: isTrue$1
|
|
6671
6899
|
});
|
|
6672
6900
|
function isUndefined(obj) {
|
|
6673
6901
|
return obj === undefined;
|
|
@@ -6675,7 +6903,7 @@
|
|
|
6675
6903
|
function isNull(obj) {
|
|
6676
6904
|
return obj === null;
|
|
6677
6905
|
}
|
|
6678
|
-
/** version: 2.
|
|
6906
|
+
/** version: 2.36.0 */
|
|
6679
6907
|
|
|
6680
6908
|
/*
|
|
6681
6909
|
* Copyright (c) 2018, salesforce.com, inc.
|
|
@@ -7228,7 +7456,7 @@
|
|
|
7228
7456
|
});
|
|
7229
7457
|
freeze(LightningElement);
|
|
7230
7458
|
seal(LightningElement.prototype);
|
|
7231
|
-
/* version: 2.
|
|
7459
|
+
/* version: 2.36.0 */
|
|
7232
7460
|
|
|
7233
7461
|
exports.LightningElement = LightningElement;
|
|
7234
7462
|
exports.__unstable__ProfilerControl = profilerControl;
|