@revolist/revogrid 3.6.2 → 3.6.4

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 (451) hide show
  1. package/custom-element/_baseIteratee.js +3 -1
  2. package/custom-element/_baseIteratee.js.map +1 -0
  3. package/custom-element/columnService.js +6 -4
  4. package/custom-element/columnService.js.map +1 -0
  5. package/custom-element/consts.js +3 -1
  6. package/custom-element/consts.js.map +1 -0
  7. package/custom-element/data.store.js +55 -33
  8. package/custom-element/data.store.js.map +1 -0
  9. package/custom-element/debounce.js +3 -1
  10. package/custom-element/debounce.js.map +1 -0
  11. package/custom-element/dimension.helpers.js +3 -1
  12. package/custom-element/dimension.helpers.js.map +1 -0
  13. package/custom-element/each.js +2 -0
  14. package/custom-element/each.js.map +1 -0
  15. package/custom-element/filter.button.js +2 -0
  16. package/custom-element/filter.button.js.map +1 -0
  17. package/custom-element/identity.js +2 -0
  18. package/custom-element/identity.js.map +1 -0
  19. package/custom-element/index.d.ts +9 -16
  20. package/custom-element/index.js +4 -15
  21. package/custom-element/index.js.map +1 -0
  22. package/custom-element/isSymbol.js +3 -1
  23. package/custom-element/isSymbol.js.map +1 -0
  24. package/custom-element/keys.js +3 -1
  25. package/custom-element/keys.js.map +1 -0
  26. package/custom-element/localScrollService.js +2 -0
  27. package/custom-element/localScrollService.js.map +1 -0
  28. package/custom-element/resize-observer.js +5 -3
  29. package/custom-element/resize-observer.js.map +1 -0
  30. package/custom-element/revo-grid.js +39 -159
  31. package/custom-element/revo-grid.js.map +1 -0
  32. package/custom-element/revogr-clipboard.js +4 -4
  33. package/custom-element/revogr-clipboard.js.map +1 -0
  34. package/custom-element/revogr-data.js +2 -0
  35. package/custom-element/revogr-data.js.map +1 -0
  36. package/custom-element/revogr-data2.js +14 -3
  37. package/custom-element/revogr-data2.js.map +1 -0
  38. package/custom-element/revogr-edit.js +2 -0
  39. package/custom-element/revogr-edit.js.map +1 -0
  40. package/custom-element/revogr-edit2.js +7 -3
  41. package/custom-element/revogr-edit2.js.map +1 -0
  42. package/custom-element/revogr-filter-panel.js +10 -6
  43. package/custom-element/revogr-filter-panel.js.map +1 -0
  44. package/custom-element/revogr-focus.js +2 -0
  45. package/custom-element/revogr-focus.js.map +1 -0
  46. package/custom-element/revogr-focus2.js +8 -2
  47. package/custom-element/revogr-focus2.js.map +1 -0
  48. package/custom-element/revogr-header.js +2 -0
  49. package/custom-element/revogr-header.js.map +1 -0
  50. package/custom-element/revogr-header2.js +11 -3
  51. package/custom-element/revogr-header2.js.map +1 -0
  52. package/custom-element/revogr-order-editor.js +2 -0
  53. package/custom-element/revogr-order-editor.js.map +1 -0
  54. package/custom-element/revogr-order-editor2.js +8 -3
  55. package/custom-element/revogr-order-editor2.js.map +1 -0
  56. package/custom-element/revogr-overlay-selection.js +2 -0
  57. package/custom-element/revogr-overlay-selection.js.map +1 -0
  58. package/custom-element/revogr-overlay-selection2.js +15 -3
  59. package/custom-element/revogr-overlay-selection2.js.map +1 -0
  60. package/custom-element/revogr-row-headers.js +2 -0
  61. package/custom-element/revogr-row-headers.js.map +1 -0
  62. package/custom-element/revogr-row-headers2.js +9 -3
  63. package/custom-element/revogr-row-headers2.js.map +1 -0
  64. package/custom-element/revogr-scroll-virtual.js +2 -0
  65. package/custom-element/revogr-scroll-virtual.js.map +1 -0
  66. package/custom-element/revogr-scroll-virtual2.js +5 -2
  67. package/custom-element/revogr-scroll-virtual2.js.map +1 -0
  68. package/custom-element/revogr-temp-range.js +2 -0
  69. package/custom-element/revogr-temp-range.js.map +1 -0
  70. package/custom-element/revogr-temp-range2.js +8 -4
  71. package/custom-element/revogr-temp-range2.js.map +1 -0
  72. package/custom-element/revogr-viewport-scroll.js +2 -0
  73. package/custom-element/revogr-viewport-scroll.js.map +1 -0
  74. package/custom-element/revogr-viewport-scroll2.js +6 -11
  75. package/custom-element/revogr-viewport-scroll2.js.map +1 -0
  76. package/custom-element/selection.utils.js +2 -0
  77. package/custom-element/selection.utils.js.map +1 -0
  78. package/custom-element/themeService.js +65 -0
  79. package/custom-element/themeService.js.map +1 -0
  80. package/custom-element/toInteger.js +2 -0
  81. package/custom-element/toInteger.js.map +1 -0
  82. package/custom-element/toNumber.js +3 -1
  83. package/custom-element/toNumber.js.map +1 -0
  84. package/custom-element/utils.js +2 -0
  85. package/custom-element/utils.js.map +1 -0
  86. package/dist/cjs/{debounce-6cea2774.js → debounce-25dce8a1.js} +3 -1
  87. package/dist/cjs/debounce-25dce8a1.js.map +1 -0
  88. package/dist/cjs/{index-cb904e00.js → index-5f3dfe40.js} +577 -283
  89. package/dist/cjs/index-5f3dfe40.js.map +1 -0
  90. package/dist/cjs/index.cjs.js +2 -0
  91. package/dist/cjs/index.cjs.js.map +1 -0
  92. package/dist/cjs/loader.cjs.js +5 -16
  93. package/dist/cjs/loader.cjs.js.map +1 -0
  94. package/dist/cjs/{resize-observer-bf327d6a.js → resize-observer-7f159b88.js} +5 -3
  95. package/dist/cjs/resize-observer-7f159b88.js.map +1 -0
  96. package/dist/cjs/revo-grid.cjs.js +11 -59
  97. package/dist/cjs/revo-grid.cjs.js.map +1 -0
  98. package/dist/cjs/revo-grid_11.cjs.entry.js +153 -150
  99. package/dist/cjs/revo-grid_11.cjs.entry.js.map +1 -0
  100. package/dist/cjs/revogr-clipboard.cjs.entry.js +4 -3
  101. package/dist/cjs/revogr-clipboard.cjs.entry.js.map +1 -0
  102. package/dist/cjs/revogr-filter-panel.cjs.entry.js +11 -6
  103. package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -0
  104. package/dist/collection/collection-manifest.json +2 -2
  105. package/dist/collection/components/button/button.js +1 -0
  106. package/dist/collection/components/button/button.js.map +1 -0
  107. package/dist/collection/components/clipboard/revogr-clipboard.js +82 -80
  108. package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -0
  109. package/dist/collection/components/data/cellRenderer.js +2 -2
  110. package/dist/collection/components/data/cellRenderer.js.map +1 -0
  111. package/dist/collection/components/data/columnService.js +4 -3
  112. package/dist/collection/components/data/columnService.js.map +1 -0
  113. package/dist/collection/components/data/revogr-data.js +240 -219
  114. package/dist/collection/components/data/revogr-data.js.map +1 -0
  115. package/dist/collection/components/data/rowRenderer.js +1 -0
  116. package/dist/collection/components/data/rowRenderer.js.map +1 -0
  117. package/dist/collection/components/header/headerCellRenderer.js +2 -3
  118. package/dist/collection/components/header/headerCellRenderer.js.map +1 -0
  119. package/dist/collection/components/header/headerRenderer.js +2 -3
  120. package/dist/collection/components/header/headerRenderer.js.map +1 -0
  121. package/dist/collection/components/header/revogr-header.js +244 -229
  122. package/dist/collection/components/header/revogr-header.js.map +1 -0
  123. package/dist/collection/components/order/orderRenderer.js +2 -5
  124. package/dist/collection/components/order/orderRenderer.js.map +1 -0
  125. package/dist/collection/components/order/revogr-order-editor.js +257 -248
  126. package/dist/collection/components/order/revogr-order-editor.js.map +1 -0
  127. package/dist/collection/components/order/rowOrderService.js +1 -0
  128. package/dist/collection/components/order/rowOrderService.js.map +1 -0
  129. package/dist/collection/components/overlay/autofill.service.js +1 -0
  130. package/dist/collection/components/overlay/autofill.service.js.map +1 -0
  131. package/dist/collection/components/overlay/clipboard.service.js +1 -0
  132. package/dist/collection/components/overlay/clipboard.service.js.map +1 -0
  133. package/dist/collection/components/overlay/editors/edit.utils.js +1 -0
  134. package/dist/collection/components/overlay/editors/edit.utils.js.map +1 -0
  135. package/dist/collection/components/overlay/editors/text.js +1 -0
  136. package/dist/collection/components/overlay/editors/text.js.map +1 -0
  137. package/dist/collection/components/overlay/keyboard.service.js +1 -0
  138. package/dist/collection/components/overlay/keyboard.service.js.map +1 -0
  139. package/dist/collection/components/overlay/revogr-edit.js +106 -94
  140. package/dist/collection/components/overlay/revogr-edit.js.map +1 -0
  141. package/dist/collection/components/overlay/revogr-overlay-selection.js +488 -466
  142. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -0
  143. package/dist/collection/components/overlay/selection.utils.js +1 -0
  144. package/dist/collection/components/overlay/selection.utils.js.map +1 -0
  145. package/dist/collection/components/revo-grid/revo-grid-style.css +7 -13
  146. package/dist/collection/components/revo-grid/revo-grid.js +1565 -1618
  147. package/dist/collection/components/revo-grid/revo-grid.js.map +1 -0
  148. package/dist/collection/components/revo-grid/viewport.helpers.js +1 -0
  149. package/dist/collection/components/revo-grid/viewport.helpers.js.map +1 -0
  150. package/dist/collection/components/revo-grid/viewport.interfaces.js +1 -3
  151. package/dist/collection/components/revo-grid/viewport.interfaces.js.map +1 -0
  152. package/dist/collection/components/revo-grid/viewport.js +2 -5
  153. package/dist/collection/components/revo-grid/viewport.js.map +1 -0
  154. package/dist/collection/components/revo-grid/viewport.resize.service.js +1 -0
  155. package/dist/collection/components/revo-grid/viewport.resize.service.js.map +1 -0
  156. package/dist/collection/components/revo-grid/viewport.scrolling.service.js +1 -0
  157. package/dist/collection/components/revo-grid/viewport.scrolling.service.js.map +1 -0
  158. package/dist/collection/components/revo-grid/viewport.section.js +2 -4
  159. package/dist/collection/components/revo-grid/viewport.section.js.map +1 -0
  160. package/dist/collection/components/revo-grid/viewport.service.js +8 -2
  161. package/dist/collection/components/revo-grid/viewport.service.js.map +1 -0
  162. package/dist/collection/components/rowHeaders/revogr-row-headers.js +151 -142
  163. package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -0
  164. package/dist/collection/components/rowHeaders/row-header-render.js +1 -0
  165. package/dist/collection/components/rowHeaders/row-header-render.js.map +1 -0
  166. package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +2 -4
  167. package/dist/collection/components/scroll/revogr-viewport-scroll.js +161 -164
  168. package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -0
  169. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +147 -135
  170. package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -0
  171. package/dist/collection/components/selection-focus/revogr-focus.js +141 -125
  172. package/dist/collection/components/selection-focus/revogr-focus.js.map +1 -0
  173. package/dist/collection/components/selection-temp-range/revogr-temp-range-style.css +1 -1
  174. package/dist/collection/components/selection-temp-range/revogr-temp-range.js +83 -74
  175. package/dist/collection/components/selection-temp-range/revogr-temp-range.js.map +1 -0
  176. package/dist/collection/global/global.js +1 -0
  177. package/dist/collection/global/global.js.map +1 -0
  178. package/dist/collection/index.js +1 -0
  179. package/dist/collection/index.js.map +1 -0
  180. package/dist/collection/plugins/autoSizeColumn.js +1 -0
  181. package/dist/collection/plugins/autoSizeColumn.js.map +1 -0
  182. package/dist/collection/plugins/basePlugin.js +1 -0
  183. package/dist/collection/plugins/basePlugin.js.map +1 -0
  184. package/dist/collection/plugins/dispatcher.js +1 -0
  185. package/dist/collection/plugins/dispatcher.js.map +1 -0
  186. package/dist/collection/plugins/export/csv.js +1 -0
  187. package/dist/collection/plugins/export/csv.js.map +1 -0
  188. package/dist/collection/plugins/export/export.plugin.js +1 -0
  189. package/dist/collection/plugins/export/export.plugin.js.map +1 -0
  190. package/dist/collection/plugins/export/types.js +1 -3
  191. package/dist/collection/plugins/export/types.js.map +1 -0
  192. package/dist/collection/plugins/filter/conditions/equal.js +1 -0
  193. package/dist/collection/plugins/filter/conditions/equal.js.map +1 -0
  194. package/dist/collection/plugins/filter/conditions/number/greaterThan.js +1 -0
  195. package/dist/collection/plugins/filter/conditions/number/greaterThan.js.map +1 -0
  196. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js +1 -0
  197. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js.map +1 -0
  198. package/dist/collection/plugins/filter/conditions/number/lessThan.js +1 -0
  199. package/dist/collection/plugins/filter/conditions/number/lessThan.js.map +1 -0
  200. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js +1 -0
  201. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js.map +1 -0
  202. package/dist/collection/plugins/filter/conditions/set.js +1 -0
  203. package/dist/collection/plugins/filter/conditions/set.js.map +1 -0
  204. package/dist/collection/plugins/filter/conditions/string/beginswith.js +1 -0
  205. package/dist/collection/plugins/filter/conditions/string/beginswith.js.map +1 -0
  206. package/dist/collection/plugins/filter/conditions/string/contains.js +1 -0
  207. package/dist/collection/plugins/filter/conditions/string/contains.js.map +1 -0
  208. package/dist/collection/plugins/filter/filter.button.js +6 -11
  209. package/dist/collection/plugins/filter/filter.button.js.map +1 -0
  210. package/dist/collection/plugins/filter/filter.plugin.js +1 -0
  211. package/dist/collection/plugins/filter/filter.plugin.js.map +1 -0
  212. package/dist/collection/plugins/filter/filter.pop.js +239 -234
  213. package/dist/collection/plugins/filter/filter.pop.js.map +1 -0
  214. package/dist/collection/plugins/filter/filter.service.js +1 -0
  215. package/dist/collection/plugins/filter/filter.service.js.map +1 -0
  216. package/dist/collection/plugins/filter/filter.style.css +2 -3
  217. package/dist/collection/plugins/filter/filter.types.js +1 -3
  218. package/dist/collection/plugins/filter/filter.types.js.map +1 -0
  219. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js +1 -0
  220. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +1 -0
  221. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js +1 -0
  222. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js.map +1 -0
  223. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js +1 -0
  224. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js.map +1 -0
  225. package/dist/collection/plugins/groupingRow/grouping.const.js +1 -0
  226. package/dist/collection/plugins/groupingRow/grouping.const.js.map +1 -0
  227. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js +1 -0
  228. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js.map +1 -0
  229. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +6 -5
  230. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -0
  231. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +3 -7
  232. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -0
  233. package/dist/collection/plugins/groupingRow/grouping.row.types.js +1 -3
  234. package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -0
  235. package/dist/collection/plugins/groupingRow/grouping.service.js +1 -0
  236. package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -0
  237. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +1 -0
  238. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js.map +1 -0
  239. package/dist/collection/plugins/moveColumn/columnDragPlugin.js +1 -0
  240. package/dist/collection/plugins/moveColumn/columnDragPlugin.js.map +1 -0
  241. package/dist/collection/plugins/moveColumn/columnOrderHandler.js +1 -0
  242. package/dist/collection/plugins/moveColumn/columnOrderHandler.js.map +1 -0
  243. package/dist/collection/plugins/sorting/sorting.plugin.js +4 -3
  244. package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -0
  245. package/dist/collection/plugins/sorting/sorting.sign.js +1 -0
  246. package/dist/collection/plugins/sorting/sorting.sign.js.map +1 -0
  247. package/dist/collection/plugins/stretchPlugin.js +1 -0
  248. package/dist/collection/plugins/stretchPlugin.js.map +1 -0
  249. package/dist/collection/plugins/trimmed/trimmed.plugin.js +1 -0
  250. package/dist/collection/plugins/trimmed/trimmed.plugin.js.map +1 -0
  251. package/dist/collection/services/cell.helpers.js +1 -0
  252. package/dist/collection/services/cell.helpers.js.map +1 -0
  253. package/dist/collection/services/column.data.provider.js +8 -7
  254. package/dist/collection/services/column.data.provider.js.map +1 -0
  255. package/dist/collection/services/data.provider.js +1 -0
  256. package/dist/collection/services/data.provider.js.map +1 -0
  257. package/dist/collection/services/dimension.provider.js +1 -0
  258. package/dist/collection/services/dimension.provider.js.map +1 -0
  259. package/dist/collection/services/localScrollService.js +1 -0
  260. package/dist/collection/services/localScrollService.js.map +1 -0
  261. package/dist/collection/services/resizable.directive.js +2 -3
  262. package/dist/collection/services/resizable.directive.js.map +1 -0
  263. package/dist/collection/services/selection.store.connector.js +1 -0
  264. package/dist/collection/services/selection.store.connector.js.map +1 -0
  265. package/dist/collection/services/viewport.provider.js +1 -0
  266. package/dist/collection/services/viewport.provider.js.map +1 -0
  267. package/dist/collection/store/dataSource/data.proxy.js +1 -0
  268. package/dist/collection/store/dataSource/data.proxy.js.map +1 -0
  269. package/dist/collection/store/dataSource/data.store.js +4 -3
  270. package/dist/collection/store/dataSource/data.store.js.map +1 -0
  271. package/dist/collection/store/dimension/dimension.helpers.js +1 -0
  272. package/dist/collection/store/dimension/dimension.helpers.js.map +1 -0
  273. package/dist/collection/store/dimension/dimension.store.js +5 -3
  274. package/dist/collection/store/dimension/dimension.store.js.map +1 -0
  275. package/dist/collection/store/selection/selection.helpers.js +1 -0
  276. package/dist/collection/store/selection/selection.helpers.js.map +1 -0
  277. package/dist/collection/store/selection/selection.store.js +1 -0
  278. package/dist/collection/store/selection/selection.store.js.map +1 -0
  279. package/dist/collection/store/selection/selection.store.service.js +1 -0
  280. package/dist/collection/store/selection/selection.store.service.js.map +1 -0
  281. package/dist/collection/store/storeTypes.js +1 -0
  282. package/dist/collection/store/storeTypes.js.map +1 -0
  283. package/dist/collection/store/viewPort/viewport.helpers.js +1 -0
  284. package/dist/collection/store/viewPort/viewport.helpers.js.map +1 -0
  285. package/dist/collection/store/viewPort/viewport.store.js +1 -1
  286. package/dist/collection/store/viewPort/viewport.store.js.map +1 -0
  287. package/dist/collection/themeManager/theme.compact.js +1 -0
  288. package/dist/collection/themeManager/theme.compact.js.map +1 -0
  289. package/dist/collection/themeManager/theme.default.js +1 -0
  290. package/dist/collection/themeManager/theme.default.js.map +1 -0
  291. package/dist/collection/themeManager/theme.material.js +1 -0
  292. package/dist/collection/themeManager/theme.material.js.map +1 -0
  293. package/dist/collection/themeManager/themeService.js +6 -5
  294. package/dist/collection/themeManager/themeService.js.map +1 -0
  295. package/dist/collection/utils/closestPolifill.js +1 -0
  296. package/dist/collection/utils/closestPolifill.js.map +1 -0
  297. package/dist/collection/utils/consts.js +1 -0
  298. package/dist/collection/utils/consts.js.map +1 -0
  299. package/dist/collection/utils/generateAlphabetHeader.js +1 -0
  300. package/dist/collection/utils/generateAlphabetHeader.js.map +1 -0
  301. package/dist/collection/utils/keyCodes.js +1 -0
  302. package/dist/collection/utils/keyCodes.js.map +1 -0
  303. package/dist/collection/utils/keyCodes.utils.js +1 -0
  304. package/dist/collection/utils/keyCodes.utils.js.map +1 -0
  305. package/dist/collection/utils/platform.js +1 -0
  306. package/dist/collection/utils/platform.js.map +1 -0
  307. package/dist/collection/utils/resizeObserver.js +1 -0
  308. package/dist/collection/utils/resizeObserver.js.map +1 -0
  309. package/dist/collection/utils/store.utils.js +1 -0
  310. package/dist/collection/utils/store.utils.js.map +1 -0
  311. package/dist/collection/utils/utils.js +1 -0
  312. package/dist/collection/utils/utils.js.map +1 -0
  313. package/dist/esm/{debounce-e4e6dd45.js → debounce-7221834a.js} +3 -1
  314. package/dist/esm/debounce-7221834a.js.map +1 -0
  315. package/dist/esm/{index-6f753b3c.js → index-068eebfc.js} +577 -279
  316. package/dist/esm/index-068eebfc.js.map +1 -0
  317. package/dist/esm/index.js +2 -0
  318. package/dist/esm/index.js.map +1 -0
  319. package/dist/esm/loader.js +5 -16
  320. package/dist/esm/loader.js.map +1 -0
  321. package/dist/esm/polyfills/css-shim.js +1 -1
  322. package/dist/esm/{resize-observer-00c48d78.js → resize-observer-d817c4b6.js} +5 -3
  323. package/dist/esm/resize-observer-d817c4b6.js.map +1 -0
  324. package/dist/esm/revo-grid.js +9 -60
  325. package/dist/esm/revo-grid.js.map +1 -0
  326. package/dist/esm/revo-grid_11.entry.js +153 -150
  327. package/dist/esm/revo-grid_11.entry.js.map +1 -0
  328. package/dist/esm/revogr-clipboard.entry.js +4 -3
  329. package/dist/esm/revogr-clipboard.entry.js.map +1 -0
  330. package/dist/esm/revogr-filter-panel.entry.js +11 -6
  331. package/dist/esm/revogr-filter-panel.entry.js.map +1 -0
  332. package/dist/esm-es5/{debounce-e4e6dd45.js → debounce-7221834a.js} +2 -1
  333. package/dist/esm-es5/debounce-7221834a.js.map +1 -0
  334. package/dist/esm-es5/index-068eebfc.js +5 -0
  335. package/dist/esm-es5/index-068eebfc.js.map +1 -0
  336. package/dist/esm-es5/index.js +1 -0
  337. package/dist/esm-es5/index.js.map +1 -0
  338. package/dist/esm-es5/loader.js +2 -1
  339. package/dist/esm-es5/loader.js.map +1 -0
  340. package/dist/esm-es5/{resize-observer-00c48d78.js → resize-observer-d817c4b6.js} +2 -1
  341. package/dist/esm-es5/resize-observer-d817c4b6.js.map +1 -0
  342. package/dist/esm-es5/revo-grid.js +2 -1
  343. package/dist/esm-es5/revo-grid.js.map +1 -0
  344. package/dist/esm-es5/revo-grid_11.entry.js +3 -2
  345. package/dist/esm-es5/revo-grid_11.entry.js.map +1 -0
  346. package/dist/esm-es5/revogr-clipboard.entry.js +3 -2
  347. package/dist/esm-es5/revogr-clipboard.entry.js.map +1 -0
  348. package/dist/esm-es5/revogr-filter-panel.entry.js +3 -2
  349. package/dist/esm-es5/revogr-filter-panel.entry.js.map +1 -0
  350. package/dist/revo-grid/debounce-7221834a.js +5 -0
  351. package/dist/revo-grid/debounce-7221834a.js.map +1 -0
  352. package/dist/revo-grid/{debounce-5a33c710.system.js → debounce-fa358fc7.system.js} +2 -1
  353. package/dist/revo-grid/debounce-fa358fc7.system.js.map +1 -0
  354. package/dist/revo-grid/index-068eebfc.js +6 -0
  355. package/dist/revo-grid/index-068eebfc.js.map +1 -0
  356. package/dist/revo-grid/index-36847b63.system.js +6 -0
  357. package/dist/revo-grid/index-36847b63.system.js.map +1 -0
  358. package/dist/revo-grid/index.esm.js +2 -0
  359. package/dist/revo-grid/index.esm.js.map +1 -0
  360. package/dist/revo-grid/index.system.js +2 -1
  361. package/dist/revo-grid/index.system.js.map +1 -0
  362. package/dist/revo-grid/{resize-observer-8af0bc0e.system.js → resize-observer-64c845eb.system.js} +2 -1
  363. package/dist/revo-grid/resize-observer-64c845eb.system.js.map +1 -0
  364. package/dist/revo-grid/resize-observer-d817c4b6.js +5 -0
  365. package/dist/revo-grid/resize-observer-d817c4b6.js.map +1 -0
  366. package/dist/revo-grid/revo-grid.esm.js +2 -1
  367. package/dist/revo-grid/revo-grid.esm.js.map +1 -0
  368. package/dist/revo-grid/revo-grid.js +0 -2
  369. package/dist/revo-grid/revo-grid.system.js +2 -1
  370. package/dist/revo-grid/revo-grid.system.js.map +1 -0
  371. package/dist/revo-grid/revo-grid_11.entry.js +2 -1
  372. package/dist/revo-grid/revo-grid_11.entry.js.map +1 -0
  373. package/dist/revo-grid/revo-grid_11.system.entry.js +3 -2
  374. package/dist/revo-grid/revo-grid_11.system.entry.js.map +1 -0
  375. package/dist/revo-grid/revogr-clipboard.entry.js +2 -1
  376. package/dist/revo-grid/revogr-clipboard.entry.js.map +1 -0
  377. package/dist/revo-grid/revogr-clipboard.system.entry.js +3 -2
  378. package/dist/revo-grid/revogr-clipboard.system.entry.js.map +1 -0
  379. package/dist/revo-grid/revogr-filter-panel.entry.js +2 -1
  380. package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -0
  381. package/dist/revo-grid/revogr-filter-panel.system.entry.js +3 -2
  382. package/dist/revo-grid/revogr-filter-panel.system.entry.js.map +1 -0
  383. package/dist/types/components/data/cellRenderer.d.ts +1 -1
  384. package/dist/types/components/data/columnService.d.ts +4 -4
  385. package/dist/types/components/header/headerCellRenderer.d.ts +1 -1
  386. package/dist/types/components/header/headerRenderer.d.ts +1 -1
  387. package/dist/types/components/order/orderRenderer.d.ts +1 -1
  388. package/dist/types/components/order/rowOrderService.d.ts +1 -1
  389. package/dist/types/components/overlay/autofill.service.d.ts +1 -1
  390. package/dist/types/components/overlay/clipboard.service.d.ts +1 -1
  391. package/dist/types/components/overlay/editors/text.d.ts +1 -1
  392. package/dist/types/components/overlay/keyboard.service.d.ts +1 -1
  393. package/dist/types/components/overlay/selection.utils.d.ts +1 -1
  394. package/dist/types/components/revo-grid/viewport.d.ts +1 -1
  395. package/dist/types/components/revo-grid/viewport.interfaces.d.ts +5 -5
  396. package/dist/types/components/revo-grid/viewport.scrolling.service.d.ts +1 -1
  397. package/dist/types/components/revo-grid/viewport.section.d.ts +1 -1
  398. package/dist/types/components/revo-grid/viewport.service.d.ts +6 -3
  399. package/dist/types/components/rowHeaders/row-header-render.d.ts +1 -1
  400. package/dist/types/components.d.ts +26 -0
  401. package/dist/types/plugins/autoSizeColumn.d.ts +1 -1
  402. package/dist/types/plugins/dispatcher.d.ts +1 -1
  403. package/dist/types/plugins/export/csv.d.ts +1 -1
  404. package/dist/types/plugins/export/export.plugin.d.ts +1 -1
  405. package/dist/types/plugins/export/types.d.ts +2 -2
  406. package/dist/types/plugins/filter/filter.button.d.ts +1 -1
  407. package/dist/types/plugins/filter/filter.plugin.d.ts +6 -6
  408. package/dist/types/plugins/filter/filter.pop.d.ts +4 -4
  409. package/dist/types/plugins/filter/filter.service.d.ts +1 -1
  410. package/dist/types/plugins/filter/filter.types.d.ts +5 -5
  411. package/dist/types/plugins/groupingColumn/columnGroupsRenderer.d.ts +1 -1
  412. package/dist/types/plugins/groupingColumn/grouping.col.plugin.d.ts +1 -1
  413. package/dist/types/plugins/groupingColumn/headerGroupRenderer.d.ts +1 -1
  414. package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +1 -1
  415. package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +5 -5
  416. package/dist/types/plugins/groupingRow/grouping.service.d.ts +1 -1
  417. package/dist/types/plugins/moveColumn/columnDragPlugin.d.ts +5 -5
  418. package/dist/types/plugins/sorting/sorting.plugin.d.ts +1 -1
  419. package/dist/types/plugins/sorting/sorting.sign.d.ts +1 -1
  420. package/dist/types/plugins/trimmed/trimmed.plugin.d.ts +2 -2
  421. package/dist/types/services/column.data.provider.d.ts +4 -4
  422. package/dist/types/services/data.provider.d.ts +1 -1
  423. package/dist/types/services/dimension.provider.d.ts +2 -2
  424. package/dist/types/services/localScrollService.d.ts +1 -1
  425. package/dist/types/services/resizable.directive.d.ts +2 -2
  426. package/dist/types/services/selection.store.connector.d.ts +2 -2
  427. package/dist/types/services/viewport.provider.d.ts +1 -1
  428. package/dist/types/stencil-public-runtime.d.ts +91 -19
  429. package/dist/types/store/dataSource/data.proxy.d.ts +1 -1
  430. package/dist/types/store/dataSource/data.store.d.ts +4 -4
  431. package/dist/types/store/dimension/dimension.helpers.d.ts +3 -3
  432. package/dist/types/store/selection/selection.store.d.ts +1 -1
  433. package/dist/types/store/viewPort/viewport.helpers.d.ts +2 -2
  434. package/loader/index.d.ts +9 -0
  435. package/loader/package.json +1 -0
  436. package/package.json +1 -1
  437. package/dist/cjs/css-shim-9f5bc84d.js +0 -9
  438. package/dist/cjs/dom-fcb646f0.js +0 -78
  439. package/dist/esm/css-shim-e1e1ea5e.js +0 -7
  440. package/dist/esm/dom-21bd1807.js +0 -76
  441. package/dist/esm-es5/css-shim-e1e1ea5e.js +0 -4
  442. package/dist/esm-es5/dom-21bd1807.js +0 -24
  443. package/dist/esm-es5/index-6f753b3c.js +0 -4
  444. package/dist/revo-grid/css-shim-bcf89cc0.system.js +0 -4
  445. package/dist/revo-grid/css-shim-e1e1ea5e.js +0 -4
  446. package/dist/revo-grid/debounce-726bdadb.js +0 -4
  447. package/dist/revo-grid/dom-21bd1807.js +0 -22
  448. package/dist/revo-grid/dom-726246e2.system.js +0 -24
  449. package/dist/revo-grid/index-f14b41a0.system.js +0 -5
  450. package/dist/revo-grid/index-f30d1de1.js +0 -5
  451. package/dist/revo-grid/resize-observer-00c48d78.js +0 -4
@@ -3,6 +3,14 @@
3
3
  */
4
4
  const NAMESPACE = 'revo-grid';
5
5
 
6
+ /**
7
+ * Virtual DOM patching algorithm based on Snabbdom by
8
+ * Simon Friis Vindum (@paldepind)
9
+ * Licensed under the MIT License
10
+ * https://github.com/snabbdom/snabbdom/blob/master/LICENSE
11
+ *
12
+ * Modified for Stencil's renderer and slot projection
13
+ */
6
14
  let contentRef;
7
15
  let hostTagName;
8
16
  let useNativeShadowDom = false;
@@ -11,64 +19,6 @@ let checkSlotRelocate = false;
11
19
  let isSvgMode = false;
12
20
  let renderingRef = null;
13
21
  let queuePending = false;
14
- const win = typeof window !== 'undefined' ? window : {};
15
- const CSS = win.CSS ;
16
- const doc = win.document || { head: {} };
17
- const plt = {
18
- $flags$: 0,
19
- $resourcesUrl$: '',
20
- jmp: (h) => h(),
21
- raf: (h) => requestAnimationFrame(h),
22
- ael: (el, eventName, listener, opts) => el.addEventListener(eventName, listener, opts),
23
- rel: (el, eventName, listener, opts) => el.removeEventListener(eventName, listener, opts),
24
- ce: (eventName, opts) => new CustomEvent(eventName, opts),
25
- };
26
- const promiseResolve = (v) => Promise.resolve(v);
27
- const supportsConstructableStylesheets = /*@__PURE__*/ (() => {
28
- try {
29
- new CSSStyleSheet();
30
- return typeof new CSSStyleSheet().replaceSync === 'function';
31
- }
32
- catch (e) { }
33
- return false;
34
- })()
35
- ;
36
- const addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) => {
37
- if (listeners) {
38
- listeners.map(([flags, name, method]) => {
39
- const target = getHostListenerTarget(elm, flags) ;
40
- const handler = hostListenerProxy(hostRef, method);
41
- const opts = hostListenerOpts(flags);
42
- plt.ael(target, name, handler, opts);
43
- (hostRef.$rmListeners$ = hostRef.$rmListeners$ || []).push(() => plt.rel(target, name, handler, opts));
44
- });
45
- }
46
- };
47
- const hostListenerProxy = (hostRef, methodName) => (ev) => {
48
- try {
49
- {
50
- if (hostRef.$flags$ & 256 /* isListenReady */) {
51
- // instance is ready, let's call it's member method for this event
52
- hostRef.$lazyInstance$[methodName](ev);
53
- }
54
- else {
55
- (hostRef.$queuedListeners$ = hostRef.$queuedListeners$ || []).push([methodName, ev]);
56
- }
57
- }
58
- }
59
- catch (e) {
60
- consoleError(e);
61
- }
62
- };
63
- const getHostListenerTarget = (elm, flags) => {
64
- if (flags & 4 /* TargetDocument */)
65
- return doc;
66
- return elm;
67
- };
68
- // prettier-ignore
69
- const hostListenerOpts = (flags) => (flags & 2 /* Capture */) !== 0;
70
- const HYDRATED_CSS = '{visibility:hidden}.hydrated{visibility:inherit}';
71
- const XLINK_NS = 'http://www.w3.org/1999/xlink';
72
22
  const createTime = (fnName, tagName = '') => {
73
23
  {
74
24
  return () => {
@@ -83,75 +33,8 @@ const uniqueTime = (key, measureText) => {
83
33
  };
84
34
  }
85
35
  };
86
- const rootAppliedStyles = new WeakMap();
87
- const registerStyle = (scopeId, cssText, allowCS) => {
88
- let style = styles.get(scopeId);
89
- if (supportsConstructableStylesheets && allowCS) {
90
- style = (style || new CSSStyleSheet());
91
- if (typeof style === 'string') {
92
- style = cssText;
93
- }
94
- else {
95
- style.replaceSync(cssText);
96
- }
97
- }
98
- else {
99
- style = cssText;
100
- }
101
- styles.set(scopeId, style);
102
- };
103
- const addStyle = (styleContainerNode, cmpMeta, mode, hostElm) => {
104
- let scopeId = getScopeId(cmpMeta);
105
- const style = styles.get(scopeId);
106
- // if an element is NOT connected then getRootNode() will return the wrong root node
107
- // so the fallback is to always use the document for the root node in those cases
108
- styleContainerNode = styleContainerNode.nodeType === 11 /* DocumentFragment */ ? styleContainerNode : doc;
109
- if (style) {
110
- if (typeof style === 'string') {
111
- styleContainerNode = styleContainerNode.head || styleContainerNode;
112
- let appliedStyles = rootAppliedStyles.get(styleContainerNode);
113
- let styleElm;
114
- if (!appliedStyles) {
115
- rootAppliedStyles.set(styleContainerNode, (appliedStyles = new Set()));
116
- }
117
- if (!appliedStyles.has(scopeId)) {
118
- {
119
- if (plt.$cssShim$) {
120
- styleElm = plt.$cssShim$.createHostStyle(hostElm, scopeId, style, !!(cmpMeta.$flags$ & 10 /* needsScopedEncapsulation */));
121
- const newScopeId = styleElm['s-sc'];
122
- if (newScopeId) {
123
- scopeId = newScopeId;
124
- // we don't want to add this styleID to the appliedStyles Set
125
- // since the cssVarShim might need to apply several different
126
- // stylesheets for the same component
127
- appliedStyles = null;
128
- }
129
- }
130
- else {
131
- styleElm = doc.createElement('style');
132
- styleElm.innerHTML = style;
133
- }
134
- styleContainerNode.insertBefore(styleElm, styleContainerNode.querySelector('link'));
135
- }
136
- if (appliedStyles) {
137
- appliedStyles.add(scopeId);
138
- }
139
- }
140
- }
141
- else if (!styleContainerNode.adoptedStyleSheets.includes(style)) {
142
- styleContainerNode.adoptedStyleSheets = [...styleContainerNode.adoptedStyleSheets, style];
143
- }
144
- }
145
- return scopeId;
146
- };
147
- const attachStyles = (hostRef) => {
148
- const cmpMeta = hostRef.$cmpMeta$;
149
- const elm = hostRef.$hostElement$;
150
- const endAttachStyles = createTime('attachStyles', cmpMeta.$tagName$);
151
- addStyle(elm.getRootNode(), cmpMeta, hostRef.$modeName$, elm);
152
- endAttachStyles();
153
- };
154
- const getScopeId = (cmp, mode) => 'sc-' + (cmp.$tagName$);
36
+ const HYDRATED_CSS = '{visibility:hidden}.hydrated{visibility:inherit}';
37
+ const XLINK_NS = 'http://www.w3.org/1999/xlink';
155
38
  /**
156
39
  * Default style mode id
157
40
  */
@@ -165,11 +48,30 @@ const EMPTY_OBJ = {};
165
48
  */
166
49
  const SVG_NS = 'http://www.w3.org/2000/svg';
167
50
  const HTML_NS = 'http://www.w3.org/1999/xhtml';
51
+ /**
52
+ * Check whether a value is a 'complex type', defined here as an object or a
53
+ * function.
54
+ *
55
+ * @param o the value to check
56
+ * @returns whether it's a complex type or not
57
+ */
168
58
  const isComplexType = (o) => {
169
59
  // https://jsperf.com/typeof-fn-object/5
170
60
  o = typeof o;
171
61
  return o === 'object' || o === 'function';
172
62
  };
63
+ /**
64
+ * Helper method for querying a `meta` tag that contains a nonce value
65
+ * out of a DOM's head.
66
+ *
67
+ * @param doc The DOM containing the `head` to query against
68
+ * @returns The content of the meta tag representing the nonce value, or `undefined` if no tag
69
+ * exists or the tag has no content.
70
+ */
71
+ function queryNonceMetaTagContent(doc) {
72
+ var _a, _b, _c;
73
+ return (_c = (_b = (_a = doc.head) === null || _a === void 0 ? void 0 : _a.querySelector('meta[name="csp-nonce"]')) === null || _b === void 0 ? void 0 : _b.getAttribute('content')) !== null && _c !== void 0 ? _c : undefined;
74
+ }
173
75
  /**
174
76
  * Production h() function based on Preact by
175
77
  * Jason Miller (@developit)
@@ -178,7 +80,6 @@ const isComplexType = (o) => {
178
80
  *
179
81
  * Modified for Stencil's compiler and vdom
180
82
  */
181
- // const stack: any[] = [];
182
83
  // export function h(nodeName: string | d.FunctionalComponent, vnodeData: d.PropsType, child?: d.ChildType): d.VNode;
183
84
  // export function h(nodeName: string | d.FunctionalComponent, vnodeData: d.PropsType, ...children: d.ChildType[]): d.VNode;
184
85
  const h = (nodeName, vnodeData, ...children) => {
@@ -248,6 +149,14 @@ const h = (nodeName, vnodeData, ...children) => {
248
149
  }
249
150
  return vnode;
250
151
  };
152
+ /**
153
+ * A utility function for creating a virtual DOM node from a tag and some
154
+ * possible text content.
155
+ *
156
+ * @param tag the tag for this element
157
+ * @param text possible text content for the node
158
+ * @returns a newly-minted virtual DOM node
159
+ */
251
160
  const newVNode = (tag, text) => {
252
161
  const vnode = {
253
162
  $flags$: 0,
@@ -268,11 +177,31 @@ const newVNode = (tag, text) => {
268
177
  return vnode;
269
178
  };
270
179
  const Host = {};
180
+ /**
181
+ * Check whether a given node is a Host node or not
182
+ *
183
+ * @param node the virtual DOM node to check
184
+ * @returns whether it's a Host node or not
185
+ */
271
186
  const isHost = (node) => node && node.$tag$ === Host;
187
+ /**
188
+ * Implementation of {@link d.FunctionalUtilities} for Stencil's VDom.
189
+ *
190
+ * Note that these functions convert from {@link d.VNode} to
191
+ * {@link d.ChildNode} to give functional component developers a friendly
192
+ * interface.
193
+ */
272
194
  const vdomFnUtils = {
273
195
  forEach: (children, cb) => children.map(convertToPublic).forEach(cb),
274
196
  map: (children, cb) => children.map(convertToPublic).map(cb).map(convertToPrivate),
275
197
  };
198
+ /**
199
+ * Convert a {@link d.VNode} to a {@link d.ChildNode} in order to present a
200
+ * friendlier public interface (hence, 'convertToPublic').
201
+ *
202
+ * @param node the virtual DOM node to convert
203
+ * @returns a converted child node
204
+ */
276
205
  const convertToPublic = (node) => ({
277
206
  vattrs: node.$attrs$,
278
207
  vchildren: node.$children$,
@@ -281,6 +210,15 @@ const convertToPublic = (node) => ({
281
210
  vtag: node.$tag$,
282
211
  vtext: node.$text$,
283
212
  });
213
+ /**
214
+ * Convert a {@link d.ChildNode} back to an equivalent {@link d.VNode} in
215
+ * order to use the resulting object in the virtual DOM. The initial object was
216
+ * likely created as part of presenting a public API, so converting it back
217
+ * involved making it 'private' again (hence, `convertToPrivate`).
218
+ *
219
+ * @param node the child node to convert
220
+ * @returns a converted virtual DOM node
221
+ */
284
222
  const convertToPrivate = (node) => {
285
223
  if (typeof node.vtag === 'function') {
286
224
  const vnodeData = Object.assign({}, node.vattrs);
@@ -299,6 +237,144 @@ const convertToPrivate = (node) => {
299
237
  vnode.$name$ = node.vname;
300
238
  return vnode;
301
239
  };
240
+ /**
241
+ * Parse a new property value for a given property type.
242
+ *
243
+ * While the prop value can reasonably be expected to be of `any` type as far as TypeScript's type checker is concerned,
244
+ * it is not safe to assume that the string returned by evaluating `typeof propValue` matches:
245
+ * 1. `any`, the type given to `propValue` in the function signature
246
+ * 2. the type stored from `propType`.
247
+ *
248
+ * This function provides the capability to parse/coerce a property's value to potentially any other JavaScript type.
249
+ *
250
+ * Property values represented in TSX preserve their type information. In the example below, the number 0 is passed to
251
+ * a component. This `propValue` will preserve its type information (`typeof propValue === 'number'`). Note that is
252
+ * based on the type of the value being passed in, not the type declared of the class member decorated with `@Prop`.
253
+ * ```tsx
254
+ * <my-cmp prop-val={0}></my-cmp>
255
+ * ```
256
+ *
257
+ * HTML prop values on the other hand, will always a string
258
+ *
259
+ * @param propValue the new value to coerce to some type
260
+ * @param propType the type of the prop, expressed as a binary number
261
+ * @returns the parsed/coerced value
262
+ */
263
+ const parsePropertyValue = (propValue, propType) => {
264
+ // ensure this value is of the correct prop type
265
+ if (propValue != null && !isComplexType(propValue)) {
266
+ if (propType & 4 /* MEMBER_FLAGS.Boolean */) {
267
+ // per the HTML spec, any string value means it is a boolean true value
268
+ // but we'll cheat here and say that the string "false" is the boolean false
269
+ return propValue === 'false' ? false : propValue === '' || !!propValue;
270
+ }
271
+ if (propType & 2 /* MEMBER_FLAGS.Number */) {
272
+ // force it to be a number
273
+ return parseFloat(propValue);
274
+ }
275
+ if (propType & 1 /* MEMBER_FLAGS.String */) {
276
+ // could have been passed as a number or boolean
277
+ // but we still want it as a string
278
+ return String(propValue);
279
+ }
280
+ // redundant return here for better minification
281
+ return propValue;
282
+ }
283
+ // not sure exactly what type we want
284
+ // so no need to change to a different type
285
+ return propValue;
286
+ };
287
+ const getElement = (ref) => (getHostRef(ref).$hostElement$ );
288
+ const createEvent = (ref, name, flags) => {
289
+ const elm = getElement(ref);
290
+ return {
291
+ emit: (detail) => {
292
+ return emitEvent(elm, name, {
293
+ bubbles: !!(flags & 4 /* EVENT_FLAGS.Bubbles */),
294
+ composed: !!(flags & 2 /* EVENT_FLAGS.Composed */),
295
+ cancelable: !!(flags & 1 /* EVENT_FLAGS.Cancellable */),
296
+ detail,
297
+ });
298
+ },
299
+ };
300
+ };
301
+ /**
302
+ * Helper function to create & dispatch a custom Event on a provided target
303
+ * @param elm the target of the Event
304
+ * @param name the name to give the custom Event
305
+ * @param opts options for configuring a custom Event
306
+ * @returns the custom Event
307
+ */
308
+ const emitEvent = (elm, name, opts) => {
309
+ const ev = plt.ce(name, opts);
310
+ elm.dispatchEvent(ev);
311
+ return ev;
312
+ };
313
+ const rootAppliedStyles = /*@__PURE__*/ new WeakMap();
314
+ const registerStyle = (scopeId, cssText, allowCS) => {
315
+ let style = styles.get(scopeId);
316
+ if (supportsConstructableStylesheets && allowCS) {
317
+ style = (style || new CSSStyleSheet());
318
+ if (typeof style === 'string') {
319
+ style = cssText;
320
+ }
321
+ else {
322
+ style.replaceSync(cssText);
323
+ }
324
+ }
325
+ else {
326
+ style = cssText;
327
+ }
328
+ styles.set(scopeId, style);
329
+ };
330
+ const addStyle = (styleContainerNode, cmpMeta, mode, hostElm) => {
331
+ var _a;
332
+ let scopeId = getScopeId(cmpMeta);
333
+ const style = styles.get(scopeId);
334
+ // if an element is NOT connected then getRootNode() will return the wrong root node
335
+ // so the fallback is to always use the document for the root node in those cases
336
+ styleContainerNode = styleContainerNode.nodeType === 11 /* NODE_TYPE.DocumentFragment */ ? styleContainerNode : doc;
337
+ if (style) {
338
+ if (typeof style === 'string') {
339
+ styleContainerNode = styleContainerNode.head || styleContainerNode;
340
+ let appliedStyles = rootAppliedStyles.get(styleContainerNode);
341
+ let styleElm;
342
+ if (!appliedStyles) {
343
+ rootAppliedStyles.set(styleContainerNode, (appliedStyles = new Set()));
344
+ }
345
+ if (!appliedStyles.has(scopeId)) {
346
+ {
347
+ // TODO(STENCIL-659): Remove code implementing the CSS variable shim
348
+ {
349
+ styleElm = doc.createElement('style');
350
+ styleElm.innerHTML = style;
351
+ }
352
+ // Apply CSP nonce to the style tag if it exists
353
+ const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);
354
+ if (nonce != null) {
355
+ styleElm.setAttribute('nonce', nonce);
356
+ }
357
+ styleContainerNode.insertBefore(styleElm, styleContainerNode.querySelector('link'));
358
+ }
359
+ if (appliedStyles) {
360
+ appliedStyles.add(scopeId);
361
+ }
362
+ }
363
+ }
364
+ else if (!styleContainerNode.adoptedStyleSheets.includes(style)) {
365
+ styleContainerNode.adoptedStyleSheets = [...styleContainerNode.adoptedStyleSheets, style];
366
+ }
367
+ }
368
+ return scopeId;
369
+ };
370
+ const attachStyles = (hostRef) => {
371
+ const cmpMeta = hostRef.$cmpMeta$;
372
+ const elm = hostRef.$hostElement$;
373
+ const endAttachStyles = createTime('attachStyles', cmpMeta.$tagName$);
374
+ addStyle(elm.getRootNode(), cmpMeta);
375
+ endAttachStyles();
376
+ };
377
+ const getScopeId = (cmp, mode) => 'sc-' + (cmp.$tagName$);
302
378
  /**
303
379
  * Production setAccessor() function based on Preact by
304
380
  * Jason Miller (@developit)
@@ -435,7 +511,7 @@ const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
435
511
  }
436
512
  }
437
513
  }
438
- else if ((!isProp || flags & 4 /* isHost */ || isSvg) && !isComplex) {
514
+ else if ((!isProp || flags & 4 /* VNODE_FLAGS.isHost */ || isSvg) && !isComplex) {
439
515
  newValue = newValue === true ? '' : newValue;
440
516
  if (xlink) {
441
517
  elm.setAttributeNS(XLINK_NS, memberName, newValue);
@@ -453,7 +529,7 @@ const updateElement = (oldVnode, newVnode, isSvgMode, memberName) => {
453
529
  // if the element passed in is a shadow root, which is a document fragment
454
530
  // then we want to be adding attrs/props to the shadow root's "host" element
455
531
  // if it's not a shadow root, then we add attrs/props to the same element
456
- const elm = newVnode.$elm$.nodeType === 11 /* DocumentFragment */ && newVnode.$elm$.host
532
+ const elm = newVnode.$elm$.nodeType === 11 /* NODE_TYPE.DocumentFragment */ && newVnode.$elm$.host
457
533
  ? newVnode.$elm$.host
458
534
  : newVnode.$elm$;
459
535
  const oldVnodeAttrs = (oldVnode && oldVnode.$attrs$) || EMPTY_OBJ;
@@ -471,6 +547,16 @@ const updateElement = (oldVnode, newVnode, isSvgMode, memberName) => {
471
547
  setAccessor(elm, memberName, oldVnodeAttrs[memberName], newVnodeAttrs[memberName], isSvgMode, newVnode.$flags$);
472
548
  }
473
549
  };
550
+ /**
551
+ * Create a DOM Node corresponding to one of the children of a given VNode.
552
+ *
553
+ * @param oldParentVNode the parent VNode from the previous render
554
+ * @param newParentVNode the parent VNode from the current render
555
+ * @param childIndex the index of the VNode, in the _new_ parent node's
556
+ * children, for which we will create a new DOM node
557
+ * @param parentElm the parent DOM node which our new node will be a child of
558
+ * @returns the newly created node
559
+ */
474
560
  const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
475
561
  // tslint:disable-next-line: prefer-const
476
562
  const newVNode = newParentVNode.$children$[childIndex];
@@ -484,16 +570,16 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
484
570
  if (newVNode.$tag$ === 'slot') {
485
571
  newVNode.$flags$ |= newVNode.$children$
486
572
  ? // slot element has fallback content
487
- 2 /* isSlotFallback */
573
+ 2 /* VNODE_FLAGS.isSlotFallback */
488
574
  : // slot element does not have fallback content
489
- 1 /* isSlotReference */;
575
+ 1 /* VNODE_FLAGS.isSlotReference */;
490
576
  }
491
577
  }
492
578
  if (newVNode.$text$ !== null) {
493
579
  // create text node
494
580
  elm = newVNode.$elm$ = doc.createTextNode(newVNode.$text$);
495
581
  }
496
- else if (newVNode.$flags$ & 1 /* isSlotReference */) {
582
+ else if (newVNode.$flags$ & 1 /* VNODE_FLAGS.isSlotReference */) {
497
583
  // create a slot reference node
498
584
  elm = newVNode.$elm$ =
499
585
  doc.createTextNode('');
@@ -503,7 +589,7 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
503
589
  isSvgMode = newVNode.$tag$ === 'svg';
504
590
  }
505
591
  // create element
506
- elm = newVNode.$elm$ = (doc.createElementNS(isSvgMode ? SVG_NS : HTML_NS, newVNode.$flags$ & 2 /* isSlotFallback */
592
+ elm = newVNode.$elm$ = (doc.createElementNS(isSvgMode ? SVG_NS : HTML_NS, newVNode.$flags$ & 2 /* VNODE_FLAGS.isSlotFallback */
507
593
  ? 'slot-fb'
508
594
  : newVNode.$tag$)
509
595
  );
@@ -538,7 +624,7 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
538
624
  }
539
625
  {
540
626
  elm['s-hn'] = hostTagName;
541
- if (newVNode.$flags$ & (2 /* isSlotFallback */ | 1 /* isSlotReference */)) {
627
+ if (newVNode.$flags$ & (2 /* VNODE_FLAGS.isSlotFallback */ | 1 /* VNODE_FLAGS.isSlotReference */)) {
542
628
  // remember the content reference comment
543
629
  elm['s-sr'] = true;
544
630
  // remember the content reference comment
@@ -557,7 +643,7 @@ const createElm = (oldParentVNode, newParentVNode, childIndex, parentElm) => {
557
643
  return elm;
558
644
  };
559
645
  const putBackInOriginalLocation = (parentElm, recursive) => {
560
- plt.$flags$ |= 1 /* isTmpDisconnected */;
646
+ plt.$flags$ |= 1 /* PLATFORM_FLAGS.isTmpDisconnected */;
561
647
  const oldSlotChildNodes = parentElm.childNodes;
562
648
  for (let i = oldSlotChildNodes.length - 1; i >= 0; i--) {
563
649
  const childNode = oldSlotChildNodes[i];
@@ -578,8 +664,23 @@ const putBackInOriginalLocation = (parentElm, recursive) => {
578
664
  putBackInOriginalLocation(childNode, recursive);
579
665
  }
580
666
  }
581
- plt.$flags$ &= ~1 /* isTmpDisconnected */;
667
+ plt.$flags$ &= ~1 /* PLATFORM_FLAGS.isTmpDisconnected */;
582
668
  };
669
+ /**
670
+ * Create DOM nodes corresponding to a list of {@link d.Vnode} objects and
671
+ * add them to the DOM in the appropriate place.
672
+ *
673
+ * @param parentElm the DOM node which should be used as a parent for the new
674
+ * DOM nodes
675
+ * @param before a child of the `parentElm` which the new children should be
676
+ * inserted before (optional)
677
+ * @param parentVNode the parent virtual DOM node
678
+ * @param vnodes the new child virtual DOM nodes to produce DOM nodes for
679
+ * @param startIdx the index in the child virtual DOM nodes at which to start
680
+ * creating DOM nodes (inclusive)
681
+ * @param endIdx the index in the child virtual DOM nodes at which to stop
682
+ * creating DOM nodes (inclusive)
683
+ */
583
684
  const addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) => {
584
685
  let containerElm = ((parentElm['s-cr'] && parentElm['s-cr'].parentNode) || parentElm);
585
686
  let childNode;
@@ -593,6 +694,19 @@ const addVnodes = (parentElm, before, parentVNode, vnodes, startIdx, endIdx) =>
593
694
  }
594
695
  }
595
696
  };
697
+ /**
698
+ * Remove the DOM elements corresponding to a list of {@link d.VNode} objects.
699
+ * This can be used to, for instance, clean up after a list of children which
700
+ * should no longer be shown.
701
+ *
702
+ * This function also handles some of Stencil's slot relocation logic.
703
+ *
704
+ * @param vnodes a list of virtual DOM nodes to remove
705
+ * @param startIdx the index at which to start removing nodes (inclusive)
706
+ * @param endIdx the index at which to stop removing nodes (inclusive)
707
+ * @param vnode a VNode
708
+ * @param elm an element
709
+ */
596
710
  const removeVnodes = (vnodes, startIdx, endIdx, vnode, elm) => {
597
711
  for (; startIdx <= endIdx; ++startIdx) {
598
712
  if ((vnode = vnodes[startIdx])) {
@@ -617,6 +731,74 @@ const removeVnodes = (vnodes, startIdx, endIdx, vnode, elm) => {
617
731
  }
618
732
  }
619
733
  };
734
+ /**
735
+ * Reconcile the children of a new VNode with the children of an old VNode by
736
+ * traversing the two collections of children, identifying nodes that are
737
+ * conserved or changed, calling out to `patch` to make any necessary
738
+ * updates to the DOM, and rearranging DOM nodes as needed.
739
+ *
740
+ * The algorithm for reconciling children works by analyzing two 'windows' onto
741
+ * the two arrays of children (`oldCh` and `newCh`). We keep track of the
742
+ * 'windows' by storing start and end indices and references to the
743
+ * corresponding array entries. Initially the two 'windows' are basically equal
744
+ * to the entire array, but we progressively narrow the windows until there are
745
+ * no children left to update by doing the following:
746
+ *
747
+ * 1. Skip any `null` entries at the beginning or end of the two arrays, so
748
+ * that if we have an initial array like the following we'll end up dealing
749
+ * only with a window bounded by the highlighted elements:
750
+ *
751
+ * [null, null, VNode1 , ... , VNode2, null, null]
752
+ * ^^^^^^ ^^^^^^
753
+ *
754
+ * 2. Check to see if the elements at the head and tail positions are equal
755
+ * across the windows. This will basically detect elements which haven't
756
+ * been added, removed, or changed position, i.e. if you had the following
757
+ * VNode elements (represented as HTML):
758
+ *
759
+ * oldVNode: `<div><p><span>HEY</span></p></div>`
760
+ * newVNode: `<div><p><span>THERE</span></p></div>`
761
+ *
762
+ * Then when comparing the children of the `<div>` tag we check the equality
763
+ * of the VNodes corresponding to the `<p>` tags and, since they are the
764
+ * same tag in the same position, we'd be able to avoid completely
765
+ * re-rendering the subtree under them with a new DOM element and would just
766
+ * call out to `patch` to handle reconciling their children and so on.
767
+ *
768
+ * 3. Check, for both windows, to see if the element at the beginning of the
769
+ * window corresponds to the element at the end of the other window. This is
770
+ * a heuristic which will let us identify _some_ situations in which
771
+ * elements have changed position, for instance it _should_ detect that the
772
+ * children nodes themselves have not changed but merely moved in the
773
+ * following example:
774
+ *
775
+ * oldVNode: `<div><element-one /><element-two /></div>`
776
+ * newVNode: `<div><element-two /><element-one /></div>`
777
+ *
778
+ * If we find cases like this then we also need to move the concrete DOM
779
+ * elements corresponding to the moved children to write the re-order to the
780
+ * DOM.
781
+ *
782
+ * 4. Finally, if VNodes have the `key` attribute set on them we check for any
783
+ * nodes in the old children which have the same key as the first element in
784
+ * our window on the new children. If we find such a node we handle calling
785
+ * out to `patch`, moving relevant DOM nodes, and so on, in accordance with
786
+ * what we find.
787
+ *
788
+ * Finally, once we've narrowed our 'windows' to the point that either of them
789
+ * collapse (i.e. they have length 0) we then handle any remaining VNode
790
+ * insertion or deletion that needs to happen to get a DOM state that correctly
791
+ * reflects the new child VNodes. If, for instance, after our window on the old
792
+ * children has collapsed we still have more nodes on the new children that
793
+ * we haven't dealt with yet then we need to add them, or if the new children
794
+ * collapse but we still have unhandled _old_ children then we need to make
795
+ * sure the corresponding DOM nodes are removed.
796
+ *
797
+ * @param parentElm the node into which the parent VNode is rendered
798
+ * @param oldCh the old children of the parent node
799
+ * @param newVNode the new VNode which will replace the parent
800
+ * @param newCh the new children of the parent node
801
+ */
620
802
  const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
621
803
  let oldStartIdx = 0;
622
804
  let newStartIdx = 0;
@@ -632,7 +814,7 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
632
814
  let elmToMove;
633
815
  while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
634
816
  if (oldStartVnode == null) {
635
- // Vnode might have been moved left
817
+ // VNode might have been moved left
636
818
  oldStartVnode = oldCh[++oldStartIdx];
637
819
  }
638
820
  else if (oldEndVnode == null) {
@@ -645,37 +827,100 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
645
827
  newEndVnode = newCh[--newEndIdx];
646
828
  }
647
829
  else if (isSameVnode(oldStartVnode, newStartVnode)) {
830
+ // if the start nodes are the same then we should patch the new VNode
831
+ // onto the old one, and increment our `newStartIdx` and `oldStartIdx`
832
+ // indices to reflect that. We don't need to move any DOM Nodes around
833
+ // since things are matched up in order.
648
834
  patch(oldStartVnode, newStartVnode);
649
835
  oldStartVnode = oldCh[++oldStartIdx];
650
836
  newStartVnode = newCh[++newStartIdx];
651
837
  }
652
838
  else if (isSameVnode(oldEndVnode, newEndVnode)) {
839
+ // likewise, if the end nodes are the same we patch new onto old and
840
+ // decrement our end indices, and also likewise in this case we don't
841
+ // need to move any DOM Nodes.
653
842
  patch(oldEndVnode, newEndVnode);
654
843
  oldEndVnode = oldCh[--oldEndIdx];
655
844
  newEndVnode = newCh[--newEndIdx];
656
845
  }
657
846
  else if (isSameVnode(oldStartVnode, newEndVnode)) {
658
- // Vnode moved right
847
+ // case: "Vnode moved right"
848
+ //
849
+ // We've found that the last node in our window on the new children is
850
+ // the same VNode as the _first_ node in our window on the old children
851
+ // we're dealing with now. Visually, this is the layout of these two
852
+ // nodes:
853
+ //
854
+ // newCh: [..., newStartVnode , ... , newEndVnode , ...]
855
+ // ^^^^^^^^^^^
856
+ // oldCh: [..., oldStartVnode , ... , oldEndVnode , ...]
857
+ // ^^^^^^^^^^^^^
858
+ //
859
+ // In this situation we need to patch `newEndVnode` onto `oldStartVnode`
860
+ // and move the DOM element for `oldStartVnode`.
659
861
  if ((oldStartVnode.$tag$ === 'slot' || newEndVnode.$tag$ === 'slot')) {
660
862
  putBackInOriginalLocation(oldStartVnode.$elm$.parentNode, false);
661
863
  }
662
864
  patch(oldStartVnode, newEndVnode);
865
+ // We need to move the element for `oldStartVnode` into a position which
866
+ // will be appropriate for `newEndVnode`. For this we can use
867
+ // `.insertBefore` and `oldEndVnode.$elm$.nextSibling`. If there is a
868
+ // sibling for `oldEndVnode.$elm$` then we want to move the DOM node for
869
+ // `oldStartVnode` between `oldEndVnode` and it's sibling, like so:
870
+ //
871
+ // <old-start-node />
872
+ // <some-intervening-node />
873
+ // <old-end-node />
874
+ // <!-- -> <-- `oldStartVnode.$elm$` should be inserted here
875
+ // <next-sibling />
876
+ //
877
+ // If instead `oldEndVnode.$elm$` has no sibling then we just want to put
878
+ // the node for `oldStartVnode` at the end of the children of
879
+ // `parentElm`. Luckily, `Node.nextSibling` will return `null` if there
880
+ // aren't any siblings, and passing `null` to `Node.insertBefore` will
881
+ // append it to the children of the parent element.
663
882
  parentElm.insertBefore(oldStartVnode.$elm$, oldEndVnode.$elm$.nextSibling);
664
883
  oldStartVnode = oldCh[++oldStartIdx];
665
884
  newEndVnode = newCh[--newEndIdx];
666
885
  }
667
886
  else if (isSameVnode(oldEndVnode, newStartVnode)) {
668
- // Vnode moved left
887
+ // case: "Vnode moved left"
888
+ //
889
+ // We've found that the first node in our window on the new children is
890
+ // the same VNode as the _last_ node in our window on the old children.
891
+ // Visually, this is the layout of these two nodes:
892
+ //
893
+ // newCh: [..., newStartVnode , ... , newEndVnode , ...]
894
+ // ^^^^^^^^^^^^^
895
+ // oldCh: [..., oldStartVnode , ... , oldEndVnode , ...]
896
+ // ^^^^^^^^^^^
897
+ //
898
+ // In this situation we need to patch `newStartVnode` onto `oldEndVnode`
899
+ // (which will handle updating any changed attributes, reconciling their
900
+ // children etc) but we also need to move the DOM node to which
901
+ // `oldEndVnode` corresponds.
669
902
  if ((oldStartVnode.$tag$ === 'slot' || newEndVnode.$tag$ === 'slot')) {
670
903
  putBackInOriginalLocation(oldEndVnode.$elm$.parentNode, false);
671
904
  }
672
905
  patch(oldEndVnode, newStartVnode);
906
+ // We've already checked above if `oldStartVnode` and `newStartVnode` are
907
+ // the same node, so since we're here we know that they are not. Thus we
908
+ // can move the element for `oldEndVnode` _before_ the element for
909
+ // `oldStartVnode`, leaving `oldStartVnode` to be reconciled in the
910
+ // future.
673
911
  parentElm.insertBefore(oldEndVnode.$elm$, oldStartVnode.$elm$);
674
912
  oldEndVnode = oldCh[--oldEndIdx];
675
913
  newStartVnode = newCh[++newStartIdx];
676
914
  }
677
915
  else {
678
- // createKeyToOldIdx
916
+ // Here we do some checks to match up old and new nodes based on the
917
+ // `$key$` attribute, which is set by putting a `key="my-key"` attribute
918
+ // in the JSX for a DOM element in the implementation of a Stencil
919
+ // component.
920
+ //
921
+ // First we check to see if there are any nodes in the array of old
922
+ // children which have the same key as the first node in the new
923
+ // children.
679
924
  idxInOld = -1;
680
925
  {
681
926
  for (i = oldStartIdx; i <= oldEndIdx; ++i) {
@@ -686,23 +931,32 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
686
931
  }
687
932
  }
688
933
  if (idxInOld >= 0) {
934
+ // We found a node in the old children which matches up with the first
935
+ // node in the new children! So let's deal with that
689
936
  elmToMove = oldCh[idxInOld];
690
937
  if (elmToMove.$tag$ !== newStartVnode.$tag$) {
938
+ // the tag doesn't match so we'll need a new DOM element
691
939
  node = createElm(oldCh && oldCh[newStartIdx], newVNode, idxInOld);
692
940
  }
693
941
  else {
694
942
  patch(elmToMove, newStartVnode);
943
+ // invalidate the matching old node so that we won't try to update it
944
+ // again later on
695
945
  oldCh[idxInOld] = undefined;
696
946
  node = elmToMove.$elm$;
697
947
  }
698
948
  newStartVnode = newCh[++newStartIdx];
699
949
  }
700
950
  else {
701
- // new element
951
+ // We either didn't find an element in the old children that matches
952
+ // the key of the first new child OR the build is not using `key`
953
+ // attributes at all. In either case we need to create a new element
954
+ // for the new node.
702
955
  node = createElm(oldCh && oldCh[newStartIdx], newVNode, newStartIdx);
703
956
  newStartVnode = newCh[++newStartIdx];
704
957
  }
705
958
  if (node) {
959
+ // if we created a new node then handle inserting it to the DOM
706
960
  {
707
961
  parentReferenceNode(oldStartVnode.$elm$).insertBefore(node, referenceNode(oldStartVnode.$elm$));
708
962
  }
@@ -710,21 +964,44 @@ const updateChildren = (parentElm, oldCh, newVNode, newCh) => {
710
964
  }
711
965
  }
712
966
  if (oldStartIdx > oldEndIdx) {
967
+ // we have some more new nodes to add which don't match up with old nodes
713
968
  addVnodes(parentElm, newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].$elm$, newVNode, newCh, newStartIdx, newEndIdx);
714
969
  }
715
970
  else if (newStartIdx > newEndIdx) {
971
+ // there are nodes in the `oldCh` array which no longer correspond to nodes
972
+ // in the new array, so lets remove them (which entails cleaning up the
973
+ // relevant DOM nodes)
716
974
  removeVnodes(oldCh, oldStartIdx, oldEndIdx);
717
975
  }
718
976
  };
719
- const isSameVnode = (vnode1, vnode2) => {
977
+ /**
978
+ * Compare two VNodes to determine if they are the same
979
+ *
980
+ * **NB**: This function is an equality _heuristic_ based on the available
981
+ * information set on the two VNodes and can be misleading under certain
982
+ * circumstances. In particular, if the two nodes do not have `key` attrs
983
+ * (available under `$key$` on VNodes) then the function falls back on merely
984
+ * checking that they have the same tag.
985
+ *
986
+ * So, in other words, if `key` attrs are not set on VNodes which may be
987
+ * changing order within a `children` array or something along those lines then
988
+ * we could obtain a false negative and then have to do needless re-rendering
989
+ * (i.e. we'd say two VNodes aren't equal when in fact they should be).
990
+ *
991
+ * @param leftVNode the first VNode to check
992
+ * @param rightVNode the second VNode to check
993
+ * @returns whether they're equal or not
994
+ */
995
+ const isSameVnode = (leftVNode, rightVNode) => {
720
996
  // compare if two vnode to see if they're "technically" the same
721
997
  // need to have the same element tag, and same key to be the same
722
- if (vnode1.$tag$ === vnode2.$tag$) {
723
- if (vnode1.$tag$ === 'slot') {
724
- return vnode1.$name$ === vnode2.$name$;
998
+ if (leftVNode.$tag$ === rightVNode.$tag$) {
999
+ if (leftVNode.$tag$ === 'slot') {
1000
+ return leftVNode.$name$ === rightVNode.$name$;
725
1001
  }
1002
+ // this will be set if components in the build have `key` attrs set on them
726
1003
  {
727
- return vnode1.$key$ === vnode2.$key$;
1004
+ return leftVNode.$key$ === rightVNode.$key$;
728
1005
  }
729
1006
  }
730
1007
  return false;
@@ -737,6 +1014,14 @@ const referenceNode = (node) => {
737
1014
  return (node && node['s-ol']) || node;
738
1015
  };
739
1016
  const parentReferenceNode = (node) => (node['s-ol'] ? node['s-ol'] : node).parentNode;
1017
+ /**
1018
+ * Handle reconciling an outdated VNode with a new one which corresponds to
1019
+ * it. This function handles flushing updates to the DOM and reconciling the
1020
+ * children of the two nodes (if any).
1021
+ *
1022
+ * @param oldVNode an old VNode whose DOM element and children we want to update
1023
+ * @param newVNode a new VNode representing an updated version of the old one
1024
+ */
740
1025
  const patch = (oldVNode, newVNode) => {
741
1026
  const elm = (newVNode.$elm$ = oldVNode.$elm$);
742
1027
  const oldChildren = oldVNode.$children$;
@@ -750,7 +1035,6 @@ const patch = (oldVNode, newVNode) => {
750
1035
  // only add this to the when the compiler sees we're using an svg somewhere
751
1036
  isSvgMode = tag === 'svg' ? true : tag === 'foreignObject' ? false : isSvgMode;
752
1037
  }
753
- // element node
754
1038
  {
755
1039
  if (tag === 'slot')
756
1040
  ;
@@ -763,6 +1047,7 @@ const patch = (oldVNode, newVNode) => {
763
1047
  }
764
1048
  if (oldChildren !== null && newChildren !== null) {
765
1049
  // looks like there's child vnodes for both the old and new vnodes
1050
+ // so we need to call `updateChildren` to reconcile them
766
1051
  updateChildren(elm, oldChildren, newVNode, newChildren);
767
1052
  }
768
1053
  else if (newChildren !== null) {
@@ -803,7 +1088,7 @@ const updateFallbackSlotVisibility = (elm) => {
803
1088
  let nodeType;
804
1089
  for (i = 0, ilen = childNodes.length; i < ilen; i++) {
805
1090
  childNode = childNodes[i];
806
- if (childNode.nodeType === 1 /* ElementNode */) {
1091
+ if (childNode.nodeType === 1 /* NODE_TYPE.ElementNode */) {
807
1092
  if (childNode['s-sr']) {
808
1093
  // this is a slot fallback node
809
1094
  // get the slot name for this slot reference node
@@ -815,7 +1100,7 @@ const updateFallbackSlotVisibility = (elm) => {
815
1100
  nodeType = childNodes[j].nodeType;
816
1101
  if (childNodes[j]['s-hn'] !== childNode['s-hn'] || slotNameAttr !== '') {
817
1102
  // this sibling node is from a different component OR is a named fallback slot node
818
- if (nodeType === 1 /* ElementNode */ && slotNameAttr === childNodes[j].getAttribute('slot')) {
1103
+ if (nodeType === 1 /* NODE_TYPE.ElementNode */ && slotNameAttr === childNodes[j].getAttribute('slot')) {
819
1104
  childNode.hidden = true;
820
1105
  break;
821
1106
  }
@@ -824,8 +1109,8 @@ const updateFallbackSlotVisibility = (elm) => {
824
1109
  // this is a default fallback slot node
825
1110
  // any element or text node (with content)
826
1111
  // should hide the default fallback slot node
827
- if (nodeType === 1 /* ElementNode */ ||
828
- (nodeType === 3 /* TextNode */ && childNodes[j].textContent.trim() !== '')) {
1112
+ if (nodeType === 1 /* NODE_TYPE.ElementNode */ ||
1113
+ (nodeType === 3 /* NODE_TYPE.TextNode */ && childNodes[j].textContent.trim() !== '')) {
829
1114
  childNode.hidden = true;
830
1115
  break;
831
1116
  }
@@ -903,13 +1188,13 @@ const relocateSlotContent = (elm) => {
903
1188
  }
904
1189
  }
905
1190
  }
906
- if (childNode.nodeType === 1 /* ElementNode */) {
1191
+ if (childNode.nodeType === 1 /* NODE_TYPE.ElementNode */) {
907
1192
  relocateSlotContent(childNode);
908
1193
  }
909
1194
  }
910
1195
  };
911
1196
  const isNodeLocatedInSlot = (nodeToRelocate, slotNameAttr) => {
912
- if (nodeToRelocate.nodeType === 1 /* ElementNode */) {
1197
+ if (nodeToRelocate.nodeType === 1 /* NODE_TYPE.ElementNode */) {
913
1198
  if (nodeToRelocate.getAttribute('slot') === null && slotNameAttr === '') {
914
1199
  return true;
915
1200
  }
@@ -929,6 +1214,18 @@ const callNodeRefs = (vNode) => {
929
1214
  vNode.$children$ && vNode.$children$.map(callNodeRefs);
930
1215
  }
931
1216
  };
1217
+ /**
1218
+ * The main entry point for Stencil's virtual DOM-based rendering engine
1219
+ *
1220
+ * Given a {@link d.HostRef} container and some virtual DOM nodes, this
1221
+ * function will handle creating a virtual DOM tree with a single root, patching
1222
+ * the current virtual DOM tree onto an old one (if any), dealing with slot
1223
+ * relocation, and reflecting attributes.
1224
+ *
1225
+ * @param hostRef data needed to root and render the virtual DOM tree, such as
1226
+ * the DOM node into which it should be rendered.
1227
+ * @param renderFnResults the virtual DOM nodes to be rendered
1228
+ */
932
1229
  const renderVdom = (hostRef, renderFnResults) => {
933
1230
  const hostElm = hostRef.$hostElement$;
934
1231
  const cmpMeta = hostRef.$cmpMeta$;
@@ -940,12 +1237,12 @@ const renderVdom = (hostRef, renderFnResults) => {
940
1237
  cmpMeta.$attrsToReflect$.map(([propName, attribute]) => (rootVnode.$attrs$[attribute] = hostElm[propName]));
941
1238
  }
942
1239
  rootVnode.$tag$ = null;
943
- rootVnode.$flags$ |= 4 /* isHost */;
1240
+ rootVnode.$flags$ |= 4 /* VNODE_FLAGS.isHost */;
944
1241
  hostRef.$vnode$ = rootVnode;
945
1242
  rootVnode.$elm$ = oldVNode.$elm$ = (hostElm);
946
1243
  {
947
1244
  contentRef = hostElm['s-cr'];
948
- useNativeShadowDom = (cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) !== 0;
1245
+ useNativeShadowDom = (cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */) !== 0;
949
1246
  // always reset
950
1247
  checkSlotFallbackVisibility = false;
951
1248
  }
@@ -954,7 +1251,7 @@ const renderVdom = (hostRef, renderFnResults) => {
954
1251
  {
955
1252
  // while we're moving nodes around existing nodes, temporarily disable
956
1253
  // the disconnectCallback from working
957
- plt.$flags$ |= 1 /* isTmpDisconnected */;
1254
+ plt.$flags$ |= 1 /* PLATFORM_FLAGS.isTmpDisconnected */;
958
1255
  if (checkSlotRelocate) {
959
1256
  relocateSlotContent(rootVnode.$elm$);
960
1257
  let relocateData;
@@ -1012,7 +1309,7 @@ const renderVdom = (hostRef, renderFnResults) => {
1012
1309
  }
1013
1310
  else {
1014
1311
  // this node doesn't have a slot home to go to, so let's hide it
1015
- if (nodeToRelocate.nodeType === 1 /* ElementNode */) {
1312
+ if (nodeToRelocate.nodeType === 1 /* NODE_TYPE.ElementNode */) {
1016
1313
  nodeToRelocate.hidden = true;
1017
1314
  }
1018
1315
  }
@@ -1023,37 +1320,11 @@ const renderVdom = (hostRef, renderFnResults) => {
1023
1320
  }
1024
1321
  // done moving nodes around
1025
1322
  // allow the disconnect callback to work again
1026
- plt.$flags$ &= ~1 /* isTmpDisconnected */;
1323
+ plt.$flags$ &= ~1 /* PLATFORM_FLAGS.isTmpDisconnected */;
1027
1324
  // always reset
1028
1325
  relocateNodes.length = 0;
1029
1326
  }
1030
1327
  };
1031
- const getElement = (ref) => (getHostRef(ref).$hostElement$ );
1032
- const createEvent = (ref, name, flags) => {
1033
- const elm = getElement(ref);
1034
- return {
1035
- emit: (detail) => {
1036
- return emitEvent(elm, name, {
1037
- bubbles: !!(flags & 4 /* Bubbles */),
1038
- composed: !!(flags & 2 /* Composed */),
1039
- cancelable: !!(flags & 1 /* Cancellable */),
1040
- detail,
1041
- });
1042
- },
1043
- };
1044
- };
1045
- /**
1046
- * Helper function to create & dispatch a custom Event on a provided target
1047
- * @param elm the target of the Event
1048
- * @param name the name to give the custom Event
1049
- * @param opts options for configuring a custom Event
1050
- * @returns the custom Event
1051
- */
1052
- const emitEvent = (elm, name, opts) => {
1053
- const ev = plt.ce(name, opts);
1054
- elm.dispatchEvent(ev);
1055
- return ev;
1056
- };
1057
1328
  const attachToAncestor = (hostRef, ancestorComponent) => {
1058
1329
  if (ancestorComponent && !hostRef.$onRenderResolve$ && ancestorComponent['s-p']) {
1059
1330
  ancestorComponent['s-p'].push(new Promise((r) => (hostRef.$onRenderResolve$ = r)));
@@ -1061,10 +1332,10 @@ const attachToAncestor = (hostRef, ancestorComponent) => {
1061
1332
  };
1062
1333
  const scheduleUpdate = (hostRef, isInitialLoad) => {
1063
1334
  {
1064
- hostRef.$flags$ |= 16 /* isQueuedForUpdate */;
1335
+ hostRef.$flags$ |= 16 /* HOST_FLAGS.isQueuedForUpdate */;
1065
1336
  }
1066
- if (hostRef.$flags$ & 4 /* isWaitingForChildren */) {
1067
- hostRef.$flags$ |= 512 /* needsRerender */;
1337
+ if (hostRef.$flags$ & 4 /* HOST_FLAGS.isWaitingForChildren */) {
1338
+ hostRef.$flags$ |= 512 /* HOST_FLAGS.needsRerender */;
1068
1339
  return;
1069
1340
  }
1070
1341
  attachToAncestor(hostRef, hostRef.$ancestorComponent$);
@@ -1080,7 +1351,7 @@ const dispatchHooks = (hostRef, isInitialLoad) => {
1080
1351
  let promise;
1081
1352
  if (isInitialLoad) {
1082
1353
  {
1083
- hostRef.$flags$ |= 256 /* isListenReady */;
1354
+ hostRef.$flags$ |= 256 /* HOST_FLAGS.isListenReady */;
1084
1355
  if (hostRef.$queuedListeners$) {
1085
1356
  hostRef.$queuedListeners$.map(([methodName, event]) => safeCall(instance, methodName, event));
1086
1357
  hostRef.$queuedListeners$ = null;
@@ -1109,9 +1380,6 @@ const updateComponent = async (hostRef, instance, isInitialLoad) => {
1109
1380
  {
1110
1381
  callRender(hostRef, instance);
1111
1382
  }
1112
- if (plt.$cssShim$) {
1113
- plt.$cssShim$.updateHost(elm);
1114
- }
1115
1383
  if (rc) {
1116
1384
  // ok, so turns out there are some child host elements
1117
1385
  // waiting on this parent element to load
@@ -1129,7 +1397,7 @@ const updateComponent = async (hostRef, instance, isInitialLoad) => {
1129
1397
  }
1130
1398
  else {
1131
1399
  Promise.all(childrenPromises).then(postUpdate);
1132
- hostRef.$flags$ |= 4 /* isWaitingForChildren */;
1400
+ hostRef.$flags$ |= 4 /* HOST_FLAGS.isWaitingForChildren */;
1133
1401
  childrenPromises.length = 0;
1134
1402
  }
1135
1403
  }
@@ -1139,10 +1407,10 @@ const callRender = (hostRef, instance, elm) => {
1139
1407
  renderingRef = instance;
1140
1408
  instance = instance.render && instance.render();
1141
1409
  {
1142
- hostRef.$flags$ &= ~16 /* isQueuedForUpdate */;
1410
+ hostRef.$flags$ &= ~16 /* HOST_FLAGS.isQueuedForUpdate */;
1143
1411
  }
1144
1412
  {
1145
- hostRef.$flags$ |= 2 /* hasRendered */;
1413
+ hostRef.$flags$ |= 2 /* HOST_FLAGS.hasRendered */;
1146
1414
  }
1147
1415
  {
1148
1416
  {
@@ -1171,8 +1439,8 @@ const postUpdateComponent = (hostRef) => {
1171
1439
  {
1172
1440
  safeCall(instance, 'componentDidRender');
1173
1441
  }
1174
- if (!(hostRef.$flags$ & 64 /* hasLoadedComponent */)) {
1175
- hostRef.$flags$ |= 64 /* hasLoadedComponent */;
1442
+ if (!(hostRef.$flags$ & 64 /* HOST_FLAGS.hasLoadedComponent */)) {
1443
+ hostRef.$flags$ |= 64 /* HOST_FLAGS.hasLoadedComponent */;
1176
1444
  {
1177
1445
  // DOM WRITE!
1178
1446
  addHydratedFlag(elm);
@@ -1201,10 +1469,10 @@ const postUpdateComponent = (hostRef) => {
1201
1469
  hostRef.$onRenderResolve$();
1202
1470
  hostRef.$onRenderResolve$ = undefined;
1203
1471
  }
1204
- if (hostRef.$flags$ & 512 /* needsRerender */) {
1472
+ if (hostRef.$flags$ & 512 /* HOST_FLAGS.needsRerender */) {
1205
1473
  nextTick(() => scheduleUpdate(hostRef, false));
1206
1474
  }
1207
- hostRef.$flags$ &= ~(4 /* isWaitingForChildren */ | 512 /* needsRerender */);
1475
+ hostRef.$flags$ &= ~(4 /* HOST_FLAGS.isWaitingForChildren */ | 512 /* HOST_FLAGS.needsRerender */);
1208
1476
  }
1209
1477
  // ( •_•)
1210
1478
  // ( •_•)>⌐■-■
@@ -1215,7 +1483,7 @@ const forceUpdate = (ref) => {
1215
1483
  const hostRef = getHostRef(ref);
1216
1484
  const isConnected = hostRef.$hostElement$.isConnected;
1217
1485
  if (isConnected &&
1218
- (hostRef.$flags$ & (2 /* hasRendered */ | 16 /* isQueuedForUpdate */)) === 2 /* hasRendered */) {
1486
+ (hostRef.$flags$ & (2 /* HOST_FLAGS.hasRendered */ | 16 /* HOST_FLAGS.isQueuedForUpdate */)) === 2 /* HOST_FLAGS.hasRendered */) {
1219
1487
  scheduleUpdate(hostRef, false);
1220
1488
  }
1221
1489
  // Returns "true" when the forced update was successfully scheduled
@@ -1246,53 +1514,6 @@ const then = (promise, thenFn) => {
1246
1514
  };
1247
1515
  const addHydratedFlag = (elm) => elm.classList.add('hydrated')
1248
1516
  ;
1249
- /**
1250
- * Parse a new property value for a given property type.
1251
- *
1252
- * While the prop value can reasonably be expected to be of `any` type as far as TypeScript's type checker is concerned,
1253
- * it is not safe to assume that the string returned by evaluating `typeof propValue` matches:
1254
- * 1. `any`, the type given to `propValue` in the function signature
1255
- * 2. the type stored from `propType`.
1256
- *
1257
- * This function provides the capability to parse/coerce a property's value to potentially any other JavaScript type.
1258
- *
1259
- * Property values represented in TSX preserve their type information. In the example below, the number 0 is passed to
1260
- * a component. This `propValue` will preserve its type information (`typeof propValue === 'number'`). Note that is
1261
- * based on the type of the value being passed in, not the type declared of the class member decorated with `@Prop`.
1262
- * ```tsx
1263
- * <my-cmp prop-val={0}></my-cmp>
1264
- * ```
1265
- *
1266
- * HTML prop values on the other hand, will always a string
1267
- *
1268
- * @param propValue the new value to coerce to some type
1269
- * @param propType the type of the prop, expressed as a binary number
1270
- * @returns the parsed/coerced value
1271
- */
1272
- const parsePropertyValue = (propValue, propType) => {
1273
- // ensure this value is of the correct prop type
1274
- if (propValue != null && !isComplexType(propValue)) {
1275
- if (propType & 4 /* Boolean */) {
1276
- // per the HTML spec, any string value means it is a boolean true value
1277
- // but we'll cheat here and say that the string "false" is the boolean false
1278
- return propValue === 'false' ? false : propValue === '' || !!propValue;
1279
- }
1280
- if (propType & 2 /* Number */) {
1281
- // force it to be a number
1282
- return parseFloat(propValue);
1283
- }
1284
- if (propType & 1 /* String */) {
1285
- // could have been passed as a number or boolean
1286
- // but we still want it as a string
1287
- return String(propValue);
1288
- }
1289
- // redundant return here for better minification
1290
- return propValue;
1291
- }
1292
- // not sure exactly what type we want
1293
- // so no need to change to a different type
1294
- return propValue;
1295
- };
1296
1517
  const getValue = (ref, propName) => getHostRef(ref).$instanceValues$.get(propName);
1297
1518
  const setValue = (ref, propName, newVal, cmpMeta) => {
1298
1519
  // check our new property value against our internal value
@@ -1305,13 +1526,13 @@ const setValue = (ref, propName, newVal, cmpMeta) => {
1305
1526
  // explicitly check for NaN on both sides, as `NaN === NaN` is always false
1306
1527
  const areBothNaN = Number.isNaN(oldVal) && Number.isNaN(newVal);
1307
1528
  const didValueChange = newVal !== oldVal && !areBothNaN;
1308
- if ((!(flags & 8 /* isConstructingInstance */) || oldVal === undefined) && didValueChange) {
1529
+ if ((!(flags & 8 /* HOST_FLAGS.isConstructingInstance */) || oldVal === undefined) && didValueChange) {
1309
1530
  // gadzooks! the property's value has changed!!
1310
1531
  // set our new value!
1311
1532
  hostRef.$instanceValues$.set(propName, newVal);
1312
1533
  if (instance) {
1313
1534
  // get an array of method names of watch functions to call
1314
- if (cmpMeta.$watchers$ && flags & 128 /* isWatchReady */) {
1535
+ if (cmpMeta.$watchers$ && flags & 128 /* HOST_FLAGS.isWatchReady */) {
1315
1536
  const watchMethods = cmpMeta.$watchers$[propName];
1316
1537
  if (watchMethods) {
1317
1538
  // this instance is watching for when this property changed
@@ -1326,7 +1547,7 @@ const setValue = (ref, propName, newVal, cmpMeta) => {
1326
1547
  });
1327
1548
  }
1328
1549
  }
1329
- if ((flags & (2 /* hasRendered */ | 16 /* isQueuedForUpdate */)) === 2 /* hasRendered */) {
1550
+ if ((flags & (2 /* HOST_FLAGS.hasRendered */ | 16 /* HOST_FLAGS.isQueuedForUpdate */)) === 2 /* HOST_FLAGS.hasRendered */) {
1330
1551
  // looks like this value actually changed, so we've got work to do!
1331
1552
  // but only if we've already rendered, otherwise just chill out
1332
1553
  // queue that we need to do an update, but don't worry about queuing
@@ -1336,6 +1557,16 @@ const setValue = (ref, propName, newVal, cmpMeta) => {
1336
1557
  }
1337
1558
  }
1338
1559
  };
1560
+ /**
1561
+ * Attach a series of runtime constructs to a compiled Stencil component
1562
+ * constructor, including getters and setters for the `@Prop` and `@State`
1563
+ * decorators, callbacks for when attributes change, and so on.
1564
+ *
1565
+ * @param Cstr the constructor for a component that we need to process
1566
+ * @param cmpMeta metadata collected previously about the component
1567
+ * @param flags a number used to store a series of bit flags
1568
+ * @returns a reference to the same constructor passed in (but now mutated)
1569
+ */
1339
1570
  const proxyComponent = (Cstr, cmpMeta, flags) => {
1340
1571
  if (cmpMeta.$members$) {
1341
1572
  if (Cstr.watchers) {
@@ -1345,8 +1576,8 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1345
1576
  const members = Object.entries(cmpMeta.$members$);
1346
1577
  const prototype = Cstr.prototype;
1347
1578
  members.map(([memberName, [memberFlags]]) => {
1348
- if ((memberFlags & 31 /* Prop */ ||
1349
- ((flags & 2 /* proxyState */) && memberFlags & 32 /* State */))) {
1579
+ if ((memberFlags & 31 /* MEMBER_FLAGS.Prop */ ||
1580
+ ((flags & 2 /* PROXY_FLAGS.proxyState */) && memberFlags & 32 /* MEMBER_FLAGS.State */))) {
1350
1581
  // proxyComponent - prop
1351
1582
  Object.defineProperty(prototype, memberName, {
1352
1583
  get() {
@@ -1361,8 +1592,8 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1361
1592
  enumerable: true,
1362
1593
  });
1363
1594
  }
1364
- else if (flags & 1 /* isElementConstructor */ &&
1365
- memberFlags & 64 /* Method */) {
1595
+ else if (flags & 1 /* PROXY_FLAGS.isElementConstructor */ &&
1596
+ memberFlags & 64 /* MEMBER_FLAGS.Method */) {
1366
1597
  // proxyComponent - method
1367
1598
  Object.defineProperty(prototype, memberName, {
1368
1599
  value(...args) {
@@ -1372,7 +1603,7 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1372
1603
  });
1373
1604
  }
1374
1605
  });
1375
- if ((flags & 1 /* isElementConstructor */)) {
1606
+ if ((flags & 1 /* PROXY_FLAGS.isElementConstructor */)) {
1376
1607
  const attrNameToPropName = new Map();
1377
1608
  prototype.attributeChangedCallback = function (attrName, _oldValue, newValue) {
1378
1609
  plt.jmp(() => {
@@ -1428,11 +1659,11 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1428
1659
  // create an array of attributes to observe
1429
1660
  // and also create a map of html attribute name to js property name
1430
1661
  Cstr.observedAttributes = members
1431
- .filter(([_, m]) => m[0] & 15 /* HasAttribute */) // filter to only keep props that should match attributes
1662
+ .filter(([_, m]) => m[0] & 15 /* MEMBER_FLAGS.HasAttribute */) // filter to only keep props that should match attributes
1432
1663
  .map(([propName, m]) => {
1433
1664
  const attrName = m[1] || propName;
1434
1665
  attrNameToPropName.set(attrName, propName);
1435
- if (m[0] & 512 /* ReflectAttr */) {
1666
+ if (m[0] & 512 /* MEMBER_FLAGS.ReflectAttr */) {
1436
1667
  cmpMeta.$attrsToReflect$.push([propName, attrName]);
1437
1668
  }
1438
1669
  return attrName;
@@ -1443,10 +1674,10 @@ const proxyComponent = (Cstr, cmpMeta, flags) => {
1443
1674
  };
1444
1675
  const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) => {
1445
1676
  // initializeComponent
1446
- if ((hostRef.$flags$ & 32 /* hasInitializedComponent */) === 0) {
1677
+ if ((hostRef.$flags$ & 32 /* HOST_FLAGS.hasInitializedComponent */) === 0) {
1447
1678
  {
1448
1679
  // we haven't initialized this element yet
1449
- hostRef.$flags$ |= 32 /* hasInitializedComponent */;
1680
+ hostRef.$flags$ |= 32 /* HOST_FLAGS.hasInitializedComponent */;
1450
1681
  // lazy loaded components
1451
1682
  // request the component's implementation to be
1452
1683
  // wired up with the host element
@@ -1464,7 +1695,7 @@ const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) =>
1464
1695
  {
1465
1696
  cmpMeta.$watchers$ = Cstr.watchers;
1466
1697
  }
1467
- proxyComponent(Cstr, cmpMeta, 2 /* proxyState */);
1698
+ proxyComponent(Cstr, cmpMeta, 2 /* PROXY_FLAGS.proxyState */);
1468
1699
  Cstr.isProxied = true;
1469
1700
  }
1470
1701
  const endNewInstance = createTime('createInstance', cmpMeta.$tagName$);
@@ -1472,7 +1703,7 @@ const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) =>
1472
1703
  // but let's keep track of when we start and stop
1473
1704
  // so that the getters/setters don't incorrectly step on data
1474
1705
  {
1475
- hostRef.$flags$ |= 8 /* isConstructingInstance */;
1706
+ hostRef.$flags$ |= 8 /* HOST_FLAGS.isConstructingInstance */;
1476
1707
  }
1477
1708
  // construct the lazy-loaded component implementation
1478
1709
  // passing the hostRef is very important during
@@ -1485,10 +1716,10 @@ const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) =>
1485
1716
  consoleError(e);
1486
1717
  }
1487
1718
  {
1488
- hostRef.$flags$ &= ~8 /* isConstructingInstance */;
1719
+ hostRef.$flags$ &= ~8 /* HOST_FLAGS.isConstructingInstance */;
1489
1720
  }
1490
1721
  {
1491
- hostRef.$flags$ |= 128 /* isWatchReady */;
1722
+ hostRef.$flags$ |= 128 /* HOST_FLAGS.isWatchReady */;
1492
1723
  }
1493
1724
  endNewInstance();
1494
1725
  fireConnectedCallback(hostRef.$lazyInstance$);
@@ -1499,7 +1730,7 @@ const initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId, Cstr) =>
1499
1730
  const scopeId = getScopeId(cmpMeta);
1500
1731
  if (!styles.has(scopeId)) {
1501
1732
  const endRegisterStyles = createTime('registerStyles', cmpMeta.$tagName$);
1502
- registerStyle(scopeId, style, !!(cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */));
1733
+ registerStyle(scopeId, style, !!(cmpMeta.$flags$ & 1 /* CMP_FLAGS.shadowDomEncapsulation */));
1503
1734
  endRegisterStyles();
1504
1735
  }
1505
1736
  }
@@ -1526,19 +1757,20 @@ const fireConnectedCallback = (instance) => {
1526
1757
  }
1527
1758
  };
1528
1759
  const connectedCallback = (elm) => {
1529
- if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {
1760
+ if ((plt.$flags$ & 1 /* PLATFORM_FLAGS.isTmpDisconnected */) === 0) {
1530
1761
  const hostRef = getHostRef(elm);
1531
1762
  const cmpMeta = hostRef.$cmpMeta$;
1532
1763
  const endConnected = createTime('connectedCallback', cmpMeta.$tagName$);
1533
- if (!(hostRef.$flags$ & 1 /* hasConnected */)) {
1764
+ if (!(hostRef.$flags$ & 1 /* HOST_FLAGS.hasConnected */)) {
1534
1765
  // first time this component has connected
1535
- hostRef.$flags$ |= 1 /* hasConnected */;
1766
+ hostRef.$flags$ |= 1 /* HOST_FLAGS.hasConnected */;
1536
1767
  {
1537
1768
  // initUpdate
1538
1769
  // if the slot polyfill is required we'll need to put some nodes
1539
1770
  // in here to act as original content anchors as we move nodes around
1540
1771
  // host element has been connected to the DOM
1541
- if ((cmpMeta.$flags$ & (4 /* hasSlotRelocation */ | 8 /* needsShadowDomShim */))) {
1772
+ if ((// TODO(STENCIL-662): Remove code related to deprecated shadowDomShim field
1773
+ cmpMeta.$flags$ & (4 /* CMP_FLAGS.hasSlotRelocation */ | 8 /* CMP_FLAGS.needsShadowDomShim */))) {
1542
1774
  setContentReference(elm);
1543
1775
  }
1544
1776
  }
@@ -1561,7 +1793,7 @@ const connectedCallback = (elm) => {
1561
1793
  // https://developers.google.com/web/fundamentals/web-components/best-practices#lazy-properties
1562
1794
  if (cmpMeta.$members$) {
1563
1795
  Object.entries(cmpMeta.$members$).map(([memberName, [memberFlags]]) => {
1564
- if (memberFlags & 31 /* Prop */ && elm.hasOwnProperty(memberName)) {
1796
+ if (memberFlags & 31 /* MEMBER_FLAGS.Prop */ && elm.hasOwnProperty(memberName)) {
1565
1797
  const value = elm[memberName];
1566
1798
  delete elm[memberName];
1567
1799
  elm[memberName] = value;
@@ -1599,7 +1831,7 @@ const setContentReference = (elm) => {
1599
1831
  elm.insertBefore(contentRefElm, elm.firstChild);
1600
1832
  };
1601
1833
  const disconnectedCallback = (elm) => {
1602
- if ((plt.$flags$ & 1 /* isTmpDisconnected */) === 0) {
1834
+ if ((plt.$flags$ & 1 /* PLATFORM_FLAGS.isTmpDisconnected */) === 0) {
1603
1835
  const hostRef = getHostRef(elm);
1604
1836
  const instance = hostRef.$lazyInstance$ ;
1605
1837
  {
@@ -1608,16 +1840,13 @@ const disconnectedCallback = (elm) => {
1608
1840
  hostRef.$rmListeners$ = undefined;
1609
1841
  }
1610
1842
  }
1611
- // clear CSS var-shim tracking
1612
- if (plt.$cssShim$) {
1613
- plt.$cssShim$.removeHost(elm);
1614
- }
1615
1843
  {
1616
1844
  safeCall(instance, 'disconnectedCallback');
1617
1845
  }
1618
1846
  }
1619
1847
  };
1620
1848
  const bootstrapLazy = (lazyBundles, options = {}) => {
1849
+ var _a;
1621
1850
  const endBootstrap = createTime();
1622
1851
  const cmpTags = [];
1623
1852
  const exclude = options.exclude || [];
@@ -1682,13 +1911,18 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
1682
1911
  cmpMeta.$lazyBundleId$ = lazyBundle[0];
1683
1912
  if (!exclude.includes(tagName) && !customElements.get(tagName)) {
1684
1913
  cmpTags.push(tagName);
1685
- customElements.define(tagName, proxyComponent(HostElement, cmpMeta, 1 /* isElementConstructor */));
1914
+ customElements.define(tagName, proxyComponent(HostElement, cmpMeta, 1 /* PROXY_FLAGS.isElementConstructor */));
1686
1915
  }
1687
1916
  });
1688
1917
  });
1689
1918
  {
1690
1919
  visibilityStyle.innerHTML = cmpTags + HYDRATED_CSS;
1691
1920
  visibilityStyle.setAttribute('data-styles', '');
1921
+ // Apply CSP nonce to the style tag if it exists
1922
+ const nonce = (_a = plt.$nonce$) !== null && _a !== void 0 ? _a : queryNonceMetaTagContent(doc);
1923
+ if (nonce != null) {
1924
+ visibilityStyle.setAttribute('nonce', nonce);
1925
+ }
1692
1926
  head.insertBefore(visibilityStyle, metaCharset ? metaCharset.nextSibling : head.firstChild);
1693
1927
  }
1694
1928
  // Process deferred connectedCallbacks now all components have been registered
@@ -1704,7 +1938,48 @@ const bootstrapLazy = (lazyBundles, options = {}) => {
1704
1938
  // Fallback appLoad event
1705
1939
  endBootstrap();
1706
1940
  };
1707
- const hostRefs = new WeakMap();
1941
+ const addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) => {
1942
+ if (listeners) {
1943
+ listeners.map(([flags, name, method]) => {
1944
+ const target = getHostListenerTarget(elm, flags) ;
1945
+ const handler = hostListenerProxy(hostRef, method);
1946
+ const opts = hostListenerOpts(flags);
1947
+ plt.ael(target, name, handler, opts);
1948
+ (hostRef.$rmListeners$ = hostRef.$rmListeners$ || []).push(() => plt.rel(target, name, handler, opts));
1949
+ });
1950
+ }
1951
+ };
1952
+ const hostListenerProxy = (hostRef, methodName) => (ev) => {
1953
+ try {
1954
+ {
1955
+ if (hostRef.$flags$ & 256 /* HOST_FLAGS.isListenReady */) {
1956
+ // instance is ready, let's call it's member method for this event
1957
+ hostRef.$lazyInstance$[methodName](ev);
1958
+ }
1959
+ else {
1960
+ (hostRef.$queuedListeners$ = hostRef.$queuedListeners$ || []).push([methodName, ev]);
1961
+ }
1962
+ }
1963
+ }
1964
+ catch (e) {
1965
+ consoleError(e);
1966
+ }
1967
+ };
1968
+ const getHostListenerTarget = (elm, flags) => {
1969
+ if (flags & 4 /* LISTENER_FLAGS.TargetDocument */)
1970
+ return doc;
1971
+ return elm;
1972
+ };
1973
+ // prettier-ignore
1974
+ const hostListenerOpts = (flags) => (flags & 2 /* LISTENER_FLAGS.Capture */) !== 0;
1975
+ /**
1976
+ * Assigns the given value to the nonce property on the runtime platform object.
1977
+ * During runtime, this value is used to set the nonce attribute on all dynamically created script and style tags.
1978
+ * @param nonce The value to be assigned to the platform nonce property.
1979
+ * @returns void
1980
+ */
1981
+ const setNonce = (nonce) => (plt.$nonce$ = nonce);
1982
+ const hostRefs = /*@__PURE__*/ new WeakMap();
1708
1983
  const getHostRef = (ref) => hostRefs.get(ref);
1709
1984
  const registerInstance = (lazyInstance, hostRef) => hostRefs.set((hostRef.$lazyInstance$ = lazyInstance), hostRef);
1710
1985
  const registerHost = (elm, cmpMeta) => {
@@ -1770,14 +2045,35 @@ const loadModule = (cmpMeta, hostRef, hmrVersionId) => {
1770
2045
  return importedModule[exportName];
1771
2046
  }, consoleError);
1772
2047
  };
1773
- const styles = new Map();
2048
+ const styles = /*@__PURE__*/ new Map();
2049
+ const win = typeof window !== 'undefined' ? window : {};
2050
+ const doc = win.document || { head: {} };
2051
+ const plt = {
2052
+ $flags$: 0,
2053
+ $resourcesUrl$: '',
2054
+ jmp: (h) => h(),
2055
+ raf: (h) => requestAnimationFrame(h),
2056
+ ael: (el, eventName, listener, opts) => el.addEventListener(eventName, listener, opts),
2057
+ rel: (el, eventName, listener, opts) => el.removeEventListener(eventName, listener, opts),
2058
+ ce: (eventName, opts) => new CustomEvent(eventName, opts),
2059
+ };
2060
+ const promiseResolve = (v) => Promise.resolve(v);
2061
+ const supportsConstructableStylesheets = /*@__PURE__*/ (() => {
2062
+ try {
2063
+ new CSSStyleSheet();
2064
+ return typeof new CSSStyleSheet().replaceSync === 'function';
2065
+ }
2066
+ catch (e) { }
2067
+ return false;
2068
+ })()
2069
+ ;
1774
2070
  const queueDomReads = [];
1775
2071
  const queueDomWrites = [];
1776
2072
  const queueTask = (queue, write) => (cb) => {
1777
2073
  queue.push(cb);
1778
2074
  if (!queuePending) {
1779
2075
  queuePending = true;
1780
- if (write && plt.$flags$ & 4 /* queueSync */) {
2076
+ if (write && plt.$flags$ & 4 /* PLATFORM_FLAGS.queueSync */) {
1781
2077
  nextTick(flush);
1782
2078
  }
1783
2079
  else {
@@ -1814,4 +2110,6 @@ const flush = () => {
1814
2110
  const nextTick = /*@__PURE__*/ (cb) => promiseResolve().then(cb);
1815
2111
  const writeTask = /*@__PURE__*/ queueTask(queueDomWrites, true);
1816
2112
 
1817
- export { CSS as C, Host as H, NAMESPACE as N, promiseResolve as a, bootstrapLazy as b, createEvent as c, doc as d, getElement as e, forceUpdate as f, getRenderingRef as g, h, plt as p, registerInstance as r, win as w };
2113
+ export { Host as H, getElement as a, bootstrapLazy as b, createEvent as c, forceUpdate as f, getRenderingRef as g, h, promiseResolve as p, registerInstance as r, setNonce as s };
2114
+
2115
+ //# sourceMappingURL=index-068eebfc.js.map