@lwc/ssr-runtime 8.3.0 → 8.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|