lwc 2.14.1 → 2.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/engine-dom/esm/es2017/engine-dom.js +449 -534
  2. package/dist/engine-dom/iife/es2017/engine-dom.js +449 -533
  3. package/dist/engine-dom/iife/es2017/engine-dom.min.js +1 -1
  4. package/dist/engine-dom/iife/es2017/engine-dom_debug.js +393 -478
  5. package/dist/engine-dom/iife/es5/engine-dom.js +561 -700
  6. package/dist/engine-dom/iife/es5/engine-dom.min.js +1 -1
  7. package/dist/engine-dom/iife/es5/engine-dom_debug.js +498 -642
  8. package/dist/engine-dom/umd/es2017/engine-dom.js +449 -533
  9. package/dist/engine-dom/umd/es2017/engine-dom.min.js +1 -1
  10. package/dist/engine-dom/umd/es2017/engine-dom_debug.js +393 -478
  11. package/dist/engine-dom/umd/es5/engine-dom.js +561 -700
  12. package/dist/engine-dom/umd/es5/engine-dom.min.js +1 -1
  13. package/dist/engine-dom/umd/es5/engine-dom_debug.js +498 -642
  14. package/dist/engine-server/commonjs/es2017/engine-server.js +332 -437
  15. package/dist/engine-server/commonjs/es2017/engine-server.min.js +1 -1
  16. package/dist/engine-server/esm/es2017/engine-server.js +332 -438
  17. package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js +3 -3
  18. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js +3 -3
  19. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js +3 -3
  20. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js +3 -3
  21. package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js +3 -3
  22. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js +3 -3
  23. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js +3 -3
  24. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js +3 -3
  25. package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js +3 -3
  26. package/dist/wire-service/esm/es2017/wire-service.js +2 -2
  27. package/dist/wire-service/iife/es2017/wire-service.js +2 -2
  28. package/dist/wire-service/iife/es2017/wire-service_debug.js +2 -2
  29. package/dist/wire-service/iife/es5/wire-service.js +2 -2
  30. package/dist/wire-service/iife/es5/wire-service_debug.js +2 -2
  31. package/dist/wire-service/umd/es2017/wire-service.js +2 -2
  32. package/dist/wire-service/umd/es2017/wire-service_debug.js +2 -2
  33. package/dist/wire-service/umd/es5/wire-service.js +2 -2
  34. package/dist/wire-service/umd/es5/wire-service_debug.js +2 -2
  35. package/package.json +7 -7
@@ -368,9 +368,9 @@
368
368
  */
369
369
  // Increment whenever the LWC template compiler changes
370
370
 
371
- var LWC_VERSION = "2.14.1";
371
+ var LWC_VERSION = "2.14.2";
372
372
  var LWC_VERSION_COMMENT_REGEX = /\/\*LWC compiler v([\d.]+)\*\/\s*}/;
373
- /** version: 2.14.1 */
373
+ /** version: 2.14.2 */
374
374
 
375
375
  /*
376
376
  * Copyright (c) 2018, salesforce.com, inc.
@@ -549,8 +549,33 @@
549
549
  setFeatureFlag(name, value);
550
550
  }
551
551
  }
552
- /** version: 2.14.1 */
552
+ /** version: 2.14.2 */
553
553
 
554
+ /*
555
+ * Copyright (c) 2018, salesforce.com, inc.
556
+ * All rights reserved.
557
+ * SPDX-License-Identifier: MIT
558
+ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
559
+ */
560
+ // @ts-ignore
561
+
562
+
563
+ if (process.env.NODE_ENV !== 'production' && typeof __karma__ !== 'undefined') {
564
+ window.addEventListener('test-dummy-flag', function () {
565
+ var hasFlag = false;
566
+
567
+ if (runtimeFlags.DUMMY_TEST_FLAG) {
568
+ hasFlag = true;
569
+ }
570
+
571
+ window.dispatchEvent(new CustomEvent('has-dummy-flag', {
572
+ detail: {
573
+ package: '@lwc/engine-dom',
574
+ hasFlag: hasFlag
575
+ }
576
+ }));
577
+ });
578
+ }
554
579
  /* proxy-compat-disable */
555
580
 
556
581
  /*
@@ -702,237 +727,6 @@
702
727
  }
703
728
 
704
729
  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
730
  }
937
731
  /*
938
732
  * Copyright (c) 2019, salesforce.com, inc.
@@ -2585,7 +2379,9 @@
2585
2379
  var bridge = def.bridge;
2586
2380
 
2587
2381
  if (process.env.NODE_ENV !== 'production') {
2588
- assertInstanceOfHTMLElement$1(vm.elm, "Component creation requires a DOM element to be associated to ".concat(vm, "."));
2382
+ var _assertInstanceOfHTMLElement = vm.renderer.assertInstanceOfHTMLElement;
2383
+
2384
+ _assertInstanceOfHTMLElement(vm.elm, "Component creation requires a DOM element to be associated to ".concat(vm, "."));
2589
2385
  }
2590
2386
 
2591
2387
  var component = this;
@@ -2629,13 +2425,14 @@
2629
2425
  };
2630
2426
 
2631
2427
  function doAttachShadow(vm) {
2632
- var _attachShadow$;
2428
+ var _attachShadow;
2633
2429
 
2634
2430
  var elm = vm.elm,
2635
2431
  mode = vm.mode,
2636
2432
  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$));
2433
+ ctor = vm.def.ctor,
2434
+ attachShadow = vm.renderer.attachShadow;
2435
+ var shadowRoot = attachShadow(elm, (_attachShadow = {}, _defineProperty(_attachShadow, KEY__SYNTHETIC_MODE, shadowMode === 1), _defineProperty(_attachShadow, "delegatesFocus", Boolean(ctor.delegatesFocus)), _defineProperty(_attachShadow, "mode", mode), _attachShadow));
2639
2436
  vm.shadowRoot = shadowRoot;
2640
2437
  associateVM(shadowRoot, vm);
2641
2438
 
@@ -2656,14 +2453,15 @@
2656
2453
  LightningElement.prototype = {
2657
2454
  constructor: LightningElement,
2658
2455
  dispatchEvent: function dispatchEvent(event) {
2659
- var _getAssociatedVM = getAssociatedVM(this),
2660
- elm = _getAssociatedVM.elm;
2661
-
2662
- return dispatchEvent$1(elm, event);
2456
+ var vm = getAssociatedVM(this);
2457
+ var elm = vm.elm,
2458
+ dispatchEvent = vm.renderer.dispatchEvent;
2459
+ return dispatchEvent(elm, event);
2663
2460
  },
2664
2461
  addEventListener: function addEventListener(type, listener, options) {
2665
2462
  var vm = getAssociatedVM(this);
2666
- var elm = vm.elm;
2463
+ var elm = vm.elm,
2464
+ addEventListener = vm.renderer.addEventListener;
2667
2465
 
2668
2466
  if (process.env.NODE_ENV !== 'production') {
2669
2467
  var _vmBeingRendered2 = getVMBeingRendered();
@@ -2674,99 +2472,105 @@
2674
2472
  }
2675
2473
 
2676
2474
  var wrappedListener = getWrappedComponentsListener(vm, listener);
2677
- addEventListener$1(elm, type, wrappedListener, options);
2475
+ addEventListener(elm, type, wrappedListener, options);
2678
2476
  },
2679
2477
  removeEventListener: function removeEventListener(type, listener, options) {
2680
2478
  var vm = getAssociatedVM(this);
2681
- var elm = vm.elm;
2479
+ var elm = vm.elm,
2480
+ removeEventListener = vm.renderer.removeEventListener;
2682
2481
  var wrappedListener = getWrappedComponentsListener(vm, listener);
2683
- removeEventListener$1(elm, type, wrappedListener, options);
2482
+ removeEventListener(elm, type, wrappedListener, options);
2684
2483
  },
2685
2484
  hasAttribute: function hasAttribute(name) {
2686
- var _getAssociatedVM2 = getAssociatedVM(this),
2687
- elm = _getAssociatedVM2.elm;
2688
-
2689
- return !isNull(getAttribute$1(elm, name));
2485
+ var vm = getAssociatedVM(this);
2486
+ var elm = vm.elm,
2487
+ getAttribute = vm.renderer.getAttribute;
2488
+ return !isNull(getAttribute(elm, name));
2690
2489
  },
2691
2490
  hasAttributeNS: function hasAttributeNS(namespace, name) {
2692
- var _getAssociatedVM3 = getAssociatedVM(this),
2693
- elm = _getAssociatedVM3.elm;
2694
-
2695
- return !isNull(getAttribute$1(elm, name, namespace));
2491
+ var vm = getAssociatedVM(this);
2492
+ var elm = vm.elm,
2493
+ getAttribute = vm.renderer.getAttribute;
2494
+ return !isNull(getAttribute(elm, name, namespace));
2696
2495
  },
2697
2496
  removeAttribute: function removeAttribute(name) {
2698
- var _getAssociatedVM4 = getAssociatedVM(this),
2699
- elm = _getAssociatedVM4.elm;
2700
-
2497
+ var vm = getAssociatedVM(this);
2498
+ var elm = vm.elm,
2499
+ removeAttribute = vm.renderer.removeAttribute;
2701
2500
  unlockAttribute(elm, name);
2702
- removeAttribute$1(elm, name);
2501
+ removeAttribute(elm, name);
2703
2502
  lockAttribute();
2704
2503
  },
2705
2504
  removeAttributeNS: function removeAttributeNS(namespace, name) {
2706
- var _getAssociatedVM5 = getAssociatedVM(this),
2707
- elm = _getAssociatedVM5.elm;
2505
+ var _getAssociatedVM = getAssociatedVM(this),
2506
+ elm = _getAssociatedVM.elm,
2507
+ removeAttribute = _getAssociatedVM.renderer.removeAttribute;
2708
2508
 
2709
2509
  unlockAttribute(elm, name);
2710
- removeAttribute$1(elm, name, namespace);
2510
+ removeAttribute(elm, name, namespace);
2711
2511
  lockAttribute();
2712
2512
  },
2713
2513
  getAttribute: function getAttribute(name) {
2714
- var _getAssociatedVM6 = getAssociatedVM(this),
2715
- elm = _getAssociatedVM6.elm;
2716
-
2717
- return getAttribute$1(elm, name);
2514
+ var vm = getAssociatedVM(this);
2515
+ var elm = vm.elm;
2516
+ var getAttribute = vm.renderer.getAttribute;
2517
+ return getAttribute(elm, name);
2718
2518
  },
2719
2519
  getAttributeNS: function getAttributeNS(namespace, name) {
2720
- var _getAssociatedVM7 = getAssociatedVM(this),
2721
- elm = _getAssociatedVM7.elm;
2722
-
2723
- return getAttribute$1(elm, name, namespace);
2520
+ var vm = getAssociatedVM(this);
2521
+ var elm = vm.elm;
2522
+ var getAttribute = vm.renderer.getAttribute;
2523
+ return getAttribute(elm, name, namespace);
2724
2524
  },
2725
2525
  setAttribute: function setAttribute(name, value) {
2726
2526
  var vm = getAssociatedVM(this);
2727
- var elm = vm.elm;
2527
+ var elm = vm.elm,
2528
+ setAttribute = vm.renderer.setAttribute;
2728
2529
 
2729
2530
  if (process.env.NODE_ENV !== 'production') {
2730
2531
  assert.isFalse(isBeingConstructed(vm), "Failed to construct '".concat(getComponentTag(vm), "': The result must not have attributes."));
2731
2532
  }
2732
2533
 
2733
2534
  unlockAttribute(elm, name);
2734
- setAttribute$1(elm, name, value);
2535
+ setAttribute(elm, name, value);
2735
2536
  lockAttribute();
2736
2537
  },
2737
2538
  setAttributeNS: function setAttributeNS(namespace, name, value) {
2738
2539
  var vm = getAssociatedVM(this);
2739
- var elm = vm.elm;
2540
+ var elm = vm.elm,
2541
+ setAttribute = vm.renderer.setAttribute;
2740
2542
 
2741
2543
  if (process.env.NODE_ENV !== 'production') {
2742
2544
  assert.isFalse(isBeingConstructed(vm), "Failed to construct '".concat(getComponentTag(vm), "': The result must not have attributes."));
2743
2545
  }
2744
2546
 
2745
2547
  unlockAttribute(elm, name);
2746
- setAttribute$1(elm, name, value, namespace);
2548
+ setAttribute(elm, name, value, namespace);
2747
2549
  lockAttribute();
2748
2550
  },
2749
2551
  getBoundingClientRect: function getBoundingClientRect() {
2750
2552
  var vm = getAssociatedVM(this);
2751
- var elm = vm.elm;
2553
+ var elm = vm.elm,
2554
+ getBoundingClientRect = vm.renderer.getBoundingClientRect;
2752
2555
 
2753
2556
  if (process.env.NODE_ENV !== 'production') {
2754
2557
  warnIfInvokedDuringConstruction(vm, 'getBoundingClientRect()');
2755
2558
  }
2756
2559
 
2757
- return getBoundingClientRect$1(elm);
2560
+ return getBoundingClientRect(elm);
2758
2561
  },
2759
2562
 
2760
2563
  get isConnected() {
2761
- var _getAssociatedVM8 = getAssociatedVM(this),
2762
- elm = _getAssociatedVM8.elm;
2763
-
2764
- return isConnected$1(elm);
2564
+ var vm = getAssociatedVM(this);
2565
+ var elm = vm.elm,
2566
+ isConnected = vm.renderer.isConnected;
2567
+ return isConnected(elm);
2765
2568
  },
2766
2569
 
2767
2570
  get classList() {
2768
2571
  var vm = getAssociatedVM(this);
2769
- var elm = vm.elm;
2572
+ var elm = vm.elm,
2573
+ getClassList = vm.renderer.getClassList;
2770
2574
 
2771
2575
  if (process.env.NODE_ENV !== 'production') {
2772
2576
  // TODO [#1290]: this still fails in dev but works in production, eventually, we should
@@ -2774,7 +2578,7 @@
2774
2578
  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
2579
  }
2776
2580
 
2777
- return getClassList$1(elm);
2581
+ return getClassList(elm);
2778
2582
  },
2779
2583
 
2780
2584
  get template() {
@@ -2797,97 +2601,97 @@
2797
2601
  return null;
2798
2602
  },
2799
2603
 
2800
- render: function render() {
2604
+ get children() {
2801
2605
  var vm = getAssociatedVM(this);
2802
- return vm.def.template;
2803
- },
2804
- toString: function toString() {
2805
- 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.
2606
+ var renderer = vm.renderer;
2812
2607
 
2813
- var childGetters = ['children', 'childNodes', 'firstChild', 'firstElementChild', 'lastChild', 'lastElementChild'];
2608
+ if (process.env.NODE_ENV !== 'production') {
2609
+ warnIfInvokedDuringConstruction(vm, 'children');
2610
+ }
2814
2611
 
2815
- function getChildGetter(methodName) {
2816
- switch (methodName) {
2817
- case 'children':
2818
- return getChildren$1;
2612
+ return renderer.getChildren(vm.elm);
2613
+ },
2819
2614
 
2820
- case 'childNodes':
2821
- return getChildNodes$1;
2615
+ get childNodes() {
2616
+ var vm = getAssociatedVM(this);
2617
+ var renderer = vm.renderer;
2822
2618
 
2823
- case 'firstChild':
2824
- return getFirstChild$1;
2619
+ if (process.env.NODE_ENV !== 'production') {
2620
+ warnIfInvokedDuringConstruction(vm, 'childNodes');
2621
+ }
2825
2622
 
2826
- case 'firstElementChild':
2827
- return getFirstElementChild$1;
2623
+ return renderer.getChildNodes(vm.elm);
2624
+ },
2828
2625
 
2829
- case 'lastChild':
2830
- return getLastChild$1;
2626
+ get firstChild() {
2627
+ var vm = getAssociatedVM(this);
2628
+ var renderer = vm.renderer;
2831
2629
 
2832
- case 'lastElementChild':
2833
- return getLastElementChild$1;
2834
- }
2835
- } // Generic passthrough for child getters on HTMLElement to the relevant Renderer APIs
2630
+ if (process.env.NODE_ENV !== 'production') {
2631
+ warnIfInvokedDuringConstruction(vm, 'firstChild');
2632
+ }
2836
2633
 
2634
+ return renderer.getFirstChild(vm.elm);
2635
+ },
2837
2636
 
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;
2637
+ get firstElementChild() {
2638
+ var vm = getAssociatedVM(this);
2639
+ var renderer = vm.renderer;
2844
2640
 
2845
- if (process.env.NODE_ENV !== 'production') {
2846
- warnIfInvokedDuringConstruction(vm, childGetter);
2847
- }
2641
+ if (process.env.NODE_ENV !== 'production') {
2642
+ warnIfInvokedDuringConstruction(vm, 'firstElementChild');
2643
+ }
2848
2644
 
2849
- return getChildGetter(childGetter)(elm);
2850
- },
2851
- configurable: true,
2852
- enumerable: true
2853
- };
2854
- };
2645
+ return renderer.getFirstElementChild(vm.elm);
2646
+ },
2855
2647
 
2856
- for (var _i7 = 0, _childGetters = childGetters; _i7 < _childGetters.length; _i7++) {
2857
- _loop();
2858
- }
2648
+ get lastChild() {
2649
+ var vm = getAssociatedVM(this);
2650
+ var renderer = vm.renderer;
2859
2651
 
2860
- var queryMethods = ['getElementsByClassName', 'getElementsByTagName', 'querySelector', 'querySelectorAll'];
2652
+ if (process.env.NODE_ENV !== 'production') {
2653
+ warnIfInvokedDuringConstruction(vm, 'lastChild');
2654
+ }
2861
2655
 
2862
- function getQueryMethod(methodName) {
2863
- switch (methodName) {
2864
- case 'getElementsByClassName':
2865
- return getElementsByClassName$1;
2656
+ return renderer.getLastChild(vm.elm);
2657
+ },
2866
2658
 
2867
- case 'getElementsByTagName':
2868
- return getElementsByTagName$1;
2659
+ get lastElementChild() {
2660
+ var vm = getAssociatedVM(this);
2661
+ var renderer = vm.renderer;
2869
2662
 
2870
- case 'querySelector':
2871
- return querySelector$1;
2663
+ if (process.env.NODE_ENV !== 'production') {
2664
+ warnIfInvokedDuringConstruction(vm, 'lastElementChild');
2665
+ }
2872
2666
 
2873
- case 'querySelectorAll':
2874
- return querySelectorAll$1;
2875
- }
2876
- } // Generic passthrough for query APIs on HTMLElement to the relevant Renderer APIs
2667
+ return renderer.getLastElementChild(vm.elm);
2668
+ },
2877
2669
 
2670
+ render: function render() {
2671
+ var vm = getAssociatedVM(this);
2672
+ return vm.def.template;
2673
+ },
2674
+ toString: function toString() {
2675
+ var vm = getAssociatedVM(this);
2676
+ return "[object ".concat(vm.def.name, "]");
2677
+ }
2678
+ };
2679
+ var queryAndChildGetterDescriptors = create(null);
2680
+ var queryMethods = ['getElementsByClassName', 'getElementsByTagName', 'querySelector', 'querySelectorAll']; // Generic passthrough for query APIs on HTMLElement to the relevant Renderer APIs
2878
2681
 
2879
- var _loop2 = function _loop2() {
2880
- var queryMethod = _queryMethods[_i8];
2682
+ var _loop = function _loop() {
2683
+ var queryMethod = _queryMethods[_i7];
2881
2684
  queryAndChildGetterDescriptors[queryMethod] = {
2882
2685
  value: function value(arg) {
2883
2686
  var vm = getAssociatedVM(this);
2884
- var elm = vm.elm;
2687
+ var elm = vm.elm,
2688
+ renderer = vm.renderer;
2885
2689
 
2886
2690
  if (process.env.NODE_ENV !== 'production') {
2887
2691
  warnIfInvokedDuringConstruction(vm, "".concat(queryMethod, "()"));
2888
2692
  }
2889
2693
 
2890
- return getQueryMethod(queryMethod)(elm, arg);
2694
+ return renderer[queryMethod](elm, arg);
2891
2695
  },
2892
2696
  configurable: true,
2893
2697
  enumerable: true,
@@ -2895,8 +2699,8 @@
2895
2699
  };
2896
2700
  };
2897
2701
 
2898
- for (var _i8 = 0, _queryMethods = queryMethods; _i8 < _queryMethods.length; _i8++) {
2899
- _loop2();
2702
+ for (var _i7 = 0, _queryMethods = queryMethods; _i7 < _queryMethods.length; _i7++) {
2703
+ _loop();
2900
2704
  }
2901
2705
 
2902
2706
  defineProperties(LightningElement.prototype, queryAndChildGetterDescriptors);
@@ -3418,8 +3222,8 @@
3418
3222
  }
3419
3223
 
3420
3224
  if (!isUndefined$1(fields)) {
3421
- for (var _i9 = 0, n = fields.length; _i9 < n; _i9++) {
3422
- var _fieldName2 = fields[_i9];
3225
+ for (var _i8 = 0, n = fields.length; _i8 < n; _i8++) {
3226
+ var _fieldName2 = fields[_i8];
3423
3227
  descriptor = getOwnPropertyDescriptor$1(proto, _fieldName2);
3424
3228
 
3425
3229
  if (process.env.NODE_ENV !== 'production') {
@@ -3722,8 +3526,8 @@
3722
3526
  superObservedAttributes = _SuperClass$observedA === void 0 ? [] : _SuperClass$observedA;
3723
3527
  var descriptors = create(null); // expose getters and setters for each public props on the new Element Bridge
3724
3528
 
3725
- for (var _i10 = 0, len = props.length; _i10 < len; _i10 += 1) {
3726
- var _propName = props[_i10];
3529
+ for (var _i9 = 0, len = props.length; _i9 < len; _i9 += 1) {
3530
+ var _propName = props[_i9];
3727
3531
  attributeToPropMap[htmlPropertyToAttribute(_propName)] = _propName;
3728
3532
  descriptors[_propName] = {
3729
3533
  get: createGetter(_propName),
@@ -3734,8 +3538,8 @@
3734
3538
  } // expose public methods as props on the new Element Bridge
3735
3539
 
3736
3540
 
3737
- for (var _i11 = 0, _len3 = methods.length; _i11 < _len3; _i11 += 1) {
3738
- var methodName = methods[_i11];
3541
+ for (var _i10 = 0, _len3 = methods.length; _i10 < _len3; _i10 += 1) {
3542
+ var methodName = methods[_i10];
3739
3543
  descriptors[methodName] = {
3740
3544
  value: createMethodCaller(methodName),
3741
3545
  writable: true,
@@ -4323,12 +4127,15 @@
4323
4127
  */
4324
4128
 
4325
4129
 
4326
- function getUpgradableConstructor(tagName) {
4327
- // Should never get a tag with upper case letter at this point, the compiler should
4130
+ function getUpgradableConstructor(tagName, renderer) {
4131
+ var getCustomElement = renderer.getCustomElement,
4132
+ RendererHTMLElement = renderer.HTMLElementExported,
4133
+ defineCustomElement = renderer.defineCustomElement; // Should never get a tag with upper case letter at this point, the compiler should
4328
4134
  // produce only tags with lowercase letters
4329
4135
  // But, for backwards compatibility, we will lower case the tagName
4136
+
4330
4137
  tagName = tagName.toLowerCase();
4331
- var CE = getCustomElement$1(tagName);
4138
+ var CE = getCustomElement(tagName);
4332
4139
 
4333
4140
  if (!isUndefined$1(CE)) {
4334
4141
  return CE;
@@ -4339,8 +4146,8 @@
4339
4146
  */
4340
4147
 
4341
4148
 
4342
- CE = /*#__PURE__*/function (_HTMLElementExported$) {
4343
- _inherits(LWCUpgradableElement, _HTMLElementExported$);
4149
+ CE = /*#__PURE__*/function (_RendererHTMLElement) {
4150
+ _inherits(LWCUpgradableElement, _RendererHTMLElement);
4344
4151
 
4345
4152
  var _super5 = _createSuper(LWCUpgradableElement);
4346
4153
 
@@ -4359,9 +4166,9 @@
4359
4166
  }
4360
4167
 
4361
4168
  return _createClass(LWCUpgradableElement);
4362
- }(HTMLElementExported$1);
4169
+ }(RendererHTMLElement);
4363
4170
 
4364
- defineCustomElement$1(tagName, CE);
4171
+ defineCustomElement(tagName, CE);
4365
4172
  return CE;
4366
4173
  }
4367
4174
  /*
@@ -4394,7 +4201,7 @@
4394
4201
 
4395
4202
  var ColonCharCode = 58;
4396
4203
 
4397
- function patchAttributes(oldVnode, vnode) {
4204
+ function patchAttributes(oldVnode, vnode, renderer) {
4398
4205
  var attrs = vnode.data.attrs;
4399
4206
 
4400
4207
  if (isUndefined$1(attrs)) {
@@ -4408,6 +4215,8 @@
4408
4215
  }
4409
4216
 
4410
4217
  var elm = vnode.elm;
4218
+ var setAttribute = renderer.setAttribute,
4219
+ removeAttribute = renderer.removeAttribute;
4411
4220
 
4412
4221
  for (var key in attrs) {
4413
4222
  var cur = attrs[key];
@@ -4418,14 +4227,14 @@
4418
4227
 
4419
4228
  if (StringCharCodeAt.call(key, 3) === ColonCharCode) {
4420
4229
  // Assume xml namespace
4421
- setAttribute$1(elm, key, cur, XML_NAMESPACE);
4230
+ setAttribute(elm, key, cur, XML_NAMESPACE);
4422
4231
  } else if (StringCharCodeAt.call(key, 5) === ColonCharCode) {
4423
4232
  // Assume xlink namespace
4424
- setAttribute$1(elm, key, cur, XLINK_NAMESPACE);
4233
+ setAttribute(elm, key, cur, XLINK_NAMESPACE);
4425
4234
  } else if (isNull(cur) || isUndefined$1(cur)) {
4426
- removeAttribute$1(elm, key);
4235
+ removeAttribute(elm, key);
4427
4236
  } else {
4428
- setAttribute$1(elm, key, cur);
4237
+ setAttribute(elm, key, cur);
4429
4238
  }
4430
4239
 
4431
4240
  lockAttribute();
@@ -4446,7 +4255,7 @@
4446
4255
  return sel === 'input' && (key === 'value' || key === 'checked');
4447
4256
  }
4448
4257
 
4449
- function patchProps(oldVnode, vnode) {
4258
+ function patchProps(oldVnode, vnode, renderer) {
4450
4259
  var props = vnode.data.props;
4451
4260
 
4452
4261
  if (isUndefined$1(props)) {
@@ -4462,13 +4271,15 @@
4462
4271
  var isFirstPatch = isNull(oldVnode);
4463
4272
  var elm = vnode.elm,
4464
4273
  sel = vnode.sel;
4274
+ var getProperty = renderer.getProperty,
4275
+ setProperty = renderer.setProperty;
4465
4276
 
4466
4277
  for (var key in props) {
4467
4278
  var cur = props[key]; // Set the property if it's the first time is is patched or if the previous property is
4468
4279
  // different than the one previously set.
4469
4280
 
4470
- if (isFirstPatch || cur !== (isLiveBindingProp(sel, key) ? getProperty$1(elm, key) : oldProps[key])) {
4471
- setProperty$1(elm, key, cur);
4281
+ if (isFirstPatch || cur !== (isLiveBindingProp(sel, key) ? getProperty(elm, key) : oldProps[key])) {
4282
+ setProperty(elm, key, cur);
4472
4283
  }
4473
4284
  }
4474
4285
  }
@@ -4525,7 +4336,7 @@
4525
4336
  return map;
4526
4337
  }
4527
4338
 
4528
- function patchClassAttribute(oldVnode, vnode) {
4339
+ function patchClassAttribute(oldVnode, vnode, renderer) {
4529
4340
  var elm = vnode.elm,
4530
4341
  newClass = vnode.data.className;
4531
4342
  var oldClass = isNull(oldVnode) ? undefined : oldVnode.data.className;
@@ -4534,7 +4345,8 @@
4534
4345
  return;
4535
4346
  }
4536
4347
 
4537
- var classList = getClassList$1(elm);
4348
+ var getClassList = renderer.getClassList;
4349
+ var classList = getClassList(elm);
4538
4350
  var newClassMap = getMapFromClassName(newClass);
4539
4351
  var oldClassMap = getMapFromClassName(oldClass);
4540
4352
  var name;
@@ -4561,7 +4373,7 @@
4561
4373
  // The style property is a string when defined via an expression in the template.
4562
4374
 
4563
4375
 
4564
- function patchStyleAttribute(oldVnode, vnode) {
4376
+ function patchStyleAttribute(oldVnode, vnode, renderer) {
4565
4377
  var elm = vnode.elm,
4566
4378
  newStyle = vnode.data.style;
4567
4379
  var oldStyle = isNull(oldVnode) ? undefined : oldVnode.data.style;
@@ -4570,10 +4382,13 @@
4570
4382
  return;
4571
4383
  }
4572
4384
 
4385
+ var setAttribute = renderer.setAttribute,
4386
+ removeAttribute = renderer.removeAttribute;
4387
+
4573
4388
  if (!isString(newStyle) || newStyle === '') {
4574
- removeAttribute$1(elm, 'style');
4389
+ removeAttribute(elm, 'style');
4575
4390
  } else {
4576
- setAttribute$1(elm, 'style', newStyle);
4391
+ setAttribute(elm, 'style', newStyle);
4577
4392
  }
4578
4393
  }
4579
4394
  /*
@@ -4584,7 +4399,7 @@
4584
4399
  */
4585
4400
 
4586
4401
 
4587
- function applyEventListeners(vnode) {
4402
+ function applyEventListeners(vnode, renderer) {
4588
4403
  var elm = vnode.elm,
4589
4404
  on = vnode.data.on;
4590
4405
 
@@ -4592,9 +4407,11 @@
4592
4407
  return;
4593
4408
  }
4594
4409
 
4410
+ var addEventListener = renderer.addEventListener;
4411
+
4595
4412
  for (var name in on) {
4596
4413
  var handler = on[name];
4597
- addEventListener$1(elm, name, handler);
4414
+ addEventListener(elm, name, handler);
4598
4415
  }
4599
4416
  }
4600
4417
  /*
@@ -4608,7 +4425,7 @@
4608
4425
  // different classnames properties individually instead of via a string.
4609
4426
 
4610
4427
 
4611
- function applyStaticClassAttribute(vnode) {
4428
+ function applyStaticClassAttribute(vnode, renderer) {
4612
4429
  var elm = vnode.elm,
4613
4430
  classMap = vnode.data.classMap;
4614
4431
 
@@ -4616,7 +4433,8 @@
4616
4433
  return;
4617
4434
  }
4618
4435
 
4619
- var classList = getClassList$1(elm);
4436
+ var getClassList = renderer.getClassList;
4437
+ var classList = getClassList(elm);
4620
4438
 
4621
4439
  for (var name in classMap) {
4622
4440
  classList.add(name);
@@ -4633,7 +4451,7 @@
4633
4451
  // different style properties individually instead of via a string.
4634
4452
 
4635
4453
 
4636
- function applyStaticStyleAttribute(vnode) {
4454
+ function applyStaticStyleAttribute(vnode, renderer) {
4637
4455
  var elm = vnode.elm,
4638
4456
  styleDecls = vnode.data.styleDecls;
4639
4457
 
@@ -4641,13 +4459,15 @@
4641
4459
  return;
4642
4460
  }
4643
4461
 
4644
- for (var _i12 = 0; _i12 < styleDecls.length; _i12++) {
4645
- var _styleDecls$_i = _slicedToArray(styleDecls[_i12], 3),
4462
+ var setCSSStyleProperty = renderer.setCSSStyleProperty;
4463
+
4464
+ for (var _i11 = 0; _i11 < styleDecls.length; _i11++) {
4465
+ var _styleDecls$_i = _slicedToArray(styleDecls[_i11], 3),
4646
4466
  prop = _styleDecls$_i[0],
4647
4467
  value = _styleDecls$_i[1],
4648
4468
  important = _styleDecls$_i[2];
4649
4469
 
4650
- setCSSStyleProperty$1(elm, prop, value, important);
4470
+ setCSSStyleProperty(elm, prop, value, important);
4651
4471
  }
4652
4472
  }
4653
4473
  /*
@@ -4658,15 +4478,17 @@
4658
4478
  */
4659
4479
 
4660
4480
 
4661
- function patchChildren(c1, c2, parent) {
4481
+ function patchChildren(c1, c2, parent, renderer) {
4662
4482
  if (hasDynamicChildren(c2)) {
4663
- updateDynamicChildren(c1, c2, parent);
4483
+ updateDynamicChildren(c1, c2, parent, renderer);
4664
4484
  } else {
4665
- updateStaticChildren(c1, c2, parent);
4485
+ updateStaticChildren(c1, c2, parent, renderer);
4666
4486
  }
4667
4487
  }
4668
4488
 
4669
- function patch(n1, n2) {
4489
+ function patch(n1, n2, renderer) {
4490
+ var _a, _b;
4491
+
4670
4492
  if (n1 === n2) {
4671
4493
  return;
4672
4494
  }
@@ -4687,112 +4509,123 @@
4687
4509
  case 0
4688
4510
  /* Text */
4689
4511
  :
4690
- patchText(n1, n2);
4512
+ // VText has no special capability, fallback to the owner's renderer
4513
+ patchText(n1, n2, renderer);
4691
4514
  break;
4692
4515
 
4693
4516
  case 1
4694
4517
  /* Comment */
4695
4518
  :
4696
- patchComment(n1, n2);
4519
+ // VComment has no special capability, fallback to the owner's renderer
4520
+ patchComment(n1, n2, renderer);
4697
4521
  break;
4698
4522
 
4699
4523
  case 2
4700
4524
  /* Element */
4701
4525
  :
4702
- patchElement(n1, n2);
4526
+ patchElement(n1, n2, (_a = n2.data.renderer) !== null && _a !== void 0 ? _a : renderer);
4703
4527
  break;
4704
4528
 
4705
4529
  case 3
4706
4530
  /* CustomElement */
4707
4531
  :
4708
- patchCustomElement(n1, n2);
4532
+ patchCustomElement(n1, n2, (_b = n2.data.renderer) !== null && _b !== void 0 ? _b : renderer);
4709
4533
  break;
4710
4534
  }
4711
4535
  }
4712
4536
 
4713
- function mount(node, parent, anchor) {
4537
+ function mount(node, parent, renderer, anchor) {
4538
+ var _a, _b;
4539
+
4714
4540
  switch (node.type) {
4715
4541
  case 0
4716
4542
  /* Text */
4717
4543
  :
4718
- mountText(node, parent, anchor);
4544
+ // VText has no special capability, fallback to the owner's renderer
4545
+ mountText(node, parent, anchor, renderer);
4719
4546
  break;
4720
4547
 
4721
4548
  case 1
4722
4549
  /* Comment */
4723
4550
  :
4724
- mountComment(node, parent, anchor);
4551
+ // VComment has no special capability, fallback to the owner's renderer
4552
+ mountComment(node, parent, anchor, renderer);
4725
4553
  break;
4726
4554
 
4727
4555
  case 2
4728
4556
  /* Element */
4729
4557
  :
4730
- mountElement(node, parent, anchor);
4558
+ // If the vnode data has a renderer override use it, else fallback to owner's renderer
4559
+ mountElement(node, parent, anchor, (_a = node.data.renderer) !== null && _a !== void 0 ? _a : renderer);
4731
4560
  break;
4732
4561
 
4733
4562
  case 3
4734
4563
  /* CustomElement */
4735
4564
  :
4736
- mountCustomElement(node, parent, anchor);
4565
+ // If the vnode data has a renderer override use it, else fallback to owner's renderer
4566
+ mountCustomElement(node, parent, anchor, (_b = node.data.renderer) !== null && _b !== void 0 ? _b : renderer);
4737
4567
  break;
4738
4568
  }
4739
4569
  }
4740
4570
 
4741
- function patchText(n1, n2) {
4571
+ function patchText(n1, n2, renderer) {
4742
4572
  n2.elm = n1.elm;
4743
4573
 
4744
4574
  if (n2.text !== n1.text) {
4745
- updateTextContent(n2);
4575
+ updateTextContent(n2, renderer);
4746
4576
  }
4747
4577
  }
4748
4578
 
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);
4579
+ function mountText(vnode, parent, anchor, renderer) {
4580
+ var owner = vnode.owner;
4581
+ var createText = renderer.createText;
4582
+ var textNode = vnode.elm = createText(vnode.text);
4583
+ linkNodeToShadow(textNode, owner, renderer);
4584
+ insertNode(textNode, parent, anchor, renderer);
4754
4585
  }
4755
4586
 
4756
- function patchComment(n1, n2) {
4587
+ function patchComment(n1, n2, renderer) {
4757
4588
  n2.elm = n1.elm; // FIXME: Comment nodes should be static, we shouldn't need to diff them together. However
4758
4589
  // it is the case today.
4759
4590
 
4760
4591
  if (n2.text !== n1.text) {
4761
- updateTextContent(n2);
4592
+ updateTextContent(n2, renderer);
4762
4593
  }
4763
4594
  }
4764
4595
 
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);
4596
+ function mountComment(vnode, parent, anchor, renderer) {
4597
+ var owner = vnode.owner;
4598
+ var createComment = renderer.createComment;
4599
+ var commentNode = vnode.elm = createComment(vnode.text);
4600
+ linkNodeToShadow(commentNode, owner, renderer);
4601
+ insertNode(commentNode, parent, anchor, renderer);
4770
4602
  }
4771
4603
 
4772
- function mountElement(vnode, parent, anchor) {
4604
+ function mountElement(vnode, parent, anchor, renderer) {
4773
4605
  var sel = vnode.sel,
4774
4606
  owner = vnode.owner,
4775
4607
  svg = vnode.data.svg;
4608
+ var createElement = renderer.createElement;
4776
4609
  var namespace = isTrue(svg) ? SVG_NAMESPACE : undefined;
4777
- var elm = createElement$2(sel, namespace);
4778
- linkNodeToShadow(elm, owner);
4779
- fallbackElmHook(elm, vnode);
4610
+ var elm = createElement(sel, namespace);
4611
+ linkNodeToShadow(elm, owner, renderer);
4612
+ fallbackElmHook(elm, vnode, renderer);
4780
4613
  vnode.elm = elm;
4781
- patchElementPropsAndAttrs$1(null, vnode);
4782
- insertNode(elm, parent, anchor);
4783
- mountVNodes(vnode.children, elm, null);
4614
+ patchElementPropsAndAttrs$1(null, vnode, renderer);
4615
+ insertNode(elm, parent, anchor, renderer);
4616
+ mountVNodes(vnode.children, elm, renderer, null);
4784
4617
  }
4785
4618
 
4786
- function patchElement(n1, n2) {
4619
+ function patchElement(n1, n2, renderer) {
4787
4620
  var elm = n2.elm = n1.elm;
4788
- patchElementPropsAndAttrs$1(n1, n2);
4789
- patchChildren(n1.children, n2.children, elm);
4621
+ patchElementPropsAndAttrs$1(n1, n2, renderer);
4622
+ patchChildren(n1.children, n2.children, elm, renderer);
4790
4623
  }
4791
4624
 
4792
- function mountCustomElement(vnode, parent, anchor) {
4625
+ function mountCustomElement(vnode, parent, anchor, renderer) {
4793
4626
  var sel = vnode.sel,
4794
4627
  owner = vnode.owner;
4795
- var UpgradableConstructor = getUpgradableConstructor(sel);
4628
+ var UpgradableConstructor = getUpgradableConstructor(sel, renderer);
4796
4629
  /**
4797
4630
  * Note: if the upgradable constructor does not expect, or throw when we new it
4798
4631
  * with a callback as the first argument, we could implement a more advanced
@@ -4803,9 +4636,9 @@
4803
4636
  var vm;
4804
4637
  var elm = new UpgradableConstructor(function (elm) {
4805
4638
  // the custom element from the registry is expecting an upgrade callback
4806
- vm = createViewModelHook(elm, vnode);
4639
+ vm = createViewModelHook(elm, vnode, renderer);
4807
4640
  });
4808
- linkNodeToShadow(elm, owner);
4641
+ linkNodeToShadow(elm, owner, renderer);
4809
4642
  vnode.elm = elm;
4810
4643
  vnode.vm = vm;
4811
4644
 
@@ -4815,8 +4648,8 @@
4815
4648
  throw new TypeError("Incorrect Component Constructor");
4816
4649
  }
4817
4650
 
4818
- patchElementPropsAndAttrs$1(null, vnode);
4819
- insertNode(elm, parent, anchor);
4651
+ patchElementPropsAndAttrs$1(null, vnode, renderer);
4652
+ insertNode(elm, parent, anchor, renderer);
4820
4653
 
4821
4654
  if (vm) {
4822
4655
  if (process.env.NODE_ENV !== 'production') {
@@ -4828,17 +4661,17 @@
4828
4661
  runConnectedCallback(vm);
4829
4662
  }
4830
4663
 
4831
- mountVNodes(vnode.children, elm, null);
4664
+ mountVNodes(vnode.children, elm, renderer, null);
4832
4665
 
4833
4666
  if (vm) {
4834
4667
  appendVM(vm);
4835
4668
  }
4836
4669
  }
4837
4670
 
4838
- function patchCustomElement(n1, n2) {
4671
+ function patchCustomElement(n1, n2, renderer) {
4839
4672
  var elm = n2.elm = n1.elm;
4840
4673
  var vm = n2.vm = n1.vm;
4841
- patchElementPropsAndAttrs$1(n1, n2);
4674
+ patchElementPropsAndAttrs$1(n1, n2, renderer);
4842
4675
 
4843
4676
  if (!isUndefined$1(vm)) {
4844
4677
  // in fallback mode, the allocation will always set children to
@@ -4848,7 +4681,7 @@
4848
4681
  // will happen, but in native, it does allocate the light dom
4849
4682
 
4850
4683
 
4851
- patchChildren(n1.children, n2.children, elm);
4684
+ patchChildren(n1.children, n2.children, elm, renderer);
4852
4685
 
4853
4686
  if (!isUndefined$1(vm)) {
4854
4687
  // this will probably update the shadowRoot, but only if the vm is in a dirty state
@@ -4857,28 +4690,30 @@
4857
4690
  }
4858
4691
  }
4859
4692
 
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;
4693
+ function mountVNodes(vnodes, parent, renderer, anchor) {
4694
+ var start = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
4695
+ var end = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : vnodes.length;
4863
4696
 
4864
4697
  for (; start < end; ++start) {
4865
4698
  var vnode = vnodes[start];
4866
4699
 
4867
4700
  if (isVNode(vnode)) {
4868
- mount(vnode, parent, anchor);
4701
+ mount(vnode, parent, renderer, anchor);
4869
4702
  }
4870
4703
  }
4871
4704
  }
4872
4705
 
4873
- function unmount(vnode, parent) {
4874
- var doRemove = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
4706
+ function unmount(vnode, parent, renderer) {
4707
+ var doRemove = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
4875
4708
  var type = vnode.type,
4876
4709
  elm = vnode.elm,
4877
4710
  sel = vnode.sel; // When unmounting a VNode subtree not all the elements have to removed from the DOM. The
4878
4711
  // subtree root, is the only element worth unmounting from the subtree.
4879
4712
 
4880
4713
  if (doRemove) {
4881
- removeNode(elm, parent);
4714
+ // The vnode might or might not have a data.renderer associated to it
4715
+ // but the removal used here is from the owner instead.
4716
+ removeNode(elm, parent, renderer);
4882
4717
  }
4883
4718
 
4884
4719
  switch (type) {
@@ -4888,10 +4723,10 @@
4888
4723
  {
4889
4724
  // Slot content is removed to trigger slotchange event when removing slot.
4890
4725
  // Only required for synthetic shadow.
4891
- var removeChildren = sel === 'slot' && vnode.owner.shadowMode === 1
4726
+ var shouldRemoveChildren = sel === 'slot' && vnode.owner.shadowMode === 1
4892
4727
  /* Synthetic */
4893
4728
  ;
4894
- unmountVNodes(vnode.children, elm, removeChildren);
4729
+ unmountVNodes(vnode.children, elm, renderer, shouldRemoveChildren);
4895
4730
  break;
4896
4731
  }
4897
4732
 
@@ -4909,16 +4744,16 @@
4909
4744
  }
4910
4745
  }
4911
4746
 
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;
4747
+ function unmountVNodes(vnodes, parent, renderer) {
4748
+ var doRemove = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
4749
+ var start = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
4750
+ var end = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : vnodes.length;
4916
4751
 
4917
4752
  for (; start < end; ++start) {
4918
4753
  var ch = vnodes[start];
4919
4754
 
4920
4755
  if (isVNode(ch)) {
4921
- unmount(ch, parent, doRemove);
4756
+ unmount(ch, parent, renderer, doRemove);
4922
4757
  }
4923
4758
  }
4924
4759
  }
@@ -4936,22 +4771,26 @@
4936
4771
  } // Set the scope token class for *.scoped.css styles
4937
4772
 
4938
4773
 
4939
- function setScopeTokenClassIfNecessary(elm, owner) {
4774
+ function setScopeTokenClassIfNecessary(elm, owner, renderer) {
4940
4775
  var cmpTemplate = owner.cmpTemplate,
4941
4776
  context = owner.context;
4777
+ var getClassList = renderer.getClassList;
4942
4778
  var token = cmpTemplate === null || cmpTemplate === void 0 ? void 0 : cmpTemplate.stylesheetToken;
4943
4779
 
4944
4780
  if (!isUndefined$1(token) && context.hasScopedStyles) {
4945
- getClassList$1(elm).add(token);
4781
+ // TODO [#2762]: this dot notation with add is probably problematic
4782
+ // probably we should have a renderer api for just the add operation
4783
+ getClassList(elm).add(token);
4946
4784
  }
4947
4785
  }
4948
4786
 
4949
- function linkNodeToShadow(elm, owner) {
4787
+ function linkNodeToShadow(elm, owner, renderer) {
4950
4788
  var renderRoot = owner.renderRoot,
4951
4789
  renderMode = owner.renderMode,
4952
- shadowMode = owner.shadowMode; // TODO [#1164]: this should eventually be done by the polyfill directly
4790
+ shadowMode = owner.shadowMode;
4791
+ var isSyntheticShadowDefined = renderer.isSyntheticShadowDefined; // TODO [#1164]: this should eventually be done by the polyfill directly
4953
4792
 
4954
- if (isSyntheticShadowDefined$1) {
4793
+ if (isSyntheticShadowDefined) {
4955
4794
  if (shadowMode === 1
4956
4795
  /* Synthetic */
4957
4796
  || renderMode === 0
@@ -4962,63 +4801,64 @@
4962
4801
  }
4963
4802
  }
4964
4803
 
4965
- function updateTextContent(vnode) {
4804
+ function updateTextContent(vnode, renderer) {
4966
4805
  var elm = vnode.elm,
4967
4806
  text = vnode.text;
4807
+ var setText = renderer.setText;
4968
4808
 
4969
4809
  if (process.env.NODE_ENV !== 'production') {
4970
4810
  unlockDomMutation();
4971
4811
  }
4972
4812
 
4973
- setText$1(elm, text);
4813
+ setText(elm, text);
4974
4814
 
4975
4815
  if (process.env.NODE_ENV !== 'production') {
4976
4816
  lockDomMutation();
4977
4817
  }
4978
4818
  }
4979
4819
 
4980
- function insertNode(node, parent, anchor) {
4820
+ function insertNode(node, parent, anchor, renderer) {
4981
4821
  if (process.env.NODE_ENV !== 'production') {
4982
4822
  unlockDomMutation();
4983
4823
  }
4984
4824
 
4985
- insert$1(node, parent, anchor);
4825
+ renderer.insert(node, parent, anchor);
4986
4826
 
4987
4827
  if (process.env.NODE_ENV !== 'production') {
4988
4828
  lockDomMutation();
4989
4829
  }
4990
4830
  }
4991
4831
 
4992
- function removeNode(node, parent) {
4832
+ function removeNode(node, parent, renderer) {
4993
4833
  if (process.env.NODE_ENV !== 'production') {
4994
4834
  unlockDomMutation();
4995
4835
  }
4996
4836
 
4997
- remove$1(node, parent);
4837
+ renderer.remove(node, parent);
4998
4838
 
4999
4839
  if (process.env.NODE_ENV !== 'production') {
5000
4840
  lockDomMutation();
5001
4841
  }
5002
4842
  }
5003
4843
 
5004
- function patchElementPropsAndAttrs$1(oldVnode, vnode) {
4844
+ function patchElementPropsAndAttrs$1(oldVnode, vnode, renderer) {
5005
4845
  if (isNull(oldVnode)) {
5006
- applyEventListeners(vnode);
5007
- applyStaticClassAttribute(vnode);
5008
- applyStaticStyleAttribute(vnode);
4846
+ applyEventListeners(vnode, renderer);
4847
+ applyStaticClassAttribute(vnode, renderer);
4848
+ applyStaticStyleAttribute(vnode, renderer);
5009
4849
  } // Attrs need to be applied to element before props IE11 will wipe out value on radio inputs if
5010
4850
  // value is set before type=radio.
5011
4851
 
5012
4852
 
5013
- patchClassAttribute(oldVnode, vnode);
5014
- patchStyleAttribute(oldVnode, vnode);
5015
- patchAttributes(oldVnode, vnode);
5016
- patchProps(oldVnode, vnode);
4853
+ patchClassAttribute(oldVnode, vnode, renderer);
4854
+ patchStyleAttribute(oldVnode, vnode, renderer);
4855
+ patchAttributes(oldVnode, vnode, renderer);
4856
+ patchProps(oldVnode, vnode, renderer);
5017
4857
  }
5018
4858
 
5019
- function fallbackElmHook(elm, vnode) {
4859
+ function fallbackElmHook(elm, vnode, renderer) {
5020
4860
  var owner = vnode.owner;
5021
- setScopeTokenClassIfNecessary(elm, owner);
4861
+ setScopeTokenClassIfNecessary(elm, owner, renderer);
5022
4862
 
5023
4863
  if (owner.shadowMode === 1
5024
4864
  /* Synthetic */
@@ -5085,7 +4925,7 @@
5085
4925
  }
5086
4926
  }
5087
4927
 
5088
- function createViewModelHook(elm, vnode) {
4928
+ function createViewModelHook(elm, vnode, renderer) {
5089
4929
  var vm = getAssociatedVMIfPresent(elm); // There is a possibility that a custom element is registered under tagName, in which case, the
5090
4930
  // initialization is already carry on, and there is nothing else to do here since this hook is
5091
4931
  // called right after invoking `document.createElement`.
@@ -5098,7 +4938,7 @@
5098
4938
  mode = vnode.mode,
5099
4939
  ctor = vnode.ctor,
5100
4940
  owner = vnode.owner;
5101
- setScopeTokenClassIfNecessary(elm, owner);
4941
+ setScopeTokenClassIfNecessary(elm, owner, renderer);
5102
4942
 
5103
4943
  if (owner.shadowMode === 1
5104
4944
  /* Synthetic */
@@ -5111,7 +4951,7 @@
5111
4951
  }
5112
4952
  }
5113
4953
 
5114
- vm = createVM(elm, ctor, {
4954
+ vm = createVM(elm, ctor, renderer, {
5115
4955
  mode: mode,
5116
4956
  owner: owner,
5117
4957
  tagName: sel
@@ -5130,8 +4970,8 @@
5130
4970
  var oldSlots = vm.cmpSlots;
5131
4971
  var cmpSlots = vm.cmpSlots = create(null);
5132
4972
 
5133
- for (var _i13 = 0, len = children.length; _i13 < len; _i13 += 1) {
5134
- var vnode = children[_i13];
4973
+ for (var _i12 = 0, len = children.length; _i12 < len; _i12 += 1) {
4974
+ var vnode = children[_i12];
5135
4975
 
5136
4976
  if (isNull(vnode)) {
5137
4977
  continue;
@@ -5157,8 +4997,8 @@
5157
4997
  return;
5158
4998
  }
5159
4999
 
5160
- for (var _i14 = 0, _len4 = oldKeys.length; _i14 < _len4; _i14 += 1) {
5161
- var key = oldKeys[_i14];
5000
+ for (var _i13 = 0, _len4 = oldKeys.length; _i13 < _len4; _i13 += 1) {
5001
+ var key = oldKeys[_i13];
5162
5002
 
5163
5003
  if (isUndefined$1(cmpSlots[key]) || oldSlots[key].length !== cmpSlots[key].length) {
5164
5004
  markComponentAsDirty(vm);
@@ -5208,7 +5048,7 @@
5208
5048
  return map;
5209
5049
  }
5210
5050
 
5211
- function updateDynamicChildren(oldCh, newCh, parent) {
5051
+ function updateDynamicChildren(oldCh, newCh, parent, renderer) {
5212
5052
  var oldStartIdx = 0;
5213
5053
  var newStartIdx = 0;
5214
5054
  var oldEndIdx = oldCh.length - 1;
@@ -5234,23 +5074,23 @@
5234
5074
  } else if (!isVNode(newEndVnode)) {
5235
5075
  newEndVnode = newCh[--newEndIdx];
5236
5076
  } else if (isSameVnode(oldStartVnode, newStartVnode)) {
5237
- patch(oldStartVnode, newStartVnode);
5077
+ patch(oldStartVnode, newStartVnode, renderer);
5238
5078
  oldStartVnode = oldCh[++oldStartIdx];
5239
5079
  newStartVnode = newCh[++newStartIdx];
5240
5080
  } else if (isSameVnode(oldEndVnode, newEndVnode)) {
5241
- patch(oldEndVnode, newEndVnode);
5081
+ patch(oldEndVnode, newEndVnode, renderer);
5242
5082
  oldEndVnode = oldCh[--oldEndIdx];
5243
5083
  newEndVnode = newCh[--newEndIdx];
5244
5084
  } else if (isSameVnode(oldStartVnode, newEndVnode)) {
5245
5085
  // Vnode moved right
5246
- patch(oldStartVnode, newEndVnode);
5247
- insertNode(oldStartVnode.elm, parent, nextSibling$1(oldEndVnode.elm));
5086
+ patch(oldStartVnode, newEndVnode, renderer);
5087
+ insertNode(oldStartVnode.elm, parent, renderer.nextSibling(oldEndVnode.elm), renderer);
5248
5088
  oldStartVnode = oldCh[++oldStartIdx];
5249
5089
  newEndVnode = newCh[--newEndIdx];
5250
5090
  } else if (isSameVnode(oldEndVnode, newStartVnode)) {
5251
5091
  // Vnode moved left
5252
- patch(oldEndVnode, newStartVnode);
5253
- insertNode(newStartVnode.elm, parent, oldStartVnode.elm);
5092
+ patch(oldEndVnode, newStartVnode, renderer);
5093
+ insertNode(newStartVnode.elm, parent, oldStartVnode.elm, renderer);
5254
5094
  oldEndVnode = oldCh[--oldEndIdx];
5255
5095
  newStartVnode = newCh[++newStartIdx];
5256
5096
  } else {
@@ -5262,7 +5102,7 @@
5262
5102
 
5263
5103
  if (isUndefined$1(idxInOld)) {
5264
5104
  // New element
5265
- mount(newStartVnode, parent, oldStartVnode.elm);
5105
+ mount(newStartVnode, parent, renderer, oldStartVnode.elm);
5266
5106
  newStartVnode = newCh[++newStartIdx];
5267
5107
  } else {
5268
5108
  elmToMove = oldCh[idxInOld];
@@ -5270,9 +5110,9 @@
5270
5110
  if (isVNode(elmToMove)) {
5271
5111
  if (elmToMove.sel !== newStartVnode.sel) {
5272
5112
  // New element
5273
- mount(newStartVnode, parent, oldStartVnode.elm);
5113
+ mount(newStartVnode, parent, renderer, oldStartVnode.elm);
5274
5114
  } else {
5275
- patch(elmToMove, newStartVnode); // Delete the old child, but copy the array since it is read-only.
5115
+ patch(elmToMove, newStartVnode, renderer); // Delete the old child, but copy the array since it is read-only.
5276
5116
  // The `oldCh` will be GC'ed after `updateDynamicChildren` is complete,
5277
5117
  // so we only care about the `oldCh` object inside this function.
5278
5118
  // To avoid cloning over and over again, we check `clonedOldCh`
@@ -5285,7 +5125,7 @@
5285
5125
 
5286
5126
 
5287
5127
  oldCh[idxInOld] = undefined;
5288
- insertNode(elmToMove.elm, parent, oldStartVnode.elm);
5128
+ insertNode(elmToMove.elm, parent, oldStartVnode.elm, renderer);
5289
5129
  }
5290
5130
  }
5291
5131
 
@@ -5298,35 +5138,35 @@
5298
5138
  if (oldStartIdx > oldEndIdx) {
5299
5139
  // There's some cases in which the sub array of vnodes to be inserted is followed by null(s) and an
5300
5140
  // already processed vnode, in such cases the vnodes to be inserted should be before that processed vnode.
5301
- var _i15 = newEndIdx;
5141
+ var _i14 = newEndIdx;
5302
5142
  var n;
5303
5143
 
5304
5144
  do {
5305
- n = newCh[++_i15];
5306
- } while (!isVNode(n) && _i15 < newChEnd);
5145
+ n = newCh[++_i14];
5146
+ } while (!isVNode(n) && _i14 < newChEnd);
5307
5147
 
5308
5148
  before = isVNode(n) ? n.elm : null;
5309
- mountVNodes(newCh, parent, before, newStartIdx, newEndIdx + 1);
5149
+ mountVNodes(newCh, parent, renderer, before, newStartIdx, newEndIdx + 1);
5310
5150
  } else {
5311
- unmountVNodes(oldCh, parent, true, oldStartIdx, oldEndIdx + 1);
5151
+ unmountVNodes(oldCh, parent, renderer, true, oldStartIdx, oldEndIdx + 1);
5312
5152
  }
5313
5153
  }
5314
5154
  }
5315
5155
 
5316
- function updateStaticChildren(c1, c2, parent) {
5156
+ function updateStaticChildren(c1, c2, parent, renderer) {
5317
5157
  var c1Length = c1.length;
5318
5158
  var c2Length = c2.length;
5319
5159
 
5320
5160
  if (c1Length === 0) {
5321
5161
  // the old list is empty, we can directly insert anything new
5322
- mountVNodes(c2, parent, null);
5162
+ mountVNodes(c2, parent, renderer, null);
5323
5163
  return;
5324
5164
  }
5325
5165
 
5326
5166
  if (c2Length === 0) {
5327
5167
  // the old list is nonempty and the new list is empty so we can directly remove all old nodes
5328
5168
  // this is the case in which the dynamic children of an if-directive should be removed
5329
- unmountVNodes(c1, parent, true);
5169
+ unmountVNodes(c1, parent, renderer, true);
5330
5170
  return;
5331
5171
  } // if the old list is not empty, the new list MUST have the same
5332
5172
  // amount of nodes, that's why we call this static children
@@ -5334,22 +5174,22 @@
5334
5174
 
5335
5175
  var anchor = null;
5336
5176
 
5337
- for (var _i16 = c2Length - 1; _i16 >= 0; _i16 -= 1) {
5338
- var n1 = c1[_i16];
5339
- var n2 = c2[_i16];
5177
+ for (var _i15 = c2Length - 1; _i15 >= 0; _i15 -= 1) {
5178
+ var n1 = c1[_i15];
5179
+ var n2 = c2[_i15];
5340
5180
 
5341
5181
  if (n2 !== n1) {
5342
5182
  if (isVNode(n1)) {
5343
5183
  if (isVNode(n2)) {
5344
5184
  // both vnodes are equivalent, and we just need to patch them
5345
- patch(n1, n2);
5185
+ patch(n1, n2, renderer);
5346
5186
  anchor = n2.elm;
5347
5187
  } else {
5348
5188
  // removing the old vnode since the new one is null
5349
- unmount(n1, parent, true);
5189
+ unmount(n1, parent, renderer, true);
5350
5190
  }
5351
5191
  } else if (isVNode(n2)) {
5352
- mount(n2, parent, anchor);
5192
+ mount(n2, parent, renderer, anchor);
5353
5193
  anchor = n2.elm;
5354
5194
  }
5355
5195
  }
@@ -5884,7 +5724,11 @@
5884
5724
  var elm = vm.elm,
5885
5725
  context = vm.context,
5886
5726
  renderMode = vm.renderMode,
5887
- shadowMode = vm.shadowMode;
5727
+ shadowMode = vm.shadowMode,
5728
+ _vm$renderer = vm.renderer,
5729
+ getClassList = _vm$renderer.getClassList,
5730
+ removeAttribute = _vm$renderer.removeAttribute,
5731
+ setAttribute = _vm$renderer.setAttribute;
5888
5732
  var newStylesheets = template.stylesheets,
5889
5733
  newStylesheetToken = template.stylesheetToken;
5890
5734
  var isSyntheticShadow = renderMode === 1
@@ -5903,11 +5747,11 @@
5903
5747
 
5904
5748
  if (!isUndefined$1(oldToken)) {
5905
5749
  if (oldHasTokenInClass) {
5906
- getClassList$1(elm).remove(makeHostToken(oldToken));
5750
+ getClassList(elm).remove(makeHostToken(oldToken));
5907
5751
  }
5908
5752
 
5909
5753
  if (oldHasTokenInAttribute) {
5910
- removeAttribute$1(elm, makeHostToken(oldToken));
5754
+ removeAttribute(elm, makeHostToken(oldToken));
5911
5755
  }
5912
5756
  } // Apply the new template styling token to the host element, if the new template has any
5913
5757
  // associated stylesheets. In the case of light DOM, also ensure there is at least one scoped stylesheet.
@@ -5920,12 +5764,12 @@
5920
5764
 
5921
5765
  if (!isUndefined$1(newToken)) {
5922
5766
  if (hasScopedStyles) {
5923
- getClassList$1(elm).add(makeHostToken(newToken));
5767
+ getClassList(elm).add(makeHostToken(newToken));
5924
5768
  newHasTokenInClass = true;
5925
5769
  }
5926
5770
 
5927
5771
  if (isSyntheticShadow) {
5928
- setAttribute$1(elm, makeHostToken(newToken), '');
5772
+ setAttribute(elm, makeHostToken(newToken), '');
5929
5773
  newHasTokenInAttribute = true;
5930
5774
  }
5931
5775
  } // Update the styling tokens present on the context object.
@@ -5940,8 +5784,8 @@
5940
5784
  var content = [];
5941
5785
  var root;
5942
5786
 
5943
- for (var _i17 = 0; _i17 < stylesheets.length; _i17++) {
5944
- var stylesheet = stylesheets[_i17];
5787
+ for (var _i16 = 0; _i16 < stylesheets.length; _i16++) {
5788
+ var stylesheet = stylesheets[_i16];
5945
5789
 
5946
5790
  if (isArray$1(stylesheet)) {
5947
5791
  ArrayPush$1.apply(content, evaluateStylesheetsContent(stylesheet, stylesheetToken, vm));
@@ -6046,17 +5890,20 @@
6046
5890
 
6047
5891
  function createStylesheet(vm, stylesheets) {
6048
5892
  var renderMode = vm.renderMode,
6049
- shadowMode = vm.shadowMode;
5893
+ shadowMode = vm.shadowMode,
5894
+ _vm$renderer2 = vm.renderer,
5895
+ ssr = _vm$renderer2.ssr,
5896
+ insertStylesheet = _vm$renderer2.insertStylesheet;
6050
5897
 
6051
5898
  if (renderMode === 1
6052
5899
  /* Shadow */
6053
5900
  && shadowMode === 1
6054
5901
  /* Synthetic */
6055
5902
  ) {
6056
- for (var _i18 = 0; _i18 < stylesheets.length; _i18++) {
6057
- insertStylesheet$1(stylesheets[_i18]);
5903
+ for (var _i17 = 0; _i17 < stylesheets.length; _i17++) {
5904
+ insertStylesheet(stylesheets[_i17]);
6058
5905
  }
6059
- } else if (ssr$1 || vm.hydrated) {
5906
+ } else if (ssr || vm.hydrated) {
6060
5907
  // Note: We need to ensure that during hydration, the stylesheets method is the same as those in ssr.
6061
5908
  // This works in the client, because the stylesheets are created, and cached in the VM
6062
5909
  // the first time the VM renders.
@@ -6069,8 +5916,8 @@
6069
5916
 
6070
5917
  var target = isNull(root) ? undefined : root.shadowRoot;
6071
5918
 
6072
- for (var _i19 = 0; _i19 < stylesheets.length; _i19++) {
6073
- insertStylesheet$1(stylesheets[_i19], target);
5919
+ for (var _i18 = 0; _i18 < stylesheets.length; _i18++) {
5920
+ insertStylesheet(stylesheets[_i18], target);
6074
5921
  }
6075
5922
  }
6076
5923
 
@@ -6346,8 +6193,8 @@
6346
6193
  var stylesheets = template.stylesheets;
6347
6194
 
6348
6195
  if (!isUndefined$1(stylesheets)) {
6349
- for (var _i20 = 0; _i20 < stylesheets.length; _i20++) {
6350
- if (isTrue(stylesheets[_i20][KEY__SCOPED_CSS])) {
6196
+ for (var _i19 = 0; _i19 < stylesheets.length; _i19++) {
6197
+ if (isTrue(stylesheets[_i19][KEY__SCOPED_CSS])) {
6351
6198
  return true;
6352
6199
  }
6353
6200
  }
@@ -6568,8 +6415,8 @@
6568
6415
  assert.isTrue(isObject(service), "Invalid service declaration, ".concat(service, ": service must be an object"));
6569
6416
  }
6570
6417
 
6571
- for (var _i21 = 0; _i21 < hooks.length; ++_i21) {
6572
- var hookName = hooks[_i21];
6418
+ for (var _i20 = 0; _i20 < hooks.length; ++_i20) {
6419
+ var hookName = hooks[_i20];
6573
6420
 
6574
6421
  if (hookName in service) {
6575
6422
  var l = Services[hookName];
@@ -6592,8 +6439,8 @@
6592
6439
  def = vm.def,
6593
6440
  context = vm.context;
6594
6441
 
6595
- for (var _i22 = 0, len = cbs.length; _i22 < len; ++_i22) {
6596
- cbs[_i22].call(undefined, component, {}, def, context);
6442
+ for (var _i21 = 0, len = cbs.length; _i21 < len; ++_i21) {
6443
+ cbs[_i21].call(undefined, component, {}, def, context);
6597
6444
  }
6598
6445
  }
6599
6446
  /*
@@ -6709,7 +6556,7 @@
6709
6556
  return ancestor;
6710
6557
  }
6711
6558
 
6712
- function createVM(elm, ctor, options) {
6559
+ function createVM(elm, ctor, renderer, options) {
6713
6560
  var mode = options.mode,
6714
6561
  owner = options.owner,
6715
6562
  tagName = options.tagName,
@@ -6756,9 +6603,10 @@
6756
6603
  renderRoot: null,
6757
6604
  callHook: callHook,
6758
6605
  setHook: setHook,
6759
- getHook: getHook
6606
+ getHook: getHook,
6607
+ renderer: renderer
6760
6608
  };
6761
- vm.shadowMode = computeShadowMode(vm);
6609
+ vm.shadowMode = computeShadowMode(vm, renderer);
6762
6610
  vm.tro = getTemplateReactiveObserver(vm);
6763
6611
 
6764
6612
  if (process.env.NODE_ENV !== 'production') {
@@ -6783,11 +6631,13 @@
6783
6631
  return vm;
6784
6632
  }
6785
6633
 
6786
- function computeShadowMode(vm) {
6634
+ function computeShadowMode(vm, renderer) {
6787
6635
  var def = vm.def;
6636
+ var isSyntheticShadowDefined = renderer.isSyntheticShadowDefined,
6637
+ isNativeShadowDefined = renderer.isNativeShadowDefined;
6788
6638
  var shadowMode;
6789
6639
 
6790
- if (isSyntheticShadowDefined$1) {
6640
+ if (isSyntheticShadowDefined) {
6791
6641
  if (def.renderMode === 0
6792
6642
  /* Light */
6793
6643
  ) {
@@ -6796,7 +6646,7 @@
6796
6646
  shadowMode = 0
6797
6647
  /* Native */
6798
6648
  ;
6799
- } else if (isNativeShadowDefined$1) {
6649
+ } else if (isNativeShadowDefined) {
6800
6650
  // Not combined with above condition because @lwc/features only supports identifiers in
6801
6651
  // the if-condition.
6802
6652
  if (runtimeFlags.ENABLE_MIXED_SHADOW_MODE) {
@@ -6887,7 +6737,8 @@
6887
6737
 
6888
6738
  function patchShadowRoot(vm, newCh) {
6889
6739
  var renderRoot = vm.renderRoot,
6890
- oldCh = vm.children; // caching the new children collection
6740
+ oldCh = vm.children,
6741
+ renderer = vm.renderer; // caching the new children collection
6891
6742
 
6892
6743
  vm.children = newCh;
6893
6744
 
@@ -6902,7 +6753,7 @@
6902
6753
  , vm);
6903
6754
  }, function () {
6904
6755
  // job
6905
- patchChildren(oldCh, newCh, renderRoot);
6756
+ patchChildren(oldCh, newCh, renderRoot, renderer);
6906
6757
  }, function () {
6907
6758
  // post
6908
6759
  logOperationEnd(2
@@ -6924,9 +6775,10 @@
6924
6775
  }
6925
6776
 
6926
6777
  function runRenderedCallback(vm) {
6927
- var renderedCallback = vm.def.renderedCallback;
6778
+ var renderedCallback = vm.def.renderedCallback,
6779
+ ssr = vm.renderer.ssr;
6928
6780
 
6929
- if (isTrue(ssr$1)) {
6781
+ if (isTrue(ssr)) {
6930
6782
  return;
6931
6783
  }
6932
6784
 
@@ -6963,19 +6815,19 @@
6963
6815
  });
6964
6816
  rehydrateQueue = []; // reset to a new queue
6965
6817
 
6966
- for (var _i23 = 0, len = vms.length; _i23 < len; _i23 += 1) {
6967
- var vm = vms[_i23];
6818
+ for (var _i22 = 0, len = vms.length; _i22 < len; _i22 += 1) {
6819
+ var vm = vms[_i22];
6968
6820
 
6969
6821
  try {
6970
6822
  rehydrate(vm);
6971
6823
  } catch (error) {
6972
- if (_i23 + 1 < len) {
6824
+ if (_i22 + 1 < len) {
6973
6825
  // pieces of the queue are still pending to be rehydrated, those should have priority
6974
6826
  if (rehydrateQueue.length === 0) {
6975
6827
  addCallbackToNextTick(flushRehydrationQueue);
6976
6828
  }
6977
6829
 
6978
- ArrayUnshift.apply(rehydrateQueue, ArraySlice.call(vms, _i23 + 1));
6830
+ ArrayUnshift.apply(rehydrateQueue, ArraySlice.call(vms, _i22 + 1));
6979
6831
  } // we need to end the measure before throwing.
6980
6832
 
6981
6833
 
@@ -7079,8 +6931,8 @@
7079
6931
  var vCustomElementCollection = vm.velements; // Reporting disconnection for every child in inverse order since they are
7080
6932
  // inserted in reserved order.
7081
6933
 
7082
- for (var _i24 = vCustomElementCollection.length - 1; _i24 >= 0; _i24 -= 1) {
7083
- var elm = vCustomElementCollection[_i24].elm; // There are two cases where the element could be undefined:
6934
+ for (var _i23 = vCustomElementCollection.length - 1; _i23 >= 0; _i23 -= 1) {
6935
+ var elm = vCustomElementCollection[_i23].elm; // There are two cases where the element could be undefined:
7084
6936
  // * when there is an error during the construction phase, and an error
7085
6937
  // boundary picks it, there is a possibility that the VCustomElement
7086
6938
  // is not properly initialized, and therefore is should be ignored.
@@ -7114,8 +6966,8 @@
7114
6966
 
7115
6967
 
7116
6968
  function recursivelyDisconnectChildren(vnodes) {
7117
- for (var _i25 = 0, len = vnodes.length; _i25 < len; _i25 += 1) {
7118
- var vnode = vnodes[_i25];
6969
+ for (var _i24 = 0, len = vnodes.length; _i24 < len; _i24 += 1) {
6970
+ var vnode = vnodes[_i24];
7119
6971
 
7120
6972
  if (!isNull(vnode) && !isUndefined$1(vnode.elm)) {
7121
6973
  switch (vnode.type) {
@@ -7144,13 +6996,14 @@
7144
6996
 
7145
6997
  function resetComponentRoot(vm) {
7146
6998
  var children = vm.children,
7147
- renderRoot = vm.renderRoot;
6999
+ renderRoot = vm.renderRoot,
7000
+ remove = vm.renderer.remove;
7148
7001
 
7149
- for (var _i26 = 0, len = children.length; _i26 < len; _i26++) {
7150
- var child = children[_i26];
7002
+ for (var _i25 = 0, len = children.length; _i25 < len; _i25++) {
7003
+ var child = children[_i25];
7151
7004
 
7152
7005
  if (!isNull(child) && !isUndefined$1(child.elm)) {
7153
- remove$1(child.elm, renderRoot);
7006
+ remove(child.elm, renderRoot);
7154
7007
  }
7155
7008
  }
7156
7009
 
@@ -7160,7 +7013,9 @@
7160
7013
  }
7161
7014
 
7162
7015
  function scheduleRehydration(vm) {
7163
- if (isTrue(ssr$1) || isTrue(vm.isScheduled)) {
7016
+ var ssr = vm.renderer.ssr;
7017
+
7018
+ if (isTrue(ssr) || isTrue(vm.isScheduled)) {
7164
7019
  return;
7165
7020
  }
7166
7021
 
@@ -7347,7 +7202,8 @@
7347
7202
  var elm = vm.elm,
7348
7203
  _vm$context = vm.context,
7349
7204
  wiredConnecting = _vm$context.wiredConnecting,
7350
- wiredDisconnecting = _vm$context.wiredDisconnecting; // waiting for the component to be connected to formally request the context via the token
7205
+ wiredDisconnecting = _vm$context.wiredDisconnecting,
7206
+ dispatchEvent = vm.renderer.dispatchEvent; // waiting for the component to be connected to formally request the context via the token
7351
7207
 
7352
7208
  ArrayPush$1.call(wiredConnecting, function () {
7353
7209
  // This event is responsible for connecting the host element with another
@@ -7367,7 +7223,7 @@
7367
7223
  ArrayPush$1.call(wiredDisconnecting, disconnectCallback);
7368
7224
  }
7369
7225
  });
7370
- dispatchEvent$1(elm, contextRegistrationEvent);
7226
+ dispatchEvent(elm, contextRegistrationEvent);
7371
7227
  });
7372
7228
  }
7373
7229
 
@@ -7521,8 +7377,8 @@
7521
7377
  function connectWireAdapters(vm) {
7522
7378
  var wiredConnecting = vm.context.wiredConnecting;
7523
7379
 
7524
- for (var _i27 = 0, len = wiredConnecting.length; _i27 < len; _i27 += 1) {
7525
- wiredConnecting[_i27]();
7380
+ for (var _i26 = 0, len = wiredConnecting.length; _i26 < len; _i26 += 1) {
7381
+ wiredConnecting[_i26]();
7526
7382
  }
7527
7383
  }
7528
7384
 
@@ -7530,8 +7386,8 @@
7530
7386
  var wiredDisconnecting = vm.context.wiredDisconnecting;
7531
7387
  runWithBoundaryProtection(vm, vm, noop, function () {
7532
7388
  // job
7533
- for (var _i28 = 0, len = wiredDisconnecting.length; _i28 < len; _i28 += 1) {
7534
- wiredDisconnecting[_i28]();
7389
+ for (var _i27 = 0, len = wiredDisconnecting.length; _i27 < len; _i27 += 1) {
7390
+ wiredDisconnecting[_i27]();
7535
7391
  }
7536
7392
  }, noop);
7537
7393
  }
@@ -7631,95 +7487,107 @@
7631
7487
  function hydrateVM(vm) {
7632
7488
  var children = renderComponent(vm);
7633
7489
  vm.children = children;
7634
- var parentNode = vm.renderRoot;
7635
- hydrateChildren(getFirstChild$1(parentNode), children, parentNode, vm);
7490
+ var parentNode = vm.renderRoot,
7491
+ getFirstChild = vm.renderer.getFirstChild;
7492
+ hydrateChildren(getFirstChild(parentNode), children, parentNode, vm);
7636
7493
  runRenderedCallback(vm);
7637
7494
  }
7638
7495
 
7639
- function hydrateNode(node, vnode) {
7496
+ function hydrateNode(node, vnode, renderer) {
7497
+ var _a, _b;
7498
+
7640
7499
  var hydratedNode;
7641
7500
 
7642
7501
  switch (vnode.type) {
7643
7502
  case 0
7644
7503
  /* Text */
7645
7504
  :
7646
- hydratedNode = hydrateText(node, vnode);
7505
+ // VText has no special capability, fallback to the owner's renderer
7506
+ hydratedNode = hydrateText(node, vnode, renderer);
7647
7507
  break;
7648
7508
 
7649
7509
  case 1
7650
7510
  /* Comment */
7651
7511
  :
7652
- hydratedNode = hydrateComment(node, vnode);
7512
+ // VComment has no special capability, fallback to the owner's renderer
7513
+ hydratedNode = hydrateComment(node, vnode, renderer);
7653
7514
  break;
7654
7515
 
7655
7516
  case 2
7656
7517
  /* Element */
7657
7518
  :
7658
- hydratedNode = hydrateElement(node, vnode);
7519
+ hydratedNode = hydrateElement(node, vnode, (_a = vnode.data.renderer) !== null && _a !== void 0 ? _a : renderer);
7659
7520
  break;
7660
7521
 
7661
7522
  case 3
7662
7523
  /* CustomElement */
7663
7524
  :
7664
- hydratedNode = hydrateCustomElement(node, vnode);
7525
+ hydratedNode = hydrateCustomElement(node, vnode, (_b = vnode.data.renderer) !== null && _b !== void 0 ? _b : renderer);
7665
7526
  break;
7666
7527
  }
7667
7528
 
7668
- return nextSibling$1(hydratedNode);
7529
+ return renderer.nextSibling(hydratedNode);
7669
7530
  }
7670
7531
 
7671
- function hydrateText(node, vnode) {
7532
+ function hydrateText(node, vnode, renderer) {
7672
7533
  var _a;
7673
7534
 
7674
7535
  if (!hasCorrectNodeType(vnode, node, 3
7675
7536
  /* TEXT */
7676
- )) {
7677
- return handleMismatch(node, vnode);
7537
+ , renderer)) {
7538
+ return handleMismatch(node, vnode, renderer);
7678
7539
  }
7679
7540
 
7680
7541
  if (process.env.NODE_ENV !== 'production') {
7681
- var nodeValue = getProperty$1(node, 'nodeValue');
7542
+ var _getProperty = renderer.getProperty;
7543
+
7544
+ var nodeValue = _getProperty(node, 'nodeValue');
7682
7545
 
7683
7546
  if (nodeValue !== vnode.text && !(nodeValue === "\u200D" && vnode.text === '')) {
7684
7547
  logWarn('Hydration mismatch: text values do not match, will recover from the difference', vnode.owner);
7685
7548
  }
7686
7549
  }
7687
7550
 
7688
- setText$1(node, (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
7551
+ var setText = renderer.setText;
7552
+ setText(node, (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
7689
7553
  vnode.elm = node;
7690
7554
  return node;
7691
7555
  }
7692
7556
 
7693
- function hydrateComment(node, vnode) {
7557
+ function hydrateComment(node, vnode, renderer) {
7694
7558
  var _a;
7695
7559
 
7696
7560
  if (!hasCorrectNodeType(vnode, node, 8
7697
7561
  /* COMMENT */
7698
- )) {
7699
- return handleMismatch(node, vnode);
7562
+ , renderer)) {
7563
+ return handleMismatch(node, vnode, renderer);
7700
7564
  }
7701
7565
 
7702
7566
  if (process.env.NODE_ENV !== 'production') {
7703
- var nodeValue = getProperty$1(node, 'nodeValue');
7567
+ var _getProperty2 = renderer.getProperty;
7568
+
7569
+ var nodeValue = _getProperty2(node, 'nodeValue');
7704
7570
 
7705
7571
  if (nodeValue !== vnode.text) {
7706
7572
  logWarn('Hydration mismatch: comment values do not match, will recover from the difference', vnode.owner);
7707
7573
  }
7708
7574
  }
7709
7575
 
7710
- setProperty$1(node, 'nodeValue', (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
7576
+ var setProperty = renderer.setProperty;
7577
+ setProperty(node, 'nodeValue', (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
7711
7578
  vnode.elm = node;
7712
7579
  return node;
7713
7580
  }
7714
7581
 
7715
- function hydrateElement(elm, vnode) {
7582
+ function hydrateElement(elm, vnode, renderer) {
7716
7583
  if (!hasCorrectNodeType(vnode, elm, 1
7717
7584
  /* ELEMENT */
7718
- ) || !isMatchingElement(vnode, elm)) {
7719
- return handleMismatch(elm, vnode);
7585
+ , renderer) || !isMatchingElement(vnode, elm, renderer)) {
7586
+ return handleMismatch(elm, vnode, renderer);
7720
7587
  }
7721
7588
 
7722
7589
  vnode.elm = elm;
7590
+ var owner = vnode.owner;
7723
7591
  var context = vnode.data.context;
7724
7592
  var isDomManual = Boolean(!isUndefined$1(context) && !isUndefined$1(context.lwc) && context.lwc.dom === "manual"
7725
7593
  /* Manual */
@@ -7729,42 +7597,44 @@
7729
7597
  // it may be that this element has lwc:inner-html, we need to diff and in case are the same,
7730
7598
  // remove the innerHTML from props so it reuses the existing dom elements.
7731
7599
  var props = vnode.data.props;
7600
+ var _getProperty3 = renderer.getProperty;
7732
7601
 
7733
7602
  if (!isUndefined$1(props) && !isUndefined$1(props.innerHTML)) {
7734
- if (getProperty$1(elm, 'innerHTML') === props.innerHTML) {
7603
+ if (_getProperty3(elm, 'innerHTML') === props.innerHTML) {
7735
7604
  // Do a shallow clone since VNodeData may be shared across VNodes due to hoist optimization
7736
7605
  vnode.data = Object.assign(Object.assign({}, vnode.data), {
7737
7606
  props: cloneAndOmitKey(props, 'innerHTML')
7738
7607
  });
7739
7608
  } else {
7740
7609
  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);
7610
+ logWarn("Mismatch hydrating element <".concat(_getProperty3(elm, 'tagName').toLowerCase(), ">: innerHTML values do not match for element, will recover from the difference"), owner);
7742
7611
  }
7743
7612
  }
7744
7613
  }
7745
7614
  }
7746
7615
 
7747
- patchElementPropsAndAttrs(vnode);
7616
+ patchElementPropsAndAttrs(vnode, renderer);
7748
7617
 
7749
7618
  if (!isDomManual) {
7750
- hydrateChildren(getFirstChild$1(elm), vnode.children, elm, vnode.owner);
7619
+ var _getFirstChild = renderer.getFirstChild;
7620
+ hydrateChildren(_getFirstChild(elm), vnode.children, elm, owner);
7751
7621
  }
7752
7622
 
7753
7623
  return elm;
7754
7624
  }
7755
7625
 
7756
- function hydrateCustomElement(elm, vnode) {
7626
+ function hydrateCustomElement(elm, vnode, renderer) {
7757
7627
  if (!hasCorrectNodeType(vnode, elm, 1
7758
7628
  /* ELEMENT */
7759
- ) || !isMatchingElement(vnode, elm)) {
7760
- return handleMismatch(elm, vnode);
7629
+ , renderer) || !isMatchingElement(vnode, elm, renderer)) {
7630
+ return handleMismatch(elm, vnode, renderer);
7761
7631
  }
7762
7632
 
7763
7633
  var sel = vnode.sel,
7764
7634
  mode = vnode.mode,
7765
7635
  ctor = vnode.ctor,
7766
7636
  owner = vnode.owner;
7767
- var vm = createVM(elm, ctor, {
7637
+ var vm = createVM(elm, ctor, renderer, {
7768
7638
  mode: mode,
7769
7639
  owner: owner,
7770
7640
  tagName: sel,
@@ -7773,7 +7643,7 @@
7773
7643
  vnode.elm = elm;
7774
7644
  vnode.vm = vm;
7775
7645
  allocateChildren(vnode, vm);
7776
- patchElementPropsAndAttrs(vnode); // Insert hook section:
7646
+ patchElementPropsAndAttrs(vnode, renderer); // Insert hook section:
7777
7647
 
7778
7648
  if (process.env.NODE_ENV !== 'production') {
7779
7649
  assert.isTrue(vm.state === 0
@@ -7786,9 +7656,10 @@
7786
7656
  if (vm.renderMode !== 0
7787
7657
  /* Light */
7788
7658
  ) {
7789
- // VM is not rendering in Light DOM, we can proceed and hydrate the slotted content.
7659
+ var _getFirstChild2 = renderer.getFirstChild; // VM is not rendering in Light DOM, we can proceed and hydrate the slotted content.
7790
7660
  // Note: for Light DOM, this is handled while hydrating the VM
7791
- hydrateChildren(getFirstChild$1(elm), vnode.children, elm, vm);
7661
+
7662
+ hydrateChildren(_getFirstChild2(elm), vnode.children, elm, vm);
7792
7663
  }
7793
7664
 
7794
7665
  hydrateVM(vm);
@@ -7799,13 +7670,14 @@
7799
7670
  var hasWarned = false;
7800
7671
  var nextNode = node;
7801
7672
  var anchor = null;
7673
+ var renderer = owner.renderer;
7802
7674
 
7803
- for (var _i29 = 0; _i29 < children.length; _i29++) {
7804
- var childVnode = children[_i29];
7675
+ for (var _i28 = 0; _i28 < children.length; _i28++) {
7676
+ var childVnode = children[_i28];
7805
7677
 
7806
7678
  if (!isNull(childVnode)) {
7807
7679
  if (nextNode) {
7808
- nextNode = hydrateNode(nextNode, childVnode);
7680
+ nextNode = hydrateNode(nextNode, childVnode, renderer);
7809
7681
  anchor = childVnode.elm;
7810
7682
  } else {
7811
7683
  hasMismatch = true;
@@ -7817,7 +7689,7 @@
7817
7689
  }
7818
7690
  }
7819
7691
 
7820
- mount(childVnode, parentNode, anchor);
7692
+ mount(childVnode, parentNode, renderer, anchor);
7821
7693
  anchor = childVnode.elm;
7822
7694
  }
7823
7695
  }
@@ -7830,38 +7702,40 @@
7830
7702
  if (!hasWarned) {
7831
7703
  logError("Hydration mismatch: incorrect number of rendered nodes. Server rendered more nodes than the client.", owner);
7832
7704
  }
7833
- }
7705
+ } // nextSibling is mostly harmless, and since we don't have
7706
+ // a good reference to what element to act upon, we instead
7707
+ // rely on the vm's associated renderer for navigating to the
7708
+ // next node in the list to be hydrated.
7709
+
7710
+
7711
+ var _nextSibling = renderer.nextSibling;
7834
7712
 
7835
7713
  do {
7836
7714
  var current = nextNode;
7837
- nextNode = nextSibling$1(nextNode);
7838
- removeNode(current, parentNode);
7715
+ nextNode = _nextSibling(nextNode);
7716
+ removeNode(current, parentNode, renderer);
7839
7717
  } while (nextNode);
7840
7718
  }
7841
7719
  }
7842
7720
 
7843
- function handleMismatch(node, vnode, msg) {
7721
+ function handleMismatch(node, vnode, renderer) {
7844
7722
  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);
7723
+ var getProperty = renderer.getProperty;
7724
+ var parentNode = getProperty(node, 'parentNode');
7725
+ mount(vnode, parentNode, renderer, node);
7726
+ removeNode(node, parentNode, renderer);
7855
7727
  return vnode.elm;
7856
7728
  }
7857
7729
 
7858
- function patchElementPropsAndAttrs(vnode) {
7859
- applyEventListeners(vnode);
7860
- patchProps(null, vnode);
7730
+ function patchElementPropsAndAttrs(vnode, renderer) {
7731
+ applyEventListeners(vnode, renderer);
7732
+ patchProps(null, vnode, renderer);
7861
7733
  }
7862
7734
 
7863
- function hasCorrectNodeType(vnode, node, nodeType) {
7864
- if (getProperty$1(node, 'nodeType') !== nodeType) {
7735
+ function hasCorrectNodeType(vnode, node, nodeType, renderer) {
7736
+ var getProperty = renderer.getProperty;
7737
+
7738
+ if (getProperty(node, 'nodeType') !== nodeType) {
7865
7739
  if (process.env.NODE_ENV !== 'production') {
7866
7740
  logError('Hydration mismatch: incorrect node type received', vnode.owner);
7867
7741
  }
@@ -7872,37 +7746,43 @@
7872
7746
  return true;
7873
7747
  }
7874
7748
 
7875
- function isMatchingElement(vnode, elm) {
7876
- if (vnode.sel.toLowerCase() !== getProperty$1(elm, 'tagName').toLowerCase()) {
7749
+ function isMatchingElement(vnode, elm, renderer) {
7750
+ var getProperty = renderer.getProperty;
7751
+
7752
+ if (vnode.sel.toLowerCase() !== getProperty(elm, 'tagName').toLowerCase()) {
7877
7753
  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);
7754
+ logError("Hydration mismatch: expecting element with tag \"".concat(vnode.sel.toLowerCase(), "\" but found \"").concat(getProperty(elm, 'tagName').toLowerCase(), "\"."), vnode.owner);
7879
7755
  }
7880
7756
 
7881
7757
  return false;
7882
7758
  }
7883
7759
 
7884
- var hasIncompatibleAttrs = validateAttrs(vnode, elm);
7885
- var hasIncompatibleClass = validateClassAttr(vnode, elm);
7886
- var hasIncompatibleStyle = validateStyleAttr(vnode, elm);
7760
+ var hasIncompatibleAttrs = validateAttrs(vnode, elm, renderer);
7761
+ var hasIncompatibleClass = validateClassAttr(vnode, elm, renderer);
7762
+ var hasIncompatibleStyle = validateStyleAttr(vnode, elm, renderer);
7887
7763
  return hasIncompatibleAttrs && hasIncompatibleClass && hasIncompatibleStyle;
7888
7764
  }
7889
7765
 
7890
- function validateAttrs(vnode, elm) {
7766
+ function validateAttrs(vnode, elm, renderer) {
7891
7767
  var _vnode$data$attrs = vnode.data.attrs,
7892
7768
  attrs = _vnode$data$attrs === void 0 ? {} : _vnode$data$attrs;
7893
7769
  var nodesAreCompatible = true; // Validate attributes, though we could always recovery from those by running the update mods.
7894
7770
  // Note: intentionally ONLY matching vnodes.attrs to elm.attrs, in case SSR is adding extra attributes.
7895
7771
 
7896
- for (var _i30 = 0, _Object$entries = Object.entries(attrs); _i30 < _Object$entries.length; _i30++) {
7897
- var _Object$entries$_i = _slicedToArray(_Object$entries[_i30], 2),
7772
+ for (var _i29 = 0, _Object$entries = Object.entries(attrs); _i29 < _Object$entries.length; _i29++) {
7773
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i29], 2),
7898
7774
  attrName = _Object$entries$_i[0],
7899
7775
  attrValue = _Object$entries$_i[1];
7900
7776
 
7901
- var elmAttrValue = getAttribute$1(elm, attrName);
7777
+ var owner = vnode.owner;
7778
+ var _getAttribute = renderer.getAttribute;
7779
+
7780
+ var elmAttrValue = _getAttribute(elm, attrName);
7902
7781
 
7903
7782
  if (String(attrValue) !== elmAttrValue) {
7904
7783
  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);
7784
+ var _getProperty4 = renderer.getProperty;
7785
+ logError("Mismatch hydrating element <".concat(_getProperty4(elm, 'tagName').toLowerCase(), ">: attribute \"").concat(attrName, "\" has different values, expected \"").concat(attrValue, "\" but found \"").concat(elmAttrValue, "\""), owner);
7906
7786
  }
7907
7787
 
7908
7788
  nodesAreCompatible = false;
@@ -7912,20 +7792,22 @@
7912
7792
  return nodesAreCompatible;
7913
7793
  }
7914
7794
 
7915
- function validateClassAttr(vnode, elm) {
7795
+ function validateClassAttr(vnode, elm, renderer) {
7916
7796
  var _vnode$data = vnode.data,
7917
7797
  className = _vnode$data.className,
7918
7798
  classMap = _vnode$data.classMap;
7799
+ var getProperty = renderer.getProperty,
7800
+ getClassList = renderer.getClassList;
7919
7801
  var nodesAreCompatible = true;
7920
7802
  var vnodeClassName;
7921
7803
 
7922
- if (!isUndefined$1(className) && String(className) !== getProperty$1(elm, 'className')) {
7804
+ if (!isUndefined$1(className) && String(className) !== getProperty(elm, 'className')) {
7923
7805
  // className is used when class is bound to an expr.
7924
7806
  nodesAreCompatible = false;
7925
7807
  vnodeClassName = className;
7926
7808
  } else if (!isUndefined$1(classMap)) {
7927
7809
  // classMap is used when class is set to static value.
7928
- var classList = getClassList$1(elm);
7810
+ var classList = getClassList(elm);
7929
7811
  var computedClassName = ''; // all classes from the vnode should be in the element.classList
7930
7812
 
7931
7813
  for (var name in classMap) {
@@ -7945,18 +7827,19 @@
7945
7827
 
7946
7828
  if (!nodesAreCompatible) {
7947
7829
  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);
7830
+ 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
7831
  }
7950
7832
  }
7951
7833
 
7952
7834
  return nodesAreCompatible;
7953
7835
  }
7954
7836
 
7955
- function validateStyleAttr(vnode, elm) {
7837
+ function validateStyleAttr(vnode, elm, renderer) {
7956
7838
  var _vnode$data2 = vnode.data,
7957
7839
  style = _vnode$data2.style,
7958
7840
  styleDecls = _vnode$data2.styleDecls;
7959
- var elmStyle = getAttribute$1(elm, 'style') || '';
7841
+ var getAttribute = renderer.getAttribute;
7842
+ var elmStyle = getAttribute(elm, 'style') || '';
7960
7843
  var vnodeStyle;
7961
7844
  var nodesAreCompatible = true;
7962
7845
 
@@ -7967,8 +7850,8 @@
7967
7850
  var parsedVnodeStyle = parseStyleText(elmStyle);
7968
7851
  var expectedStyle = []; // styleMap is used when style is set to static value.
7969
7852
 
7970
- for (var _i31 = 0, n = styleDecls.length; _i31 < n; _i31++) {
7971
- var _styleDecls$_i2 = _slicedToArray(styleDecls[_i31], 3),
7853
+ for (var _i30 = 0, n = styleDecls.length; _i30 < n; _i30++) {
7854
+ var _styleDecls$_i2 = _slicedToArray(styleDecls[_i30], 3),
7972
7855
  prop = _styleDecls$_i2[0],
7973
7856
  value = _styleDecls$_i2[1],
7974
7857
  important = _styleDecls$_i2[2];
@@ -7994,7 +7877,8 @@
7994
7877
 
7995
7878
  if (!nodesAreCompatible) {
7996
7879
  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);
7880
+ var _getProperty5 = renderer.getProperty;
7881
+ logError("Mismatch hydrating element <".concat(_getProperty5(elm, 'tagName').toLowerCase(), ">: attribute \"style\" has different values, expected \"").concat(vnodeStyle, "\" but found \"").concat(elmStyle, "\"."), vnode.owner);
7998
7882
  }
7999
7883
  }
8000
7884
 
@@ -8069,7 +7953,7 @@
8069
7953
  _step3;
8070
7954
 
8071
7955
  try {
8072
- var _loop3 = function _loop3() {
7956
+ var _loop2 = function _loop2() {
8073
7957
  var prop = _step3.value;
8074
7958
  var originalArrayMethod = getOriginalArrayMethod(prop);
8075
7959
 
@@ -8081,7 +7965,7 @@
8081
7965
  };
8082
7966
 
8083
7967
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
8084
- _loop3();
7968
+ _loop2();
8085
7969
  }
8086
7970
  } catch (err) {
8087
7971
  _iterator3.e(err);
@@ -8102,7 +7986,7 @@
8102
7986
  _step4;
8103
7987
 
8104
7988
  try {
8105
- var _loop4 = function _loop4() {
7989
+ var _loop3 = function _loop3() {
8106
7990
  var prop = _step4.value;
8107
7991
  var value = tmpl[prop];
8108
7992
  defineProperty(tmpl, prop, {
@@ -8122,7 +8006,7 @@
8122
8006
  };
8123
8007
 
8124
8008
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
8125
- _loop4();
8009
+ _loop3();
8126
8010
  }
8127
8011
  } catch (err) {
8128
8012
  _iterator4.e(err);
@@ -8172,7 +8056,7 @@
8172
8056
 
8173
8057
  return ctor;
8174
8058
  }
8175
- /* version: 2.14.1 */
8059
+ /* version: 2.14.2 */
8176
8060
 
8177
8061
  /*
8178
8062
  * Copyright (c) 2018, salesforce.com, inc.
@@ -8351,7 +8235,7 @@
8351
8235
  try {
8352
8236
  // dereference HTMLElement global because babel wraps globals in compat mode with a
8353
8237
  // _wrapNativeSuper()
8354
- // This is a problem because LWCUpgradableElement extends renderer.HTMLElement which does not
8238
+ // This is a problem because LWCUpgradableElement extends renderer.HTMLElementExported which does not
8355
8239
  // get wrapped by babel.
8356
8240
  var HTMLElementAlias = HTMLElement; // In case we use compat mode with a modern browser, the compat mode transformation
8357
8241
  // invokes the DOM api with an .apply() or .call() to initialize any DOM api sub-classing,
@@ -8427,6 +8311,11 @@
8427
8311
  }
8428
8312
 
8429
8313
  var ssr = false;
8314
+
8315
+ function isHydrating() {
8316
+ return hydrating;
8317
+ }
8318
+
8430
8319
  var isNativeShadowDefined = _globalThis[KEY__IS_NATIVE_SHADOW_ROOT_DEFINED];
8431
8320
  var isSyntheticShadowDefined = hasOwnProperty$1.call(Element.prototype, KEY__SHADOW_TOKEN);
8432
8321
 
@@ -8572,75 +8461,47 @@
8572
8461
  }
8573
8462
 
8574
8463
  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
- }
8464
+ var renderer = {
8465
+ ssr: ssr,
8466
+ isNativeShadowDefined: isNativeShadowDefined,
8467
+ isSyntheticShadowDefined: isSyntheticShadowDefined,
8468
+ HTMLElementExported: HTMLElementExported,
8469
+ isHydrating: isHydrating,
8470
+ insert: insert,
8471
+ remove: remove,
8472
+ createElement: createElement$1,
8473
+ createText: createText,
8474
+ createComment: createComment,
8475
+ nextSibling: nextSibling,
8476
+ attachShadow: attachShadow,
8477
+ getProperty: getProperty,
8478
+ setProperty: setProperty,
8479
+ setText: setText,
8480
+ getAttribute: getAttribute,
8481
+ setAttribute: setAttribute,
8482
+ removeAttribute: removeAttribute,
8483
+ addEventListener: addEventListener,
8484
+ removeEventListener: removeEventListener,
8485
+ dispatchEvent: dispatchEvent,
8486
+ getClassList: getClassList,
8487
+ setCSSStyleProperty: setCSSStyleProperty,
8488
+ getBoundingClientRect: getBoundingClientRect,
8489
+ querySelector: querySelector,
8490
+ querySelectorAll: querySelectorAll,
8491
+ getElementsByTagName: getElementsByTagName,
8492
+ getElementsByClassName: getElementsByClassName,
8493
+ getChildren: getChildren,
8494
+ getChildNodes: getChildNodes,
8495
+ getFirstChild: getFirstChild,
8496
+ getFirstElementChild: getFirstElementChild,
8497
+ getLastChild: getLastChild,
8498
+ getLastElementChild: getLastElementChild,
8499
+ isConnected: isConnected,
8500
+ insertStylesheet: insertStylesheet,
8501
+ assertInstanceOfHTMLElement: assertInstanceOfHTMLElement,
8502
+ defineCustomElement: defineCustomElement,
8503
+ getCustomElement: getCustomElement
8504
+ };
8644
8505
  /*
8645
8506
  * Copyright (c) 2018, salesforce.com, inc.
8646
8507
  * All rights reserved.
@@ -8648,7 +8509,6 @@
8648
8509
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
8649
8510
  */
8650
8511
 
8651
-
8652
8512
  function resetShadowRootAndLightDom(element, Ctor) {
8653
8513
  if (element.shadowRoot) {
8654
8514
  var shadowRoot = element.shadowRoot;
@@ -8666,15 +8526,15 @@
8666
8526
  }
8667
8527
 
8668
8528
  function createVMWithProps(element, Ctor, props) {
8669
- var vm = createVM(element, Ctor, {
8529
+ var vm = createVM(element, Ctor, renderer, {
8670
8530
  mode: 'open',
8671
8531
  owner: null,
8672
8532
  tagName: element.tagName.toLowerCase(),
8673
8533
  hydrated: true
8674
8534
  });
8675
8535
 
8676
- for (var _i32 = 0, _Object$entries2 = Object.entries(props); _i32 < _Object$entries2.length; _i32++) {
8677
- var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i32], 2),
8536
+ for (var _i31 = 0, _Object$entries2 = Object.entries(props); _i31 < _Object$entries2.length; _i31++) {
8537
+ var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i31], 2),
8678
8538
  key = _Object$entries2$_i[0],
8679
8539
  value = _Object$entries2$_i[1];
8680
8540
 
@@ -8786,7 +8646,7 @@
8786
8646
  hydrateComponent(_assertThisInitialized(_this6), Ctor, {});
8787
8647
  hydratedCustomElements.add(_assertThisInitialized(_this6));
8788
8648
  } else {
8789
- createVM(_assertThisInitialized(_this6), Ctor, {
8649
+ createVM(_assertThisInitialized(_this6), Ctor, renderer, {
8790
8650
  mode: 'open',
8791
8651
  owner: null,
8792
8652
  tagName: _this6.tagName
@@ -8898,7 +8758,7 @@
8898
8758
  throw new TypeError("\"createElement\" function expects an \"is\" option with a valid component constructor.");
8899
8759
  }
8900
8760
 
8901
- var UpgradableConstructor = getUpgradableConstructor(sel);
8761
+ var UpgradableConstructor = getUpgradableConstructor(sel, renderer);
8902
8762
  var wasComponentUpgraded = false; // the custom element from the registry is expecting an upgrade callback
8903
8763
 
8904
8764
  /**
@@ -8909,7 +8769,7 @@
8909
8769
  */
8910
8770
 
8911
8771
  var element = new UpgradableConstructor(function (elm) {
8912
- createVM(elm, Ctor, {
8772
+ createVM(elm, Ctor, renderer, {
8913
8773
  tagName: sel,
8914
8774
  mode: options.mode !== 'closed' ? 'open' : 'closed',
8915
8775
  owner: null
@@ -9006,7 +8866,7 @@
9006
8866
  });
9007
8867
  freeze(LightningElement);
9008
8868
  seal(LightningElement.prototype);
9009
- /* version: 2.14.1 */
8869
+ /* version: 2.14.2 */
9010
8870
 
9011
8871
  exports.LightningElement = LightningElement;
9012
8872
  exports.__unstable__ProfilerControl = profilerControl;
@@ -9025,6 +8885,7 @@
9025
8885
  exports.registerComponent = registerComponent;
9026
8886
  exports.registerDecorators = registerDecorators;
9027
8887
  exports.registerTemplate = registerTemplate;
8888
+ exports.renderer = renderer;
9028
8889
  exports.sanitizeAttribute = sanitizeAttribute;
9029
8890
  exports.setFeatureFlag = setFeatureFlag;
9030
8891
  exports.setFeatureFlagForTest = setFeatureFlagForTest;