@rowsncolumns/spreadsheet 10.6.5 → 10.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/dist/cjs/api/autocomplete.d.ts +42 -0
  2. package/dist/cjs/api/autocomplete.d.ts.map +1 -0
  3. package/dist/cjs/api/autocomplete.js +114 -0
  4. package/dist/cjs/api/banded-ranges.d.ts.map +1 -1
  5. package/dist/cjs/api/banded-ranges.js +51 -1
  6. package/dist/cjs/api/error-checking.d.ts +82 -0
  7. package/dist/cjs/api/error-checking.d.ts.map +1 -0
  8. package/dist/cjs/api/error-checking.js +207 -0
  9. package/dist/cjs/api/move-overwrite.d.ts +8 -2
  10. package/dist/cjs/api/move-overwrite.d.ts.map +1 -1
  11. package/dist/cjs/api/move-overwrite.js +19 -3
  12. package/dist/cjs/api/selections.d.ts +2 -2
  13. package/dist/cjs/api/validation.d.ts +39 -1
  14. package/dist/cjs/api/validation.d.ts.map +1 -1
  15. package/dist/cjs/api/validation.js +87 -1
  16. package/dist/cjs/atoms/cell-input-context.atom.d.ts +4 -1
  17. package/dist/cjs/atoms/cell-input-context.atom.d.ts.map +1 -1
  18. package/dist/cjs/atoms/enter-key-direction.atom.d.ts +11 -0
  19. package/dist/cjs/atoms/enter-key-direction.atom.d.ts.map +1 -0
  20. package/dist/cjs/atoms/enter-key-direction.atom.js +13 -0
  21. package/dist/cjs/atoms/index.d.ts +1 -0
  22. package/dist/cjs/atoms/index.d.ts.map +1 -1
  23. package/dist/cjs/atoms/index.js +1 -0
  24. package/dist/cjs/atoms/paste-menu.atom.d.ts +22 -0
  25. package/dist/cjs/atoms/paste-menu.atom.d.ts.map +1 -1
  26. package/dist/cjs/atoms/paste-menu.atom.js +13 -1
  27. package/dist/cjs/atoms/pick-list.atom.d.ts +15 -0
  28. package/dist/cjs/atoms/pick-list.atom.d.ts.map +1 -0
  29. package/dist/cjs/atoms/pick-list.atom.js +7 -0
  30. package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
  31. package/dist/cjs/components/canvas-grid/index.js +305 -70
  32. package/dist/cjs/components/canvas-grid/typings.d.ts +96 -11
  33. package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
  34. package/dist/cjs/components/cell/index.d.ts.map +1 -1
  35. package/dist/cjs/components/cell/index.js +7 -8
  36. package/dist/cjs/components/cell/typings.d.ts +9 -0
  37. package/dist/cjs/components/cell/typings.d.ts.map +1 -1
  38. package/dist/cjs/components/cell-editor/helpers.d.ts +22 -2
  39. package/dist/cjs/components/cell-editor/helpers.d.ts.map +1 -1
  40. package/dist/cjs/components/cell-editor/helpers.js +32 -8
  41. package/dist/cjs/components/cell-editor/index.d.ts +7 -1
  42. package/dist/cjs/components/cell-editor/index.d.ts.map +1 -1
  43. package/dist/cjs/components/cell-editor/index.js +85 -13
  44. package/dist/cjs/components/cell-indicator/index.d.ts +41 -0
  45. package/dist/cjs/components/cell-indicator/index.d.ts.map +1 -0
  46. package/dist/cjs/components/cell-indicator/index.js +90 -0
  47. package/dist/cjs/components/cell-input/cell-input.d.ts +10 -2
  48. package/dist/cjs/components/cell-input/cell-input.d.ts.map +1 -1
  49. package/dist/cjs/components/cell-input/cell-input.js +5 -3
  50. package/dist/cjs/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  51. package/dist/cjs/components/cell-input/formula-bar-cell-input.js +9 -2
  52. package/dist/cjs/components/cell-structured/sparkline-math.d.ts +27 -1
  53. package/dist/cjs/components/cell-structured/sparkline-math.d.ts.map +1 -1
  54. package/dist/cjs/components/cell-structured/sparkline-math.js +48 -1
  55. package/dist/cjs/components/cell-structured/sparkline.d.ts +1 -1
  56. package/dist/cjs/components/cell-structured/sparkline.d.ts.map +1 -1
  57. package/dist/cjs/components/cell-structured/sparkline.js +36 -92
  58. package/dist/cjs/components/cell-structured/types.d.ts +6 -0
  59. package/dist/cjs/components/cell-structured/types.d.ts.map +1 -1
  60. package/dist/cjs/components/data-table-dialog/index.d.ts +22 -0
  61. package/dist/cjs/components/data-table-dialog/index.d.ts.map +1 -0
  62. package/dist/cjs/components/data-table-dialog/index.js +93 -0
  63. package/dist/cjs/components/error-check-smart-tag/index.d.ts +27 -0
  64. package/dist/cjs/components/error-check-smart-tag/index.d.ts.map +1 -0
  65. package/dist/cjs/components/error-check-smart-tag/index.js +39 -0
  66. package/dist/cjs/components/forecast-sheet-dialog/index.d.ts +26 -0
  67. package/dist/cjs/components/forecast-sheet-dialog/index.d.ts.map +1 -0
  68. package/dist/cjs/components/forecast-sheet-dialog/index.js +92 -0
  69. package/dist/cjs/components/paste-special-dialog/index.d.ts +3 -3
  70. package/dist/cjs/components/paste-special-dialog/index.d.ts.map +1 -1
  71. package/dist/cjs/components/paste-special-dialog/index.js +61 -23
  72. package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts +57 -0
  73. package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts.map +1 -0
  74. package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.js +196 -0
  75. package/dist/cjs/components/protect-sheet-dialog/constants.d.ts +3 -0
  76. package/dist/cjs/components/protect-sheet-dialog/constants.d.ts.map +1 -0
  77. package/dist/cjs/components/protect-sheet-dialog/constants.js +5 -0
  78. package/dist/cjs/components/protect-sheet-dialog/index.d.ts +2 -2
  79. package/dist/cjs/components/protect-sheet-dialog/index.d.ts.map +1 -1
  80. package/dist/cjs/components/protect-sheet-dialog/index.js +5 -3
  81. package/dist/cjs/components/scenario-manager-dialog/index.d.ts +51 -0
  82. package/dist/cjs/components/scenario-manager-dialog/index.d.ts.map +1 -0
  83. package/dist/cjs/components/scenario-manager-dialog/index.js +257 -0
  84. package/dist/cjs/components/selection/index.d.ts +1 -1
  85. package/dist/cjs/components/selection/index.d.ts.map +1 -1
  86. package/dist/cjs/components/selection/index.js +9 -4
  87. package/dist/cjs/components/selection/paste-menu.d.ts +14 -1
  88. package/dist/cjs/components/selection/paste-menu.d.ts.map +1 -1
  89. package/dist/cjs/components/selection/paste-menu.js +78 -6
  90. package/dist/cjs/components/selection/paste-options.d.ts +28 -0
  91. package/dist/cjs/components/selection/paste-options.d.ts.map +1 -0
  92. package/dist/cjs/components/selection/paste-options.js +70 -0
  93. package/dist/cjs/components/selection/types.d.ts +12 -1
  94. package/dist/cjs/components/selection/types.d.ts.map +1 -1
  95. package/dist/cjs/components/selection-drop-menu/index.d.ts +18 -0
  96. package/dist/cjs/components/selection-drop-menu/index.d.ts.map +1 -0
  97. package/dist/cjs/components/selection-drop-menu/index.js +62 -0
  98. package/dist/cjs/components/solver-dialog/index.d.ts +57 -0
  99. package/dist/cjs/components/solver-dialog/index.d.ts.map +1 -0
  100. package/dist/cjs/components/solver-dialog/index.js +204 -0
  101. package/dist/cjs/components/toolbar/sparkline-actions.d.ts +3 -2
  102. package/dist/cjs/components/toolbar/sparkline-actions.d.ts.map +1 -1
  103. package/dist/cjs/components/toolbar/sparkline-actions.js +6 -2
  104. package/dist/cjs/components/toolbar/table-style-selector.d.ts.map +1 -1
  105. package/dist/cjs/components/toolbar/table-style-selector.js +33 -2
  106. package/dist/cjs/config.d.ts +5 -4
  107. package/dist/cjs/config.d.ts.map +1 -1
  108. package/dist/cjs/config.js +13 -9
  109. package/dist/cjs/hooks/use-cell-renderer.d.ts +12 -1
  110. package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
  111. package/dist/cjs/hooks/use-cell-renderer.js +6 -3
  112. package/dist/cjs/hooks/use-copy-paste-cut.d.ts +36 -2
  113. package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
  114. package/dist/cjs/hooks/use-copy-paste-cut.js +131 -5
  115. package/dist/cjs/hooks/use-editable.d.ts +6 -0
  116. package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
  117. package/dist/cjs/hooks/use-editor-submit.d.ts +45 -3
  118. package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
  119. package/dist/cjs/hooks/use-editor-submit.js +91 -7
  120. package/dist/cjs/hooks/use-keyboard-handler.d.ts +5 -1
  121. package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
  122. package/dist/cjs/hooks/use-keyboard-handler.js +10 -1
  123. package/dist/cjs/hooks/use-selection-drag-copy.d.ts +55 -0
  124. package/dist/cjs/hooks/use-selection-drag-copy.d.ts.map +1 -0
  125. package/dist/cjs/hooks/use-selection-drag-copy.js +274 -0
  126. package/dist/cjs/hooks/use-selection-renderer.d.ts +8 -1
  127. package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
  128. package/dist/cjs/hooks/use-selection-renderer.js +7 -2
  129. package/dist/cjs/hooks/use-selection.d.ts +59 -1
  130. package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
  131. package/dist/cjs/hooks/use-selection.js +270 -61
  132. package/dist/cjs/index.d.ts +6 -1
  133. package/dist/cjs/index.d.ts.map +1 -1
  134. package/dist/cjs/index.js +5 -0
  135. package/dist/cjs/release-date.js +1 -1
  136. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  137. package/dist/cjs/types.d.ts +50 -1
  138. package/dist/cjs/types.d.ts.map +1 -1
  139. package/dist/esm/api/autocomplete.d.ts +42 -0
  140. package/dist/esm/api/autocomplete.d.ts.map +1 -0
  141. package/dist/esm/api/autocomplete.js +91 -0
  142. package/dist/esm/api/banded-ranges.d.ts.map +1 -1
  143. package/dist/esm/api/banded-ranges.js +52 -2
  144. package/dist/esm/api/error-checking.d.ts +82 -0
  145. package/dist/esm/api/error-checking.d.ts.map +1 -0
  146. package/dist/esm/api/error-checking.js +156 -0
  147. package/dist/esm/api/move-overwrite.d.ts +8 -2
  148. package/dist/esm/api/move-overwrite.d.ts.map +1 -1
  149. package/dist/esm/api/move-overwrite.js +17 -2
  150. package/dist/esm/api/selections.d.ts +2 -2
  151. package/dist/esm/api/validation.d.ts +39 -1
  152. package/dist/esm/api/validation.d.ts.map +1 -1
  153. package/dist/esm/api/validation.js +70 -0
  154. package/dist/esm/atoms/cell-input-context.atom.d.ts +4 -1
  155. package/dist/esm/atoms/cell-input-context.atom.d.ts.map +1 -1
  156. package/dist/esm/atoms/enter-key-direction.atom.d.ts +11 -0
  157. package/dist/esm/atoms/enter-key-direction.atom.d.ts.map +1 -0
  158. package/dist/esm/atoms/enter-key-direction.atom.js +8 -0
  159. package/dist/esm/atoms/index.d.ts +1 -0
  160. package/dist/esm/atoms/index.d.ts.map +1 -1
  161. package/dist/esm/atoms/index.js +1 -0
  162. package/dist/esm/atoms/paste-menu.atom.d.ts +22 -0
  163. package/dist/esm/atoms/paste-menu.atom.d.ts.map +1 -1
  164. package/dist/esm/atoms/paste-menu.atom.js +10 -1
  165. package/dist/esm/atoms/pick-list.atom.d.ts +15 -0
  166. package/dist/esm/atoms/pick-list.atom.d.ts.map +1 -0
  167. package/dist/esm/atoms/pick-list.atom.js +3 -0
  168. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  169. package/dist/esm/components/canvas-grid/index.js +239 -13
  170. package/dist/esm/components/canvas-grid/typings.d.ts +96 -11
  171. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  172. package/dist/esm/components/cell/index.d.ts.map +1 -1
  173. package/dist/esm/components/cell/index.js +8 -9
  174. package/dist/esm/components/cell/typings.d.ts +9 -0
  175. package/dist/esm/components/cell/typings.d.ts.map +1 -1
  176. package/dist/esm/components/cell-editor/helpers.d.ts +22 -2
  177. package/dist/esm/components/cell-editor/helpers.d.ts.map +1 -1
  178. package/dist/esm/components/cell-editor/helpers.js +25 -7
  179. package/dist/esm/components/cell-editor/index.d.ts +7 -1
  180. package/dist/esm/components/cell-editor/index.d.ts.map +1 -1
  181. package/dist/esm/components/cell-editor/index.js +80 -9
  182. package/dist/esm/components/cell-indicator/index.d.ts +41 -0
  183. package/dist/esm/components/cell-indicator/index.d.ts.map +1 -0
  184. package/dist/esm/components/cell-indicator/index.js +76 -0
  185. package/dist/esm/components/cell-input/cell-input.d.ts +10 -2
  186. package/dist/esm/components/cell-input/cell-input.d.ts.map +1 -1
  187. package/dist/esm/components/cell-input/cell-input.js +5 -3
  188. package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  189. package/dist/esm/components/cell-input/formula-bar-cell-input.js +9 -2
  190. package/dist/esm/components/cell-structured/sparkline-math.d.ts +27 -1
  191. package/dist/esm/components/cell-structured/sparkline-math.d.ts.map +1 -1
  192. package/dist/esm/components/cell-structured/sparkline-math.js +35 -0
  193. package/dist/esm/components/cell-structured/sparkline.d.ts +1 -1
  194. package/dist/esm/components/cell-structured/sparkline.d.ts.map +1 -1
  195. package/dist/esm/components/cell-structured/sparkline.js +34 -88
  196. package/dist/esm/components/cell-structured/types.d.ts +6 -0
  197. package/dist/esm/components/cell-structured/types.d.ts.map +1 -1
  198. package/dist/esm/components/data-table-dialog/index.d.ts +22 -0
  199. package/dist/esm/components/data-table-dialog/index.d.ts.map +1 -0
  200. package/dist/esm/components/data-table-dialog/index.js +75 -0
  201. package/dist/esm/components/error-check-smart-tag/index.d.ts +27 -0
  202. package/dist/esm/components/error-check-smart-tag/index.d.ts.map +1 -0
  203. package/dist/esm/components/error-check-smart-tag/index.js +33 -0
  204. package/dist/esm/components/forecast-sheet-dialog/index.d.ts +26 -0
  205. package/dist/esm/components/forecast-sheet-dialog/index.d.ts.map +1 -0
  206. package/dist/esm/components/forecast-sheet-dialog/index.js +83 -0
  207. package/dist/esm/components/paste-special-dialog/index.d.ts +3 -3
  208. package/dist/esm/components/paste-special-dialog/index.d.ts.map +1 -1
  209. package/dist/esm/components/paste-special-dialog/index.js +58 -23
  210. package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts +57 -0
  211. package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts.map +1 -0
  212. package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.js +177 -0
  213. package/dist/esm/components/protect-sheet-dialog/constants.d.ts +3 -0
  214. package/dist/esm/components/protect-sheet-dialog/constants.d.ts.map +1 -0
  215. package/dist/esm/components/protect-sheet-dialog/constants.js +2 -0
  216. package/dist/esm/components/protect-sheet-dialog/index.d.ts +2 -2
  217. package/dist/esm/components/protect-sheet-dialog/index.d.ts.map +1 -1
  218. package/dist/esm/components/protect-sheet-dialog/index.js +3 -2
  219. package/dist/esm/components/scenario-manager-dialog/index.d.ts +51 -0
  220. package/dist/esm/components/scenario-manager-dialog/index.d.ts.map +1 -0
  221. package/dist/esm/components/scenario-manager-dialog/index.js +213 -0
  222. package/dist/esm/components/selection/index.d.ts +1 -1
  223. package/dist/esm/components/selection/index.d.ts.map +1 -1
  224. package/dist/esm/components/selection/index.js +9 -4
  225. package/dist/esm/components/selection/paste-menu.d.ts +14 -1
  226. package/dist/esm/components/selection/paste-menu.d.ts.map +1 -1
  227. package/dist/esm/components/selection/paste-menu.js +76 -8
  228. package/dist/esm/components/selection/paste-options.d.ts +28 -0
  229. package/dist/esm/components/selection/paste-options.d.ts.map +1 -0
  230. package/dist/esm/components/selection/paste-options.js +62 -0
  231. package/dist/esm/components/selection/types.d.ts +12 -1
  232. package/dist/esm/components/selection/types.d.ts.map +1 -1
  233. package/dist/esm/components/selection-drop-menu/index.d.ts +18 -0
  234. package/dist/esm/components/selection-drop-menu/index.d.ts.map +1 -0
  235. package/dist/esm/components/selection-drop-menu/index.js +56 -0
  236. package/dist/esm/components/solver-dialog/index.d.ts +57 -0
  237. package/dist/esm/components/solver-dialog/index.d.ts.map +1 -0
  238. package/dist/esm/components/solver-dialog/index.js +176 -0
  239. package/dist/esm/components/toolbar/sparkline-actions.d.ts +3 -2
  240. package/dist/esm/components/toolbar/sparkline-actions.d.ts.map +1 -1
  241. package/dist/esm/components/toolbar/sparkline-actions.js +6 -2
  242. package/dist/esm/components/toolbar/table-style-selector.d.ts.map +1 -1
  243. package/dist/esm/components/toolbar/table-style-selector.js +29 -3
  244. package/dist/esm/config.d.ts +5 -4
  245. package/dist/esm/config.d.ts.map +1 -1
  246. package/dist/esm/config.js +12 -8
  247. package/dist/esm/hooks/use-cell-renderer.d.ts +12 -1
  248. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
  249. package/dist/esm/hooks/use-cell-renderer.js +5 -2
  250. package/dist/esm/hooks/use-copy-paste-cut.d.ts +36 -2
  251. package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
  252. package/dist/esm/hooks/use-copy-paste-cut.js +117 -6
  253. package/dist/esm/hooks/use-editable.d.ts +6 -0
  254. package/dist/esm/hooks/use-editable.d.ts.map +1 -1
  255. package/dist/esm/hooks/use-editor-submit.d.ts +45 -3
  256. package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
  257. package/dist/esm/hooks/use-editor-submit.js +81 -6
  258. package/dist/esm/hooks/use-keyboard-handler.d.ts +5 -1
  259. package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
  260. package/dist/esm/hooks/use-keyboard-handler.js +10 -1
  261. package/dist/esm/hooks/use-selection-drag-copy.d.ts +55 -0
  262. package/dist/esm/hooks/use-selection-drag-copy.d.ts.map +1 -0
  263. package/dist/esm/hooks/use-selection-drag-copy.js +245 -0
  264. package/dist/esm/hooks/use-selection-renderer.d.ts +8 -1
  265. package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
  266. package/dist/esm/hooks/use-selection-renderer.js +7 -2
  267. package/dist/esm/hooks/use-selection.d.ts +59 -1
  268. package/dist/esm/hooks/use-selection.d.ts.map +1 -1
  269. package/dist/esm/hooks/use-selection.js +245 -52
  270. package/dist/esm/index.d.ts +6 -1
  271. package/dist/esm/index.d.ts.map +1 -1
  272. package/dist/esm/index.js +5 -0
  273. package/dist/esm/release-date.js +1 -1
  274. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  275. package/dist/esm/types.d.ts +50 -1
  276. package/dist/esm/types.d.ts.map +1 -1
  277. package/dist/spreadsheet.min.css +1 -1
  278. package/package.json +6 -5
  279. package/dist/cjs/components/cell-error/index.d.ts +0 -14
  280. package/dist/cjs/components/cell-error/index.d.ts.map +0 -1
  281. package/dist/cjs/components/cell-error/index.js +0 -24
  282. package/dist/esm/components/cell-error/index.d.ts +0 -14
  283. package/dist/esm/components/cell-error/index.d.ts.map +0 -1
  284. package/dist/esm/components/cell-error/index.js +0 -18
@@ -0,0 +1,18 @@
1
+ import React from "react";
2
+ import type { SelectionDropAction } from "../../hooks/use-selection-drag-copy";
3
+ export declare const SELECTION_DROP_ACTION_LABELS: Record<SelectionDropAction, string>;
4
+ export type SelectionDropMenuProps = {
5
+ /** Release point, relative to the grid container. */
6
+ x: number;
7
+ y: number;
8
+ actions: SelectionDropAction[];
9
+ onSelectAction(action: SelectionDropAction): void;
10
+ /** Cancel, Esc or a click away — nothing changes. */
11
+ onCancel(): void;
12
+ };
13
+ /**
14
+ * The menu a right-button drag of the selection border opens at the release point
15
+ * (Excel: Move Here, Copy Here, … Cancel). Opens immediately; any dismissal cancels.
16
+ */
17
+ export declare const SelectionDropMenu: ({ x, y, actions, onSelectAction, onCancel, }: SelectionDropMenuProps) => React.JSX.Element;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/selection-drop-menu/index.tsx"],"names":[],"mappings":"AAQA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAEhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAG/E,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAU5E,CAAC;AAUF,MAAM,MAAM,sBAAsB,GAAG;IACnC,qDAAqD;IACrD,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,cAAc,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAClD,qDAAqD;IACrD,QAAQ,IAAI,IAAI,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,8CAM/B,sBAAsB,sBA2DxB,CAAC"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SelectionDropMenu = exports.SELECTION_DROP_ACTION_LABELS = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var ui_1 = require("@rowsncolumns/ui");
6
+ var react_1 = tslib_1.__importStar(require("react"));
7
+ var style_1 = require("../context-menu/style");
8
+ exports.SELECTION_DROP_ACTION_LABELS = {
9
+ move: "Move Here",
10
+ copy: "Copy Here",
11
+ "copy-values": "Copy Here as Values Only",
12
+ "copy-formats": "Copy Here as Formats Only",
13
+ link: "Link Here",
14
+ "shift-down-copy": "Shift Down and Copy",
15
+ "shift-right-copy": "Shift Right and Copy",
16
+ "shift-down-move": "Shift Down and Move",
17
+ "shift-right-move": "Shift Right and Move",
18
+ };
19
+ /** Excel's grouping: plain drops, then the inserting ones, then Cancel. */
20
+ var INSERT_ACTIONS = new Set([
21
+ "shift-down-copy",
22
+ "shift-right-copy",
23
+ "shift-down-move",
24
+ "shift-right-move",
25
+ ]);
26
+ /**
27
+ * The menu a right-button drag of the selection border opens at the release point
28
+ * (Excel: Move Here, Copy Here, … Cancel). Opens immediately; any dismissal cancels.
29
+ */
30
+ var SelectionDropMenu = function (_a) {
31
+ var x = _a.x, y = _a.y, actions = _a.actions, onSelectAction = _a.onSelectAction, onCancel = _a.onCancel;
32
+ var _b = tslib_1.__read((0, react_1.useState)(true), 2), open = _b[0], setOpen = _b[1];
33
+ // Radix fires `onSelect` and then closes; a close that follows a choice is not a cancel.
34
+ var choseRef = (0, react_1.useRef)(false);
35
+ var plain = actions.filter(function (action) { return !INSERT_ACTIONS.has(action); });
36
+ var inserting = actions.filter(function (action) { return INSERT_ACTIONS.has(action); });
37
+ var item = function (action) { return (react_1.default.createElement(ui_1.DropdownMenuItem, { key: action, onSelect: function () {
38
+ choseRef.current = true;
39
+ onSelectAction(action);
40
+ } }, exports.SELECTION_DROP_ACTION_LABELS[action])); };
41
+ return (react_1.default.createElement("div", { className: "absolute pointer-events-auto z-10", style: { left: x, top: y }, onMouseDown: function (e) { return e.stopPropagation(); }, "data-testid": "selection-drop-menu" },
42
+ react_1.default.createElement(ui_1.DropdownMenu, { modal: false, open: open, onOpenChange: function (next) {
43
+ setOpen(next);
44
+ if (!next && !choseRef.current)
45
+ onCancel();
46
+ if (!next)
47
+ choseRef.current = false;
48
+ } },
49
+ react_1.default.createElement(ui_1.DropdownMenuTrigger, { asChild: true },
50
+ react_1.default.createElement(style_1.StyledFakeTriggerButton, { "aria-label": "Drop options" })),
51
+ react_1.default.createElement(ui_1.DropdownMenuPortal, null,
52
+ react_1.default.createElement(ui_1.DropdownMenuContent, { align: "start", onCloseAutoFocus: function (event) { return event.preventDefault(); } },
53
+ plain.map(item),
54
+ inserting.length ? react_1.default.createElement(ui_1.DropdownMenuSeparator, null) : null,
55
+ inserting.map(item),
56
+ react_1.default.createElement(ui_1.DropdownMenuSeparator, null),
57
+ react_1.default.createElement(ui_1.DropdownMenuItem, { onSelect: function () {
58
+ choseRef.current = true;
59
+ onCancel();
60
+ } }, "Cancel"))))));
61
+ };
62
+ exports.SelectionDropMenu = SelectionDropMenu;
@@ -0,0 +1,57 @@
1
+ import React from "react";
2
+ type Range = {
3
+ startRowIndex: number;
4
+ endRowIndex: number;
5
+ startColumnIndex: number;
6
+ endColumnIndex: number;
7
+ };
8
+ export type SolverDialogConstraint = {
9
+ cells: Range;
10
+ operator: "<=" | "=" | ">=" | "int" | "bin";
11
+ rhs?: number | Range;
12
+ };
13
+ /** What the dialog asks the engine to solve (the `solve` command's fields). */
14
+ export type SolverDialogParameters = {
15
+ objective: {
16
+ rowIndex: number;
17
+ columnIndex: number;
18
+ };
19
+ goal: "max" | "min" | "value";
20
+ targetValue?: number;
21
+ changingCells: Range[];
22
+ constraints: SolverDialogConstraint[];
23
+ method: "grgNonlinear" | "simplexLp";
24
+ assumeNonNegative: boolean;
25
+ };
26
+ /** The engine's `CommitResult.solver`, as far as the dialog reads it. */
27
+ export type SolverDialogResult = {
28
+ status: string;
29
+ message: string;
30
+ values: {
31
+ rowIndex: number;
32
+ columnIndex: number;
33
+ value: number;
34
+ }[];
35
+ };
36
+ export type SolverDialogProps = {
37
+ open: boolean;
38
+ onOpenChange(open: boolean): void;
39
+ /** Default "Set Objective" (the active cell as A1). */
40
+ initialObjective: string;
41
+ /** Runs the solve without keeping it (`preview`), resolving to the outcome. */
42
+ onSolve(parameters: SolverDialogParameters): Promise<SolverDialogResult | undefined>;
43
+ /** "Keep Solver Solution": write the solution into the variable cells. */
44
+ onKeep(result: SolverDialogResult): void;
45
+ };
46
+ /** `B1`, `B1:C3` (`$` allowed) → a range; `null` otherwise. */
47
+ export declare const parseSolverRange: (text: string) => Range | null;
48
+ /**
49
+ * Excel's Solver Parameters dialog (the Solver add-in): Set Objective, To
50
+ * Max / Min / Value Of, By Changing Variable Cells, Subject to the
51
+ * Constraints, Make Unconstrained Variables Non-Negative and the solving
52
+ * method; then Solver Results with Keep Solver Solution / Restore Original
53
+ * Values. Evolutionary is not offered.
54
+ */
55
+ export declare const SolverDialog: React.MemoExoticComponent<({ open, onOpenChange, initialObjective, onSolve, onKeep }: SolverDialogProps) => React.JSX.Element>;
56
+ export {};
57
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/solver-dialog/index.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,KAAK,KAAK,GAAG;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;IAC5C,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACtB,CAAC;AAEF,+EAA+E;AAC/E,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,WAAW,EAAE,sBAAsB,EAAE,CAAC;IACtC,MAAM,EAAE,cAAc,GAAG,WAAW,CAAC;IACrC,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,yEAAyE;AACzE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,uDAAuD;IACvD,gBAAgB,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,OAAO,CAAC,UAAU,EAAE,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;IACrF,0EAA0E;IAC1E,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAC1C,CAAC;AAIF,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,KAAK,GAAG,IAYvD,CAAC;AAIF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,wFACqC,iBAAiB,uBA6Q9E,CAAC"}
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SolverDialog = exports.parseSolverRange = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var icons_1 = require("@rowsncolumns/icons");
6
+ var ui_1 = require("@rowsncolumns/ui");
7
+ var utils_1 = require("@rowsncolumns/utils");
8
+ var react_1 = tslib_1.__importStar(require("react"));
9
+ var OPERATORS = ["<=", "=", ">=", "int", "bin"];
10
+ /** `B1`, `B1:C3` (`$` allowed) → a range; `null` otherwise. */
11
+ var parseSolverRange = function (text) {
12
+ var _a = tslib_1.__read(text.trim().replace(/\$/g, "").split(":"), 2), a = _a[0], _b = _a[1], b = _b === void 0 ? a : _b;
13
+ if (!/^[A-Za-z]{1,3}\d+$/.test(a !== null && a !== void 0 ? a : "") || !/^[A-Za-z]{1,3}\d+$/.test(b))
14
+ return null;
15
+ var start = (0, utils_1.addressToCell)(a);
16
+ var end = (0, utils_1.addressToCell)(b);
17
+ if (!start || !end)
18
+ return null;
19
+ return {
20
+ startRowIndex: Math.min(start.rowIndex, end.rowIndex),
21
+ endRowIndex: Math.max(start.rowIndex, end.rowIndex),
22
+ startColumnIndex: Math.min(start.columnIndex, end.columnIndex),
23
+ endColumnIndex: Math.max(start.columnIndex, end.columnIndex),
24
+ };
25
+ };
26
+ exports.parseSolverRange = parseSolverRange;
27
+ /**
28
+ * Excel's Solver Parameters dialog (the Solver add-in): Set Objective, To
29
+ * Max / Min / Value Of, By Changing Variable Cells, Subject to the
30
+ * Constraints, Make Unconstrained Variables Non-Negative and the solving
31
+ * method; then Solver Results with Keep Solver Solution / Restore Original
32
+ * Values. Evolutionary is not offered.
33
+ */
34
+ exports.SolverDialog = (0, react_1.memo)(function (_a) {
35
+ var open = _a.open, onOpenChange = _a.onOpenChange, initialObjective = _a.initialObjective, onSolve = _a.onSolve, onKeep = _a.onKeep;
36
+ var _b = tslib_1.__read((0, react_1.useState)(initialObjective), 2), objective = _b[0], setObjective = _b[1];
37
+ var _c = tslib_1.__read((0, react_1.useState)("max"), 2), goal = _c[0], setGoal = _c[1];
38
+ var _d = tslib_1.__read((0, react_1.useState)("0"), 2), target = _d[0], setTarget = _d[1];
39
+ var _e = tslib_1.__read((0, react_1.useState)(""), 2), changing = _e[0], setChanging = _e[1];
40
+ var _f = tslib_1.__read((0, react_1.useState)([]), 2), constraints = _f[0], setConstraints = _f[1];
41
+ var _g = tslib_1.__read((0, react_1.useState)(true), 2), nonNegative = _g[0], setNonNegative = _g[1];
42
+ var _h = tslib_1.__read((0, react_1.useState)("grgNonlinear"), 2), method = _h[0], setMethod = _h[1];
43
+ var _j = tslib_1.__read((0, react_1.useState)(undefined), 2), error = _j[0], setError = _j[1];
44
+ var _k = tslib_1.__read((0, react_1.useState)(false), 2), busy = _k[0], setBusy = _k[1];
45
+ var _l = tslib_1.__read((0, react_1.useState)(undefined), 2), result = _l[0], setResult = _l[1];
46
+ var _m = tslib_1.__read((0, react_1.useState)(true), 2), keep = _m[0], setKeep = _m[1];
47
+ (0, react_1.useEffect)(function () {
48
+ if (open) {
49
+ setObjective(initialObjective);
50
+ setError(undefined);
51
+ setBusy(false);
52
+ setResult(undefined);
53
+ setKeep(true);
54
+ }
55
+ // Only reset on open; the model's fields stay as last entered, as in Excel.
56
+ // eslint-disable-next-line react-hooks/exhaustive-deps
57
+ }, [open]);
58
+ var solve = (0, react_1.useCallback)(function (event) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
59
+ var objectiveRange, changingCells, targetValue, specs, constraints_1, constraints_1_1, row, cells, n, rhs, outcome;
60
+ var e_1, _a;
61
+ return tslib_1.__generator(this, function (_b) {
62
+ switch (_b.label) {
63
+ case 0:
64
+ event.preventDefault();
65
+ objectiveRange = (0, exports.parseSolverRange)(objective);
66
+ if (!objectiveRange ||
67
+ objectiveRange.startRowIndex !== objectiveRange.endRowIndex ||
68
+ objectiveRange.startColumnIndex !== objectiveRange.endColumnIndex) {
69
+ setError("Set Objective must be a single cell reference.");
70
+ return [2 /*return*/];
71
+ }
72
+ changingCells = changing.split(",").map(function (t) { return (0, exports.parseSolverRange)(t); });
73
+ if (changingCells.length === 0 || changingCells.some(function (r) { return r === null; })) {
74
+ setError("By Changing Variable Cells must be cell references, e.g. B1:B3.");
75
+ return [2 /*return*/];
76
+ }
77
+ targetValue = Number(target);
78
+ if (goal === "value" && !Number.isFinite(targetValue)) {
79
+ setError("Value Of must be a number.");
80
+ return [2 /*return*/];
81
+ }
82
+ specs = [];
83
+ try {
84
+ for (constraints_1 = tslib_1.__values(constraints), constraints_1_1 = constraints_1.next(); !constraints_1_1.done; constraints_1_1 = constraints_1.next()) {
85
+ row = constraints_1_1.value;
86
+ cells = (0, exports.parseSolverRange)(row.cells);
87
+ if (!cells) {
88
+ setError("Constraint cell reference ".concat(row.cells || "(empty)", " is not valid."));
89
+ return [2 /*return*/];
90
+ }
91
+ if (row.operator === "int" || row.operator === "bin") {
92
+ specs.push({ cells: cells, operator: row.operator });
93
+ continue;
94
+ }
95
+ n = Number(row.rhs);
96
+ rhs = row.rhs.trim() !== "" && Number.isFinite(n) ? n : (0, exports.parseSolverRange)(row.rhs);
97
+ if (rhs === null) {
98
+ setError("Constraint must be a number or a cell reference.");
99
+ return [2 /*return*/];
100
+ }
101
+ specs.push({ cells: cells, operator: row.operator, rhs: rhs });
102
+ }
103
+ }
104
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
105
+ finally {
106
+ try {
107
+ if (constraints_1_1 && !constraints_1_1.done && (_a = constraints_1.return)) _a.call(constraints_1);
108
+ }
109
+ finally { if (e_1) throw e_1.error; }
110
+ }
111
+ setError(undefined);
112
+ setBusy(true);
113
+ _b.label = 1;
114
+ case 1:
115
+ _b.trys.push([1, , 3, 4]);
116
+ return [4 /*yield*/, onSolve(tslib_1.__assign(tslib_1.__assign({ objective: {
117
+ rowIndex: objectiveRange.startRowIndex,
118
+ columnIndex: objectiveRange.startColumnIndex,
119
+ }, goal: goal }, (goal === "value" ? { targetValue: targetValue } : {})), { changingCells: changingCells, constraints: specs, method: method, assumeNonNegative: nonNegative }))];
120
+ case 2:
121
+ outcome = _b.sent();
122
+ if (!outcome) {
123
+ setError("Solver could not run this model.");
124
+ return [2 /*return*/];
125
+ }
126
+ setResult(outcome);
127
+ setKeep(true);
128
+ return [3 /*break*/, 4];
129
+ case 3:
130
+ setBusy(false);
131
+ return [7 /*endfinally*/];
132
+ case 4: return [2 /*return*/];
133
+ }
134
+ });
135
+ }); }, [objective, changing, target, goal, constraints, method, nonNegative, onSolve]);
136
+ var finish = function () {
137
+ if (result && keep && result.values.length > 0)
138
+ onKeep(result);
139
+ onOpenChange(false);
140
+ };
141
+ var solved = result ? ["found", "integer-found", "converged"].includes(result.status) : false;
142
+ return (react_1.default.createElement(ui_1.Dialog, { open: open, onOpenChange: onOpenChange },
143
+ react_1.default.createElement(ui_1.DialogContent, { className: "w-[460px] max-w-[92vw] pointer-events-auto" },
144
+ react_1.default.createElement(ui_1.DialogTitle, null, result ? "Solver Results" : "Solver Parameters"),
145
+ react_1.default.createElement(ui_1.DialogDescription, null, "Find the variable cell values that optimize the objective under the constraints."),
146
+ react_1.default.createElement(ui_1.DialogCloseButton, { onClick: function () { return onOpenChange(false); } },
147
+ react_1.default.createElement(icons_1.Cross1Icon, null)),
148
+ react_1.default.createElement(ui_1.DialogBody, { className: "flex flex-col gap-3 font-system text-sm" }, result ? (react_1.default.createElement("div", { className: "flex flex-col gap-3" },
149
+ react_1.default.createElement("p", { role: "status", className: "text-xs" }, result.message),
150
+ solved ? (react_1.default.createElement("div", { className: "flex flex-col gap-1 text-xs" },
151
+ react_1.default.createElement("label", { className: "flex items-center gap-2" },
152
+ react_1.default.createElement("input", { type: "radio", checked: keep, onChange: function () { return setKeep(true); } }),
153
+ "Keep Solver Solution"),
154
+ react_1.default.createElement("label", { className: "flex items-center gap-2" },
155
+ react_1.default.createElement("input", { type: "radio", checked: !keep, onChange: function () { return setKeep(false); } }),
156
+ "Restore Original Values"))) : null,
157
+ react_1.default.createElement(ui_1.Separator, null),
158
+ react_1.default.createElement("div", { className: "flex justify-end gap-2" },
159
+ react_1.default.createElement(ui_1.Button, { type: "button", size: "sm", variant: "outline", onClick: function () { return setResult(undefined); } }, "Return to Solver Parameters"),
160
+ react_1.default.createElement(ui_1.Button, { type: "button", size: "sm", onClick: function () { return (solved ? finish() : onOpenChange(false)); } }, "OK")))) : (react_1.default.createElement("form", { className: "flex flex-col gap-3", onSubmit: solve },
161
+ react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
162
+ "Set Objective:",
163
+ react_1.default.createElement(ui_1.Input, { autoFocus: true, "aria-label": "Set Objective", value: objective, onChange: function (e) { return setObjective(e.target.value); } })),
164
+ react_1.default.createElement("div", { className: "flex items-center gap-3 text-xs" },
165
+ "To:",
166
+ ["max", "min", "value"].map(function (g) { return (react_1.default.createElement("label", { key: g, className: "flex items-center gap-1" },
167
+ react_1.default.createElement("input", { type: "radio", checked: goal === g, onChange: function () { return setGoal(g); } }),
168
+ g === "max" ? "Max" : g === "min" ? "Min" : "Value Of:")); }),
169
+ react_1.default.createElement(ui_1.Input, { className: "w-20", "aria-label": "Value Of", value: target, disabled: goal !== "value", onChange: function (e) { return setTarget(e.target.value); } })),
170
+ react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
171
+ "By Changing Variable Cells:",
172
+ react_1.default.createElement(ui_1.Input, { "aria-label": "By Changing Variable Cells", value: changing, onChange: function (e) { return setChanging(e.target.value); } })),
173
+ react_1.default.createElement("div", { className: "flex flex-col gap-1 text-xs font-medium" },
174
+ "Subject to the Constraints:",
175
+ constraints.map(function (row, i) { return (react_1.default.createElement("div", { key: i, className: "flex items-center gap-1" },
176
+ react_1.default.createElement(ui_1.Input, { "aria-label": "Constraint ".concat(i + 1, " cell reference"), value: row.cells, onChange: function (e) {
177
+ return setConstraints(constraints.map(function (r, k) { return (k === i ? tslib_1.__assign(tslib_1.__assign({}, r), { cells: e.target.value }) : r); }));
178
+ } }),
179
+ react_1.default.createElement("select", { "aria-label": "Constraint ".concat(i + 1, " relation"), className: "h-8 rounded border border-rnc-border bg-transparent px-1 text-sm", value: row.operator, onChange: function (e) {
180
+ return setConstraints(constraints.map(function (r, k) {
181
+ return k === i ? tslib_1.__assign(tslib_1.__assign({}, r), { operator: e.target.value }) : r;
182
+ }));
183
+ } }, OPERATORS.map(function (op) { return (react_1.default.createElement("option", { key: op, value: op }, op)); })),
184
+ react_1.default.createElement(ui_1.Input, { "aria-label": "Constraint ".concat(i + 1, " value"), value: row.operator === "int" ? "integer" : row.operator === "bin" ? "binary" : row.rhs, disabled: row.operator === "int" || row.operator === "bin", onChange: function (e) {
185
+ return setConstraints(constraints.map(function (r, k) { return (k === i ? tslib_1.__assign(tslib_1.__assign({}, r), { rhs: e.target.value }) : r); }));
186
+ } }),
187
+ react_1.default.createElement(ui_1.Button, { type: "button", size: "sm", variant: "outline", "aria-label": "Delete constraint ".concat(i + 1), onClick: function () { return setConstraints(constraints.filter(function (_, k) { return k !== i; })); } }, "Delete"))); }),
188
+ react_1.default.createElement("div", null,
189
+ react_1.default.createElement(ui_1.Button, { type: "button", size: "sm", variant: "outline", onClick: function () { return setConstraints(tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(constraints), false), [{ cells: "", operator: "<=", rhs: "" }], false)); } }, "Add"))),
190
+ react_1.default.createElement("label", { className: "flex items-center gap-2 text-xs" },
191
+ react_1.default.createElement("input", { type: "checkbox", checked: nonNegative, onChange: function (e) { return setNonNegative(e.target.checked); } }),
192
+ "Make Unconstrained Variables Non-Negative"),
193
+ react_1.default.createElement("label", { className: "flex items-center gap-2 text-xs font-medium" },
194
+ "Select a Solving Method:",
195
+ react_1.default.createElement("select", { "aria-label": "Select a Solving Method", className: "h-8 rounded border border-rnc-border bg-transparent px-2 text-sm", value: method, onChange: function (e) { return setMethod(e.target.value); } },
196
+ react_1.default.createElement("option", { value: "grgNonlinear" }, "GRG Nonlinear"),
197
+ react_1.default.createElement("option", { value: "simplexLp" }, "Simplex LP"))),
198
+ error ? (react_1.default.createElement("div", { role: "alert", className: "text-xs text-rnc-destructive" }, error)) : null,
199
+ react_1.default.createElement(ui_1.Separator, null),
200
+ react_1.default.createElement("div", { className: "flex justify-end gap-2" },
201
+ react_1.default.createElement(ui_1.Button, { type: "button", variant: "outline", size: "sm", onClick: function () { return onOpenChange(false); } }, "Close"),
202
+ react_1.default.createElement(ui_1.Button, { type: "submit", size: "sm", disabled: busy }, busy ? "Solving…" : "Solve"))))))));
203
+ });
204
+ exports.SolverDialog.displayName = "SolverDialog";
@@ -19,13 +19,14 @@ export type SparklineActionsProps = {
19
19
  onDeleteSparklineGroup?(group: SparklineGroup): void;
20
20
  onClearSparklines?(sheetId: number, cells: CellInterface[]): void;
21
21
  onGroupSparklines?(sheetId: number, activeCell: CellInterface, cells: CellInterface[]): void;
22
+ onUngroupSparklines?(group: SparklineGroup): void;
22
23
  readonly?: boolean;
23
24
  };
24
25
  /**
25
26
  * Excel's Sparklines ribbon: Insert → Sparklines (Line / Column / Win-Loss → the Create
26
27
  * Sparklines dialog) and, when the active cell is in a sparkline group, the Sparkline Design tab —
27
28
  * Edit Data & Location, Type, Show (points + markers), Sparkline / marker colours, Axis (show
28
- * axis, right-to-left, hidden data, empty cells, vertical min/max) and Group / Clear.
29
+ * axis, right-to-left, hidden data, empty cells, vertical min/max) and Group / Ungroup / Clear.
29
30
  */
30
- export declare const SparklineActions: ({ sheetId, activeCell, selections, getSparklineGroup, onUpdateSparklineGroup, onDeleteSparklineGroup, onClearSparklines, onGroupSparklines, readonly, }: SparklineActionsProps) => React.JSX.Element;
31
+ export declare const SparklineActions: ({ sheetId, activeCell, selections, getSparklineGroup, onUpdateSparklineGroup, onDeleteSparklineGroup, onClearSparklines, onGroupSparklines, onUngroupSparklines, readonly, }: SparklineActionsProps) => React.JSX.Element;
31
32
  //# sourceMappingURL=sparkline-actions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sparkline-actions.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/sparkline-actions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAmBvE,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAuC,MAAM,OAAO,CAAC;AAM5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,eAAO,MAAM,eAAe,EAAE;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAIzE,CAAC;AA6CF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACjD,8FAA8F;IAC9F,iBAAiB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,cAAc,GAAG,SAAS,CAAC;IACrF,sBAAsB,CAAC,CACrB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,kBAAkB,CAAC;QAAC,OAAO,CAAC,EAAE,qBAAqB,CAAA;KAAE,GACpE,OAAO,CAAC;IACX,sBAAsB,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACrD,iBAAiB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAClE,iBAAiB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,yJAU9B,qBAAqB,sBAyXvB,CAAC"}
1
+ {"version":3,"file":"sparkline-actions.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/sparkline-actions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAmBvE,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAuC,MAAM,OAAO,CAAC;AAM5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,eAAO,MAAM,eAAe,EAAE;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAIzE,CAAC;AA6CF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACjD,8FAA8F;IAC9F,iBAAiB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,cAAc,GAAG,SAAS,CAAC;IACrF,sBAAsB,CAAC,CACrB,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE;QAAE,IAAI,CAAC,EAAE,kBAAkB,CAAC;QAAC,OAAO,CAAC,EAAE,qBAAqB,CAAA;KAAE,GACpE,OAAO,CAAC;IACX,sBAAsB,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACrD,iBAAiB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAClE,iBAAiB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAC7F,mBAAmB,CAAC,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,8KAW9B,qBAAqB,sBAiYvB,CAAC"}
@@ -41,10 +41,10 @@ var Check = function () { return (react_1.default.createElement(ui_1.DropdownMen
41
41
  * Excel's Sparklines ribbon: Insert → Sparklines (Line / Column / Win-Loss → the Create
42
42
  * Sparklines dialog) and, when the active cell is in a sparkline group, the Sparkline Design tab —
43
43
  * Edit Data & Location, Type, Show (points + markers), Sparkline / marker colours, Axis (show
44
- * axis, right-to-left, hidden data, empty cells, vertical min/max) and Group / Clear.
44
+ * axis, right-to-left, hidden data, empty cells, vertical min/max) and Group / Ungroup / Clear.
45
45
  */
46
46
  var SparklineActions = function (_a) {
47
- var sheetId = _a.sheetId, activeCell = _a.activeCell, selections = _a.selections, getSparklineGroup = _a.getSparklineGroup, onUpdateSparklineGroup = _a.onUpdateSparklineGroup, onDeleteSparklineGroup = _a.onDeleteSparklineGroup, onClearSparklines = _a.onClearSparklines, onGroupSparklines = _a.onGroupSparklines, readonly = _a.readonly;
47
+ var sheetId = _a.sheetId, activeCell = _a.activeCell, selections = _a.selections, getSparklineGroup = _a.getSparklineGroup, onUpdateSparklineGroup = _a.onUpdateSparklineGroup, onDeleteSparklineGroup = _a.onDeleteSparklineGroup, onClearSparklines = _a.onClearSparklines, onGroupSparklines = _a.onGroupSparklines, onUngroupSparklines = _a.onUngroupSparklines, readonly = _a.readonly;
48
48
  var focusSheet = (0, atoms_1.useFocusSheet)();
49
49
  var openDialog = (0, sparkline_dialog_atom_1.useOpenSparklineDialog)();
50
50
  var shouldFocusSheetRef = (0, react_1.useRef)(true);
@@ -258,6 +258,10 @@ var SparklineActions = function (_a) {
258
258
  axisBoundSubmenu("Vertical Axis Maximum", "maxaxistype", "max"))),
259
259
  react_1.default.createElement(ui_1.DropdownMenuSeparator, null),
260
260
  react_1.default.createElement(ui_1.DropdownMenuItem, { disabled: !sparklineCellsSelected || readonly, onSelect: function () { return onGroupSparklines === null || onGroupSparklines === void 0 ? void 0 : onGroupSparklines(sheetId, activeCell, selectedCells); } }, "Group"),
261
+ react_1.default.createElement(ui_1.DropdownMenuItem, { disabled: !group || group.members.length < 2 || readonly, onSelect: function () {
262
+ if (group)
263
+ onUngroupSparklines === null || onUngroupSparklines === void 0 ? void 0 : onUngroupSparklines(group);
264
+ } }, "Ungroup"),
261
265
  react_1.default.createElement(ui_1.DropdownMenuSub, null,
262
266
  react_1.default.createElement(ui_1.DropdownMenuSubTrigger, { disabled: !hasGroup || readonly },
263
267
  "Clear",
@@ -1 +1 @@
1
- {"version":3,"file":"table-style-selector.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/table-style-selector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAevE,OAAO,EACL,wBAAwB,EAGzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAuD,MAAM,OAAO,CAAC;AAG5E,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAK7D,OAAO,KAAK,EACV,gBAAgB,EAEhB,gBAAgB,EAEhB,iBAAiB,EACjB,UAAU,EACV,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACjD,UAAU,EAAE,aAAa,CAAC;IAC1B,aAAa,CAAC,CACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,EACxB,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,GAC/B,IAAI,CAAC;IACR,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IAChD,4FAA4F;IAC5F,oBAAoB,CAAC,EAAE,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAC/D;;;OAGG;IACH,mBAAmB,CAAC,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9D,uFAAuF;IACvF,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC;;;OAGG;IACH,wBAAwB,CAAC,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACzD;;;OAGG;IACH,wBAAwB,CAAC,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC1D,CAAC;AAEF,uEAAuE;AACvE,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC;IACzB,GAAG,EACC,WAAW,GACX,UAAU,GACV,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,GAChB,cAAc,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACvB,CAQA,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,SAAS,EAChB,KAAK,CAAC,OAAO,aAAa,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,EAC1C,SAAS,OAAO,KACf,OAAO,CAAC,SAAS,CAqBnB,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,UAAU;IACjB,kBAAkB,EAAE,MAAM,GAAG,SAAS;IACtC,cAAc,EAAE,MAAM,GAAG,SAAS;IAClC,cAAc,EAAE,gBAAgB,GAAG,SAAS;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa;CAC5B,CAAC;AAKF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,gBAAgB,OAAO,GAAG,SAAS,EACnC,mBAAmB,OAAO,GAAG,SAAS,EACtC,QAAQ,gBAAgB,kCAoBzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,kOAc1B,uBAAuB,uBA+W3B,CAAC"}
1
+ {"version":3,"file":"table-style-selector.d.ts","sourceRoot":"","sources":["../../../../components/toolbar/table-style-selector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAevE,OAAO,EAEL,wBAAwB,EAKzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAuD,MAAM,OAAO,CAAC;AAG5E,OAAO,EAAE,wBAAwB,EAAE,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAK7D,OAAO,KAAK,EACV,gBAAgB,EAEhB,gBAAgB,EAEhB,iBAAiB,EACjB,UAAU,EACV,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACjD,UAAU,EAAE,aAAa,CAAC;IAC1B,aAAa,CAAC,CACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,EACxB,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,GAC/B,IAAI,CAAC;IACR,aAAa,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;IAChD,4FAA4F;IAC5F,oBAAoB,CAAC,EAAE,eAAe,CAAC,sBAAsB,CAAC,CAAC;IAC/D;;;OAGG;IACH,mBAAmB,CAAC,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9D,uFAAuF;IACvF,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC;;;OAGG;IACH,wBAAwB,CAAC,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACzD;;;OAGG;IACH,wBAAwB,CAAC,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC1D,CAAC;AAEF,uEAAuE;AACvE,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC;IACzB,GAAG,EACC,WAAW,GACX,UAAU,GACV,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,GAChB,cAAc,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACvB,CAQA,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,SAAS,EAChB,KAAK,CAAC,OAAO,aAAa,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,EAC1C,SAAS,OAAO,KACf,OAAO,CAAC,SAAS,CAqBnB,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,UAAU;IACjB,kBAAkB,EAAE,MAAM,GAAG,SAAS;IACtC,cAAc,EAAE,MAAM,GAAG,SAAS;IAClC,cAAc,EAAE,gBAAgB,GAAG,SAAS;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa;CAC5B,CAAC;AAKF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,gBAAgB,OAAO,GAAG,SAAS,EACnC,mBAAmB,OAAO,GAAG,SAAS,EACtC,QAAQ,gBAAgB,kCAoBzB,CAAC;AAEF,eAAO,MAAM,kBAAkB,kOAc1B,uBAAuB,uBAuX3B,CAAC"}
@@ -203,8 +203,7 @@ exports.TableStyleSelector = (0, react_1.memo)(function (_a) {
203
203
  * Get all table border styles
204
204
  */
205
205
  var tableBorderstyles = (0, react_1.useMemo)(function () { return tslib_1.__spreadArray([], tslib_1.__read((0, exports.getTableBorderStyles)(showRowStripes, showColumnStripes, theme).entries()), false); }, [showRowStripes, showColumnStripes, theme]);
206
- var swatch = function (key, tableTheme, bandProperties, style, onContextMenu) { return (react_1.default.createElement(ui_1.DropdownMenuItem, { key: key, onClick: function () { return onSelectStyle(tableTheme, bandProperties); }, onContextMenu: onContextMenu, onPointerEnter: function () { return previewStyle(tableTheme, bandProperties); }, onPointerLeave: clearPreview, onFocus: function () { return previewStyle(tableTheme, bandProperties); }, onBlur: clearPreview, className: hoverClass, title: tableTheme },
207
- react_1.default.createElement(TableSkeleton, { rowProperties: bandProperties === null || bandProperties === void 0 ? void 0 : bandProperties.rowProperties, columnProperties: bandProperties === null || bandProperties === void 0 ? void 0 : bandProperties.columnProperties, theme: theme, style: style }))); };
206
+ var swatch = function (key, tableTheme, bandProperties, style, onContextMenu) { return (react_1.default.createElement(ui_1.DropdownMenuItem, { key: key, onClick: function () { return onSelectStyle(tableTheme, bandProperties); }, onContextMenu: onContextMenu, onPointerEnter: function () { return previewStyle(tableTheme, bandProperties); }, onPointerLeave: clearPreview, onFocus: function () { return previewStyle(tableTheme, bandProperties); }, onBlur: clearPreview, className: hoverClass, title: tableTheme }, (bandProperties === null || bandProperties === void 0 ? void 0 : bandProperties.tableStyleElements) ? (react_1.default.createElement(TableStyleElementsSkeleton, { elements: bandProperties.tableStyleElements, theme: theme, style: style })) : (react_1.default.createElement(TableSkeleton, { rowProperties: bandProperties === null || bandProperties === void 0 ? void 0 : bandProperties.rowProperties, columnProperties: bandProperties === null || bandProperties === void 0 ? void 0 : bandProperties.columnProperties, theme: theme, style: style })))); };
208
207
  return (react_1.default.createElement(ui_1.DropdownMenu, { modal: false, onOpenChange: function (open) {
209
208
  if (!open) {
210
209
  clearPreview();
@@ -290,6 +289,38 @@ exports.TableStyleSelector = (0, react_1.memo)(function (_a) {
290
289
  // the editor is open its footer ends the panel.
291
290
  react_1.default.createElement(ui_1.DropdownMenuItem, { className: "text-xs", onClick: function () { return onSelectStyle("None", undefined); }, onPointerEnter: function () { return previewStyle("None", undefined); }, onPointerLeave: clearPreview, onFocus: function () { return previewStyle("None", undefined); }, onBlur: clearPreview }, "Clear")))))));
292
291
  });
292
+ var swatchEdge = function (border, theme) {
293
+ return border
294
+ ? "".concat(Math.min(border.width, 2), "px solid ").concat((0, themes_1.getStringifiedColor)(border.color, theme))
295
+ : undefined;
296
+ };
297
+ /**
298
+ * A built-in style's swatch: a header row over four body rows, five columns, each cell painted
299
+ * with the format the table style elements give it in the grid (`resolveTableStyleCell`).
300
+ */
301
+ var TableStyleElementsSkeleton = function (_a) {
302
+ var elements = _a.elements, theme = _a.theme, style = _a.style;
303
+ return (react_1.default.createElement("div", { className: "table border-collapse table-fixed w-20 md:w-16", style: style }, tslib_1.__spreadArray([], tslib_1.__read(Array(5)), false).map(function (_, rowIndex) { return (react_1.default.createElement("div", { className: "table-row", key: rowIndex }, tslib_1.__spreadArray([], tslib_1.__read(Array(5)), false).map(function (_, columnIndex) {
304
+ var _a = (0, utils_1.resolveTableStyleCell)(elements, {
305
+ rowIndex: rowIndex,
306
+ columnIndex: columnIndex,
307
+ rowCount: 5,
308
+ columnCount: 5,
309
+ headerRow: true,
310
+ totalRow: false,
311
+ showFirstColumn: false,
312
+ showLastColumn: false,
313
+ }), fill = _a.fill, color = _a.color, borders = _a.borders;
314
+ return (react_1.default.createElement("div", { key: columnIndex, className: (0, ui_1.cn)("table-cell leading-none text-center", rowIndex === 0 ? "h-1" : ""), style: {
315
+ backgroundColor: (0, themes_1.getStringifiedColor)(fill, theme),
316
+ color: (0, themes_1.getStringifiedColor)(color, theme),
317
+ borderTop: swatchEdge(borders === null || borders === void 0 ? void 0 : borders.top, theme),
318
+ borderBottom: swatchEdge(borders === null || borders === void 0 ? void 0 : borders.bottom, theme),
319
+ borderLeft: swatchEdge(borders === null || borders === void 0 ? void 0 : borders.left, theme),
320
+ borderRight: swatchEdge(borders === null || borders === void 0 ? void 0 : borders.right, theme),
321
+ } }, "-"));
322
+ }))); })));
323
+ };
293
324
  /**
294
325
  * Table skeleton
295
326
  * @param param0
@@ -100,10 +100,11 @@ export declare const EXPAND_COLLAPSE_ICON_WIDTH = 12;
100
100
  export declare const CF_ICON_WIDTH = 14;
101
101
  export declare const CF_ICON_SPACING = 4;
102
102
  export declare const HEADER_MENU_DIM = 15;
103
- export declare const INVALID_COLOR = "#FF5621";
104
- export declare const ERROR_COLOR = "#ff0000";
105
- export declare const NOTE_COLOR = "#E68500";
106
- export declare const COMMENT_COLOR = "#FAB00B";
103
+ export declare const INDICATOR_SIZE = 6.5;
104
+ export declare const INVALID_COLOR = "#FF0000";
105
+ export declare const ERROR_COLOR = "#008000";
106
+ export declare const NOTE_COLOR = "#FF0000";
107
+ export declare const COMMENT_COLOR = "#7719AA";
107
108
  export declare const DEFAULT_CELL_INPUT_LINE_HEIGHT = "23px";
108
109
  export declare const FORMULA_BAR_HEIGHT = 23;
109
110
  export declare const SCROLLBAR_SIZE = 13;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../config.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DEFAULT_HEADER_SELECTED_TABLE_BG = exports.DEFAULT_HEADER_ACTIVE_TABLE_BG_DARK = exports.DEFAULT_HEADER_ACTIVE_TABLE_BG = exports.DEFAULT_HEADER_TABLE_BG_DARK = exports.DEFAULT_HEADER_TABLE_BG = exports.DEFAULT_HEADER_SELECTED_BG = exports.DEFAULT_HEADER_ACTIVE_BG_DARK = exports.DEFAULT_HEADER_ACTIVE_BG = exports.DEFAULT_HEADER_BG_DARK = exports.DEFAULT_HEADER_BG = exports.DEFAULT_HEADER_BORDER_COLOR_DARK = exports.DEFAULT_HEADER_BORDER_COLOR = exports.DEFAULT_HEADER_COLOR_DARK = exports.DEFAULT_HEADER_COLOR = exports.GRIDLINE_COLOR_DARK = exports.GRIDLINE_COLOR = exports.DEFAULT_CELL_BACKGROUND_COLOR_DARK = exports.DEFAULT_CELL_BACKGROUND_COLOR = exports.DEFAULT_CELL_COLOR_DARK = exports.DEFAULT_CELL_COLOR = exports.HEADER_TEXT_FORMAT = exports.DEFAULT_CELL_FORMAT = exports.DEFAULT_TEXT_FORMAT = exports.FORMULA_FONT_CONFIG = exports.EDITOR_FORMULA_VERTICAL_ALIGNMENT = exports.EDITOR_VERTICAL_ALIGNMENT = exports.CELL_HORIZONTAL_ALIGNMENT = exports.CELL_VERTICAL_ALIGNMENT = exports.MIN_COLUMN_WIDTH = exports.FILTER_BUTTON_FILL_COLOR = exports.FILTER_BUTTON_BORDER_COLOR = exports.FILTER_BUTTON_GLYPH_COLOR = exports.INDENT_SPACING = exports.DEFAULT_CELL_SPACING = exports.OUTLINE_GUTTER_PAD_PX = exports.OUTLINE_GUTTER_LEVEL_PX = exports.COLUMN_HEADER_HEIGHT = exports.ROW_HEADER_WIDTH = exports.DEFAULT_COLUMN_WIDTH = exports.DEFAULT_ROW_HEIGHT = exports.DEFAULT_FONT_SIZE_PT = exports.DEFAULT_COLUMN_COUNT = exports.DEFAULT_ROW_COUNT = exports.MAX_COLUMN_COUNT = exports.MAX_ROW_COUNT = exports.DEFAULT_SCROLL_POSITION = exports.FROZEN_EMPTY_ARRAY = exports.DEFAULT_ARRAY = exports.DEFAULT_SELECTIONS = exports.DEFAULT_ACTIVE_CELL = void 0;
4
- exports.MULTIPLE_SELECTIONS_CLIPBOARD_ERROR = exports.MULTIPLE_SELECTIONS_ERROR = exports.IndexedColors = exports.URL_REGEX = exports.EMAIL_REGEX = exports.BLANK_LABEL = exports.VALIDATION_CONDITION_LABELS = exports.CONDITION_NONE = exports.CONDITION_LABELS = exports.SCROLLBAR_SIZE_FIREFOX = exports.SCROLLBAR_SIZE = exports.FORMULA_BAR_HEIGHT = exports.DEFAULT_CELL_INPUT_LINE_HEIGHT = exports.COMMENT_COLOR = exports.NOTE_COLOR = exports.ERROR_COLOR = exports.INVALID_COLOR = exports.HEADER_MENU_DIM = exports.CF_ICON_SPACING = exports.CF_ICON_WIDTH = exports.EXPAND_COLLAPSE_ICON_WIDTH = exports.COLLAPSE_ICON_PATH = exports.EXPAND_ICON_PATH = exports.CHECKBOX_ICON_WIDTH = exports.CHECKBOX_ICON_ACTIVE_COLOR = exports.CHECKBOX_ICON_COLOR = exports.CHECKBOX_CHECKED_ICON_PATH = exports.CHECKBOX_ICON_PATH = exports.SORT_DESCENDING_ICON_PATH = exports.SORT_ASCENDING_ICON_PATH = exports.FILTER_ICON_WIDTH = exports.FUNNEL_ICON_PATH = exports.FITLER_ICON_PATH = exports.CALCULATED_ICON_HEIGHT = exports.CALCULATED_ICON_WIDTH = exports.CHIP_COLOR_DARK = exports.CHIP_COLOR = exports.CHIP_RADIUS = exports.CHIP_HEIGHT = exports.CHIP_SPACING = exports.ARROW_DOWN_COLOR = exports.ARROW_DOWN_WIDTH = exports.ARROW_DOWN_ICON_PATH = exports.defaultSpreadsheetTheme = exports.DEFAULT_OVERLAY_POSITION = exports.SELECTION_BORDER = exports.SELECTION_BG = void 0;
4
+ exports.MULTIPLE_SELECTIONS_CLIPBOARD_ERROR = exports.MULTIPLE_SELECTIONS_ERROR = exports.IndexedColors = exports.URL_REGEX = exports.EMAIL_REGEX = exports.BLANK_LABEL = exports.VALIDATION_CONDITION_LABELS = exports.CONDITION_NONE = exports.CONDITION_LABELS = exports.SCROLLBAR_SIZE_FIREFOX = exports.SCROLLBAR_SIZE = exports.FORMULA_BAR_HEIGHT = exports.DEFAULT_CELL_INPUT_LINE_HEIGHT = exports.COMMENT_COLOR = exports.NOTE_COLOR = exports.ERROR_COLOR = exports.INVALID_COLOR = exports.INDICATOR_SIZE = exports.HEADER_MENU_DIM = exports.CF_ICON_SPACING = exports.CF_ICON_WIDTH = exports.EXPAND_COLLAPSE_ICON_WIDTH = exports.COLLAPSE_ICON_PATH = exports.EXPAND_ICON_PATH = exports.CHECKBOX_ICON_WIDTH = exports.CHECKBOX_ICON_ACTIVE_COLOR = exports.CHECKBOX_ICON_COLOR = exports.CHECKBOX_CHECKED_ICON_PATH = exports.CHECKBOX_ICON_PATH = exports.SORT_DESCENDING_ICON_PATH = exports.SORT_ASCENDING_ICON_PATH = exports.FILTER_ICON_WIDTH = exports.FUNNEL_ICON_PATH = exports.FITLER_ICON_PATH = exports.CALCULATED_ICON_HEIGHT = exports.CALCULATED_ICON_WIDTH = exports.CHIP_COLOR_DARK = exports.CHIP_COLOR = exports.CHIP_RADIUS = exports.CHIP_HEIGHT = exports.CHIP_SPACING = exports.ARROW_DOWN_COLOR = exports.ARROW_DOWN_WIDTH = exports.ARROW_DOWN_ICON_PATH = exports.defaultSpreadsheetTheme = exports.DEFAULT_OVERLAY_POSITION = exports.SELECTION_BORDER = exports.SELECTION_BG = void 0;
5
5
  var tslib_1 = require("tslib");
6
6
  var themes_1 = require("./themes");
7
7
  exports.DEFAULT_ACTIVE_CELL = Object.freeze({
@@ -133,14 +133,18 @@ exports.CF_ICON_WIDTH = 14;
133
133
  exports.CF_ICON_SPACING = 4;
134
134
  // Header menu
135
135
  exports.HEADER_MENU_DIM = 15;
136
- // Invalid cell
137
- exports.INVALID_COLOR = "#FF5621";
138
- // Error cell
139
- exports.ERROR_COLOR = "#ff0000";
140
- // Note cell
141
- exports.NOTE_COLOR = "#E68500";
142
- // Comment cell
143
- exports.COMMENT_COLOR = "#FAB00B";
136
+ // Cell indicators (Excel's places and colours). Sizes are at 100 % zoom; the grid multiplies by
137
+ // the zoom scale.
138
+ exports.INDICATOR_SIZE = 6.5;
139
+ // Invalid cell: Data → Data Validation → Circle Invalid Data draws a red circle. Excel does not
140
+ // mark an invalid cell otherwise.
141
+ exports.INVALID_COLOR = "#FF0000";
142
+ // Error-checking indicator: green ◤ in the top-left corner (Excel's "Automatic" indicator colour).
143
+ exports.ERROR_COLOR = "#008000";
144
+ // Note: red ◥ in the top-right corner.
145
+ exports.NOTE_COLOR = "#FF0000";
146
+ // Threaded comment: purple marker in the top-right corner.
147
+ exports.COMMENT_COLOR = "#7719AA";
144
148
  // CellInput
145
149
  exports.DEFAULT_CELL_INPUT_LINE_HEIGHT = "23px";
146
150
  // Formula bar
@@ -4,6 +4,7 @@ import { Direction } from "@rowsncolumns/grid";
4
4
  import type { FormulaLocale } from "@rowsncolumns/utils";
5
5
  import type { CellDiff } from "@rowsncolumns/version-comparison";
6
6
  import React from "react";
7
+ import type { ErrorCheckKind } from "../api/error-checking";
7
8
  import type { CanvasGridProps, SpreadsheetTheme } from "../components/canvas-grid/typings";
8
9
  import type { CellData, CellFormat, Color, DataValidationRule, ErrorValue, SortOrder, TextFormat } from "../types";
9
10
  import type { useSizer } from "./use-sizer";
@@ -222,6 +223,16 @@ export type CellRendererProps<T extends CellData = CellData> = {
222
223
  * Width of grid line
223
224
  */
224
225
  gridLineWidth: number;
226
+ /**
227
+ * Excel's background error checking: which rule flags this cell (formula error, number stored
228
+ * as text), or `undefined`. Flagged cells get the green ◤ indicator.
229
+ */
230
+ getErrorCheck?(sheetId: number, rowIndex: number, columnIndex: number): ErrorCheckKind | undefined;
231
+ /**
232
+ * Data → Data Validation → Circle Invalid Data: circle every cell that fails its validation.
233
+ * Off by default — Excel does not mark invalid cells otherwise.
234
+ */
235
+ circleInvalidData?: boolean;
225
236
  /**
226
237
  * Display notes indicator
227
238
  */
@@ -280,5 +291,5 @@ export type CellRendererProps<T extends CellData = CellData> = {
280
291
  */
281
292
  getDefaultHorizontalAlignment(sheetId: number, rowIndex: number, columnIndex: number): HorizontalAlign | undefined;
282
293
  };
283
- export declare const useCellRenderer: <T extends CellData = CellData>({ sheetId, scale, showGridLines, showZeros, isRowHeader, isColumnHeader, selectedRows, selectedColumns, selectedRowHeaders, selectedColumnHeaders, cellBackgroundColor, headerBorderColor, headerBackgroundColor, headerColor, headerActiveBackgroundColor, headerSelectedBackgroundColor, headerSelectedColor, headerTableBackgroundColor, headerTableActiveBackgroundColor, headerTableSelectedBackgroundColor, chipBackgroundColor, filterIconColor, showCalculatedColumnIcon, enableTextOverflow, showHeaders, theme, getDefaultHorizontalAlignment, isTableFilterVisible, columnContainsTable, rowsContainsTable, canOverflowToNextCell, getTableHeaderSortOrder, getDataValidation, getErrorValue, formulaLocale, locale, getEffectiveValue, getSparklineGroup, getFormattedValue, getNote, getComment, getEffectiveCellFormat, getCellBounds, getCellImageUrl, getCellMetaType, getRowHeaderText, getColumnHeaderText, getMaximumOverflowTextWidth, getCenterAcrossSelectionSpan, activeCell, getTextDimension, getCellGroupingInfo, getTextFormatRuns, onRequestEdit, onFilterClick, onCheckboxClick, isTableHeader, isTableTotalsCell, onTotalsArrowClick, isCalculatedColumnHeader, isTableHeaderFilterActive, HeaderCell, Cell, StructuredResult, gridLineWidth, showNotes, showComments, defaultFontSizePoint, lineHeightMode, readonly, onExpandCollapse, onOverflow, isComparing, getCellDiff, }: CellRendererProps<T>) => readonly [(props: RendererProps) => React.JSX.Element | null, (props: RendererProps) => React.JSX.Element, (props: RendererProps) => React.JSX.Element | null, (props: RendererProps) => React.JSX.Element | null | undefined, (cells: RendererProps[]) => React.JSX.Element];
294
+ export declare const useCellRenderer: <T extends CellData = CellData>({ sheetId, scale, showGridLines, showZeros, isRowHeader, isColumnHeader, selectedRows, selectedColumns, selectedRowHeaders, selectedColumnHeaders, cellBackgroundColor, headerBorderColor, headerBackgroundColor, headerColor, headerActiveBackgroundColor, headerSelectedBackgroundColor, headerSelectedColor, headerTableBackgroundColor, headerTableActiveBackgroundColor, headerTableSelectedBackgroundColor, chipBackgroundColor, filterIconColor, showCalculatedColumnIcon, enableTextOverflow, showHeaders, theme, getDefaultHorizontalAlignment, isTableFilterVisible, columnContainsTable, rowsContainsTable, canOverflowToNextCell, getTableHeaderSortOrder, getDataValidation, getErrorValue, formulaLocale, locale, getEffectiveValue, getSparklineGroup, getFormattedValue, getNote, getComment, getEffectiveCellFormat, getCellBounds, getCellImageUrl, getCellMetaType, getRowHeaderText, getColumnHeaderText, getMaximumOverflowTextWidth, getCenterAcrossSelectionSpan, activeCell, getTextDimension, getCellGroupingInfo, getTextFormatRuns, onRequestEdit, onFilterClick, onCheckboxClick, isTableHeader, isTableTotalsCell, onTotalsArrowClick, isCalculatedColumnHeader, isTableHeaderFilterActive, HeaderCell, Cell, StructuredResult, gridLineWidth, getErrorCheck, circleInvalidData, showNotes, showComments, defaultFontSizePoint, lineHeightMode, readonly, onExpandCollapse, onOverflow, isComparing, getCellDiff, }: CellRendererProps<T>) => readonly [(props: RendererProps) => React.JSX.Element | null, (props: RendererProps) => React.JSX.Element, (props: RendererProps) => React.JSX.Element | null, (props: RendererProps) => React.JSX.Element | null | undefined, (cells: RendererProps[]) => React.JSX.Element];
284
295
  //# sourceMappingURL=use-cell-renderer.d.ts.map