lwc 2.14.0 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/engine-dom/esm/es2017/engine-dom.js +637 -554
  2. package/dist/engine-dom/iife/es2017/engine-dom.js +639 -553
  3. package/dist/engine-dom/iife/es2017/engine-dom.min.js +1 -1
  4. package/dist/engine-dom/iife/es2017/engine-dom_debug.js +574 -497
  5. package/dist/engine-dom/iife/es5/engine-dom.js +807 -694
  6. package/dist/engine-dom/iife/es5/engine-dom.min.js +1 -1
  7. package/dist/engine-dom/iife/es5/engine-dom_debug.js +729 -634
  8. package/dist/engine-dom/umd/es2017/engine-dom.js +639 -553
  9. package/dist/engine-dom/umd/es2017/engine-dom.min.js +1 -1
  10. package/dist/engine-dom/umd/es2017/engine-dom_debug.js +574 -497
  11. package/dist/engine-dom/umd/es5/engine-dom.js +807 -694
  12. package/dist/engine-dom/umd/es5/engine-dom.min.js +1 -1
  13. package/dist/engine-dom/umd/es5/engine-dom_debug.js +729 -634
  14. package/dist/engine-server/commonjs/es2017/engine-server.js +494 -473
  15. package/dist/engine-server/commonjs/es2017/engine-server.min.js +1 -1
  16. package/dist/engine-server/esm/es2017/engine-server.js +492 -474
  17. package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js +24 -4
  18. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js +24 -4
  19. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.min.js +2 -2
  20. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js +24 -4
  21. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js +29 -3
  22. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.min.js +2 -2
  23. package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js +29 -3
  24. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js +24 -4
  25. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.min.js +2 -2
  26. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js +24 -4
  27. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js +29 -3
  28. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.min.js +2 -2
  29. package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js +29 -3
  30. package/dist/wire-service/esm/es2017/wire-service.js +2 -2
  31. package/dist/wire-service/iife/es2017/wire-service.js +2 -2
  32. package/dist/wire-service/iife/es2017/wire-service_debug.js +2 -2
  33. package/dist/wire-service/iife/es5/wire-service.js +2 -2
  34. package/dist/wire-service/iife/es5/wire-service_debug.js +2 -2
  35. package/dist/wire-service/umd/es2017/wire-service.js +2 -2
  36. package/dist/wire-service/umd/es2017/wire-service_debug.js +2 -2
  37. package/dist/wire-service/umd/es5/wire-service.js +2 -2
  38. package/dist/wire-service/umd/es5/wire-service_debug.js +2 -2
  39. package/package.json +7 -7
@@ -292,6 +292,7 @@ var LWC = (function (exports) {
292
292
 
293
293
  var KEY__IS_NATIVE_SHADOW_ROOT_DEFINED = '$isNativeShadowRootDefined$';
294
294
  var KEY__SHADOW_RESOLVER = '$shadowResolver$';
295
+ var KEY__SHADOW_STATIC = '$shadowStaticNode$';
295
296
  var KEY__SHADOW_TOKEN = '$shadowToken$';
296
297
  var KEY__SYNTHETIC_MODE = '$$lwc-synthetic-mode';
297
298
  var KEY__SCOPED_CSS = '$scoped$';
@@ -347,7 +348,7 @@ var LWC = (function (exports) {
347
348
  var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace';
348
349
  var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
349
350
  var XLINK_NAMESPACE = 'http://www.w3.org/1999/xlink';
350
- /** version: 2.14.0 */
351
+ /** version: 2.15.0 */
351
352
 
352
353
  /*
353
354
  * Copyright (c) 2018, salesforce.com, inc.
@@ -608,231 +609,6 @@ var LWC = (function (exports) {
608
609
 
609
610
  return result;
610
611
  }
611
- // Primitives
612
- //
613
-
614
-
615
- var ssr$1;
616
-
617
- function setSsr(ssrImpl) {
618
- ssr$1 = ssrImpl;
619
- }
620
-
621
- var isNativeShadowDefined$1;
622
-
623
- function setIsNativeShadowDefined(isNativeShadowDefinedImpl) {
624
- isNativeShadowDefined$1 = isNativeShadowDefinedImpl;
625
- }
626
-
627
- var isSyntheticShadowDefined$1;
628
-
629
- function setIsSyntheticShadowDefined(isSyntheticShadowDefinedImpl) {
630
- isSyntheticShadowDefined$1 = isSyntheticShadowDefinedImpl;
631
- }
632
-
633
- var HTMLElementExported$1;
634
-
635
- function setHTMLElement(HTMLElementImpl) {
636
- HTMLElementExported$1 = HTMLElementImpl;
637
- }
638
-
639
- var insert$1;
640
-
641
- function setInsert(insertImpl) {
642
- insert$1 = insertImpl;
643
- }
644
-
645
- var remove$1;
646
-
647
- function setRemove(removeImpl) {
648
- remove$1 = removeImpl;
649
- }
650
-
651
- var createElement$2;
652
-
653
- function setCreateElement(createElementImpl) {
654
- createElement$2 = createElementImpl;
655
- }
656
-
657
- var createText$1;
658
-
659
- function setCreateText(createTextImpl) {
660
- createText$1 = createTextImpl;
661
- }
662
-
663
- var createComment$1;
664
-
665
- function setCreateComment(createCommentImpl) {
666
- createComment$1 = createCommentImpl;
667
- }
668
-
669
- var nextSibling$1;
670
-
671
- function setNextSibling(nextSiblingImpl) {
672
- nextSibling$1 = nextSiblingImpl;
673
- }
674
-
675
- var attachShadow$1;
676
-
677
- function setAttachShadow(attachShadowImpl) {
678
- attachShadow$1 = attachShadowImpl;
679
- }
680
-
681
- var getProperty$1;
682
-
683
- function setGetProperty(getPropertyImpl) {
684
- getProperty$1 = getPropertyImpl;
685
- }
686
-
687
- var setProperty$1;
688
-
689
- function setSetProperty(setPropertyImpl) {
690
- setProperty$1 = setPropertyImpl;
691
- }
692
-
693
- var setText$1;
694
-
695
- function setSetText(setTextImpl) {
696
- setText$1 = setTextImpl;
697
- }
698
-
699
- var getAttribute$1;
700
-
701
- function setGetAttribute(getAttributeImpl) {
702
- getAttribute$1 = getAttributeImpl;
703
- }
704
-
705
- var setAttribute$1;
706
-
707
- function setSetAttribute(setAttributeImpl) {
708
- setAttribute$1 = setAttributeImpl;
709
- }
710
-
711
- var removeAttribute$1;
712
-
713
- function setRemoveAttribute(removeAttributeImpl) {
714
- removeAttribute$1 = removeAttributeImpl;
715
- }
716
-
717
- var addEventListener$1;
718
-
719
- function setAddEventListener(addEventListenerImpl) {
720
- addEventListener$1 = addEventListenerImpl;
721
- }
722
-
723
- var removeEventListener$1;
724
-
725
- function setRemoveEventListener(removeEventListenerImpl) {
726
- removeEventListener$1 = removeEventListenerImpl;
727
- }
728
-
729
- var dispatchEvent$1;
730
-
731
- function setDispatchEvent(dispatchEventImpl) {
732
- dispatchEvent$1 = dispatchEventImpl;
733
- }
734
-
735
- var getClassList$1;
736
-
737
- function setGetClassList(getClassListImpl) {
738
- getClassList$1 = getClassListImpl;
739
- }
740
-
741
- var setCSSStyleProperty$1;
742
-
743
- function setSetCSSStyleProperty(setCSSStylePropertyImpl) {
744
- setCSSStyleProperty$1 = setCSSStylePropertyImpl;
745
- }
746
-
747
- var getBoundingClientRect$1;
748
-
749
- function setGetBoundingClientRect(getBoundingClientRectImpl) {
750
- getBoundingClientRect$1 = getBoundingClientRectImpl;
751
- }
752
-
753
- var querySelector$1;
754
-
755
- function setQuerySelector(querySelectorImpl) {
756
- querySelector$1 = querySelectorImpl;
757
- }
758
-
759
- var querySelectorAll$1;
760
-
761
- function setQuerySelectorAll(querySelectorAllImpl) {
762
- querySelectorAll$1 = querySelectorAllImpl;
763
- }
764
-
765
- var getElementsByTagName$1;
766
-
767
- function setGetElementsByTagName(getElementsByTagNameImpl) {
768
- getElementsByTagName$1 = getElementsByTagNameImpl;
769
- }
770
-
771
- var getElementsByClassName$1;
772
-
773
- function setGetElementsByClassName(getElementsByClassNameImpl) {
774
- getElementsByClassName$1 = getElementsByClassNameImpl;
775
- }
776
-
777
- var getChildren$1;
778
-
779
- function setGetChildren(getChildrenImpl) {
780
- getChildren$1 = getChildrenImpl;
781
- }
782
-
783
- var getChildNodes$1;
784
-
785
- function setGetChildNodes(getChildNodesImpl) {
786
- getChildNodes$1 = getChildNodesImpl;
787
- }
788
-
789
- var getFirstChild$1;
790
-
791
- function setGetFirstChild(getFirstChildImpl) {
792
- getFirstChild$1 = getFirstChildImpl;
793
- }
794
-
795
- var getFirstElementChild$1;
796
-
797
- function setGetFirstElementChild(getFirstElementChildImpl) {
798
- getFirstElementChild$1 = getFirstElementChildImpl;
799
- }
800
-
801
- var getLastChild$1;
802
-
803
- function setGetLastChild(getLastChildImpl) {
804
- getLastChild$1 = getLastChildImpl;
805
- }
806
-
807
- var getLastElementChild$1;
808
-
809
- function setGetLastElementChild(getLastElementChildImpl) {
810
- getLastElementChild$1 = getLastElementChildImpl;
811
- }
812
-
813
- var isConnected$1;
814
-
815
- function setIsConnected(isConnectedImpl) {
816
- isConnected$1 = isConnectedImpl;
817
- }
818
-
819
- var insertStylesheet$1;
820
-
821
- function setInsertStylesheet(insertStylesheetImpl) {
822
- insertStylesheet$1 = insertStylesheetImpl;
823
- }
824
-
825
- var defineCustomElement$1;
826
-
827
- function setDefineCustomElement(defineCustomElementImpl) {
828
- defineCustomElement$1 = defineCustomElementImpl;
829
- }
830
-
831
- var getCustomElement$1;
832
-
833
- function setGetCustomElement(getCustomElementImpl) {
834
- getCustomElement$1 = getCustomElementImpl;
835
- }
836
612
  /*
837
613
  * Copyright (c) 2019, salesforce.com, inc.
838
614
  * All rights reserved.
@@ -2010,13 +1786,14 @@ var LWC = (function (exports) {
2010
1786
  };
2011
1787
 
2012
1788
  function doAttachShadow(vm) {
2013
- var _attachShadow$;
1789
+ var _attachShadow;
2014
1790
 
2015
1791
  var elm = vm.elm,
2016
1792
  mode = vm.mode,
2017
1793
  shadowMode = vm.shadowMode,
2018
- ctor = vm.def.ctor;
2019
- var shadowRoot = attachShadow$1(elm, (_attachShadow$ = {}, _defineProperty(_attachShadow$, KEY__SYNTHETIC_MODE, shadowMode === 1), _defineProperty(_attachShadow$, "delegatesFocus", Boolean(ctor.delegatesFocus)), _defineProperty(_attachShadow$, "mode", mode), _attachShadow$));
1794
+ ctor = vm.def.ctor,
1795
+ attachShadow = vm.renderer.attachShadow;
1796
+ var shadowRoot = attachShadow(elm, (_attachShadow = {}, _defineProperty(_attachShadow, KEY__SYNTHETIC_MODE, shadowMode === 1), _defineProperty(_attachShadow, "delegatesFocus", Boolean(ctor.delegatesFocus)), _defineProperty(_attachShadow, "mode", mode), _attachShadow));
2020
1797
  vm.shadowRoot = shadowRoot;
2021
1798
  associateVM(shadowRoot, vm);
2022
1799
 
@@ -2027,99 +1804,106 @@ var LWC = (function (exports) {
2027
1804
  LightningElement.prototype = {
2028
1805
  constructor: LightningElement,
2029
1806
  dispatchEvent: function dispatchEvent(event) {
2030
- var _getAssociatedVM = getAssociatedVM(this),
2031
- elm = _getAssociatedVM.elm;
2032
-
2033
- return dispatchEvent$1(elm, event);
1807
+ var vm = getAssociatedVM(this);
1808
+ var elm = vm.elm,
1809
+ dispatchEvent = vm.renderer.dispatchEvent;
1810
+ return dispatchEvent(elm, event);
2034
1811
  },
2035
1812
  addEventListener: function addEventListener(type, listener, options) {
2036
1813
  var vm = getAssociatedVM(this);
2037
- var elm = vm.elm;
1814
+ var elm = vm.elm,
1815
+ addEventListener = vm.renderer.addEventListener;
2038
1816
 
2039
1817
  var wrappedListener = getWrappedComponentsListener(vm, listener);
2040
- addEventListener$1(elm, type, wrappedListener, options);
1818
+ addEventListener(elm, type, wrappedListener, options);
2041
1819
  },
2042
1820
  removeEventListener: function removeEventListener(type, listener, options) {
2043
1821
  var vm = getAssociatedVM(this);
2044
- var elm = vm.elm;
1822
+ var elm = vm.elm,
1823
+ removeEventListener = vm.renderer.removeEventListener;
2045
1824
  var wrappedListener = getWrappedComponentsListener(vm, listener);
2046
- removeEventListener$1(elm, type, wrappedListener, options);
1825
+ removeEventListener(elm, type, wrappedListener, options);
2047
1826
  },
2048
1827
  hasAttribute: function hasAttribute(name) {
2049
- var _getAssociatedVM2 = getAssociatedVM(this),
2050
- elm = _getAssociatedVM2.elm;
2051
-
2052
- return !isNull(getAttribute$1(elm, name));
1828
+ var vm = getAssociatedVM(this);
1829
+ var elm = vm.elm,
1830
+ getAttribute = vm.renderer.getAttribute;
1831
+ return !isNull(getAttribute(elm, name));
2053
1832
  },
2054
1833
  hasAttributeNS: function hasAttributeNS(namespace, name) {
2055
- var _getAssociatedVM3 = getAssociatedVM(this),
2056
- elm = _getAssociatedVM3.elm;
2057
-
2058
- return !isNull(getAttribute$1(elm, name, namespace));
1834
+ var vm = getAssociatedVM(this);
1835
+ var elm = vm.elm,
1836
+ getAttribute = vm.renderer.getAttribute;
1837
+ return !isNull(getAttribute(elm, name, namespace));
2059
1838
  },
2060
1839
  removeAttribute: function removeAttribute(name) {
2061
- var _getAssociatedVM4 = getAssociatedVM(this),
2062
- elm = _getAssociatedVM4.elm;
2063
-
1840
+ var vm = getAssociatedVM(this);
1841
+ var elm = vm.elm,
1842
+ removeAttribute = vm.renderer.removeAttribute;
2064
1843
  unlockAttribute(elm, name);
2065
- removeAttribute$1(elm, name);
1844
+ removeAttribute(elm, name);
2066
1845
  lockAttribute();
2067
1846
  },
2068
1847
  removeAttributeNS: function removeAttributeNS(namespace, name) {
2069
- var _getAssociatedVM5 = getAssociatedVM(this),
2070
- elm = _getAssociatedVM5.elm;
1848
+ var _getAssociatedVM = getAssociatedVM(this),
1849
+ elm = _getAssociatedVM.elm,
1850
+ removeAttribute = _getAssociatedVM.renderer.removeAttribute;
2071
1851
 
2072
1852
  unlockAttribute(elm, name);
2073
- removeAttribute$1(elm, name, namespace);
1853
+ removeAttribute(elm, name, namespace);
2074
1854
  lockAttribute();
2075
1855
  },
2076
1856
  getAttribute: function getAttribute(name) {
2077
- var _getAssociatedVM6 = getAssociatedVM(this),
2078
- elm = _getAssociatedVM6.elm;
2079
-
2080
- return getAttribute$1(elm, name);
1857
+ var vm = getAssociatedVM(this);
1858
+ var elm = vm.elm;
1859
+ var getAttribute = vm.renderer.getAttribute;
1860
+ return getAttribute(elm, name);
2081
1861
  },
2082
1862
  getAttributeNS: function getAttributeNS(namespace, name) {
2083
- var _getAssociatedVM7 = getAssociatedVM(this),
2084
- elm = _getAssociatedVM7.elm;
2085
-
2086
- return getAttribute$1(elm, name, namespace);
1863
+ var vm = getAssociatedVM(this);
1864
+ var elm = vm.elm;
1865
+ var getAttribute = vm.renderer.getAttribute;
1866
+ return getAttribute(elm, name, namespace);
2087
1867
  },
2088
1868
  setAttribute: function setAttribute(name, value) {
2089
1869
  var vm = getAssociatedVM(this);
2090
- var elm = vm.elm;
1870
+ var elm = vm.elm,
1871
+ setAttribute = vm.renderer.setAttribute;
2091
1872
 
2092
1873
  unlockAttribute(elm, name);
2093
- setAttribute$1(elm, name, value);
1874
+ setAttribute(elm, name, value);
2094
1875
  lockAttribute();
2095
1876
  },
2096
1877
  setAttributeNS: function setAttributeNS(namespace, name, value) {
2097
1878
  var vm = getAssociatedVM(this);
2098
- var elm = vm.elm;
1879
+ var elm = vm.elm,
1880
+ setAttribute = vm.renderer.setAttribute;
2099
1881
 
2100
1882
  unlockAttribute(elm, name);
2101
- setAttribute$1(elm, name, value, namespace);
1883
+ setAttribute(elm, name, value, namespace);
2102
1884
  lockAttribute();
2103
1885
  },
2104
1886
  getBoundingClientRect: function getBoundingClientRect() {
2105
1887
  var vm = getAssociatedVM(this);
2106
- var elm = vm.elm;
1888
+ var elm = vm.elm,
1889
+ getBoundingClientRect = vm.renderer.getBoundingClientRect;
2107
1890
 
2108
- return getBoundingClientRect$1(elm);
1891
+ return getBoundingClientRect(elm);
2109
1892
  },
2110
1893
 
2111
1894
  get isConnected() {
2112
- var _getAssociatedVM8 = getAssociatedVM(this),
2113
- elm = _getAssociatedVM8.elm;
2114
-
2115
- return isConnected$1(elm);
1895
+ var vm = getAssociatedVM(this);
1896
+ var elm = vm.elm,
1897
+ isConnected = vm.renderer.isConnected;
1898
+ return isConnected(elm);
2116
1899
  },
2117
1900
 
2118
1901
  get classList() {
2119
1902
  var vm = getAssociatedVM(this);
2120
- var elm = vm.elm;
1903
+ var elm = vm.elm,
1904
+ getClassList = vm.renderer.getClassList;
2121
1905
 
2122
- return getClassList$1(elm);
1906
+ return getClassList(elm);
2123
1907
  },
2124
1908
 
2125
1909
  get template() {
@@ -2134,89 +1918,69 @@ var LWC = (function (exports) {
2134
1918
  return null;
2135
1919
  },
2136
1920
 
2137
- render: function render() {
2138
- var vm = getAssociatedVM(this);
2139
- return vm.def.template;
2140
- },
2141
- toString: function toString() {
1921
+ get children() {
2142
1922
  var vm = getAssociatedVM(this);
2143
- return "[object ".concat(vm.def.name, "]");
2144
- }
2145
- };
2146
- var queryAndChildGetterDescriptors = create(null); // The reason we don't just call `import * as renderer from '../renderer'` here is that the bundle size
2147
- // is smaller if we reference each function individually. Otherwise Rollup will create one big frozen
2148
- // object representing the renderer, with a lot of methods we don't actually need.
1923
+ var renderer = vm.renderer;
2149
1924
 
2150
- var childGetters = ['children', 'childNodes', 'firstChild', 'firstElementChild', 'lastChild', 'lastElementChild'];
2151
-
2152
- function getChildGetter(methodName) {
2153
- switch (methodName) {
2154
- case 'children':
2155
- return getChildren$1;
2156
-
2157
- case 'childNodes':
2158
- return getChildNodes$1;
2159
-
2160
- case 'firstChild':
2161
- return getFirstChild$1;
2162
-
2163
- case 'firstElementChild':
2164
- return getFirstElementChild$1;
1925
+ return renderer.getChildren(vm.elm);
1926
+ },
2165
1927
 
2166
- case 'lastChild':
2167
- return getLastChild$1;
1928
+ get childNodes() {
1929
+ var vm = getAssociatedVM(this);
1930
+ var renderer = vm.renderer;
2168
1931
 
2169
- case 'lastElementChild':
2170
- return getLastElementChild$1;
2171
- }
2172
- } // Generic passthrough for child getters on HTMLElement to the relevant Renderer APIs
1932
+ return renderer.getChildNodes(vm.elm);
1933
+ },
2173
1934
 
1935
+ get firstChild() {
1936
+ var vm = getAssociatedVM(this);
1937
+ var renderer = vm.renderer;
2174
1938
 
2175
- var _loop = function _loop() {
2176
- var childGetter = _childGetters[_i7];
2177
- queryAndChildGetterDescriptors[childGetter] = {
2178
- get: function get() {
2179
- var vm = getAssociatedVM(this);
2180
- var elm = vm.elm;
1939
+ return renderer.getFirstChild(vm.elm);
1940
+ },
2181
1941
 
2182
- return getChildGetter(childGetter)(elm);
2183
- },
2184
- configurable: true,
2185
- enumerable: true
2186
- };
2187
- };
1942
+ get firstElementChild() {
1943
+ var vm = getAssociatedVM(this);
1944
+ var renderer = vm.renderer;
2188
1945
 
2189
- for (var _i7 = 0, _childGetters = childGetters; _i7 < _childGetters.length; _i7++) {
2190
- _loop();
2191
- }
1946
+ return renderer.getFirstElementChild(vm.elm);
1947
+ },
2192
1948
 
2193
- var queryMethods = ['getElementsByClassName', 'getElementsByTagName', 'querySelector', 'querySelectorAll'];
1949
+ get lastChild() {
1950
+ var vm = getAssociatedVM(this);
1951
+ var renderer = vm.renderer;
2194
1952
 
2195
- function getQueryMethod(methodName) {
2196
- switch (methodName) {
2197
- case 'getElementsByClassName':
2198
- return getElementsByClassName$1;
1953
+ return renderer.getLastChild(vm.elm);
1954
+ },
2199
1955
 
2200
- case 'getElementsByTagName':
2201
- return getElementsByTagName$1;
1956
+ get lastElementChild() {
1957
+ var vm = getAssociatedVM(this);
1958
+ var renderer = vm.renderer;
2202
1959
 
2203
- case 'querySelector':
2204
- return querySelector$1;
1960
+ return renderer.getLastElementChild(vm.elm);
1961
+ },
2205
1962
 
2206
- case 'querySelectorAll':
2207
- return querySelectorAll$1;
1963
+ render: function render() {
1964
+ var vm = getAssociatedVM(this);
1965
+ return vm.def.template;
1966
+ },
1967
+ toString: function toString() {
1968
+ var vm = getAssociatedVM(this);
1969
+ return "[object ".concat(vm.def.name, "]");
2208
1970
  }
2209
- } // Generic passthrough for query APIs on HTMLElement to the relevant Renderer APIs
2210
-
1971
+ };
1972
+ var queryAndChildGetterDescriptors = create(null);
1973
+ var queryMethods = ['getElementsByClassName', 'getElementsByTagName', 'querySelector', 'querySelectorAll']; // Generic passthrough for query APIs on HTMLElement to the relevant Renderer APIs
2211
1974
 
2212
- var _loop2 = function _loop2() {
2213
- var queryMethod = _queryMethods[_i8];
1975
+ var _loop = function _loop() {
1976
+ var queryMethod = _queryMethods[_i7];
2214
1977
  queryAndChildGetterDescriptors[queryMethod] = {
2215
1978
  value: function value(arg) {
2216
1979
  var vm = getAssociatedVM(this);
2217
- var elm = vm.elm;
1980
+ var elm = vm.elm,
1981
+ renderer = vm.renderer;
2218
1982
 
2219
- return getQueryMethod(queryMethod)(elm, arg);
1983
+ return renderer[queryMethod](elm, arg);
2220
1984
  },
2221
1985
  configurable: true,
2222
1986
  enumerable: true,
@@ -2224,8 +1988,8 @@ var LWC = (function (exports) {
2224
1988
  };
2225
1989
  };
2226
1990
 
2227
- for (var _i8 = 0, _queryMethods = queryMethods; _i8 < _queryMethods.length; _i8++) {
2228
- _loop2();
1991
+ for (var _i7 = 0, _queryMethods = queryMethods; _i7 < _queryMethods.length; _i7++) {
1992
+ _loop();
2229
1993
  }
2230
1994
 
2231
1995
  defineProperties(LightningElement.prototype, queryAndChildGetterDescriptors);
@@ -2585,8 +2349,8 @@ var LWC = (function (exports) {
2585
2349
  }
2586
2350
 
2587
2351
  if (!isUndefined$1(fields)) {
2588
- for (var _i9 = 0, n = fields.length; _i9 < n; _i9++) {
2589
- var _fieldName2 = fields[_i9];
2352
+ for (var _i8 = 0, n = fields.length; _i8 < n; _i8++) {
2353
+ var _fieldName2 = fields[_i8];
2590
2354
  descriptor = getOwnPropertyDescriptor$1(proto, _fieldName2);
2591
2355
  // tracked property. This is only here for backward compatibility purposes.
2592
2356
 
@@ -2840,8 +2604,8 @@ var LWC = (function (exports) {
2840
2604
  superObservedAttributes = _SuperClass$observedA === void 0 ? [] : _SuperClass$observedA;
2841
2605
  var descriptors = create(null); // expose getters and setters for each public props on the new Element Bridge
2842
2606
 
2843
- for (var _i10 = 0, len = props.length; _i10 < len; _i10 += 1) {
2844
- var _propName = props[_i10];
2607
+ for (var _i9 = 0, len = props.length; _i9 < len; _i9 += 1) {
2608
+ var _propName = props[_i9];
2845
2609
  attributeToPropMap[htmlPropertyToAttribute(_propName)] = _propName;
2846
2610
  descriptors[_propName] = {
2847
2611
  get: createGetter(_propName),
@@ -2852,8 +2616,8 @@ var LWC = (function (exports) {
2852
2616
  } // expose public methods as props on the new Element Bridge
2853
2617
 
2854
2618
 
2855
- for (var _i11 = 0, _len3 = methods.length; _i11 < _len3; _i11 += 1) {
2856
- var methodName = methods[_i11];
2619
+ for (var _i10 = 0, _len3 = methods.length; _i10 < _len3; _i10 += 1) {
2620
+ var methodName = methods[_i10];
2857
2621
  descriptors[methodName] = {
2858
2622
  value: createMethodCaller(methodName),
2859
2623
  writable: true,
@@ -3156,12 +2920,15 @@ var LWC = (function (exports) {
3156
2920
  */
3157
2921
 
3158
2922
 
3159
- function getUpgradableConstructor(tagName) {
3160
- // Should never get a tag with upper case letter at this point, the compiler should
2923
+ function getUpgradableConstructor(tagName, renderer) {
2924
+ var getCustomElement = renderer.getCustomElement,
2925
+ RendererHTMLElement = renderer.HTMLElementExported,
2926
+ defineCustomElement = renderer.defineCustomElement; // Should never get a tag with upper case letter at this point, the compiler should
3161
2927
  // produce only tags with lowercase letters
3162
2928
  // But, for backwards compatibility, we will lower case the tagName
2929
+
3163
2930
  tagName = tagName.toLowerCase();
3164
- var CE = getCustomElement$1(tagName);
2931
+ var CE = getCustomElement(tagName);
3165
2932
 
3166
2933
  if (!isUndefined$1(CE)) {
3167
2934
  return CE;
@@ -3172,8 +2939,8 @@ var LWC = (function (exports) {
3172
2939
  */
3173
2940
 
3174
2941
 
3175
- CE = /*#__PURE__*/function (_HTMLElementExported$) {
3176
- _inherits(LWCUpgradableElement, _HTMLElementExported$);
2942
+ CE = /*#__PURE__*/function (_RendererHTMLElement) {
2943
+ _inherits(LWCUpgradableElement, _RendererHTMLElement);
3177
2944
 
3178
2945
  var _super5 = _createSuper(LWCUpgradableElement);
3179
2946
 
@@ -3192,9 +2959,9 @@ var LWC = (function (exports) {
3192
2959
  }
3193
2960
 
3194
2961
  return _createClass(LWCUpgradableElement);
3195
- }(HTMLElementExported$1);
2962
+ }(RendererHTMLElement);
3196
2963
 
3197
- defineCustomElement$1(tagName, CE);
2964
+ defineCustomElement(tagName, CE);
3198
2965
  return CE;
3199
2966
  }
3200
2967
  /*
@@ -3227,7 +2994,7 @@ var LWC = (function (exports) {
3227
2994
 
3228
2995
  var ColonCharCode = 58;
3229
2996
 
3230
- function patchAttributes(oldVnode, vnode) {
2997
+ function patchAttributes(oldVnode, vnode, renderer) {
3231
2998
  var attrs = vnode.data.attrs;
3232
2999
 
3233
3000
  if (isUndefined$1(attrs)) {
@@ -3241,6 +3008,8 @@ var LWC = (function (exports) {
3241
3008
  }
3242
3009
 
3243
3010
  var elm = vnode.elm;
3011
+ var setAttribute = renderer.setAttribute,
3012
+ removeAttribute = renderer.removeAttribute;
3244
3013
 
3245
3014
  for (var key in attrs) {
3246
3015
  var cur = attrs[key];
@@ -3251,14 +3020,14 @@ var LWC = (function (exports) {
3251
3020
 
3252
3021
  if (StringCharCodeAt.call(key, 3) === ColonCharCode) {
3253
3022
  // Assume xml namespace
3254
- setAttribute$1(elm, key, cur, XML_NAMESPACE);
3023
+ setAttribute(elm, key, cur, XML_NAMESPACE);
3255
3024
  } else if (StringCharCodeAt.call(key, 5) === ColonCharCode) {
3256
3025
  // Assume xlink namespace
3257
- setAttribute$1(elm, key, cur, XLINK_NAMESPACE);
3026
+ setAttribute(elm, key, cur, XLINK_NAMESPACE);
3258
3027
  } else if (isNull(cur) || isUndefined$1(cur)) {
3259
- removeAttribute$1(elm, key);
3028
+ removeAttribute(elm, key);
3260
3029
  } else {
3261
- setAttribute$1(elm, key, cur);
3030
+ setAttribute(elm, key, cur);
3262
3031
  }
3263
3032
 
3264
3033
  lockAttribute();
@@ -3279,7 +3048,7 @@ var LWC = (function (exports) {
3279
3048
  return sel === 'input' && (key === 'value' || key === 'checked');
3280
3049
  }
3281
3050
 
3282
- function patchProps(oldVnode, vnode) {
3051
+ function patchProps(oldVnode, vnode, renderer) {
3283
3052
  var props = vnode.data.props;
3284
3053
 
3285
3054
  if (isUndefined$1(props)) {
@@ -3295,13 +3064,15 @@ var LWC = (function (exports) {
3295
3064
  var isFirstPatch = isNull(oldVnode);
3296
3065
  var elm = vnode.elm,
3297
3066
  sel = vnode.sel;
3067
+ var getProperty = renderer.getProperty,
3068
+ setProperty = renderer.setProperty;
3298
3069
 
3299
3070
  for (var key in props) {
3300
3071
  var cur = props[key]; // Set the property if it's the first time is is patched or if the previous property is
3301
3072
  // different than the one previously set.
3302
3073
 
3303
- if (isFirstPatch || cur !== (isLiveBindingProp(sel, key) ? getProperty$1(elm, key) : oldProps[key])) {
3304
- setProperty$1(elm, key, cur);
3074
+ if (isFirstPatch || cur !== (isLiveBindingProp(sel, key) ? getProperty(elm, key) : oldProps[key])) {
3075
+ setProperty(elm, key, cur);
3305
3076
  }
3306
3077
  }
3307
3078
  }
@@ -3353,7 +3124,7 @@ var LWC = (function (exports) {
3353
3124
  return map;
3354
3125
  }
3355
3126
 
3356
- function patchClassAttribute(oldVnode, vnode) {
3127
+ function patchClassAttribute(oldVnode, vnode, renderer) {
3357
3128
  var elm = vnode.elm,
3358
3129
  newClass = vnode.data.className;
3359
3130
  var oldClass = isNull(oldVnode) ? undefined : oldVnode.data.className;
@@ -3362,7 +3133,8 @@ var LWC = (function (exports) {
3362
3133
  return;
3363
3134
  }
3364
3135
 
3365
- var classList = getClassList$1(elm);
3136
+ var getClassList = renderer.getClassList;
3137
+ var classList = getClassList(elm);
3366
3138
  var newClassMap = getMapFromClassName(newClass);
3367
3139
  var oldClassMap = getMapFromClassName(oldClass);
3368
3140
  var name;
@@ -3389,7 +3161,7 @@ var LWC = (function (exports) {
3389
3161
  // The style property is a string when defined via an expression in the template.
3390
3162
 
3391
3163
 
3392
- function patchStyleAttribute(oldVnode, vnode) {
3164
+ function patchStyleAttribute(oldVnode, vnode, renderer) {
3393
3165
  var elm = vnode.elm,
3394
3166
  newStyle = vnode.data.style;
3395
3167
  var oldStyle = isNull(oldVnode) ? undefined : oldVnode.data.style;
@@ -3398,10 +3170,13 @@ var LWC = (function (exports) {
3398
3170
  return;
3399
3171
  }
3400
3172
 
3173
+ var setAttribute = renderer.setAttribute,
3174
+ removeAttribute = renderer.removeAttribute;
3175
+
3401
3176
  if (!isString(newStyle) || newStyle === '') {
3402
- removeAttribute$1(elm, 'style');
3177
+ removeAttribute(elm, 'style');
3403
3178
  } else {
3404
- setAttribute$1(elm, 'style', newStyle);
3179
+ setAttribute(elm, 'style', newStyle);
3405
3180
  }
3406
3181
  }
3407
3182
  /*
@@ -3412,7 +3187,7 @@ var LWC = (function (exports) {
3412
3187
  */
3413
3188
 
3414
3189
 
3415
- function applyEventListeners(vnode) {
3190
+ function applyEventListeners(vnode, renderer) {
3416
3191
  var elm = vnode.elm,
3417
3192
  on = vnode.data.on;
3418
3193
 
@@ -3420,9 +3195,11 @@ var LWC = (function (exports) {
3420
3195
  return;
3421
3196
  }
3422
3197
 
3198
+ var addEventListener = renderer.addEventListener;
3199
+
3423
3200
  for (var name in on) {
3424
3201
  var handler = on[name];
3425
- addEventListener$1(elm, name, handler);
3202
+ addEventListener(elm, name, handler);
3426
3203
  }
3427
3204
  }
3428
3205
  /*
@@ -3436,7 +3213,7 @@ var LWC = (function (exports) {
3436
3213
  // different classnames properties individually instead of via a string.
3437
3214
 
3438
3215
 
3439
- function applyStaticClassAttribute(vnode) {
3216
+ function applyStaticClassAttribute(vnode, renderer) {
3440
3217
  var elm = vnode.elm,
3441
3218
  classMap = vnode.data.classMap;
3442
3219
 
@@ -3444,7 +3221,8 @@ var LWC = (function (exports) {
3444
3221
  return;
3445
3222
  }
3446
3223
 
3447
- var classList = getClassList$1(elm);
3224
+ var getClassList = renderer.getClassList;
3225
+ var classList = getClassList(elm);
3448
3226
 
3449
3227
  for (var name in classMap) {
3450
3228
  classList.add(name);
@@ -3461,7 +3239,7 @@ var LWC = (function (exports) {
3461
3239
  // different style properties individually instead of via a string.
3462
3240
 
3463
3241
 
3464
- function applyStaticStyleAttribute(vnode) {
3242
+ function applyStaticStyleAttribute(vnode, renderer) {
3465
3243
  var elm = vnode.elm,
3466
3244
  styleDecls = vnode.data.styleDecls;
3467
3245
 
@@ -3469,13 +3247,15 @@ var LWC = (function (exports) {
3469
3247
  return;
3470
3248
  }
3471
3249
 
3472
- for (var _i12 = 0; _i12 < styleDecls.length; _i12++) {
3473
- var _styleDecls$_i = _slicedToArray(styleDecls[_i12], 3),
3250
+ var setCSSStyleProperty = renderer.setCSSStyleProperty;
3251
+
3252
+ for (var _i11 = 0; _i11 < styleDecls.length; _i11++) {
3253
+ var _styleDecls$_i = _slicedToArray(styleDecls[_i11], 3),
3474
3254
  prop = _styleDecls$_i[0],
3475
3255
  value = _styleDecls$_i[1],
3476
3256
  important = _styleDecls$_i[2];
3477
3257
 
3478
- setCSSStyleProperty$1(elm, prop, value, important);
3258
+ setCSSStyleProperty(elm, prop, value, important);
3479
3259
  }
3480
3260
  }
3481
3261
  /*
@@ -3486,15 +3266,17 @@ var LWC = (function (exports) {
3486
3266
  */
3487
3267
 
3488
3268
 
3489
- function patchChildren(c1, c2, parent) {
3269
+ function patchChildren(c1, c2, parent, renderer) {
3490
3270
  if (hasDynamicChildren(c2)) {
3491
- updateDynamicChildren(c1, c2, parent);
3271
+ updateDynamicChildren(c1, c2, parent, renderer);
3492
3272
  } else {
3493
- updateStaticChildren(c1, c2, parent);
3273
+ updateStaticChildren(c1, c2, parent, renderer);
3494
3274
  }
3495
3275
  }
3496
3276
 
3497
- function patch(n1, n2) {
3277
+ function patch(n1, n2, renderer) {
3278
+ var _a, _b;
3279
+
3498
3280
  if (n1 === n2) {
3499
3281
  return;
3500
3282
  }
@@ -3503,112 +3285,159 @@ var LWC = (function (exports) {
3503
3285
  case 0
3504
3286
  /* Text */
3505
3287
  :
3506
- patchText(n1, n2);
3288
+ // VText has no special capability, fallback to the owner's renderer
3289
+ patchText(n1, n2, renderer);
3507
3290
  break;
3508
3291
 
3509
3292
  case 1
3510
3293
  /* Comment */
3511
3294
  :
3512
- patchComment(n1, n2);
3295
+ // VComment has no special capability, fallback to the owner's renderer
3296
+ patchComment(n1, n2, renderer);
3297
+ break;
3298
+
3299
+ case 4
3300
+ /* Static */
3301
+ :
3302
+ n2.elm = n1.elm;
3513
3303
  break;
3514
3304
 
3515
3305
  case 2
3516
3306
  /* Element */
3517
3307
  :
3518
- patchElement(n1, n2);
3308
+ patchElement(n1, n2, (_a = n2.data.renderer) !== null && _a !== void 0 ? _a : renderer);
3519
3309
  break;
3520
3310
 
3521
3311
  case 3
3522
3312
  /* CustomElement */
3523
3313
  :
3524
- patchCustomElement(n1, n2);
3314
+ patchCustomElement(n1, n2, (_b = n2.data.renderer) !== null && _b !== void 0 ? _b : renderer);
3525
3315
  break;
3526
3316
  }
3527
3317
  }
3528
3318
 
3529
- function mount(node, parent, anchor) {
3319
+ function mount(node, parent, renderer, anchor) {
3320
+ var _a, _b;
3321
+
3530
3322
  switch (node.type) {
3531
3323
  case 0
3532
3324
  /* Text */
3533
3325
  :
3534
- mountText(node, parent, anchor);
3326
+ // VText has no special capability, fallback to the owner's renderer
3327
+ mountText(node, parent, anchor, renderer);
3535
3328
  break;
3536
3329
 
3537
3330
  case 1
3538
3331
  /* Comment */
3539
3332
  :
3540
- mountComment(node, parent, anchor);
3333
+ // VComment has no special capability, fallback to the owner's renderer
3334
+ mountComment(node, parent, anchor, renderer);
3335
+ break;
3336
+
3337
+ case 4
3338
+ /* Static */
3339
+ :
3340
+ // VStatic cannot have a custom renderer associated to them, using owner's renderer
3341
+ mountStatic(node, parent, anchor, renderer);
3541
3342
  break;
3542
3343
 
3543
3344
  case 2
3544
3345
  /* Element */
3545
3346
  :
3546
- mountElement(node, parent, anchor);
3347
+ // If the vnode data has a renderer override use it, else fallback to owner's renderer
3348
+ mountElement(node, parent, anchor, (_a = node.data.renderer) !== null && _a !== void 0 ? _a : renderer);
3547
3349
  break;
3548
3350
 
3549
3351
  case 3
3550
3352
  /* CustomElement */
3551
3353
  :
3552
- mountCustomElement(node, parent, anchor);
3354
+ // If the vnode data has a renderer override use it, else fallback to owner's renderer
3355
+ mountCustomElement(node, parent, anchor, (_b = node.data.renderer) !== null && _b !== void 0 ? _b : renderer);
3553
3356
  break;
3554
3357
  }
3555
3358
  }
3556
3359
 
3557
- function patchText(n1, n2) {
3360
+ function patchText(n1, n2, renderer) {
3558
3361
  n2.elm = n1.elm;
3559
3362
 
3560
3363
  if (n2.text !== n1.text) {
3561
- updateTextContent(n2);
3364
+ updateTextContent(n2, renderer);
3562
3365
  }
3563
3366
  }
3564
3367
 
3565
- function mountText(node, parent, anchor) {
3566
- var owner = node.owner;
3567
- var textNode = node.elm = createText$1(node.text);
3568
- linkNodeToShadow(textNode, owner);
3569
- insertNode(textNode, parent, anchor);
3368
+ function mountText(vnode, parent, anchor, renderer) {
3369
+ var owner = vnode.owner;
3370
+ var createText = renderer.createText;
3371
+ var textNode = vnode.elm = createText(vnode.text);
3372
+ linkNodeToShadow(textNode, owner, renderer);
3373
+ insertNode(textNode, parent, anchor, renderer);
3570
3374
  }
3571
3375
 
3572
- function patchComment(n1, n2) {
3376
+ function patchComment(n1, n2, renderer) {
3573
3377
  n2.elm = n1.elm; // FIXME: Comment nodes should be static, we shouldn't need to diff them together. However
3574
3378
  // it is the case today.
3575
3379
 
3576
3380
  if (n2.text !== n1.text) {
3577
- updateTextContent(n2);
3381
+ updateTextContent(n2, renderer);
3578
3382
  }
3579
3383
  }
3580
3384
 
3581
- function mountComment(node, parent, anchor) {
3582
- var owner = node.owner;
3583
- var commentNode = node.elm = createComment$1(node.text);
3584
- linkNodeToShadow(commentNode, owner);
3585
- insertNode(commentNode, parent, anchor);
3385
+ function mountComment(vnode, parent, anchor, renderer) {
3386
+ var owner = vnode.owner;
3387
+ var createComment = renderer.createComment;
3388
+ var commentNode = vnode.elm = createComment(vnode.text);
3389
+ linkNodeToShadow(commentNode, owner, renderer);
3390
+ insertNode(commentNode, parent, anchor, renderer);
3586
3391
  }
3587
3392
 
3588
- function mountElement(vnode, parent, anchor) {
3393
+ function mountElement(vnode, parent, anchor, renderer) {
3589
3394
  var sel = vnode.sel,
3590
3395
  owner = vnode.owner,
3591
3396
  svg = vnode.data.svg;
3397
+ var createElement = renderer.createElement;
3592
3398
  var namespace = isTrue(svg) ? SVG_NAMESPACE : undefined;
3593
- var elm = createElement$2(sel, namespace);
3594
- linkNodeToShadow(elm, owner);
3595
- fallbackElmHook(elm, vnode);
3399
+ var elm = createElement(sel, namespace);
3400
+ linkNodeToShadow(elm, owner, renderer);
3401
+ fallbackElmHook(elm, vnode, renderer);
3596
3402
  vnode.elm = elm;
3597
- patchElementPropsAndAttrs$1(null, vnode);
3598
- insertNode(elm, parent, anchor);
3599
- mountVNodes(vnode.children, elm, null);
3403
+ patchElementPropsAndAttrs$1(null, vnode, renderer);
3404
+ insertNode(elm, parent, anchor, renderer);
3405
+ mountVNodes(vnode.children, elm, renderer, null);
3600
3406
  }
3601
3407
 
3602
- function patchElement(n1, n2) {
3408
+ function patchElement(n1, n2, renderer) {
3603
3409
  var elm = n2.elm = n1.elm;
3604
- patchElementPropsAndAttrs$1(n1, n2);
3605
- patchChildren(n1.children, n2.children, elm);
3410
+ patchElementPropsAndAttrs$1(n1, n2, renderer);
3411
+ patchChildren(n1.children, n2.children, elm, renderer);
3606
3412
  }
3607
3413
 
3608
- function mountCustomElement(vnode, parent, anchor) {
3414
+ function mountStatic(vnode, parent, anchor, renderer) {
3415
+ var owner = vnode.owner;
3416
+ var cloneNode = renderer.cloneNode,
3417
+ isSyntheticShadowDefined = renderer.isSyntheticShadowDefined;
3418
+ var elm = vnode.elm = cloneNode(vnode.fragment, true);
3419
+ linkNodeToShadow(elm, owner, renderer); // Marks this node as Static to propagate the shadow resolver. must happen after elm is assigned to the proper shadow
3420
+
3421
+ var renderMode = owner.renderMode,
3422
+ shadowMode = owner.shadowMode;
3423
+
3424
+ if (isSyntheticShadowDefined) {
3425
+ if (shadowMode === 1
3426
+ /* Synthetic */
3427
+ || renderMode === 0
3428
+ /* Light */
3429
+ ) {
3430
+ elm[KEY__SHADOW_STATIC] = true;
3431
+ }
3432
+ }
3433
+
3434
+ insertNode(elm, parent, anchor, renderer);
3435
+ }
3436
+
3437
+ function mountCustomElement(vnode, parent, anchor, renderer) {
3609
3438
  var sel = vnode.sel,
3610
3439
  owner = vnode.owner;
3611
- var UpgradableConstructor = getUpgradableConstructor(sel);
3440
+ var UpgradableConstructor = getUpgradableConstructor(sel, renderer);
3612
3441
  /**
3613
3442
  * Note: if the upgradable constructor does not expect, or throw when we new it
3614
3443
  * with a callback as the first argument, we could implement a more advanced
@@ -3619,9 +3448,9 @@ var LWC = (function (exports) {
3619
3448
  var vm;
3620
3449
  var elm = new UpgradableConstructor(function (elm) {
3621
3450
  // the custom element from the registry is expecting an upgrade callback
3622
- vm = createViewModelHook(elm, vnode);
3451
+ vm = createViewModelHook(elm, vnode, renderer);
3623
3452
  });
3624
- linkNodeToShadow(elm, owner);
3453
+ linkNodeToShadow(elm, owner, renderer);
3625
3454
  vnode.elm = elm;
3626
3455
  vnode.vm = vm;
3627
3456
 
@@ -3631,25 +3460,25 @@ var LWC = (function (exports) {
3631
3460
  throw new TypeError("Incorrect Component Constructor");
3632
3461
  }
3633
3462
 
3634
- patchElementPropsAndAttrs$1(null, vnode);
3635
- insertNode(elm, parent, anchor);
3463
+ patchElementPropsAndAttrs$1(null, vnode, renderer);
3464
+ insertNode(elm, parent, anchor, renderer);
3636
3465
 
3637
3466
  if (vm) {
3638
3467
 
3639
3468
  runConnectedCallback(vm);
3640
3469
  }
3641
3470
 
3642
- mountVNodes(vnode.children, elm, null);
3471
+ mountVNodes(vnode.children, elm, renderer, null);
3643
3472
 
3644
3473
  if (vm) {
3645
3474
  appendVM(vm);
3646
3475
  }
3647
3476
  }
3648
3477
 
3649
- function patchCustomElement(n1, n2) {
3478
+ function patchCustomElement(n1, n2, renderer) {
3650
3479
  var elm = n2.elm = n1.elm;
3651
3480
  var vm = n2.vm = n1.vm;
3652
- patchElementPropsAndAttrs$1(n1, n2);
3481
+ patchElementPropsAndAttrs$1(n1, n2, renderer);
3653
3482
 
3654
3483
  if (!isUndefined$1(vm)) {
3655
3484
  // in fallback mode, the allocation will always set children to
@@ -3659,7 +3488,7 @@ var LWC = (function (exports) {
3659
3488
  // will happen, but in native, it does allocate the light dom
3660
3489
 
3661
3490
 
3662
- patchChildren(n1.children, n2.children, elm);
3491
+ patchChildren(n1.children, n2.children, elm, renderer);
3663
3492
 
3664
3493
  if (!isUndefined$1(vm)) {
3665
3494
  // this will probably update the shadowRoot, but only if the vm is in a dirty state
@@ -3668,38 +3497,45 @@ var LWC = (function (exports) {
3668
3497
  }
3669
3498
  }
3670
3499
 
3671
- function mountVNodes(vnodes, parent, anchor) {
3672
- var start = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
3673
- var end = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : vnodes.length;
3500
+ function mountVNodes(vnodes, parent, renderer, anchor) {
3501
+ var start = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
3502
+ var end = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : vnodes.length;
3674
3503
 
3675
3504
  for (; start < end; ++start) {
3676
3505
  var vnode = vnodes[start];
3677
3506
 
3678
3507
  if (isVNode(vnode)) {
3679
- mount(vnode, parent, anchor);
3508
+ mount(vnode, parent, renderer, anchor);
3680
3509
  }
3681
3510
  }
3682
3511
  }
3683
3512
 
3684
- function unmount(vnode, parent) {
3685
- var doRemove = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
3513
+ function unmount(vnode, parent, renderer) {
3514
+ var doRemove = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
3686
3515
  var type = vnode.type,
3687
3516
  elm = vnode.elm,
3688
3517
  sel = vnode.sel; // When unmounting a VNode subtree not all the elements have to removed from the DOM. The
3689
3518
  // subtree root, is the only element worth unmounting from the subtree.
3690
3519
 
3691
3520
  if (doRemove) {
3692
- removeNode(elm, parent);
3521
+ // The vnode might or might not have a data.renderer associated to it
3522
+ // but the removal used here is from the owner instead.
3523
+ removeNode(elm, parent, renderer);
3693
3524
  }
3694
3525
 
3695
- var removeChildren = sel === 'slot'; // slot content is removed to trigger slotchange event when removing slot
3696
-
3697
3526
  switch (type) {
3698
3527
  case 2
3699
3528
  /* Element */
3700
3529
  :
3701
- unmountVNodes(vnode.children, elm, removeChildren);
3702
- break;
3530
+ {
3531
+ // Slot content is removed to trigger slotchange event when removing slot.
3532
+ // Only required for synthetic shadow.
3533
+ var shouldRemoveChildren = sel === 'slot' && vnode.owner.shadowMode === 1
3534
+ /* Synthetic */
3535
+ ;
3536
+ unmountVNodes(vnode.children, elm, renderer, shouldRemoveChildren);
3537
+ break;
3538
+ }
3703
3539
 
3704
3540
  case 3
3705
3541
  /* CustomElement */
@@ -3715,16 +3551,16 @@ var LWC = (function (exports) {
3715
3551
  }
3716
3552
  }
3717
3553
 
3718
- function unmountVNodes(vnodes, parent) {
3719
- var doRemove = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
3720
- var start = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
3721
- var end = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : vnodes.length;
3554
+ function unmountVNodes(vnodes, parent, renderer) {
3555
+ var doRemove = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
3556
+ var start = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
3557
+ var end = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : vnodes.length;
3722
3558
 
3723
3559
  for (; start < end; ++start) {
3724
3560
  var ch = vnodes[start];
3725
3561
 
3726
3562
  if (isVNode(ch)) {
3727
- unmount(ch, parent, doRemove);
3563
+ unmount(ch, parent, renderer, doRemove);
3728
3564
  }
3729
3565
  }
3730
3566
  }
@@ -3742,22 +3578,26 @@ var LWC = (function (exports) {
3742
3578
  } // Set the scope token class for *.scoped.css styles
3743
3579
 
3744
3580
 
3745
- function setScopeTokenClassIfNecessary(elm, owner) {
3581
+ function setScopeTokenClassIfNecessary(elm, owner, renderer) {
3746
3582
  var cmpTemplate = owner.cmpTemplate,
3747
3583
  context = owner.context;
3584
+ var getClassList = renderer.getClassList;
3748
3585
  var token = cmpTemplate === null || cmpTemplate === void 0 ? void 0 : cmpTemplate.stylesheetToken;
3749
3586
 
3750
3587
  if (!isUndefined$1(token) && context.hasScopedStyles) {
3751
- getClassList$1(elm).add(token);
3588
+ // TODO [#2762]: this dot notation with add is probably problematic
3589
+ // probably we should have a renderer api for just the add operation
3590
+ getClassList(elm).add(token);
3752
3591
  }
3753
3592
  }
3754
3593
 
3755
- function linkNodeToShadow(elm, owner) {
3594
+ function linkNodeToShadow(elm, owner, renderer) {
3756
3595
  var renderRoot = owner.renderRoot,
3757
3596
  renderMode = owner.renderMode,
3758
- shadowMode = owner.shadowMode; // TODO [#1164]: this should eventually be done by the polyfill directly
3597
+ shadowMode = owner.shadowMode;
3598
+ var isSyntheticShadowDefined = renderer.isSyntheticShadowDefined; // TODO [#1164]: this should eventually be done by the polyfill directly
3759
3599
 
3760
- if (isSyntheticShadowDefined$1) {
3600
+ if (isSyntheticShadowDefined) {
3761
3601
  if (shadowMode === 1
3762
3602
  /* Synthetic */
3763
3603
  || renderMode === 0
@@ -3768,41 +3608,42 @@ var LWC = (function (exports) {
3768
3608
  }
3769
3609
  }
3770
3610
 
3771
- function updateTextContent(vnode) {
3611
+ function updateTextContent(vnode, renderer) {
3772
3612
  var elm = vnode.elm,
3773
3613
  text = vnode.text;
3614
+ var setText = renderer.setText;
3774
3615
 
3775
- setText$1(elm, text);
3616
+ setText(elm, text);
3776
3617
  }
3777
3618
 
3778
- function insertNode(node, parent, anchor) {
3619
+ function insertNode(node, parent, anchor, renderer) {
3779
3620
 
3780
- insert$1(node, parent, anchor);
3621
+ renderer.insert(node, parent, anchor);
3781
3622
  }
3782
3623
 
3783
- function removeNode(node, parent) {
3624
+ function removeNode(node, parent, renderer) {
3784
3625
 
3785
- remove$1(node, parent);
3626
+ renderer.remove(node, parent);
3786
3627
  }
3787
3628
 
3788
- function patchElementPropsAndAttrs$1(oldVnode, vnode) {
3629
+ function patchElementPropsAndAttrs$1(oldVnode, vnode, renderer) {
3789
3630
  if (isNull(oldVnode)) {
3790
- applyEventListeners(vnode);
3791
- applyStaticClassAttribute(vnode);
3792
- applyStaticStyleAttribute(vnode);
3631
+ applyEventListeners(vnode, renderer);
3632
+ applyStaticClassAttribute(vnode, renderer);
3633
+ applyStaticStyleAttribute(vnode, renderer);
3793
3634
  } // Attrs need to be applied to element before props IE11 will wipe out value on radio inputs if
3794
3635
  // value is set before type=radio.
3795
3636
 
3796
3637
 
3797
- patchClassAttribute(oldVnode, vnode);
3798
- patchStyleAttribute(oldVnode, vnode);
3799
- patchAttributes(oldVnode, vnode);
3800
- patchProps(oldVnode, vnode);
3638
+ patchClassAttribute(oldVnode, vnode, renderer);
3639
+ patchStyleAttribute(oldVnode, vnode, renderer);
3640
+ patchAttributes(oldVnode, vnode, renderer);
3641
+ patchProps(oldVnode, vnode, renderer);
3801
3642
  }
3802
3643
 
3803
- function fallbackElmHook(elm, vnode) {
3644
+ function fallbackElmHook(elm, vnode, renderer) {
3804
3645
  var owner = vnode.owner;
3805
- setScopeTokenClassIfNecessary(elm, owner);
3646
+ setScopeTokenClassIfNecessary(elm, owner, renderer);
3806
3647
 
3807
3648
  if (owner.shadowMode === 1
3808
3649
  /* Synthetic */
@@ -3855,7 +3696,7 @@ var LWC = (function (exports) {
3855
3696
  }
3856
3697
  }
3857
3698
 
3858
- function createViewModelHook(elm, vnode) {
3699
+ function createViewModelHook(elm, vnode, renderer) {
3859
3700
  var vm = getAssociatedVMIfPresent(elm); // There is a possibility that a custom element is registered under tagName, in which case, the
3860
3701
  // initialization is already carry on, and there is nothing else to do here since this hook is
3861
3702
  // called right after invoking `document.createElement`.
@@ -3868,7 +3709,7 @@ var LWC = (function (exports) {
3868
3709
  mode = vnode.mode,
3869
3710
  ctor = vnode.ctor,
3870
3711
  owner = vnode.owner;
3871
- setScopeTokenClassIfNecessary(elm, owner);
3712
+ setScopeTokenClassIfNecessary(elm, owner, renderer);
3872
3713
 
3873
3714
  if (owner.shadowMode === 1
3874
3715
  /* Synthetic */
@@ -3881,7 +3722,7 @@ var LWC = (function (exports) {
3881
3722
  }
3882
3723
  }
3883
3724
 
3884
- vm = createVM(elm, ctor, {
3725
+ vm = createVM(elm, ctor, renderer, {
3885
3726
  mode: mode,
3886
3727
  owner: owner,
3887
3728
  tagName: sel
@@ -3896,8 +3737,8 @@ var LWC = (function (exports) {
3896
3737
  var oldSlots = vm.cmpSlots;
3897
3738
  var cmpSlots = vm.cmpSlots = create(null);
3898
3739
 
3899
- for (var _i13 = 0, len = children.length; _i13 < len; _i13 += 1) {
3900
- var vnode = children[_i13];
3740
+ for (var _i12 = 0, len = children.length; _i12 < len; _i12 += 1) {
3741
+ var vnode = children[_i12];
3901
3742
 
3902
3743
  if (isNull(vnode)) {
3903
3744
  continue;
@@ -3923,8 +3764,8 @@ var LWC = (function (exports) {
3923
3764
  return;
3924
3765
  }
3925
3766
 
3926
- for (var _i14 = 0, _len4 = oldKeys.length; _i14 < _len4; _i14 += 1) {
3927
- var key = oldKeys[_i14];
3767
+ for (var _i13 = 0, _len4 = oldKeys.length; _i13 < _len4; _i13 += 1) {
3768
+ var key = oldKeys[_i13];
3928
3769
 
3929
3770
  if (isUndefined$1(cmpSlots[key]) || oldSlots[key].length !== cmpSlots[key].length) {
3930
3771
  markComponentAsDirty(vm);
@@ -3974,7 +3815,7 @@ var LWC = (function (exports) {
3974
3815
  return map;
3975
3816
  }
3976
3817
 
3977
- function updateDynamicChildren(oldCh, newCh, parent) {
3818
+ function updateDynamicChildren(oldCh, newCh, parent, renderer) {
3978
3819
  var oldStartIdx = 0;
3979
3820
  var newStartIdx = 0;
3980
3821
  var oldEndIdx = oldCh.length - 1;
@@ -4000,23 +3841,23 @@ var LWC = (function (exports) {
4000
3841
  } else if (!isVNode(newEndVnode)) {
4001
3842
  newEndVnode = newCh[--newEndIdx];
4002
3843
  } else if (isSameVnode(oldStartVnode, newStartVnode)) {
4003
- patch(oldStartVnode, newStartVnode);
3844
+ patch(oldStartVnode, newStartVnode, renderer);
4004
3845
  oldStartVnode = oldCh[++oldStartIdx];
4005
3846
  newStartVnode = newCh[++newStartIdx];
4006
3847
  } else if (isSameVnode(oldEndVnode, newEndVnode)) {
4007
- patch(oldEndVnode, newEndVnode);
3848
+ patch(oldEndVnode, newEndVnode, renderer);
4008
3849
  oldEndVnode = oldCh[--oldEndIdx];
4009
3850
  newEndVnode = newCh[--newEndIdx];
4010
3851
  } else if (isSameVnode(oldStartVnode, newEndVnode)) {
4011
3852
  // Vnode moved right
4012
- patch(oldStartVnode, newEndVnode);
4013
- insertNode(oldStartVnode.elm, parent, nextSibling$1(oldEndVnode.elm));
3853
+ patch(oldStartVnode, newEndVnode, renderer);
3854
+ insertNode(oldStartVnode.elm, parent, renderer.nextSibling(oldEndVnode.elm), renderer);
4014
3855
  oldStartVnode = oldCh[++oldStartIdx];
4015
3856
  newEndVnode = newCh[--newEndIdx];
4016
3857
  } else if (isSameVnode(oldEndVnode, newStartVnode)) {
4017
3858
  // Vnode moved left
4018
- patch(oldEndVnode, newStartVnode);
4019
- insertNode(newStartVnode.elm, parent, oldStartVnode.elm);
3859
+ patch(oldEndVnode, newStartVnode, renderer);
3860
+ insertNode(newStartVnode.elm, parent, oldStartVnode.elm, renderer);
4020
3861
  oldEndVnode = oldCh[--oldEndIdx];
4021
3862
  newStartVnode = newCh[++newStartIdx];
4022
3863
  } else {
@@ -4028,7 +3869,7 @@ var LWC = (function (exports) {
4028
3869
 
4029
3870
  if (isUndefined$1(idxInOld)) {
4030
3871
  // New element
4031
- mount(newStartVnode, parent, oldStartVnode.elm);
3872
+ mount(newStartVnode, parent, renderer, oldStartVnode.elm);
4032
3873
  newStartVnode = newCh[++newStartIdx];
4033
3874
  } else {
4034
3875
  elmToMove = oldCh[idxInOld];
@@ -4036,9 +3877,9 @@ var LWC = (function (exports) {
4036
3877
  if (isVNode(elmToMove)) {
4037
3878
  if (elmToMove.sel !== newStartVnode.sel) {
4038
3879
  // New element
4039
- mount(newStartVnode, parent, oldStartVnode.elm);
3880
+ mount(newStartVnode, parent, renderer, oldStartVnode.elm);
4040
3881
  } else {
4041
- patch(elmToMove, newStartVnode); // Delete the old child, but copy the array since it is read-only.
3882
+ patch(elmToMove, newStartVnode, renderer); // Delete the old child, but copy the array since it is read-only.
4042
3883
  // The `oldCh` will be GC'ed after `updateDynamicChildren` is complete,
4043
3884
  // so we only care about the `oldCh` object inside this function.
4044
3885
  // To avoid cloning over and over again, we check `clonedOldCh`
@@ -4051,7 +3892,7 @@ var LWC = (function (exports) {
4051
3892
 
4052
3893
 
4053
3894
  oldCh[idxInOld] = undefined;
4054
- insertNode(elmToMove.elm, parent, oldStartVnode.elm);
3895
+ insertNode(elmToMove.elm, parent, oldStartVnode.elm, renderer);
4055
3896
  }
4056
3897
  }
4057
3898
 
@@ -4064,35 +3905,35 @@ var LWC = (function (exports) {
4064
3905
  if (oldStartIdx > oldEndIdx) {
4065
3906
  // There's some cases in which the sub array of vnodes to be inserted is followed by null(s) and an
4066
3907
  // already processed vnode, in such cases the vnodes to be inserted should be before that processed vnode.
4067
- var _i15 = newEndIdx;
3908
+ var _i14 = newEndIdx;
4068
3909
  var n;
4069
3910
 
4070
3911
  do {
4071
- n = newCh[++_i15];
4072
- } while (!isVNode(n) && _i15 < newChEnd);
3912
+ n = newCh[++_i14];
3913
+ } while (!isVNode(n) && _i14 < newChEnd);
4073
3914
 
4074
3915
  before = isVNode(n) ? n.elm : null;
4075
- mountVNodes(newCh, parent, before, newStartIdx, newEndIdx + 1);
3916
+ mountVNodes(newCh, parent, renderer, before, newStartIdx, newEndIdx + 1);
4076
3917
  } else {
4077
- unmountVNodes(oldCh, parent, true, oldStartIdx, oldEndIdx + 1);
3918
+ unmountVNodes(oldCh, parent, renderer, true, oldStartIdx, oldEndIdx + 1);
4078
3919
  }
4079
3920
  }
4080
3921
  }
4081
3922
 
4082
- function updateStaticChildren(c1, c2, parent) {
3923
+ function updateStaticChildren(c1, c2, parent, renderer) {
4083
3924
  var c1Length = c1.length;
4084
3925
  var c2Length = c2.length;
4085
3926
 
4086
3927
  if (c1Length === 0) {
4087
3928
  // the old list is empty, we can directly insert anything new
4088
- mountVNodes(c2, parent, null);
3929
+ mountVNodes(c2, parent, renderer, null);
4089
3930
  return;
4090
3931
  }
4091
3932
 
4092
3933
  if (c2Length === 0) {
4093
3934
  // the old list is nonempty and the new list is empty so we can directly remove all old nodes
4094
3935
  // this is the case in which the dynamic children of an if-directive should be removed
4095
- unmountVNodes(c1, parent, true);
3936
+ unmountVNodes(c1, parent, renderer, true);
4096
3937
  return;
4097
3938
  } // if the old list is not empty, the new list MUST have the same
4098
3939
  // amount of nodes, that's why we call this static children
@@ -4100,22 +3941,22 @@ var LWC = (function (exports) {
4100
3941
 
4101
3942
  var anchor = null;
4102
3943
 
4103
- for (var _i16 = c2Length - 1; _i16 >= 0; _i16 -= 1) {
4104
- var n1 = c1[_i16];
4105
- var n2 = c2[_i16];
3944
+ for (var _i15 = c2Length - 1; _i15 >= 0; _i15 -= 1) {
3945
+ var n1 = c1[_i15];
3946
+ var n2 = c2[_i15];
4106
3947
 
4107
3948
  if (n2 !== n1) {
4108
3949
  if (isVNode(n1)) {
4109
3950
  if (isVNode(n2)) {
4110
3951
  // both vnodes are equivalent, and we just need to patch them
4111
- patch(n1, n2);
3952
+ patch(n1, n2, renderer);
4112
3953
  anchor = n2.elm;
4113
3954
  } else {
4114
3955
  // removing the old vnode since the new one is null
4115
- unmount(n1, parent, true);
3956
+ unmount(n1, parent, renderer, true);
4116
3957
  }
4117
3958
  } else if (isVNode(n2)) {
4118
- mount(n2, parent, anchor);
3959
+ mount(n2, parent, renderer, anchor);
4119
3960
  anchor = n2.elm;
4120
3961
  }
4121
3962
  }
@@ -4133,6 +3974,20 @@ var LWC = (function (exports) {
4133
3974
 
4134
3975
  function addVNodeToChildLWC(vnode) {
4135
3976
  ArrayPush$1.call(getVMBeingRendered().velements, vnode);
3977
+ } // [st]atic node
3978
+
3979
+
3980
+ function st(fragment, key) {
3981
+ return {
3982
+ type: 4
3983
+ /* Static */
3984
+ ,
3985
+ sel: undefined,
3986
+ key: key,
3987
+ elm: undefined,
3988
+ fragment: fragment,
3989
+ owner: getVMBeingRendered()
3990
+ };
4136
3991
  } // [h]tml node
4137
3992
 
4138
3993
 
@@ -4499,6 +4354,7 @@ var LWC = (function (exports) {
4499
4354
  co: co,
4500
4355
  dc: dc,
4501
4356
  ti: ti,
4357
+ st: st,
4502
4358
  gid: gid,
4503
4359
  fid: fid,
4504
4360
  shc: shc
@@ -4527,7 +4383,11 @@ var LWC = (function (exports) {
4527
4383
  var elm = vm.elm,
4528
4384
  context = vm.context,
4529
4385
  renderMode = vm.renderMode,
4530
- shadowMode = vm.shadowMode;
4386
+ shadowMode = vm.shadowMode,
4387
+ _vm$renderer = vm.renderer,
4388
+ getClassList = _vm$renderer.getClassList,
4389
+ removeAttribute = _vm$renderer.removeAttribute,
4390
+ setAttribute = _vm$renderer.setAttribute;
4531
4391
  var newStylesheets = template.stylesheets,
4532
4392
  newStylesheetToken = template.stylesheetToken;
4533
4393
  var isSyntheticShadow = renderMode === 1
@@ -4546,11 +4406,11 @@ var LWC = (function (exports) {
4546
4406
 
4547
4407
  if (!isUndefined$1(oldToken)) {
4548
4408
  if (oldHasTokenInClass) {
4549
- getClassList$1(elm).remove(makeHostToken(oldToken));
4409
+ getClassList(elm).remove(makeHostToken(oldToken));
4550
4410
  }
4551
4411
 
4552
4412
  if (oldHasTokenInAttribute) {
4553
- removeAttribute$1(elm, makeHostToken(oldToken));
4413
+ removeAttribute(elm, makeHostToken(oldToken));
4554
4414
  }
4555
4415
  } // Apply the new template styling token to the host element, if the new template has any
4556
4416
  // associated stylesheets. In the case of light DOM, also ensure there is at least one scoped stylesheet.
@@ -4563,12 +4423,12 @@ var LWC = (function (exports) {
4563
4423
 
4564
4424
  if (!isUndefined$1(newToken)) {
4565
4425
  if (hasScopedStyles) {
4566
- getClassList$1(elm).add(makeHostToken(newToken));
4426
+ getClassList(elm).add(makeHostToken(newToken));
4567
4427
  newHasTokenInClass = true;
4568
4428
  }
4569
4429
 
4570
4430
  if (isSyntheticShadow) {
4571
- setAttribute$1(elm, makeHostToken(newToken), '');
4431
+ setAttribute(elm, makeHostToken(newToken), '');
4572
4432
  newHasTokenInAttribute = true;
4573
4433
  }
4574
4434
  } // Update the styling tokens present on the context object.
@@ -4583,8 +4443,8 @@ var LWC = (function (exports) {
4583
4443
  var content = [];
4584
4444
  var root;
4585
4445
 
4586
- for (var _i17 = 0; _i17 < stylesheets.length; _i17++) {
4587
- var stylesheet = stylesheets[_i17];
4446
+ for (var _i16 = 0; _i16 < stylesheets.length; _i16++) {
4447
+ var stylesheet = stylesheets[_i16];
4588
4448
 
4589
4449
  if (isArray$1(stylesheet)) {
4590
4450
  ArrayPush$1.apply(content, evaluateStylesheetsContent(stylesheet, stylesheetToken, vm));
@@ -4681,31 +4541,33 @@ var LWC = (function (exports) {
4681
4541
 
4682
4542
  function createStylesheet(vm, stylesheets) {
4683
4543
  var renderMode = vm.renderMode,
4684
- shadowMode = vm.shadowMode;
4544
+ shadowMode = vm.shadowMode,
4545
+ _vm$renderer2 = vm.renderer,
4546
+ ssr = _vm$renderer2.ssr,
4547
+ insertStylesheet = _vm$renderer2.insertStylesheet;
4685
4548
 
4686
4549
  if (renderMode === 1
4687
4550
  /* Shadow */
4688
4551
  && shadowMode === 1
4689
4552
  /* Synthetic */
4690
4553
  ) {
4691
- for (var _i18 = 0; _i18 < stylesheets.length; _i18++) {
4692
- insertStylesheet$1(stylesheets[_i18]);
4554
+ for (var _i17 = 0; _i17 < stylesheets.length; _i17++) {
4555
+ insertStylesheet(stylesheets[_i17]);
4693
4556
  }
4694
- } else if (ssr$1 || vm.hydrated) {
4557
+ } else if (ssr || vm.hydrated) {
4695
4558
  // Note: We need to ensure that during hydration, the stylesheets method is the same as those in ssr.
4696
4559
  // This works in the client, because the stylesheets are created, and cached in the VM
4697
4560
  // the first time the VM renders.
4698
4561
  // native shadow or light DOM, SSR
4699
- var combinedStylesheetContent = ArrayJoin.call(stylesheets, '\n');
4700
- return createInlineStyleVNode(combinedStylesheetContent);
4562
+ return ArrayMap.call(stylesheets, createInlineStyleVNode);
4701
4563
  } else {
4702
4564
  // native shadow or light DOM, DOM renderer
4703
4565
  var root = getNearestNativeShadowComponent(vm); // null root means a global style
4704
4566
 
4705
4567
  var target = isNull(root) ? undefined : root.shadowRoot;
4706
4568
 
4707
- for (var _i19 = 0; _i19 < stylesheets.length; _i19++) {
4708
- insertStylesheet$1(stylesheets[_i19], target);
4569
+ for (var _i18 = 0; _i18 < stylesheets.length; _i18++) {
4570
+ insertStylesheet(stylesheets[_i18], target);
4709
4571
  }
4710
4572
  }
4711
4573
 
@@ -4809,6 +4671,91 @@ var LWC = (function (exports) {
4809
4671
  }
4810
4672
  }
4811
4673
 
4674
+ function buildParseFragmentFn(createFragmentFn) {
4675
+ return function (strings) {
4676
+ for (var _len5 = arguments.length, keys = new Array(_len5 > 1 ? _len5 - 1 : 0), _key3 = 1; _key3 < _len5; _key3++) {
4677
+ keys[_key3 - 1] = arguments[_key3];
4678
+ }
4679
+
4680
+ var cache = create(null);
4681
+ return function () {
4682
+ var _getVMBeingRendered = getVMBeingRendered(),
4683
+ _getVMBeingRendered$c = _getVMBeingRendered.context,
4684
+ hasScopedStyles = _getVMBeingRendered$c.hasScopedStyles,
4685
+ stylesheetToken = _getVMBeingRendered$c.stylesheetToken,
4686
+ shadowMode = _getVMBeingRendered.shadowMode,
4687
+ renderer = _getVMBeingRendered.renderer;
4688
+
4689
+ var hasStyleToken = !isUndefined$1(stylesheetToken);
4690
+ var isSyntheticShadow = shadowMode === 1
4691
+ /* Synthetic */
4692
+ ;
4693
+ var cacheKey = 0;
4694
+
4695
+ if (hasStyleToken && hasScopedStyles) {
4696
+ cacheKey |= 1
4697
+ /* HAS_SCOPED_STYLE */
4698
+ ;
4699
+ }
4700
+
4701
+ if (hasStyleToken && isSyntheticShadow) {
4702
+ cacheKey |= 2
4703
+ /* SHADOW_MODE_SYNTHETIC */
4704
+ ;
4705
+ }
4706
+
4707
+ if (!isUndefined$1(cache[cacheKey])) {
4708
+ return cache[cacheKey];
4709
+ }
4710
+
4711
+ var classToken = hasScopedStyles && hasStyleToken ? ' ' + stylesheetToken : '';
4712
+ var classAttrToken = hasScopedStyles && hasStyleToken ? " class=\"".concat(stylesheetToken, "\"") : '';
4713
+ var attrToken = hasStyleToken && isSyntheticShadow ? ' ' + stylesheetToken : '';
4714
+ var htmlFragment = '';
4715
+
4716
+ for (var _i19 = 0, n = keys.length; _i19 < n; _i19++) {
4717
+ switch (keys[_i19]) {
4718
+ case 0:
4719
+ // styleToken in existing class attr
4720
+ htmlFragment += strings[_i19] + classToken;
4721
+ break;
4722
+
4723
+ case 1:
4724
+ // styleToken for added class attr
4725
+ htmlFragment += strings[_i19] + classAttrToken;
4726
+ break;
4727
+
4728
+ case 2:
4729
+ // styleToken as attr
4730
+ htmlFragment += strings[_i19] + attrToken;
4731
+ break;
4732
+
4733
+ case 3:
4734
+ // ${1}${2}
4735
+ htmlFragment += strings[_i19] + classAttrToken + attrToken;
4736
+ break;
4737
+ }
4738
+ }
4739
+
4740
+ htmlFragment += strings[strings.length - 1];
4741
+ cache[cacheKey] = createFragmentFn(htmlFragment, renderer);
4742
+ return cache[cacheKey];
4743
+ };
4744
+ };
4745
+ } // Note: at the moment this code executes, we don't have a renderer yet.
4746
+
4747
+
4748
+ var parseFragment = buildParseFragmentFn(function (html, renderer) {
4749
+ var createFragment = renderer.createFragment;
4750
+ return createFragment(html);
4751
+ });
4752
+ var parseSVGFragment = buildParseFragmentFn(function (html, renderer) {
4753
+ var createFragment = renderer.createFragment,
4754
+ getFirstChild = renderer.getFirstChild;
4755
+ var fragment = createFragment('<svg>' + html + '</svg>');
4756
+ return getFirstChild(fragment);
4757
+ });
4758
+
4812
4759
  function evaluateTemplate(vm, html) {
4813
4760
 
4814
4761
  var isUpdatingTemplateInception = isUpdatingTemplate;
@@ -4856,7 +4803,7 @@ var LWC = (function (exports) {
4856
4803
  // re-rendering.
4857
4804
 
4858
4805
  var stylesheetsContent = getStylesheetsContent(vm, html);
4859
- context.styleVNode = stylesheetsContent.length === 0 ? null : createStylesheet(vm, stylesheetsContent);
4806
+ context.styleVNodes = stylesheetsContent.length === 0 ? null : createStylesheet(vm, stylesheetsContent);
4860
4807
  }
4861
4808
 
4862
4809
  if ("production" !== 'production') ; // right before producing the vnodes, we clear up all internal references
@@ -4867,10 +4814,10 @@ var LWC = (function (exports) {
4867
4814
 
4868
4815
  isUpdatingTemplate = true;
4869
4816
  vnodes = html.call(undefined, api, component, cmpSlots, context.tplCache);
4870
- var styleVNode = context.styleVNode;
4817
+ var styleVNodes = context.styleVNodes;
4871
4818
 
4872
- if (!isNull(styleVNode)) {
4873
- ArrayUnshift.call(vnodes, styleVNode);
4819
+ if (!isNull(styleVNodes)) {
4820
+ ArrayUnshift.apply(vnodes, styleVNodes);
4874
4821
  }
4875
4822
  });
4876
4823
  }, function () {
@@ -5194,9 +5141,19 @@ var LWC = (function (exports) {
5194
5141
  resetComponentStateWhenRemoved(vm);
5195
5142
  }
5196
5143
 
5197
- function createVM(elm, ctor, options) {
5198
- var _a;
5144
+ function getNearestShadowAncestor(vm) {
5145
+ var ancestor = vm.owner;
5146
+
5147
+ while (!isNull(ancestor) && ancestor.renderMode === 0
5148
+ /* Light */
5149
+ ) {
5150
+ ancestor = ancestor.owner;
5151
+ }
5199
5152
 
5153
+ return ancestor;
5154
+ }
5155
+
5156
+ function createVM(elm, ctor, renderer, options) {
5200
5157
  var mode = options.mode,
5201
5158
  owner = options.owner,
5202
5159
  tagName = options.tagName,
@@ -5224,28 +5181,29 @@ var LWC = (function (exports) {
5224
5181
  cmpTemplate: null,
5225
5182
  hydrated: Boolean(hydrated),
5226
5183
  renderMode: def.renderMode,
5227
- shadowMode: computeShadowMode(def, owner),
5228
- nearestShadowMode: (owner === null || owner === void 0 ? void 0 : owner.shadowRoot) ? owner.shadowMode : (_a = owner === null || owner === void 0 ? void 0 : owner.nearestShadowMode) !== null && _a !== void 0 ? _a : null,
5229
5184
  context: {
5230
5185
  stylesheetToken: undefined,
5231
5186
  hasTokenInClass: undefined,
5232
5187
  hasTokenInAttribute: undefined,
5233
5188
  hasScopedStyles: undefined,
5234
- styleVNode: null,
5189
+ styleVNodes: null,
5235
5190
  tplCache: EmptyObject,
5236
5191
  wiredConnecting: EmptyArray,
5237
5192
  wiredDisconnecting: EmptyArray
5238
5193
  },
5239
5194
  // Properties set right after VM creation.
5240
5195
  tro: null,
5196
+ shadowMode: null,
5241
5197
  // Properties set by the LightningElement constructor.
5242
5198
  component: null,
5243
5199
  shadowRoot: null,
5244
5200
  renderRoot: null,
5245
5201
  callHook: callHook,
5246
5202
  setHook: setHook,
5247
- getHook: getHook
5203
+ getHook: getHook,
5204
+ renderer: renderer
5248
5205
  };
5206
+ vm.shadowMode = computeShadowMode(vm, renderer);
5249
5207
  vm.tro = getTemplateReactiveObserver(vm);
5250
5208
 
5251
5209
 
@@ -5258,12 +5216,13 @@ var LWC = (function (exports) {
5258
5216
  return vm;
5259
5217
  }
5260
5218
 
5261
- function computeShadowMode(def, owner) {
5262
- var _a;
5263
-
5219
+ function computeShadowMode(vm, renderer) {
5220
+ var def = vm.def;
5221
+ var isSyntheticShadowDefined = renderer.isSyntheticShadowDefined,
5222
+ isNativeShadowDefined = renderer.isNativeShadowDefined;
5264
5223
  var shadowMode;
5265
5224
 
5266
- if (isSyntheticShadowDefined$1) {
5225
+ if (isSyntheticShadowDefined) {
5267
5226
  if (def.renderMode === 0
5268
5227
  /* Light */
5269
5228
  ) {
@@ -5272,7 +5231,7 @@ var LWC = (function (exports) {
5272
5231
  shadowMode = 0
5273
5232
  /* Native */
5274
5233
  ;
5275
- } else if (isNativeShadowDefined$1) {
5234
+ } else if (isNativeShadowDefined) {
5276
5235
  // Not combined with above condition because @lwc/features only supports identifiers in
5277
5236
  // the if-condition.
5278
5237
  if (runtimeFlags.ENABLE_MIXED_SHADOW_MODE) {
@@ -5283,13 +5242,23 @@ var LWC = (function (exports) {
5283
5242
  /* Native */
5284
5243
  ;
5285
5244
  } else {
5286
- // Transitive support for native Shadow DOM. A component in native mode
5287
- // transitively opts all of its descendants into native.
5288
- // Synthetic if neither this component nor any of its ancestors are configured
5289
- // to be native.
5290
- shadowMode = (_a = owner === null || owner === void 0 ? void 0 : owner.nearestShadowMode) !== null && _a !== void 0 ? _a : 1
5291
- /* Synthetic */
5292
- ;
5245
+ var shadowAncestor = getNearestShadowAncestor(vm);
5246
+
5247
+ if (!isNull(shadowAncestor) && shadowAncestor.shadowMode === 0
5248
+ /* Native */
5249
+ ) {
5250
+ // Transitive support for native Shadow DOM. A component in native mode
5251
+ // transitively opts all of its descendants into native.
5252
+ shadowMode = 0
5253
+ /* Native */
5254
+ ;
5255
+ } else {
5256
+ // Synthetic if neither this component nor any of its ancestors are configured
5257
+ // to be native.
5258
+ shadowMode = 1
5259
+ /* Synthetic */
5260
+ ;
5261
+ }
5293
5262
  }
5294
5263
  } else {
5295
5264
  shadowMode = 1
@@ -5337,7 +5306,8 @@ var LWC = (function (exports) {
5337
5306
 
5338
5307
  function patchShadowRoot(vm, newCh) {
5339
5308
  var renderRoot = vm.renderRoot,
5340
- oldCh = vm.children; // caching the new children collection
5309
+ oldCh = vm.children,
5310
+ renderer = vm.renderer; // caching the new children collection
5341
5311
 
5342
5312
  vm.children = newCh;
5343
5313
 
@@ -5352,7 +5322,7 @@ var LWC = (function (exports) {
5352
5322
  , vm);
5353
5323
  }, function () {
5354
5324
  // job
5355
- patchChildren(oldCh, newCh, renderRoot);
5325
+ patchChildren(oldCh, newCh, renderRoot, renderer);
5356
5326
  }, function () {
5357
5327
  // post
5358
5328
  logOperationEnd(2
@@ -5374,9 +5344,10 @@ var LWC = (function (exports) {
5374
5344
  }
5375
5345
 
5376
5346
  function runRenderedCallback(vm) {
5377
- var renderedCallback = vm.def.renderedCallback;
5347
+ var renderedCallback = vm.def.renderedCallback,
5348
+ ssr = vm.renderer.ssr;
5378
5349
 
5379
- if (isTrue(ssr$1)) {
5350
+ if (isTrue(ssr)) {
5380
5351
  return;
5381
5352
  }
5382
5353
 
@@ -5585,13 +5556,14 @@ var LWC = (function (exports) {
5585
5556
 
5586
5557
  function resetComponentRoot(vm) {
5587
5558
  var children = vm.children,
5588
- renderRoot = vm.renderRoot;
5559
+ renderRoot = vm.renderRoot,
5560
+ remove = vm.renderer.remove;
5589
5561
 
5590
5562
  for (var _i26 = 0, len = children.length; _i26 < len; _i26++) {
5591
5563
  var child = children[_i26];
5592
5564
 
5593
5565
  if (!isNull(child) && !isUndefined$1(child.elm)) {
5594
- remove$1(child.elm, renderRoot);
5566
+ remove(child.elm, renderRoot);
5595
5567
  }
5596
5568
  }
5597
5569
 
@@ -5601,7 +5573,9 @@ var LWC = (function (exports) {
5601
5573
  }
5602
5574
 
5603
5575
  function scheduleRehydration(vm) {
5604
- if (isTrue(ssr$1) || isTrue(vm.isScheduled)) {
5576
+ var ssr = vm.renderer.ssr;
5577
+
5578
+ if (isTrue(ssr) || isTrue(vm.isScheduled)) {
5605
5579
  return;
5606
5580
  }
5607
5581
 
@@ -5768,7 +5742,8 @@ var LWC = (function (exports) {
5768
5742
  var elm = vm.elm,
5769
5743
  _vm$context = vm.context,
5770
5744
  wiredConnecting = _vm$context.wiredConnecting,
5771
- wiredDisconnecting = _vm$context.wiredDisconnecting; // waiting for the component to be connected to formally request the context via the token
5745
+ wiredDisconnecting = _vm$context.wiredDisconnecting,
5746
+ dispatchEvent = vm.renderer.dispatchEvent; // waiting for the component to be connected to formally request the context via the token
5772
5747
 
5773
5748
  ArrayPush$1.call(wiredConnecting, function () {
5774
5749
  // This event is responsible for connecting the host element with another
@@ -5788,7 +5763,7 @@ var LWC = (function (exports) {
5788
5763
  ArrayPush$1.call(wiredDisconnecting, disconnectCallback);
5789
5764
  }
5790
5765
  });
5791
- dispatchEvent$1(elm, contextRegistrationEvent);
5766
+ dispatchEvent(elm, contextRegistrationEvent);
5792
5767
  });
5793
5768
  }
5794
5769
 
@@ -6042,79 +6017,103 @@ var LWC = (function (exports) {
6042
6017
  function hydrateVM(vm) {
6043
6018
  var children = renderComponent(vm);
6044
6019
  vm.children = children;
6045
- var parentNode = vm.renderRoot;
6046
- hydrateChildren(getFirstChild$1(parentNode), children, parentNode);
6020
+ var parentNode = vm.renderRoot,
6021
+ getFirstChild = vm.renderer.getFirstChild;
6022
+ hydrateChildren(getFirstChild(parentNode), children, parentNode, vm);
6047
6023
  runRenderedCallback(vm);
6048
6024
  }
6049
6025
 
6050
- function hydrateNode(node, vnode) {
6026
+ function hydrateNode(node, vnode, renderer) {
6027
+ var _a, _b;
6028
+
6051
6029
  var hydratedNode;
6052
6030
 
6053
6031
  switch (vnode.type) {
6054
6032
  case 0
6055
6033
  /* Text */
6056
6034
  :
6057
- hydratedNode = hydrateText(node, vnode);
6035
+ // VText has no special capability, fallback to the owner's renderer
6036
+ hydratedNode = hydrateText(node, vnode, renderer);
6058
6037
  break;
6059
6038
 
6060
6039
  case 1
6061
6040
  /* Comment */
6062
6041
  :
6063
- hydratedNode = hydrateComment(node, vnode);
6042
+ // VComment has no special capability, fallback to the owner's renderer
6043
+ hydratedNode = hydrateComment(node, vnode, renderer);
6044
+ break;
6045
+
6046
+ case 4
6047
+ /* Static */
6048
+ :
6049
+ // VStatic are cacheable and cannot have custom renderer associated to them
6050
+ hydratedNode = hydrateStaticElement(node, vnode, renderer);
6064
6051
  break;
6065
6052
 
6066
6053
  case 2
6067
6054
  /* Element */
6068
6055
  :
6069
- hydratedNode = hydrateElement(node, vnode);
6056
+ hydratedNode = hydrateElement(node, vnode, (_a = vnode.data.renderer) !== null && _a !== void 0 ? _a : renderer);
6070
6057
  break;
6071
6058
 
6072
6059
  case 3
6073
6060
  /* CustomElement */
6074
6061
  :
6075
- hydratedNode = hydrateCustomElement(node, vnode);
6062
+ hydratedNode = hydrateCustomElement(node, vnode, (_b = vnode.data.renderer) !== null && _b !== void 0 ? _b : renderer);
6076
6063
  break;
6077
6064
  }
6078
6065
 
6079
- return nextSibling$1(hydratedNode);
6066
+ return renderer.nextSibling(hydratedNode);
6080
6067
  }
6081
6068
 
6082
- function hydrateText(node, vnode) {
6069
+ function hydrateText(node, vnode, renderer) {
6083
6070
  var _a;
6084
6071
 
6085
6072
  if (!hasCorrectNodeType(vnode, node, 3
6086
6073
  /* TEXT */
6087
- )) {
6088
- return handleMismatch(node, vnode);
6074
+ , renderer)) {
6075
+ return handleMismatch(node, vnode, renderer);
6089
6076
  }
6090
6077
 
6091
- setText$1(node, (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
6078
+ var setText = renderer.setText;
6079
+ setText(node, (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
6092
6080
  vnode.elm = node;
6093
6081
  return node;
6094
6082
  }
6095
6083
 
6096
- function hydrateComment(node, vnode) {
6084
+ function hydrateComment(node, vnode, renderer) {
6097
6085
  var _a;
6098
6086
 
6099
6087
  if (!hasCorrectNodeType(vnode, node, 8
6100
6088
  /* COMMENT */
6101
- )) {
6102
- return handleMismatch(node, vnode);
6089
+ , renderer)) {
6090
+ return handleMismatch(node, vnode, renderer);
6103
6091
  }
6104
6092
 
6105
- setProperty$1(node, 'nodeValue', (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
6093
+ var setProperty = renderer.setProperty;
6094
+ setProperty(node, 'nodeValue', (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
6106
6095
  vnode.elm = node;
6107
6096
  return node;
6108
6097
  }
6109
6098
 
6110
- function hydrateElement(elm, vnode) {
6099
+ function hydrateStaticElement(elm, vnode, renderer) {
6100
+ if (!areCompatibleNodes(vnode.fragment, elm, vnode, renderer)) {
6101
+ return handleMismatch(elm, vnode, renderer);
6102
+ }
6103
+
6104
+ vnode.elm = elm;
6105
+ return elm;
6106
+ }
6107
+
6108
+ function hydrateElement(elm, vnode, renderer) {
6111
6109
  if (!hasCorrectNodeType(vnode, elm, 1
6112
6110
  /* ELEMENT */
6113
- ) || !isMatchingElement(vnode, elm)) {
6114
- return handleMismatch(elm, vnode);
6111
+ , renderer) || !isMatchingElement(vnode, elm, renderer)) {
6112
+ return handleMismatch(elm, vnode, renderer);
6115
6113
  }
6116
6114
 
6117
6115
  vnode.elm = elm;
6116
+ var owner = vnode.owner;
6118
6117
  var context = vnode.data.context;
6119
6118
  var isDomManual = Boolean(!isUndefined$1(context) && !isUndefined$1(context.lwc) && context.lwc.dom === "manual"
6120
6119
  /* Manual */
@@ -6124,9 +6123,10 @@ var LWC = (function (exports) {
6124
6123
  // it may be that this element has lwc:inner-html, we need to diff and in case are the same,
6125
6124
  // remove the innerHTML from props so it reuses the existing dom elements.
6126
6125
  var props = vnode.data.props;
6126
+ var _getProperty3 = renderer.getProperty;
6127
6127
 
6128
6128
  if (!isUndefined$1(props) && !isUndefined$1(props.innerHTML)) {
6129
- if (getProperty$1(elm, 'innerHTML') === props.innerHTML) {
6129
+ if (_getProperty3(elm, 'innerHTML') === props.innerHTML) {
6130
6130
  // Do a shallow clone since VNodeData may be shared across VNodes due to hoist optimization
6131
6131
  vnode.data = Object.assign(Object.assign({}, vnode.data), {
6132
6132
  props: cloneAndOmitKey(props, 'innerHTML')
@@ -6135,27 +6135,28 @@ var LWC = (function (exports) {
6135
6135
  }
6136
6136
  }
6137
6137
 
6138
- patchElementPropsAndAttrs(vnode);
6138
+ patchElementPropsAndAttrs(vnode, renderer);
6139
6139
 
6140
6140
  if (!isDomManual) {
6141
- hydrateChildren(getFirstChild$1(elm), vnode.children, elm, vnode.owner);
6141
+ var _getFirstChild = renderer.getFirstChild;
6142
+ hydrateChildren(_getFirstChild(elm), vnode.children, elm, owner);
6142
6143
  }
6143
6144
 
6144
6145
  return elm;
6145
6146
  }
6146
6147
 
6147
- function hydrateCustomElement(elm, vnode) {
6148
+ function hydrateCustomElement(elm, vnode, renderer) {
6148
6149
  if (!hasCorrectNodeType(vnode, elm, 1
6149
6150
  /* ELEMENT */
6150
- ) || !isMatchingElement(vnode, elm)) {
6151
- return handleMismatch(elm, vnode);
6151
+ , renderer) || !isMatchingElement(vnode, elm, renderer)) {
6152
+ return handleMismatch(elm, vnode, renderer);
6152
6153
  }
6153
6154
 
6154
6155
  var sel = vnode.sel,
6155
6156
  mode = vnode.mode,
6156
6157
  ctor = vnode.ctor,
6157
6158
  owner = vnode.owner;
6158
- var vm = createVM(elm, ctor, {
6159
+ var vm = createVM(elm, ctor, renderer, {
6159
6160
  mode: mode,
6160
6161
  owner: owner,
6161
6162
  tagName: sel,
@@ -6164,16 +6165,17 @@ var LWC = (function (exports) {
6164
6165
  vnode.elm = elm;
6165
6166
  vnode.vm = vm;
6166
6167
  allocateChildren(vnode, vm);
6167
- patchElementPropsAndAttrs(vnode); // Insert hook section:
6168
+ patchElementPropsAndAttrs(vnode, renderer); // Insert hook section:
6168
6169
 
6169
6170
  runConnectedCallback(vm);
6170
6171
 
6171
6172
  if (vm.renderMode !== 0
6172
6173
  /* Light */
6173
6174
  ) {
6174
- // VM is not rendering in Light DOM, we can proceed and hydrate the slotted content.
6175
+ var _getFirstChild2 = renderer.getFirstChild; // VM is not rendering in Light DOM, we can proceed and hydrate the slotted content.
6175
6176
  // Note: for Light DOM, this is handled while hydrating the VM
6176
- hydrateChildren(getFirstChild$1(elm), vnode.children, elm);
6177
+
6178
+ hydrateChildren(_getFirstChild2(elm), vnode.children, elm, vm);
6177
6179
  }
6178
6180
 
6179
6181
  hydrateVM(vm);
@@ -6183,18 +6185,19 @@ var LWC = (function (exports) {
6183
6185
  function hydrateChildren(node, children, parentNode, owner) {
6184
6186
  var nextNode = node;
6185
6187
  var anchor = null;
6188
+ var renderer = owner.renderer;
6186
6189
 
6187
6190
  for (var _i29 = 0; _i29 < children.length; _i29++) {
6188
6191
  var childVnode = children[_i29];
6189
6192
 
6190
6193
  if (!isNull(childVnode)) {
6191
6194
  if (nextNode) {
6192
- nextNode = hydrateNode(nextNode, childVnode);
6195
+ nextNode = hydrateNode(nextNode, childVnode, renderer);
6193
6196
  anchor = childVnode.elm;
6194
6197
  } else {
6195
6198
  hasMismatch = true;
6196
6199
 
6197
- mount(childVnode, parentNode, anchor);
6200
+ mount(childVnode, parentNode, renderer, anchor);
6198
6201
  anchor = childVnode.elm;
6199
6202
  }
6200
6203
  }
@@ -6202,31 +6205,39 @@ var LWC = (function (exports) {
6202
6205
 
6203
6206
  if (nextNode) {
6204
6207
  hasMismatch = true;
6208
+ // a good reference to what element to act upon, we instead
6209
+ // rely on the vm's associated renderer for navigating to the
6210
+ // next node in the list to be hydrated.
6211
+
6212
+
6213
+ var _nextSibling = renderer.nextSibling;
6205
6214
 
6206
6215
  do {
6207
6216
  var current = nextNode;
6208
- nextNode = nextSibling$1(nextNode);
6209
- removeNode(current, parentNode);
6217
+ nextNode = _nextSibling(nextNode);
6218
+ removeNode(current, parentNode, renderer);
6210
6219
  } while (nextNode);
6211
6220
  }
6212
6221
  }
6213
6222
 
6214
- function handleMismatch(node, vnode, msg) {
6223
+ function handleMismatch(node, vnode, renderer) {
6215
6224
  hasMismatch = true;
6216
-
6217
- var parentNode = getProperty$1(node, 'parentNode');
6218
- mount(vnode, parentNode, node);
6219
- removeNode(node, parentNode);
6225
+ var getProperty = renderer.getProperty;
6226
+ var parentNode = getProperty(node, 'parentNode');
6227
+ mount(vnode, parentNode, renderer, node);
6228
+ removeNode(node, parentNode, renderer);
6220
6229
  return vnode.elm;
6221
6230
  }
6222
6231
 
6223
- function patchElementPropsAndAttrs(vnode) {
6224
- applyEventListeners(vnode);
6225
- patchProps(null, vnode);
6232
+ function patchElementPropsAndAttrs(vnode, renderer) {
6233
+ applyEventListeners(vnode, renderer);
6234
+ patchProps(null, vnode, renderer);
6226
6235
  }
6227
6236
 
6228
- function hasCorrectNodeType(vnode, node, nodeType) {
6229
- if (getProperty$1(node, 'nodeType') !== nodeType) {
6237
+ function hasCorrectNodeType(vnode, node, nodeType, renderer) {
6238
+ var getProperty = renderer.getProperty;
6239
+
6240
+ if (getProperty(node, 'nodeType') !== nodeType) {
6230
6241
 
6231
6242
  return false;
6232
6243
  }
@@ -6234,19 +6245,21 @@ var LWC = (function (exports) {
6234
6245
  return true;
6235
6246
  }
6236
6247
 
6237
- function isMatchingElement(vnode, elm) {
6238
- if (vnode.sel.toLowerCase() !== getProperty$1(elm, 'tagName').toLowerCase()) {
6248
+ function isMatchingElement(vnode, elm, renderer) {
6249
+ var getProperty = renderer.getProperty;
6250
+
6251
+ if (vnode.sel.toLowerCase() !== getProperty(elm, 'tagName').toLowerCase()) {
6239
6252
 
6240
6253
  return false;
6241
6254
  }
6242
6255
 
6243
- var hasIncompatibleAttrs = validateAttrs(vnode, elm);
6244
- var hasIncompatibleClass = validateClassAttr(vnode, elm);
6245
- var hasIncompatibleStyle = validateStyleAttr(vnode, elm);
6256
+ var hasIncompatibleAttrs = validateAttrs(vnode, elm, renderer);
6257
+ var hasIncompatibleClass = validateClassAttr(vnode, elm, renderer);
6258
+ var hasIncompatibleStyle = validateStyleAttr(vnode, elm, renderer);
6246
6259
  return hasIncompatibleAttrs && hasIncompatibleClass && hasIncompatibleStyle;
6247
6260
  }
6248
6261
 
6249
- function validateAttrs(vnode, elm) {
6262
+ function validateAttrs(vnode, elm, renderer) {
6250
6263
  var _vnode$data$attrs = vnode.data.attrs,
6251
6264
  attrs = _vnode$data$attrs === void 0 ? {} : _vnode$data$attrs;
6252
6265
  var nodesAreCompatible = true; // Validate attributes, though we could always recovery from those by running the update mods.
@@ -6257,7 +6270,10 @@ var LWC = (function (exports) {
6257
6270
  attrName = _Object$entries$_i[0],
6258
6271
  attrValue = _Object$entries$_i[1];
6259
6272
 
6260
- var elmAttrValue = getAttribute$1(elm, attrName);
6273
+ vnode.owner;
6274
+ var _getAttribute = renderer.getAttribute;
6275
+
6276
+ var elmAttrValue = _getAttribute(elm, attrName);
6261
6277
 
6262
6278
  if (String(attrValue) !== elmAttrValue) {
6263
6279
 
@@ -6268,18 +6284,20 @@ var LWC = (function (exports) {
6268
6284
  return nodesAreCompatible;
6269
6285
  }
6270
6286
 
6271
- function validateClassAttr(vnode, elm) {
6287
+ function validateClassAttr(vnode, elm, renderer) {
6272
6288
  var _vnode$data = vnode.data,
6273
6289
  className = _vnode$data.className,
6274
6290
  classMap = _vnode$data.classMap;
6291
+ var getProperty = renderer.getProperty,
6292
+ getClassList = renderer.getClassList;
6275
6293
  var nodesAreCompatible = true;
6276
6294
 
6277
- if (!isUndefined$1(className) && String(className) !== getProperty$1(elm, 'className')) {
6295
+ if (!isUndefined$1(className) && String(className) !== getProperty(elm, 'className')) {
6278
6296
  // className is used when class is bound to an expr.
6279
6297
  nodesAreCompatible = false;
6280
6298
  } else if (!isUndefined$1(classMap)) {
6281
6299
  // classMap is used when class is set to static value.
6282
- var classList = getClassList$1(elm);
6300
+ var classList = getClassList(elm);
6283
6301
  var computedClassName = ''; // all classes from the vnode should be in the element.classList
6284
6302
 
6285
6303
  for (var name in classMap) {
@@ -6300,11 +6318,12 @@ var LWC = (function (exports) {
6300
6318
  return nodesAreCompatible;
6301
6319
  }
6302
6320
 
6303
- function validateStyleAttr(vnode, elm) {
6321
+ function validateStyleAttr(vnode, elm, renderer) {
6304
6322
  var _vnode$data2 = vnode.data,
6305
6323
  style = _vnode$data2.style,
6306
6324
  styleDecls = _vnode$data2.styleDecls;
6307
- var elmStyle = getAttribute$1(elm, 'style') || '';
6325
+ var getAttribute = renderer.getAttribute;
6326
+ var elmStyle = getAttribute(elm, 'style') || '';
6308
6327
  var nodesAreCompatible = true;
6309
6328
 
6310
6329
  if (!isUndefined$1(style) && style !== elmStyle) {
@@ -6340,6 +6359,57 @@ var LWC = (function (exports) {
6340
6359
 
6341
6360
  return nodesAreCompatible;
6342
6361
  }
6362
+
6363
+ function areCompatibleNodes(client, ssr, vnode, renderer) {
6364
+ var getProperty = renderer.getProperty,
6365
+ getAttribute = renderer.getAttribute;
6366
+
6367
+ if (getProperty(client, 'nodeType') === 3
6368
+ /* TEXT */
6369
+ ) {
6370
+ if (!hasCorrectNodeType(vnode, ssr, 3
6371
+ /* TEXT */
6372
+ , renderer)) {
6373
+ return false;
6374
+ }
6375
+
6376
+ return getProperty(client, 'nodeValue') === getProperty(ssr, 'nodeValue');
6377
+ }
6378
+
6379
+ if (getProperty(client, 'nodeType') === 8
6380
+ /* COMMENT */
6381
+ ) {
6382
+ if (!hasCorrectNodeType(vnode, ssr, 8
6383
+ /* COMMENT */
6384
+ , renderer)) {
6385
+ return false;
6386
+ }
6387
+
6388
+ return getProperty(client, 'nodeValue') === getProperty(ssr, 'nodeValue');
6389
+ }
6390
+
6391
+ if (!hasCorrectNodeType(vnode, ssr, 1
6392
+ /* ELEMENT */
6393
+ , renderer)) {
6394
+ return false;
6395
+ }
6396
+
6397
+ var isCompatibleElements = true;
6398
+
6399
+ if (getProperty(client, 'tagName') !== getProperty(ssr, 'tagName')) {
6400
+
6401
+ return false;
6402
+ }
6403
+
6404
+ var clientAttrsNames = getProperty(client, 'getAttributeNames').call(client);
6405
+ clientAttrsNames.forEach(function (attrName) {
6406
+ if (getAttribute(client, attrName) !== getAttribute(ssr, attrName)) {
6407
+ 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);
6408
+ isCompatibleElements = false;
6409
+ }
6410
+ });
6411
+ return isCompatibleElements;
6412
+ }
6343
6413
  /*
6344
6414
  * Copyright (c) 2018, salesforce.com, inc.
6345
6415
  * All rights reserved.
@@ -6387,7 +6457,7 @@ var LWC = (function (exports) {
6387
6457
 
6388
6458
  return ctor;
6389
6459
  }
6390
- /* version: 2.14.0 */
6460
+ /* version: 2.15.0 */
6391
6461
 
6392
6462
  /*
6393
6463
  * Copyright (c) 2018, salesforce.com, inc.
@@ -6557,7 +6627,7 @@ var LWC = (function (exports) {
6557
6627
  try {
6558
6628
  // dereference HTMLElement global because babel wraps globals in compat mode with a
6559
6629
  // _wrapNativeSuper()
6560
- // This is a problem because LWCUpgradableElement extends renderer.HTMLElement which does not
6630
+ // This is a problem because LWCUpgradableElement extends renderer.HTMLElementExported which does not
6561
6631
  // get wrapped by babel.
6562
6632
  var HTMLElementAlias = HTMLElement; // In case we use compat mode with a modern browser, the compat mode transformation
6563
6633
  // invokes the DOM api with an .apply() or .call() to initialize any DOM api sub-classing,
@@ -6633,9 +6703,22 @@ var LWC = (function (exports) {
6633
6703
  }
6634
6704
 
6635
6705
  var ssr = false;
6706
+
6707
+ function isHydrating() {
6708
+ return hydrating;
6709
+ }
6710
+
6636
6711
  var isNativeShadowDefined = _globalThis[KEY__IS_NATIVE_SHADOW_ROOT_DEFINED];
6637
6712
  var isSyntheticShadowDefined = hasOwnProperty$1.call(Element.prototype, KEY__SHADOW_TOKEN);
6638
6713
 
6714
+ function cloneNode(node, deep) {
6715
+ return node.cloneNode(deep);
6716
+ }
6717
+
6718
+ function createFragment(html) {
6719
+ return document.createRange().createContextualFragment(html).firstChild;
6720
+ }
6721
+
6639
6722
  function createElement$1(tagName, namespace) {
6640
6723
  return isUndefined$1(namespace) ? document.createElement(tagName) : document.createElementNS(namespace, tagName);
6641
6724
  }
@@ -6767,44 +6850,54 @@ var LWC = (function (exports) {
6767
6850
  return node.isConnected;
6768
6851
  }
6769
6852
 
6853
+ function assertInstanceOfHTMLElement(elm, msg) {
6854
+ assert.invariant(elm instanceof HTMLElement, msg);
6855
+ }
6856
+
6770
6857
  var HTMLElementExported = HTMLElementConstructor;
6771
- setAttachShadow(attachShadow);
6772
- setCreateComment(createComment);
6773
- setCreateElement(createElement$1);
6774
- setCreateText(createText);
6775
- setDefineCustomElement(defineCustomElement);
6776
- setDispatchEvent(dispatchEvent);
6777
- setGetAttribute(getAttribute);
6778
- setGetBoundingClientRect(getBoundingClientRect);
6779
- setGetChildNodes(getChildNodes);
6780
- setGetChildren(getChildren);
6781
- setGetClassList(getClassList);
6782
- setGetCustomElement(getCustomElement);
6783
- setGetElementsByClassName(getElementsByClassName);
6784
- setGetElementsByTagName(getElementsByTagName);
6785
- setGetFirstChild(getFirstChild);
6786
- setGetFirstElementChild(getFirstElementChild);
6787
- setGetLastChild(getLastChild);
6788
- setGetLastElementChild(getLastElementChild);
6789
- setGetProperty(getProperty);
6790
- setHTMLElement(HTMLElementExported);
6791
- setInsert(insert);
6792
- setIsConnected(isConnected);
6793
- setIsNativeShadowDefined(isNativeShadowDefined);
6794
- setIsSyntheticShadowDefined(isSyntheticShadowDefined);
6795
- setNextSibling(nextSibling);
6796
- setQuerySelector(querySelector);
6797
- setQuerySelectorAll(querySelectorAll);
6798
- setRemove(remove);
6799
- setRemoveAttribute(removeAttribute);
6800
- setRemoveEventListener(removeEventListener);
6801
- setSetAttribute(setAttribute);
6802
- setSetCSSStyleProperty(setCSSStyleProperty);
6803
- setSetProperty(setProperty);
6804
- setSetText(setText);
6805
- setSsr(ssr);
6806
- setAddEventListener(addEventListener);
6807
- setInsertStylesheet(insertStylesheet);
6858
+ var renderer = {
6859
+ ssr: ssr,
6860
+ isNativeShadowDefined: isNativeShadowDefined,
6861
+ isSyntheticShadowDefined: isSyntheticShadowDefined,
6862
+ HTMLElementExported: HTMLElementExported,
6863
+ isHydrating: isHydrating,
6864
+ insert: insert,
6865
+ remove: remove,
6866
+ cloneNode: cloneNode,
6867
+ createFragment: createFragment,
6868
+ createElement: createElement$1,
6869
+ createText: createText,
6870
+ createComment: createComment,
6871
+ nextSibling: nextSibling,
6872
+ attachShadow: attachShadow,
6873
+ getProperty: getProperty,
6874
+ setProperty: setProperty,
6875
+ setText: setText,
6876
+ getAttribute: getAttribute,
6877
+ setAttribute: setAttribute,
6878
+ removeAttribute: removeAttribute,
6879
+ addEventListener: addEventListener,
6880
+ removeEventListener: removeEventListener,
6881
+ dispatchEvent: dispatchEvent,
6882
+ getClassList: getClassList,
6883
+ setCSSStyleProperty: setCSSStyleProperty,
6884
+ getBoundingClientRect: getBoundingClientRect,
6885
+ querySelector: querySelector,
6886
+ querySelectorAll: querySelectorAll,
6887
+ getElementsByTagName: getElementsByTagName,
6888
+ getElementsByClassName: getElementsByClassName,
6889
+ getChildren: getChildren,
6890
+ getChildNodes: getChildNodes,
6891
+ getFirstChild: getFirstChild,
6892
+ getFirstElementChild: getFirstElementChild,
6893
+ getLastChild: getLastChild,
6894
+ getLastElementChild: getLastElementChild,
6895
+ isConnected: isConnected,
6896
+ insertStylesheet: insertStylesheet,
6897
+ assertInstanceOfHTMLElement: assertInstanceOfHTMLElement,
6898
+ defineCustomElement: defineCustomElement,
6899
+ getCustomElement: getCustomElement
6900
+ };
6808
6901
  /*
6809
6902
  * Copyright (c) 2018, salesforce.com, inc.
6810
6903
  * All rights reserved.
@@ -6812,7 +6905,6 @@ var LWC = (function (exports) {
6812
6905
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
6813
6906
  */
6814
6907
 
6815
-
6816
6908
  function resetShadowRootAndLightDom(element, Ctor) {
6817
6909
  if (element.shadowRoot) {
6818
6910
  var shadowRoot = element.shadowRoot;
@@ -6830,7 +6922,7 @@ var LWC = (function (exports) {
6830
6922
  }
6831
6923
 
6832
6924
  function createVMWithProps(element, Ctor, props) {
6833
- var vm = createVM(element, Ctor, {
6925
+ var vm = createVM(element, Ctor, renderer, {
6834
6926
  mode: 'open',
6835
6927
  owner: null,
6836
6928
  tagName: element.tagName.toLowerCase(),
@@ -6946,7 +7038,7 @@ var LWC = (function (exports) {
6946
7038
  hydrateComponent(_assertThisInitialized(_this6), Ctor, {});
6947
7039
  hydratedCustomElements.add(_assertThisInitialized(_this6));
6948
7040
  } else {
6949
- createVM(_assertThisInitialized(_this6), Ctor, {
7041
+ createVM(_assertThisInitialized(_this6), Ctor, renderer, {
6950
7042
  mode: 'open',
6951
7043
  owner: null,
6952
7044
  tagName: _this6.tagName
@@ -7055,7 +7147,7 @@ var LWC = (function (exports) {
7055
7147
  throw new TypeError("\"createElement\" function expects an \"is\" option with a valid component constructor.");
7056
7148
  }
7057
7149
 
7058
- var UpgradableConstructor = getUpgradableConstructor(sel);
7150
+ var UpgradableConstructor = getUpgradableConstructor(sel, renderer);
7059
7151
  var wasComponentUpgraded = false; // the custom element from the registry is expecting an upgrade callback
7060
7152
 
7061
7153
  /**
@@ -7066,7 +7158,7 @@ var LWC = (function (exports) {
7066
7158
  */
7067
7159
 
7068
7160
  var element = new UpgradableConstructor(function (elm) {
7069
- createVM(elm, Ctor, {
7161
+ createVM(elm, Ctor, renderer, {
7070
7162
  tagName: sel,
7071
7163
  mode: options.mode !== 'closed' ? 'open' : 'closed',
7072
7164
  owner: null
@@ -7163,7 +7255,7 @@ var LWC = (function (exports) {
7163
7255
  });
7164
7256
  freeze(LightningElement);
7165
7257
  seal(LightningElement.prototype);
7166
- /* version: 2.14.0 */
7258
+ /* version: 2.15.0 */
7167
7259
 
7168
7260
  exports.LightningElement = LightningElement;
7169
7261
  exports.__unstable__ProfilerControl = profilerControl;
@@ -7177,11 +7269,14 @@ var LWC = (function (exports) {
7177
7269
  exports.hydrateComponent = hydrateComponent;
7178
7270
  exports.isComponentConstructor = isComponentConstructor;
7179
7271
  exports.isNodeFromTemplate = isNodeShadowed;
7272
+ exports.parseFragment = parseFragment;
7273
+ exports.parseSVGFragment = parseSVGFragment;
7180
7274
  exports.readonly = readonly;
7181
7275
  exports.register = register;
7182
7276
  exports.registerComponent = registerComponent;
7183
7277
  exports.registerDecorators = registerDecorators;
7184
7278
  exports.registerTemplate = registerTemplate;
7279
+ exports.renderer = renderer;
7185
7280
  exports.sanitizeAttribute = sanitizeAttribute;
7186
7281
  exports.setFeatureFlag = setFeatureFlag;
7187
7282
  exports.setFeatureFlagForTest = setFeatureFlagForTest;