lwc 2.13.4 → 2.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/engine-dom/esm/es2017/engine-dom.js +488 -547
  2. package/dist/engine-dom/iife/es2017/engine-dom.js +488 -546
  3. package/dist/engine-dom/iife/es2017/engine-dom.min.js +1 -1
  4. package/dist/engine-dom/iife/es2017/engine-dom_debug.js +430 -490
  5. package/dist/engine-dom/iife/es5/engine-dom.js +600 -715
  6. package/dist/engine-dom/iife/es5/engine-dom.min.js +1 -1
  7. package/dist/engine-dom/iife/es5/engine-dom_debug.js +535 -655
  8. package/dist/engine-dom/umd/es2017/engine-dom.js +488 -546
  9. package/dist/engine-dom/umd/es2017/engine-dom.min.js +1 -1
  10. package/dist/engine-dom/umd/es2017/engine-dom_debug.js +430 -490
  11. package/dist/engine-dom/umd/es5/engine-dom.js +600 -715
  12. package/dist/engine-dom/umd/es5/engine-dom.min.js +1 -1
  13. package/dist/engine-dom/umd/es5/engine-dom_debug.js +535 -655
  14. package/dist/engine-server/commonjs/es2017/engine-server.js +371 -450
  15. package/dist/engine-server/commonjs/es2017/engine-server.min.js +1 -1
  16. package/dist/engine-server/esm/es2017/engine-server.js +371 -451
  17. package/dist/synthetic-shadow/esm/es2017/synthetic-shadow.js +3 -3
  18. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow.js +3 -3
  19. package/dist/synthetic-shadow/iife/es2017/synthetic-shadow_debug.js +3 -3
  20. package/dist/synthetic-shadow/iife/es5/synthetic-shadow.js +3 -3
  21. package/dist/synthetic-shadow/iife/es5/synthetic-shadow_debug.js +3 -3
  22. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow.js +3 -3
  23. package/dist/synthetic-shadow/umd/es2017/synthetic-shadow_debug.js +3 -3
  24. package/dist/synthetic-shadow/umd/es5/synthetic-shadow.js +3 -3
  25. package/dist/synthetic-shadow/umd/es5/synthetic-shadow_debug.js +3 -3
  26. package/dist/wire-service/esm/es2017/wire-service.js +2 -2
  27. package/dist/wire-service/iife/es2017/wire-service.js +2 -2
  28. package/dist/wire-service/iife/es2017/wire-service_debug.js +2 -2
  29. package/dist/wire-service/iife/es5/wire-service.js +2 -2
  30. package/dist/wire-service/iife/es5/wire-service_debug.js +2 -2
  31. package/dist/wire-service/umd/es2017/wire-service.js +2 -2
  32. package/dist/wire-service/umd/es2017/wire-service_debug.js +2 -2
  33. package/dist/wire-service/umd/es5/wire-service.js +2 -2
  34. package/dist/wire-service/umd/es5/wire-service_debug.js +2 -2
  35. package/package.json +7 -7
@@ -347,7 +347,7 @@ var LWC = (function (exports) {
347
347
  var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace';
348
348
  var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
349
349
  var XLINK_NAMESPACE = 'http://www.w3.org/1999/xlink';
350
- /** version: 2.13.4 */
350
+ /** version: 2.14.2 */
351
351
 
352
352
  /*
353
353
  * Copyright (c) 2018, salesforce.com, inc.
@@ -608,231 +608,6 @@ var LWC = (function (exports) {
608
608
 
609
609
  return result;
610
610
  }
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
611
  /*
837
612
  * Copyright (c) 2019, salesforce.com, inc.
838
613
  * All rights reserved.
@@ -2010,13 +1785,14 @@ var LWC = (function (exports) {
2010
1785
  };
2011
1786
 
2012
1787
  function doAttachShadow(vm) {
2013
- var _attachShadow$;
1788
+ var _attachShadow;
2014
1789
 
2015
1790
  var elm = vm.elm,
2016
1791
  mode = vm.mode,
2017
1792
  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$));
1793
+ ctor = vm.def.ctor,
1794
+ attachShadow = vm.renderer.attachShadow;
1795
+ var shadowRoot = attachShadow(elm, (_attachShadow = {}, _defineProperty(_attachShadow, KEY__SYNTHETIC_MODE, shadowMode === 1), _defineProperty(_attachShadow, "delegatesFocus", Boolean(ctor.delegatesFocus)), _defineProperty(_attachShadow, "mode", mode), _attachShadow));
2020
1796
  vm.shadowRoot = shadowRoot;
2021
1797
  associateVM(shadowRoot, vm);
2022
1798
 
@@ -2027,99 +1803,106 @@ var LWC = (function (exports) {
2027
1803
  LightningElement.prototype = {
2028
1804
  constructor: LightningElement,
2029
1805
  dispatchEvent: function dispatchEvent(event) {
2030
- var _getAssociatedVM = getAssociatedVM(this),
2031
- elm = _getAssociatedVM.elm;
2032
-
2033
- return dispatchEvent$1(elm, event);
1806
+ var vm = getAssociatedVM(this);
1807
+ var elm = vm.elm,
1808
+ dispatchEvent = vm.renderer.dispatchEvent;
1809
+ return dispatchEvent(elm, event);
2034
1810
  },
2035
1811
  addEventListener: function addEventListener(type, listener, options) {
2036
1812
  var vm = getAssociatedVM(this);
2037
- var elm = vm.elm;
1813
+ var elm = vm.elm,
1814
+ addEventListener = vm.renderer.addEventListener;
2038
1815
 
2039
1816
  var wrappedListener = getWrappedComponentsListener(vm, listener);
2040
- addEventListener$1(elm, type, wrappedListener, options);
1817
+ addEventListener(elm, type, wrappedListener, options);
2041
1818
  },
2042
1819
  removeEventListener: function removeEventListener(type, listener, options) {
2043
1820
  var vm = getAssociatedVM(this);
2044
- var elm = vm.elm;
1821
+ var elm = vm.elm,
1822
+ removeEventListener = vm.renderer.removeEventListener;
2045
1823
  var wrappedListener = getWrappedComponentsListener(vm, listener);
2046
- removeEventListener$1(elm, type, wrappedListener, options);
1824
+ removeEventListener(elm, type, wrappedListener, options);
2047
1825
  },
2048
1826
  hasAttribute: function hasAttribute(name) {
2049
- var _getAssociatedVM2 = getAssociatedVM(this),
2050
- elm = _getAssociatedVM2.elm;
2051
-
2052
- return !isNull(getAttribute$1(elm, name));
1827
+ var vm = getAssociatedVM(this);
1828
+ var elm = vm.elm,
1829
+ getAttribute = vm.renderer.getAttribute;
1830
+ return !isNull(getAttribute(elm, name));
2053
1831
  },
2054
1832
  hasAttributeNS: function hasAttributeNS(namespace, name) {
2055
- var _getAssociatedVM3 = getAssociatedVM(this),
2056
- elm = _getAssociatedVM3.elm;
2057
-
2058
- return !isNull(getAttribute$1(elm, name, namespace));
1833
+ var vm = getAssociatedVM(this);
1834
+ var elm = vm.elm,
1835
+ getAttribute = vm.renderer.getAttribute;
1836
+ return !isNull(getAttribute(elm, name, namespace));
2059
1837
  },
2060
1838
  removeAttribute: function removeAttribute(name) {
2061
- var _getAssociatedVM4 = getAssociatedVM(this),
2062
- elm = _getAssociatedVM4.elm;
2063
-
1839
+ var vm = getAssociatedVM(this);
1840
+ var elm = vm.elm,
1841
+ removeAttribute = vm.renderer.removeAttribute;
2064
1842
  unlockAttribute(elm, name);
2065
- removeAttribute$1(elm, name);
1843
+ removeAttribute(elm, name);
2066
1844
  lockAttribute();
2067
1845
  },
2068
1846
  removeAttributeNS: function removeAttributeNS(namespace, name) {
2069
- var _getAssociatedVM5 = getAssociatedVM(this),
2070
- elm = _getAssociatedVM5.elm;
1847
+ var _getAssociatedVM = getAssociatedVM(this),
1848
+ elm = _getAssociatedVM.elm,
1849
+ removeAttribute = _getAssociatedVM.renderer.removeAttribute;
2071
1850
 
2072
1851
  unlockAttribute(elm, name);
2073
- removeAttribute$1(elm, name, namespace);
1852
+ removeAttribute(elm, name, namespace);
2074
1853
  lockAttribute();
2075
1854
  },
2076
1855
  getAttribute: function getAttribute(name) {
2077
- var _getAssociatedVM6 = getAssociatedVM(this),
2078
- elm = _getAssociatedVM6.elm;
2079
-
2080
- return getAttribute$1(elm, name);
1856
+ var vm = getAssociatedVM(this);
1857
+ var elm = vm.elm;
1858
+ var getAttribute = vm.renderer.getAttribute;
1859
+ return getAttribute(elm, name);
2081
1860
  },
2082
1861
  getAttributeNS: function getAttributeNS(namespace, name) {
2083
- var _getAssociatedVM7 = getAssociatedVM(this),
2084
- elm = _getAssociatedVM7.elm;
2085
-
2086
- return getAttribute$1(elm, name, namespace);
1862
+ var vm = getAssociatedVM(this);
1863
+ var elm = vm.elm;
1864
+ var getAttribute = vm.renderer.getAttribute;
1865
+ return getAttribute(elm, name, namespace);
2087
1866
  },
2088
1867
  setAttribute: function setAttribute(name, value) {
2089
1868
  var vm = getAssociatedVM(this);
2090
- var elm = vm.elm;
1869
+ var elm = vm.elm,
1870
+ setAttribute = vm.renderer.setAttribute;
2091
1871
 
2092
1872
  unlockAttribute(elm, name);
2093
- setAttribute$1(elm, name, value);
1873
+ setAttribute(elm, name, value);
2094
1874
  lockAttribute();
2095
1875
  },
2096
1876
  setAttributeNS: function setAttributeNS(namespace, name, value) {
2097
1877
  var vm = getAssociatedVM(this);
2098
- var elm = vm.elm;
1878
+ var elm = vm.elm,
1879
+ setAttribute = vm.renderer.setAttribute;
2099
1880
 
2100
1881
  unlockAttribute(elm, name);
2101
- setAttribute$1(elm, name, value, namespace);
1882
+ setAttribute(elm, name, value, namespace);
2102
1883
  lockAttribute();
2103
1884
  },
2104
1885
  getBoundingClientRect: function getBoundingClientRect() {
2105
1886
  var vm = getAssociatedVM(this);
2106
- var elm = vm.elm;
1887
+ var elm = vm.elm,
1888
+ getBoundingClientRect = vm.renderer.getBoundingClientRect;
2107
1889
 
2108
- return getBoundingClientRect$1(elm);
1890
+ return getBoundingClientRect(elm);
2109
1891
  },
2110
1892
 
2111
1893
  get isConnected() {
2112
- var _getAssociatedVM8 = getAssociatedVM(this),
2113
- elm = _getAssociatedVM8.elm;
2114
-
2115
- return isConnected$1(elm);
1894
+ var vm = getAssociatedVM(this);
1895
+ var elm = vm.elm,
1896
+ isConnected = vm.renderer.isConnected;
1897
+ return isConnected(elm);
2116
1898
  },
2117
1899
 
2118
1900
  get classList() {
2119
1901
  var vm = getAssociatedVM(this);
2120
- var elm = vm.elm;
1902
+ var elm = vm.elm,
1903
+ getClassList = vm.renderer.getClassList;
2121
1904
 
2122
- return getClassList$1(elm);
1905
+ return getClassList(elm);
2123
1906
  },
2124
1907
 
2125
1908
  get template() {
@@ -2134,89 +1917,69 @@ var LWC = (function (exports) {
2134
1917
  return null;
2135
1918
  },
2136
1919
 
2137
- render: function render() {
1920
+ get children() {
2138
1921
  var vm = getAssociatedVM(this);
2139
- return vm.def.template;
2140
- },
2141
- toString: function toString() {
2142
- 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.
2149
-
2150
- var childGetters = ['children', 'childNodes', 'firstChild', 'firstElementChild', 'lastChild', 'lastElementChild'];
2151
-
2152
- function getChildGetter(methodName) {
2153
- switch (methodName) {
2154
- case 'children':
2155
- return getChildren$1;
1922
+ var renderer = vm.renderer;
2156
1923
 
2157
- case 'childNodes':
2158
- return getChildNodes$1;
2159
-
2160
- case 'firstChild':
2161
- return getFirstChild$1;
2162
-
2163
- case 'firstElementChild':
2164
- return getFirstElementChild$1;
1924
+ return renderer.getChildren(vm.elm);
1925
+ },
2165
1926
 
2166
- case 'lastChild':
2167
- return getLastChild$1;
1927
+ get childNodes() {
1928
+ var vm = getAssociatedVM(this);
1929
+ var renderer = vm.renderer;
2168
1930
 
2169
- case 'lastElementChild':
2170
- return getLastElementChild$1;
2171
- }
2172
- } // Generic passthrough for child getters on HTMLElement to the relevant Renderer APIs
1931
+ return renderer.getChildNodes(vm.elm);
1932
+ },
2173
1933
 
1934
+ get firstChild() {
1935
+ var vm = getAssociatedVM(this);
1936
+ var renderer = vm.renderer;
2174
1937
 
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;
1938
+ return renderer.getFirstChild(vm.elm);
1939
+ },
2181
1940
 
2182
- return getChildGetter(childGetter)(elm);
2183
- },
2184
- configurable: true,
2185
- enumerable: true
2186
- };
2187
- };
1941
+ get firstElementChild() {
1942
+ var vm = getAssociatedVM(this);
1943
+ var renderer = vm.renderer;
2188
1944
 
2189
- for (var _i7 = 0, _childGetters = childGetters; _i7 < _childGetters.length; _i7++) {
2190
- _loop();
2191
- }
1945
+ return renderer.getFirstElementChild(vm.elm);
1946
+ },
2192
1947
 
2193
- var queryMethods = ['getElementsByClassName', 'getElementsByTagName', 'querySelector', 'querySelectorAll'];
1948
+ get lastChild() {
1949
+ var vm = getAssociatedVM(this);
1950
+ var renderer = vm.renderer;
2194
1951
 
2195
- function getQueryMethod(methodName) {
2196
- switch (methodName) {
2197
- case 'getElementsByClassName':
2198
- return getElementsByClassName$1;
1952
+ return renderer.getLastChild(vm.elm);
1953
+ },
2199
1954
 
2200
- case 'getElementsByTagName':
2201
- return getElementsByTagName$1;
1955
+ get lastElementChild() {
1956
+ var vm = getAssociatedVM(this);
1957
+ var renderer = vm.renderer;
2202
1958
 
2203
- case 'querySelector':
2204
- return querySelector$1;
1959
+ return renderer.getLastElementChild(vm.elm);
1960
+ },
2205
1961
 
2206
- case 'querySelectorAll':
2207
- return querySelectorAll$1;
1962
+ render: function render() {
1963
+ var vm = getAssociatedVM(this);
1964
+ return vm.def.template;
1965
+ },
1966
+ toString: function toString() {
1967
+ var vm = getAssociatedVM(this);
1968
+ return "[object ".concat(vm.def.name, "]");
2208
1969
  }
2209
- } // Generic passthrough for query APIs on HTMLElement to the relevant Renderer APIs
2210
-
1970
+ };
1971
+ var queryAndChildGetterDescriptors = create(null);
1972
+ var queryMethods = ['getElementsByClassName', 'getElementsByTagName', 'querySelector', 'querySelectorAll']; // Generic passthrough for query APIs on HTMLElement to the relevant Renderer APIs
2211
1973
 
2212
- var _loop2 = function _loop2() {
2213
- var queryMethod = _queryMethods[_i8];
1974
+ var _loop = function _loop() {
1975
+ var queryMethod = _queryMethods[_i7];
2214
1976
  queryAndChildGetterDescriptors[queryMethod] = {
2215
1977
  value: function value(arg) {
2216
1978
  var vm = getAssociatedVM(this);
2217
- var elm = vm.elm;
1979
+ var elm = vm.elm,
1980
+ renderer = vm.renderer;
2218
1981
 
2219
- return getQueryMethod(queryMethod)(elm, arg);
1982
+ return renderer[queryMethod](elm, arg);
2220
1983
  },
2221
1984
  configurable: true,
2222
1985
  enumerable: true,
@@ -2224,8 +1987,8 @@ var LWC = (function (exports) {
2224
1987
  };
2225
1988
  };
2226
1989
 
2227
- for (var _i8 = 0, _queryMethods = queryMethods; _i8 < _queryMethods.length; _i8++) {
2228
- _loop2();
1990
+ for (var _i7 = 0, _queryMethods = queryMethods; _i7 < _queryMethods.length; _i7++) {
1991
+ _loop();
2229
1992
  }
2230
1993
 
2231
1994
  defineProperties(LightningElement.prototype, queryAndChildGetterDescriptors);
@@ -2585,8 +2348,8 @@ var LWC = (function (exports) {
2585
2348
  }
2586
2349
 
2587
2350
  if (!isUndefined$1(fields)) {
2588
- for (var _i9 = 0, n = fields.length; _i9 < n; _i9++) {
2589
- var _fieldName2 = fields[_i9];
2351
+ for (var _i8 = 0, n = fields.length; _i8 < n; _i8++) {
2352
+ var _fieldName2 = fields[_i8];
2590
2353
  descriptor = getOwnPropertyDescriptor$1(proto, _fieldName2);
2591
2354
  // tracked property. This is only here for backward compatibility purposes.
2592
2355
 
@@ -2840,8 +2603,8 @@ var LWC = (function (exports) {
2840
2603
  superObservedAttributes = _SuperClass$observedA === void 0 ? [] : _SuperClass$observedA;
2841
2604
  var descriptors = create(null); // expose getters and setters for each public props on the new Element Bridge
2842
2605
 
2843
- for (var _i10 = 0, len = props.length; _i10 < len; _i10 += 1) {
2844
- var _propName = props[_i10];
2606
+ for (var _i9 = 0, len = props.length; _i9 < len; _i9 += 1) {
2607
+ var _propName = props[_i9];
2845
2608
  attributeToPropMap[htmlPropertyToAttribute(_propName)] = _propName;
2846
2609
  descriptors[_propName] = {
2847
2610
  get: createGetter(_propName),
@@ -2852,8 +2615,8 @@ var LWC = (function (exports) {
2852
2615
  } // expose public methods as props on the new Element Bridge
2853
2616
 
2854
2617
 
2855
- for (var _i11 = 0, _len3 = methods.length; _i11 < _len3; _i11 += 1) {
2856
- var methodName = methods[_i11];
2618
+ for (var _i10 = 0, _len3 = methods.length; _i10 < _len3; _i10 += 1) {
2619
+ var methodName = methods[_i10];
2857
2620
  descriptors[methodName] = {
2858
2621
  value: createMethodCaller(methodName),
2859
2622
  writable: true,
@@ -3156,12 +2919,15 @@ var LWC = (function (exports) {
3156
2919
  */
3157
2920
 
3158
2921
 
3159
- function getUpgradableConstructor(tagName) {
3160
- // Should never get a tag with upper case letter at this point, the compiler should
2922
+ function getUpgradableConstructor(tagName, renderer) {
2923
+ var getCustomElement = renderer.getCustomElement,
2924
+ RendererHTMLElement = renderer.HTMLElementExported,
2925
+ defineCustomElement = renderer.defineCustomElement; // Should never get a tag with upper case letter at this point, the compiler should
3161
2926
  // produce only tags with lowercase letters
3162
2927
  // But, for backwards compatibility, we will lower case the tagName
2928
+
3163
2929
  tagName = tagName.toLowerCase();
3164
- var CE = getCustomElement$1(tagName);
2930
+ var CE = getCustomElement(tagName);
3165
2931
 
3166
2932
  if (!isUndefined$1(CE)) {
3167
2933
  return CE;
@@ -3172,8 +2938,8 @@ var LWC = (function (exports) {
3172
2938
  */
3173
2939
 
3174
2940
 
3175
- CE = /*#__PURE__*/function (_HTMLElementExported$) {
3176
- _inherits(LWCUpgradableElement, _HTMLElementExported$);
2941
+ CE = /*#__PURE__*/function (_RendererHTMLElement) {
2942
+ _inherits(LWCUpgradableElement, _RendererHTMLElement);
3177
2943
 
3178
2944
  var _super5 = _createSuper(LWCUpgradableElement);
3179
2945
 
@@ -3192,9 +2958,9 @@ var LWC = (function (exports) {
3192
2958
  }
3193
2959
 
3194
2960
  return _createClass(LWCUpgradableElement);
3195
- }(HTMLElementExported$1);
2961
+ }(RendererHTMLElement);
3196
2962
 
3197
- defineCustomElement$1(tagName, CE);
2963
+ defineCustomElement(tagName, CE);
3198
2964
  return CE;
3199
2965
  }
3200
2966
  /*
@@ -3227,7 +2993,7 @@ var LWC = (function (exports) {
3227
2993
 
3228
2994
  var ColonCharCode = 58;
3229
2995
 
3230
- function patchAttributes(oldVnode, vnode) {
2996
+ function patchAttributes(oldVnode, vnode, renderer) {
3231
2997
  var attrs = vnode.data.attrs;
3232
2998
 
3233
2999
  if (isUndefined$1(attrs)) {
@@ -3241,6 +3007,8 @@ var LWC = (function (exports) {
3241
3007
  }
3242
3008
 
3243
3009
  var elm = vnode.elm;
3010
+ var setAttribute = renderer.setAttribute,
3011
+ removeAttribute = renderer.removeAttribute;
3244
3012
 
3245
3013
  for (var key in attrs) {
3246
3014
  var cur = attrs[key];
@@ -3251,14 +3019,14 @@ var LWC = (function (exports) {
3251
3019
 
3252
3020
  if (StringCharCodeAt.call(key, 3) === ColonCharCode) {
3253
3021
  // Assume xml namespace
3254
- setAttribute$1(elm, key, cur, XML_NAMESPACE);
3022
+ setAttribute(elm, key, cur, XML_NAMESPACE);
3255
3023
  } else if (StringCharCodeAt.call(key, 5) === ColonCharCode) {
3256
3024
  // Assume xlink namespace
3257
- setAttribute$1(elm, key, cur, XLINK_NAMESPACE);
3025
+ setAttribute(elm, key, cur, XLINK_NAMESPACE);
3258
3026
  } else if (isNull(cur) || isUndefined$1(cur)) {
3259
- removeAttribute$1(elm, key);
3027
+ removeAttribute(elm, key);
3260
3028
  } else {
3261
- setAttribute$1(elm, key, cur);
3029
+ setAttribute(elm, key, cur);
3262
3030
  }
3263
3031
 
3264
3032
  lockAttribute();
@@ -3279,7 +3047,7 @@ var LWC = (function (exports) {
3279
3047
  return sel === 'input' && (key === 'value' || key === 'checked');
3280
3048
  }
3281
3049
 
3282
- function patchProps(oldVnode, vnode) {
3050
+ function patchProps(oldVnode, vnode, renderer) {
3283
3051
  var props = vnode.data.props;
3284
3052
 
3285
3053
  if (isUndefined$1(props)) {
@@ -3295,13 +3063,15 @@ var LWC = (function (exports) {
3295
3063
  var isFirstPatch = isNull(oldVnode);
3296
3064
  var elm = vnode.elm,
3297
3065
  sel = vnode.sel;
3066
+ var getProperty = renderer.getProperty,
3067
+ setProperty = renderer.setProperty;
3298
3068
 
3299
3069
  for (var key in props) {
3300
3070
  var cur = props[key]; // Set the property if it's the first time is is patched or if the previous property is
3301
3071
  // different than the one previously set.
3302
3072
 
3303
- if (isFirstPatch || cur !== (isLiveBindingProp(sel, key) ? getProperty$1(elm, key) : oldProps[key])) {
3304
- setProperty$1(elm, key, cur);
3073
+ if (isFirstPatch || cur !== (isLiveBindingProp(sel, key) ? getProperty(elm, key) : oldProps[key])) {
3074
+ setProperty(elm, key, cur);
3305
3075
  }
3306
3076
  }
3307
3077
  }
@@ -3353,7 +3123,7 @@ var LWC = (function (exports) {
3353
3123
  return map;
3354
3124
  }
3355
3125
 
3356
- function patchClassAttribute(oldVnode, vnode) {
3126
+ function patchClassAttribute(oldVnode, vnode, renderer) {
3357
3127
  var elm = vnode.elm,
3358
3128
  newClass = vnode.data.className;
3359
3129
  var oldClass = isNull(oldVnode) ? undefined : oldVnode.data.className;
@@ -3362,7 +3132,8 @@ var LWC = (function (exports) {
3362
3132
  return;
3363
3133
  }
3364
3134
 
3365
- var classList = getClassList$1(elm);
3135
+ var getClassList = renderer.getClassList;
3136
+ var classList = getClassList(elm);
3366
3137
  var newClassMap = getMapFromClassName(newClass);
3367
3138
  var oldClassMap = getMapFromClassName(oldClass);
3368
3139
  var name;
@@ -3389,7 +3160,7 @@ var LWC = (function (exports) {
3389
3160
  // The style property is a string when defined via an expression in the template.
3390
3161
 
3391
3162
 
3392
- function patchStyleAttribute(oldVnode, vnode) {
3163
+ function patchStyleAttribute(oldVnode, vnode, renderer) {
3393
3164
  var elm = vnode.elm,
3394
3165
  newStyle = vnode.data.style;
3395
3166
  var oldStyle = isNull(oldVnode) ? undefined : oldVnode.data.style;
@@ -3398,10 +3169,13 @@ var LWC = (function (exports) {
3398
3169
  return;
3399
3170
  }
3400
3171
 
3172
+ var setAttribute = renderer.setAttribute,
3173
+ removeAttribute = renderer.removeAttribute;
3174
+
3401
3175
  if (!isString(newStyle) || newStyle === '') {
3402
- removeAttribute$1(elm, 'style');
3176
+ removeAttribute(elm, 'style');
3403
3177
  } else {
3404
- setAttribute$1(elm, 'style', newStyle);
3178
+ setAttribute(elm, 'style', newStyle);
3405
3179
  }
3406
3180
  }
3407
3181
  /*
@@ -3412,7 +3186,7 @@ var LWC = (function (exports) {
3412
3186
  */
3413
3187
 
3414
3188
 
3415
- function applyEventListeners(vnode) {
3189
+ function applyEventListeners(vnode, renderer) {
3416
3190
  var elm = vnode.elm,
3417
3191
  on = vnode.data.on;
3418
3192
 
@@ -3420,9 +3194,11 @@ var LWC = (function (exports) {
3420
3194
  return;
3421
3195
  }
3422
3196
 
3197
+ var addEventListener = renderer.addEventListener;
3198
+
3423
3199
  for (var name in on) {
3424
3200
  var handler = on[name];
3425
- addEventListener$1(elm, name, handler);
3201
+ addEventListener(elm, name, handler);
3426
3202
  }
3427
3203
  }
3428
3204
  /*
@@ -3436,7 +3212,7 @@ var LWC = (function (exports) {
3436
3212
  // different classnames properties individually instead of via a string.
3437
3213
 
3438
3214
 
3439
- function applyStaticClassAttribute(vnode) {
3215
+ function applyStaticClassAttribute(vnode, renderer) {
3440
3216
  var elm = vnode.elm,
3441
3217
  classMap = vnode.data.classMap;
3442
3218
 
@@ -3444,7 +3220,8 @@ var LWC = (function (exports) {
3444
3220
  return;
3445
3221
  }
3446
3222
 
3447
- var classList = getClassList$1(elm);
3223
+ var getClassList = renderer.getClassList;
3224
+ var classList = getClassList(elm);
3448
3225
 
3449
3226
  for (var name in classMap) {
3450
3227
  classList.add(name);
@@ -3461,7 +3238,7 @@ var LWC = (function (exports) {
3461
3238
  // different style properties individually instead of via a string.
3462
3239
 
3463
3240
 
3464
- function applyStaticStyleAttribute(vnode) {
3241
+ function applyStaticStyleAttribute(vnode, renderer) {
3465
3242
  var elm = vnode.elm,
3466
3243
  styleDecls = vnode.data.styleDecls;
3467
3244
 
@@ -3469,13 +3246,15 @@ var LWC = (function (exports) {
3469
3246
  return;
3470
3247
  }
3471
3248
 
3472
- for (var _i12 = 0; _i12 < styleDecls.length; _i12++) {
3473
- var _styleDecls$_i = _slicedToArray(styleDecls[_i12], 3),
3249
+ var setCSSStyleProperty = renderer.setCSSStyleProperty;
3250
+
3251
+ for (var _i11 = 0; _i11 < styleDecls.length; _i11++) {
3252
+ var _styleDecls$_i = _slicedToArray(styleDecls[_i11], 3),
3474
3253
  prop = _styleDecls$_i[0],
3475
3254
  value = _styleDecls$_i[1],
3476
3255
  important = _styleDecls$_i[2];
3477
3256
 
3478
- setCSSStyleProperty$1(elm, prop, value, important);
3257
+ setCSSStyleProperty(elm, prop, value, important);
3479
3258
  }
3480
3259
  }
3481
3260
  /*
@@ -3486,15 +3265,17 @@ var LWC = (function (exports) {
3486
3265
  */
3487
3266
 
3488
3267
 
3489
- function patchChildren(c1, c2, parent) {
3268
+ function patchChildren(c1, c2, parent, renderer) {
3490
3269
  if (hasDynamicChildren(c2)) {
3491
- updateDynamicChildren(c1, c2, parent);
3270
+ updateDynamicChildren(c1, c2, parent, renderer);
3492
3271
  } else {
3493
- updateStaticChildren(c1, c2, parent);
3272
+ updateStaticChildren(c1, c2, parent, renderer);
3494
3273
  }
3495
3274
  }
3496
3275
 
3497
- function patch(n1, n2) {
3276
+ function patch(n1, n2, renderer) {
3277
+ var _a, _b;
3278
+
3498
3279
  if (n1 === n2) {
3499
3280
  return;
3500
3281
  }
@@ -3503,112 +3284,123 @@ var LWC = (function (exports) {
3503
3284
  case 0
3504
3285
  /* Text */
3505
3286
  :
3506
- patchText(n1, n2);
3287
+ // VText has no special capability, fallback to the owner's renderer
3288
+ patchText(n1, n2, renderer);
3507
3289
  break;
3508
3290
 
3509
3291
  case 1
3510
3292
  /* Comment */
3511
3293
  :
3512
- patchComment(n1, n2);
3294
+ // VComment has no special capability, fallback to the owner's renderer
3295
+ patchComment(n1, n2, renderer);
3513
3296
  break;
3514
3297
 
3515
3298
  case 2
3516
3299
  /* Element */
3517
3300
  :
3518
- patchElement(n1, n2);
3301
+ patchElement(n1, n2, (_a = n2.data.renderer) !== null && _a !== void 0 ? _a : renderer);
3519
3302
  break;
3520
3303
 
3521
3304
  case 3
3522
3305
  /* CustomElement */
3523
3306
  :
3524
- patchCustomElement(n1, n2);
3307
+ patchCustomElement(n1, n2, (_b = n2.data.renderer) !== null && _b !== void 0 ? _b : renderer);
3525
3308
  break;
3526
3309
  }
3527
3310
  }
3528
3311
 
3529
- function mount(node, parent, anchor) {
3312
+ function mount(node, parent, renderer, anchor) {
3313
+ var _a, _b;
3314
+
3530
3315
  switch (node.type) {
3531
3316
  case 0
3532
3317
  /* Text */
3533
3318
  :
3534
- mountText(node, parent, anchor);
3319
+ // VText has no special capability, fallback to the owner's renderer
3320
+ mountText(node, parent, anchor, renderer);
3535
3321
  break;
3536
3322
 
3537
3323
  case 1
3538
3324
  /* Comment */
3539
3325
  :
3540
- mountComment(node, parent, anchor);
3326
+ // VComment has no special capability, fallback to the owner's renderer
3327
+ mountComment(node, parent, anchor, renderer);
3541
3328
  break;
3542
3329
 
3543
3330
  case 2
3544
3331
  /* Element */
3545
3332
  :
3546
- mountElement(node, parent, anchor);
3333
+ // If the vnode data has a renderer override use it, else fallback to owner's renderer
3334
+ mountElement(node, parent, anchor, (_a = node.data.renderer) !== null && _a !== void 0 ? _a : renderer);
3547
3335
  break;
3548
3336
 
3549
3337
  case 3
3550
3338
  /* CustomElement */
3551
3339
  :
3552
- mountCustomElement(node, parent, anchor);
3340
+ // If the vnode data has a renderer override use it, else fallback to owner's renderer
3341
+ mountCustomElement(node, parent, anchor, (_b = node.data.renderer) !== null && _b !== void 0 ? _b : renderer);
3553
3342
  break;
3554
3343
  }
3555
3344
  }
3556
3345
 
3557
- function patchText(n1, n2) {
3346
+ function patchText(n1, n2, renderer) {
3558
3347
  n2.elm = n1.elm;
3559
3348
 
3560
3349
  if (n2.text !== n1.text) {
3561
- updateTextContent(n2);
3350
+ updateTextContent(n2, renderer);
3562
3351
  }
3563
3352
  }
3564
3353
 
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);
3354
+ function mountText(vnode, parent, anchor, renderer) {
3355
+ var owner = vnode.owner;
3356
+ var createText = renderer.createText;
3357
+ var textNode = vnode.elm = createText(vnode.text);
3358
+ linkNodeToShadow(textNode, owner, renderer);
3359
+ insertNode(textNode, parent, anchor, renderer);
3570
3360
  }
3571
3361
 
3572
- function patchComment(n1, n2) {
3362
+ function patchComment(n1, n2, renderer) {
3573
3363
  n2.elm = n1.elm; // FIXME: Comment nodes should be static, we shouldn't need to diff them together. However
3574
3364
  // it is the case today.
3575
3365
 
3576
3366
  if (n2.text !== n1.text) {
3577
- updateTextContent(n2);
3367
+ updateTextContent(n2, renderer);
3578
3368
  }
3579
3369
  }
3580
3370
 
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);
3371
+ function mountComment(vnode, parent, anchor, renderer) {
3372
+ var owner = vnode.owner;
3373
+ var createComment = renderer.createComment;
3374
+ var commentNode = vnode.elm = createComment(vnode.text);
3375
+ linkNodeToShadow(commentNode, owner, renderer);
3376
+ insertNode(commentNode, parent, anchor, renderer);
3586
3377
  }
3587
3378
 
3588
- function mountElement(vnode, parent, anchor) {
3379
+ function mountElement(vnode, parent, anchor, renderer) {
3589
3380
  var sel = vnode.sel,
3590
3381
  owner = vnode.owner,
3591
3382
  svg = vnode.data.svg;
3383
+ var createElement = renderer.createElement;
3592
3384
  var namespace = isTrue(svg) ? SVG_NAMESPACE : undefined;
3593
- var elm = createElement$2(sel, namespace);
3594
- linkNodeToShadow(elm, owner);
3595
- fallbackElmHook(elm, vnode);
3385
+ var elm = createElement(sel, namespace);
3386
+ linkNodeToShadow(elm, owner, renderer);
3387
+ fallbackElmHook(elm, vnode, renderer);
3596
3388
  vnode.elm = elm;
3597
- patchElementPropsAndAttrs$1(null, vnode);
3598
- insertNode(elm, parent, anchor);
3599
- mountVNodes(vnode.children, elm, null);
3389
+ patchElementPropsAndAttrs$1(null, vnode, renderer);
3390
+ insertNode(elm, parent, anchor, renderer);
3391
+ mountVNodes(vnode.children, elm, renderer, null);
3600
3392
  }
3601
3393
 
3602
- function patchElement(n1, n2) {
3394
+ function patchElement(n1, n2, renderer) {
3603
3395
  var elm = n2.elm = n1.elm;
3604
- patchElementPropsAndAttrs$1(n1, n2);
3605
- patchChildren(n1.children, n2.children, elm);
3396
+ patchElementPropsAndAttrs$1(n1, n2, renderer);
3397
+ patchChildren(n1.children, n2.children, elm, renderer);
3606
3398
  }
3607
3399
 
3608
- function mountCustomElement(vnode, parent, anchor) {
3400
+ function mountCustomElement(vnode, parent, anchor, renderer) {
3609
3401
  var sel = vnode.sel,
3610
3402
  owner = vnode.owner;
3611
- var UpgradableConstructor = getUpgradableConstructor(sel);
3403
+ var UpgradableConstructor = getUpgradableConstructor(sel, renderer);
3612
3404
  /**
3613
3405
  * Note: if the upgradable constructor does not expect, or throw when we new it
3614
3406
  * with a callback as the first argument, we could implement a more advanced
@@ -3619,9 +3411,9 @@ var LWC = (function (exports) {
3619
3411
  var vm;
3620
3412
  var elm = new UpgradableConstructor(function (elm) {
3621
3413
  // the custom element from the registry is expecting an upgrade callback
3622
- vm = createViewModelHook(elm, vnode);
3414
+ vm = createViewModelHook(elm, vnode, renderer);
3623
3415
  });
3624
- linkNodeToShadow(elm, owner);
3416
+ linkNodeToShadow(elm, owner, renderer);
3625
3417
  vnode.elm = elm;
3626
3418
  vnode.vm = vm;
3627
3419
 
@@ -3631,25 +3423,25 @@ var LWC = (function (exports) {
3631
3423
  throw new TypeError("Incorrect Component Constructor");
3632
3424
  }
3633
3425
 
3634
- patchElementPropsAndAttrs$1(null, vnode);
3635
- insertNode(elm, parent, anchor);
3426
+ patchElementPropsAndAttrs$1(null, vnode, renderer);
3427
+ insertNode(elm, parent, anchor, renderer);
3636
3428
 
3637
3429
  if (vm) {
3638
3430
 
3639
3431
  runConnectedCallback(vm);
3640
3432
  }
3641
3433
 
3642
- mountVNodes(vnode.children, elm, null);
3434
+ mountVNodes(vnode.children, elm, renderer, null);
3643
3435
 
3644
3436
  if (vm) {
3645
3437
  appendVM(vm);
3646
3438
  }
3647
3439
  }
3648
3440
 
3649
- function patchCustomElement(n1, n2) {
3441
+ function patchCustomElement(n1, n2, renderer) {
3650
3442
  var elm = n2.elm = n1.elm;
3651
3443
  var vm = n2.vm = n1.vm;
3652
- patchElementPropsAndAttrs$1(n1, n2);
3444
+ patchElementPropsAndAttrs$1(n1, n2, renderer);
3653
3445
 
3654
3446
  if (!isUndefined$1(vm)) {
3655
3447
  // in fallback mode, the allocation will always set children to
@@ -3659,7 +3451,7 @@ var LWC = (function (exports) {
3659
3451
  // will happen, but in native, it does allocate the light dom
3660
3452
 
3661
3453
 
3662
- patchChildren(n1.children, n2.children, elm);
3454
+ patchChildren(n1.children, n2.children, elm, renderer);
3663
3455
 
3664
3456
  if (!isUndefined$1(vm)) {
3665
3457
  // this will probably update the shadowRoot, but only if the vm is in a dirty state
@@ -3668,38 +3460,45 @@ var LWC = (function (exports) {
3668
3460
  }
3669
3461
  }
3670
3462
 
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;
3463
+ function mountVNodes(vnodes, parent, renderer, anchor) {
3464
+ var start = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
3465
+ var end = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : vnodes.length;
3674
3466
 
3675
3467
  for (; start < end; ++start) {
3676
3468
  var vnode = vnodes[start];
3677
3469
 
3678
3470
  if (isVNode(vnode)) {
3679
- mount(vnode, parent, anchor);
3471
+ mount(vnode, parent, renderer, anchor);
3680
3472
  }
3681
3473
  }
3682
3474
  }
3683
3475
 
3684
- function unmount(vnode, parent) {
3685
- var doRemove = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
3476
+ function unmount(vnode, parent, renderer) {
3477
+ var doRemove = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
3686
3478
  var type = vnode.type,
3687
3479
  elm = vnode.elm,
3688
3480
  sel = vnode.sel; // When unmounting a VNode subtree not all the elements have to removed from the DOM. The
3689
3481
  // subtree root, is the only element worth unmounting from the subtree.
3690
3482
 
3691
3483
  if (doRemove) {
3692
- removeNode(elm, parent);
3484
+ // The vnode might or might not have a data.renderer associated to it
3485
+ // but the removal used here is from the owner instead.
3486
+ removeNode(elm, parent, renderer);
3693
3487
  }
3694
3488
 
3695
- var removeChildren = sel === 'slot'; // slot content is removed to trigger slotchange event when removing slot
3696
-
3697
3489
  switch (type) {
3698
3490
  case 2
3699
3491
  /* Element */
3700
3492
  :
3701
- unmountVNodes(vnode.children, elm, removeChildren);
3702
- break;
3493
+ {
3494
+ // Slot content is removed to trigger slotchange event when removing slot.
3495
+ // Only required for synthetic shadow.
3496
+ var shouldRemoveChildren = sel === 'slot' && vnode.owner.shadowMode === 1
3497
+ /* Synthetic */
3498
+ ;
3499
+ unmountVNodes(vnode.children, elm, renderer, shouldRemoveChildren);
3500
+ break;
3501
+ }
3703
3502
 
3704
3503
  case 3
3705
3504
  /* CustomElement */
@@ -3715,16 +3514,16 @@ var LWC = (function (exports) {
3715
3514
  }
3716
3515
  }
3717
3516
 
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;
3517
+ function unmountVNodes(vnodes, parent, renderer) {
3518
+ var doRemove = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
3519
+ var start = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
3520
+ var end = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : vnodes.length;
3722
3521
 
3723
3522
  for (; start < end; ++start) {
3724
3523
  var ch = vnodes[start];
3725
3524
 
3726
3525
  if (isVNode(ch)) {
3727
- unmount(ch, parent, doRemove);
3526
+ unmount(ch, parent, renderer, doRemove);
3728
3527
  }
3729
3528
  }
3730
3529
  }
@@ -3742,22 +3541,26 @@ var LWC = (function (exports) {
3742
3541
  } // Set the scope token class for *.scoped.css styles
3743
3542
 
3744
3543
 
3745
- function setScopeTokenClassIfNecessary(elm, owner) {
3544
+ function setScopeTokenClassIfNecessary(elm, owner, renderer) {
3746
3545
  var cmpTemplate = owner.cmpTemplate,
3747
3546
  context = owner.context;
3547
+ var getClassList = renderer.getClassList;
3748
3548
  var token = cmpTemplate === null || cmpTemplate === void 0 ? void 0 : cmpTemplate.stylesheetToken;
3749
3549
 
3750
3550
  if (!isUndefined$1(token) && context.hasScopedStyles) {
3751
- getClassList$1(elm).add(token);
3551
+ // TODO [#2762]: this dot notation with add is probably problematic
3552
+ // probably we should have a renderer api for just the add operation
3553
+ getClassList(elm).add(token);
3752
3554
  }
3753
3555
  }
3754
3556
 
3755
- function linkNodeToShadow(elm, owner) {
3557
+ function linkNodeToShadow(elm, owner, renderer) {
3756
3558
  var renderRoot = owner.renderRoot,
3757
3559
  renderMode = owner.renderMode,
3758
- shadowMode = owner.shadowMode; // TODO [#1164]: this should eventually be done by the polyfill directly
3560
+ shadowMode = owner.shadowMode;
3561
+ var isSyntheticShadowDefined = renderer.isSyntheticShadowDefined; // TODO [#1164]: this should eventually be done by the polyfill directly
3759
3562
 
3760
- if (isSyntheticShadowDefined$1) {
3563
+ if (isSyntheticShadowDefined) {
3761
3564
  if (shadowMode === 1
3762
3565
  /* Synthetic */
3763
3566
  || renderMode === 0
@@ -3768,41 +3571,42 @@ var LWC = (function (exports) {
3768
3571
  }
3769
3572
  }
3770
3573
 
3771
- function updateTextContent(vnode) {
3574
+ function updateTextContent(vnode, renderer) {
3772
3575
  var elm = vnode.elm,
3773
3576
  text = vnode.text;
3577
+ var setText = renderer.setText;
3774
3578
 
3775
- setText$1(elm, text);
3579
+ setText(elm, text);
3776
3580
  }
3777
3581
 
3778
- function insertNode(node, parent, anchor) {
3582
+ function insertNode(node, parent, anchor, renderer) {
3779
3583
 
3780
- insert$1(node, parent, anchor);
3584
+ renderer.insert(node, parent, anchor);
3781
3585
  }
3782
3586
 
3783
- function removeNode(node, parent) {
3587
+ function removeNode(node, parent, renderer) {
3784
3588
 
3785
- remove$1(node, parent);
3589
+ renderer.remove(node, parent);
3786
3590
  }
3787
3591
 
3788
- function patchElementPropsAndAttrs$1(oldVnode, vnode) {
3592
+ function patchElementPropsAndAttrs$1(oldVnode, vnode, renderer) {
3789
3593
  if (isNull(oldVnode)) {
3790
- applyEventListeners(vnode);
3791
- applyStaticClassAttribute(vnode);
3792
- applyStaticStyleAttribute(vnode);
3594
+ applyEventListeners(vnode, renderer);
3595
+ applyStaticClassAttribute(vnode, renderer);
3596
+ applyStaticStyleAttribute(vnode, renderer);
3793
3597
  } // Attrs need to be applied to element before props IE11 will wipe out value on radio inputs if
3794
3598
  // value is set before type=radio.
3795
3599
 
3796
3600
 
3797
- patchClassAttribute(oldVnode, vnode);
3798
- patchStyleAttribute(oldVnode, vnode);
3799
- patchAttributes(oldVnode, vnode);
3800
- patchProps(oldVnode, vnode);
3601
+ patchClassAttribute(oldVnode, vnode, renderer);
3602
+ patchStyleAttribute(oldVnode, vnode, renderer);
3603
+ patchAttributes(oldVnode, vnode, renderer);
3604
+ patchProps(oldVnode, vnode, renderer);
3801
3605
  }
3802
3606
 
3803
- function fallbackElmHook(elm, vnode) {
3607
+ function fallbackElmHook(elm, vnode, renderer) {
3804
3608
  var owner = vnode.owner;
3805
- setScopeTokenClassIfNecessary(elm, owner);
3609
+ setScopeTokenClassIfNecessary(elm, owner, renderer);
3806
3610
 
3807
3611
  if (owner.shadowMode === 1
3808
3612
  /* Synthetic */
@@ -3855,7 +3659,7 @@ var LWC = (function (exports) {
3855
3659
  }
3856
3660
  }
3857
3661
 
3858
- function createViewModelHook(elm, vnode) {
3662
+ function createViewModelHook(elm, vnode, renderer) {
3859
3663
  var vm = getAssociatedVMIfPresent(elm); // There is a possibility that a custom element is registered under tagName, in which case, the
3860
3664
  // initialization is already carry on, and there is nothing else to do here since this hook is
3861
3665
  // called right after invoking `document.createElement`.
@@ -3868,7 +3672,7 @@ var LWC = (function (exports) {
3868
3672
  mode = vnode.mode,
3869
3673
  ctor = vnode.ctor,
3870
3674
  owner = vnode.owner;
3871
- setScopeTokenClassIfNecessary(elm, owner);
3675
+ setScopeTokenClassIfNecessary(elm, owner, renderer);
3872
3676
 
3873
3677
  if (owner.shadowMode === 1
3874
3678
  /* Synthetic */
@@ -3881,7 +3685,7 @@ var LWC = (function (exports) {
3881
3685
  }
3882
3686
  }
3883
3687
 
3884
- vm = createVM(elm, ctor, {
3688
+ vm = createVM(elm, ctor, renderer, {
3885
3689
  mode: mode,
3886
3690
  owner: owner,
3887
3691
  tagName: sel
@@ -3896,8 +3700,8 @@ var LWC = (function (exports) {
3896
3700
  var oldSlots = vm.cmpSlots;
3897
3701
  var cmpSlots = vm.cmpSlots = create(null);
3898
3702
 
3899
- for (var _i13 = 0, len = children.length; _i13 < len; _i13 += 1) {
3900
- var vnode = children[_i13];
3703
+ for (var _i12 = 0, len = children.length; _i12 < len; _i12 += 1) {
3704
+ var vnode = children[_i12];
3901
3705
 
3902
3706
  if (isNull(vnode)) {
3903
3707
  continue;
@@ -3923,8 +3727,8 @@ var LWC = (function (exports) {
3923
3727
  return;
3924
3728
  }
3925
3729
 
3926
- for (var _i14 = 0, _len4 = oldKeys.length; _i14 < _len4; _i14 += 1) {
3927
- var key = oldKeys[_i14];
3730
+ for (var _i13 = 0, _len4 = oldKeys.length; _i13 < _len4; _i13 += 1) {
3731
+ var key = oldKeys[_i13];
3928
3732
 
3929
3733
  if (isUndefined$1(cmpSlots[key]) || oldSlots[key].length !== cmpSlots[key].length) {
3930
3734
  markComponentAsDirty(vm);
@@ -3974,7 +3778,7 @@ var LWC = (function (exports) {
3974
3778
  return map;
3975
3779
  }
3976
3780
 
3977
- function updateDynamicChildren(oldCh, newCh, parent) {
3781
+ function updateDynamicChildren(oldCh, newCh, parent, renderer) {
3978
3782
  var oldStartIdx = 0;
3979
3783
  var newStartIdx = 0;
3980
3784
  var oldEndIdx = oldCh.length - 1;
@@ -4000,23 +3804,23 @@ var LWC = (function (exports) {
4000
3804
  } else if (!isVNode(newEndVnode)) {
4001
3805
  newEndVnode = newCh[--newEndIdx];
4002
3806
  } else if (isSameVnode(oldStartVnode, newStartVnode)) {
4003
- patch(oldStartVnode, newStartVnode);
3807
+ patch(oldStartVnode, newStartVnode, renderer);
4004
3808
  oldStartVnode = oldCh[++oldStartIdx];
4005
3809
  newStartVnode = newCh[++newStartIdx];
4006
3810
  } else if (isSameVnode(oldEndVnode, newEndVnode)) {
4007
- patch(oldEndVnode, newEndVnode);
3811
+ patch(oldEndVnode, newEndVnode, renderer);
4008
3812
  oldEndVnode = oldCh[--oldEndIdx];
4009
3813
  newEndVnode = newCh[--newEndIdx];
4010
3814
  } else if (isSameVnode(oldStartVnode, newEndVnode)) {
4011
3815
  // Vnode moved right
4012
- patch(oldStartVnode, newEndVnode);
4013
- insertNode(oldStartVnode.elm, parent, nextSibling$1(oldEndVnode.elm));
3816
+ patch(oldStartVnode, newEndVnode, renderer);
3817
+ insertNode(oldStartVnode.elm, parent, renderer.nextSibling(oldEndVnode.elm), renderer);
4014
3818
  oldStartVnode = oldCh[++oldStartIdx];
4015
3819
  newEndVnode = newCh[--newEndIdx];
4016
3820
  } else if (isSameVnode(oldEndVnode, newStartVnode)) {
4017
3821
  // Vnode moved left
4018
- patch(oldEndVnode, newStartVnode);
4019
- insertNode(newStartVnode.elm, parent, oldStartVnode.elm);
3822
+ patch(oldEndVnode, newStartVnode, renderer);
3823
+ insertNode(newStartVnode.elm, parent, oldStartVnode.elm, renderer);
4020
3824
  oldEndVnode = oldCh[--oldEndIdx];
4021
3825
  newStartVnode = newCh[++newStartIdx];
4022
3826
  } else {
@@ -4028,7 +3832,7 @@ var LWC = (function (exports) {
4028
3832
 
4029
3833
  if (isUndefined$1(idxInOld)) {
4030
3834
  // New element
4031
- mount(newStartVnode, parent, oldStartVnode.elm);
3835
+ mount(newStartVnode, parent, renderer, oldStartVnode.elm);
4032
3836
  newStartVnode = newCh[++newStartIdx];
4033
3837
  } else {
4034
3838
  elmToMove = oldCh[idxInOld];
@@ -4036,9 +3840,9 @@ var LWC = (function (exports) {
4036
3840
  if (isVNode(elmToMove)) {
4037
3841
  if (elmToMove.sel !== newStartVnode.sel) {
4038
3842
  // New element
4039
- mount(newStartVnode, parent, oldStartVnode.elm);
3843
+ mount(newStartVnode, parent, renderer, oldStartVnode.elm);
4040
3844
  } else {
4041
- patch(elmToMove, newStartVnode); // Delete the old child, but copy the array since it is read-only.
3845
+ patch(elmToMove, newStartVnode, renderer); // Delete the old child, but copy the array since it is read-only.
4042
3846
  // The `oldCh` will be GC'ed after `updateDynamicChildren` is complete,
4043
3847
  // so we only care about the `oldCh` object inside this function.
4044
3848
  // To avoid cloning over and over again, we check `clonedOldCh`
@@ -4051,7 +3855,7 @@ var LWC = (function (exports) {
4051
3855
 
4052
3856
 
4053
3857
  oldCh[idxInOld] = undefined;
4054
- insertNode(elmToMove.elm, parent, oldStartVnode.elm);
3858
+ insertNode(elmToMove.elm, parent, oldStartVnode.elm, renderer);
4055
3859
  }
4056
3860
  }
4057
3861
 
@@ -4064,35 +3868,35 @@ var LWC = (function (exports) {
4064
3868
  if (oldStartIdx > oldEndIdx) {
4065
3869
  // There's some cases in which the sub array of vnodes to be inserted is followed by null(s) and an
4066
3870
  // already processed vnode, in such cases the vnodes to be inserted should be before that processed vnode.
4067
- var _i15 = newEndIdx;
3871
+ var _i14 = newEndIdx;
4068
3872
  var n;
4069
3873
 
4070
3874
  do {
4071
- n = newCh[++_i15];
4072
- } while (!isVNode(n) && _i15 < newChEnd);
3875
+ n = newCh[++_i14];
3876
+ } while (!isVNode(n) && _i14 < newChEnd);
4073
3877
 
4074
3878
  before = isVNode(n) ? n.elm : null;
4075
- mountVNodes(newCh, parent, before, newStartIdx, newEndIdx + 1);
3879
+ mountVNodes(newCh, parent, renderer, before, newStartIdx, newEndIdx + 1);
4076
3880
  } else {
4077
- unmountVNodes(oldCh, parent, true, oldStartIdx, oldEndIdx + 1);
3881
+ unmountVNodes(oldCh, parent, renderer, true, oldStartIdx, oldEndIdx + 1);
4078
3882
  }
4079
3883
  }
4080
3884
  }
4081
3885
 
4082
- function updateStaticChildren(c1, c2, parent) {
3886
+ function updateStaticChildren(c1, c2, parent, renderer) {
4083
3887
  var c1Length = c1.length;
4084
3888
  var c2Length = c2.length;
4085
3889
 
4086
3890
  if (c1Length === 0) {
4087
3891
  // the old list is empty, we can directly insert anything new
4088
- mountVNodes(c2, parent, null);
3892
+ mountVNodes(c2, parent, renderer, null);
4089
3893
  return;
4090
3894
  }
4091
3895
 
4092
3896
  if (c2Length === 0) {
4093
3897
  // the old list is nonempty and the new list is empty so we can directly remove all old nodes
4094
3898
  // this is the case in which the dynamic children of an if-directive should be removed
4095
- unmountVNodes(c1, parent, true);
3899
+ unmountVNodes(c1, parent, renderer, true);
4096
3900
  return;
4097
3901
  } // if the old list is not empty, the new list MUST have the same
4098
3902
  // amount of nodes, that's why we call this static children
@@ -4100,22 +3904,22 @@ var LWC = (function (exports) {
4100
3904
 
4101
3905
  var anchor = null;
4102
3906
 
4103
- for (var _i16 = c2Length - 1; _i16 >= 0; _i16 -= 1) {
4104
- var n1 = c1[_i16];
4105
- var n2 = c2[_i16];
3907
+ for (var _i15 = c2Length - 1; _i15 >= 0; _i15 -= 1) {
3908
+ var n1 = c1[_i15];
3909
+ var n2 = c2[_i15];
4106
3910
 
4107
3911
  if (n2 !== n1) {
4108
3912
  if (isVNode(n1)) {
4109
3913
  if (isVNode(n2)) {
4110
3914
  // both vnodes are equivalent, and we just need to patch them
4111
- patch(n1, n2);
3915
+ patch(n1, n2, renderer);
4112
3916
  anchor = n2.elm;
4113
3917
  } else {
4114
3918
  // removing the old vnode since the new one is null
4115
- unmount(n1, parent, true);
3919
+ unmount(n1, parent, renderer, true);
4116
3920
  }
4117
3921
  } else if (isVNode(n2)) {
4118
- mount(n2, parent, anchor);
3922
+ mount(n2, parent, renderer, anchor);
4119
3923
  anchor = n2.elm;
4120
3924
  }
4121
3925
  }
@@ -4527,7 +4331,11 @@ var LWC = (function (exports) {
4527
4331
  var elm = vm.elm,
4528
4332
  context = vm.context,
4529
4333
  renderMode = vm.renderMode,
4530
- shadowMode = vm.shadowMode;
4334
+ shadowMode = vm.shadowMode,
4335
+ _vm$renderer = vm.renderer,
4336
+ getClassList = _vm$renderer.getClassList,
4337
+ removeAttribute = _vm$renderer.removeAttribute,
4338
+ setAttribute = _vm$renderer.setAttribute;
4531
4339
  var newStylesheets = template.stylesheets,
4532
4340
  newStylesheetToken = template.stylesheetToken;
4533
4341
  var isSyntheticShadow = renderMode === 1
@@ -4546,11 +4354,11 @@ var LWC = (function (exports) {
4546
4354
 
4547
4355
  if (!isUndefined$1(oldToken)) {
4548
4356
  if (oldHasTokenInClass) {
4549
- getClassList$1(elm).remove(makeHostToken(oldToken));
4357
+ getClassList(elm).remove(makeHostToken(oldToken));
4550
4358
  }
4551
4359
 
4552
4360
  if (oldHasTokenInAttribute) {
4553
- removeAttribute$1(elm, makeHostToken(oldToken));
4361
+ removeAttribute(elm, makeHostToken(oldToken));
4554
4362
  }
4555
4363
  } // Apply the new template styling token to the host element, if the new template has any
4556
4364
  // associated stylesheets. In the case of light DOM, also ensure there is at least one scoped stylesheet.
@@ -4563,12 +4371,12 @@ var LWC = (function (exports) {
4563
4371
 
4564
4372
  if (!isUndefined$1(newToken)) {
4565
4373
  if (hasScopedStyles) {
4566
- getClassList$1(elm).add(makeHostToken(newToken));
4374
+ getClassList(elm).add(makeHostToken(newToken));
4567
4375
  newHasTokenInClass = true;
4568
4376
  }
4569
4377
 
4570
4378
  if (isSyntheticShadow) {
4571
- setAttribute$1(elm, makeHostToken(newToken), '');
4379
+ setAttribute(elm, makeHostToken(newToken), '');
4572
4380
  newHasTokenInAttribute = true;
4573
4381
  }
4574
4382
  } // Update the styling tokens present on the context object.
@@ -4583,8 +4391,8 @@ var LWC = (function (exports) {
4583
4391
  var content = [];
4584
4392
  var root;
4585
4393
 
4586
- for (var _i17 = 0; _i17 < stylesheets.length; _i17++) {
4587
- var stylesheet = stylesheets[_i17];
4394
+ for (var _i16 = 0; _i16 < stylesheets.length; _i16++) {
4395
+ var stylesheet = stylesheets[_i16];
4588
4396
 
4589
4397
  if (isArray$1(stylesheet)) {
4590
4398
  ArrayPush$1.apply(content, evaluateStylesheetsContent(stylesheet, stylesheetToken, vm));
@@ -4681,17 +4489,20 @@ var LWC = (function (exports) {
4681
4489
 
4682
4490
  function createStylesheet(vm, stylesheets) {
4683
4491
  var renderMode = vm.renderMode,
4684
- shadowMode = vm.shadowMode;
4492
+ shadowMode = vm.shadowMode,
4493
+ _vm$renderer2 = vm.renderer,
4494
+ ssr = _vm$renderer2.ssr,
4495
+ insertStylesheet = _vm$renderer2.insertStylesheet;
4685
4496
 
4686
4497
  if (renderMode === 1
4687
4498
  /* Shadow */
4688
4499
  && shadowMode === 1
4689
4500
  /* Synthetic */
4690
4501
  ) {
4691
- for (var _i18 = 0; _i18 < stylesheets.length; _i18++) {
4692
- insertStylesheet$1(stylesheets[_i18]);
4502
+ for (var _i17 = 0; _i17 < stylesheets.length; _i17++) {
4503
+ insertStylesheet(stylesheets[_i17]);
4693
4504
  }
4694
- } else if (ssr$1 || vm.hydrated) {
4505
+ } else if (ssr || vm.hydrated) {
4695
4506
  // Note: We need to ensure that during hydration, the stylesheets method is the same as those in ssr.
4696
4507
  // This works in the client, because the stylesheets are created, and cached in the VM
4697
4508
  // the first time the VM renders.
@@ -4704,8 +4515,8 @@ var LWC = (function (exports) {
4704
4515
 
4705
4516
  var target = isNull(root) ? undefined : root.shadowRoot;
4706
4517
 
4707
- for (var _i19 = 0; _i19 < stylesheets.length; _i19++) {
4708
- insertStylesheet$1(stylesheets[_i19], target);
4518
+ for (var _i18 = 0; _i18 < stylesheets.length; _i18++) {
4519
+ insertStylesheet(stylesheets[_i18], target);
4709
4520
  }
4710
4521
  }
4711
4522
 
@@ -4889,8 +4700,8 @@ var LWC = (function (exports) {
4889
4700
  var stylesheets = template.stylesheets;
4890
4701
 
4891
4702
  if (!isUndefined$1(stylesheets)) {
4892
- for (var _i20 = 0; _i20 < stylesheets.length; _i20++) {
4893
- if (isTrue(stylesheets[_i20][KEY__SCOPED_CSS])) {
4703
+ for (var _i19 = 0; _i19 < stylesheets.length; _i19++) {
4704
+ if (isTrue(stylesheets[_i19][KEY__SCOPED_CSS])) {
4894
4705
  return true;
4895
4706
  }
4896
4707
  }
@@ -5079,8 +4890,8 @@ var LWC = (function (exports) {
5079
4890
 
5080
4891
  function register(service) {
5081
4892
 
5082
- for (var _i21 = 0; _i21 < hooks.length; ++_i21) {
5083
- var hookName = hooks[_i21];
4893
+ for (var _i20 = 0; _i20 < hooks.length; ++_i20) {
4894
+ var hookName = hooks[_i20];
5084
4895
 
5085
4896
  if (hookName in service) {
5086
4897
  var l = Services[hookName];
@@ -5100,8 +4911,8 @@ var LWC = (function (exports) {
5100
4911
  def = vm.def,
5101
4912
  context = vm.context;
5102
4913
 
5103
- for (var _i22 = 0, len = cbs.length; _i22 < len; ++_i22) {
5104
- cbs[_i22].call(undefined, component, {}, def, context);
4914
+ for (var _i21 = 0, len = cbs.length; _i21 < len; ++_i21) {
4915
+ cbs[_i21].call(undefined, component, {}, def, context);
5105
4916
  }
5106
4917
  }
5107
4918
  /*
@@ -5194,9 +5005,19 @@ var LWC = (function (exports) {
5194
5005
  resetComponentStateWhenRemoved(vm);
5195
5006
  }
5196
5007
 
5197
- function createVM(elm, ctor, options) {
5198
- var _a;
5008
+ function getNearestShadowAncestor(vm) {
5009
+ var ancestor = vm.owner;
5199
5010
 
5011
+ while (!isNull(ancestor) && ancestor.renderMode === 0
5012
+ /* Light */
5013
+ ) {
5014
+ ancestor = ancestor.owner;
5015
+ }
5016
+
5017
+ return ancestor;
5018
+ }
5019
+
5020
+ function createVM(elm, ctor, renderer, options) {
5200
5021
  var mode = options.mode,
5201
5022
  owner = options.owner,
5202
5023
  tagName = options.tagName,
@@ -5224,8 +5045,6 @@ var LWC = (function (exports) {
5224
5045
  cmpTemplate: null,
5225
5046
  hydrated: Boolean(hydrated),
5226
5047
  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
5048
  context: {
5230
5049
  stylesheetToken: undefined,
5231
5050
  hasTokenInClass: undefined,
@@ -5238,14 +5057,17 @@ var LWC = (function (exports) {
5238
5057
  },
5239
5058
  // Properties set right after VM creation.
5240
5059
  tro: null,
5060
+ shadowMode: null,
5241
5061
  // Properties set by the LightningElement constructor.
5242
5062
  component: null,
5243
5063
  shadowRoot: null,
5244
5064
  renderRoot: null,
5245
5065
  callHook: callHook,
5246
5066
  setHook: setHook,
5247
- getHook: getHook
5067
+ getHook: getHook,
5068
+ renderer: renderer
5248
5069
  };
5070
+ vm.shadowMode = computeShadowMode(vm, renderer);
5249
5071
  vm.tro = getTemplateReactiveObserver(vm);
5250
5072
 
5251
5073
 
@@ -5258,12 +5080,13 @@ var LWC = (function (exports) {
5258
5080
  return vm;
5259
5081
  }
5260
5082
 
5261
- function computeShadowMode(def, owner) {
5262
- var _a;
5263
-
5083
+ function computeShadowMode(vm, renderer) {
5084
+ var def = vm.def;
5085
+ var isSyntheticShadowDefined = renderer.isSyntheticShadowDefined,
5086
+ isNativeShadowDefined = renderer.isNativeShadowDefined;
5264
5087
  var shadowMode;
5265
5088
 
5266
- if (isSyntheticShadowDefined$1) {
5089
+ if (isSyntheticShadowDefined) {
5267
5090
  if (def.renderMode === 0
5268
5091
  /* Light */
5269
5092
  ) {
@@ -5272,7 +5095,7 @@ var LWC = (function (exports) {
5272
5095
  shadowMode = 0
5273
5096
  /* Native */
5274
5097
  ;
5275
- } else if (isNativeShadowDefined$1) {
5098
+ } else if (isNativeShadowDefined) {
5276
5099
  // Not combined with above condition because @lwc/features only supports identifiers in
5277
5100
  // the if-condition.
5278
5101
  if (runtimeFlags.ENABLE_MIXED_SHADOW_MODE) {
@@ -5283,13 +5106,23 @@ var LWC = (function (exports) {
5283
5106
  /* Native */
5284
5107
  ;
5285
5108
  } 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
- ;
5109
+ var shadowAncestor = getNearestShadowAncestor(vm);
5110
+
5111
+ if (!isNull(shadowAncestor) && shadowAncestor.shadowMode === 0
5112
+ /* Native */
5113
+ ) {
5114
+ // Transitive support for native Shadow DOM. A component in native mode
5115
+ // transitively opts all of its descendants into native.
5116
+ shadowMode = 0
5117
+ /* Native */
5118
+ ;
5119
+ } else {
5120
+ // Synthetic if neither this component nor any of its ancestors are configured
5121
+ // to be native.
5122
+ shadowMode = 1
5123
+ /* Synthetic */
5124
+ ;
5125
+ }
5293
5126
  }
5294
5127
  } else {
5295
5128
  shadowMode = 1
@@ -5337,7 +5170,8 @@ var LWC = (function (exports) {
5337
5170
 
5338
5171
  function patchShadowRoot(vm, newCh) {
5339
5172
  var renderRoot = vm.renderRoot,
5340
- oldCh = vm.children; // caching the new children collection
5173
+ oldCh = vm.children,
5174
+ renderer = vm.renderer; // caching the new children collection
5341
5175
 
5342
5176
  vm.children = newCh;
5343
5177
 
@@ -5352,7 +5186,7 @@ var LWC = (function (exports) {
5352
5186
  , vm);
5353
5187
  }, function () {
5354
5188
  // job
5355
- patchChildren(oldCh, newCh, renderRoot);
5189
+ patchChildren(oldCh, newCh, renderRoot, renderer);
5356
5190
  }, function () {
5357
5191
  // post
5358
5192
  logOperationEnd(2
@@ -5374,9 +5208,10 @@ var LWC = (function (exports) {
5374
5208
  }
5375
5209
 
5376
5210
  function runRenderedCallback(vm) {
5377
- var renderedCallback = vm.def.renderedCallback;
5211
+ var renderedCallback = vm.def.renderedCallback,
5212
+ ssr = vm.renderer.ssr;
5378
5213
 
5379
- if (isTrue(ssr$1)) {
5214
+ if (isTrue(ssr)) {
5380
5215
  return;
5381
5216
  }
5382
5217
 
@@ -5409,19 +5244,19 @@ var LWC = (function (exports) {
5409
5244
  });
5410
5245
  rehydrateQueue = []; // reset to a new queue
5411
5246
 
5412
- for (var _i23 = 0, len = vms.length; _i23 < len; _i23 += 1) {
5413
- var vm = vms[_i23];
5247
+ for (var _i22 = 0, len = vms.length; _i22 < len; _i22 += 1) {
5248
+ var vm = vms[_i22];
5414
5249
 
5415
5250
  try {
5416
5251
  rehydrate(vm);
5417
5252
  } catch (error) {
5418
- if (_i23 + 1 < len) {
5253
+ if (_i22 + 1 < len) {
5419
5254
  // pieces of the queue are still pending to be rehydrated, those should have priority
5420
5255
  if (rehydrateQueue.length === 0) {
5421
5256
  addCallbackToNextTick(flushRehydrationQueue);
5422
5257
  }
5423
5258
 
5424
- ArrayUnshift.apply(rehydrateQueue, ArraySlice.call(vms, _i23 + 1));
5259
+ ArrayUnshift.apply(rehydrateQueue, ArraySlice.call(vms, _i22 + 1));
5425
5260
  } // we need to end the measure before throwing.
5426
5261
 
5427
5262
 
@@ -5520,8 +5355,8 @@ var LWC = (function (exports) {
5520
5355
  var vCustomElementCollection = vm.velements; // Reporting disconnection for every child in inverse order since they are
5521
5356
  // inserted in reserved order.
5522
5357
 
5523
- for (var _i24 = vCustomElementCollection.length - 1; _i24 >= 0; _i24 -= 1) {
5524
- var elm = vCustomElementCollection[_i24].elm; // There are two cases where the element could be undefined:
5358
+ for (var _i23 = vCustomElementCollection.length - 1; _i23 >= 0; _i23 -= 1) {
5359
+ var elm = vCustomElementCollection[_i23].elm; // There are two cases where the element could be undefined:
5525
5360
  // * when there is an error during the construction phase, and an error
5526
5361
  // boundary picks it, there is a possibility that the VCustomElement
5527
5362
  // is not properly initialized, and therefore is should be ignored.
@@ -5555,8 +5390,8 @@ var LWC = (function (exports) {
5555
5390
 
5556
5391
 
5557
5392
  function recursivelyDisconnectChildren(vnodes) {
5558
- for (var _i25 = 0, len = vnodes.length; _i25 < len; _i25 += 1) {
5559
- var vnode = vnodes[_i25];
5393
+ for (var _i24 = 0, len = vnodes.length; _i24 < len; _i24 += 1) {
5394
+ var vnode = vnodes[_i24];
5560
5395
 
5561
5396
  if (!isNull(vnode) && !isUndefined$1(vnode.elm)) {
5562
5397
  switch (vnode.type) {
@@ -5585,13 +5420,14 @@ var LWC = (function (exports) {
5585
5420
 
5586
5421
  function resetComponentRoot(vm) {
5587
5422
  var children = vm.children,
5588
- renderRoot = vm.renderRoot;
5423
+ renderRoot = vm.renderRoot,
5424
+ remove = vm.renderer.remove;
5589
5425
 
5590
- for (var _i26 = 0, len = children.length; _i26 < len; _i26++) {
5591
- var child = children[_i26];
5426
+ for (var _i25 = 0, len = children.length; _i25 < len; _i25++) {
5427
+ var child = children[_i25];
5592
5428
 
5593
5429
  if (!isNull(child) && !isUndefined$1(child.elm)) {
5594
- remove$1(child.elm, renderRoot);
5430
+ remove(child.elm, renderRoot);
5595
5431
  }
5596
5432
  }
5597
5433
 
@@ -5601,7 +5437,9 @@ var LWC = (function (exports) {
5601
5437
  }
5602
5438
 
5603
5439
  function scheduleRehydration(vm) {
5604
- if (isTrue(ssr$1) || isTrue(vm.isScheduled)) {
5440
+ var ssr = vm.renderer.ssr;
5441
+
5442
+ if (isTrue(ssr) || isTrue(vm.isScheduled)) {
5605
5443
  return;
5606
5444
  }
5607
5445
 
@@ -5768,7 +5606,8 @@ var LWC = (function (exports) {
5768
5606
  var elm = vm.elm,
5769
5607
  _vm$context = vm.context,
5770
5608
  wiredConnecting = _vm$context.wiredConnecting,
5771
- wiredDisconnecting = _vm$context.wiredDisconnecting; // waiting for the component to be connected to formally request the context via the token
5609
+ wiredDisconnecting = _vm$context.wiredDisconnecting,
5610
+ dispatchEvent = vm.renderer.dispatchEvent; // waiting for the component to be connected to formally request the context via the token
5772
5611
 
5773
5612
  ArrayPush$1.call(wiredConnecting, function () {
5774
5613
  // This event is responsible for connecting the host element with another
@@ -5788,7 +5627,7 @@ var LWC = (function (exports) {
5788
5627
  ArrayPush$1.call(wiredDisconnecting, disconnectCallback);
5789
5628
  }
5790
5629
  });
5791
- dispatchEvent$1(elm, contextRegistrationEvent);
5630
+ dispatchEvent(elm, contextRegistrationEvent);
5792
5631
  });
5793
5632
  }
5794
5633
 
@@ -5938,8 +5777,8 @@ var LWC = (function (exports) {
5938
5777
  function connectWireAdapters(vm) {
5939
5778
  var wiredConnecting = vm.context.wiredConnecting;
5940
5779
 
5941
- for (var _i27 = 0, len = wiredConnecting.length; _i27 < len; _i27 += 1) {
5942
- wiredConnecting[_i27]();
5780
+ for (var _i26 = 0, len = wiredConnecting.length; _i26 < len; _i26 += 1) {
5781
+ wiredConnecting[_i26]();
5943
5782
  }
5944
5783
  }
5945
5784
 
@@ -5947,8 +5786,8 @@ var LWC = (function (exports) {
5947
5786
  var wiredDisconnecting = vm.context.wiredDisconnecting;
5948
5787
  runWithBoundaryProtection(vm, vm, noop, function () {
5949
5788
  // job
5950
- for (var _i28 = 0, len = wiredDisconnecting.length; _i28 < len; _i28 += 1) {
5951
- wiredDisconnecting[_i28]();
5789
+ for (var _i27 = 0, len = wiredDisconnecting.length; _i27 < len; _i27 += 1) {
5790
+ wiredDisconnecting[_i27]();
5952
5791
  }
5953
5792
  }, noop);
5954
5793
  }
@@ -6042,79 +5881,87 @@ var LWC = (function (exports) {
6042
5881
  function hydrateVM(vm) {
6043
5882
  var children = renderComponent(vm);
6044
5883
  vm.children = children;
6045
- var parentNode = vm.renderRoot;
6046
- hydrateChildren(getFirstChild$1(parentNode), children, parentNode);
5884
+ var parentNode = vm.renderRoot,
5885
+ getFirstChild = vm.renderer.getFirstChild;
5886
+ hydrateChildren(getFirstChild(parentNode), children, parentNode, vm);
6047
5887
  runRenderedCallback(vm);
6048
5888
  }
6049
5889
 
6050
- function hydrateNode(node, vnode) {
5890
+ function hydrateNode(node, vnode, renderer) {
5891
+ var _a, _b;
5892
+
6051
5893
  var hydratedNode;
6052
5894
 
6053
5895
  switch (vnode.type) {
6054
5896
  case 0
6055
5897
  /* Text */
6056
5898
  :
6057
- hydratedNode = hydrateText(node, vnode);
5899
+ // VText has no special capability, fallback to the owner's renderer
5900
+ hydratedNode = hydrateText(node, vnode, renderer);
6058
5901
  break;
6059
5902
 
6060
5903
  case 1
6061
5904
  /* Comment */
6062
5905
  :
6063
- hydratedNode = hydrateComment(node, vnode);
5906
+ // VComment has no special capability, fallback to the owner's renderer
5907
+ hydratedNode = hydrateComment(node, vnode, renderer);
6064
5908
  break;
6065
5909
 
6066
5910
  case 2
6067
5911
  /* Element */
6068
5912
  :
6069
- hydratedNode = hydrateElement(node, vnode);
5913
+ hydratedNode = hydrateElement(node, vnode, (_a = vnode.data.renderer) !== null && _a !== void 0 ? _a : renderer);
6070
5914
  break;
6071
5915
 
6072
5916
  case 3
6073
5917
  /* CustomElement */
6074
5918
  :
6075
- hydratedNode = hydrateCustomElement(node, vnode);
5919
+ hydratedNode = hydrateCustomElement(node, vnode, (_b = vnode.data.renderer) !== null && _b !== void 0 ? _b : renderer);
6076
5920
  break;
6077
5921
  }
6078
5922
 
6079
- return nextSibling$1(hydratedNode);
5923
+ return renderer.nextSibling(hydratedNode);
6080
5924
  }
6081
5925
 
6082
- function hydrateText(node, vnode) {
5926
+ function hydrateText(node, vnode, renderer) {
6083
5927
  var _a;
6084
5928
 
6085
5929
  if (!hasCorrectNodeType(vnode, node, 3
6086
5930
  /* TEXT */
6087
- )) {
6088
- return handleMismatch(node, vnode);
5931
+ , renderer)) {
5932
+ return handleMismatch(node, vnode, renderer);
6089
5933
  }
6090
5934
 
6091
- setText$1(node, (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
5935
+ var setText = renderer.setText;
5936
+ setText(node, (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
6092
5937
  vnode.elm = node;
6093
5938
  return node;
6094
5939
  }
6095
5940
 
6096
- function hydrateComment(node, vnode) {
5941
+ function hydrateComment(node, vnode, renderer) {
6097
5942
  var _a;
6098
5943
 
6099
5944
  if (!hasCorrectNodeType(vnode, node, 8
6100
5945
  /* COMMENT */
6101
- )) {
6102
- return handleMismatch(node, vnode);
5946
+ , renderer)) {
5947
+ return handleMismatch(node, vnode, renderer);
6103
5948
  }
6104
5949
 
6105
- setProperty$1(node, 'nodeValue', (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
5950
+ var setProperty = renderer.setProperty;
5951
+ setProperty(node, 'nodeValue', (_a = vnode.text) !== null && _a !== void 0 ? _a : null);
6106
5952
  vnode.elm = node;
6107
5953
  return node;
6108
5954
  }
6109
5955
 
6110
- function hydrateElement(elm, vnode) {
5956
+ function hydrateElement(elm, vnode, renderer) {
6111
5957
  if (!hasCorrectNodeType(vnode, elm, 1
6112
5958
  /* ELEMENT */
6113
- ) || !isMatchingElement(vnode, elm)) {
6114
- return handleMismatch(elm, vnode);
5959
+ , renderer) || !isMatchingElement(vnode, elm, renderer)) {
5960
+ return handleMismatch(elm, vnode, renderer);
6115
5961
  }
6116
5962
 
6117
5963
  vnode.elm = elm;
5964
+ var owner = vnode.owner;
6118
5965
  var context = vnode.data.context;
6119
5966
  var isDomManual = Boolean(!isUndefined$1(context) && !isUndefined$1(context.lwc) && context.lwc.dom === "manual"
6120
5967
  /* Manual */
@@ -6124,9 +5971,10 @@ var LWC = (function (exports) {
6124
5971
  // it may be that this element has lwc:inner-html, we need to diff and in case are the same,
6125
5972
  // remove the innerHTML from props so it reuses the existing dom elements.
6126
5973
  var props = vnode.data.props;
5974
+ var _getProperty3 = renderer.getProperty;
6127
5975
 
6128
5976
  if (!isUndefined$1(props) && !isUndefined$1(props.innerHTML)) {
6129
- if (getProperty$1(elm, 'innerHTML') === props.innerHTML) {
5977
+ if (_getProperty3(elm, 'innerHTML') === props.innerHTML) {
6130
5978
  // Do a shallow clone since VNodeData may be shared across VNodes due to hoist optimization
6131
5979
  vnode.data = Object.assign(Object.assign({}, vnode.data), {
6132
5980
  props: cloneAndOmitKey(props, 'innerHTML')
@@ -6135,27 +5983,28 @@ var LWC = (function (exports) {
6135
5983
  }
6136
5984
  }
6137
5985
 
6138
- patchElementPropsAndAttrs(vnode);
5986
+ patchElementPropsAndAttrs(vnode, renderer);
6139
5987
 
6140
5988
  if (!isDomManual) {
6141
- hydrateChildren(getFirstChild$1(elm), vnode.children, elm, vnode.owner);
5989
+ var _getFirstChild = renderer.getFirstChild;
5990
+ hydrateChildren(_getFirstChild(elm), vnode.children, elm, owner);
6142
5991
  }
6143
5992
 
6144
5993
  return elm;
6145
5994
  }
6146
5995
 
6147
- function hydrateCustomElement(elm, vnode) {
5996
+ function hydrateCustomElement(elm, vnode, renderer) {
6148
5997
  if (!hasCorrectNodeType(vnode, elm, 1
6149
5998
  /* ELEMENT */
6150
- ) || !isMatchingElement(vnode, elm)) {
6151
- return handleMismatch(elm, vnode);
5999
+ , renderer) || !isMatchingElement(vnode, elm, renderer)) {
6000
+ return handleMismatch(elm, vnode, renderer);
6152
6001
  }
6153
6002
 
6154
6003
  var sel = vnode.sel,
6155
6004
  mode = vnode.mode,
6156
6005
  ctor = vnode.ctor,
6157
6006
  owner = vnode.owner;
6158
- var vm = createVM(elm, ctor, {
6007
+ var vm = createVM(elm, ctor, renderer, {
6159
6008
  mode: mode,
6160
6009
  owner: owner,
6161
6010
  tagName: sel,
@@ -6164,16 +6013,17 @@ var LWC = (function (exports) {
6164
6013
  vnode.elm = elm;
6165
6014
  vnode.vm = vm;
6166
6015
  allocateChildren(vnode, vm);
6167
- patchElementPropsAndAttrs(vnode); // Insert hook section:
6016
+ patchElementPropsAndAttrs(vnode, renderer); // Insert hook section:
6168
6017
 
6169
6018
  runConnectedCallback(vm);
6170
6019
 
6171
6020
  if (vm.renderMode !== 0
6172
6021
  /* Light */
6173
6022
  ) {
6174
- // VM is not rendering in Light DOM, we can proceed and hydrate the slotted content.
6023
+ var _getFirstChild2 = renderer.getFirstChild; // VM is not rendering in Light DOM, we can proceed and hydrate the slotted content.
6175
6024
  // Note: for Light DOM, this is handled while hydrating the VM
6176
- hydrateChildren(getFirstChild$1(elm), vnode.children, elm);
6025
+
6026
+ hydrateChildren(_getFirstChild2(elm), vnode.children, elm, vm);
6177
6027
  }
6178
6028
 
6179
6029
  hydrateVM(vm);
@@ -6183,18 +6033,19 @@ var LWC = (function (exports) {
6183
6033
  function hydrateChildren(node, children, parentNode, owner) {
6184
6034
  var nextNode = node;
6185
6035
  var anchor = null;
6036
+ var renderer = owner.renderer;
6186
6037
 
6187
- for (var _i29 = 0; _i29 < children.length; _i29++) {
6188
- var childVnode = children[_i29];
6038
+ for (var _i28 = 0; _i28 < children.length; _i28++) {
6039
+ var childVnode = children[_i28];
6189
6040
 
6190
6041
  if (!isNull(childVnode)) {
6191
6042
  if (nextNode) {
6192
- nextNode = hydrateNode(nextNode, childVnode);
6043
+ nextNode = hydrateNode(nextNode, childVnode, renderer);
6193
6044
  anchor = childVnode.elm;
6194
6045
  } else {
6195
6046
  hasMismatch = true;
6196
6047
 
6197
- mount(childVnode, parentNode, anchor);
6048
+ mount(childVnode, parentNode, renderer, anchor);
6198
6049
  anchor = childVnode.elm;
6199
6050
  }
6200
6051
  }
@@ -6202,31 +6053,39 @@ var LWC = (function (exports) {
6202
6053
 
6203
6054
  if (nextNode) {
6204
6055
  hasMismatch = true;
6056
+ // a good reference to what element to act upon, we instead
6057
+ // rely on the vm's associated renderer for navigating to the
6058
+ // next node in the list to be hydrated.
6059
+
6060
+
6061
+ var _nextSibling = renderer.nextSibling;
6205
6062
 
6206
6063
  do {
6207
6064
  var current = nextNode;
6208
- nextNode = nextSibling$1(nextNode);
6209
- removeNode(current, parentNode);
6065
+ nextNode = _nextSibling(nextNode);
6066
+ removeNode(current, parentNode, renderer);
6210
6067
  } while (nextNode);
6211
6068
  }
6212
6069
  }
6213
6070
 
6214
- function handleMismatch(node, vnode, msg) {
6071
+ function handleMismatch(node, vnode, renderer) {
6215
6072
  hasMismatch = true;
6216
-
6217
- var parentNode = getProperty$1(node, 'parentNode');
6218
- mount(vnode, parentNode, node);
6219
- removeNode(node, parentNode);
6073
+ var getProperty = renderer.getProperty;
6074
+ var parentNode = getProperty(node, 'parentNode');
6075
+ mount(vnode, parentNode, renderer, node);
6076
+ removeNode(node, parentNode, renderer);
6220
6077
  return vnode.elm;
6221
6078
  }
6222
6079
 
6223
- function patchElementPropsAndAttrs(vnode) {
6224
- applyEventListeners(vnode);
6225
- patchProps(null, vnode);
6080
+ function patchElementPropsAndAttrs(vnode, renderer) {
6081
+ applyEventListeners(vnode, renderer);
6082
+ patchProps(null, vnode, renderer);
6226
6083
  }
6227
6084
 
6228
- function hasCorrectNodeType(vnode, node, nodeType) {
6229
- if (getProperty$1(node, 'nodeType') !== nodeType) {
6085
+ function hasCorrectNodeType(vnode, node, nodeType, renderer) {
6086
+ var getProperty = renderer.getProperty;
6087
+
6088
+ if (getProperty(node, 'nodeType') !== nodeType) {
6230
6089
 
6231
6090
  return false;
6232
6091
  }
@@ -6234,30 +6093,35 @@ var LWC = (function (exports) {
6234
6093
  return true;
6235
6094
  }
6236
6095
 
6237
- function isMatchingElement(vnode, elm) {
6238
- if (vnode.sel.toLowerCase() !== getProperty$1(elm, 'tagName').toLowerCase()) {
6096
+ function isMatchingElement(vnode, elm, renderer) {
6097
+ var getProperty = renderer.getProperty;
6098
+
6099
+ if (vnode.sel.toLowerCase() !== getProperty(elm, 'tagName').toLowerCase()) {
6239
6100
 
6240
6101
  return false;
6241
6102
  }
6242
6103
 
6243
- var hasIncompatibleAttrs = validateAttrs(vnode, elm);
6244
- var hasIncompatibleClass = validateClassAttr(vnode, elm);
6245
- var hasIncompatibleStyle = validateStyleAttr(vnode, elm);
6104
+ var hasIncompatibleAttrs = validateAttrs(vnode, elm, renderer);
6105
+ var hasIncompatibleClass = validateClassAttr(vnode, elm, renderer);
6106
+ var hasIncompatibleStyle = validateStyleAttr(vnode, elm, renderer);
6246
6107
  return hasIncompatibleAttrs && hasIncompatibleClass && hasIncompatibleStyle;
6247
6108
  }
6248
6109
 
6249
- function validateAttrs(vnode, elm) {
6110
+ function validateAttrs(vnode, elm, renderer) {
6250
6111
  var _vnode$data$attrs = vnode.data.attrs,
6251
6112
  attrs = _vnode$data$attrs === void 0 ? {} : _vnode$data$attrs;
6252
6113
  var nodesAreCompatible = true; // Validate attributes, though we could always recovery from those by running the update mods.
6253
6114
  // Note: intentionally ONLY matching vnodes.attrs to elm.attrs, in case SSR is adding extra attributes.
6254
6115
 
6255
- for (var _i30 = 0, _Object$entries = Object.entries(attrs); _i30 < _Object$entries.length; _i30++) {
6256
- var _Object$entries$_i = _slicedToArray(_Object$entries[_i30], 2),
6116
+ for (var _i29 = 0, _Object$entries = Object.entries(attrs); _i29 < _Object$entries.length; _i29++) {
6117
+ var _Object$entries$_i = _slicedToArray(_Object$entries[_i29], 2),
6257
6118
  attrName = _Object$entries$_i[0],
6258
6119
  attrValue = _Object$entries$_i[1];
6259
6120
 
6260
- var elmAttrValue = getAttribute$1(elm, attrName);
6121
+ vnode.owner;
6122
+ var _getAttribute = renderer.getAttribute;
6123
+
6124
+ var elmAttrValue = _getAttribute(elm, attrName);
6261
6125
 
6262
6126
  if (String(attrValue) !== elmAttrValue) {
6263
6127
 
@@ -6268,18 +6132,20 @@ var LWC = (function (exports) {
6268
6132
  return nodesAreCompatible;
6269
6133
  }
6270
6134
 
6271
- function validateClassAttr(vnode, elm) {
6135
+ function validateClassAttr(vnode, elm, renderer) {
6272
6136
  var _vnode$data = vnode.data,
6273
6137
  className = _vnode$data.className,
6274
6138
  classMap = _vnode$data.classMap;
6139
+ var getProperty = renderer.getProperty,
6140
+ getClassList = renderer.getClassList;
6275
6141
  var nodesAreCompatible = true;
6276
6142
 
6277
- if (!isUndefined$1(className) && String(className) !== getProperty$1(elm, 'className')) {
6143
+ if (!isUndefined$1(className) && String(className) !== getProperty(elm, 'className')) {
6278
6144
  // className is used when class is bound to an expr.
6279
6145
  nodesAreCompatible = false;
6280
6146
  } else if (!isUndefined$1(classMap)) {
6281
6147
  // classMap is used when class is set to static value.
6282
- var classList = getClassList$1(elm);
6148
+ var classList = getClassList(elm);
6283
6149
  var computedClassName = ''; // all classes from the vnode should be in the element.classList
6284
6150
 
6285
6151
  for (var name in classMap) {
@@ -6300,11 +6166,12 @@ var LWC = (function (exports) {
6300
6166
  return nodesAreCompatible;
6301
6167
  }
6302
6168
 
6303
- function validateStyleAttr(vnode, elm) {
6169
+ function validateStyleAttr(vnode, elm, renderer) {
6304
6170
  var _vnode$data2 = vnode.data,
6305
6171
  style = _vnode$data2.style,
6306
6172
  styleDecls = _vnode$data2.styleDecls;
6307
- var elmStyle = getAttribute$1(elm, 'style') || '';
6173
+ var getAttribute = renderer.getAttribute;
6174
+ var elmStyle = getAttribute(elm, 'style') || '';
6308
6175
  var nodesAreCompatible = true;
6309
6176
 
6310
6177
  if (!isUndefined$1(style) && style !== elmStyle) {
@@ -6313,8 +6180,8 @@ var LWC = (function (exports) {
6313
6180
  var parsedVnodeStyle = parseStyleText(elmStyle);
6314
6181
  var expectedStyle = []; // styleMap is used when style is set to static value.
6315
6182
 
6316
- for (var _i31 = 0, n = styleDecls.length; _i31 < n; _i31++) {
6317
- var _styleDecls$_i2 = _slicedToArray(styleDecls[_i31], 3),
6183
+ for (var _i30 = 0, n = styleDecls.length; _i30 < n; _i30++) {
6184
+ var _styleDecls$_i2 = _slicedToArray(styleDecls[_i30], 3),
6318
6185
  prop = _styleDecls$_i2[0],
6319
6186
  value = _styleDecls$_i2[1],
6320
6187
  important = _styleDecls$_i2[2];
@@ -6387,7 +6254,7 @@ var LWC = (function (exports) {
6387
6254
 
6388
6255
  return ctor;
6389
6256
  }
6390
- /* version: 2.13.4 */
6257
+ /* version: 2.14.2 */
6391
6258
 
6392
6259
  /*
6393
6260
  * Copyright (c) 2018, salesforce.com, inc.
@@ -6557,7 +6424,7 @@ var LWC = (function (exports) {
6557
6424
  try {
6558
6425
  // dereference HTMLElement global because babel wraps globals in compat mode with a
6559
6426
  // _wrapNativeSuper()
6560
- // This is a problem because LWCUpgradableElement extends renderer.HTMLElement which does not
6427
+ // This is a problem because LWCUpgradableElement extends renderer.HTMLElementExported which does not
6561
6428
  // get wrapped by babel.
6562
6429
  var HTMLElementAlias = HTMLElement; // In case we use compat mode with a modern browser, the compat mode transformation
6563
6430
  // invokes the DOM api with an .apply() or .call() to initialize any DOM api sub-classing,
@@ -6633,6 +6500,11 @@ var LWC = (function (exports) {
6633
6500
  }
6634
6501
 
6635
6502
  var ssr = false;
6503
+
6504
+ function isHydrating() {
6505
+ return hydrating;
6506
+ }
6507
+
6636
6508
  var isNativeShadowDefined = _globalThis[KEY__IS_NATIVE_SHADOW_ROOT_DEFINED];
6637
6509
  var isSyntheticShadowDefined = hasOwnProperty$1.call(Element.prototype, KEY__SHADOW_TOKEN);
6638
6510
 
@@ -6767,44 +6639,52 @@ var LWC = (function (exports) {
6767
6639
  return node.isConnected;
6768
6640
  }
6769
6641
 
6642
+ function assertInstanceOfHTMLElement(elm, msg) {
6643
+ assert.invariant(elm instanceof HTMLElement, msg);
6644
+ }
6645
+
6770
6646
  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);
6647
+ var renderer = {
6648
+ ssr: ssr,
6649
+ isNativeShadowDefined: isNativeShadowDefined,
6650
+ isSyntheticShadowDefined: isSyntheticShadowDefined,
6651
+ HTMLElementExported: HTMLElementExported,
6652
+ isHydrating: isHydrating,
6653
+ insert: insert,
6654
+ remove: remove,
6655
+ createElement: createElement$1,
6656
+ createText: createText,
6657
+ createComment: createComment,
6658
+ nextSibling: nextSibling,
6659
+ attachShadow: attachShadow,
6660
+ getProperty: getProperty,
6661
+ setProperty: setProperty,
6662
+ setText: setText,
6663
+ getAttribute: getAttribute,
6664
+ setAttribute: setAttribute,
6665
+ removeAttribute: removeAttribute,
6666
+ addEventListener: addEventListener,
6667
+ removeEventListener: removeEventListener,
6668
+ dispatchEvent: dispatchEvent,
6669
+ getClassList: getClassList,
6670
+ setCSSStyleProperty: setCSSStyleProperty,
6671
+ getBoundingClientRect: getBoundingClientRect,
6672
+ querySelector: querySelector,
6673
+ querySelectorAll: querySelectorAll,
6674
+ getElementsByTagName: getElementsByTagName,
6675
+ getElementsByClassName: getElementsByClassName,
6676
+ getChildren: getChildren,
6677
+ getChildNodes: getChildNodes,
6678
+ getFirstChild: getFirstChild,
6679
+ getFirstElementChild: getFirstElementChild,
6680
+ getLastChild: getLastChild,
6681
+ getLastElementChild: getLastElementChild,
6682
+ isConnected: isConnected,
6683
+ insertStylesheet: insertStylesheet,
6684
+ assertInstanceOfHTMLElement: assertInstanceOfHTMLElement,
6685
+ defineCustomElement: defineCustomElement,
6686
+ getCustomElement: getCustomElement
6687
+ };
6808
6688
  /*
6809
6689
  * Copyright (c) 2018, salesforce.com, inc.
6810
6690
  * All rights reserved.
@@ -6812,7 +6692,6 @@ var LWC = (function (exports) {
6812
6692
  * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT
6813
6693
  */
6814
6694
 
6815
-
6816
6695
  function resetShadowRootAndLightDom(element, Ctor) {
6817
6696
  if (element.shadowRoot) {
6818
6697
  var shadowRoot = element.shadowRoot;
@@ -6830,15 +6709,15 @@ var LWC = (function (exports) {
6830
6709
  }
6831
6710
 
6832
6711
  function createVMWithProps(element, Ctor, props) {
6833
- var vm = createVM(element, Ctor, {
6712
+ var vm = createVM(element, Ctor, renderer, {
6834
6713
  mode: 'open',
6835
6714
  owner: null,
6836
6715
  tagName: element.tagName.toLowerCase(),
6837
6716
  hydrated: true
6838
6717
  });
6839
6718
 
6840
- for (var _i32 = 0, _Object$entries2 = Object.entries(props); _i32 < _Object$entries2.length; _i32++) {
6841
- var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i32], 2),
6719
+ for (var _i31 = 0, _Object$entries2 = Object.entries(props); _i31 < _Object$entries2.length; _i31++) {
6720
+ var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i31], 2),
6842
6721
  key = _Object$entries2$_i[0],
6843
6722
  value = _Object$entries2$_i[1];
6844
6723
 
@@ -6946,7 +6825,7 @@ var LWC = (function (exports) {
6946
6825
  hydrateComponent(_assertThisInitialized(_this6), Ctor, {});
6947
6826
  hydratedCustomElements.add(_assertThisInitialized(_this6));
6948
6827
  } else {
6949
- createVM(_assertThisInitialized(_this6), Ctor, {
6828
+ createVM(_assertThisInitialized(_this6), Ctor, renderer, {
6950
6829
  mode: 'open',
6951
6830
  owner: null,
6952
6831
  tagName: _this6.tagName
@@ -7055,7 +6934,7 @@ var LWC = (function (exports) {
7055
6934
  throw new TypeError("\"createElement\" function expects an \"is\" option with a valid component constructor.");
7056
6935
  }
7057
6936
 
7058
- var UpgradableConstructor = getUpgradableConstructor(sel);
6937
+ var UpgradableConstructor = getUpgradableConstructor(sel, renderer);
7059
6938
  var wasComponentUpgraded = false; // the custom element from the registry is expecting an upgrade callback
7060
6939
 
7061
6940
  /**
@@ -7066,7 +6945,7 @@ var LWC = (function (exports) {
7066
6945
  */
7067
6946
 
7068
6947
  var element = new UpgradableConstructor(function (elm) {
7069
- createVM(elm, Ctor, {
6948
+ createVM(elm, Ctor, renderer, {
7070
6949
  tagName: sel,
7071
6950
  mode: options.mode !== 'closed' ? 'open' : 'closed',
7072
6951
  owner: null
@@ -7163,7 +7042,7 @@ var LWC = (function (exports) {
7163
7042
  });
7164
7043
  freeze(LightningElement);
7165
7044
  seal(LightningElement.prototype);
7166
- /* version: 2.13.4 */
7045
+ /* version: 2.14.2 */
7167
7046
 
7168
7047
  exports.LightningElement = LightningElement;
7169
7048
  exports.__unstable__ProfilerControl = profilerControl;
@@ -7182,6 +7061,7 @@ var LWC = (function (exports) {
7182
7061
  exports.registerComponent = registerComponent;
7183
7062
  exports.registerDecorators = registerDecorators;
7184
7063
  exports.registerTemplate = registerTemplate;
7064
+ exports.renderer = renderer;
7185
7065
  exports.sanitizeAttribute = sanitizeAttribute;
7186
7066
  exports.setFeatureFlag = setFeatureFlag;
7187
7067
  exports.setFeatureFlagForTest = setFeatureFlagForTest;