lwc 2.13.3 → 2.14.1

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 (43) hide show
  1. package/dist/engine-dom/esm/es2017/engine-dom.js +351 -129
  2. package/dist/engine-dom/iife/es2017/engine-dom.js +351 -128
  3. package/dist/engine-dom/iife/es2017/engine-dom.min.js +1 -2
  4. package/dist/engine-dom/iife/es2017/engine-dom_debug.js +195 -122
  5. package/dist/engine-dom/iife/es5/engine-dom.js +7581 -5773
  6. package/dist/engine-dom/iife/es5/engine-dom.min.js +1 -1
  7. package/dist/engine-dom/iife/es5/engine-dom_debug.js +5966 -4601
  8. package/dist/engine-dom/umd/es2017/engine-dom.js +351 -128
  9. package/dist/engine-dom/umd/es2017/engine-dom.min.js +1 -2
  10. package/dist/engine-dom/umd/es2017/engine-dom_debug.js +195 -122
  11. package/dist/engine-dom/umd/es5/engine-dom.js +7581 -5773
  12. package/dist/engine-dom/umd/es5/engine-dom.min.js +1 -1
  13. package/dist/engine-dom/umd/es5/engine-dom_debug.js +5966 -4601
  14. package/dist/engine-server/commonjs/es2017/engine-server.js +188 -52
  15. package/dist/engine-server/commonjs/es2017/engine-server.min.js +1 -1
  16. package/dist/engine-server/esm/es2017/engine-server.js +188 -53
  17. package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js +29 -4
  18. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js +29 -4
  19. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.min.js +10 -13
  20. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js +4 -4
  21. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js +4601 -3603
  22. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.min.js +10 -1
  23. package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js +4424 -3481
  24. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js +29 -4
  25. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.min.js +10 -13
  26. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js +4 -4
  27. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js +4601 -3603
  28. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.min.js +10 -1
  29. package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js +4424 -3481
  30. package/dist/wire-service/esm/es2017/wire-service.js +2 -2
  31. package/dist/wire-service/iife/es2017/wire-service.js +2 -2
  32. package/dist/wire-service/iife/es2017/wire-service.min.js +1 -1
  33. package/dist/wire-service/iife/es2017/wire-service_debug.js +2 -2
  34. package/dist/wire-service/iife/es5/wire-service.js +243 -258
  35. package/dist/wire-service/iife/es5/wire-service.min.js +1 -1
  36. package/dist/wire-service/iife/es5/wire-service_debug.js +243 -258
  37. package/dist/wire-service/umd/es2017/wire-service.js +2 -2
  38. package/dist/wire-service/umd/es2017/wire-service.min.js +1 -1
  39. package/dist/wire-service/umd/es2017/wire-service_debug.js +2 -2
  40. package/dist/wire-service/umd/es5/wire-service.js +243 -258
  41. package/dist/wire-service/umd/es5/wire-service.min.js +1 -1
  42. package/dist/wire-service/umd/es5/wire-service_debug.js +243 -258
  43. package/package.json +7 -7
@@ -47,7 +47,7 @@ var assert = /*#__PURE__*/Object.freeze({
47
47
  */
48
48
  const { assign, create, defineProperties, defineProperty, freeze, getOwnPropertyDescriptor: getOwnPropertyDescriptor$1, getOwnPropertyNames: getOwnPropertyNames$1, getPrototypeOf: getPrototypeOf$1, hasOwnProperty: hasOwnProperty$1, isFrozen, keys, seal, setPrototypeOf, } = Object;
49
49
  const { isArray: isArray$1 } = Array;
50
- const { filter: ArrayFilter, find: ArrayFind, indexOf: ArrayIndexOf, join: ArrayJoin, map: ArrayMap, push: ArrayPush$1, reduce: ArrayReduce, reverse: ArrayReverse, slice: ArraySlice, splice: ArraySplice, unshift: ArrayUnshift, forEach, } = Array.prototype;
50
+ const { copyWithin: ArrayCopyWithin, fill: ArrayFill, filter: ArrayFilter, find: ArrayFind, indexOf: ArrayIndexOf, join: ArrayJoin, map: ArrayMap, pop: ArrayPop, push: ArrayPush$1, reduce: ArrayReduce, reverse: ArrayReverse, shift: ArrayShift, slice: ArraySlice, sort: ArraySort, splice: ArraySplice, unshift: ArrayUnshift, forEach, } = Array.prototype;
51
51
  const { fromCharCode: StringFromCharCode } = String;
52
52
  const { charCodeAt: StringCharCodeAt, replace: StringReplace, slice: StringSlice, toLowerCase: StringToLowerCase, } = String.prototype;
53
53
  function isUndefined$1(obj) {
@@ -421,9 +421,9 @@ const XLINK_NAMESPACE = 'http://www.w3.org/1999/xlink';
421
421
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
422
422
  */
423
423
  // Increment whenever the LWC template compiler changes
424
- const LWC_VERSION = "2.13.3";
424
+ const LWC_VERSION = "2.14.1";
425
425
  const LWC_VERSION_COMMENT_REGEX = /\/\*LWC compiler v([\d.]+)\*\/\s*}/;
426
- /** version: 2.13.3 */
426
+ /** version: 2.14.1 */
427
427
 
428
428
  /*
429
429
  * Copyright (c) 2020, salesforce.com, inc.
@@ -468,6 +468,7 @@ if (typeof CustomEvent !== 'function') {
468
468
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
469
469
  */
470
470
  const features = {
471
+ DUMMY_TEST_FLAG: null,
471
472
  ENABLE_ELEMENT_PATCH: null,
472
473
  ENABLE_FORCE_NATIVE_SHADOW_MODE_FOR_TEST: null,
473
474
  ENABLE_HMR: null,
@@ -531,10 +532,35 @@ function setFeatureFlagForTest(name, value) {
531
532
  setFeatureFlag(name, value);
532
533
  }
533
534
  }
534
- /** version: 2.13.3 */
535
+ /** version: 2.14.1 */
535
536
 
536
537
  /* proxy-compat-disable */
537
538
 
539
+ /*
540
+ * Copyright (c) 2018, salesforce.com, inc.
541
+ * All rights reserved.
542
+ * SPDX-License-Identifier: MIT
543
+ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
544
+ */
545
+ // @ts-ignore
546
+
547
+ if (process.env.NODE_ENV !== 'production' && typeof __karma__ !== 'undefined') {
548
+ window.addEventListener('test-dummy-flag', () => {
549
+ let hasFlag = false;
550
+
551
+ if (runtimeFlags.DUMMY_TEST_FLAG) {
552
+ hasFlag = true;
553
+ }
554
+
555
+ window.dispatchEvent(new CustomEvent('has-dummy-flag', {
556
+ detail: {
557
+ package: '@lwc/engine-core',
558
+ hasFlag
559
+ }
560
+ }));
561
+ });
562
+ }
563
+
538
564
  /*
539
565
  * Copyright (c) 2018, salesforce.com, inc.
540
566
  * All rights reserved.
@@ -608,10 +634,6 @@ let HTMLElementExported$1;
608
634
  function setHTMLElement(HTMLElementImpl) {
609
635
  HTMLElementExported$1 = HTMLElementImpl;
610
636
  }
611
- let isHydrating$1;
612
- function setIsHydrating(isHydratingImpl) {
613
- isHydrating$1 = isHydratingImpl;
614
- }
615
637
  let insert$1;
616
638
  function setInsert(insertImpl) {
617
639
  insert$1 = insertImpl;
@@ -732,10 +754,6 @@ let isConnected$1;
732
754
  function setIsConnected(isConnectedImpl) {
733
755
  isConnected$1 = isConnectedImpl;
734
756
  }
735
- let insertGlobalStylesheet$1;
736
- function setInsertGlobalStylesheet(insertGlobalStylesheetImpl) {
737
- insertGlobalStylesheet$1 = insertGlobalStylesheetImpl;
738
- }
739
757
  let insertStylesheet$1;
740
758
  function setInsertStylesheet(insertStylesheetImpl) {
741
759
  insertStylesheet$1 = insertStylesheetImpl;
@@ -2799,7 +2817,8 @@ function getDecoratorsMeta(Ctor) {
2799
2817
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
2800
2818
  */
2801
2819
  let warned = false;
2802
- if (process.env.NODE_ENV === 'development') {
2820
+ // @ts-ignore
2821
+ if (process.env.NODE_ENV !== 'production' && typeof __karma__ !== 'undefined') {
2803
2822
  // @ts-ignore
2804
2823
  window.__lwcResetWarnedOnVersionMismatch = () => {
2805
2824
  warned = false;
@@ -2848,6 +2867,8 @@ function registerTemplate(tpl) {
2848
2867
  // on top of stylesheetToken for anyone who is accessing the old internal API.
2849
2868
  // Details: https://salesforce.quip.com/v1rmAFu2cKAr
2850
2869
  defineProperty(tpl, 'stylesheetTokens', {
2870
+ enumerable: true,
2871
+ configurable: true,
2851
2872
  get() {
2852
2873
  const { stylesheetToken } = this;
2853
2874
  if (isUndefined$1(stylesheetToken)) {
@@ -3810,16 +3831,20 @@ function mountVNodes(vnodes, parent, anchor, start = 0, end = vnodes.length) {
3810
3831
  }
3811
3832
  }
3812
3833
  function unmount(vnode, parent, doRemove = false) {
3813
- const { type, elm } = vnode;
3834
+ const { type, elm, sel } = vnode;
3814
3835
  // When unmounting a VNode subtree not all the elements have to removed from the DOM. The
3815
3836
  // subtree root, is the only element worth unmounting from the subtree.
3816
3837
  if (doRemove) {
3817
3838
  removeNode(elm, parent);
3818
3839
  }
3819
3840
  switch (type) {
3820
- case 2 /* Element */:
3821
- unmountVNodes(vnode.children, elm);
3841
+ case 2 /* Element */: {
3842
+ // Slot content is removed to trigger slotchange event when removing slot.
3843
+ // Only required for synthetic shadow.
3844
+ const removeChildren = sel === 'slot' && vnode.owner.shadowMode === 1 /* Synthetic */;
3845
+ unmountVNodes(vnode.children, elm, removeChildren);
3822
3846
  break;
3847
+ }
3823
3848
  case 3 /* CustomElement */: {
3824
3849
  const { vm } = vnode;
3825
3850
  // No need to unmount the children here, `removeVM` will take care of removing the
@@ -4736,10 +4761,10 @@ function createStylesheet(vm, stylesheets) {
4736
4761
  const { renderMode, shadowMode } = vm;
4737
4762
  if (renderMode === 1 /* Shadow */ && shadowMode === 1 /* Synthetic */) {
4738
4763
  for (let i = 0; i < stylesheets.length; i++) {
4739
- insertGlobalStylesheet$1(stylesheets[i]);
4764
+ insertStylesheet$1(stylesheets[i]);
4740
4765
  }
4741
4766
  }
4742
- else if (ssr$1 || isHydrating$1()) {
4767
+ else if (ssr$1 || vm.hydrated) {
4743
4768
  // Note: We need to ensure that during hydration, the stylesheets method is the same as those in ssr.
4744
4769
  // This works in the client, because the stylesheets are created, and cached in the VM
4745
4770
  // the first time the VM renders.
@@ -4750,15 +4775,10 @@ function createStylesheet(vm, stylesheets) {
4750
4775
  else {
4751
4776
  // native shadow or light DOM, DOM renderer
4752
4777
  const root = getNearestNativeShadowComponent(vm);
4753
- const isGlobal = isNull(root);
4778
+ // null root means a global style
4779
+ const target = isNull(root) ? undefined : root.shadowRoot;
4754
4780
  for (let i = 0; i < stylesheets.length; i++) {
4755
- if (isGlobal) {
4756
- insertGlobalStylesheet$1(stylesheets[i]);
4757
- }
4758
- else {
4759
- // local level
4760
- insertStylesheet$1(stylesheets[i], root.shadowRoot);
4761
- }
4781
+ insertStylesheet$1(stylesheets[i], target);
4762
4782
  }
4763
4783
  }
4764
4784
  return null;
@@ -5266,13 +5286,25 @@ function removeVM(vm) {
5266
5286
 
5267
5287
  resetComponentStateWhenRemoved(vm);
5268
5288
  }
5269
- function createVM(elm, ctor, options) {
5270
- var _a;
5271
5289
 
5290
+ function getNearestShadowAncestor(vm) {
5291
+ let ancestor = vm.owner;
5292
+
5293
+ while (!isNull(ancestor) && ancestor.renderMode === 0
5294
+ /* Light */
5295
+ ) {
5296
+ ancestor = ancestor.owner;
5297
+ }
5298
+
5299
+ return ancestor;
5300
+ }
5301
+
5302
+ function createVM(elm, ctor, options) {
5272
5303
  const {
5273
5304
  mode,
5274
5305
  owner,
5275
- tagName
5306
+ tagName,
5307
+ hydrated
5276
5308
  } = options;
5277
5309
  const def = getComponentInternalDef(ctor);
5278
5310
  const vm = {
@@ -5295,9 +5327,8 @@ function createVM(elm, ctor, options) {
5295
5327
  cmpSlots: create(null),
5296
5328
  oar: create(null),
5297
5329
  cmpTemplate: null,
5330
+ hydrated: Boolean(hydrated),
5298
5331
  renderMode: def.renderMode,
5299
- shadowMode: computeShadowMode(def, owner),
5300
- nearestShadowMode: (owner === null || owner === void 0 ? void 0 : owner.shadowRoot) ? owner.shadowMode : (_a = owner === null || owner === void 0 ? void 0 : owner.nearestShadowMode) !== null && _a !== void 0 ? _a : null,
5301
5332
  context: {
5302
5333
  stylesheetToken: undefined,
5303
5334
  hasTokenInClass: undefined,
@@ -5310,6 +5341,7 @@ function createVM(elm, ctor, options) {
5310
5341
  },
5311
5342
  // Properties set right after VM creation.
5312
5343
  tro: null,
5344
+ shadowMode: null,
5313
5345
  // Properties set by the LightningElement constructor.
5314
5346
  component: null,
5315
5347
  shadowRoot: null,
@@ -5318,6 +5350,7 @@ function createVM(elm, ctor, options) {
5318
5350
  setHook,
5319
5351
  getHook
5320
5352
  };
5353
+ vm.shadowMode = computeShadowMode(vm);
5321
5354
  vm.tro = getTemplateReactiveObserver(vm);
5322
5355
 
5323
5356
  if (process.env.NODE_ENV !== 'production') {
@@ -5342,9 +5375,10 @@ function createVM(elm, ctor, options) {
5342
5375
  return vm;
5343
5376
  }
5344
5377
 
5345
- function computeShadowMode(def, owner) {
5346
- var _a;
5347
-
5378
+ function computeShadowMode(vm) {
5379
+ const {
5380
+ def
5381
+ } = vm;
5348
5382
  let shadowMode;
5349
5383
 
5350
5384
  if (isSyntheticShadowDefined$1) {
@@ -5367,13 +5401,23 @@ function computeShadowMode(def, owner) {
5367
5401
  /* Native */
5368
5402
  ;
5369
5403
  } else {
5370
- // Transitive support for native Shadow DOM. A component in native mode
5371
- // transitively opts all of its descendants into native.
5372
- // Synthetic if neither this component nor any of its ancestors are configured
5373
- // to be native.
5374
- shadowMode = (_a = owner === null || owner === void 0 ? void 0 : owner.nearestShadowMode) !== null && _a !== void 0 ? _a : 1
5375
- /* Synthetic */
5376
- ;
5404
+ const shadowAncestor = getNearestShadowAncestor(vm);
5405
+
5406
+ if (!isNull(shadowAncestor) && shadowAncestor.shadowMode === 0
5407
+ /* Native */
5408
+ ) {
5409
+ // Transitive support for native Shadow DOM. A component in native mode
5410
+ // transitively opts all of its descendants into native.
5411
+ shadowMode = 0
5412
+ /* Native */
5413
+ ;
5414
+ } else {
5415
+ // Synthetic if neither this component nor any of its ancestors are configured
5416
+ // to be native.
5417
+ shadowMode = 1
5418
+ /* Synthetic */
5419
+ ;
5420
+ }
5377
5421
  }
5378
5422
  } else {
5379
5423
  shadowMode = 1
@@ -6153,7 +6197,106 @@ function setHooks(hooks) {
6153
6197
  hooksAreSet = true;
6154
6198
  setSanitizeHtmlContentHook(hooks.sanitizeHtmlContent);
6155
6199
  }
6156
- /* version: 2.13.3 */
6200
+
6201
+ /*
6202
+ * Copyright (c) 2018, salesforce.com, inc.
6203
+ * All rights reserved.
6204
+ * SPDX-License-Identifier: MIT
6205
+ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
6206
+ */
6207
+ // See @lwc/engine-core/src/framework/template.ts
6208
+ const TEMPLATE_PROPS = ['slots', 'stylesheetToken', 'stylesheets', 'renderMode'];
6209
+ // Via https://www.npmjs.com/package/object-observer
6210
+ const ARRAY_MUTATION_METHODS = [
6211
+ 'pop',
6212
+ 'push',
6213
+ 'shift',
6214
+ 'unshift',
6215
+ 'reverse',
6216
+ 'sort',
6217
+ 'fill',
6218
+ 'splice',
6219
+ 'copyWithin',
6220
+ ];
6221
+ function getOriginalArrayMethod(prop) {
6222
+ switch (prop) {
6223
+ case 'pop':
6224
+ return ArrayPop;
6225
+ case 'push':
6226
+ return ArrayPush$1;
6227
+ case 'shift':
6228
+ return ArrayShift;
6229
+ case 'unshift':
6230
+ return ArrayUnshift;
6231
+ case 'reverse':
6232
+ return ArrayReverse;
6233
+ case 'sort':
6234
+ return ArraySort;
6235
+ case 'fill':
6236
+ return ArrayFill;
6237
+ case 'splice':
6238
+ return ArraySplice;
6239
+ case 'copyWithin':
6240
+ return ArrayCopyWithin;
6241
+ }
6242
+ }
6243
+ let mutationWarningsSilenced = false;
6244
+ // Warn if the user tries to mutate tmpl.stylesheets, e.g.:
6245
+ // `tmpl.stylesheets.push(someStylesheetFunction)`
6246
+ function warnOnArrayMutation(stylesheets) {
6247
+ // We can't handle users calling Array.prototype.slice.call(tmpl.stylesheets), but
6248
+ // we can at least warn when they use the most common mutation methods.
6249
+ for (const prop of ARRAY_MUTATION_METHODS) {
6250
+ const originalArrayMethod = getOriginalArrayMethod(prop);
6251
+ stylesheets[prop] = function arrayMutationWarningWrapper() {
6252
+ logError(`Mutating the "stylesheets" array on a template function ` +
6253
+ `is deprecated and may be removed in a future version of LWC.`);
6254
+ // @ts-ignore
6255
+ return originalArrayMethod.apply(this, arguments);
6256
+ };
6257
+ }
6258
+ }
6259
+ // TODO [#2782]: eventually freezeTemplate() will _actually_ freeze the tmpl object. Today it
6260
+ // just warns on mutation.
6261
+ function freezeTemplate(tmpl) {
6262
+ if (process.env.NODE_ENV !== 'production') {
6263
+ if (!isUndefined$1(tmpl.stylesheets)) {
6264
+ warnOnArrayMutation(tmpl.stylesheets);
6265
+ }
6266
+ for (const prop of TEMPLATE_PROPS) {
6267
+ let value = tmpl[prop];
6268
+ defineProperty(tmpl, prop, {
6269
+ enumerable: true,
6270
+ configurable: true,
6271
+ get() {
6272
+ return value;
6273
+ },
6274
+ set(newValue) {
6275
+ if (!mutationWarningsSilenced) {
6276
+ logError(`Dynamically setting the "${prop}" property on a template function ` +
6277
+ `is deprecated and may be removed in a future version of LWC.`);
6278
+ }
6279
+ value = newValue;
6280
+ },
6281
+ });
6282
+ }
6283
+ const originalDescriptor = getOwnPropertyDescriptor$1(tmpl, 'stylesheetTokens');
6284
+ defineProperty(tmpl, 'stylesheetTokens', {
6285
+ enumerable: true,
6286
+ configurable: true,
6287
+ get: originalDescriptor.get,
6288
+ set(value) {
6289
+ logError(`Dynamically setting the "stylesheetTokens" property on a template function ` +
6290
+ `is deprecated and may be removed in a future version of LWC.`);
6291
+ // Avoid logging twice (for both stylesheetToken and stylesheetTokens)
6292
+ mutationWarningsSilenced = true;
6293
+ originalDescriptor.set.call(this, value);
6294
+ mutationWarningsSilenced = false;
6295
+ },
6296
+ });
6297
+ }
6298
+ }
6299
+ /* version: 2.14.1 */
6157
6300
 
6158
6301
  /*
6159
6302
  * Copyright (c) 2020, salesforce.com, inc.
@@ -6226,9 +6369,6 @@ class HTMLElementImpl {
6226
6369
  }
6227
6370
  }
6228
6371
  const ssr = true;
6229
- function isHydrating() {
6230
- return false;
6231
- }
6232
6372
  const isNativeShadowDefined = false;
6233
6373
  const isSyntheticShadowDefined = false;
6234
6374
  function insert(node, parent, anchor) {
@@ -6429,9 +6569,6 @@ function isConnected(node) {
6429
6569
  }
6430
6570
  // Noop on SSR (for now). This need to be reevaluated whenever we will implement support for
6431
6571
  // synthetic shadow.
6432
- const insertGlobalStylesheet = noop;
6433
- // Noop on SSR (for now). This need to be reevaluated whenever we will implement support for
6434
- // synthetic shadow.
6435
6572
  const insertStylesheet = noop;
6436
6573
  // Noop on SSR.
6437
6574
  const addEventListener = noop;
@@ -6487,10 +6624,7 @@ setGetLastElementChild(getLastElementChild);
6487
6624
  setGetProperty(getProperty);
6488
6625
  setHTMLElement(HTMLElementExported);
6489
6626
  setInsert(insert);
6490
- setInsertGlobalStylesheet(insertGlobalStylesheet);
6491
- setInsertStylesheet(insertStylesheet);
6492
6627
  setIsConnected(isConnected);
6493
- setIsHydrating(isHydrating);
6494
6628
  setIsNativeShadowDefined(isNativeShadowDefined);
6495
6629
  setIsSyntheticShadowDefined(isSyntheticShadowDefined);
6496
6630
  setNextSibling(nextSibling);
@@ -6505,6 +6639,7 @@ setSetProperty(setProperty);
6505
6639
  setSetText(setText);
6506
6640
  setSsr(ssr);
6507
6641
  setAddEventListener(addEventListener);
6642
+ setInsertStylesheet(insertStylesheet);
6508
6643
 
6509
6644
  /*
6510
6645
  * Copyright (c) 2020, salesforce.com, inc.
@@ -6620,11 +6755,12 @@ function renderComponent(tagName, Ctor, props = {}) {
6620
6755
  */
6621
6756
  freeze(LightningElement);
6622
6757
  seal(LightningElement.prototype);
6623
- /* version: 2.13.3 */
6758
+ /* version: 2.14.1 */
6624
6759
 
6625
6760
  exports.LightningElement = LightningElement;
6626
6761
  exports.api = api$1;
6627
6762
  exports.createContextProvider = createContextProvider;
6763
+ exports.freezeTemplate = freezeTemplate;
6628
6764
  exports.getComponentDef = getComponentDef;
6629
6765
  exports.isComponentConstructor = isComponentConstructor;
6630
6766
  exports.readonly = readonly;