@rowsncolumns/spreadsheet 10.6.4 → 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 (308) 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/alignment.d.ts +25 -0
  35. package/dist/cjs/components/cell/alignment.d.ts.map +1 -1
  36. package/dist/cjs/components/cell/alignment.js +39 -1
  37. package/dist/cjs/components/cell/cell-background.d.ts +16 -0
  38. package/dist/cjs/components/cell/cell-background.d.ts.map +1 -1
  39. package/dist/cjs/components/cell/cell-background.js +141 -54
  40. package/dist/cjs/components/cell/cell-text-runs.d.ts +12 -5
  41. package/dist/cjs/components/cell/cell-text-runs.d.ts.map +1 -1
  42. package/dist/cjs/components/cell/cell-text-runs.js +18 -20
  43. package/dist/cjs/components/cell/index.d.ts.map +1 -1
  44. package/dist/cjs/components/cell/index.js +26 -21
  45. package/dist/cjs/components/cell/typings.d.ts +9 -0
  46. package/dist/cjs/components/cell/typings.d.ts.map +1 -1
  47. package/dist/cjs/components/cell-editor/helpers.d.ts +22 -2
  48. package/dist/cjs/components/cell-editor/helpers.d.ts.map +1 -1
  49. package/dist/cjs/components/cell-editor/helpers.js +32 -8
  50. package/dist/cjs/components/cell-editor/index.d.ts +7 -1
  51. package/dist/cjs/components/cell-editor/index.d.ts.map +1 -1
  52. package/dist/cjs/components/cell-editor/index.js +85 -13
  53. package/dist/cjs/components/cell-indicator/index.d.ts +41 -0
  54. package/dist/cjs/components/cell-indicator/index.d.ts.map +1 -0
  55. package/dist/cjs/components/cell-indicator/index.js +90 -0
  56. package/dist/cjs/components/cell-input/cell-input.d.ts +10 -2
  57. package/dist/cjs/components/cell-input/cell-input.d.ts.map +1 -1
  58. package/dist/cjs/components/cell-input/cell-input.js +5 -3
  59. package/dist/cjs/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  60. package/dist/cjs/components/cell-input/formula-bar-cell-input.js +9 -2
  61. package/dist/cjs/components/cell-structured/sparkline-math.d.ts +27 -1
  62. package/dist/cjs/components/cell-structured/sparkline-math.d.ts.map +1 -1
  63. package/dist/cjs/components/cell-structured/sparkline-math.js +48 -1
  64. package/dist/cjs/components/cell-structured/sparkline.d.ts +1 -1
  65. package/dist/cjs/components/cell-structured/sparkline.d.ts.map +1 -1
  66. package/dist/cjs/components/cell-structured/sparkline.js +36 -92
  67. package/dist/cjs/components/cell-structured/types.d.ts +6 -0
  68. package/dist/cjs/components/cell-structured/types.d.ts.map +1 -1
  69. package/dist/cjs/components/data-table-dialog/index.d.ts +22 -0
  70. package/dist/cjs/components/data-table-dialog/index.d.ts.map +1 -0
  71. package/dist/cjs/components/data-table-dialog/index.js +93 -0
  72. package/dist/cjs/components/error-check-smart-tag/index.d.ts +27 -0
  73. package/dist/cjs/components/error-check-smart-tag/index.d.ts.map +1 -0
  74. package/dist/cjs/components/error-check-smart-tag/index.js +39 -0
  75. package/dist/cjs/components/forecast-sheet-dialog/index.d.ts +26 -0
  76. package/dist/cjs/components/forecast-sheet-dialog/index.d.ts.map +1 -0
  77. package/dist/cjs/components/forecast-sheet-dialog/index.js +92 -0
  78. package/dist/cjs/components/paste-special-dialog/index.d.ts +3 -3
  79. package/dist/cjs/components/paste-special-dialog/index.d.ts.map +1 -1
  80. package/dist/cjs/components/paste-special-dialog/index.js +61 -23
  81. package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts +57 -0
  82. package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts.map +1 -0
  83. package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.js +196 -0
  84. package/dist/cjs/components/protect-sheet-dialog/constants.d.ts +3 -0
  85. package/dist/cjs/components/protect-sheet-dialog/constants.d.ts.map +1 -0
  86. package/dist/cjs/components/protect-sheet-dialog/constants.js +5 -0
  87. package/dist/cjs/components/protect-sheet-dialog/index.d.ts +2 -2
  88. package/dist/cjs/components/protect-sheet-dialog/index.d.ts.map +1 -1
  89. package/dist/cjs/components/protect-sheet-dialog/index.js +5 -3
  90. package/dist/cjs/components/scenario-manager-dialog/index.d.ts +51 -0
  91. package/dist/cjs/components/scenario-manager-dialog/index.d.ts.map +1 -0
  92. package/dist/cjs/components/scenario-manager-dialog/index.js +257 -0
  93. package/dist/cjs/components/selection/index.d.ts +1 -1
  94. package/dist/cjs/components/selection/index.d.ts.map +1 -1
  95. package/dist/cjs/components/selection/index.js +9 -4
  96. package/dist/cjs/components/selection/paste-menu.d.ts +14 -1
  97. package/dist/cjs/components/selection/paste-menu.d.ts.map +1 -1
  98. package/dist/cjs/components/selection/paste-menu.js +78 -6
  99. package/dist/cjs/components/selection/paste-options.d.ts +28 -0
  100. package/dist/cjs/components/selection/paste-options.d.ts.map +1 -0
  101. package/dist/cjs/components/selection/paste-options.js +70 -0
  102. package/dist/cjs/components/selection/types.d.ts +12 -1
  103. package/dist/cjs/components/selection/types.d.ts.map +1 -1
  104. package/dist/cjs/components/selection-drop-menu/index.d.ts +18 -0
  105. package/dist/cjs/components/selection-drop-menu/index.d.ts.map +1 -0
  106. package/dist/cjs/components/selection-drop-menu/index.js +62 -0
  107. package/dist/cjs/components/solver-dialog/index.d.ts +57 -0
  108. package/dist/cjs/components/solver-dialog/index.d.ts.map +1 -0
  109. package/dist/cjs/components/solver-dialog/index.js +204 -0
  110. package/dist/cjs/components/toolbar/sparkline-actions.d.ts +3 -2
  111. package/dist/cjs/components/toolbar/sparkline-actions.d.ts.map +1 -1
  112. package/dist/cjs/components/toolbar/sparkline-actions.js +6 -2
  113. package/dist/cjs/components/toolbar/table-style-selector.d.ts.map +1 -1
  114. package/dist/cjs/components/toolbar/table-style-selector.js +33 -2
  115. package/dist/cjs/config.d.ts +5 -4
  116. package/dist/cjs/config.d.ts.map +1 -1
  117. package/dist/cjs/config.js +13 -9
  118. package/dist/cjs/helpers.d.ts +5 -0
  119. package/dist/cjs/helpers.d.ts.map +1 -1
  120. package/dist/cjs/helpers.js +8 -4
  121. package/dist/cjs/hooks/use-cell-renderer.d.ts +12 -1
  122. package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
  123. package/dist/cjs/hooks/use-cell-renderer.js +6 -3
  124. package/dist/cjs/hooks/use-copy-paste-cut.d.ts +36 -2
  125. package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
  126. package/dist/cjs/hooks/use-copy-paste-cut.js +131 -5
  127. package/dist/cjs/hooks/use-editable.d.ts +6 -0
  128. package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
  129. package/dist/cjs/hooks/use-editor-submit.d.ts +45 -3
  130. package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
  131. package/dist/cjs/hooks/use-editor-submit.js +91 -7
  132. package/dist/cjs/hooks/use-keyboard-handler.d.ts +5 -1
  133. package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
  134. package/dist/cjs/hooks/use-keyboard-handler.js +10 -1
  135. package/dist/cjs/hooks/use-selection-drag-copy.d.ts +55 -0
  136. package/dist/cjs/hooks/use-selection-drag-copy.d.ts.map +1 -0
  137. package/dist/cjs/hooks/use-selection-drag-copy.js +274 -0
  138. package/dist/cjs/hooks/use-selection-renderer.d.ts +8 -1
  139. package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
  140. package/dist/cjs/hooks/use-selection-renderer.js +7 -2
  141. package/dist/cjs/hooks/use-selection.d.ts +59 -1
  142. package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
  143. package/dist/cjs/hooks/use-selection.js +270 -61
  144. package/dist/cjs/index.d.ts +6 -1
  145. package/dist/cjs/index.d.ts.map +1 -1
  146. package/dist/cjs/index.js +5 -0
  147. package/dist/cjs/release-date.js +1 -1
  148. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  149. package/dist/cjs/types.d.ts +50 -1
  150. package/dist/cjs/types.d.ts.map +1 -1
  151. package/dist/esm/api/autocomplete.d.ts +42 -0
  152. package/dist/esm/api/autocomplete.d.ts.map +1 -0
  153. package/dist/esm/api/autocomplete.js +91 -0
  154. package/dist/esm/api/banded-ranges.d.ts.map +1 -1
  155. package/dist/esm/api/banded-ranges.js +52 -2
  156. package/dist/esm/api/error-checking.d.ts +82 -0
  157. package/dist/esm/api/error-checking.d.ts.map +1 -0
  158. package/dist/esm/api/error-checking.js +156 -0
  159. package/dist/esm/api/move-overwrite.d.ts +8 -2
  160. package/dist/esm/api/move-overwrite.d.ts.map +1 -1
  161. package/dist/esm/api/move-overwrite.js +17 -2
  162. package/dist/esm/api/selections.d.ts +2 -2
  163. package/dist/esm/api/validation.d.ts +39 -1
  164. package/dist/esm/api/validation.d.ts.map +1 -1
  165. package/dist/esm/api/validation.js +70 -0
  166. package/dist/esm/atoms/cell-input-context.atom.d.ts +4 -1
  167. package/dist/esm/atoms/cell-input-context.atom.d.ts.map +1 -1
  168. package/dist/esm/atoms/enter-key-direction.atom.d.ts +11 -0
  169. package/dist/esm/atoms/enter-key-direction.atom.d.ts.map +1 -0
  170. package/dist/esm/atoms/enter-key-direction.atom.js +8 -0
  171. package/dist/esm/atoms/index.d.ts +1 -0
  172. package/dist/esm/atoms/index.d.ts.map +1 -1
  173. package/dist/esm/atoms/index.js +1 -0
  174. package/dist/esm/atoms/paste-menu.atom.d.ts +22 -0
  175. package/dist/esm/atoms/paste-menu.atom.d.ts.map +1 -1
  176. package/dist/esm/atoms/paste-menu.atom.js +10 -1
  177. package/dist/esm/atoms/pick-list.atom.d.ts +15 -0
  178. package/dist/esm/atoms/pick-list.atom.d.ts.map +1 -0
  179. package/dist/esm/atoms/pick-list.atom.js +3 -0
  180. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  181. package/dist/esm/components/canvas-grid/index.js +239 -13
  182. package/dist/esm/components/canvas-grid/typings.d.ts +96 -11
  183. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  184. package/dist/esm/components/cell/alignment.d.ts +25 -0
  185. package/dist/esm/components/cell/alignment.d.ts.map +1 -1
  186. package/dist/esm/components/cell/alignment.js +33 -0
  187. package/dist/esm/components/cell/cell-background.d.ts +16 -0
  188. package/dist/esm/components/cell/cell-background.d.ts.map +1 -1
  189. package/dist/esm/components/cell/cell-background.js +106 -36
  190. package/dist/esm/components/cell/cell-text-runs.d.ts +12 -5
  191. package/dist/esm/components/cell/cell-text-runs.d.ts.map +1 -1
  192. package/dist/esm/components/cell/cell-text-runs.js +17 -22
  193. package/dist/esm/components/cell/index.d.ts.map +1 -1
  194. package/dist/esm/components/cell/index.js +25 -20
  195. package/dist/esm/components/cell/typings.d.ts +9 -0
  196. package/dist/esm/components/cell/typings.d.ts.map +1 -1
  197. package/dist/esm/components/cell-editor/helpers.d.ts +22 -2
  198. package/dist/esm/components/cell-editor/helpers.d.ts.map +1 -1
  199. package/dist/esm/components/cell-editor/helpers.js +25 -7
  200. package/dist/esm/components/cell-editor/index.d.ts +7 -1
  201. package/dist/esm/components/cell-editor/index.d.ts.map +1 -1
  202. package/dist/esm/components/cell-editor/index.js +80 -9
  203. package/dist/esm/components/cell-indicator/index.d.ts +41 -0
  204. package/dist/esm/components/cell-indicator/index.d.ts.map +1 -0
  205. package/dist/esm/components/cell-indicator/index.js +76 -0
  206. package/dist/esm/components/cell-input/cell-input.d.ts +10 -2
  207. package/dist/esm/components/cell-input/cell-input.d.ts.map +1 -1
  208. package/dist/esm/components/cell-input/cell-input.js +5 -3
  209. package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  210. package/dist/esm/components/cell-input/formula-bar-cell-input.js +9 -2
  211. package/dist/esm/components/cell-structured/sparkline-math.d.ts +27 -1
  212. package/dist/esm/components/cell-structured/sparkline-math.d.ts.map +1 -1
  213. package/dist/esm/components/cell-structured/sparkline-math.js +35 -0
  214. package/dist/esm/components/cell-structured/sparkline.d.ts +1 -1
  215. package/dist/esm/components/cell-structured/sparkline.d.ts.map +1 -1
  216. package/dist/esm/components/cell-structured/sparkline.js +34 -88
  217. package/dist/esm/components/cell-structured/types.d.ts +6 -0
  218. package/dist/esm/components/cell-structured/types.d.ts.map +1 -1
  219. package/dist/esm/components/data-table-dialog/index.d.ts +22 -0
  220. package/dist/esm/components/data-table-dialog/index.d.ts.map +1 -0
  221. package/dist/esm/components/data-table-dialog/index.js +75 -0
  222. package/dist/esm/components/error-check-smart-tag/index.d.ts +27 -0
  223. package/dist/esm/components/error-check-smart-tag/index.d.ts.map +1 -0
  224. package/dist/esm/components/error-check-smart-tag/index.js +33 -0
  225. package/dist/esm/components/forecast-sheet-dialog/index.d.ts +26 -0
  226. package/dist/esm/components/forecast-sheet-dialog/index.d.ts.map +1 -0
  227. package/dist/esm/components/forecast-sheet-dialog/index.js +83 -0
  228. package/dist/esm/components/paste-special-dialog/index.d.ts +3 -3
  229. package/dist/esm/components/paste-special-dialog/index.d.ts.map +1 -1
  230. package/dist/esm/components/paste-special-dialog/index.js +58 -23
  231. package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts +57 -0
  232. package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts.map +1 -0
  233. package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.js +177 -0
  234. package/dist/esm/components/protect-sheet-dialog/constants.d.ts +3 -0
  235. package/dist/esm/components/protect-sheet-dialog/constants.d.ts.map +1 -0
  236. package/dist/esm/components/protect-sheet-dialog/constants.js +2 -0
  237. package/dist/esm/components/protect-sheet-dialog/index.d.ts +2 -2
  238. package/dist/esm/components/protect-sheet-dialog/index.d.ts.map +1 -1
  239. package/dist/esm/components/protect-sheet-dialog/index.js +3 -2
  240. package/dist/esm/components/scenario-manager-dialog/index.d.ts +51 -0
  241. package/dist/esm/components/scenario-manager-dialog/index.d.ts.map +1 -0
  242. package/dist/esm/components/scenario-manager-dialog/index.js +213 -0
  243. package/dist/esm/components/selection/index.d.ts +1 -1
  244. package/dist/esm/components/selection/index.d.ts.map +1 -1
  245. package/dist/esm/components/selection/index.js +9 -4
  246. package/dist/esm/components/selection/paste-menu.d.ts +14 -1
  247. package/dist/esm/components/selection/paste-menu.d.ts.map +1 -1
  248. package/dist/esm/components/selection/paste-menu.js +76 -8
  249. package/dist/esm/components/selection/paste-options.d.ts +28 -0
  250. package/dist/esm/components/selection/paste-options.d.ts.map +1 -0
  251. package/dist/esm/components/selection/paste-options.js +62 -0
  252. package/dist/esm/components/selection/types.d.ts +12 -1
  253. package/dist/esm/components/selection/types.d.ts.map +1 -1
  254. package/dist/esm/components/selection-drop-menu/index.d.ts +18 -0
  255. package/dist/esm/components/selection-drop-menu/index.d.ts.map +1 -0
  256. package/dist/esm/components/selection-drop-menu/index.js +56 -0
  257. package/dist/esm/components/solver-dialog/index.d.ts +57 -0
  258. package/dist/esm/components/solver-dialog/index.d.ts.map +1 -0
  259. package/dist/esm/components/solver-dialog/index.js +176 -0
  260. package/dist/esm/components/toolbar/sparkline-actions.d.ts +3 -2
  261. package/dist/esm/components/toolbar/sparkline-actions.d.ts.map +1 -1
  262. package/dist/esm/components/toolbar/sparkline-actions.js +6 -2
  263. package/dist/esm/components/toolbar/table-style-selector.d.ts.map +1 -1
  264. package/dist/esm/components/toolbar/table-style-selector.js +29 -3
  265. package/dist/esm/config.d.ts +5 -4
  266. package/dist/esm/config.d.ts.map +1 -1
  267. package/dist/esm/config.js +12 -8
  268. package/dist/esm/helpers.d.ts +5 -0
  269. package/dist/esm/helpers.d.ts.map +1 -1
  270. package/dist/esm/helpers.js +8 -4
  271. package/dist/esm/hooks/use-cell-renderer.d.ts +12 -1
  272. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
  273. package/dist/esm/hooks/use-cell-renderer.js +5 -2
  274. package/dist/esm/hooks/use-copy-paste-cut.d.ts +36 -2
  275. package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
  276. package/dist/esm/hooks/use-copy-paste-cut.js +117 -6
  277. package/dist/esm/hooks/use-editable.d.ts +6 -0
  278. package/dist/esm/hooks/use-editable.d.ts.map +1 -1
  279. package/dist/esm/hooks/use-editor-submit.d.ts +45 -3
  280. package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
  281. package/dist/esm/hooks/use-editor-submit.js +81 -6
  282. package/dist/esm/hooks/use-keyboard-handler.d.ts +5 -1
  283. package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
  284. package/dist/esm/hooks/use-keyboard-handler.js +10 -1
  285. package/dist/esm/hooks/use-selection-drag-copy.d.ts +55 -0
  286. package/dist/esm/hooks/use-selection-drag-copy.d.ts.map +1 -0
  287. package/dist/esm/hooks/use-selection-drag-copy.js +245 -0
  288. package/dist/esm/hooks/use-selection-renderer.d.ts +8 -1
  289. package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
  290. package/dist/esm/hooks/use-selection-renderer.js +7 -2
  291. package/dist/esm/hooks/use-selection.d.ts +59 -1
  292. package/dist/esm/hooks/use-selection.d.ts.map +1 -1
  293. package/dist/esm/hooks/use-selection.js +245 -52
  294. package/dist/esm/index.d.ts +6 -1
  295. package/dist/esm/index.d.ts.map +1 -1
  296. package/dist/esm/index.js +5 -0
  297. package/dist/esm/release-date.js +1 -1
  298. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  299. package/dist/esm/types.d.ts +50 -1
  300. package/dist/esm/types.d.ts.map +1 -1
  301. package/dist/spreadsheet.min.css +1 -1
  302. package/package.json +6 -5
  303. package/dist/cjs/components/cell-error/index.d.ts +0 -14
  304. package/dist/cjs/components/cell-error/index.d.ts.map +0 -1
  305. package/dist/cjs/components/cell-error/index.js +0 -24
  306. package/dist/esm/components/cell-error/index.d.ts +0 -14
  307. package/dist/esm/components/cell-error/index.d.ts.map +0 -1
  308. package/dist/esm/components/cell-error/index.js +0 -18
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.clampToExtents = exports.sparklineGroupAxisFor = exports.sparklineGroupAxisExtents = exports.resolveSparklineExtents = exports.resolveSparklineSeries = void 0;
3
+ exports.resolveDefaultSparklineColors = exports.OFFICE_DEFAULT_SPARKLINE_COLORS = exports.EXCEL_DEFAULT_SPARKLINE_STYLE = exports.clampToExtents = exports.sparklineGroupAxisFor = exports.sparklineGroupAxisExtents = exports.resolveSparklineExtents = exports.resolveSparklineSeries = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var isNumber = function (item) {
6
6
  return typeof item === "number" && !isNaN(item);
@@ -197,3 +197,50 @@ exports.sparklineGroupAxisFor = sparklineGroupAxisFor;
197
197
  */
198
198
  var clampToExtents = function (value, min, max) { return Math.min(Math.max(value, min), max); };
199
199
  exports.clampToExtents = clampToExtents;
200
+ /**
201
+ * Excel's Sparkline Style 1, what Excel gives every new sparkline group: Accent 1 darker 50% for the
202
+ * series and markers, Accent 2 for negative points, Accent 1 for high/low, Accent 1 lighter 40% for
203
+ * first/last. Theme references, so they resolve through the workbook's theme.
204
+ */
205
+ exports.EXCEL_DEFAULT_SPARKLINE_STYLE = {
206
+ series: { theme: 4, tint: -0.499984740745262 },
207
+ negative: { theme: 5 },
208
+ markers: { theme: 4, tint: -0.499984740745262 },
209
+ high: { theme: 4 },
210
+ low: { theme: 4 },
211
+ first: { theme: 4, tint: 0.39997558519241921 },
212
+ last: { theme: 4, tint: 0.39997558519241921 },
213
+ };
214
+ /** Style 1 under the Office 2013–2022 theme (Accent 1 #4472C4, Accent 2 #ED7D31): the painter's
215
+ * fallback when no theme resolves it. */
216
+ exports.OFFICE_DEFAULT_SPARKLINE_COLORS = {
217
+ series: "#203864",
218
+ negative: "#ED7D31",
219
+ markers: "#203864",
220
+ high: "#4472C4",
221
+ low: "#4472C4",
222
+ first: "#8FAADC",
223
+ last: "#8FAADC",
224
+ };
225
+ /** Excel's default sparkline colours resolved through a theme (`resolve` maps a theme colour to CSS). */
226
+ var resolveDefaultSparklineColors = function (resolve) {
227
+ var e_6, _a;
228
+ var out = tslib_1.__assign({}, exports.OFFICE_DEFAULT_SPARKLINE_COLORS);
229
+ try {
230
+ for (var _b = tslib_1.__values(Object.keys(exports.EXCEL_DEFAULT_SPARKLINE_STYLE)), _c = _b.next(); !_c.done; _c = _b.next()) {
231
+ var key = _c.value;
232
+ var color = resolve(exports.EXCEL_DEFAULT_SPARKLINE_STYLE[key]);
233
+ if (color)
234
+ out[key] = color;
235
+ }
236
+ }
237
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
238
+ finally {
239
+ try {
240
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
241
+ }
242
+ finally { if (e_6) throw e_6.error; }
243
+ }
244
+ return out;
245
+ };
246
+ exports.resolveDefaultSparklineColors = resolveDefaultSparklineColors;
@@ -2,5 +2,5 @@ import type { SparkLineResult } from "@rowsncolumns/common-types";
2
2
  import React from "react";
3
3
  import type { StructuredResultProps } from "./types";
4
4
  export type SparklineProps = StructuredResultProps & SparkLineResult;
5
- export declare const Sparkline: ({ x, y, width, height, data, options, color, sparklineGroupAxis, }: SparklineProps) => React.JSX.Element;
5
+ export declare const Sparkline: ({ x, y, width, height, data, options, sparklineGroupAxis, sparklineDefaultColors: defaultColors, }: SparklineProps) => React.JSX.Element;
6
6
  //# sourceMappingURL=sparkline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sparkline.d.ts","sourceRoot":"","sources":["../../../../components/cell-structured/sparkline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGlE,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG,eAAe,CAAC;AAoBrE,eAAO,MAAM,SAAS,GAAI,oEASvB,cAAc,sBA8QhB,CAAC"}
1
+ {"version":3,"file":"sparkline.d.ts","sourceRoot":"","sources":["../../../../components/cell-structured/sparkline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGlE,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG,eAAe,CAAC;AAoBrE,eAAO,MAAM,SAAS,GAAI,oGASvB,cAAc,sBA4NhB,CAAC"}
@@ -18,17 +18,18 @@ var drawDiamond = function (ctx, x, y, size, fillColor) {
18
18
  ctx.fill();
19
19
  };
20
20
  var Sparkline = function (_a) {
21
- var x = _a.x, y = _a.y, width = _a.width, height = _a.height, data = _a.data, options = _a.options, color = _a.color, sparklineGroupAxis = _a.sparklineGroupAxis;
21
+ var x = _a.x, y = _a.y, width = _a.width, height = _a.height, data = _a.data, options = _a.options, sparklineGroupAxis = _a.sparklineGroupAxis, _b = _a.sparklineDefaultColors, defaultColors = _b === void 0 ? sparkline_math_1.OFFICE_DEFAULT_SPARKLINE_COLORS : _b;
22
22
  var sparkLineFunction = (0, react_2.useCallback)(function (ctx, shape) {
23
- var _a, _b, _c, _d, _e;
23
+ var _a, _b;
24
24
  // Guard against undefined data (formula not yet evaluated)
25
25
  if (!data || !Array.isArray(data)) {
26
26
  return;
27
27
  }
28
28
  var padding = 4;
29
29
  var paddingTop = 4;
30
- var lineColor = (_b = (_a = options === null || options === void 0 ? void 0 : options.color) !== null && _a !== void 0 ? _a : color) !== null && _b !== void 0 ? _b : "#000000";
31
- var fillColor = (_d = (_c = options === null || options === void 0 ? void 0 : options.color) !== null && _c !== void 0 ? _c : color) !== null && _d !== void 0 ? _d : "#000000";
30
+ // Excel paints the series in the group's colour, Style 1's when it has none — never the cell's.
31
+ var lineColor = (_a = options === null || options === void 0 ? void 0 : options.color) !== null && _a !== void 0 ? _a : defaultColors.series;
32
+ var fillColor = lineColor;
32
33
  var lineWidth = typeof (options === null || options === void 0 ? void 0 : options.lineweight) === "number" && options.lineweight > 0
33
34
  ? options.lineweight
34
35
  : 1;
@@ -39,13 +40,13 @@ var Sparkline = function (_a) {
39
40
  // options this compacts empties exactly like the legacy
40
41
  // `data.filter(isNumber)` path did.
41
42
  var slots = (0, sparkline_math_1.resolveSparklineSeries)(data, options);
42
- var type = (_e = options === null || options === void 0 ? void 0 : options.charttype) !== null && _e !== void 0 ? _e : "line";
43
+ var type = (_b = options === null || options === void 0 ? void 0 : options.charttype) !== null && _b !== void 0 ? _b : "line";
43
44
  var minColumnHeight = 1;
44
45
  // For winloss, we need to handle positive/negative differently
45
46
  var isWinLoss = type === "winloss";
46
47
  // Axis extents with Excel's manual-min/max semantics
47
48
  // (minaxistype/maxaxistype "custom" → manual value).
48
- var _f = (0, sparkline_math_1.resolveSparklineExtents)(slots, options, isWinLoss, sparklineGroupAxis), effectiveMin = _f.min, effectiveMax = _f.max;
49
+ var _c = (0, sparkline_math_1.resolveSparklineExtents)(slots, options, isWinLoss, sparklineGroupAxis), effectiveMin = _c.min, effectiveMax = _c.max;
49
50
  // Calculate scales. Gap/span slots keep their x position, so the
50
51
  // slot count (not the numeric count) drives the x scale.
51
52
  var xScale = (width - 2 * padding) / (slots.length - (type === "line" ? 1 : 0));
@@ -74,36 +75,28 @@ var Sparkline = function (_a) {
74
75
  var lastDataIndex = slots.reduce(function (m, slot) { return (slot.dataIndex > m ? slot.dataIndex : m); }, -1);
75
76
  // Store points for markers
76
77
  var points = [];
77
- // Per-column color resolution for "column" sparklines. Excel
78
- // highlights individual columns when `high`/`low`/`first`/`last`/
79
- // `negative` flags are on, painting the relevant column with its
80
- // dedicated color override. We compute the fill per column rather
81
- // than batching every rect into one fill so each column can have
82
- // its own color.
83
- var pickColumnColor = function (value, slotIndex, dataIndex) {
78
+ // Excel's point highlights: each of Negative / High / Low / First / Last Points colours its
79
+ // point (a column, a bar or a line marker) only while it is checked — none is by default.
80
+ var pointHighlight = function (value, slotIndex, dataIndex) {
84
81
  var _a, _b, _c, _d, _e;
85
- var isHigh = slotIndex === maxSlotIndex;
86
- var isLow = slotIndex === minSlotIndex;
87
- var isFirst = dataIndex === 0;
88
- var isLast = dataIndex >= 0 && dataIndex === lastDataIndex;
89
- var isNegative = value < 0;
90
- if ((options === null || options === void 0 ? void 0 : options.negative) && isNegative) {
91
- return (_a = options.colorNegative) !== null && _a !== void 0 ? _a : "#FF0000";
82
+ if ((options === null || options === void 0 ? void 0 : options.negative) && value < 0) {
83
+ return (_a = options.colorNegative) !== null && _a !== void 0 ? _a : defaultColors.negative;
92
84
  }
93
- if ((options === null || options === void 0 ? void 0 : options.high) && isHigh) {
94
- return (_b = options.colorHigh) !== null && _b !== void 0 ? _b : "#00B050";
85
+ if ((options === null || options === void 0 ? void 0 : options.high) && slotIndex === maxSlotIndex) {
86
+ return (_b = options.colorHigh) !== null && _b !== void 0 ? _b : defaultColors.high;
95
87
  }
96
- if ((options === null || options === void 0 ? void 0 : options.low) && isLow) {
97
- return (_c = options.colorLow) !== null && _c !== void 0 ? _c : "#FF0000";
88
+ if ((options === null || options === void 0 ? void 0 : options.low) && slotIndex === minSlotIndex) {
89
+ return (_c = options.colorLow) !== null && _c !== void 0 ? _c : defaultColors.low;
98
90
  }
99
- if ((options === null || options === void 0 ? void 0 : options.first) && isFirst) {
100
- return (_d = options.colorFirst) !== null && _d !== void 0 ? _d : fillColor;
91
+ if ((options === null || options === void 0 ? void 0 : options.first) && dataIndex === 0) {
92
+ return (_d = options.colorFirst) !== null && _d !== void 0 ? _d : defaultColors.first;
101
93
  }
102
- if ((options === null || options === void 0 ? void 0 : options.last) && isLast) {
103
- return (_e = options.colorLast) !== null && _e !== void 0 ? _e : fillColor;
94
+ if ((options === null || options === void 0 ? void 0 : options.last) && dataIndex >= 0 && dataIndex === lastDataIndex) {
95
+ return (_e = options.colorLast) !== null && _e !== void 0 ? _e : defaultColors.last;
104
96
  }
105
- return fillColor;
97
+ return undefined;
106
98
  };
99
+ var pickColumnColor = function (value, slotIndex, dataIndex) { var _a; return (_a = pointHighlight(value, slotIndex, dataIndex)) !== null && _a !== void 0 ? _a : fillColor; };
107
100
  // Draw the horizontal (zero) axis when requested via the `axis`
108
101
  // (displayXAxis) option. Only meaningful when zero falls inside
109
102
  // the vertical extents; winloss already anchors bars on zeroY.
@@ -133,7 +126,6 @@ var Sparkline = function (_a) {
133
126
  // straight across the gap.
134
127
  var penDown = false;
135
128
  slots.forEach(function (slot, index) {
136
- var _a, _b;
137
129
  var pointX = padding + index * xScale;
138
130
  if (slot.value == null) {
139
131
  // Empty slot: nothing painted. Gap breaks the line; span
@@ -177,21 +169,10 @@ var Sparkline = function (_a) {
177
169
  var columnX = pointX + (xScale - columnWidth) / 2;
178
170
  var barHeight = Math.abs(clamped) * yScale;
179
171
  var barY = clamped >= 0 ? zeroY - barHeight : zeroY;
180
- // Use different colors for positive/negative
181
- ctx.fillStyle =
182
- value >= 0
183
- ? (_a = options === null || options === void 0 ? void 0 : options.color) !== null && _a !== void 0 ? _a : "#00B050"
184
- : (_b = options === null || options === void 0 ? void 0 : options.colorNegative) !== null && _b !== void 0 ? _b : "#FF0000";
172
+ // Wins and losses both paint in the series colour; Negative Points (and the other
173
+ // point toggles) recolour their bars, as on a column sparkline.
174
+ ctx.fillStyle = pickColumnColor(value, index, slot.dataIndex);
185
175
  ctx.fillRect(columnX, barY, columnWidth, Math.max(barHeight, 2));
186
- // Store points for diamond markers
187
- var markerY = clamped >= 0 ? zeroY - barHeight : zeroY + barHeight;
188
- points.push({
189
- x: pointX + xScale / 2,
190
- y: markerY,
191
- value: value,
192
- slotIndex: index,
193
- dataIndex: slot.dataIndex,
194
- });
195
176
  }
196
177
  });
197
178
  // Stroke the line for 'line' type. Column sparklines are filled
@@ -199,58 +180,21 @@ var Sparkline = function (_a) {
199
180
  if (type === "line") {
200
181
  ctx.stroke();
201
182
  }
202
- // Draw markers - enabled by default for line sparklines, always for winloss
203
- // Can be disabled with markers: false
204
- var showMarkers = (options === null || options === void 0 ? void 0 : options.markers) !== false && (type === "line" || isWinLoss);
205
- if (showMarkers && points.length > 0) {
206
- var markerSize_1 = isWinLoss ? 4 : 3;
183
+ // Excel's markers are a line sparkline's: every point gets one only with "Markers" checked,
184
+ // and a checked point toggle marks its own point in its colour. Nothing by default.
185
+ if (type === "line") {
186
+ var markerSize_1 = 3;
207
187
  points.forEach(function (point) {
208
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
209
- var markerColor;
210
- // Determine marker color based on value and position.
211
- // First/last follow the data order (dataIndex), so under
212
- // `rtl` the "first" marker paints at the right edge.
213
- var isFirst = point.dataIndex === 0;
214
- var isLast = point.dataIndex >= 0 && point.dataIndex === lastDataIndex;
215
- var isHigh = point.slotIndex === maxSlotIndex;
216
- var isLow = point.slotIndex === minSlotIndex;
217
- var isNegative = point.value < 0;
218
- if (isWinLoss) {
219
- // Win/loss: green for positive, red for negative
220
- markerColor = isNegative
221
- ? (_a = options === null || options === void 0 ? void 0 : options.colorNegative) !== null && _a !== void 0 ? _a : "#FF0000"
222
- : (_c = (_b = options === null || options === void 0 ? void 0 : options.colorHigh) !== null && _b !== void 0 ? _b : options === null || options === void 0 ? void 0 : options.color) !== null && _c !== void 0 ? _c : "#00B050";
223
- }
224
- else {
225
- // Line sparkline: use high/low colors for min/max points
226
- if (isHigh && isLow) {
227
- // Same point is both high and low (single point or all same)
228
- markerColor = (_e = (_d = options === null || options === void 0 ? void 0 : options.colorHigh) !== null && _d !== void 0 ? _d : options === null || options === void 0 ? void 0 : options.color) !== null && _e !== void 0 ? _e : lineColor;
229
- }
230
- else if (isHigh) {
231
- markerColor = (_f = options === null || options === void 0 ? void 0 : options.colorHigh) !== null && _f !== void 0 ? _f : "#00B050";
232
- }
233
- else if (isLow) {
234
- markerColor = (_g = options === null || options === void 0 ? void 0 : options.colorLow) !== null && _g !== void 0 ? _g : "#FF0000";
235
- }
236
- else if (isFirst && (options === null || options === void 0 ? void 0 : options.colorFirst)) {
237
- markerColor = options.colorFirst;
238
- }
239
- else if (isLast && (options === null || options === void 0 ? void 0 : options.colorLast)) {
240
- markerColor = options.colorLast;
241
- }
242
- else if (isNegative) {
243
- markerColor = (_h = options === null || options === void 0 ? void 0 : options.colorNegative) !== null && _h !== void 0 ? _h : "#FF0000";
244
- }
245
- else {
246
- markerColor =
247
- (_k = (_j = options === null || options === void 0 ? void 0 : options.colorMarkers) !== null && _j !== void 0 ? _j : options === null || options === void 0 ? void 0 : options.color) !== null && _k !== void 0 ? _k : lineColor;
248
- }
188
+ var _a, _b;
189
+ var markerColor = (_a = pointHighlight(point.value, point.slotIndex, point.dataIndex)) !== null && _a !== void 0 ? _a : ((options === null || options === void 0 ? void 0 : options.markers)
190
+ ? (_b = options.colorMarkers) !== null && _b !== void 0 ? _b : defaultColors.markers
191
+ : undefined);
192
+ if (markerColor) {
193
+ drawDiamond(ctx, point.x, point.y, markerSize_1, markerColor);
249
194
  }
250
- drawDiamond(ctx, point.x, point.y, markerSize_1, markerColor);
251
195
  });
252
196
  }
253
- }, [data, options, color, sparklineGroupAxis]);
197
+ }, [data, options, sparklineGroupAxis, defaultColors]);
254
198
  return (react_1.default.createElement(react_konva_1.Shape, { x: x, y: y, width: width, height: height, sceneFunc: sparkLineFunction, listening: false }));
255
199
  };
256
200
  exports.Sparkline = Sparkline;
@@ -1,11 +1,17 @@
1
1
  import type { StructuredResult } from "@rowsncolumns/common-types";
2
2
  import type { CellProps } from "../cell/typings";
3
+ import type { SparklineDefaultColors } from "./sparkline-math";
3
4
  export type StructuredResultProps<S extends StructuredResult = StructuredResult> = Pick<CellProps<S>, "structuredValue" | "sparklineGroupAxis"> & {
4
5
  x: number;
5
6
  y: number;
6
7
  width: number;
7
8
  height: number;
8
9
  color?: string;
10
+ /**
11
+ * The colours a sparkline paints where its formula sets none: Excel's Style 1 through the
12
+ * workbook theme. Without it, Style 1 under the Office 2013–2022 theme.
13
+ */
14
+ sparklineDefaultColors?: SparklineDefaultColors;
9
15
  textX?: number;
10
16
  textY?: number;
11
17
  textWidth?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../components/cell-structured/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,MAAM,qBAAqB,CAC/B,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAC3C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,GAAG,oBAAoB,CAAC,GAAG;IACjE,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../components/cell-structured/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,MAAM,qBAAqB,CAC/B,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAC3C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,GAAG,oBAAoB,CAAC,GAAG;IACjE,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAEhD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import React from "react";
2
+ /** Excel's refusal for an empty dialog or a reference that is not one cell. */
3
+ export declare const DATA_TABLE_INPUT_MESSAGE = "Input cell reference is not valid.";
4
+ export type DataTableDialogProps = {
5
+ /** Controls visibility. */
6
+ open: boolean;
7
+ onOpenChange(open: boolean): void;
8
+ /**
9
+ * Creates the table over the current selection (formula row / column and
10
+ * input values included) with the given A1 input cells, either of which may
11
+ * be empty. Resolves to Excel's refusal message when the engine refused
12
+ * (e.g. "Cannot change part of a data table."), `undefined` on success.
13
+ */
14
+ onApply(rowInputCell: string | undefined, columnInputCell: string | undefined): Promise<string | undefined> | string | undefined;
15
+ };
16
+ /**
17
+ * Excel's Data ▸ What-If Analysis ▸ Data Table… dialog: Row input cell /
18
+ * Column input cell. One of them makes a one-variable table, both a
19
+ * two-variable table.
20
+ */
21
+ export declare const DataTableDialog: React.MemoExoticComponent<({ open, onOpenChange, onApply }: DataTableDialogProps) => React.JSX.Element>;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/data-table-dialog/index.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB,uCAAuC,CAAC;AAE7E,MAAM,MAAM,oBAAoB,GAAG;IACjC,2BAA2B;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC;;;;;OAKG;IACH,OAAO,CACL,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,eAAe,EAAE,MAAM,GAAG,SAAS,GAClC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;CACrD,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,eAAe,8DAA0C,oBAAoB,uBAoGxF,CAAC"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataTableDialog = exports.DATA_TABLE_INPUT_MESSAGE = 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
+ /** Excel's refusal for an empty dialog or a reference that is not one cell. */
10
+ exports.DATA_TABLE_INPUT_MESSAGE = "Input cell reference is not valid.";
11
+ var isCellReference = function (text) {
12
+ return /^\$?[A-Za-z]{1,3}\$?\d+$/.test(text.trim()) && (0, utils_1.addressToCell)(text.trim()) != null;
13
+ };
14
+ /**
15
+ * Excel's Data ▸ What-If Analysis ▸ Data Table… dialog: Row input cell /
16
+ * Column input cell. One of them makes a one-variable table, both a
17
+ * two-variable table.
18
+ */
19
+ exports.DataTableDialog = (0, react_1.memo)(function (_a) {
20
+ var open = _a.open, onOpenChange = _a.onOpenChange, onApply = _a.onApply;
21
+ var _b = tslib_1.__read((0, react_1.useState)(""), 2), rowInput = _b[0], setRowInput = _b[1];
22
+ var _c = tslib_1.__read((0, react_1.useState)(""), 2), columnInput = _c[0], setColumnInput = _c[1];
23
+ var _d = tslib_1.__read((0, react_1.useState)(undefined), 2), error = _d[0], setError = _d[1];
24
+ var _e = tslib_1.__read((0, react_1.useState)(false), 2), busy = _e[0], setBusy = _e[1];
25
+ (0, react_1.useEffect)(function () {
26
+ if (open) {
27
+ setRowInput("");
28
+ setColumnInput("");
29
+ setError(undefined);
30
+ setBusy(false);
31
+ }
32
+ }, [open]);
33
+ var submit = (0, react_1.useCallback)(function (event) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
34
+ var row, column, refusal;
35
+ return tslib_1.__generator(this, function (_a) {
36
+ switch (_a.label) {
37
+ case 0:
38
+ event.preventDefault();
39
+ row = rowInput.trim();
40
+ column = columnInput.trim();
41
+ if ((row === "" && column === "") ||
42
+ (row !== "" && !isCellReference(row)) ||
43
+ (column !== "" && !isCellReference(column))) {
44
+ setError(exports.DATA_TABLE_INPUT_MESSAGE);
45
+ return [2 /*return*/];
46
+ }
47
+ setBusy(true);
48
+ _a.label = 1;
49
+ case 1:
50
+ _a.trys.push([1, , 3, 4]);
51
+ return [4 /*yield*/, onApply(row === "" ? undefined : row.replace(/\$/g, "").toUpperCase(), column === "" ? undefined : column.replace(/\$/g, "").toUpperCase())];
52
+ case 2:
53
+ refusal = _a.sent();
54
+ if (refusal) {
55
+ setError(refusal);
56
+ return [2 /*return*/];
57
+ }
58
+ onOpenChange(false);
59
+ return [3 /*break*/, 4];
60
+ case 3:
61
+ setBusy(false);
62
+ return [7 /*endfinally*/];
63
+ case 4: return [2 /*return*/];
64
+ }
65
+ });
66
+ }); }, [rowInput, columnInput, onApply, onOpenChange]);
67
+ return (react_1.default.createElement(ui_1.Dialog, { open: open, onOpenChange: onOpenChange },
68
+ react_1.default.createElement(ui_1.DialogContent, { className: "w-[320px] max-w-[92vw] pointer-events-auto" },
69
+ react_1.default.createElement(ui_1.DialogTitle, null, "Data Table"),
70
+ react_1.default.createElement(ui_1.DialogDescription, null, "Substitute each value of the selection's first row and column into the input cells."),
71
+ react_1.default.createElement(ui_1.DialogCloseButton, { onClick: function () { return onOpenChange(false); } },
72
+ react_1.default.createElement(icons_1.Cross1Icon, null)),
73
+ react_1.default.createElement(ui_1.DialogBody, { className: "flex flex-col gap-3 font-system text-sm" },
74
+ react_1.default.createElement("form", { className: "flex flex-col gap-3", onSubmit: submit },
75
+ react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
76
+ "Row input cell:",
77
+ react_1.default.createElement(ui_1.Input, { autoFocus: true, value: rowInput, "aria-label": "Row input cell", onChange: function (e) {
78
+ setRowInput(e.target.value);
79
+ setError(undefined);
80
+ } })),
81
+ react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
82
+ "Column input cell:",
83
+ react_1.default.createElement(ui_1.Input, { value: columnInput, "aria-label": "Column input cell", onChange: function (e) {
84
+ setColumnInput(e.target.value);
85
+ setError(undefined);
86
+ } })),
87
+ error ? (react_1.default.createElement("div", { role: "alert", className: "text-xs text-rnc-destructive" }, error)) : null,
88
+ react_1.default.createElement(ui_1.Separator, null),
89
+ react_1.default.createElement("div", { className: "flex justify-end gap-2" },
90
+ react_1.default.createElement(ui_1.Button, { type: "button", variant: "outline", size: "sm", onClick: function () { return onOpenChange(false); } }, "Cancel"),
91
+ react_1.default.createElement(ui_1.Button, { type: "submit", size: "sm", disabled: busy }, "OK")))))));
92
+ });
93
+ exports.DataTableDialog.displayName = "DataTableDialog";
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ import { type ErrorCheckKind, type ErrorCheckOption } from "../../api/error-checking";
3
+ export type ErrorCheckSmartTagProps = {
4
+ /** The active cell's rectangle; the button sits beside it (left, or right in column A). */
5
+ x: number;
6
+ y: number;
7
+ width: number;
8
+ height: number;
9
+ kind: ErrorCheckKind;
10
+ /** The error value's name (`#VALUE!`) for a formula error. */
11
+ errorName?: string;
12
+ open: boolean;
13
+ onOpenChange(open: boolean): void;
14
+ onChooseOption(option: ErrorCheckOption): void;
15
+ };
16
+ /**
17
+ * Excel's error-checking smart tag: beside the active cell when that cell carries the green ◤.
18
+ * The menu names the error, then offers Convert to Number (numbers stored as text), Help on this
19
+ * Error, Ignore Error, Edit in Formula Bar and Error Checking Options. Alt+Shift+F10 opens it
20
+ * ("Alt+Shift+F10: displays the menu or message for an Error Checking button" —
21
+ * https://support.microsoft.com/en-us/office/keyboard-shortcuts-in-excel-1798d9d5-842a-42b8-9c99-9b7213f0040f).
22
+ */
23
+ export declare const ErrorCheckSmartTag: {
24
+ ({ x, y, width, kind, errorName, open, onOpenChange, onChooseOption, }: ErrorCheckSmartTagProps): React.JSX.Element;
25
+ displayName: string;
26
+ };
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/error-check-smart-tag/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,uBAAuB,GAAG;IACpC,2FAA2F;IAC3F,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,cAAc,CAAC;IACrB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAChD,CAAC;AAYF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB;4EAS5B,uBAAuB;;CAgDzB,CAAC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorCheckSmartTag = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var ui_1 = require("@rowsncolumns/ui");
6
+ var react_1 = tslib_1.__importDefault(require("react"));
7
+ var error_checking_1 = require("../../api/error-checking");
8
+ var BUTTON_SIZE = 22;
9
+ /** Excel's error-checking button: a yellow diamond with an exclamation mark. */
10
+ var WarningIcon = function () { return (react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 24 24", "aria-hidden": "true" },
11
+ react_1.default.createElement("path", { d: "M12 1.5 22.5 12 12 22.5 1.5 12z", fill: "#F2C811", stroke: "#8A6D00", strokeWidth: "1" }),
12
+ react_1.default.createElement("path", { d: "M11 6.5h2v8h-2zM11 16.5h2v2h-2z", fill: "#1F1F1F" }))); };
13
+ /**
14
+ * Excel's error-checking smart tag: beside the active cell when that cell carries the green ◤.
15
+ * The menu names the error, then offers Convert to Number (numbers stored as text), Help on this
16
+ * Error, Ignore Error, Edit in Formula Bar and Error Checking Options. Alt+Shift+F10 opens it
17
+ * ("Alt+Shift+F10: displays the menu or message for an Error Checking button" —
18
+ * https://support.microsoft.com/en-us/office/keyboard-shortcuts-in-excel-1798d9d5-842a-42b8-9c99-9b7213f0040f).
19
+ */
20
+ var ErrorCheckSmartTag = function (_a) {
21
+ var x = _a.x, y = _a.y, width = _a.width, kind = _a.kind, errorName = _a.errorName, open = _a.open, onOpenChange = _a.onOpenChange, onChooseOption = _a.onChooseOption;
22
+ var left = x >= BUTTON_SIZE + 2 ? x - BUTTON_SIZE - 2 : x + width + 2;
23
+ return (react_1.default.createElement("div", { className: "absolute pointer-events-auto flex items-start justify-start", style: { left: left, top: y }, onMouseDown: function (e) { return e.stopPropagation(); }, "data-testid": "error-check-smart-tag" },
24
+ react_1.default.createElement(ui_1.DropdownMenu, { modal: false, open: open, onOpenChange: onOpenChange },
25
+ react_1.default.createElement(ui_1.DropdownMenuTrigger, { asChild: true },
26
+ react_1.default.createElement(ui_1.IconButton, { tooltip: "Error Checking", "aria-label": "Error Checking", className: "shadow-sm bg-rnc-background border-rnc-border border border-solid rounded-md" },
27
+ react_1.default.createElement(WarningIcon, null))),
28
+ react_1.default.createElement(ui_1.DropdownMenuPortal, null,
29
+ react_1.default.createElement(ui_1.DropdownMenuContent, { align: "start", onCloseAutoFocus: function (event) { return event.preventDefault(); } },
30
+ react_1.default.createElement(ui_1.DropdownMenuLabel, null, (0, error_checking_1.getErrorCheckTitle)(kind, errorName)),
31
+ kind === "numberStoredAsText" ? (react_1.default.createElement(ui_1.DropdownMenuItem, { onSelect: function () { return onChooseOption("convertToNumber"); } }, "Convert to Number")) : null,
32
+ react_1.default.createElement(ui_1.DropdownMenuItem, { onSelect: function () { return onChooseOption("help"); } }, "Help on this Error"),
33
+ react_1.default.createElement(ui_1.DropdownMenuItem, { onSelect: function () { return onChooseOption("ignore"); } }, "Ignore Error"),
34
+ react_1.default.createElement(ui_1.DropdownMenuItem, { onSelect: function () { return onChooseOption("editInFormulaBar"); } }, "Edit in Formula Bar"),
35
+ react_1.default.createElement(ui_1.DropdownMenuSeparator, null),
36
+ react_1.default.createElement(ui_1.DropdownMenuItem, { onSelect: function () { return onChooseOption("options"); } }, "Error Checking Options\u2026"))))));
37
+ };
38
+ exports.ErrorCheckSmartTag = ErrorCheckSmartTag;
39
+ exports.ErrorCheckSmartTag.displayName = "ErrorCheckSmartTag";
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ /** What the dialog asks for (the `create-forecast-sheet` command's options). */
3
+ export type ForecastSheetOptions = {
4
+ chartType: "line" | "column";
5
+ /** Forecast End as typed (a number or a date the host parses). */
6
+ forecastEnd?: string;
7
+ /** Fraction, e.g. 0.95; 0 = no confidence bounds. */
8
+ confidenceInterval: number;
9
+ /** `undefined` = detect automatically. */
10
+ seasonality?: number;
11
+ };
12
+ export type ForecastSheetDialogProps = {
13
+ open: boolean;
14
+ onOpenChange(open: boolean): void;
15
+ /** Default Forecast End shown in the field (the host's suggestion), optional. */
16
+ initialForecastEnd?: string;
17
+ /** Creates the sheet; resolves to Excel's refusal message, or `undefined` once done. */
18
+ onCreate(options: ForecastSheetOptions): Promise<string | undefined> | string | undefined;
19
+ };
20
+ /**
21
+ * Excel's Create Forecast Worksheet dialog: Line or Column chart, Forecast
22
+ * End, and the Options — Confidence Interval and Seasonality (automatic or
23
+ * set manually). The timeline and values are the host's selection.
24
+ */
25
+ export declare const ForecastSheetDialog: React.MemoExoticComponent<({ open, onOpenChange, initialForecastEnd, onCreate }: ForecastSheetDialogProps) => React.JSX.Element>;
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/forecast-sheet-dialog/index.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,gFAAgF;AAChF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC7B,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wFAAwF;IACxF,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;CAC3F,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,mFACyB,wBAAwB,uBA6HhF,CAAC"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ForecastSheetDialog = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var icons_1 = require("@rowsncolumns/icons");
6
+ var ui_1 = require("@rowsncolumns/ui");
7
+ var react_1 = tslib_1.__importStar(require("react"));
8
+ /**
9
+ * Excel's Create Forecast Worksheet dialog: Line or Column chart, Forecast
10
+ * End, and the Options — Confidence Interval and Seasonality (automatic or
11
+ * set manually). The timeline and values are the host's selection.
12
+ */
13
+ exports.ForecastSheetDialog = (0, react_1.memo)(function (_a) {
14
+ var open = _a.open, onOpenChange = _a.onOpenChange, initialForecastEnd = _a.initialForecastEnd, onCreate = _a.onCreate;
15
+ var _b = tslib_1.__read((0, react_1.useState)("line"), 2), chartType = _b[0], setChartType = _b[1];
16
+ var _c = tslib_1.__read((0, react_1.useState)(initialForecastEnd !== null && initialForecastEnd !== void 0 ? initialForecastEnd : ""), 2), end = _c[0], setEnd = _c[1];
17
+ var _d = tslib_1.__read((0, react_1.useState)(true), 2), withInterval = _d[0], setWithInterval = _d[1];
18
+ var _e = tslib_1.__read((0, react_1.useState)("95"), 2), interval = _e[0], setInterval = _e[1];
19
+ var _f = tslib_1.__read((0, react_1.useState)(true), 2), autoSeason = _f[0], setAutoSeason = _f[1];
20
+ var _g = tslib_1.__read((0, react_1.useState)(""), 2), season = _g[0], setSeason = _g[1];
21
+ var _h = tslib_1.__read((0, react_1.useState)(undefined), 2), error = _h[0], setError = _h[1];
22
+ (0, react_1.useEffect)(function () {
23
+ if (open) {
24
+ setEnd(initialForecastEnd !== null && initialForecastEnd !== void 0 ? initialForecastEnd : "");
25
+ setError(undefined);
26
+ }
27
+ // eslint-disable-next-line react-hooks/exhaustive-deps
28
+ }, [open]);
29
+ var submit = (0, react_1.useCallback)(function (event) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
30
+ var percent, length, refusal;
31
+ return tslib_1.__generator(this, function (_a) {
32
+ switch (_a.label) {
33
+ case 0:
34
+ event.preventDefault();
35
+ percent = Number(interval);
36
+ if (withInterval && !(percent > 0 && percent < 100)) {
37
+ setError("Confidence Interval must be between 0% and 100%.");
38
+ return [2 /*return*/];
39
+ }
40
+ length = Number(season);
41
+ if (!autoSeason && !(Number.isInteger(length) && length >= 0)) {
42
+ setError("Seasonality must be a whole number.");
43
+ return [2 /*return*/];
44
+ }
45
+ return [4 /*yield*/, onCreate(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({ chartType: chartType }, (end.trim() !== "" ? { forecastEnd: end.trim() } : {})), { confidenceInterval: withInterval ? percent / 100 : 0 }), (autoSeason ? {} : { seasonality: length })))];
46
+ case 1:
47
+ refusal = _a.sent();
48
+ if (refusal) {
49
+ setError(refusal);
50
+ return [2 /*return*/];
51
+ }
52
+ onOpenChange(false);
53
+ return [2 /*return*/];
54
+ }
55
+ });
56
+ }); }, [interval, withInterval, season, autoSeason, chartType, end, onCreate, onOpenChange]);
57
+ return (react_1.default.createElement(ui_1.Dialog, { open: open, onOpenChange: onOpenChange },
58
+ react_1.default.createElement(ui_1.DialogContent, { className: "w-[380px] max-w-[92vw] pointer-events-auto" },
59
+ react_1.default.createElement(ui_1.DialogTitle, null, "Create Forecast Worksheet"),
60
+ react_1.default.createElement(ui_1.DialogDescription, null, "Forecast the selected timeline and values on a new sheet with a chart."),
61
+ react_1.default.createElement(ui_1.DialogCloseButton, { onClick: function () { return onOpenChange(false); } },
62
+ react_1.default.createElement(icons_1.Cross1Icon, null)),
63
+ react_1.default.createElement(ui_1.DialogBody, { className: "flex flex-col gap-3 font-system text-sm" },
64
+ react_1.default.createElement("form", { className: "flex flex-col gap-3", onSubmit: submit },
65
+ react_1.default.createElement("div", { className: "flex items-center gap-3 text-xs" }, ["line", "column"].map(function (t) { return (react_1.default.createElement("label", { key: t, className: "flex items-center gap-1" },
66
+ react_1.default.createElement("input", { type: "radio", checked: chartType === t, onChange: function () { return setChartType(t); } }),
67
+ t === "line" ? "Line chart" : "Column chart")); })),
68
+ react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
69
+ "Forecast End:",
70
+ react_1.default.createElement(ui_1.Input, { autoFocus: true, "aria-label": "Forecast End", value: end, onChange: function (e) { return setEnd(e.target.value); } })),
71
+ react_1.default.createElement("div", { className: "flex items-center gap-2 text-xs" },
72
+ react_1.default.createElement("label", { className: "flex items-center gap-2" },
73
+ react_1.default.createElement("input", { type: "checkbox", checked: withInterval, onChange: function (e) { return setWithInterval(e.target.checked); } }),
74
+ "Confidence Interval"),
75
+ react_1.default.createElement(ui_1.Input, { className: "w-16", "aria-label": "Confidence Interval (%)", value: interval, disabled: !withInterval, onChange: function (e) { return setInterval(e.target.value); } }),
76
+ "%"),
77
+ react_1.default.createElement("div", { className: "flex flex-col gap-1 text-xs" },
78
+ "Seasonality",
79
+ react_1.default.createElement("label", { className: "flex items-center gap-2" },
80
+ react_1.default.createElement("input", { type: "radio", checked: autoSeason, onChange: function () { return setAutoSeason(true); } }),
81
+ "Detect Automatically"),
82
+ react_1.default.createElement("label", { className: "flex items-center gap-2" },
83
+ react_1.default.createElement("input", { type: "radio", checked: !autoSeason, onChange: function () { return setAutoSeason(false); } }),
84
+ "Set Manually",
85
+ react_1.default.createElement(ui_1.Input, { className: "w-16", "aria-label": "Season length", value: season, disabled: autoSeason, onChange: function (e) { return setSeason(e.target.value); } }))),
86
+ error ? (react_1.default.createElement("div", { role: "alert", className: "text-xs text-rnc-destructive" }, error)) : null,
87
+ react_1.default.createElement(ui_1.Separator, null),
88
+ react_1.default.createElement("div", { className: "flex justify-end gap-2" },
89
+ react_1.default.createElement(ui_1.Button, { type: "button", variant: "outline", size: "sm", onClick: function () { return onOpenChange(false); } }, "Cancel"),
90
+ react_1.default.createElement(ui_1.Button, { type: "submit", size: "sm" }, "Create")))))));
91
+ });
92
+ exports.ForecastSheetDialog.displayName = "ForecastSheetDialog";