@rowsncolumns/spreadsheet 10.5.2 → 10.5.5

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 (115) hide show
  1. package/dist/cjs/api/selections.d.ts +15 -1
  2. package/dist/cjs/api/selections.d.ts.map +1 -1
  3. package/dist/cjs/api/selections.js +12 -2
  4. package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
  5. package/dist/cjs/components/canvas-grid/index.js +88 -70
  6. package/dist/cjs/components/canvas-grid/typings.d.ts +40 -1
  7. package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
  8. package/dist/cjs/components/cell/cell-text-runs.d.ts +10 -3
  9. package/dist/cjs/components/cell/cell-text-runs.d.ts.map +1 -1
  10. package/dist/cjs/components/cell/cell-text-runs.js +21 -9
  11. package/dist/cjs/components/cell/index.d.ts.map +1 -1
  12. package/dist/cjs/components/cell/index.js +9 -5
  13. package/dist/cjs/components/cell/line-height.d.ts +22 -0
  14. package/dist/cjs/components/cell/line-height.d.ts.map +1 -0
  15. package/dist/cjs/components/cell/line-height.js +32 -0
  16. package/dist/cjs/components/cell/typings.d.ts +8 -2
  17. package/dist/cjs/components/cell/typings.d.ts.map +1 -1
  18. package/dist/cjs/hooks/export-range-tiles.d.ts +81 -0
  19. package/dist/cjs/hooks/export-range-tiles.d.ts.map +1 -0
  20. package/dist/cjs/hooks/export-range-tiles.js +171 -0
  21. package/dist/cjs/hooks/use-cell-renderer.d.ts +6 -1
  22. package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
  23. package/dist/cjs/hooks/use-cell-renderer.js +3 -2
  24. package/dist/cjs/hooks/use-copy-paste-cut.d.ts +5 -1
  25. package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
  26. package/dist/cjs/hooks/use-copy-paste-cut.js +19 -5
  27. package/dist/cjs/hooks/use-editable.d.ts +8 -1
  28. package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
  29. package/dist/cjs/hooks/use-editable.js +6 -1
  30. package/dist/cjs/hooks/use-editor-submit.d.ts +7 -1
  31. package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
  32. package/dist/cjs/hooks/use-editor-submit.js +36 -16
  33. package/dist/cjs/hooks/use-export-range.d.ts +14 -6
  34. package/dist/cjs/hooks/use-export-range.d.ts.map +1 -1
  35. package/dist/cjs/hooks/use-export-range.js +240 -158
  36. package/dist/cjs/hooks/use-grid-children.d.ts +4 -1
  37. package/dist/cjs/hooks/use-grid-children.d.ts.map +1 -1
  38. package/dist/cjs/hooks/use-grid-children.js +4 -2
  39. package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
  40. package/dist/cjs/hooks/use-keyboard-handler.js +13 -6
  41. package/dist/cjs/hooks/use-navigate-sheet-range.d.ts.map +1 -1
  42. package/dist/cjs/hooks/use-navigate-sheet-range.js +5 -2
  43. package/dist/cjs/hooks/use-resize-observer.d.ts.map +1 -1
  44. package/dist/cjs/hooks/use-resize-observer.js +43 -11
  45. package/dist/cjs/hooks/use-selection-renderer.d.ts +5 -1
  46. package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
  47. package/dist/cjs/hooks/use-selection-renderer.js +8 -2
  48. package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
  49. package/dist/cjs/hooks/use-selection.js +4 -2
  50. package/dist/cjs/hooks/use-sizer.d.ts +8 -2
  51. package/dist/cjs/hooks/use-sizer.d.ts.map +1 -1
  52. package/dist/cjs/hooks/use-sizer.js +54 -33
  53. package/dist/cjs/providers/spreadsheet-provider.d.ts +11 -2
  54. package/dist/cjs/providers/spreadsheet-provider.d.ts.map +1 -1
  55. package/dist/cjs/providers/spreadsheet-provider.js +7 -5
  56. package/dist/cjs/release-date.js +1 -1
  57. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  58. package/dist/esm/api/selections.d.ts +15 -1
  59. package/dist/esm/api/selections.d.ts.map +1 -1
  60. package/dist/esm/api/selections.js +11 -2
  61. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  62. package/dist/esm/components/canvas-grid/index.js +30 -12
  63. package/dist/esm/components/canvas-grid/typings.d.ts +40 -1
  64. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  65. package/dist/esm/components/cell/cell-text-runs.d.ts +10 -3
  66. package/dist/esm/components/cell/cell-text-runs.d.ts.map +1 -1
  67. package/dist/esm/components/cell/cell-text-runs.js +14 -9
  68. package/dist/esm/components/cell/index.d.ts.map +1 -1
  69. package/dist/esm/components/cell/index.js +7 -3
  70. package/dist/esm/components/cell/line-height.d.ts +22 -0
  71. package/dist/esm/components/cell/line-height.d.ts.map +1 -0
  72. package/dist/esm/components/cell/line-height.js +25 -0
  73. package/dist/esm/components/cell/typings.d.ts +8 -2
  74. package/dist/esm/components/cell/typings.d.ts.map +1 -1
  75. package/dist/esm/hooks/export-range-tiles.d.ts +81 -0
  76. package/dist/esm/hooks/export-range-tiles.d.ts.map +1 -0
  77. package/dist/esm/hooks/export-range-tiles.js +126 -0
  78. package/dist/esm/hooks/use-cell-renderer.d.ts +6 -1
  79. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
  80. package/dist/esm/hooks/use-cell-renderer.js +3 -2
  81. package/dist/esm/hooks/use-copy-paste-cut.d.ts +5 -1
  82. package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
  83. package/dist/esm/hooks/use-copy-paste-cut.js +17 -3
  84. package/dist/esm/hooks/use-editable.d.ts +8 -1
  85. package/dist/esm/hooks/use-editable.d.ts.map +1 -1
  86. package/dist/esm/hooks/use-editable.js +6 -1
  87. package/dist/esm/hooks/use-editor-submit.d.ts +7 -1
  88. package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
  89. package/dist/esm/hooks/use-editor-submit.js +24 -6
  90. package/dist/esm/hooks/use-export-range.d.ts +14 -6
  91. package/dist/esm/hooks/use-export-range.d.ts.map +1 -1
  92. package/dist/esm/hooks/use-export-range.js +158 -120
  93. package/dist/esm/hooks/use-grid-children.d.ts +4 -1
  94. package/dist/esm/hooks/use-grid-children.d.ts.map +1 -1
  95. package/dist/esm/hooks/use-grid-children.js +4 -2
  96. package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
  97. package/dist/esm/hooks/use-keyboard-handler.js +13 -6
  98. package/dist/esm/hooks/use-navigate-sheet-range.d.ts.map +1 -1
  99. package/dist/esm/hooks/use-navigate-sheet-range.js +5 -2
  100. package/dist/esm/hooks/use-resize-observer.d.ts.map +1 -1
  101. package/dist/esm/hooks/use-resize-observer.js +38 -9
  102. package/dist/esm/hooks/use-selection-renderer.d.ts +5 -1
  103. package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
  104. package/dist/esm/hooks/use-selection-renderer.js +8 -2
  105. package/dist/esm/hooks/use-selection.d.ts.map +1 -1
  106. package/dist/esm/hooks/use-selection.js +4 -2
  107. package/dist/esm/hooks/use-sizer.d.ts +8 -2
  108. package/dist/esm/hooks/use-sizer.d.ts.map +1 -1
  109. package/dist/esm/hooks/use-sizer.js +53 -31
  110. package/dist/esm/providers/spreadsheet-provider.d.ts +11 -2
  111. package/dist/esm/providers/spreadsheet-provider.d.ts.map +1 -1
  112. package/dist/esm/providers/spreadsheet-provider.js +8 -6
  113. package/dist/esm/release-date.js +1 -1
  114. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  115. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"spreadsheet-provider.d.ts","sourceRoot":"","sources":["../../../providers/spreadsheet-provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,kBAAkB;;0GAqCswE,GAAI;;;;0GAAJ,GAAI;;wDArC1vE,CAAC;AAEhD,eAAO,MAAM,iBAAiB;;CAA+C,CAAC;AAM9E,eAAO,MAAM,uBAAuB,kFAEnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,KAAK,CAQzC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,EAAE,CAAC,KAAK,CAM9C,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,EAAE,CAAC,KAAK,CAEtD,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,KAAK,CAEhD,CAAC"}
1
+ {"version":3,"file":"spreadsheet-provider.d.ts","sourceRoot":"","sources":["../../../providers/spreadsheet-provider.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,KAAK,WAAW,GAAG,KAAK,GAAG;IACzB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;0GA+CwmD,GAAI;;;;0GAAJ,GAAI;;wDA/C5lD,CAAC;AAEhD,eAAO,MAAM,iBAAiB;;CAA+C,CAAC;AAM9E,eAAO,MAAM,uBAAuB,kFAEnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,WAAW,CAa/C,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,EAAE,CAAC,WAAW,CAWpD,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,EAAE,CAAC,KAAK,CAEtD,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,EAAE,CAAC,KAAK,CAEhD,CAAC"}
@@ -16,16 +16,18 @@ var useSpreadsheetInstances = function () {
16
16
  };
17
17
  exports.useSpreadsheetInstances = useSpreadsheetInstances;
18
18
  var SpreadsheetProvider = function (_a) {
19
- var children = _a.children;
19
+ var children = _a.children, portalContainer = _a.portalContainer;
20
20
  return (react_1.default.createElement(jotai_1.Provider, null,
21
- react_1.default.createElement(ui_1.ModalProvider, null,
22
- react_1.default.createElement(ui_1.TooltipProvider, null, children))));
21
+ react_1.default.createElement(ui_1.PortalContainerProvider, { container: portalContainer },
22
+ react_1.default.createElement(ui_1.ModalProvider, null,
23
+ react_1.default.createElement(ui_1.TooltipProvider, null, children)))));
23
24
  };
24
25
  exports.SpreadsheetProvider = SpreadsheetProvider;
25
26
  var SpreadsheetStateProvider = function (_a) {
26
- var children = _a.children;
27
+ var children = _a.children, portalContainer = _a.portalContainer;
27
28
  return (react_1.default.createElement(jotai_1.Provider, null,
28
- react_1.default.createElement(ui_1.ModalProvider, null, children)));
29
+ react_1.default.createElement(ui_1.PortalContainerProvider, { container: portalContainer },
30
+ react_1.default.createElement(ui_1.ModalProvider, null, children))));
29
31
  };
30
32
  exports.SpreadsheetStateProvider = SpreadsheetStateProvider;
31
33
  var SpreadsheetMultiInstanceProvider = function (_a) {
@@ -4,4 +4,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.releaseDate = void 0;
5
5
  exports.releaseDate =
6
6
  // @ts-ignore
7
- (_a = new Date("2026-10-12")) !== null && _a !== void 0 ? _a : new Date("2025-06-18");
7
+ (_a = new Date("2026-10-19")) !== null && _a !== void 0 ? _a : new Date("2025-06-18");
@@ -1 +1 @@
1
- {"root":["../../config.ts","../../helpers.ts","../../index.tsx","../../release-date.ts","../../test-setup.ts","../../themes.ts","../../types.ts","../../vitest.config.ts","../../api/animate.ts","../../api/banded-ranges.ts","../../api/calculated-column-fill.ts","../../api/cf-engine.ts","../../api/cf-overlays.ts","../../api/cf-window.ts","../../api/chart-sheet.ts","../../api/chart-source-ranges.ts","../../api/colors.ts","../../api/copy-paste.ts","../../api/evaluate-formula.ts","../../api/excel-validation-kinds.ts","../../api/fill-patterns.ts","../../api/fill-series.ts","../../api/font-loader.ts","../../api/go-to-special.ts","../../api/go-to.ts","../../api/heatmap.ts","../../api/insert-options.ts","../../api/move-overwrite.ts","../../api/multi-selection.ts","../../api/scheduler.ts","../../api/scroller.ts","../../api/selections.ts","../../api/spreadsheet-api.ts","../../api/table-auto-expansion.ts","../../api/table.ts","../../api/validation-tooltip.tsx","../../api/validation.ts","../../atoms/active-editor.atom.ts","../../atoms/advanced-filter-dialog.atom.ts","../../atoms/calculated-column-fill.atom.ts","../../atoms/cell-input-context.atom.ts","../../atoms/chart-actions.atom.ts","../../atoms/editing-cell.atom.ts","../../atoms/evaluate-formula-dialog.atom.ts","../../atoms/fill-options.atom.ts","../../atoms/fill-series-dialog.atom.ts","../../atoms/formula-bar-editor-value.atom.ts","../../atoms/formula-mode.atom.ts","../../atoms/formula-selection-state.atom.ts","../../atoms/formula-selections.atom.ts","../../atoms/go-to-dialog.atom.ts","../../atoms/goal-seek-dialog.atom.ts","../../atoms/index.ts","../../atoms/insert-cells-dialog.atom.ts","../../atoms/insert-options.atom.ts","../../atoms/loading-indicator.atom.ts","../../atoms/magic-fill-state.atom.ts","../../atoms/move-chart-dialog.atom.ts","../../atoms/move-overwrite-confirm.atom.ts","../../atoms/paste-menu.atom.ts","../../atoms/paste-special-dialog.atom.ts","../../atoms/persistent-tooltip.atom.ts","../../atoms/popover.atom.ts","../../atoms/range-selector.atom.ts","../../atoms/remove-duplicates-dialog.atom.ts","../../atoms/selected-chart-embed.atom.ts","../../atoms/selected-chart-series.atom.ts","../../atoms/sheet-context.atom.ts","../../atoms/sheet-status-display.atom.ts","../../atoms/show-formula-help.atom.ts","../../atoms/sort-dialog.atom.ts","../../atoms/sparkline-dialog.atom.ts","../../atoms/spreadsheet-api.atom.ts","../../atoms/subtotal-dialog.atom.ts","../../atoms/table-auto-expansion.atom.ts","../../atoms/text-to-columns-dialog.atom.ts","../../atoms/validation-alert.atom.ts","../../atoms/watch-window.atom.ts","../../components/advanced-filter-dialog/index.tsx","../../components/bottom-bar/index.tsx","../../components/calculated-column-smart-tag/index.tsx","../../components/calculation-options-dialog/index.tsx","../../components/canvas-grid/helpers.ts","../../components/canvas-grid/index.tsx","../../components/canvas-grid/typings.ts","../../components/cell/alignment.ts","../../components/cell/cell-background.tsx","../../components/cell/cell-text-runs.tsx","../../components/cell/helpers.ts","../../components/cell/index.tsx","../../components/cell/rich-text.ts","../../components/cell/typings.ts","../../components/cell-arrow/index.tsx","../../components/cell-calculated/index.tsx","../../components/cell-checkbox/index.tsx","../../components/cell-diff/index.tsx","../../components/cell-editor/calendar-popup.tsx","../../components/cell-editor/formula-result-preview.tsx","../../components/cell-editor/helpers.ts","../../components/cell-editor/index.tsx","../../components/cell-editor/style.tsx","../../components/cell-error/index.tsx","../../components/cell-expand/index.tsx","../../components/cell-filter/index.tsx","../../components/cell-group/index.tsx","../../components/cell-input/cell-input.tsx","../../components/cell-input/formula-bar-cell-input.tsx","../../components/cell-input/index.tsx","../../components/cell-input/style.tsx","../../components/cell-overlay/index.tsx","../../components/cell-structured/index.tsx","../../components/cell-structured/sparkline-math.ts","../../components/cell-structured/sparkline.tsx","../../components/cell-structured/types.ts","../../components/cell-tooltip/index.tsx","../../components/cell-tooltip/note-editor.tsx","../../components/cell-tooltip/style.tsx","../../components/chart-sheet-view/index.tsx","../../components/context-menu/embed-context-menu.tsx","../../components/context-menu/index.tsx","../../components/context-menu/menu.tsx","../../components/context-menu/style.tsx","../../components/context-menu/total-row-function-menu.tsx","../../components/context-menu/total-row-functions.ts","../../components/embeds/chart-component.tsx","../../components/embeds/embed-component.tsx","../../components/embeds/embed-draggable.tsx","../../components/embeds/index.tsx","../../components/embeds/shape-geometry.ts","../../components/embeds/shape-svg.tsx","../../components/embeds/slicer-component.tsx","../../components/evaluate-formula-dialog/index.tsx","../../components/fill-handle/index.tsx","../../components/fill-series-dialog/index.tsx","../../components/filter-box/date-tree.ts","../../components/filter-box/filter-by-color.tsx","../../components/filter-box/filter-by-condition.tsx","../../components/filter-box/filter-by-value.tsx","../../components/filter-box/index.tsx","../../components/floating-cell-editor/index.tsx","../../components/formula-bar/index.tsx","../../components/formula-bar/style.tsx","../../components/formula-input/index.tsx","../../components/go-to-dialog/index.tsx","../../components/goal-seek-dialog/index.tsx","../../components/grid-footer/index.tsx","../../components/header-cell/index.tsx","../../components/header-menu/index.tsx","../../components/header-move/index.tsx","../../components/header-resizer/index.tsx","../../components/hidden-markers/index.tsx","../../components/hidden-markers/style.tsx","../../components/insert-cells-dialog/index.tsx","../../components/insert-function-dialog/index.tsx","../../components/insert-options-smart-tag/index.tsx","../../components/loading-indicator/index.tsx","../../components/move-chart-dialog/index.tsx","../../components/move-overwrite-confirm-dialog/index.tsx","../../components/outline-gutter/index.tsx","../../components/paste-special-dialog/index.tsx","../../components/pivot-placeholder/index.tsx","../../components/print-preview/cell-styles.ts","../../components/print-preview/index.ts","../../components/print-preview/page-block.tsx","../../components/print-preview/print-preview-dialog.tsx","../../components/print-preview/run-print.ts","../../components/print-preview/settings.ts","../../components/print-preview/use-page-layout.ts","../../components/range-selector/index.tsx","../../components/remove-duplicates-dialog/index.tsx","../../components/resizer/index.tsx","../../components/selection/avatar.tsx","../../components/selection/fill-options-menu.tsx","../../components/selection/index.tsx","../../components/selection/magic-fill.tsx","../../components/selection/paste-menu.tsx","../../components/selection/quick-edit.tsx","../../components/selection/style.tsx","../../components/selection/suggestion-action.tsx","../../components/selection/title.tsx","../../components/selection/types.ts","../../components/selection-input/index.tsx","../../components/selection-input/style.tsx","../../components/sheet-search/index.tsx","../../components/sheet-status/index.tsx","../../components/sheet-status/style.tsx","../../components/sheet-switcher/index.tsx","../../components/sheet-switcher/new-sheet-button.tsx","../../components/sheet-tabs/context-menu.tsx","../../components/sheet-tabs/index.tsx","../../components/sheet-tabs/sheet-tab.tsx","../../components/sheet-tabs/style.tsx","../../components/sheet-tabs/types.ts","../../components/sort-range-dialog/index.tsx","../../components/sparkline-dialog/index.tsx","../../components/subtotal-dialog/index.tsx","../../components/table-auto-expansion-smart-tag/index.tsx","../../components/text-to-columns-dialog/index.tsx","../../components/toolbar/background-color-selector.tsx","../../components/toolbar/border-color-selector.tsx","../../components/toolbar/border-line-style-options.tsx","../../components/toolbar/border-line-style-selector.tsx","../../components/toolbar/border-location-options.tsx","../../components/toolbar/border-selector.tsx","../../components/toolbar/buttons.tsx","../../components/toolbar/cell-style-selector.tsx","../../components/toolbar/color-selector.tsx","../../components/toolbar/fill-selectors.tsx","../../components/toolbar/font-family-selector.tsx","../../components/toolbar/font-size-selector.tsx","../../components/toolbar/index.tsx","../../components/toolbar/insert-menu.tsx","../../components/toolbar/merge-cells-selector.tsx","../../components/toolbar/scale-selector.tsx","../../components/toolbar/sparkline-actions.tsx","../../components/toolbar/style.tsx","../../components/toolbar/table-actions.tsx","../../components/toolbar/table-style-editor.tsx","../../components/toolbar/table-style-selector.tsx","../../components/toolbar/text-color-selector.tsx","../../components/toolbar/text-format-selector.tsx","../../components/toolbar/text-horizontal-align-selector.tsx","../../components/toolbar/text-rotation-selector.tsx","../../components/toolbar/text-vertical-align-selector.tsx","../../components/toolbar/text-wrap-selector.tsx","../../components/toolbar/theme-selector.tsx","../../components/toolbar/toolbar.tsx","../../components/toolbar/types.ts","../../components/toolbar/view-menu.tsx","../../components/validation-alert-dialog/index.tsx","../../components/watch-window/index.tsx","../../helpers/merged-cell-borders.ts","../../hooks/index.ts","../../hooks/show-zeros.ts","../../hooks/use-async.ts","../../hooks/use-border-styles.ts","../../hooks/use-callback-ref.ts","../../hooks/use-cell-diff-highlight.ts","../../hooks/use-cell-popover.tsx","../../hooks/use-cell-renderer.tsx","../../hooks/use-chart-clipboard.ts","../../hooks/use-chart-source-ranges.ts","../../hooks/use-column-color-icons.ts","../../hooks/use-conditional-formatting.ts","../../hooks/use-context-menu.tsx","../../hooks/use-context-setter.ts","../../hooks/use-copy-paste-cut.tsx","../../hooks/use-create-address-from-selection.ts","../../hooks/use-create-formula-tokenizer.ts","../../hooks/use-delayed-value.ts","../../hooks/use-editable.tsx","../../hooks/use-editor-cancel.ts","../../hooks/use-editor-change.ts","../../hooks/use-editor-keydown.ts","../../hooks/use-editor-submit.ts","../../hooks/use-embeds-charts.tsx","../../hooks/use-expand-cell.tsx","../../hooks/use-export-range.ts","../../hooks/use-filter.ts","../../hooks/use-flash.ts","../../hooks/use-fonts.ts","../../hooks/use-formula-range-helpers.ts","../../hooks/use-get-tooltip.tsx","../../hooks/use-get-values-from-range.ts","../../hooks/use-grid-children.tsx","../../hooks/use-header-actions.tsx","../../hooks/use-hidden-dimension-markers.tsx","../../hooks/use-hidden-dimensions.ts","../../hooks/use-hovered-selection-ids.ts","../../hooks/use-isomorphic-layout-effect.ts","../../hooks/use-keyboard-handler.tsx","../../hooks/use-licensekey-validator.tsx","../../hooks/use-memo-compare.ts","../../hooks/use-merge.refs.ts","../../hooks/use-move-columns-rows.tsx","../../hooks/use-navigate-sheet-range.ts","../../hooks/use-previous.ts","../../hooks/use-raf.ts","../../hooks/use-resize-observer.ts","../../hooks/use-reveal-chart-embed.ts","../../hooks/use-scale-listener.ts","../../hooks/use-selected-rows-columns.ts","../../hooks/use-selection-aware-formatting.ts","../../hooks/use-selection-change.ts","../../hooks/use-selection-interceptors.ts","../../hooks/use-selection-move.ts","../../hooks/use-selection-renderer.tsx","../../hooks/use-selection-resize.ts","../../hooks/use-selection.ts","../../hooks/use-sheet-change-handler.ts","../../hooks/use-sizer.ts","../../hooks/use-spreadsheet-theme.ts","../../hooks/use-stable-ref.ts","../../hooks/use-structured-reference-selection.ts","../../hooks/use-table-hit-zones.ts","../../hooks/use-table-resizer.tsx","../../hooks/use-text-dimensions.ts","../../hooks/use-tooltip.ts","../../hooks/use-touch.ts","../../providers/spreadsheet-provider.tsx","../../signals/scroll-subscriber.ts","../../utils/copy-as-picture.ts","../../utils/maybe.ts","../../utils/pivot-chart-field-buttons.ts","../../utils/z-order.ts"],"version":"5.8.3"}
1
+ {"root":["../../config.ts","../../helpers.ts","../../index.tsx","../../release-date.ts","../../test-setup.ts","../../themes.ts","../../types.ts","../../vitest.config.ts","../../api/animate.ts","../../api/banded-ranges.ts","../../api/calculated-column-fill.ts","../../api/cf-engine.ts","../../api/cf-overlays.ts","../../api/cf-window.ts","../../api/chart-sheet.ts","../../api/chart-source-ranges.ts","../../api/colors.ts","../../api/copy-paste.ts","../../api/evaluate-formula.ts","../../api/excel-validation-kinds.ts","../../api/fill-patterns.ts","../../api/fill-series.ts","../../api/font-loader.ts","../../api/go-to-special.ts","../../api/go-to.ts","../../api/heatmap.ts","../../api/insert-options.ts","../../api/move-overwrite.ts","../../api/multi-selection.ts","../../api/scheduler.ts","../../api/scroller.ts","../../api/selections.ts","../../api/spreadsheet-api.ts","../../api/table-auto-expansion.ts","../../api/table.ts","../../api/validation-tooltip.tsx","../../api/validation.ts","../../atoms/active-editor.atom.ts","../../atoms/advanced-filter-dialog.atom.ts","../../atoms/calculated-column-fill.atom.ts","../../atoms/cell-input-context.atom.ts","../../atoms/chart-actions.atom.ts","../../atoms/editing-cell.atom.ts","../../atoms/evaluate-formula-dialog.atom.ts","../../atoms/fill-options.atom.ts","../../atoms/fill-series-dialog.atom.ts","../../atoms/formula-bar-editor-value.atom.ts","../../atoms/formula-mode.atom.ts","../../atoms/formula-selection-state.atom.ts","../../atoms/formula-selections.atom.ts","../../atoms/go-to-dialog.atom.ts","../../atoms/goal-seek-dialog.atom.ts","../../atoms/index.ts","../../atoms/insert-cells-dialog.atom.ts","../../atoms/insert-options.atom.ts","../../atoms/loading-indicator.atom.ts","../../atoms/magic-fill-state.atom.ts","../../atoms/move-chart-dialog.atom.ts","../../atoms/move-overwrite-confirm.atom.ts","../../atoms/paste-menu.atom.ts","../../atoms/paste-special-dialog.atom.ts","../../atoms/persistent-tooltip.atom.ts","../../atoms/popover.atom.ts","../../atoms/range-selector.atom.ts","../../atoms/remove-duplicates-dialog.atom.ts","../../atoms/selected-chart-embed.atom.ts","../../atoms/selected-chart-series.atom.ts","../../atoms/sheet-context.atom.ts","../../atoms/sheet-status-display.atom.ts","../../atoms/show-formula-help.atom.ts","../../atoms/sort-dialog.atom.ts","../../atoms/sparkline-dialog.atom.ts","../../atoms/spreadsheet-api.atom.ts","../../atoms/subtotal-dialog.atom.ts","../../atoms/table-auto-expansion.atom.ts","../../atoms/text-to-columns-dialog.atom.ts","../../atoms/validation-alert.atom.ts","../../atoms/watch-window.atom.ts","../../components/advanced-filter-dialog/index.tsx","../../components/bottom-bar/index.tsx","../../components/calculated-column-smart-tag/index.tsx","../../components/calculation-options-dialog/index.tsx","../../components/canvas-grid/helpers.ts","../../components/canvas-grid/index.tsx","../../components/canvas-grid/typings.ts","../../components/cell/alignment.ts","../../components/cell/cell-background.tsx","../../components/cell/cell-text-runs.tsx","../../components/cell/helpers.ts","../../components/cell/index.tsx","../../components/cell/line-height.ts","../../components/cell/rich-text.ts","../../components/cell/typings.ts","../../components/cell-arrow/index.tsx","../../components/cell-calculated/index.tsx","../../components/cell-checkbox/index.tsx","../../components/cell-diff/index.tsx","../../components/cell-editor/calendar-popup.tsx","../../components/cell-editor/formula-result-preview.tsx","../../components/cell-editor/helpers.ts","../../components/cell-editor/index.tsx","../../components/cell-editor/style.tsx","../../components/cell-error/index.tsx","../../components/cell-expand/index.tsx","../../components/cell-filter/index.tsx","../../components/cell-group/index.tsx","../../components/cell-input/cell-input.tsx","../../components/cell-input/formula-bar-cell-input.tsx","../../components/cell-input/index.tsx","../../components/cell-input/style.tsx","../../components/cell-overlay/index.tsx","../../components/cell-structured/index.tsx","../../components/cell-structured/sparkline-math.ts","../../components/cell-structured/sparkline.tsx","../../components/cell-structured/types.ts","../../components/cell-tooltip/index.tsx","../../components/cell-tooltip/note-editor.tsx","../../components/cell-tooltip/style.tsx","../../components/chart-sheet-view/index.tsx","../../components/context-menu/embed-context-menu.tsx","../../components/context-menu/index.tsx","../../components/context-menu/menu.tsx","../../components/context-menu/style.tsx","../../components/context-menu/total-row-function-menu.tsx","../../components/context-menu/total-row-functions.ts","../../components/embeds/chart-component.tsx","../../components/embeds/embed-component.tsx","../../components/embeds/embed-draggable.tsx","../../components/embeds/index.tsx","../../components/embeds/shape-geometry.ts","../../components/embeds/shape-svg.tsx","../../components/embeds/slicer-component.tsx","../../components/evaluate-formula-dialog/index.tsx","../../components/fill-handle/index.tsx","../../components/fill-series-dialog/index.tsx","../../components/filter-box/date-tree.ts","../../components/filter-box/filter-by-color.tsx","../../components/filter-box/filter-by-condition.tsx","../../components/filter-box/filter-by-value.tsx","../../components/filter-box/index.tsx","../../components/floating-cell-editor/index.tsx","../../components/formula-bar/index.tsx","../../components/formula-bar/style.tsx","../../components/formula-input/index.tsx","../../components/go-to-dialog/index.tsx","../../components/goal-seek-dialog/index.tsx","../../components/grid-footer/index.tsx","../../components/header-cell/index.tsx","../../components/header-menu/index.tsx","../../components/header-move/index.tsx","../../components/header-resizer/index.tsx","../../components/hidden-markers/index.tsx","../../components/hidden-markers/style.tsx","../../components/insert-cells-dialog/index.tsx","../../components/insert-function-dialog/index.tsx","../../components/insert-options-smart-tag/index.tsx","../../components/loading-indicator/index.tsx","../../components/move-chart-dialog/index.tsx","../../components/move-overwrite-confirm-dialog/index.tsx","../../components/outline-gutter/index.tsx","../../components/paste-special-dialog/index.tsx","../../components/pivot-placeholder/index.tsx","../../components/print-preview/cell-styles.ts","../../components/print-preview/index.ts","../../components/print-preview/page-block.tsx","../../components/print-preview/print-preview-dialog.tsx","../../components/print-preview/run-print.ts","../../components/print-preview/settings.ts","../../components/print-preview/use-page-layout.ts","../../components/range-selector/index.tsx","../../components/remove-duplicates-dialog/index.tsx","../../components/resizer/index.tsx","../../components/selection/avatar.tsx","../../components/selection/fill-options-menu.tsx","../../components/selection/index.tsx","../../components/selection/magic-fill.tsx","../../components/selection/paste-menu.tsx","../../components/selection/quick-edit.tsx","../../components/selection/style.tsx","../../components/selection/suggestion-action.tsx","../../components/selection/title.tsx","../../components/selection/types.ts","../../components/selection-input/index.tsx","../../components/selection-input/style.tsx","../../components/sheet-search/index.tsx","../../components/sheet-status/index.tsx","../../components/sheet-status/style.tsx","../../components/sheet-switcher/index.tsx","../../components/sheet-switcher/new-sheet-button.tsx","../../components/sheet-tabs/context-menu.tsx","../../components/sheet-tabs/index.tsx","../../components/sheet-tabs/sheet-tab.tsx","../../components/sheet-tabs/style.tsx","../../components/sheet-tabs/types.ts","../../components/sort-range-dialog/index.tsx","../../components/sparkline-dialog/index.tsx","../../components/subtotal-dialog/index.tsx","../../components/table-auto-expansion-smart-tag/index.tsx","../../components/text-to-columns-dialog/index.tsx","../../components/toolbar/background-color-selector.tsx","../../components/toolbar/border-color-selector.tsx","../../components/toolbar/border-line-style-options.tsx","../../components/toolbar/border-line-style-selector.tsx","../../components/toolbar/border-location-options.tsx","../../components/toolbar/border-selector.tsx","../../components/toolbar/buttons.tsx","../../components/toolbar/cell-style-selector.tsx","../../components/toolbar/color-selector.tsx","../../components/toolbar/fill-selectors.tsx","../../components/toolbar/font-family-selector.tsx","../../components/toolbar/font-size-selector.tsx","../../components/toolbar/index.tsx","../../components/toolbar/insert-menu.tsx","../../components/toolbar/merge-cells-selector.tsx","../../components/toolbar/scale-selector.tsx","../../components/toolbar/sparkline-actions.tsx","../../components/toolbar/style.tsx","../../components/toolbar/table-actions.tsx","../../components/toolbar/table-style-editor.tsx","../../components/toolbar/table-style-selector.tsx","../../components/toolbar/text-color-selector.tsx","../../components/toolbar/text-format-selector.tsx","../../components/toolbar/text-horizontal-align-selector.tsx","../../components/toolbar/text-rotation-selector.tsx","../../components/toolbar/text-vertical-align-selector.tsx","../../components/toolbar/text-wrap-selector.tsx","../../components/toolbar/theme-selector.tsx","../../components/toolbar/toolbar.tsx","../../components/toolbar/types.ts","../../components/toolbar/view-menu.tsx","../../components/validation-alert-dialog/index.tsx","../../components/watch-window/index.tsx","../../helpers/merged-cell-borders.ts","../../hooks/export-range-tiles.ts","../../hooks/index.ts","../../hooks/show-zeros.ts","../../hooks/use-async.ts","../../hooks/use-border-styles.ts","../../hooks/use-callback-ref.ts","../../hooks/use-cell-diff-highlight.ts","../../hooks/use-cell-popover.tsx","../../hooks/use-cell-renderer.tsx","../../hooks/use-chart-clipboard.ts","../../hooks/use-chart-source-ranges.ts","../../hooks/use-column-color-icons.ts","../../hooks/use-conditional-formatting.ts","../../hooks/use-context-menu.tsx","../../hooks/use-context-setter.ts","../../hooks/use-copy-paste-cut.tsx","../../hooks/use-create-address-from-selection.ts","../../hooks/use-create-formula-tokenizer.ts","../../hooks/use-delayed-value.ts","../../hooks/use-editable.tsx","../../hooks/use-editor-cancel.ts","../../hooks/use-editor-change.ts","../../hooks/use-editor-keydown.ts","../../hooks/use-editor-submit.ts","../../hooks/use-embeds-charts.tsx","../../hooks/use-expand-cell.tsx","../../hooks/use-export-range.ts","../../hooks/use-filter.ts","../../hooks/use-flash.ts","../../hooks/use-fonts.ts","../../hooks/use-formula-range-helpers.ts","../../hooks/use-get-tooltip.tsx","../../hooks/use-get-values-from-range.ts","../../hooks/use-grid-children.tsx","../../hooks/use-header-actions.tsx","../../hooks/use-hidden-dimension-markers.tsx","../../hooks/use-hidden-dimensions.ts","../../hooks/use-hovered-selection-ids.ts","../../hooks/use-isomorphic-layout-effect.ts","../../hooks/use-keyboard-handler.tsx","../../hooks/use-licensekey-validator.tsx","../../hooks/use-memo-compare.ts","../../hooks/use-merge.refs.ts","../../hooks/use-move-columns-rows.tsx","../../hooks/use-navigate-sheet-range.ts","../../hooks/use-previous.ts","../../hooks/use-raf.ts","../../hooks/use-resize-observer.ts","../../hooks/use-reveal-chart-embed.ts","../../hooks/use-scale-listener.ts","../../hooks/use-selected-rows-columns.ts","../../hooks/use-selection-aware-formatting.ts","../../hooks/use-selection-change.ts","../../hooks/use-selection-interceptors.ts","../../hooks/use-selection-move.ts","../../hooks/use-selection-renderer.tsx","../../hooks/use-selection-resize.ts","../../hooks/use-selection.ts","../../hooks/use-sheet-change-handler.ts","../../hooks/use-sizer.ts","../../hooks/use-spreadsheet-theme.ts","../../hooks/use-stable-ref.ts","../../hooks/use-structured-reference-selection.ts","../../hooks/use-table-hit-zones.ts","../../hooks/use-table-resizer.tsx","../../hooks/use-text-dimensions.ts","../../hooks/use-tooltip.ts","../../hooks/use-touch.ts","../../providers/spreadsheet-provider.tsx","../../signals/scroll-subscriber.ts","../../utils/copy-as-picture.ts","../../utils/maybe.ts","../../utils/pivot-chart-field-buttons.ts","../../utils/z-order.ts"],"version":"5.8.3"}
@@ -9,14 +9,28 @@ import type { SheetRange, TableView } from "../types";
9
9
  * @param isSelection
10
10
  */
11
11
  export declare const getSelectionStrokeStyle: (formulaMode: boolean, isFill: boolean, isActiveCell: boolean, emptySelections: boolean) => "solid" | "dashed";
12
+ export type SelectionStrokeOptions = {
13
+ /** Border width of a range selection outside formula mode. Default `1`. */
14
+ selectionStrokeWidth?: number;
15
+ /**
16
+ * Whether the active cell draws its own border while a range is selected.
17
+ * Default `true`; Excel draws none (the active cell is the one unshaded cell).
18
+ */
19
+ showActiveCellBorderInSelection?: boolean;
20
+ /** A range is selected (the selection count is not 0). */
21
+ hasSelections?: boolean;
22
+ };
12
23
  /**
13
24
  * Get selection stroke width
14
25
  * @param formulaMode
15
26
  * @param isFill
16
27
  * @param isActiveCell
28
+ * @param isResizingTable
29
+ * @param options the host's widths (`CanvasGrid`'s `selectionStrokeWidth` and
30
+ * `showActiveCellBorderInSelection`); formula-mode references keep theirs
17
31
  * @returns
18
32
  */
19
- export declare const getSelectionStrokeWidth: (formulaMode: boolean, isFill: boolean, isActiveCell: boolean, isResizingTable: boolean) => 1 | 2;
33
+ export declare const getSelectionStrokeWidth: (formulaMode: boolean, isFill: boolean, isActiveCell: boolean, isResizingTable: boolean, { selectionStrokeWidth, showActiveCellBorderInSelection, hasSelections, }?: SelectionStrokeOptions) => number;
20
34
  /**
21
35
  * Get background opacity of selection
22
36
  * @param formulaMode
@@ -1 +1 @@
1
- {"version":3,"file":"selections.d.ts","sourceRoot":"","sources":["../../../api/selections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selections.d.ts","sourceRoot":"","sources":["../../../api/selections.ts"],"names":[],"mappings":"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"}
@@ -25,16 +25,25 @@ export const getSelectionStrokeStyle = (formulaMode, isFill, isActiveCell, empty
25
25
  * @param formulaMode
26
26
  * @param isFill
27
27
  * @param isActiveCell
28
+ * @param isResizingTable
29
+ * @param options the host's widths (`CanvasGrid`'s `selectionStrokeWidth` and
30
+ * `showActiveCellBorderInSelection`); formula-mode references keep theirs
28
31
  * @returns
29
32
  */
30
- export const getSelectionStrokeWidth = (formulaMode, isFill, isActiveCell, isResizingTable) => {
33
+ export const getSelectionStrokeWidth = (formulaMode, isFill, isActiveCell, isResizingTable, { selectionStrokeWidth = 1, showActiveCellBorderInSelection = true, hasSelections = false, } = {}) => {
31
34
  if (isFill) {
32
35
  return 1;
33
36
  }
37
+ if (isActiveCell &&
38
+ !formulaMode &&
39
+ hasSelections &&
40
+ !showActiveCellBorderInSelection) {
41
+ return 0;
42
+ }
34
43
  if (formulaMode || isActiveCell || isResizingTable) {
35
44
  return 2;
36
45
  }
37
- return 1;
46
+ return selectionStrokeWidth;
38
47
  };
39
48
  /**
40
49
  * Get background opacity of selection
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/canvas-grid/index.tsx"],"names":[],"mappings":"AAoDA,OAAO,KASN,MAAM,OAAO,CAAC;AAqNf,OAAO,KAAK,EAGV,QAAQ,EAWT,MAAM,aAAa,CAAC;AAoBrB,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EAEhB,MAAM,WAAW,CAAC;AAm4LnB,eAAO,MAAM,UAAU,EAA4C,CACjE,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC,EAEvB,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GACvB,wBAAwB,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;CAAE,KAChE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/canvas-grid/index.tsx"],"names":[],"mappings":"AAoDA,OAAO,KASN,MAAM,OAAO,CAAC;AAqNf,OAAO,KAAK,EAGV,QAAQ,EAWT,MAAM,aAAa,CAAC;AAoBrB,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EAEhB,MAAM,WAAW,CAAC;AA85LnB,eAAO,MAAM,UAAU,EAA4C,CACjE,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC,EAEvB,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GACvB,wBAAwB,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;CAAE,KAChE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC"}
@@ -127,7 +127,7 @@ function isDetachedEditor(editor) {
127
127
  return element != null && !element.isConnected;
128
128
  }
129
129
  function CanvasGridComponent(props, forwardedRef) {
130
- const { licenseKey, sheetId, sheetType, ChartSheetView: ChartSheetViewComponent = ChartSheetView, instanceId, activeCell = DEFAULT_ACTIVE_CELL, selections = DEFAULT_ARRAY, frozenColumnCount = 0, frozenRowCount = 0, rowCount = DEFAULT_ROW_COUNT, columnCount = DEFAULT_COLUMN_COUNT, autoFocus, basicFilter, tables, namedRanges, bandedRanges = DEFAULT_ARRAY, tableBorderColor = "#008000", filterIconColor = "#008000", conditionalFormats, showFilterIcon = true, showCalculatedColumnIcon = true, showHeaders = true, defaultColumnWidth = DEFAULT_COLUMN_WIDTH, defaultRowHeight = DEFAULT_ROW_HEIGHT, columnHeaderHeight = COLUMN_HEADER_HEIGHT, rowHeaderWidth = ROW_HEADER_WIDTH, gridLineColor = GRIDLINE_COLOR, cellBackgroundColor = DEFAULT_CELL_BACKGROUND_COLOR, cellColor = DEFAULT_CELL_COLOR, headerBorderColor = DEFAULT_HEADER_BORDER_COLOR, headerBackgroundColor = DEFAULT_HEADER_BG, headerColor = DEFAULT_HEADER_COLOR, headerActiveBackgroundColor = DEFAULT_HEADER_ACTIVE_BG, headerSelectedBackgroundColor = DEFAULT_HEADER_SELECTED_BG, headerSelectedColor = "white", headerTableBackgroundColor = DEFAULT_HEADER_TABLE_BG, headerTableActiveBackgroundColor = DEFAULT_HEADER_ACTIVE_TABLE_BG, headerTableSelectedBackgroundColor = DEFAULT_HEADER_SELECTED_TABLE_BG, frozenShadowColor = headerBorderColor, frozenShadowThickness = 1, selectionBackgroundColor = SELECTION_BG, selectionBorderColor = SELECTION_BORDER, selectionDragBorderColor = SELECTION_BORDER, chartSelectedColor, chipBackgroundColor = CHIP_COLOR, merges = DEFAULT_ARRAY, borderStyles, protectedRanges, isWorkbookProtected: isWorkbookProtectedProp = false, getSheetProtection, pivotTables, charts, onUpdateChart, onChangeZOrder, embeds, slicers, rowMetadata = DEFAULT_ARRAY, columnMetadata = DEFAULT_ARRAY, scale = 1, zoomSpeed = 1, overscanCount = 3, enableEditOnEnterKey = true, enableTextOverflow = true, showGridLines: _showGridLines, showFormulas = false, protectFormulas = false, showFrozenSeparator = true, HeaderCell = DefaultHeaderCell, Cell = DefaultCell, SelectionTitleComponent = SelectionTitle, CellEditor = DefaultCellEditor, CellTooltip, ContextMenu = DefaultContextMenu, ContextMenuWrapper = DefaultContextMenuWrapper, FilterBox = DefaultFilterBox, HeaderMoveDragComponent = DefaultHeaderMoveDragComponent, SuggestionsDropdown, stickyEditor = true, scrollSnap = false, scrollThrottleTimeout, preventBrowserDefaultScroll, mouseMoveThrottleTimeout = 60, tooltipIntentInterval = 60, selectionPolicy, users, userId, renderCollaboratorCursor, functionDescriptions, showHeaderMenuButton = true, scrollbarSize = SCROLLBAR_SIZE, theme = defaultSpreadsheetTheme, showNotes = true, showComments = true, locale, formulaLocale: formulaLocaleProp, agentSuggestions, onReviewSuggestion, onShowFormulas, getDataRowCount, getDataRegion, getChartComponent, getEmbedComponent, getSlicerComponent, onChange, onChangeBatch, onExpandCollapse, onPivotDrillDown, onDelete, onChangeEditorValue, onFill, onRequestCalculate, onChangeActiveCell, onChangeActiveSheet, onChangeSelections, getSheetName, getSheetId, getCellData, getNote: getNoteProp, getTextFormatRuns, getDataValidation, getEffectiveFormat, getFormattedValue: getFormattedValueProp, getTooltipContent, errorResolutionComponent, getEffectiveValue: getEffectiveValueProp, getSparklineGroup, getUserEnteredExtendedValue, getEffectiveExtendedValue, getSheetRowCount, getSheetColumnCount, getCellPopoverContent, onScroll, onViewPortChange, windowConditionalFormats = false, engineConditionalFormatResults = false, onResize, onAutoResize, onHideColumn, onHideRow, onShowColumn, onShowRow, onGroupRows, onUngroupRows, onCollapseRowGroup, onExpandRowGroup, onGroupColumns, onUngroupColumns, onCollapseColumnGroup, onExpandColumnGroup, onSetOutlineDepth, onDeleteRow, onDeleteColumn, onInsertRow, onInsertColumn, onChangeAutoExpandTables, onChangeAutoCalculatedColumns, onInsertCellsShiftDown, onInsertCellsShiftRight, onDeleteCellsShiftLeft, onDeleteCellsShiftUp, onClearContents, onMoveColumns, onMoveRows, onSelectNextSheet, onSelectPreviousSheet, onCreateNewSheet, onKeyDown, onChangeFormatting, onRepeatFormatting, onClearFormatting, onRequestEditProtectedRange, onMoveChart, onResizeChart, onDeleteChart, onCutChart, onCopyChart, onMoveEmbed, onResizeEmbed, onDeleteEmbed, onRequestEditEmbed, onMoveSlicer, onResizeSlicer, onDeleteSlicer, onRequestEditSlicer, onFillRange, disableFillRightShortcut, keymap, onCalculateNow, onRequestGoTo, onMoveSelection, onInsertCutCells, onInsertTime, onInsertDate, onInsertDateTime, onInsertAutoSum, onUndo, onRedo, onPaste, onCopy, onCut, onSortColumn, onSortTable, onFilterTable, onFilterPivot, onResizeTable, onUndoTableAutoExpansion, onUndoCalculatedColumn, onOverwriteCalculatedColumn, onRequestEditTable, onRequestEditPivotTable, onRequestDeletePivotTable, onRequestCreatePivotChart, onRemoveTable, onCreateTable, onRequestCreateTable, onInsertTableColumn, onDeleteTableColumn, onInsertTableRow, onDeleteTableRow, onUpdateTable, onRequestResizeTable, onRequestInsertSlicer, onCreateBasicFilter, onRequestDefineNamedRange, onRequestFormatCells, onRequestConditionalFormat, onRequestDataValidation, onRequestInsertComment, onRequestInsertLink, onFreezeColumn, onFreezeRow, onUpdateNote, onProtectRange, onUnProtectRange, onSortRange, onRequestSearch, onRequestReplace, onRequestResize, getRowHeaderText = getDefaultRowHeader, getColumnHeaderText = getDefaultColumnHeader, getAdditionalCellSpacing, tokenizer: defaultTokenizer = defaultFormulaTokenizer, onChangeScale, onRemoveLink, onSelectLink, onSplitTextToColumns, onRemoveDuplicates, onGoalSeek, onSubtotal, onAdvancedFilter, onRequestExpand, cellExpandPredicate, StructuredResult = DefaultStructuredResult, getMentions, getStructuredProperties: getStructuredPropertiesProp, getFunctionParameterSuggestions, shouldFetchFunctionParameters, MentionTagComponent, MentionDropdownItemComponent, showSelectionResizeHandles = true, enableMagicFill, enableQuickEdit = true, MagicFillComponent, MagicFillContent, QuickEdit, PasteMenu, SuggestionAction, HiddenRowMarkers, HiddenColumnMarkers, enableResizerOverflow, className, defaultFontSizePoint = DEFAULT_FONT_SIZE_PT, defaultCellFormat, readonly, isComparing = false, getCellDiff, enableDataBoundaryNavigation, footerHeight, footerComponent, arrowComponents,
130
+ const { licenseKey, sheetId, sheetType, ChartSheetView: ChartSheetViewComponent = ChartSheetView, instanceId, activeCell = DEFAULT_ACTIVE_CELL, selections = DEFAULT_ARRAY, frozenColumnCount = 0, frozenRowCount = 0, rowCount = DEFAULT_ROW_COUNT, columnCount = DEFAULT_COLUMN_COUNT, autoFocus, basicFilter, tables, namedRanges, bandedRanges = DEFAULT_ARRAY, tableBorderColor = "#008000", filterIconColor = "#008000", conditionalFormats, showFilterIcon = true, showCalculatedColumnIcon = true, showHeaders = true, defaultColumnWidth = DEFAULT_COLUMN_WIDTH, defaultRowHeight = DEFAULT_ROW_HEIGHT, lineHeightMode = "fontMetrics", columnHeaderHeight = COLUMN_HEADER_HEIGHT, rowHeaderWidth = ROW_HEADER_WIDTH, gridLineColor = GRIDLINE_COLOR, cellBackgroundColor = DEFAULT_CELL_BACKGROUND_COLOR, cellColor = DEFAULT_CELL_COLOR, headerBorderColor = DEFAULT_HEADER_BORDER_COLOR, headerBackgroundColor = DEFAULT_HEADER_BG, headerColor = DEFAULT_HEADER_COLOR, headerActiveBackgroundColor = DEFAULT_HEADER_ACTIVE_BG, headerSelectedBackgroundColor = DEFAULT_HEADER_SELECTED_BG, headerSelectedColor = "white", headerTableBackgroundColor = DEFAULT_HEADER_TABLE_BG, headerTableActiveBackgroundColor = DEFAULT_HEADER_ACTIVE_TABLE_BG, headerTableSelectedBackgroundColor = DEFAULT_HEADER_SELECTED_TABLE_BG, frozenShadowColor = headerBorderColor, frozenShadowThickness = 1, selectionBackgroundColor = SELECTION_BG, selectionBorderColor = SELECTION_BORDER, selectionStrokeWidth, showActiveCellBorderInSelection, selectionDragBorderColor = SELECTION_BORDER, chartSelectedColor, chipBackgroundColor = CHIP_COLOR, merges = DEFAULT_ARRAY, borderStyles, protectedRanges, isWorkbookProtected: isWorkbookProtectedProp = false, getSheetProtection, pivotTables, charts, onUpdateChart, onChangeZOrder, embeds, slicers, rowMetadata = DEFAULT_ARRAY, columnMetadata = DEFAULT_ARRAY, scale = 1, zoomSpeed = 1, overscanCount = 3, enableEditOnEnterKey = true, shouldHandleKeyDown, enableTextOverflow = true, showGridLines: _showGridLines, showFormulas = false, protectFormulas = false, showFrozenSeparator = true, HeaderCell = DefaultHeaderCell, Cell = DefaultCell, SelectionTitleComponent = SelectionTitle, CellEditor = DefaultCellEditor, CellTooltip, ContextMenu = DefaultContextMenu, ContextMenuWrapper = DefaultContextMenuWrapper, FilterBox = DefaultFilterBox, HeaderMoveDragComponent = DefaultHeaderMoveDragComponent, SuggestionsDropdown, stickyEditor = true, scrollSnap = false, scrollThrottleTimeout, preventBrowserDefaultScroll, mouseMoveThrottleTimeout = 60, tooltipIntentInterval = 60, selectionPolicy, users, userId, renderCollaboratorCursor, functionDescriptions, showHeaderMenuButton = true, scrollbarSize = SCROLLBAR_SIZE, theme = defaultSpreadsheetTheme, showNotes = true, showComments = true, locale, formulaLocale: formulaLocaleProp, agentSuggestions, onReviewSuggestion, onShowFormulas, getDataRowCount, getDataRegion, getChartComponent, getEmbedComponent, getSlicerComponent, onChange, onChangeBatch, onExpandCollapse, onPivotDrillDown, onDelete, onChangeEditorValue, onFill, onRequestCalculate, onChangeActiveCell, onChangeActiveSheet, onChangeSelections, getSheetName, getSheetId, getCellData, getNote: getNoteProp, getTextFormatRuns, getDataValidation, getEffectiveFormat, getFormattedValue: getFormattedValueProp, getTooltipContent, errorResolutionComponent, getEffectiveValue: getEffectiveValueProp, getSparklineGroup, getUserEnteredExtendedValue, getEffectiveExtendedValue, getSheetRowCount, getSheetColumnCount, getCellPopoverContent, onScroll, onViewPortChange, windowConditionalFormats = false, engineConditionalFormatResults = false, onResize, onAutoResize, onHideColumn, onHideRow, onShowColumn, onShowRow, onGroupRows, onUngroupRows, onCollapseRowGroup, onExpandRowGroup, onGroupColumns, onUngroupColumns, onCollapseColumnGroup, onExpandColumnGroup, onSetOutlineDepth, onDeleteRow, onDeleteColumn, onInsertRow, onInsertColumn, onChangeAutoExpandTables, onChangeAutoCalculatedColumns, onInsertCellsShiftDown, onInsertCellsShiftRight, onDeleteCellsShiftLeft, onDeleteCellsShiftUp, onClearContents, onMoveColumns, onMoveRows, onSelectNextSheet, onSelectPreviousSheet, onCreateNewSheet, onKeyDown, onChangeFormatting, onRepeatFormatting, onClearFormatting, onRequestEditProtectedRange, onMoveChart, onResizeChart, onDeleteChart, onCutChart, onCopyChart, onMoveEmbed, onResizeEmbed, onDeleteEmbed, onRequestEditEmbed, onMoveSlicer, onResizeSlicer, onDeleteSlicer, onRequestEditSlicer, onFillRange, disableFillRightShortcut, keymap, onCalculateNow, onRequestGoTo, onMoveSelection, onInsertCutCells, onInsertTime, onInsertDate, onInsertDateTime, onInsertAutoSum, onUndo, onRedo, batchHistory, onPaste, onCopy, onCut, onSortColumn, onSortTable, onFilterTable, onFilterPivot, onResizeTable, onUndoTableAutoExpansion, onUndoCalculatedColumn, onOverwriteCalculatedColumn, onRequestEditTable, onRequestEditPivotTable, onRequestDeletePivotTable, onRequestCreatePivotChart, onRemoveTable, onCreateTable, onRequestCreateTable, onInsertTableColumn, onDeleteTableColumn, onInsertTableRow, onDeleteTableRow, onUpdateTable, onRequestResizeTable, onRequestInsertSlicer, onCreateBasicFilter, onRequestDefineNamedRange, onRequestFormatCells, onRequestConditionalFormat, onRequestDataValidation, onRequestInsertComment, onRequestInsertLink, onFreezeColumn, onFreezeRow, onUpdateNote, onProtectRange, onUnProtectRange, onSortRange, onRequestSearch, onRequestReplace, onRequestResize, getRowHeaderText = getDefaultRowHeader, getColumnHeaderText = getDefaultColumnHeader, getAdditionalCellSpacing, tokenizer: defaultTokenizer = defaultFormulaTokenizer, onChangeScale, onRemoveLink, onSelectLink, onSplitTextToColumns, onRemoveDuplicates, onGoalSeek, onSubtotal, onAdvancedFilter, onRequestExpand, cellExpandPredicate, StructuredResult = DefaultStructuredResult, getMentions, getStructuredProperties: getStructuredPropertiesProp, getFunctionParameterSuggestions, shouldFetchFunctionParameters, MentionTagComponent, MentionDropdownItemComponent, showSelectionResizeHandles = true, enableMagicFill, enableQuickEdit = true, MagicFillComponent, MagicFillContent, QuickEdit, PasteMenu, SuggestionAction, HiddenRowMarkers, HiddenColumnMarkers, enableResizerOverflow, className, defaultFontSizePoint = DEFAULT_FONT_SIZE_PT, defaultCellFormat, readonly, isComparing = false, getCellDiff, enableDataBoundaryNavigation, footerHeight, footerComponent, arrowComponents,
131
131
  // Host-driven filter props. `hostHiddenRowRanges`
132
132
  // supplies compact [start, end] hidden-row tuples; `getFilterValues` supplies a
133
133
  // column's distinct values. Both let a million-row filter render without scanning
@@ -716,6 +716,10 @@ function CanvasGridComponent(props, forwardedRef) {
716
716
  cellEditorInstance?.focus();
717
717
  }
718
718
  }, [activeEditor, cellEditorInstance]);
719
+ /**
720
+ * Container and total size of the grid, as the grid measures them
721
+ */
722
+ const getGridDimensions = useCallback(() => gridRef.current?.getDimensions(), []);
719
723
  /**
720
724
  * Canvas layers
721
725
  */
@@ -1348,19 +1352,19 @@ function CanvasGridComponent(props, forwardedRef) {
1348
1352
  sheetId,
1349
1353
  cellBackgroundColor,
1350
1354
  gridLineWidth,
1355
+ frozenRows,
1356
+ frozenColumns,
1351
1357
  getCanvasLayers,
1352
1358
  getRowHeaderCanvasLayer,
1353
1359
  getColumnHeaderCanvasLayer,
1354
- getCellOffsetFromCoords,
1355
1360
  getR1C1AddressFromSelection,
1356
1361
  getSheetName,
1357
1362
  getScrollPosition,
1358
- getViewPort,
1359
1363
  getRowOffset,
1360
1364
  getColumnOffset,
1361
1365
  getSheetDimensions,
1366
+ getGridDimensions,
1362
1367
  scrollTo,
1363
- scrollToCell,
1364
1368
  scale,
1365
1369
  onChangeScale,
1366
1370
  });
@@ -1893,6 +1897,7 @@ function CanvasGridComponent(props, forwardedRef) {
1893
1897
  // Measure with the same font the painter draws with (#1117).
1894
1898
  fontFamily: defaultFontFamily,
1895
1899
  fontSize: defaultFontSize,
1900
+ lineHeightMode,
1896
1901
  resizeStrategy: "full",
1897
1902
  });
1898
1903
  /**
@@ -2416,10 +2421,12 @@ function CanvasGridComponent(props, forwardedRef) {
2416
2421
  focus: focusSheet,
2417
2422
  scrollToCell,
2418
2423
  isMergedCell,
2419
- onFill,
2424
+ // A readonly grid gets no write handler: a fill-handle drag or a
2425
+ // selection drag-move then changes nothing, whatever started the gesture.
2426
+ onFill: readonly ? undefined : onFill,
2420
2427
  onFillHandleRelease: handleFillHandleRelease,
2421
- onFillShrink: handleFillShrink,
2422
- onMoveSelection,
2428
+ onFillShrink: readonly ? undefined : handleFillShrink,
2429
+ onMoveSelection: readonly ? undefined : onMoveSelection,
2423
2430
  onInsertCutCells,
2424
2431
  confirmMoveOverwrite,
2425
2432
  isHiddenColumn,
@@ -2438,6 +2445,7 @@ function CanvasGridComponent(props, forwardedRef) {
2438
2445
  activeCell,
2439
2446
  selections,
2440
2447
  sheetId,
2448
+ readonly,
2441
2449
  focusSheet,
2442
2450
  onPaste,
2443
2451
  onCopy,
@@ -2678,6 +2686,7 @@ function CanvasGridComponent(props, forwardedRef) {
2678
2686
  showValidationAlert,
2679
2687
  selections,
2680
2688
  onChangeBatch,
2689
+ batchHistory,
2681
2690
  formulaLocale,
2682
2691
  });
2683
2692
  /**
@@ -2988,6 +2997,7 @@ function CanvasGridComponent(props, forwardedRef) {
2988
2997
  const { onMouseDown: onMouseDownEditable, onDoubleClick: onDoubleClickEditable, editorComponent, isEditInProgress, makeEditable, editCell, setEditorValue, hideEditor, getNextFocusableCell, submitEditor, cancelEditor, commit, } = useEditable({
2989
2998
  sheetId,
2990
2999
  enableEditOnEnterKey,
3000
+ shouldHandleKeyDown,
2991
3001
  canEdit: canEditCell,
2992
3002
  sticky: stickyEditor,
2993
3003
  getScrollPosition,
@@ -3081,14 +3091,15 @@ function CanvasGridComponent(props, forwardedRef) {
3081
3091
  selectionTopBound,
3082
3092
  showHeaderMenuButton,
3083
3093
  scale,
3084
- onResize,
3094
+ // Column widths and row heights are sheet writes too
3095
+ onResize: readonly ? undefined : onResize,
3085
3096
  focusSheet,
3086
3097
  isRowHeader,
3087
3098
  isColumnHeader,
3088
3099
  isHiddenColumn,
3089
3100
  containerWidth: width - scrollbarSize,
3090
3101
  containerHeight: height - scrollbarSize,
3091
- onAutoFit: handleAutoFit,
3102
+ onAutoFit: readonly ? undefined : handleAutoFit,
3092
3103
  backgroundColor: selectionBorderColor,
3093
3104
  sheetId,
3094
3105
  selectedRowHeadersIds,
@@ -3596,6 +3607,7 @@ function CanvasGridComponent(props, forwardedRef) {
3596
3607
  onCheckboxClick: handleCheckboxClick,
3597
3608
  onExpandCollapse: handleExpandCollapse,
3598
3609
  defaultFontSizePoint: defaultFontSize,
3610
+ lineHeightMode,
3599
3611
  Cell,
3600
3612
  HeaderCell,
3601
3613
  theme,
@@ -3669,8 +3681,10 @@ function CanvasGridComponent(props, forwardedRef) {
3669
3681
  * Hide fill handle
3670
3682
  * 1. When user is in edit mode
3671
3683
  * 2. When user is in formula mode and user has made selections
3684
+ * 3. When the grid is readonly — a fill is a write
3672
3685
  */
3673
- const showFillHandle = !isSelectionInProgress &&
3686
+ const showFillHandle = !readonly &&
3687
+ !isSelectionInProgress &&
3674
3688
  !isEditInProgress &&
3675
3689
  !isResizingTable &&
3676
3690
  !(formulaMode && formulaSelections.length);
@@ -3706,6 +3720,8 @@ function CanvasGridComponent(props, forwardedRef) {
3706
3720
  selectionCount: (formulaMode ? formulaSelections : selections).length,
3707
3721
  selectionBackgroundColor,
3708
3722
  selectionBorderColor,
3723
+ selectionStrokeWidth,
3724
+ showActiveCellBorderInSelection,
3709
3725
  getSheetName,
3710
3726
  onRequestEditTable,
3711
3727
  onRequestEditPivotTable,
@@ -4124,12 +4140,14 @@ function CanvasGridComponent(props, forwardedRef) {
4124
4140
  popoverComponent,
4125
4141
  popoverRange,
4126
4142
  cellExpandComponent,
4143
+ arrowComponents,
4127
4144
  });
4128
4145
  /**
4129
4146
  * Only enable selection drag if user is not editing and not
4130
- * in formula mode
4147
+ * in formula mode. A readonly grid has nothing to move, so the
4148
+ * gesture does not start at all (no move cursor, no selection jump).
4131
4149
  */
4132
- const enableSelectionDrag = !isSelectionInProgress && !isEditInProgress && !formulaMode;
4150
+ const enableSelectionDrag = !readonly && !isSelectionInProgress && !isEditInProgress && !formulaMode;
4133
4151
  // A chartsheet IS its chart: no grid, headers, editor or cell menus — only the chart and its
4134
4152
  // context menu (Excel).
4135
4153
  if (sheetType === "chartsheet") {
@@ -1,6 +1,6 @@
1
1
  import type { CalculatorFunction } from "@rowsncolumns/common-types";
2
2
  import type { FormulaResult } from "@rowsncolumns/fast-formula-parser";
3
- import type { Align, AreaStyle, CellInterface, CellPosition, Direction, GridProps, GridRange, GridRef, OptionalCellInterface, ScrollCoords, SelectionArea, Style, ViewPortProps } from "@rowsncolumns/grid";
3
+ import type { Align, AreaStyle, CellInterface, CellPosition, Direction, GridProps, GridRange, GridRef, LineHeightMode, OptionalCellInterface, ScrollCoords, SelectionArea, Style, ViewPortProps } from "@rowsncolumns/grid";
4
4
  import type { Mention, MentionTagComponentProps, OptionItem, ProseMirrorEditorProps, TextFormatRun } from "@rowsncolumns/ui";
5
5
  import type { FormulaLocale, FormulaLocaleInput } from "@rowsncolumns/utils";
6
6
  import type { CellDiff } from "@rowsncolumns/version-comparison";
@@ -231,6 +231,14 @@ export type CanvasGridProps<T extends CellData = CellData<any, any>> = {
231
231
  * Default row height
232
232
  */
233
233
  defaultRowHeight?: number;
234
+ /**
235
+ * Where the height of one line of cell text comes from, for both the
236
+ * painter and row auto-fit. `fontMetrics` (default) measures each font's
237
+ * bounding box (`fontBoundingBoxAscent + fontBoundingBoxDescent`) once
238
+ * and stacks lines with Excel's 2px leading, so wrapped rows fit like
239
+ * Excel's; `fixed` keeps the pre-#1141 `fontSize * 1.2` line box.
240
+ */
241
+ lineHeightMode?: LineHeightMode;
234
242
  /**
235
243
  * Default column width
236
244
  */
@@ -319,6 +327,17 @@ export type CanvasGridProps<T extends CellData = CellData<any, any>> = {
319
327
  * Border color of selections
320
328
  */
321
329
  selectionBorderColor?: string;
330
+ /**
331
+ * Border width of a range selection outside formula mode. Default `1`;
332
+ * Excel draws `2`. Formula-mode references keep theirs.
333
+ */
334
+ selectionStrokeWidth?: number;
335
+ /**
336
+ * Whether the active cell draws its own border while a range is selected.
337
+ * Default `true`; Excel draws none (the active cell is the one unshaded
338
+ * cell of the range). A lone active cell keeps its border either way.
339
+ */
340
+ showActiveCellBorderInSelection?: boolean;
322
341
  /**
323
342
  * Background selection color
324
343
  */
@@ -998,6 +1017,17 @@ export type CanvasGridProps<T extends CellData = CellData<any, any>> = {
998
1017
  * Keydown handler
999
1018
  */
1000
1019
  onKeyDown?(e: React.KeyboardEvent<HTMLDivElement>): void;
1020
+ /**
1021
+ * Called first for every key press the grid would act on, while navigating
1022
+ * and while a cell is being edited. Return `false` to keep the key from all
1023
+ * of the grid's own key handling (selection, `onKeyDown`, the shortcut
1024
+ * keymap, opening and committing the editor); the event is left untouched
1025
+ * for the host. A host that owns its keymap uses it to decide, key by key,
1026
+ * which bindings the grid keeps.
1027
+ */
1028
+ shouldHandleKeyDown?(e: React.KeyboardEvent<HTMLDivElement>, context: {
1029
+ isEditing: boolean;
1030
+ }): boolean;
1001
1031
  /**
1002
1032
  * Invoked from `Ctrl + ~` keyboard shortcut
1003
1033
  * @param displayValue
@@ -1277,6 +1307,15 @@ export type CanvasGridProps<T extends CellData = CellData<any, any>> = {
1277
1307
  * User tries to redo an action
1278
1308
  */
1279
1309
  onRedo?(): void;
1310
+ /**
1311
+ * Run `action` with every write it issues recorded as ONE undo entry — the `batchHistory` of
1312
+ * `useSpreadsheetState` / `useSpreadsheetEngine`, so a host spreading its state into the grid
1313
+ * passes it for free. The grid uses it for gestures that are one step in Excel but several writes
1314
+ * here: Ctrl+Enter commits the active cell through `onChange` and spreads the entry into the rest
1315
+ * of the selection through `onChangeBatch`, one call per rectangle. Without it each write is its
1316
+ * own undo entry.
1317
+ */
1318
+ batchHistory?<R>(action: () => R): R;
1280
1319
  /**
1281
1320
  * Callback when user paste a set of cells
1282
1321
  * @param e Browser event