@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
@@ -11,9 +11,9 @@ export type PasteSpecialDialogProps = {
11
11
  onApply(options: PasteSpecialOptions): void;
12
12
  };
13
13
  /**
14
- * Excel's Paste Special dialog: what to paste (all / formulas / values /
15
- * formats), an arithmetic operation against the destination, skip blanks and
16
- * transpose. Every choice composes into one `PasteSpecialOptions` request.
14
+ * Excel's Paste Special dialog: what to paste (Excel's twelve Paste choices),
15
+ * an arithmetic operation against the destination, skip blanks, transpose and
16
+ * Paste Link. Every choice composes into one `PasteSpecialOptions` request.
17
17
  */
18
18
  export declare const PasteSpecialDialog: React.MemoExoticComponent<({ open, onOpenChange, onApply }: PasteSpecialDialogProps) => React.JSX.Element>;
19
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/paste-special-dialog/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,OAAO,KAAK,EAEV,mBAAmB,EACpB,MAAM,gCAAgC,CAAC;AAoBxC,MAAM,MAAM,uBAAuB,GAAG;IACpC,2BAA2B;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC7C,CAAC;AAyCF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,8DACK,uBAAuB,uBA2F1D,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;CAclC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/paste-special-dialog/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAM3D,OAAO,KAAK,EAGV,mBAAmB,EACpB,MAAM,gCAAgC,CAAC;AA+CxC,MAAM,MAAM,uBAAuB,GAAG;IACpC,2BAA2B;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC7C,CAAC;AAoEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,8DACK,uBAAuB,uBAsG1D,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;CAclC,CAAC"}
@@ -5,12 +5,38 @@ var tslib_1 = require("tslib");
5
5
  var ui_1 = require("@rowsncolumns/ui");
6
6
  var react_1 = tslib_1.__importStar(require("react"));
7
7
  var paste_special_dialog_atom_1 = require("../../atoms/paste-special-dialog.atom");
8
- var PASTE_MODES = [
9
- { value: "all", label: "All" },
10
- { value: "formulas", label: "Formulas" },
11
- { value: "values", label: "Values" },
12
- { value: "formats", label: "Formats" },
8
+ /**
9
+ * Excel's Paste group, in its two columns (support.microsoft.com, "Paste
10
+ * special"): what the left column pastes, then the composites on the right.
11
+ */
12
+ var PASTE_MODE_COLUMNS = [
13
+ [
14
+ { value: "all", label: "All" },
15
+ { value: "formulas", label: "Formulas" },
16
+ { value: "values", label: "Values" },
17
+ { value: "formats", label: "Formats" },
18
+ { value: "commentsAndNotes", label: "Comments and Notes" },
19
+ { value: "validation", label: "Validation" },
20
+ ],
21
+ [
22
+ { value: "allUsingSourceTheme", label: "All using Source theme" },
23
+ { value: "allExceptBorders", label: "All except borders" },
24
+ { value: "columnWidths", label: "Column widths" },
25
+ { value: "formulasAndNumberFormats", label: "Formulas and number formats" },
26
+ { value: "valuesAndNumberFormats", label: "Values and number formats" },
27
+ {
28
+ value: "allMergingConditionalFormats",
29
+ label: "All merging conditional formats",
30
+ },
31
+ ],
13
32
  ];
33
+ /** The modes that never change destination values: Excel greys Operation out under them. */
34
+ var NO_OPERATION_MODES = new Set([
35
+ "formats",
36
+ "commentsAndNotes",
37
+ "validation",
38
+ "columnWidths",
39
+ ]);
14
40
  var OPERATIONS = [
15
41
  { value: "none", label: "None" },
16
42
  { value: "add", label: "Add" },
@@ -18,18 +44,22 @@ var OPERATIONS = [
18
44
  { value: "multiply", label: "Multiply" },
19
45
  { value: "divide", label: "Divide" },
20
46
  ];
47
+ var RadioOption = function (_a) {
48
+ var name = _a.name, option = _a.option, checked = _a.checked, disabled = _a.disabled, onChange = _a.onChange;
49
+ return (react_1.default.createElement("label", { className: "flex items-center gap-2 text-xs py-0.5 cursor-pointer" },
50
+ react_1.default.createElement("input", { type: "radio", name: name, value: option.value, checked: checked, disabled: disabled, onChange: function () { return onChange(option.value); } }),
51
+ option.label));
52
+ };
21
53
  var RadioGroup = function (_a) {
22
- var name = _a.name, legend = _a.legend, value = _a.value, options = _a.options, onChange = _a.onChange, disabled = _a.disabled;
54
+ var name = _a.name, legend = _a.legend, value = _a.value, columns = _a.columns, onChange = _a.onChange, disabled = _a.disabled;
23
55
  return (react_1.default.createElement("fieldset", { className: "flex flex-col gap-1 min-w-0 disabled:opacity-50", disabled: disabled },
24
56
  react_1.default.createElement("legend", { className: "text-xs font-medium mb-1" }, legend),
25
- options.map(function (option) { return (react_1.default.createElement("label", { key: option.value, className: "flex items-center gap-2 text-xs py-0.5 cursor-pointer" },
26
- react_1.default.createElement("input", { type: "radio", name: name, value: option.value, checked: value === option.value, disabled: disabled, onChange: function () { return onChange(option.value); } }),
27
- option.label)); })));
57
+ react_1.default.createElement("div", { className: "grid grid-flow-col auto-cols-fr gap-x-4" }, columns.map(function (column, index) { return (react_1.default.createElement("div", { key: index, className: "flex flex-col gap-1 min-w-0" }, column.map(function (option) { return (react_1.default.createElement(RadioOption, { key: option.value, name: name, option: option, checked: value === option.value, disabled: disabled, onChange: onChange })); }))); }))));
28
58
  };
29
59
  /**
30
- * Excel's Paste Special dialog: what to paste (all / formulas / values /
31
- * formats), an arithmetic operation against the destination, skip blanks and
32
- * transpose. Every choice composes into one `PasteSpecialOptions` request.
60
+ * Excel's Paste Special dialog: what to paste (Excel's twelve Paste choices),
61
+ * an arithmetic operation against the destination, skip blanks, transpose and
62
+ * Paste Link. Every choice composes into one `PasteSpecialOptions` request.
33
63
  */
34
64
  exports.PasteSpecialDialog = (0, react_1.memo)(function (_a) {
35
65
  var open = _a.open, onOpenChange = _a.onOpenChange, onApply = _a.onApply;
@@ -37,9 +67,10 @@ exports.PasteSpecialDialog = (0, react_1.memo)(function (_a) {
37
67
  var _c = tslib_1.__read((0, react_1.useState)("none"), 2), operation = _c[0], setOperation = _c[1];
38
68
  var _d = tslib_1.__read((0, react_1.useState)(false), 2), skipBlanks = _d[0], setSkipBlanks = _d[1];
39
69
  var _e = tslib_1.__read((0, react_1.useState)(false), 2), transpose = _e[0], setTranspose = _e[1];
40
- // Excel greys Operation out under Paste → Formats (a formats paste never
41
- // changes destination values); the choice is kept but not applied.
42
- var operationDisabled = paste === "formats";
70
+ // Excel greys Operation out under Formats, Comments and Notes, Validation
71
+ // and Column widths (none of them changes destination values); the choice
72
+ // is kept but not applied.
73
+ var operationDisabled = NO_OPERATION_MODES.has(paste);
43
74
  var commit = (0, react_1.useCallback)(function () {
44
75
  onApply({
45
76
  paste: paste,
@@ -57,15 +88,20 @@ exports.PasteSpecialDialog = (0, react_1.memo)(function (_a) {
57
88
  skipBlanks,
58
89
  transpose,
59
90
  ]);
91
+ // Excel's Paste Link button: reference formulas to the copied cells, in
92
+ // their orientation when Transpose is ticked.
93
+ var commitLink = (0, react_1.useCallback)(function () {
94
+ onApply({ link: true, transpose: transpose });
95
+ onOpenChange(false);
96
+ }, [onApply, onOpenChange, transpose]);
60
97
  return (react_1.default.createElement(ui_1.Dialog, { open: open, onOpenChange: onOpenChange, modal: true },
61
- react_1.default.createElement(ui_1.DialogContent, { className: "w-[380px] max-w-[92vw] pointer-events-auto" },
98
+ react_1.default.createElement(ui_1.DialogContent, { className: "w-[460px] max-w-[92vw] pointer-events-auto" },
62
99
  react_1.default.createElement(ui_1.DialogTitle, null, "Paste Special"),
63
100
  react_1.default.createElement(ui_1.DialogCloseButton, null),
64
101
  react_1.default.createElement(ui_1.DialogBody, { className: "flex flex-col gap-4" },
65
- react_1.default.createElement("div", { className: "grid grid-cols-2 gap-4" },
66
- react_1.default.createElement(RadioGroup, { name: "paste-special-paste", legend: "Paste", value: paste, options: PASTE_MODES, onChange: setPaste }),
67
- react_1.default.createElement(RadioGroup, { name: "paste-special-operation", legend: "Operation", value: operation, options: OPERATIONS, onChange: setOperation, disabled: operationDisabled })),
68
- react_1.default.createElement("div", { className: "flex flex-col gap-1" },
102
+ react_1.default.createElement(RadioGroup, { name: "paste-special-paste", legend: "Paste", value: paste, columns: PASTE_MODE_COLUMNS, onChange: setPaste }),
103
+ react_1.default.createElement(RadioGroup, { name: "paste-special-operation", legend: "Operation", value: operation, columns: [OPERATIONS.slice(0, 3), OPERATIONS.slice(3)], onChange: setOperation, disabled: operationDisabled }),
104
+ react_1.default.createElement("div", { className: "grid grid-cols-2 gap-x-4" },
69
105
  react_1.default.createElement("label", { className: "flex items-center gap-2 text-xs py-0.5 cursor-pointer" },
70
106
  react_1.default.createElement("input", { type: "checkbox", checked: skipBlanks, onChange: function (e) { return setSkipBlanks(e.target.checked); } }),
71
107
  "Skip blanks"),
@@ -73,9 +109,11 @@ exports.PasteSpecialDialog = (0, react_1.memo)(function (_a) {
73
109
  react_1.default.createElement("input", { type: "checkbox", checked: transpose, onChange: function (e) { return setTranspose(e.target.checked); } }),
74
110
  "Transpose")),
75
111
  react_1.default.createElement(ui_1.Separator, null),
76
- react_1.default.createElement("div", { className: "flex justify-end gap-2" },
77
- react_1.default.createElement(ui_1.Button, { variant: "outline", size: "sm", onClick: function () { return onOpenChange(false); } }, "Cancel"),
78
- react_1.default.createElement(ui_1.Button, { size: "sm", onClick: commit }, "OK"))))));
112
+ react_1.default.createElement("div", { className: "flex justify-between gap-2" },
113
+ react_1.default.createElement(ui_1.Button, { variant: "outline", size: "sm", onClick: commitLink }, "Paste Link"),
114
+ react_1.default.createElement("div", { className: "flex gap-2" },
115
+ react_1.default.createElement(ui_1.Button, { size: "sm", onClick: commit }, "OK"),
116
+ react_1.default.createElement(ui_1.Button, { variant: "outline", size: "sm", onClick: function () { return onOpenChange(false); } }, "Cancel")))))));
79
117
  });
80
118
  exports.PasteSpecialDialog.displayName = "PasteSpecialDialog";
81
119
  /**
@@ -0,0 +1,57 @@
1
+ import type { GridRange } from "@rowsncolumns/grid";
2
+ import React from "react";
3
+ import type { AllowEditRange } from "../../types";
4
+ /**
5
+ * Review ▸ Allow Edit Ranges (support.microsoft.com "Lock or unlock specific
6
+ * areas of a protected worksheet"): the sheet's titled ranges that stay
7
+ * editable once it is protected, with New / Modify / Delete and the
8
+ * New Range form (Title, Refers to cells, Range password).
9
+ */
10
+ /** The Range form's submission. `password` absent = unchanged (Modify). */
11
+ export type AllowEditRangeFormValue = {
12
+ title: string;
13
+ ranges: GridRange[];
14
+ password?: string;
15
+ };
16
+ /** Excel's text when "Refers to cells" is not a reference. */
17
+ export declare const INVALID_REFERENCE_MESSAGE = "The reference you typed is not valid.";
18
+ /** Excel's text for an empty or duplicate title. */
19
+ export declare const EMPTY_TITLE_MESSAGE = "Enter a title for the range.";
20
+ export declare const DUPLICATE_TITLE_MESSAGE = "The title you entered already exists. Enter a unique title.";
21
+ /** `$A$1:$B$2` per rectangle, joined with commas, as Excel shows "Refers to cells". */
22
+ export declare const rangesToReference: (ranges: GridRange[]) => string;
23
+ /**
24
+ * Parse "Refers to cells": `=$A$1:$B$2,D4` (sheet prefixes and `$` ignored).
25
+ * `null` when any part is not a cell or range reference.
26
+ */
27
+ export declare const referenceToRanges: (text: string) => GridRange[] | null;
28
+ export type AllowEditRangesDialogProps = {
29
+ open: boolean;
30
+ onOpenChange(open: boolean): void;
31
+ /** The active sheet's ranges (rnc engine `allowEditRanges` filtered to it). */
32
+ ranges: AllowEditRange[];
33
+ /** Excel disables the list while the sheet is protected. */
34
+ sheetProtected: boolean;
35
+ /** The current selection, offered as a New range's cells. */
36
+ defaultRanges?: GridRange[];
37
+ /** rnc engine `onAddAllowEditRange(sheetId, value)`. */
38
+ onAdd(value: AllowEditRangeFormValue): void;
39
+ /** rnc engine `onUpdateAllowEditRange(sheetId, title, value)`. */
40
+ onUpdate(title: string, value: AllowEditRangeFormValue): void;
41
+ /** rnc engine `onDeleteAllowEditRange(sheetId, title)`. */
42
+ onDelete(title: string): void;
43
+ /** The dialog's "Protect Sheet…" button: opens the host's Protect Sheet dialog. */
44
+ onProtectSheet?(): void;
45
+ };
46
+ export declare const AllowEditRangesDialog: React.MemoExoticComponent<({ open, onOpenChange, ranges, sheetProtected, defaultRanges, onAdd, onUpdate, onDelete, onProtectSheet, }: AllowEditRangesDialogProps) => React.JSX.Element>;
47
+ export type UnlockRangeDialogProps = {
48
+ open: boolean;
49
+ onOpenChange(open: boolean): void;
50
+ /** The range the user tried to edit. */
51
+ range?: AllowEditRange | null;
52
+ /** rnc engine `onUnlockAllowEditRange(sheetId, range.title, password)`. */
53
+ onConfirm(password: string): void;
54
+ };
55
+ /** Excel's Unlock Range prompt for a password-protected Allow Edit Range. */
56
+ export declare const UnlockRangeDialog: React.MemoExoticComponent<({ open, onOpenChange, range, onConfirm }: UnlockRangeDialogProps) => React.JSX.Element>;
57
+ //# sourceMappingURL=allow-edit-ranges-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allow-edit-ranges-dialog.d.ts","sourceRoot":"","sources":["../../../../components/protect-sheet-dialog/allow-edit-ranges-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAYpD,OAAO,KAAyB,MAAM,OAAO,CAAC;AAE9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD;;;;;GAKG;AAEH,2EAA2E;AAC3E,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,yBAAyB,0CAA0C,CAAC;AACjF,oDAAoD;AACpD,eAAO,MAAM,mBAAmB,iCAAiC,CAAC;AAClE,eAAO,MAAM,uBAAuB,gEAC2B,CAAC;AAEhE,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,GAAI,QAAQ,SAAS,EAAE,KAAG,MAexC,CAAC;AAEjB;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,SAAS,EAAE,GAAG,IAiB9D,CAAC;AA2HF,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,+EAA+E;IAC/E,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,4DAA4D;IAC5D,cAAc,EAAE,OAAO,CAAC;IACxB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;IAC5B,wDAAwD;IACxD,KAAK,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC5C,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC9D,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mFAAmF;IACnF,cAAc,CAAC,IAAI,IAAI,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,qBAAqB,wIAW7B,0BAA0B,uBAsI9B,CAAC;AAIF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,wCAAwC;IACxC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,2EAA2E;IAC3E,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,uEACe,sBAAsB,uBAoDlE,CAAC"}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnlockRangeDialog = exports.AllowEditRangesDialog = exports.referenceToRanges = exports.rangesToReference = exports.DUPLICATE_TITLE_MESSAGE = exports.EMPTY_TITLE_MESSAGE = exports.INVALID_REFERENCE_MESSAGE = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var ui_1 = require("@rowsncolumns/ui");
6
+ var utils_1 = require("@rowsncolumns/utils");
7
+ var react_1 = tslib_1.__importStar(require("react"));
8
+ var constants_1 = require("./constants");
9
+ /** Excel's text when "Refers to cells" is not a reference. */
10
+ exports.INVALID_REFERENCE_MESSAGE = "The reference you typed is not valid.";
11
+ /** Excel's text for an empty or duplicate title. */
12
+ exports.EMPTY_TITLE_MESSAGE = "Enter a title for the range.";
13
+ exports.DUPLICATE_TITLE_MESSAGE = "The title you entered already exists. Enter a unique title.";
14
+ /** `$A$1:$B$2` per rectangle, joined with commas, as Excel shows "Refers to cells". */
15
+ var rangesToReference = function (ranges) {
16
+ return "=".concat(ranges
17
+ .map(function (r) {
18
+ var from = (0, utils_1.cellToAddress)({ rowIndex: r.startRowIndex, columnIndex: r.startColumnIndex }, true, true);
19
+ var to = (0, utils_1.cellToAddress)({ rowIndex: r.endRowIndex, columnIndex: r.endColumnIndex }, true, true);
20
+ return from === to ? "".concat(from) : "".concat(from, ":").concat(to);
21
+ })
22
+ .join(","));
23
+ };
24
+ exports.rangesToReference = rangesToReference;
25
+ /**
26
+ * Parse "Refers to cells": `=$A$1:$B$2,D4` (sheet prefixes and `$` ignored).
27
+ * `null` when any part is not a cell or range reference.
28
+ */
29
+ var referenceToRanges = function (text) {
30
+ var e_1, _a;
31
+ var parts = text
32
+ .trim()
33
+ .replace(/^=/, "")
34
+ .split(/[,;]/)
35
+ .map(function (p) { return p.trim(); })
36
+ .filter(Boolean);
37
+ if (parts.length === 0)
38
+ return null;
39
+ var out = [];
40
+ try {
41
+ for (var parts_1 = tslib_1.__values(parts), parts_1_1 = parts_1.next(); !parts_1_1.done; parts_1_1 = parts_1.next()) {
42
+ var part = parts_1_1.value;
43
+ var bare = part.replace(/^.*!/, "").replace(/\$/g, "").toUpperCase();
44
+ if (!/^[A-Z]+\d+(:[A-Z]+\d+)?$/.test(bare))
45
+ return null;
46
+ var selection = (0, utils_1.addressToSelection)(bare);
47
+ if (!selection)
48
+ return null;
49
+ out.push(selection.range);
50
+ }
51
+ }
52
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
53
+ finally {
54
+ try {
55
+ if (parts_1_1 && !parts_1_1.done && (_a = parts_1.return)) _a.call(parts_1);
56
+ }
57
+ finally { if (e_1) throw e_1.error; }
58
+ }
59
+ return out;
60
+ };
61
+ exports.referenceToRanges = referenceToRanges;
62
+ var RangeForm = function (_a) {
63
+ var _b;
64
+ var heading = _a.heading, initial = _a.initial, defaultRanges = _a.defaultRanges, takenTitles = _a.takenTitles, onCancel = _a.onCancel, onSubmit = _a.onSubmit;
65
+ var _c = tslib_1.__read((0, react_1.useState)((_b = initial === null || initial === void 0 ? void 0 : initial.title) !== null && _b !== void 0 ? _b : "Range".concat(takenTitles.length + 1)), 2), title = _c[0], setTitle = _c[1];
66
+ var _d = tslib_1.__read((0, react_1.useState)(function () {
67
+ var _a;
68
+ var ranges = (_a = initial === null || initial === void 0 ? void 0 : initial.ranges) !== null && _a !== void 0 ? _a : defaultRanges;
69
+ return (ranges === null || ranges === void 0 ? void 0 : ranges.length) ? (0, exports.rangesToReference)(ranges) : "";
70
+ }), 2), reference = _d[0], setReference = _d[1];
71
+ var _e = tslib_1.__read((0, react_1.useState)(""), 2), password = _e[0], setPassword = _e[1];
72
+ var _f = tslib_1.__read((0, react_1.useState)(""), 2), confirm = _f[0], setConfirm = _f[1];
73
+ var _g = tslib_1.__read((0, react_1.useState)(null), 2), error = _g[0], setError = _g[1];
74
+ return (react_1.default.createElement("form", { "aria-label": heading, className: "flex flex-col gap-3", onSubmit: function (e) {
75
+ e.preventDefault();
76
+ var trimmed = title.trim();
77
+ if (!trimmed)
78
+ return setError(exports.EMPTY_TITLE_MESSAGE);
79
+ if (takenTitles.includes(trimmed.toLowerCase())) {
80
+ return setError(exports.DUPLICATE_TITLE_MESSAGE);
81
+ }
82
+ var ranges = (0, exports.referenceToRanges)(reference);
83
+ if (!ranges)
84
+ return setError(exports.INVALID_REFERENCE_MESSAGE);
85
+ if (password !== "" && password !== confirm) {
86
+ return setError(constants_1.CONFIRM_PASSWORD_MISMATCH);
87
+ }
88
+ onSubmit(tslib_1.__assign({ title: trimmed, ranges: ranges }, (password !== "" || !initial ? { password: password } : {})));
89
+ } },
90
+ react_1.default.createElement("p", { className: "text-xs font-semibold" }, heading),
91
+ react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
92
+ "Title:",
93
+ react_1.default.createElement(ui_1.Input, { value: title, onChange: function (e) {
94
+ setTitle(e.target.value);
95
+ setError(null);
96
+ }, "data-testid": "allow-edit-range-title" })),
97
+ react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
98
+ "Refers to cells:",
99
+ react_1.default.createElement(ui_1.Input, { value: reference, onChange: function (e) {
100
+ setReference(e.target.value);
101
+ setError(null);
102
+ }, "data-testid": "allow-edit-range-reference" })),
103
+ react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
104
+ "Range password:",
105
+ react_1.default.createElement(ui_1.Input, { type: "password", autoComplete: "new-password", value: password, placeholder: (initial === null || initial === void 0 ? void 0 : initial.hasPassword) ? "(unchanged)" : undefined, onChange: function (e) {
106
+ setPassword(e.target.value);
107
+ setError(null);
108
+ }, "data-testid": "allow-edit-range-password" })),
109
+ password !== "" && (react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
110
+ "Reenter password to proceed:",
111
+ react_1.default.createElement(ui_1.Input, { type: "password", autoComplete: "new-password", value: confirm, onChange: function (e) {
112
+ setConfirm(e.target.value);
113
+ setError(null);
114
+ }, "data-testid": "allow-edit-range-password-confirm" }))),
115
+ error && (react_1.default.createElement("p", { role: "alert", className: "text-xs text-red-600" }, error)),
116
+ react_1.default.createElement("div", { className: "flex justify-end gap-2" },
117
+ react_1.default.createElement(ui_1.Button, { type: "button", variant: "outline", size: "sm", onClick: onCancel }, "Cancel"),
118
+ react_1.default.createElement(ui_1.Button, { type: "submit", size: "sm" }, "OK"))));
119
+ };
120
+ exports.AllowEditRangesDialog = (0, react_1.memo)(function (_a) {
121
+ var open = _a.open, onOpenChange = _a.onOpenChange, ranges = _a.ranges, sheetProtected = _a.sheetProtected, defaultRanges = _a.defaultRanges, onAdd = _a.onAdd, onUpdate = _a.onUpdate, onDelete = _a.onDelete, onProtectSheet = _a.onProtectSheet;
122
+ var _b = tslib_1.__read((0, react_1.useState)(null), 2), selected = _b[0], setSelected = _b[1];
123
+ var _c = tslib_1.__read((0, react_1.useState)("list"), 2), mode = _c[0], setMode = _c[1];
124
+ var current = ranges.find(function (r) { return r.title === selected; });
125
+ var titles = ranges.map(function (r) { return r.title.toLowerCase(); });
126
+ var close = function () {
127
+ setMode("list");
128
+ onOpenChange(false);
129
+ };
130
+ return (react_1.default.createElement(ui_1.Dialog, { open: open, onOpenChange: function (o) { return (o ? onOpenChange(o) : close()); }, modal: true },
131
+ react_1.default.createElement(ui_1.DialogContent, { className: "w-[420px] max-w-[92vw] pointer-events-auto" },
132
+ react_1.default.createElement(ui_1.DialogTitle, null, "Allow Users to Edit Ranges"),
133
+ react_1.default.createElement(ui_1.DialogCloseButton, null),
134
+ react_1.default.createElement(ui_1.DialogBody, null, mode === "list" ? (react_1.default.createElement("div", { className: "flex flex-col gap-3" },
135
+ react_1.default.createElement("p", { className: "text-xs", id: "allow-edit-ranges-caption" }, "Ranges unlocked by a password when sheet is protected:"),
136
+ sheetProtected && (react_1.default.createElement("p", { role: "status", className: "text-xs text-amber-700" }, "Unprotect the sheet to change its ranges.")),
137
+ react_1.default.createElement("div", { role: "listbox", "aria-labelledby": "allow-edit-ranges-caption", className: "flex max-h-48 min-h-24 flex-col overflow-y-auto rounded border text-xs" }, ranges.map(function (r) { return (react_1.default.createElement("div", { key: r.title, role: "option", "aria-selected": r.title === selected, tabIndex: 0, "data-testid": "allow-edit-range-row-".concat(r.title), className: "flex cursor-default justify-between gap-2 px-2 py-1 ".concat(r.title === selected ? "bg-blue-100" : ""), onClick: function () { return setSelected(r.title); }, onKeyDown: function (e) {
138
+ if (e.key === "Enter" || e.key === " ")
139
+ setSelected(r.title);
140
+ } },
141
+ react_1.default.createElement("span", { className: "font-medium" }, r.title),
142
+ react_1.default.createElement("span", null, (0, exports.rangesToReference)(r.ranges)),
143
+ r.hasPassword && react_1.default.createElement("span", { className: "text-gray-500" }, "(password)"))); })),
144
+ react_1.default.createElement("div", { className: "flex gap-2" },
145
+ react_1.default.createElement(ui_1.Button, { type: "button", size: "sm", variant: "outline", disabled: sheetProtected, onClick: function () { return setMode("new"); } }, "New\u2026"),
146
+ react_1.default.createElement(ui_1.Button, { type: "button", size: "sm", variant: "outline", disabled: sheetProtected || !current, onClick: function () { return setMode("modify"); } }, "Modify\u2026"),
147
+ react_1.default.createElement(ui_1.Button, { type: "button", size: "sm", variant: "outline", disabled: sheetProtected || !current, onClick: function () {
148
+ if (!current)
149
+ return;
150
+ onDelete(current.title);
151
+ setSelected(null);
152
+ } }, "Delete")),
153
+ react_1.default.createElement(ui_1.Separator, null),
154
+ react_1.default.createElement("div", { className: "flex justify-end gap-2" },
155
+ onProtectSheet && !sheetProtected && (react_1.default.createElement(ui_1.Button, { type: "button", size: "sm", variant: "outline", onClick: function () {
156
+ close();
157
+ onProtectSheet();
158
+ } }, "Protect Sheet\u2026")),
159
+ react_1.default.createElement(ui_1.Button, { type: "button", size: "sm", onClick: close }, "OK")))) : mode === "new" ? (react_1.default.createElement(RangeForm, { heading: "New Range", defaultRanges: defaultRanges, takenTitles: titles, onCancel: function () { return setMode("list"); }, onSubmit: function (value) {
160
+ onAdd(value);
161
+ setSelected(value.title);
162
+ setMode("list");
163
+ } })) : current ? (react_1.default.createElement(RangeForm, { heading: "Modify Range", initial: current, takenTitles: titles.filter(function (t) { return t !== current.title.toLowerCase(); }), onCancel: function () { return setMode("list"); }, onSubmit: function (value) {
164
+ onUpdate(current.title, value);
165
+ setSelected(value.title);
166
+ setMode("list");
167
+ } })) : null))));
168
+ });
169
+ exports.AllowEditRangesDialog.displayName = "AllowEditRangesDialog";
170
+ /** Excel's Unlock Range prompt for a password-protected Allow Edit Range. */
171
+ exports.UnlockRangeDialog = (0, react_1.memo)(function (_a) {
172
+ var open = _a.open, onOpenChange = _a.onOpenChange, range = _a.range, onConfirm = _a.onConfirm;
173
+ var _b = tslib_1.__read((0, react_1.useState)(""), 2), password = _b[0], setPassword = _b[1];
174
+ return (react_1.default.createElement(ui_1.Dialog, { open: open, onOpenChange: onOpenChange, modal: true },
175
+ react_1.default.createElement(ui_1.DialogContent, { className: "w-[340px] max-w-[92vw] pointer-events-auto" },
176
+ react_1.default.createElement(ui_1.DialogTitle, null, "Unlock Range"),
177
+ react_1.default.createElement(ui_1.DialogCloseButton, null),
178
+ react_1.default.createElement(ui_1.DialogBody, null,
179
+ react_1.default.createElement("form", { className: "flex flex-col gap-3", onSubmit: function (e) {
180
+ e.preventDefault();
181
+ onConfirm(password);
182
+ setPassword("");
183
+ onOpenChange(false);
184
+ } },
185
+ react_1.default.createElement("p", { className: "text-xs" },
186
+ "A cell you are trying to change is password protected.",
187
+ (range === null || range === void 0 ? void 0 : range.title) ? " (".concat(range.title, ")") : ""),
188
+ react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
189
+ "Enter password to change this cell:",
190
+ react_1.default.createElement(ui_1.Input, { type: "password", autoComplete: "current-password", autoFocus: true, value: password, onChange: function (e) { return setPassword(e.target.value); }, "data-testid": "unlock-range-password" })),
191
+ react_1.default.createElement(ui_1.Separator, null),
192
+ react_1.default.createElement("div", { className: "flex justify-end gap-2" },
193
+ react_1.default.createElement(ui_1.Button, { type: "button", variant: "outline", size: "sm", onClick: function () { return onOpenChange(false); } }, "Cancel"),
194
+ react_1.default.createElement(ui_1.Button, { type: "submit", size: "sm" }, "OK")))))));
195
+ });
196
+ exports.UnlockRangeDialog.displayName = "UnlockRangeDialog";
@@ -0,0 +1,3 @@
1
+ /** Excel's text when the re-entered password differs. */
2
+ export declare const CONFIRM_PASSWORD_MISMATCH = "Confirmation password is not identical.";
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../components/protect-sheet-dialog/constants.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,eAAO,MAAM,yBAAyB,4CAA4C,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONFIRM_PASSWORD_MISMATCH = void 0;
4
+ /** Excel's text when the re-entered password differs. */
5
+ exports.CONFIRM_PASSWORD_MISMATCH = "Confirmation password is not identical.";
@@ -21,8 +21,8 @@ export declare const sheetProtectionToAllowState: (protection?: SheetProtection
21
21
  * schema default.
22
22
  */
23
23
  export declare const allowStateToSheetProtection: (state: SheetProtectionAllowState) => Omit<SheetProtection, "password" | "algorithmName" | "hashValue" | "saltValue" | "spinCount">;
24
- /** Excel's text when the re-entered password differs. */
25
- export declare const CONFIRM_PASSWORD_MISMATCH = "Confirmation password is not identical.";
24
+ export { CONFIRM_PASSWORD_MISMATCH } from "./constants";
25
+ export * from "./allow-edit-ranges-dialog";
26
26
  export type ProtectSheetDialogProps = {
27
27
  open: boolean;
28
28
  onOpenChange(open: boolean): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/protect-sheet-dialog/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAyB,MAAM,OAAO,CAAC;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,iFAAiF;AACjF,MAAM,MAAM,wBAAwB,GAChC,mBAAmB,GACnB,qBAAqB,GACrB,aAAa,GACb,eAAe,GACf,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,kBAAkB,GAClB,eAAe,GACf,YAAY,GACZ,MAAM,GACN,YAAY,GACZ,aAAa,GACb,SAAS,GACT,WAAW,CAAC;AAEhB;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,aAAa,CAAC;IACzD,IAAI,EAAE,wBAAwB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;CACzB,CAgBA,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;AAElF,iFAAiF;AACjF,eAAO,MAAM,2BAA2B,GACtC,aAAa,eAAe,GAAG,IAAI,KAClC,yBAOF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,yBAAyB,KAC/B,IAAI,CACL,eAAe,EACf,UAAU,GAAG,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAOvE,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,yBAAyB,4CAA4C,CAAC;AA4DnF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,gEAAgE;IAChE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE;QACjB,eAAe,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC;QAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC;CACV,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,yEACgB,uBAAuB,uBAoErE,CAAC;AAIF,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,uEAAuE;IACvE,SAAS,CAAC,OAAO,EAAE;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACzE,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,gEACI,0BAA0B,uBAwD/D,CAAC;AAIF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,eAAe,uEACiB,oBAAoB,uBAmChE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/protect-sheet-dialog/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAyB,MAAM,OAAO,CAAC;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,iFAAiF;AACjF,MAAM,MAAM,wBAAwB,GAChC,mBAAmB,GACnB,qBAAqB,GACrB,aAAa,GACb,eAAe,GACf,YAAY,GACZ,eAAe,GACf,YAAY,GACZ,kBAAkB,GAClB,eAAe,GACf,YAAY,GACZ,MAAM,GACN,YAAY,GACZ,aAAa,GACb,SAAS,GACT,WAAW,CAAC;AAEhB;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,aAAa,CAAC;IACzD,IAAI,EAAE,wBAAwB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;CACzB,CAgBA,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;AAElF,iFAAiF;AACjF,eAAO,MAAM,2BAA2B,GACtC,aAAa,eAAe,GAAG,IAAI,KAClC,yBAOF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,yBAAyB,KAC/B,IAAI,CACL,eAAe,EACf,UAAU,GAAG,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAOvE,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,cAAc,4BAA4B,CAAC;AA4D3C,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,gEAAgE;IAChE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE;QACjB,eAAe,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC;QAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC;CACV,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,yEACgB,uBAAuB,uBAoErE,CAAC;AAIF,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,uEAAuE;IACvE,SAAS,CAAC,OAAO,EAAE;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACzE,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,gEACI,0BAA0B,uBAwD/D,CAAC;AAIF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,eAAe,uEACiB,oBAAoB,uBAmChE,CAAC"}
@@ -4,6 +4,7 @@ exports.UnprotectDialog = exports.ProtectWorkbookDialog = exports.ProtectSheetDi
4
4
  var tslib_1 = require("tslib");
5
5
  var ui_1 = require("@rowsncolumns/ui");
6
6
  var react_1 = tslib_1.__importStar(require("react"));
7
+ var constants_1 = require("./constants");
7
8
  /**
8
9
  * Excel's "Allow all users of this worksheet to:" list, in the dialog's order
9
10
  * (support.microsoft.com "Protect a worksheet"), with the dialog defaults:
@@ -71,8 +72,9 @@ var allowStateToSheetProtection = function (state) {
71
72
  return protection;
72
73
  };
73
74
  exports.allowStateToSheetProtection = allowStateToSheetProtection;
74
- /** Excel's text when the re-entered password differs. */
75
- exports.CONFIRM_PASSWORD_MISMATCH = "Confirmation password is not identical.";
75
+ var constants_2 = require("./constants");
76
+ Object.defineProperty(exports, "CONFIRM_PASSWORD_MISMATCH", { enumerable: true, get: function () { return constants_2.CONFIRM_PASSWORD_MISMATCH; } });
77
+ tslib_1.__exportStar(require("./allow-edit-ranges-dialog"), exports);
76
78
  /** Password + "Reenter password to proceed", as Excel's Confirm Password step. */
77
79
  var PasswordFields = function (_a) {
78
80
  var label = _a.label, password = _a.password, confirm = _a.confirm, mismatch = _a.mismatch, onPassword = _a.onPassword, onConfirm = _a.onConfirm;
@@ -83,7 +85,7 @@ var PasswordFields = function (_a) {
83
85
  password !== "" && (react_1.default.createElement("label", { className: "flex flex-col gap-1 text-xs font-medium" },
84
86
  "Reenter password to proceed:",
85
87
  react_1.default.createElement(ui_1.Input, { type: "password", autoComplete: "new-password", value: confirm, onChange: function (e) { return onConfirm(e.target.value); }, "data-testid": "protection-password-confirm" }))),
86
- mismatch && (react_1.default.createElement("p", { role: "alert", className: "text-xs text-red-600" }, exports.CONFIRM_PASSWORD_MISMATCH))));
88
+ mismatch && (react_1.default.createElement("p", { role: "alert", className: "text-xs text-red-600" }, constants_1.CONFIRM_PASSWORD_MISMATCH))));
87
89
  };
88
90
  var DialogButtons = function (_a) {
89
91
  var onCancel = _a.onCancel;
@@ -0,0 +1,51 @@
1
+ import React from "react";
2
+ /** A Scenario Manager scenario — the `ScenarioDefinition` of `spreadsheet-state`. */
3
+ export type ScenarioManagerScenario = {
4
+ name: string;
5
+ cells: {
6
+ rowIndex: number;
7
+ columnIndex: number;
8
+ value: string;
9
+ }[];
10
+ comment?: string;
11
+ locked?: boolean;
12
+ hidden?: boolean;
13
+ };
14
+ /** Excel's cap on changing cells per scenario. */
15
+ export declare const MAX_SCENARIO_CHANGING_CELLS = 32;
16
+ type Refusal = string | undefined;
17
+ export type ScenarioManagerDialogProps = {
18
+ open: boolean;
19
+ onOpenChange(open: boolean): void;
20
+ /** The active sheet's scenarios. */
21
+ scenarios: ScenarioManagerScenario[];
22
+ /** The selection as A1 text (`B1:B2`) — Add's default changing cells. */
23
+ defaultChangingCells: string;
24
+ /** A cell's current value as typed — Add's default scenario values. */
25
+ getCellValue(rowIndex: number, columnIndex: number): string;
26
+ /** Each resolves to Excel's refusal message, or `undefined` once done. */
27
+ onAdd(scenario: ScenarioManagerScenario): Promise<Refusal> | Refusal;
28
+ onUpdate(name: string, scenario: ScenarioManagerScenario): Promise<Refusal> | Refusal;
29
+ onDelete(name: string): Promise<Refusal> | Refusal;
30
+ onShow(name: string): Promise<Refusal> | Refusal;
31
+ onSummary(resultCells: {
32
+ rowIndex: number;
33
+ columnIndex: number;
34
+ }[]): Promise<Refusal> | Refusal;
35
+ };
36
+ /**
37
+ * `B1:B3, D5` → its cells in order (deduplicated), or `null` when a part is not a
38
+ * cell or range reference.
39
+ */
40
+ export declare const parseCellList: (text: string) => {
41
+ rowIndex: number;
42
+ columnIndex: number;
43
+ }[] | null;
44
+ /**
45
+ * Excel's Scenario Manager: the sheet's scenarios with Show / Add / Delete /
46
+ * Edit / Summary. Add and Edit ask for the name, changing cells and comment,
47
+ * then a value for each changing cell (Scenario Values). Merge is not offered.
48
+ */
49
+ export declare const ScenarioManagerDialog: React.MemoExoticComponent<({ open, onOpenChange, scenarios, defaultChangingCells, getCellValue, onAdd, onUpdate, onDelete, onShow, onSummary, }: ScenarioManagerDialogProps) => React.JSX.Element>;
50
+ export {};
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/scenario-manager-dialog/index.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,qFAAqF;AACrF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAE9C,KAAK,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAElC,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,oCAAoC;IACpC,SAAS,EAAE,uBAAuB,EAAE,CAAC;IACrC,yEAAyE;IACzE,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uEAAuE;IACvE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5D,0EAA0E;IAC1E,KAAK,CAAC,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACtF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACnD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACjD,SAAS,CAAC,WAAW,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CACjG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,KACX;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,IA2BhD,CAAC;AAWF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,mJAY7B,0BAA0B,uBAqS9B,CAAC"}