lwc 2.14.1 → 2.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/engine-dom/esm/es2017/engine-dom.js +598 -541
  2. package/dist/engine-dom/iife/es2017/engine-dom.js +600 -540
  3. package/dist/engine-dom/iife/es2017/engine-dom.min.js +1 -1
  4. package/dist/engine-dom/iife/es2017/engine-dom_debug.js +537 -485
  5. package/dist/engine-dom/iife/es5/engine-dom.js +768 -679
  6. package/dist/engine-dom/iife/es5/engine-dom.min.js +1 -1
  7. package/dist/engine-dom/iife/es5/engine-dom_debug.js +692 -621
  8. package/dist/engine-dom/umd/es2017/engine-dom.js +600 -540
  9. package/dist/engine-dom/umd/es2017/engine-dom.min.js +1 -1
  10. package/dist/engine-dom/umd/es2017/engine-dom_debug.js +537 -485
  11. package/dist/engine-dom/umd/es5/engine-dom.js +768 -679
  12. package/dist/engine-dom/umd/es5/engine-dom.min.js +1 -1
  13. package/dist/engine-dom/umd/es5/engine-dom_debug.js +692 -621
  14. package/dist/engine-server/commonjs/es2017/engine-server.js +455 -460
  15. package/dist/engine-server/commonjs/es2017/engine-server.min.js +1 -1
  16. package/dist/engine-server/esm/es2017/engine-server.js +453 -461
  17. package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js +24 -4
  18. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js +24 -4
  19. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.min.js +2 -2
  20. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js +24 -4
  21. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js +29 -3
  22. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.min.js +2 -2
  23. package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js +29 -3
  24. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js +24 -4
  25. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.min.js +2 -2
  26. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js +24 -4
  27. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js +29 -3
  28. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.min.js +2 -2
  29. package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js +29 -3
  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_debug.js +2 -2
  33. package/dist/wire-service/iife/es5/wire-service.js +2 -2
  34. package/dist/wire-service/iife/es5/wire-service_debug.js +2 -2
  35. package/dist/wire-service/umd/es2017/wire-service.js +2 -2
  36. package/dist/wire-service/umd/es2017/wire-service_debug.js +2 -2
  37. package/dist/wire-service/umd/es5/wire-service.js +2 -2
  38. package/dist/wire-service/umd/es5/wire-service_debug.js +2 -2
  39. package/package.json +7 -7
@@ -305,6 +305,7 @@
305
305
 
306
306
  var KEY__IS_NATIVE_SHADOW_ROOT_DEFINED = '$isNativeShadowRootDefined$';
307
307
  var KEY__SHADOW_RESOLVER = '$shadowResolver$';
308
+ var KEY__SHADOW_STATIC = '$shadowStaticNode$';
308
309
  var KEY__SHADOW_TOKEN = '$shadowToken$';
309
310
  var KEY__SYNTHETIC_MODE = '$$lwc-synthetic-mode';
310
311
  var KEY__SCOPED_CSS = '$scoped$';
@@ -368,9 +369,9 @@
368
369
  */
369
370
  // Increment whenever the LWC template compiler changes
370
371
 
371
- var LWC_VERSION = "2.14.1";
372
+ var LWC_VERSION = "2.16.0";
372
373
  var LWC_VERSION_COMMENT_REGEX = /\/\*LWC compiler v([\d.]+)\*\/\s*}/;
373
- /** version: 2.14.1 */
374
+ /** version: 2.16.0 */
374
375
 
375
376
  /*
376
377
  * Copyright (c) 2018, salesforce.com, inc.
@@ -549,8 +550,33 @@
549
550
  setFeatureFlag(name, value);
550
551
  }
551
552
  }
552
- /** version: 2.14.1 */
553
+ /** version: 2.16.0 */
553
554
 
555
+ /*
556
+ * Copyright (c) 2018, salesforce.com, inc.
557
+ * All rights reserved.
558
+ * SPDX-License-Identifier: MIT
559
+ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
560
+ */
561
+ // @ts-ignore
562
+
563
+
564
+ if (process.env.NODE_ENV !== 'production' && typeof __karma__ !== 'undefined') {
565
+ window.addEventListener('test-dummy-flag', function () {
566
+ var hasFlag = false;
567
+
568
+ if (runtimeFlags.DUMMY_TEST_FLAG) {
569
+ hasFlag = true;
570
+ }
571
+
572
+ window.dispatchEvent(new CustomEvent('has-dummy-flag', {
573
+ detail: {
574
+ package: '@lwc/engine-dom',
575
+ hasFlag: hasFlag
576
+ }
577
+ }));
578
+ });
579
+ }
554
580
  /* proxy-compat-disable */
555
581
 
556
582
  /*
@@ -702,237 +728,6 @@
702
728
  }
703
729
 
704
730
  return list;
705
- } //
706
- // Primitives
707
- //
708
-
709
-
710
- var ssr$1;
711
-
712
- function setSsr(ssrImpl) {
713
- ssr$1 = ssrImpl;
714
- }
715
-
716
- var isNativeShadowDefined$1;
717
-
718
- function setIsNativeShadowDefined(isNativeShadowDefinedImpl) {
719
- isNativeShadowDefined$1 = isNativeShadowDefinedImpl;
720
- }
721
-
722
- var isSyntheticShadowDefined$1;
723
-
724
- function setIsSyntheticShadowDefined(isSyntheticShadowDefinedImpl) {
725
- isSyntheticShadowDefined$1 = isSyntheticShadowDefinedImpl;
726
- }
727
-
728
- var HTMLElementExported$1;
729
-
730
- function setHTMLElement(HTMLElementImpl) {
731
- HTMLElementExported$1 = HTMLElementImpl;
732
- }
733
-
734
- var insert$1;
735
-
736
- function setInsert(insertImpl) {
737
- insert$1 = insertImpl;
738
- }
739
-
740
- var remove$1;
741
-
742
- function setRemove(removeImpl) {
743
- remove$1 = removeImpl;
744
- }
745
-
746
- var createElement$2;
747
-
748
- function setCreateElement(createElementImpl) {
749
- createElement$2 = createElementImpl;
750
- }
751
-
752
- var createText$1;
753
-
754
- function setCreateText(createTextImpl) {
755
- createText$1 = createTextImpl;
756
- }
757
-
758
- var createComment$1;
759
-
760
- function setCreateComment(createCommentImpl) {
761
- createComment$1 = createCommentImpl;
762
- }
763
-
764
- var nextSibling$1;
765
-
766
- function setNextSibling(nextSiblingImpl) {
767
- nextSibling$1 = nextSiblingImpl;
768
- }
769
-
770
- var attachShadow$1;
771
-
772
- function setAttachShadow(attachShadowImpl) {
773
- attachShadow$1 = attachShadowImpl;
774
- }
775
-
776
- var getProperty$1;
777
-
778
- function setGetProperty(getPropertyImpl) {
779
- getProperty$1 = getPropertyImpl;
780
- }
781
-
782
- var setProperty$1;
783
-
784
- function setSetProperty(setPropertyImpl) {
785
- setProperty$1 = setPropertyImpl;
786
- }
787
-
788
- var setText$1;
789
-
790
- function setSetText(setTextImpl) {
791
- setText$1 = setTextImpl;
792
- }
793
-
794
- var getAttribute$1;
795
-
796
- function setGetAttribute(getAttributeImpl) {
797
- getAttribute$1 = getAttributeImpl;
798
- }
799
-
800
- var setAttribute$1;
801
-
802
- function setSetAttribute(setAttributeImpl) {
803
- setAttribute$1 = setAttributeImpl;
804
- }
805
-
806
- var removeAttribute$1;
807
-
808
- function setRemoveAttribute(removeAttributeImpl) {
809
- removeAttribute$1 = removeAttributeImpl;
810
- }
811
-
812
- var addEventListener$1;
813
-
814
- function setAddEventListener(addEventListenerImpl) {
815
- addEventListener$1 = addEventListenerImpl;
816
- }
817
-
818
- var removeEventListener$1;
819
-
820
- function setRemoveEventListener(removeEventListenerImpl) {
821
- removeEventListener$1 = removeEventListenerImpl;
822
- }
823
-
824
- var dispatchEvent$1;
825
-
826
- function setDispatchEvent(dispatchEventImpl) {
827
- dispatchEvent$1 = dispatchEventImpl;
828
- }
829
-
830
- var getClassList$1;
831
-
832
- function setGetClassList(getClassListImpl) {
833
- getClassList$1 = getClassListImpl;
834
- }
835
-
836
- var setCSSStyleProperty$1;
837
-
838
- function setSetCSSStyleProperty(setCSSStylePropertyImpl) {
839
- setCSSStyleProperty$1 = setCSSStylePropertyImpl;
840
- }
841
-
842
- var getBoundingClientRect$1;
843
-
844
- function setGetBoundingClientRect(getBoundingClientRectImpl) {
845
- getBoundingClientRect$1 = getBoundingClientRectImpl;
846
- }
847
-
848
- var querySelector$1;
849
-
850
- function setQuerySelector(querySelectorImpl) {
851
- querySelector$1 = querySelectorImpl;
852
- }
853
-
854
- var querySelectorAll$1;
855
-
856
- function setQuerySelectorAll(querySelectorAllImpl) {
857
- querySelectorAll$1 = querySelectorAllImpl;
858
- }
859
-
860
- var getElementsByTagName$1;
861
-
862
- function setGetElementsByTagName(getElementsByTagNameImpl) {
863
- getElementsByTagName$1 = getElementsByTagNameImpl;
864
- }
865
-
866
- var getElementsByClassName$1;
867
-
868
- function setGetElementsByClassName(getElementsByClassNameImpl) {
869
- getElementsByClassName$1 = getElementsByClassNameImpl;
870
- }
871
-
872
- var getChildren$1;
873
-
874
- function setGetChildren(getChildrenImpl) {
875
- getChildren$1 = getChildrenImpl;
876
- }
877
-
878
- var getChildNodes$1;
879
-
880
- function setGetChildNodes(getChildNodesImpl) {
881
- getChildNodes$1 = getChildNodesImpl;
882
- }
883
-
884
- var getFirstChild$1;
885
-
886
- function setGetFirstChild(getFirstChildImpl) {
887
- getFirstChild$1 = getFirstChildImpl;
888
- }
889
-
890
- var getFirstElementChild$1;
891
-
892
- function setGetFirstElementChild(getFirstElementChildImpl) {
893
- getFirstElementChild$1 = getFirstElementChildImpl;
894
- }
895
-
896
- var getLastChild$1;
897
-
898
- function setGetLastChild(getLastChildImpl) {
899
- getLastChild$1 = getLastChildImpl;
900
- }
901
-
902
- var getLastElementChild$1;
903
-
904
- function setGetLastElementChild(getLastElementChildImpl) {
905
- getLastElementChild$1 = getLastElementChildImpl;
906
- }
907
-
908
- var isConnected$1;
909
-
910
- function setIsConnected(isConnectedImpl) {
911
- isConnected$1 = isConnectedImpl;
912
- }
913
-
914
- var insertStylesheet$1;
915
-
916
- function setInsertStylesheet(insertStylesheetImpl) {
917
- insertStylesheet$1 = insertStylesheetImpl;
918
- }
919
-
920
- var assertInstanceOfHTMLElement$1;
921
-
922
- function setAssertInstanceOfHTMLElement(assertInstanceOfHTMLElementImpl) {
923
- assertInstanceOfHTMLElement$1 = assertInstanceOfHTMLElementImpl;
924
- }
925
-
926
- var defineCustomElement$1;
927
-
928
- function setDefineCustomElement(defineCustomElementImpl) {
929
- defineCustomElement$1 = defineCustomElementImpl;
930
- }
931
-
932
- var getCustomElement$1;
933
-
934
- function setGetCustomElement(getCustomElementImpl) {
935
- getCustomElement$1 = getCustomElementImpl;
936
731
  }
937
732
  /*
938
733
  * Copyright (c) 2019, salesforce.com, inc.
@@ -2585,7 +2380,9 @@
2585
2380
  var bridge = def.bridge;
2586
2381
 
2587
2382
  if (process.env.NODE_ENV !== 'production') {
2588
- assertInstanceOfHTMLElement$1(vm.elm, "Component creation requires a DOM element to be associated to ".concat(vm, "."));
2383
+ var _assertInstanceOfHTMLElement = vm.renderer.assertInstanceOfHTMLElement;
2384
+
2385
+ _assertInstanceOfHTMLElement(vm.elm, "Component creation requires a DOM element to be associated to ".concat(vm, "."));
2589
2386
  }
2590
2387
 
2591
2388
  var component = this;
@@ -2629,13 +2426,14 @@
2629
2426
  };
2630
2427
 
2631
2428
  function doAttachShadow(vm) {
2632
- var _attachShadow$;
2429
+ var _attachShadow;
2633
2430
 
2634
2431
  var elm = vm.elm,
2635
2432
  mode = vm.mode,
2636
2433
  shadowMode = vm.shadowMode,
2637
- ctor = vm.def.ctor;
2638
- var shadowRoot = attachShadow$1(elm, (_attachShadow$ = {}, _defineProperty(_attachShadow$, KEY__SYNTHETIC_MODE, shadowMode === 1), _defineProperty(_attachShadow$, "delegatesFocus", Boolean(ctor.delegatesFocus)), _defineProperty(_attachShadow$, "mode", mode), _attachShadow$));
2434
+ ctor = vm.def.ctor,
2435
+ attachShadow = vm.renderer.attachShadow;
2436
+ var shadowRoot = attachShadow(elm, (_attachShadow = {}, _defineProperty(_attachShadow, KEY__SYNTHETIC_MODE, shadowMode === 1), _defineProperty(_attachShadow, "delegatesFocus", Boolean(ctor.delegatesFocus)), _defineProperty(_attachShadow, "mode", mode), _attachShadow));
2639
2437
  vm.shadowRoot = shadowRoot;
2640
2438
  associateVM(shadowRoot, vm);
2641
2439
 
@@ -2656,14 +2454,15 @@
2656
2454
  LightningElement.prototype = {
2657
2455
  constructor: LightningElement,
2658
2456
  dispatchEvent: function dispatchEvent(event) {
2659
- var _getAssociatedVM = getAssociatedVM(this),
2660
- elm = _getAssociatedVM.elm;
2661
-
2662
- return dispatchEvent$1(elm, event);
2457
+ var vm = getAssociatedVM(this);
2458
+ var elm = vm.elm,
2459
+ dispatchEvent = vm.renderer.dispatchEvent;
2460
+ return dispatchEvent(elm, event);
2663
2461
  },
2664
2462
  addEventListener: function addEventListener(type, listener, options) {
2665
2463
  var vm = getAssociatedVM(this);
2666
- var elm = vm.elm;
2464
+ var elm = vm.elm,
2465
+ addEventListener = vm.renderer.addEventListener;
2667
2466
 
2668
2467
  if (process.env.NODE_ENV !== 'production') {
2669
2468
  var _vmBeingRendered2 = getVMBeingRendered();
@@ -2674,99 +2473,105 @@
2674
2473
  }
2675
2474
 
2676
2475
  var wrappedListener = getWrappedComponentsListener(vm, listener);
2677
- addEventListener$1(elm, type, wrappedListener, options);
2476
+ addEventListener(elm, type, wrappedListener, options);
2678
2477
  },
2679
2478
  removeEventListener: function removeEventListener(type, listener, options) {
2680
2479
  var vm = getAssociatedVM(this);
2681
- var elm = vm.elm;
2480
+ var elm = vm.elm,
2481
+ removeEventListener = vm.renderer.removeEventListener;
2682
2482
  var wrappedListener = getWrappedComponentsListener(vm, listener);
2683
- removeEventListener$1(elm, type, wrappedListener, options);
2483
+ removeEventListener(elm, type, wrappedListener, options);
2684
2484
  },
2685
2485
  hasAttribute: function hasAttribute(name) {
2686
- var _getAssociatedVM2 = getAssociatedVM(this),
2687
- elm = _getAssociatedVM2.elm;
2688
-
2689
- return !isNull(getAttribute$1(elm, name));
2486
+ var vm = getAssociatedVM(this);
2487
+ var elm = vm.elm,
2488
+ getAttribute = vm.renderer.getAttribute;
2489
+ return !isNull(getAttribute(elm, name));
2690
2490
  },
2691
2491
  hasAttributeNS: function hasAttributeNS(namespace, name) {
2692
- var _getAssociatedVM3 = getAssociatedVM(this),
2693
- elm = _getAssociatedVM3.elm;
2694
-
2695
- return !isNull(getAttribute$1(elm, name, namespace));
2492
+ var vm = getAssociatedVM(this);
2493
+ var elm = vm.elm,
2494
+ getAttribute = vm.renderer.getAttribute;
2495
+ return !isNull(getAttribute(elm, name, namespace));
2696
2496
  },
2697
2497
  removeAttribute: function removeAttribute(name) {
2698
- var _getAssociatedVM4 = getAssociatedVM(this),
2699
- elm = _getAssociatedVM4.elm;
2700
-
2498
+ var vm = getAssociatedVM(this);
2499
+ var elm = vm.elm,
2500
+ removeAttribute = vm.renderer.removeAttribute;
2701
2501
  unlockAttribute(elm, name);
2702
- removeAttribute$1(elm, name);
2502
+ removeAttribute(elm, name);
2703
2503
  lockAttribute();
2704
2504
  },
2705
2505
  removeAttributeNS: function removeAttributeNS(namespace, name) {
2706
- var _getAssociatedVM5 = getAssociatedVM(this),
2707
- elm = _getAssociatedVM5.elm;
2506
+ var _getAssociatedVM = getAssociatedVM(this),
2507
+ elm = _getAssociatedVM.elm,
2508
+ removeAttribute = _getAssociatedVM.renderer.removeAttribute;
2708
2509
 
2709
2510
  unlockAttribute(elm, name);
2710
- removeAttribute$1(elm, name, namespace);
2511
+ removeAttribute(elm, name, namespace);
2711
2512
  lockAttribute();
2712
2513
  },
2713
2514
  getAttribute: function getAttribute(name) {
2714
- var _getAssociatedVM6 = getAssociatedVM(this),
2715
- elm = _getAssociatedVM6.elm;
2716
-
2717
- return getAttribute$1(elm, name);
2515
+ var vm = getAssociatedVM(this);
2516
+ var elm = vm.elm;
2517
+ var getAttribute = vm.renderer.getAttribute;
2518
+ return getAttribute(elm, name);
2718
2519
  },
2719
2520
  getAttributeNS: function getAttributeNS(namespace, name) {
2720
- var _getAssociatedVM7 = getAssociatedVM(this),
2721
- elm = _getAssociatedVM7.elm;
2722
-
2723
- return getAttribute$1(elm, name, namespace);
2521
+ var vm = getAssociatedVM(this);
2522
+ var elm = vm.elm;
2523
+ var getAttribute = vm.renderer.getAttribute;
2524
+ return getAttribute(elm, name, namespace);
2724
2525
  },
2725
2526
  setAttribute: function setAttribute(name, value) {
2726
2527
  var vm = getAssociatedVM(this);
2727
- var elm = vm.elm;
2528
+ var elm = vm.elm,
2529
+ setAttribute = vm.renderer.setAttribute;
2728
2530
 
2729
2531
  if (process.env.NODE_ENV !== 'production') {
2730
2532
  assert.isFalse(isBeingConstructed(vm), "Failed to construct '".concat(getComponentTag(vm), "': The result must not have attributes."));
2731
2533
  }
2732
2534
 
2733
2535
  unlockAttribute(elm, name);
2734
- setAttribute$1(elm, name, value);
2536
+ setAttribute(elm, name, value);
2735
2537
  lockAttribute();
2736
2538
  },
2737
2539
  setAttributeNS: function setAttributeNS(namespace, name, value) {
2738
2540
  var vm = getAssociatedVM(this);
2739
- var elm = vm.elm;
2541
+ var elm = vm.elm,
2542
+ setAttribute = vm.renderer.setAttribute;
2740
2543
 
2741
2544
  if (process.env.NODE_ENV !== 'production') {
2742
2545
  assert.isFalse(isBeingConstructed(vm), "Failed to construct '".concat(getComponentTag(vm), "': The result must not have attributes."));
2743
2546
  }
2744
2547
 
2745
2548
  unlockAttribute(elm, name);
2746
- setAttribute$1(elm, name, value, namespace);
2549
+ setAttribute(elm, name, value, namespace);
2747
2550
  lockAttribute();
2748
2551
  },
2749
2552
  getBoundingClientRect: function getBoundingClientRect() {
2750
2553
  var vm = getAssociatedVM(this);
2751
- var elm = vm.elm;
2554
+ var elm = vm.elm,
2555
+ getBoundingClientRect = vm.renderer.getBoundingClientRect;
2752
2556
 
2753
2557
  if (process.env.NODE_ENV !== 'production') {
2754
2558
  warnIfInvokedDuringConstruction(vm, 'getBoundingClientRect()');
2755
2559
  }
2756
2560
 
2757
- return getBoundingClientRect$1(elm);
2561
+ return getBoundingClientRect(elm);
2758
2562
  },
2759
2563
 
2760
2564
  get isConnected() {
2761
- var _getAssociatedVM8 = getAssociatedVM(this),
2762
- elm = _getAssociatedVM8.elm;
2763
-
2764
- return isConnected$1(elm);
2565
+ var vm = getAssociatedVM(this);
2566
+ var elm = vm.elm,
2567
+ isConnected = vm.renderer.isConnected;
2568
+ return isConnected(elm);
2765
2569
  },
2766
2570
 
2767
2571
  get classList() {
2768
2572
  var vm = getAssociatedVM(this);
2769
- var elm = vm.elm;
2573
+ var elm = vm.elm,
2574
+ getClassList = vm.renderer.getClassList;
2770
2575
 
2771
2576
  if (process.env.NODE_ENV !== 'production') {
2772
2577
  // TODO [#1290]: this still fails in dev but works in production, eventually, we should
@@ -2774,7 +2579,7 @@
2774
2579
  assert.isFalse(isBeingConstructed(vm), "Failed to construct ".concat(vm, ": The result must not have attributes. Adding or tampering with classname in constructor is not allowed in a web component, use connectedCallback() instead."));
2775
2580
  }
2776
2581
 
2777
- return getClassList$1(elm);
2582
+ return getClassList(elm);
2778
2583
  },
2779
2584
 
2780
2585
  get template() {
@@ -2797,97 +2602,97 @@
2797
2602
  return null;
2798
2603
  },
2799
2604
 
2800
- render: function render() {
2801
- var vm = getAssociatedVM(this);
2802
- return vm.def.template;
2803
- },
2804
- toString: function toString() {
2605
+ get children() {
2805
2606
  var vm = getAssociatedVM(this);
2806
- return "[object ".concat(vm.def.name, "]");
2807
- }
2808
- };
2809
- var queryAndChildGetterDescriptors = create(null); // The reason we don't just call `import * as renderer from '../renderer'` here is that the bundle size
2810
- // is smaller if we reference each function individually. Otherwise Rollup will create one big frozen
2811
- // object representing the renderer, with a lot of methods we don't actually need.
2607
+ var renderer = vm.renderer;
2812
2608
 
2813
- var childGetters = ['children', 'childNodes', 'firstChild', 'firstElementChild', 'lastChild', 'lastElementChild'];
2609
+ if (process.env.NODE_ENV !== 'production') {
2610
+ warnIfInvokedDuringConstruction(vm, 'children');
2611
+ }
2814
2612
 
2815
- function getChildGetter(methodName) {
2816
- switch (methodName) {
2817
- case 'children':
2818
- return getChildren$1;
2613
+ return renderer.getChildren(vm.elm);
2614
+ },
2819
2615
 
2820
- case 'childNodes':
2821
- return getChildNodes$1;
2616
+ get childNodes() {
2617
+ var vm = getAssociatedVM(this);
2618
+ var renderer = vm.renderer;
2822
2619
 
2823
- case 'firstChild':
2824
- return getFirstChild$1;
2620
+ if (process.env.NODE_ENV !== 'production') {
2621
+ warnIfInvokedDuringConstruction(vm, 'childNodes');
2622
+ }
2825
2623
 
2826
- case 'firstElementChild':
2827
- return getFirstElementChild$1;
2624
+ return renderer.getChildNodes(vm.elm);
2625
+ },
2828
2626
 
2829
- case 'lastChild':
2830
- return getLastChild$1;
2627
+ get firstChild() {
2628
+ var vm = getAssociatedVM(this);
2629
+ var renderer = vm.renderer;
2831
2630
 
2832
- case 'lastElementChild':
2833
- return getLastElementChild$1;
2834
- }
2835
- } // Generic passthrough for child getters on HTMLElement to the relevant Renderer APIs
2631
+ if (process.env.NODE_ENV !== 'production') {
2632
+ warnIfInvokedDuringConstruction(vm, 'firstChild');
2633
+ }
2836
2634
 
2635
+ return renderer.getFirstChild(vm.elm);
2636
+ },
2837
2637
 
2838
- var _loop = function _loop() {
2839
- var childGetter = _childGetters[_i7];
2840
- queryAndChildGetterDescriptors[childGetter] = {
2841
- get: function get() {
2842
- var vm = getAssociatedVM(this);
2843
- var elm = vm.elm;
2638
+ get firstElementChild() {
2639
+ var vm = getAssociatedVM(this);
2640
+ var renderer = vm.renderer;
2844
2641
 
2845
- if (process.env.NODE_ENV !== 'production') {
2846
- warnIfInvokedDuringConstruction(vm, childGetter);
2847
- }
2642
+ if (process.env.NODE_ENV !== 'production') {
2643
+ warnIfInvokedDuringConstruction(vm, 'firstElementChild');
2644
+ }
2848
2645
 
2849
- return getChildGetter(childGetter)(elm);
2850
- },
2851
- configurable: true,
2852
- enumerable: true
2853
- };
2854
- };
2646
+ return renderer.getFirstElementChild(vm.elm);
2647
+ },
2855
2648
 
2856
- for (var _i7 = 0, _childGetters = childGetters; _i7 < _childGetters.length; _i7++) {
2857
- _loop();
2858
- }
2649
+ get lastChild() {
2650
+ var vm = getAssociatedVM(this);
2651
+ var renderer = vm.renderer;
2859
2652
 
2860
- var queryMethods = ['getElementsByClassName', 'getElementsByTagName', 'querySelector', 'querySelectorAll'];
2653
+ if (process.env.NODE_ENV !== 'production') {
2654
+ warnIfInvokedDuringConstruction(vm, 'lastChild');
2655
+ }
2861
2656
 
2862
- function getQueryMethod(methodName) {
2863
- switch (methodName) {
2864
- case 'getElementsByClassName':
2865
- return getElementsByClassName$1;
2657
+ return renderer.getLastChild(vm.elm);
2658
+ },
2866
2659
 
2867
- case 'getElementsByTagName':
2868
- return getElementsByTagName$1;
2660
+ get lastElementChild() {
2661
+ var vm = getAssociatedVM(this);
2662
+ var renderer = vm.renderer;
2869
2663
 
2870
- case 'querySelector':
2871
- return querySelector$1;
2664
+ if (process.env.NODE_ENV !== 'production') {
2665
+ warnIfInvokedDuringConstruction(vm, 'lastElementChild');
2666
+ }
2872
2667
 
2873
- case 'querySelectorAll':
2874
- return querySelectorAll$1;
2875
- }
2876
- } // Generic passthrough for query APIs on HTMLElement to the relevant Renderer APIs
2668
+ return renderer.getLastElementChild(vm.elm);
2669
+ },
2877
2670
 
2671
+ render: function render() {
2672
+ var vm = getAssociatedVM(this);
2673
+ return vm.def.template;
2674
+ },
2675
+ toString: function toString() {
2676
+ var vm = getAssociatedVM(this);
2677
+ return "[object ".concat(vm.def.name, "]");
2678
+ }
2679
+ };
2680
+ var queryAndChildGetterDescriptors = create(null);
2681
+ var queryMethods = ['getElementsByClassName', 'getElementsByTagName', 'querySelector', 'querySelectorAll']; // Generic passthrough for query APIs on HTMLElement to the relevant Renderer APIs
2878
2682
 
2879
- var _loop2 = function _loop2() {
2880
- var queryMethod = _queryMethods[_i8];
2683
+ var _loop = function _loop() {
2684
+ var queryMethod = _queryMethods[_i7];
2881
2685
  queryAndChildGetterDescriptors[queryMethod] = {
2882
2686
  value: function value(arg) {
2883
2687
  var vm = getAssociatedVM(this);
2884
- var elm = vm.elm;
2688
+ var elm = vm.elm,
2689
+ renderer = vm.renderer;
2885
2690
 
2886
2691
  if (process.env.NODE_ENV !== 'production') {
2887
2692
  warnIfInvokedDuringConstruction(vm, "".concat(queryMethod, "()"));
2888
2693
  }
2889
2694
 
2890
- return getQueryMethod(queryMethod)(elm, arg);
2695
+ return renderer[queryMethod](elm, arg);
2891
2696
  },
2892
2697
  configurable: true,
2893
2698
  enumerable: true,
@@ -2895,8 +2700,8 @@
2895
2700
  };
2896
2701
  };
2897
2702
 
2898
- for (var _i8 = 0, _queryMethods = queryMethods; _i8 < _queryMethods.length; _i8++) {
2899
- _loop2();
2703
+ for (var _i7 = 0, _queryMethods = queryMethods; _i7 < _queryMethods.length; _i7++) {
2704
+ _loop();
2900
2705
  }
2901
2706
 
2902
2707
  defineProperties(LightningElement.prototype, queryAndChildGetterDescriptors);
@@ -3418,8 +3223,8 @@
3418
3223
  }
3419
3224
 
3420
3225
  if (!isUndefined$1(fields)) {
3421
- for (var _i9 = 0, n = fields.length; _i9 < n; _i9++) {
3422
- var _fieldName2 = fields[_i9];
3226
+ for (var _i8 = 0, n = fields.length; _i8 < n; _i8++) {
3227
+ var _fieldName2 = fields[_i8];
3423
3228
  descriptor = getOwnPropertyDescriptor$1(proto, _fieldName2);
3424
3229
 
3425
3230
  if (process.env.NODE_ENV !== 'production') {
@@ -3722,8 +3527,8 @@
3722
3527
  superObservedAttributes = _SuperClass$observedA === void 0 ? [] : _SuperClass$observedA;
3723
3528
  var descriptors = create(null); // expose getters and setters for each public props on the new Element Bridge
3724
3529
 
3725
- for (var _i10 = 0, len = props.length; _i10 < len; _i10 += 1) {
3726
- var _propName = props[_i10];
3530
+ for (var _i9 = 0, len = props.length; _i9 < len; _i9 += 1) {
3531
+ var _propName = props[_i9];
3727
3532
  attributeToPropMap[htmlPropertyToAttribute(_propName)] = _propName;
3728
3533
  descriptors[_propName] = {
3729
3534
  get: createGetter(_propName),
@@ -3734,8 +3539,8 @@
3734
3539
  } // expose public methods as props on the new Element Bridge
3735
3540
 
3736
3541
 
3737
- for (var _i11 = 0, _len3 = methods.length; _i11 < _len3; _i11 += 1) {
3738
- var methodName = methods[_i11];
3542
+ for (var _i10 = 0, _len3 = methods.length; _i10 < _len3; _i10 += 1) {
3543
+ var methodName = methods[_i10];
3739
3544
  descriptors[methodName] = {
3740
3545
  value: createMethodCaller(methodName),
3741
3546
  writable: true,
@@ -4323,12 +4128,15 @@
4323
4128
  */
4324
4129
 
4325
4130
 
4326
- function getUpgradableConstructor(tagName) {
4327
- // Should never get a tag with upper case letter at this point, the compiler should
4131
+ function getUpgradableConstructor(tagName, renderer) {
4132
+ var getCustomElement = renderer.getCustomElement,
4133
+ RendererHTMLElement = renderer.HTMLElementExported,
4134
+ defineCustomElement = renderer.defineCustomElement; // Should never get a tag with upper case letter at this point, the compiler should
4328
4135
  // produce only tags with lowercase letters
4329
4136
  // But, for backwards compatibility, we will lower case the tagName
4137
+
4330
4138
  tagName = tagName.toLowerCase();
4331
- var CE = getCustomElement$1(tagName);
4139
+ var CE = getCustomElement(tagName);
4332
4140
 
4333
4141
  if (!isUndefined$1(CE)) {
4334
4142
  return CE;
@@ -4339,8 +4147,8 @@
4339
4147
  */
4340
4148
 
4341
4149
 
4342
- CE = /*#__PURE__*/function (_HTMLElementExported$) {
4343
- _inherits(LWCUpgradableElement, _HTMLElementExported$);
4150
+ CE = /*#__PURE__*/function (_RendererHTMLElement) {
4151
+ _inherits(LWCUpgradableElement, _RendererHTMLElement);
4344
4152
 
4345
4153
  var _super5 = _createSuper(LWCUpgradableElement);
4346
4154
 
@@ -4359,9 +4167,9 @@
4359
4167
  }
4360
4168
 
4361
4169
  return _createClass(LWCUpgradableElement);
4362
- }(HTMLElementExported$1);
4170
+ }(RendererHTMLElement);
4363
4171
 
4364
- defineCustomElement$1(tagName, CE);
4172
+ defineCustomElement(tagName, CE);
4365
4173
  return CE;
4366
4174
  }
4367
4175
  /*
@@ -4394,7 +4202,7 @@
4394
4202
 
4395
4203
  var ColonCharCode = 58;
4396
4204
 
4397
- function patchAttributes(oldVnode, vnode) {
4205
+ function patchAttributes(oldVnode, vnode, renderer) {
4398
4206
  var attrs = vnode.data.attrs;
4399
4207
 
4400
4208
  if (isUndefined$1(attrs)) {
@@ -4408,6 +4216,8 @@
4408
4216
  }
4409
4217
 
4410
4218
  var elm = vnode.elm;
4219
+ var setAttribute = renderer.setAttribute,
4220
+ removeAttribute = renderer.removeAttribute;
4411
4221
 
4412
4222
  for (var key in attrs) {
4413
4223
  var cur = attrs[key];
@@ -4418,14 +4228,14 @@
4418
4228
 
4419
4229
  if (StringCharCodeAt.call(key, 3) === ColonCharCode) {
4420
4230
  // Assume xml namespace
4421
- setAttribute$1(elm, key, cur, XML_NAMESPACE);
4231
+ setAttribute(elm, key, cur, XML_NAMESPACE);
4422
4232
  } else if (StringCharCodeAt.call(key, 5) === ColonCharCode) {
4423
4233
  // Assume xlink namespace
4424
- setAttribute$1(elm, key, cur, XLINK_NAMESPACE);
4234
+ setAttribute(elm, key, cur, XLINK_NAMESPACE);
4425
4235
  } else if (isNull(cur) || isUndefined$1(cur)) {
4426
- removeAttribute$1(elm, key);
4236
+ removeAttribute(elm, key);
4427
4237
  } else {
4428
- setAttribute$1(elm, key, cur);
4238
+ setAttribute(elm, key, cur);
4429
4239
  }
4430
4240
 
4431
4241
  lockAttribute();
@@ -4446,7 +4256,7 @@
4446
4256
  return sel === 'input' && (key === 'value' || key === 'checked');
4447
4257
  }
4448
4258
 
4449
- function patchProps(oldVnode, vnode) {
4259
+ function patchProps(oldVnode, vnode, renderer) {
4450
4260
  var props = vnode.data.props;
4451
4261
 
4452
4262
  if (isUndefined$1(props)) {
@@ -4462,13 +4272,15 @@
4462
4272
  var isFirstPatch = isNull(oldVnode);
4463
4273
  var elm = vnode.elm,
4464
4274
  sel = vnode.sel;
4275
+ var getProperty = renderer.getProperty,
4276
+ setProperty = renderer.setProperty;
4465
4277
 
4466
4278
  for (var key in props) {
4467
4279
  var cur = props[key]; // Set the property if it's the first time is is patched or if the previous property is
4468
4280
  // different than the one previously set.
4469
4281
 
4470
- if (isFirstPatch || cur !== (isLiveBindingProp(sel, key) ? getProperty$1(elm, key) : oldProps[key])) {
4471
- setProperty$1(elm, key, cur);
4282
+ if (isFirstPatch || cur !== (isLiveBindingProp(sel, key) ? getProperty(elm, key) : oldProps[key])) {
4283
+ setProperty(elm, key, cur);
4472
4284
  }
4473
4285
  }
4474
4286
  }
@@ -4525,7 +4337,7 @@
4525
4337
  return map;
4526
4338
  }
4527
4339
 
4528
- function patchClassAttribute(oldVnode, vnode) {
4340
+ function patchClassAttribute(oldVnode, vnode, renderer) {
4529
4341
  var elm = vnode.elm,
4530
4342
  newClass = vnode.data.className;
4531
4343
  var oldClass = isNull(oldVnode) ? undefined : oldVnode.data.className;
@@ -4534,7 +4346,8 @@
4534
4346
  return;
4535
4347
  }
4536
4348
 
4537
- var classList = getClassList$1(elm);
4349
+ var getClassList = renderer.getClassList;
4350
+ var classList = getClassList(elm);
4538
4351
  var newClassMap = getMapFromClassName(newClass);
4539
4352
  var oldClassMap = getMapFromClassName(oldClass);
4540
4353
  var name;
@@ -4561,7 +4374,7 @@
4561
4374
  // The style property is a string when defined via an expression in the template.
4562
4375
 
4563
4376
 
4564
- function patchStyleAttribute(oldVnode, vnode) {
4377
+ function patchStyleAttribute(oldVnode, vnode, renderer) {
4565
4378
  var elm = vnode.elm,
4566
4379
  newStyle = vnode.data.style;
4567
4380
  var oldStyle = isNull(oldVnode) ? undefined : oldVnode.data.style;
@@ -4570,10 +4383,13 @@
4570
4383
  return;
4571
4384
  }
4572
4385
 
4386
+ var setAttribute = renderer.setAttribute,
4387
+ removeAttribute = renderer.removeAttribute;
4388
+
4573
4389
  if (!isString(newStyle) || newStyle === '') {
4574
- removeAttribute$1(elm, 'style');
4390
+ removeAttribute(elm, 'style');
4575
4391
  } else {
4576
- setAttribute$1(elm, 'style', newStyle);
4392
+ setAttribute(elm, 'style', newStyle);
4577
4393
  }
4578
4394
  }
4579
4395
  /*
@@ -4584,7 +4400,7 @@
4584
4400
  */
4585
4401
 
4586
4402
 
4587
- function applyEventListeners(vnode) {
4403
+ function applyEventListeners(vnode, renderer) {
4588
4404
  var elm = vnode.elm,
4589
4405
  on = vnode.data.on;
4590
4406
 
@@ -4592,9 +4408,11 @@
4592
4408
  return;
4593
4409
  }
4594
4410
 
4411
+ var addEventListener = renderer.addEventListener;
4412
+
4595
4413
  for (var name in on) {
4596
4414
  var handler = on[name];
4597
- addEventListener$1(elm, name, handler);
4415
+ addEventListener(elm, name, handler);
4598
4416
  }
4599
4417
  }
4600
4418
  /*
@@ -4608,7 +4426,7 @@
4608
4426
  // different classnames properties individually instead of via a string.
4609
4427
 
4610
4428
 
4611
- function applyStaticClassAttribute(vnode) {
4429
+ function applyStaticClassAttribute(vnode, renderer) {
4612
4430
  var elm = vnode.elm,
4613
4431
  classMap = vnode.data.classMap;
4614
4432
 
@@ -4616,7 +4434,8 @@
4616
4434
  return;
4617
4435
  }
4618
4436
 
4619
- var classList = getClassList$1(elm);
4437
+ var getClassList = renderer.getClassList;
4438
+ var classList = getClassList(elm);
4620
4439
 
4621
4440
  for (var name in classMap) {
4622
4441
  classList.add(name);
@@ -4633,7 +4452,7 @@
4633
4452
  // different style properties individually instead of via a string.
4634
4453
 
4635
4454
 
4636
- function applyStaticStyleAttribute(vnode) {
4455
+ function applyStaticStyleAttribute(vnode, renderer) {
4637
4456
  var elm = vnode.elm,
4638
4457
  styleDecls = vnode.data.styleDecls;
4639
4458
 
@@ -4641,13 +4460,15 @@
4641
4460
  return;
4642
4461
  }
4643
4462
 
4644
- for (var _i12 = 0; _i12 < styleDecls.length; _i12++) {
4645
- var _styleDecls$_i = _slicedToArray(styleDecls[_i12], 3),
4463
+ var setCSSStyleProperty = renderer.setCSSStyleProperty;
4464
+
4465
+ for (var _i11 = 0; _i11 < styleDecls.length; _i11++) {
4466
+ var _styleDecls$_i = _slicedToArray(styleDecls[_i11], 3),
4646
4467
  prop = _styleDecls$_i[0],
4647
4468
  value = _styleDecls$_i[1],
4648
4469
  important = _styleDecls$_i[2];
4649
4470
 
4650
- setCSSStyleProperty$1(elm, prop, value, important);
4471
+ setCSSStyleProperty(elm, prop, value, important);
4651
4472
  }
4652
4473
  }
4653
4474
  /*
@@ -4658,15 +4479,17 @@
4658
4479
  */
4659
4480
 
4660
4481
 
4661
- function patchChildren(c1, c2, parent) {
4482
+ function patchChildren(c1, c2, parent, renderer) {
4662
4483
  if (hasDynamicChildren(c2)) {
4663
- updateDynamicChildren(c1, c2, parent);
4484
+ updateDynamicChildren(c1, c2, parent, renderer);
4664
4485
  } else {
4665
- updateStaticChildren(c1, c2, parent);
4486
+ updateStaticChildren(c1, c2, parent, renderer);
4666
4487
  }
4667
4488
  }
4668
4489
 
4669
- function patch(n1, n2) {
4490
+ function patch(n1, n2, renderer) {
4491
+ var _a, _b;
4492
+
4670
4493
  if (n1 === n2) {
4671
4494
  return;
4672
4495
  }
@@ -4687,112 +4510,169 @@
4687
4510
  case 0
4688
4511
  /* Text */
4689
4512
  :
4690
- patchText(n1, n2);
4513
+ // VText has no special capability, fallback to the owner's renderer
4514
+ patchText(n1, n2, renderer);
4691
4515
  break;
4692
4516
 
4693
4517
  case 1
4694
4518
  /* Comment */
4695
4519
  :
4696
- patchComment(n1, n2);
4520
+ // VComment has no special capability, fallback to the owner's renderer
4521
+ patchComment(n1, n2, renderer);
4522
+ break;
4523
+
4524
+ case 4
4525
+ /* Static */
4526
+ :
4527
+ n2.elm = n1.elm;
4697
4528
  break;
4698
4529
 
4699
4530
  case 2
4700
4531
  /* Element */
4701
4532
  :
4702
- patchElement(n1, n2);
4533
+ patchElement(n1, n2, (_a = n2.data.renderer) !== null && _a !== void 0 ? _a : renderer);
4703
4534
  break;
4704
4535
 
4705
4536
  case 3
4706
4537
  /* CustomElement */
4707
4538
  :
4708
- patchCustomElement(n1, n2);
4539
+ patchCustomElement(n1, n2, (_b = n2.data.renderer) !== null && _b !== void 0 ? _b : renderer);
4709
4540
  break;
4710
4541
  }
4711
4542
  }
4712
4543
 
4713
- function mount(node, parent, anchor) {
4544
+ function mount(node, parent, renderer, anchor) {
4545
+ var _a, _b;
4546
+
4714
4547
  switch (node.type) {
4715
4548
  case 0
4716
4549
  /* Text */
4717
4550
  :
4718
- mountText(node, parent, anchor);
4551
+ // VText has no special capability, fallback to the owner's renderer
4552
+ mountText(node, parent, anchor, renderer);
4719
4553
  break;
4720
4554
 
4721
4555
  case 1
4722
4556
  /* Comment */
4723
4557
  :
4724
- mountComment(node, parent, anchor);
4558
+ // VComment has no special capability, fallback to the owner's renderer
4559
+ mountComment(node, parent, anchor, renderer);
4560
+ break;
4561
+
4562
+ case 4
4563
+ /* Static */
4564
+ :
4565
+ // VStatic cannot have a custom renderer associated to them, using owner's renderer
4566
+ mountStatic(node, parent, anchor, renderer);
4725
4567
  break;
4726
4568
 
4727
4569
  case 2
4728
4570
  /* Element */
4729
4571
  :
4730
- mountElement(node, parent, anchor);
4572
+ // If the vnode data has a renderer override use it, else fallback to owner's renderer
4573
+ mountElement(node, parent, anchor, (_a = node.data.renderer) !== null && _a !== void 0 ? _a : renderer);
4731
4574
  break;
4732
4575
 
4733
4576
  case 3
4734
4577
  /* CustomElement */
4735
4578
  :
4736
- mountCustomElement(node, parent, anchor);
4579
+ // If the vnode data has a renderer override use it, else fallback to owner's renderer
4580
+ mountCustomElement(node, parent, anchor, (_b = node.data.renderer) !== null && _b !== void 0 ? _b : renderer);
4737
4581
  break;
4738
4582
  }
4739
4583
  }
4740
4584
 
4741
- function patchText(n1, n2) {
4585
+ function patchText(n1, n2, renderer) {
4742
4586
  n2.elm = n1.elm;
4743
4587
 
4744
4588
  if (n2.text !== n1.text) {
4745
- updateTextContent(n2);
4589
+ updateTextContent(n2, renderer);
4746
4590
  }
4747
4591
  }
4748
4592
 
4749
- function mountText(node, parent, anchor) {
4750
- var owner = node.owner;
4751
- var textNode = node.elm = createText$1(node.text);
4752
- linkNodeToShadow(textNode, owner);
4753
- insertNode(textNode, parent, anchor);
4593
+ function mountText(vnode, parent, anchor, renderer) {
4594
+ var owner = vnode.owner;
4595
+ var createText = renderer.createText;
4596
+ var textNode = vnode.elm = createText(vnode.text);
4597
+ linkNodeToShadow(textNode, owner, renderer);
4598
+ insertNode(textNode, parent, anchor, renderer);
4754
4599
  }
4755
4600
 
4756
- function patchComment(n1, n2) {
4601
+ function patchComment(n1, n2, renderer) {
4757
4602
  n2.elm = n1.elm; // FIXME: Comment nodes should be static, we shouldn't need to diff them together. However
4758
4603
  // it is the case today.
4759
4604
 
4760
4605
  if (n2.text !== n1.text) {
4761
- updateTextContent(n2);
4606
+ updateTextContent(n2, renderer);
4762
4607
  }
4763
4608
  }
4764
4609
 
4765
- function mountComment(node, parent, anchor) {
4766
- var owner = node.owner;
4767
- var commentNode = node.elm = createComment$1(node.text);
4768
- linkNodeToShadow(commentNode, owner);
4769
- insertNode(commentNode, parent, anchor);
4610
+ function mountComment(vnode, parent, anchor, renderer) {
4611
+ var owner = vnode.owner;
4612
+ var createComment = renderer.createComment;
4613
+ var commentNode = vnode.elm = createComment(vnode.text);
4614
+ linkNodeToShadow(commentNode, owner, renderer);
4615
+ insertNode(commentNode, parent, anchor, renderer);
4770
4616
  }
4771
4617
 
4772
- function mountElement(vnode, parent, anchor) {
4618
+ function mountElement(vnode, parent, anchor, renderer) {
4773
4619
  var sel = vnode.sel,
4774
4620
  owner = vnode.owner,
4775
4621
  svg = vnode.data.svg;
4622
+ var createElement = renderer.createElement;
4776
4623
  var namespace = isTrue(svg) ? SVG_NAMESPACE : undefined;
4777
- var elm = createElement$2(sel, namespace);
4778
- linkNodeToShadow(elm, owner);
4779
- fallbackElmHook(elm, vnode);
4624
+ var elm = createElement(sel, namespace);
4625
+ linkNodeToShadow(elm, owner, renderer);
4626
+ fallbackElmHook(elm, vnode, renderer);
4780
4627
  vnode.elm = elm;
4781
- patchElementPropsAndAttrs$1(null, vnode);
4782
- insertNode(elm, parent, anchor);
4783
- mountVNodes(vnode.children, elm, null);
4628
+ patchElementPropsAndAttrs$1(null, vnode, renderer);
4629
+ insertNode(elm, parent, anchor, renderer);
4630
+ mountVNodes(vnode.children, elm, renderer, null);
4784
4631
  }
4785
4632
 
4786
- function patchElement(n1, n2) {
4633
+ function patchElement(n1, n2, renderer) {
4787
4634
  var elm = n2.elm = n1.elm;
4788
- patchElementPropsAndAttrs$1(n1, n2);
4789
- patchChildren(n1.children, n2.children, elm);
4635
+ patchElementPropsAndAttrs$1(n1, n2, renderer);
4636
+ patchChildren(n1.children, n2.children, elm, renderer);
4637
+ }
4638
+
4639
+ function mountStatic(vnode, parent, anchor, renderer) {
4640
+ var owner = vnode.owner;
4641
+ var cloneNode = renderer.cloneNode,
4642
+ isSyntheticShadowDefined = renderer.isSyntheticShadowDefined;
4643
+ var elm = vnode.elm = cloneNode(vnode.fragment, true);
4644
+ linkNodeToShadow(elm, owner, renderer); // Marks this node as Static to propagate the shadow resolver. must happen after elm is assigned to the proper shadow
4645
+
4646
+ var renderMode = owner.renderMode,
4647
+ shadowMode = owner.shadowMode;
4648
+
4649
+ if (isSyntheticShadowDefined) {
4650
+ if (shadowMode === 1
4651
+ /* Synthetic */
4652
+ || renderMode === 0
4653
+ /* Light */
4654
+ ) {
4655
+ elm[KEY__SHADOW_STATIC] = true;
4656
+ }
4657
+ }
4658
+
4659
+ if (process.env.NODE_ENV !== 'production') {
4660
+ var isLight = renderMode === 0
4661
+ /* Light */
4662
+ ;
4663
+ patchElementWithRestrictions(elm, {
4664
+ isPortal: false,
4665
+ isLight: isLight
4666
+ });
4667
+ }
4668
+
4669
+ insertNode(elm, parent, anchor, renderer);
4790
4670
  }
4791
4671
 
4792
- function mountCustomElement(vnode, parent, anchor) {
4672
+ function mountCustomElement(vnode, parent, anchor, renderer) {
4793
4673
  var sel = vnode.sel,
4794
4674
  owner = vnode.owner;
4795
- var UpgradableConstructor = getUpgradableConstructor(sel);
4675
+ var UpgradableConstructor = getUpgradableConstructor(sel, renderer);
4796
4676
  /**
4797
4677
  * Note: if the upgradable constructor does not expect, or throw when we new it
4798
4678
  * with a callback as the first argument, we could implement a more advanced
@@ -4803,9 +4683,9 @@
4803
4683
  var vm;
4804
4684
  var elm = new UpgradableConstructor(function (elm) {
4805
4685
  // the custom element from the registry is expecting an upgrade callback
4806
- vm = createViewModelHook(elm, vnode);
4686
+ vm = createViewModelHook(elm, vnode, renderer);
4807
4687
  });
4808
- linkNodeToShadow(elm, owner);
4688
+ linkNodeToShadow(elm, owner, renderer);
4809
4689
  vnode.elm = elm;
4810
4690
  vnode.vm = vm;
4811
4691
 
@@ -4815,8 +4695,8 @@
4815
4695
  throw new TypeError("Incorrect Component Constructor");
4816
4696
  }
4817
4697
 
4818
- patchElementPropsAndAttrs$1(null, vnode);
4819
- insertNode(elm, parent, anchor);
4698
+ patchElementPropsAndAttrs$1(null, vnode, renderer);
4699
+ insertNode(elm, parent, anchor, renderer);
4820
4700
 
4821
4701
  if (vm) {
4822
4702
  if (process.env.NODE_ENV !== 'production') {
@@ -4828,17 +4708,17 @@
4828
4708
  runConnectedCallback(vm);
4829
4709
  }
4830
4710
 
4831
- mountVNodes(vnode.children, elm, null);
4711
+ mountVNodes(vnode.children, elm, renderer, null);
4832
4712
 
4833
4713
  if (vm) {
4834
4714
  appendVM(vm);
4835
4715
  }
4836
4716
  }
4837
4717
 
4838
- function patchCustomElement(n1, n2) {
4718
+ function patchCustomElement(n1, n2, renderer) {
4839
4719
  var elm = n2.elm = n1.elm;
4840
4720
  var vm = n2.vm = n1.vm;
4841
- patchElementPropsAndAttrs$1(n1, n2);
4721
+ patchElementPropsAndAttrs$1(n1, n2, renderer);
4842
4722
 
4843
4723
  if (!isUndefined$1(vm)) {
4844
4724
  // in fallback mode, the allocation will always set children to
@@ -4848,7 +4728,7 @@
4848
4728
  // will happen, but in native, it does allocate the light dom
4849
4729
 
4850
4730
 
4851
- patchChildren(n1.children, n2.children, elm);
4731
+ patchChildren(n1.children, n2.children, elm, renderer);
4852
4732
 
4853
4733
  if (!isUndefined$1(vm)) {
4854
4734
  // this will probably update the shadowRoot, but only if the vm is in a dirty state
@@ -4857,28 +4737,30 @@
4857
4737
  }
4858
4738
  }
4859
4739
 
4860
- function mountVNodes(vnodes, parent, anchor) {
4861
- var start = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
4862
- var end = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : vnodes.length;
4740
+ function mountVNodes(vnodes, parent, renderer, anchor) {
4741
+ var start = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
4742
+ var end = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : vnodes.length;
4863
4743
 
4864
4744
  for (; start < end; ++start) {
4865
4745
  var vnode = vnodes[start];
4866
4746
 
4867
4747
  if (isVNode(vnode)) {
4868
- mount(vnode, parent, anchor);
4748
+ mount(vnode, parent, renderer, anchor);
4869
4749
  }
4870
4750
  }
4871
4751
  }
4872
4752
 
4873
- function unmount(vnode, parent) {
4874
- var doRemove = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
4753
+ function unmount(vnode, parent, renderer) {
4754
+ var doRemove = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
4875
4755
  var type = vnode.type,
4876
4756
  elm = vnode.elm,
4877
4757
  sel = vnode.sel; // When unmounting a VNode subtree not all the elements have to removed from the DOM. The
4878
4758
  // subtree root, is the only element worth unmounting from the subtree.
4879
4759
 
4880
4760
  if (doRemove) {
4881
- removeNode(elm, parent);
4761
+ // The vnode might or might not have a data.renderer associated to it
4762
+ // but the removal used here is from the owner instead.
4763
+ removeNode(elm, parent, renderer);
4882
4764
  }
4883
4765
 
4884
4766
  switch (type) {
@@ -4888,10 +4770,10 @@
4888
4770
  {
4889
4771
  // Slot content is removed to trigger slotchange event when removing slot.
4890
4772
  // Only required for synthetic shadow.
4891
- var removeChildren = sel === 'slot' && vnode.owner.shadowMode === 1
4773
+ var shouldRemoveChildren = sel === 'slot' && vnode.owner.shadowMode === 1
4892
4774
  /* Synthetic */
4893
4775
  ;
4894
- unmountVNodes(vnode.children, elm, removeChildren);
4776
+ unmountVNodes(vnode.children, elm, renderer, shouldRemoveChildren);
4895
4777
  break;
4896
4778
  }
4897
4779
 
@@ -4909,16 +4791,16 @@
4909
4791
  }
4910
4792
  }
4911
4793
 
4912
- function unmountVNodes(vnodes, parent) {
4913
- var doRemove = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
4914
- var start = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
4915
- var end = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : vnodes.length;
4794
+ function unmountVNodes(vnodes, parent, renderer) {
4795
+ var doRemove = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
4796
+ var start = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
4797
+ var end = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : vnodes.length;
4916
4798
 
4917
4799
  for (; start < end; ++start) {
4918
4800
  var ch = vnodes[start];
4919
4801
 
4920
4802
  if (isVNode(ch)) {
4921
- unmount(ch, parent, doRemove);
4803
+ unmount(ch, parent, renderer, doRemove);
4922
4804
  }
4923
4805
  }
4924
4806
  }
@@ -4936,22 +4818,26 @@
4936
4818
  } // Set the scope token class for *.scoped.css styles
4937
4819
 
4938
4820
 
4939
- function setScopeTokenClassIfNecessary(elm, owner) {
4821
+ function setScopeTokenClassIfNecessary(elm, owner, renderer) {
4940
4822
  var cmpTemplate = owner.cmpTemplate,
4941
4823
  context = owner.context;
4824
+ var getClassList = renderer.getClassList;
4942
4825
  var token = cmpTemplate === null || cmpTemplate === void 0 ? void 0 : cmpTemplate.stylesheetToken;
4943
4826
 
4944
4827
  if (!isUndefined$1(token) && context.hasScopedStyles) {
4945
- getClassList$1(elm).add(token);
4828
+ // TODO [#2762]: this dot notation with add is probably problematic
4829
+ // probably we should have a renderer api for just the add operation
4830
+ getClassList(elm).add(token);
4946
4831
  }
4947
4832
  }
4948
4833
 
4949
- function linkNodeToShadow(elm, owner) {
4834
+ function linkNodeToShadow(elm, owner, renderer) {
4950
4835
  var renderRoot = owner.renderRoot,
4951
4836
  renderMode = owner.renderMode,
4952
- shadowMode = owner.shadowMode; // TODO [#1164]: this should eventually be done by the polyfill directly
4837
+ shadowMode = owner.shadowMode;
4838
+ var isSyntheticShadowDefined = renderer.isSyntheticShadowDefined; // TODO [#1164]: this should eventually be done by the polyfill directly
4953
4839
 
4954
- if (isSyntheticShadowDefined$1) {
4840
+ if (isSyntheticShadowDefined) {
4955
4841
  if (shadowMode === 1
4956
4842
  /* Synthetic */
4957
4843
  || renderMode === 0
@@ -4962,63 +4848,64 @@
4962
4848
  }
4963
4849
  }
4964
4850
 
4965
- function updateTextContent(vnode) {
4851
+ function updateTextContent(vnode, renderer) {
4966
4852
  var elm = vnode.elm,
4967
4853
  text = vnode.text;
4854
+ var setText = renderer.setText;
4968
4855
 
4969
4856
  if (process.env.NODE_ENV !== 'production') {
4970
4857
  unlockDomMutation();
4971
4858
  }
4972
4859
 
4973
- setText$1(elm, text);
4860
+ setText(elm, text);
4974
4861
 
4975
4862
  if (process.env.NODE_ENV !== 'production') {
4976
4863
  lockDomMutation();
4977
4864
  }
4978
4865
  }
4979
4866
 
4980
- function insertNode(node, parent, anchor) {
4867
+ function insertNode(node, parent, anchor, renderer) {
4981
4868
  if (process.env.NODE_ENV !== 'production') {
4982
4869
  unlockDomMutation();
4983
4870
  }
4984
4871
 
4985
- insert$1(node, parent, anchor);
4872
+ renderer.insert(node, parent, anchor);
4986
4873
 
4987
4874
  if (process.env.NODE_ENV !== 'production') {
4988
4875
  lockDomMutation();
4989
4876
  }
4990
4877
  }
4991
4878
 
4992
- function removeNode(node, parent) {
4879
+ function removeNode(node, parent, renderer) {
4993
4880
  if (process.env.NODE_ENV !== 'production') {
4994
4881
  unlockDomMutation();
4995
4882
  }
4996
4883
 
4997
- remove$1(node, parent);
4884
+ renderer.remove(node, parent);
4998
4885
 
4999
4886
  if (process.env.NODE_ENV !== 'production') {
5000
4887
  lockDomMutation();
5001
4888
  }
5002
4889
  }
5003
4890
 
5004
- function patchElementPropsAndAttrs$1(oldVnode, vnode) {
4891
+ function patchElementPropsAndAttrs$1(oldVnode, vnode, renderer) {
5005
4892
  if (isNull(oldVnode)) {
5006
- applyEventListeners(vnode);
5007
- applyStaticClassAttribute(vnode);
5008
- applyStaticStyleAttribute(vnode);
4893
+ applyEventListeners(vnode, renderer);
4894
+ applyStaticClassAttribute(vnode, renderer);
4895
+ applyStaticStyleAttribute(vnode, renderer);
5009
4896
  } // Attrs need to be applied to element before props IE11 will wipe out value on radio inputs if
5010
4897
  // value is set before type=radio.
5011
4898
 
5012
4899
 
5013
- patchClassAttribute(oldVnode, vnode);
5014
- patchStyleAttribute(oldVnode, vnode);
5015
- patchAttributes(oldVnode, vnode);
5016
- patchProps(oldVnode, vnode);
4900
+ patchClassAttribute(oldVnode, vnode, renderer);
4901
+ patchStyleAttribute(oldVnode, vnode, renderer);
4902
+ patchAttributes(oldVnode, vnode, renderer);
4903
+ patchProps(oldVnode, vnode, renderer);
5017
4904
  }
5018
4905
 
5019
- function fallbackElmHook(elm, vnode) {
4906
+ function fallbackElmHook(elm, vnode, renderer) {
5020
4907
  var owner = vnode.owner;
5021
- setScopeTokenClassIfNecessary(elm, owner);
4908
+ setScopeTokenClassIfNecessary(elm, owner, renderer);
5022
4909
 
5023
4910
  if (owner.shadowMode === 1
5024
4911
  /* Synthetic */
@@ -5085,7 +4972,7 @@
5085
4972
  }
5086
4973
  }
5087
4974
 
5088
- function createViewModelHook(elm, vnode) {
4975
+ function createViewModelHook(elm, vnode, renderer) {
5089
4976
  var vm = getAssociatedVMIfPresent(elm); // There is a possibility that a custom element is registered under tagName, in which case, the
5090
4977
  // initialization is already carry on, and there is nothing else to do here since this hook is
5091
4978
  // called right after invoking `document.createElement`.
@@ -5098,7 +4985,7 @@
5098
4985
  mode = vnode.mode,
5099
4986
  ctor = vnode.ctor,
5100
4987
  owner = vnode.owner;
5101
- setScopeTokenClassIfNecessary(elm, owner);
4988
+ setScopeTokenClassIfNecessary(elm, owner, renderer);
5102
4989
 
5103
4990
  if (owner.shadowMode === 1
5104
4991
  /* Synthetic */
@@ -5111,7 +4998,7 @@
5111
4998
  }
5112
4999
  }
5113
5000
 
5114
- vm = createVM(elm, ctor, {
5001
+ vm = createVM(elm, ctor, renderer, {
5115
5002
  mode: mode,
5116
5003
  owner: owner,
5117
5004
  tagName: sel
@@ -5130,8 +5017,8 @@
5130
5017
  var oldSlots = vm.cmpSlots;
5131
5018
  var cmpSlots = vm.cmpSlots = create(null);
5132
5019
 
5133
- for (var _i13 = 0, len = children.length; _i13 < len; _i13 += 1) {
5134
- var vnode = children[_i13];
5020
+ for (var _i12 = 0, len = children.length; _i12 < len; _i12 += 1) {
5021
+ var vnode = children[_i12];
5135
5022
 
5136
5023
  if (isNull(vnode)) {
5137
5024
  continue;
@@ -5157,8 +5044,8 @@
5157
5044
  return;
5158
5045
  }
5159
5046
 
5160
- for (var _i14 = 0, _len4 = oldKeys.length; _i14 < _len4; _i14 += 1) {
5161
- var key = oldKeys[_i14];
5047
+ for (var _i13 = 0, _len4 = oldKeys.length; _i13 < _len4; _i13 += 1) {
5048
+ var key = oldKeys[_i13];
5162
5049
 
5163
5050
  if (isUndefined$1(cmpSlots[key]) || oldSlots[key].length !== cmpSlots[key].length) {
5164
5051
  markComponentAsDirty(vm);
@@ -5208,7 +5095,7 @@
5208
5095
  return map;
5209
5096
  }
5210
5097
 
5211
- function updateDynamicChildren(oldCh, newCh, parent) {
5098
+ function updateDynamicChildren(oldCh, newCh, parent, renderer) {
5212
5099
  var oldStartIdx = 0;
5213
5100
  var newStartIdx = 0;
5214
5101
  var oldEndIdx = oldCh.length - 1;
@@ -5234,23 +5121,23 @@
5234
5121
  } else if (!isVNode(newEndVnode)) {
5235
5122
  newEndVnode = newCh[--newEndIdx];
5236
5123
  } else if (isSameVnode(oldStartVnode, newStartVnode)) {
5237
- patch(oldStartVnode, newStartVnode);
5124
+ patch(oldStartVnode, newStartVnode, renderer);
5238
5125
  oldStartVnode = oldCh[++oldStartIdx];
5239
5126
  newStartVnode = newCh[++newStartIdx];
5240
5127
  } else if (isSameVnode(oldEndVnode, newEndVnode)) {
5241
- patch(oldEndVnode, newEndVnode);
5128
+ patch(oldEndVnode, newEndVnode, renderer);
5242
5129
  oldEndVnode = oldCh[--oldEndIdx];
5243
5130
  newEndVnode = newCh[--newEndIdx];
5244
5131
  } else if (isSameVnode(oldStartVnode, newEndVnode)) {
5245
5132
  // Vnode moved right
5246
- patch(oldStartVnode, newEndVnode);
5247
- insertNode(oldStartVnode.elm, parent, nextSibling$1(oldEndVnode.elm));
5133
+ patch(oldStartVnode, newEndVnode, renderer);
5134
+ insertNode(oldStartVnode.elm, parent, renderer.nextSibling(oldEndVnode.elm), renderer);
5248
5135
  oldStartVnode = oldCh[++oldStartIdx];
5249
5136
  newEndVnode = newCh[--newEndIdx];
5250
5137
  } else if (isSameVnode(oldEndVnode, newStartVnode)) {
5251
5138
  // Vnode moved left
5252
- patch(oldEndVnode, newStartVnode);
5253
- insertNode(newStartVnode.elm, parent, oldStartVnode.elm);
5139
+ patch(oldEndVnode, newStartVnode, renderer);
5140
+ insertNode(newStartVnode.elm, parent, oldStartVnode.elm, renderer);
5254
5141
  oldEndVnode = oldCh[--oldEndIdx];
5255
5142
  newStartVnode = newCh[++newStartIdx];
5256
5143
  } else {
@@ -5262,7 +5149,7 @@
5262
5149
 
5263
5150
  if (isUndefined$1(idxInOld)) {
5264
5151
  // New element
5265
- mount(newStartVnode, parent, oldStartVnode.elm);
5152
+ mount(newStartVnode, parent, renderer, oldStartVnode.elm);
5266
5153
  newStartVnode = newCh[++newStartIdx];
5267
5154
  } else {
5268
5155
  elmToMove = oldCh[idxInOld];
@@ -5270,9 +5157,9 @@
5270
5157
  if (isVNode(elmToMove)) {
5271
5158
  if (elmToMove.sel !== newStartVnode.sel) {
5272
5159
  // New element
5273
- mount(newStartVnode, parent, oldStartVnode.elm);
5160
+ mount(newStartVnode, parent, renderer, oldStartVnode.elm);
5274
5161
  } else {
5275
- patch(elmToMove, newStartVnode); // Delete the old child, but copy the array since it is read-only.
5162
+ patch(elmToMove, newStartVnode, renderer); // Delete the old child, but copy the array since it is read-only.
5276
5163
  // The `oldCh` will be GC'ed after `updateDynamicChildren` is complete,
5277
5164
  // so we only care about the `oldCh` object inside this function.
5278
5165
  // To avoid cloning over and over again, we check `clonedOldCh`
@@ -5285,7 +5172,7 @@
5285
5172
 
5286
5173
 
5287
5174
  oldCh[idxInOld] = undefined;
5288
- insertNode(elmToMove.elm, parent, oldStartVnode.elm);
5175
+ insertNode(elmToMove.elm, parent, oldStartVnode.elm, renderer);
5289
5176
  }
5290
5177
  }
5291
5178
 
@@ -5298,35 +5185,35 @@
5298
5185
  if (oldStartIdx > oldEndIdx) {
5299
5186
  // There's some cases in which the sub array of vnodes to be inserted is followed by null(s) and an
5300
5187
  // already processed vnode, in such cases the vnodes to be inserted should be before that processed vnode.
5301
- var _i15 = newEndIdx;
5188
+ var _i14 = newEndIdx;
5302
5189
  var n;
5303
5190
 
5304
5191
  do {
5305
- n = newCh[++_i15];
5306
- } while (!isVNode(n) && _i15 < newChEnd);
5192
+ n = newCh[++_i14];
5193
+ } while (!isVNode(n) && _i14 < newChEnd);
5307
5194
 
5308
5195
  before = isVNode(n) ? n.elm : null;
5309
- mountVNodes(newCh, parent, before, newStartIdx, newEndIdx + 1);
5196
+ mountVNodes(newCh, parent, renderer, before, newStartIdx, newEndIdx + 1);
5310
5197
  } else {
5311
- unmountVNodes(oldCh, parent, true, oldStartIdx, oldEndIdx + 1);
5198
+ unmountVNodes(oldCh, parent, renderer, true, oldStartIdx, oldEndIdx + 1);
5312
5199
  }
5313
5200
  }
5314
5201
  }
5315
5202
 
5316
- function updateStaticChildren(c1, c2, parent) {
5203
+ function updateStaticChildren(c1, c2, parent, renderer) {
5317
5204
  var c1Length = c1.length;
5318
5205
  var c2Length = c2.length;
5319
5206
 
5320
5207
  if (c1Length === 0) {
5321
5208
  // the old list is empty, we can directly insert anything new
5322
- mountVNodes(c2, parent, null);
5209
+ mountVNodes(c2, parent, renderer, null);
5323
5210
  return;
5324
5211
  }
5325
5212
 
5326
5213
  if (c2Length === 0) {
5327
5214
  // the old list is nonempty and the new list is empty so we can directly remove all old nodes
5328
5215
  // this is the case in which the dynamic children of an if-directive should be removed
5329
- unmountVNodes(c1, parent, true);
5216
+ unmountVNodes(c1, parent, renderer, true);
5330
5217
  return;
5331
5218
  } // if the old list is not empty, the new list MUST have the same
5332
5219
  // amount of nodes, that's why we call this static children
@@ -5334,22 +5221,22 @@
5334
5221
 
5335
5222
  var anchor = null;
5336
5223
 
5337
- for (var _i16 = c2Length - 1; _i16 >= 0; _i16 -= 1) {
5338
- var n1 = c1[_i16];
5339
- var n2 = c2[_i16];
5224
+ for (var _i15 = c2Length - 1; _i15 >= 0; _i15 -= 1) {
5225
+ var n1 = c1[_i15];
5226
+ var n2 = c2[_i15];
5340
5227
 
5341
5228
  if (n2 !== n1) {
5342
5229
  if (isVNode(n1)) {
5343
5230
  if (isVNode(n2)) {
5344
5231
  // both vnodes are equivalent, and we just need to patch them
5345
- patch(n1, n2);
5232
+ patch(n1, n2, renderer);
5346
5233
  anchor = n2.elm;
5347
5234
  } else {
5348
5235
  // removing the old vnode since the new one is null
5349
- unmount(n1, parent, true);
5236
+ unmount(n1, parent, renderer, true);
5350
5237
  }
5351
5238
  } else if (isVNode(n2)) {
5352
- mount(n2, parent, anchor);
5239
+ mount(n2, parent, renderer, anchor);
5353
5240
  anchor = n2.elm;
5354
5241
  }
5355
5242
  }
@@ -5367,6 +5254,20 @@
5367
5254
 
5368
5255
  function addVNodeToChildLWC(vnode) {
5369
5256
  ArrayPush$1.call(getVMBeingRendered().velements, vnode);
5257
+ } // [st]atic node
5258
+
5259
+
5260
+ function st(fragment, key) {
5261
+ return {
5262
+ type: 4
5263
+ /* Static */
5264
+ ,
5265
+ sel: undefined,
5266
+ key: key,
5267
+ elm: undefined,
5268
+ fragment: fragment,
5269
+ owner: getVMBeingRendered()
5270
+ };
5370
5271
  } // [h]tml node
5371
5272
 
5372
5273
 
@@ -5856,6 +5757,7 @@
5856
5757
  co: co,
5857
5758
  dc: dc,
5858
5759
  ti: ti,
5760
+ st: st,
5859
5761
  gid: gid,
5860
5762
  fid: fid,
5861
5763
  shc: shc
@@ -5884,7 +5786,11 @@
5884
5786
  var elm = vm.elm,
5885
5787
  context = vm.context,
5886
5788
  renderMode = vm.renderMode,
5887
- shadowMode = vm.shadowMode;
5789
+ shadowMode = vm.shadowMode,
5790
+ _vm$renderer = vm.renderer,
5791
+ getClassList = _vm$renderer.getClassList,
5792
+ removeAttribute = _vm$renderer.removeAttribute,
5793
+ setAttribute = _vm$renderer.setAttribute;
5888
5794
  var newStylesheets = template.stylesheets,
5889
5795
  newStylesheetToken = template.stylesheetToken;
5890
5796
  var isSyntheticShadow = renderMode === 1
@@ -5903,11 +5809,11 @@
5903
5809
 
5904
5810
  if (!isUndefined$1(oldToken)) {
5905
5811
  if (oldHasTokenInClass) {
5906
- getClassList$1(elm).remove(makeHostToken(oldToken));
5812
+ getClassList(elm).remove(makeHostToken(oldToken));
5907
5813
  }
5908
5814
 
5909
5815
  if (oldHasTokenInAttribute) {
5910
- removeAttribute$1(elm, makeHostToken(oldToken));
5816
+ removeAttribute(elm, makeHostToken(oldToken));
5911
5817
  }
5912
5818
  } // Apply the new template styling token to the host element, if the new template has any
5913
5819
  // associated stylesheets. In the case of light DOM, also ensure there is at least one scoped stylesheet.
@@ -5920,12 +5826,12 @@
5920
5826
 
5921
5827
  if (!isUndefined$1(newToken)) {
5922
5828
  if (hasScopedStyles) {
5923
- getClassList$1(elm).add(makeHostToken(newToken));
5829
+ getClassList(elm).add(makeHostToken(newToken));
5924
5830
  newHasTokenInClass = true;
5925
5831
  }
5926
5832
 
5927
5833
  if (isSyntheticShadow) {
5928
- setAttribute$1(elm, makeHostToken(newToken), '');
5834
+ setAttribute(elm, makeHostToken(newToken), '');
5929
5835
  newHasTokenInAttribute = true;
5930
5836
  }
5931
5837
  } // Update the styling tokens present on the context object.
@@ -5940,8 +5846,8 @@
5940
5846
  var content = [];
5941
5847
  var root;
5942
5848
 
5943
- for (var _i17 = 0; _i17 < stylesheets.length; _i17++) {
5944
- var stylesheet = stylesheets[_i17];
5849
+ for (var _i16 = 0; _i16 < stylesheets.length; _i16++) {
5850
+ var stylesheet = stylesheets[_i16];
5945
5851
 
5946
5852
  if (isArray$1(stylesheet)) {
5947
5853
  ArrayPush$1.apply(content, evaluateStylesheetsContent(stylesheet, stylesheetToken, vm));
@@ -6046,31 +5952,33 @@
6046
5952
 
6047
5953
  function createStylesheet(vm, stylesheets) {
6048
5954
  var renderMode = vm.renderMode,
6049
- shadowMode = vm.shadowMode;
5955
+ shadowMode = vm.shadowMode,
5956
+ _vm$renderer2 = vm.renderer,
5957
+ ssr = _vm$renderer2.ssr,
5958
+ insertStylesheet = _vm$renderer2.insertStylesheet;
6050
5959
 
6051
5960
  if (renderMode === 1
6052
5961
  /* Shadow */
6053
5962
  && shadowMode === 1
6054
5963
  /* Synthetic */
6055
5964
  ) {
6056
- for (var _i18 = 0; _i18 < stylesheets.length; _i18++) {
6057
- insertStylesheet$1(stylesheets[_i18]);
5965
+ for (var _i17 = 0; _i17 < stylesheets.length; _i17++) {
5966
+ insertStylesheet(stylesheets[_i17]);
6058
5967
  }
6059
- } else if (ssr$1 || vm.hydrated) {
5968
+ } else if (ssr || vm.hydrated) {
6060
5969
  // Note: We need to ensure that during hydration, the stylesheets method is the same as those in ssr.
6061
5970
  // This works in the client, because the stylesheets are created, and cached in the VM
6062
5971
  // the first time the VM renders.
6063
5972
  // native shadow or light DOM, SSR
6064
- var combinedStylesheetContent = ArrayJoin.call(stylesheets, '\n');
6065
- return createInlineStyleVNode(combinedStylesheetContent);
5973
+ return ArrayMap.call(stylesheets, createInlineStyleVNode);
6066
5974
  } else {
6067
5975
  // native shadow or light DOM, DOM renderer
6068
5976
  var root = getNearestNativeShadowComponent(vm); // null root means a global style
6069
5977
 
6070
5978
  var target = isNull(root) ? undefined : root.shadowRoot;
6071
5979
 
6072
- for (var _i19 = 0; _i19 < stylesheets.length; _i19++) {
6073
- insertStylesheet$1(stylesheets[_i19], target);
5980
+ for (var _i18 = 0; _i18 < stylesheets.length; _i18++) {
5981
+ insertStylesheet(stylesheets[_i18], target);
6074
5982
  }
6075
5983
  }
6076
5984
 
@@ -6248,6 +6156,91 @@
6248
6156
  }
6249
6157
  }
6250
6158
 
6159
+ function buildParseFragmentFn(createFragmentFn) {
6160
+ return function (strings) {
6161
+ for (var _len5 = arguments.length, keys = new Array(_len5 > 1 ? _len5 - 1 : 0), _key3 = 1; _key3 < _len5; _key3++) {
6162
+ keys[_key3 - 1] = arguments[_key3];
6163
+ }
6164
+
6165
+ var cache = create(null);
6166
+ return function () {
6167
+ var _getVMBeingRendered = getVMBeingRendered(),
6168
+ _getVMBeingRendered$c = _getVMBeingRendered.context,
6169
+ hasScopedStyles = _getVMBeingRendered$c.hasScopedStyles,
6170
+ stylesheetToken = _getVMBeingRendered$c.stylesheetToken,
6171
+ shadowMode = _getVMBeingRendered.shadowMode,
6172
+ renderer = _getVMBeingRendered.renderer;
6173
+
6174
+ var hasStyleToken = !isUndefined$1(stylesheetToken);
6175
+ var isSyntheticShadow = shadowMode === 1
6176
+ /* Synthetic */
6177
+ ;
6178
+ var cacheKey = 0;
6179
+
6180
+ if (hasStyleToken && hasScopedStyles) {
6181
+ cacheKey |= 1
6182
+ /* HAS_SCOPED_STYLE */
6183
+ ;
6184
+ }
6185
+
6186
+ if (hasStyleToken && isSyntheticShadow) {
6187
+ cacheKey |= 2
6188
+ /* SHADOW_MODE_SYNTHETIC */
6189
+ ;
6190
+ }
6191
+
6192
+ if (!isUndefined$1(cache[cacheKey])) {
6193
+ return cache[cacheKey];
6194
+ }
6195
+
6196
+ var classToken = hasScopedStyles && hasStyleToken ? ' ' + stylesheetToken : '';
6197
+ var classAttrToken = hasScopedStyles && hasStyleToken ? " class=\"".concat(stylesheetToken, "\"") : '';
6198
+ var attrToken = hasStyleToken && isSyntheticShadow ? ' ' + stylesheetToken : '';
6199
+ var htmlFragment = '';
6200
+
6201
+ for (var _i19 = 0, n = keys.length; _i19 < n; _i19++) {
6202
+ switch (keys[_i19]) {
6203
+ case 0:
6204
+ // styleToken in existing class attr
6205
+ htmlFragment += strings[_i19] + classToken;
6206
+ break;
6207
+
6208
+ case 1:
6209
+ // styleToken for added class attr
6210
+ htmlFragment += strings[_i19] + classAttrToken;
6211
+ break;
6212
+
6213
+ case 2:
6214
+ // styleToken as attr
6215
+ htmlFragment += strings[_i19] + attrToken;
6216
+ break;
6217
+
6218
+ case 3:
6219
+ // ${1}${2}
6220
+ htmlFragment += strings[_i19] + classAttrToken + attrToken;
6221
+ break;
6222
+ }
6223
+ }
6224
+
6225
+ htmlFragment += strings[strings.length - 1];
6226
+ cache[cacheKey] = createFragmentFn(htmlFragment, renderer);
6227
+ return cache[cacheKey];
6228
+ };
6229
+ };
6230
+ } // Note: at the moment this code executes, we don't have a renderer yet.
6231
+
6232
+
6233
+ var parseFragment = buildParseFragmentFn(function (html, renderer) {
6234
+ var createFragment = renderer.createFragment;
6235
+ return createFragment(html);
6236
+ });
6237
+ var parseSVGFragment = buildParseFragmentFn(function (html, renderer) {
6238
+ var createFragment = renderer.createFragment,
6239
+ getFirstChild = renderer.getFirstChild;
6240
+ var fragment = createFragment('<svg>' + html + '</svg>');
6241
+ return getFirstChild(fragment);
6242
+ });
6243
+
6251
6244
  function evaluateTemplate(vm, html) {
6252
6245
  if (process.env.NODE_ENV !== 'production') {
6253
6246
  assert.isTrue(isFunction$1(html), "evaluateTemplate() second argument must be an imported template instead of ".concat(toString$1(html))); // in dev-mode, we support hot swapping of templates, which means that
@@ -6304,7 +6297,7 @@
6304
6297
  // re-rendering.
6305
6298
 
6306
6299
  var stylesheetsContent = getStylesheetsContent(vm, html);
6307
- context.styleVNode = stylesheetsContent.length === 0 ? null : createStylesheet(vm, stylesheetsContent);
6300
+ context.styleVNodes = stylesheetsContent.length === 0 ? null : createStylesheet(vm, stylesheetsContent);
6308
6301
  }
6309
6302
 
6310
6303
  if (process.env.NODE_ENV !== 'production') {
@@ -6320,10 +6313,10 @@
6320
6313
 
6321
6314
  isUpdatingTemplate = true;
6322
6315
  vnodes = html.call(undefined, api, component, cmpSlots, context.tplCache);
6323
- var styleVNode = context.styleVNode;
6316
+ var styleVNodes = context.styleVNodes;
6324
6317
 
6325
- if (!isNull(styleVNode)) {
6326
- ArrayUnshift.call(vnodes, styleVNode);
6318
+ if (!isNull(styleVNodes)) {
6319
+ ArrayUnshift.apply(vnodes, styleVNodes);
6327
6320
  }
6328
6321
  });
6329
6322
  }, function () {
@@ -6709,7 +6702,7 @@
6709
6702
  return ancestor;
6710
6703
  }
6711
6704
 
6712
- function createVM(elm, ctor, options) {
6705
+ function createVM(elm, ctor, renderer, options) {
6713
6706
  var mode = options.mode,
6714
6707
  owner = options.owner,
6715
6708
  tagName = options.tagName,
@@ -6742,7 +6735,7 @@
6742
6735
  hasTokenInClass: undefined,
6743
6736
  hasTokenInAttribute: undefined,
6744
6737
  hasScopedStyles: undefined,
6745
- styleVNode: null,
6738
+ styleVNodes: null,
6746
6739
  tplCache: EmptyObject,
6747
6740
  wiredConnecting: EmptyArray,
6748
6741
  wiredDisconnecting: EmptyArray
@@ -6756,9 +6749,10 @@
6756
6749
  renderRoot: null,
6757
6750
  callHook: callHook,
6758
6751
  setHook: setHook,
6759
- getHook: getHook
6752
+ getHook: getHook,
6753
+ renderer: renderer
6760
6754
  };
6761
- vm.shadowMode = computeShadowMode(vm);
6755
+ vm.shadowMode = computeShadowMode(vm, renderer);
6762
6756
  vm.tro = getTemplateReactiveObserver(vm);
6763
6757
 
6764
6758
  if (process.env.NODE_ENV !== 'production') {
@@ -6783,11 +6777,13 @@
6783
6777
  return vm;
6784
6778
  }
6785
6779
 
6786
- function computeShadowMode(vm) {
6780
+ function computeShadowMode(vm, renderer) {
6787
6781
  var def = vm.def;
6782
+ var isSyntheticShadowDefined = renderer.isSyntheticShadowDefined,
6783
+ isNativeShadowDefined = renderer.isNativeShadowDefined;
6788
6784
  var shadowMode;
6789
6785
 
6790
- if (isSyntheticShadowDefined$1) {
6786
+ if (isSyntheticShadowDefined) {
6791
6787
  if (def.renderMode === 0
6792
6788
  /* Light */
6793
6789
  ) {
@@ -6796,7 +6792,7 @@
6796
6792
  shadowMode = 0
6797
6793
  /* Native */
6798
6794
  ;
6799
- } else if (isNativeShadowDefined$1) {
6795
+ } else if (isNativeShadowDefined) {
6800
6796
  // Not combined with above condition because @lwc/features only supports identifiers in
6801
6797
  // the if-condition.
6802
6798
  if (runtimeFlags.ENABLE_MIXED_SHADOW_MODE) {
@@ -6887,7 +6883,8 @@
6887
6883
 
6888
6884
  function patchShadowRoot(vm, newCh) {
6889
6885
  var renderRoot = vm.renderRoot,
6890
- oldCh = vm.children; // caching the new children collection
6886
+ oldCh = vm.children,
6887
+ renderer = vm.renderer; // caching the new children collection
6891
6888
 
6892
6889
  vm.children = newCh;
6893
6890
 
@@ -6902,7 +6899,7 @@
6902
6899
  , vm);
6903
6900
  }, function () {
6904
6901
  // job
6905
- patchChildren(oldCh, newCh, renderRoot);
6902
+ patchChildren(oldCh, newCh, renderRoot, renderer);
6906
6903
  }, function () {
6907
6904
  // post
6908
6905
  logOperationEnd(2
@@ -6924,9 +6921,10 @@
6924
6921
  }
6925
6922
 
6926
6923
  function runRenderedCallback(vm) {
6927
- var renderedCallback = vm.def.renderedCallback;
6924
+ var renderedCallback = vm.def.renderedCallback,
6925
+ ssr = vm.renderer.ssr;
6928
6926
 
6929
- if (isTrue(ssr$1)) {
6927
+ if (isTrue(ssr)) {
6930
6928
  return;
6931
6929
  }
6932
6930
 
@@ -7144,13 +7142,14 @@
7144
7142
 
7145
7143
  function resetComponentRoot(vm) {
7146
7144
  var children = vm.children,
7147
- renderRoot = vm.renderRoot;
7145
+ renderRoot = vm.renderRoot,
7146
+ remove = vm.renderer.remove;
7148
7147
 
7149
7148
  for (var _i26 = 0, len = children.length; _i26 < len; _i26++) {
7150
7149
  var child = children[_i26];
7151
7150
 
7152
7151
  if (!isNull(child) && !isUndefined$1(child.elm)) {
7153
- remove$1(child.elm, renderRoot);
7152
+ remove(child.elm, renderRoot);
7154
7153
  }
7155
7154
  }
7156
7155
 
@@ -7160,7 +7159,9 @@
7160
7159
  }
7161
7160
 
7162
7161
  function scheduleRehydration(vm) {
7163
- if (isTrue(ssr$1) || isTrue(vm.isScheduled)) {
7162
+ var ssr = vm.renderer.ssr;
7163
+
7164
+ if (isTrue(ssr) || isTrue(vm.isScheduled)) {
7164
7165
  return;
7165
7166
  }
7166
7167
 
@@ -7347,7 +7348,8 @@
7347
7348
  var elm = vm.elm,
7348
7349
  _vm$context = vm.context,
7349
7350
  wiredConnecting = _vm$context.wiredConnecting,
7350
- wiredDisconnecting = _vm$context.wiredDisconnecting; // waiting for the component to be connected to formally request the context via the token
7351
+ wiredDisconnecting = _vm$context.wiredDisconnecting,
7352
+ dispatchEvent = vm.renderer.dispatchEvent; // waiting for the component to be connected to formally request the context via the token
7351
7353
 
7352
7354
  ArrayPush$1.call(wiredConnecting, function () {
7353
7355
  // This event is responsible for connecting the host element with another
@@ -7367,7 +7369,7 @@
7367
7369
  ArrayPush$1.call(wiredDisconnecting, disconnectCallback);
7368
7370
  }
7369
7371
  });
7370
- dispatchEvent$1(elm, contextRegistrationEvent);
7372
+ dispatchEvent(elm, contextRegistrationEvent);
7371
7373
  });
7372
7374
  }
7373
7375
 
@@ -7631,95 +7633,123 @@
7631
7633
  function hydrateVM(vm) {
7632
7634
  var children = renderComponent(vm);
7633
7635
  vm.children = children;
7634
- var parentNode = vm.renderRoot;
7635
- hydrateChildren(getFirstChild$1(parentNode), children, parentNode, vm);
7636
+ var parentNode = vm.renderRoot,
7637
+ getFirstChild = vm.renderer.getFirstChild;
7638
+ hydrateChildren(getFirstChild(parentNode), children, parentNode, vm);
7636
7639
  runRenderedCallback(vm);
7637
7640
  }
7638
7641
 
7639
- function hydrateNode(node, vnode) {
7642
+ function hydrateNode(node, vnode, renderer) {
7643
+ var _a, _b;
7644
+
7640
7645
  var hydratedNode;
7641
7646
 
7642
7647
  switch (vnode.type) {
7643
7648
  case 0
7644
7649
  /* Text */
7645
7650
  :
7646
- hydratedNode = hydrateText(node, vnode);
7651
+ // VText has no special capability, fallback to the owner's renderer
7652
+ hydratedNode = hydrateText(node, vnode, renderer);
7647
7653
  break;
7648
7654
 
7649
7655
  case 1
7650
7656
  /* Comment */
7651
7657
  :
7652
- hydratedNode = hydrateComment(node, vnode);
7658
+ // VComment has no special capability, fallback to the owner's renderer
7659
+ hydratedNode = hydrateComment(node, vnode, renderer);
7660
+ break;
7661
+
7662
+ case 4
7663
+ /* Static */
7664
+ :
7665
+ // VStatic are cacheable and cannot have custom renderer associated to them
7666
+ hydratedNode = hydrateStaticElement(node, vnode, renderer);
7653
7667
  break;
7654
7668
 
7655
7669
  case 2
7656
7670
  /* Element */
7657
7671
  :
7658
- hydratedNode = hydrateElement(node, vnode);
7672
+ hydratedNode = hydrateElement(node, vnode, (_a = vnode.data.renderer) !== null && _a !== void 0 ? _a : renderer);
7659
7673
  break;
7660
7674
 
7661
7675
  case 3
7662
7676
  /* CustomElement */
7663
7677
  :
7664
- hydratedNode = hydrateCustomElement(node, vnode);
7678
+ hydratedNode = hydrateCustomElement(node, vnode, (_b = vnode.data.renderer) !== null && _b !== void 0 ? _b : renderer);
7665
7679
  break;
7666
7680
  }
7667
7681
 
7668
- return nextSibling$1(hydratedNode);
7682
+ return renderer.nextSibling(hydratedNode);
7669
7683
  }
7670
7684
 
7671
- function hydrateText(node, vnode) {
7685
+ function hydrateText(node, vnode, renderer) {
7672
7686
  var _a;
7673
7687
 
7674
7688
  if (!hasCorrectNodeType(vnode, node, 3
7675
7689
  /* TEXT */
7676
- )) {
7677
- return handleMismatch(node, vnode);
7690
+ , renderer)) {
7691
+ return handleMismatch(node, vnode, renderer);
7678
7692
  }
7679
7693
 
7680
7694
  if (process.env.NODE_ENV !== 'production') {
7681
- var nodeValue = getProperty$1(node, 'nodeValue');
7695
+ var _getProperty = renderer.getProperty;
7696
+
7697
+ var nodeValue = _getProperty(node, 'nodeValue');
7682
7698
 
7683
7699
  if (nodeValue !== vnode.text && !(nodeValue === "\u200D" && vnode.text === '')) {
7684
7700
  logWarn('Hydration mismatch: text values do not match, will recover from the difference', vnode.owner);
7685
7701
  }
7686
7702
  }
7687
7703
 
7688
- setText$1(node, (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
7704
+ var setText = renderer.setText;
7705
+ setText(node, (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
7689
7706
  vnode.elm = node;
7690
7707
  return node;
7691
7708
  }
7692
7709
 
7693
- function hydrateComment(node, vnode) {
7710
+ function hydrateComment(node, vnode, renderer) {
7694
7711
  var _a;
7695
7712
 
7696
7713
  if (!hasCorrectNodeType(vnode, node, 8
7697
7714
  /* COMMENT */
7698
- )) {
7699
- return handleMismatch(node, vnode);
7715
+ , renderer)) {
7716
+ return handleMismatch(node, vnode, renderer);
7700
7717
  }
7701
7718
 
7702
7719
  if (process.env.NODE_ENV !== 'production') {
7703
- var nodeValue = getProperty$1(node, 'nodeValue');
7720
+ var _getProperty2 = renderer.getProperty;
7721
+
7722
+ var nodeValue = _getProperty2(node, 'nodeValue');
7704
7723
 
7705
7724
  if (nodeValue !== vnode.text) {
7706
7725
  logWarn('Hydration mismatch: comment values do not match, will recover from the difference', vnode.owner);
7707
7726
  }
7708
7727
  }
7709
7728
 
7710
- setProperty$1(node, 'nodeValue', (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
7729
+ var setProperty = renderer.setProperty;
7730
+ setProperty(node, 'nodeValue', (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
7711
7731
  vnode.elm = node;
7712
7732
  return node;
7713
7733
  }
7714
7734
 
7715
- function hydrateElement(elm, vnode) {
7735
+ function hydrateStaticElement(elm, vnode, renderer) {
7736
+ if (!areCompatibleNodes(vnode.fragment, elm, vnode, renderer)) {
7737
+ return handleMismatch(elm, vnode, renderer);
7738
+ }
7739
+
7740
+ vnode.elm = elm;
7741
+ return elm;
7742
+ }
7743
+
7744
+ function hydrateElement(elm, vnode, renderer) {
7716
7745
  if (!hasCorrectNodeType(vnode, elm, 1
7717
7746
  /* ELEMENT */
7718
- ) || !isMatchingElement(vnode, elm)) {
7719
- return handleMismatch(elm, vnode);
7747
+ , renderer) || !isMatchingElement(vnode, elm, renderer)) {
7748
+ return handleMismatch(elm, vnode, renderer);
7720
7749
  }
7721
7750
 
7722
7751
  vnode.elm = elm;
7752
+ var owner = vnode.owner;
7723
7753
  var context = vnode.data.context;
7724
7754
  var isDomManual = Boolean(!isUndefined$1(context) && !isUndefined$1(context.lwc) && context.lwc.dom === "manual"
7725
7755
  /* Manual */
@@ -7729,42 +7759,44 @@
7729
7759
  // it may be that this element has lwc:inner-html, we need to diff and in case are the same,
7730
7760
  // remove the innerHTML from props so it reuses the existing dom elements.
7731
7761
  var props = vnode.data.props;
7762
+ var _getProperty3 = renderer.getProperty;
7732
7763
 
7733
7764
  if (!isUndefined$1(props) && !isUndefined$1(props.innerHTML)) {
7734
- if (getProperty$1(elm, 'innerHTML') === props.innerHTML) {
7765
+ if (_getProperty3(elm, 'innerHTML') === props.innerHTML) {
7735
7766
  // Do a shallow clone since VNodeData may be shared across VNodes due to hoist optimization
7736
7767
  vnode.data = Object.assign(Object.assign({}, vnode.data), {
7737
7768
  props: cloneAndOmitKey(props, 'innerHTML')
7738
7769
  });
7739
7770
  } else {
7740
7771
  if (process.env.NODE_ENV !== 'production') {
7741
- logWarn("Mismatch hydrating element <".concat(getProperty$1(elm, 'tagName').toLowerCase(), ">: innerHTML values do not match for element, will recover from the difference"), vnode.owner);
7772
+ logWarn("Mismatch hydrating element <".concat(_getProperty3(elm, 'tagName').toLowerCase(), ">: innerHTML values do not match for element, will recover from the difference"), owner);
7742
7773
  }
7743
7774
  }
7744
7775
  }
7745
7776
  }
7746
7777
 
7747
- patchElementPropsAndAttrs(vnode);
7778
+ patchElementPropsAndAttrs(vnode, renderer);
7748
7779
 
7749
7780
  if (!isDomManual) {
7750
- hydrateChildren(getFirstChild$1(elm), vnode.children, elm, vnode.owner);
7781
+ var _getFirstChild = renderer.getFirstChild;
7782
+ hydrateChildren(_getFirstChild(elm), vnode.children, elm, owner);
7751
7783
  }
7752
7784
 
7753
7785
  return elm;
7754
7786
  }
7755
7787
 
7756
- function hydrateCustomElement(elm, vnode) {
7788
+ function hydrateCustomElement(elm, vnode, renderer) {
7757
7789
  if (!hasCorrectNodeType(vnode, elm, 1
7758
7790
  /* ELEMENT */
7759
- ) || !isMatchingElement(vnode, elm)) {
7760
- return handleMismatch(elm, vnode);
7791
+ , renderer) || !isMatchingElement(vnode, elm, renderer)) {
7792
+ return handleMismatch(elm, vnode, renderer);
7761
7793
  }
7762
7794
 
7763
7795
  var sel = vnode.sel,
7764
7796
  mode = vnode.mode,
7765
7797
  ctor = vnode.ctor,
7766
7798
  owner = vnode.owner;
7767
- var vm = createVM(elm, ctor, {
7799
+ var vm = createVM(elm, ctor, renderer, {
7768
7800
  mode: mode,
7769
7801
  owner: owner,
7770
7802
  tagName: sel,
@@ -7773,7 +7805,7 @@
7773
7805
  vnode.elm = elm;
7774
7806
  vnode.vm = vm;
7775
7807
  allocateChildren(vnode, vm);
7776
- patchElementPropsAndAttrs(vnode); // Insert hook section:
7808
+ patchElementPropsAndAttrs(vnode, renderer); // Insert hook section:
7777
7809
 
7778
7810
  if (process.env.NODE_ENV !== 'production') {
7779
7811
  assert.isTrue(vm.state === 0
@@ -7786,9 +7818,10 @@
7786
7818
  if (vm.renderMode !== 0
7787
7819
  /* Light */
7788
7820
  ) {
7789
- // VM is not rendering in Light DOM, we can proceed and hydrate the slotted content.
7821
+ var _getFirstChild2 = renderer.getFirstChild; // VM is not rendering in Light DOM, we can proceed and hydrate the slotted content.
7790
7822
  // Note: for Light DOM, this is handled while hydrating the VM
7791
- hydrateChildren(getFirstChild$1(elm), vnode.children, elm, vm);
7823
+
7824
+ hydrateChildren(_getFirstChild2(elm), vnode.children, elm, vm);
7792
7825
  }
7793
7826
 
7794
7827
  hydrateVM(vm);
@@ -7799,13 +7832,14 @@
7799
7832
  var hasWarned = false;
7800
7833
  var nextNode = node;
7801
7834
  var anchor = null;
7835
+ var renderer = owner.renderer;
7802
7836
 
7803
7837
  for (var _i29 = 0; _i29 < children.length; _i29++) {
7804
7838
  var childVnode = children[_i29];
7805
7839
 
7806
7840
  if (!isNull(childVnode)) {
7807
7841
  if (nextNode) {
7808
- nextNode = hydrateNode(nextNode, childVnode);
7842
+ nextNode = hydrateNode(nextNode, childVnode, renderer);
7809
7843
  anchor = childVnode.elm;
7810
7844
  } else {
7811
7845
  hasMismatch = true;
@@ -7817,7 +7851,7 @@
7817
7851
  }
7818
7852
  }
7819
7853
 
7820
- mount(childVnode, parentNode, anchor);
7854
+ mount(childVnode, parentNode, renderer, anchor);
7821
7855
  anchor = childVnode.elm;
7822
7856
  }
7823
7857
  }
@@ -7830,38 +7864,40 @@
7830
7864
  if (!hasWarned) {
7831
7865
  logError("Hydration mismatch: incorrect number of rendered nodes. Server rendered more nodes than the client.", owner);
7832
7866
  }
7833
- }
7867
+ } // nextSibling is mostly harmless, and since we don't have
7868
+ // a good reference to what element to act upon, we instead
7869
+ // rely on the vm's associated renderer for navigating to the
7870
+ // next node in the list to be hydrated.
7871
+
7872
+
7873
+ var _nextSibling = renderer.nextSibling;
7834
7874
 
7835
7875
  do {
7836
7876
  var current = nextNode;
7837
- nextNode = nextSibling$1(nextNode);
7838
- removeNode(current, parentNode);
7877
+ nextNode = _nextSibling(nextNode);
7878
+ removeNode(current, parentNode, renderer);
7839
7879
  } while (nextNode);
7840
7880
  }
7841
7881
  }
7842
7882
 
7843
- function handleMismatch(node, vnode, msg) {
7883
+ function handleMismatch(node, vnode, renderer) {
7844
7884
  hasMismatch = true;
7845
-
7846
- if (!isUndefined$1(msg)) {
7847
- if (process.env.NODE_ENV !== 'production') {
7848
- logError(msg, vnode.owner);
7849
- }
7850
- }
7851
-
7852
- var parentNode = getProperty$1(node, 'parentNode');
7853
- mount(vnode, parentNode, node);
7854
- removeNode(node, parentNode);
7885
+ var getProperty = renderer.getProperty;
7886
+ var parentNode = getProperty(node, 'parentNode');
7887
+ mount(vnode, parentNode, renderer, node);
7888
+ removeNode(node, parentNode, renderer);
7855
7889
  return vnode.elm;
7856
7890
  }
7857
7891
 
7858
- function patchElementPropsAndAttrs(vnode) {
7859
- applyEventListeners(vnode);
7860
- patchProps(null, vnode);
7892
+ function patchElementPropsAndAttrs(vnode, renderer) {
7893
+ applyEventListeners(vnode, renderer);
7894
+ patchProps(null, vnode, renderer);
7861
7895
  }
7862
7896
 
7863
- function hasCorrectNodeType(vnode, node, nodeType) {
7864
- if (getProperty$1(node, 'nodeType') !== nodeType) {
7897
+ function hasCorrectNodeType(vnode, node, nodeType, renderer) {
7898
+ var getProperty = renderer.getProperty;
7899
+
7900
+ if (getProperty(node, 'nodeType') !== nodeType) {
7865
7901
  if (process.env.NODE_ENV !== 'production') {
7866
7902
  logError('Hydration mismatch: incorrect node type received', vnode.owner);
7867
7903
  }
@@ -7872,22 +7908,24 @@
7872
7908
  return true;
7873
7909
  }
7874
7910
 
7875
- function isMatchingElement(vnode, elm) {
7876
- if (vnode.sel.toLowerCase() !== getProperty$1(elm, 'tagName').toLowerCase()) {
7911
+ function isMatchingElement(vnode, elm, renderer) {
7912
+ var getProperty = renderer.getProperty;
7913
+
7914
+ if (vnode.sel.toLowerCase() !== getProperty(elm, 'tagName').toLowerCase()) {
7877
7915
  if (process.env.NODE_ENV !== 'production') {
7878
- logError("Hydration mismatch: expecting element with tag \"".concat(vnode.sel.toLowerCase(), "\" but found \"").concat(getProperty$1(elm, 'tagName').toLowerCase(), "\"."), vnode.owner);
7916
+ logError("Hydration mismatch: expecting element with tag \"".concat(vnode.sel.toLowerCase(), "\" but found \"").concat(getProperty(elm, 'tagName').toLowerCase(), "\"."), vnode.owner);
7879
7917
  }
7880
7918
 
7881
7919
  return false;
7882
7920
  }
7883
7921
 
7884
- var hasIncompatibleAttrs = validateAttrs(vnode, elm);
7885
- var hasIncompatibleClass = validateClassAttr(vnode, elm);
7886
- var hasIncompatibleStyle = validateStyleAttr(vnode, elm);
7922
+ var hasIncompatibleAttrs = validateAttrs(vnode, elm, renderer);
7923
+ var hasIncompatibleClass = validateClassAttr(vnode, elm, renderer);
7924
+ var hasIncompatibleStyle = validateStyleAttr(vnode, elm, renderer);
7887
7925
  return hasIncompatibleAttrs && hasIncompatibleClass && hasIncompatibleStyle;
7888
7926
  }
7889
7927
 
7890
- function validateAttrs(vnode, elm) {
7928
+ function validateAttrs(vnode, elm, renderer) {
7891
7929
  var _vnode$data$attrs = vnode.data.attrs,
7892
7930
  attrs = _vnode$data$attrs === void 0 ? {} : _vnode$data$attrs;
7893
7931
  var nodesAreCompatible = true; // Validate attributes, though we could always recovery from those by running the update mods.
@@ -7898,11 +7936,15 @@
7898
7936
  attrName = _Object$entries$_i[0],
7899
7937
  attrValue = _Object$entries$_i[1];
7900
7938
 
7901
- var elmAttrValue = getAttribute$1(elm, attrName);
7939
+ var owner = vnode.owner;
7940
+ var _getAttribute = renderer.getAttribute;
7941
+
7942
+ var elmAttrValue = _getAttribute(elm, attrName);
7902
7943
 
7903
7944
  if (String(attrValue) !== elmAttrValue) {
7904
7945
  if (process.env.NODE_ENV !== 'production') {
7905
- logError("Mismatch hydrating element <".concat(getProperty$1(elm, 'tagName').toLowerCase(), ">: attribute \"").concat(attrName, "\" has different values, expected \"").concat(attrValue, "\" but found \"").concat(elmAttrValue, "\""), vnode.owner);
7946
+ var _getProperty4 = renderer.getProperty;
7947
+ logError("Mismatch hydrating element <".concat(_getProperty4(elm, 'tagName').toLowerCase(), ">: attribute \"").concat(attrName, "\" has different values, expected \"").concat(attrValue, "\" but found \"").concat(elmAttrValue, "\""), owner);
7906
7948
  }
7907
7949
 
7908
7950
  nodesAreCompatible = false;
@@ -7912,20 +7954,22 @@
7912
7954
  return nodesAreCompatible;
7913
7955
  }
7914
7956
 
7915
- function validateClassAttr(vnode, elm) {
7957
+ function validateClassAttr(vnode, elm, renderer) {
7916
7958
  var _vnode$data = vnode.data,
7917
7959
  className = _vnode$data.className,
7918
7960
  classMap = _vnode$data.classMap;
7961
+ var getProperty = renderer.getProperty,
7962
+ getClassList = renderer.getClassList;
7919
7963
  var nodesAreCompatible = true;
7920
7964
  var vnodeClassName;
7921
7965
 
7922
- if (!isUndefined$1(className) && String(className) !== getProperty$1(elm, 'className')) {
7966
+ if (!isUndefined$1(className) && String(className) !== getProperty(elm, 'className')) {
7923
7967
  // className is used when class is bound to an expr.
7924
7968
  nodesAreCompatible = false;
7925
7969
  vnodeClassName = className;
7926
7970
  } else if (!isUndefined$1(classMap)) {
7927
7971
  // classMap is used when class is set to static value.
7928
- var classList = getClassList$1(elm);
7972
+ var classList = getClassList(elm);
7929
7973
  var computedClassName = ''; // all classes from the vnode should be in the element.classList
7930
7974
 
7931
7975
  for (var name in classMap) {
@@ -7945,18 +7989,19 @@
7945
7989
 
7946
7990
  if (!nodesAreCompatible) {
7947
7991
  if (process.env.NODE_ENV !== 'production') {
7948
- logError("Mismatch hydrating element <".concat(getProperty$1(elm, 'tagName').toLowerCase(), ">: attribute \"class\" has different values, expected \"").concat(vnodeClassName, "\" but found \"").concat(getProperty$1(elm, 'className'), "\""), vnode.owner);
7992
+ logError("Mismatch hydrating element <".concat(getProperty(elm, 'tagName').toLowerCase(), ">: attribute \"class\" has different values, expected \"").concat(vnodeClassName, "\" but found \"").concat(getProperty(elm, 'className'), "\""), vnode.owner);
7949
7993
  }
7950
7994
  }
7951
7995
 
7952
7996
  return nodesAreCompatible;
7953
7997
  }
7954
7998
 
7955
- function validateStyleAttr(vnode, elm) {
7999
+ function validateStyleAttr(vnode, elm, renderer) {
7956
8000
  var _vnode$data2 = vnode.data,
7957
8001
  style = _vnode$data2.style,
7958
8002
  styleDecls = _vnode$data2.styleDecls;
7959
- var elmStyle = getAttribute$1(elm, 'style') || '';
8003
+ var getAttribute = renderer.getAttribute;
8004
+ var elmStyle = getAttribute(elm, 'style') || '';
7960
8005
  var vnodeStyle;
7961
8006
  var nodesAreCompatible = true;
7962
8007
 
@@ -7994,12 +8039,67 @@
7994
8039
 
7995
8040
  if (!nodesAreCompatible) {
7996
8041
  if (process.env.NODE_ENV !== 'production') {
7997
- logError("Mismatch hydrating element <".concat(getProperty$1(elm, 'tagName').toLowerCase(), ">: attribute \"style\" has different values, expected \"").concat(vnodeStyle, "\" but found \"").concat(elmStyle, "\"."), vnode.owner);
8042
+ var _getProperty5 = renderer.getProperty;
8043
+ logError("Mismatch hydrating element <".concat(_getProperty5(elm, 'tagName').toLowerCase(), ">: attribute \"style\" has different values, expected \"").concat(vnodeStyle, "\" but found \"").concat(elmStyle, "\"."), vnode.owner);
7998
8044
  }
7999
8045
  }
8000
8046
 
8001
8047
  return nodesAreCompatible;
8002
8048
  }
8049
+
8050
+ function areCompatibleNodes(client, ssr, vnode, renderer) {
8051
+ var getProperty = renderer.getProperty,
8052
+ getAttribute = renderer.getAttribute;
8053
+
8054
+ if (getProperty(client, 'nodeType') === 3
8055
+ /* TEXT */
8056
+ ) {
8057
+ if (!hasCorrectNodeType(vnode, ssr, 3
8058
+ /* TEXT */
8059
+ , renderer)) {
8060
+ return false;
8061
+ }
8062
+
8063
+ return getProperty(client, 'nodeValue') === getProperty(ssr, 'nodeValue');
8064
+ }
8065
+
8066
+ if (getProperty(client, 'nodeType') === 8
8067
+ /* COMMENT */
8068
+ ) {
8069
+ if (!hasCorrectNodeType(vnode, ssr, 8
8070
+ /* COMMENT */
8071
+ , renderer)) {
8072
+ return false;
8073
+ }
8074
+
8075
+ return getProperty(client, 'nodeValue') === getProperty(ssr, 'nodeValue');
8076
+ }
8077
+
8078
+ if (!hasCorrectNodeType(vnode, ssr, 1
8079
+ /* ELEMENT */
8080
+ , renderer)) {
8081
+ return false;
8082
+ }
8083
+
8084
+ var isCompatibleElements = true;
8085
+
8086
+ if (getProperty(client, 'tagName') !== getProperty(ssr, 'tagName')) {
8087
+ if (process.env.NODE_ENV !== 'production') {
8088
+ logError("Hydration mismatch: expecting element with tag \"".concat(getProperty(client, 'tagName').toLowerCase(), "\" but found \"").concat(getProperty(ssr, 'tagName').toLowerCase(), "\"."), vnode.owner);
8089
+ }
8090
+
8091
+ return false;
8092
+ }
8093
+
8094
+ var clientAttrsNames = getProperty(client, 'getAttributeNames').call(client);
8095
+ clientAttrsNames.forEach(function (attrName) {
8096
+ if (getAttribute(client, attrName) !== getAttribute(ssr, attrName)) {
8097
+ logError("Mismatch hydrating element <".concat(getProperty(client, 'tagName').toLowerCase(), ">: attribute \"").concat(attrName, "\" has different values, expected \"").concat(getAttribute(client, attrName), "\" but found \"").concat(getAttribute(ssr, attrName), "\""), vnode.owner);
8098
+ isCompatibleElements = false;
8099
+ }
8100
+ });
8101
+ return isCompatibleElements;
8102
+ }
8003
8103
  /*
8004
8104
  * Copyright (c) 2018, salesforce.com, inc.
8005
8105
  * All rights reserved.
@@ -8069,7 +8169,7 @@
8069
8169
  _step3;
8070
8170
 
8071
8171
  try {
8072
- var _loop3 = function _loop3() {
8172
+ var _loop2 = function _loop2() {
8073
8173
  var prop = _step3.value;
8074
8174
  var originalArrayMethod = getOriginalArrayMethod(prop);
8075
8175
 
@@ -8081,7 +8181,7 @@
8081
8181
  };
8082
8182
 
8083
8183
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
8084
- _loop3();
8184
+ _loop2();
8085
8185
  }
8086
8186
  } catch (err) {
8087
8187
  _iterator3.e(err);
@@ -8102,7 +8202,7 @@
8102
8202
  _step4;
8103
8203
 
8104
8204
  try {
8105
- var _loop4 = function _loop4() {
8205
+ var _loop3 = function _loop3() {
8106
8206
  var prop = _step4.value;
8107
8207
  var value = tmpl[prop];
8108
8208
  defineProperty(tmpl, prop, {
@@ -8122,7 +8222,7 @@
8122
8222
  };
8123
8223
 
8124
8224
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
8125
- _loop4();
8225
+ _loop3();
8126
8226
  }
8127
8227
  } catch (err) {
8128
8228
  _iterator4.e(err);
@@ -8172,7 +8272,7 @@
8172
8272
 
8173
8273
  return ctor;
8174
8274
  }
8175
- /* version: 2.14.1 */
8275
+ /* version: 2.16.0 */
8176
8276
 
8177
8277
  /*
8178
8278
  * Copyright (c) 2018, salesforce.com, inc.
@@ -8351,7 +8451,7 @@
8351
8451
  try {
8352
8452
  // dereference HTMLElement global because babel wraps globals in compat mode with a
8353
8453
  // _wrapNativeSuper()
8354
- // This is a problem because LWCUpgradableElement extends renderer.HTMLElement which does not
8454
+ // This is a problem because LWCUpgradableElement extends renderer.HTMLElementExported which does not
8355
8455
  // get wrapped by babel.
8356
8456
  var HTMLElementAlias = HTMLElement; // In case we use compat mode with a modern browser, the compat mode transformation
8357
8457
  // invokes the DOM api with an .apply() or .call() to initialize any DOM api sub-classing,
@@ -8427,9 +8527,22 @@
8427
8527
  }
8428
8528
 
8429
8529
  var ssr = false;
8530
+
8531
+ function isHydrating() {
8532
+ return hydrating;
8533
+ }
8534
+
8430
8535
  var isNativeShadowDefined = _globalThis[KEY__IS_NATIVE_SHADOW_ROOT_DEFINED];
8431
8536
  var isSyntheticShadowDefined = hasOwnProperty$1.call(Element.prototype, KEY__SHADOW_TOKEN);
8432
8537
 
8538
+ function cloneNode(node, deep) {
8539
+ return node.cloneNode(deep);
8540
+ }
8541
+
8542
+ function createFragment(html) {
8543
+ return document.createRange().createContextualFragment(html).firstChild;
8544
+ }
8545
+
8433
8546
  function createElement$1(tagName, namespace) {
8434
8547
  return isUndefined$1(namespace) ? document.createElement(tagName) : document.createElementNS(namespace, tagName);
8435
8548
  }
@@ -8572,75 +8685,49 @@
8572
8685
  }
8573
8686
 
8574
8687
  var HTMLElementExported = HTMLElementConstructor;
8575
- /*
8576
- * Copyright (c) 2020, salesforce.com, inc.
8577
- * All rights reserved.
8578
- * SPDX-License-Identifier: MIT
8579
- * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
8580
- */
8581
-
8582
- setAssertInstanceOfHTMLElement(assertInstanceOfHTMLElement);
8583
- setAttachShadow(attachShadow);
8584
- setCreateComment(createComment);
8585
- setCreateElement(createElement$1);
8586
- setCreateText(createText);
8587
- setDefineCustomElement(defineCustomElement);
8588
- setDispatchEvent(dispatchEvent);
8589
- setGetAttribute(getAttribute);
8590
- setGetBoundingClientRect(getBoundingClientRect);
8591
- setGetChildNodes(getChildNodes);
8592
- setGetChildren(getChildren);
8593
- setGetClassList(getClassList);
8594
- setGetCustomElement(getCustomElement);
8595
- setGetElementsByClassName(getElementsByClassName);
8596
- setGetElementsByTagName(getElementsByTagName);
8597
- setGetFirstChild(getFirstChild);
8598
- setGetFirstElementChild(getFirstElementChild);
8599
- setGetLastChild(getLastChild);
8600
- setGetLastElementChild(getLastElementChild);
8601
- setGetProperty(getProperty);
8602
- setHTMLElement(HTMLElementExported);
8603
- setInsert(insert);
8604
- setIsConnected(isConnected);
8605
- setIsNativeShadowDefined(isNativeShadowDefined);
8606
- setIsSyntheticShadowDefined(isSyntheticShadowDefined);
8607
- setNextSibling(nextSibling);
8608
- setQuerySelector(querySelector);
8609
- setQuerySelectorAll(querySelectorAll);
8610
- setRemove(remove);
8611
- setRemoveAttribute(removeAttribute);
8612
- setRemoveEventListener(removeEventListener);
8613
- setSetAttribute(setAttribute);
8614
- setSetCSSStyleProperty(setCSSStyleProperty);
8615
- setSetProperty(setProperty);
8616
- setSetText(setText);
8617
- setSsr(ssr);
8618
- setAddEventListener(addEventListener);
8619
- setInsertStylesheet(insertStylesheet);
8620
- /*
8621
- * Copyright (c) 2018, salesforce.com, inc.
8622
- * All rights reserved.
8623
- * SPDX-License-Identifier: MIT
8624
- * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
8625
- */
8626
- // @ts-ignore
8627
-
8628
- if (process.env.NODE_ENV !== 'production' && typeof __karma__ !== 'undefined') {
8629
- window.addEventListener('test-dummy-flag', function () {
8630
- var hasFlag = false;
8631
-
8632
- if (runtimeFlags.DUMMY_TEST_FLAG) {
8633
- hasFlag = true;
8634
- }
8635
-
8636
- window.dispatchEvent(new CustomEvent('has-dummy-flag', {
8637
- detail: {
8638
- package: '@lwc/engine-dom',
8639
- hasFlag: hasFlag
8640
- }
8641
- }));
8642
- });
8643
- }
8688
+ var renderer = {
8689
+ ssr: ssr,
8690
+ isNativeShadowDefined: isNativeShadowDefined,
8691
+ isSyntheticShadowDefined: isSyntheticShadowDefined,
8692
+ HTMLElementExported: HTMLElementExported,
8693
+ isHydrating: isHydrating,
8694
+ insert: insert,
8695
+ remove: remove,
8696
+ cloneNode: cloneNode,
8697
+ createFragment: createFragment,
8698
+ createElement: createElement$1,
8699
+ createText: createText,
8700
+ createComment: createComment,
8701
+ nextSibling: nextSibling,
8702
+ attachShadow: attachShadow,
8703
+ getProperty: getProperty,
8704
+ setProperty: setProperty,
8705
+ setText: setText,
8706
+ getAttribute: getAttribute,
8707
+ setAttribute: setAttribute,
8708
+ removeAttribute: removeAttribute,
8709
+ addEventListener: addEventListener,
8710
+ removeEventListener: removeEventListener,
8711
+ dispatchEvent: dispatchEvent,
8712
+ getClassList: getClassList,
8713
+ setCSSStyleProperty: setCSSStyleProperty,
8714
+ getBoundingClientRect: getBoundingClientRect,
8715
+ querySelector: querySelector,
8716
+ querySelectorAll: querySelectorAll,
8717
+ getElementsByTagName: getElementsByTagName,
8718
+ getElementsByClassName: getElementsByClassName,
8719
+ getChildren: getChildren,
8720
+ getChildNodes: getChildNodes,
8721
+ getFirstChild: getFirstChild,
8722
+ getFirstElementChild: getFirstElementChild,
8723
+ getLastChild: getLastChild,
8724
+ getLastElementChild: getLastElementChild,
8725
+ isConnected: isConnected,
8726
+ insertStylesheet: insertStylesheet,
8727
+ assertInstanceOfHTMLElement: assertInstanceOfHTMLElement,
8728
+ defineCustomElement: defineCustomElement,
8729
+ getCustomElement: getCustomElement
8730
+ };
8644
8731
  /*
8645
8732
  * Copyright (c) 2018, salesforce.com, inc.
8646
8733
  * All rights reserved.
@@ -8648,7 +8735,6 @@
8648
8735
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
8649
8736
  */
8650
8737
 
8651
-
8652
8738
  function resetShadowRootAndLightDom(element, Ctor) {
8653
8739
  if (element.shadowRoot) {
8654
8740
  var shadowRoot = element.shadowRoot;
@@ -8666,7 +8752,7 @@
8666
8752
  }
8667
8753
 
8668
8754
  function createVMWithProps(element, Ctor, props) {
8669
- var vm = createVM(element, Ctor, {
8755
+ var vm = createVM(element, Ctor, renderer, {
8670
8756
  mode: 'open',
8671
8757
  owner: null,
8672
8758
  tagName: element.tagName.toLowerCase(),
@@ -8786,7 +8872,7 @@
8786
8872
  hydrateComponent(_assertThisInitialized(_this6), Ctor, {});
8787
8873
  hydratedCustomElements.add(_assertThisInitialized(_this6));
8788
8874
  } else {
8789
- createVM(_assertThisInitialized(_this6), Ctor, {
8875
+ createVM(_assertThisInitialized(_this6), Ctor, renderer, {
8790
8876
  mode: 'open',
8791
8877
  owner: null,
8792
8878
  tagName: _this6.tagName
@@ -8898,7 +8984,7 @@
8898
8984
  throw new TypeError("\"createElement\" function expects an \"is\" option with a valid component constructor.");
8899
8985
  }
8900
8986
 
8901
- var UpgradableConstructor = getUpgradableConstructor(sel);
8987
+ var UpgradableConstructor = getUpgradableConstructor(sel, renderer);
8902
8988
  var wasComponentUpgraded = false; // the custom element from the registry is expecting an upgrade callback
8903
8989
 
8904
8990
  /**
@@ -8909,7 +8995,7 @@
8909
8995
  */
8910
8996
 
8911
8997
  var element = new UpgradableConstructor(function (elm) {
8912
- createVM(elm, Ctor, {
8998
+ createVM(elm, Ctor, renderer, {
8913
8999
  tagName: sel,
8914
9000
  mode: options.mode !== 'closed' ? 'open' : 'closed',
8915
9001
  owner: null
@@ -9006,7 +9092,7 @@
9006
9092
  });
9007
9093
  freeze(LightningElement);
9008
9094
  seal(LightningElement.prototype);
9009
- /* version: 2.14.1 */
9095
+ /* version: 2.16.0 */
9010
9096
 
9011
9097
  exports.LightningElement = LightningElement;
9012
9098
  exports.__unstable__ProfilerControl = profilerControl;
@@ -9020,11 +9106,14 @@
9020
9106
  exports.hydrateComponent = hydrateComponent;
9021
9107
  exports.isComponentConstructor = isComponentConstructor;
9022
9108
  exports.isNodeFromTemplate = isNodeShadowed;
9109
+ exports.parseFragment = parseFragment;
9110
+ exports.parseSVGFragment = parseSVGFragment;
9023
9111
  exports.readonly = readonly;
9024
9112
  exports.register = register;
9025
9113
  exports.registerComponent = registerComponent;
9026
9114
  exports.registerDecorators = registerDecorators;
9027
9115
  exports.registerTemplate = registerTemplate;
9116
+ exports.renderer = renderer;
9028
9117
  exports.sanitizeAttribute = sanitizeAttribute;
9029
9118
  exports.setFeatureFlag = setFeatureFlag;
9030
9119
  exports.setFeatureFlagForTest = setFeatureFlagForTest;