lwc 2.14.1 → 2.16.0

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