lwc 2.14.1 → 2.16.0

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