lwc 2.5.8 → 2.5.9

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.
Files changed (35) hide show
  1. package/dist/engine-dom/esm/es2017/engine-dom.js +141 -80
  2. package/dist/engine-dom/iife/es2017/engine-dom.js +141 -80
  3. package/dist/engine-dom/iife/es2017/engine-dom.min.js +2 -2
  4. package/dist/engine-dom/iife/es2017/engine-dom_debug.js +124 -76
  5. package/dist/engine-dom/iife/es5/engine-dom.js +150 -85
  6. package/dist/engine-dom/iife/es5/engine-dom.min.js +2 -2
  7. package/dist/engine-dom/iife/es5/engine-dom_debug.js +133 -81
  8. package/dist/engine-dom/umd/es2017/engine-dom.js +141 -80
  9. package/dist/engine-dom/umd/es2017/engine-dom.min.js +2 -2
  10. package/dist/engine-dom/umd/es2017/engine-dom_debug.js +124 -76
  11. package/dist/engine-dom/umd/es5/engine-dom.js +150 -85
  12. package/dist/engine-dom/umd/es5/engine-dom.min.js +2 -2
  13. package/dist/engine-dom/umd/es5/engine-dom_debug.js +133 -81
  14. package/dist/engine-server/commonjs/es2017/engine-server.js +141 -80
  15. package/dist/engine-server/commonjs/es2017/engine-server.min.js +2 -2
  16. package/dist/engine-server/esm/es2017/engine-server.js +141 -80
  17. package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js +3 -3
  18. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js +3 -3
  19. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js +3 -3
  20. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js +3 -3
  21. package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js +3 -3
  22. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js +3 -3
  23. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js +3 -3
  24. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js +3 -3
  25. package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js +3 -3
  26. package/dist/wire-service/esm/es2017/wire-service.js +2 -2
  27. package/dist/wire-service/iife/es2017/wire-service.js +2 -2
  28. package/dist/wire-service/iife/es2017/wire-service_debug.js +2 -2
  29. package/dist/wire-service/iife/es5/wire-service.js +2 -2
  30. package/dist/wire-service/iife/es5/wire-service_debug.js +2 -2
  31. package/dist/wire-service/umd/es2017/wire-service.js +2 -2
  32. package/dist/wire-service/umd/es2017/wire-service_debug.js +2 -2
  33. package/dist/wire-service/umd/es5/wire-service.js +2 -2
  34. package/dist/wire-service/umd/es5/wire-service_debug.js +2 -2
  35. package/package.json +8 -8
@@ -69,7 +69,7 @@ const {
69
69
  find: ArrayFind,
70
70
  indexOf: ArrayIndexOf,
71
71
  join: ArrayJoin,
72
- map: ArrayMap$1,
72
+ map: ArrayMap,
73
73
  push: ArrayPush$1,
74
74
  reduce: ArrayReduce,
75
75
  reverse: ArrayReverse,
@@ -136,7 +136,7 @@ function toString$1(obj) {
136
136
  // Array.prototype.toString directly will cause an error Iterate through
137
137
  // all the items and handle individually.
138
138
  if (isArray$1(obj)) {
139
- return ArrayJoin.call(ArrayMap$1.call(obj, toString$1), ',');
139
+ return ArrayJoin.call(ArrayMap.call(obj, toString$1), ',');
140
140
  }
141
141
 
142
142
  return obj.toString();
@@ -335,7 +335,7 @@ function htmlPropertyToAttribute(propName) {
335
335
  CACHED_PROPERTY_ATTRIBUTE_MAPPING.set(propName, attributeName);
336
336
  return attributeName;
337
337
  }
338
- /** version: 2.5.8 */
338
+ /** version: 2.5.9 */
339
339
 
340
340
  /*
341
341
  * Copyright (c) 2020, salesforce.com, inc.
@@ -456,7 +456,7 @@ function setFeatureFlagForTest(name, value) {
456
456
  setFeatureFlag(name, value);
457
457
  }
458
458
  }
459
- /** version: 2.5.8 */
459
+ /** version: 2.5.9 */
460
460
 
461
461
  /* proxy-compat-disable */
462
462
 
@@ -1906,7 +1906,6 @@ const {
1906
1906
  getPrototypeOf,
1907
1907
  create: ObjectCreate,
1908
1908
  defineProperty: ObjectDefineProperty,
1909
- defineProperties: ObjectDefineProperties,
1910
1909
  isExtensible,
1911
1910
  getOwnPropertyDescriptor,
1912
1911
  getOwnPropertyNames,
@@ -1916,8 +1915,7 @@ const {
1916
1915
  } = Object;
1917
1916
  const {
1918
1917
  push: ArrayPush,
1919
- concat: ArrayConcat,
1920
- map: ArrayMap
1918
+ concat: ArrayConcat
1921
1919
  } = Array.prototype;
1922
1920
  const OtS = {}.toString;
1923
1921
 
@@ -1982,7 +1980,9 @@ class BaseProxyHandler {
1982
1980
  // but it will always be compatible with the previous descriptor
1983
1981
  // to preserve the object invariants, which makes these lines safe.
1984
1982
 
1985
- const originalDescriptor = getOwnPropertyDescriptor(originalTarget, key);
1983
+ const originalDescriptor = getOwnPropertyDescriptor(originalTarget, key); // TODO: it should be impossible for the originalDescriptor to ever be undefined, this `if` can be removed
1984
+
1985
+ /* istanbul ignore else */
1986
1986
 
1987
1987
  if (!isUndefined(originalDescriptor)) {
1988
1988
  const wrappedDesc = this.wrapDescriptor(originalDescriptor);
@@ -2010,11 +2010,17 @@ class BaseProxyHandler {
2010
2010
 
2011
2011
  preventExtensions(shadowTarget);
2012
2012
  } // Shared Traps
2013
+ // TODO: apply() is never called
2014
+
2015
+ /* istanbul ignore next */
2013
2016
 
2014
2017
 
2015
2018
  apply(shadowTarget, thisArg, argArray) {
2016
2019
  /* No op */
2017
- }
2020
+ } // TODO: construct() is never called
2021
+
2022
+ /* istanbul ignore next */
2023
+
2018
2024
 
2019
2025
  construct(shadowTarget, argArray, newTarget) {
2020
2026
  /* No op */
@@ -2127,8 +2133,8 @@ class BaseProxyHandler {
2127
2133
 
2128
2134
  }
2129
2135
 
2130
- const getterMap = new WeakMap();
2131
- const setterMap = new WeakMap();
2136
+ const getterMap$1 = new WeakMap();
2137
+ const setterMap$1 = new WeakMap();
2132
2138
  const reverseGetterMap = new WeakMap();
2133
2139
  const reverseSetterMap = new WeakMap();
2134
2140
 
@@ -2138,7 +2144,7 @@ class ReactiveProxyHandler extends BaseProxyHandler {
2138
2144
  }
2139
2145
 
2140
2146
  wrapGetter(originalGet) {
2141
- const wrappedGetter = getterMap.get(originalGet);
2147
+ const wrappedGetter = getterMap$1.get(originalGet);
2142
2148
 
2143
2149
  if (!isUndefined(wrappedGetter)) {
2144
2150
  return wrappedGetter;
@@ -2151,13 +2157,13 @@ class ReactiveProxyHandler extends BaseProxyHandler {
2151
2157
  return handler.wrapValue(originalGet.call(unwrap$1(this)));
2152
2158
  };
2153
2159
 
2154
- getterMap.set(originalGet, get);
2160
+ getterMap$1.set(originalGet, get);
2155
2161
  reverseGetterMap.set(get, originalGet);
2156
2162
  return get;
2157
2163
  }
2158
2164
 
2159
2165
  wrapSetter(originalSet) {
2160
- const wrappedSetter = setterMap.get(originalSet);
2166
+ const wrappedSetter = setterMap$1.get(originalSet);
2161
2167
 
2162
2168
  if (!isUndefined(wrappedSetter)) {
2163
2169
  return wrappedSetter;
@@ -2168,7 +2174,7 @@ class ReactiveProxyHandler extends BaseProxyHandler {
2168
2174
  originalSet.call(unwrap$1(this), unwrap$1(v));
2169
2175
  };
2170
2176
 
2171
- setterMap.set(originalSet, set);
2177
+ setterMap$1.set(originalSet, set);
2172
2178
  reverseSetterMap.set(set, originalSet);
2173
2179
  return set;
2174
2180
  }
@@ -2209,7 +2215,7 @@ class ReactiveProxyHandler extends BaseProxyHandler {
2209
2215
  return unwrap$1(redGet.call(handler.wrapValue(this)));
2210
2216
  };
2211
2217
 
2212
- getterMap.set(get, redGet);
2218
+ getterMap$1.set(get, redGet);
2213
2219
  reverseGetterMap.set(redGet, get);
2214
2220
  return get;
2215
2221
  }
@@ -2228,7 +2234,7 @@ class ReactiveProxyHandler extends BaseProxyHandler {
2228
2234
  redSet.call(handler.wrapValue(this), handler.wrapValue(v));
2229
2235
  };
2230
2236
 
2231
- setterMap.set(set, redSet);
2237
+ setterMap$1.set(set, redSet);
2232
2238
  reverseSetterMap.set(redSet, set);
2233
2239
  return set;
2234
2240
  }
@@ -2269,6 +2275,7 @@ class ReactiveProxyHandler extends BaseProxyHandler {
2269
2275
  }
2270
2276
 
2271
2277
  setPrototypeOf(shadowTarget, prototype) {
2278
+ /* istanbul ignore else */
2272
2279
  if (process.env.NODE_ENV !== 'production') {
2273
2280
  throw new Error(`Invalid setPrototypeOf invocation for reactive proxy ${toString(this.originalTarget)}. Prototype of reactive objects cannot be changed.`);
2274
2281
  }
@@ -2282,6 +2289,11 @@ class ReactiveProxyHandler extends BaseProxyHandler {
2282
2289
  preventExtensions(originalTarget); // if the originalTarget is a proxy itself, it might reject
2283
2290
  // the preventExtension call, in which case we should not attempt to lock down
2284
2291
  // the shadow target.
2292
+ // TODO: It should not actually be possible to reach this `if` statement.
2293
+ // If a proxy rejects extensions, then calling preventExtensions will throw an error:
2294
+ // https://codepen.io/nolanlawson-the-selector/pen/QWMOjbY
2295
+
2296
+ /* istanbul ignore if */
2285
2297
 
2286
2298
  if (isExtensible(originalTarget)) {
2287
2299
  return false;
@@ -2323,8 +2335,8 @@ class ReactiveProxyHandler extends BaseProxyHandler {
2323
2335
 
2324
2336
  }
2325
2337
 
2326
- const getterMap$1 = new WeakMap();
2327
- const setterMap$1 = new WeakMap();
2338
+ const getterMap = new WeakMap();
2339
+ const setterMap = new WeakMap();
2328
2340
 
2329
2341
  class ReadOnlyHandler extends BaseProxyHandler {
2330
2342
  wrapValue(value) {
@@ -2332,7 +2344,7 @@ class ReadOnlyHandler extends BaseProxyHandler {
2332
2344
  }
2333
2345
 
2334
2346
  wrapGetter(originalGet) {
2335
- const wrappedGetter = getterMap$1.get(originalGet);
2347
+ const wrappedGetter = getterMap.get(originalGet);
2336
2348
 
2337
2349
  if (!isUndefined(wrappedGetter)) {
2338
2350
  return wrappedGetter;
@@ -2345,12 +2357,12 @@ class ReadOnlyHandler extends BaseProxyHandler {
2345
2357
  return handler.wrapValue(originalGet.call(unwrap$1(this)));
2346
2358
  };
2347
2359
 
2348
- getterMap$1.set(originalGet, get);
2360
+ getterMap.set(originalGet, get);
2349
2361
  return get;
2350
2362
  }
2351
2363
 
2352
2364
  wrapSetter(originalSet) {
2353
- const wrappedSetter = setterMap$1.get(originalSet);
2365
+ const wrappedSetter = setterMap.get(originalSet);
2354
2366
 
2355
2367
  if (!isUndefined(wrappedSetter)) {
2356
2368
  return wrappedSetter;
@@ -2359,6 +2371,7 @@ class ReadOnlyHandler extends BaseProxyHandler {
2359
2371
  const handler = this;
2360
2372
 
2361
2373
  const set = function (v) {
2374
+ /* istanbul ignore else */
2362
2375
  if (process.env.NODE_ENV !== 'production') {
2363
2376
  const {
2364
2377
  originalTarget
@@ -2367,33 +2380,41 @@ class ReadOnlyHandler extends BaseProxyHandler {
2367
2380
  }
2368
2381
  };
2369
2382
 
2370
- setterMap$1.set(originalSet, set);
2383
+ setterMap.set(originalSet, set);
2371
2384
  return set;
2372
2385
  }
2373
2386
 
2374
2387
  set(shadowTarget, key, value) {
2388
+ /* istanbul ignore else */
2375
2389
  if (process.env.NODE_ENV !== 'production') {
2376
2390
  const {
2377
2391
  originalTarget
2378
2392
  } = this;
2379
- throw new Error(`Invalid mutation: Cannot set "${key.toString()}" on "${originalTarget}". "${originalTarget}" is read-only.`);
2393
+ const msg = isArray(originalTarget) ? `Invalid mutation: Cannot mutate array at index ${key.toString()}. Array is read-only.` : `Invalid mutation: Cannot set "${key.toString()}" on "${originalTarget}". "${originalTarget}" is read-only.`;
2394
+ throw new Error(msg);
2380
2395
  }
2396
+ /* istanbul ignore next */
2397
+
2381
2398
 
2382
2399
  return false;
2383
2400
  }
2384
2401
 
2385
2402
  deleteProperty(shadowTarget, key) {
2403
+ /* istanbul ignore else */
2386
2404
  if (process.env.NODE_ENV !== 'production') {
2387
2405
  const {
2388
2406
  originalTarget
2389
2407
  } = this;
2390
2408
  throw new Error(`Invalid mutation: Cannot delete "${key.toString()}" on "${originalTarget}". "${originalTarget}" is read-only.`);
2391
2409
  }
2410
+ /* istanbul ignore next */
2411
+
2392
2412
 
2393
2413
  return false;
2394
2414
  }
2395
2415
 
2396
2416
  setPrototypeOf(shadowTarget, prototype) {
2417
+ /* istanbul ignore else */
2397
2418
  if (process.env.NODE_ENV !== 'production') {
2398
2419
  const {
2399
2420
  originalTarget
@@ -2403,23 +2424,29 @@ class ReadOnlyHandler extends BaseProxyHandler {
2403
2424
  }
2404
2425
 
2405
2426
  preventExtensions(shadowTarget) {
2427
+ /* istanbul ignore else */
2406
2428
  if (process.env.NODE_ENV !== 'production') {
2407
2429
  const {
2408
2430
  originalTarget
2409
2431
  } = this;
2410
2432
  throw new Error(`Invalid mutation: Cannot preventExtensions on ${originalTarget}". "${originalTarget} is read-only.`);
2411
2433
  }
2434
+ /* istanbul ignore next */
2435
+
2412
2436
 
2413
2437
  return false;
2414
2438
  }
2415
2439
 
2416
2440
  defineProperty(shadowTarget, key, descriptor) {
2441
+ /* istanbul ignore else */
2417
2442
  if (process.env.NODE_ENV !== 'production') {
2418
2443
  const {
2419
2444
  originalTarget
2420
2445
  } = this;
2421
2446
  throw new Error(`Invalid mutation: Cannot defineProperty "${key.toString()}" on "${originalTarget}". "${originalTarget}" is read-only.`);
2422
2447
  }
2448
+ /* istanbul ignore next */
2449
+
2423
2450
 
2424
2451
  return false;
2425
2452
  }
@@ -2477,6 +2504,8 @@ const formatter = {
2477
2504
  }; // Inspired from paulmillr/es6-shim
2478
2505
  // https://github.com/paulmillr/es6-shim/blob/master/es6-shim.js#L176-L185
2479
2506
 
2507
+ /* istanbul ignore next */
2508
+
2480
2509
  function getGlobal() {
2481
2510
  // the only reliable means to get the global object is `Function('return this')()`
2482
2511
  // However, this causes CSP violations in Chrome apps.
@@ -2501,6 +2530,7 @@ function getGlobal() {
2501
2530
  }
2502
2531
 
2503
2532
  function init() {
2533
+ /* istanbul ignore if */
2504
2534
  if (process.env.NODE_ENV === 'production') {
2505
2535
  // this method should never leak to prod
2506
2536
  throw new ReferenceError();
@@ -2515,6 +2545,8 @@ function init() {
2515
2545
  ArrayPush.call(devtoolsFormatters, formatter);
2516
2546
  global.devtoolsFormatters = devtoolsFormatters;
2517
2547
  }
2548
+ /* istanbul ignore else */
2549
+
2518
2550
 
2519
2551
  if (process.env.NODE_ENV !== 'production') {
2520
2552
  init();
@@ -2561,7 +2593,8 @@ class ReactiveMembrane {
2561
2593
  this.valueMutated = defaultValueMutated;
2562
2594
  this.valueObserved = defaultValueObserved;
2563
2595
  this.valueIsObservable = defaultValueIsObservable;
2564
- this.objectGraph = new WeakMap();
2596
+ this.readOnlyObjectGraph = new WeakMap();
2597
+ this.reactiveObjectGraph = new WeakMap();
2565
2598
 
2566
2599
  if (!isUndefined(options)) {
2567
2600
  const {
@@ -2584,10 +2617,13 @@ class ReactiveMembrane {
2584
2617
  const distorted = this.valueDistortion(unwrappedValue);
2585
2618
 
2586
2619
  if (this.valueIsObservable(distorted)) {
2587
- const o = this.getReactiveState(unwrappedValue, distorted); // when trying to extract the writable version of a readonly
2588
- // we return the readonly.
2620
+ if (this.readOnlyObjectGraph.get(distorted) === value) {
2621
+ // when trying to extract the writable version of a readonly
2622
+ // we return the readonly.
2623
+ return value;
2624
+ }
2589
2625
 
2590
- return o.readOnly === value ? value : o.reactive;
2626
+ return this.getReactiveHandler(unwrappedValue, distorted);
2591
2627
  }
2592
2628
 
2593
2629
  return distorted;
@@ -2598,7 +2634,7 @@ class ReactiveMembrane {
2598
2634
  const distorted = this.valueDistortion(value);
2599
2635
 
2600
2636
  if (this.valueIsObservable(distorted)) {
2601
- return this.getReactiveState(value, distorted).readOnly;
2637
+ return this.getReadOnlyHandler(value, distorted);
2602
2638
  }
2603
2639
 
2604
2640
  return distorted;
@@ -2608,47 +2644,36 @@ class ReactiveMembrane {
2608
2644
  return unwrap$1(p);
2609
2645
  }
2610
2646
 
2611
- getReactiveState(value, distortedValue) {
2612
- const {
2613
- objectGraph
2614
- } = this;
2615
- let reactiveState = objectGraph.get(distortedValue);
2647
+ getReactiveHandler(value, distortedValue) {
2648
+ let proxy = this.reactiveObjectGraph.get(distortedValue);
2616
2649
 
2617
- if (reactiveState) {
2618
- return reactiveState;
2650
+ if (isUndefined(proxy)) {
2651
+ // caching the proxy after the first time it is accessed
2652
+ const handler = new ReactiveProxyHandler(this, distortedValue);
2653
+ proxy = new Proxy(createShadowTarget(distortedValue), handler);
2654
+ registerProxy(proxy, value);
2655
+ this.reactiveObjectGraph.set(distortedValue, proxy);
2619
2656
  }
2620
2657
 
2621
- const membrane = this;
2622
- reactiveState = {
2623
- get reactive() {
2624
- const reactiveHandler = new ReactiveProxyHandler(membrane, distortedValue); // caching the reactive proxy after the first time it is accessed
2625
-
2626
- const proxy = new Proxy(createShadowTarget(distortedValue), reactiveHandler);
2627
- registerProxy(proxy, value);
2628
- ObjectDefineProperty(this, 'reactive', {
2629
- value: proxy
2630
- });
2631
- return proxy;
2632
- },
2658
+ return proxy;
2659
+ }
2633
2660
 
2634
- get readOnly() {
2635
- const readOnlyHandler = new ReadOnlyHandler(membrane, distortedValue); // caching the readOnly proxy after the first time it is accessed
2661
+ getReadOnlyHandler(value, distortedValue) {
2662
+ let proxy = this.readOnlyObjectGraph.get(distortedValue);
2636
2663
 
2637
- const proxy = new Proxy(createShadowTarget(distortedValue), readOnlyHandler);
2638
- registerProxy(proxy, value);
2639
- ObjectDefineProperty(this, 'readOnly', {
2640
- value: proxy
2641
- });
2642
- return proxy;
2643
- }
2664
+ if (isUndefined(proxy)) {
2665
+ // caching the proxy after the first time it is accessed
2666
+ const handler = new ReadOnlyHandler(this, distortedValue);
2667
+ proxy = new Proxy(createShadowTarget(distortedValue), handler);
2668
+ registerProxy(proxy, value);
2669
+ this.readOnlyObjectGraph.set(distortedValue, proxy);
2670
+ }
2644
2671
 
2645
- };
2646
- objectGraph.set(distortedValue, reactiveState);
2647
- return reactiveState;
2672
+ return proxy;
2648
2673
  }
2649
2674
 
2650
2675
  }
2651
- /** version: 1.0.0 */
2676
+ /** version: 1.1.5 */
2652
2677
 
2653
2678
  /*
2654
2679
  * Copyright (c) 2018, salesforce.com, inc.
@@ -4680,7 +4705,7 @@ function vnodesAndElementHaveCompatibleAttrs(vnode, elm) {
4680
4705
  for (const [attrName, attrValue] of Object.entries(attrs)) {
4681
4706
  const elmAttrValue = renderer.getAttribute(elm, attrName);
4682
4707
 
4683
- if (attrValue !== elmAttrValue) {
4708
+ if (String(attrValue) !== elmAttrValue) {
4684
4709
  logError(`Mismatch hydrating element <${elm.tagName.toLowerCase()}>: attribute "${attrName}" has different values, expected "${attrValue}" but found "${elmAttrValue}"`, vnode.owner);
4685
4710
  nodesAreCompatible = false;
4686
4711
  }
@@ -4702,7 +4727,7 @@ function vnodesAndElementHaveCompatibleClass(vnode, elm) {
4702
4727
  let nodesAreCompatible = true;
4703
4728
  let vnodeClassName;
4704
4729
 
4705
- if (!isUndefined$1(className) && className !== elm.className) {
4730
+ if (!isUndefined$1(className) && String(className) !== elm.className) {
4706
4731
  // className is used when class is bound to an expr.
4707
4732
  nodesAreCompatible = false;
4708
4733
  vnodeClassName = className;
@@ -5503,7 +5528,7 @@ function co(text) {
5503
5528
 
5504
5529
 
5505
5530
  function d(value) {
5506
- return value == null ? '' : value;
5531
+ return value == null ? '' : String(value);
5507
5532
  } // [b]ind function
5508
5533
 
5509
5534
 
@@ -5794,6 +5819,7 @@ function updateStylesheetToken(vm, template) {
5794
5819
 
5795
5820
  function evaluateStylesheetsContent(stylesheets, stylesheetToken, vm) {
5796
5821
  const content = [];
5822
+ let root;
5797
5823
 
5798
5824
  for (let i = 0; i < stylesheets.length; i++) {
5799
5825
  let stylesheet = stylesheets[i];
@@ -5806,23 +5832,46 @@ function evaluateStylesheetsContent(stylesheets, stylesheetToken, vm) {
5806
5832
  // the component instance might be attempting to use an old version of
5807
5833
  // the stylesheet, while internally, we have a replacement for it.
5808
5834
  stylesheet = getStyleOrSwappedStyle(stylesheet);
5809
- } // Use the actual `:host` selector if we're rendering global CSS for light DOM, or if we're rendering
5810
- // native shadow DOM. Synthetic shadow DOM never uses `:host`.
5835
+ }
5811
5836
 
5837
+ const isScopedCss = stylesheet[KEY__SCOPED_CSS]; // Apply the scope token only if the stylesheet itself is scoped, or if we're rendering synthetic shadow.
5838
+
5839
+ const scopeToken = isScopedCss || vm.shadowMode === 1
5840
+ /* Synthetic */
5841
+ && vm.renderMode === 1
5842
+ /* Shadow */
5843
+ ? stylesheetToken : undefined; // Use the actual `:host` selector if we're rendering global CSS for light DOM, or if we're rendering
5844
+ // native shadow DOM. Synthetic shadow DOM never uses `:host`.
5812
5845
 
5813
- const isScopedCss = stylesheet[KEY__SCOPED_CSS];
5814
5846
  const useActualHostSelector = vm.renderMode === 0
5815
5847
  /* Light */
5816
5848
  ? !isScopedCss : vm.shadowMode === 0
5817
5849
  /* Native */
5818
- ; // Apply the scope token only if the stylesheet itself is scoped, or if we're rendering synthetic shadow.
5850
+ ; // Use the native :dir() pseudoclass only in native shadow DOM. Otherwise, in synthetic shadow,
5851
+ // we use an attribute selector on the host to simulate :dir().
5819
5852
 
5820
- const scopeToken = isScopedCss || vm.shadowMode === 1
5821
- /* Synthetic */
5822
- && vm.renderMode === 1
5853
+ let useNativeDirPseudoclass;
5854
+
5855
+ if (vm.renderMode === 1
5823
5856
  /* Shadow */
5824
- ? stylesheetToken : undefined;
5825
- ArrayPush$1.call(content, stylesheet(useActualHostSelector, scopeToken));
5857
+ ) {
5858
+ useNativeDirPseudoclass = vm.shadowMode === 0
5859
+ /* Native */
5860
+ ;
5861
+ } else {
5862
+ // Light DOM components should only render `[dir]` if they're inside of a synthetic shadow root.
5863
+ // At the top level (root is null) or inside of a native shadow root, they should use `:dir()`.
5864
+ if (isUndefined$1(root)) {
5865
+ // Only calculate the root once as necessary
5866
+ root = getNearestShadowComponent(vm);
5867
+ }
5868
+
5869
+ useNativeDirPseudoclass = isNull(root) || root.shadowMode === 0
5870
+ /* Native */
5871
+ ;
5872
+ }
5873
+
5874
+ ArrayPush$1.call(content, stylesheet(scopeToken, useActualHostSelector, useNativeDirPseudoclass));
5826
5875
  }
5827
5876
  }
5828
5877
 
@@ -5846,14 +5895,12 @@ function getStylesheetsContent(vm, template) {
5846
5895
  // https://github.com/salesforce/lwc/pull/2460#discussion_r691208892
5847
5896
 
5848
5897
 
5849
- function getNearestNativeShadowComponent(vm) {
5898
+ function getNearestShadowComponent(vm) {
5850
5899
  let owner = vm;
5851
5900
 
5852
5901
  while (!isNull(owner)) {
5853
5902
  if (owner.renderMode === 1
5854
5903
  /* Shadow */
5855
- && owner.shadowMode === 0
5856
- /* Native */
5857
5904
  ) {
5858
5905
  return owner;
5859
5906
  }
@@ -5864,6 +5911,20 @@ function getNearestNativeShadowComponent(vm) {
5864
5911
  return owner;
5865
5912
  }
5866
5913
 
5914
+ function getNearestNativeShadowComponent(vm) {
5915
+ const owner = getNearestShadowComponent(vm);
5916
+
5917
+ if (!isNull(owner) && owner.shadowMode === 1
5918
+ /* Synthetic */
5919
+ ) {
5920
+ // Synthetic-within-native is impossible. So if the nearest shadow component is
5921
+ // synthetic, we know we won't find a native component if we go any further.
5922
+ return null;
5923
+ }
5924
+
5925
+ return owner;
5926
+ }
5927
+
5867
5928
  function createStylesheet(vm, stylesheets) {
5868
5929
  const {
5869
5930
  renderer,
@@ -5879,7 +5940,7 @@ function createStylesheet(vm, stylesheets) {
5879
5940
  for (let i = 0; i < stylesheets.length; i++) {
5880
5941
  renderer.insertGlobalStylesheet(stylesheets[i]);
5881
5942
  }
5882
- } else if (renderer.ssr || renderer.isHydrating) {
5943
+ } else if (renderer.ssr || renderer.isHydrating()) {
5883
5944
  // Note: We need to ensure that during hydration, the stylesheets method is the same as those in ssr.
5884
5945
  // This works in the client, because the stylesheets are created, and cached in the VM
5885
5946
  // the first time the VM renders.
@@ -7528,7 +7589,7 @@ function setHooks(hooks) {
7528
7589
  hooksAreSet = true;
7529
7590
  setSanitizeHtmlContentHook(hooks.sanitizeHtmlContent);
7530
7591
  }
7531
- /* version: 2.5.8 */
7592
+ /* version: 2.5.9 */
7532
7593
 
7533
7594
  /*
7534
7595
  * Copyright (c) 2020, salesforce.com, inc.
@@ -7621,7 +7682,7 @@ class HTMLElement$1 {
7621
7682
  const renderer = {
7622
7683
  ssr: true,
7623
7684
 
7624
- get isHydrating() {
7685
+ isHydrating() {
7625
7686
  return false;
7626
7687
  },
7627
7688
 
@@ -8024,6 +8085,6 @@ function renderComponent(tagName, Ctor, props = {}) {
8024
8085
 
8025
8086
  freeze(LightningElement);
8026
8087
  seal(LightningElement.prototype);
8027
- /* version: 2.5.8 */
8088
+ /* version: 2.5.9 */
8028
8089
 
8029
8090
  export { LightningElement, api$1 as api, createContextProvider, getComponentDef, isComponentConstructor, readonly, register, registerComponent, registerDecorators, registerTemplate, renderComponent, sanitizeAttribute, setFeatureFlag, setFeatureFlagForTest, setHooks, track, unwrap, wire };
@@ -194,7 +194,7 @@ const KEY__SYNTHETIC_MODE = '$$lwc-synthetic-mode';
194
194
  // we can't use typeof since it will fail when transpiling.
195
195
 
196
196
  const hasNativeSymbolSupport = /*@__PURE__*/(() => Symbol('x').toString() === 'Symbol(x)')();
197
- /** version: 2.5.8 */
197
+ /** version: 2.5.9 */
198
198
 
199
199
  /*
200
200
  * Copyright (c) 2018, salesforce.com, inc.
@@ -533,7 +533,7 @@ if (!_globalThis.lwcRuntimeFlags) {
533
533
  }
534
534
 
535
535
  const runtimeFlags = _globalThis.lwcRuntimeFlags;
536
- /** version: 2.5.8 */
536
+ /** version: 2.5.9 */
537
537
 
538
538
  /*
539
539
  * Copyright (c) 2018, salesforce.com, inc.
@@ -5829,4 +5829,4 @@ defineProperty(Element.prototype, '$domManual$', {
5829
5829
 
5830
5830
  configurable: true
5831
5831
  });
5832
- /** version: 2.5.8 */
5832
+ /** version: 2.5.9 */
@@ -197,7 +197,7 @@
197
197
  // we can't use typeof since it will fail when transpiling.
198
198
 
199
199
  const hasNativeSymbolSupport = /*@__PURE__*/(() => Symbol('x').toString() === 'Symbol(x)')();
200
- /** version: 2.5.8 */
200
+ /** version: 2.5.9 */
201
201
 
202
202
  /*
203
203
  * Copyright (c) 2018, salesforce.com, inc.
@@ -536,7 +536,7 @@
536
536
  }
537
537
 
538
538
  const runtimeFlags = _globalThis.lwcRuntimeFlags;
539
- /** version: 2.5.8 */
539
+ /** version: 2.5.9 */
540
540
 
541
541
  /*
542
542
  * Copyright (c) 2018, salesforce.com, inc.
@@ -5832,6 +5832,6 @@
5832
5832
 
5833
5833
  configurable: true
5834
5834
  });
5835
- /** version: 2.5.8 */
5835
+ /** version: 2.5.9 */
5836
5836
 
5837
5837
  })();
@@ -125,7 +125,7 @@
125
125
  const KEY__SHADOW_TOKEN = '$shadowToken$';
126
126
  const KEY__SHADOW_TOKEN_PRIVATE = '$$ShadowTokenKey$$';
127
127
  const KEY__SYNTHETIC_MODE = '$$lwc-synthetic-mode';
128
- /** version: 2.5.8 */
128
+ /** version: 2.5.9 */
129
129
 
130
130
  /*
131
131
  * Copyright (c) 2018, salesforce.com, inc.
@@ -464,7 +464,7 @@
464
464
  }
465
465
 
466
466
  const runtimeFlags = _globalThis.lwcRuntimeFlags;
467
- /** version: 2.5.8 */
467
+ /** version: 2.5.9 */
468
468
 
469
469
  /*
470
470
  * Copyright (c) 2018, salesforce.com, inc.
@@ -5640,6 +5640,6 @@
5640
5640
 
5641
5641
  configurable: true
5642
5642
  });
5643
- /** version: 2.5.8 */
5643
+ /** version: 2.5.9 */
5644
5644
 
5645
5645
  })();
@@ -193,7 +193,7 @@
193
193
  var hasNativeSymbolSupport = /*@__PURE__*/function () {
194
194
  return Symbol('x').toString() === 'Symbol(x)';
195
195
  }();
196
- /** version: 2.5.8 */
196
+ /** version: 2.5.9 */
197
197
 
198
198
  /*
199
199
  * Copyright (c) 2018, salesforce.com, inc.
@@ -526,7 +526,7 @@
526
526
  }
527
527
 
528
528
  var runtimeFlags = _globalThis.lwcRuntimeFlags;
529
- /** version: 2.5.8 */
529
+ /** version: 2.5.9 */
530
530
 
531
531
  /*
532
532
  * Copyright (c) 2018, salesforce.com, inc.
@@ -5631,6 +5631,6 @@
5631
5631
  },
5632
5632
  configurable: true
5633
5633
  });
5634
- /** version: 2.5.8 */
5634
+ /** version: 2.5.9 */
5635
5635
 
5636
5636
  })();
@@ -117,7 +117,7 @@
117
117
  var KEY__SHADOW_TOKEN = '$shadowToken$';
118
118
  var KEY__SHADOW_TOKEN_PRIVATE = '$$ShadowTokenKey$$';
119
119
  var KEY__SYNTHETIC_MODE = '$$lwc-synthetic-mode';
120
- /** version: 2.5.8 */
120
+ /** version: 2.5.9 */
121
121
 
122
122
  /*
123
123
  * Copyright (c) 2018, salesforce.com, inc.
@@ -448,7 +448,7 @@
448
448
  }
449
449
 
450
450
  var runtimeFlags = _globalThis.lwcRuntimeFlags;
451
- /** version: 2.5.8 */
451
+ /** version: 2.5.9 */
452
452
 
453
453
  /*
454
454
  * Copyright (c) 2018, salesforce.com, inc.
@@ -5435,6 +5435,6 @@
5435
5435
  },
5436
5436
  configurable: true
5437
5437
  });
5438
- /** version: 2.5.8 */
5438
+ /** version: 2.5.9 */
5439
5439
 
5440
5440
  })();