lwc 2.14.0 → 2.15.0

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