@rowsncolumns/spreadsheet 10.2.68

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 (1434) hide show
  1. package/LICENSE.md +100 -0
  2. package/Readme.md +9 -0
  3. package/dist/cjs/api/animate.d.ts +36 -0
  4. package/dist/cjs/api/animate.d.ts.map +1 -0
  5. package/dist/cjs/api/animate.js +123 -0
  6. package/dist/cjs/api/banded-ranges.d.ts +16 -0
  7. package/dist/cjs/api/banded-ranges.d.ts.map +1 -0
  8. package/dist/cjs/api/banded-ranges.js +134 -0
  9. package/dist/cjs/api/cf-engine.d.ts +36 -0
  10. package/dist/cjs/api/cf-engine.d.ts.map +1 -0
  11. package/dist/cjs/api/cf-engine.js +73 -0
  12. package/dist/cjs/api/cf-overlays.d.ts +7 -0
  13. package/dist/cjs/api/cf-overlays.d.ts.map +1 -0
  14. package/dist/cjs/api/cf-overlays.js +136 -0
  15. package/dist/cjs/api/cf-window.d.ts +45 -0
  16. package/dist/cjs/api/cf-window.d.ts.map +1 -0
  17. package/dist/cjs/api/cf-window.js +143 -0
  18. package/dist/cjs/api/colors.d.ts +8 -0
  19. package/dist/cjs/api/colors.d.ts.map +1 -0
  20. package/dist/cjs/api/colors.js +31 -0
  21. package/dist/cjs/api/copy-paste.d.ts +10 -0
  22. package/dist/cjs/api/copy-paste.d.ts.map +1 -0
  23. package/dist/cjs/api/copy-paste.js +28 -0
  24. package/dist/cjs/api/fill-patterns.d.ts +5 -0
  25. package/dist/cjs/api/fill-patterns.d.ts.map +1 -0
  26. package/dist/cjs/api/fill-patterns.js +202 -0
  27. package/dist/cjs/api/font-loader.d.ts +8 -0
  28. package/dist/cjs/api/font-loader.d.ts.map +1 -0
  29. package/dist/cjs/api/font-loader.js +162 -0
  30. package/dist/cjs/api/heatmap.d.ts +4 -0
  31. package/dist/cjs/api/heatmap.d.ts.map +1 -0
  32. package/dist/cjs/api/heatmap.js +177 -0
  33. package/dist/cjs/api/scheduler.d.ts +8 -0
  34. package/dist/cjs/api/scheduler.d.ts.map +1 -0
  35. package/dist/cjs/api/scheduler.js +19 -0
  36. package/dist/cjs/api/scroller.d.ts +134 -0
  37. package/dist/cjs/api/scroller.d.ts.map +1 -0
  38. package/dist/cjs/api/scroller.js +702 -0
  39. package/dist/cjs/api/selections.d.ts +111 -0
  40. package/dist/cjs/api/selections.d.ts.map +1 -0
  41. package/dist/cjs/api/selections.js +407 -0
  42. package/dist/cjs/api/spreadsheet-api.d.ts +271 -0
  43. package/dist/cjs/api/spreadsheet-api.d.ts.map +1 -0
  44. package/dist/cjs/api/spreadsheet-api.js +811 -0
  45. package/dist/cjs/api/table.d.ts +11 -0
  46. package/dist/cjs/api/table.d.ts.map +1 -0
  47. package/dist/cjs/api/table.js +17 -0
  48. package/dist/cjs/api/validation.d.ts +98 -0
  49. package/dist/cjs/api/validation.d.ts.map +1 -0
  50. package/dist/cjs/api/validation.js +506 -0
  51. package/dist/cjs/atoms/active-editor.atom.d.ts +8 -0
  52. package/dist/cjs/atoms/active-editor.atom.d.ts.map +1 -0
  53. package/dist/cjs/atoms/active-editor.atom.js +12 -0
  54. package/dist/cjs/atoms/cell-input-context.atom.d.ts +15 -0
  55. package/dist/cjs/atoms/cell-input-context.atom.d.ts.map +1 -0
  56. package/dist/cjs/atoms/cell-input-context.atom.js +24 -0
  57. package/dist/cjs/atoms/editing-cell.atom.d.ts +7 -0
  58. package/dist/cjs/atoms/editing-cell.atom.d.ts.map +1 -0
  59. package/dist/cjs/atoms/editing-cell.atom.js +9 -0
  60. package/dist/cjs/atoms/formula-bar-editor-value.atom.d.ts +19 -0
  61. package/dist/cjs/atoms/formula-bar-editor-value.atom.d.ts.map +1 -0
  62. package/dist/cjs/atoms/formula-bar-editor-value.atom.js +44 -0
  63. package/dist/cjs/atoms/formula-mode.atom.d.ts +7 -0
  64. package/dist/cjs/atoms/formula-mode.atom.d.ts.map +1 -0
  65. package/dist/cjs/atoms/formula-mode.atom.js +11 -0
  66. package/dist/cjs/atoms/formula-selection-state.atom.d.ts +16 -0
  67. package/dist/cjs/atoms/formula-selection-state.atom.d.ts.map +1 -0
  68. package/dist/cjs/atoms/formula-selection-state.atom.js +32 -0
  69. package/dist/cjs/atoms/formula-selections.atom.d.ts +8 -0
  70. package/dist/cjs/atoms/formula-selections.atom.d.ts.map +1 -0
  71. package/dist/cjs/atoms/formula-selections.atom.js +9 -0
  72. package/dist/cjs/atoms/index.d.ts +18 -0
  73. package/dist/cjs/atoms/index.d.ts.map +1 -0
  74. package/dist/cjs/atoms/index.js +22 -0
  75. package/dist/cjs/atoms/loading-indicator.atom.d.ts +12 -0
  76. package/dist/cjs/atoms/loading-indicator.atom.d.ts.map +1 -0
  77. package/dist/cjs/atoms/loading-indicator.atom.js +22 -0
  78. package/dist/cjs/atoms/magic-fill-state.atom.d.ts +5 -0
  79. package/dist/cjs/atoms/magic-fill-state.atom.d.ts.map +1 -0
  80. package/dist/cjs/atoms/magic-fill-state.atom.js +12 -0
  81. package/dist/cjs/atoms/paste-menu.atom.d.ts +6 -0
  82. package/dist/cjs/atoms/paste-menu.atom.d.ts.map +1 -0
  83. package/dist/cjs/atoms/paste-menu.atom.js +9 -0
  84. package/dist/cjs/atoms/persistent-tooltip.atom.d.ts +11 -0
  85. package/dist/cjs/atoms/persistent-tooltip.atom.d.ts.map +1 -0
  86. package/dist/cjs/atoms/persistent-tooltip.atom.js +34 -0
  87. package/dist/cjs/atoms/popover.atom.d.ts +7 -0
  88. package/dist/cjs/atoms/popover.atom.d.ts.map +1 -0
  89. package/dist/cjs/atoms/popover.atom.js +9 -0
  90. package/dist/cjs/atoms/range-selector.atom.d.ts +6 -0
  91. package/dist/cjs/atoms/range-selector.atom.d.ts.map +1 -0
  92. package/dist/cjs/atoms/range-selector.atom.js +11 -0
  93. package/dist/cjs/atoms/selected-chart-embed.atom.d.ts +6 -0
  94. package/dist/cjs/atoms/selected-chart-embed.atom.d.ts.map +1 -0
  95. package/dist/cjs/atoms/selected-chart-embed.atom.js +9 -0
  96. package/dist/cjs/atoms/sheet-context.atom.d.ts +66 -0
  97. package/dist/cjs/atoms/sheet-context.atom.d.ts.map +1 -0
  98. package/dist/cjs/atoms/sheet-context.atom.js +142 -0
  99. package/dist/cjs/atoms/sheet-status-display.atom.d.ts +15 -0
  100. package/dist/cjs/atoms/sheet-status-display.atom.d.ts.map +1 -0
  101. package/dist/cjs/atoms/sheet-status-display.atom.js +18 -0
  102. package/dist/cjs/atoms/show-formula-help.atom.d.ts +8 -0
  103. package/dist/cjs/atoms/show-formula-help.atom.d.ts.map +1 -0
  104. package/dist/cjs/atoms/show-formula-help.atom.js +20 -0
  105. package/dist/cjs/atoms/sort-dialog.atom.d.ts +22 -0
  106. package/dist/cjs/atoms/sort-dialog.atom.d.ts.map +1 -0
  107. package/dist/cjs/atoms/sort-dialog.atom.js +14 -0
  108. package/dist/cjs/atoms/spreadsheet-api.atom.d.ts +5 -0
  109. package/dist/cjs/atoms/spreadsheet-api.atom.d.ts.map +1 -0
  110. package/dist/cjs/atoms/spreadsheet-api.atom.js +11 -0
  111. package/dist/cjs/atoms/validation-alert.atom.d.ts +27 -0
  112. package/dist/cjs/atoms/validation-alert.atom.d.ts.map +1 -0
  113. package/dist/cjs/atoms/validation-alert.atom.js +23 -0
  114. package/dist/cjs/components/bottom-bar/index.d.ts +7 -0
  115. package/dist/cjs/components/bottom-bar/index.d.ts.map +1 -0
  116. package/dist/cjs/components/bottom-bar/index.js +11 -0
  117. package/dist/cjs/components/canvas-grid/helpers.d.ts +15 -0
  118. package/dist/cjs/components/canvas-grid/helpers.d.ts.map +1 -0
  119. package/dist/cjs/components/canvas-grid/helpers.js +53 -0
  120. package/dist/cjs/components/canvas-grid/index.d.ts +7 -0
  121. package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -0
  122. package/dist/cjs/components/canvas-grid/index.js +3413 -0
  123. package/dist/cjs/components/canvas-grid/typings.d.ts +2027 -0
  124. package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -0
  125. package/dist/cjs/components/canvas-grid/typings.js +9 -0
  126. package/dist/cjs/components/cell/alignment.d.ts +70 -0
  127. package/dist/cjs/components/cell/alignment.d.ts.map +1 -0
  128. package/dist/cjs/components/cell/alignment.js +137 -0
  129. package/dist/cjs/components/cell/cell-background.d.ts +15 -0
  130. package/dist/cjs/components/cell/cell-background.d.ts.map +1 -0
  131. package/dist/cjs/components/cell/cell-background.js +171 -0
  132. package/dist/cjs/components/cell/cell-text-runs.d.ts +98 -0
  133. package/dist/cjs/components/cell/cell-text-runs.d.ts.map +1 -0
  134. package/dist/cjs/components/cell/cell-text-runs.js +470 -0
  135. package/dist/cjs/components/cell/helpers.d.ts +3 -0
  136. package/dist/cjs/components/cell/helpers.d.ts.map +1 -0
  137. package/dist/cjs/components/cell/helpers.js +20 -0
  138. package/dist/cjs/components/cell/index.d.ts +4 -0
  139. package/dist/cjs/components/cell/index.d.ts.map +1 -0
  140. package/dist/cjs/components/cell/index.js +272 -0
  141. package/dist/cjs/components/cell/rich-text.d.ts +82 -0
  142. package/dist/cjs/components/cell/rich-text.d.ts.map +1 -0
  143. package/dist/cjs/components/cell/rich-text.js +211 -0
  144. package/dist/cjs/components/cell/typings.d.ts +190 -0
  145. package/dist/cjs/components/cell/typings.d.ts.map +1 -0
  146. package/dist/cjs/components/cell/typings.js +2 -0
  147. package/dist/cjs/components/cell-arrow/index.d.ts +14 -0
  148. package/dist/cjs/components/cell-arrow/index.d.ts.map +1 -0
  149. package/dist/cjs/components/cell-arrow/index.js +28 -0
  150. package/dist/cjs/components/cell-calculated/index.d.ts +17 -0
  151. package/dist/cjs/components/cell-calculated/index.d.ts.map +1 -0
  152. package/dist/cjs/components/cell-calculated/index.js +20 -0
  153. package/dist/cjs/components/cell-checkbox/index.d.ts +14 -0
  154. package/dist/cjs/components/cell-checkbox/index.d.ts.map +1 -0
  155. package/dist/cjs/components/cell-checkbox/index.js +29 -0
  156. package/dist/cjs/components/cell-diff/index.d.ts +42 -0
  157. package/dist/cjs/components/cell-diff/index.d.ts.map +1 -0
  158. package/dist/cjs/components/cell-diff/index.js +94 -0
  159. package/dist/cjs/components/cell-editor/calendar-popup.d.ts +9 -0
  160. package/dist/cjs/components/cell-editor/calendar-popup.d.ts.map +1 -0
  161. package/dist/cjs/components/cell-editor/calendar-popup.js +25 -0
  162. package/dist/cjs/components/cell-editor/formula-result-preview.d.ts +9 -0
  163. package/dist/cjs/components/cell-editor/formula-result-preview.d.ts.map +1 -0
  164. package/dist/cjs/components/cell-editor/formula-result-preview.js +26 -0
  165. package/dist/cjs/components/cell-editor/helpers.d.ts +11 -0
  166. package/dist/cjs/components/cell-editor/helpers.d.ts.map +1 -0
  167. package/dist/cjs/components/cell-editor/helpers.js +41 -0
  168. package/dist/cjs/components/cell-editor/helpers.spec.d.ts +2 -0
  169. package/dist/cjs/components/cell-editor/helpers.spec.d.ts.map +1 -0
  170. package/dist/cjs/components/cell-editor/helpers.spec.js +18 -0
  171. package/dist/cjs/components/cell-editor/index.d.ts +146 -0
  172. package/dist/cjs/components/cell-editor/index.d.ts.map +1 -0
  173. package/dist/cjs/components/cell-editor/index.js +268 -0
  174. package/dist/cjs/components/cell-editor/style.d.ts +9 -0
  175. package/dist/cjs/components/cell-editor/style.d.ts.map +1 -0
  176. package/dist/cjs/components/cell-editor/style.js +31 -0
  177. package/dist/cjs/components/cell-error/index.d.ts +14 -0
  178. package/dist/cjs/components/cell-error/index.d.ts.map +1 -0
  179. package/dist/cjs/components/cell-error/index.js +24 -0
  180. package/dist/cjs/components/cell-expand/index.d.ts +15 -0
  181. package/dist/cjs/components/cell-expand/index.d.ts.map +1 -0
  182. package/dist/cjs/components/cell-expand/index.js +31 -0
  183. package/dist/cjs/components/cell-filter/index.d.ts +21 -0
  184. package/dist/cjs/components/cell-filter/index.d.ts.map +1 -0
  185. package/dist/cjs/components/cell-filter/index.js +40 -0
  186. package/dist/cjs/components/cell-group/index.d.ts +17 -0
  187. package/dist/cjs/components/cell-group/index.d.ts.map +1 -0
  188. package/dist/cjs/components/cell-group/index.js +32 -0
  189. package/dist/cjs/components/cell-input/cell-input.d.ts +123 -0
  190. package/dist/cjs/components/cell-input/cell-input.d.ts.map +1 -0
  191. package/dist/cjs/components/cell-input/cell-input.js +68 -0
  192. package/dist/cjs/components/cell-input/formula-bar-cell-input.d.ts +21 -0
  193. package/dist/cjs/components/cell-input/formula-bar-cell-input.d.ts.map +1 -0
  194. package/dist/cjs/components/cell-input/formula-bar-cell-input.js +63 -0
  195. package/dist/cjs/components/cell-input/index.d.ts +3 -0
  196. package/dist/cjs/components/cell-input/index.d.ts.map +1 -0
  197. package/dist/cjs/components/cell-input/index.js +5 -0
  198. package/dist/cjs/components/cell-input/style.d.ts +6 -0
  199. package/dist/cjs/components/cell-input/style.d.ts.map +1 -0
  200. package/dist/cjs/components/cell-input/style.js +14 -0
  201. package/dist/cjs/components/cell-overlay/index.d.ts +25 -0
  202. package/dist/cjs/components/cell-overlay/index.d.ts.map +1 -0
  203. package/dist/cjs/components/cell-overlay/index.js +161 -0
  204. package/dist/cjs/components/cell-structured/index.d.ts +8 -0
  205. package/dist/cjs/components/cell-structured/index.d.ts.map +1 -0
  206. package/dist/cjs/components/cell-structured/index.js +21 -0
  207. package/dist/cjs/components/cell-structured/sparkline-math.d.ts +54 -0
  208. package/dist/cjs/components/cell-structured/sparkline-math.d.ts.map +1 -0
  209. package/dist/cjs/components/cell-structured/sparkline-math.js +111 -0
  210. package/dist/cjs/components/cell-structured/sparkline.d.ts +6 -0
  211. package/dist/cjs/components/cell-structured/sparkline.d.ts.map +1 -0
  212. package/dist/cjs/components/cell-structured/sparkline.js +256 -0
  213. package/dist/cjs/components/cell-structured/types.d.ts +23 -0
  214. package/dist/cjs/components/cell-structured/types.d.ts.map +1 -0
  215. package/dist/cjs/components/cell-structured/types.js +2 -0
  216. package/dist/cjs/components/cell-tooltip/index.d.ts +28 -0
  217. package/dist/cjs/components/cell-tooltip/index.d.ts.map +1 -0
  218. package/dist/cjs/components/cell-tooltip/index.js +55 -0
  219. package/dist/cjs/components/cell-tooltip/note-editor.d.ts +12 -0
  220. package/dist/cjs/components/cell-tooltip/note-editor.d.ts.map +1 -0
  221. package/dist/cjs/components/cell-tooltip/note-editor.js +26 -0
  222. package/dist/cjs/components/cell-tooltip/style.d.ts +3 -0
  223. package/dist/cjs/components/cell-tooltip/style.d.ts.map +1 -0
  224. package/dist/cjs/components/cell-tooltip/style.js +11 -0
  225. package/dist/cjs/components/context-menu/index.d.ts +80 -0
  226. package/dist/cjs/components/context-menu/index.d.ts.map +1 -0
  227. package/dist/cjs/components/context-menu/index.js +666 -0
  228. package/dist/cjs/components/context-menu/menu.d.ts +10 -0
  229. package/dist/cjs/components/context-menu/menu.d.ts.map +1 -0
  230. package/dist/cjs/components/context-menu/menu.js +15 -0
  231. package/dist/cjs/components/context-menu/style.d.ts +6 -0
  232. package/dist/cjs/components/context-menu/style.d.ts.map +1 -0
  233. package/dist/cjs/components/context-menu/style.js +16 -0
  234. package/dist/cjs/components/embeds/chart-component.d.ts +16 -0
  235. package/dist/cjs/components/embeds/chart-component.d.ts.map +1 -0
  236. package/dist/cjs/components/embeds/chart-component.js +12 -0
  237. package/dist/cjs/components/embeds/embed-component.d.ts +17 -0
  238. package/dist/cjs/components/embeds/embed-component.d.ts.map +1 -0
  239. package/dist/cjs/components/embeds/embed-component.js +128 -0
  240. package/dist/cjs/components/embeds/embed-draggable.d.ts +43 -0
  241. package/dist/cjs/components/embeds/embed-draggable.d.ts.map +1 -0
  242. package/dist/cjs/components/embeds/embed-draggable.js +117 -0
  243. package/dist/cjs/components/embeds/index.d.ts +5 -0
  244. package/dist/cjs/components/embeds/index.d.ts.map +1 -0
  245. package/dist/cjs/components/embeds/index.js +7 -0
  246. package/dist/cjs/components/embeds/shape-geometry.d.ts +10 -0
  247. package/dist/cjs/components/embeds/shape-geometry.d.ts.map +1 -0
  248. package/dist/cjs/components/embeds/shape-geometry.js +265 -0
  249. package/dist/cjs/components/embeds/shape-svg.d.ts +56 -0
  250. package/dist/cjs/components/embeds/shape-svg.d.ts.map +1 -0
  251. package/dist/cjs/components/embeds/shape-svg.js +165 -0
  252. package/dist/cjs/components/embeds/slicer-component.d.ts +27 -0
  253. package/dist/cjs/components/embeds/slicer-component.d.ts.map +1 -0
  254. package/dist/cjs/components/embeds/slicer-component.js +283 -0
  255. package/dist/cjs/components/fill-handle/index.d.ts +7 -0
  256. package/dist/cjs/components/fill-handle/index.d.ts.map +1 -0
  257. package/dist/cjs/components/fill-handle/index.js +19 -0
  258. package/dist/cjs/components/filter-box/filter-by-color.d.ts +28 -0
  259. package/dist/cjs/components/filter-box/filter-by-color.d.ts.map +1 -0
  260. package/dist/cjs/components/filter-box/filter-by-color.js +104 -0
  261. package/dist/cjs/components/filter-box/filter-by-condition.d.ts +13 -0
  262. package/dist/cjs/components/filter-box/filter-by-condition.d.ts.map +1 -0
  263. package/dist/cjs/components/filter-box/filter-by-condition.js +47 -0
  264. package/dist/cjs/components/filter-box/filter-by-value.d.ts +9 -0
  265. package/dist/cjs/components/filter-box/filter-by-value.d.ts.map +1 -0
  266. package/dist/cjs/components/filter-box/filter-by-value.js +86 -0
  267. package/dist/cjs/components/filter-box/index.d.ts +50 -0
  268. package/dist/cjs/components/filter-box/index.d.ts.map +1 -0
  269. package/dist/cjs/components/filter-box/index.js +357 -0
  270. package/dist/cjs/components/floating-cell-editor/index.d.ts +83 -0
  271. package/dist/cjs/components/floating-cell-editor/index.d.ts.map +1 -0
  272. package/dist/cjs/components/floating-cell-editor/index.js +180 -0
  273. package/dist/cjs/components/formula-bar/index.d.ts +11 -0
  274. package/dist/cjs/components/formula-bar/index.d.ts.map +1 -0
  275. package/dist/cjs/components/formula-bar/index.js +19 -0
  276. package/dist/cjs/components/formula-bar/style.d.ts +4 -0
  277. package/dist/cjs/components/formula-bar/style.d.ts.map +1 -0
  278. package/dist/cjs/components/formula-bar/style.js +16 -0
  279. package/dist/cjs/components/formula-input/index.d.ts +17 -0
  280. package/dist/cjs/components/formula-input/index.d.ts.map +1 -0
  281. package/dist/cjs/components/formula-input/index.js +92 -0
  282. package/dist/cjs/components/grid-footer/index.d.ts +14 -0
  283. package/dist/cjs/components/grid-footer/index.d.ts.map +1 -0
  284. package/dist/cjs/components/grid-footer/index.js +40 -0
  285. package/dist/cjs/components/header-cell/index.d.ts +10 -0
  286. package/dist/cjs/components/header-cell/index.d.ts.map +1 -0
  287. package/dist/cjs/components/header-cell/index.js +25 -0
  288. package/dist/cjs/components/header-menu/index.d.ts +13 -0
  289. package/dist/cjs/components/header-menu/index.d.ts.map +1 -0
  290. package/dist/cjs/components/header-menu/index.js +19 -0
  291. package/dist/cjs/components/header-move/index.d.ts +23 -0
  292. package/dist/cjs/components/header-move/index.d.ts.map +1 -0
  293. package/dist/cjs/components/header-move/index.js +46 -0
  294. package/dist/cjs/components/header-resizer/index.d.ts +19 -0
  295. package/dist/cjs/components/header-resizer/index.d.ts.map +1 -0
  296. package/dist/cjs/components/header-resizer/index.js +38 -0
  297. package/dist/cjs/components/hidden-markers/index.d.ts +15 -0
  298. package/dist/cjs/components/hidden-markers/index.d.ts.map +1 -0
  299. package/dist/cjs/components/hidden-markers/index.js +47 -0
  300. package/dist/cjs/components/hidden-markers/style.d.ts +5 -0
  301. package/dist/cjs/components/hidden-markers/style.d.ts.map +1 -0
  302. package/dist/cjs/components/hidden-markers/style.js +11 -0
  303. package/dist/cjs/components/insert-function-dialog/index.d.ts +32 -0
  304. package/dist/cjs/components/insert-function-dialog/index.d.ts.map +1 -0
  305. package/dist/cjs/components/insert-function-dialog/index.js +84 -0
  306. package/dist/cjs/components/loading-indicator/index.d.ts +7 -0
  307. package/dist/cjs/components/loading-indicator/index.d.ts.map +1 -0
  308. package/dist/cjs/components/loading-indicator/index.js +14 -0
  309. package/dist/cjs/components/outline-gutter/index.d.ts +44 -0
  310. package/dist/cjs/components/outline-gutter/index.d.ts.map +1 -0
  311. package/dist/cjs/components/outline-gutter/index.js +450 -0
  312. package/dist/cjs/components/pivot-placeholder/index.d.ts +12 -0
  313. package/dist/cjs/components/pivot-placeholder/index.d.ts.map +1 -0
  314. package/dist/cjs/components/pivot-placeholder/index.js +24 -0
  315. package/dist/cjs/components/print-preview/cell-styles.d.ts +18 -0
  316. package/dist/cjs/components/print-preview/cell-styles.d.ts.map +1 -0
  317. package/dist/cjs/components/print-preview/cell-styles.js +181 -0
  318. package/dist/cjs/components/print-preview/index.d.ts +5 -0
  319. package/dist/cjs/components/print-preview/index.d.ts.map +1 -0
  320. package/dist/cjs/components/print-preview/index.js +9 -0
  321. package/dist/cjs/components/print-preview/page-block.d.ts +62 -0
  322. package/dist/cjs/components/print-preview/page-block.d.ts.map +1 -0
  323. package/dist/cjs/components/print-preview/page-block.js +322 -0
  324. package/dist/cjs/components/print-preview/print-preview-dialog.d.ts +49 -0
  325. package/dist/cjs/components/print-preview/print-preview-dialog.d.ts.map +1 -0
  326. package/dist/cjs/components/print-preview/print-preview-dialog.js +374 -0
  327. package/dist/cjs/components/print-preview/run-print.d.ts +11 -0
  328. package/dist/cjs/components/print-preview/run-print.d.ts.map +1 -0
  329. package/dist/cjs/components/print-preview/run-print.js +72 -0
  330. package/dist/cjs/components/print-preview/settings.d.ts +130 -0
  331. package/dist/cjs/components/print-preview/settings.d.ts.map +1 -0
  332. package/dist/cjs/components/print-preview/settings.js +236 -0
  333. package/dist/cjs/components/print-preview/use-page-layout.d.ts +60 -0
  334. package/dist/cjs/components/print-preview/use-page-layout.d.ts.map +1 -0
  335. package/dist/cjs/components/print-preview/use-page-layout.js +161 -0
  336. package/dist/cjs/components/range-selector/index.d.ts +25 -0
  337. package/dist/cjs/components/range-selector/index.d.ts.map +1 -0
  338. package/dist/cjs/components/range-selector/index.js +250 -0
  339. package/dist/cjs/components/resizer/index.d.ts +9 -0
  340. package/dist/cjs/components/resizer/index.d.ts.map +1 -0
  341. package/dist/cjs/components/resizer/index.js +46 -0
  342. package/dist/cjs/components/selection/avatar.d.ts +14 -0
  343. package/dist/cjs/components/selection/avatar.d.ts.map +1 -0
  344. package/dist/cjs/components/selection/avatar.js +17 -0
  345. package/dist/cjs/components/selection/index.d.ts +9 -0
  346. package/dist/cjs/components/selection/index.d.ts.map +1 -0
  347. package/dist/cjs/components/selection/index.js +179 -0
  348. package/dist/cjs/components/selection/magic-fill.d.ts +26 -0
  349. package/dist/cjs/components/selection/magic-fill.d.ts.map +1 -0
  350. package/dist/cjs/components/selection/magic-fill.js +60 -0
  351. package/dist/cjs/components/selection/paste-menu.d.ts +10 -0
  352. package/dist/cjs/components/selection/paste-menu.d.ts.map +1 -0
  353. package/dist/cjs/components/selection/paste-menu.js +35 -0
  354. package/dist/cjs/components/selection/quick-edit.d.ts +14 -0
  355. package/dist/cjs/components/selection/quick-edit.d.ts.map +1 -0
  356. package/dist/cjs/components/selection/quick-edit.js +41 -0
  357. package/dist/cjs/components/selection/style.d.ts +15 -0
  358. package/dist/cjs/components/selection/style.d.ts.map +1 -0
  359. package/dist/cjs/components/selection/style.js +47 -0
  360. package/dist/cjs/components/selection/suggestion-action.d.ts +22 -0
  361. package/dist/cjs/components/selection/suggestion-action.d.ts.map +1 -0
  362. package/dist/cjs/components/selection/suggestion-action.js +61 -0
  363. package/dist/cjs/components/selection/title.d.ts +45 -0
  364. package/dist/cjs/components/selection/title.d.ts.map +1 -0
  365. package/dist/cjs/components/selection/title.js +93 -0
  366. package/dist/cjs/components/selection/types.d.ts +43 -0
  367. package/dist/cjs/components/selection/types.d.ts.map +1 -0
  368. package/dist/cjs/components/selection/types.js +2 -0
  369. package/dist/cjs/components/selection-input/index.d.ts +19 -0
  370. package/dist/cjs/components/selection-input/index.d.ts.map +1 -0
  371. package/dist/cjs/components/selection-input/index.js +30 -0
  372. package/dist/cjs/components/selection-input/style.d.ts +3 -0
  373. package/dist/cjs/components/selection-input/style.d.ts.map +1 -0
  374. package/dist/cjs/components/selection-input/style.js +11 -0
  375. package/dist/cjs/components/sheet-search/index.d.ts +41 -0
  376. package/dist/cjs/components/sheet-search/index.d.ts.map +1 -0
  377. package/dist/cjs/components/sheet-search/index.js +115 -0
  378. package/dist/cjs/components/sheet-status/index.d.ts +40 -0
  379. package/dist/cjs/components/sheet-status/index.d.ts.map +1 -0
  380. package/dist/cjs/components/sheet-status/index.js +154 -0
  381. package/dist/cjs/components/sheet-status/style.d.ts +4 -0
  382. package/dist/cjs/components/sheet-status/style.d.ts.map +1 -0
  383. package/dist/cjs/components/sheet-status/style.js +17 -0
  384. package/dist/cjs/components/sheet-switcher/index.d.ts +12 -0
  385. package/dist/cjs/components/sheet-switcher/index.d.ts.map +1 -0
  386. package/dist/cjs/components/sheet-switcher/index.js +39 -0
  387. package/dist/cjs/components/sheet-switcher/new-sheet-button.d.ts +4 -0
  388. package/dist/cjs/components/sheet-switcher/new-sheet-button.d.ts.map +1 -0
  389. package/dist/cjs/components/sheet-switcher/new-sheet-button.js +12 -0
  390. package/dist/cjs/components/sheet-tabs/context-menu.d.ts +43 -0
  391. package/dist/cjs/components/sheet-tabs/context-menu.d.ts.map +1 -0
  392. package/dist/cjs/components/sheet-tabs/context-menu.js +58 -0
  393. package/dist/cjs/components/sheet-tabs/index.d.ts +18 -0
  394. package/dist/cjs/components/sheet-tabs/index.d.ts.map +1 -0
  395. package/dist/cjs/components/sheet-tabs/index.js +231 -0
  396. package/dist/cjs/components/sheet-tabs/sheet-tab.d.ts +21 -0
  397. package/dist/cjs/components/sheet-tabs/sheet-tab.d.ts.map +1 -0
  398. package/dist/cjs/components/sheet-tabs/sheet-tab.js +135 -0
  399. package/dist/cjs/components/sheet-tabs/style.d.ts +10 -0
  400. package/dist/cjs/components/sheet-tabs/style.d.ts.map +1 -0
  401. package/dist/cjs/components/sheet-tabs/style.js +38 -0
  402. package/dist/cjs/components/sheet-tabs/types.d.ts +45 -0
  403. package/dist/cjs/components/sheet-tabs/types.d.ts.map +1 -0
  404. package/dist/cjs/components/sheet-tabs/types.js +2 -0
  405. package/dist/cjs/components/sort-range-dialog/index.d.ts +66 -0
  406. package/dist/cjs/components/sort-range-dialog/index.d.ts.map +1 -0
  407. package/dist/cjs/components/sort-range-dialog/index.js +260 -0
  408. package/dist/cjs/components/toolbar/background-color-selector.d.ts +19 -0
  409. package/dist/cjs/components/toolbar/background-color-selector.d.ts.map +1 -0
  410. package/dist/cjs/components/toolbar/background-color-selector.js +34 -0
  411. package/dist/cjs/components/toolbar/border-color-selector.d.ts +18 -0
  412. package/dist/cjs/components/toolbar/border-color-selector.d.ts.map +1 -0
  413. package/dist/cjs/components/toolbar/border-color-selector.js +31 -0
  414. package/dist/cjs/components/toolbar/border-line-style-options.d.ts +9 -0
  415. package/dist/cjs/components/toolbar/border-line-style-options.d.ts.map +1 -0
  416. package/dist/cjs/components/toolbar/border-line-style-options.js +48 -0
  417. package/dist/cjs/components/toolbar/border-line-style-selector.d.ts +9 -0
  418. package/dist/cjs/components/toolbar/border-line-style-selector.d.ts.map +1 -0
  419. package/dist/cjs/components/toolbar/border-line-style-selector.js +25 -0
  420. package/dist/cjs/components/toolbar/border-location-options.d.ts +11 -0
  421. package/dist/cjs/components/toolbar/border-location-options.d.ts.map +1 -0
  422. package/dist/cjs/components/toolbar/border-location-options.js +71 -0
  423. package/dist/cjs/components/toolbar/border-selector.d.ts +20 -0
  424. package/dist/cjs/components/toolbar/border-selector.d.ts.map +1 -0
  425. package/dist/cjs/components/toolbar/border-selector.js +65 -0
  426. package/dist/cjs/components/toolbar/buttons.d.ts +55 -0
  427. package/dist/cjs/components/toolbar/buttons.d.ts.map +1 -0
  428. package/dist/cjs/components/toolbar/buttons.js +216 -0
  429. package/dist/cjs/components/toolbar/cell-style-selector.d.ts +25 -0
  430. package/dist/cjs/components/toolbar/cell-style-selector.d.ts.map +1 -0
  431. package/dist/cjs/components/toolbar/cell-style-selector.js +531 -0
  432. package/dist/cjs/components/toolbar/color-selector.d.ts +13 -0
  433. package/dist/cjs/components/toolbar/color-selector.d.ts.map +1 -0
  434. package/dist/cjs/components/toolbar/color-selector.js +57 -0
  435. package/dist/cjs/components/toolbar/font-family-selector.d.ts +22 -0
  436. package/dist/cjs/components/toolbar/font-family-selector.d.ts.map +1 -0
  437. package/dist/cjs/components/toolbar/font-family-selector.js +183 -0
  438. package/dist/cjs/components/toolbar/font-size-selector.d.ts +10 -0
  439. package/dist/cjs/components/toolbar/font-size-selector.d.ts.map +1 -0
  440. package/dist/cjs/components/toolbar/font-size-selector.js +149 -0
  441. package/dist/cjs/components/toolbar/index.d.ts +25 -0
  442. package/dist/cjs/components/toolbar/index.d.ts.map +1 -0
  443. package/dist/cjs/components/toolbar/index.js +27 -0
  444. package/dist/cjs/components/toolbar/insert-menu.d.ts +22 -0
  445. package/dist/cjs/components/toolbar/insert-menu.d.ts.map +1 -0
  446. package/dist/cjs/components/toolbar/insert-menu.js +146 -0
  447. package/dist/cjs/components/toolbar/merge-cells-selector.d.ts +15 -0
  448. package/dist/cjs/components/toolbar/merge-cells-selector.d.ts.map +1 -0
  449. package/dist/cjs/components/toolbar/merge-cells-selector.js +56 -0
  450. package/dist/cjs/components/toolbar/scale-selector.d.ts +13 -0
  451. package/dist/cjs/components/toolbar/scale-selector.d.ts.map +1 -0
  452. package/dist/cjs/components/toolbar/scale-selector.js +78 -0
  453. package/dist/cjs/components/toolbar/style.d.ts +3 -0
  454. package/dist/cjs/components/toolbar/style.d.ts.map +1 -0
  455. package/dist/cjs/components/toolbar/style.js +11 -0
  456. package/dist/cjs/components/toolbar/table-actions.d.ts +15 -0
  457. package/dist/cjs/components/toolbar/table-actions.d.ts.map +1 -0
  458. package/dist/cjs/components/toolbar/table-actions.js +47 -0
  459. package/dist/cjs/components/toolbar/table-style-selector.d.ts +25 -0
  460. package/dist/cjs/components/toolbar/table-style-selector.d.ts.map +1 -0
  461. package/dist/cjs/components/toolbar/table-style-selector.js +494 -0
  462. package/dist/cjs/components/toolbar/text-color-selector.d.ts +20 -0
  463. package/dist/cjs/components/toolbar/text-color-selector.d.ts.map +1 -0
  464. package/dist/cjs/components/toolbar/text-color-selector.js +34 -0
  465. package/dist/cjs/components/toolbar/text-format-selector.d.ts +23 -0
  466. package/dist/cjs/components/toolbar/text-format-selector.d.ts.map +1 -0
  467. package/dist/cjs/components/toolbar/text-format-selector.js +263 -0
  468. package/dist/cjs/components/toolbar/text-horizontal-align-selector.d.ts +10 -0
  469. package/dist/cjs/components/toolbar/text-horizontal-align-selector.d.ts.map +1 -0
  470. package/dist/cjs/components/toolbar/text-horizontal-align-selector.js +42 -0
  471. package/dist/cjs/components/toolbar/text-vertical-align-selector.d.ts +9 -0
  472. package/dist/cjs/components/toolbar/text-vertical-align-selector.d.ts.map +1 -0
  473. package/dist/cjs/components/toolbar/text-vertical-align-selector.js +42 -0
  474. package/dist/cjs/components/toolbar/text-wrap-selector.d.ts +9 -0
  475. package/dist/cjs/components/toolbar/text-wrap-selector.d.ts.map +1 -0
  476. package/dist/cjs/components/toolbar/text-wrap-selector.js +41 -0
  477. package/dist/cjs/components/toolbar/theme-selector.d.ts +10 -0
  478. package/dist/cjs/components/toolbar/theme-selector.d.ts.map +1 -0
  479. package/dist/cjs/components/toolbar/theme-selector.js +32 -0
  480. package/dist/cjs/components/toolbar/toolbar.d.ts +12 -0
  481. package/dist/cjs/components/toolbar/toolbar.d.ts.map +1 -0
  482. package/dist/cjs/components/toolbar/toolbar.js +145 -0
  483. package/dist/cjs/components/toolbar/types.d.ts +2 -0
  484. package/dist/cjs/components/toolbar/types.d.ts.map +1 -0
  485. package/dist/cjs/components/toolbar/types.js +2 -0
  486. package/dist/cjs/components/toolbar/view-menu.d.ts +25 -0
  487. package/dist/cjs/components/toolbar/view-menu.d.ts.map +1 -0
  488. package/dist/cjs/components/toolbar/view-menu.js +46 -0
  489. package/dist/cjs/components/validation-alert-dialog/index.d.ts +15 -0
  490. package/dist/cjs/components/validation-alert-dialog/index.d.ts.map +1 -0
  491. package/dist/cjs/components/validation-alert-dialog/index.js +69 -0
  492. package/dist/cjs/config.d.ts +107 -0
  493. package/dist/cjs/config.d.ts.map +1 -0
  494. package/dist/cjs/config.js +270 -0
  495. package/dist/cjs/helpers/merged-cell-borders.d.ts +26 -0
  496. package/dist/cjs/helpers/merged-cell-borders.d.ts.map +1 -0
  497. package/dist/cjs/helpers/merged-cell-borders.js +44 -0
  498. package/dist/cjs/helpers.d.ts +118 -0
  499. package/dist/cjs/helpers.d.ts.map +1 -0
  500. package/dist/cjs/helpers.js +524 -0
  501. package/dist/cjs/hooks/index.d.ts +11 -0
  502. package/dist/cjs/hooks/index.d.ts.map +1 -0
  503. package/dist/cjs/hooks/index.js +13 -0
  504. package/dist/cjs/hooks/show-zeros.d.ts +13 -0
  505. package/dist/cjs/hooks/show-zeros.d.ts.map +1 -0
  506. package/dist/cjs/hooks/show-zeros.js +24 -0
  507. package/dist/cjs/hooks/use-async.d.ts +2 -0
  508. package/dist/cjs/hooks/use-async.d.ts.map +1 -0
  509. package/dist/cjs/hooks/use-async.js +37 -0
  510. package/dist/cjs/hooks/use-border-styles.d.ts +31 -0
  511. package/dist/cjs/hooks/use-border-styles.d.ts.map +1 -0
  512. package/dist/cjs/hooks/use-border-styles.js +433 -0
  513. package/dist/cjs/hooks/use-callback-ref.d.ts +6 -0
  514. package/dist/cjs/hooks/use-callback-ref.d.ts.map +1 -0
  515. package/dist/cjs/hooks/use-callback-ref.js +27 -0
  516. package/dist/cjs/hooks/use-cell-diff-highlight.d.ts +43 -0
  517. package/dist/cjs/hooks/use-cell-diff-highlight.d.ts.map +1 -0
  518. package/dist/cjs/hooks/use-cell-diff-highlight.js +83 -0
  519. package/dist/cjs/hooks/use-cell-popover.d.ts +55 -0
  520. package/dist/cjs/hooks/use-cell-popover.d.ts.map +1 -0
  521. package/dist/cjs/hooks/use-cell-popover.js +99 -0
  522. package/dist/cjs/hooks/use-cell-renderer.d.ts +226 -0
  523. package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -0
  524. package/dist/cjs/hooks/use-cell-renderer.js +361 -0
  525. package/dist/cjs/hooks/use-column-color-icons.d.ts +43 -0
  526. package/dist/cjs/hooks/use-column-color-icons.d.ts.map +1 -0
  527. package/dist/cjs/hooks/use-column-color-icons.js +86 -0
  528. package/dist/cjs/hooks/use-conditional-formatting.d.ts +35 -0
  529. package/dist/cjs/hooks/use-conditional-formatting.d.ts.map +1 -0
  530. package/dist/cjs/hooks/use-conditional-formatting.js +720 -0
  531. package/dist/cjs/hooks/use-context-menu.d.ts +52 -0
  532. package/dist/cjs/hooks/use-context-menu.d.ts.map +1 -0
  533. package/dist/cjs/hooks/use-context-menu.js +83 -0
  534. package/dist/cjs/hooks/use-context-setter.d.ts +3 -0
  535. package/dist/cjs/hooks/use-context-setter.d.ts.map +1 -0
  536. package/dist/cjs/hooks/use-context-setter.js +132 -0
  537. package/dist/cjs/hooks/use-copy-paste-cut.d.ts +45 -0
  538. package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -0
  539. package/dist/cjs/hooks/use-copy-paste-cut.js +329 -0
  540. package/dist/cjs/hooks/use-create-address-from-selection.d.ts +15 -0
  541. package/dist/cjs/hooks/use-create-address-from-selection.d.ts.map +1 -0
  542. package/dist/cjs/hooks/use-create-address-from-selection.js +75 -0
  543. package/dist/cjs/hooks/use-create-formula-tokenizer.d.ts +15 -0
  544. package/dist/cjs/hooks/use-create-formula-tokenizer.d.ts.map +1 -0
  545. package/dist/cjs/hooks/use-create-formula-tokenizer.js +67 -0
  546. package/dist/cjs/hooks/use-delayed-value.d.ts +8 -0
  547. package/dist/cjs/hooks/use-delayed-value.d.ts.map +1 -0
  548. package/dist/cjs/hooks/use-delayed-value.js +34 -0
  549. package/dist/cjs/hooks/use-editable.d.ts +366 -0
  550. package/dist/cjs/hooks/use-editable.d.ts.map +1 -0
  551. package/dist/cjs/hooks/use-editable.js +823 -0
  552. package/dist/cjs/hooks/use-editor-cancel.d.ts +25 -0
  553. package/dist/cjs/hooks/use-editor-cancel.d.ts.map +1 -0
  554. package/dist/cjs/hooks/use-editor-cancel.js +51 -0
  555. package/dist/cjs/hooks/use-editor-change.d.ts +13 -0
  556. package/dist/cjs/hooks/use-editor-change.d.ts.map +1 -0
  557. package/dist/cjs/hooks/use-editor-change.js +72 -0
  558. package/dist/cjs/hooks/use-editor-keydown.d.ts +11 -0
  559. package/dist/cjs/hooks/use-editor-keydown.d.ts.map +1 -0
  560. package/dist/cjs/hooks/use-editor-keydown.js +47 -0
  561. package/dist/cjs/hooks/use-editor-submit.d.ts +58 -0
  562. package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -0
  563. package/dist/cjs/hooks/use-editor-submit.js +97 -0
  564. package/dist/cjs/hooks/use-embeds-charts.d.ts +193 -0
  565. package/dist/cjs/hooks/use-embeds-charts.d.ts.map +1 -0
  566. package/dist/cjs/hooks/use-embeds-charts.js +284 -0
  567. package/dist/cjs/hooks/use-expand-cell.d.ts +35 -0
  568. package/dist/cjs/hooks/use-expand-cell.d.ts.map +1 -0
  569. package/dist/cjs/hooks/use-expand-cell.js +53 -0
  570. package/dist/cjs/hooks/use-export-range.d.ts +36 -0
  571. package/dist/cjs/hooks/use-export-range.d.ts.map +1 -0
  572. package/dist/cjs/hooks/use-export-range.js +259 -0
  573. package/dist/cjs/hooks/use-filter.d.ts +46 -0
  574. package/dist/cjs/hooks/use-filter.d.ts.map +1 -0
  575. package/dist/cjs/hooks/use-filter.js +181 -0
  576. package/dist/cjs/hooks/use-flash.d.ts +18 -0
  577. package/dist/cjs/hooks/use-flash.d.ts.map +1 -0
  578. package/dist/cjs/hooks/use-flash.js +77 -0
  579. package/dist/cjs/hooks/use-fonts.d.ts +8 -0
  580. package/dist/cjs/hooks/use-fonts.d.ts.map +1 -0
  581. package/dist/cjs/hooks/use-fonts.js +24 -0
  582. package/dist/cjs/hooks/use-formula-range-helpers.d.ts +21 -0
  583. package/dist/cjs/hooks/use-formula-range-helpers.d.ts.map +1 -0
  584. package/dist/cjs/hooks/use-formula-range-helpers.js +67 -0
  585. package/dist/cjs/hooks/use-get-tooltip.d.ts +52 -0
  586. package/dist/cjs/hooks/use-get-tooltip.d.ts.map +1 -0
  587. package/dist/cjs/hooks/use-get-tooltip.js +64 -0
  588. package/dist/cjs/hooks/use-get-values-from-range.d.ts +44 -0
  589. package/dist/cjs/hooks/use-get-values-from-range.d.ts.map +1 -0
  590. package/dist/cjs/hooks/use-get-values-from-range.js +194 -0
  591. package/dist/cjs/hooks/use-grid-children.d.ts +31 -0
  592. package/dist/cjs/hooks/use-grid-children.d.ts.map +1 -0
  593. package/dist/cjs/hooks/use-grid-children.js +139 -0
  594. package/dist/cjs/hooks/use-header-actions.d.ts +70 -0
  595. package/dist/cjs/hooks/use-header-actions.d.ts.map +1 -0
  596. package/dist/cjs/hooks/use-header-actions.js +256 -0
  597. package/dist/cjs/hooks/use-hidden-dimension-markers.d.ts +20 -0
  598. package/dist/cjs/hooks/use-hidden-dimension-markers.d.ts.map +1 -0
  599. package/dist/cjs/hooks/use-hidden-dimension-markers.js +138 -0
  600. package/dist/cjs/hooks/use-hidden-dimensions.d.ts +7 -0
  601. package/dist/cjs/hooks/use-hidden-dimensions.d.ts.map +1 -0
  602. package/dist/cjs/hooks/use-hidden-dimensions.js +60 -0
  603. package/dist/cjs/hooks/use-hovered-selection-ids.d.ts +9 -0
  604. package/dist/cjs/hooks/use-hovered-selection-ids.d.ts.map +1 -0
  605. package/dist/cjs/hooks/use-hovered-selection-ids.js +30 -0
  606. package/dist/cjs/hooks/use-isomorphic-layout-effect.d.ts +6 -0
  607. package/dist/cjs/hooks/use-isomorphic-layout-effect.d.ts.map +1 -0
  608. package/dist/cjs/hooks/use-isomorphic-layout-effect.js +11 -0
  609. package/dist/cjs/hooks/use-keyboard-handler.d.ts +57 -0
  610. package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -0
  611. package/dist/cjs/hooks/use-keyboard-handler.js +472 -0
  612. package/dist/cjs/hooks/use-licensekey-validator.d.ts +16 -0
  613. package/dist/cjs/hooks/use-licensekey-validator.d.ts.map +1 -0
  614. package/dist/cjs/hooks/use-licensekey-validator.js +180 -0
  615. package/dist/cjs/hooks/use-memo-compare.d.ts +2 -0
  616. package/dist/cjs/hooks/use-memo-compare.d.ts.map +1 -0
  617. package/dist/cjs/hooks/use-memo-compare.js +18 -0
  618. package/dist/cjs/hooks/use-merge.refs.d.ts +4 -0
  619. package/dist/cjs/hooks/use-merge.refs.d.ts.map +1 -0
  620. package/dist/cjs/hooks/use-merge.refs.js +29 -0
  621. package/dist/cjs/hooks/use-move-columns-rows.d.ts +46 -0
  622. package/dist/cjs/hooks/use-move-columns-rows.d.ts.map +1 -0
  623. package/dist/cjs/hooks/use-move-columns-rows.js +344 -0
  624. package/dist/cjs/hooks/use-navigate-sheet-range.d.ts +16 -0
  625. package/dist/cjs/hooks/use-navigate-sheet-range.d.ts.map +1 -0
  626. package/dist/cjs/hooks/use-navigate-sheet-range.js +36 -0
  627. package/dist/cjs/hooks/use-previous.d.ts +3 -0
  628. package/dist/cjs/hooks/use-previous.d.ts.map +1 -0
  629. package/dist/cjs/hooks/use-previous.js +12 -0
  630. package/dist/cjs/hooks/use-raf.d.ts +6 -0
  631. package/dist/cjs/hooks/use-raf.d.ts.map +1 -0
  632. package/dist/cjs/hooks/use-raf.js +35 -0
  633. package/dist/cjs/hooks/use-resize-observer.d.ts +6 -0
  634. package/dist/cjs/hooks/use-resize-observer.d.ts.map +1 -0
  635. package/dist/cjs/hooks/use-resize-observer.js +46 -0
  636. package/dist/cjs/hooks/use-scale-listener.d.ts +11 -0
  637. package/dist/cjs/hooks/use-scale-listener.d.ts.map +1 -0
  638. package/dist/cjs/hooks/use-scale-listener.js +52 -0
  639. package/dist/cjs/hooks/use-selected-rows-columns.d.ts +21 -0
  640. package/dist/cjs/hooks/use-selected-rows-columns.d.ts.map +1 -0
  641. package/dist/cjs/hooks/use-selected-rows-columns.js +74 -0
  642. package/dist/cjs/hooks/use-selection-aware-formatting.d.ts +13 -0
  643. package/dist/cjs/hooks/use-selection-aware-formatting.d.ts.map +1 -0
  644. package/dist/cjs/hooks/use-selection-aware-formatting.js +49 -0
  645. package/dist/cjs/hooks/use-selection-change.d.ts +10 -0
  646. package/dist/cjs/hooks/use-selection-change.d.ts.map +1 -0
  647. package/dist/cjs/hooks/use-selection-change.js +63 -0
  648. package/dist/cjs/hooks/use-selection-interceptors.d.ts +34 -0
  649. package/dist/cjs/hooks/use-selection-interceptors.d.ts.map +1 -0
  650. package/dist/cjs/hooks/use-selection-interceptors.js +131 -0
  651. package/dist/cjs/hooks/use-selection-move.d.ts +31 -0
  652. package/dist/cjs/hooks/use-selection-move.d.ts.map +1 -0
  653. package/dist/cjs/hooks/use-selection-move.js +155 -0
  654. package/dist/cjs/hooks/use-selection-renderer.d.ts +46 -0
  655. package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -0
  656. package/dist/cjs/hooks/use-selection-renderer.js +145 -0
  657. package/dist/cjs/hooks/use-selection-resize.d.ts +30 -0
  658. package/dist/cjs/hooks/use-selection-resize.d.ts.map +1 -0
  659. package/dist/cjs/hooks/use-selection-resize.js +180 -0
  660. package/dist/cjs/hooks/use-selection.d.ts +185 -0
  661. package/dist/cjs/hooks/use-selection.d.ts.map +1 -0
  662. package/dist/cjs/hooks/use-selection.js +1515 -0
  663. package/dist/cjs/hooks/use-sheet-change-handler.d.ts +3 -0
  664. package/dist/cjs/hooks/use-sheet-change-handler.d.ts.map +1 -0
  665. package/dist/cjs/hooks/use-sheet-change-handler.js +38 -0
  666. package/dist/cjs/hooks/use-sizer.d.ts +164 -0
  667. package/dist/cjs/hooks/use-sizer.d.ts.map +1 -0
  668. package/dist/cjs/hooks/use-sizer.js +424 -0
  669. package/dist/cjs/hooks/use-spreadsheet-theme.d.ts +17 -0
  670. package/dist/cjs/hooks/use-spreadsheet-theme.d.ts.map +1 -0
  671. package/dist/cjs/hooks/use-spreadsheet-theme.js +55 -0
  672. package/dist/cjs/hooks/use-stable-ref.d.ts +2 -0
  673. package/dist/cjs/hooks/use-stable-ref.d.ts.map +1 -0
  674. package/dist/cjs/hooks/use-stable-ref.js +14 -0
  675. package/dist/cjs/hooks/use-structured-reference-selection.d.ts +23 -0
  676. package/dist/cjs/hooks/use-structured-reference-selection.d.ts.map +1 -0
  677. package/dist/cjs/hooks/use-structured-reference-selection.js +103 -0
  678. package/dist/cjs/hooks/use-table-resizer.d.ts +23 -0
  679. package/dist/cjs/hooks/use-table-resizer.d.ts.map +1 -0
  680. package/dist/cjs/hooks/use-table-resizer.js +112 -0
  681. package/dist/cjs/hooks/use-text-dimensions.d.ts +16 -0
  682. package/dist/cjs/hooks/use-text-dimensions.d.ts.map +1 -0
  683. package/dist/cjs/hooks/use-text-dimensions.js +40 -0
  684. package/dist/cjs/hooks/use-tooltip.d.ts +70 -0
  685. package/dist/cjs/hooks/use-tooltip.d.ts.map +1 -0
  686. package/dist/cjs/hooks/use-tooltip.js +79 -0
  687. package/dist/cjs/hooks/use-touch.d.ts +16 -0
  688. package/dist/cjs/hooks/use-touch.d.ts.map +1 -0
  689. package/dist/cjs/hooks/use-touch.js +237 -0
  690. package/dist/cjs/index.d.ts +69 -0
  691. package/dist/cjs/index.d.ts.map +1 -0
  692. package/dist/cjs/index.js +81 -0
  693. package/dist/cjs/providers/spreadsheet-provider.d.ts +25 -0
  694. package/dist/cjs/providers/spreadsheet-provider.d.ts.map +1 -0
  695. package/dist/cjs/providers/spreadsheet-provider.js +40 -0
  696. package/dist/cjs/release-date.d.ts +2 -0
  697. package/dist/cjs/release-date.d.ts.map +1 -0
  698. package/dist/cjs/release-date.js +7 -0
  699. package/dist/cjs/signals/scroll-subscriber.d.ts +4 -0
  700. package/dist/cjs/signals/scroll-subscriber.d.ts.map +1 -0
  701. package/dist/cjs/signals/scroll-subscriber.js +5 -0
  702. package/dist/cjs/test-setup.d.ts +2 -0
  703. package/dist/cjs/test-setup.d.ts.map +1 -0
  704. package/dist/cjs/test-setup.js +17 -0
  705. package/dist/cjs/themes.d.ts +13 -0
  706. package/dist/cjs/themes.d.ts.map +1 -0
  707. package/dist/cjs/themes.js +251 -0
  708. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  709. package/dist/cjs/types.d.ts +1215 -0
  710. package/dist/cjs/types.d.ts.map +1 -0
  711. package/dist/cjs/types.js +12 -0
  712. package/dist/cjs/utils/maybe.d.ts +12 -0
  713. package/dist/cjs/utils/maybe.d.ts.map +1 -0
  714. package/dist/cjs/utils/maybe.js +19 -0
  715. package/dist/cjs/vitest.config.d.ts +3 -0
  716. package/dist/cjs/vitest.config.d.ts.map +1 -0
  717. package/dist/cjs/vitest.config.js +24 -0
  718. package/dist/esm/api/animate.d.ts +36 -0
  719. package/dist/esm/api/animate.d.ts.map +1 -0
  720. package/dist/esm/api/animate.js +117 -0
  721. package/dist/esm/api/banded-ranges.d.ts +16 -0
  722. package/dist/esm/api/banded-ranges.d.ts.map +1 -0
  723. package/dist/esm/api/banded-ranges.js +118 -0
  724. package/dist/esm/api/cf-engine.d.ts +36 -0
  725. package/dist/esm/api/cf-engine.d.ts.map +1 -0
  726. package/dist/esm/api/cf-engine.js +54 -0
  727. package/dist/esm/api/cf-overlays.d.ts +7 -0
  728. package/dist/esm/api/cf-overlays.d.ts.map +1 -0
  729. package/dist/esm/api/cf-overlays.js +118 -0
  730. package/dist/esm/api/cf-window.d.ts +45 -0
  731. package/dist/esm/api/cf-window.d.ts.map +1 -0
  732. package/dist/esm/api/cf-window.js +109 -0
  733. package/dist/esm/api/colors.d.ts +8 -0
  734. package/dist/esm/api/colors.d.ts.map +1 -0
  735. package/dist/esm/api/colors.js +27 -0
  736. package/dist/esm/api/copy-paste.d.ts +10 -0
  737. package/dist/esm/api/copy-paste.d.ts.map +1 -0
  738. package/dist/esm/api/copy-paste.js +23 -0
  739. package/dist/esm/api/fill-patterns.d.ts +5 -0
  740. package/dist/esm/api/fill-patterns.d.ts.map +1 -0
  741. package/dist/esm/api/fill-patterns.js +196 -0
  742. package/dist/esm/api/font-loader.d.ts +8 -0
  743. package/dist/esm/api/font-loader.d.ts.map +1 -0
  744. package/dist/esm/api/font-loader.js +67 -0
  745. package/dist/esm/api/heatmap.d.ts +4 -0
  746. package/dist/esm/api/heatmap.d.ts.map +1 -0
  747. package/dist/esm/api/heatmap.js +167 -0
  748. package/dist/esm/api/scheduler.d.ts +8 -0
  749. package/dist/esm/api/scheduler.d.ts.map +1 -0
  750. package/dist/esm/api/scheduler.js +6 -0
  751. package/dist/esm/api/scroller.d.ts +134 -0
  752. package/dist/esm/api/scroller.d.ts.map +1 -0
  753. package/dist/esm/api/scroller.js +704 -0
  754. package/dist/esm/api/selections.d.ts +111 -0
  755. package/dist/esm/api/selections.d.ts.map +1 -0
  756. package/dist/esm/api/selections.js +365 -0
  757. package/dist/esm/api/spreadsheet-api.d.ts +271 -0
  758. package/dist/esm/api/spreadsheet-api.d.ts.map +1 -0
  759. package/dist/esm/api/spreadsheet-api.js +649 -0
  760. package/dist/esm/api/table.d.ts +11 -0
  761. package/dist/esm/api/table.d.ts.map +1 -0
  762. package/dist/esm/api/table.js +11 -0
  763. package/dist/esm/api/validation.d.ts +98 -0
  764. package/dist/esm/api/validation.d.ts.map +1 -0
  765. package/dist/esm/api/validation.js +470 -0
  766. package/dist/esm/atoms/active-editor.atom.d.ts +8 -0
  767. package/dist/esm/atoms/active-editor.atom.d.ts.map +1 -0
  768. package/dist/esm/atoms/active-editor.atom.js +6 -0
  769. package/dist/esm/atoms/cell-input-context.atom.d.ts +15 -0
  770. package/dist/esm/atoms/cell-input-context.atom.d.ts.map +1 -0
  771. package/dist/esm/atoms/cell-input-context.atom.js +20 -0
  772. package/dist/esm/atoms/editing-cell.atom.d.ts +7 -0
  773. package/dist/esm/atoms/editing-cell.atom.d.ts.map +1 -0
  774. package/dist/esm/atoms/editing-cell.atom.js +4 -0
  775. package/dist/esm/atoms/formula-bar-editor-value.atom.d.ts +19 -0
  776. package/dist/esm/atoms/formula-bar-editor-value.atom.d.ts.map +1 -0
  777. package/dist/esm/atoms/formula-bar-editor-value.atom.js +17 -0
  778. package/dist/esm/atoms/formula-mode.atom.d.ts +7 -0
  779. package/dist/esm/atoms/formula-mode.atom.d.ts.map +1 -0
  780. package/dist/esm/atoms/formula-mode.atom.js +5 -0
  781. package/dist/esm/atoms/formula-selection-state.atom.d.ts +16 -0
  782. package/dist/esm/atoms/formula-selection-state.atom.d.ts.map +1 -0
  783. package/dist/esm/atoms/formula-selection-state.atom.js +14 -0
  784. package/dist/esm/atoms/formula-selections.atom.d.ts +8 -0
  785. package/dist/esm/atoms/formula-selections.atom.d.ts.map +1 -0
  786. package/dist/esm/atoms/formula-selections.atom.js +4 -0
  787. package/dist/esm/atoms/index.d.ts +18 -0
  788. package/dist/esm/atoms/index.d.ts.map +1 -0
  789. package/dist/esm/atoms/index.js +17 -0
  790. package/dist/esm/atoms/loading-indicator.atom.d.ts +12 -0
  791. package/dist/esm/atoms/loading-indicator.atom.d.ts.map +1 -0
  792. package/dist/esm/atoms/loading-indicator.atom.js +17 -0
  793. package/dist/esm/atoms/magic-fill-state.atom.d.ts +5 -0
  794. package/dist/esm/atoms/magic-fill-state.atom.d.ts.map +1 -0
  795. package/dist/esm/atoms/magic-fill-state.atom.js +6 -0
  796. package/dist/esm/atoms/paste-menu.atom.d.ts +6 -0
  797. package/dist/esm/atoms/paste-menu.atom.d.ts.map +1 -0
  798. package/dist/esm/atoms/paste-menu.atom.js +4 -0
  799. package/dist/esm/atoms/persistent-tooltip.atom.d.ts +11 -0
  800. package/dist/esm/atoms/persistent-tooltip.atom.d.ts.map +1 -0
  801. package/dist/esm/atoms/persistent-tooltip.atom.js +13 -0
  802. package/dist/esm/atoms/popover.atom.d.ts +7 -0
  803. package/dist/esm/atoms/popover.atom.d.ts.map +1 -0
  804. package/dist/esm/atoms/popover.atom.js +4 -0
  805. package/dist/esm/atoms/range-selector.atom.d.ts +6 -0
  806. package/dist/esm/atoms/range-selector.atom.d.ts.map +1 -0
  807. package/dist/esm/atoms/range-selector.atom.js +7 -0
  808. package/dist/esm/atoms/selected-chart-embed.atom.d.ts +6 -0
  809. package/dist/esm/atoms/selected-chart-embed.atom.d.ts.map +1 -0
  810. package/dist/esm/atoms/selected-chart-embed.atom.js +4 -0
  811. package/dist/esm/atoms/sheet-context.atom.d.ts +66 -0
  812. package/dist/esm/atoms/sheet-context.atom.d.ts.map +1 -0
  813. package/dist/esm/atoms/sheet-context.atom.js +73 -0
  814. package/dist/esm/atoms/sheet-status-display.atom.d.ts +15 -0
  815. package/dist/esm/atoms/sheet-status-display.atom.d.ts.map +1 -0
  816. package/dist/esm/atoms/sheet-status-display.atom.js +11 -0
  817. package/dist/esm/atoms/show-formula-help.atom.d.ts +8 -0
  818. package/dist/esm/atoms/show-formula-help.atom.d.ts.map +1 -0
  819. package/dist/esm/atoms/show-formula-help.atom.js +13 -0
  820. package/dist/esm/atoms/sort-dialog.atom.d.ts +22 -0
  821. package/dist/esm/atoms/sort-dialog.atom.d.ts.map +1 -0
  822. package/dist/esm/atoms/sort-dialog.atom.js +9 -0
  823. package/dist/esm/atoms/spreadsheet-api.atom.d.ts +5 -0
  824. package/dist/esm/atoms/spreadsheet-api.atom.d.ts.map +1 -0
  825. package/dist/esm/atoms/spreadsheet-api.atom.js +4 -0
  826. package/dist/esm/atoms/validation-alert.atom.d.ts +27 -0
  827. package/dist/esm/atoms/validation-alert.atom.d.ts.map +1 -0
  828. package/dist/esm/atoms/validation-alert.atom.js +15 -0
  829. package/dist/esm/components/bottom-bar/index.d.ts +7 -0
  830. package/dist/esm/components/bottom-bar/index.d.ts.map +1 -0
  831. package/dist/esm/components/bottom-bar/index.js +5 -0
  832. package/dist/esm/components/canvas-grid/helpers.d.ts +15 -0
  833. package/dist/esm/components/canvas-grid/helpers.d.ts.map +1 -0
  834. package/dist/esm/components/canvas-grid/helpers.js +36 -0
  835. package/dist/esm/components/canvas-grid/index.d.ts +7 -0
  836. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -0
  837. package/dist/esm/components/canvas-grid/index.js +3260 -0
  838. package/dist/esm/components/canvas-grid/typings.d.ts +2027 -0
  839. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -0
  840. package/dist/esm/components/canvas-grid/typings.js +8 -0
  841. package/dist/esm/components/cell/alignment.d.ts +70 -0
  842. package/dist/esm/components/cell/alignment.d.ts.map +1 -0
  843. package/dist/esm/components/cell/alignment.js +127 -0
  844. package/dist/esm/components/cell/cell-background.d.ts +15 -0
  845. package/dist/esm/components/cell/cell-background.d.ts.map +1 -0
  846. package/dist/esm/components/cell/cell-background.js +142 -0
  847. package/dist/esm/components/cell/cell-text-runs.d.ts +98 -0
  848. package/dist/esm/components/cell/cell-text-runs.d.ts.map +1 -0
  849. package/dist/esm/components/cell/cell-text-runs.js +379 -0
  850. package/dist/esm/components/cell/helpers.d.ts +3 -0
  851. package/dist/esm/components/cell/helpers.d.ts.map +1 -0
  852. package/dist/esm/components/cell/helpers.js +11 -0
  853. package/dist/esm/components/cell/index.d.ts +4 -0
  854. package/dist/esm/components/cell/index.d.ts.map +1 -0
  855. package/dist/esm/components/cell/index.js +257 -0
  856. package/dist/esm/components/cell/rich-text.d.ts +82 -0
  857. package/dist/esm/components/cell/rich-text.d.ts.map +1 -0
  858. package/dist/esm/components/cell/rich-text.js +167 -0
  859. package/dist/esm/components/cell/typings.d.ts +190 -0
  860. package/dist/esm/components/cell/typings.d.ts.map +1 -0
  861. package/dist/esm/components/cell/typings.js +1 -0
  862. package/dist/esm/components/cell-arrow/index.d.ts +14 -0
  863. package/dist/esm/components/cell-arrow/index.d.ts.map +1 -0
  864. package/dist/esm/components/cell-arrow/index.js +22 -0
  865. package/dist/esm/components/cell-calculated/index.d.ts +17 -0
  866. package/dist/esm/components/cell-calculated/index.d.ts.map +1 -0
  867. package/dist/esm/components/cell-calculated/index.js +14 -0
  868. package/dist/esm/components/cell-checkbox/index.d.ts +14 -0
  869. package/dist/esm/components/cell-checkbox/index.d.ts.map +1 -0
  870. package/dist/esm/components/cell-checkbox/index.js +23 -0
  871. package/dist/esm/components/cell-diff/index.d.ts +42 -0
  872. package/dist/esm/components/cell-diff/index.d.ts.map +1 -0
  873. package/dist/esm/components/cell-diff/index.js +90 -0
  874. package/dist/esm/components/cell-editor/calendar-popup.d.ts +9 -0
  875. package/dist/esm/components/cell-editor/calendar-popup.d.ts.map +1 -0
  876. package/dist/esm/components/cell-editor/calendar-popup.js +19 -0
  877. package/dist/esm/components/cell-editor/formula-result-preview.d.ts +9 -0
  878. package/dist/esm/components/cell-editor/formula-result-preview.d.ts.map +1 -0
  879. package/dist/esm/components/cell-editor/formula-result-preview.js +20 -0
  880. package/dist/esm/components/cell-editor/helpers.d.ts +11 -0
  881. package/dist/esm/components/cell-editor/helpers.d.ts.map +1 -0
  882. package/dist/esm/components/cell-editor/helpers.js +34 -0
  883. package/dist/esm/components/cell-editor/helpers.spec.d.ts +2 -0
  884. package/dist/esm/components/cell-editor/helpers.spec.d.ts.map +1 -0
  885. package/dist/esm/components/cell-editor/helpers.spec.js +16 -0
  886. package/dist/esm/components/cell-editor/index.d.ts +146 -0
  887. package/dist/esm/components/cell-editor/index.d.ts.map +1 -0
  888. package/dist/esm/components/cell-editor/index.js +266 -0
  889. package/dist/esm/components/cell-editor/style.d.ts +9 -0
  890. package/dist/esm/components/cell-editor/style.d.ts.map +1 -0
  891. package/dist/esm/components/cell-editor/style.js +11 -0
  892. package/dist/esm/components/cell-error/index.d.ts +14 -0
  893. package/dist/esm/components/cell-error/index.d.ts.map +1 -0
  894. package/dist/esm/components/cell-error/index.js +18 -0
  895. package/dist/esm/components/cell-expand/index.d.ts +15 -0
  896. package/dist/esm/components/cell-expand/index.d.ts.map +1 -0
  897. package/dist/esm/components/cell-expand/index.js +25 -0
  898. package/dist/esm/components/cell-filter/index.d.ts +21 -0
  899. package/dist/esm/components/cell-filter/index.d.ts.map +1 -0
  900. package/dist/esm/components/cell-filter/index.js +34 -0
  901. package/dist/esm/components/cell-group/index.d.ts +17 -0
  902. package/dist/esm/components/cell-group/index.d.ts.map +1 -0
  903. package/dist/esm/components/cell-group/index.js +26 -0
  904. package/dist/esm/components/cell-input/cell-input.d.ts +123 -0
  905. package/dist/esm/components/cell-input/cell-input.d.ts.map +1 -0
  906. package/dist/esm/components/cell-input/cell-input.js +63 -0
  907. package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts +21 -0
  908. package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -0
  909. package/dist/esm/components/cell-input/formula-bar-cell-input.js +57 -0
  910. package/dist/esm/components/cell-input/index.d.ts +3 -0
  911. package/dist/esm/components/cell-input/index.d.ts.map +1 -0
  912. package/dist/esm/components/cell-input/index.js +2 -0
  913. package/dist/esm/components/cell-input/style.d.ts +6 -0
  914. package/dist/esm/components/cell-input/style.d.ts.map +1 -0
  915. package/dist/esm/components/cell-input/style.js +6 -0
  916. package/dist/esm/components/cell-overlay/index.d.ts +25 -0
  917. package/dist/esm/components/cell-overlay/index.d.ts.map +1 -0
  918. package/dist/esm/components/cell-overlay/index.js +155 -0
  919. package/dist/esm/components/cell-structured/index.d.ts +8 -0
  920. package/dist/esm/components/cell-structured/index.d.ts.map +1 -0
  921. package/dist/esm/components/cell-structured/index.js +16 -0
  922. package/dist/esm/components/cell-structured/sparkline-math.d.ts +54 -0
  923. package/dist/esm/components/cell-structured/sparkline-math.d.ts.map +1 -0
  924. package/dist/esm/components/cell-structured/sparkline-math.js +80 -0
  925. package/dist/esm/components/cell-structured/sparkline.d.ts +6 -0
  926. package/dist/esm/components/cell-structured/sparkline.d.ts.map +1 -0
  927. package/dist/esm/components/cell-structured/sparkline.js +246 -0
  928. package/dist/esm/components/cell-structured/types.d.ts +23 -0
  929. package/dist/esm/components/cell-structured/types.d.ts.map +1 -0
  930. package/dist/esm/components/cell-structured/types.js +1 -0
  931. package/dist/esm/components/cell-tooltip/index.d.ts +28 -0
  932. package/dist/esm/components/cell-tooltip/index.d.ts.map +1 -0
  933. package/dist/esm/components/cell-tooltip/index.js +50 -0
  934. package/dist/esm/components/cell-tooltip/note-editor.d.ts +12 -0
  935. package/dist/esm/components/cell-tooltip/note-editor.d.ts.map +1 -0
  936. package/dist/esm/components/cell-tooltip/note-editor.js +19 -0
  937. package/dist/esm/components/cell-tooltip/style.d.ts +3 -0
  938. package/dist/esm/components/cell-tooltip/style.d.ts.map +1 -0
  939. package/dist/esm/components/cell-tooltip/style.js +4 -0
  940. package/dist/esm/components/context-menu/index.d.ts +80 -0
  941. package/dist/esm/components/context-menu/index.d.ts.map +1 -0
  942. package/dist/esm/components/context-menu/index.js +591 -0
  943. package/dist/esm/components/context-menu/menu.d.ts +10 -0
  944. package/dist/esm/components/context-menu/menu.d.ts.map +1 -0
  945. package/dist/esm/components/context-menu/menu.js +9 -0
  946. package/dist/esm/components/context-menu/style.d.ts +6 -0
  947. package/dist/esm/components/context-menu/style.d.ts.map +1 -0
  948. package/dist/esm/components/context-menu/style.js +7 -0
  949. package/dist/esm/components/embeds/chart-component.d.ts +16 -0
  950. package/dist/esm/components/embeds/chart-component.d.ts.map +1 -0
  951. package/dist/esm/components/embeds/chart-component.js +7 -0
  952. package/dist/esm/components/embeds/embed-component.d.ts +17 -0
  953. package/dist/esm/components/embeds/embed-component.d.ts.map +1 -0
  954. package/dist/esm/components/embeds/embed-component.js +124 -0
  955. package/dist/esm/components/embeds/embed-draggable.d.ts +43 -0
  956. package/dist/esm/components/embeds/embed-draggable.d.ts.map +1 -0
  957. package/dist/esm/components/embeds/embed-draggable.js +115 -0
  958. package/dist/esm/components/embeds/index.d.ts +5 -0
  959. package/dist/esm/components/embeds/index.d.ts.map +1 -0
  960. package/dist/esm/components/embeds/index.js +4 -0
  961. package/dist/esm/components/embeds/shape-geometry.d.ts +10 -0
  962. package/dist/esm/components/embeds/shape-geometry.d.ts.map +1 -0
  963. package/dist/esm/components/embeds/shape-geometry.js +224 -0
  964. package/dist/esm/components/embeds/shape-svg.d.ts +56 -0
  965. package/dist/esm/components/embeds/shape-svg.d.ts.map +1 -0
  966. package/dist/esm/components/embeds/shape-svg.js +149 -0
  967. package/dist/esm/components/embeds/slicer-component.d.ts +27 -0
  968. package/dist/esm/components/embeds/slicer-component.d.ts.map +1 -0
  969. package/dist/esm/components/embeds/slicer-component.js +231 -0
  970. package/dist/esm/components/fill-handle/index.d.ts +7 -0
  971. package/dist/esm/components/fill-handle/index.d.ts.map +1 -0
  972. package/dist/esm/components/fill-handle/index.js +13 -0
  973. package/dist/esm/components/filter-box/filter-by-color.d.ts +28 -0
  974. package/dist/esm/components/filter-box/filter-by-color.d.ts.map +1 -0
  975. package/dist/esm/components/filter-box/filter-by-color.js +88 -0
  976. package/dist/esm/components/filter-box/filter-by-condition.d.ts +13 -0
  977. package/dist/esm/components/filter-box/filter-by-condition.d.ts.map +1 -0
  978. package/dist/esm/components/filter-box/filter-by-condition.js +34 -0
  979. package/dist/esm/components/filter-box/filter-by-value.d.ts +9 -0
  980. package/dist/esm/components/filter-box/filter-by-value.d.ts.map +1 -0
  981. package/dist/esm/components/filter-box/filter-by-value.js +76 -0
  982. package/dist/esm/components/filter-box/index.d.ts +50 -0
  983. package/dist/esm/components/filter-box/index.d.ts.map +1 -0
  984. package/dist/esm/components/filter-box/index.js +337 -0
  985. package/dist/esm/components/floating-cell-editor/index.d.ts +83 -0
  986. package/dist/esm/components/floating-cell-editor/index.d.ts.map +1 -0
  987. package/dist/esm/components/floating-cell-editor/index.js +168 -0
  988. package/dist/esm/components/formula-bar/index.d.ts +11 -0
  989. package/dist/esm/components/formula-bar/index.d.ts.map +1 -0
  990. package/dist/esm/components/formula-bar/index.js +14 -0
  991. package/dist/esm/components/formula-bar/style.d.ts +4 -0
  992. package/dist/esm/components/formula-bar/style.d.ts.map +1 -0
  993. package/dist/esm/components/formula-bar/style.js +6 -0
  994. package/dist/esm/components/formula-input/index.d.ts +17 -0
  995. package/dist/esm/components/formula-input/index.d.ts.map +1 -0
  996. package/dist/esm/components/formula-input/index.js +85 -0
  997. package/dist/esm/components/grid-footer/index.d.ts +14 -0
  998. package/dist/esm/components/grid-footer/index.d.ts.map +1 -0
  999. package/dist/esm/components/grid-footer/index.js +33 -0
  1000. package/dist/esm/components/header-cell/index.d.ts +10 -0
  1001. package/dist/esm/components/header-cell/index.d.ts.map +1 -0
  1002. package/dist/esm/components/header-cell/index.js +21 -0
  1003. package/dist/esm/components/header-menu/index.d.ts +13 -0
  1004. package/dist/esm/components/header-menu/index.d.ts.map +1 -0
  1005. package/dist/esm/components/header-menu/index.js +13 -0
  1006. package/dist/esm/components/header-move/index.d.ts +23 -0
  1007. package/dist/esm/components/header-move/index.d.ts.map +1 -0
  1008. package/dist/esm/components/header-move/index.js +48 -0
  1009. package/dist/esm/components/header-resizer/index.d.ts +19 -0
  1010. package/dist/esm/components/header-resizer/index.d.ts.map +1 -0
  1011. package/dist/esm/components/header-resizer/index.js +33 -0
  1012. package/dist/esm/components/hidden-markers/index.d.ts +15 -0
  1013. package/dist/esm/components/hidden-markers/index.d.ts.map +1 -0
  1014. package/dist/esm/components/hidden-markers/index.js +39 -0
  1015. package/dist/esm/components/hidden-markers/style.d.ts +5 -0
  1016. package/dist/esm/components/hidden-markers/style.d.ts.map +1 -0
  1017. package/dist/esm/components/hidden-markers/style.js +4 -0
  1018. package/dist/esm/components/insert-function-dialog/index.d.ts +32 -0
  1019. package/dist/esm/components/insert-function-dialog/index.d.ts.map +1 -0
  1020. package/dist/esm/components/insert-function-dialog/index.js +75 -0
  1021. package/dist/esm/components/loading-indicator/index.d.ts +7 -0
  1022. package/dist/esm/components/loading-indicator/index.d.ts.map +1 -0
  1023. package/dist/esm/components/loading-indicator/index.js +8 -0
  1024. package/dist/esm/components/outline-gutter/index.d.ts +44 -0
  1025. package/dist/esm/components/outline-gutter/index.d.ts.map +1 -0
  1026. package/dist/esm/components/outline-gutter/index.js +395 -0
  1027. package/dist/esm/components/pivot-placeholder/index.d.ts +12 -0
  1028. package/dist/esm/components/pivot-placeholder/index.d.ts.map +1 -0
  1029. package/dist/esm/components/pivot-placeholder/index.js +18 -0
  1030. package/dist/esm/components/print-preview/cell-styles.d.ts +18 -0
  1031. package/dist/esm/components/print-preview/cell-styles.d.ts.map +1 -0
  1032. package/dist/esm/components/print-preview/cell-styles.js +174 -0
  1033. package/dist/esm/components/print-preview/index.d.ts +5 -0
  1034. package/dist/esm/components/print-preview/index.d.ts.map +1 -0
  1035. package/dist/esm/components/print-preview/index.js +2 -0
  1036. package/dist/esm/components/print-preview/page-block.d.ts +62 -0
  1037. package/dist/esm/components/print-preview/page-block.d.ts.map +1 -0
  1038. package/dist/esm/components/print-preview/page-block.js +308 -0
  1039. package/dist/esm/components/print-preview/print-preview-dialog.d.ts +49 -0
  1040. package/dist/esm/components/print-preview/print-preview-dialog.d.ts.map +1 -0
  1041. package/dist/esm/components/print-preview/print-preview-dialog.js +322 -0
  1042. package/dist/esm/components/print-preview/run-print.d.ts +11 -0
  1043. package/dist/esm/components/print-preview/run-print.d.ts.map +1 -0
  1044. package/dist/esm/components/print-preview/run-print.js +107 -0
  1045. package/dist/esm/components/print-preview/settings.d.ts +130 -0
  1046. package/dist/esm/components/print-preview/settings.d.ts.map +1 -0
  1047. package/dist/esm/components/print-preview/settings.js +227 -0
  1048. package/dist/esm/components/print-preview/use-page-layout.d.ts +60 -0
  1049. package/dist/esm/components/print-preview/use-page-layout.d.ts.map +1 -0
  1050. package/dist/esm/components/print-preview/use-page-layout.js +133 -0
  1051. package/dist/esm/components/range-selector/index.d.ts +25 -0
  1052. package/dist/esm/components/range-selector/index.d.ts.map +1 -0
  1053. package/dist/esm/components/range-selector/index.js +236 -0
  1054. package/dist/esm/components/resizer/index.d.ts +9 -0
  1055. package/dist/esm/components/resizer/index.d.ts.map +1 -0
  1056. package/dist/esm/components/resizer/index.js +39 -0
  1057. package/dist/esm/components/selection/avatar.d.ts +14 -0
  1058. package/dist/esm/components/selection/avatar.d.ts.map +1 -0
  1059. package/dist/esm/components/selection/avatar.js +15 -0
  1060. package/dist/esm/components/selection/index.d.ts +9 -0
  1061. package/dist/esm/components/selection/index.d.ts.map +1 -0
  1062. package/dist/esm/components/selection/index.js +192 -0
  1063. package/dist/esm/components/selection/magic-fill.d.ts +26 -0
  1064. package/dist/esm/components/selection/magic-fill.d.ts.map +1 -0
  1065. package/dist/esm/components/selection/magic-fill.js +52 -0
  1066. package/dist/esm/components/selection/paste-menu.d.ts +10 -0
  1067. package/dist/esm/components/selection/paste-menu.d.ts.map +1 -0
  1068. package/dist/esm/components/selection/paste-menu.js +29 -0
  1069. package/dist/esm/components/selection/quick-edit.d.ts +14 -0
  1070. package/dist/esm/components/selection/quick-edit.d.ts.map +1 -0
  1071. package/dist/esm/components/selection/quick-edit.js +41 -0
  1072. package/dist/esm/components/selection/style.d.ts +15 -0
  1073. package/dist/esm/components/selection/style.d.ts.map +1 -0
  1074. package/dist/esm/components/selection/style.js +22 -0
  1075. package/dist/esm/components/selection/suggestion-action.d.ts +22 -0
  1076. package/dist/esm/components/selection/suggestion-action.d.ts.map +1 -0
  1077. package/dist/esm/components/selection/suggestion-action.js +53 -0
  1078. package/dist/esm/components/selection/title.d.ts +45 -0
  1079. package/dist/esm/components/selection/title.d.ts.map +1 -0
  1080. package/dist/esm/components/selection/title.js +95 -0
  1081. package/dist/esm/components/selection/types.d.ts +43 -0
  1082. package/dist/esm/components/selection/types.d.ts.map +1 -0
  1083. package/dist/esm/components/selection/types.js +1 -0
  1084. package/dist/esm/components/selection-input/index.d.ts +19 -0
  1085. package/dist/esm/components/selection-input/index.d.ts.map +1 -0
  1086. package/dist/esm/components/selection-input/index.js +27 -0
  1087. package/dist/esm/components/selection-input/style.d.ts +3 -0
  1088. package/dist/esm/components/selection-input/style.d.ts.map +1 -0
  1089. package/dist/esm/components/selection-input/style.js +4 -0
  1090. package/dist/esm/components/sheet-search/index.d.ts +41 -0
  1091. package/dist/esm/components/sheet-search/index.d.ts.map +1 -0
  1092. package/dist/esm/components/sheet-search/index.js +106 -0
  1093. package/dist/esm/components/sheet-status/index.d.ts +40 -0
  1094. package/dist/esm/components/sheet-status/index.d.ts.map +1 -0
  1095. package/dist/esm/components/sheet-status/index.js +155 -0
  1096. package/dist/esm/components/sheet-status/style.d.ts +4 -0
  1097. package/dist/esm/components/sheet-status/style.d.ts.map +1 -0
  1098. package/dist/esm/components/sheet-status/style.js +7 -0
  1099. package/dist/esm/components/sheet-switcher/index.d.ts +12 -0
  1100. package/dist/esm/components/sheet-switcher/index.d.ts.map +1 -0
  1101. package/dist/esm/components/sheet-switcher/index.js +33 -0
  1102. package/dist/esm/components/sheet-switcher/new-sheet-button.d.ts +4 -0
  1103. package/dist/esm/components/sheet-switcher/new-sheet-button.d.ts.map +1 -0
  1104. package/dist/esm/components/sheet-switcher/new-sheet-button.js +7 -0
  1105. package/dist/esm/components/sheet-tabs/context-menu.d.ts +43 -0
  1106. package/dist/esm/components/sheet-tabs/context-menu.d.ts.map +1 -0
  1107. package/dist/esm/components/sheet-tabs/context-menu.js +50 -0
  1108. package/dist/esm/components/sheet-tabs/index.d.ts +18 -0
  1109. package/dist/esm/components/sheet-tabs/index.d.ts.map +1 -0
  1110. package/dist/esm/components/sheet-tabs/index.js +217 -0
  1111. package/dist/esm/components/sheet-tabs/sheet-tab.d.ts +21 -0
  1112. package/dist/esm/components/sheet-tabs/sheet-tab.d.ts.map +1 -0
  1113. package/dist/esm/components/sheet-tabs/sheet-tab.js +131 -0
  1114. package/dist/esm/components/sheet-tabs/style.d.ts +10 -0
  1115. package/dist/esm/components/sheet-tabs/style.d.ts.map +1 -0
  1116. package/dist/esm/components/sheet-tabs/style.js +16 -0
  1117. package/dist/esm/components/sheet-tabs/types.d.ts +45 -0
  1118. package/dist/esm/components/sheet-tabs/types.d.ts.map +1 -0
  1119. package/dist/esm/components/sheet-tabs/types.js +1 -0
  1120. package/dist/esm/components/sort-range-dialog/index.d.ts +66 -0
  1121. package/dist/esm/components/sort-range-dialog/index.d.ts.map +1 -0
  1122. package/dist/esm/components/sort-range-dialog/index.js +215 -0
  1123. package/dist/esm/components/toolbar/background-color-selector.d.ts +19 -0
  1124. package/dist/esm/components/toolbar/background-color-selector.d.ts.map +1 -0
  1125. package/dist/esm/components/toolbar/background-color-selector.js +28 -0
  1126. package/dist/esm/components/toolbar/border-color-selector.d.ts +18 -0
  1127. package/dist/esm/components/toolbar/border-color-selector.d.ts.map +1 -0
  1128. package/dist/esm/components/toolbar/border-color-selector.js +25 -0
  1129. package/dist/esm/components/toolbar/border-line-style-options.d.ts +9 -0
  1130. package/dist/esm/components/toolbar/border-line-style-options.d.ts.map +1 -0
  1131. package/dist/esm/components/toolbar/border-line-style-options.js +42 -0
  1132. package/dist/esm/components/toolbar/border-line-style-selector.d.ts +9 -0
  1133. package/dist/esm/components/toolbar/border-line-style-selector.d.ts.map +1 -0
  1134. package/dist/esm/components/toolbar/border-line-style-selector.js +19 -0
  1135. package/dist/esm/components/toolbar/border-location-options.d.ts +11 -0
  1136. package/dist/esm/components/toolbar/border-location-options.d.ts.map +1 -0
  1137. package/dist/esm/components/toolbar/border-location-options.js +64 -0
  1138. package/dist/esm/components/toolbar/border-selector.d.ts +20 -0
  1139. package/dist/esm/components/toolbar/border-selector.d.ts.map +1 -0
  1140. package/dist/esm/components/toolbar/border-selector.js +59 -0
  1141. package/dist/esm/components/toolbar/buttons.d.ts +55 -0
  1142. package/dist/esm/components/toolbar/buttons.d.ts.map +1 -0
  1143. package/dist/esm/components/toolbar/buttons.js +165 -0
  1144. package/dist/esm/components/toolbar/cell-style-selector.d.ts +25 -0
  1145. package/dist/esm/components/toolbar/cell-style-selector.d.ts.map +1 -0
  1146. package/dist/esm/components/toolbar/cell-style-selector.js +521 -0
  1147. package/dist/esm/components/toolbar/color-selector.d.ts +13 -0
  1148. package/dist/esm/components/toolbar/color-selector.d.ts.map +1 -0
  1149. package/dist/esm/components/toolbar/color-selector.js +52 -0
  1150. package/dist/esm/components/toolbar/font-family-selector.d.ts +22 -0
  1151. package/dist/esm/components/toolbar/font-family-selector.d.ts.map +1 -0
  1152. package/dist/esm/components/toolbar/font-family-selector.js +167 -0
  1153. package/dist/esm/components/toolbar/font-size-selector.d.ts +10 -0
  1154. package/dist/esm/components/toolbar/font-size-selector.d.ts.map +1 -0
  1155. package/dist/esm/components/toolbar/font-size-selector.js +139 -0
  1156. package/dist/esm/components/toolbar/index.d.ts +25 -0
  1157. package/dist/esm/components/toolbar/index.d.ts.map +1 -0
  1158. package/dist/esm/components/toolbar/index.js +24 -0
  1159. package/dist/esm/components/toolbar/insert-menu.d.ts +22 -0
  1160. package/dist/esm/components/toolbar/insert-menu.d.ts.map +1 -0
  1161. package/dist/esm/components/toolbar/insert-menu.js +143 -0
  1162. package/dist/esm/components/toolbar/merge-cells-selector.d.ts +15 -0
  1163. package/dist/esm/components/toolbar/merge-cells-selector.d.ts.map +1 -0
  1164. package/dist/esm/components/toolbar/merge-cells-selector.js +48 -0
  1165. package/dist/esm/components/toolbar/scale-selector.d.ts +13 -0
  1166. package/dist/esm/components/toolbar/scale-selector.d.ts.map +1 -0
  1167. package/dist/esm/components/toolbar/scale-selector.js +72 -0
  1168. package/dist/esm/components/toolbar/style.d.ts +3 -0
  1169. package/dist/esm/components/toolbar/style.d.ts.map +1 -0
  1170. package/dist/esm/components/toolbar/style.js +5 -0
  1171. package/dist/esm/components/toolbar/table-actions.d.ts +15 -0
  1172. package/dist/esm/components/toolbar/table-actions.d.ts.map +1 -0
  1173. package/dist/esm/components/toolbar/table-actions.js +37 -0
  1174. package/dist/esm/components/toolbar/table-style-selector.d.ts +25 -0
  1175. package/dist/esm/components/toolbar/table-style-selector.d.ts.map +1 -0
  1176. package/dist/esm/components/toolbar/table-style-selector.js +501 -0
  1177. package/dist/esm/components/toolbar/text-color-selector.d.ts +20 -0
  1178. package/dist/esm/components/toolbar/text-color-selector.d.ts.map +1 -0
  1179. package/dist/esm/components/toolbar/text-color-selector.js +28 -0
  1180. package/dist/esm/components/toolbar/text-format-selector.d.ts +23 -0
  1181. package/dist/esm/components/toolbar/text-format-selector.d.ts.map +1 -0
  1182. package/dist/esm/components/toolbar/text-format-selector.js +257 -0
  1183. package/dist/esm/components/toolbar/text-horizontal-align-selector.d.ts +10 -0
  1184. package/dist/esm/components/toolbar/text-horizontal-align-selector.d.ts.map +1 -0
  1185. package/dist/esm/components/toolbar/text-horizontal-align-selector.js +36 -0
  1186. package/dist/esm/components/toolbar/text-vertical-align-selector.d.ts +9 -0
  1187. package/dist/esm/components/toolbar/text-vertical-align-selector.d.ts.map +1 -0
  1188. package/dist/esm/components/toolbar/text-vertical-align-selector.js +36 -0
  1189. package/dist/esm/components/toolbar/text-wrap-selector.d.ts +9 -0
  1190. package/dist/esm/components/toolbar/text-wrap-selector.d.ts.map +1 -0
  1191. package/dist/esm/components/toolbar/text-wrap-selector.js +35 -0
  1192. package/dist/esm/components/toolbar/theme-selector.d.ts +10 -0
  1193. package/dist/esm/components/toolbar/theme-selector.d.ts.map +1 -0
  1194. package/dist/esm/components/toolbar/theme-selector.js +27 -0
  1195. package/dist/esm/components/toolbar/toolbar.d.ts +12 -0
  1196. package/dist/esm/components/toolbar/toolbar.d.ts.map +1 -0
  1197. package/dist/esm/components/toolbar/toolbar.js +133 -0
  1198. package/dist/esm/components/toolbar/types.d.ts +2 -0
  1199. package/dist/esm/components/toolbar/types.d.ts.map +1 -0
  1200. package/dist/esm/components/toolbar/types.js +1 -0
  1201. package/dist/esm/components/toolbar/view-menu.d.ts +25 -0
  1202. package/dist/esm/components/toolbar/view-menu.d.ts.map +1 -0
  1203. package/dist/esm/components/toolbar/view-menu.js +41 -0
  1204. package/dist/esm/components/validation-alert-dialog/index.d.ts +15 -0
  1205. package/dist/esm/components/validation-alert-dialog/index.d.ts.map +1 -0
  1206. package/dist/esm/components/validation-alert-dialog/index.js +63 -0
  1207. package/dist/esm/config.d.ts +107 -0
  1208. package/dist/esm/config.d.ts.map +1 -0
  1209. package/dist/esm/config.js +266 -0
  1210. package/dist/esm/helpers/merged-cell-borders.d.ts +26 -0
  1211. package/dist/esm/helpers/merged-cell-borders.d.ts.map +1 -0
  1212. package/dist/esm/helpers/merged-cell-borders.js +42 -0
  1213. package/dist/esm/helpers.d.ts +118 -0
  1214. package/dist/esm/helpers.d.ts.map +1 -0
  1215. package/dist/esm/helpers.js +455 -0
  1216. package/dist/esm/hooks/index.d.ts +11 -0
  1217. package/dist/esm/hooks/index.d.ts.map +1 -0
  1218. package/dist/esm/hooks/index.js +10 -0
  1219. package/dist/esm/hooks/show-zeros.d.ts +13 -0
  1220. package/dist/esm/hooks/show-zeros.d.ts.map +1 -0
  1221. package/dist/esm/hooks/show-zeros.js +19 -0
  1222. package/dist/esm/hooks/use-async.d.ts +2 -0
  1223. package/dist/esm/hooks/use-async.d.ts.map +1 -0
  1224. package/dist/esm/hooks/use-async.js +22 -0
  1225. package/dist/esm/hooks/use-border-styles.d.ts +31 -0
  1226. package/dist/esm/hooks/use-border-styles.d.ts.map +1 -0
  1227. package/dist/esm/hooks/use-border-styles.js +423 -0
  1228. package/dist/esm/hooks/use-callback-ref.d.ts +6 -0
  1229. package/dist/esm/hooks/use-callback-ref.d.ts.map +1 -0
  1230. package/dist/esm/hooks/use-callback-ref.js +15 -0
  1231. package/dist/esm/hooks/use-cell-diff-highlight.d.ts +43 -0
  1232. package/dist/esm/hooks/use-cell-diff-highlight.d.ts.map +1 -0
  1233. package/dist/esm/hooks/use-cell-diff-highlight.js +84 -0
  1234. package/dist/esm/hooks/use-cell-popover.d.ts +55 -0
  1235. package/dist/esm/hooks/use-cell-popover.d.ts.map +1 -0
  1236. package/dist/esm/hooks/use-cell-popover.js +91 -0
  1237. package/dist/esm/hooks/use-cell-renderer.d.ts +226 -0
  1238. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -0
  1239. package/dist/esm/hooks/use-cell-renderer.js +372 -0
  1240. package/dist/esm/hooks/use-column-color-icons.d.ts +43 -0
  1241. package/dist/esm/hooks/use-column-color-icons.d.ts.map +1 -0
  1242. package/dist/esm/hooks/use-column-color-icons.js +83 -0
  1243. package/dist/esm/hooks/use-conditional-formatting.d.ts +35 -0
  1244. package/dist/esm/hooks/use-conditional-formatting.d.ts.map +1 -0
  1245. package/dist/esm/hooks/use-conditional-formatting.js +497 -0
  1246. package/dist/esm/hooks/use-context-menu.d.ts +52 -0
  1247. package/dist/esm/hooks/use-context-menu.d.ts.map +1 -0
  1248. package/dist/esm/hooks/use-context-menu.js +75 -0
  1249. package/dist/esm/hooks/use-context-setter.d.ts +3 -0
  1250. package/dist/esm/hooks/use-context-setter.d.ts.map +1 -0
  1251. package/dist/esm/hooks/use-context-setter.js +128 -0
  1252. package/dist/esm/hooks/use-copy-paste-cut.d.ts +45 -0
  1253. package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -0
  1254. package/dist/esm/hooks/use-copy-paste-cut.js +253 -0
  1255. package/dist/esm/hooks/use-create-address-from-selection.d.ts +15 -0
  1256. package/dist/esm/hooks/use-create-address-from-selection.d.ts.map +1 -0
  1257. package/dist/esm/hooks/use-create-address-from-selection.js +69 -0
  1258. package/dist/esm/hooks/use-create-formula-tokenizer.d.ts +15 -0
  1259. package/dist/esm/hooks/use-create-formula-tokenizer.d.ts.map +1 -0
  1260. package/dist/esm/hooks/use-create-formula-tokenizer.js +48 -0
  1261. package/dist/esm/hooks/use-delayed-value.d.ts +8 -0
  1262. package/dist/esm/hooks/use-delayed-value.d.ts.map +1 -0
  1263. package/dist/esm/hooks/use-delayed-value.js +30 -0
  1264. package/dist/esm/hooks/use-editable.d.ts +366 -0
  1265. package/dist/esm/hooks/use-editable.d.ts.map +1 -0
  1266. package/dist/esm/hooks/use-editable.js +803 -0
  1267. package/dist/esm/hooks/use-editor-cancel.d.ts +25 -0
  1268. package/dist/esm/hooks/use-editor-cancel.d.ts.map +1 -0
  1269. package/dist/esm/hooks/use-editor-cancel.js +45 -0
  1270. package/dist/esm/hooks/use-editor-change.d.ts +13 -0
  1271. package/dist/esm/hooks/use-editor-change.d.ts.map +1 -0
  1272. package/dist/esm/hooks/use-editor-change.js +67 -0
  1273. package/dist/esm/hooks/use-editor-keydown.d.ts +11 -0
  1274. package/dist/esm/hooks/use-editor-keydown.d.ts.map +1 -0
  1275. package/dist/esm/hooks/use-editor-keydown.js +42 -0
  1276. package/dist/esm/hooks/use-editor-submit.d.ts +58 -0
  1277. package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -0
  1278. package/dist/esm/hooks/use-editor-submit.js +83 -0
  1279. package/dist/esm/hooks/use-embeds-charts.d.ts +193 -0
  1280. package/dist/esm/hooks/use-embeds-charts.d.ts.map +1 -0
  1281. package/dist/esm/hooks/use-embeds-charts.js +276 -0
  1282. package/dist/esm/hooks/use-expand-cell.d.ts +35 -0
  1283. package/dist/esm/hooks/use-expand-cell.d.ts.map +1 -0
  1284. package/dist/esm/hooks/use-expand-cell.js +46 -0
  1285. package/dist/esm/hooks/use-export-range.d.ts +36 -0
  1286. package/dist/esm/hooks/use-export-range.d.ts.map +1 -0
  1287. package/dist/esm/hooks/use-export-range.js +227 -0
  1288. package/dist/esm/hooks/use-filter.d.ts +46 -0
  1289. package/dist/esm/hooks/use-filter.d.ts.map +1 -0
  1290. package/dist/esm/hooks/use-filter.js +184 -0
  1291. package/dist/esm/hooks/use-flash.d.ts +18 -0
  1292. package/dist/esm/hooks/use-flash.d.ts.map +1 -0
  1293. package/dist/esm/hooks/use-flash.js +68 -0
  1294. package/dist/esm/hooks/use-fonts.d.ts +8 -0
  1295. package/dist/esm/hooks/use-fonts.d.ts.map +1 -0
  1296. package/dist/esm/hooks/use-fonts.js +14 -0
  1297. package/dist/esm/hooks/use-formula-range-helpers.d.ts +21 -0
  1298. package/dist/esm/hooks/use-formula-range-helpers.d.ts.map +1 -0
  1299. package/dist/esm/hooks/use-formula-range-helpers.js +60 -0
  1300. package/dist/esm/hooks/use-get-tooltip.d.ts +52 -0
  1301. package/dist/esm/hooks/use-get-tooltip.d.ts.map +1 -0
  1302. package/dist/esm/hooks/use-get-tooltip.js +57 -0
  1303. package/dist/esm/hooks/use-get-values-from-range.d.ts +44 -0
  1304. package/dist/esm/hooks/use-get-values-from-range.d.ts.map +1 -0
  1305. package/dist/esm/hooks/use-get-values-from-range.js +108 -0
  1306. package/dist/esm/hooks/use-grid-children.d.ts +31 -0
  1307. package/dist/esm/hooks/use-grid-children.d.ts.map +1 -0
  1308. package/dist/esm/hooks/use-grid-children.js +129 -0
  1309. package/dist/esm/hooks/use-header-actions.d.ts +70 -0
  1310. package/dist/esm/hooks/use-header-actions.d.ts.map +1 -0
  1311. package/dist/esm/hooks/use-header-actions.js +248 -0
  1312. package/dist/esm/hooks/use-hidden-dimension-markers.d.ts +20 -0
  1313. package/dist/esm/hooks/use-hidden-dimension-markers.d.ts.map +1 -0
  1314. package/dist/esm/hooks/use-hidden-dimension-markers.js +128 -0
  1315. package/dist/esm/hooks/use-hidden-dimensions.d.ts +7 -0
  1316. package/dist/esm/hooks/use-hidden-dimensions.d.ts.map +1 -0
  1317. package/dist/esm/hooks/use-hidden-dimensions.js +56 -0
  1318. package/dist/esm/hooks/use-hovered-selection-ids.d.ts +9 -0
  1319. package/dist/esm/hooks/use-hovered-selection-ids.d.ts.map +1 -0
  1320. package/dist/esm/hooks/use-hovered-selection-ids.js +25 -0
  1321. package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts +6 -0
  1322. package/dist/esm/hooks/use-isomorphic-layout-effect.d.ts.map +1 -0
  1323. package/dist/esm/hooks/use-isomorphic-layout-effect.js +8 -0
  1324. package/dist/esm/hooks/use-keyboard-handler.d.ts +57 -0
  1325. package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -0
  1326. package/dist/esm/hooks/use-keyboard-handler.js +472 -0
  1327. package/dist/esm/hooks/use-licensekey-validator.d.ts +16 -0
  1328. package/dist/esm/hooks/use-licensekey-validator.d.ts.map +1 -0
  1329. package/dist/esm/hooks/use-licensekey-validator.js +140 -0
  1330. package/dist/esm/hooks/use-memo-compare.d.ts +2 -0
  1331. package/dist/esm/hooks/use-memo-compare.d.ts.map +1 -0
  1332. package/dist/esm/hooks/use-memo-compare.js +13 -0
  1333. package/dist/esm/hooks/use-merge.refs.d.ts +4 -0
  1334. package/dist/esm/hooks/use-merge.refs.d.ts.map +1 -0
  1335. package/dist/esm/hooks/use-merge.refs.js +16 -0
  1336. package/dist/esm/hooks/use-move-columns-rows.d.ts +46 -0
  1337. package/dist/esm/hooks/use-move-columns-rows.d.ts.map +1 -0
  1338. package/dist/esm/hooks/use-move-columns-rows.js +333 -0
  1339. package/dist/esm/hooks/use-navigate-sheet-range.d.ts +16 -0
  1340. package/dist/esm/hooks/use-navigate-sheet-range.d.ts.map +1 -0
  1341. package/dist/esm/hooks/use-navigate-sheet-range.js +30 -0
  1342. package/dist/esm/hooks/use-previous.d.ts +3 -0
  1343. package/dist/esm/hooks/use-previous.d.ts.map +1 -0
  1344. package/dist/esm/hooks/use-previous.js +9 -0
  1345. package/dist/esm/hooks/use-raf.d.ts +6 -0
  1346. package/dist/esm/hooks/use-raf.d.ts.map +1 -0
  1347. package/dist/esm/hooks/use-raf.js +27 -0
  1348. package/dist/esm/hooks/use-resize-observer.d.ts +6 -0
  1349. package/dist/esm/hooks/use-resize-observer.d.ts.map +1 -0
  1350. package/dist/esm/hooks/use-resize-observer.js +40 -0
  1351. package/dist/esm/hooks/use-scale-listener.d.ts +11 -0
  1352. package/dist/esm/hooks/use-scale-listener.d.ts.map +1 -0
  1353. package/dist/esm/hooks/use-scale-listener.js +47 -0
  1354. package/dist/esm/hooks/use-selected-rows-columns.d.ts +21 -0
  1355. package/dist/esm/hooks/use-selected-rows-columns.d.ts.map +1 -0
  1356. package/dist/esm/hooks/use-selected-rows-columns.js +69 -0
  1357. package/dist/esm/hooks/use-selection-aware-formatting.d.ts +13 -0
  1358. package/dist/esm/hooks/use-selection-aware-formatting.d.ts.map +1 -0
  1359. package/dist/esm/hooks/use-selection-aware-formatting.js +39 -0
  1360. package/dist/esm/hooks/use-selection-change.d.ts +10 -0
  1361. package/dist/esm/hooks/use-selection-change.d.ts.map +1 -0
  1362. package/dist/esm/hooks/use-selection-change.js +57 -0
  1363. package/dist/esm/hooks/use-selection-interceptors.d.ts +34 -0
  1364. package/dist/esm/hooks/use-selection-interceptors.d.ts.map +1 -0
  1365. package/dist/esm/hooks/use-selection-interceptors.js +129 -0
  1366. package/dist/esm/hooks/use-selection-move.d.ts +31 -0
  1367. package/dist/esm/hooks/use-selection-move.d.ts.map +1 -0
  1368. package/dist/esm/hooks/use-selection-move.js +136 -0
  1369. package/dist/esm/hooks/use-selection-renderer.d.ts +46 -0
  1370. package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -0
  1371. package/dist/esm/hooks/use-selection-renderer.js +139 -0
  1372. package/dist/esm/hooks/use-selection-resize.d.ts +30 -0
  1373. package/dist/esm/hooks/use-selection-resize.d.ts.map +1 -0
  1374. package/dist/esm/hooks/use-selection-resize.js +160 -0
  1375. package/dist/esm/hooks/use-selection.d.ts +185 -0
  1376. package/dist/esm/hooks/use-selection.d.ts.map +1 -0
  1377. package/dist/esm/hooks/use-selection.js +1559 -0
  1378. package/dist/esm/hooks/use-sheet-change-handler.d.ts +3 -0
  1379. package/dist/esm/hooks/use-sheet-change-handler.d.ts.map +1 -0
  1380. package/dist/esm/hooks/use-sheet-change-handler.js +33 -0
  1381. package/dist/esm/hooks/use-sizer.d.ts +164 -0
  1382. package/dist/esm/hooks/use-sizer.d.ts.map +1 -0
  1383. package/dist/esm/hooks/use-sizer.js +357 -0
  1384. package/dist/esm/hooks/use-spreadsheet-theme.d.ts +17 -0
  1385. package/dist/esm/hooks/use-spreadsheet-theme.d.ts.map +1 -0
  1386. package/dist/esm/hooks/use-spreadsheet-theme.js +50 -0
  1387. package/dist/esm/hooks/use-stable-ref.d.ts +2 -0
  1388. package/dist/esm/hooks/use-stable-ref.d.ts.map +1 -0
  1389. package/dist/esm/hooks/use-stable-ref.js +10 -0
  1390. package/dist/esm/hooks/use-structured-reference-selection.d.ts +23 -0
  1391. package/dist/esm/hooks/use-structured-reference-selection.d.ts.map +1 -0
  1392. package/dist/esm/hooks/use-structured-reference-selection.js +118 -0
  1393. package/dist/esm/hooks/use-table-resizer.d.ts +23 -0
  1394. package/dist/esm/hooks/use-table-resizer.d.ts.map +1 -0
  1395. package/dist/esm/hooks/use-table-resizer.js +108 -0
  1396. package/dist/esm/hooks/use-text-dimensions.d.ts +16 -0
  1397. package/dist/esm/hooks/use-text-dimensions.d.ts.map +1 -0
  1398. package/dist/esm/hooks/use-text-dimensions.js +35 -0
  1399. package/dist/esm/hooks/use-tooltip.d.ts +70 -0
  1400. package/dist/esm/hooks/use-tooltip.d.ts.map +1 -0
  1401. package/dist/esm/hooks/use-tooltip.js +83 -0
  1402. package/dist/esm/hooks/use-touch.d.ts +16 -0
  1403. package/dist/esm/hooks/use-touch.d.ts.map +1 -0
  1404. package/dist/esm/hooks/use-touch.js +224 -0
  1405. package/dist/esm/index.d.ts +69 -0
  1406. package/dist/esm/index.d.ts.map +1 -0
  1407. package/dist/esm/index.js +75 -0
  1408. package/dist/esm/providers/spreadsheet-provider.d.ts +25 -0
  1409. package/dist/esm/providers/spreadsheet-provider.d.ts.map +1 -0
  1410. package/dist/esm/providers/spreadsheet-provider.js +27 -0
  1411. package/dist/esm/release-date.d.ts +2 -0
  1412. package/dist/esm/release-date.d.ts.map +1 -0
  1413. package/dist/esm/release-date.js +3 -0
  1414. package/dist/esm/signals/scroll-subscriber.d.ts +4 -0
  1415. package/dist/esm/signals/scroll-subscriber.d.ts.map +1 -0
  1416. package/dist/esm/signals/scroll-subscriber.js +2 -0
  1417. package/dist/esm/test-setup.d.ts +2 -0
  1418. package/dist/esm/test-setup.d.ts.map +1 -0
  1419. package/dist/esm/test-setup.js +15 -0
  1420. package/dist/esm/themes.d.ts +13 -0
  1421. package/dist/esm/themes.d.ts.map +1 -0
  1422. package/dist/esm/themes.js +264 -0
  1423. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  1424. package/dist/esm/types.d.ts +1215 -0
  1425. package/dist/esm/types.d.ts.map +1 -0
  1426. package/dist/esm/types.js +8 -0
  1427. package/dist/esm/utils/maybe.d.ts +12 -0
  1428. package/dist/esm/utils/maybe.d.ts.map +1 -0
  1429. package/dist/esm/utils/maybe.js +14 -0
  1430. package/dist/esm/vitest.config.d.ts +3 -0
  1431. package/dist/esm/vitest.config.d.ts.map +1 -0
  1432. package/dist/esm/vitest.config.js +22 -0
  1433. package/dist/spreadsheet.min.css +1 -0
  1434. package/package.json +73 -0
@@ -0,0 +1,3413 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CanvasGrid = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var calculator_1 = require("@rowsncolumns/calculator");
6
+ var grid_1 = require("@rowsncolumns/grid");
7
+ var grid_2 = require("@rowsncolumns/grid");
8
+ var grid_3 = require("@rowsncolumns/grid");
9
+ var grid_4 = require("@rowsncolumns/grid");
10
+ var grid_5 = require("@rowsncolumns/grid");
11
+ var spreadsheet_state_1 = require("@rowsncolumns/spreadsheet-state");
12
+ var ui_1 = require("@rowsncolumns/ui");
13
+ var utils_1 = require("@rowsncolumns/utils");
14
+ var jotai_1 = require("jotai");
15
+ var merge_1 = tslib_1.__importDefault(require("lodash/merge"));
16
+ var throttle_1 = tslib_1.__importDefault(require("lodash/throttle"));
17
+ var react_1 = tslib_1.__importStar(require("react"));
18
+ var banded_ranges_1 = require("../../api/banded-ranges");
19
+ var cf_window_1 = require("../../api/cf-window");
20
+ var selections_1 = require("../../api/selections");
21
+ var spreadsheet_api_1 = require("../../api/spreadsheet-api");
22
+ var table_1 = require("../../api/table");
23
+ var validation_1 = require("../../api/validation");
24
+ var atoms_1 = require("../../atoms");
25
+ var active_editor_atom_1 = require("../../atoms/active-editor.atom");
26
+ var editing_cell_atom_1 = require("../../atoms/editing-cell.atom");
27
+ var formula_bar_editor_value_atom_1 = require("../../atoms/formula-bar-editor-value.atom");
28
+ var formula_selection_state_atom_1 = require("../../atoms/formula-selection-state.atom");
29
+ var formula_selections_atom_1 = require("../../atoms/formula-selections.atom");
30
+ var magic_fill_state_atom_1 = require("../../atoms/magic-fill-state.atom");
31
+ var show_formula_help_atom_1 = require("../../atoms/show-formula-help.atom");
32
+ var spreadsheet_api_atom_1 = require("../../atoms/spreadsheet-api.atom");
33
+ var config_1 = require("../../config");
34
+ var helpers_1 = require("../../helpers");
35
+ var use_border_styles_1 = require("../../hooks/use-border-styles");
36
+ var use_callback_ref_1 = require("../../hooks/use-callback-ref");
37
+ var use_cell_popover_1 = require("../../hooks/use-cell-popover");
38
+ var use_cell_renderer_1 = require("../../hooks/use-cell-renderer");
39
+ var use_conditional_formatting_1 = require("../../hooks/use-conditional-formatting");
40
+ var use_context_menu_1 = require("../../hooks/use-context-menu");
41
+ var use_context_setter_1 = require("../../hooks/use-context-setter");
42
+ var use_copy_paste_cut_1 = require("../../hooks/use-copy-paste-cut");
43
+ var use_create_address_from_selection_1 = require("../../hooks/use-create-address-from-selection");
44
+ var use_create_formula_tokenizer_1 = require("../../hooks/use-create-formula-tokenizer");
45
+ var use_editable_1 = require("../../hooks/use-editable");
46
+ var use_editor_cancel_1 = require("../../hooks/use-editor-cancel");
47
+ var use_editor_change_1 = require("../../hooks/use-editor-change");
48
+ var use_editor_keydown_1 = require("../../hooks/use-editor-keydown");
49
+ var use_editor_submit_1 = require("../../hooks/use-editor-submit");
50
+ var use_embeds_charts_1 = require("../../hooks/use-embeds-charts");
51
+ var use_expand_cell_1 = require("../../hooks/use-expand-cell");
52
+ var use_export_range_1 = require("../../hooks/use-export-range");
53
+ var use_filter_1 = require("../../hooks/use-filter");
54
+ var use_flash_1 = require("../../hooks/use-flash");
55
+ var use_get_tooltip_1 = require("../../hooks/use-get-tooltip");
56
+ var use_get_values_from_range_1 = require("../../hooks/use-get-values-from-range");
57
+ var use_grid_children_1 = require("../../hooks/use-grid-children");
58
+ var use_header_actions_1 = require("../../hooks/use-header-actions");
59
+ var use_hidden_dimension_markers_1 = require("../../hooks/use-hidden-dimension-markers");
60
+ var use_hidden_dimensions_1 = require("../../hooks/use-hidden-dimensions");
61
+ var use_hovered_selection_ids_1 = require("../../hooks/use-hovered-selection-ids");
62
+ var use_isomorphic_layout_effect_1 = require("../../hooks/use-isomorphic-layout-effect");
63
+ var use_keyboard_handler_1 = require("../../hooks/use-keyboard-handler");
64
+ var use_licensekey_validator_1 = require("../../hooks/use-licensekey-validator");
65
+ var use_move_columns_rows_1 = require("../../hooks/use-move-columns-rows");
66
+ var use_navigate_sheet_range_1 = require("../../hooks/use-navigate-sheet-range");
67
+ var use_raf_1 = require("../../hooks/use-raf");
68
+ var use_resize_observer_1 = require("../../hooks/use-resize-observer");
69
+ var use_scale_listener_1 = require("../../hooks/use-scale-listener");
70
+ var use_selected_rows_columns_1 = require("../../hooks/use-selected-rows-columns");
71
+ var use_selection_1 = require("../../hooks/use-selection");
72
+ var use_selection_change_1 = require("../../hooks/use-selection-change");
73
+ var use_selection_interceptors_1 = require("../../hooks/use-selection-interceptors");
74
+ var use_selection_move_1 = require("../../hooks/use-selection-move");
75
+ var use_selection_renderer_1 = require("../../hooks/use-selection-renderer");
76
+ var use_selection_resize_1 = require("../../hooks/use-selection-resize");
77
+ var use_sheet_change_handler_1 = require("../../hooks/use-sheet-change-handler");
78
+ var use_sizer_1 = require("../../hooks/use-sizer");
79
+ var use_stable_ref_1 = require("../../hooks/use-stable-ref");
80
+ var use_structured_reference_selection_1 = require("../../hooks/use-structured-reference-selection");
81
+ var use_table_resizer_1 = require("../../hooks/use-table-resizer");
82
+ var use_delayed_value_1 = require("../../hooks/use-delayed-value");
83
+ var use_tooltip_1 = require("../../hooks/use-tooltip");
84
+ var use_touch_1 = require("../../hooks/use-touch");
85
+ var spreadsheet_provider_1 = require("../../providers/spreadsheet-provider");
86
+ var scroll_subscriber_1 = require("../../signals/scroll-subscriber");
87
+ var themes_1 = require("../../themes");
88
+ var cell_1 = require("../cell");
89
+ var cell_editor_1 = require("../cell-editor");
90
+ var context_menu_1 = require("../context-menu");
91
+ var fill_handle_1 = require("../fill-handle");
92
+ var filter_box_1 = require("../filter-box");
93
+ var header_cell_1 = require("../header-cell");
94
+ var header_move_1 = require("../header-move");
95
+ var pivot_placeholder_1 = require("../pivot-placeholder");
96
+ var title_1 = require("../selection/title");
97
+ var cell_structured_1 = require("./../cell-structured");
98
+ var helpers_2 = require("./helpers");
99
+ /**
100
+ * CanvasGrid Component
101
+ * @param ShetGridProps
102
+ * @param CanvasGridMethods
103
+ * @returns
104
+ */
105
+ function CanvasGridComponent(props, forwardedRef) {
106
+ var licenseKey = props.licenseKey, sheetId = props.sheetId, instanceId = props.instanceId, _a = props.activeCell, activeCell = _a === void 0 ? config_1.DEFAULT_ACTIVE_CELL : _a, _b = props.selections, selections = _b === void 0 ? config_1.DEFAULT_ARRAY : _b, _c = props.frozenColumnCount, frozenColumnCount = _c === void 0 ? 0 : _c, _d = props.frozenRowCount, frozenRowCount = _d === void 0 ? 0 : _d, _e = props.rowCount, rowCount = _e === void 0 ? config_1.DEFAULT_ROW_COUNT : _e, _f = props.columnCount, columnCount = _f === void 0 ? config_1.DEFAULT_COLUMN_COUNT : _f, autoFocus = props.autoFocus, basicFilter = props.basicFilter, tables = props.tables, namedRanges = props.namedRanges, _g = props.bandedRanges, bandedRanges = _g === void 0 ? config_1.DEFAULT_ARRAY : _g, _h = props.tableBorderColor, tableBorderColor = _h === void 0 ? "#008000" : _h, _j = props.filterIconColor, filterIconColor = _j === void 0 ? "#008000" : _j, conditionalFormats = props.conditionalFormats, _k = props.showFilterIcon, showFilterIcon = _k === void 0 ? true : _k, _l = props.showCalculatedColumnIcon, showCalculatedColumnIcon = _l === void 0 ? true : _l, _m = props.showHeaders, showHeaders = _m === void 0 ? true : _m, _o = props.defaultColumnWidth, defaultColumnWidth = _o === void 0 ? config_1.DEFAULT_COLUMN_WIDTH : _o, _p = props.defaultRowHeight, defaultRowHeight = _p === void 0 ? config_1.DEFAULT_ROW_HEIGHT : _p, _q = props.columnHeaderHeight, columnHeaderHeight = _q === void 0 ? config_1.COLUMN_HEADER_HEIGHT : _q, _r = props.rowHeaderWidth, rowHeaderWidth = _r === void 0 ? config_1.ROW_HEADER_WIDTH : _r, _s = props.gridLineColor, gridLineColor = _s === void 0 ? config_1.GRIDLINE_COLOR : _s, _t = props.cellBackgroundColor, cellBackgroundColor = _t === void 0 ? config_1.DEFAULT_CELL_BACKGROUND_COLOR : _t, _u = props.cellColor, cellColor = _u === void 0 ? config_1.DEFAULT_CELL_COLOR : _u, _v = props.headerBorderColor, headerBorderColor = _v === void 0 ? config_1.DEFAULT_HEADER_BORDER_COLOR : _v, _w = props.headerBackgroundColor, headerBackgroundColor = _w === void 0 ? config_1.DEFAULT_HEADER_BG : _w, _x = props.headerColor, headerColor = _x === void 0 ? config_1.DEFAULT_HEADER_COLOR : _x, _y = props.headerActiveBackgroundColor, headerActiveBackgroundColor = _y === void 0 ? config_1.DEFAULT_HEADER_ACTIVE_BG : _y, _z = props.headerSelectedBackgroundColor, headerSelectedBackgroundColor = _z === void 0 ? config_1.DEFAULT_HEADER_SELECTED_BG : _z, _0 = props.headerSelectedColor, headerSelectedColor = _0 === void 0 ? "white" : _0, _1 = props.headerTableBackgroundColor, headerTableBackgroundColor = _1 === void 0 ? config_1.DEFAULT_HEADER_TABLE_BG : _1, _2 = props.headerTableActiveBackgroundColor, headerTableActiveBackgroundColor = _2 === void 0 ? config_1.DEFAULT_HEADER_ACTIVE_TABLE_BG : _2, _3 = props.headerTableSelectedBackgroundColor, headerTableSelectedBackgroundColor = _3 === void 0 ? config_1.DEFAULT_HEADER_SELECTED_TABLE_BG : _3, _4 = props.frozenShadowColor, frozenShadowColor = _4 === void 0 ? headerBorderColor : _4, _5 = props.frozenShadowThickness, frozenShadowThickness = _5 === void 0 ? 1 : _5, _6 = props.selectionBackgroundColor, selectionBackgroundColor = _6 === void 0 ? config_1.SELECTION_BG : _6, _7 = props.selectionBorderColor, selectionBorderColor = _7 === void 0 ? config_1.SELECTION_BORDER : _7, _8 = props.selectionDragBorderColor, selectionDragBorderColor = _8 === void 0 ? config_1.SELECTION_BORDER : _8, chartSelectedColor = props.chartSelectedColor, _9 = props.chipBackgroundColor, chipBackgroundColor = _9 === void 0 ? config_1.CHIP_COLOR : _9, _10 = props.merges, merges = _10 === void 0 ? config_1.DEFAULT_ARRAY : _10, borderStyles = props.borderStyles, protectedRanges = props.protectedRanges, _11 = props.isWorkbookProtected, isWorkbookProtectedProp = _11 === void 0 ? false : _11, getSheetProtection = props.getSheetProtection, pivotTables = props.pivotTables, charts = props.charts, embeds = props.embeds, slicers = props.slicers, _12 = props.rowMetadata, rowMetadata = _12 === void 0 ? config_1.DEFAULT_ARRAY : _12, _13 = props.columnMetadata, columnMetadata = _13 === void 0 ? config_1.DEFAULT_ARRAY : _13, _14 = props.scale, scale = _14 === void 0 ? 1 : _14, _15 = props.zoomSpeed, zoomSpeed = _15 === void 0 ? 1 : _15, _16 = props.overscanCount, overscanCount = _16 === void 0 ? 3 : _16, _17 = props.enableEditOnEnterKey, enableEditOnEnterKey = _17 === void 0 ? true : _17, _18 = props.enableTextOverflow, enableTextOverflow = _18 === void 0 ? true : _18, _showGridLines = props.showGridLines, _19 = props.showFormulas, showFormulas = _19 === void 0 ? false : _19, _20 = props.protectFormulas, protectFormulas = _20 === void 0 ? false : _20, _21 = props.showFrozenSeparator, showFrozenSeparator = _21 === void 0 ? true : _21, _22 = props.HeaderCell, HeaderCell = _22 === void 0 ? header_cell_1.HeaderCell : _22, _23 = props.Cell, Cell = _23 === void 0 ? cell_1.Cell : _23, _24 = props.SelectionTitleComponent, SelectionTitleComponent = _24 === void 0 ? title_1.SelectionTitle : _24, _25 = props.CellEditor, CellEditor = _25 === void 0 ? cell_editor_1.CellEditor : _25, CellTooltip = props.CellTooltip, _26 = props.ContextMenu, ContextMenu = _26 === void 0 ? context_menu_1.ContextMenu : _26, _27 = props.ContextMenuWrapper, ContextMenuWrapper = _27 === void 0 ? use_context_menu_1.DefaultContextMenuWrapper : _27, _28 = props.FilterBox, FilterBox = _28 === void 0 ? filter_box_1.FilterBox : _28, _29 = props.HeaderMoveDragComponent, HeaderMoveDragComponent = _29 === void 0 ? header_move_1.HeaderMoveDragComponent : _29, SuggestionsDropdown = props.SuggestionsDropdown, _30 = props.stickyEditor, stickyEditor = _30 === void 0 ? true : _30, _31 = props.scrollSnap, scrollSnap = _31 === void 0 ? false : _31, scrollThrottleTimeout = props.scrollThrottleTimeout, preventBrowserDefaultScroll = props.preventBrowserDefaultScroll, _32 = props.mouseMoveThrottleTimeout, mouseMoveThrottleTimeout = _32 === void 0 ? 60 : _32, _33 = props.tooltipIntentInterval, tooltipIntentInterval = _33 === void 0 ? 60 : _33, selectionPolicy = props.selectionPolicy, users = props.users, userId = props.userId, renderCollaboratorCursor = props.renderCollaboratorCursor, functionDescriptions = props.functionDescriptions, _34 = props.showHeaderMenuButton, showHeaderMenuButton = _34 === void 0 ? true : _34, _35 = props.scrollbarSize, scrollbarSize = _35 === void 0 ? config_1.SCROLLBAR_SIZE : _35, _36 = props.theme, theme = _36 === void 0 ? config_1.defaultSpreadsheetTheme : _36, _37 = props.showNotes, showNotes = _37 === void 0 ? true : _37, _38 = props.showComments, showComments = _38 === void 0 ? true : _38, locale = props.locale, agentSuggestions = props.agentSuggestions, onReviewSuggestion = props.onReviewSuggestion, onShowFormulas = props.onShowFormulas, getDataRowCount = props.getDataRowCount, getChartComponent = props.getChartComponent, getEmbedComponent = props.getEmbedComponent, getSlicerComponent = props.getSlicerComponent, onChange = props.onChange, onChangeBatch = props.onChangeBatch, onExpandCollapse = props.onExpandCollapse, onPivotDrillDown = props.onPivotDrillDown, onDelete = props.onDelete, onChangeEditorValue = props.onChangeEditorValue, onFill = props.onFill, onRequestCalculate = props.onRequestCalculate, onChangeActiveCell = props.onChangeActiveCell, onChangeActiveSheet = props.onChangeActiveSheet, onChangeSelections = props.onChangeSelections, getSheetName = props.getSheetName, getSheetId = props.getSheetId, getCellData = props.getCellData, getNoteProp = props.getNote, getTextFormatRuns = props.getTextFormatRuns, getDataValidation = props.getDataValidation, getEffectiveFormat = props.getEffectiveFormat, getFormattedValueProp = props.getFormattedValue, getTooltipContent = props.getTooltipContent, errorResolutionComponent = props.errorResolutionComponent, getEffectiveValueProp = props.getEffectiveValue, getUserEnteredExtendedValue = props.getUserEnteredExtendedValue, getEffectiveExtendedValue = props.getEffectiveExtendedValue, getSheetRowCount = props.getSheetRowCount, getSheetColumnCount = props.getSheetColumnCount, getCellPopoverContent = props.getCellPopoverContent, onScroll = props.onScroll, onViewPortChange = props.onViewPortChange, _39 = props.windowConditionalFormats, windowConditionalFormats = _39 === void 0 ? false : _39, _40 = props.engineConditionalFormatResults, engineConditionalFormatResults = _40 === void 0 ? false : _40, onResize = props.onResize, onAutoResize = props.onAutoResize, onHideColumn = props.onHideColumn, onHideRow = props.onHideRow, onShowColumn = props.onShowColumn, onShowRow = props.onShowRow, onGroupRows = props.onGroupRows, onUngroupRows = props.onUngroupRows, onCollapseRowGroup = props.onCollapseRowGroup, onExpandRowGroup = props.onExpandRowGroup, onGroupColumns = props.onGroupColumns, onUngroupColumns = props.onUngroupColumns, onCollapseColumnGroup = props.onCollapseColumnGroup, onExpandColumnGroup = props.onExpandColumnGroup, onSetOutlineDepth = props.onSetOutlineDepth, onDeleteRow = props.onDeleteRow, onDeleteColumn = props.onDeleteColumn, onInsertRow = props.onInsertRow, onInsertColumn = props.onInsertColumn, onInsertCellsShiftDown = props.onInsertCellsShiftDown, onInsertCellsShiftRight = props.onInsertCellsShiftRight, onDeleteCellsShiftLeft = props.onDeleteCellsShiftLeft, onDeleteCellsShiftUp = props.onDeleteCellsShiftUp, onClearContents = props.onClearContents, onMoveColumns = props.onMoveColumns, onMoveRows = props.onMoveRows, onSelectNextSheet = props.onSelectNextSheet, onSelectPreviousSheet = props.onSelectPreviousSheet, onCreateNewSheet = props.onCreateNewSheet, onKeyDown = props.onKeyDown, onChangeFormatting = props.onChangeFormatting, onRepeatFormatting = props.onRepeatFormatting, onClearFormatting = props.onClearFormatting, onRequestEditProtectedRange = props.onRequestEditProtectedRange, onMoveChart = props.onMoveChart, onResizeChart = props.onResizeChart, onDeleteChart = props.onDeleteChart, onMoveEmbed = props.onMoveEmbed, onResizeEmbed = props.onResizeEmbed, onDeleteEmbed = props.onDeleteEmbed, onRequestEditEmbed = props.onRequestEditEmbed, onMoveSlicer = props.onMoveSlicer, onResizeSlicer = props.onResizeSlicer, onDeleteSlicer = props.onDeleteSlicer, onRequestEditSlicer = props.onRequestEditSlicer, onFillRange = props.onFillRange, disableFillRightShortcut = props.disableFillRightShortcut, onMoveSelection = props.onMoveSelection, onInsertTime = props.onInsertTime, onInsertDate = props.onInsertDate, onInsertDateTime = props.onInsertDateTime, onInsertAutoSum = props.onInsertAutoSum, onUndo = props.onUndo, onRedo = props.onRedo, onPaste = props.onPaste, onCopy = props.onCopy, onCut = props.onCut, onSortColumn = props.onSortColumn, onSortTable = props.onSortTable, onFilterTable = props.onFilterTable, onFilterPivot = props.onFilterPivot, onResizeTable = props.onResizeTable, onRequestEditTable = props.onRequestEditTable, onRequestEditPivotTable = props.onRequestEditPivotTable, onRequestDeletePivotTable = props.onRequestDeletePivotTable, onRemoveTable = props.onRemoveTable, onCreateTable = props.onCreateTable, onInsertTableColumn = props.onInsertTableColumn, onDeleteTableColumn = props.onDeleteTableColumn, onInsertTableRow = props.onInsertTableRow, onDeleteTableRow = props.onDeleteTableRow, onCreateBasicFilter = props.onCreateBasicFilter, onRequestDefineNamedRange = props.onRequestDefineNamedRange, onRequestFormatCells = props.onRequestFormatCells, onRequestConditionalFormat = props.onRequestConditionalFormat, onRequestDataValidation = props.onRequestDataValidation, onRequestInsertComment = props.onRequestInsertComment, onRequestInsertLink = props.onRequestInsertLink, onFreezeColumn = props.onFreezeColumn, onFreezeRow = props.onFreezeRow, onUpdateNote = props.onUpdateNote, onProtectRange = props.onProtectRange, onUnProtectRange = props.onUnProtectRange, onSortRange = props.onSortRange, onRequestSearch = props.onRequestSearch, onRequestReplace = props.onRequestReplace, onRequestResize = props.onRequestResize, _41 = props.getRowHeaderText, getRowHeaderText = _41 === void 0 ? helpers_1.getDefaultRowHeader : _41, _42 = props.getColumnHeaderText, getColumnHeaderText = _42 === void 0 ? helpers_1.getDefaultColumnHeader : _42, getAdditionalCellSpacing = props.getAdditionalCellSpacing, _43 = props.tokenizer, defaultTokenizer = _43 === void 0 ? calculator_1.tokenize : _43, onChangeScale = props.onChangeScale, onRemoveLink = props.onRemoveLink, onSelectLink = props.onSelectLink, onSplitTextToColumns = props.onSplitTextToColumns, onRemoveDuplicates = props.onRemoveDuplicates, onRequestExpand = props.onRequestExpand, cellExpandPredicate = props.cellExpandPredicate, _44 = props.StructuredResult, StructuredResult = _44 === void 0 ? cell_structured_1.StructuredResultRenderer : _44, getMentions = props.getMentions, getStructuredPropertiesProp = props.getStructuredProperties, getFunctionParameterSuggestions = props.getFunctionParameterSuggestions, shouldFetchFunctionParameters = props.shouldFetchFunctionParameters, MentionTagComponent = props.MentionTagComponent, MentionDropdownItemComponent = props.MentionDropdownItemComponent, _45 = props.showSelectionResizeHandles, showSelectionResizeHandles = _45 === void 0 ? true : _45, enableMagicFill = props.enableMagicFill, _46 = props.enableQuickEdit, enableQuickEdit = _46 === void 0 ? true : _46, MagicFillComponent = props.MagicFillComponent, MagicFillContent = props.MagicFillContent, QuickEdit = props.QuickEdit, PasteMenu = props.PasteMenu, SuggestionAction = props.SuggestionAction, HiddenRowMarkers = props.HiddenRowMarkers, HiddenColumnMarkers = props.HiddenColumnMarkers, enableResizerOverflow = props.enableResizerOverflow, className = props.className, _47 = props.defaultFontSizePoint, defaultFontSizePoint = _47 === void 0 ? config_1.DEFAULT_FONT_SIZE_PT : _47, readonly = props.readonly, _48 = props.isComparing, isComparing = _48 === void 0 ? false : _48, getCellDiff = props.getCellDiff, enableDataBoundaryNavigation = props.enableDataBoundaryNavigation, footerHeight = props.footerHeight, footerComponent = props.footerComponent, arrowComponents = props.arrowComponents,
107
+ // Host-driven filter props. `hostHiddenRowRanges`
108
+ // supplies compact [start, end] hidden-row tuples; `getFilterValues` supplies a
109
+ // column's distinct values. Both let a million-row filter render without scanning
110
+ // or materializing per-row state. Destructured here so they're excluded from
111
+ // `...rest` (never spread onto BaseGrid).
112
+ hostHiddenRowRanges = props.hostHiddenRowRanges, getFilterValues = props.getFilterValues, getFilterColors = props.getFilterColors,
113
+ // Optional full-store per-cell reader for data-validation source ranges (dropdown
114
+ // options + commit-time checks). Windowed hosts supply an off-window-safe reader;
115
+ // defaults to `getFormattedValue` inside `useGetValuesFromRange`.
116
+ getValidationSourceValue = props.getValidationSourceValue,
117
+ // Unused props only for api
118
+ onChangeBorder = props.onChangeBorder, onDuplicateSheet = props.onDuplicateSheet, onCreateConditionalFormattingRule = props.onCreateConditionalFormattingRule, onDeleteConditionalFormattingRule = props.onDeleteConditionalFormattingRule, onUpdateConditionalFormattingRule = props.onUpdateConditionalFormattingRule, onCreateDataValidationRule = props.onCreateDataValidationRule, onUpdateDataValidationRule = props.onUpdateDataValidationRule, onDeleteDataValidationRule = props.onDeleteDataValidationRule, onCreateChart = props.onCreateChart, onDeleteSheet = props.onDeleteSheet, onCreateEmbed = props.onCreateEmbed, onDecreaseIndent = props.onDecreaseIndent, onIncreaseIndent = props.onIncreaseIndent, onChangeTheme = props.onChangeTheme, onChangeDecimals = props.onChangeDecimals, onUpdateSheet = props.onUpdateSheet, onChangeBatchStream = props.onChangeBatchStream, onBlur = props.onBlur, rest = tslib_1.__rest(props, ["licenseKey", "sheetId", "instanceId", "activeCell", "selections", "frozenColumnCount", "frozenRowCount", "rowCount", "columnCount", "autoFocus", "basicFilter", "tables", "namedRanges", "bandedRanges", "tableBorderColor", "filterIconColor", "conditionalFormats", "showFilterIcon", "showCalculatedColumnIcon", "showHeaders", "defaultColumnWidth", "defaultRowHeight", "columnHeaderHeight", "rowHeaderWidth", "gridLineColor", "cellBackgroundColor", "cellColor", "headerBorderColor", "headerBackgroundColor", "headerColor", "headerActiveBackgroundColor", "headerSelectedBackgroundColor", "headerSelectedColor", "headerTableBackgroundColor", "headerTableActiveBackgroundColor", "headerTableSelectedBackgroundColor", "frozenShadowColor", "frozenShadowThickness", "selectionBackgroundColor", "selectionBorderColor", "selectionDragBorderColor", "chartSelectedColor", "chipBackgroundColor", "merges", "borderStyles", "protectedRanges", "isWorkbookProtected", "getSheetProtection", "pivotTables", "charts", "embeds", "slicers", "rowMetadata", "columnMetadata", "scale", "zoomSpeed", "overscanCount", "enableEditOnEnterKey", "enableTextOverflow", "showGridLines", "showFormulas", "protectFormulas", "showFrozenSeparator", "HeaderCell", "Cell", "SelectionTitleComponent", "CellEditor", "CellTooltip", "ContextMenu", "ContextMenuWrapper", "FilterBox", "HeaderMoveDragComponent", "SuggestionsDropdown", "stickyEditor", "scrollSnap", "scrollThrottleTimeout", "preventBrowserDefaultScroll", "mouseMoveThrottleTimeout", "tooltipIntentInterval", "selectionPolicy", "users", "userId", "renderCollaboratorCursor", "functionDescriptions", "showHeaderMenuButton", "scrollbarSize", "theme", "showNotes", "showComments", "locale", "agentSuggestions", "onReviewSuggestion", "onShowFormulas", "getDataRowCount", "getChartComponent", "getEmbedComponent", "getSlicerComponent", "onChange", "onChangeBatch", "onExpandCollapse", "onPivotDrillDown", "onDelete", "onChangeEditorValue", "onFill", "onRequestCalculate", "onChangeActiveCell", "onChangeActiveSheet", "onChangeSelections", "getSheetName", "getSheetId", "getCellData", "getNote", "getTextFormatRuns", "getDataValidation", "getEffectiveFormat", "getFormattedValue", "getTooltipContent", "errorResolutionComponent", "getEffectiveValue", "getUserEnteredExtendedValue", "getEffectiveExtendedValue", "getSheetRowCount", "getSheetColumnCount", "getCellPopoverContent", "onScroll", "onViewPortChange", "windowConditionalFormats", "engineConditionalFormatResults", "onResize", "onAutoResize", "onHideColumn", "onHideRow", "onShowColumn", "onShowRow", "onGroupRows", "onUngroupRows", "onCollapseRowGroup", "onExpandRowGroup", "onGroupColumns", "onUngroupColumns", "onCollapseColumnGroup", "onExpandColumnGroup", "onSetOutlineDepth", "onDeleteRow", "onDeleteColumn", "onInsertRow", "onInsertColumn", "onInsertCellsShiftDown", "onInsertCellsShiftRight", "onDeleteCellsShiftLeft", "onDeleteCellsShiftUp", "onClearContents", "onMoveColumns", "onMoveRows", "onSelectNextSheet", "onSelectPreviousSheet", "onCreateNewSheet", "onKeyDown", "onChangeFormatting", "onRepeatFormatting", "onClearFormatting", "onRequestEditProtectedRange", "onMoveChart", "onResizeChart", "onDeleteChart", "onMoveEmbed", "onResizeEmbed", "onDeleteEmbed", "onRequestEditEmbed", "onMoveSlicer", "onResizeSlicer", "onDeleteSlicer", "onRequestEditSlicer", "onFillRange", "disableFillRightShortcut", "onMoveSelection", "onInsertTime", "onInsertDate", "onInsertDateTime", "onInsertAutoSum", "onUndo", "onRedo", "onPaste", "onCopy", "onCut", "onSortColumn", "onSortTable", "onFilterTable", "onFilterPivot", "onResizeTable", "onRequestEditTable", "onRequestEditPivotTable", "onRequestDeletePivotTable", "onRemoveTable", "onCreateTable", "onInsertTableColumn", "onDeleteTableColumn", "onInsertTableRow", "onDeleteTableRow", "onCreateBasicFilter", "onRequestDefineNamedRange", "onRequestFormatCells", "onRequestConditionalFormat", "onRequestDataValidation", "onRequestInsertComment", "onRequestInsertLink", "onFreezeColumn", "onFreezeRow", "onUpdateNote", "onProtectRange", "onUnProtectRange", "onSortRange", "onRequestSearch", "onRequestReplace", "onRequestResize", "getRowHeaderText", "getColumnHeaderText", "getAdditionalCellSpacing", "tokenizer", "onChangeScale", "onRemoveLink", "onSelectLink", "onSplitTextToColumns", "onRemoveDuplicates", "onRequestExpand", "cellExpandPredicate", "StructuredResult", "getMentions", "getStructuredProperties", "getFunctionParameterSuggestions", "shouldFetchFunctionParameters", "MentionTagComponent", "MentionDropdownItemComponent", "showSelectionResizeHandles", "enableMagicFill", "enableQuickEdit", "MagicFillComponent", "MagicFillContent", "QuickEdit", "PasteMenu", "SuggestionAction", "HiddenRowMarkers", "HiddenColumnMarkers", "enableResizerOverflow", "className", "defaultFontSizePoint", "readonly", "isComparing", "getCellDiff", "enableDataBoundaryNavigation", "footerHeight", "footerComponent", "arrowComponents", "hostHiddenRowRanges", "getFilterValues", "getFilterColors", "getValidationSourceValue", "onChangeBorder", "onDuplicateSheet", "onCreateConditionalFormattingRule", "onDeleteConditionalFormattingRule", "onUpdateConditionalFormattingRule", "onCreateDataValidationRule", "onUpdateDataValidationRule", "onDeleteDataValidationRule", "onCreateChart", "onDeleteSheet", "onCreateEmbed", "onDecreaseIndent", "onIncreaseIndent", "onChangeTheme", "onChangeDecimals", "onUpdateSheet", "onChangeBatchStream", "onBlur"]);
119
+ /**
120
+ * Fire onBlur only when the cell editor blurs to an element outside the
121
+ * spreadsheet. Routed through `useEditable` so we hook the always-focused
122
+ * cell editor rather than relying on descendant blur bubbling.
123
+ */
124
+ var handleEditorBlur = (0, react_1.useCallback)(function (e, isEditing) {
125
+ var _a;
126
+ if ((_a = gridContainerRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.relatedTarget)) {
127
+ return;
128
+ }
129
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(e, isEditing);
130
+ }, [onBlur]);
131
+ var showGridLines = _showGridLines !== null && _showGridLines !== void 0 ? _showGridLines : true;
132
+ var gridRef = (0, react_1.useRef)(null);
133
+ // Hovered cell state (immediate, updated on mousemove)
134
+ var _49 = tslib_1.__read((0, react_1.useState)(), 2), hoveredCell = _49[0], setHoveredCell = _49[1];
135
+ // Delayed hovered cell for tooltips and selection titles
136
+ var delayedHoveredCell = (0, use_delayed_value_1.useDelayedValue)(hoveredCell, tooltipIntentInterval);
137
+ // Text overflow functionality
138
+ // Store overflow width AND the x-offset of the cell to avoid recalculating on scroll
139
+ var overflowMapRef = (0, react_1.useRef)(new Map());
140
+ // Calculate overflow buffer JIT to avoid re-renders
141
+ var getOverflowBuffer = (0, react_1.useCallback)(function (scrollLeft) {
142
+ var e_1, _a;
143
+ var map = overflowMapRef.current;
144
+ var maxBuffer = 0;
145
+ try {
146
+ for (var _b = tslib_1.__values(map.values()), _c = _b.next(); !_c.done; _c = _b.next()) {
147
+ var _d = _c.value, width_1 = _d.width, cellX = _d.x;
148
+ // Check if the overflowing content intersects with the viewport
149
+ if (cellX < scrollLeft && cellX + width_1 > scrollLeft) {
150
+ var requiredBuffer = scrollLeft - cellX;
151
+ if (requiredBuffer > maxBuffer) {
152
+ maxBuffer = requiredBuffer;
153
+ }
154
+ }
155
+ }
156
+ }
157
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
158
+ finally {
159
+ try {
160
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
161
+ }
162
+ finally { if (e_1) throw e_1.error; }
163
+ }
164
+ return maxBuffer;
165
+ }, []);
166
+ // Get frozen column cells that overflow into the body area
167
+ // These need to be rendered in the body cells so the overflow scrolls with the body
168
+ // Caches the previous Set and returns the same reference when membership is unchanged
169
+ // so downstream consumers can rely on referential equality.
170
+ var frozenColumnOverflowCellsRef = (0, react_1.useRef)(new Set());
171
+ var getFrozenColumnOverflowCells = (0, react_1.useCallback)(function (frozenColumnWidth, frozenCols) {
172
+ var e_2, _a, e_3, _b;
173
+ var map = overflowMapRef.current;
174
+ var next = new Set();
175
+ try {
176
+ for (var _c = tslib_1.__values(map.entries()), _d = _c.next(); !_d.done; _d = _c.next()) {
177
+ var _e = tslib_1.__read(_d.value, 2), cellId = _e[0], _f = _e[1], width_2 = _f.width, cellX = _f.x;
178
+ // cellIdentifier format: "rowIndex,columnIndex"
179
+ var _g = tslib_1.__read(cellId.split(","), 2), colStr = _g[1];
180
+ var columnIndex = parseInt(colStr, 10);
181
+ // Only include cells in frozen columns that overflow beyond the frozen boundary
182
+ if (columnIndex < frozenCols && cellX + width_2 > frozenColumnWidth) {
183
+ next.add(cellId);
184
+ }
185
+ }
186
+ }
187
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
188
+ finally {
189
+ try {
190
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
191
+ }
192
+ finally { if (e_2) throw e_2.error; }
193
+ }
194
+ var prev = frozenColumnOverflowCellsRef.current;
195
+ if (prev.size === next.size) {
196
+ var same = true;
197
+ try {
198
+ for (var next_1 = tslib_1.__values(next), next_1_1 = next_1.next(); !next_1_1.done; next_1_1 = next_1.next()) {
199
+ var id = next_1_1.value;
200
+ if (!prev.has(id)) {
201
+ same = false;
202
+ break;
203
+ }
204
+ }
205
+ }
206
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
207
+ finally {
208
+ try {
209
+ if (next_1_1 && !next_1_1.done && (_b = next_1.return)) _b.call(next_1);
210
+ }
211
+ finally { if (e_3) throw e_3.error; }
212
+ }
213
+ if (same)
214
+ return prev;
215
+ }
216
+ frozenColumnOverflowCellsRef.current = next;
217
+ return next;
218
+ }, []);
219
+ // Show formula help dropdown
220
+ var showFormulaHelp = (0, show_formula_help_atom_1.useShowFormulaHelpValue)();
221
+ var onHideFormulaHelp = (0, show_formula_help_atom_1.useOnHideFormulaHelp)();
222
+ var onShowFormulaHelp = (0, show_formula_help_atom_1.useOnShowFormulaHelp)();
223
+ // Cell editor
224
+ var cellEditorInstance = (0, formula_bar_editor_value_atom_1.useCellEditorInstance)();
225
+ // Paste menu
226
+ var _50 = tslib_1.__read((0, atoms_1.useShowPasteMenu)(), 2), showPasteMenu = _50[0], setShowPasteMenu = _50[1];
227
+ // Shared state
228
+ var formulaMode = (0, atoms_1.useFormulaModeValue)();
229
+ var formulaSelections = (0, formula_selections_atom_1.useFormulaSelections)();
230
+ var _51 = tslib_1.__read((0, editing_cell_atom_1.useEditingCell)(), 2), editingCellCoordinate = _51[0], setEditingCellCoordinate = _51[1];
231
+ var setFormulabarEditorValue = (0, formula_bar_editor_value_atom_1.useSetFormulabarEditorValue)();
232
+ var setFormulaBarTextFormatRuns = (0, formula_bar_editor_value_atom_1.useSetFormulaBarTextFormatRuns)();
233
+ var canSelectCells = (0, formula_selection_state_atom_1.useFormulaCanSelectCells)();
234
+ var selectionMode = (0, formula_selection_state_atom_1.useFormulaSelectionMode)();
235
+ var setFormulaState = (0, formula_selection_state_atom_1.useSetFormulaSelectionState)();
236
+ var activeEditor = (0, active_editor_atom_1.useActiveEditor)();
237
+ // Magic fill state
238
+ var _52 = tslib_1.__read((0, magic_fill_state_atom_1.useQuickEditState)(), 2), quickEditValues = _52[0], setQuickEditState = _52[1];
239
+ var setNoteEditorCell = (0, atoms_1.useSetNoteEditorCell)();
240
+ var setPinnedTooltip = (0, atoms_1.useSetPinnedTooltip)();
241
+ var setSpreadsheetApi = (0, spreadsheet_api_atom_1.useSetSpreadsheetApi)();
242
+ var propsReferenceRef = (0, react_1.useRef)(null);
243
+ var lastScheduledScrollRef = (0, react_1.useRef)(0);
244
+ // Spreadsheet jotai store
245
+ var store = (0, jotai_1.useStore)();
246
+ var instanceStore = (0, jotai_1.useStore)({ store: spreadsheet_provider_1.multiInstanceStore });
247
+ // To access closures
248
+ var hoveredCellRef = (0, use_stable_ref_1.useStableRef)(hoveredCell);
249
+ var _53 = tslib_1.__read((0, use_resize_observer_1.useResizeObserver)(), 2), gridContainerRef = _53[0], _54 = _53[1], width = _54.width, height = _54.height;
250
+ var defaultFrozenDims = showHeaders ? 1 : 0;
251
+ var frozenRows = Math.max(defaultFrozenDims, (frozenRowCount !== null && frozenRowCount !== void 0 ? frozenRowCount : 0) + defaultFrozenDims);
252
+ var frozenColumns = Math.max(defaultFrozenDims, (frozenColumnCount !== null && frozenColumnCount !== void 0 ? frozenColumnCount : 0) + defaultFrozenDims);
253
+ var selectionTopBound = 1;
254
+ var selectionLeftBound = 1;
255
+ var fillHandleSize = 8;
256
+ // Clamp to max allowable columns/rows in excel
257
+ // Rows start with zero index. Header is considered 1 row. Hence + 1
258
+ var sheetRowCount = Math.min(config_1.MAX_ROW_COUNT + 1, rowCount + 1);
259
+ var sheetColumnCount = Math.min(config_1.MAX_COLUMN_COUNT + 1, columnCount + 1);
260
+ // License key validator
261
+ var _55 = tslib_1.__read((0, use_licensekey_validator_1.useLicenseKeyValidator)({
262
+ licenseKey: licenseKey,
263
+ }), 3), _ = _55[0], licenseType = _55[1], validatorResult = _55[2];
264
+ var isRestricted = licenseType === "solo";
265
+ // Grid line width
266
+ var gridLineWidth = 1 * scale;
267
+ // When sheet is changed, we have to scroll to the last saved scroll
268
+ // position of the sheet
269
+ // It can happen that user switched to a sheet
270
+ // And triggered a scroll to a cell in an inactive sheet
271
+ // scrollToCell() + onChangeActiveSheet()
272
+ // This triggers multiple scrolls, one that happens immediately and another in useEffect
273
+ // So we check if introduce a simple hack to check if there is enough interval
274
+ // between scrollToCell and sheet-change scroll
275
+ var isSheetScrollScheduled = (0, react_1.useCallback)(function () {
276
+ return Date.now() - lastScheduledScrollRef.current > 100;
277
+ }, []);
278
+ // Get sheet dimensions
279
+ var getSheetDimensions = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function () {
280
+ return [
281
+ width - scrollbarSize - rowHeaderWidth,
282
+ height - scrollbarSize - columnHeaderHeight,
283
+ ];
284
+ }, [width, height, rowHeaderWidth, columnHeaderHeight, scrollbarSize]));
285
+ // Row header
286
+ var isRowHeader = (0, react_1.useCallback)(function (columnIndex) { return columnIndex === 0; }, []);
287
+ // Column header header
288
+ var isColumnHeader = (0, react_1.useCallback)(function (rowIndex) { return rowIndex === 0; }, []);
289
+ /**
290
+ * Hidden rows for
291
+ * Used for basicFilter + tables + manual show hide of cols/rows
292
+ */
293
+ // When the host supplies the basic filter's hidden
294
+ // body-row ranges as compact sorted [start, end] (inclusive, grid row-index space)
295
+ // tuples, derive row-hidden state via binary search instead of materializing a
296
+ // per-row `hiddenByFilter` flag for every hidden row in `rowMetadata`. This lets a
297
+ // million-row filter render without ~1M rowMetadata entries. `undefined` = host is
298
+ // not driving filter visibility, so the original `rowMetadata.hiddenByFilter` path
299
+ // is used unchanged.
300
+ var isRowHiddenByHostFilter = (0, react_1.useCallback)(function (rowIndex) {
301
+ var ranges = hostHiddenRowRanges;
302
+ if (!ranges) {
303
+ return false;
304
+ }
305
+ var lo = 0;
306
+ var hi = ranges.length - 1;
307
+ while (lo <= hi) {
308
+ var mid = (lo + hi) >> 1;
309
+ var range = ranges[mid];
310
+ if (rowIndex < range[0]) {
311
+ hi = mid - 1;
312
+ }
313
+ else if (rowIndex > range[1]) {
314
+ lo = mid + 1;
315
+ }
316
+ else {
317
+ return true;
318
+ }
319
+ }
320
+ return false;
321
+ }, [hostHiddenRowRanges]);
322
+ var isHiddenRow = (0, react_1.useCallback)(function (rowIndex) {
323
+ var _a, _b, _c, _d, _e;
324
+ if (isColumnHeader(rowIndex)) {
325
+ return !showHeaders;
326
+ }
327
+ // Host filter ranges replace per-row hiddenByFilter when supplied.
328
+ if (hostHiddenRowRanges) {
329
+ return !!(isRowHiddenByHostFilter(rowIndex) ||
330
+ ((_a = rowMetadata === null || rowMetadata === void 0 ? void 0 : rowMetadata[rowIndex]) === null || _a === void 0 ? void 0 : _a.hiddenByUser) ||
331
+ ((_b = rowMetadata === null || rowMetadata === void 0 ? void 0 : rowMetadata[rowIndex]) === null || _b === void 0 ? void 0 : _b.hiddenByGroup));
332
+ }
333
+ return !!(((_c = rowMetadata === null || rowMetadata === void 0 ? void 0 : rowMetadata[rowIndex]) === null || _c === void 0 ? void 0 : _c.hiddenByFilter) ||
334
+ ((_d = rowMetadata === null || rowMetadata === void 0 ? void 0 : rowMetadata[rowIndex]) === null || _d === void 0 ? void 0 : _d.hiddenByUser) ||
335
+ ((_e = rowMetadata === null || rowMetadata === void 0 ? void 0 : rowMetadata[rowIndex]) === null || _e === void 0 ? void 0 : _e.hiddenByGroup));
336
+ }, [
337
+ rowMetadata,
338
+ isColumnHeader,
339
+ showHeaders,
340
+ hostHiddenRowRanges,
341
+ isRowHiddenByHostFilter,
342
+ ]);
343
+ /**
344
+ * Check if a row is hidden by filter
345
+ */
346
+ var isHiddenRowByFilter = (0, react_1.useCallback)(function (rowIndex) {
347
+ var _a;
348
+ if (isColumnHeader(rowIndex)) {
349
+ return !showHeaders;
350
+ }
351
+ // Host filter ranges replace per-row hiddenByFilter when supplied.
352
+ if (hostHiddenRowRanges) {
353
+ return isRowHiddenByHostFilter(rowIndex);
354
+ }
355
+ return !!((_a = rowMetadata === null || rowMetadata === void 0 ? void 0 : rowMetadata[rowIndex]) === null || _a === void 0 ? void 0 : _a.hiddenByFilter);
356
+ }, [
357
+ rowMetadata,
358
+ isColumnHeader,
359
+ showHeaders,
360
+ hostHiddenRowRanges,
361
+ isRowHiddenByHostFilter,
362
+ ]);
363
+ /**
364
+ * For hidden columns
365
+ * Grid skips rendering gridlines and cell rendering
366
+ * Used for basicFilter + tables + manual show hide of cols/rows
367
+ */
368
+ var isHiddenColumn = (0, react_1.useCallback)(function (columnIndex) {
369
+ var _a, _b, _c;
370
+ if (isRowHeader(columnIndex)) {
371
+ return !showHeaders;
372
+ }
373
+ return !!(((_a = columnMetadata === null || columnMetadata === void 0 ? void 0 : columnMetadata[columnIndex]) === null || _a === void 0 ? void 0 : _a.hiddenByFilter) ||
374
+ ((_b = columnMetadata === null || columnMetadata === void 0 ? void 0 : columnMetadata[columnIndex]) === null || _b === void 0 ? void 0 : _b.hiddenByUser) ||
375
+ ((_c = columnMetadata === null || columnMetadata === void 0 ? void 0 : columnMetadata[columnIndex]) === null || _c === void 0 ? void 0 : _c.hiddenByGroup));
376
+ }, [columnMetadata, isRowHeader, showHeaders]);
377
+ /**
378
+ * Compute visible row ranges for efficient Grid iteration.
379
+ * Instead of checking isHiddenRow for each row (O(n)),
380
+ * we compute ranges from the sparse rowMetadata (O(h log h) where h = hidden rows).
381
+ */
382
+ var visibleRowRanges = (0, react_1.useMemo)(function () {
383
+ var e_4, _a, e_5, _b, e_6, _c, e_7, _d;
384
+ var _e, _f;
385
+ // When the host supplies compact filter-hidden
386
+ // ranges, build visible ranges by complementing them merged with the SPARSE
387
+ // user/group hides — no per-row hiddenByFilter materialization, so a million-row
388
+ // filter doesn't allocate ~1M rowMetadata entries.
389
+ if (hostHiddenRowRanges) {
390
+ var hidden = [];
391
+ try {
392
+ for (var hostHiddenRowRanges_1 = tslib_1.__values(hostHiddenRowRanges), hostHiddenRowRanges_1_1 = hostHiddenRowRanges_1.next(); !hostHiddenRowRanges_1_1.done; hostHiddenRowRanges_1_1 = hostHiddenRowRanges_1.next()) {
393
+ var range = hostHiddenRowRanges_1_1.value;
394
+ hidden.push([range[0], range[1]]);
395
+ }
396
+ }
397
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
398
+ finally {
399
+ try {
400
+ if (hostHiddenRowRanges_1_1 && !hostHiddenRowRanges_1_1.done && (_a = hostHiddenRowRanges_1.return)) _a.call(hostHiddenRowRanges_1);
401
+ }
402
+ finally { if (e_4) throw e_4.error; }
403
+ }
404
+ try {
405
+ for (var _g = tslib_1.__values(Object.keys(rowMetadata !== null && rowMetadata !== void 0 ? rowMetadata : {})), _h = _g.next(); !_h.done; _h = _g.next()) {
406
+ var key = _h.value;
407
+ var i = Number(key);
408
+ if (((_e = rowMetadata === null || rowMetadata === void 0 ? void 0 : rowMetadata[i]) === null || _e === void 0 ? void 0 : _e.hiddenByUser) || ((_f = rowMetadata === null || rowMetadata === void 0 ? void 0 : rowMetadata[i]) === null || _f === void 0 ? void 0 : _f.hiddenByGroup)) {
409
+ hidden.push([i, i]);
410
+ }
411
+ }
412
+ }
413
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
414
+ finally {
415
+ try {
416
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
417
+ }
418
+ finally { if (e_5) throw e_5.error; }
419
+ }
420
+ hidden.sort(function (a, b) { return a[0] - b[0]; });
421
+ var visible = [];
422
+ var cursor = 0;
423
+ try {
424
+ for (var hidden_1 = tslib_1.__values(hidden), hidden_1_1 = hidden_1.next(); !hidden_1_1.done; hidden_1_1 = hidden_1.next()) {
425
+ var _j = tslib_1.__read(hidden_1_1.value, 2), s = _j[0], e = _j[1];
426
+ if (s > cursor) {
427
+ visible.push({ start: cursor, end: s - 1 });
428
+ }
429
+ cursor = Math.max(cursor, e + 1);
430
+ }
431
+ }
432
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
433
+ finally {
434
+ try {
435
+ if (hidden_1_1 && !hidden_1_1.done && (_c = hidden_1.return)) _c.call(hidden_1);
436
+ }
437
+ finally { if (e_6) throw e_6.error; }
438
+ }
439
+ if (cursor <= sheetRowCount - 1) {
440
+ visible.push({ start: cursor, end: sheetRowCount - 1 });
441
+ }
442
+ return visible.length ? visible : [{ start: 0, end: sheetRowCount - 1 }];
443
+ }
444
+ // Get sorted hidden row indices from rowMetadata. Must include
445
+ // `hiddenByGroup` (outline collapse) — without it BaseGrid skips
446
+ // the row-iteration fast path and still calls the cell renderer
447
+ // with height=0, which makes overlays like conditional-format icon
448
+ // sets stack on top of each other at the collapse boundary.
449
+ var hiddenRows = Object.keys(rowMetadata !== null && rowMetadata !== void 0 ? rowMetadata : {})
450
+ .map(Number)
451
+ .filter(function (i) {
452
+ var _a, _b, _c;
453
+ return ((_a = rowMetadata === null || rowMetadata === void 0 ? void 0 : rowMetadata[i]) === null || _a === void 0 ? void 0 : _a.hiddenByFilter) ||
454
+ ((_b = rowMetadata === null || rowMetadata === void 0 ? void 0 : rowMetadata[i]) === null || _b === void 0 ? void 0 : _b.hiddenByUser) ||
455
+ ((_c = rowMetadata === null || rowMetadata === void 0 ? void 0 : rowMetadata[i]) === null || _c === void 0 ? void 0 : _c.hiddenByGroup);
456
+ })
457
+ .sort(function (a, b) { return a - b; });
458
+ // Use `sheetRowCount - 1` (not `rowCount - 1`) as the upper bound.
459
+ // BaseGrid is fed `sheetRowCount = rowCount + 1` so index 0 can hold
460
+ // the column-header row; data rows shift to 1..rowCount. Capping at
461
+ // `rowCount - 1` here drops the last data row from the visible
462
+ // ranges — BaseGrid is told the slot exists but `getVisibleRowIndices`
463
+ // never emits it, so the renderer skips it and selections that clamp
464
+ // to that index hang in empty space below the last painted row.
465
+ if (hiddenRows.length === 0) {
466
+ return [{ start: 0, end: sheetRowCount - 1 }];
467
+ }
468
+ // Build visible ranges from gaps between hidden rows
469
+ var ranges = [];
470
+ var prevEnd = -1;
471
+ try {
472
+ for (var hiddenRows_1 = tslib_1.__values(hiddenRows), hiddenRows_1_1 = hiddenRows_1.next(); !hiddenRows_1_1.done; hiddenRows_1_1 = hiddenRows_1.next()) {
473
+ var hiddenRow = hiddenRows_1_1.value;
474
+ if (hiddenRow > prevEnd + 1) {
475
+ ranges.push({ start: prevEnd + 1, end: hiddenRow - 1 });
476
+ }
477
+ prevEnd = hiddenRow;
478
+ }
479
+ }
480
+ catch (e_7_1) { e_7 = { error: e_7_1 }; }
481
+ finally {
482
+ try {
483
+ if (hiddenRows_1_1 && !hiddenRows_1_1.done && (_d = hiddenRows_1.return)) _d.call(hiddenRows_1);
484
+ }
485
+ finally { if (e_7) throw e_7.error; }
486
+ }
487
+ // Add final range if there are visible rows after the last hidden row
488
+ if (prevEnd < sheetRowCount - 1) {
489
+ ranges.push({ start: prevEnd + 1, end: sheetRowCount - 1 });
490
+ }
491
+ return ranges;
492
+ }, [hostHiddenRowRanges, rowMetadata, sheetRowCount]);
493
+ /**
494
+ * The pivot table (if any) whose output range covers a cell on the
495
+ * given sheet. Used to make pivot output read-only and to offer the
496
+ * drill-down context-menu action.
497
+ */
498
+ var getPivotTableAtCell = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
499
+ return pivotTables === null || pivotTables === void 0 ? void 0 : pivotTables.find(function (pv) {
500
+ var _a;
501
+ return ((_a = pv.pivotRange) === null || _a === void 0 ? void 0 : _a.sheetId) === sheetId &&
502
+ (0, grid_4.isCellWithinBounds)({ rowIndex: rowIndex, columnIndex: columnIndex }, pv.pivotRange);
503
+ });
504
+ }, [pivotTables]);
505
+ /**
506
+ * Worksheet-protection lookup, identity-stable so it can ride the grid
507
+ * context without churning it on re-renders.
508
+ */
509
+ var getSheetProtectionStable = (0, use_callback_ref_1.useCallbackRef)(getSheetProtection);
510
+ /**
511
+ * Check if the cell can be edited
512
+ */
513
+ var canEditCell = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function (sheetId, cell) {
514
+ var _a;
515
+ // Readonly mode
516
+ if (readonly) {
517
+ return false;
518
+ }
519
+ var rowIndex = cell.rowIndex, columnIndex = cell.columnIndex;
520
+ if (isRowHeader(columnIndex) || isColumnHeader(rowIndex)) {
521
+ return false;
522
+ }
523
+ // Pivot output is read-only in Excel — you can't type into a
524
+ // pivot cell. Treat every cell inside a pivot range as
525
+ // non-editable; mutations happen through the pivot editor.
526
+ if (getPivotTableAtCell(sheetId, rowIndex, columnIndex)) {
527
+ return false;
528
+ }
529
+ // Excel worksheet protection: while `<sheetProtection sheet>` is
530
+ // active, LOCKED cells refuse edits — a cell is locked unless its
531
+ // `protection.locked` is `false` (Excel's default) — and unlocked
532
+ // cells stay editable.
533
+ var lockedBySheetProtection = (0, validation_1.isCellLockedUnderProtection)(getSheetProtection === null || getSheetProtection === void 0 ? void 0 : getSheetProtection(sheetId), (_a = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.protection);
534
+ var canEdit = !lockedBySheetProtection &&
535
+ (protectedRanges
536
+ ? !(0, validation_1.isProtectedCell)(sheetId, cell, protectedRanges)
537
+ : true);
538
+ // User is trying to edit a protected cell
539
+ if (!canEdit) {
540
+ onRequestEditProtectedRange === null || onRequestEditProtectedRange === void 0 ? void 0 : onRequestEditProtectedRange(sheetId, cell);
541
+ }
542
+ return canEdit;
543
+ }, [
544
+ readonly,
545
+ protectedRanges,
546
+ getSheetProtection,
547
+ getCellData,
548
+ isRowHeader,
549
+ isColumnHeader,
550
+ onRequestEditProtectedRange,
551
+ getPivotTableAtCell,
552
+ ]));
553
+ /**
554
+ * Can edit sheet
555
+ */
556
+ var isSheetProtected = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function (sheetId) {
557
+ // Protected sheet
558
+ if (readonly) {
559
+ return true;
560
+ }
561
+ return (0, validation_1.isProtectedSheet)(sheetId, protectedRanges !== null && protectedRanges !== void 0 ? protectedRanges : undefined);
562
+ }, [protectedRanges, readonly]));
563
+ /**
564
+ * Workbook-level structural protection. Readonly mode implies
565
+ * workbook protection too — nothing structural should mutate.
566
+ */
567
+ var isWorkbookProtected = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function () { return readonly || isWorkbookProtectedProp; }, [readonly, isWorkbookProtectedProp]));
568
+ // Active sheet tables
569
+ var activeTables = (0, react_1.useMemo)(function () { return tables === null || tables === void 0 ? void 0 : tables.filter(function (table) { return table.sheetId === sheetId; }); }, [tables, sheetId]);
570
+ /**
571
+ * Get filter header cells for both
572
+ * basicFilter + tables
573
+ */
574
+ var tableHeaderCells = (0, react_1.useMemo)(function () {
575
+ return (0, helpers_1.getTableHeaderCells)(activeTables, basicFilter);
576
+ }, [activeTables, basicFilter]);
577
+ /**
578
+ * Retrieve banded cells
579
+ */
580
+ var bandedCells = (0, react_1.useMemo)(function () {
581
+ return (0, banded_ranges_1.getBandedCells)((bandedRanges !== null && bandedRanges !== void 0 ? bandedRanges : undefined) || [], theme, sheetId, isHiddenRow, isHiddenColumn);
582
+ }, [bandedRanges, theme, sheetId, isHiddenRow, isHiddenColumn]);
583
+ /**
584
+ * Focus active editor
585
+ */
586
+ var focusActiveEditor = (0, react_1.useCallback)(function (moveSelectionToEnd) {
587
+ if (moveSelectionToEnd === void 0) { moveSelectionToEnd = true; }
588
+ if (!activeEditor) {
589
+ return;
590
+ }
591
+ // Slate editor looses focus on Formula bar input otherwise
592
+ // Edit: Remove scheduleNormalPriorityCallback(() => {
593
+ activeEditor === null || activeEditor === void 0 ? void 0 : activeEditor.focus(moveSelectionToEnd);
594
+ }, [activeEditor]);
595
+ /**
596
+ * Scroll to cell in the grid
597
+ * @param cell
598
+ * @returns
599
+ */
600
+ var scrollToCell = (0, react_1.useCallback)(function (cell, align) {
601
+ var _a;
602
+ lastScheduledScrollRef.current = Date.now();
603
+ (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.scrollToCell(cell, align);
604
+ }, []);
605
+ /**
606
+ * Scroll to bottom of the sheet
607
+ */
608
+ var scrollToBottom = (0, react_1.useCallback)(function () {
609
+ var _a;
610
+ (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.scrollToBottom();
611
+ }, []);
612
+ /**
613
+ * Get current grid ref
614
+ */
615
+ var getGridRef = (0, react_1.useCallback)(function () { return gridRef.current; }, []);
616
+ /**
617
+ * Redraws a grid
618
+ */
619
+ var redrawGrid = (0, react_1.useCallback)(function () {
620
+ var _a;
621
+ (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.redrawGrid();
622
+ }, []);
623
+ /**
624
+ * Scroll to a portion of the grid
625
+ */
626
+ var scrollTo = (0, react_1.useCallback)(function (scrollCoords, immediate) { var _a; return (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo(scrollCoords, immediate); }, []);
627
+ /**
628
+ * Get Absolute position (to document)
629
+ */
630
+ var getAbsolutePositionFromOffset = (0, react_1.useCallback)(function (x, y) { var _a; return (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.getAbsolutePositionFromOffset(x, y); }, []);
631
+ /**
632
+ * Get row offset
633
+ */
634
+ var getRowOffset = (0, react_1.useCallback)(function (rowIndex) { var _a, _b; return (_b = (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.getRowOffset(rowIndex)) !== null && _b !== void 0 ? _b : 0; }, []);
635
+ /**
636
+ * Get column offset
637
+ */
638
+ var getColumnOffset = (0, react_1.useCallback)(function (columnIndex) { var _a, _b; return (_b = (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.getColumnOffset(columnIndex)) !== null && _b !== void 0 ? _b : 0; }, []);
639
+ // Handle text overflow
640
+ var handleOverflow = (0, react_1.useCallback)(function (rowIndex, columnIndex, overflow) {
641
+ var _a, _b;
642
+ var id = (0, grid_5.cellIdentifier)(rowIndex, columnIndex);
643
+ var map = overflowMapRef.current;
644
+ var current = (_b = (_a = map.get(id)) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : 0;
645
+ if (current !== overflow) {
646
+ if (overflow === 0) {
647
+ map.delete(id);
648
+ }
649
+ else {
650
+ // Only fetch column offset when the overflow state *changes*, not on every scroll
651
+ var cellX = getColumnOffset(columnIndex);
652
+ map.set(id, { width: overflow, x: cellX });
653
+ }
654
+ }
655
+ }, [getColumnOffset]);
656
+ var mergedCellMap = (0, react_1.useMemo)(function () {
657
+ var e_8, _a;
658
+ var mergedCellMap = new Map();
659
+ if (merges) {
660
+ for (var i = 0; i < merges.length; i++) {
661
+ var bounds = merges[i];
662
+ try {
663
+ for (var _b = (e_8 = void 0, tslib_1.__values((0, grid_3.getBoundedCells)(bounds))), _c = _b.next(); !_c.done; _c = _b.next()) {
664
+ var cell = _c.value;
665
+ mergedCellMap.set(cell, bounds);
666
+ }
667
+ }
668
+ catch (e_8_1) { e_8 = { error: e_8_1 }; }
669
+ finally {
670
+ try {
671
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
672
+ }
673
+ finally { if (e_8) throw e_8.error; }
674
+ }
675
+ }
676
+ }
677
+ return mergedCellMap;
678
+ }, [merges]);
679
+ /**
680
+ * Check if a cell is merged cell
681
+ */
682
+ var isMergedCell = (0, react_1.useCallback)(function (_a) {
683
+ var rowIndex = _a.rowIndex, columnIndex = _a.columnIndex;
684
+ return mergedCellMap.has((0, grid_5.cellIdentifier)(rowIndex, columnIndex));
685
+ }, [mergedCellMap]);
686
+ /**
687
+ * Get cell bounds
688
+ * @param cell
689
+ * @returns
690
+ */
691
+ var getCellBounds = (0, react_1.useCallback)(function (_a, spanMerges) {
692
+ var rowIndex = _a.rowIndex, columnIndex = _a.columnIndex;
693
+ if (spanMerges === void 0) { spanMerges = true; }
694
+ if (spanMerges) {
695
+ var isMerged = isMergedCell({ rowIndex: rowIndex, columnIndex: columnIndex });
696
+ if (isMerged)
697
+ return mergedCellMap.get((0, grid_5.cellIdentifier)(rowIndex, columnIndex));
698
+ }
699
+ return {
700
+ startRowIndex: rowIndex,
701
+ startColumnIndex: columnIndex,
702
+ endColumnIndex: columnIndex,
703
+ endRowIndex: rowIndex,
704
+ };
705
+ // gridRef.current?.getCellBounds(cell) ?? convertCellToRange(cell),
706
+ }, [mergedCellMap, isMergedCell]);
707
+ /* Get viewport of the grid */
708
+ var getViewPort = (0, react_1.useCallback)(function () {
709
+ var _a, _b;
710
+ return (_b = (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.getViewPort()) !== null && _b !== void 0 ? _b : {
711
+ rowStartIndex: 0,
712
+ rowStopIndex: 0,
713
+ columnStartIndex: 0,
714
+ columnStopIndex: 0,
715
+ visibleRowStartIndex: 0,
716
+ visibleRowStopIndex: 0,
717
+ visibleColumnStartIndex: 0,
718
+ visibleColumnStopIndex: 0,
719
+ };
720
+ }, [scale]);
721
+ /**
722
+ * Get cell coordinates from x and y position
723
+ * @param x
724
+ * @param y
725
+ * @returns
726
+ */
727
+ var getCellCoordsFromOffset = (0, react_1.useCallback)(function (x, y, includeFrozen) { var _a; return (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.getCellCoordsFromOffset(x, y, includeFrozen); }, [scale]);
728
+ /**
729
+ * Get cells coords
730
+ * caters to merged cells
731
+ */
732
+ var getActualCellCoords = (0, react_1.useCallback)(function (coords) { var _a; return (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.getActualCellCoords(coords); }, [scale]);
733
+ /**
734
+ * Get cell offset from cell coords. Readonly mode, so
735
+ * lastMeasuredColumnIndex or lastMeasuredRowIndex will
736
+ * not get updated
737
+ * @param cell
738
+ * @returns
739
+ */
740
+ var getCellOffsetFromCoords = (0, react_1.useCallback)(function (cell) { var _a; return (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.getCellOffsetFromCoords(cell, true); }, [scale]);
741
+ /**
742
+ * Canvas grid keeps track of lastMeasuredColumnIndex and
743
+ * lastMeasuredRowIndex so that it does not recalc grid
744
+ * dimension on every render
745
+ */
746
+ var resetLastMeasuredIndices = (0, react_1.useCallback)(function (cell) { var _a; return (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.resetAfterIndices(cell, false); }, [scale]);
747
+ /**
748
+ * Focus sheet
749
+ */
750
+ var focusSheet = (0, use_raf_1.useRaf)(function () {
751
+ // Only suppress refocus when we're certain focus moved to a focusable
752
+ // element outside the grid (e.g. another asset pane in a split view).
753
+ // Mirrors the relatedTarget-outside-grid guard in handleEditorBlur. A
754
+ // user gesture on the grid focuses the tabIndex=0 container first, so
755
+ // this only suppresses render-driven refocus; a null container ref
756
+ // (mid mount/unmount) falls through to the original focus behavior.
757
+ var activeElement = grid_2.canUseDOM ? document.activeElement : null;
758
+ var gridContainer = gridContainerRef.current;
759
+ if (activeElement &&
760
+ activeElement !== document.body &&
761
+ gridContainer &&
762
+ !gridContainer.contains(activeElement)) {
763
+ return;
764
+ }
765
+ if (!activeEditor || activeEditor === cellEditorInstance) {
766
+ cellEditorInstance === null || cellEditorInstance === void 0 ? void 0 : cellEditorInstance.focus();
767
+ }
768
+ }, [activeEditor, cellEditorInstance]);
769
+ /**
770
+ * Canvas layers
771
+ */
772
+ var getCanvasLayers = (0, react_1.useCallback)(function () { var _a, _b; return (_b = (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.stage) === null || _b === void 0 ? void 0 : _b.getLayers(); }, []);
773
+ /**
774
+ * Row Header canvas layer layers
775
+ */
776
+ var getRowHeaderCanvasLayer = (0, react_1.useCallback)(function () { var _a, _b; return (_b = (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.rowHeaderStage) === null || _b === void 0 ? void 0 : _b.getLayers(); }, []);
777
+ /**
778
+ * Column Header canvas layer layers
779
+ */
780
+ var getColumnHeaderCanvasLayer = (0, react_1.useCallback)(function () { var _a, _b; return (_b = (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.columnHeaderStage) === null || _b === void 0 ? void 0 : _b.getLayers(); }, []);
781
+ /**
782
+ * Get relative position from
783
+ * position offset
784
+ */
785
+ var getRelativePositionFromOffset = (0, react_1.useCallback)(function (x, y) {
786
+ var _a;
787
+ return (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.getRelativePositionFromOffset(x, y);
788
+ }, []);
789
+ /**
790
+ * Get scroll position
791
+ * @returns ScrollCoords
792
+ */
793
+ var getScrollPosition = (0, react_1.useCallback)(function () { var _a, _b; return (_b = (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.getScrollPosition()) !== null && _b !== void 0 ? _b : config_1.DEFAULT_SCROLL_POSITION; }, []);
794
+ // Does the column contains a table
795
+ var columnContainsTable = (0, react_1.useCallback)(function (columnIndex) {
796
+ var _a = tslib_1.__read(tableHeaderCells, 2), _ = _a[0], tableColumnHeaderIds = _a[1];
797
+ return tableColumnHeaderIds.get(columnIndex);
798
+ }, [tableHeaderCells]);
799
+ // Does the row contains a table
800
+ var rowsContainsTable = (0, react_1.useCallback)(function (rowIndex) {
801
+ var _a = tslib_1.__read(tableHeaderCells, 3), _ = _a[0], tableRowHeaderIds = _a[2];
802
+ return tableRowHeaderIds.get(rowIndex);
803
+ }, [tableHeaderCells]);
804
+ // Is table header
805
+ var isTableHeader = (0, react_1.useCallback)(function (rowIndex, columnIndex) {
806
+ var _a = tslib_1.__read(tableHeaderCells, 1), headerCells = _a[0];
807
+ return headerCells.has((0, grid_5.cellIdentifier)(rowIndex, columnIndex));
808
+ }, [tableHeaderCells]);
809
+ // Is table header filter active
810
+ var isTableHeaderFilterActive = (0, react_1.useCallback)(function (rowIndex, columnIndex) {
811
+ var _a;
812
+ var _b = tslib_1.__read(tableHeaderCells, 1), headerCells = _b[0];
813
+ return (_a = headerCells.get((0, grid_5.cellIdentifier)(rowIndex, columnIndex))) === null || _a === void 0 ? void 0 : _a.isFilterActive;
814
+ }, [tableHeaderCells]);
815
+ // Is table header filter active
816
+ var getTableHeaderSortOrder = (0, react_1.useCallback)(function (rowIndex, columnIndex) {
817
+ var _a;
818
+ var _b = tslib_1.__read(tableHeaderCells, 1), headerCells = _b[0];
819
+ return (_a = headerCells.get((0, grid_5.cellIdentifier)(rowIndex, columnIndex))) === null || _a === void 0 ? void 0 : _a.sortOrder;
820
+ }, [tableHeaderCells]);
821
+ // Is calculated column header
822
+ var isCalculatedColumnHeader = (0, react_1.useCallback)(function (rowIndex, columnIndex) {
823
+ var _a = tslib_1.__read(tableHeaderCells, 4), calculatedColumnHeaders = _a[3];
824
+ return calculatedColumnHeaders.has((0, grid_5.cellIdentifier)(rowIndex, columnIndex));
825
+ }, [tableHeaderCells]);
826
+ // Check if table header is themed
827
+ // So it will not be displayed in bold font
828
+ var isTableHeaderThemed = (0, react_1.useCallback)(function (rowIndex, columnIndex) {
829
+ var _a = tslib_1.__read(tableHeaderCells, 1), headerCells = _a[0];
830
+ var cell = headerCells.get((0, grid_5.cellIdentifier)(rowIndex, columnIndex));
831
+ return (cell === null || cell === void 0 ? void 0 : cell.theme) && (cell === null || cell === void 0 ? void 0 : cell.theme) !== "None";
832
+ }, [tableHeaderCells]);
833
+ // Is Filter icon visible
834
+ var isTableFilterVisible = (0, react_1.useCallback)(function (rowIndex, columnIndex) {
835
+ var _a;
836
+ var _b = tslib_1.__read(tableHeaderCells, 1), headerCells = _b[0];
837
+ return showFilterIcon
838
+ ? (_a = headerCells.get((0, grid_5.cellIdentifier)(rowIndex, columnIndex))) === null || _a === void 0 ? void 0 : _a.filterButton
839
+ : false;
840
+ }, [tableHeaderCells, showFilterIcon]);
841
+ // Frozen row
842
+ var isFrozenRow = (0, react_1.useCallback)(function (rowIndex) { return rowIndex < frozenRows; }, [frozenRows]);
843
+ // Frozen column
844
+ var isFrozenColumn = (0, react_1.useCallback)(function (columnIndex) { return columnIndex < frozenColumns; }, [frozenColumns]);
845
+ /**
846
+ * Get hyperlink of a cell
847
+ */
848
+ var getCellMetaType = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
849
+ var _a;
850
+ return (_a = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.metaType;
851
+ }, [getCellData]);
852
+ /**
853
+ * Get hyperlink of a cell
854
+ */
855
+ var getHyperlink = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
856
+ var _a, _b;
857
+ return ((_b = (_a = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.hyperlink) !== null && _b !== void 0 ? _b : undefined);
858
+ }, [getCellData]);
859
+ /**
860
+ * Get value entered by the user in a cell
861
+ */
862
+ var getUserEnteredValue = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
863
+ return getUserEnteredExtendedValue
864
+ ? getUserEnteredExtendedValue(sheetId, rowIndex, columnIndex)
865
+ : (0, helpers_1.getCellUserEnteredValue)(getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex));
866
+ }, [getUserEnteredExtendedValue, getCellData]);
867
+ /**
868
+ * Get boolean value
869
+ */
870
+ var getBooleanValue = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
871
+ return (0, helpers_1.getExtendedValueBool)(getUserEnteredValue === null || getUserEnteredValue === void 0 ? void 0 : getUserEnteredValue(sheetId, rowIndex, columnIndex));
872
+ }, [getUserEnteredValue]);
873
+ /**
874
+ * Get formula value entered by user
875
+ */
876
+ var getFormulaValue = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
877
+ return (0, helpers_1.getExtendedValueFormula)(getUserEnteredValue === null || getUserEnteredValue === void 0 ? void 0 : getUserEnteredValue(sheetId, rowIndex, columnIndex));
878
+ }, [getUserEnteredValue]));
879
+ /**
880
+ * Get cell display value
881
+ */
882
+ var getFormattedValue = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
883
+ // Row header (~1,2)
884
+ if (isRowHeader(columnIndex)) {
885
+ return getRowHeaderText(rowIndex);
886
+ }
887
+ // Column header (~A,B)
888
+ if (isColumnHeader(rowIndex)) {
889
+ return getColumnHeaderText(columnIndex);
890
+ }
891
+ if (showFormulas && !protectFormulas) {
892
+ var formulaValue = getFormulaValue(sheetId, rowIndex, columnIndex);
893
+ if (formulaValue) {
894
+ return formulaValue;
895
+ }
896
+ }
897
+ var formattedValue = getFormattedValueProp
898
+ ? getFormattedValueProp === null || getFormattedValueProp === void 0 ? void 0 : getFormattedValueProp(sheetId, rowIndex, columnIndex)
899
+ : (0, helpers_1.getCellFormattedValue)(getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex));
900
+ // Temporary workaround for `richText`
901
+ if (!(0, utils_1.isNil)(formattedValue) && typeof formattedValue === "object") {
902
+ return (0, ui_1.tryParseRichText)(formattedValue);
903
+ }
904
+ return formattedValue !== null && formattedValue !== void 0 ? formattedValue : undefined;
905
+ }, [
906
+ getFormattedValueProp,
907
+ getCellData,
908
+ getFormulaValue,
909
+ showFormulas,
910
+ protectFormulas,
911
+ isRowHeader,
912
+ isColumnHeader,
913
+ getRowHeaderText,
914
+ getColumnHeaderText,
915
+ ]);
916
+ /**
917
+ * Get information about cell grouping
918
+ */
919
+ var getCellGroupingInfo = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
920
+ var _a, _b;
921
+ var cellData = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex);
922
+ return [
923
+ (_a = cellData === null || cellData === void 0 ? void 0 : cellData.expandable) !== null && _a !== void 0 ? _a : undefined,
924
+ (_b = cellData === null || cellData === void 0 ? void 0 : cellData.expanded) !== null && _b !== void 0 ? _b : undefined,
925
+ ];
926
+ }, [getCellData]);
927
+ /**
928
+ * Get effective value of a cell
929
+ */
930
+ var getEffectiveValue = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
931
+ return getEffectiveExtendedValue
932
+ ? getEffectiveExtendedValue(sheetId, rowIndex, columnIndex)
933
+ : (0, helpers_1.getCellEffectiveValue)(getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex));
934
+ }, [getEffectiveExtendedValue, getCellData]);
935
+ /**
936
+ * Get validation value of a cell
937
+ */
938
+ var getFormulaValidationValue = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex, ruleId) {
939
+ var _a, _b;
940
+ return (_b = (_a = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.conditionalFormattingResultById) === null || _b === void 0 ? void 0 : _b[ruleId];
941
+ }, [getCellData]);
942
+ /**
943
+ * Get formula error value entered by user
944
+ */
945
+ var getErrorValue = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
946
+ return (0, helpers_1.getExtendedValueError)(getEffectiveValue === null || getEffectiveValue === void 0 ? void 0 : getEffectiveValue(sheetId, rowIndex, columnIndex));
947
+ }, [getEffectiveValue]);
948
+ /**
949
+ * Get notes. The host's `getNote` wins when provided — engines that keep
950
+ * notes off the cell data (rnc serves notes over their own channel) have
951
+ * no `.note` on `getCellData` cells to fall back to.
952
+ */
953
+ var getNote = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
954
+ var _a, _b, _c;
955
+ return ((_c = (_a = getNoteProp === null || getNoteProp === void 0 ? void 0 : getNoteProp(sheetId, rowIndex, columnIndex)) !== null && _a !== void 0 ? _a : (_b = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex)) === null || _b === void 0 ? void 0 : _b.note) !== null && _c !== void 0 ? _c : undefined);
956
+ }, [getNoteProp, getCellData]);
957
+ /**
958
+ * Get comment
959
+ */
960
+ var getComment = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
961
+ var _a, _b;
962
+ return ((_b = (_a = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.commentThreadId) !== null && _b !== void 0 ? _b : undefined);
963
+ }, [getCellData]);
964
+ /**
965
+ * Get citation
966
+ */
967
+ var getCitation = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
968
+ var _a, _b;
969
+ return ((_b = (_a = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.citationId) !== null && _b !== void 0 ? _b : undefined);
970
+ }, [getCellData]);
971
+ /**
972
+ * Get Image url in a cell
973
+ * Users can add images in a cell using imageUrl property
974
+ */
975
+ var getCellImageUrl = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
976
+ var _a, _b;
977
+ return ((_b = (_a = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.imageUrl) !== null && _b !== void 0 ? _b : undefined);
978
+ }, [getCellData]);
979
+ /**
980
+ * Returns cellFormat of a cell
981
+ * cellFormat = userEnteredFormat + formatFromFormulaCalculation
982
+ * Readable field.
983
+ *
984
+ * Use userEnteredFormat for write and generate effectiveFormat
985
+ */
986
+ var getCellFormat = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
987
+ if (getEffectiveFormat) {
988
+ return getEffectiveFormat === null || getEffectiveFormat === void 0 ? void 0 : getEffectiveFormat(sheetId, rowIndex, columnIndex);
989
+ }
990
+ // For backwards compatiblity
991
+ var cellData = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex);
992
+ var effectiveFormat = (0, utils_1.getCellEffectiveFormat)(cellData);
993
+ if (!(0, helpers_1.isStyleReference)(effectiveFormat)) {
994
+ return effectiveFormat;
995
+ }
996
+ return undefined;
997
+ }, [getEffectiveFormat, getCellData]);
998
+ /**
999
+ * Get cell indent
1000
+ */
1001
+ var getCellIndent = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1002
+ var _a, _b;
1003
+ var fmt = getCellFormat(sheetId, rowIndex, columnIndex);
1004
+ var indent = ((_a = fmt === null || fmt === void 0 ? void 0 : fmt.indent) !== null && _a !== void 0 ? _a : 0) + ((_b = fmt === null || fmt === void 0 ? void 0 : fmt.relativeIndent) !== null && _b !== void 0 ? _b : 0);
1005
+ return indent || undefined;
1006
+ }, [getCellFormat]);
1007
+ /**
1008
+ * Check if a cell data is a number
1009
+ */
1010
+ var isNumberValue = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1011
+ var _a;
1012
+ var cellFormat = getCellFormat === null || getCellFormat === void 0 ? void 0 : getCellFormat(sheetId, rowIndex, columnIndex);
1013
+ return !!((_a = cellFormat === null || cellFormat === void 0 ? void 0 : cellFormat.numberFormat) === null || _a === void 0 ? void 0 : _a.type);
1014
+ }, [getCellFormat]);
1015
+ /**
1016
+ * Get value entered by the user in a cell
1017
+ * If its a formula cell, formulaValue is used
1018
+ * Order of retrieval
1019
+ * 1. formulaValue
1020
+ * 2. numberValue
1021
+ * 3. stringValue
1022
+ * 4. formattedValue
1023
+ * If number -> trim formatted value
1024
+ */
1025
+ var getUserEnteredStringValue = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1026
+ var _a, _b;
1027
+ var formulaValue = getFormulaValue(sheetId, rowIndex, columnIndex);
1028
+ if (formulaValue && !protectFormulas) {
1029
+ return formulaValue;
1030
+ }
1031
+ var userEnteredValue = getUserEnteredValue(sheetId, rowIndex, columnIndex);
1032
+ // Look for sv
1033
+ var stringValue = (0, helpers_1.getExtendedValueString)(userEnteredValue);
1034
+ if (stringValue) {
1035
+ return stringValue;
1036
+ }
1037
+ // Check for date value
1038
+ var numberFormatType = (_b = (_a = getCellFormat(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.numberFormat) === null || _b === void 0 ? void 0 : _b.type;
1039
+ if (numberFormatType === "DATE" || numberFormatType === "DATE_TIME") {
1040
+ return getFormattedValue(sheetId, rowIndex, columnIndex);
1041
+ }
1042
+ // If the cell is of type number, fallback to number
1043
+ var numberValue = (0, helpers_1.getExtendedValueNumber)(userEnteredValue);
1044
+ if (!(0, utils_1.isNil)(numberValue)) {
1045
+ return String(numberValue);
1046
+ }
1047
+ // This is used for Array return values, which do not have
1048
+ // formula value or user entered value
1049
+ return getFormattedValue(sheetId, rowIndex, columnIndex);
1050
+ }, [
1051
+ getUserEnteredValue,
1052
+ getFormulaValue,
1053
+ getFormattedValue,
1054
+ getCellFormat,
1055
+ protectFormulas,
1056
+ ]);
1057
+ // Add a stable reference to get userEnteredString value
1058
+ var getUserEnteredStringValueStable = (0, use_callback_ref_1.useCallbackRef)(getUserEnteredStringValue);
1059
+ /**
1060
+ * Get cell value used for validations
1061
+ */
1062
+ var getValidationValue = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex, rule) {
1063
+ var _a, _b, _c, _d, _e, _f;
1064
+ // Formula-backed rules use the custom formula path
1065
+ if (rule && (0, utils_1.isConditionalFormatFormulaRule)(rule)) {
1066
+ return getFormulaValidationValue(sheetId, rowIndex, columnIndex, rule.id);
1067
+ }
1068
+ var effectiveValue = getEffectiveValue(sheetId, rowIndex, columnIndex);
1069
+ if (((_b = (_a = rule === null || rule === void 0 ? void 0 : rule.booleanRule) === null || _a === void 0 ? void 0 : _a.condition) === null || _b === void 0 ? void 0 : _b.type) === "ERROR" ||
1070
+ ((_d = (_c = rule === null || rule === void 0 ? void 0 : rule.booleanRule) === null || _c === void 0 ? void 0 : _c.condition) === null || _d === void 0 ? void 0 : _d.type) === "NOT_ERROR") {
1071
+ return (0, helpers_1.getExtendedValueError)(effectiveValue);
1072
+ }
1073
+ return ((_f = (_e = (0, helpers_1.getExtendedValueBool)(effectiveValue)) !== null && _e !== void 0 ? _e : (0, helpers_1.getExtendedValueNumber)(effectiveValue)) !== null && _f !== void 0 ? _f : (0, helpers_1.getExtendedValueString)(effectiveValue));
1074
+ }, [getEffectiveValue, getFormulaValidationValue]);
1075
+ /**
1076
+ * Touch support
1077
+ * Mainly for scrolling
1078
+ */
1079
+ var _56 = (0, use_touch_1.useTouch)({
1080
+ scrollTo: scrollTo,
1081
+ scale: scale,
1082
+ onChangeScale: onChangeScale,
1083
+ }), onTouchStart = _56.onTouchStart, onDimensionsChange = _56.onDimensionsChange, scrollToTouchDevice = _56.scrollToTouchDevice, onAfterScrollToCell = _56.onAfterScrollToCell;
1084
+ /**
1085
+ * Conditional-formatting evaluation window: the padded, tile-quantized
1086
+ * viewport. The raw viewport lives in a ref (no render per scroll frame);
1087
+ * state only updates when a tile boundary is crossed, inside
1088
+ * `startTransition` so the CF recompute is low-priority and interruptible —
1089
+ * scrolling never blocks on it.
1090
+ */
1091
+ var _57 = tslib_1.__read((0, react_1.useState)(cf_window_1.CF_INITIAL_WINDOW), 2), cfWindow = _57[0], setCfWindow = _57[1];
1092
+ var cfWindowRef = (0, react_1.useRef)(null);
1093
+ var handleViewPortChange = (0, react_1.useCallback)(function (viewport) {
1094
+ onViewPortChange === null || onViewPortChange === void 0 ? void 0 : onViewPortChange(viewport);
1095
+ if (!windowConditionalFormats)
1096
+ return;
1097
+ var next = (0, cf_window_1.cfWindowForViewport)(viewport);
1098
+ if (!(0, cf_window_1.isSameCfWindow)(cfWindowRef.current, next)) {
1099
+ cfWindowRef.current = next;
1100
+ (0, react_1.startTransition)(function () { return setCfWindow(next); });
1101
+ }
1102
+ }, [onViewPortChange, windowConditionalFormats]);
1103
+ /**
1104
+ * Conditional Styles that should be applied to cell
1105
+ */
1106
+ var conditionalFormatByCell = (0, use_conditional_formatting_1.useConditionalFormatting)({
1107
+ locale: locale,
1108
+ sheetId: sheetId,
1109
+ conditionalFormats: conditionalFormats !== null && conditionalFormats !== void 0 ? conditionalFormats : undefined,
1110
+ getValidationValue: getValidationValue,
1111
+ isNumberValue: isNumberValue,
1112
+ theme: theme,
1113
+ getSheetRowCount: getSheetRowCount,
1114
+ getSheetColumnCount: getSheetColumnCount,
1115
+ window: windowConditionalFormats ? cfWindow : undefined,
1116
+ // Aggregate rules (TOP/BOTTOM-N, DUPLICATE/UNIQUE, above/below-average)
1117
+ // consume the engine's per-cell stamps when the host declares them.
1118
+ getConditionalFormatResult: engineConditionalFormatResults
1119
+ ? getFormulaValidationValue
1120
+ : undefined,
1121
+ });
1122
+ /**
1123
+ * Get conditional format of a cell
1124
+ */
1125
+ var getConditionalCellFormat = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1126
+ return conditionalFormatByCell.get((0, grid_5.cellIdentifier)(rowIndex, columnIndex));
1127
+ }, [conditionalFormatByCell]);
1128
+ /**
1129
+ * Get conditional format of a cell
1130
+ */
1131
+ var getBandedCellFormat = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1132
+ return bandedCells.get((0, grid_5.cellIdentifier)(rowIndex, columnIndex));
1133
+ }, [bandedCells]);
1134
+ /**
1135
+ * Get data validation of a cell
1136
+ */
1137
+ var getDataValidationRule = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1138
+ var _a;
1139
+ return getDataValidation
1140
+ ? getDataValidation(sheetId, rowIndex, columnIndex)
1141
+ : (_a = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.dataValidation;
1142
+ }, [getCellData, getDataValidation]);
1143
+ // Get default horizontal alignment
1144
+ var getDefaultHorizontalAlignment = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1145
+ var _a, _b;
1146
+ var isBoolean = !(0, utils_1.isNil)(getBooleanValue(sheetId, rowIndex, columnIndex));
1147
+ var errorValue = getErrorValue(sheetId, rowIndex, columnIndex);
1148
+ // A checkbox cell centers regardless of its VALUE (Google Sheets):
1149
+ // a blank checkbox (no `ue` at all) and a windowed host whose lean
1150
+ // read reconstructs the boolean as text both miss the `bv` probe.
1151
+ var isCheckbox = ((_b = (_a = getDataValidationRule(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.condition) === null || _b === void 0 ? void 0 : _b.type) === "BOOLEAN";
1152
+ var nv = (0, helpers_1.getExtendedValueNumber)(getEffectiveValue(sheetId, rowIndex, columnIndex));
1153
+ if (errorValue || isBoolean || isCheckbox) {
1154
+ return "center";
1155
+ }
1156
+ if (typeof nv !== "undefined") {
1157
+ return "right";
1158
+ }
1159
+ return undefined;
1160
+ }, [getBooleanValue, getDataValidationRule, getEffectiveValue, getErrorValue]);
1161
+ /**
1162
+ * Get format specified in the cellData = effectiveFormat + conditonalFormat
1163
+ * https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/cells#effectiveFormat
1164
+ *
1165
+ * More work to be done with effectiveFormat
1166
+ * G and MS combines effectiveformat
1167
+ * effectiveFormat = cellFormat (effective + user entered + formula) + conditionalFormatting
1168
+ *
1169
+ * We are generating conditionalFormatting on the component level,
1170
+ */
1171
+ var getEffectiveCellFormat = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1172
+ var _a, _b, _c, _d, _e, _f, _g, _h;
1173
+ var cellFormat = getCellFormat(sheetId, rowIndex, columnIndex);
1174
+ var isHyperlink = Boolean(getHyperlink(sheetId, rowIndex, columnIndex));
1175
+ var conditionalCellFormat = getConditionalCellFormat(sheetId, rowIndex, columnIndex);
1176
+ var bandedCellFormat = getBandedCellFormat(sheetId, rowIndex, columnIndex);
1177
+ // Conditional format cell color for
1178
+ // light and dark themes
1179
+ var conditionalFormatColor = (conditionalCellFormat === null || conditionalCellFormat === void 0 ? void 0 : conditionalCellFormat.backgroundColor) &&
1180
+ !((_a = conditionalCellFormat === null || conditionalCellFormat === void 0 ? void 0 : conditionalCellFormat.textFormat) === null || _a === void 0 ? void 0 : _a.color)
1181
+ ? (0, utils_1.getContrastColor)((0, themes_1.getStringifiedColor)(conditionalCellFormat.backgroundColor, theme), (0, themes_1.getStringifiedColor)({ theme: 1 }, theme), (0, themes_1.getStringifiedColor)({ theme: 1, tint: 1 }, theme))
1182
+ : undefined;
1183
+ // Excel / Google Sheets: a number-format pattern can carry per-section
1184
+ // color directives like `[Blue]#,##0.00;[Red]-#,##0.00;[Green]"zero";[Magenta]@`.
1185
+ // The section is picked by the effective value's sign / type — section
1186
+ // 3 (the `@` branch) applies to string values. Excel applies the
1187
+ // matched section's color OVER the cell's font color at display time
1188
+ // (only conditional-format font colors rank higher), so the resolved
1189
+ // color is layered on top of `uf.textFormat.color` after the merge
1190
+ // below — the import path stores the cell's real font color and relies
1191
+ // on this value-current resolution for `[Red]`-style display colors.
1192
+ //
1193
+ // Prefer the string branch when both are present so non-numeric text
1194
+ // picks the `@` section instead of a number section computed from a
1195
+ // coerced NaN.
1196
+ var numberFormatPattern = (_b = cellFormat === null || cellFormat === void 0 ? void 0 : cellFormat.numberFormat) === null || _b === void 0 ? void 0 : _b.pattern;
1197
+ var effectiveValueForColor = numberFormatPattern
1198
+ ? getEffectiveValue(sheetId, rowIndex, columnIndex)
1199
+ : undefined;
1200
+ var valueForColor = effectiveValueForColor
1201
+ ? (_d = (_c = (0, helpers_1.getExtendedValueString)(effectiveValueForColor)) !== null && _c !== void 0 ? _c : (0, helpers_1.getExtendedValueNumber)(effectiveValueForColor)) !== null && _d !== void 0 ? _d : (0, helpers_1.getExtendedValueBool)(effectiveValueForColor)
1202
+ : undefined;
1203
+ var patternColor = numberFormatPattern && valueForColor !== undefined
1204
+ ? (0, utils_1.ssfFormatColor)(numberFormatPattern, valueForColor)
1205
+ : undefined;
1206
+ // Final text format. Hyperlink cells auto-derive underline at paint
1207
+ // time — `uf.textFormat.underline` is merged on top below, so a user
1208
+ // who explicitly sets underline=false still wins.
1209
+ var defaultTextFormat = {
1210
+ bold: isTableHeader(rowIndex, columnIndex) &&
1211
+ isTableHeaderThemed(rowIndex, columnIndex)
1212
+ ? true
1213
+ : undefined,
1214
+ fontFamily: theme.primaryFontFamily,
1215
+ color: isHyperlink
1216
+ ? theme.themeColors.hyperlink
1217
+ : (_g = (_f = patternColor !== null && patternColor !== void 0 ? patternColor : (_e = bandedCellFormat === null || bandedCellFormat === void 0 ? void 0 : bandedCellFormat.textFormat) === null || _e === void 0 ? void 0 : _e.color) !== null && _f !== void 0 ? _f : conditionalFormatColor) !== null && _g !== void 0 ? _g : (0, themes_1.getStringifiedColor)(cellColor, theme),
1218
+ underline: isHyperlink ? true : undefined,
1219
+ };
1220
+ var mergedFormat = (0, merge_1.default)({
1221
+ textFormat: defaultTextFormat,
1222
+ }, (0, helpers_1.definedProps)(cellFormat), conditionalCellFormat);
1223
+ // Number-format section colors beat the cell's font color (Excel
1224
+ // parity), but never a conditional-format font color or the
1225
+ // hyperlink color.
1226
+ if (patternColor &&
1227
+ !isHyperlink &&
1228
+ !((_h = conditionalCellFormat === null || conditionalCellFormat === void 0 ? void 0 : conditionalCellFormat.textFormat) === null || _h === void 0 ? void 0 : _h.color)) {
1229
+ mergedFormat.textFormat = tslib_1.__assign(tslib_1.__assign({}, mergedFormat.textFormat), { color: patternColor });
1230
+ }
1231
+ return tslib_1.__assign(tslib_1.__assign({}, bandedCellFormat), mergedFormat);
1232
+ }, [
1233
+ getCellFormat,
1234
+ getConditionalCellFormat,
1235
+ getBandedCellFormat,
1236
+ getHyperlink,
1237
+ isTableHeader,
1238
+ isTableHeaderThemed,
1239
+ getEffectiveValue,
1240
+ theme,
1241
+ cellColor,
1242
+ ]);
1243
+ /**
1244
+ * Get horizontal alignment of editor
1245
+ */
1246
+ var getEditorHorizontalAlignment = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1247
+ var _a, _b, _c;
1248
+ var isFormula = !!getFormulaValue(sheetId, rowIndex, columnIndex);
1249
+ var isBoolean = !(0, utils_1.isNil)(getBooleanValue(sheetId, rowIndex, columnIndex));
1250
+ // Boolean cell: Center align text
1251
+ // Formula cell: Always left align text in editor
1252
+ return isFormula
1253
+ ? "left"
1254
+ : isBoolean
1255
+ ? "center"
1256
+ : (_c = (_b = (_a = getEffectiveCellFormat(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.horizontalAlignment) !== null && _b !== void 0 ? _b : getDefaultHorizontalAlignment(sheetId, rowIndex, columnIndex)) !== null && _c !== void 0 ? _c : config_1.CELL_HORIZONTAL_ALIGNMENT;
1257
+ }, [
1258
+ getFormulaValue,
1259
+ getBooleanValue,
1260
+ getEffectiveCellFormat,
1261
+ getDefaultHorizontalAlignment,
1262
+ ]);
1263
+ // Check if we need to wrap a cell
1264
+ var shouldWrapCell = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1265
+ var _a;
1266
+ return (((_a = getEffectiveCellFormat(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.wrapStrategy) ===
1267
+ "wrap");
1268
+ }, [getEffectiveCellFormat]);
1269
+ /**
1270
+ * Get formatting applied to a cell
1271
+ */
1272
+ var getTextFormat = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1273
+ var _a, _b;
1274
+ if (isRowHeader(columnIndex) || isColumnHeader(rowIndex)) {
1275
+ return config_1.HEADER_TEXT_FORMAT;
1276
+ }
1277
+ return ((_b = (_a = getEffectiveCellFormat === null || getEffectiveCellFormat === void 0 ? void 0 : getEffectiveCellFormat(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.textFormat) !== null && _b !== void 0 ? _b : config_1.DEFAULT_TEXT_FORMAT);
1278
+ }, [getEffectiveCellFormat, isRowHeader, isColumnHeader]);
1279
+ /**
1280
+ * Get cell selections from structured tables
1281
+ */
1282
+ var getSelectionFromTable = (0, use_structured_reference_selection_1.useOnStructuredReferenceSelection)({
1283
+ tables: tables !== null && tables !== void 0 ? tables : undefined,
1284
+ getSheetName: getSheetName,
1285
+ });
1286
+ // Build case-insensitive lookup map for O(1) named range access
1287
+ var namedRangeMap = (0, react_1.useMemo)(function () {
1288
+ var map = new Map();
1289
+ namedRanges === null || namedRanges === void 0 ? void 0 : namedRanges.forEach(function (range) {
1290
+ map.set(range.name.toLowerCase(), range);
1291
+ });
1292
+ return map;
1293
+ }, [namedRanges]);
1294
+ /**
1295
+ * Get cell selections from named ranges
1296
+ */
1297
+ var getSelectionFromNamedRange = (0, react_1.useCallback)(function (variableName) {
1298
+ // O(1) hash lookup instead of O(n) linear search
1299
+ var namedRange = namedRangeMap.get(variableName.toLowerCase());
1300
+ // Only return selection for names with ranges
1301
+ if (namedRange === null || namedRange === void 0 ? void 0 : namedRange.range) {
1302
+ return {
1303
+ range: namedRange.range,
1304
+ sheetName: getSheetName === null || getSheetName === void 0 ? void 0 : getSheetName(namedRange.range.sheetId),
1305
+ };
1306
+ }
1307
+ // Get static or formula value
1308
+ var result = namedRange === null || namedRange === void 0 ? void 0 : namedRange.value;
1309
+ if (!(0, utils_1.isNil)(result)) {
1310
+ return result;
1311
+ }
1312
+ return undefined;
1313
+ }, [namedRangeMap, getSheetName]);
1314
+ /**
1315
+ * Create a tokenizer for Rich text editor
1316
+ */
1317
+ var tokenizer = (0, use_create_formula_tokenizer_1.useCreateFormulaTokenizer)({
1318
+ getSelectionFromNamedRange: getSelectionFromNamedRange,
1319
+ getSelectionFromTable: getSelectionFromTable,
1320
+ editingCellCoordinate: editingCellCoordinate,
1321
+ sheetId: sheetId,
1322
+ activeCell: activeCell,
1323
+ tokenizer: defaultTokenizer,
1324
+ });
1325
+ // Helper function to convert a selection to readable selection address
1326
+ var _58 = tslib_1.__read((0, use_create_address_from_selection_1.useCreateAddressFromSelection)({
1327
+ sheetId: sheetId,
1328
+ rowCount: rowCount,
1329
+ columnCount: columnCount,
1330
+ tables: tables !== null && tables !== void 0 ? tables : undefined,
1331
+ namedRanges: namedRanges !== null && namedRanges !== void 0 ? namedRanges : undefined,
1332
+ merges: merges,
1333
+ }), 2), getAddressFromSelection = _58[0], getR1C1AddressFromSelection = _58[1];
1334
+ /**
1335
+ * Exports a data region as image
1336
+ */
1337
+ var exportRange = (0, use_export_range_1.useExportRange)({
1338
+ sheetId: sheetId,
1339
+ cellBackgroundColor: cellBackgroundColor,
1340
+ gridLineWidth: gridLineWidth,
1341
+ getCanvasLayers: getCanvasLayers,
1342
+ getRowHeaderCanvasLayer: getRowHeaderCanvasLayer,
1343
+ getColumnHeaderCanvasLayer: getColumnHeaderCanvasLayer,
1344
+ getCellOffsetFromCoords: getCellOffsetFromCoords,
1345
+ getR1C1AddressFromSelection: getR1C1AddressFromSelection,
1346
+ getSheetName: getSheetName,
1347
+ getScrollPosition: getScrollPosition,
1348
+ getViewPort: getViewPort,
1349
+ getRowOffset: getRowOffset,
1350
+ getColumnOffset: getColumnOffset,
1351
+ getSheetDimensions: getSheetDimensions,
1352
+ scrollTo: scrollTo,
1353
+ scrollToCell: scrollToCell,
1354
+ scale: scale,
1355
+ onChangeScale: onChangeScale,
1356
+ });
1357
+ /**
1358
+ * Get all cell selections from formula string
1359
+ */
1360
+ var getSelectionsFromFormula = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function (value, cell) {
1361
+ var _a, _b;
1362
+ var editingSheetName = getSheetName === null || getSheetName === void 0 ? void 0 : getSheetName((_a = editingCellCoordinate === null || editingCellCoordinate === void 0 ? void 0 : editingCellCoordinate.sheetId) !== null && _a !== void 0 ? _a : sheetId);
1363
+ var editingSheetId = (_b = editingCellCoordinate === null || editingCellCoordinate === void 0 ? void 0 : editingCellCoordinate.sheetId) !== null && _b !== void 0 ? _b : sheetId;
1364
+ return (0, selections_1.generateSelectionsFromFormula)(value, editingSheetId, editingSheetName, cell, rowCount, columnCount, tokenizer, getSelectionFromTable, getSelectionFromNamedRange);
1365
+ }, [
1366
+ rowCount,
1367
+ columnCount,
1368
+ editingCellCoordinate,
1369
+ tokenizer,
1370
+ getSelectionFromTable,
1371
+ getSheetName,
1372
+ getSelectionFromNamedRange,
1373
+ sheetId,
1374
+ ]));
1375
+ /**
1376
+ * Get user entered value from a range
1377
+ * of cells
1378
+ */
1379
+ var _59 = tslib_1.__read((0, use_get_values_from_range_1.useGetValuesFromRange)({
1380
+ sheetId: sheetId,
1381
+ getSelectionsFromFormula: getSelectionsFromFormula,
1382
+ getFormattedValue: getFormattedValue,
1383
+ getValidationValue: getValidationValue,
1384
+ getSheetId: getSheetId,
1385
+ onRequestCalculate: onRequestCalculate,
1386
+ getValidationSourceValue: getValidationSourceValue,
1387
+ }), 3), getFormattedValuesFromAddress = _59[0], getEffectiveValuesFromRange = _59[1], getFormattedValuesFromAddressAsync = _59[2];
1388
+ /**
1389
+ * Get all formatted values from range as a single 1d array
1390
+ */
1391
+ var getFormattedValuesFromRange = (0, react_1.useCallback)(function (sheetId, selections) {
1392
+ var e_9, _a, e_10, _b;
1393
+ var values = new Set();
1394
+ try {
1395
+ for (var selections_2 = tslib_1.__values(selections), selections_2_1 = selections_2.next(); !selections_2_1.done; selections_2_1 = selections_2.next()) {
1396
+ var range = selections_2_1.value.range;
1397
+ try {
1398
+ for (var _c = (e_10 = void 0, tslib_1.__values((0, utils_1.iterateCellsInRange)(range))), _d = _c.next(); !_d.done; _d = _c.next()) {
1399
+ var _e = tslib_1.__read(_d.value, 2), rowIndex = _e[0], columnIndex = _e[1];
1400
+ var formattedValue = getFormattedValue(sheetId, rowIndex, columnIndex);
1401
+ if (!(0, utils_1.isNil)(formattedValue)) {
1402
+ values.add(formattedValue);
1403
+ }
1404
+ }
1405
+ }
1406
+ catch (e_10_1) { e_10 = { error: e_10_1 }; }
1407
+ finally {
1408
+ try {
1409
+ if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
1410
+ }
1411
+ finally { if (e_10) throw e_10.error; }
1412
+ }
1413
+ }
1414
+ }
1415
+ catch (e_9_1) { e_9 = { error: e_9_1 }; }
1416
+ finally {
1417
+ try {
1418
+ if (selections_2_1 && !selections_2_1.done && (_a = selections_2.return)) _a.call(selections_2);
1419
+ }
1420
+ finally { if (e_9) throw e_9.error; }
1421
+ }
1422
+ return tslib_1.__spreadArray([], tslib_1.__read(values), false);
1423
+ }, [getFormattedValue]);
1424
+ /**
1425
+ * Resolve commit-time data validation enforcement for a value being entered.
1426
+ * Returns the alert + decision when the value is invalid and the rule has an
1427
+ * error alert; otherwise `undefined` (no enforcement — the cell still gets the
1428
+ * flag-only red marker via `SheetCell.validate`). Formula-backed rules resolve
1429
+ * asynchronously through the calculator, so they fall back to flag-only here.
1430
+ */
1431
+ var getCommitValidation = (0, react_1.useCallback)(function (validationSheetId, rowIndex, columnIndex, value, previousValue) {
1432
+ var _a, _b, _c;
1433
+ var rule = getDataValidationRule(validationSheetId, rowIndex, columnIndex);
1434
+ var alert = rule === null || rule === void 0 ? void 0 : rule.alert;
1435
+ if (!rule || !alert) {
1436
+ return undefined;
1437
+ }
1438
+ var isBlank = value === undefined ||
1439
+ value === null ||
1440
+ (typeof value === "string" && value === "");
1441
+ if (rule.allowBlank && isBlank) {
1442
+ return undefined;
1443
+ }
1444
+ if ((0, utils_1.isDataValidationFormulaRule)(rule)) {
1445
+ // Enforce synchronously only where `checkBooleanRule` can decide the typed
1446
+ // value without the calculator: CUSTOM_FORMULA's sync branch is a stub, the
1447
+ // DATE_* comparisons expect serial values (commit hands us the raw typed
1448
+ // string), and literal bounds may themselves be formulas/references. Those
1449
+ // stay flag-only via the async calc path; everything else (dropdown
1450
+ // lists/ranges, number/text bounds, blank/boolean/email/url) blocks or
1451
+ // warns at commit like Excel.
1452
+ var conditionType = (_a = rule.condition) === null || _a === void 0 ? void 0 : _a.type;
1453
+ var conditionValues = (_c = (_b = rule.condition) === null || _b === void 0 ? void 0 : _b.values) !== null && _c !== void 0 ? _c : [];
1454
+ var hasFormulaBound = conditionValues.some(function (entry) {
1455
+ return typeof (entry === null || entry === void 0 ? void 0 : entry.userEnteredValue) === "string" &&
1456
+ entry.userEnteredValue.trim().startsWith("=");
1457
+ });
1458
+ var syncEnforceable = conditionType !== "CUSTOM_FORMULA" &&
1459
+ !(conditionType === null || conditionType === void 0 ? void 0 : conditionType.startsWith("DATE_")) &&
1460
+ (conditionType === "ONE_OF_RANGE" || !hasFormulaBound);
1461
+ if (!syncEnforceable) {
1462
+ return undefined;
1463
+ }
1464
+ }
1465
+ var isValid = (0, validation_1.checkBooleanRule)(rule, value, previousValue !== null && previousValue !== void 0 ? previousValue : undefined, getFormattedValuesFromAddress, { locale: locale });
1466
+ var decision = (0, validation_1.decideValidationCommit)(alert, Boolean(isValid));
1467
+ if (decision === "proceed") {
1468
+ return undefined;
1469
+ }
1470
+ return { decision: decision, alert: alert };
1471
+ }, [getDataValidationRule, getFormattedValuesFromAddress, locale]);
1472
+ /**
1473
+ * Opens the blocking data-validation alert dialog (Excel error alert).
1474
+ */
1475
+ var showValidationAlert = (0, atoms_1.useShowValidationAlert)();
1476
+ /**
1477
+ * Screen-reader announcement for the active cell (address + value). Rendered
1478
+ * into a visually-hidden aria-live region below so keyboard navigation of the
1479
+ * canvas grid is audible to assistive technology.
1480
+ */
1481
+ var activeCellAnnouncement = (0, react_1.useMemo)(function () {
1482
+ var _a;
1483
+ if (!activeCell)
1484
+ return "";
1485
+ var address = (_a = (0, utils_1.cellToAddress)(activeCell)) !== null && _a !== void 0 ? _a : "";
1486
+ var value = getFormattedValue(sheetId, activeCell.rowIndex, activeCell.columnIndex);
1487
+ return !(0, utils_1.isNilOrBlank)(value) ? "".concat(address, " ").concat(value) : address;
1488
+ }, [activeCell, getFormattedValue, sheetId]);
1489
+ /**
1490
+ * Has the row been resized by user
1491
+ */
1492
+ var isRowResizedByUser = (0, react_1.useCallback)(function (rowIndex) { var _a; return !!((_a = rowMetadata === null || rowMetadata === void 0 ? void 0 : rowMetadata[rowIndex]) === null || _a === void 0 ? void 0 : _a.resizedByUser); }, [rowMetadata]);
1493
+ /**
1494
+ * Check if the cell is banded
1495
+ */
1496
+ var isBandedCell = (0, react_1.useCallback)(function (rowIndex, columnIndex) {
1497
+ return bandedCells.has((0, grid_5.cellIdentifier)(rowIndex, columnIndex));
1498
+ }, [bandedCells]);
1499
+ /**
1500
+ * Check if table header cell is calculated column
1501
+ */
1502
+ var isCalculatedColumnHeaderCell = (0, react_1.useCallback)(function (rowIndex, columnIndex) {
1503
+ /* Table header cells, Cell has filter icon */
1504
+ var _a = tslib_1.__read(tableHeaderCells, 4), calculatedHeaderCell = _a[3];
1505
+ return calculatedHeaderCell.has((0, grid_5.cellIdentifier)(rowIndex, columnIndex));
1506
+ }, [tableHeaderCells]);
1507
+ /**
1508
+ * If a cell is hidden,
1509
+ * We tell the grid to skip rendering
1510
+ */
1511
+ var isHiddenCell = (0, react_1.useCallback)(function (rowIndex, columnIndex) {
1512
+ var _a;
1513
+ if (isRowHeader(columnIndex) || isColumnHeader(rowIndex)) {
1514
+ return false;
1515
+ }
1516
+ if (isTableHeader(rowIndex, columnIndex)) {
1517
+ return false;
1518
+ }
1519
+ if (isBandedCell(rowIndex, columnIndex)) {
1520
+ return false;
1521
+ }
1522
+ if (getDataValidationRule(sheetId, rowIndex, columnIndex)) {
1523
+ return false;
1524
+ }
1525
+ // Show cells with diffs when comparing (including deleted cells)
1526
+ if (isComparing && (getCellDiff === null || getCellDiff === void 0 ? void 0 : getCellDiff(sheetId, rowIndex, columnIndex))) {
1527
+ return false;
1528
+ }
1529
+ var effectiveCellFormat = getEffectiveCellFormat(sheetId, rowIndex, columnIndex);
1530
+ var formattedValue = getFormattedValue === null || getFormattedValue === void 0 ? void 0 : getFormattedValue(sheetId, rowIndex, columnIndex);
1531
+ // Structured result
1532
+ var structuredValue = (_a = getEffectiveValue(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.structuredValue;
1533
+ return (getNote(sheetId, rowIndex, columnIndex) === undefined &&
1534
+ getComment(sheetId, rowIndex, columnIndex) === undefined &&
1535
+ getCitation(sheetId, rowIndex, columnIndex) === undefined &&
1536
+ (0, utils_1.isNilOrBlank)(formattedValue) &&
1537
+ (0, utils_1.isNil)(structuredValue) &&
1538
+ getCellImageUrl(sheetId, rowIndex, columnIndex) === undefined &&
1539
+ (effectiveCellFormat === null || effectiveCellFormat === void 0 ? void 0 : effectiveCellFormat.backgroundColor) === undefined &&
1540
+ (effectiveCellFormat === null || effectiveCellFormat === void 0 ? void 0 : effectiveCellFormat.borders) === undefined);
1541
+ }, [
1542
+ sheetId,
1543
+ getFormattedValue,
1544
+ getCellImageUrl,
1545
+ getNote,
1546
+ getComment,
1547
+ getCitation,
1548
+ getEffectiveCellFormat,
1549
+ getDataValidationRule,
1550
+ getEffectiveValue,
1551
+ isRowHeader,
1552
+ isColumnHeader,
1553
+ isTableHeader,
1554
+ isBandedCell,
1555
+ isComparing,
1556
+ getCellDiff,
1557
+ ]);
1558
+ /**
1559
+ * Can a cell overflow to adjoining cell
1560
+ */
1561
+ var canOverflowToNextCell = (0, react_1.useCallback)(function (_a) {
1562
+ var rowIndex = _a.rowIndex, columnIndex = _a.columnIndex;
1563
+ if (isRowHeader(columnIndex) || isColumnHeader(rowIndex)) {
1564
+ return false;
1565
+ }
1566
+ if (isTableHeader(rowIndex, columnIndex)) {
1567
+ return false;
1568
+ }
1569
+ if (isBandedCell(rowIndex, columnIndex)) {
1570
+ return false;
1571
+ }
1572
+ if (getDataValidationRule(sheetId, rowIndex, columnIndex)) {
1573
+ return false;
1574
+ }
1575
+ var _b = tslib_1.__read(getCellGroupingInfo(sheetId, rowIndex, columnIndex), 1), expandable = _b[0];
1576
+ if (expandable) {
1577
+ return false;
1578
+ }
1579
+ var formattedValue = getFormattedValue === null || getFormattedValue === void 0 ? void 0 : getFormattedValue(sheetId, rowIndex, columnIndex);
1580
+ return (getNote(sheetId, rowIndex, columnIndex) === undefined &&
1581
+ (0, utils_1.isNilOrBlank)(formattedValue) &&
1582
+ getCellImageUrl(sheetId, rowIndex, columnIndex) === undefined);
1583
+ }, [
1584
+ sheetId,
1585
+ getFormattedValue,
1586
+ getCellGroupingInfo,
1587
+ getCellImageUrl,
1588
+ getNote,
1589
+ getDataValidationRule,
1590
+ isRowHeader,
1591
+ isColumnHeader,
1592
+ isTableHeader,
1593
+ isBandedCell,
1594
+ ]);
1595
+ /**
1596
+ * If a cell is hidden,
1597
+ * We tell the grid to skip rendering
1598
+ */
1599
+ var isHiddenOverlay = (0, react_1.useCallback)(function (rowIndex, columnIndex) {
1600
+ var _a;
1601
+ if (isRowHeader(columnIndex) || isColumnHeader(rowIndex)) {
1602
+ return true;
1603
+ }
1604
+ return (((_a = getEffectiveCellFormat(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.borders) ===
1605
+ undefined);
1606
+ }, [getEffectiveCellFormat, isRowHeader, isColumnHeader, sheetId]);
1607
+ /**
1608
+ * If a cell is hidden,
1609
+ * We tell the grid to skip rendering
1610
+ */
1611
+ var isHiddenBackground = (0, react_1.useCallback)(function (rowIndex, columnIndex) {
1612
+ var _a, _b;
1613
+ if (isRowHeader(columnIndex) || isColumnHeader(rowIndex)) {
1614
+ return true;
1615
+ }
1616
+ if (isMergedCell({ rowIndex: rowIndex, columnIndex: columnIndex })) {
1617
+ return false;
1618
+ }
1619
+ // Skip the bg shape only when the cell has NO visible fill at all.
1620
+ // A cell counts as "has fill" if any of these are present:
1621
+ // - backgroundColor (solid)
1622
+ // - fillPattern (other than "none")
1623
+ // - gradient (with at least one stop)
1624
+ // The earlier version only checked backgroundColor, which
1625
+ // incorrectly hid pattern-only and gradient-only cells.
1626
+ var fmt = getEffectiveCellFormat(sheetId, rowIndex, columnIndex);
1627
+ if (!fmt)
1628
+ return true;
1629
+ if (!(0, utils_1.isNil)(fmt.backgroundColor)) {
1630
+ return false;
1631
+ }
1632
+ if (fmt.fillPattern && fmt.fillPattern !== "none") {
1633
+ return false;
1634
+ }
1635
+ if (fmt.gradient && ((_b = (_a = fmt.gradient.stops) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0) {
1636
+ return false;
1637
+ }
1638
+ return true;
1639
+ }, [
1640
+ getEffectiveCellFormat,
1641
+ isRowHeader,
1642
+ isColumnHeader,
1643
+ isMergedCell,
1644
+ sheetId,
1645
+ ]);
1646
+ /**
1647
+ * Row height getter
1648
+ */
1649
+ var rowHeight = (0, react_1.useCallback)(function (rowIndex) {
1650
+ var _a, _b;
1651
+ if (isColumnHeader(rowIndex)) {
1652
+ return showHeaders ? columnHeaderHeight : 0;
1653
+ }
1654
+ if (isHiddenRow(rowIndex)) {
1655
+ return 0;
1656
+ }
1657
+ return (_b = (_a = rowMetadata === null || rowMetadata === void 0 ? void 0 : rowMetadata[rowIndex]) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : defaultRowHeight;
1658
+ }, [
1659
+ isHiddenRow,
1660
+ isColumnHeader,
1661
+ rowMetadata,
1662
+ columnHeaderHeight,
1663
+ defaultRowHeight,
1664
+ showHeaders,
1665
+ ]);
1666
+ /**
1667
+ * Column width getter
1668
+ */
1669
+ var columnWidth = (0, react_1.useCallback)(function (columnIndex) {
1670
+ var _a, _b;
1671
+ if (isRowHeader(columnIndex)) {
1672
+ return showHeaders ? rowHeaderWidth : 0;
1673
+ }
1674
+ if (isHiddenColumn(columnIndex)) {
1675
+ return 0;
1676
+ }
1677
+ return (_b = (_a = columnMetadata === null || columnMetadata === void 0 ? void 0 : columnMetadata[columnIndex]) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : defaultColumnWidth;
1678
+ }, [
1679
+ isHiddenColumn,
1680
+ isRowHeader,
1681
+ columnMetadata,
1682
+ rowHeaderWidth,
1683
+ defaultColumnWidth,
1684
+ showHeaders,
1685
+ ]);
1686
+ /**
1687
+ * Get actual cell width with merged cells
1688
+ */
1689
+ var getActualCellWidth = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
1690
+ var actualBounds = mergedCellMap.get((0, grid_5.cellIdentifier)(rowIndex, columnIndex));
1691
+ var cellWidth = columnWidth(columnIndex);
1692
+ if (actualBounds) {
1693
+ var left = actualBounds.startColumnIndex + 1;
1694
+ while (left <= actualBounds.endColumnIndex) {
1695
+ cellWidth += columnWidth(left);
1696
+ left++;
1697
+ }
1698
+ return cellWidth;
1699
+ }
1700
+ return cellWidth;
1701
+ }, [columnWidth, mergedCellMap]);
1702
+ /**
1703
+ * Gather selected headers
1704
+ * O(n)
1705
+ * Reduces Space Complexity by using `all`
1706
+ */
1707
+ var _60 = tslib_1.__read((0, use_selected_rows_columns_1.useSelectedRowsColumns)({
1708
+ activeCell: activeCell,
1709
+ selections: selections,
1710
+ selectionLeftBound: selectionLeftBound,
1711
+ selectionTopBound: selectionTopBound,
1712
+ rowCount: rowCount,
1713
+ columnCount: columnCount,
1714
+ getCellBounds: getCellBounds,
1715
+ }), 6), selectedRows = _60[0], selectedColumns = _60[1], selectedRowHeaders = _60[2], selectedColumnHeaders = _60[3], selectedRowHeadersIds = _60[4], selectedColumnHeadersIds = _60[5];
1716
+ // Named ranges for editor dropdown
1717
+ var getNamedRanges = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function () {
1718
+ return namedRanges === null || namedRanges === void 0 ? void 0 : namedRanges.map(function (range) { return ({
1719
+ title: range.name,
1720
+ category: "namedrange",
1721
+ }); });
1722
+ }, [namedRanges]));
1723
+ // Get cell properties
1724
+ var getStructuredProperties = (0, react_1.useCallback)(function (sheetName, rowIndex, columnIndex) {
1725
+ var _a, _b;
1726
+ var newSheetId = sheetName
1727
+ ? (_a = getSheetId === null || getSheetId === void 0 ? void 0 : getSheetId(sheetName)) !== null && _a !== void 0 ? _a : sheetId
1728
+ : sheetId;
1729
+ // Pass it along to parent prop
1730
+ if (getStructuredPropertiesProp) {
1731
+ return getStructuredPropertiesProp(newSheetId, rowIndex, columnIndex);
1732
+ }
1733
+ // Get cell data
1734
+ var structuredValue = (_b = getEffectiveValue(newSheetId, rowIndex, columnIndex)) === null || _b === void 0 ? void 0 : _b.structuredValue;
1735
+ var propertyNames = structuredValue
1736
+ ? (0, helpers_2.getNestedPropertyNames)(structuredValue)
1737
+ : [];
1738
+ return propertyNames.map(function (title) {
1739
+ return {
1740
+ title: title,
1741
+ category: "property",
1742
+ };
1743
+ });
1744
+ }, [
1745
+ getSheetId,
1746
+ getEffectiveValue,
1747
+ getCellData,
1748
+ sheetId,
1749
+ getStructuredPropertiesProp,
1750
+ ]);
1751
+ // Table names for editor dropdown
1752
+ var getTableNames = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function () {
1753
+ return tables === null || tables === void 0 ? void 0 : tables.map(function (_a) {
1754
+ var title = _a.title;
1755
+ return ({ title: title, category: "table" });
1756
+ });
1757
+ }, [tables]));
1758
+ // Column names for editor dropdown
1759
+ var getTableColumnNames = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function (tableName) {
1760
+ var _a;
1761
+ var editingCell = editingCellCoordinate;
1762
+ var editingSheetId = editingCellCoordinate === null || editingCellCoordinate === void 0 ? void 0 : editingCellCoordinate.sheetId;
1763
+ var table = tables === null || tables === void 0 ? void 0 : tables.find(function (table) {
1764
+ if (tableName) {
1765
+ return table.title === tableName;
1766
+ }
1767
+ return editingCell
1768
+ ? (0, grid_4.isCellWithinBounds)(editingCell, table.range) &&
1769
+ table.sheetId === editingSheetId
1770
+ : true;
1771
+ });
1772
+ if (!table) {
1773
+ return config_1.DEFAULT_ARRAY;
1774
+ }
1775
+ return (_a = table.columns) === null || _a === void 0 ? void 0 : _a.map(function (column) { return ({
1776
+ title: column.name,
1777
+ category: "column",
1778
+ }); });
1779
+ }, [tables, editingCellCoordinate]));
1780
+ /**
1781
+ * Mosue down interceptors for useSelection hook so
1782
+ * user can select entire column or row when selecting
1783
+ * header cells
1784
+ */
1785
+ var _61 = (0, use_selection_interceptors_1.useSelectionInterceptors)({
1786
+ sheetId: sheetId,
1787
+ rowCount: rowCount,
1788
+ columnCount: columnCount,
1789
+ frozenColumns: frozenColumns,
1790
+ frozenRows: frozenRows,
1791
+ selectionLeftBound: selectionLeftBound,
1792
+ selectionTopBound: selectionTopBound,
1793
+ isHiddenColumn: isHiddenColumn,
1794
+ isHiddenRow: isHiddenRow,
1795
+ isRowHeader: isRowHeader,
1796
+ isColumnHeader: isColumnHeader,
1797
+ getViewPort: getViewPort,
1798
+ onChangeActiveCell: onChangeActiveCell,
1799
+ scrollToCell: scrollToCell,
1800
+ isMergedCell: isMergedCell,
1801
+ }), onMouseDownInterceptor = _61.onMouseDownInterceptor, onMouseMoveInterceptor = _61.onMouseMoveInterceptor;
1802
+ /**
1803
+ * When user selections full rows
1804
+ * or columns, we have to ignore
1805
+ * merged cells
1806
+ */
1807
+ var canSelectionSpanMergedCells = (0, react_1.useCallback)(function (start, end) {
1808
+ if (start.rowIndex < selectionTopBound && end.rowIndex === rowCount) {
1809
+ return false;
1810
+ }
1811
+ if (start.columnIndex < selectionLeftBound &&
1812
+ end.columnIndex === columnCount) {
1813
+ return false;
1814
+ }
1815
+ return true;
1816
+ }, [rowCount, columnCount, selectionTopBound, selectionLeftBound]);
1817
+ /**
1818
+ * For autofitting text, extra space is
1819
+ * added for filter icon, dropdown icon etc
1820
+ */
1821
+ var getCellSpacing = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex, axis) {
1822
+ var _a, _b, _c;
1823
+ /**
1824
+ * Icons in cells do not affect
1825
+ * height of the rows. Explore later
1826
+ */
1827
+ if (axis === "x") {
1828
+ return 0;
1829
+ }
1830
+ /* Data validation arrow */
1831
+ var dataValidation = getDataValidationRule(sheetId, rowIndex, columnIndex);
1832
+ var additionalCellSpacing = (_a = getAdditionalCellSpacing === null || getAdditionalCellSpacing === void 0 ? void 0 : getAdditionalCellSpacing(sheetId, rowIndex, columnIndex)) !== null && _a !== void 0 ? _a : 0;
1833
+ var showArrow = (0, validation_1.showValidationDropdownArrow)(dataValidation);
1834
+ var showChip = getCellMetaType(sheetId, rowIndex, columnIndex) === "people";
1835
+ var _d = tslib_1.__read(getCellGroupingInfo(sheetId, rowIndex, columnIndex), 1), expandable = _d[0];
1836
+ var iconSpacing = config_1.DEFAULT_CELL_SPACING;
1837
+ var expandableSpacing = expandable
1838
+ ? (config_1.EXPAND_COLLAPSE_ICON_WIDTH + iconSpacing) * scale
1839
+ : 0;
1840
+ var indentSpacing = ((_b = getCellIndent(sheetId, rowIndex, columnIndex)) !== null && _b !== void 0 ? _b : 0) * config_1.INDENT_SPACING;
1841
+ // Cell has dropdown icon
1842
+ var arrowSpacing = showArrow
1843
+ ? (config_1.ARROW_DOWN_WIDTH + iconSpacing) * scale
1844
+ : 0;
1845
+ // Cell has chip
1846
+ var chipSpacing = showChip ? (config_1.CHIP_SPACING + iconSpacing) * scale : 0;
1847
+ /* Calculated column icon */
1848
+ var calculatedIconWidth = showCalculatedColumnIcon &&
1849
+ isTableHeader(rowIndex, columnIndex) &&
1850
+ isCalculatedColumnHeaderCell(rowIndex, columnIndex)
1851
+ ? (config_1.CALCULATED_ICON_WIDTH + iconSpacing) * scale
1852
+ : 0;
1853
+ /* Table header cells, Cell has filter icon */
1854
+ var tableFilterSpacing = isTableFilterVisible(rowIndex, columnIndex)
1855
+ ? (config_1.FILTER_ICON_WIDTH + iconSpacing) * scale
1856
+ : 0;
1857
+ /* Conditional-format iconSet glyph reserved on the left of the cell.
1858
+ The cell renderer subtracts this from the text area, so row-height
1859
+ autofit must include it to measure wrapped text at the same width. */
1860
+ var conditionalIconSpacing = ((_c = getEffectiveCellFormat(sheetId, rowIndex, columnIndex)) === null || _c === void 0 ? void 0 : _c.conditionalIcon)
1861
+ ? (config_1.CF_ICON_WIDTH + config_1.CF_ICON_SPACING) * scale
1862
+ : 0;
1863
+ return (arrowSpacing +
1864
+ chipSpacing +
1865
+ indentSpacing +
1866
+ expandableSpacing +
1867
+ calculatedIconWidth +
1868
+ tableFilterSpacing +
1869
+ conditionalIconSpacing +
1870
+ additionalCellSpacing);
1871
+ }, [
1872
+ isTableFilterVisible,
1873
+ getDataValidationRule,
1874
+ getCellMetaType,
1875
+ getCellIndent,
1876
+ showCalculatedColumnIcon,
1877
+ isTableHeader,
1878
+ isCalculatedColumnHeaderCell,
1879
+ scale,
1880
+ getCellGroupingInfo,
1881
+ getAdditionalCellSpacing,
1882
+ getEffectiveCellFormat,
1883
+ ]);
1884
+ /**
1885
+ * Column resizer
1886
+ * Enables auto resizing
1887
+ * rows and columns
1888
+ */
1889
+ var _62 = (0, use_sizer_1.useSizer)({
1890
+ frozenRows: frozenRows,
1891
+ frozenColumns: frozenColumns,
1892
+ scale: scale,
1893
+ minColumnDimension: config_1.MIN_COLUMN_WIDTH,
1894
+ minRowDimension: defaultRowHeight,
1895
+ cellHorizontalSpacing: 5, // 2 + 2 + (padding) + 1 border
1896
+ cellVerticalSpacing: 5, // 2 + 2 (padding) + 1 border
1897
+ isHiddenRow: isHiddenRow,
1898
+ isHiddenColumn: isHiddenColumn,
1899
+ getTextFormat: getTextFormat,
1900
+ getTextFormatRuns: getTextFormatRuns,
1901
+ getTextValue: getFormattedValue,
1902
+ getSpacing: getCellSpacing,
1903
+ getActualCellWidth: getActualCellWidth,
1904
+ shouldWrapCell: shouldWrapCell,
1905
+ columnWidth: columnWidth,
1906
+ getViewPort: getViewPort,
1907
+ columnCount: columnCount,
1908
+ rowCount: rowCount,
1909
+ getDataRowCount: getDataRowCount,
1910
+ fontSize: defaultFontSizePoint,
1911
+ resizeStrategy: "full",
1912
+ }), getColumnWidth = _62.getColumnWidth, getRowHeight = _62.getRowHeight, getCellDimensions = _62.getCellDimensions, getCellDimensionsStable = _62.getCellDimensionsStable, getTextDimension = _62.getTextDimension;
1913
+ /**
1914
+ * Called when user tries to
1915
+ * autofit a column or row
1916
+ */
1917
+ var handleAutoFit = (0, react_1.useCallback)(function (index, axis) {
1918
+ var indexes = axis === "x" ? selectedRowHeadersIds : selectedColumnHeadersIds;
1919
+ // Callback
1920
+ onAutoResize === null || onAutoResize === void 0 ? void 0 : onAutoResize(sheetId, indexes.length && indexes.includes(index) ? indexes : [index], axis);
1921
+ // Keep the focus back
1922
+ focusSheet();
1923
+ }, [
1924
+ onAutoResize,
1925
+ focusSheet,
1926
+ selectedColumnHeadersIds,
1927
+ selectedRowHeadersIds,
1928
+ sheetId,
1929
+ ]);
1930
+ /* Check if sheet is focused */
1931
+ var isSheetFocused = (0, react_1.useCallback)(function () {
1932
+ return grid_2.canUseDOM ? document.activeElement === (cellEditorInstance === null || cellEditorInstance === void 0 ? void 0 : cellEditorInstance.el()) : false;
1933
+ }, [cellEditorInstance]);
1934
+ /**
1935
+ * Get Cell Editor
1936
+ */
1937
+ var getEditor = (0, react_1.useCallback)(function (props) {
1938
+ var _a = props.cell, cell = _a === void 0 ? spreadsheet_state_1.defaultCellCoords : _a, sheetId = props.sheetId, _b = props.editingSheetId, editingSheetId = _b === void 0 ? sheetId : _b;
1939
+ var _c = cell !== null && cell !== void 0 ? cell : spreadsheet_state_1.defaultCellCoords, rowIndex = _c.rowIndex, columnIndex = _c.columnIndex;
1940
+ var cellFormat = !(0, utils_1.isNil)(props.editingSheetId)
1941
+ ? getEffectiveCellFormat(props.editingSheetId, rowIndex, columnIndex)
1942
+ : undefined;
1943
+ var dataValidation = getDataValidationRule(editingSheetId, rowIndex, columnIndex);
1944
+ var address = (0, utils_1.cellToAddress)(cell);
1945
+ var sheetName = getSheetName === null || getSheetName === void 0 ? void 0 : getSheetName(sheetId);
1946
+ var editingSheetName = getSheetName === null || getSheetName === void 0 ? void 0 : getSheetName(editingSheetId);
1947
+ var effectiveValue = getEffectiveValue(editingSheetId, rowIndex, columnIndex);
1948
+ var horizontalAlignment = getEditorHorizontalAlignment(editingSheetId, rowIndex, columnIndex);
1949
+ return (react_1.default.createElement(CellEditor, tslib_1.__assign({}, props, { locale: locale, effectiveValue: effectiveValue, format: cellFormat, dataValidation: dataValidation, getRangeValues: getFormattedValuesFromAddress, getRangeValuesAsync: getFormattedValuesFromAddressAsync, scale: scale, sheetName: sheetName, editingSheetId: editingSheetId, sheetId: sheetId, editingSheetName: editingSheetName, address: address, theme: theme, tokenizer: tokenizer, horizontalAlignment: horizontalAlignment, defaultBackgroundColor: cellBackgroundColor, defaultTextColor: (0, themes_1.getStringifiedColor)(cellColor, theme), functionDescriptions: functionDescriptions !== null && functionDescriptions !== void 0 ? functionDescriptions : undefined, getNamedRanges: getNamedRanges, getTableNames: getTableNames, getStructuredProperties: getStructuredProperties, getTableColumnNames: getTableColumnNames, showFormulaHelp: showFormulaHelp, onHideFormulaHelp: onHideFormulaHelp, onShowFormulaHelp: onShowFormulaHelp, onRequestCalculate: onRequestCalculate, SuggestionsDropdown: SuggestionsDropdown, stickyEditor: stickyEditor, defaultFontSizePoint: defaultFontSizePoint, getMentions: getMentions, getFunctionParameterSuggestions: getFunctionParameterSuggestions, shouldFetchFunctionParameters: shouldFetchFunctionParameters, MentionTagComponent: MentionTagComponent, MentionDropdownItemComponent: MentionDropdownItemComponent })));
1950
+ }, [
1951
+ scale,
1952
+ getEffectiveCellFormat,
1953
+ getDataValidationRule,
1954
+ getFormattedValuesFromAddress,
1955
+ CellEditor,
1956
+ getSheetName,
1957
+ showFormulaHelp,
1958
+ onHideFormulaHelp,
1959
+ onShowFormulaHelp,
1960
+ tokenizer,
1961
+ cellBackgroundColor,
1962
+ cellColor,
1963
+ functionDescriptions,
1964
+ getNamedRanges,
1965
+ getTableNames,
1966
+ getStructuredProperties,
1967
+ getTableColumnNames,
1968
+ onRequestCalculate,
1969
+ getEffectiveValue,
1970
+ getEditorHorizontalAlignment,
1971
+ locale,
1972
+ theme,
1973
+ SuggestionsDropdown,
1974
+ stickyEditor,
1975
+ defaultFontSizePoint,
1976
+ getMentions,
1977
+ getFunctionParameterSuggestions,
1978
+ shouldFetchFunctionParameters,
1979
+ MentionTagComponent,
1980
+ MentionDropdownItemComponent,
1981
+ ]);
1982
+ /**
1983
+ * Popover cell
1984
+ */
1985
+ var _63 = (0, use_cell_popover_1.useCellPopover)({
1986
+ sheetId: sheetId,
1987
+ getCellPopoverContent: getCellPopoverContent !== null && getCellPopoverContent !== void 0 ? getCellPopoverContent : getFormattedValue,
1988
+ getCellOffsetFromCoords: getCellOffsetFromCoords,
1989
+ getScrollPosition: getScrollPosition,
1990
+ isFrozenColumn: isFrozenColumn,
1991
+ isFrozenRow: isFrozenRow,
1992
+ onChangeActiveSheet: onChangeActiveSheet,
1993
+ }), popoverComponent = _63.popoverComponent, popoverRange = _63.popoverRange, showCellPopover = _63.showCellPopover, hideCellPopover = _63.hideCellPopover;
1994
+ /**
1995
+ * Get tooltip component of a cell
1996
+ * Only error, invalid values are
1997
+ * shown in tooltip
1998
+ */
1999
+ /**
2000
+ * Compose host tooltip content with the data-validation input message.
2001
+ * Host-provided content wins; otherwise, when the cell is not already showing
2002
+ * an error / invalid marker, surface the rule's input message (Excel's
2003
+ * "show input message when cell is selected").
2004
+ */
2005
+ var getTooltipContentWithValidation = (0, react_1.useCallback)(function (tooltipSheetId, rowIndex, columnIndex) {
2006
+ var hostContent = getTooltipContent === null || getTooltipContent === void 0 ? void 0 : getTooltipContent(tooltipSheetId, rowIndex, columnIndex);
2007
+ if (hostContent != null) {
2008
+ return hostContent;
2009
+ }
2010
+ var error = getErrorValue(tooltipSheetId, rowIndex, columnIndex);
2011
+ if ((error === null || error === void 0 ? void 0 : error.type) === "Error" || (error === null || error === void 0 ? void 0 : error.type) === "Invalid") {
2012
+ return undefined;
2013
+ }
2014
+ var rule = getDataValidationRule(tooltipSheetId, rowIndex, columnIndex);
2015
+ var inputMessage = rule === null || rule === void 0 ? void 0 : rule.inputMessage;
2016
+ if (!inputMessage || (!inputMessage.title && !inputMessage.message)) {
2017
+ return undefined;
2018
+ }
2019
+ return (react_1.default.createElement("div", { className: "bg-rnc-background text-rnc-foreground p-2 shadow-md rounded-md border-l-4 border-solid border-l-blue-700 max-w-[300px] flex flex-col gap-0.5" },
2020
+ inputMessage.title ? (react_1.default.createElement("div", { className: "font-bold font-system text-sm" }, inputMessage.title)) : null,
2021
+ inputMessage.message ? (react_1.default.createElement("div", { className: "text-xs font-system whitespace-pre-wrap" }, inputMessage.message)) : null));
2022
+ }, [getTooltipContent, getErrorValue, getDataValidationRule]);
2023
+ var getTooltip = (0, use_get_tooltip_1.useGetTooltip)({
2024
+ sheetId: sheetId,
2025
+ getErrorValue: getErrorValue,
2026
+ getNote: getNote,
2027
+ getFormattedValue: getFormattedValue,
2028
+ getHyperlink: getHyperlink,
2029
+ getTooltipContent: getTooltipContentWithValidation,
2030
+ errorResolutionComponent: errorResolutionComponent,
2031
+ CellTooltip: CellTooltip,
2032
+ showNotes: showNotes,
2033
+ });
2034
+ /**
2035
+ * Selection change handler
2036
+ */
2037
+ var onSelectionChange = (0, use_selection_change_1.useSelectionChange)({
2038
+ onChangeSelections: onChangeSelections,
2039
+ getSheetName: getSheetName,
2040
+ sheetId: sheetId,
2041
+ });
2042
+ // DataRegion boundaries for selection
2043
+ var dataRegionBoundaries = (0, react_1.useMemo)(function () {
2044
+ return tables === null || tables === void 0 ? void 0 : tables.filter(function (table) { return table.sheetId === sheetId; }).map(function (table) { return table.range; });
2045
+ }, [tables, sheetId]);
2046
+ /**
2047
+ * Handle grid selections
2048
+ */
2049
+ var _64 = (0, use_selection_1.useSelection)({
2050
+ sheetId: sheetId,
2051
+ getDataRowCount: getDataRowCount,
2052
+ enableDataBoundaryNavigation: enableDataBoundaryNavigation,
2053
+ allowDeselectSelection: false,
2054
+ formulaMode: formulaMode,
2055
+ enableSelectOnEnterKey: !enableEditOnEnterKey,
2056
+ newSelectionMode: formulaMode && canSelectCells ? selectionMode : "clear",
2057
+ activeCell: activeCell,
2058
+ selections: selections,
2059
+ onChangeSelections: onSelectionChange,
2060
+ onChangeActiveCell: onChangeActiveCell,
2061
+ columnCount: columnCount,
2062
+ rowCount: rowCount,
2063
+ getValue: getUserEnteredStringValue,
2064
+ selectionLeftBound: selectionLeftBound,
2065
+ selectionTopBound: selectionTopBound,
2066
+ canSelectionSpanMergedCells: canSelectionSpanMergedCells,
2067
+ mouseDownInterceptor: onMouseDownInterceptor,
2068
+ mouseMoveInterceptor: onMouseMoveInterceptor,
2069
+ selectionPolicy: selectionPolicy,
2070
+ getCellCoordsFromOffset: getCellCoordsFromOffset,
2071
+ getCellBounds: getCellBounds,
2072
+ getViewPort: getViewPort,
2073
+ focus: focusSheet,
2074
+ scrollToCell: scrollToCell,
2075
+ isMergedCell: isMergedCell,
2076
+ onFill: onFill,
2077
+ onMoveSelection: onMoveSelection,
2078
+ isHiddenColumn: isHiddenColumn,
2079
+ isHiddenRow: isHiddenRow,
2080
+ isRowHeader: isRowHeader,
2081
+ isColumnHeader: isColumnHeader,
2082
+ isTouchDevice: helpers_1.isTouchDevice,
2083
+ dataRegionBoundaries: dataRegionBoundaries,
2084
+ }), onMouseDownSelection = _64.onMouseDown, onPointerDownSelection = _64.onPointerDown, onKeyDownSelection = _64.onKeyDown, fillSelection = _64.fillSelection, onFillHandleMouseDown = _64.onFillHandleMouseDown, onFillHandleDoubleClick = _64.onFillHandleDoubleClick, isDragging = _64.isDragging, isFilling = _64.isFilling, isSelectionInProgress = _64.isSelectionInProgress, draggedSelection = _64.draggedSelection, onSelectionMouseDown = _64.onSelectionMouseDown, setActiveCell = _64.setActiveCell, initialDraggedSelection = _64.initialDraggedSelection, updateSelectionStartEndReference = _64.updateSelectionStartEndReference, selectColumn = _64.selectColumn, getContentfulGridRangeAroundCell = _64.getContentfulGridRangeAroundCell, newSelection = _64.newSelection, modifySelection = _64.modifySelection, clearSelections = _64.clearSelections;
2085
+ /**
2086
+ * Copy, Paste and Cut hook
2087
+ */
2088
+ var _65 = (0, use_copy_paste_cut_1.useCopyPasteCut)({
2089
+ activeCell: activeCell,
2090
+ selections: selections,
2091
+ sheetId: sheetId,
2092
+ focusSheet: focusSheet,
2093
+ onPaste: onPaste,
2094
+ onCopy: onCopy,
2095
+ onCut: onCut,
2096
+ }), copiedSelections = _65.copiedSelections, clearCopiedSelections = _65.clearCopiedSelections, copy = _65.copy, cut = _65.cut, paste = _65.paste, onInternalCopy = _65.onInternalCopy, onInternalCut = _65.onInternalCut, onInternalPaste = _65.onInternalPaste;
2097
+ /**
2098
+ * After formula mode
2099
+ * Recover old selections
2100
+ */
2101
+ var restoreSelections = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function () {
2102
+ if (!formulaMode || !formulaSelections.length) {
2103
+ return;
2104
+ }
2105
+ var len = selections.length - formulaSelections.length;
2106
+ onChangeSelections === null || onChangeSelections === void 0 ? void 0 : onChangeSelections(sheetId, selections.filter(function (_, i) { return i < len; }));
2107
+ }, [
2108
+ sheetId,
2109
+ selections,
2110
+ formulaMode,
2111
+ formulaSelections,
2112
+ onChangeSelections,
2113
+ ]));
2114
+ /**
2115
+ * Callback when editor value changes
2116
+ */
2117
+ var onEditorChange = (0, use_editor_change_1.useEditorChange)({
2118
+ selections: selections,
2119
+ onChangeActiveCell: onChangeActiveCell,
2120
+ onChangeSelections: onChangeSelections,
2121
+ getSelectionsFromFormula: getSelectionsFromFormula,
2122
+ onChangeEditorValue: onChangeEditorValue,
2123
+ });
2124
+ // Get final row height to expand to based on value of a cell
2125
+ var getFinalRowHeight = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex, options) {
2126
+ var _a;
2127
+ if (isRowResizedByUser(rowIndex)) {
2128
+ return undefined;
2129
+ }
2130
+ var height = getCellDimensions(sheetId, rowIndex, columnIndex, "x", options).height;
2131
+ // The rest of the row's required height — the max content height
2132
+ // over every OTHER cell in the row (the edited column is excluded;
2133
+ // its requirement is the freshly measured `height` above). Already
2134
+ // floored at the default row height by `getRowHeight`.
2135
+ var currentRowHeight = (_a = getRowHeight === null || getRowHeight === void 0 ? void 0 : getRowHeight(sheetId, rowIndex,
2136
+ // Exclude columns within the selection
2137
+ function (colIndex) { return colIndex >= columnIndex && colIndex <= columnIndex; })) !== null && _a !== void 0 ? _a : defaultRowHeight;
2138
+ // Row auto-height = max requirement across ALL cells in the row —
2139
+ // committing a short value into one cell must not shrink a row that
2140
+ // another cell's wrapped/multi-line content keeps tall. Rows pinned
2141
+ // by a user drag never reach this point (`isRowResizedByUser` above).
2142
+ var finalHeight = Math.max(currentRowHeight, height / scale);
2143
+ if (finalHeight !== rowHeight(rowIndex)) {
2144
+ return finalHeight;
2145
+ }
2146
+ }, [
2147
+ scale,
2148
+ defaultRowHeight,
2149
+ isRowResizedByUser,
2150
+ getCellDimensions,
2151
+ rowHeight,
2152
+ getRowHeight,
2153
+ ]));
2154
+ /**
2155
+ * Called when user submits a value
2156
+ * from the cell editor
2157
+ */
2158
+ var onEditorSubmit = (0, use_editor_submit_1.useEditorSubmit)({
2159
+ sheetId: sheetId,
2160
+ onChangeActiveSheet: onChangeActiveSheet,
2161
+ setActiveCell: setActiveCell,
2162
+ onComplete: restoreSelections,
2163
+ onChange: onChange,
2164
+ getCommitValidation: getCommitValidation,
2165
+ showValidationAlert: showValidationAlert,
2166
+ });
2167
+ /**
2168
+ * User cancels editing the cell
2169
+ */
2170
+ var onEditorCancel = (0, use_editor_cancel_1.useEditorCancel)({
2171
+ sheetId: sheetId,
2172
+ onChangeActiveSheet: onChangeActiveSheet,
2173
+ setActiveCell: setActiveCell,
2174
+ onComplete: restoreSelections,
2175
+ });
2176
+ /**
2177
+ * Use before edit to store editing cell reference
2178
+ */
2179
+ var handleBeforeEdit = (0, react_1.useCallback)(function (sheetId, cell) {
2180
+ setEditingCellCoordinate(tslib_1.__assign(tslib_1.__assign({}, cell), { sheetId: sheetId }));
2181
+ }, [setEditingCellCoordinate]);
2182
+ /**
2183
+ * Callback on editor keydown
2184
+ * User can navigate between sheets
2185
+ * In formula mode, user can select cells
2186
+ */
2187
+ var onEditorKeyDown = (0, use_editor_keydown_1.useEditorKeydown)({
2188
+ sheetId: sheetId,
2189
+ onSelectNextSheet: onSelectNextSheet,
2190
+ onSelectPreviousSheet: onSelectPreviousSheet,
2191
+ onKeyDownSelection: onKeyDownSelection,
2192
+ });
2193
+ /**
2194
+ * Get bounds of chart overlay
2195
+ * Within the grid body
2196
+ */
2197
+ var getChartBounds = (0, react_1.useCallback)(function () {
2198
+ return {
2199
+ left: getColumnOffset(1),
2200
+ top: getRowOffset(1),
2201
+ };
2202
+ }, [getRowOffset, getColumnOffset]);
2203
+ // Show notes editor
2204
+ var onInsertNote = (0, react_1.useCallback)(function (sheetId, cell) {
2205
+ setNoteEditorCell(tslib_1.__assign(tslib_1.__assign({}, cell), { sheetId: sheetId }));
2206
+ }, [setNoteEditorCell]);
2207
+ // Show pinned tooltip
2208
+ var onPinToolTip = (0, react_1.useCallback)(function (sheetId, cell) {
2209
+ setPinnedTooltip(tslib_1.__assign({ sheetId: sheetId }, cell));
2210
+ }, [setPinnedTooltip]);
2211
+ // Unpin tooltip
2212
+ var onUnpinTooltip = (0, react_1.useCallback)(function () {
2213
+ setPinnedTooltip(undefined);
2214
+ }, [setPinnedTooltip]);
2215
+ /**
2216
+ * Add quick edit range
2217
+ */
2218
+ var onAddQuickEdit = (0, react_1.useCallback)(function (range) {
2219
+ if (!enableQuickEdit) {
2220
+ return;
2221
+ }
2222
+ setQuickEditState(function (prev) {
2223
+ return tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(prev), false), [{ id: (0, utils_1.uuid)(), range: range }], false);
2224
+ });
2225
+ }, [setQuickEditState, enableQuickEdit]);
2226
+ /**
2227
+ * Remove quick edit
2228
+ */
2229
+ var onRemoveQuickEdit = (0, react_1.useCallback)(function (range) {
2230
+ if (!enableQuickEdit) {
2231
+ return;
2232
+ }
2233
+ setQuickEditState(function (prev) {
2234
+ return prev.filter(function (item) {
2235
+ return !(range.sheetId === item.range.sheetId &&
2236
+ (0, grid_1.isAreasEqual)(item.range, range));
2237
+ });
2238
+ });
2239
+ focusSheet();
2240
+ }, [setQuickEditState, enableQuickEdit, focusSheet]);
2241
+ /**
2242
+ * Get context Menu component
2243
+ */
2244
+ var getContextMenu = (0, react_1.useCallback)(function (cell) {
2245
+ return (react_1.default.createElement(ContextMenu, { activeCell: activeCell, selections: selections, sheetId: sheetId, frozenRows: frozenRows, frozenColumns: frozenColumns, onHideColumn: isRestricted ? undefined : onHideColumn, onShowColumn: isRestricted ? undefined : onShowColumn, onShowRow: isRestricted ? undefined : onShowRow, onHideRow: isRestricted ? undefined : onHideRow, onGroupRows: isRestricted ? undefined : onGroupRows, onUngroupRows: isRestricted ? undefined : onUngroupRows, onGroupColumns: isRestricted ? undefined : onGroupColumns, onUngroupColumns: isRestricted ? undefined : onUngroupColumns, isHiddenColumn: isHiddenColumn, isHiddenRow: isHiddenRow, onDeleteColumn: onDeleteColumn, onDeleteRow: onDeleteRow, onInsertRow: onInsertRow, onInsertColumn: onInsertColumn, onInsertCellsShiftDown: onInsertCellsShiftDown, onInsertCellsShiftRight: onInsertCellsShiftRight, onDeleteCellsShiftLeft: onDeleteCellsShiftLeft, onDeleteCellsShiftUp: onDeleteCellsShiftUp, onClearContents: onClearContents, onFreezeColumn: onFreezeColumn, onFreezeRow: onFreezeRow, focusSheet: focusSheet, onSortColumn: onSortColumn, onInsertNote: onInsertNote, onProtectRange: onProtectRange, onUnProtectRange: onUnProtectRange, onSortRange: onSortRange, onRequestDefineNamedRange: onRequestDefineNamedRange, protectedRanges: protectedRanges, isRowHeader: isRowHeader(cell.columnIndex), isColumnHeader: isColumnHeader(cell.rowIndex), selectedRowHeadersIds: selectedRowHeadersIds, selectedColumnHeadersIds: selectedColumnHeadersIds, onCopy: copy, onCut: cut, onPaste: paste, onRequestResize: onRequestResize, isSheetFocused: isSheetFocused, tables: activeTables, pivotTables: pivotTables, basicFilter: basicFilter, onRequestEditTable: onRequestEditTable, onRequestEditPivotTable: onRequestEditPivotTable, onRemoveTable: onRemoveTable, onRequestDeletePivotTable: onRequestDeletePivotTable, onPivotDrillDown: onPivotDrillDown, onRequestFormatCells: onRequestFormatCells, onRequestConditionalFormat: onRequestConditionalFormat, onRequestDataValidation: onRequestDataValidation, onClearFormatting: onClearFormatting, onCreateTable: onCreateTable, onCreateBasicFilter: onCreateBasicFilter, onInsertTableColumn: onInsertTableColumn, onDeleteTableColumn: onDeleteTableColumn, onInsertTableRow: onInsertTableRow, onDeleteTableRow: onDeleteTableRow, onFilterTable: onFilterTable, onSortTable: onSortTable, getFormattedValue: getFormattedValue, getFormattedValuesFromRange: getFormattedValuesFromRange, isTableHeader: isTableHeader, readonly: readonly, onSplitTextToColumns: onSplitTextToColumns, onRemoveDuplicates: onRemoveDuplicates, onAddQuickEdit: onAddQuickEdit, enableMagicFill: enableMagicFill }));
2246
+ }, [
2247
+ isRestricted,
2248
+ activeCell,
2249
+ sheetId,
2250
+ selections,
2251
+ frozenRows,
2252
+ frozenColumns,
2253
+ onHideColumn,
2254
+ ContextMenu,
2255
+ onHideRow,
2256
+ onDeleteColumn,
2257
+ onDeleteRow,
2258
+ onInsertColumn,
2259
+ onInsertRow,
2260
+ onInsertCellsShiftDown,
2261
+ onInsertCellsShiftRight,
2262
+ onDeleteCellsShiftLeft,
2263
+ onDeleteCellsShiftUp,
2264
+ onClearContents,
2265
+ onFreezeColumn,
2266
+ onFreezeRow,
2267
+ focusSheet,
2268
+ onSortColumn,
2269
+ copy,
2270
+ paste,
2271
+ cut,
2272
+ onInsertNote,
2273
+ onProtectRange,
2274
+ onUnProtectRange,
2275
+ onSortRange,
2276
+ onRequestDefineNamedRange,
2277
+ onRequestResize,
2278
+ isRowHeader,
2279
+ isColumnHeader,
2280
+ selectedRowHeadersIds,
2281
+ selectedColumnHeadersIds,
2282
+ protectedRanges,
2283
+ isSheetFocused,
2284
+ activeTables,
2285
+ basicFilter,
2286
+ pivotTables,
2287
+ isTableHeader,
2288
+ onFilterTable,
2289
+ onSortTable,
2290
+ onRequestEditTable,
2291
+ onRequestEditPivotTable,
2292
+ onRemoveTable,
2293
+ onRequestFormatCells,
2294
+ onClearFormatting,
2295
+ onRequestConditionalFormat,
2296
+ onRequestDataValidation,
2297
+ onCreateBasicFilter,
2298
+ onCreateTable,
2299
+ onDeleteTableColumn,
2300
+ onInsertTableRow,
2301
+ getFormattedValue,
2302
+ getFormattedValuesFromRange,
2303
+ onInsertTableColumn,
2304
+ onDeleteTableRow,
2305
+ readonly,
2306
+ onAddQuickEdit,
2307
+ enableMagicFill,
2308
+ onSplitTextToColumns,
2309
+ onRemoveDuplicates,
2310
+ onRequestDeletePivotTable,
2311
+ isHiddenColumn,
2312
+ isHiddenRow,
2313
+ onShowColumn,
2314
+ onShowRow,
2315
+ onGroupRows,
2316
+ onUngroupRows,
2317
+ onGroupColumns,
2318
+ onUngroupColumns,
2319
+ ]);
2320
+ /**
2321
+ * Context menu hook
2322
+ * Displays Context menu when user right clicks
2323
+ * the grid
2324
+ */
2325
+ var _66 = (0, use_context_menu_1.useContextMenu)({
2326
+ getCellCoordsFromOffset: getCellCoordsFromOffset,
2327
+ getRelativePositionFromOffset: getRelativePositionFromOffset,
2328
+ isRowHeader: isRowHeader,
2329
+ isColumnHeader: isColumnHeader,
2330
+ getContextMenu: getContextMenu,
2331
+ getCellOffsetFromCoords: getCellOffsetFromCoords,
2332
+ getScrollPosition: getScrollPosition,
2333
+ ContextMenuWrapper: ContextMenuWrapper,
2334
+ }), onContextMenu = _66.onContextMenu, contextMenuComponent = _66.contextMenuComponent, onRequestCloseContextMenu = _66.onRequestClose, showContextMenu = _66.showContextMenu;
2335
+ /**
2336
+ * Shortcut handlers for formatting
2337
+ * TODO: Decide on the output
2338
+ */
2339
+ var onKeyDownFormatting = (0, use_keyboard_handler_1.useKeyboardHandler)({
2340
+ sheetId: sheetId,
2341
+ locale: locale,
2342
+ showFormulas: showFormulas,
2343
+ canEditCell: canEditCell,
2344
+ onShowFormulas: onShowFormulas,
2345
+ getCellFormat: getEffectiveCellFormat,
2346
+ activeCell: activeCell,
2347
+ selections: selections,
2348
+ selectedColumns: selectedColumns,
2349
+ selectedRows: selectedRows,
2350
+ onChangeFormatting: onChangeFormatting,
2351
+ onRepeatFormatting: onRepeatFormatting,
2352
+ onInsertNote: onInsertNote,
2353
+ onClearFormatting: onClearFormatting,
2354
+ onSelectNextSheet: onSelectNextSheet,
2355
+ onSelectPreviousSheet: onSelectPreviousSheet,
2356
+ onCreateNewSheet: onCreateNewSheet,
2357
+ onFillRange: onFillRange,
2358
+ disableFillRightShortcut: disableFillRightShortcut,
2359
+ onInsertTime: onInsertTime,
2360
+ onInsertDate: onInsertDate,
2361
+ onInsertDateTime: onInsertDateTime,
2362
+ onUndo: onUndo,
2363
+ onRedo: onRedo,
2364
+ onCreateTable: onCreateTable,
2365
+ onCreateBasicFilter: onCreateBasicFilter,
2366
+ clearCopiedSelections: clearCopiedSelections,
2367
+ onRequestSearch: onRequestSearch,
2368
+ onRequestReplace: onRequestReplace,
2369
+ onRequestFormatCells: onRequestFormatCells,
2370
+ onRequestInsertComment: onRequestInsertComment,
2371
+ onRequestInsertLink: onRequestInsertLink,
2372
+ onShowContextMenu: showContextMenu,
2373
+ onHideColumn: onHideColumn,
2374
+ onHideRow: onHideRow,
2375
+ onGroupRows: onGroupRows,
2376
+ onUngroupRows: onUngroupRows,
2377
+ onGroupColumns: onGroupColumns,
2378
+ onUngroupColumns: onUngroupColumns,
2379
+ onDeleteRow: onDeleteRow,
2380
+ onInsertRow: onInsertRow,
2381
+ onInsertAutoSum: onInsertAutoSum,
2382
+ onShowColumn: onShowColumn,
2383
+ onShowRow: onShowRow,
2384
+ onAddQuickEdit: onAddQuickEdit,
2385
+ isSheetFocused: isSheetFocused,
2386
+ defaultFontSizePoint: defaultFontSizePoint,
2387
+ });
2388
+ /**
2389
+ * Bind to keydown events
2390
+ * in the grid
2391
+ */
2392
+ var handleKeyDown = (0, react_1.useCallback)(function (e) {
2393
+ // For moving around in the sheet
2394
+ onKeyDownSelection(e);
2395
+ // Disable all keys
2396
+ if (readonly) {
2397
+ return;
2398
+ }
2399
+ onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);
2400
+ onKeyDownFormatting === null || onKeyDownFormatting === void 0 ? void 0 : onKeyDownFormatting(e);
2401
+ }, [onKeyDownSelection, onKeyDown, onKeyDownFormatting, readonly]);
2402
+ /**
2403
+ * Allow grid to be ediable
2404
+ */
2405
+ var _67 = (0, use_editable_1.useEditable)({
2406
+ sheetId: sheetId,
2407
+ enableEditOnEnterKey: enableEditOnEnterKey,
2408
+ canEdit: canEditCell,
2409
+ sticky: stickyEditor,
2410
+ getScrollPosition: getScrollPosition,
2411
+ hideOnBlur: formulaMode && canSelectCells ? false : true,
2412
+ isHiddenRow: isHiddenRow,
2413
+ isHiddenColumn: isHiddenColumn,
2414
+ columnCount: columnCount,
2415
+ rowCount: rowCount,
2416
+ frozenColumns: frozenColumns,
2417
+ frozenRows: frozenRows,
2418
+ activeCell: activeCell,
2419
+ selections: selections,
2420
+ getSheetColumnCount: getSheetColumnCount,
2421
+ getSheetRowCount: getSheetRowCount,
2422
+ getValue: getUserEnteredStringValue,
2423
+ getTextFormatRuns: getTextFormatRuns,
2424
+ getBooleanValue: getBooleanValue,
2425
+ getDataValidation: getDataValidationRule,
2426
+ selectionLeftBound: selectionLeftBound,
2427
+ selectionTopBound: selectionTopBound,
2428
+ editorBorderColor: selectionBorderColor,
2429
+ getEditor: getEditor,
2430
+ onBeforeEdit: handleBeforeEdit,
2431
+ onSubmit: onEditorSubmit,
2432
+ onCancel: onEditorCancel,
2433
+ onBlur: handleEditorBlur,
2434
+ onChange: onEditorChange,
2435
+ onChangeBatch: onChangeBatch,
2436
+ setActiveCell: setActiveCell,
2437
+ onDelete: onDelete,
2438
+ onKeyDown: handleKeyDown,
2439
+ onEditorKeyDown: onEditorKeyDown,
2440
+ getCellOffsetFromCoords: getCellOffsetFromCoords,
2441
+ getCellCoordsFromOffset: getCellCoordsFromOffset,
2442
+ getCellBounds: getCellBounds,
2443
+ getRowOffset: getRowOffset,
2444
+ getColumnOffset: getColumnOffset,
2445
+ getEditorAlignment: getEditorHorizontalAlignment,
2446
+ focus: focusSheet,
2447
+ getActualCellCoords: getActualCellCoords,
2448
+ scrollToCell: scrollToCell,
2449
+ containerWidth: width,
2450
+ containerHeight: height,
2451
+ onCopy: onInternalCopy,
2452
+ onPaste: onInternalPaste,
2453
+ onCut: onInternalCut,
2454
+ }), onMouseDownEditable = _67.onMouseDown, onDoubleClickEditable = _67.onDoubleClick, editorComponent = _67.editorComponent, isEditInProgress = _67.isEditInProgress, makeEditable = _67.makeEditable, editCell = _67.editCell, setEditorValue = _67.setEditorValue, hideEditor = _67.hideEditor, getNextFocusableCell = _67.getNextFocusableCell, submitEditor = _67.submitEditor, cancelEditor = _67.cancelEditor, commit = _67.commit;
2455
+ /**
2456
+ * Move rows and columns
2457
+ */
2458
+ var _68 = (0, use_move_columns_rows_1.useMoveColumnsAndRows)({
2459
+ getCellOffsetFromCoords: getCellOffsetFromCoords,
2460
+ getCellCoordsFromOffset: getCellCoordsFromOffset,
2461
+ getRelativePositionFromOffset: getRelativePositionFromOffset,
2462
+ scrollToCell: scrollToCell,
2463
+ focusSheet: focusSheet,
2464
+ columns: formulaMode ? undefined : selectedColumnHeadersIds,
2465
+ rows: formulaMode ? undefined : selectedRowHeadersIds,
2466
+ selectionLeftBound: selectionLeftBound,
2467
+ selectionTopBound: selectionTopBound,
2468
+ onMoveColumns: onMoveColumns,
2469
+ onMoveRows: onMoveRows,
2470
+ containerWidth: width - scrollbarSize,
2471
+ containerHeight: height - scrollbarSize,
2472
+ getScrollPosition: getScrollPosition,
2473
+ onChangeSelections: onChangeSelections,
2474
+ onChangeActiveCell: onChangeActiveCell,
2475
+ activeCell: activeCell,
2476
+ rowCount: rowCount,
2477
+ columnCount: columnCount,
2478
+ sheetId: sheetId,
2479
+ disabled: isRestricted,
2480
+ HeaderMoveDragComponent: HeaderMoveDragComponent,
2481
+ }), draggableColumns = _68.draggableColumns, draggableRows = _68.draggableRows, isDraggingRowsAndColumns = _68.isDragging;
2482
+ /**
2483
+ * Header actions
2484
+ */
2485
+ var _69 = (0, use_header_actions_1.useHeaderActions)({
2486
+ activeCell: isSelectionInProgress || isFilling || isDragging ? null : hoveredCell,
2487
+ getScrollPosition: getScrollPosition,
2488
+ getCellOffsetFromCoords: getCellOffsetFromCoords,
2489
+ getRelativePositionFromOffset: getRelativePositionFromOffset,
2490
+ showContextMenu: showContextMenu,
2491
+ selectColumn: selectColumn,
2492
+ setActiveCell: setActiveCell,
2493
+ getViewPort: getViewPort,
2494
+ frozenRows: frozenRows,
2495
+ frozenColumns: frozenColumns,
2496
+ selectionTopBound: selectionTopBound,
2497
+ showHeaderMenuButton: showHeaderMenuButton,
2498
+ scale: scale,
2499
+ onResize: onResize,
2500
+ focusSheet: focusSheet,
2501
+ isRowHeader: isRowHeader,
2502
+ isColumnHeader: isColumnHeader,
2503
+ isHiddenColumn: isHiddenColumn,
2504
+ containerWidth: width - scrollbarSize,
2505
+ containerHeight: height - scrollbarSize,
2506
+ onAutoFit: handleAutoFit,
2507
+ backgroundColor: selectionBorderColor,
2508
+ sheetId: sheetId,
2509
+ selectedRowHeadersIds: selectedRowHeadersIds,
2510
+ selectedColumnHeadersIds: selectedColumnHeadersIds,
2511
+ enableResizerOverflow: enableResizerOverflow,
2512
+ }), headerMenuComponent = _69.headerMenuComponent, isHeaderMenuInFrozenColumn = _69.isHeaderMenuInFrozenColumn, headerResizer = _69.headerResizer, isDraggingHeader = _69.isDragging;
2513
+ /**
2514
+ * Close tooltip
2515
+ */
2516
+ var onRequestCloseTooltip = (0, react_1.useCallback)(function () {
2517
+ setHoveredCell(undefined);
2518
+ }, []);
2519
+ // Scroll subscriber
2520
+ var handleScroll = (0, react_1.useCallback)(function (scrollPosition) {
2521
+ // Pass it to rxjs subscriber
2522
+ if (!isEditInProgress) {
2523
+ scroll_subscriber_1.scrollSubscriber.next(scrollPosition);
2524
+ }
2525
+ onScroll === null || onScroll === void 0 ? void 0 : onScroll(scrollPosition);
2526
+ }, [onScroll, isEditInProgress]);
2527
+ /**
2528
+ * Tooltips
2529
+ */
2530
+ var tooltipComponent = (0, use_tooltip_1.useTooltip)({
2531
+ sheetId: sheetId,
2532
+ getCellOffsetFromCoords: getCellOffsetFromCoords,
2533
+ activeCell: isDraggingHeader || isSelectionInProgress || isFilling || isDragging
2534
+ ? null
2535
+ : delayedHoveredCell,
2536
+ getScrollPosition: getScrollPosition,
2537
+ getTooltip: getTooltip,
2538
+ isFrozenColumn: isFrozenColumn,
2539
+ isFrozenRow: isFrozenRow,
2540
+ onUpdateNote: onUpdateNote,
2541
+ onRemoveLink: onRemoveLink,
2542
+ onSelectLink: onSelectLink,
2543
+ onRequestClose: onRequestCloseTooltip,
2544
+ }).tooltipComponent;
2545
+ /**
2546
+ * Get filter component
2547
+ */
2548
+ var getFilterComponent = (0, react_1.useCallback)(function (props) {
2549
+ return react_1.default.createElement(FilterBox, tslib_1.__assign({}, props, { sheetId: sheetId }));
2550
+ }, [sheetId, FilterBox]);
2551
+ /**
2552
+ * Show basicFilter panels
2553
+ */
2554
+ var _70 = (0, use_filter_1.useFilter)({
2555
+ sheetId: sheetId,
2556
+ scale: scale,
2557
+ theme: theme,
2558
+ getActualCellCoords: getActualCellCoords,
2559
+ getScrollPosition: getScrollPosition,
2560
+ getCellOffsetFromCoords: getCellOffsetFromCoords,
2561
+ getFilterComponent: getFilterComponent,
2562
+ getFormattedValue: getFormattedValue,
2563
+ getEffectiveFormat: getEffectiveFormat,
2564
+ conditionalFormatByCell: conditionalFormatByCell,
2565
+ isFrozenColumn: isFrozenColumn,
2566
+ isFrozenRow: isFrozenRow,
2567
+ isHiddenRowByFilter: isHiddenRowByFilter,
2568
+ onSortTable: onSortTable,
2569
+ onFilterTable: onFilterTable,
2570
+ onInsertTableColumn: onInsertTableColumn,
2571
+ onDeleteTableColumn: onDeleteTableColumn,
2572
+ // Host-computed distinct values for the checklist.
2573
+ getFilterValues: getFilterValues,
2574
+ // Host-computed swatches for the "Filter by color" picker (windowed engines).
2575
+ getFilterColors: getFilterColors,
2576
+ // Live filter state so the open popup tracks Auto-apply spec changes.
2577
+ basicFilter: basicFilter,
2578
+ tables: activeTables,
2579
+ }), showFilter = _70.showFilter, hideFilter = _70.hideFilter, filterComponent = _70.filterComponent;
2580
+ // Table resize
2581
+ var _71 = (0, use_table_resizer_1.useTableResizer)({
2582
+ sheetId: sheetId,
2583
+ tables: tables !== null && tables !== void 0 ? tables : undefined,
2584
+ theme: theme,
2585
+ newSelection: newSelection,
2586
+ modifySelection: modifySelection,
2587
+ clearSelections: clearSelections,
2588
+ getCellCoordsFromOffset: getCellCoordsFromOffset,
2589
+ scrollToCell: scrollToCell,
2590
+ onResizeTable: onResizeTable,
2591
+ focusSheet: focusSheet,
2592
+ }), tableResizers = _71.tableResizers, isResizingTable = _71.isResizingTable;
2593
+ /**
2594
+ * Displays resizable/draggable charts
2595
+ */
2596
+ var _72 = (0, use_embeds_charts_1.useEmbedsCharts)({
2597
+ charts: charts,
2598
+ embeds: embeds,
2599
+ slicers: slicers,
2600
+ sheetId: sheetId,
2601
+ scale: scale,
2602
+ frozenRows: frozenRows,
2603
+ frozenColumns: frozenColumns,
2604
+ getCellOffsetFromCoords: getCellOffsetFromCoords,
2605
+ getAbsolutePositionFromOffset: getAbsolutePositionFromOffset,
2606
+ getCellCoordsFromOffset: getCellCoordsFromOffset,
2607
+ getScrollPosition: getScrollPosition,
2608
+ selectedColor: chartSelectedColor,
2609
+ onMoveChart: onMoveChart,
2610
+ onResizeChart: onResizeChart,
2611
+ onMoveEmbed: onMoveEmbed,
2612
+ onResizeEmbed: onResizeEmbed,
2613
+ onDeleteEmbed: onDeleteEmbed,
2614
+ onDeleteChart: onDeleteChart,
2615
+ onRequestEditEmbed: onRequestEditEmbed,
2616
+ onMoveSlicer: onMoveSlicer,
2617
+ onResizeSlicer: onResizeSlicer,
2618
+ onDeleteSlicer: onDeleteSlicer,
2619
+ onRequestEditSlicer: onRequestEditSlicer,
2620
+ onFilterTable: onFilterTable,
2621
+ onFilterPivot: onFilterPivot,
2622
+ tables: tables,
2623
+ pivotTables: pivotTables,
2624
+ getFormattedValue: getFormattedValue,
2625
+ getChartComponent: getChartComponent,
2626
+ getEmbedComponent: getEmbedComponent,
2627
+ getSlicerComponent: getSlicerComponent,
2628
+ getBounds: getChartBounds,
2629
+ theme: theme,
2630
+ backgroundColor: cellBackgroundColor,
2631
+ disabled: isRestricted,
2632
+ readonly: readonly,
2633
+ }), chartComponents = _72.chartComponents, embedComponents = _72.embedComponents, slicerComponents = _72.slicerComponents, onMouseDownCharts = _72.onMouseDown;
2634
+ /**
2635
+ * Callback when user clicks Filter icon
2636
+ * Show Filter dropdown here
2637
+ */
2638
+ var handleFilterClick = (0, react_1.useCallback)(function (cell) {
2639
+ var activeFilter = basicFilter && (0, grid_4.isCellWithinBounds)(cell, basicFilter === null || basicFilter === void 0 ? void 0 : basicFilter.range)
2640
+ ? basicFilter
2641
+ : activeTables === null || activeTables === void 0 ? void 0 : activeTables.find(function (table) {
2642
+ return (0, grid_4.isCellWithinBounds)(cell, table.range);
2643
+ });
2644
+ if (activeFilter) {
2645
+ showFilter(cell, activeFilter);
2646
+ }
2647
+ }, [showFilter, basicFilter, activeTables]);
2648
+ /**
2649
+ * Callback when user checks a cell
2650
+ */
2651
+ var onChangeRef = (0, use_callback_ref_1.useCallbackRef)(onChange);
2652
+ var handleCheckboxClick = (0, react_1.useCallback)(function (cell, checked) {
2653
+ // If the checkbox is derived from a formula calculation
2654
+ // do not let users change it by toggling the checkbox
2655
+ var rowIndex = cell.rowIndex, columnIndex = cell.columnIndex;
2656
+ var isFormula = !!getFormulaValue(sheetId, rowIndex, columnIndex);
2657
+ if (isFormula) {
2658
+ (0, utils_1.log)("Checkbox selection is disabled for formula cells.");
2659
+ }
2660
+ else {
2661
+ onChangeRef === null || onChangeRef === void 0 ? void 0 : onChangeRef(sheetId, cell, checked, undefined, !checked, true);
2662
+ }
2663
+ }, [sheetId, getFormulaValue, onChangeRef]);
2664
+ /**
2665
+ * Get group keys of a cell
2666
+ */
2667
+ var getCellGroupKeys = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
2668
+ var _a;
2669
+ return (_a = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.groupKeys;
2670
+ }, [getCellData]);
2671
+ /**
2672
+ * Get children count
2673
+ */
2674
+ var getChildrenCount = (0, react_1.useCallback)(function (sheetId, rowIndex, columnIndex) {
2675
+ var _a, _b;
2676
+ return (_b = (_a = getCellData === null || getCellData === void 0 ? void 0 : getCellData(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.childrenCount) !== null && _b !== void 0 ? _b : 0;
2677
+ }, [getCellData]);
2678
+ /**
2679
+ * Callback when user checks a cell
2680
+ */
2681
+ var handleExpandCollapse = (0, react_1.useCallback)(function (sheetId, cell, newExpandedState) {
2682
+ var groupKeys = getCellGroupKeys(sheetId, cell.rowIndex, cell.columnIndex);
2683
+ var childrenCount = getChildrenCount(sheetId, cell.rowIndex, cell.columnIndex);
2684
+ if (groupKeys === null || groupKeys === void 0 ? void 0 : groupKeys.length) {
2685
+ onExpandCollapse === null || onExpandCollapse === void 0 ? void 0 : onExpandCollapse(sheetId, cell, groupKeys, newExpandedState, childrenCount);
2686
+ }
2687
+ }, [onExpandCollapse, getCellGroupKeys, getChildrenCount]);
2688
+ /**
2689
+ * Capture mouse move events
2690
+ */
2691
+ var handleMouseMove = (0, react_1.useCallback)(function (e) {
2692
+ // A little bit of optimization here
2693
+ if (isDragging ||
2694
+ isDraggingRowsAndColumns ||
2695
+ isDraggingHeader ||
2696
+ isSelectionInProgress ||
2697
+ isFilling) {
2698
+ return;
2699
+ }
2700
+ var coords = getCellCoordsFromOffset(e.clientX, e.clientY);
2701
+ if (!coords || (0, grid_5.isEqualCells)(hoveredCellRef.current, coords)) {
2702
+ return;
2703
+ }
2704
+ setHoveredCell(coords);
2705
+ }, [
2706
+ getCellCoordsFromOffset,
2707
+ isDragging,
2708
+ isDraggingRowsAndColumns,
2709
+ isDraggingHeader,
2710
+ isSelectionInProgress,
2711
+ isFilling,
2712
+ hoveredCellRef,
2713
+ ]);
2714
+ // Mouse move throttler
2715
+ var mouseMoveThrottler = (0, use_callback_ref_1.useCallbackRef)((0, throttle_1.default)(handleMouseMove, mouseMoveThrottleTimeout, {
2716
+ trailing: true,
2717
+ leading: true,
2718
+ }));
2719
+ /**
2720
+ * Bind to mousedown events
2721
+ * in the grid
2722
+ */
2723
+ var handleMouseDown = (0, react_1.useCallback)(function (e) {
2724
+ // Ignore mousedown for touch devices
2725
+ // since we use onPointerDown
2726
+ if (helpers_1.isTouchDevice) {
2727
+ return;
2728
+ }
2729
+ var isMetaKey = e.nativeEvent.metaKey || e.nativeEvent.ctrlKey;
2730
+ var isRightClick = e.button === grid_3.MouseButtonCodes.right || e.ctrlKey;
2731
+ // Keep focus on grid
2732
+ if (!isRightClick && !e.isDefaultPrevented()) {
2733
+ focusSheet();
2734
+ }
2735
+ /**
2736
+ * In use-selection, we use a scheduler to append
2737
+ * cells
2738
+ *
2739
+ * This state update is queued, and update only
2740
+ * happens after selection changes.
2741
+ *
2742
+ */
2743
+ if (formulaMode && isMetaKey) {
2744
+ setFormulaState(function (prev) { return (tslib_1.__assign(tslib_1.__assign({}, prev), { selectionMode: "append" })); });
2745
+ }
2746
+ // Pass it on to use selection hook
2747
+ onMouseDownSelection(e);
2748
+ // Charts
2749
+ onMouseDownCharts === null || onMouseDownCharts === void 0 ? void 0 : onMouseDownCharts();
2750
+ /**
2751
+ * Only hide contextmenu if user
2752
+ * is not pressing right click
2753
+ */
2754
+ if (!isRightClick) {
2755
+ onRequestCloseContextMenu();
2756
+ }
2757
+ // Hide filter
2758
+ hideFilter();
2759
+ // Hide popover
2760
+ hideCellPopover();
2761
+ // Hide paste mnenu
2762
+ setShowPasteMenu(false);
2763
+ // Remove pinned tooltip
2764
+ onUnpinTooltip();
2765
+ }, [
2766
+ onMouseDownSelection,
2767
+ onRequestCloseContextMenu,
2768
+ hideFilter,
2769
+ onMouseDownCharts,
2770
+ formulaMode,
2771
+ setFormulaState,
2772
+ hideCellPopover,
2773
+ setShowPasteMenu,
2774
+ onUnpinTooltip,
2775
+ focusSheet,
2776
+ ]);
2777
+ /**
2778
+ * Only for touch devices
2779
+ */
2780
+ var handlePointerDown = (0, react_1.useCallback)(function (event) {
2781
+ onPointerDownSelection === null || onPointerDownSelection === void 0 ? void 0 : onPointerDownSelection(event);
2782
+ // // // Charts
2783
+ onMouseDownCharts === null || onMouseDownCharts === void 0 ? void 0 : onMouseDownCharts();
2784
+ // // // Pass it on to use editable hook
2785
+ onMouseDownEditable(event);
2786
+ // // Hide filter
2787
+ hideFilter();
2788
+ }, [
2789
+ hideFilter,
2790
+ onPointerDownSelection,
2791
+ onMouseDownEditable,
2792
+ onMouseDownCharts,
2793
+ ]);
2794
+ /**
2795
+ * Keep focus on the editor
2796
+ */
2797
+ var handlePointerUp = (0, react_1.useCallback)(function (event) {
2798
+ var isRightClick = event.button === grid_3.MouseButtonCodes.right || event.ctrlKey;
2799
+ // Always keep the focus on
2800
+ // on cell editor
2801
+ // If another editor is active, keep that
2802
+ if (!isRightClick) {
2803
+ focusSheet();
2804
+ }
2805
+ }, [focusSheet]);
2806
+ /**
2807
+ * Handle double clicks in the grid
2808
+ */
2809
+ var handleDoubleClick = (0, react_1.useCallback)(function (e) {
2810
+ // Excel "Show Details": double-clicking a pivot VALUE cell drills
2811
+ // into the source rows behind it instead of entering edit mode. We
2812
+ // gate on a numeric effective value so only data / total cells
2813
+ // trigger it — text row-labels and headers fall through to the
2814
+ // editor (which is a no-op for pivot cells anyway).
2815
+ if (onPivotDrillDown) {
2816
+ var coords = getCellCoordsFromOffset(e.clientX, e.clientY);
2817
+ if (coords) {
2818
+ // Resolve the owning pivot from its range, not cellData.pivotId
2819
+ // — not every pivot cell carries that field, but range
2820
+ // containment is authoritative (same check canEditCell uses).
2821
+ var pivotTable = getPivotTableAtCell(sheetId, coords.rowIndex, coords.columnIndex);
2822
+ var numericValue = (0, helpers_1.getExtendedValueNumber)(getEffectiveValue(sheetId, coords.rowIndex, coords.columnIndex));
2823
+ if (pivotTable && !(0, utils_1.isNil)(numericValue)) {
2824
+ onPivotDrillDown(pivotTable.pivotId, coords.rowIndex, coords.columnIndex);
2825
+ return;
2826
+ }
2827
+ }
2828
+ }
2829
+ // Pass it on to editor
2830
+ onDoubleClickEditable === null || onDoubleClickEditable === void 0 ? void 0 : onDoubleClickEditable(e);
2831
+ }, [
2832
+ onDoubleClickEditable,
2833
+ onPivotDrillDown,
2834
+ getCellCoordsFromOffset,
2835
+ getPivotTableAtCell,
2836
+ getEffectiveValue,
2837
+ sheetId,
2838
+ ]);
2839
+ /**
2840
+ * Get maximum text width
2841
+ * before it overflows into next cell
2842
+ */
2843
+ var getMaximumOverflowTextWidth = (0, react_1.useCallback)(function (formattedValue, sheetId, rowIndex, columnIndex, canOverflowToNextCell, textFormat, shouldWrapOverride, direction) {
2844
+ var _a, _b, _c, _d, _e;
2845
+ if (direction === void 0) { direction = grid_1.Direction.Right; }
2846
+ // A format override makes the sizer measure the whole text
2847
+ // uniformly, ignoring per-segment rich-text runs. For cells that
2848
+ // carry runs (e.g. imported xlsx titles with mixed font sizes),
2849
+ // skip the override so run-aware measurement is used.
2850
+ var hasRichRuns = ((_b = (_a = getTextFormatRuns === null || getTextFormatRuns === void 0 ? void 0 : getTextFormatRuns(sheetId, rowIndex, columnIndex)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0;
2851
+ var textWidth = getCellDimensions(sheetId, rowIndex, columnIndex, "y", tslib_1.__assign(tslib_1.__assign({ textOverride: formattedValue }, (hasRichRuns ? {} : { textFormatOverride: textFormat })), { shouldWrapOverride: shouldWrapOverride })).width;
2852
+ var colWidth = columnWidth(columnIndex) * scale;
2853
+ if (textWidth < colWidth) {
2854
+ return [textWidth, config_1.DEFAULT_ARRAY];
2855
+ }
2856
+ var start = columnIndex;
2857
+ var columnSpans = [];
2858
+ var isMovingRight = direction === grid_1.Direction.Right;
2859
+ while (canOverflowToNextCell({
2860
+ rowIndex: rowIndex,
2861
+ columnIndex: isMovingRight ? ++start : --start,
2862
+ }) &&
2863
+ colWidth < textWidth) {
2864
+ var prev = isMovingRight ? start - 1 : start + 1;
2865
+ // For right aligned texts
2866
+ var borderColor = (_d = (_c = getEffectiveCellFormat(sheetId, rowIndex, isMovingRight ? start : prev)) === null || _c === void 0 ? void 0 : _c.backgroundColor) !== null && _d !== void 0 ? _d : (_e = getEffectiveCellFormat(sheetId, rowIndex, isMovingRight ? prev : start)) === null || _e === void 0 ? void 0 : _e.backgroundColor;
2867
+ var nextColWidth = columnWidth(start) * scale;
2868
+ columnSpans.push([
2869
+ start,
2870
+ getColumnOffset(start),
2871
+ nextColWidth,
2872
+ borderColor,
2873
+ ]);
2874
+ colWidth += nextColWidth;
2875
+ }
2876
+ return [Math.min(textWidth, colWidth), columnSpans];
2877
+ }, [
2878
+ scale,
2879
+ getCellDimensions,
2880
+ getTextFormatRuns,
2881
+ columnWidth,
2882
+ getColumnOffset,
2883
+ getEffectiveCellFormat,
2884
+ ]);
2885
+ /**
2886
+ * Render Cells in the grid
2887
+ */
2888
+ var _73 = tslib_1.__read((0, use_cell_renderer_1.useCellRenderer)({
2889
+ sheetId: sheetId,
2890
+ showGridLines: showGridLines,
2891
+ scale: scale,
2892
+ enableTextOverflow: enableTextOverflow,
2893
+ isRowHeader: isRowHeader,
2894
+ isColumnHeader: isColumnHeader,
2895
+ canOverflowToNextCell: canOverflowToNextCell,
2896
+ getDefaultHorizontalAlignment: getDefaultHorizontalAlignment,
2897
+ selectedRows: selectedRows,
2898
+ selectedColumns: selectedColumns,
2899
+ selectedRowHeaders: selectedRowHeaders,
2900
+ selectedColumnHeaders: selectedColumnHeaders,
2901
+ cellBackgroundColor: cellBackgroundColor,
2902
+ headerBorderColor: headerBorderColor,
2903
+ headerBackgroundColor: headerBackgroundColor,
2904
+ headerColor: headerColor,
2905
+ headerActiveBackgroundColor: headerActiveBackgroundColor,
2906
+ headerSelectedBackgroundColor: headerSelectedBackgroundColor,
2907
+ headerSelectedColor: headerSelectedColor,
2908
+ headerTableBackgroundColor: headerTableBackgroundColor,
2909
+ headerTableActiveBackgroundColor: headerTableActiveBackgroundColor,
2910
+ headerTableSelectedBackgroundColor: headerTableSelectedBackgroundColor,
2911
+ chipBackgroundColor: chipBackgroundColor,
2912
+ filterIconColor: filterIconColor,
2913
+ columnContainsTable: columnContainsTable,
2914
+ rowsContainsTable: rowsContainsTable,
2915
+ isTableHeader: isTableHeader,
2916
+ isCalculatedColumnHeader: isCalculatedColumnHeader,
2917
+ isTableHeaderFilterActive: isTableHeaderFilterActive,
2918
+ isTableFilterVisible: isTableFilterVisible,
2919
+ getTableHeaderSortOrder: getTableHeaderSortOrder,
2920
+ showCalculatedColumnIcon: showCalculatedColumnIcon,
2921
+ showHeaders: showHeaders,
2922
+ getDataValidation: getDataValidationRule,
2923
+ getErrorValue: getErrorValue,
2924
+ getNote: getNote,
2925
+ getComment: getComment,
2926
+ getEffectiveValue: getEffectiveValue,
2927
+ getFormattedValue: getFormattedValue,
2928
+ getCellImageUrl: getCellImageUrl,
2929
+ getEffectiveCellFormat: getEffectiveCellFormat,
2930
+ getCellBounds: getCellBounds,
2931
+ getCellMetaType: getCellMetaType,
2932
+ getRowHeaderText: getRowHeaderText,
2933
+ getColumnHeaderText: getColumnHeaderText,
2934
+ getMaximumOverflowTextWidth: getMaximumOverflowTextWidth,
2935
+ getTextDimension: getTextDimension,
2936
+ getCellGroupingInfo: getCellGroupingInfo,
2937
+ getTextFormatRuns: getTextFormatRuns,
2938
+ onRequestEdit: makeEditable,
2939
+ onFilterClick: handleFilterClick,
2940
+ onCheckboxClick: handleCheckboxClick,
2941
+ onExpandCollapse: handleExpandCollapse,
2942
+ defaultFontSizePoint: defaultFontSizePoint,
2943
+ Cell: Cell,
2944
+ HeaderCell: HeaderCell,
2945
+ theme: theme,
2946
+ gridLineWidth: gridLineWidth,
2947
+ showNotes: showNotes,
2948
+ showComments: showComments,
2949
+ StructuredResult: StructuredResult,
2950
+ readonly: readonly,
2951
+ onOverflow: handleOverflow,
2952
+ isComparing: isComparing,
2953
+ getCellDiff: getCellDiff,
2954
+ }), 4), cellBackgroundRenderer = _73[0], cellRenderer = _73[1], cellOverlayRenderer = _73[2], headerCellRenderer = _73[3];
2955
+ /**
2956
+ * When user selects a selection for moving
2957
+ * If its a table, we select the entire column
2958
+ * if user selects a table header column
2959
+ */
2960
+ var onSelectionElementMouseDown = (0, react_1.useCallback)(function (e, cell, selection, index, shouldClamp) {
2961
+ var _a;
2962
+ // Find the first cell in selection and
2963
+ // Check if its a table column
2964
+ // Disabled for now
2965
+ var firstCell = cell;
2966
+ var table = firstCell && isTableHeader(firstCell.rowIndex, firstCell.columnIndex)
2967
+ ? (0, table_1.findActiveTableWithinCell)(sheetId, firstCell, tables)
2968
+ : undefined;
2969
+ if (firstCell && table) {
2970
+ var columnSelection = {
2971
+ range: tslib_1.__assign(tslib_1.__assign({}, table.range), { startColumnIndex: firstCell.columnIndex, endColumnIndex: Math.max(firstCell.columnIndex, (_a = selection === null || selection === void 0 ? void 0 : selection.range.endColumnIndex) !== null && _a !== void 0 ? _a : 0) }),
2972
+ };
2973
+ // Update column selection
2974
+ onChangeSelections === null || onChangeSelections === void 0 ? void 0 : onChangeSelections(sheetId, [columnSelection]);
2975
+ // Pass column
2976
+ onSelectionMouseDown === null || onSelectionMouseDown === void 0 ? void 0 : onSelectionMouseDown(e, cell, columnSelection, index, shouldClamp);
2977
+ }
2978
+ else {
2979
+ onSelectionMouseDown === null || onSelectionMouseDown === void 0 ? void 0 : onSelectionMouseDown(e, cell, selection, index, shouldClamp);
2980
+ }
2981
+ }, [onSelectionMouseDown, onChangeSelections, isTableHeader, tables, sheetId]);
2982
+ // Selection resize
2983
+ var onMouseDownResizeHandle = (0, use_selection_resize_1.useSelectionResize)({
2984
+ getCellBounds: getCellBounds,
2985
+ getCellCoordsFromOffset: getCellCoordsFromOffset,
2986
+ scrollToCell: scrollToCell,
2987
+ tokenizer: tokenizer,
2988
+ });
2989
+ // Selection move: drag a formula reference via its border covers
2990
+ var _74 = (0, use_selection_move_1.useSelectionMove)({
2991
+ getCellCoordsFromOffset: getCellCoordsFromOffset,
2992
+ scrollToCell: scrollToCell,
2993
+ tokenizer: tokenizer,
2994
+ }), onMouseDownMoveSelection = _74.onMouseDownMoveSelection, isDraggingMoveSelection = _74.isDragging;
2995
+ /**
2996
+ * Hide fill handle
2997
+ * 1. When user is in edit mode
2998
+ * 2. When user is in formula mode and user has made selections
2999
+ */
3000
+ var showFillHandle = !isSelectionInProgress &&
3001
+ !isEditInProgress &&
3002
+ !isResizingTable &&
3003
+ !(formulaMode && formulaSelections.length);
3004
+ /**
3005
+ * Flashing
3006
+ */
3007
+ var _75 = (0, use_flash_1.useFlash)({
3008
+ theme: theme,
3009
+ }), flash = _75.flash, mark = _75.mark, unmark = _75.unmark, onFlashEnd = _75.onFlashEnd, flashingBorders = _75.flashingBorders;
3010
+ // Cache hover ids
3011
+ var cachedHoveredSelectionIds = (0, use_hovered_selection_ids_1.useHoveredSelectionIds)({
3012
+ selections: selections,
3013
+ hoveredCell: delayedHoveredCell,
3014
+ activeCell: activeCell,
3015
+ });
3016
+ /**
3017
+ * Selection Renderer
3018
+ */
3019
+ var selectionRenderer = (0, use_selection_renderer_1.useSelectionRenderer)({
3020
+ sheetId: sheetId,
3021
+ scale: scale,
3022
+ onSelectionMouseDown: onSelectionElementMouseDown,
3023
+ onMouseDownResizeHandle: onMouseDownResizeHandle,
3024
+ onMouseDownMoveSelection: onMouseDownMoveSelection,
3025
+ isDraggingMoveSelection: isDraggingMoveSelection,
3026
+ onChangeActiveCell: onChangeActiveCell,
3027
+ onChangeSelections: onChangeSelections,
3028
+ SelectionTitleComponent: SelectionTitleComponent,
3029
+ selectionCount: (formulaMode ? formulaSelections : selections).length,
3030
+ selectionBackgroundColor: selectionBackgroundColor,
3031
+ selectionBorderColor: selectionBorderColor,
3032
+ getSheetName: getSheetName,
3033
+ onRequestEditTable: onRequestEditTable,
3034
+ onRequestEditPivotTable: onRequestEditPivotTable,
3035
+ isResizingTable: isResizingTable,
3036
+ resizeHandleBorderColor: cellBackgroundColor,
3037
+ showSelectionResizeHandles: showSelectionResizeHandles,
3038
+ fillHandleSize: fillHandleSize,
3039
+ showFillHandle: showFillHandle,
3040
+ onFlashEnd: onFlashEnd,
3041
+ enableMagicFill: enableMagicFill && !isEditInProgress,
3042
+ MagicFillComponent: MagicFillComponent,
3043
+ MagicFillContent: MagicFillContent,
3044
+ QuickEdit: QuickEdit,
3045
+ PasteMenu: PasteMenu,
3046
+ SuggestionAction: SuggestionAction,
3047
+ readonly: readonly,
3048
+ onSplitTextToColumns: onSplitTextToColumns,
3049
+ showPasteMenu: showPasteMenu,
3050
+ hoveredCell: delayedHoveredCell,
3051
+ onRemoveQuickEdit: onRemoveQuickEdit,
3052
+ onAddQuickEdit: onAddQuickEdit,
3053
+ cachedHoveredSelectionIds: cachedHoveredSelectionIds,
3054
+ });
3055
+ /**
3056
+ * Create Range borders in the Grid
3057
+ * Used for
3058
+ * 1. Tables and basicFilter - check
3059
+ * 2. Selection drag/drop - check
3060
+ * 3. Collaborators - check
3061
+ */
3062
+ var finalBorderStyles = (0, use_border_styles_1.useBorderStyles)({
3063
+ sheetId: sheetId,
3064
+ activeCell: activeCell,
3065
+ hoveredCell: delayedHoveredCell,
3066
+ tables: activeTables,
3067
+ pivotTables: pivotTables,
3068
+ basicFilter: basicFilter,
3069
+ borderStyles: borderStyles,
3070
+ copiedSelections: copiedSelections,
3071
+ flashingBorders: flashingBorders,
3072
+ draggedSelection: draggedSelection,
3073
+ initialDraggedSelection: initialDraggedSelection,
3074
+ selectionDragBorderColor: selectionDragBorderColor,
3075
+ selectionBorderColor: selectionBorderColor,
3076
+ tableBorderColor: tableBorderColor,
3077
+ users: isRestricted ? config_1.DEFAULT_ARRAY : users,
3078
+ userId: userId,
3079
+ renderCollaboratorCursor: renderCollaboratorCursor,
3080
+ theme: theme,
3081
+ agentSuggestions: agentSuggestions,
3082
+ quickEditValues: quickEditValues,
3083
+ });
3084
+ // Hidden column markers
3085
+ var _76 = tslib_1.__read((0, use_hidden_dimension_markers_1.useHiddenDimensionMarkers)({
3086
+ sheetId: sheetId,
3087
+ columnMetadata: columnMetadata,
3088
+ rowMetadata: rowMetadata,
3089
+ onShowColumn: onShowColumn,
3090
+ onShowRow: onShowRow,
3091
+ isFrozenColumn: isFrozenColumn,
3092
+ isFrozenRow: isFrozenRow,
3093
+ focusSheet: focusSheet,
3094
+ rowCount: rowCount,
3095
+ columnCount: columnCount,
3096
+ HiddenRowMarkers: HiddenRowMarkers,
3097
+ HiddenColumnMarkers: HiddenColumnMarkers,
3098
+ }), 4), hiddenColumnMarkers = _76[0], frozenHiddenColumnMarkers = _76[1], hiddenRowMarkers = _76[2], frozenHiddenRowMarkers = _76[3];
3099
+ // Zoom lister
3100
+ var onMouseWheel = (0, use_scale_listener_1.useScaleListener)({
3101
+ zoomSpeed: zoomSpeed,
3102
+ scale: scale,
3103
+ onChangeScale: onChangeScale,
3104
+ });
3105
+ /**
3106
+ * Frozen shadow settings
3107
+ */
3108
+ var shadowSettings = (0, react_1.useMemo)(function () {
3109
+ return {
3110
+ stroke: frozenShadowColor,
3111
+ strokeWidth: frozenShadowThickness,
3112
+ };
3113
+ }, [frozenShadowColor, frozenShadowThickness]);
3114
+ /**
3115
+ * Helper function to navigate to sheet range
3116
+ */
3117
+ var navigateToSheetRange = (0, use_navigate_sheet_range_1.useNavigateToSheetRange)({
3118
+ onChangeActiveSheet: onChangeActiveSheet,
3119
+ onChangeSelections: onChangeSelections,
3120
+ setActiveCell: setActiveCell,
3121
+ flash: flash,
3122
+ });
3123
+ // Dispatch keyboard event
3124
+ var dispatchEvent = (0, react_1.useCallback)(function (event) {
3125
+ var _a, _b;
3126
+ (_b = (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.container) === null || _b === void 0 ? void 0 : _b.dispatchEvent(event);
3127
+ }, []);
3128
+ // --- START SIDE EFFECTS ---
3129
+ // Expose grid methods in context and ref
3130
+ // Make sure these are useCallbackRef, so re-render
3131
+ // dont trigger infinite loop
3132
+ (0, use_context_setter_1.useContextSetter)(forwardedRef, {
3133
+ submitEditor: submitEditor,
3134
+ cancelEditor: cancelEditor,
3135
+ commit: commit,
3136
+ makeEditable: makeEditable,
3137
+ editCell: editCell,
3138
+ getNextFocusableCell: getNextFocusableCell,
3139
+ onEditorKeyDown: onEditorKeyDown,
3140
+ scrollToCell: scrollToCell,
3141
+ scrollToBottom: scrollToBottom,
3142
+ focusSheet: focusSheet,
3143
+ canEditCell: canEditCell,
3144
+ isSheetProtected: isSheetProtected,
3145
+ isWorkbookProtected: isWorkbookProtected,
3146
+ getSheetProtection: getSheetProtectionStable,
3147
+ getSelectionsFromFormula: getSelectionsFromFormula,
3148
+ getAddressFromSelection: getAddressFromSelection,
3149
+ getR1C1AddressFromSelection: getR1C1AddressFromSelection,
3150
+ tokenizer: tokenizer,
3151
+ setEditorValue: setEditorValue,
3152
+ getCellBounds: getCellBounds,
3153
+ getNamedRanges: getNamedRanges,
3154
+ getTableNames: getTableNames,
3155
+ getStructuredProperties: getStructuredProperties,
3156
+ getMentions: getMentions,
3157
+ getSheetName: getSheetName,
3158
+ getSheetId: getSheetId,
3159
+ getTableColumnNames: getTableColumnNames,
3160
+ updateSelectionStartEndReference: updateSelectionStartEndReference,
3161
+ getCellDimensions: getCellDimensionsStable,
3162
+ getRowHeight: getRowHeight,
3163
+ getColumnWidth: getColumnWidth,
3164
+ getContentfulGridRangeAroundCell: getContentfulGridRangeAroundCell,
3165
+ getCellCoordsFromOffset: getCellCoordsFromOffset,
3166
+ getCellOffsetFromCoords: getCellOffsetFromCoords,
3167
+ getEffectiveValuesFromRange: getEffectiveValuesFromRange,
3168
+ getSheetDimensions: getSheetDimensions,
3169
+ getFinalRowHeight: getFinalRowHeight,
3170
+ onInsertNote: onInsertNote,
3171
+ onPinToolTip: onPinToolTip,
3172
+ onUnpinTooltip: onUnpinTooltip,
3173
+ showCellPopover: showCellPopover,
3174
+ redrawGrid: redrawGrid,
3175
+ flash: flash,
3176
+ navigateToSheetRange: navigateToSheetRange,
3177
+ mark: mark,
3178
+ unmark: unmark,
3179
+ exportRange: exportRange,
3180
+ getViewPort: getViewPort,
3181
+ setActiveCell: setActiveCell,
3182
+ getGridRef: getGridRef,
3183
+ dispatchEvent: dispatchEvent,
3184
+ splitTextToColumns: onSplitTextToColumns,
3185
+ copy: copy,
3186
+ paste: paste,
3187
+ cut: cut,
3188
+ });
3189
+ var cellExpandComponent = (0, use_expand_cell_1.useExpandCell)({
3190
+ sheetId: sheetId,
3191
+ theme: theme,
3192
+ activeCell: hoveredCell,
3193
+ iconColor: filterIconColor,
3194
+ onRequestExpand: onRequestExpand,
3195
+ cellExpandPredicate: cellExpandPredicate,
3196
+ getCellSpacing: getCellSpacing,
3197
+ onChangeActiveCell: onChangeActiveCell,
3198
+ getCellOffsetFromCoords: getCellOffsetFromCoords,
3199
+ getScrollPosition: getScrollPosition,
3200
+ isFrozenColumn: isFrozenColumn,
3201
+ isFrozenRow: isFrozenRow,
3202
+ });
3203
+ // Pivot placeholders
3204
+ var pivotPlaceholders = (0, react_1.useMemo)(function () {
3205
+ var e_11, _a;
3206
+ var _b, _c;
3207
+ var placeholders = [];
3208
+ var displayIdx = 0;
3209
+ try {
3210
+ for (var _d = tslib_1.__values(pivotTables !== null && pivotTables !== void 0 ? pivotTables : []), _e = _d.next(); !_e.done; _e = _d.next()) {
3211
+ var pivotTable = _e.value;
3212
+ if (!pivotTable.pivotRange &&
3213
+ pivotTable.targetPosition.sheetId === sheetId) {
3214
+ displayIdx++;
3215
+ var cellOffset = getCellOffsetFromCoords === null || getCellOffsetFromCoords === void 0 ? void 0 : getCellOffsetFromCoords(pivotTable.targetPosition);
3216
+ var displayName = pivotTable.name || "PivotTable".concat(displayIdx);
3217
+ placeholders.push(react_1.default.createElement(pivot_placeholder_1.PivotPlaceholder, { pivotTable: pivotTable, onRequestEditPivotTable: onRequestEditPivotTable, left: (_b = cellOffset === null || cellOffset === void 0 ? void 0 : cellOffset.x) !== null && _b !== void 0 ? _b : 0, top: (_c = cellOffset === null || cellOffset === void 0 ? void 0 : cellOffset.y) !== null && _c !== void 0 ? _c : 0, displayName: displayName, key: pivotTable.pivotId }));
3218
+ }
3219
+ }
3220
+ }
3221
+ catch (e_11_1) { e_11 = { error: e_11_1 }; }
3222
+ finally {
3223
+ try {
3224
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
3225
+ }
3226
+ finally { if (e_11) throw e_11.error; }
3227
+ }
3228
+ return placeholders;
3229
+ }, [pivotTables, sheetId, onRequestEditPivotTable, getCellOffsetFromCoords]);
3230
+ /**
3231
+ * Helper function to reset grid cache if column or
3232
+ * row dimension changes
3233
+ */
3234
+ (0, use_hidden_dimensions_1.useHiddenDimensions)(columnMetadata, rowMetadata, sheetId, scale, resetLastMeasuredIndices, hostHiddenRowRanges, visibleRowRanges);
3235
+ // Callback when sheet changes
3236
+ (0, use_sheet_change_handler_1.useSheetChangeHandler)(sheetId,
3237
+ // Immediate callback for imperative methods
3238
+ function () {
3239
+ if (activeCell && selections) {
3240
+ updateSelectionStartEndReference(activeCell, selections);
3241
+ }
3242
+ // Clear text overflow values
3243
+ overflowMapRef.current.clear();
3244
+ },
3245
+ // Effects callbacks
3246
+ function (newScrollPosition) {
3247
+ // Update scrollPosition
3248
+ if (newScrollPosition && isSheetScrollScheduled()) {
3249
+ if (helpers_1.isTouchDevice) {
3250
+ scrollToTouchDevice(newScrollPosition);
3251
+ }
3252
+ else {
3253
+ scrollTo(newScrollPosition);
3254
+ }
3255
+ }
3256
+ // Wait for sheet change to finish
3257
+ requestAnimationFrame(function () {
3258
+ var _a;
3259
+ // If user is not in formula mode and changing sheet.
3260
+ // The edit belongs to the sheet it was started on, so flush it —
3261
+ // `hideEditor()` alone threw the typed value away, leaving the cell
3262
+ // empty while the formula bar kept showing the abandoned text. Hosts
3263
+ // no longer need to call `commit()` before switching sheets.
3264
+ // `preserveActiveSheet` keeps the user on the sheet they moved to; the
3265
+ // value is still written back to the sheet it was typed on.
3266
+ // Formula mode is excluded: switching sheets mid-formula is how a
3267
+ // cross-sheet range is picked, so the editor has to stay open.
3268
+ //
3269
+ // Ordering here is load-bearing in both directions. It has to run
3270
+ // inside the rAF, after the sheet-change render has committed:
3271
+ // `useSpreadsheetState`'s `onChange` mints the shared-string id inside
3272
+ // the `onChangeSheetData` updater and flushes the registry right
3273
+ // after, which only lines up because React evaluates an updater
3274
+ // eagerly when the component has no pending update. Flushing from the
3275
+ // layout effect — while the host's active-sheet update is still in
3276
+ // flight — defers that updater past the flush, and the cell keeps an
3277
+ // `ss` pointer to an entry that never reaches the shared-strings table
3278
+ // and renders blank. It also has to run before the focus handling
3279
+ // below, so a throw in `focusSheet()` can't cost the user their edit.
3280
+ if (!formulaMode && !commit({ preserveActiveSheet: true })) {
3281
+ // Nothing was being edited — keep the original reset.
3282
+ hideEditor();
3283
+ }
3284
+ // Focus editor
3285
+ if (formulaMode && !(activeEditor === null || activeEditor === void 0 ? void 0 : activeEditor.isFocused())) {
3286
+ // When sheet is changed, we
3287
+ // need to keep the focus in the current
3288
+ // cursor
3289
+ focusActiveEditor(false);
3290
+ }
3291
+ else {
3292
+ // Keep focus back on sheet
3293
+ // Check if user is focused on the context menu
3294
+ if (grid_2.canUseDOM &&
3295
+ ((_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.getAttribute("role")) !== "menu") {
3296
+ focusSheet();
3297
+ }
3298
+ }
3299
+ });
3300
+ });
3301
+ // props reference for spreadsheet api
3302
+ propsReferenceRef.current = props;
3303
+ // Expose a spreadsheet API
3304
+ (0, use_isomorphic_layout_effect_1.useIsomorphicLayoutEffect)(function () {
3305
+ var stableMethods = {
3306
+ getUserEnteredValue: getUserEnteredStringValueStable,
3307
+ scrollToCell: scrollToCell,
3308
+ commit: commit,
3309
+ };
3310
+ setSpreadsheetApi(new spreadsheet_api_1.SpreadsheetApi(propsReferenceRef, stableMethods, store, instanceStore, instanceId));
3311
+ }, []);
3312
+ // Update formulabar input value when activecell changes
3313
+ (0, use_isomorphic_layout_effect_1.useIsomorphicLayoutEffect)(function () {
3314
+ if (formulaMode) {
3315
+ return;
3316
+ }
3317
+ if (editingCellCoordinate ||
3318
+ (0, grid_5.isEqualCells)(editingCellCoordinate, activeCell)) {
3319
+ // We are currently in edit mode
3320
+ // We should only update if the editing value changes
3321
+ return;
3322
+ }
3323
+ var rowIndex = activeCell.rowIndex, columnIndex = activeCell.columnIndex;
3324
+ var value = getUserEnteredStringValue(sheetId, rowIndex, columnIndex);
3325
+ var textFormatRuns = getTextFormatRuns === null || getTextFormatRuns === void 0 ? void 0 : getTextFormatRuns(sheetId, rowIndex, columnIndex);
3326
+ // Update formula bar input
3327
+ setFormulabarEditorValue(value !== null && value !== void 0 ? value : "");
3328
+ setFormulaBarTextFormatRuns(textFormatRuns);
3329
+ }, [
3330
+ activeCell,
3331
+ formulaMode,
3332
+ sheetId,
3333
+ editingCellCoordinate,
3334
+ getUserEnteredStringValue,
3335
+ setFormulabarEditorValue,
3336
+ setFormulaBarTextFormatRuns,
3337
+ ]);
3338
+ // Keep active editor in focus
3339
+ // When user shows and hides the formula help
3340
+ (0, use_isomorphic_layout_effect_1.useIsomorphicLayoutEffect)(function () {
3341
+ focusActiveEditor(false);
3342
+ }, [showFormulaHelp]);
3343
+ // --- END SIDE EFFECTS ---
3344
+ /**
3345
+ * Insert components inside the grid viewport
3346
+ */
3347
+ var gridChildren = (0, use_grid_children_1.useGridChildren)({
3348
+ stickyEditor: stickyEditor,
3349
+ editorComponent: editorComponent,
3350
+ chartComponents: chartComponents,
3351
+ embedComponents: embedComponents,
3352
+ slicerComponents: slicerComponents,
3353
+ pivotPlaceholders: pivotPlaceholders,
3354
+ tableResizers: tableResizers,
3355
+ hiddenColumnMarkers: hiddenColumnMarkers,
3356
+ frozenHiddenColumnMarkers: frozenHiddenColumnMarkers,
3357
+ hiddenRowMarkers: hiddenRowMarkers,
3358
+ frozenHiddenRowMarkers: frozenHiddenRowMarkers,
3359
+ frozenRows: frozenRows,
3360
+ frozenColumns: frozenColumns,
3361
+ headerMenuComponent: headerMenuComponent,
3362
+ isHeaderMenuInFrozenColumn: isHeaderMenuInFrozenColumn,
3363
+ popoverComponent: popoverComponent,
3364
+ popoverRange: popoverRange,
3365
+ cellExpandComponent: cellExpandComponent,
3366
+ });
3367
+ /**
3368
+ * Only enable selection drag if user is not editing and not
3369
+ * in formula mode
3370
+ */
3371
+ var enableSelectionDrag = !isSelectionInProgress && !isEditInProgress && !formulaMode;
3372
+ return (react_1.default.createElement("div", tslib_1.__assign({ className: (0, ui_1.cn)("rnc-canvas-wrapper after:box-border before:box-border [&_*]:box-border flex min-h-0 min-w-0 relative z-[1] flex-1 bg-rnc-background", className), ref: gridContainerRef,
3373
+ // The grid paints to <canvas>, so there is no per-cell DOM for a screen
3374
+ // reader to traverse. role="application" passes keystrokes through to our
3375
+ // custom keyboard handling, and the aria-live region below announces the
3376
+ // active cell on navigation. (A full off-screen role=grid/gridcell mirror
3377
+ // is a larger follow-up.)
3378
+ role: "application", "aria-label": "Spreadsheet grid",
3379
+ // css={{
3380
+ // backgroundColor: cellBackgroundColor,
3381
+ // }}
3382
+ onContextMenu: onContextMenu,
3383
+ // Bind to outer container, so it always takes
3384
+ // priority over other components
3385
+ // generated by hooks
3386
+ onMouseMove: mouseMoveThrottler, onWheel: onMouseWheel }, rest),
3387
+ width === 0 || height === 0 ? (react_1.default.createElement("div", { className: "flex border-solid border-rnc-border border border-t border-b flex-1 justify-center items-center" },
3388
+ react_1.default.createElement("div", { className: "space-y-2" },
3389
+ react_1.default.createElement(ui_1.Skeleton, { className: "h-4 w-[250px]" }),
3390
+ react_1.default.createElement(ui_1.Skeleton, { className: "h-4 w-[250px]" })))) : (react_1.default.createElement(grid_5.Grid, { ref: gridRef, overscanCount: overscanCount, rowCount: sheetRowCount, columnCount: sheetColumnCount, rowHeight: rowHeight, columnWidth: columnWidth, itemRenderer: cellRenderer, headerRenderer: headerCellRenderer, selectionRenderer: selectionRenderer, gridLineColor: gridLineColor, gridLineWidth: gridLineWidth, borderStyles: finalBorderStyles, mergedCells: merges, scale: scale, width: width, height: height, frozenColumns: frozenColumns, frozenRows: frozenRows, activeCell: activeCell, selections: formulaMode ? formulaSelections : selections, FillHandle: fill_handle_1.FillHandle, showFillHandle: showFillHandle, fillHandleSize: fillHandleSize, showGridLines: showGridLines, enableCellOverlay: true, enableCellBackground: true, enableSelectionDrag: enableSelectionDrag, showFrozenColumnShadow: showFrozenSeparator, showFrozenRowShadow: showFrozenSeparator, selectionBorderColor: selectionBorderColor, selectionBackgroundColor: selectionBackgroundColor, fillhandleBorderColor: cellBackgroundColor, isDraggingSelection: isDragging, fillSelection: fillSelection, onPointerDown: handlePointerDown, onPointerUp: handlePointerUp, onMouseDown: handleMouseDown, onDoubleClick: handleDoubleClick, onFillHandleMouseDown: onFillHandleMouseDown, onFillHandleDoubleClick: onFillHandleDoubleClick,
3391
+ // Dimension of fill handle
3392
+ scrollToCellOffset: 4, scrollbarSize: scrollbarSize, isHiddenCell: isHiddenCell, isHiddenColumn: isHiddenColumn, isHiddenRow: isHiddenRow, visibleRowRanges: visibleRowRanges, isHiddenOverlay: isHiddenOverlay, isHiddenBackground: isHiddenBackground, overlayRenderer: cellOverlayRenderer, backgroundRenderer: cellBackgroundRenderer, shadowSettings: shadowSettings, onScroll: handleScroll, onViewPortChange: handleViewPortChange, autoFocus: autoFocus, snap: scrollSnap, scrollThrottleTimeout: scrollThrottleTimeout, preventBrowserDefaultScroll: preventBrowserDefaultScroll, showHeaders: showHeaders, gridChildren: gridChildren, onTouchStart: onTouchStart, onDimensionsChange: onDimensionsChange, extendScrollSize: helpers_1.isTouchDevice || helpers_1.isFirefox, isTouchDevice: helpers_1.isTouchDevice, frozenShadowThickness: frozenShadowThickness, onAfterScrollToCell: onAfterScrollToCell, estimatedRowHeight: defaultRowHeight, estimatedColumnWidth: defaultColumnWidth, footerHeight: footerHeight, footerComponent: footerComponent, getOverflowBuffer: getOverflowBuffer, getFrozenColumnOverflowCells: getFrozenColumnOverflowCells })),
3393
+ tooltipComponent,
3394
+ stickyEditor ? editorComponent : null,
3395
+ draggableColumns,
3396
+ draggableRows,
3397
+ contextMenuComponent,
3398
+ filterComponent,
3399
+ headerResizer,
3400
+ validatorResult,
3401
+ react_1.default.createElement("div", { "aria-live": "polite", "aria-atomic": "true", style: {
3402
+ position: "absolute",
3403
+ width: 1,
3404
+ height: 1,
3405
+ margin: -1,
3406
+ padding: 0,
3407
+ overflow: "hidden",
3408
+ clip: "rect(0, 0, 0, 0)",
3409
+ whiteSpace: "nowrap",
3410
+ border: 0,
3411
+ } }, activeCellAnnouncement)));
3412
+ }
3413
+ exports.CanvasGrid = (0, react_1.memo)((0, react_1.forwardRef)(CanvasGridComponent));