ku4web-components 6.7.12 → 6.7.13

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 (144) hide show
  1. package/angular/index.js +1 -1
  2. package/angular/index.mjs +1 -1
  3. package/dist/cjs/index-3f6b12f6.js +10 -0
  4. package/dist/cjs/{index-8b7230db.js → index-d4518258.js} +251 -84
  5. package/dist/cjs/ku4-carousel-controls.cjs.entry.js +1 -1
  6. package/dist/cjs/ku4-carousel-slide.cjs.entry.js +1 -1
  7. package/dist/cjs/ku4-carousel.cjs.entry.js +2 -2
  8. package/dist/cjs/ku4-col.cjs.entry.js +1 -1
  9. package/dist/cjs/ku4-drawer.cjs.entry.js +1 -1
  10. package/dist/cjs/ku4-feature.cjs.entry.js +1 -1
  11. package/dist/cjs/ku4-focus-trap.cjs.entry.js +2 -2
  12. package/dist/cjs/ku4-form.cjs.entry.js +2 -2
  13. package/dist/cjs/ku4-grid.cjs.entry.js +1 -1
  14. package/dist/cjs/ku4-label.cjs.entry.js +1 -1
  15. package/dist/cjs/ku4-mask.cjs.entry.js +1 -1
  16. package/dist/cjs/ku4-modal.cjs.entry.js +2 -2
  17. package/dist/cjs/ku4-panel.cjs.entry.js +1 -1
  18. package/dist/cjs/ku4-preview.cjs.entry.js +2 -2
  19. package/dist/cjs/ku4-tab-list.cjs.entry.js +2 -2
  20. package/dist/cjs/ku4-tab-panel.cjs.entry.js +1 -1
  21. package/dist/cjs/ku4-tab.cjs.entry.js +1 -1
  22. package/dist/cjs/ku4-table.cjs.entry.js +1 -1
  23. package/dist/cjs/ku4-tooltip.cjs.entry.js +1 -1
  24. package/dist/cjs/ku4-validation.cjs.entry.js +1 -1
  25. package/dist/cjs/ku4web-components.cjs.js +2 -2
  26. package/dist/cjs/loader.cjs.js +2 -2
  27. package/dist/cjs/{shadow-css-cf936b02.js → shadow-css-a33dc836.js} +1 -1
  28. package/dist/esm/{index-ed88cd9f.js → index-86df1782.js} +251 -84
  29. package/dist/esm/index-b9d8468a.js +3 -0
  30. package/dist/esm/ku4-carousel-controls.entry.js +1 -1
  31. package/dist/esm/ku4-carousel-slide.entry.js +1 -1
  32. package/dist/esm/ku4-carousel.entry.js +2 -2
  33. package/dist/esm/ku4-col.entry.js +1 -1
  34. package/dist/esm/ku4-drawer.entry.js +1 -1
  35. package/dist/esm/ku4-feature.entry.js +1 -1
  36. package/dist/esm/ku4-focus-trap.entry.js +2 -2
  37. package/dist/esm/ku4-form.entry.js +2 -2
  38. package/dist/esm/ku4-grid.entry.js +1 -1
  39. package/dist/esm/ku4-label.entry.js +1 -1
  40. package/dist/esm/ku4-mask.entry.js +1 -1
  41. package/dist/esm/ku4-modal.entry.js +2 -2
  42. package/dist/esm/ku4-panel.entry.js +1 -1
  43. package/dist/esm/ku4-preview.entry.js +2 -2
  44. package/dist/esm/ku4-tab-list.entry.js +2 -2
  45. package/dist/esm/ku4-tab-panel.entry.js +1 -1
  46. package/dist/esm/ku4-tab.entry.js +1 -1
  47. package/dist/esm/ku4-table.entry.js +1 -1
  48. package/dist/esm/ku4-tooltip.entry.js +1 -1
  49. package/dist/esm/ku4-validation.entry.js +1 -1
  50. package/dist/esm/ku4web-components.js +2 -2
  51. package/dist/esm/loader.js +2 -2
  52. package/dist/esm/{shadow-css-4cd4480f.js → shadow-css-4261c637.js} +1 -1
  53. package/dist/esm-es5/{index-ed88cd9f.js → index-86df1782.js} +1 -1
  54. package/dist/esm-es5/index-b9d8468a.js +1 -0
  55. package/dist/esm-es5/ku4-carousel-controls.entry.js +1 -1
  56. package/dist/esm-es5/ku4-carousel-slide.entry.js +1 -1
  57. package/dist/esm-es5/ku4-carousel.entry.js +1 -1
  58. package/dist/esm-es5/ku4-col.entry.js +1 -1
  59. package/dist/esm-es5/ku4-drawer.entry.js +1 -1
  60. package/dist/esm-es5/ku4-feature.entry.js +1 -1
  61. package/dist/esm-es5/ku4-focus-trap.entry.js +1 -1
  62. package/dist/esm-es5/ku4-form.entry.js +1 -1
  63. package/dist/esm-es5/ku4-grid.entry.js +1 -1
  64. package/dist/esm-es5/ku4-label.entry.js +1 -1
  65. package/dist/esm-es5/ku4-mask.entry.js +1 -1
  66. package/dist/esm-es5/ku4-modal.entry.js +1 -1
  67. package/dist/esm-es5/ku4-panel.entry.js +1 -1
  68. package/dist/esm-es5/ku4-preview.entry.js +1 -1
  69. package/dist/esm-es5/ku4-tab-list.entry.js +1 -1
  70. package/dist/esm-es5/ku4-tab-panel.entry.js +1 -1
  71. package/dist/esm-es5/ku4-tab.entry.js +1 -1
  72. package/dist/esm-es5/ku4-table.entry.js +1 -1
  73. package/dist/esm-es5/ku4-tooltip.entry.js +1 -1
  74. package/dist/esm-es5/ku4-validation.entry.js +1 -1
  75. package/dist/esm-es5/ku4web-components.js +1 -1
  76. package/dist/esm-es5/loader.js +1 -1
  77. package/dist/esm-es5/{shadow-css-4cd4480f.js → shadow-css-4261c637.js} +0 -0
  78. package/dist/ku4web-components/ku4web-components.esm.js +1 -1
  79. package/dist/ku4web-components/ku4web-components.js +1 -1
  80. package/dist/ku4web-components/{p-918a802a.entry.js → p-0611607f.entry.js} +1 -1
  81. package/dist/ku4web-components/{p-11757f38.system.entry.js → p-0c2fe92e.system.entry.js} +1 -1
  82. package/dist/ku4web-components/{p-3074face.system.js → p-0ced1fa7.system.js} +1 -1
  83. package/dist/ku4web-components/{p-db4732d6.system.entry.js → p-168f206e.system.entry.js} +1 -1
  84. package/dist/ku4web-components/{p-825c4eb1.entry.js → p-1d80d5ea.entry.js} +1 -1
  85. package/dist/ku4web-components/{p-00f6f7a2.system.entry.js → p-2a510b37.system.entry.js} +1 -1
  86. package/dist/ku4web-components/{p-416cf70d.system.entry.js → p-2a630678.system.entry.js} +1 -1
  87. package/dist/ku4web-components/{p-46b0daaf.entry.js → p-2a862665.entry.js} +1 -1
  88. package/dist/ku4web-components/{p-0e578877.system.entry.js → p-2f625567.system.entry.js} +1 -1
  89. package/dist/ku4web-components/{p-0f3da44d.system.entry.js → p-33da409b.system.entry.js} +1 -1
  90. package/dist/ku4web-components/{p-36f621f0.entry.js → p-42bd3225.entry.js} +1 -1
  91. package/dist/ku4web-components/{p-e56f956e.entry.js → p-43a3b16a.entry.js} +1 -1
  92. package/dist/ku4web-components/{p-3bf6b262.entry.js → p-517da8da.entry.js} +1 -1
  93. package/dist/ku4web-components/p-5d8e9dd5.js +1 -0
  94. package/dist/ku4web-components/{p-376b72f4.system.entry.js → p-63b36bc5.system.entry.js} +1 -1
  95. package/dist/ku4web-components/{p-68376c90.system.js → p-69165a40.system.js} +1 -1
  96. package/dist/ku4web-components/{p-80c99a74.entry.js → p-722f1484.entry.js} +1 -1
  97. package/dist/ku4web-components/{p-7fb3c20b.entry.js → p-728958cf.entry.js} +1 -1
  98. package/dist/ku4web-components/{p-76ed1a14.system.entry.js → p-7a05df32.system.entry.js} +1 -1
  99. package/dist/ku4web-components/{p-b32c7075.system.entry.js → p-80a59984.system.entry.js} +1 -1
  100. package/dist/ku4web-components/{p-15a87049.system.entry.js → p-8410b9b5.system.entry.js} +1 -1
  101. package/dist/ku4web-components/{p-c52796ac.entry.js → p-89fe8fa0.entry.js} +1 -1
  102. package/dist/ku4web-components/{p-29a8bbab.entry.js → p-96b2c669.entry.js} +1 -1
  103. package/dist/ku4web-components/{p-9dfc9b1f.system.entry.js → p-9d5d5758.system.entry.js} +1 -1
  104. package/dist/ku4web-components/{p-e2515ee6.entry.js → p-a4f7342a.entry.js} +1 -1
  105. package/dist/ku4web-components/{p-a3636f09.entry.js → p-a84dd208.entry.js} +1 -1
  106. package/dist/ku4web-components/{p-b1530d9c.system.js → p-a8de6293.system.js} +0 -0
  107. package/dist/ku4web-components/{p-f5f5958d.system.entry.js → p-a8ef8a26.system.entry.js} +1 -1
  108. package/dist/ku4web-components/{p-9d3e0ac4.entry.js → p-aac61317.entry.js} +1 -1
  109. package/dist/ku4web-components/{p-a43cea20.system.entry.js → p-abb96c12.system.entry.js} +1 -1
  110. package/dist/ku4web-components/{p-0ca65b63.entry.js → p-ad0e5cff.entry.js} +1 -1
  111. package/dist/ku4web-components/{p-89670006.system.entry.js → p-b0edddc6.system.entry.js} +1 -1
  112. package/dist/ku4web-components/{p-5cccec1b.system.entry.js → p-b9b65d90.system.entry.js} +1 -1
  113. package/dist/ku4web-components/{p-003842e3.entry.js → p-bcbf1f48.entry.js} +1 -1
  114. package/dist/ku4web-components/{p-e4e56edf.system.entry.js → p-c2dc6f6d.system.entry.js} +1 -1
  115. package/dist/ku4web-components/{p-adbc2f7a.system.entry.js → p-c3616b74.system.entry.js} +1 -1
  116. package/dist/ku4web-components/p-c7ab12de.system.js +1 -0
  117. package/dist/ku4web-components/{p-8e94fc34.entry.js → p-d932f0d5.entry.js} +1 -1
  118. package/dist/ku4web-components/{p-4f30a3b4.entry.js → p-dadf46ab.entry.js} +1 -1
  119. package/dist/ku4web-components/p-dcb37faf.entry.js +1 -0
  120. package/dist/ku4web-components/{p-dd984902.system.entry.js → p-e1a494a4.system.entry.js} +1 -1
  121. package/dist/ku4web-components/{p-23ff9bcd.entry.js → p-e37a1d15.entry.js} +1 -1
  122. package/dist/ku4web-components/{p-a51c6fe5.system.entry.js → p-e4c836ca.system.entry.js} +1 -1
  123. package/dist/ku4web-components/{p-4eaf20b7.js → p-ef5d4167.js} +0 -0
  124. package/dist/ku4web-components/{p-ba6e9e3d.entry.js → p-f03c5bf4.entry.js} +1 -1
  125. package/dist/ku4web-components/{p-6c6c1035.system.entry.js → p-f8eab33b.system.entry.js} +1 -1
  126. package/dist/ku4web-components/{p-a145181f.js → p-fbee7bb3.js} +1 -1
  127. package/dist/types/capabilities/decorators/deprecated.d.ts +1 -1
  128. package/dist/types/capabilities/testing/html.d.ts +1 -1
  129. package/dist/types/capabilities/testing/styles.d.ts +1 -1
  130. package/dist/types/components/ku4-validation/validate.d.ts +1 -1
  131. package/loader/package.json +1 -0
  132. package/package.json +32 -32
  133. package/react/index.js +1 -1
  134. package/react/index.mjs +1 -1
  135. package/vue/index.js +1 -1
  136. package/vue/index.mjs +1 -1
  137. package/vue3/index.js +1 -1
  138. package/vue3/index.mjs +1 -1
  139. package/dist/cjs/index-5ea4489d.js +0 -10
  140. package/dist/esm/index-bb8d5d62.js +0 -3
  141. package/dist/esm-es5/index-bb8d5d62.js +0 -1
  142. package/dist/ku4web-components/p-7d459d29.entry.js +0 -1
  143. package/dist/ku4web-components/p-e8b35187.js +0 -1
  144. package/dist/ku4web-components/p-eb21757a.system.js +0 -1
@@ -45,7 +45,7 @@ const addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) =
45
45
  const hostListenerProxy = (hostRef, methodName) => (ev) => {
46
46
  try {
47
47
  {
48
- if (hostRef.$flags$ & 256 /* isListenReady */) {
48
+ if (hostRef.$flags$ & 256 /* HOST_FLAGS.isListenReady */) {
49
49
  // instance is ready, let's call it's member method for this event
50
50
  hostRef.$lazyInstance$[methodName](ev);
51
51
  }
@@ -59,12 +59,12 @@ const hostListenerProxy = (hostRef, methodName) => (ev) => {
59
59
  }
60
60
  };
61
61
  const getHostListenerTarget = (elm, flags) => {
62
- if (flags & 8 /* TargetWindow */)
62
+ if (flags & 8 /* LISTENER_FLAGS.TargetWindow */)
63
63
  return win;
64
64
  return elm;
65
65
  };
66
66
  // prettier-ignore
67
- const hostListenerOpts = (flags) => (flags & 2 /* Capture */) !== 0;
67
+ const hostListenerOpts = (flags) => (flags & 2 /* LISTENER_FLAGS.Capture */) !== 0;
68
68
  const HYDRATED_CSS = '{visibility:hidden}[hydrated]{visibility:inherit}';
69
69
  const createTime = (fnName, tagName = '') => {
70
70
  {
@@ -80,7 +80,7 @@ const uniqueTime = (key, measureText) => {
80
80
  };
81
81
  }
82
82
  };
83
- const rootAppliedStyles = new WeakMap();
83
+ const rootAppliedStyles = /*@__PURE__*/ new WeakMap();
84
84
  const registerStyle = (scopeId, cssText, allowCS) => {
85
85
  let style = styles.get(scopeId);
86
86
  if (supportsConstructableStylesheets && allowCS) {
@@ -102,7 +102,7 @@ const addStyle = (styleContainerNode, cmpMeta, mode, hostElm) => {
102
102
  const style = styles.get(scopeId);
103
103
  // if an element is NOT connected then getRootNode() will return the wrong root node
104
104
  // so the fallback is to always use the document for the root node in those cases
105
- styleContainerNode = styleContainerNode.nodeType === 11 /* DocumentFragment */ ? styleContainerNode : doc;
105
+ styleContainerNode = styleContainerNode.nodeType === 11 /* NODE_TYPE.DocumentFragment */ ? styleContainerNode : doc;
106
106
  if (style) {
107
107
  if (typeof style === 'string') {
108
108
  styleContainerNode = styleContainerNode.head || styleContainerNode;
@@ -136,7 +136,7 @@ const attachStyles = (hostRef) => {
136
136
  const flags = cmpMeta.$flags$;
137
137
  const endAttachStyles = createTime('attachStyles', cmpMeta.$tagName$);
138
138
  const scopeId = addStyle(supportsShadow && elm.shadowRoot ? elm.shadowRoot : elm.getRootNode(), cmpMeta);
139
- if (flags & 10 /* needsScopedEncapsulation */) {
139
+ if (flags & 10 /* CMP_FLAGS.needsScopedEncapsulation */) {
140
140
  // only required when we're NOT using native shadow dom (slot)
141
141
  // or this browser doesn't support native shadow dom
142
142
  // and this host element was NOT created with SSR
@@ -359,7 +359,7 @@ const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
359
359
  }
360
360
  }
361
361
  }
362
- else if ((!isProp || flags & 4 /* isHost */ || isSvg) && !isComplex) {
362
+ else if ((!isProp || flags & 4 /* VNODE_FLAGS.isHost */ || isSvg) && !isComplex) {
363
363
  newValue = newValue === true ? '' : newValue;
364
364
  {
365
365
  elm.setAttribute(memberName, newValue);
@@ -374,7 +374,7 @@ const updateElement = (oldVnode, newVnode, isSvgMode, memberName) => {
374
374
  // if the element passed in is a shadow root, which is a document fragment
375
375
  // then we want to be adding attrs/props to the shadow root's "host" element
376
376
  // if it's not a shadow root, then we add attrs/props to the same element
377
- const elm = newVnode.$elm$.nodeType === 11 /* DocumentFragment */ && newVnode.$elm$.host
377
+ const elm = newVnode.$elm$.nodeType === 11 /* NODE_TYPE.DocumentFragment */ && newVnode.$elm$.host
378
378
  ? newVnode.$elm$.host
379
379
  : newVnode.$elm$;
380
380
  const oldVnodeAttrs = (oldVnode && oldVnode.$attrs$) || EMPTY_OBJ;
@@ -392,6 +392,16 @@ const updateElement = (oldVnode, newVnode, isSvgMode, memberName) => {
392
392
  setAccessor(elm, memberName, oldVnodeAttrs[memberName], newVnodeAttrs[memberName], isSvgMode, newVnode.$flags$);
393
393
  }
394
394
  };
395
+ /**
396
+ * Create a DOM Node corresponding to one of the children of a given VNode.
397
+ *
398
+ * @param oldParentVNode the parent VNode from the previous render
399
+ * @param newParentVNode the parent VNode from the current render
400
+ * @param childIndex the index of the VNode, in the _new_ parent node's
401
+ * children, for which we will create a new DOM node
402
+ * @param parentElm the parent DOM node which our new node will be a child of
403
+ * @returns the newly created node
404
+ */
395
405
  const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
396
406
  // tslint:disable-next-line: prefer-const
397
407
  const newVNode = newParentVNode.$children$[childIndex];
@@ -409,23 +419,23 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
409
419
  }
410
420
  newVNode.$flags$ |= newVNode.$children$
411
421
  ? // slot element has fallback content
412
- 2 /* isSlotFallback */
422
+ 2 /* VNODE_FLAGS.isSlotFallback */
413
423
  : // slot element does not have fallback content
414
- 1 /* isSlotReference */;
424
+ 1 /* VNODE_FLAGS.isSlotReference */;
415
425
  }
416
426
  }
417
427
  if (newVNode.$text$ !== null) {
418
428
  // create text node
419
429
  elm = newVNode.$elm$ = doc.createTextNode(newVNode.$text$);
420
430
  }
421
- else if (newVNode.$flags$ & 1 /* isSlotReference */) {
431
+ else if (newVNode.$flags$ & 1 /* VNODE_FLAGS.isSlotReference */) {
422
432
  // create a slot reference node
423
433
  elm = newVNode.$elm$ =
424
434
  doc.createTextNode('');
425
435
  }
426
436
  else {
427
437
  // create element
428
- elm = newVNode.$elm$ = (doc.createElement(newVNode.$flags$ & 2 /* isSlotFallback */
438
+ elm = newVNode.$elm$ = (doc.createElement(newVNode.$flags$ & 2 /* VNODE_FLAGS.isSlotFallback */
429
439
  ? 'slot-fb'
430
440
  : newVNode.$tag$));
431
441
  // add css classes, attrs, props, listeners, etc.
@@ -451,7 +461,7 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
451
461
  }
452
462
  {
453
463
  elm['s-hn'] = hostTagName;
454
- if (newVNode.$flags$ & (2 /* isSlotFallback */ | 1 /* isSlotReference */)) {
464
+ if (newVNode.$flags$ & (2 /* VNODE_FLAGS.isSlotFallback */ | 1 /* VNODE_FLAGS.isSlotReference */)) {
455
465
  // remember the content reference comment
456
466
  elm['s-sr'] = true;
457
467
  // remember the content reference comment
@@ -470,7 +480,7 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
470
480
  return elm;
471
481
  };
472
482
  const putBackInOriginalLocation = (parentElm, recursive) => {
473
- plt.$flags$ |= 1 /* isTmpDisconnected */;
483
+ plt.$flags$ |= 1 /* PLATFORM_FLAGS.isTmpDisconnected */;
474
484
  const oldSlotChildNodes = parentElm.childNodes;
475
485
  for (let i = oldSlotChildNodes.length - 1; i >= 0; i--) {
476
486
  const childNode = oldSlotChildNodes[i];
@@ -491,7 +501,7 @@ const putBackInOriginalLocation = (parentElm, recursive) => {
491
501
  putBackInOriginalLocation(childNode, recursive);
492
502
  }
493
503
  }
494
- plt.$flags$ &= ~1 /* isTmpDisconnected */;
504
+ plt.$flags$ &= ~1 /* PLATFORM_FLAGS.isTmpDisconnected */;
495
505
  };
496
506
  const addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) => {
497
507
  let containerElm = ((parentElm['s-cr'] && parentElm['s-cr'].parentNode) || parentElm);
@@ -532,6 +542,74 @@ const removeVnodes = (vnodes, startIdx, endIdx, vnode, elm) => {
532
542
  }
533
543
  }
534
544
  };
545
+ /**
546
+ * Reconcile the children of a new VNode with the children of an old VNode by
547
+ * traversing the two collections of children, identifying nodes that are
548
+ * conserved or changed, calling out to `patch` to make any necessary
549
+ * updates to the DOM, and rearranging DOM nodes as needed.
550
+ *
551
+ * The algorithm for reconciling children works by analyzing two 'windows' onto
552
+ * the two arrays of children (`oldCh` and `newCh`). We keep track of the
553
+ * 'windows' by storing start and end indices and references to the
554
+ * corresponding array entries. Initially the two 'windows' are basically equal
555
+ * to the entire array, but we progressively narrow the windows until there are
556
+ * no children left to update by doing the following:
557
+ *
558
+ * 1. Skip any `null` entries at the beginning or end of the two arrays, so
559
+ * that if we have an initial array like the following we'll end up dealing
560
+ * only with a window bounded by the highlighted elements:
561
+ *
562
+ * [null, null, VNode1 , ... , VNode2, null, null]
563
+ * ^^^^^^ ^^^^^^
564
+ *
565
+ * 2. Check to see if the elements at the head and tail positions are equal
566
+ * across the windows. This will basically detect elements which haven't
567
+ * been added, removed, or changed position, i.e. if you had the following
568
+ * VNode elements (represented as HTML):
569
+ *
570
+ * oldVNode: `<div><p><span>HEY</span></p></div>`
571
+ * newVNode: `<div><p><span>THERE</span></p></div>`
572
+ *
573
+ * Then when comparing the children of the `<div>` tag we check the equality
574
+ * of the VNodes corresponding to the `<p>` tags and, since they are the
575
+ * same tag in the same position, we'd be able to avoid completely
576
+ * re-rendering the subtree under them with a new DOM element and would just
577
+ * call out to `patch` to handle reconciling their children and so on.
578
+ *
579
+ * 3. Check, for both windows, to see if the element at the beginning of the
580
+ * window corresponds to the element at the end of the other window. This is
581
+ * a heuristic which will let us identify _some_ situations in which
582
+ * elements have changed position, for instance it _should_ detect that the
583
+ * children nodes themselves have not changed but merely moved in the
584
+ * following example:
585
+ *
586
+ * oldVNode: `<div><element-one /><element-two /></div>`
587
+ * newVNode: `<div><element-two /><element-one /></div>`
588
+ *
589
+ * If we find cases like this then we also need to move the concrete DOM
590
+ * elements corresponding to the moved children to write the re-order to the
591
+ * DOM.
592
+ *
593
+ * 4. Finally, if VNodes have the `key` attribute set on them we check for any
594
+ * nodes in the old children which have the same key as the first element in
595
+ * our window on the new children. If we find such a node we handle calling
596
+ * out to `patch`, moving relevant DOM nodes, and so on, in accordance with
597
+ * what we find.
598
+ *
599
+ * Finally, once we've narrowed our 'windows' to the point that either of them
600
+ * collapse (i.e. they have length 0) we then handle any remaining VNode
601
+ * insertion or deletion that needs to happen to get a DOM state that correctly
602
+ * reflects the new child VNodes. If, for instance, after our window on the old
603
+ * children has collapsed we still have more nodes on the new children that
604
+ * we haven't dealt with yet then we need to add them, or if the new children
605
+ * collapse but we still have unhandled _old_ children then we need to make
606
+ * sure the corresponding DOM nodes are removed.
607
+ *
608
+ * @param parentElm the node into which the parent VNode is rendered
609
+ * @param oldCh the old children of the parent node
610
+ * @param newVNode the new VNode which will replace the parent
611
+ * @param newCh the new children of the parent node
612
+ */
535
613
  const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
536
614
  let oldStartIdx = 0;
537
615
  let newStartIdx = 0;
@@ -544,7 +622,7 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
544
622
  let node;
545
623
  while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
546
624
  if (oldStartVnode == null) {
547
- // Vnode might have been moved left
625
+ // VNode might have been moved left
548
626
  oldStartVnode = oldCh[++oldStartIdx];
549
627
  }
550
628
  else if (oldEndVnode == null) {
@@ -557,42 +635,102 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
557
635
  newEndVnode = newCh[--newEndIdx];
558
636
  }
559
637
  else if (isSameVnode(oldStartVnode, newStartVnode)) {
638
+ // if the start nodes are the same then we should patch the new VNode
639
+ // onto the old one, and increment our `newStartIdx` and `oldStartIdx`
640
+ // indices to reflect that. We don't need to move any DOM Nodes around
641
+ // since things are matched up in order.
560
642
  patch(oldStartVnode, newStartVnode);
561
643
  oldStartVnode = oldCh[++oldStartIdx];
562
644
  newStartVnode = newCh[++newStartIdx];
563
645
  }
564
646
  else if (isSameVnode(oldEndVnode, newEndVnode)) {
647
+ // likewise, if the end nodes are the same we patch new onto old and
648
+ // decrement our end indices, and also likewise in this case we don't
649
+ // need to move any DOM Nodes.
565
650
  patch(oldEndVnode, newEndVnode);
566
651
  oldEndVnode = oldCh[--oldEndIdx];
567
652
  newEndVnode = newCh[--newEndIdx];
568
653
  }
569
654
  else if (isSameVnode(oldStartVnode, newEndVnode)) {
570
- // Vnode moved right
655
+ // case: "Vnode moved right"
656
+ //
657
+ // We've found that the last node in our window on the new children is
658
+ // the same VNode as the _first_ node in our window on the old children
659
+ // we're dealing with now. Visually, this is the layout of these two
660
+ // nodes:
661
+ //
662
+ // newCh: [..., newStartVnode , ... , newEndVnode , ...]
663
+ // ^^^^^^^^^^^
664
+ // oldCh: [..., oldStartVnode , ... , oldEndVnode , ...]
665
+ // ^^^^^^^^^^^^^
666
+ //
667
+ // In this situation we need to patch `newEndVnode` onto `oldStartVnode`
668
+ // and move the DOM element for `oldStartVnode`.
571
669
  if ((oldStartVnode.$tag$ === 'slot' || newEndVnode.$tag$ === 'slot')) {
572
670
  putBackInOriginalLocation(oldStartVnode.$elm$.parentNode, false);
573
671
  }
574
672
  patch(oldStartVnode, newEndVnode);
673
+ // We need to move the element for `oldStartVnode` into a position which
674
+ // will be appropriate for `newEndVnode`. For this we can use
675
+ // `.insertBefore` and `oldEndVnode.$elm$.nextSibling`. If there is a
676
+ // sibling for `oldEndVnode.$elm$` then we want to move the DOM node for
677
+ // `oldStartVnode` between `oldEndVnode` and it's sibling, like so:
678
+ //
679
+ // <old-start-node />
680
+ // <some-intervening-node />
681
+ // <old-end-node />
682
+ // <!-- -> <-- `oldStartVnode.$elm$` should be inserted here
683
+ // <next-sibling />
684
+ //
685
+ // If instead `oldEndVnode.$elm$` has no sibling then we just want to put
686
+ // the node for `oldStartVnode` at the end of the children of
687
+ // `parentElm`. Luckily, `Node.nextSibling` will return `null` if there
688
+ // aren't any siblings, and passing `null` to `Node.insertBefore` will
689
+ // append it to the children of the parent element.
575
690
  parentElm.insertBefore(oldStartVnode.$elm$, oldEndVnode.$elm$.nextSibling);
576
691
  oldStartVnode = oldCh[++oldStartIdx];
577
692
  newEndVnode = newCh[--newEndIdx];
578
693
  }
579
694
  else if (isSameVnode(oldEndVnode, newStartVnode)) {
580
- // Vnode moved left
695
+ // case: "Vnode moved left"
696
+ //
697
+ // We've found that the first node in our window on the new children is
698
+ // the same VNode as the _last_ node in our window on the old children.
699
+ // Visually, this is the layout of these two nodes:
700
+ //
701
+ // newCh: [..., newStartVnode , ... , newEndVnode , ...]
702
+ // ^^^^^^^^^^^^^
703
+ // oldCh: [..., oldStartVnode , ... , oldEndVnode , ...]
704
+ // ^^^^^^^^^^^
705
+ //
706
+ // In this situation we need to patch `newStartVnode` onto `oldEndVnode`
707
+ // (which will handle updating any changed attributes, reconciling their
708
+ // children etc) but we also need to move the DOM node to which
709
+ // `oldEndVnode` corresponds.
581
710
  if ((oldStartVnode.$tag$ === 'slot' || newEndVnode.$tag$ === 'slot')) {
582
711
  putBackInOriginalLocation(oldEndVnode.$elm$.parentNode, false);
583
712
  }
584
713
  patch(oldEndVnode, newStartVnode);
714
+ // We've already checked above if `oldStartVnode` and `newStartVnode` are
715
+ // the same node, so since we're here we know that they are not. Thus we
716
+ // can move the element for `oldEndVnode` _before_ the element for
717
+ // `oldStartVnode`, leaving `oldStartVnode` to be reconciled in the
718
+ // future.
585
719
  parentElm.insertBefore(oldEndVnode.$elm$, oldStartVnode.$elm$);
586
720
  oldEndVnode = oldCh[--oldEndIdx];
587
721
  newStartVnode = newCh[++newStartIdx];
588
722
  }
589
723
  else {
590
724
  {
591
- // new element
725
+ // We either didn't find an element in the old children that matches
726
+ // the key of the first new child OR the build is not using `key`
727
+ // attributes at all. In either case we need to create a new element
728
+ // for the new node.
592
729
  node = createElm(oldCh && oldCh[newStartIdx], newVNode, newStartIdx, parentElm);
593
730
  newStartVnode = newCh[++newStartIdx];
594
731
  }
595
732
  if (node) {
733
+ // if we created a new node then handle inserting it to the DOM
596
734
  {
597
735
  parentReferenceNode(oldStartVnode.$elm$).insertBefore(node, referenceNode(oldStartVnode.$elm$));
598
736
  }
@@ -600,18 +738,39 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
600
738
  }
601
739
  }
602
740
  if (oldStartIdx > oldEndIdx) {
741
+ // we have some more new nodes to add which don't match up with old nodes
603
742
  addVnodes(parentElm, newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].$elm$, newVNode, newCh, newStartIdx, newEndIdx);
604
743
  }
605
744
  else if (newStartIdx > newEndIdx) {
745
+ // there are nodes in the `oldCh` array which no longer correspond to nodes
746
+ // in the new array, so lets remove them (which entails cleaning up the
747
+ // relevant DOM nodes)
606
748
  removeVnodes(oldCh, oldStartIdx, oldEndIdx);
607
749
  }
608
750
  };
609
- const isSameVnode = (vnode1, vnode2) => {
751
+ /**
752
+ * Compare two VNodes to determine if they are the same
753
+ *
754
+ * **NB**: This function is an equality _heuristic_ based on the available
755
+ * information set on the two VNodes and can be misleading under certain
756
+ * circumstances. In particular, if the two nodes do not have `key` attrs
757
+ * (available under `$key$` on VNodes) then the function falls back on merely
758
+ * checking that they have the same tag.
759
+ *
760
+ * So, in other words, if `key` attrs are not set on VNodes which may be
761
+ * changing order within a `children` array or something along those lines then
762
+ * we could obtain a false positive and then have to do needless re-rendering.
763
+ *
764
+ * @param leftVNode the first VNode to check
765
+ * @param rightVNode the second VNode to check
766
+ * @returns whether they're equal or not
767
+ */
768
+ const isSameVnode = (leftVNode, rightVNode) => {
610
769
  // compare if two vnode to see if they're "technically" the same
611
770
  // need to have the same element tag, and same key to be the same
612
- if (vnode1.$tag$ === vnode2.$tag$) {
613
- if (vnode1.$tag$ === 'slot') {
614
- return vnode1.$name$ === vnode2.$name$;
771
+ if (leftVNode.$tag$ === rightVNode.$tag$) {
772
+ if (leftVNode.$tag$ === 'slot') {
773
+ return leftVNode.$name$ === rightVNode.$name$;
615
774
  }
616
775
  return true;
617
776
  }
@@ -625,6 +784,14 @@ const referenceNode = (node) => {
625
784
  return (node && node['s-ol']) || node;
626
785
  };
627
786
  const parentReferenceNode = (node) => (node['s-ol'] ? node['s-ol'] : node).parentNode;
787
+ /**
788
+ * Handle reconciling an outdated VNode with a new one which corresponds to
789
+ * it. This function handles flushing updates to the DOM and reconciling the
790
+ * children of the two nodes (if any).
791
+ *
792
+ * @param oldVNode an old VNode whose DOM element and children we want to update
793
+ * @param newVNode a new VNode representing an updated version of the old one
794
+ */
628
795
  const patch = (oldVNode, newVNode) => {
629
796
  const elm = (newVNode.$elm$ = oldVNode.$elm$);
630
797
  const oldChildren = oldVNode.$children$;
@@ -633,7 +800,6 @@ const patch = (oldVNode, newVNode) => {
633
800
  const text = newVNode.$text$;
634
801
  let defaultHolder;
635
802
  if (text === null) {
636
- // element node
637
803
  {
638
804
  if (tag === 'slot')
639
805
  ;
@@ -646,6 +812,7 @@ const patch = (oldVNode, newVNode) => {
646
812
  }
647
813
  if (oldChildren !== null && newChildren !== null) {
648
814
  // looks like there's child vnodes for both the old and new vnodes
815
+ // so we need to call `updateChildren` to reconcile them
649
816
  updateChildren(elm, oldChildren, newVNode, newChildren);
650
817
  }
651
818
  else if (newChildren !== null) {
@@ -683,7 +850,7 @@ const updateFallbackSlotVisibility = (elm) => {
683
850
  let nodeType;
684
851
  for (i = 0, ilen = childNodes.length; i < ilen; i++) {
685
852
  childNode = childNodes[i];
686
- if (childNode.nodeType === 1 /* ElementNode */) {
853
+ if (childNode.nodeType === 1 /* NODE_TYPE.ElementNode */) {
687
854
  if (childNode['s-sr']) {
688
855
  // this is a slot fallback node
689
856
  // get the slot name for this slot reference node
@@ -695,7 +862,7 @@ const updateFallbackSlotVisibility = (elm) => {
695
862
  nodeType = childNodes[j].nodeType;
696
863
  if (childNodes[j]['s-hn'] !== childNode['s-hn'] || slotNameAttr !== '') {
697
864
  // this sibling node is from a different component OR is a named fallback slot node
698
- if (nodeType === 1 /* ElementNode */ && slotNameAttr === childNodes[j].getAttribute('slot')) {
865
+ if (nodeType === 1 /* NODE_TYPE.ElementNode */ && slotNameAttr === childNodes[j].getAttribute('slot')) {
699
866
  childNode.hidden = true;
700
867
  break;
701
868
  }
@@ -704,8 +871,8 @@ const updateFallbackSlotVisibility = (elm) => {
704
871
  // this is a default fallback slot node
705
872
  // any element or text node (with content)
706
873
  // should hide the default fallback slot node
707
- if (nodeType === 1 /* ElementNode */ ||
708
- (nodeType === 3 /* TextNode */ && childNodes[j].textContent.trim() !== '')) {
874
+ if (nodeType === 1 /* NODE_TYPE.ElementNode */ ||
875
+ (nodeType === 3 /* NODE_TYPE.TextNode */ && childNodes[j].textContent.trim() !== '')) {
709
876
  childNode.hidden = true;
710
877
  break;
711
878
  }
@@ -783,13 +950,13 @@ const relocateSlotContent = (elm) => {
783
950
  }
784
951
  }
785
952
  }
786
- if (childNode.nodeType === 1 /* ElementNode */) {
953
+ if (childNode.nodeType === 1 /* NODE_TYPE.ElementNode */) {
787
954
  relocateSlotContent(childNode);
788
955
  }
789
956
  }
790
957
  };
791
958
  const isNodeLocatedInSlot = (nodeToRelocate, slotNameAttr) => {
792
- if (nodeToRelocate.nodeType === 1 /* ElementNode */) {
959
+ if (nodeToRelocate.nodeType === 1 /* NODE_TYPE.ElementNode */) {
793
960
  if (nodeToRelocate.getAttribute('slot') === null && slotNameAttr === '') {
794
961
  return true;
795
962
  }
@@ -814,7 +981,7 @@ const renderVdom = (hostRef, renderFnResults) => {
814
981
  cmpMeta.$attrsToReflect$.map(([propName, attribute]) => (rootVnode.$attrs$[attribute] = hostElm[propName]));
815
982
  }
816
983
  rootVnode.$tag$ = null;
817
- rootVnode.$flags$ |= 4 /* isHost */;
984
+ rootVnode.$flags$ |= 4 /* VNODE_FLAGS.isHost */;
818
985
  hostRef.$vnode$ = rootVnode;
819
986
  rootVnode.$elm$ = oldVNode.$elm$ = (hostElm.shadowRoot || hostElm );
820
987
  {
@@ -822,7 +989,7 @@ const renderVdom = (hostRef, renderFnResults) => {
822
989
  }
823
990
  {
824
991
  contentRef = hostElm['s-cr'];
825
- useNativeShadowDom = supportsShadow && (cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) !== 0;
992
+ useNativeShadowDom = supportsShadow && (cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */) !== 0;
826
993
  // always reset
827
994
  checkSlotFallbackVisibility = false;
828
995
  }
@@ -831,7 +998,7 @@ const renderVdom = (hostRef, renderFnResults) => {
831
998
  {
832
999
  // while we're moving nodes around existing nodes, temporarily disable
833
1000
  // the disconnectCallback from working
834
- plt.$flags$ |= 1 /* isTmpDisconnected */;
1001
+ plt.$flags$ |= 1 /* PLATFORM_FLAGS.isTmpDisconnected */;
835
1002
  if (checkSlotRelocate) {
836
1003
  relocateSlotContent(rootVnode.$elm$);
837
1004
  let relocateData;
@@ -889,7 +1056,7 @@ const renderVdom = (hostRef, renderFnResults) => {
889
1056
  }
890
1057
  else {
891
1058
  // this node doesn't have a slot home to go to, so let's hide it
892
- if (nodeToRelocate.nodeType === 1 /* ElementNode */) {
1059
+ if (nodeToRelocate.nodeType === 1 /* NODE_TYPE.ElementNode */) {
893
1060
  nodeToRelocate.hidden = true;
894
1061
  }
895
1062
  }
@@ -900,7 +1067,7 @@ const renderVdom = (hostRef, renderFnResults) => {
900
1067
  }
901
1068
  // done moving nodes around
902
1069
  // allow the disconnect callback to work again
903
- plt.$flags$ &= ~1 /* isTmpDisconnected */;
1070
+ plt.$flags$ &= ~1 /* PLATFORM_FLAGS.isTmpDisconnected */;
904
1071
  // always reset
905
1072
  relocateNodes.length = 0;
906
1073
  }
@@ -911,9 +1078,9 @@ const createEvent = (ref, name, flags) => {
911
1078
  return {
912
1079
  emit: (detail) => {
913
1080
  return emitEvent(elm, name, {
914
- bubbles: !!(flags & 4 /* Bubbles */),
915
- composed: !!(flags & 2 /* Composed */),
916
- cancelable: !!(flags & 1 /* Cancellable */),
1081
+ bubbles: !!(flags & 4 /* EVENT_FLAGS.Bubbles */),
1082
+ composed: !!(flags & 2 /* EVENT_FLAGS.Composed */),
1083
+ cancelable: !!(flags & 1 /* EVENT_FLAGS.Cancellable */),
917
1084
  detail,
918
1085
  });
919
1086
  },
@@ -938,10 +1105,10 @@ const attachToAncestor = (hostRef, ancestorComponent) => {
938
1105
  };
939
1106
  const scheduleUpdate = (hostRef, isInitialLoad) => {
940
1107
  {
941
- hostRef.$flags$ |= 16 /* isQueuedForUpdate */;
1108
+ hostRef.$flags$ |= 16 /* HOST_FLAGS.isQueuedForUpdate */;
942
1109
  }
943
- if (hostRef.$flags$ & 4 /* isWaitingForChildren */) {
944
- hostRef.$flags$ |= 512 /* needsRerender */;
1110
+ if (hostRef.$flags$ & 4 /* HOST_FLAGS.isWaitingForChildren */) {
1111
+ hostRef.$flags$ |= 512 /* HOST_FLAGS.needsRerender */;
945
1112
  return;
946
1113
  }
947
1114
  attachToAncestor(hostRef, hostRef.$ancestorComponent$);
@@ -957,7 +1124,7 @@ const dispatchHooks = (hostRef, isInitialLoad) => {
957
1124
  let promise;
958
1125
  if (isInitialLoad) {
959
1126
  {
960
- hostRef.$flags$ |= 256 /* isListenReady */;
1127
+ hostRef.$flags$ |= 256 /* HOST_FLAGS.isListenReady */;
961
1128
  if (hostRef.$queuedListeners$) {
962
1129
  hostRef.$queuedListeners$.map(([methodName, event]) => safeCall(instance, methodName, event));
963
1130
  hostRef.$queuedListeners$ = null;
@@ -1000,7 +1167,7 @@ const updateComponent = async (hostRef, instance, isInitialLoad) => {
1000
1167
  }
1001
1168
  else {
1002
1169
  Promise.all(childrenPromises).then(postUpdate);
1003
- hostRef.$flags$ |= 4 /* isWaitingForChildren */;
1170
+ hostRef.$flags$ |= 4 /* HOST_FLAGS.isWaitingForChildren */;
1004
1171
  childrenPromises.length = 0;
1005
1172
  }
1006
1173
  }
@@ -1009,10 +1176,10 @@ const callRender = (hostRef, instance, elm) => {
1009
1176
  try {
1010
1177
  instance = instance.render() ;
1011
1178
  {
1012
- hostRef.$flags$ &= ~16 /* isQueuedForUpdate */;
1179
+ hostRef.$flags$ &= ~16 /* HOST_FLAGS.isQueuedForUpdate */;
1013
1180
  }
1014
1181
  {
1015
- hostRef.$flags$ |= 2 /* hasRendered */;
1182
+ hostRef.$flags$ |= 2 /* HOST_FLAGS.hasRendered */;
1016
1183
  }
1017
1184
  {
1018
1185
  {
@@ -1039,8 +1206,8 @@ const postUpdateComponent = (hostRef) => {
1039
1206
  {
1040
1207
  safeCall(instance, 'componentDidRender');
1041
1208
  }
1042
- if (!(hostRef.$flags$ & 64 /* hasLoadedComponent */)) {
1043
- hostRef.$flags$ |= 64 /* hasLoadedComponent */;
1209
+ if (!(hostRef.$flags$ & 64 /* HOST_FLAGS.hasLoadedComponent */)) {
1210
+ hostRef.$flags$ |= 64 /* HOST_FLAGS.hasLoadedComponent */;
1044
1211
  {
1045
1212
  // DOM WRITE!
1046
1213
  addHydratedFlag(elm);
@@ -1069,10 +1236,10 @@ const postUpdateComponent = (hostRef) => {
1069
1236
  hostRef.$onRenderResolve$();
1070
1237
  hostRef.$onRenderResolve$ = undefined;
1071
1238
  }
1072
- if (hostRef.$flags$ & 512 /* needsRerender */) {
1239
+ if (hostRef.$flags$ & 512 /* HOST_FLAGS.needsRerender */) {
1073
1240
  nextTick(() => scheduleUpdate(hostRef, false));
1074
1241
  }
1075
- hostRef.$flags$ &= ~(4 /* isWaitingForChildren */ | 512 /* needsRerender */);
1242
+ hostRef.$flags$ &= ~(4 /* HOST_FLAGS.isWaitingForChildren */ | 512 /* HOST_FLAGS.needsRerender */);
1076
1243
  }
1077
1244
  // ( •_•)
1078
1245
  // ( •_•)>⌐■-■
@@ -1128,16 +1295,16 @@ const addHydratedFlag = (elm) => elm.setAttribute('hydrated', '')
1128
1295
  const parsePropertyValue = (propValue, propType) => {
1129
1296
  // ensure this value is of the correct prop type
1130
1297
  if (propValue != null && !isComplexType(propValue)) {
1131
- if (propType & 4 /* Boolean */) {
1298
+ if (propType & 4 /* MEMBER_FLAGS.Boolean */) {
1132
1299
  // per the HTML spec, any string value means it is a boolean true value
1133
1300
  // but we'll cheat here and say that the string "false" is the boolean false
1134
1301
  return propValue === 'false' ? false : propValue === '' || !!propValue;
1135
1302
  }
1136
- if (propType & 2 /* Number */) {
1303
+ if (propType & 2 /* MEMBER_FLAGS.Number */) {
1137
1304
  // force it to be a number
1138
1305
  return parseFloat(propValue);
1139
1306
  }
1140
- if (propType & 1 /* String */) {
1307
+ if (propType & 1 /* MEMBER_FLAGS.String */) {
1141
1308
  // could have been passed as a number or boolean
1142
1309
  // but we still want it as a string
1143
1310
  return String(propValue);
@@ -1161,13 +1328,13 @@ const setValue = (ref, propName, newVal, cmpMeta) => {
1161
1328
  // explicitly check for NaN on both sides, as `NaN === NaN` is always false
1162
1329
  const areBothNaN = Number.isNaN(oldVal) && Number.isNaN(newVal);
1163
1330
  const didValueChange = newVal !== oldVal && !areBothNaN;
1164
- if ((!(flags & 8 /* isConstructingInstance */) || oldVal === undefined) && didValueChange) {
1331
+ if ((!(flags & 8 /* HOST_FLAGS.isConstructingInstance */) || oldVal === undefined) && didValueChange) {
1165
1332
  // gadzooks! the property's value has changed!!
1166
1333
  // set our new value!
1167
1334
  hostRef.$instanceValues$.set(propName, newVal);
1168
1335
  if (instance) {
1169
1336
  // get an array of method names of watch functions to call
1170
- if (cmpMeta.$watchers$ && flags & 128 /* isWatchReady */) {
1337
+ if (cmpMeta.$watchers$ && flags & 128 /* HOST_FLAGS.isWatchReady */) {
1171
1338
  const watchMethods = cmpMeta.$watchers$[propName];
1172
1339
  if (watchMethods) {
1173
1340
  // this instance is watching for when this property changed
@@ -1182,7 +1349,7 @@ const setValue = (ref, propName, newVal, cmpMeta) => {
1182
1349
  });
1183
1350
  }
1184
1351
  }
1185
- if ((flags & (2 /* hasRendered */ | 16 /* isQueuedForUpdate */)) === 2 /* hasRendered */) {
1352
+ if ((flags & (2 /* HOST_FLAGS.hasRendered */ | 16 /* HOST_FLAGS.isQueuedForUpdate */)) === 2 /* HOST_FLAGS.hasRendered */) {
1186
1353
  // looks like this value actually changed, so we've got work to do!
1187
1354
  // but only if we've already rendered, otherwise just chill out
1188
1355
  // queue that we need to do an update, but don't worry about queuing
@@ -1201,8 +1368,8 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1201
1368
  const members = Object.entries(cmpMeta.$members$);
1202
1369
  const prototype = Cstr.prototype;
1203
1370
  members.map(([memberName, [memberFlags]]) => {
1204
- if ((memberFlags & 31 /* Prop */ ||
1205
- ((flags & 2 /* proxyState */) && memberFlags & 32 /* State */))) {
1371
+ if ((memberFlags & 31 /* MEMBER_FLAGS.Prop */ ||
1372
+ ((flags & 2 /* PROXY_FLAGS.proxyState */) && memberFlags & 32 /* MEMBER_FLAGS.State */))) {
1206
1373
  // proxyComponent - prop
1207
1374
  Object.defineProperty(prototype, memberName, {
1208
1375
  get() {
@@ -1217,8 +1384,8 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1217
1384
  enumerable: true,
1218
1385
  });
1219
1386
  }
1220
- else if (flags & 1 /* isElementConstructor */ &&
1221
- memberFlags & 64 /* Method */) {
1387
+ else if (flags & 1 /* PROXY_FLAGS.isElementConstructor */ &&
1388
+ memberFlags & 64 /* MEMBER_FLAGS.Method */) {
1222
1389
  // proxyComponent - method
1223
1390
  Object.defineProperty(prototype, memberName, {
1224
1391
  value(...args) {
@@ -1228,7 +1395,7 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1228
1395
  });
1229
1396
  }
1230
1397
  });
1231
- if ((flags & 1 /* isElementConstructor */)) {
1398
+ if ((flags & 1 /* PROXY_FLAGS.isElementConstructor */)) {
1232
1399
  const attrNameToPropName = new Map();
1233
1400
  prototype.attributeChangedCallback = function (attrName, _oldValue, newValue) {
1234
1401
  plt.jmp(() => {
@@ -1284,11 +1451,11 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1284
1451
  // create an array of attributes to observe
1285
1452
  // and also create a map of html attribute name to js property name
1286
1453
  Cstr.observedAttributes = members
1287
- .filter(([_, m]) => m[0] & 15 /* HasAttribute */) // filter to only keep props that should match attributes
1454
+ .filter(([_, m]) => m[0] & 15 /* MEMBER_FLAGS.HasAttribute */) // filter to only keep props that should match attributes
1288
1455
  .map(([propName, m]) => {
1289
1456
  const attrName = m[1] || propName;
1290
1457
  attrNameToPropName.set(attrName, propName);
1291
- if (m[0] & 512 /* ReflectAttr */) {
1458
+ if (m[0] & 512 /* MEMBER_FLAGS.ReflectAttr */) {
1292
1459
  cmpMeta.$attrsToReflect$.push([propName, attrName]);
1293
1460
  }
1294
1461
  return attrName;
@@ -1299,10 +1466,10 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1299
1466
  };
1300
1467
  const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) => {
1301
1468
  // initializeComponent
1302
- if ((hostRef.$flags$ & 32 /* hasInitializedComponent */) === 0) {
1469
+ if ((hostRef.$flags$ & 32 /* HOST_FLAGS.hasInitializedComponent */) === 0) {
1303
1470
  {
1304
1471
  // we haven't initialized this element yet
1305
- hostRef.$flags$ |= 32 /* hasInitializedComponent */;
1472
+ hostRef.$flags$ |= 32 /* HOST_FLAGS.hasInitializedComponent */;
1306
1473
  // lazy loaded components
1307
1474
  // request the component's implementation to be
1308
1475
  // wired up with the host element
@@ -1320,7 +1487,7 @@ const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) =>
1320
1487
  {
1321
1488
  cmpMeta.$watchers$ = Cstr.watchers;
1322
1489
  }
1323
- proxyComponent(Cstr, cmpMeta, 2 /* proxyState */);
1490
+ proxyComponent(Cstr, cmpMeta, 2 /* PROXY_FLAGS.proxyState */);
1324
1491
  Cstr.isProxied = true;
1325
1492
  }
1326
1493
  const endNewInstance = createTime('createInstance', cmpMeta.$tagName$);
@@ -1328,7 +1495,7 @@ const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) =>
1328
1495
  // but let's keep track of when we start and stop
1329
1496
  // so that the getters/setters don't incorrectly step on data
1330
1497
  {
1331
- hostRef.$flags$ |= 8 /* isConstructingInstance */;
1498
+ hostRef.$flags$ |= 8 /* HOST_FLAGS.isConstructingInstance */;
1332
1499
  }
1333
1500
  // construct the lazy-loaded component implementation
1334
1501
  // passing the hostRef is very important during
@@ -1341,10 +1508,10 @@ const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) =>
1341
1508
  consoleError(e);
1342
1509
  }
1343
1510
  {
1344
- hostRef.$flags$ &= ~8 /* isConstructingInstance */;
1511
+ hostRef.$flags$ &= ~8 /* HOST_FLAGS.isConstructingInstance */;
1345
1512
  }
1346
1513
  {
1347
- hostRef.$flags$ |= 128 /* isWatchReady */;
1514
+ hostRef.$flags$ |= 128 /* HOST_FLAGS.isWatchReady */;
1348
1515
  }
1349
1516
  endNewInstance();
1350
1517
  fireConnectedCallback(hostRef.$lazyInstance$);
@@ -1355,10 +1522,10 @@ const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) =>
1355
1522
  const scopeId = getScopeId(cmpMeta);
1356
1523
  if (!styles.has(scopeId)) {
1357
1524
  const endRegisterStyles = createTime('registerStyles', cmpMeta.$tagName$);
1358
- if (cmpMeta.$flags$ & 8 /* needsShadowDomShim */) {
1359
- style = await import('./shadow-css-4cd4480f.js').then((m) => m.scopeCss(style, scopeId, false));
1525
+ if (cmpMeta.$flags$ & 8 /* CMP_FLAGS.needsShadowDomShim */) {
1526
+ style = await import('./shadow-css-4261c637.js').then((m) => m.scopeCss(style, scopeId, false));
1360
1527
  }
1361
- registerStyle(scopeId, style, !!(cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */));
1528
+ registerStyle(scopeId, style, !!(cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */));
1362
1529
  endRegisterStyles();
1363
1530
  }
1364
1531
  }
@@ -1385,19 +1552,19 @@ const fireConnectedCallback = (instance) => {
1385
1552
  }
1386
1553
  };
1387
1554
  const connectedCallback = (elm) => {
1388
- if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {
1555
+ if ((plt.$flags$ & 1 /* PLATFORM_FLAGS.isTmpDisconnected */) === 0) {
1389
1556
  const hostRef = getHostRef(elm);
1390
1557
  const cmpMeta = hostRef.$cmpMeta$;
1391
1558
  const endConnected = createTime('connectedCallback', cmpMeta.$tagName$);
1392
- if (!(hostRef.$flags$ & 1 /* hasConnected */)) {
1559
+ if (!(hostRef.$flags$ & 1 /* HOST_FLAGS.hasConnected */)) {
1393
1560
  // first time this component has connected
1394
- hostRef.$flags$ |= 1 /* hasConnected */;
1561
+ hostRef.$flags$ |= 1 /* HOST_FLAGS.hasConnected */;
1395
1562
  {
1396
1563
  // initUpdate
1397
1564
  // if the slot polyfill is required we'll need to put some nodes
1398
1565
  // in here to act as original content anchors as we move nodes around
1399
1566
  // host element has been connected to the DOM
1400
- if ((cmpMeta.$flags$ & (4 /* hasSlotRelocation */ | 8 /* needsShadowDomShim */))) {
1567
+ if ((cmpMeta.$flags$ & (4 /* CMP_FLAGS.hasSlotRelocation */ | 8 /* CMP_FLAGS.needsShadowDomShim */))) {
1401
1568
  setContentReference(elm);
1402
1569
  }
1403
1570
  }
@@ -1420,7 +1587,7 @@ const connectedCallback = (elm) => {
1420
1587
  // https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties
1421
1588
  if (cmpMeta.$members$) {
1422
1589
  Object.entries(cmpMeta.$members$).map(([memberName, [memberFlags]]) => {
1423
- if (memberFlags & 31 /* Prop */ && elm.hasOwnProperty(memberName)) {
1590
+ if (memberFlags & 31 /* MEMBER_FLAGS.Prop */ && elm.hasOwnProperty(memberName)) {
1424
1591
  const value = elm[memberName];
1425
1592
  delete elm[memberName];
1426
1593
  elm[memberName] = value;
@@ -1454,7 +1621,7 @@ const setContentReference = (elm) => {
1454
1621
  elm.insertBefore(contentRefElm, elm.firstChild);
1455
1622
  };
1456
1623
  const disconnectedCallback = (elm) => {
1457
- if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {
1624
+ if ((plt.$flags$ & 1 /* PLATFORM_FLAGS.isTmpDisconnected */) === 0) {
1458
1625
  const hostRef = getHostRef(elm);
1459
1626
  const instance = hostRef.$lazyInstance$ ;
1460
1627
  {
@@ -1501,8 +1668,8 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
1501
1668
  {
1502
1669
  cmpMeta.$watchers$ = {};
1503
1670
  }
1504
- if (!supportsShadow && cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {
1505
- cmpMeta.$flags$ |= 8 /* needsShadowDomShim */;
1671
+ if (!supportsShadow && cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */) {
1672
+ cmpMeta.$flags$ |= 8 /* CMP_FLAGS.needsShadowDomShim */;
1506
1673
  }
1507
1674
  const tagName = cmpMeta.$tagName$;
1508
1675
  const HostElement = class extends HTMLElement {
@@ -1512,7 +1679,7 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
1512
1679
  super(self);
1513
1680
  self = this;
1514
1681
  registerHost(self, cmpMeta);
1515
- if (cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {
1682
+ if (cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */) {
1516
1683
  // this component is using shadow dom
1517
1684
  // and this browser supports shadow dom
1518
1685
  // add the read-only property "shadowRoot" to the host element
@@ -1550,7 +1717,7 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
1550
1717
  cmpMeta.$lazyBundleId$ = lazyBundle[0];
1551
1718
  if (!exclude.includes(tagName) && !customElements.get(tagName)) {
1552
1719
  cmpTags.push(tagName);
1553
- customElements.define(tagName, proxyComponent(HostElement, cmpMeta, 1 /* isElementConstructor */));
1720
+ customElements.define(tagName, proxyComponent(HostElement, cmpMeta, 1 /* PROXY_FLAGS.isElementConstructor */));
1554
1721
  }
1555
1722
  });
1556
1723
  });
@@ -1572,7 +1739,7 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
1572
1739
  // Fallback appLoad event
1573
1740
  endBootstrap();
1574
1741
  };
1575
- const hostRefs = new WeakMap();
1742
+ const hostRefs = /*@__PURE__*/ new WeakMap();
1576
1743
  const getHostRef = (ref) => hostRefs.get(ref);
1577
1744
  const registerInstance = (lazyInstance, hostRef) => hostRefs.set((hostRef.$lazyInstance$ = lazyInstance), hostRef);
1578
1745
  const registerHost = (elm, cmpMeta) => {
@@ -1617,14 +1784,14 @@ const loadModule = (cmpMeta, hostRef, hmrVersionId) => {
1617
1784
  return importedModule[exportName];
1618
1785
  }, consoleError);
1619
1786
  };
1620
- const styles = new Map();
1787
+ const styles = /*@__PURE__*/ new Map();
1621
1788
  const queueDomReads = [];
1622
1789
  const queueDomWrites = [];
1623
1790
  const queueTask = (queue, write) => (cb) => {
1624
1791
  queue.push(cb);
1625
1792
  if (!queuePending) {
1626
1793
  queuePending = true;
1627
- if (write && plt.$flags$ & 4 /* queueSync */) {
1794
+ if (write && plt.$flags$ & 4 /* PLATFORM_FLAGS.queueSync */) {
1628
1795
  nextTick(flush);
1629
1796
  }
1630
1797
  else {