lwc 2.14.0 → 2.15.0

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