lwc 2.14.1 → 2.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/engine-dom/esm/es2017/engine-dom.js +598 -541
  2. package/dist/engine-dom/iife/es2017/engine-dom.js +600 -540
  3. package/dist/engine-dom/iife/es2017/engine-dom.min.js +1 -1
  4. package/dist/engine-dom/iife/es2017/engine-dom_debug.js +537 -485
  5. package/dist/engine-dom/iife/es5/engine-dom.js +768 -679
  6. package/dist/engine-dom/iife/es5/engine-dom.min.js +1 -1
  7. package/dist/engine-dom/iife/es5/engine-dom_debug.js +692 -621
  8. package/dist/engine-dom/umd/es2017/engine-dom.js +600 -540
  9. package/dist/engine-dom/umd/es2017/engine-dom.min.js +1 -1
  10. package/dist/engine-dom/umd/es2017/engine-dom_debug.js +537 -485
  11. package/dist/engine-dom/umd/es5/engine-dom.js +768 -679
  12. package/dist/engine-dom/umd/es5/engine-dom.min.js +1 -1
  13. package/dist/engine-dom/umd/es5/engine-dom_debug.js +692 -621
  14. package/dist/engine-server/commonjs/es2017/engine-server.js +455 -460
  15. package/dist/engine-server/commonjs/es2017/engine-server.min.js +1 -1
  16. package/dist/engine-server/esm/es2017/engine-server.js +453 -461
  17. package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js +24 -4
  18. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js +24 -4
  19. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.min.js +2 -2
  20. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js +24 -4
  21. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js +29 -3
  22. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.min.js +2 -2
  23. package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js +29 -3
  24. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js +24 -4
  25. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.min.js +2 -2
  26. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js +24 -4
  27. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js +29 -3
  28. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.min.js +2 -2
  29. package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js +29 -3
  30. package/dist/wire-service/esm/es2017/wire-service.js +2 -2
  31. package/dist/wire-service/iife/es2017/wire-service.js +2 -2
  32. package/dist/wire-service/iife/es2017/wire-service_debug.js +2 -2
  33. package/dist/wire-service/iife/es5/wire-service.js +2 -2
  34. package/dist/wire-service/iife/es5/wire-service_debug.js +2 -2
  35. package/dist/wire-service/umd/es2017/wire-service.js +2 -2
  36. package/dist/wire-service/umd/es2017/wire-service_debug.js +2 -2
  37. package/dist/wire-service/umd/es5/wire-service.js +2 -2
  38. package/dist/wire-service/umd/es5/wire-service_debug.js +2 -2
  39. package/package.json +7 -7
@@ -295,6 +295,7 @@
295
295
 
296
296
  var KEY__IS_NATIVE_SHADOW_ROOT_DEFINED = '$isNativeShadowRootDefined$';
297
297
  var KEY__SHADOW_RESOLVER = '$shadowResolver$';
298
+ var KEY__SHADOW_STATIC = '$shadowStaticNode$';
298
299
  var KEY__SHADOW_TOKEN = '$shadowToken$';
299
300
  var KEY__SYNTHETIC_MODE = '$$lwc-synthetic-mode';
300
301
  var KEY__SCOPED_CSS = '$scoped$';
@@ -350,7 +351,7 @@
350
351
  var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace';
351
352
  var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
352
353
  var XLINK_NAMESPACE = 'http://www.w3.org/1999/xlink';
353
- /** version: 2.14.1 */
354
+ /** version: 2.16.0 */
354
355
 
355
356
  /*
356
357
  * Copyright (c) 2018, salesforce.com, inc.
@@ -611,231 +612,6 @@
611
612
 
612
613
  return result;
613
614
  }
614
- // Primitives
615
- //
616
-
617
-
618
- var ssr$1;
619
-
620
- function setSsr(ssrImpl) {
621
- ssr$1 = ssrImpl;
622
- }
623
-
624
- var isNativeShadowDefined$1;
625
-
626
- function setIsNativeShadowDefined(isNativeShadowDefinedImpl) {
627
- isNativeShadowDefined$1 = isNativeShadowDefinedImpl;
628
- }
629
-
630
- var isSyntheticShadowDefined$1;
631
-
632
- function setIsSyntheticShadowDefined(isSyntheticShadowDefinedImpl) {
633
- isSyntheticShadowDefined$1 = isSyntheticShadowDefinedImpl;
634
- }
635
-
636
- var HTMLElementExported$1;
637
-
638
- function setHTMLElement(HTMLElementImpl) {
639
- HTMLElementExported$1 = HTMLElementImpl;
640
- }
641
-
642
- var insert$1;
643
-
644
- function setInsert(insertImpl) {
645
- insert$1 = insertImpl;
646
- }
647
-
648
- var remove$1;
649
-
650
- function setRemove(removeImpl) {
651
- remove$1 = removeImpl;
652
- }
653
-
654
- var createElement$2;
655
-
656
- function setCreateElement(createElementImpl) {
657
- createElement$2 = createElementImpl;
658
- }
659
-
660
- var createText$1;
661
-
662
- function setCreateText(createTextImpl) {
663
- createText$1 = createTextImpl;
664
- }
665
-
666
- var createComment$1;
667
-
668
- function setCreateComment(createCommentImpl) {
669
- createComment$1 = createCommentImpl;
670
- }
671
-
672
- var nextSibling$1;
673
-
674
- function setNextSibling(nextSiblingImpl) {
675
- nextSibling$1 = nextSiblingImpl;
676
- }
677
-
678
- var attachShadow$1;
679
-
680
- function setAttachShadow(attachShadowImpl) {
681
- attachShadow$1 = attachShadowImpl;
682
- }
683
-
684
- var getProperty$1;
685
-
686
- function setGetProperty(getPropertyImpl) {
687
- getProperty$1 = getPropertyImpl;
688
- }
689
-
690
- var setProperty$1;
691
-
692
- function setSetProperty(setPropertyImpl) {
693
- setProperty$1 = setPropertyImpl;
694
- }
695
-
696
- var setText$1;
697
-
698
- function setSetText(setTextImpl) {
699
- setText$1 = setTextImpl;
700
- }
701
-
702
- var getAttribute$1;
703
-
704
- function setGetAttribute(getAttributeImpl) {
705
- getAttribute$1 = getAttributeImpl;
706
- }
707
-
708
- var setAttribute$1;
709
-
710
- function setSetAttribute(setAttributeImpl) {
711
- setAttribute$1 = setAttributeImpl;
712
- }
713
-
714
- var removeAttribute$1;
715
-
716
- function setRemoveAttribute(removeAttributeImpl) {
717
- removeAttribute$1 = removeAttributeImpl;
718
- }
719
-
720
- var addEventListener$1;
721
-
722
- function setAddEventListener(addEventListenerImpl) {
723
- addEventListener$1 = addEventListenerImpl;
724
- }
725
-
726
- var removeEventListener$1;
727
-
728
- function setRemoveEventListener(removeEventListenerImpl) {
729
- removeEventListener$1 = removeEventListenerImpl;
730
- }
731
-
732
- var dispatchEvent$1;
733
-
734
- function setDispatchEvent(dispatchEventImpl) {
735
- dispatchEvent$1 = dispatchEventImpl;
736
- }
737
-
738
- var getClassList$1;
739
-
740
- function setGetClassList(getClassListImpl) {
741
- getClassList$1 = getClassListImpl;
742
- }
743
-
744
- var setCSSStyleProperty$1;
745
-
746
- function setSetCSSStyleProperty(setCSSStylePropertyImpl) {
747
- setCSSStyleProperty$1 = setCSSStylePropertyImpl;
748
- }
749
-
750
- var getBoundingClientRect$1;
751
-
752
- function setGetBoundingClientRect(getBoundingClientRectImpl) {
753
- getBoundingClientRect$1 = getBoundingClientRectImpl;
754
- }
755
-
756
- var querySelector$1;
757
-
758
- function setQuerySelector(querySelectorImpl) {
759
- querySelector$1 = querySelectorImpl;
760
- }
761
-
762
- var querySelectorAll$1;
763
-
764
- function setQuerySelectorAll(querySelectorAllImpl) {
765
- querySelectorAll$1 = querySelectorAllImpl;
766
- }
767
-
768
- var getElementsByTagName$1;
769
-
770
- function setGetElementsByTagName(getElementsByTagNameImpl) {
771
- getElementsByTagName$1 = getElementsByTagNameImpl;
772
- }
773
-
774
- var getElementsByClassName$1;
775
-
776
- function setGetElementsByClassName(getElementsByClassNameImpl) {
777
- getElementsByClassName$1 = getElementsByClassNameImpl;
778
- }
779
-
780
- var getChildren$1;
781
-
782
- function setGetChildren(getChildrenImpl) {
783
- getChildren$1 = getChildrenImpl;
784
- }
785
-
786
- var getChildNodes$1;
787
-
788
- function setGetChildNodes(getChildNodesImpl) {
789
- getChildNodes$1 = getChildNodesImpl;
790
- }
791
-
792
- var getFirstChild$1;
793
-
794
- function setGetFirstChild(getFirstChildImpl) {
795
- getFirstChild$1 = getFirstChildImpl;
796
- }
797
-
798
- var getFirstElementChild$1;
799
-
800
- function setGetFirstElementChild(getFirstElementChildImpl) {
801
- getFirstElementChild$1 = getFirstElementChildImpl;
802
- }
803
-
804
- var getLastChild$1;
805
-
806
- function setGetLastChild(getLastChildImpl) {
807
- getLastChild$1 = getLastChildImpl;
808
- }
809
-
810
- var getLastElementChild$1;
811
-
812
- function setGetLastElementChild(getLastElementChildImpl) {
813
- getLastElementChild$1 = getLastElementChildImpl;
814
- }
815
-
816
- var isConnected$1;
817
-
818
- function setIsConnected(isConnectedImpl) {
819
- isConnected$1 = isConnectedImpl;
820
- }
821
-
822
- var insertStylesheet$1;
823
-
824
- function setInsertStylesheet(insertStylesheetImpl) {
825
- insertStylesheet$1 = insertStylesheetImpl;
826
- }
827
-
828
- var defineCustomElement$1;
829
-
830
- function setDefineCustomElement(defineCustomElementImpl) {
831
- defineCustomElement$1 = defineCustomElementImpl;
832
- }
833
-
834
- var getCustomElement$1;
835
-
836
- function setGetCustomElement(getCustomElementImpl) {
837
- getCustomElement$1 = getCustomElementImpl;
838
- }
839
615
  /*
840
616
  * Copyright (c) 2019, salesforce.com, inc.
841
617
  * All rights reserved.
@@ -2013,13 +1789,14 @@
2013
1789
  };
2014
1790
 
2015
1791
  function doAttachShadow(vm) {
2016
- var _attachShadow$;
1792
+ var _attachShadow;
2017
1793
 
2018
1794
  var elm = vm.elm,
2019
1795
  mode = vm.mode,
2020
1796
  shadowMode = vm.shadowMode,
2021
- ctor = vm.def.ctor;
2022
- var shadowRoot = attachShadow$1(elm, (_attachShadow$ = {}, _defineProperty(_attachShadow$, KEY__SYNTHETIC_MODE, shadowMode === 1), _defineProperty(_attachShadow$, "delegatesFocus", Boolean(ctor.delegatesFocus)), _defineProperty(_attachShadow$, "mode", mode), _attachShadow$));
1797
+ ctor = vm.def.ctor,
1798
+ attachShadow = vm.renderer.attachShadow;
1799
+ var shadowRoot = attachShadow(elm, (_attachShadow = {}, _defineProperty(_attachShadow, KEY__SYNTHETIC_MODE, shadowMode === 1), _defineProperty(_attachShadow, "delegatesFocus", Boolean(ctor.delegatesFocus)), _defineProperty(_attachShadow, "mode", mode), _attachShadow));
2023
1800
  vm.shadowRoot = shadowRoot;
2024
1801
  associateVM(shadowRoot, vm);
2025
1802
 
@@ -2030,99 +1807,106 @@
2030
1807
  LightningElement.prototype = {
2031
1808
  constructor: LightningElement,
2032
1809
  dispatchEvent: function dispatchEvent(event) {
2033
- var _getAssociatedVM = getAssociatedVM(this),
2034
- elm = _getAssociatedVM.elm;
2035
-
2036
- return dispatchEvent$1(elm, event);
1810
+ var vm = getAssociatedVM(this);
1811
+ var elm = vm.elm,
1812
+ dispatchEvent = vm.renderer.dispatchEvent;
1813
+ return dispatchEvent(elm, event);
2037
1814
  },
2038
1815
  addEventListener: function addEventListener(type, listener, options) {
2039
1816
  var vm = getAssociatedVM(this);
2040
- var elm = vm.elm;
1817
+ var elm = vm.elm,
1818
+ addEventListener = vm.renderer.addEventListener;
2041
1819
 
2042
1820
  var wrappedListener = getWrappedComponentsListener(vm, listener);
2043
- addEventListener$1(elm, type, wrappedListener, options);
1821
+ addEventListener(elm, type, wrappedListener, options);
2044
1822
  },
2045
1823
  removeEventListener: function removeEventListener(type, listener, options) {
2046
1824
  var vm = getAssociatedVM(this);
2047
- var elm = vm.elm;
1825
+ var elm = vm.elm,
1826
+ removeEventListener = vm.renderer.removeEventListener;
2048
1827
  var wrappedListener = getWrappedComponentsListener(vm, listener);
2049
- removeEventListener$1(elm, type, wrappedListener, options);
1828
+ removeEventListener(elm, type, wrappedListener, options);
2050
1829
  },
2051
1830
  hasAttribute: function hasAttribute(name) {
2052
- var _getAssociatedVM2 = getAssociatedVM(this),
2053
- elm = _getAssociatedVM2.elm;
2054
-
2055
- return !isNull(getAttribute$1(elm, name));
1831
+ var vm = getAssociatedVM(this);
1832
+ var elm = vm.elm,
1833
+ getAttribute = vm.renderer.getAttribute;
1834
+ return !isNull(getAttribute(elm, name));
2056
1835
  },
2057
1836
  hasAttributeNS: function hasAttributeNS(namespace, name) {
2058
- var _getAssociatedVM3 = getAssociatedVM(this),
2059
- elm = _getAssociatedVM3.elm;
2060
-
2061
- return !isNull(getAttribute$1(elm, name, namespace));
1837
+ var vm = getAssociatedVM(this);
1838
+ var elm = vm.elm,
1839
+ getAttribute = vm.renderer.getAttribute;
1840
+ return !isNull(getAttribute(elm, name, namespace));
2062
1841
  },
2063
1842
  removeAttribute: function removeAttribute(name) {
2064
- var _getAssociatedVM4 = getAssociatedVM(this),
2065
- elm = _getAssociatedVM4.elm;
2066
-
1843
+ var vm = getAssociatedVM(this);
1844
+ var elm = vm.elm,
1845
+ removeAttribute = vm.renderer.removeAttribute;
2067
1846
  unlockAttribute(elm, name);
2068
- removeAttribute$1(elm, name);
1847
+ removeAttribute(elm, name);
2069
1848
  lockAttribute();
2070
1849
  },
2071
1850
  removeAttributeNS: function removeAttributeNS(namespace, name) {
2072
- var _getAssociatedVM5 = getAssociatedVM(this),
2073
- elm = _getAssociatedVM5.elm;
1851
+ var _getAssociatedVM = getAssociatedVM(this),
1852
+ elm = _getAssociatedVM.elm,
1853
+ removeAttribute = _getAssociatedVM.renderer.removeAttribute;
2074
1854
 
2075
1855
  unlockAttribute(elm, name);
2076
- removeAttribute$1(elm, name, namespace);
1856
+ removeAttribute(elm, name, namespace);
2077
1857
  lockAttribute();
2078
1858
  },
2079
1859
  getAttribute: function getAttribute(name) {
2080
- var _getAssociatedVM6 = getAssociatedVM(this),
2081
- elm = _getAssociatedVM6.elm;
2082
-
2083
- return getAttribute$1(elm, name);
1860
+ var vm = getAssociatedVM(this);
1861
+ var elm = vm.elm;
1862
+ var getAttribute = vm.renderer.getAttribute;
1863
+ return getAttribute(elm, name);
2084
1864
  },
2085
1865
  getAttributeNS: function getAttributeNS(namespace, name) {
2086
- var _getAssociatedVM7 = getAssociatedVM(this),
2087
- elm = _getAssociatedVM7.elm;
2088
-
2089
- return getAttribute$1(elm, name, namespace);
1866
+ var vm = getAssociatedVM(this);
1867
+ var elm = vm.elm;
1868
+ var getAttribute = vm.renderer.getAttribute;
1869
+ return getAttribute(elm, name, namespace);
2090
1870
  },
2091
1871
  setAttribute: function setAttribute(name, value) {
2092
1872
  var vm = getAssociatedVM(this);
2093
- var elm = vm.elm;
1873
+ var elm = vm.elm,
1874
+ setAttribute = vm.renderer.setAttribute;
2094
1875
 
2095
1876
  unlockAttribute(elm, name);
2096
- setAttribute$1(elm, name, value);
1877
+ setAttribute(elm, name, value);
2097
1878
  lockAttribute();
2098
1879
  },
2099
1880
  setAttributeNS: function setAttributeNS(namespace, name, value) {
2100
1881
  var vm = getAssociatedVM(this);
2101
- var elm = vm.elm;
1882
+ var elm = vm.elm,
1883
+ setAttribute = vm.renderer.setAttribute;
2102
1884
 
2103
1885
  unlockAttribute(elm, name);
2104
- setAttribute$1(elm, name, value, namespace);
1886
+ setAttribute(elm, name, value, namespace);
2105
1887
  lockAttribute();
2106
1888
  },
2107
1889
  getBoundingClientRect: function getBoundingClientRect() {
2108
1890
  var vm = getAssociatedVM(this);
2109
- var elm = vm.elm;
1891
+ var elm = vm.elm,
1892
+ getBoundingClientRect = vm.renderer.getBoundingClientRect;
2110
1893
 
2111
- return getBoundingClientRect$1(elm);
1894
+ return getBoundingClientRect(elm);
2112
1895
  },
2113
1896
 
2114
1897
  get isConnected() {
2115
- var _getAssociatedVM8 = getAssociatedVM(this),
2116
- elm = _getAssociatedVM8.elm;
2117
-
2118
- return isConnected$1(elm);
1898
+ var vm = getAssociatedVM(this);
1899
+ var elm = vm.elm,
1900
+ isConnected = vm.renderer.isConnected;
1901
+ return isConnected(elm);
2119
1902
  },
2120
1903
 
2121
1904
  get classList() {
2122
1905
  var vm = getAssociatedVM(this);
2123
- var elm = vm.elm;
1906
+ var elm = vm.elm,
1907
+ getClassList = vm.renderer.getClassList;
2124
1908
 
2125
- return getClassList$1(elm);
1909
+ return getClassList(elm);
2126
1910
  },
2127
1911
 
2128
1912
  get template() {
@@ -2137,89 +1921,69 @@
2137
1921
  return null;
2138
1922
  },
2139
1923
 
2140
- render: function render() {
2141
- var vm = getAssociatedVM(this);
2142
- return vm.def.template;
2143
- },
2144
- toString: function toString() {
1924
+ get children() {
2145
1925
  var vm = getAssociatedVM(this);
2146
- return "[object ".concat(vm.def.name, "]");
2147
- }
2148
- };
2149
- var queryAndChildGetterDescriptors = create(null); // The reason we don't just call `import * as renderer from '../renderer'` here is that the bundle size
2150
- // is smaller if we reference each function individually. Otherwise Rollup will create one big frozen
2151
- // object representing the renderer, with a lot of methods we don't actually need.
2152
-
2153
- var childGetters = ['children', 'childNodes', 'firstChild', 'firstElementChild', 'lastChild', 'lastElementChild'];
1926
+ var renderer = vm.renderer;
2154
1927
 
2155
- function getChildGetter(methodName) {
2156
- switch (methodName) {
2157
- case 'children':
2158
- return getChildren$1;
2159
-
2160
- case 'childNodes':
2161
- return getChildNodes$1;
2162
-
2163
- case 'firstChild':
2164
- return getFirstChild$1;
2165
-
2166
- case 'firstElementChild':
2167
- return getFirstElementChild$1;
1928
+ return renderer.getChildren(vm.elm);
1929
+ },
2168
1930
 
2169
- case 'lastChild':
2170
- return getLastChild$1;
1931
+ get childNodes() {
1932
+ var vm = getAssociatedVM(this);
1933
+ var renderer = vm.renderer;
2171
1934
 
2172
- case 'lastElementChild':
2173
- return getLastElementChild$1;
2174
- }
2175
- } // Generic passthrough for child getters on HTMLElement to the relevant Renderer APIs
1935
+ return renderer.getChildNodes(vm.elm);
1936
+ },
2176
1937
 
1938
+ get firstChild() {
1939
+ var vm = getAssociatedVM(this);
1940
+ var renderer = vm.renderer;
2177
1941
 
2178
- var _loop = function _loop() {
2179
- var childGetter = _childGetters[_i7];
2180
- queryAndChildGetterDescriptors[childGetter] = {
2181
- get: function get() {
2182
- var vm = getAssociatedVM(this);
2183
- var elm = vm.elm;
1942
+ return renderer.getFirstChild(vm.elm);
1943
+ },
2184
1944
 
2185
- return getChildGetter(childGetter)(elm);
2186
- },
2187
- configurable: true,
2188
- enumerable: true
2189
- };
2190
- };
1945
+ get firstElementChild() {
1946
+ var vm = getAssociatedVM(this);
1947
+ var renderer = vm.renderer;
2191
1948
 
2192
- for (var _i7 = 0, _childGetters = childGetters; _i7 < _childGetters.length; _i7++) {
2193
- _loop();
2194
- }
1949
+ return renderer.getFirstElementChild(vm.elm);
1950
+ },
2195
1951
 
2196
- var queryMethods = ['getElementsByClassName', 'getElementsByTagName', 'querySelector', 'querySelectorAll'];
1952
+ get lastChild() {
1953
+ var vm = getAssociatedVM(this);
1954
+ var renderer = vm.renderer;
2197
1955
 
2198
- function getQueryMethod(methodName) {
2199
- switch (methodName) {
2200
- case 'getElementsByClassName':
2201
- return getElementsByClassName$1;
1956
+ return renderer.getLastChild(vm.elm);
1957
+ },
2202
1958
 
2203
- case 'getElementsByTagName':
2204
- return getElementsByTagName$1;
1959
+ get lastElementChild() {
1960
+ var vm = getAssociatedVM(this);
1961
+ var renderer = vm.renderer;
2205
1962
 
2206
- case 'querySelector':
2207
- return querySelector$1;
1963
+ return renderer.getLastElementChild(vm.elm);
1964
+ },
2208
1965
 
2209
- case 'querySelectorAll':
2210
- return querySelectorAll$1;
1966
+ render: function render() {
1967
+ var vm = getAssociatedVM(this);
1968
+ return vm.def.template;
1969
+ },
1970
+ toString: function toString() {
1971
+ var vm = getAssociatedVM(this);
1972
+ return "[object ".concat(vm.def.name, "]");
2211
1973
  }
2212
- } // Generic passthrough for query APIs on HTMLElement to the relevant Renderer APIs
2213
-
1974
+ };
1975
+ var queryAndChildGetterDescriptors = create(null);
1976
+ var queryMethods = ['getElementsByClassName', 'getElementsByTagName', 'querySelector', 'querySelectorAll']; // Generic passthrough for query APIs on HTMLElement to the relevant Renderer APIs
2214
1977
 
2215
- var _loop2 = function _loop2() {
2216
- var queryMethod = _queryMethods[_i8];
1978
+ var _loop = function _loop() {
1979
+ var queryMethod = _queryMethods[_i7];
2217
1980
  queryAndChildGetterDescriptors[queryMethod] = {
2218
1981
  value: function value(arg) {
2219
1982
  var vm = getAssociatedVM(this);
2220
- var elm = vm.elm;
1983
+ var elm = vm.elm,
1984
+ renderer = vm.renderer;
2221
1985
 
2222
- return getQueryMethod(queryMethod)(elm, arg);
1986
+ return renderer[queryMethod](elm, arg);
2223
1987
  },
2224
1988
  configurable: true,
2225
1989
  enumerable: true,
@@ -2227,8 +1991,8 @@
2227
1991
  };
2228
1992
  };
2229
1993
 
2230
- for (var _i8 = 0, _queryMethods = queryMethods; _i8 < _queryMethods.length; _i8++) {
2231
- _loop2();
1994
+ for (var _i7 = 0, _queryMethods = queryMethods; _i7 < _queryMethods.length; _i7++) {
1995
+ _loop();
2232
1996
  }
2233
1997
 
2234
1998
  defineProperties(LightningElement.prototype, queryAndChildGetterDescriptors);
@@ -2588,8 +2352,8 @@
2588
2352
  }
2589
2353
 
2590
2354
  if (!isUndefined$1(fields)) {
2591
- for (var _i9 = 0, n = fields.length; _i9 < n; _i9++) {
2592
- var _fieldName2 = fields[_i9];
2355
+ for (var _i8 = 0, n = fields.length; _i8 < n; _i8++) {
2356
+ var _fieldName2 = fields[_i8];
2593
2357
  descriptor = getOwnPropertyDescriptor$1(proto, _fieldName2);
2594
2358
  // tracked property. This is only here for backward compatibility purposes.
2595
2359
 
@@ -2843,8 +2607,8 @@
2843
2607
  superObservedAttributes = _SuperClass$observedA === void 0 ? [] : _SuperClass$observedA;
2844
2608
  var descriptors = create(null); // expose getters and setters for each public props on the new Element Bridge
2845
2609
 
2846
- for (var _i10 = 0, len = props.length; _i10 < len; _i10 += 1) {
2847
- var _propName = props[_i10];
2610
+ for (var _i9 = 0, len = props.length; _i9 < len; _i9 += 1) {
2611
+ var _propName = props[_i9];
2848
2612
  attributeToPropMap[htmlPropertyToAttribute(_propName)] = _propName;
2849
2613
  descriptors[_propName] = {
2850
2614
  get: createGetter(_propName),
@@ -2855,8 +2619,8 @@
2855
2619
  } // expose public methods as props on the new Element Bridge
2856
2620
 
2857
2621
 
2858
- for (var _i11 = 0, _len3 = methods.length; _i11 < _len3; _i11 += 1) {
2859
- var methodName = methods[_i11];
2622
+ for (var _i10 = 0, _len3 = methods.length; _i10 < _len3; _i10 += 1) {
2623
+ var methodName = methods[_i10];
2860
2624
  descriptors[methodName] = {
2861
2625
  value: createMethodCaller(methodName),
2862
2626
  writable: true,
@@ -3159,12 +2923,15 @@
3159
2923
  */
3160
2924
 
3161
2925
 
3162
- function getUpgradableConstructor(tagName) {
3163
- // Should never get a tag with upper case letter at this point, the compiler should
2926
+ function getUpgradableConstructor(tagName, renderer) {
2927
+ var getCustomElement = renderer.getCustomElement,
2928
+ RendererHTMLElement = renderer.HTMLElementExported,
2929
+ defineCustomElement = renderer.defineCustomElement; // Should never get a tag with upper case letter at this point, the compiler should
3164
2930
  // produce only tags with lowercase letters
3165
2931
  // But, for backwards compatibility, we will lower case the tagName
2932
+
3166
2933
  tagName = tagName.toLowerCase();
3167
- var CE = getCustomElement$1(tagName);
2934
+ var CE = getCustomElement(tagName);
3168
2935
 
3169
2936
  if (!isUndefined$1(CE)) {
3170
2937
  return CE;
@@ -3175,8 +2942,8 @@
3175
2942
  */
3176
2943
 
3177
2944
 
3178
- CE = /*#__PURE__*/function (_HTMLElementExported$) {
3179
- _inherits(LWCUpgradableElement, _HTMLElementExported$);
2945
+ CE = /*#__PURE__*/function (_RendererHTMLElement) {
2946
+ _inherits(LWCUpgradableElement, _RendererHTMLElement);
3180
2947
 
3181
2948
  var _super5 = _createSuper(LWCUpgradableElement);
3182
2949
 
@@ -3195,9 +2962,9 @@
3195
2962
  }
3196
2963
 
3197
2964
  return _createClass(LWCUpgradableElement);
3198
- }(HTMLElementExported$1);
2965
+ }(RendererHTMLElement);
3199
2966
 
3200
- defineCustomElement$1(tagName, CE);
2967
+ defineCustomElement(tagName, CE);
3201
2968
  return CE;
3202
2969
  }
3203
2970
  /*
@@ -3230,7 +2997,7 @@
3230
2997
 
3231
2998
  var ColonCharCode = 58;
3232
2999
 
3233
- function patchAttributes(oldVnode, vnode) {
3000
+ function patchAttributes(oldVnode, vnode, renderer) {
3234
3001
  var attrs = vnode.data.attrs;
3235
3002
 
3236
3003
  if (isUndefined$1(attrs)) {
@@ -3244,6 +3011,8 @@
3244
3011
  }
3245
3012
 
3246
3013
  var elm = vnode.elm;
3014
+ var setAttribute = renderer.setAttribute,
3015
+ removeAttribute = renderer.removeAttribute;
3247
3016
 
3248
3017
  for (var key in attrs) {
3249
3018
  var cur = attrs[key];
@@ -3254,14 +3023,14 @@
3254
3023
 
3255
3024
  if (StringCharCodeAt.call(key, 3) === ColonCharCode) {
3256
3025
  // Assume xml namespace
3257
- setAttribute$1(elm, key, cur, XML_NAMESPACE);
3026
+ setAttribute(elm, key, cur, XML_NAMESPACE);
3258
3027
  } else if (StringCharCodeAt.call(key, 5) === ColonCharCode) {
3259
3028
  // Assume xlink namespace
3260
- setAttribute$1(elm, key, cur, XLINK_NAMESPACE);
3029
+ setAttribute(elm, key, cur, XLINK_NAMESPACE);
3261
3030
  } else if (isNull(cur) || isUndefined$1(cur)) {
3262
- removeAttribute$1(elm, key);
3031
+ removeAttribute(elm, key);
3263
3032
  } else {
3264
- setAttribute$1(elm, key, cur);
3033
+ setAttribute(elm, key, cur);
3265
3034
  }
3266
3035
 
3267
3036
  lockAttribute();
@@ -3282,7 +3051,7 @@
3282
3051
  return sel === 'input' && (key === 'value' || key === 'checked');
3283
3052
  }
3284
3053
 
3285
- function patchProps(oldVnode, vnode) {
3054
+ function patchProps(oldVnode, vnode, renderer) {
3286
3055
  var props = vnode.data.props;
3287
3056
 
3288
3057
  if (isUndefined$1(props)) {
@@ -3298,13 +3067,15 @@
3298
3067
  var isFirstPatch = isNull(oldVnode);
3299
3068
  var elm = vnode.elm,
3300
3069
  sel = vnode.sel;
3070
+ var getProperty = renderer.getProperty,
3071
+ setProperty = renderer.setProperty;
3301
3072
 
3302
3073
  for (var key in props) {
3303
3074
  var cur = props[key]; // Set the property if it's the first time is is patched or if the previous property is
3304
3075
  // different than the one previously set.
3305
3076
 
3306
- if (isFirstPatch || cur !== (isLiveBindingProp(sel, key) ? getProperty$1(elm, key) : oldProps[key])) {
3307
- setProperty$1(elm, key, cur);
3077
+ if (isFirstPatch || cur !== (isLiveBindingProp(sel, key) ? getProperty(elm, key) : oldProps[key])) {
3078
+ setProperty(elm, key, cur);
3308
3079
  }
3309
3080
  }
3310
3081
  }
@@ -3356,7 +3127,7 @@
3356
3127
  return map;
3357
3128
  }
3358
3129
 
3359
- function patchClassAttribute(oldVnode, vnode) {
3130
+ function patchClassAttribute(oldVnode, vnode, renderer) {
3360
3131
  var elm = vnode.elm,
3361
3132
  newClass = vnode.data.className;
3362
3133
  var oldClass = isNull(oldVnode) ? undefined : oldVnode.data.className;
@@ -3365,7 +3136,8 @@
3365
3136
  return;
3366
3137
  }
3367
3138
 
3368
- var classList = getClassList$1(elm);
3139
+ var getClassList = renderer.getClassList;
3140
+ var classList = getClassList(elm);
3369
3141
  var newClassMap = getMapFromClassName(newClass);
3370
3142
  var oldClassMap = getMapFromClassName(oldClass);
3371
3143
  var name;
@@ -3392,7 +3164,7 @@
3392
3164
  // The style property is a string when defined via an expression in the template.
3393
3165
 
3394
3166
 
3395
- function patchStyleAttribute(oldVnode, vnode) {
3167
+ function patchStyleAttribute(oldVnode, vnode, renderer) {
3396
3168
  var elm = vnode.elm,
3397
3169
  newStyle = vnode.data.style;
3398
3170
  var oldStyle = isNull(oldVnode) ? undefined : oldVnode.data.style;
@@ -3401,10 +3173,13 @@
3401
3173
  return;
3402
3174
  }
3403
3175
 
3176
+ var setAttribute = renderer.setAttribute,
3177
+ removeAttribute = renderer.removeAttribute;
3178
+
3404
3179
  if (!isString(newStyle) || newStyle === '') {
3405
- removeAttribute$1(elm, 'style');
3180
+ removeAttribute(elm, 'style');
3406
3181
  } else {
3407
- setAttribute$1(elm, 'style', newStyle);
3182
+ setAttribute(elm, 'style', newStyle);
3408
3183
  }
3409
3184
  }
3410
3185
  /*
@@ -3415,7 +3190,7 @@
3415
3190
  */
3416
3191
 
3417
3192
 
3418
- function applyEventListeners(vnode) {
3193
+ function applyEventListeners(vnode, renderer) {
3419
3194
  var elm = vnode.elm,
3420
3195
  on = vnode.data.on;
3421
3196
 
@@ -3423,9 +3198,11 @@
3423
3198
  return;
3424
3199
  }
3425
3200
 
3201
+ var addEventListener = renderer.addEventListener;
3202
+
3426
3203
  for (var name in on) {
3427
3204
  var handler = on[name];
3428
- addEventListener$1(elm, name, handler);
3205
+ addEventListener(elm, name, handler);
3429
3206
  }
3430
3207
  }
3431
3208
  /*
@@ -3439,7 +3216,7 @@
3439
3216
  // different classnames properties individually instead of via a string.
3440
3217
 
3441
3218
 
3442
- function applyStaticClassAttribute(vnode) {
3219
+ function applyStaticClassAttribute(vnode, renderer) {
3443
3220
  var elm = vnode.elm,
3444
3221
  classMap = vnode.data.classMap;
3445
3222
 
@@ -3447,7 +3224,8 @@
3447
3224
  return;
3448
3225
  }
3449
3226
 
3450
- var classList = getClassList$1(elm);
3227
+ var getClassList = renderer.getClassList;
3228
+ var classList = getClassList(elm);
3451
3229
 
3452
3230
  for (var name in classMap) {
3453
3231
  classList.add(name);
@@ -3464,7 +3242,7 @@
3464
3242
  // different style properties individually instead of via a string.
3465
3243
 
3466
3244
 
3467
- function applyStaticStyleAttribute(vnode) {
3245
+ function applyStaticStyleAttribute(vnode, renderer) {
3468
3246
  var elm = vnode.elm,
3469
3247
  styleDecls = vnode.data.styleDecls;
3470
3248
 
@@ -3472,13 +3250,15 @@
3472
3250
  return;
3473
3251
  }
3474
3252
 
3475
- for (var _i12 = 0; _i12 < styleDecls.length; _i12++) {
3476
- var _styleDecls$_i = _slicedToArray(styleDecls[_i12], 3),
3253
+ var setCSSStyleProperty = renderer.setCSSStyleProperty;
3254
+
3255
+ for (var _i11 = 0; _i11 < styleDecls.length; _i11++) {
3256
+ var _styleDecls$_i = _slicedToArray(styleDecls[_i11], 3),
3477
3257
  prop = _styleDecls$_i[0],
3478
3258
  value = _styleDecls$_i[1],
3479
3259
  important = _styleDecls$_i[2];
3480
3260
 
3481
- setCSSStyleProperty$1(elm, prop, value, important);
3261
+ setCSSStyleProperty(elm, prop, value, important);
3482
3262
  }
3483
3263
  }
3484
3264
  /*
@@ -3489,15 +3269,17 @@
3489
3269
  */
3490
3270
 
3491
3271
 
3492
- function patchChildren(c1, c2, parent) {
3272
+ function patchChildren(c1, c2, parent, renderer) {
3493
3273
  if (hasDynamicChildren(c2)) {
3494
- updateDynamicChildren(c1, c2, parent);
3274
+ updateDynamicChildren(c1, c2, parent, renderer);
3495
3275
  } else {
3496
- updateStaticChildren(c1, c2, parent);
3276
+ updateStaticChildren(c1, c2, parent, renderer);
3497
3277
  }
3498
3278
  }
3499
3279
 
3500
- function patch(n1, n2) {
3280
+ function patch(n1, n2, renderer) {
3281
+ var _a, _b;
3282
+
3501
3283
  if (n1 === n2) {
3502
3284
  return;
3503
3285
  }
@@ -3506,112 +3288,159 @@
3506
3288
  case 0
3507
3289
  /* Text */
3508
3290
  :
3509
- patchText(n1, n2);
3291
+ // VText has no special capability, fallback to the owner's renderer
3292
+ patchText(n1, n2, renderer);
3510
3293
  break;
3511
3294
 
3512
3295
  case 1
3513
3296
  /* Comment */
3514
3297
  :
3515
- patchComment(n1, n2);
3298
+ // VComment has no special capability, fallback to the owner's renderer
3299
+ patchComment(n1, n2, renderer);
3300
+ break;
3301
+
3302
+ case 4
3303
+ /* Static */
3304
+ :
3305
+ n2.elm = n1.elm;
3516
3306
  break;
3517
3307
 
3518
3308
  case 2
3519
3309
  /* Element */
3520
3310
  :
3521
- patchElement(n1, n2);
3311
+ patchElement(n1, n2, (_a = n2.data.renderer) !== null && _a !== void 0 ? _a : renderer);
3522
3312
  break;
3523
3313
 
3524
3314
  case 3
3525
3315
  /* CustomElement */
3526
3316
  :
3527
- patchCustomElement(n1, n2);
3317
+ patchCustomElement(n1, n2, (_b = n2.data.renderer) !== null && _b !== void 0 ? _b : renderer);
3528
3318
  break;
3529
3319
  }
3530
3320
  }
3531
3321
 
3532
- function mount(node, parent, anchor) {
3322
+ function mount(node, parent, renderer, anchor) {
3323
+ var _a, _b;
3324
+
3533
3325
  switch (node.type) {
3534
3326
  case 0
3535
3327
  /* Text */
3536
3328
  :
3537
- mountText(node, parent, anchor);
3329
+ // VText has no special capability, fallback to the owner's renderer
3330
+ mountText(node, parent, anchor, renderer);
3538
3331
  break;
3539
3332
 
3540
3333
  case 1
3541
3334
  /* Comment */
3542
3335
  :
3543
- mountComment(node, parent, anchor);
3336
+ // VComment has no special capability, fallback to the owner's renderer
3337
+ mountComment(node, parent, anchor, renderer);
3338
+ break;
3339
+
3340
+ case 4
3341
+ /* Static */
3342
+ :
3343
+ // VStatic cannot have a custom renderer associated to them, using owner's renderer
3344
+ mountStatic(node, parent, anchor, renderer);
3544
3345
  break;
3545
3346
 
3546
3347
  case 2
3547
3348
  /* Element */
3548
3349
  :
3549
- mountElement(node, parent, anchor);
3350
+ // If the vnode data has a renderer override use it, else fallback to owner's renderer
3351
+ mountElement(node, parent, anchor, (_a = node.data.renderer) !== null && _a !== void 0 ? _a : renderer);
3550
3352
  break;
3551
3353
 
3552
3354
  case 3
3553
3355
  /* CustomElement */
3554
3356
  :
3555
- mountCustomElement(node, parent, anchor);
3357
+ // If the vnode data has a renderer override use it, else fallback to owner's renderer
3358
+ mountCustomElement(node, parent, anchor, (_b = node.data.renderer) !== null && _b !== void 0 ? _b : renderer);
3556
3359
  break;
3557
3360
  }
3558
3361
  }
3559
3362
 
3560
- function patchText(n1, n2) {
3363
+ function patchText(n1, n2, renderer) {
3561
3364
  n2.elm = n1.elm;
3562
3365
 
3563
3366
  if (n2.text !== n1.text) {
3564
- updateTextContent(n2);
3367
+ updateTextContent(n2, renderer);
3565
3368
  }
3566
3369
  }
3567
3370
 
3568
- function mountText(node, parent, anchor) {
3569
- var owner = node.owner;
3570
- var textNode = node.elm = createText$1(node.text);
3571
- linkNodeToShadow(textNode, owner);
3572
- insertNode(textNode, parent, anchor);
3371
+ function mountText(vnode, parent, anchor, renderer) {
3372
+ var owner = vnode.owner;
3373
+ var createText = renderer.createText;
3374
+ var textNode = vnode.elm = createText(vnode.text);
3375
+ linkNodeToShadow(textNode, owner, renderer);
3376
+ insertNode(textNode, parent, anchor, renderer);
3573
3377
  }
3574
3378
 
3575
- function patchComment(n1, n2) {
3379
+ function patchComment(n1, n2, renderer) {
3576
3380
  n2.elm = n1.elm; // FIXME: Comment nodes should be static, we shouldn't need to diff them together. However
3577
3381
  // it is the case today.
3578
3382
 
3579
3383
  if (n2.text !== n1.text) {
3580
- updateTextContent(n2);
3384
+ updateTextContent(n2, renderer);
3581
3385
  }
3582
3386
  }
3583
3387
 
3584
- function mountComment(node, parent, anchor) {
3585
- var owner = node.owner;
3586
- var commentNode = node.elm = createComment$1(node.text);
3587
- linkNodeToShadow(commentNode, owner);
3588
- insertNode(commentNode, parent, anchor);
3388
+ function mountComment(vnode, parent, anchor, renderer) {
3389
+ var owner = vnode.owner;
3390
+ var createComment = renderer.createComment;
3391
+ var commentNode = vnode.elm = createComment(vnode.text);
3392
+ linkNodeToShadow(commentNode, owner, renderer);
3393
+ insertNode(commentNode, parent, anchor, renderer);
3589
3394
  }
3590
3395
 
3591
- function mountElement(vnode, parent, anchor) {
3396
+ function mountElement(vnode, parent, anchor, renderer) {
3592
3397
  var sel = vnode.sel,
3593
3398
  owner = vnode.owner,
3594
3399
  svg = vnode.data.svg;
3400
+ var createElement = renderer.createElement;
3595
3401
  var namespace = isTrue(svg) ? SVG_NAMESPACE : undefined;
3596
- var elm = createElement$2(sel, namespace);
3597
- linkNodeToShadow(elm, owner);
3598
- fallbackElmHook(elm, vnode);
3402
+ var elm = createElement(sel, namespace);
3403
+ linkNodeToShadow(elm, owner, renderer);
3404
+ fallbackElmHook(elm, vnode, renderer);
3599
3405
  vnode.elm = elm;
3600
- patchElementPropsAndAttrs$1(null, vnode);
3601
- insertNode(elm, parent, anchor);
3602
- mountVNodes(vnode.children, elm, null);
3406
+ patchElementPropsAndAttrs$1(null, vnode, renderer);
3407
+ insertNode(elm, parent, anchor, renderer);
3408
+ mountVNodes(vnode.children, elm, renderer, null);
3603
3409
  }
3604
3410
 
3605
- function patchElement(n1, n2) {
3411
+ function patchElement(n1, n2, renderer) {
3606
3412
  var elm = n2.elm = n1.elm;
3607
- patchElementPropsAndAttrs$1(n1, n2);
3608
- patchChildren(n1.children, n2.children, elm);
3413
+ patchElementPropsAndAttrs$1(n1, n2, renderer);
3414
+ patchChildren(n1.children, n2.children, elm, renderer);
3415
+ }
3416
+
3417
+ function mountStatic(vnode, parent, anchor, renderer) {
3418
+ var owner = vnode.owner;
3419
+ var cloneNode = renderer.cloneNode,
3420
+ isSyntheticShadowDefined = renderer.isSyntheticShadowDefined;
3421
+ var elm = vnode.elm = cloneNode(vnode.fragment, true);
3422
+ linkNodeToShadow(elm, owner, renderer); // Marks this node as Static to propagate the shadow resolver. must happen after elm is assigned to the proper shadow
3423
+
3424
+ var renderMode = owner.renderMode,
3425
+ shadowMode = owner.shadowMode;
3426
+
3427
+ if (isSyntheticShadowDefined) {
3428
+ if (shadowMode === 1
3429
+ /* Synthetic */
3430
+ || renderMode === 0
3431
+ /* Light */
3432
+ ) {
3433
+ elm[KEY__SHADOW_STATIC] = true;
3434
+ }
3435
+ }
3436
+
3437
+ insertNode(elm, parent, anchor, renderer);
3609
3438
  }
3610
3439
 
3611
- function mountCustomElement(vnode, parent, anchor) {
3440
+ function mountCustomElement(vnode, parent, anchor, renderer) {
3612
3441
  var sel = vnode.sel,
3613
3442
  owner = vnode.owner;
3614
- var UpgradableConstructor = getUpgradableConstructor(sel);
3443
+ var UpgradableConstructor = getUpgradableConstructor(sel, renderer);
3615
3444
  /**
3616
3445
  * Note: if the upgradable constructor does not expect, or throw when we new it
3617
3446
  * with a callback as the first argument, we could implement a more advanced
@@ -3622,9 +3451,9 @@
3622
3451
  var vm;
3623
3452
  var elm = new UpgradableConstructor(function (elm) {
3624
3453
  // the custom element from the registry is expecting an upgrade callback
3625
- vm = createViewModelHook(elm, vnode);
3454
+ vm = createViewModelHook(elm, vnode, renderer);
3626
3455
  });
3627
- linkNodeToShadow(elm, owner);
3456
+ linkNodeToShadow(elm, owner, renderer);
3628
3457
  vnode.elm = elm;
3629
3458
  vnode.vm = vm;
3630
3459
 
@@ -3634,25 +3463,25 @@
3634
3463
  throw new TypeError("Incorrect Component Constructor");
3635
3464
  }
3636
3465
 
3637
- patchElementPropsAndAttrs$1(null, vnode);
3638
- insertNode(elm, parent, anchor);
3466
+ patchElementPropsAndAttrs$1(null, vnode, renderer);
3467
+ insertNode(elm, parent, anchor, renderer);
3639
3468
 
3640
3469
  if (vm) {
3641
3470
 
3642
3471
  runConnectedCallback(vm);
3643
3472
  }
3644
3473
 
3645
- mountVNodes(vnode.children, elm, null);
3474
+ mountVNodes(vnode.children, elm, renderer, null);
3646
3475
 
3647
3476
  if (vm) {
3648
3477
  appendVM(vm);
3649
3478
  }
3650
3479
  }
3651
3480
 
3652
- function patchCustomElement(n1, n2) {
3481
+ function patchCustomElement(n1, n2, renderer) {
3653
3482
  var elm = n2.elm = n1.elm;
3654
3483
  var vm = n2.vm = n1.vm;
3655
- patchElementPropsAndAttrs$1(n1, n2);
3484
+ patchElementPropsAndAttrs$1(n1, n2, renderer);
3656
3485
 
3657
3486
  if (!isUndefined$1(vm)) {
3658
3487
  // in fallback mode, the allocation will always set children to
@@ -3662,7 +3491,7 @@
3662
3491
  // will happen, but in native, it does allocate the light dom
3663
3492
 
3664
3493
 
3665
- patchChildren(n1.children, n2.children, elm);
3494
+ patchChildren(n1.children, n2.children, elm, renderer);
3666
3495
 
3667
3496
  if (!isUndefined$1(vm)) {
3668
3497
  // this will probably update the shadowRoot, but only if the vm is in a dirty state
@@ -3671,28 +3500,30 @@
3671
3500
  }
3672
3501
  }
3673
3502
 
3674
- function mountVNodes(vnodes, parent, anchor) {
3675
- var start = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
3676
- var end = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : vnodes.length;
3503
+ function mountVNodes(vnodes, parent, renderer, anchor) {
3504
+ var start = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
3505
+ var end = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : vnodes.length;
3677
3506
 
3678
3507
  for (; start < end; ++start) {
3679
3508
  var vnode = vnodes[start];
3680
3509
 
3681
3510
  if (isVNode(vnode)) {
3682
- mount(vnode, parent, anchor);
3511
+ mount(vnode, parent, renderer, anchor);
3683
3512
  }
3684
3513
  }
3685
3514
  }
3686
3515
 
3687
- function unmount(vnode, parent) {
3688
- var doRemove = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
3516
+ function unmount(vnode, parent, renderer) {
3517
+ var doRemove = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
3689
3518
  var type = vnode.type,
3690
3519
  elm = vnode.elm,
3691
3520
  sel = vnode.sel; // When unmounting a VNode subtree not all the elements have to removed from the DOM. The
3692
3521
  // subtree root, is the only element worth unmounting from the subtree.
3693
3522
 
3694
3523
  if (doRemove) {
3695
- removeNode(elm, parent);
3524
+ // The vnode might or might not have a data.renderer associated to it
3525
+ // but the removal used here is from the owner instead.
3526
+ removeNode(elm, parent, renderer);
3696
3527
  }
3697
3528
 
3698
3529
  switch (type) {
@@ -3702,10 +3533,10 @@
3702
3533
  {
3703
3534
  // Slot content is removed to trigger slotchange event when removing slot.
3704
3535
  // Only required for synthetic shadow.
3705
- var removeChildren = sel === 'slot' && vnode.owner.shadowMode === 1
3536
+ var shouldRemoveChildren = sel === 'slot' && vnode.owner.shadowMode === 1
3706
3537
  /* Synthetic */
3707
3538
  ;
3708
- unmountVNodes(vnode.children, elm, removeChildren);
3539
+ unmountVNodes(vnode.children, elm, renderer, shouldRemoveChildren);
3709
3540
  break;
3710
3541
  }
3711
3542
 
@@ -3723,16 +3554,16 @@
3723
3554
  }
3724
3555
  }
3725
3556
 
3726
- function unmountVNodes(vnodes, parent) {
3727
- var doRemove = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
3728
- var start = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
3729
- var end = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : vnodes.length;
3557
+ function unmountVNodes(vnodes, parent, renderer) {
3558
+ var doRemove = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
3559
+ var start = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
3560
+ var end = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : vnodes.length;
3730
3561
 
3731
3562
  for (; start < end; ++start) {
3732
3563
  var ch = vnodes[start];
3733
3564
 
3734
3565
  if (isVNode(ch)) {
3735
- unmount(ch, parent, doRemove);
3566
+ unmount(ch, parent, renderer, doRemove);
3736
3567
  }
3737
3568
  }
3738
3569
  }
@@ -3750,22 +3581,26 @@
3750
3581
  } // Set the scope token class for *.scoped.css styles
3751
3582
 
3752
3583
 
3753
- function setScopeTokenClassIfNecessary(elm, owner) {
3584
+ function setScopeTokenClassIfNecessary(elm, owner, renderer) {
3754
3585
  var cmpTemplate = owner.cmpTemplate,
3755
3586
  context = owner.context;
3587
+ var getClassList = renderer.getClassList;
3756
3588
  var token = cmpTemplate === null || cmpTemplate === void 0 ? void 0 : cmpTemplate.stylesheetToken;
3757
3589
 
3758
3590
  if (!isUndefined$1(token) && context.hasScopedStyles) {
3759
- getClassList$1(elm).add(token);
3591
+ // TODO [#2762]: this dot notation with add is probably problematic
3592
+ // probably we should have a renderer api for just the add operation
3593
+ getClassList(elm).add(token);
3760
3594
  }
3761
3595
  }
3762
3596
 
3763
- function linkNodeToShadow(elm, owner) {
3597
+ function linkNodeToShadow(elm, owner, renderer) {
3764
3598
  var renderRoot = owner.renderRoot,
3765
3599
  renderMode = owner.renderMode,
3766
- shadowMode = owner.shadowMode; // TODO [#1164]: this should eventually be done by the polyfill directly
3600
+ shadowMode = owner.shadowMode;
3601
+ var isSyntheticShadowDefined = renderer.isSyntheticShadowDefined; // TODO [#1164]: this should eventually be done by the polyfill directly
3767
3602
 
3768
- if (isSyntheticShadowDefined$1) {
3603
+ if (isSyntheticShadowDefined) {
3769
3604
  if (shadowMode === 1
3770
3605
  /* Synthetic */
3771
3606
  || renderMode === 0
@@ -3776,41 +3611,42 @@
3776
3611
  }
3777
3612
  }
3778
3613
 
3779
- function updateTextContent(vnode) {
3614
+ function updateTextContent(vnode, renderer) {
3780
3615
  var elm = vnode.elm,
3781
3616
  text = vnode.text;
3617
+ var setText = renderer.setText;
3782
3618
 
3783
- setText$1(elm, text);
3619
+ setText(elm, text);
3784
3620
  }
3785
3621
 
3786
- function insertNode(node, parent, anchor) {
3622
+ function insertNode(node, parent, anchor, renderer) {
3787
3623
 
3788
- insert$1(node, parent, anchor);
3624
+ renderer.insert(node, parent, anchor);
3789
3625
  }
3790
3626
 
3791
- function removeNode(node, parent) {
3627
+ function removeNode(node, parent, renderer) {
3792
3628
 
3793
- remove$1(node, parent);
3629
+ renderer.remove(node, parent);
3794
3630
  }
3795
3631
 
3796
- function patchElementPropsAndAttrs$1(oldVnode, vnode) {
3632
+ function patchElementPropsAndAttrs$1(oldVnode, vnode, renderer) {
3797
3633
  if (isNull(oldVnode)) {
3798
- applyEventListeners(vnode);
3799
- applyStaticClassAttribute(vnode);
3800
- applyStaticStyleAttribute(vnode);
3634
+ applyEventListeners(vnode, renderer);
3635
+ applyStaticClassAttribute(vnode, renderer);
3636
+ applyStaticStyleAttribute(vnode, renderer);
3801
3637
  } // Attrs need to be applied to element before props IE11 will wipe out value on radio inputs if
3802
3638
  // value is set before type=radio.
3803
3639
 
3804
3640
 
3805
- patchClassAttribute(oldVnode, vnode);
3806
- patchStyleAttribute(oldVnode, vnode);
3807
- patchAttributes(oldVnode, vnode);
3808
- patchProps(oldVnode, vnode);
3641
+ patchClassAttribute(oldVnode, vnode, renderer);
3642
+ patchStyleAttribute(oldVnode, vnode, renderer);
3643
+ patchAttributes(oldVnode, vnode, renderer);
3644
+ patchProps(oldVnode, vnode, renderer);
3809
3645
  }
3810
3646
 
3811
- function fallbackElmHook(elm, vnode) {
3647
+ function fallbackElmHook(elm, vnode, renderer) {
3812
3648
  var owner = vnode.owner;
3813
- setScopeTokenClassIfNecessary(elm, owner);
3649
+ setScopeTokenClassIfNecessary(elm, owner, renderer);
3814
3650
 
3815
3651
  if (owner.shadowMode === 1
3816
3652
  /* Synthetic */
@@ -3863,7 +3699,7 @@
3863
3699
  }
3864
3700
  }
3865
3701
 
3866
- function createViewModelHook(elm, vnode) {
3702
+ function createViewModelHook(elm, vnode, renderer) {
3867
3703
  var vm = getAssociatedVMIfPresent(elm); // There is a possibility that a custom element is registered under tagName, in which case, the
3868
3704
  // initialization is already carry on, and there is nothing else to do here since this hook is
3869
3705
  // called right after invoking `document.createElement`.
@@ -3876,7 +3712,7 @@
3876
3712
  mode = vnode.mode,
3877
3713
  ctor = vnode.ctor,
3878
3714
  owner = vnode.owner;
3879
- setScopeTokenClassIfNecessary(elm, owner);
3715
+ setScopeTokenClassIfNecessary(elm, owner, renderer);
3880
3716
 
3881
3717
  if (owner.shadowMode === 1
3882
3718
  /* Synthetic */
@@ -3889,7 +3725,7 @@
3889
3725
  }
3890
3726
  }
3891
3727
 
3892
- vm = createVM(elm, ctor, {
3728
+ vm = createVM(elm, ctor, renderer, {
3893
3729
  mode: mode,
3894
3730
  owner: owner,
3895
3731
  tagName: sel
@@ -3904,8 +3740,8 @@
3904
3740
  var oldSlots = vm.cmpSlots;
3905
3741
  var cmpSlots = vm.cmpSlots = create(null);
3906
3742
 
3907
- for (var _i13 = 0, len = children.length; _i13 < len; _i13 += 1) {
3908
- var vnode = children[_i13];
3743
+ for (var _i12 = 0, len = children.length; _i12 < len; _i12 += 1) {
3744
+ var vnode = children[_i12];
3909
3745
 
3910
3746
  if (isNull(vnode)) {
3911
3747
  continue;
@@ -3931,8 +3767,8 @@
3931
3767
  return;
3932
3768
  }
3933
3769
 
3934
- for (var _i14 = 0, _len4 = oldKeys.length; _i14 < _len4; _i14 += 1) {
3935
- var key = oldKeys[_i14];
3770
+ for (var _i13 = 0, _len4 = oldKeys.length; _i13 < _len4; _i13 += 1) {
3771
+ var key = oldKeys[_i13];
3936
3772
 
3937
3773
  if (isUndefined$1(cmpSlots[key]) || oldSlots[key].length !== cmpSlots[key].length) {
3938
3774
  markComponentAsDirty(vm);
@@ -3982,7 +3818,7 @@
3982
3818
  return map;
3983
3819
  }
3984
3820
 
3985
- function updateDynamicChildren(oldCh, newCh, parent) {
3821
+ function updateDynamicChildren(oldCh, newCh, parent, renderer) {
3986
3822
  var oldStartIdx = 0;
3987
3823
  var newStartIdx = 0;
3988
3824
  var oldEndIdx = oldCh.length - 1;
@@ -4008,23 +3844,23 @@
4008
3844
  } else if (!isVNode(newEndVnode)) {
4009
3845
  newEndVnode = newCh[--newEndIdx];
4010
3846
  } else if (isSameVnode(oldStartVnode, newStartVnode)) {
4011
- patch(oldStartVnode, newStartVnode);
3847
+ patch(oldStartVnode, newStartVnode, renderer);
4012
3848
  oldStartVnode = oldCh[++oldStartIdx];
4013
3849
  newStartVnode = newCh[++newStartIdx];
4014
3850
  } else if (isSameVnode(oldEndVnode, newEndVnode)) {
4015
- patch(oldEndVnode, newEndVnode);
3851
+ patch(oldEndVnode, newEndVnode, renderer);
4016
3852
  oldEndVnode = oldCh[--oldEndIdx];
4017
3853
  newEndVnode = newCh[--newEndIdx];
4018
3854
  } else if (isSameVnode(oldStartVnode, newEndVnode)) {
4019
3855
  // Vnode moved right
4020
- patch(oldStartVnode, newEndVnode);
4021
- insertNode(oldStartVnode.elm, parent, nextSibling$1(oldEndVnode.elm));
3856
+ patch(oldStartVnode, newEndVnode, renderer);
3857
+ insertNode(oldStartVnode.elm, parent, renderer.nextSibling(oldEndVnode.elm), renderer);
4022
3858
  oldStartVnode = oldCh[++oldStartIdx];
4023
3859
  newEndVnode = newCh[--newEndIdx];
4024
3860
  } else if (isSameVnode(oldEndVnode, newStartVnode)) {
4025
3861
  // Vnode moved left
4026
- patch(oldEndVnode, newStartVnode);
4027
- insertNode(newStartVnode.elm, parent, oldStartVnode.elm);
3862
+ patch(oldEndVnode, newStartVnode, renderer);
3863
+ insertNode(newStartVnode.elm, parent, oldStartVnode.elm, renderer);
4028
3864
  oldEndVnode = oldCh[--oldEndIdx];
4029
3865
  newStartVnode = newCh[++newStartIdx];
4030
3866
  } else {
@@ -4036,7 +3872,7 @@
4036
3872
 
4037
3873
  if (isUndefined$1(idxInOld)) {
4038
3874
  // New element
4039
- mount(newStartVnode, parent, oldStartVnode.elm);
3875
+ mount(newStartVnode, parent, renderer, oldStartVnode.elm);
4040
3876
  newStartVnode = newCh[++newStartIdx];
4041
3877
  } else {
4042
3878
  elmToMove = oldCh[idxInOld];
@@ -4044,9 +3880,9 @@
4044
3880
  if (isVNode(elmToMove)) {
4045
3881
  if (elmToMove.sel !== newStartVnode.sel) {
4046
3882
  // New element
4047
- mount(newStartVnode, parent, oldStartVnode.elm);
3883
+ mount(newStartVnode, parent, renderer, oldStartVnode.elm);
4048
3884
  } else {
4049
- patch(elmToMove, newStartVnode); // Delete the old child, but copy the array since it is read-only.
3885
+ patch(elmToMove, newStartVnode, renderer); // Delete the old child, but copy the array since it is read-only.
4050
3886
  // The `oldCh` will be GC'ed after `updateDynamicChildren` is complete,
4051
3887
  // so we only care about the `oldCh` object inside this function.
4052
3888
  // To avoid cloning over and over again, we check `clonedOldCh`
@@ -4059,7 +3895,7 @@
4059
3895
 
4060
3896
 
4061
3897
  oldCh[idxInOld] = undefined;
4062
- insertNode(elmToMove.elm, parent, oldStartVnode.elm);
3898
+ insertNode(elmToMove.elm, parent, oldStartVnode.elm, renderer);
4063
3899
  }
4064
3900
  }
4065
3901
 
@@ -4072,35 +3908,35 @@
4072
3908
  if (oldStartIdx > oldEndIdx) {
4073
3909
  // There's some cases in which the sub array of vnodes to be inserted is followed by null(s) and an
4074
3910
  // already processed vnode, in such cases the vnodes to be inserted should be before that processed vnode.
4075
- var _i15 = newEndIdx;
3911
+ var _i14 = newEndIdx;
4076
3912
  var n;
4077
3913
 
4078
3914
  do {
4079
- n = newCh[++_i15];
4080
- } while (!isVNode(n) && _i15 < newChEnd);
3915
+ n = newCh[++_i14];
3916
+ } while (!isVNode(n) && _i14 < newChEnd);
4081
3917
 
4082
3918
  before = isVNode(n) ? n.elm : null;
4083
- mountVNodes(newCh, parent, before, newStartIdx, newEndIdx + 1);
3919
+ mountVNodes(newCh, parent, renderer, before, newStartIdx, newEndIdx + 1);
4084
3920
  } else {
4085
- unmountVNodes(oldCh, parent, true, oldStartIdx, oldEndIdx + 1);
3921
+ unmountVNodes(oldCh, parent, renderer, true, oldStartIdx, oldEndIdx + 1);
4086
3922
  }
4087
3923
  }
4088
3924
  }
4089
3925
 
4090
- function updateStaticChildren(c1, c2, parent) {
3926
+ function updateStaticChildren(c1, c2, parent, renderer) {
4091
3927
  var c1Length = c1.length;
4092
3928
  var c2Length = c2.length;
4093
3929
 
4094
3930
  if (c1Length === 0) {
4095
3931
  // the old list is empty, we can directly insert anything new
4096
- mountVNodes(c2, parent, null);
3932
+ mountVNodes(c2, parent, renderer, null);
4097
3933
  return;
4098
3934
  }
4099
3935
 
4100
3936
  if (c2Length === 0) {
4101
3937
  // the old list is nonempty and the new list is empty so we can directly remove all old nodes
4102
3938
  // this is the case in which the dynamic children of an if-directive should be removed
4103
- unmountVNodes(c1, parent, true);
3939
+ unmountVNodes(c1, parent, renderer, true);
4104
3940
  return;
4105
3941
  } // if the old list is not empty, the new list MUST have the same
4106
3942
  // amount of nodes, that's why we call this static children
@@ -4108,22 +3944,22 @@
4108
3944
 
4109
3945
  var anchor = null;
4110
3946
 
4111
- for (var _i16 = c2Length - 1; _i16 >= 0; _i16 -= 1) {
4112
- var n1 = c1[_i16];
4113
- var n2 = c2[_i16];
3947
+ for (var _i15 = c2Length - 1; _i15 >= 0; _i15 -= 1) {
3948
+ var n1 = c1[_i15];
3949
+ var n2 = c2[_i15];
4114
3950
 
4115
3951
  if (n2 !== n1) {
4116
3952
  if (isVNode(n1)) {
4117
3953
  if (isVNode(n2)) {
4118
3954
  // both vnodes are equivalent, and we just need to patch them
4119
- patch(n1, n2);
3955
+ patch(n1, n2, renderer);
4120
3956
  anchor = n2.elm;
4121
3957
  } else {
4122
3958
  // removing the old vnode since the new one is null
4123
- unmount(n1, parent, true);
3959
+ unmount(n1, parent, renderer, true);
4124
3960
  }
4125
3961
  } else if (isVNode(n2)) {
4126
- mount(n2, parent, anchor);
3962
+ mount(n2, parent, renderer, anchor);
4127
3963
  anchor = n2.elm;
4128
3964
  }
4129
3965
  }
@@ -4141,6 +3977,20 @@
4141
3977
 
4142
3978
  function addVNodeToChildLWC(vnode) {
4143
3979
  ArrayPush$1.call(getVMBeingRendered().velements, vnode);
3980
+ } // [st]atic node
3981
+
3982
+
3983
+ function st(fragment, key) {
3984
+ return {
3985
+ type: 4
3986
+ /* Static */
3987
+ ,
3988
+ sel: undefined,
3989
+ key: key,
3990
+ elm: undefined,
3991
+ fragment: fragment,
3992
+ owner: getVMBeingRendered()
3993
+ };
4144
3994
  } // [h]tml node
4145
3995
 
4146
3996
 
@@ -4507,6 +4357,7 @@
4507
4357
  co: co,
4508
4358
  dc: dc,
4509
4359
  ti: ti,
4360
+ st: st,
4510
4361
  gid: gid,
4511
4362
  fid: fid,
4512
4363
  shc: shc
@@ -4535,7 +4386,11 @@
4535
4386
  var elm = vm.elm,
4536
4387
  context = vm.context,
4537
4388
  renderMode = vm.renderMode,
4538
- shadowMode = vm.shadowMode;
4389
+ shadowMode = vm.shadowMode,
4390
+ _vm$renderer = vm.renderer,
4391
+ getClassList = _vm$renderer.getClassList,
4392
+ removeAttribute = _vm$renderer.removeAttribute,
4393
+ setAttribute = _vm$renderer.setAttribute;
4539
4394
  var newStylesheets = template.stylesheets,
4540
4395
  newStylesheetToken = template.stylesheetToken;
4541
4396
  var isSyntheticShadow = renderMode === 1
@@ -4554,11 +4409,11 @@
4554
4409
 
4555
4410
  if (!isUndefined$1(oldToken)) {
4556
4411
  if (oldHasTokenInClass) {
4557
- getClassList$1(elm).remove(makeHostToken(oldToken));
4412
+ getClassList(elm).remove(makeHostToken(oldToken));
4558
4413
  }
4559
4414
 
4560
4415
  if (oldHasTokenInAttribute) {
4561
- removeAttribute$1(elm, makeHostToken(oldToken));
4416
+ removeAttribute(elm, makeHostToken(oldToken));
4562
4417
  }
4563
4418
  } // Apply the new template styling token to the host element, if the new template has any
4564
4419
  // associated stylesheets. In the case of light DOM, also ensure there is at least one scoped stylesheet.
@@ -4571,12 +4426,12 @@
4571
4426
 
4572
4427
  if (!isUndefined$1(newToken)) {
4573
4428
  if (hasScopedStyles) {
4574
- getClassList$1(elm).add(makeHostToken(newToken));
4429
+ getClassList(elm).add(makeHostToken(newToken));
4575
4430
  newHasTokenInClass = true;
4576
4431
  }
4577
4432
 
4578
4433
  if (isSyntheticShadow) {
4579
- setAttribute$1(elm, makeHostToken(newToken), '');
4434
+ setAttribute(elm, makeHostToken(newToken), '');
4580
4435
  newHasTokenInAttribute = true;
4581
4436
  }
4582
4437
  } // Update the styling tokens present on the context object.
@@ -4591,8 +4446,8 @@
4591
4446
  var content = [];
4592
4447
  var root;
4593
4448
 
4594
- for (var _i17 = 0; _i17 < stylesheets.length; _i17++) {
4595
- var stylesheet = stylesheets[_i17];
4449
+ for (var _i16 = 0; _i16 < stylesheets.length; _i16++) {
4450
+ var stylesheet = stylesheets[_i16];
4596
4451
 
4597
4452
  if (isArray$1(stylesheet)) {
4598
4453
  ArrayPush$1.apply(content, evaluateStylesheetsContent(stylesheet, stylesheetToken, vm));
@@ -4689,31 +4544,33 @@
4689
4544
 
4690
4545
  function createStylesheet(vm, stylesheets) {
4691
4546
  var renderMode = vm.renderMode,
4692
- shadowMode = vm.shadowMode;
4547
+ shadowMode = vm.shadowMode,
4548
+ _vm$renderer2 = vm.renderer,
4549
+ ssr = _vm$renderer2.ssr,
4550
+ insertStylesheet = _vm$renderer2.insertStylesheet;
4693
4551
 
4694
4552
  if (renderMode === 1
4695
4553
  /* Shadow */
4696
4554
  && shadowMode === 1
4697
4555
  /* Synthetic */
4698
4556
  ) {
4699
- for (var _i18 = 0; _i18 < stylesheets.length; _i18++) {
4700
- insertStylesheet$1(stylesheets[_i18]);
4557
+ for (var _i17 = 0; _i17 < stylesheets.length; _i17++) {
4558
+ insertStylesheet(stylesheets[_i17]);
4701
4559
  }
4702
- } else if (ssr$1 || vm.hydrated) {
4560
+ } else if (ssr || vm.hydrated) {
4703
4561
  // Note: We need to ensure that during hydration, the stylesheets method is the same as those in ssr.
4704
4562
  // This works in the client, because the stylesheets are created, and cached in the VM
4705
4563
  // the first time the VM renders.
4706
4564
  // native shadow or light DOM, SSR
4707
- var combinedStylesheetContent = ArrayJoin.call(stylesheets, '\n');
4708
- return createInlineStyleVNode(combinedStylesheetContent);
4565
+ return ArrayMap.call(stylesheets, createInlineStyleVNode);
4709
4566
  } else {
4710
4567
  // native shadow or light DOM, DOM renderer
4711
4568
  var root = getNearestNativeShadowComponent(vm); // null root means a global style
4712
4569
 
4713
4570
  var target = isNull(root) ? undefined : root.shadowRoot;
4714
4571
 
4715
- for (var _i19 = 0; _i19 < stylesheets.length; _i19++) {
4716
- insertStylesheet$1(stylesheets[_i19], target);
4572
+ for (var _i18 = 0; _i18 < stylesheets.length; _i18++) {
4573
+ insertStylesheet(stylesheets[_i18], target);
4717
4574
  }
4718
4575
  }
4719
4576
 
@@ -4817,6 +4674,91 @@
4817
4674
  }
4818
4675
  }
4819
4676
 
4677
+ function buildParseFragmentFn(createFragmentFn) {
4678
+ return function (strings) {
4679
+ for (var _len5 = arguments.length, keys = new Array(_len5 > 1 ? _len5 - 1 : 0), _key3 = 1; _key3 < _len5; _key3++) {
4680
+ keys[_key3 - 1] = arguments[_key3];
4681
+ }
4682
+
4683
+ var cache = create(null);
4684
+ return function () {
4685
+ var _getVMBeingRendered = getVMBeingRendered(),
4686
+ _getVMBeingRendered$c = _getVMBeingRendered.context,
4687
+ hasScopedStyles = _getVMBeingRendered$c.hasScopedStyles,
4688
+ stylesheetToken = _getVMBeingRendered$c.stylesheetToken,
4689
+ shadowMode = _getVMBeingRendered.shadowMode,
4690
+ renderer = _getVMBeingRendered.renderer;
4691
+
4692
+ var hasStyleToken = !isUndefined$1(stylesheetToken);
4693
+ var isSyntheticShadow = shadowMode === 1
4694
+ /* Synthetic */
4695
+ ;
4696
+ var cacheKey = 0;
4697
+
4698
+ if (hasStyleToken && hasScopedStyles) {
4699
+ cacheKey |= 1
4700
+ /* HAS_SCOPED_STYLE */
4701
+ ;
4702
+ }
4703
+
4704
+ if (hasStyleToken && isSyntheticShadow) {
4705
+ cacheKey |= 2
4706
+ /* SHADOW_MODE_SYNTHETIC */
4707
+ ;
4708
+ }
4709
+
4710
+ if (!isUndefined$1(cache[cacheKey])) {
4711
+ return cache[cacheKey];
4712
+ }
4713
+
4714
+ var classToken = hasScopedStyles && hasStyleToken ? ' ' + stylesheetToken : '';
4715
+ var classAttrToken = hasScopedStyles && hasStyleToken ? " class=\"".concat(stylesheetToken, "\"") : '';
4716
+ var attrToken = hasStyleToken && isSyntheticShadow ? ' ' + stylesheetToken : '';
4717
+ var htmlFragment = '';
4718
+
4719
+ for (var _i19 = 0, n = keys.length; _i19 < n; _i19++) {
4720
+ switch (keys[_i19]) {
4721
+ case 0:
4722
+ // styleToken in existing class attr
4723
+ htmlFragment += strings[_i19] + classToken;
4724
+ break;
4725
+
4726
+ case 1:
4727
+ // styleToken for added class attr
4728
+ htmlFragment += strings[_i19] + classAttrToken;
4729
+ break;
4730
+
4731
+ case 2:
4732
+ // styleToken as attr
4733
+ htmlFragment += strings[_i19] + attrToken;
4734
+ break;
4735
+
4736
+ case 3:
4737
+ // ${1}${2}
4738
+ htmlFragment += strings[_i19] + classAttrToken + attrToken;
4739
+ break;
4740
+ }
4741
+ }
4742
+
4743
+ htmlFragment += strings[strings.length - 1];
4744
+ cache[cacheKey] = createFragmentFn(htmlFragment, renderer);
4745
+ return cache[cacheKey];
4746
+ };
4747
+ };
4748
+ } // Note: at the moment this code executes, we don't have a renderer yet.
4749
+
4750
+
4751
+ var parseFragment = buildParseFragmentFn(function (html, renderer) {
4752
+ var createFragment = renderer.createFragment;
4753
+ return createFragment(html);
4754
+ });
4755
+ var parseSVGFragment = buildParseFragmentFn(function (html, renderer) {
4756
+ var createFragment = renderer.createFragment,
4757
+ getFirstChild = renderer.getFirstChild;
4758
+ var fragment = createFragment('<svg>' + html + '</svg>');
4759
+ return getFirstChild(fragment);
4760
+ });
4761
+
4820
4762
  function evaluateTemplate(vm, html) {
4821
4763
 
4822
4764
  var isUpdatingTemplateInception = isUpdatingTemplate;
@@ -4864,7 +4806,7 @@
4864
4806
  // re-rendering.
4865
4807
 
4866
4808
  var stylesheetsContent = getStylesheetsContent(vm, html);
4867
- context.styleVNode = stylesheetsContent.length === 0 ? null : createStylesheet(vm, stylesheetsContent);
4809
+ context.styleVNodes = stylesheetsContent.length === 0 ? null : createStylesheet(vm, stylesheetsContent);
4868
4810
  }
4869
4811
 
4870
4812
  if ("production" !== 'production') ; // right before producing the vnodes, we clear up all internal references
@@ -4875,10 +4817,10 @@
4875
4817
 
4876
4818
  isUpdatingTemplate = true;
4877
4819
  vnodes = html.call(undefined, api, component, cmpSlots, context.tplCache);
4878
- var styleVNode = context.styleVNode;
4820
+ var styleVNodes = context.styleVNodes;
4879
4821
 
4880
- if (!isNull(styleVNode)) {
4881
- ArrayUnshift.call(vnodes, styleVNode);
4822
+ if (!isNull(styleVNodes)) {
4823
+ ArrayUnshift.apply(vnodes, styleVNodes);
4882
4824
  }
4883
4825
  });
4884
4826
  }, function () {
@@ -5214,7 +5156,7 @@
5214
5156
  return ancestor;
5215
5157
  }
5216
5158
 
5217
- function createVM(elm, ctor, options) {
5159
+ function createVM(elm, ctor, renderer, options) {
5218
5160
  var mode = options.mode,
5219
5161
  owner = options.owner,
5220
5162
  tagName = options.tagName,
@@ -5247,7 +5189,7 @@
5247
5189
  hasTokenInClass: undefined,
5248
5190
  hasTokenInAttribute: undefined,
5249
5191
  hasScopedStyles: undefined,
5250
- styleVNode: null,
5192
+ styleVNodes: null,
5251
5193
  tplCache: EmptyObject,
5252
5194
  wiredConnecting: EmptyArray,
5253
5195
  wiredDisconnecting: EmptyArray
@@ -5261,9 +5203,10 @@
5261
5203
  renderRoot: null,
5262
5204
  callHook: callHook,
5263
5205
  setHook: setHook,
5264
- getHook: getHook
5206
+ getHook: getHook,
5207
+ renderer: renderer
5265
5208
  };
5266
- vm.shadowMode = computeShadowMode(vm);
5209
+ vm.shadowMode = computeShadowMode(vm, renderer);
5267
5210
  vm.tro = getTemplateReactiveObserver(vm);
5268
5211
 
5269
5212
 
@@ -5276,11 +5219,13 @@
5276
5219
  return vm;
5277
5220
  }
5278
5221
 
5279
- function computeShadowMode(vm) {
5222
+ function computeShadowMode(vm, renderer) {
5280
5223
  var def = vm.def;
5224
+ var isSyntheticShadowDefined = renderer.isSyntheticShadowDefined,
5225
+ isNativeShadowDefined = renderer.isNativeShadowDefined;
5281
5226
  var shadowMode;
5282
5227
 
5283
- if (isSyntheticShadowDefined$1) {
5228
+ if (isSyntheticShadowDefined) {
5284
5229
  if (def.renderMode === 0
5285
5230
  /* Light */
5286
5231
  ) {
@@ -5289,7 +5234,7 @@
5289
5234
  shadowMode = 0
5290
5235
  /* Native */
5291
5236
  ;
5292
- } else if (isNativeShadowDefined$1) {
5237
+ } else if (isNativeShadowDefined) {
5293
5238
  // Not combined with above condition because @lwc/features only supports identifiers in
5294
5239
  // the if-condition.
5295
5240
  if (runtimeFlags.ENABLE_MIXED_SHADOW_MODE) {
@@ -5364,7 +5309,8 @@
5364
5309
 
5365
5310
  function patchShadowRoot(vm, newCh) {
5366
5311
  var renderRoot = vm.renderRoot,
5367
- oldCh = vm.children; // caching the new children collection
5312
+ oldCh = vm.children,
5313
+ renderer = vm.renderer; // caching the new children collection
5368
5314
 
5369
5315
  vm.children = newCh;
5370
5316
 
@@ -5379,7 +5325,7 @@
5379
5325
  , vm);
5380
5326
  }, function () {
5381
5327
  // job
5382
- patchChildren(oldCh, newCh, renderRoot);
5328
+ patchChildren(oldCh, newCh, renderRoot, renderer);
5383
5329
  }, function () {
5384
5330
  // post
5385
5331
  logOperationEnd(2
@@ -5401,9 +5347,10 @@
5401
5347
  }
5402
5348
 
5403
5349
  function runRenderedCallback(vm) {
5404
- var renderedCallback = vm.def.renderedCallback;
5350
+ var renderedCallback = vm.def.renderedCallback,
5351
+ ssr = vm.renderer.ssr;
5405
5352
 
5406
- if (isTrue(ssr$1)) {
5353
+ if (isTrue(ssr)) {
5407
5354
  return;
5408
5355
  }
5409
5356
 
@@ -5612,13 +5559,14 @@
5612
5559
 
5613
5560
  function resetComponentRoot(vm) {
5614
5561
  var children = vm.children,
5615
- renderRoot = vm.renderRoot;
5562
+ renderRoot = vm.renderRoot,
5563
+ remove = vm.renderer.remove;
5616
5564
 
5617
5565
  for (var _i26 = 0, len = children.length; _i26 < len; _i26++) {
5618
5566
  var child = children[_i26];
5619
5567
 
5620
5568
  if (!isNull(child) && !isUndefined$1(child.elm)) {
5621
- remove$1(child.elm, renderRoot);
5569
+ remove(child.elm, renderRoot);
5622
5570
  }
5623
5571
  }
5624
5572
 
@@ -5628,7 +5576,9 @@
5628
5576
  }
5629
5577
 
5630
5578
  function scheduleRehydration(vm) {
5631
- if (isTrue(ssr$1) || isTrue(vm.isScheduled)) {
5579
+ var ssr = vm.renderer.ssr;
5580
+
5581
+ if (isTrue(ssr) || isTrue(vm.isScheduled)) {
5632
5582
  return;
5633
5583
  }
5634
5584
 
@@ -5795,7 +5745,8 @@
5795
5745
  var elm = vm.elm,
5796
5746
  _vm$context = vm.context,
5797
5747
  wiredConnecting = _vm$context.wiredConnecting,
5798
- wiredDisconnecting = _vm$context.wiredDisconnecting; // waiting for the component to be connected to formally request the context via the token
5748
+ wiredDisconnecting = _vm$context.wiredDisconnecting,
5749
+ dispatchEvent = vm.renderer.dispatchEvent; // waiting for the component to be connected to formally request the context via the token
5799
5750
 
5800
5751
  ArrayPush$1.call(wiredConnecting, function () {
5801
5752
  // This event is responsible for connecting the host element with another
@@ -5815,7 +5766,7 @@
5815
5766
  ArrayPush$1.call(wiredDisconnecting, disconnectCallback);
5816
5767
  }
5817
5768
  });
5818
- dispatchEvent$1(elm, contextRegistrationEvent);
5769
+ dispatchEvent(elm, contextRegistrationEvent);
5819
5770
  });
5820
5771
  }
5821
5772
 
@@ -6069,79 +6020,103 @@
6069
6020
  function hydrateVM(vm) {
6070
6021
  var children = renderComponent(vm);
6071
6022
  vm.children = children;
6072
- var parentNode = vm.renderRoot;
6073
- hydrateChildren(getFirstChild$1(parentNode), children, parentNode);
6023
+ var parentNode = vm.renderRoot,
6024
+ getFirstChild = vm.renderer.getFirstChild;
6025
+ hydrateChildren(getFirstChild(parentNode), children, parentNode, vm);
6074
6026
  runRenderedCallback(vm);
6075
6027
  }
6076
6028
 
6077
- function hydrateNode(node, vnode) {
6029
+ function hydrateNode(node, vnode, renderer) {
6030
+ var _a, _b;
6031
+
6078
6032
  var hydratedNode;
6079
6033
 
6080
6034
  switch (vnode.type) {
6081
6035
  case 0
6082
6036
  /* Text */
6083
6037
  :
6084
- hydratedNode = hydrateText(node, vnode);
6038
+ // VText has no special capability, fallback to the owner's renderer
6039
+ hydratedNode = hydrateText(node, vnode, renderer);
6085
6040
  break;
6086
6041
 
6087
6042
  case 1
6088
6043
  /* Comment */
6089
6044
  :
6090
- hydratedNode = hydrateComment(node, vnode);
6045
+ // VComment has no special capability, fallback to the owner's renderer
6046
+ hydratedNode = hydrateComment(node, vnode, renderer);
6047
+ break;
6048
+
6049
+ case 4
6050
+ /* Static */
6051
+ :
6052
+ // VStatic are cacheable and cannot have custom renderer associated to them
6053
+ hydratedNode = hydrateStaticElement(node, vnode, renderer);
6091
6054
  break;
6092
6055
 
6093
6056
  case 2
6094
6057
  /* Element */
6095
6058
  :
6096
- hydratedNode = hydrateElement(node, vnode);
6059
+ hydratedNode = hydrateElement(node, vnode, (_a = vnode.data.renderer) !== null && _a !== void 0 ? _a : renderer);
6097
6060
  break;
6098
6061
 
6099
6062
  case 3
6100
6063
  /* CustomElement */
6101
6064
  :
6102
- hydratedNode = hydrateCustomElement(node, vnode);
6065
+ hydratedNode = hydrateCustomElement(node, vnode, (_b = vnode.data.renderer) !== null && _b !== void 0 ? _b : renderer);
6103
6066
  break;
6104
6067
  }
6105
6068
 
6106
- return nextSibling$1(hydratedNode);
6069
+ return renderer.nextSibling(hydratedNode);
6107
6070
  }
6108
6071
 
6109
- function hydrateText(node, vnode) {
6072
+ function hydrateText(node, vnode, renderer) {
6110
6073
  var _a;
6111
6074
 
6112
6075
  if (!hasCorrectNodeType(vnode, node, 3
6113
6076
  /* TEXT */
6114
- )) {
6115
- return handleMismatch(node, vnode);
6077
+ , renderer)) {
6078
+ return handleMismatch(node, vnode, renderer);
6116
6079
  }
6117
6080
 
6118
- setText$1(node, (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
6081
+ var setText = renderer.setText;
6082
+ setText(node, (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
6119
6083
  vnode.elm = node;
6120
6084
  return node;
6121
6085
  }
6122
6086
 
6123
- function hydrateComment(node, vnode) {
6087
+ function hydrateComment(node, vnode, renderer) {
6124
6088
  var _a;
6125
6089
 
6126
6090
  if (!hasCorrectNodeType(vnode, node, 8
6127
6091
  /* COMMENT */
6128
- )) {
6129
- return handleMismatch(node, vnode);
6092
+ , renderer)) {
6093
+ return handleMismatch(node, vnode, renderer);
6130
6094
  }
6131
6095
 
6132
- setProperty$1(node, 'nodeValue', (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
6096
+ var setProperty = renderer.setProperty;
6097
+ setProperty(node, 'nodeValue', (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
6133
6098
  vnode.elm = node;
6134
6099
  return node;
6135
6100
  }
6136
6101
 
6137
- function hydrateElement(elm, vnode) {
6102
+ function hydrateStaticElement(elm, vnode, renderer) {
6103
+ if (!areCompatibleNodes(vnode.fragment, elm, vnode, renderer)) {
6104
+ return handleMismatch(elm, vnode, renderer);
6105
+ }
6106
+
6107
+ vnode.elm = elm;
6108
+ return elm;
6109
+ }
6110
+
6111
+ function hydrateElement(elm, vnode, renderer) {
6138
6112
  if (!hasCorrectNodeType(vnode, elm, 1
6139
6113
  /* ELEMENT */
6140
- ) || !isMatchingElement(vnode, elm)) {
6141
- return handleMismatch(elm, vnode);
6114
+ , renderer) || !isMatchingElement(vnode, elm, renderer)) {
6115
+ return handleMismatch(elm, vnode, renderer);
6142
6116
  }
6143
6117
 
6144
6118
  vnode.elm = elm;
6119
+ var owner = vnode.owner;
6145
6120
  var context = vnode.data.context;
6146
6121
  var isDomManual = Boolean(!isUndefined$1(context) && !isUndefined$1(context.lwc) && context.lwc.dom === "manual"
6147
6122
  /* Manual */
@@ -6151,9 +6126,10 @@
6151
6126
  // it may be that this element has lwc:inner-html, we need to diff and in case are the same,
6152
6127
  // remove the innerHTML from props so it reuses the existing dom elements.
6153
6128
  var props = vnode.data.props;
6129
+ var _getProperty3 = renderer.getProperty;
6154
6130
 
6155
6131
  if (!isUndefined$1(props) && !isUndefined$1(props.innerHTML)) {
6156
- if (getProperty$1(elm, 'innerHTML') === props.innerHTML) {
6132
+ if (_getProperty3(elm, 'innerHTML') === props.innerHTML) {
6157
6133
  // Do a shallow clone since VNodeData may be shared across VNodes due to hoist optimization
6158
6134
  vnode.data = Object.assign(Object.assign({}, vnode.data), {
6159
6135
  props: cloneAndOmitKey(props, 'innerHTML')
@@ -6162,27 +6138,28 @@
6162
6138
  }
6163
6139
  }
6164
6140
 
6165
- patchElementPropsAndAttrs(vnode);
6141
+ patchElementPropsAndAttrs(vnode, renderer);
6166
6142
 
6167
6143
  if (!isDomManual) {
6168
- hydrateChildren(getFirstChild$1(elm), vnode.children, elm, vnode.owner);
6144
+ var _getFirstChild = renderer.getFirstChild;
6145
+ hydrateChildren(_getFirstChild(elm), vnode.children, elm, owner);
6169
6146
  }
6170
6147
 
6171
6148
  return elm;
6172
6149
  }
6173
6150
 
6174
- function hydrateCustomElement(elm, vnode) {
6151
+ function hydrateCustomElement(elm, vnode, renderer) {
6175
6152
  if (!hasCorrectNodeType(vnode, elm, 1
6176
6153
  /* ELEMENT */
6177
- ) || !isMatchingElement(vnode, elm)) {
6178
- return handleMismatch(elm, vnode);
6154
+ , renderer) || !isMatchingElement(vnode, elm, renderer)) {
6155
+ return handleMismatch(elm, vnode, renderer);
6179
6156
  }
6180
6157
 
6181
6158
  var sel = vnode.sel,
6182
6159
  mode = vnode.mode,
6183
6160
  ctor = vnode.ctor,
6184
6161
  owner = vnode.owner;
6185
- var vm = createVM(elm, ctor, {
6162
+ var vm = createVM(elm, ctor, renderer, {
6186
6163
  mode: mode,
6187
6164
  owner: owner,
6188
6165
  tagName: sel,
@@ -6191,16 +6168,17 @@
6191
6168
  vnode.elm = elm;
6192
6169
  vnode.vm = vm;
6193
6170
  allocateChildren(vnode, vm);
6194
- patchElementPropsAndAttrs(vnode); // Insert hook section:
6171
+ patchElementPropsAndAttrs(vnode, renderer); // Insert hook section:
6195
6172
 
6196
6173
  runConnectedCallback(vm);
6197
6174
 
6198
6175
  if (vm.renderMode !== 0
6199
6176
  /* Light */
6200
6177
  ) {
6201
- // VM is not rendering in Light DOM, we can proceed and hydrate the slotted content.
6178
+ var _getFirstChild2 = renderer.getFirstChild; // VM is not rendering in Light DOM, we can proceed and hydrate the slotted content.
6202
6179
  // Note: for Light DOM, this is handled while hydrating the VM
6203
- hydrateChildren(getFirstChild$1(elm), vnode.children, elm);
6180
+
6181
+ hydrateChildren(_getFirstChild2(elm), vnode.children, elm, vm);
6204
6182
  }
6205
6183
 
6206
6184
  hydrateVM(vm);
@@ -6210,18 +6188,19 @@
6210
6188
  function hydrateChildren(node, children, parentNode, owner) {
6211
6189
  var nextNode = node;
6212
6190
  var anchor = null;
6191
+ var renderer = owner.renderer;
6213
6192
 
6214
6193
  for (var _i29 = 0; _i29 < children.length; _i29++) {
6215
6194
  var childVnode = children[_i29];
6216
6195
 
6217
6196
  if (!isNull(childVnode)) {
6218
6197
  if (nextNode) {
6219
- nextNode = hydrateNode(nextNode, childVnode);
6198
+ nextNode = hydrateNode(nextNode, childVnode, renderer);
6220
6199
  anchor = childVnode.elm;
6221
6200
  } else {
6222
6201
  hasMismatch = true;
6223
6202
 
6224
- mount(childVnode, parentNode, anchor);
6203
+ mount(childVnode, parentNode, renderer, anchor);
6225
6204
  anchor = childVnode.elm;
6226
6205
  }
6227
6206
  }
@@ -6229,31 +6208,39 @@
6229
6208
 
6230
6209
  if (nextNode) {
6231
6210
  hasMismatch = true;
6211
+ // a good reference to what element to act upon, we instead
6212
+ // rely on the vm's associated renderer for navigating to the
6213
+ // next node in the list to be hydrated.
6214
+
6215
+
6216
+ var _nextSibling = renderer.nextSibling;
6232
6217
 
6233
6218
  do {
6234
6219
  var current = nextNode;
6235
- nextNode = nextSibling$1(nextNode);
6236
- removeNode(current, parentNode);
6220
+ nextNode = _nextSibling(nextNode);
6221
+ removeNode(current, parentNode, renderer);
6237
6222
  } while (nextNode);
6238
6223
  }
6239
6224
  }
6240
6225
 
6241
- function handleMismatch(node, vnode, msg) {
6226
+ function handleMismatch(node, vnode, renderer) {
6242
6227
  hasMismatch = true;
6243
-
6244
- var parentNode = getProperty$1(node, 'parentNode');
6245
- mount(vnode, parentNode, node);
6246
- removeNode(node, parentNode);
6228
+ var getProperty = renderer.getProperty;
6229
+ var parentNode = getProperty(node, 'parentNode');
6230
+ mount(vnode, parentNode, renderer, node);
6231
+ removeNode(node, parentNode, renderer);
6247
6232
  return vnode.elm;
6248
6233
  }
6249
6234
 
6250
- function patchElementPropsAndAttrs(vnode) {
6251
- applyEventListeners(vnode);
6252
- patchProps(null, vnode);
6235
+ function patchElementPropsAndAttrs(vnode, renderer) {
6236
+ applyEventListeners(vnode, renderer);
6237
+ patchProps(null, vnode, renderer);
6253
6238
  }
6254
6239
 
6255
- function hasCorrectNodeType(vnode, node, nodeType) {
6256
- if (getProperty$1(node, 'nodeType') !== nodeType) {
6240
+ function hasCorrectNodeType(vnode, node, nodeType, renderer) {
6241
+ var getProperty = renderer.getProperty;
6242
+
6243
+ if (getProperty(node, 'nodeType') !== nodeType) {
6257
6244
 
6258
6245
  return false;
6259
6246
  }
@@ -6261,19 +6248,21 @@
6261
6248
  return true;
6262
6249
  }
6263
6250
 
6264
- function isMatchingElement(vnode, elm) {
6265
- if (vnode.sel.toLowerCase() !== getProperty$1(elm, 'tagName').toLowerCase()) {
6251
+ function isMatchingElement(vnode, elm, renderer) {
6252
+ var getProperty = renderer.getProperty;
6253
+
6254
+ if (vnode.sel.toLowerCase() !== getProperty(elm, 'tagName').toLowerCase()) {
6266
6255
 
6267
6256
  return false;
6268
6257
  }
6269
6258
 
6270
- var hasIncompatibleAttrs = validateAttrs(vnode, elm);
6271
- var hasIncompatibleClass = validateClassAttr(vnode, elm);
6272
- var hasIncompatibleStyle = validateStyleAttr(vnode, elm);
6259
+ var hasIncompatibleAttrs = validateAttrs(vnode, elm, renderer);
6260
+ var hasIncompatibleClass = validateClassAttr(vnode, elm, renderer);
6261
+ var hasIncompatibleStyle = validateStyleAttr(vnode, elm, renderer);
6273
6262
  return hasIncompatibleAttrs && hasIncompatibleClass && hasIncompatibleStyle;
6274
6263
  }
6275
6264
 
6276
- function validateAttrs(vnode, elm) {
6265
+ function validateAttrs(vnode, elm, renderer) {
6277
6266
  var _vnode$data$attrs = vnode.data.attrs,
6278
6267
  attrs = _vnode$data$attrs === void 0 ? {} : _vnode$data$attrs;
6279
6268
  var nodesAreCompatible = true; // Validate attributes, though we could always recovery from those by running the update mods.
@@ -6284,7 +6273,10 @@
6284
6273
  attrName = _Object$entries$_i[0],
6285
6274
  attrValue = _Object$entries$_i[1];
6286
6275
 
6287
- var elmAttrValue = getAttribute$1(elm, attrName);
6276
+ vnode.owner;
6277
+ var _getAttribute = renderer.getAttribute;
6278
+
6279
+ var elmAttrValue = _getAttribute(elm, attrName);
6288
6280
 
6289
6281
  if (String(attrValue) !== elmAttrValue) {
6290
6282
 
@@ -6295,18 +6287,20 @@
6295
6287
  return nodesAreCompatible;
6296
6288
  }
6297
6289
 
6298
- function validateClassAttr(vnode, elm) {
6290
+ function validateClassAttr(vnode, elm, renderer) {
6299
6291
  var _vnode$data = vnode.data,
6300
6292
  className = _vnode$data.className,
6301
6293
  classMap = _vnode$data.classMap;
6294
+ var getProperty = renderer.getProperty,
6295
+ getClassList = renderer.getClassList;
6302
6296
  var nodesAreCompatible = true;
6303
6297
 
6304
- if (!isUndefined$1(className) && String(className) !== getProperty$1(elm, 'className')) {
6298
+ if (!isUndefined$1(className) && String(className) !== getProperty(elm, 'className')) {
6305
6299
  // className is used when class is bound to an expr.
6306
6300
  nodesAreCompatible = false;
6307
6301
  } else if (!isUndefined$1(classMap)) {
6308
6302
  // classMap is used when class is set to static value.
6309
- var classList = getClassList$1(elm);
6303
+ var classList = getClassList(elm);
6310
6304
  var computedClassName = ''; // all classes from the vnode should be in the element.classList
6311
6305
 
6312
6306
  for (var name in classMap) {
@@ -6327,11 +6321,12 @@
6327
6321
  return nodesAreCompatible;
6328
6322
  }
6329
6323
 
6330
- function validateStyleAttr(vnode, elm) {
6324
+ function validateStyleAttr(vnode, elm, renderer) {
6331
6325
  var _vnode$data2 = vnode.data,
6332
6326
  style = _vnode$data2.style,
6333
6327
  styleDecls = _vnode$data2.styleDecls;
6334
- var elmStyle = getAttribute$1(elm, 'style') || '';
6328
+ var getAttribute = renderer.getAttribute;
6329
+ var elmStyle = getAttribute(elm, 'style') || '';
6335
6330
  var nodesAreCompatible = true;
6336
6331
 
6337
6332
  if (!isUndefined$1(style) && style !== elmStyle) {
@@ -6367,6 +6362,57 @@
6367
6362
 
6368
6363
  return nodesAreCompatible;
6369
6364
  }
6365
+
6366
+ function areCompatibleNodes(client, ssr, vnode, renderer) {
6367
+ var getProperty = renderer.getProperty,
6368
+ getAttribute = renderer.getAttribute;
6369
+
6370
+ if (getProperty(client, 'nodeType') === 3
6371
+ /* TEXT */
6372
+ ) {
6373
+ if (!hasCorrectNodeType(vnode, ssr, 3
6374
+ /* TEXT */
6375
+ , renderer)) {
6376
+ return false;
6377
+ }
6378
+
6379
+ return getProperty(client, 'nodeValue') === getProperty(ssr, 'nodeValue');
6380
+ }
6381
+
6382
+ if (getProperty(client, 'nodeType') === 8
6383
+ /* COMMENT */
6384
+ ) {
6385
+ if (!hasCorrectNodeType(vnode, ssr, 8
6386
+ /* COMMENT */
6387
+ , renderer)) {
6388
+ return false;
6389
+ }
6390
+
6391
+ return getProperty(client, 'nodeValue') === getProperty(ssr, 'nodeValue');
6392
+ }
6393
+
6394
+ if (!hasCorrectNodeType(vnode, ssr, 1
6395
+ /* ELEMENT */
6396
+ , renderer)) {
6397
+ return false;
6398
+ }
6399
+
6400
+ var isCompatibleElements = true;
6401
+
6402
+ if (getProperty(client, 'tagName') !== getProperty(ssr, 'tagName')) {
6403
+
6404
+ return false;
6405
+ }
6406
+
6407
+ var clientAttrsNames = getProperty(client, 'getAttributeNames').call(client);
6408
+ clientAttrsNames.forEach(function (attrName) {
6409
+ if (getAttribute(client, attrName) !== getAttribute(ssr, attrName)) {
6410
+ 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);
6411
+ isCompatibleElements = false;
6412
+ }
6413
+ });
6414
+ return isCompatibleElements;
6415
+ }
6370
6416
  /*
6371
6417
  * Copyright (c) 2018, salesforce.com, inc.
6372
6418
  * All rights reserved.
@@ -6414,7 +6460,7 @@
6414
6460
 
6415
6461
  return ctor;
6416
6462
  }
6417
- /* version: 2.14.1 */
6463
+ /* version: 2.16.0 */
6418
6464
 
6419
6465
  /*
6420
6466
  * Copyright (c) 2018, salesforce.com, inc.
@@ -6584,7 +6630,7 @@
6584
6630
  try {
6585
6631
  // dereference HTMLElement global because babel wraps globals in compat mode with a
6586
6632
  // _wrapNativeSuper()
6587
- // This is a problem because LWCUpgradableElement extends renderer.HTMLElement which does not
6633
+ // This is a problem because LWCUpgradableElement extends renderer.HTMLElementExported which does not
6588
6634
  // get wrapped by babel.
6589
6635
  var HTMLElementAlias = HTMLElement; // In case we use compat mode with a modern browser, the compat mode transformation
6590
6636
  // invokes the DOM api with an .apply() or .call() to initialize any DOM api sub-classing,
@@ -6660,9 +6706,22 @@
6660
6706
  }
6661
6707
 
6662
6708
  var ssr = false;
6709
+
6710
+ function isHydrating() {
6711
+ return hydrating;
6712
+ }
6713
+
6663
6714
  var isNativeShadowDefined = _globalThis[KEY__IS_NATIVE_SHADOW_ROOT_DEFINED];
6664
6715
  var isSyntheticShadowDefined = hasOwnProperty$1.call(Element.prototype, KEY__SHADOW_TOKEN);
6665
6716
 
6717
+ function cloneNode(node, deep) {
6718
+ return node.cloneNode(deep);
6719
+ }
6720
+
6721
+ function createFragment(html) {
6722
+ return document.createRange().createContextualFragment(html).firstChild;
6723
+ }
6724
+
6666
6725
  function createElement$1(tagName, namespace) {
6667
6726
  return isUndefined$1(namespace) ? document.createElement(tagName) : document.createElementNS(namespace, tagName);
6668
6727
  }
@@ -6794,44 +6853,54 @@
6794
6853
  return node.isConnected;
6795
6854
  }
6796
6855
 
6856
+ function assertInstanceOfHTMLElement(elm, msg) {
6857
+ assert.invariant(elm instanceof HTMLElement, msg);
6858
+ }
6859
+
6797
6860
  var HTMLElementExported = HTMLElementConstructor;
6798
- setAttachShadow(attachShadow);
6799
- setCreateComment(createComment);
6800
- setCreateElement(createElement$1);
6801
- setCreateText(createText);
6802
- setDefineCustomElement(defineCustomElement);
6803
- setDispatchEvent(dispatchEvent);
6804
- setGetAttribute(getAttribute);
6805
- setGetBoundingClientRect(getBoundingClientRect);
6806
- setGetChildNodes(getChildNodes);
6807
- setGetChildren(getChildren);
6808
- setGetClassList(getClassList);
6809
- setGetCustomElement(getCustomElement);
6810
- setGetElementsByClassName(getElementsByClassName);
6811
- setGetElementsByTagName(getElementsByTagName);
6812
- setGetFirstChild(getFirstChild);
6813
- setGetFirstElementChild(getFirstElementChild);
6814
- setGetLastChild(getLastChild);
6815
- setGetLastElementChild(getLastElementChild);
6816
- setGetProperty(getProperty);
6817
- setHTMLElement(HTMLElementExported);
6818
- setInsert(insert);
6819
- setIsConnected(isConnected);
6820
- setIsNativeShadowDefined(isNativeShadowDefined);
6821
- setIsSyntheticShadowDefined(isSyntheticShadowDefined);
6822
- setNextSibling(nextSibling);
6823
- setQuerySelector(querySelector);
6824
- setQuerySelectorAll(querySelectorAll);
6825
- setRemove(remove);
6826
- setRemoveAttribute(removeAttribute);
6827
- setRemoveEventListener(removeEventListener);
6828
- setSetAttribute(setAttribute);
6829
- setSetCSSStyleProperty(setCSSStyleProperty);
6830
- setSetProperty(setProperty);
6831
- setSetText(setText);
6832
- setSsr(ssr);
6833
- setAddEventListener(addEventListener);
6834
- setInsertStylesheet(insertStylesheet);
6861
+ var renderer = {
6862
+ ssr: ssr,
6863
+ isNativeShadowDefined: isNativeShadowDefined,
6864
+ isSyntheticShadowDefined: isSyntheticShadowDefined,
6865
+ HTMLElementExported: HTMLElementExported,
6866
+ isHydrating: isHydrating,
6867
+ insert: insert,
6868
+ remove: remove,
6869
+ cloneNode: cloneNode,
6870
+ createFragment: createFragment,
6871
+ createElement: createElement$1,
6872
+ createText: createText,
6873
+ createComment: createComment,
6874
+ nextSibling: nextSibling,
6875
+ attachShadow: attachShadow,
6876
+ getProperty: getProperty,
6877
+ setProperty: setProperty,
6878
+ setText: setText,
6879
+ getAttribute: getAttribute,
6880
+ setAttribute: setAttribute,
6881
+ removeAttribute: removeAttribute,
6882
+ addEventListener: addEventListener,
6883
+ removeEventListener: removeEventListener,
6884
+ dispatchEvent: dispatchEvent,
6885
+ getClassList: getClassList,
6886
+ setCSSStyleProperty: setCSSStyleProperty,
6887
+ getBoundingClientRect: getBoundingClientRect,
6888
+ querySelector: querySelector,
6889
+ querySelectorAll: querySelectorAll,
6890
+ getElementsByTagName: getElementsByTagName,
6891
+ getElementsByClassName: getElementsByClassName,
6892
+ getChildren: getChildren,
6893
+ getChildNodes: getChildNodes,
6894
+ getFirstChild: getFirstChild,
6895
+ getFirstElementChild: getFirstElementChild,
6896
+ getLastChild: getLastChild,
6897
+ getLastElementChild: getLastElementChild,
6898
+ isConnected: isConnected,
6899
+ insertStylesheet: insertStylesheet,
6900
+ assertInstanceOfHTMLElement: assertInstanceOfHTMLElement,
6901
+ defineCustomElement: defineCustomElement,
6902
+ getCustomElement: getCustomElement
6903
+ };
6835
6904
  /*
6836
6905
  * Copyright (c) 2018, salesforce.com, inc.
6837
6906
  * All rights reserved.
@@ -6839,7 +6908,6 @@
6839
6908
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
6840
6909
  */
6841
6910
 
6842
-
6843
6911
  function resetShadowRootAndLightDom(element, Ctor) {
6844
6912
  if (element.shadowRoot) {
6845
6913
  var shadowRoot = element.shadowRoot;
@@ -6857,7 +6925,7 @@
6857
6925
  }
6858
6926
 
6859
6927
  function createVMWithProps(element, Ctor, props) {
6860
- var vm = createVM(element, Ctor, {
6928
+ var vm = createVM(element, Ctor, renderer, {
6861
6929
  mode: 'open',
6862
6930
  owner: null,
6863
6931
  tagName: element.tagName.toLowerCase(),
@@ -6973,7 +7041,7 @@
6973
7041
  hydrateComponent(_assertThisInitialized(_this6), Ctor, {});
6974
7042
  hydratedCustomElements.add(_assertThisInitialized(_this6));
6975
7043
  } else {
6976
- createVM(_assertThisInitialized(_this6), Ctor, {
7044
+ createVM(_assertThisInitialized(_this6), Ctor, renderer, {
6977
7045
  mode: 'open',
6978
7046
  owner: null,
6979
7047
  tagName: _this6.tagName
@@ -7082,7 +7150,7 @@
7082
7150
  throw new TypeError("\"createElement\" function expects an \"is\" option with a valid component constructor.");
7083
7151
  }
7084
7152
 
7085
- var UpgradableConstructor = getUpgradableConstructor(sel);
7153
+ var UpgradableConstructor = getUpgradableConstructor(sel, renderer);
7086
7154
  var wasComponentUpgraded = false; // the custom element from the registry is expecting an upgrade callback
7087
7155
 
7088
7156
  /**
@@ -7093,7 +7161,7 @@
7093
7161
  */
7094
7162
 
7095
7163
  var element = new UpgradableConstructor(function (elm) {
7096
- createVM(elm, Ctor, {
7164
+ createVM(elm, Ctor, renderer, {
7097
7165
  tagName: sel,
7098
7166
  mode: options.mode !== 'closed' ? 'open' : 'closed',
7099
7167
  owner: null
@@ -7190,7 +7258,7 @@
7190
7258
  });
7191
7259
  freeze(LightningElement);
7192
7260
  seal(LightningElement.prototype);
7193
- /* version: 2.14.1 */
7261
+ /* version: 2.16.0 */
7194
7262
 
7195
7263
  exports.LightningElement = LightningElement;
7196
7264
  exports.__unstable__ProfilerControl = profilerControl;
@@ -7204,11 +7272,14 @@
7204
7272
  exports.hydrateComponent = hydrateComponent;
7205
7273
  exports.isComponentConstructor = isComponentConstructor;
7206
7274
  exports.isNodeFromTemplate = isNodeShadowed;
7275
+ exports.parseFragment = parseFragment;
7276
+ exports.parseSVGFragment = parseSVGFragment;
7207
7277
  exports.readonly = readonly;
7208
7278
  exports.register = register;
7209
7279
  exports.registerComponent = registerComponent;
7210
7280
  exports.registerDecorators = registerDecorators;
7211
7281
  exports.registerTemplate = registerTemplate;
7282
+ exports.renderer = renderer;
7212
7283
  exports.sanitizeAttribute = sanitizeAttribute;
7213
7284
  exports.setFeatureFlag = setFeatureFlag;
7214
7285
  exports.setFeatureFlagForTest = setFeatureFlagForTest;