@revolist/revogrid 4.24.3 → 4.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/dist/cjs/app-globals-Dmf-wvGw.js +8 -0
  2. package/dist/cjs/{cell-renderer-DnOCJ9ge.js → cell-renderer-Cf2Pu4S0.js} +3 -3
  3. package/dist/cjs/{column.drag.plugin-0qtjk7uW.js → column.drag.plugin-E_K6cIAy.js} +80 -7
  4. package/dist/cjs/{column.service-CD70rNL2.js → column.service-C7p5eC5V.js} +1 -1
  5. package/dist/cjs/{dimension.helpers-CB5sNw5J.js → dimension.helpers-CgHhnN1d.js} +1 -1
  6. package/dist/cjs/{edit.utils-DDxnq9lw.js → edit.utils-rAcGublN.js} +1 -1
  7. package/dist/cjs/{filter.button-C4xpvyyE.js → filter.button-F2Bw3UAd.js} +1 -1
  8. package/dist/cjs/{header-cell-renderer-JXYFwayd.js → header-cell-renderer-DHClfIto.js} +2 -2
  9. package/dist/cjs/{index-BF6JDcMr.js → index--FdNLz1Z.js} +1 -1
  10. package/dist/cjs/{index-Dq8Xzj5l.js → index-DRvxCueo.js} +61 -20
  11. package/dist/cjs/index.cjs.js +556 -47
  12. package/dist/cjs/loader.cjs.js +3 -4
  13. package/dist/cjs/revo-grid.cjs.entry.js +256 -28
  14. package/dist/cjs/revo-grid.cjs.js +4 -5
  15. package/dist/cjs/revogr-attribution_7.cjs.entry.js +9 -9
  16. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +6 -6
  17. package/dist/cjs/revogr-data_4.cjs.entry.js +8 -8
  18. package/dist/cjs/revogr-filter-panel.cjs.entry.js +3 -3
  19. package/dist/cjs/{text-editor-CvgloQdG.js → text-editor-F04kTx53.js} +2 -2
  20. package/dist/cjs/{viewport.store-Ci8H1bI9.js → viewport.store-B4Clk4m9.js} +1 -1
  21. package/dist/collection/collection-manifest.json +2 -3
  22. package/dist/collection/components/editors/revogr-edit-style.css +2 -2
  23. package/dist/collection/components/header/revogr-header-style.css +2 -2
  24. package/dist/collection/components/overlay/revogr-overlay-style.css +9 -6
  25. package/dist/collection/components/revoGrid/revo-grid-style.css +451 -276
  26. package/dist/collection/components/revoGrid/revo-grid.js +106 -35
  27. package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +6 -4
  28. package/dist/collection/components/selectionFocus/revogr-focus-style.css +1 -1
  29. package/dist/collection/components/selectionTempRange/revogr-temp-range-style.css +2 -2
  30. package/dist/collection/index.js +1 -0
  31. package/dist/collection/plugins/filter/filter.style.css +43 -38
  32. package/dist/collection/serve/controller.js +18 -2
  33. package/dist/collection/themeManager/presets/aurora.js +89 -0
  34. package/dist/collection/themeManager/presets/high-contrast-dark.js +89 -0
  35. package/dist/collection/themeManager/presets/high-contrast.js +89 -0
  36. package/dist/collection/themeManager/presets/index.js +25 -0
  37. package/dist/collection/themeManager/presets/midnight.js +89 -0
  38. package/dist/collection/themeManager/presets/ocean.js +89 -0
  39. package/dist/collection/themeManager/presets/shared.js +64 -0
  40. package/dist/collection/themeManager/theme.service.js +141 -20
  41. package/dist/collection/types/theme.js +73 -1
  42. package/dist/esm/app-globals-CA4dvSNd.js +6 -0
  43. package/dist/{revo-grid/cell-renderer-BQjko1zB.js → esm/cell-renderer-11cf-lu3.js} +3 -3
  44. package/dist/{revo-grid/column.drag.plugin-K0lXn2G3.js → esm/column.drag.plugin-DKgC_0I1.js} +79 -8
  45. package/dist/esm/{column.service-BnFqXqQG.js → column.service-Cfw3L0PN.js} +1 -1
  46. package/dist/esm/{dimension.helpers-CXrsUc6f.js → dimension.helpers-fl4HSSK9.js} +1 -1
  47. package/dist/esm/{edit.utils-CXmmCnxE.js → edit.utils-4e9fsqOR.js} +1 -1
  48. package/dist/esm/{filter.button-B-RBiF67.js → filter.button-DMhpuAiw.js} +1 -1
  49. package/dist/esm/{header-cell-renderer-B3mYpZD3.js → header-cell-renderer-Cqtg1ETB.js} +2 -2
  50. package/dist/esm/{index-Chp_81rd.js → index-CtimkLsB.js} +62 -20
  51. package/dist/esm/{index-DBqlJITb.js → index-D24ku9ej.js} +1 -1
  52. package/dist/esm/index.js +513 -13
  53. package/dist/esm/loader.js +4 -5
  54. package/dist/esm/revo-grid.entry.js +255 -27
  55. package/dist/esm/revo-grid.js +5 -6
  56. package/dist/esm/revogr-attribution_7.entry.js +9 -9
  57. package/dist/esm/revogr-clipboard_3.entry.js +6 -6
  58. package/dist/esm/revogr-data_4.entry.js +8 -8
  59. package/dist/esm/revogr-filter-panel.entry.js +3 -3
  60. package/dist/{revo-grid/text-editor-DQtz2Y7B.js → esm/text-editor-DlMnLkRK.js} +2 -2
  61. package/dist/{revo-grid/viewport.store-D5jEuhLq.js → esm/viewport.store-BSXmsiZc.js} +1 -1
  62. package/dist/revo-grid/app-globals-CA4dvSNd.js +6 -0
  63. package/dist/{esm/cell-renderer-BQjko1zB.js → revo-grid/cell-renderer-11cf-lu3.js} +3 -3
  64. package/dist/{esm/column.drag.plugin-K0lXn2G3.js → revo-grid/column.drag.plugin-DKgC_0I1.js} +79 -8
  65. package/dist/revo-grid/{column.service-BnFqXqQG.js → column.service-Cfw3L0PN.js} +1 -1
  66. package/dist/revo-grid/{dimension.helpers-CXrsUc6f.js → dimension.helpers-fl4HSSK9.js} +1 -1
  67. package/dist/revo-grid/{edit.utils-CXmmCnxE.js → edit.utils-4e9fsqOR.js} +1 -1
  68. package/dist/revo-grid/{filter.button-B-RBiF67.js → filter.button-DMhpuAiw.js} +1 -1
  69. package/dist/revo-grid/{header-cell-renderer-B3mYpZD3.js → header-cell-renderer-Cqtg1ETB.js} +2 -2
  70. package/dist/revo-grid/{index-Chp_81rd.js → index-CtimkLsB.js} +62 -20
  71. package/dist/revo-grid/{index-DBqlJITb.js → index-D24ku9ej.js} +1 -1
  72. package/dist/revo-grid/index.esm.js +513 -13
  73. package/dist/revo-grid/revo-grid.entry.js +255 -27
  74. package/dist/revo-grid/revo-grid.esm.js +5 -6
  75. package/dist/revo-grid/revogr-attribution_7.entry.js +9 -9
  76. package/dist/revo-grid/revogr-clipboard_3.entry.js +6 -6
  77. package/dist/revo-grid/revogr-data_4.entry.js +8 -8
  78. package/dist/revo-grid/revogr-filter-panel.entry.js +3 -3
  79. package/dist/{esm/text-editor-DQtz2Y7B.js → revo-grid/text-editor-DlMnLkRK.js} +2 -2
  80. package/dist/{esm/viewport.store-D5jEuhLq.js → revo-grid/viewport.store-BSXmsiZc.js} +1 -1
  81. package/dist/types/components/revoGrid/revo-grid.d.ts +16 -4
  82. package/dist/types/components.d.ts +17 -7
  83. package/dist/types/index.d.ts +1 -0
  84. package/dist/types/stencil-public-runtime.d.ts +1 -0
  85. package/dist/types/themeManager/presets/aurora.d.ts +8 -0
  86. package/dist/types/themeManager/presets/high-contrast-dark.d.ts +8 -0
  87. package/dist/types/themeManager/presets/high-contrast.d.ts +8 -0
  88. package/dist/types/themeManager/presets/index.d.ts +33 -0
  89. package/dist/types/themeManager/presets/midnight.d.ts +8 -0
  90. package/dist/types/themeManager/presets/ocean.d.ts +8 -0
  91. package/dist/types/themeManager/presets/shared.d.ts +81 -0
  92. package/dist/types/themeManager/theme.service.d.ts +9 -6
  93. package/dist/types/types/theme.d.ts +88 -1
  94. package/hydrate/index.js +1269 -588
  95. package/hydrate/index.mjs +1269 -588
  96. package/package.json +4 -4
  97. package/standalone/index.js +1 -1
  98. package/standalone/revo-grid.js +1 -1
  99. package/standalone/revogr-edit2.js +1 -1
  100. package/standalone/revogr-filter-panel.js +1 -1
  101. package/standalone/revogr-focus2.js +1 -1
  102. package/standalone/revogr-header2.js +1 -1
  103. package/standalone/revogr-overlay-selection2.js +1 -1
  104. package/standalone/revogr-temp-range2.js +1 -1
  105. package/standalone/revogr-viewport-scroll2.js +1 -1
  106. package/dist/cjs/app-globals-CPPhEXmy.js +0 -26
  107. package/dist/cjs/theme.service-BgnxGIjK.js +0 -72
  108. package/dist/collection/global/global.js +0 -18
  109. package/dist/collection/themeManager/theme.compact.js +0 -8
  110. package/dist/collection/themeManager/theme.default.js +0 -8
  111. package/dist/collection/themeManager/theme.material.js +0 -8
  112. package/dist/esm/app-globals-B_B_OtEa.js +0 -24
  113. package/dist/esm/theme.service-BmnDvr6P.js +0 -69
  114. package/dist/revo-grid/app-globals-B_B_OtEa.js +0 -24
  115. package/dist/revo-grid/theme.service-BmnDvr6P.js +0 -69
  116. package/dist/types/global/global.d.ts +0 -1
  117. package/dist/types/themeManager/theme.compact.d.ts +0 -4
  118. package/dist/types/themeManager/theme.default.d.ts +0 -4
  119. package/dist/types/themeManager/theme.material.d.ts +0 -4
@@ -0,0 +1,8 @@
1
+ /*!
2
+ * Built by Revolist OU ❤️
3
+ */
4
+ 'use strict';
5
+
6
+ const globalScripts = () => {};
7
+
8
+ exports.globalScripts = globalScripts;
@@ -3,9 +3,9 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-Dq8Xzj5l.js');
7
- var dimension_helpers = require('./dimension.helpers-CB5sNw5J.js');
8
- var column_service = require('./column.service-CD70rNL2.js');
6
+ var index = require('./index-DRvxCueo.js');
7
+ var dimension_helpers = require('./dimension.helpers-CgHhnN1d.js');
8
+ var column_service = require('./column.service-C7p5eC5V.js');
9
9
 
10
10
  /**
11
11
  * Renders sorting direction and optional additive sorting rank.
@@ -3,14 +3,85 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var column_service = require('./column.service-CD70rNL2.js');
7
- var dimension_helpers = require('./dimension.helpers-CB5sNw5J.js');
8
- var viewport_store = require('./viewport.store-Ci8H1bI9.js');
9
- var index$1 = require('./index-BF6JDcMr.js');
10
- var index = require('./index-Dq8Xzj5l.js');
11
- var filter_button = require('./filter.button-C4xpvyyE.js');
6
+ var column_service = require('./column.service-C7p5eC5V.js');
7
+ var dimension_helpers = require('./dimension.helpers-CgHhnN1d.js');
8
+ var viewport_store = require('./viewport.store-B4Clk4m9.js');
9
+ var index$1 = require('./index--FdNLz1Z.js');
10
+ var index = require('./index-DRvxCueo.js');
11
+ var filter_button = require('./filter.button-F2Bw3UAd.js');
12
12
  var debounce = require('./debounce-CcpHiH2p.js');
13
- var headerCellRenderer = require('./header-cell-renderer-JXYFwayd.js');
13
+ var headerCellRenderer = require('./header-cell-renderer-DHClfIto.js');
14
+
15
+ /**
16
+ * Public theme tokens and their CSS custom-property counterparts.
17
+ * Keep this map as the single source of truth for typed theme definitions.
18
+ */
19
+ const themeTokenCssVariables = {
20
+ primary: '--revo-grid-primary',
21
+ primaryTransparent: '--revo-grid-primary-transparent',
22
+ background: '--revo-grid-background',
23
+ foreground: '--revo-grid-foreground',
24
+ divider: '--revo-grid-divider',
25
+ shadow: '--revo-grid-shadow',
26
+ text: '--revo-grid-text',
27
+ border: '--revo-grid-border',
28
+ headerBg: '--revo-grid-header-bg',
29
+ headerColor: '--revo-grid-header-color',
30
+ headerBorder: '--revo-grid-header-border',
31
+ headerFocusedBg: '--revo-grid-header-focused-bg',
32
+ headerHoverBg: '--revo-grid-header-hover-bg',
33
+ cellBorder: '--revo-grid-cell-border',
34
+ cellVerticalBorder: '--revo-grid-cell-vertical-border',
35
+ focusedBg: '--revo-grid-focused-bg',
36
+ rowHover: '--revo-grid-row-hover',
37
+ rowHeadersBg: '--revo-grid-row-headers-bg',
38
+ rowHeadersColor: '--revo-grid-row-headers-color',
39
+ cellDisabledBg: '--revo-grid-cell-disabled-bg',
40
+ filterPanelBg: '--revo-grid-filter-panel-bg',
41
+ filterPanelBorder: '--revo-grid-filter-panel-border',
42
+ filterPanelShadow: '--revo-grid-filter-panel-shadow',
43
+ filterPanelInputBg: '--revo-grid-filter-panel-input-bg',
44
+ filterPanelDivider: '--revo-grid-filter-panel-divider',
45
+ filterPanelSelectBorder: '--revo-grid-filter-panel-select-border',
46
+ filterPanelSelectBorderHover: '--revo-grid-filter-panel-select-border-hover',
47
+ filterPanelReorderAccent: '--revo-grid-filter-panel-reorder-accent',
48
+ filterPanelReorderColor: '--revo-grid-filter-panel-reorder-color',
49
+ filterPanelText: '--revo-grid-filter-panel-text',
50
+ filterPanelMutedText: '--revo-grid-filter-panel-muted-text',
51
+ filterPanelFocusRing: '--revo-grid-filter-panel-focus-ring',
52
+ filterPanelIcon: '--revo-grid-filter-panel-icon',
53
+ filterPanelIconActive: '--revo-grid-filter-panel-icon-active',
54
+ filterPanelSelectArrow: '--revo-grid-filter-panel-select-arrow',
55
+ filterPanelSelectArrowDisabled: '--revo-grid-filter-panel-select-arrow-disabled',
56
+ fontFamily: '--revo-grid-font-family',
57
+ fontSize: '--revo-grid-font-size',
58
+ headerHeight: '--revo-grid-header-height',
59
+ headerFontSize: '--revo-grid-header-font-size',
60
+ headerFontWeight: '--revo-grid-header-font-weight',
61
+ headerTextTransform: '--revo-grid-header-text-transform',
62
+ headerTextAlign: '--revo-grid-header-text-align',
63
+ cellTextAlign: '--revo-grid-cell-text-align',
64
+ headerPadding: '--revo-grid-header-padding',
65
+ cellPadding: '--revo-grid-cell-padding',
66
+ selectionBorder: '--revo-grid-selection-border',
67
+ selectionBg: '--revo-grid-selection-bg',
68
+ autofillHandleBg: '--revo-grid-autofill-handle-bg',
69
+ autofillHandleBorder: '--revo-grid-autofill-handle-border',
70
+ rangeHandleBg: '--revo-grid-range-handle-bg',
71
+ temporaryRangeBorder: '--revo-grid-temporary-range-border',
72
+ temporarySelectionBorder: '--revo-grid-temporary-selection-border',
73
+ headerResizeHover: '--revo-grid-header-resize-hover',
74
+ buttonText: '--revo-grid-button-text',
75
+ buttonBg: '--revo-grid-button-bg',
76
+ buttonSuccessBg: '--revo-grid-button-success-bg',
77
+ buttonDangerBg: '--revo-grid-button-danger-bg',
78
+ buttonOutlineBorder: '--revo-grid-button-outline-border',
79
+ buttonOutlineText: '--revo-grid-button-outline-text',
80
+ };
81
+ /** Type-safe identity helper for reusable theme definitions. */
82
+ function defineTheme(theme) {
83
+ return theme;
84
+ }
14
85
 
15
86
  function calculateRealSize({ count, originItemSize, sizes, }) {
16
87
  const safeCount = Math.max(0, count);
@@ -2901,6 +2972,7 @@ exports.SelectionStore = SelectionStore;
2901
2972
  exports.SortingPlugin = SortingPlugin;
2902
2973
  exports.StretchColumn = StretchColumn;
2903
2974
  exports.defaultCellCompare = defaultCellCompare;
2975
+ exports.defineTheme = defineTheme;
2904
2976
  exports.descCellCompare = descCellCompare;
2905
2977
  exports.doCollapse = doCollapse;
2906
2978
  exports.doExpand = doExpand;
@@ -2915,3 +2987,4 @@ exports.getSortingIndex = getSortingIndex;
2915
2987
  exports.hasActiveSorting = hasActiveSorting;
2916
2988
  exports.isStretchPlugin = isStretchPlugin;
2917
2989
  exports.sortIndexByItems = sortIndexByItems;
2990
+ exports.themeTokenCssVariables = themeTokenCssVariables;
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var dimension_helpers = require('./dimension.helpers-CB5sNw5J.js');
6
+ var dimension_helpers = require('./dimension.helpers-CgHhnN1d.js');
7
7
 
8
8
  /**
9
9
  * Converts `value` to an integer.
@@ -4,7 +4,7 @@
4
4
  'use strict';
5
5
 
6
6
  var debounce$1 = require('./debounce-CcpHiH2p.js');
7
- var index = require('./index-Dq8Xzj5l.js');
7
+ var index = require('./index-DRvxCueo.js');
8
8
 
9
9
  /**
10
10
  * Todo:
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var dimension_helpers = require('./dimension.helpers-CB5sNw5J.js');
6
+ var dimension_helpers = require('./dimension.helpers-CgHhnN1d.js');
7
7
 
8
8
  function isMetaKey(code) {
9
9
  const keys = [
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-Dq8Xzj5l.js');
6
+ var index = require('./index-DRvxCueo.js');
7
7
 
8
8
  const FILTER_BUTTON_CLASS = 'rv-filter';
9
9
  const FILTER_BUTTON_ACTIVE = 'active';
@@ -3,8 +3,8 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-Dq8Xzj5l.js');
7
- var column_service = require('./column.service-CD70rNL2.js');
6
+ var index = require('./index-DRvxCueo.js');
7
+ var column_service = require('./column.service-C7p5eC5V.js');
8
8
 
9
9
  /**
10
10
  * Dispatches a custom event to a specified target element.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- require('./dimension.helpers-CB5sNw5J.js');
6
+ require('./dimension.helpers-CgHhnN1d.js');
7
7
 
8
8
  /* Generate range on size
9
9
  */
@@ -26,7 +26,7 @@ const BUILD = /* revo-grid */ { allRenderFn: false, appendChildSlotFix: false, a
26
26
  const Env = /* revo-grid */ {};
27
27
 
28
28
  /*
29
- Stencil Client Platform v4.43.2 | MIT Licensed | https://stenciljs.com
29
+ Stencil Client Platform v4.43.5 | MIT Licensed | https://stenciljs.com
30
30
  */
31
31
 
32
32
  var Build = {
@@ -2164,6 +2164,31 @@ var getMode = (ref) => {
2164
2164
  return (_a = getHostRef(ref)) == null ? void 0 : _a.$modeName$;
2165
2165
  };
2166
2166
 
2167
+ // src/runtime/normalize-watchers.ts
2168
+ var normalizeWatchers = (raw) => {
2169
+ if (!raw) return void 0;
2170
+ const keys = Object.keys(raw);
2171
+ if (keys.length === 0) return void 0;
2172
+ let hasLegacy = false;
2173
+ for (const propName of keys) {
2174
+ if (hasLegacy) break;
2175
+ for (const h2 of raw[propName]) {
2176
+ if (typeof h2 === "string") {
2177
+ hasLegacy = true;
2178
+ break;
2179
+ }
2180
+ }
2181
+ }
2182
+ if (!hasLegacy) return raw;
2183
+ const out = {};
2184
+ for (const propName of keys) {
2185
+ out[propName] = raw[propName].map(
2186
+ (h2) => typeof h2 === "string" ? { [h2]: 0 } : h2
2187
+ );
2188
+ }
2189
+ return out;
2190
+ };
2191
+
2167
2192
  // src/utils/remote-value.ts
2168
2193
  var RemoteValue = class _RemoteValue {
2169
2194
  /**
@@ -2260,11 +2285,19 @@ var RemoteValue = class _RemoteValue {
2260
2285
  };
2261
2286
 
2262
2287
  // src/utils/serialize.ts
2288
+ function decodeBase64Unicode(base64) {
2289
+ const binary = atob(base64);
2290
+ const bytes = new Uint8Array(binary.length);
2291
+ for (let i2 = 0; i2 < binary.length; i2++) {
2292
+ bytes[i2] = binary.charCodeAt(i2);
2293
+ }
2294
+ return new TextDecoder().decode(bytes);
2295
+ }
2263
2296
  function deserializeProperty(value) {
2264
2297
  if (typeof value !== "string" || !value.startsWith(SERIALIZED_PREFIX)) {
2265
2298
  return value;
2266
2299
  }
2267
- return RemoteValue.fromLocalValue(JSON.parse(atob(value.slice(SERIALIZED_PREFIX.length))));
2300
+ return RemoteValue.fromLocalValue(JSON.parse(decodeBase64Unicode(value.slice(SERIALIZED_PREFIX.length))));
2268
2301
  }
2269
2302
 
2270
2303
  // src/runtime/parse-property-value.ts
@@ -3562,7 +3595,7 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
3562
3595
  if (BUILD.member && cmpMeta.$members$ || BUILD.propChangeCallback) {
3563
3596
  if (BUILD.propChangeCallback) {
3564
3597
  if (Cstr.watchers && !cmpMeta.$watchers$) {
3565
- cmpMeta.$watchers$ = Cstr.watchers;
3598
+ cmpMeta.$watchers$ = normalizeWatchers(Cstr.watchers);
3566
3599
  }
3567
3600
  if (Cstr.deserializers && !cmpMeta.$deserializers$) {
3568
3601
  cmpMeta.$deserializers$ = Cstr.deserializers;
@@ -3740,11 +3773,13 @@ More information: https://stenciljs.com/docs/properties#prop-mutability`
3740
3773
  return;
3741
3774
  }
3742
3775
  const propFlags = members.find(([m]) => m === propName);
3743
- if (propFlags && propFlags[1][0] & 4 /* Boolean */) {
3776
+ const isBooleanTarget = propFlags && propFlags[1][0] & 4 /* Boolean */;
3777
+ const isSpuriousBooleanRemoval = isBooleanTarget && newValue === null && this[propName] === void 0;
3778
+ if (isBooleanTarget) {
3744
3779
  newValue = newValue === null || newValue === "false" ? false : true;
3745
3780
  }
3746
3781
  const propDesc = Object.getOwnPropertyDescriptor(prototype, propName);
3747
- if (newValue != this[propName] && (!propDesc.get || !!propDesc.set)) {
3782
+ if (!isSpuriousBooleanRemoval && newValue != this[propName] && (!propDesc.get || !!propDesc.set)) {
3748
3783
  this[propName] = newValue;
3749
3784
  }
3750
3785
  });
@@ -3792,7 +3827,7 @@ var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
3792
3827
  }
3793
3828
  if (BUILD.member && !Cstr.isProxied) {
3794
3829
  if (BUILD.propChangeCallback) {
3795
- cmpMeta.$watchers$ = Cstr.watchers;
3830
+ cmpMeta.$watchers$ = normalizeWatchers(Cstr.watchers);
3796
3831
  cmpMeta.$serializers$ = Cstr.serializers;
3797
3832
  cmpMeta.$deserializers$ = Cstr.deserializers;
3798
3833
  }
@@ -4004,7 +4039,7 @@ var proxyCustomElement = (Cstr, compactMeta) => {
4004
4039
  cmpMeta.$listeners$ = compactMeta[3];
4005
4040
  }
4006
4041
  if (BUILD.propChangeCallback) {
4007
- cmpMeta.$watchers$ = Cstr.$watchers$;
4042
+ cmpMeta.$watchers$ = normalizeWatchers(Cstr.$watchers$);
4008
4043
  cmpMeta.$deserializers$ = Cstr.$deserializers$;
4009
4044
  cmpMeta.$serializers$ = Cstr.$serializers$;
4010
4045
  }
@@ -4160,7 +4195,7 @@ var bootstrapLazy = (lazyBundles, options = {}) => {
4160
4195
  let hasSlotRelocation = false;
4161
4196
  lazyBundles.map((lazyBundle) => {
4162
4197
  lazyBundle[1].map((compactMeta) => {
4163
- var _a2, _b, _c;
4198
+ var _a2, _b;
4164
4199
  const cmpMeta = {
4165
4200
  $flags$: compactMeta[0],
4166
4201
  $tagName$: compactMeta[1],
@@ -4180,9 +4215,9 @@ var bootstrapLazy = (lazyBundles, options = {}) => {
4180
4215
  cmpMeta.$attrsToReflect$ = [];
4181
4216
  }
4182
4217
  if (BUILD.propChangeCallback) {
4183
- cmpMeta.$watchers$ = (_a2 = compactMeta[4]) != null ? _a2 : {};
4184
- cmpMeta.$serializers$ = (_b = compactMeta[5]) != null ? _b : {};
4185
- cmpMeta.$deserializers$ = (_c = compactMeta[6]) != null ? _c : {};
4218
+ cmpMeta.$watchers$ = normalizeWatchers(compactMeta[4]);
4219
+ cmpMeta.$serializers$ = (_a2 = compactMeta[5]) != null ? _a2 : {};
4220
+ cmpMeta.$deserializers$ = (_b = compactMeta[6]) != null ? _b : {};
4186
4221
  }
4187
4222
  if (BUILD.shadowDom && !supportsShadow && cmpMeta.$flags$ & 1 /* shadowDomEncapsulation */) {
4188
4223
  cmpMeta.$flags$ |= 8 /* needsShadowDomShim */;
@@ -4390,15 +4425,21 @@ var setNonce = (nonce) => plt.$nonce$ = nonce;
4390
4425
  var setPlatformOptions = (opts) => Object.assign(plt, opts);
4391
4426
 
4392
4427
  // src/runtime/render.ts
4428
+ var hostRefCache = /* @__PURE__ */ new WeakMap();
4393
4429
  function render(vnode, container) {
4394
- const cmpMeta = {
4395
- $flags$: 0,
4396
- $tagName$: container.tagName
4397
- };
4398
- const ref = {
4399
- $cmpMeta$: cmpMeta,
4400
- $hostElement$: container
4401
- };
4430
+ let ref = hostRefCache.get(container);
4431
+ if (!ref) {
4432
+ const cmpMeta = {
4433
+ $flags$: 0,
4434
+ $tagName$: container.tagName
4435
+ };
4436
+ ref = {
4437
+ $flags$: 0,
4438
+ $cmpMeta$: cmpMeta,
4439
+ $hostElement$: container
4440
+ };
4441
+ hostRefCache.set(container, ref);
4442
+ }
4402
4443
  renderVdom(ref, vnode);
4403
4444
  }
4404
4445
 
@@ -4654,6 +4695,7 @@ var StencilCore = /*#__PURE__*/Object.freeze({
4654
4695
  modeResolutionChain: modeResolutionChain,
4655
4696
  needsScopedSSR: needsScopedSSR,
4656
4697
  nextTick: nextTick,
4698
+ normalizeWatchers: normalizeWatchers,
4657
4699
  parsePropertyValue: parsePropertyValue,
4658
4700
  plt: plt,
4659
4701
  postUpdateComponent: postUpdateComponent,
@@ -4697,6 +4739,5 @@ exports.getElement = getElement;
4697
4739
  exports.h = h;
4698
4740
  exports.promiseResolve = promiseResolve;
4699
4741
  exports.registerInstance = registerInstance;
4700
- exports.setMode = setMode;
4701
4742
  exports.setNonce = setNonce;
4702
4743
  exports.win = win;