@lwc/ssr-runtime 8.3.0 → 8.5.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/index.cjs.js +474 -44
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +469 -45
- package/dist/index.js.map +1 -1
- package/dist/lightning-element.d.ts +18 -14
- package/dist/reflection.d.ts +3 -0
- package/dist/render.d.ts +13 -4
- package/dist/styles.d.ts +4 -0
- package/dist/types.d.ts +2 -1
- package/package.json +3 -3
package/dist/index.cjs.js
CHANGED
@@ -5,8 +5,6 @@
|
|
5
5
|
|
6
6
|
Object.defineProperty(exports, '__esModule', { value: true });
|
7
7
|
|
8
|
-
var shared = require('@lwc/shared');
|
9
|
-
|
10
8
|
/*
|
11
9
|
* Copyright (c) 2024, Salesforce, Inc.
|
12
10
|
* All rights reserved.
|
@@ -118,6 +116,238 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
|
|
118
116
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
119
117
|
};
|
120
118
|
|
119
|
+
/**
|
120
|
+
* Copyright (c) 2024 Salesforce, Inc.
|
121
|
+
*/
|
122
|
+
/*
|
123
|
+
* Copyright (c) 2018, salesforce.com, inc.
|
124
|
+
* All rights reserved.
|
125
|
+
* SPDX-License-Identifier: MIT
|
126
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
127
|
+
*/
|
128
|
+
/**
|
129
|
+
*
|
130
|
+
* @param value
|
131
|
+
* @param msg
|
132
|
+
*/
|
133
|
+
|
134
|
+
/*
|
135
|
+
* Copyright (c) 2024, Salesforce, Inc.
|
136
|
+
* All rights reserved.
|
137
|
+
* SPDX-License-Identifier: MIT
|
138
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
139
|
+
*/
|
140
|
+
const {
|
141
|
+
/** Detached {@linkcode Object.assign}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign MDN Reference}. */
|
142
|
+
assign,
|
143
|
+
/** Detached {@linkcode Object.create}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create MDN Reference}. */
|
144
|
+
create,
|
145
|
+
/** Detached {@linkcode Object.defineProperties}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties MDN Reference}. */
|
146
|
+
defineProperties,
|
147
|
+
/** Detached {@linkcode Object.defineProperty}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty MDN Reference}. */
|
148
|
+
defineProperty,
|
149
|
+
/** Detached {@linkcode Object.entries}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries MDN Reference}. */
|
150
|
+
entries,
|
151
|
+
/** Detached {@linkcode Object.freeze}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze MDN Reference}. */
|
152
|
+
freeze,
|
153
|
+
/** Detached {@linkcode Object.fromEntries}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries MDN Reference}. */
|
154
|
+
fromEntries,
|
155
|
+
/** Detached {@linkcode Object.getOwnPropertyDescriptor}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor MDN Reference}. */
|
156
|
+
getOwnPropertyDescriptor,
|
157
|
+
/** Detached {@linkcode Object.getOwnPropertyDescriptors}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors MDN Reference}. */
|
158
|
+
getOwnPropertyDescriptors,
|
159
|
+
/** Detached {@linkcode Object.getOwnPropertyNames}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames MDN Reference}. */
|
160
|
+
getOwnPropertyNames,
|
161
|
+
/** Detached {@linkcode Object.getOwnPropertySymbols}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols MDN Reference}. */
|
162
|
+
getOwnPropertySymbols,
|
163
|
+
/** Detached {@linkcode Object.getPrototypeOf}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf MDN Reference}. */
|
164
|
+
getPrototypeOf,
|
165
|
+
/** Detached {@linkcode Object.hasOwnProperty}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty MDN Reference}. */
|
166
|
+
hasOwnProperty,
|
167
|
+
/** Detached {@linkcode Object.isFrozen}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen MDN Reference}. */
|
168
|
+
isFrozen,
|
169
|
+
/** Detached {@linkcode Object.keys}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys MDN Reference}. */
|
170
|
+
keys,
|
171
|
+
/** Detached {@linkcode Object.seal}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal MDN Reference}. */
|
172
|
+
seal,
|
173
|
+
/** Detached {@linkcode Object.setPrototypeOf}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf MDN Reference}. */
|
174
|
+
setPrototypeOf, } = Object;
|
175
|
+
const {
|
176
|
+
/** Detached {@linkcode Array.isArray}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray MDN Reference}. */
|
177
|
+
isArray,
|
178
|
+
/** Detached {@linkcode Array.from}; see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from MDN Reference}. */
|
179
|
+
from: ArrayFrom, } = Array;
|
180
|
+
// For some reason, JSDoc don't get picked up for multiple renamed destructured constants (even
|
181
|
+
// though it works fine for one, e.g. isArray), so comments for these are added to the export
|
182
|
+
// statement, rather than this declaration.
|
183
|
+
const { concat: ArrayConcat, copyWithin: ArrayCopyWithin, every: ArrayEvery, fill: ArrayFill, filter: ArrayFilter, find: ArrayFind, findIndex: ArrayFindIndex, includes: ArrayIncludes, indexOf: ArrayIndexOf, join: ArrayJoin, map: ArrayMap, pop: ArrayPop, push: ArrayPush, reduce: ArrayReduce, reverse: ArrayReverse, shift: ArrayShift, slice: ArraySlice, some: ArraySome, sort: ArraySort, splice: ArraySplice, unshift: ArrayUnshift, forEach, // Weird anomaly!
|
184
|
+
} = Array.prototype;
|
185
|
+
// No JSDocs here - see comment for Array.prototype
|
186
|
+
const { charAt: StringCharAt, charCodeAt: StringCharCodeAt, replace: StringReplace, split: StringSplit, slice: StringSlice, toLowerCase: StringToLowerCase, trim: StringTrim, } = String.prototype;
|
187
|
+
/**
|
188
|
+
* Determines whether the argument is `null`.
|
189
|
+
* @param obj Value to test
|
190
|
+
* @returns `true` if the value is `null`.
|
191
|
+
*/
|
192
|
+
function isNull(obj) {
|
193
|
+
return obj === null;
|
194
|
+
}
|
195
|
+
const OtS = {}.toString;
|
196
|
+
/**
|
197
|
+
* Converts the argument to a string, safely accounting for objects with "null" prototype.
|
198
|
+
* Note that `toString(null)` returns `"[object Null]"` rather than `"null"`.
|
199
|
+
* @param obj Value to convert to a string.
|
200
|
+
* @returns String representation of the value.
|
201
|
+
*/
|
202
|
+
function toString(obj) {
|
203
|
+
if (obj?.toString) {
|
204
|
+
// Arrays might hold objects with "null" prototype So using
|
205
|
+
// Array.prototype.toString directly will cause an error Iterate through
|
206
|
+
// all the items and handle individually.
|
207
|
+
if (isArray(obj)) {
|
208
|
+
// This behavior is slightly different from Array#toString:
|
209
|
+
// 1. Array#toString calls `this.join`, rather than Array#join
|
210
|
+
// Ex: arr = []; arr.join = () => 1; arr.toString() === 1; toString(arr) === ''
|
211
|
+
// 2. Array#toString delegates to Object#toString if `this.join` is not a function
|
212
|
+
// Ex: arr = []; arr.join = 'no'; arr.toString() === '[object Array]; toString(arr) = ''
|
213
|
+
// 3. Array#toString converts null/undefined to ''
|
214
|
+
// Ex: arr = [null, undefined]; arr.toString() === ','; toString(arr) === '[object Null],undefined'
|
215
|
+
// 4. Array#toString converts recursive references to arrays to ''
|
216
|
+
// Ex: arr = [1]; arr.push(arr, 2); arr.toString() === '1,,2'; toString(arr) throws
|
217
|
+
// Ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toString
|
218
|
+
return ArrayJoin.call(ArrayMap.call(obj, toString), ',');
|
219
|
+
}
|
220
|
+
return obj.toString();
|
221
|
+
}
|
222
|
+
else if (typeof obj === 'object') {
|
223
|
+
// This catches null and returns "[object Null]". Weird, but kept for backwards compatibility.
|
224
|
+
return OtS.call(obj);
|
225
|
+
}
|
226
|
+
else {
|
227
|
+
return String(obj);
|
228
|
+
}
|
229
|
+
}
|
230
|
+
|
231
|
+
/*
|
232
|
+
* Copyright (c) 2018, salesforce.com, inc.
|
233
|
+
* All rights reserved.
|
234
|
+
* SPDX-License-Identifier: MIT
|
235
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
236
|
+
*/
|
237
|
+
/**
|
238
|
+
* According to the following list, there are 48 aria attributes of which two (ariaDropEffect and
|
239
|
+
* ariaGrabbed) are deprecated:
|
240
|
+
* https://www.w3.org/TR/wai-aria-1.1/#x6-6-definitions-of-states-and-properties-all-aria-attributes
|
241
|
+
*
|
242
|
+
* The above list of 46 aria attributes is consistent with the following resources:
|
243
|
+
* https://github.com/w3c/aria/pull/708/files#diff-eacf331f0ffc35d4b482f1d15a887d3bR11060
|
244
|
+
* https://wicg.github.io/aom/spec/aria-reflection.html
|
245
|
+
*
|
246
|
+
* NOTE: If you update this list, please update test files that implicitly reference this list!
|
247
|
+
* Searching the codebase for `aria-flowto` and `ariaFlowTo` should be good enough to find all usages.
|
248
|
+
*/
|
249
|
+
const AriaPropertyNames = [
|
250
|
+
'ariaActiveDescendant',
|
251
|
+
'ariaAtomic',
|
252
|
+
'ariaAutoComplete',
|
253
|
+
'ariaBusy',
|
254
|
+
'ariaChecked',
|
255
|
+
'ariaColCount',
|
256
|
+
'ariaColIndex',
|
257
|
+
'ariaColIndexText',
|
258
|
+
'ariaColSpan',
|
259
|
+
'ariaControls',
|
260
|
+
'ariaCurrent',
|
261
|
+
'ariaDescribedBy',
|
262
|
+
'ariaDescription',
|
263
|
+
'ariaDetails',
|
264
|
+
'ariaDisabled',
|
265
|
+
'ariaErrorMessage',
|
266
|
+
'ariaExpanded',
|
267
|
+
'ariaFlowTo',
|
268
|
+
'ariaHasPopup',
|
269
|
+
'ariaHidden',
|
270
|
+
'ariaInvalid',
|
271
|
+
'ariaKeyShortcuts',
|
272
|
+
'ariaLabel',
|
273
|
+
'ariaLabelledBy',
|
274
|
+
'ariaLevel',
|
275
|
+
'ariaLive',
|
276
|
+
'ariaModal',
|
277
|
+
'ariaMultiLine',
|
278
|
+
'ariaMultiSelectable',
|
279
|
+
'ariaOrientation',
|
280
|
+
'ariaOwns',
|
281
|
+
'ariaPlaceholder',
|
282
|
+
'ariaPosInSet',
|
283
|
+
'ariaPressed',
|
284
|
+
'ariaReadOnly',
|
285
|
+
'ariaRelevant',
|
286
|
+
'ariaRequired',
|
287
|
+
'ariaRoleDescription',
|
288
|
+
'ariaRowCount',
|
289
|
+
'ariaRowIndex',
|
290
|
+
'ariaRowIndexText',
|
291
|
+
'ariaRowSpan',
|
292
|
+
'ariaSelected',
|
293
|
+
'ariaSetSize',
|
294
|
+
'ariaSort',
|
295
|
+
'ariaValueMax',
|
296
|
+
'ariaValueMin',
|
297
|
+
'ariaValueNow',
|
298
|
+
'ariaValueText',
|
299
|
+
'ariaBrailleLabel',
|
300
|
+
'ariaBrailleRoleDescription',
|
301
|
+
'role',
|
302
|
+
];
|
303
|
+
const { AriaAttrNameToPropNameMap, AriaPropNameToAttrNameMap } = /*@__PURE__*/ (() => {
|
304
|
+
const AriaAttrNameToPropNameMap = create(null);
|
305
|
+
const AriaPropNameToAttrNameMap = create(null);
|
306
|
+
// Synthetic creation of all AOM property descriptors for Custom Elements
|
307
|
+
forEach.call(AriaPropertyNames, (propName) => {
|
308
|
+
const attrName = StringToLowerCase.call(StringReplace.call(propName, /^aria/, () => 'aria-'));
|
309
|
+
AriaAttrNameToPropNameMap[attrName] = propName;
|
310
|
+
AriaPropNameToAttrNameMap[propName] = attrName;
|
311
|
+
});
|
312
|
+
return { AriaAttrNameToPropNameMap, AriaPropNameToAttrNameMap };
|
313
|
+
})();
|
314
|
+
|
315
|
+
/*
|
316
|
+
* Copyright (c) 2020, salesforce.com, inc.
|
317
|
+
* All rights reserved.
|
318
|
+
* SPDX-License-Identifier: MIT
|
319
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
320
|
+
*/
|
321
|
+
const ESCAPED_CHARS = {
|
322
|
+
'"': '"',
|
323
|
+
"'": ''',
|
324
|
+
'<': '<',
|
325
|
+
'>': '>',
|
326
|
+
'&': '&',
|
327
|
+
};
|
328
|
+
/**
|
329
|
+
*
|
330
|
+
* @param str
|
331
|
+
* @param attrMode
|
332
|
+
*/
|
333
|
+
function htmlEscape(str, attrMode = false) {
|
334
|
+
const searchValue = attrMode ? /["&]/g : /["'<>&]/g;
|
335
|
+
return str.replace(searchValue, (char) => ESCAPED_CHARS[char]);
|
336
|
+
}
|
337
|
+
function flattenStylesheets(stylesheets) {
|
338
|
+
const list = [];
|
339
|
+
for (const stylesheet of stylesheets) {
|
340
|
+
if (!isArray(stylesheet)) {
|
341
|
+
list.push(stylesheet);
|
342
|
+
}
|
343
|
+
else {
|
344
|
+
list.push(...flattenStylesheets(stylesheet));
|
345
|
+
}
|
346
|
+
}
|
347
|
+
return list;
|
348
|
+
}
|
349
|
+
/** version: 8.5.0 */
|
350
|
+
|
121
351
|
/*
|
122
352
|
* Copyright (c) 2024, Salesforce, Inc.
|
123
353
|
* All rights reserved.
|
@@ -159,41 +389,169 @@ class MutationTracker {
|
|
159
389
|
_MutationTracker_enabledSet = new WeakMap(), _MutationTracker_mutationMap = new WeakMap();
|
160
390
|
const mutationTracker = new MutationTracker();
|
161
391
|
|
392
|
+
/*
|
393
|
+
* Copyright (c) 2024, Salesforce, Inc.
|
394
|
+
* All rights reserved.
|
395
|
+
* SPDX-License-Identifier: MIT
|
396
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
397
|
+
*/
|
398
|
+
/**
|
399
|
+
* Map of global attribute or ARIA attribute to the corresponding property name.
|
400
|
+
* Not all global attributes are included, just those from `HTMLElementTheGoodParts`.
|
401
|
+
*/
|
402
|
+
const attrsToProps = assign(create(null), {
|
403
|
+
accesskey: 'accessKey',
|
404
|
+
dir: 'dir',
|
405
|
+
draggable: 'draggable',
|
406
|
+
hidden: 'hidden',
|
407
|
+
id: 'id',
|
408
|
+
lang: 'lang',
|
409
|
+
spellcheck: 'spellcheck',
|
410
|
+
tabindex: 'tabIndex',
|
411
|
+
title: 'title',
|
412
|
+
...AriaAttrNameToPropNameMap,
|
413
|
+
});
|
414
|
+
/**
|
415
|
+
* Descriptor for IDL attribute reflections that merely reflect the string, e.g. `title`.
|
416
|
+
*/
|
417
|
+
const stringDescriptor = (attrName) => ({
|
418
|
+
configurable: true,
|
419
|
+
enumerable: true,
|
420
|
+
get() {
|
421
|
+
return this.getAttribute(attrName);
|
422
|
+
},
|
423
|
+
set(newValue) {
|
424
|
+
const currentValue = this.getAttribute(attrName);
|
425
|
+
const normalizedValue = String(newValue);
|
426
|
+
if (normalizedValue !== currentValue) {
|
427
|
+
this.setAttribute(attrName, normalizedValue);
|
428
|
+
}
|
429
|
+
},
|
430
|
+
});
|
431
|
+
/** Descriptor for a boolean that checks for `attr="true"` or `attr="false"`, e.g. `spellcheck` and `draggable`. */
|
432
|
+
const explicitBooleanDescriptor = (attrName, defaultValue) => ({
|
433
|
+
configurable: true,
|
434
|
+
enumerable: true,
|
435
|
+
get() {
|
436
|
+
const value = this.getAttribute(attrName);
|
437
|
+
return value === null ? defaultValue : value === String(defaultValue);
|
438
|
+
},
|
439
|
+
set(newValue) {
|
440
|
+
const currentValue = this.getAttribute(attrName);
|
441
|
+
const normalizedValue = String(Boolean(newValue));
|
442
|
+
if (normalizedValue !== currentValue) {
|
443
|
+
this.setAttribute(attrName, normalizedValue);
|
444
|
+
}
|
445
|
+
},
|
446
|
+
});
|
447
|
+
/**
|
448
|
+
* Descriptor for a "true" boolean attribute that checks solely for presence, e.g. `hidden`.
|
449
|
+
*/
|
450
|
+
const booleanAttributeDescriptor = (attrName) => ({
|
451
|
+
configurable: true,
|
452
|
+
enumerable: true,
|
453
|
+
get() {
|
454
|
+
return this.hasAttribute(attrName);
|
455
|
+
},
|
456
|
+
set(newValue) {
|
457
|
+
const hasAttribute = this.hasAttribute(attrName);
|
458
|
+
if (newValue) {
|
459
|
+
if (!hasAttribute) {
|
460
|
+
this.setAttribute(attrName, '');
|
461
|
+
}
|
462
|
+
}
|
463
|
+
else {
|
464
|
+
if (hasAttribute) {
|
465
|
+
this.removeAttribute(attrName);
|
466
|
+
}
|
467
|
+
}
|
468
|
+
},
|
469
|
+
});
|
470
|
+
/**
|
471
|
+
* Descriptor for ARIA reflections, e.g. `ariaLabel` and `role`.
|
472
|
+
*/
|
473
|
+
const ariaDescriptor = (attrName) => ({
|
474
|
+
configurable: true,
|
475
|
+
enumerable: true,
|
476
|
+
get() {
|
477
|
+
return this.getAttribute(attrName);
|
478
|
+
},
|
479
|
+
set(newValue) {
|
480
|
+
const currentValue = this.getAttribute(attrName);
|
481
|
+
if (newValue !== currentValue) {
|
482
|
+
// TODO [#3284]: According to the spec, IDL nullable type values
|
483
|
+
// (null and undefined) should remove the attribute; however, we
|
484
|
+
// only do so in the case of null for historical reasons.
|
485
|
+
if (isNull(newValue)) {
|
486
|
+
this.removeAttribute(attrName);
|
487
|
+
}
|
488
|
+
else {
|
489
|
+
this.setAttribute(attrName, toString(newValue));
|
490
|
+
}
|
491
|
+
}
|
492
|
+
},
|
493
|
+
});
|
494
|
+
function reflectAttrToProp(instance, attrName, attrValue) {
|
495
|
+
const reflectedPropName = attrsToProps[attrName];
|
496
|
+
// If it is a reflected property and it was not overridden by the instance
|
497
|
+
if (reflectedPropName && !hasOwnProperty.call(instance, reflectedPropName)) {
|
498
|
+
const currentValue = instance[reflectedPropName];
|
499
|
+
if (currentValue !== attrValue) {
|
500
|
+
instance[reflectedPropName] = attrValue;
|
501
|
+
}
|
502
|
+
}
|
503
|
+
}
|
504
|
+
const descriptors = {
|
505
|
+
accessKey: stringDescriptor('accesskey'),
|
506
|
+
dir: stringDescriptor('dir'),
|
507
|
+
draggable: explicitBooleanDescriptor('draggable', true),
|
508
|
+
hidden: booleanAttributeDescriptor('hidden'),
|
509
|
+
id: stringDescriptor('id'),
|
510
|
+
lang: stringDescriptor('lang'),
|
511
|
+
spellcheck: explicitBooleanDescriptor('spellcheck', false),
|
512
|
+
tabIndex: {
|
513
|
+
get() {
|
514
|
+
const str = this.getAttribute('tabindex');
|
515
|
+
const num = Number(str);
|
516
|
+
return isFinite(num) ? Math.trunc(num) : -1;
|
517
|
+
},
|
518
|
+
set(newValue) {
|
519
|
+
const currentValue = this.getAttribute('tabindex');
|
520
|
+
const num = Number(newValue);
|
521
|
+
const normalizedValue = isFinite(num) ? String(Math.trunc(num)) : '0';
|
522
|
+
if (normalizedValue !== currentValue) {
|
523
|
+
this.setAttribute('tabindex', toString(newValue));
|
524
|
+
}
|
525
|
+
},
|
526
|
+
},
|
527
|
+
title: stringDescriptor('title'),
|
528
|
+
};
|
529
|
+
// Add descriptors for ARIA attributes
|
530
|
+
for (const [attrName, propName] of entries(AriaAttrNameToPropNameMap)) {
|
531
|
+
descriptors[propName] = ariaDescriptor(attrName);
|
532
|
+
}
|
533
|
+
|
162
534
|
/*
|
163
535
|
* Copyright (c) 2024, salesforce.com, inc.
|
164
536
|
* All rights reserved.
|
165
537
|
* SPDX-License-Identifier: MIT
|
166
538
|
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
167
539
|
*/
|
168
|
-
var
|
540
|
+
var _LightningElement_attrs, _LightningElement_classList;
|
169
541
|
const SYMBOL__SET_INTERNALS = Symbol('set-internals');
|
542
|
+
const SYMBOL__GENERATE_MARKUP = Symbol('generate-markup');
|
170
543
|
class LightningElement {
|
171
544
|
constructor(propsAvailableAtConstruction) {
|
172
|
-
_LightningElement_instances.add(this);
|
173
545
|
this.isConnected = false;
|
174
546
|
this.className = '';
|
175
547
|
_LightningElement_attrs.set(this, void 0);
|
176
548
|
_LightningElement_classList.set(this, null);
|
177
|
-
|
549
|
+
assign(this, propsAvailableAtConstruction);
|
178
550
|
}
|
179
|
-
[(_LightningElement_attrs = new WeakMap(), _LightningElement_classList = new WeakMap(),
|
180
|
-
Object.assign(this, props);
|
551
|
+
[(_LightningElement_attrs = new WeakMap(), _LightningElement_classList = new WeakMap(), SYMBOL__SET_INTERNALS)](props, attrs) {
|
181
552
|
__classPrivateFieldSet(this, _LightningElement_attrs, attrs, "f");
|
182
|
-
|
183
|
-
|
184
|
-
for (const reflectedPropName of reflectedProps) {
|
185
|
-
Object.defineProperty(this, reflectedPropName, {
|
186
|
-
get() {
|
187
|
-
return props[reflectedPropName] ?? null;
|
188
|
-
},
|
189
|
-
set(newValue) {
|
190
|
-
props[reflectedPropName] = newValue;
|
191
|
-
mutationTracker.add(this, shared.htmlPropertyToAttribute(reflectedPropName));
|
192
|
-
},
|
193
|
-
enumerable: true,
|
194
|
-
});
|
195
|
-
}
|
196
|
-
Object.defineProperty(this, 'className', {
|
553
|
+
assign(this, props);
|
554
|
+
defineProperty(this, 'className', {
|
197
555
|
get() {
|
198
556
|
return props.class ?? '';
|
199
557
|
},
|
@@ -211,29 +569,29 @@ class LightningElement {
|
|
211
569
|
return (__classPrivateFieldSet(this, _LightningElement_classList, new ClassList(this), "f"));
|
212
570
|
}
|
213
571
|
setAttribute(attrName, attrValue) {
|
214
|
-
|
572
|
+
const normalizedName = StringToLowerCase.call(toString(attrName));
|
573
|
+
const normalizedValue = String(attrValue);
|
574
|
+
__classPrivateFieldGet(this, _LightningElement_attrs, "f")[normalizedName] = normalizedValue;
|
575
|
+
reflectAttrToProp(this, normalizedName, normalizedValue);
|
576
|
+
mutationTracker.add(this, normalizedName);
|
215
577
|
}
|
216
578
|
getAttribute(attrName) {
|
217
|
-
|
218
|
-
|
579
|
+
const normalizedName = StringToLowerCase.call(toString(attrName));
|
580
|
+
if (hasOwnProperty.call(__classPrivateFieldGet(this, _LightningElement_attrs, "f"), normalizedName)) {
|
581
|
+
return __classPrivateFieldGet(this, _LightningElement_attrs, "f")[normalizedName];
|
219
582
|
}
|
220
583
|
return null;
|
221
584
|
}
|
222
585
|
hasAttribute(attrName) {
|
223
|
-
|
586
|
+
const normalizedName = StringToLowerCase.call(toString(attrName));
|
587
|
+
return hasOwnProperty.call(__classPrivateFieldGet(this, _LightningElement_attrs, "f"), normalizedName);
|
224
588
|
}
|
225
589
|
removeAttribute(attrName) {
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
}
|
232
|
-
else {
|
233
|
-
// This interprets the removal of a non-existing attribute as an
|
234
|
-
// attribute mutation. We may want to revisit this.
|
235
|
-
mutationTracker.add(this, attrName);
|
236
|
-
}
|
590
|
+
const normalizedName = StringToLowerCase.call(toString(attrName));
|
591
|
+
delete __classPrivateFieldGet(this, _LightningElement_attrs, "f")[normalizedName];
|
592
|
+
reflectAttrToProp(this, normalizedName, null);
|
593
|
+
// Track mutations for removal of non-existing attributes
|
594
|
+
mutationTracker.add(this, normalizedName);
|
237
595
|
}
|
238
596
|
addEventListener(_type, _listener, _options) {
|
239
597
|
// noop
|
@@ -309,10 +667,7 @@ class LightningElement {
|
|
309
667
|
throw new Error('Method "setAttributeNS" not implemented.');
|
310
668
|
}
|
311
669
|
}
|
312
|
-
|
313
|
-
__classPrivateFieldGet(this, _LightningElement_attrs, "f")[attrName] = attrValue;
|
314
|
-
mutationTracker.add(this, attrName);
|
315
|
-
};
|
670
|
+
defineProperties(LightningElement.prototype, descriptors);
|
316
671
|
|
317
672
|
/*
|
318
673
|
* Copyright (c) 2024, salesforce.com, inc.
|
@@ -336,15 +691,54 @@ function* renderAttrs(instance, attrs) {
|
|
336
691
|
}
|
337
692
|
yield mutationTracker.renderMutatedAttrs(instance);
|
338
693
|
}
|
694
|
+
function renderAttrsNoYield(emit, instance, attrs) {
|
695
|
+
if (!attrs) {
|
696
|
+
return;
|
697
|
+
}
|
698
|
+
for (const attrName of Object.getOwnPropertyNames(attrs)) {
|
699
|
+
const attrVal = attrs[attrName];
|
700
|
+
if (typeof attrVal === 'string') {
|
701
|
+
emit(attrVal === '' ? ` ${attrName}` : ` ${attrName}="${escapeAttrVal(attrVal)}"`);
|
702
|
+
}
|
703
|
+
else if (attrVal === null) {
|
704
|
+
emit('');
|
705
|
+
}
|
706
|
+
}
|
707
|
+
emit(mutationTracker.renderMutatedAttrs(instance));
|
708
|
+
}
|
339
709
|
function* fallbackTmpl(_props, _attrs, _slotted, Cmp, _instance) {
|
340
710
|
if (Cmp.renderMode !== 'light') {
|
341
711
|
yield '<template shadowrootmode="open"></template>';
|
342
712
|
}
|
343
713
|
}
|
344
|
-
|
714
|
+
function fallbackTmplNoYield(emit, _props, _attrs, _slotted, Cmp, _instance) {
|
715
|
+
if (Cmp.renderMode !== 'light') {
|
716
|
+
emit('<template shadowrootmode="open"></template>');
|
717
|
+
}
|
718
|
+
}
|
719
|
+
async function serverSideRenderComponent(tagName, Component, props = {}, mode = 'asyncYield') {
|
720
|
+
if (typeof tagName !== 'string') {
|
721
|
+
throw new Error(`tagName must be a string, found: ${tagName}`);
|
722
|
+
}
|
723
|
+
// TODO [#4726]: remove `generateMarkup` export
|
724
|
+
const generateMarkup = SYMBOL__GENERATE_MARKUP in Component ? Component[SYMBOL__GENERATE_MARKUP] : Component;
|
345
725
|
let markup = '';
|
346
|
-
|
726
|
+
const emit = (segment) => {
|
347
727
|
markup += segment;
|
728
|
+
};
|
729
|
+
if (mode === 'asyncYield') {
|
730
|
+
for await (const segment of generateMarkup(tagName, props, null, null)) {
|
731
|
+
markup += segment;
|
732
|
+
}
|
733
|
+
}
|
734
|
+
else if (mode === 'async') {
|
735
|
+
await generateMarkup(emit, tagName, props, null, null);
|
736
|
+
}
|
737
|
+
else if (mode === 'sync') {
|
738
|
+
generateMarkup(emit, tagName, props, null, null);
|
739
|
+
}
|
740
|
+
else {
|
741
|
+
throw new Error(`Invalid mode: ${mode}`);
|
348
742
|
}
|
349
743
|
return markup;
|
350
744
|
}
|
@@ -655,16 +1049,50 @@ function validateStyleTextContents(contents) {
|
|
655
1049
|
}
|
656
1050
|
}
|
657
1051
|
|
1052
|
+
/*
|
1053
|
+
* Copyright (c) 2024, Salesforce, Inc.
|
1054
|
+
* All rights reserved.
|
1055
|
+
* SPDX-License-Identifier: MIT
|
1056
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
|
1057
|
+
*/
|
1058
|
+
function hasScopedStaticStylesheets(Component) {
|
1059
|
+
const { stylesheets } = Component;
|
1060
|
+
if (stylesheets) {
|
1061
|
+
return flattenStylesheets(stylesheets).some((stylesheet) => stylesheet.$scoped$);
|
1062
|
+
}
|
1063
|
+
return false;
|
1064
|
+
}
|
1065
|
+
function renderStylesheets(stylesheets, scopeToken, Component, hasScopedTemplateStyles) {
|
1066
|
+
const hasAnyScopedStyles = hasScopedTemplateStyles || hasScopedStaticStylesheets(Component);
|
1067
|
+
let result = '';
|
1068
|
+
const truthyStylesheets = stylesheets.filter(Boolean);
|
1069
|
+
for (const stylesheet of flattenStylesheets(truthyStylesheets)) {
|
1070
|
+
// TODO [#2869]: `<style>`s should not have scope token classes
|
1071
|
+
result += `<style${hasAnyScopedStyles ? ` class="${scopeToken}"` : ''} type="text/css">`;
|
1072
|
+
const token = stylesheet.$scoped$ ? scopeToken : undefined;
|
1073
|
+
const useActualHostSelector = !stylesheet.$scoped$ || Component.renderMode !== 'light';
|
1074
|
+
const useNativeDirPseudoclass = true;
|
1075
|
+
const styleContents = stylesheet(token, useActualHostSelector, useNativeDirPseudoclass);
|
1076
|
+
validateStyleTextContents(styleContents);
|
1077
|
+
result += styleContents + '</style>';
|
1078
|
+
}
|
1079
|
+
return result;
|
1080
|
+
}
|
1081
|
+
|
658
1082
|
exports.ClassList = ClassList;
|
659
1083
|
exports.LightningElement = LightningElement;
|
1084
|
+
exports.SYMBOL__GENERATE_MARKUP = SYMBOL__GENERATE_MARKUP;
|
660
1085
|
exports.SYMBOL__SET_INTERNALS = SYMBOL__SET_INTERNALS;
|
661
1086
|
exports.api = api;
|
662
1087
|
exports.createContextProvider = createContextProvider;
|
663
1088
|
exports.createElement = createElement;
|
664
1089
|
exports.fallbackTmpl = fallbackTmpl;
|
1090
|
+
exports.fallbackTmplNoYield = fallbackTmplNoYield;
|
665
1091
|
exports.freezeTemplate = freezeTemplate;
|
666
1092
|
exports.getComponentDef = getComponentDef;
|
1093
|
+
exports.hasScopedStaticStylesheets = hasScopedStaticStylesheets;
|
667
1094
|
exports.hot = hot;
|
1095
|
+
exports.htmlEscape = htmlEscape;
|
668
1096
|
exports.isComponentConstructor = isComponentConstructor;
|
669
1097
|
exports.mutationTracker = mutationTracker;
|
670
1098
|
exports.parseFragment = parseFragment;
|
@@ -674,7 +1102,9 @@ exports.registerComponent = registerComponent;
|
|
674
1102
|
exports.registerDecorators = registerDecorators;
|
675
1103
|
exports.registerTemplate = registerTemplate;
|
676
1104
|
exports.renderAttrs = renderAttrs;
|
1105
|
+
exports.renderAttrsNoYield = renderAttrsNoYield;
|
677
1106
|
exports.renderComponent = serverSideRenderComponent;
|
1107
|
+
exports.renderStylesheets = renderStylesheets;
|
678
1108
|
exports.renderer = renderer;
|
679
1109
|
exports.sanitizeAttribute = sanitizeAttribute;
|
680
1110
|
exports.serverSideRenderComponent = serverSideRenderComponent;
|
@@ -689,5 +1119,5 @@ exports.track = track;
|
|
689
1119
|
exports.unwrap = unwrap;
|
690
1120
|
exports.validateStyleTextContents = validateStyleTextContents;
|
691
1121
|
exports.wire = wire;
|
692
|
-
/** version: 8.
|
1122
|
+
/** version: 8.5.0 */
|
693
1123
|
//# sourceMappingURL=index.cjs.js.map
|