@rowsncolumns/spreadsheet 10.6.5 → 10.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/dist/cjs/api/autocomplete.d.ts +42 -0
  2. package/dist/cjs/api/autocomplete.d.ts.map +1 -0
  3. package/dist/cjs/api/autocomplete.js +114 -0
  4. package/dist/cjs/api/banded-ranges.d.ts.map +1 -1
  5. package/dist/cjs/api/banded-ranges.js +51 -1
  6. package/dist/cjs/api/error-checking.d.ts +82 -0
  7. package/dist/cjs/api/error-checking.d.ts.map +1 -0
  8. package/dist/cjs/api/error-checking.js +207 -0
  9. package/dist/cjs/api/move-overwrite.d.ts +8 -2
  10. package/dist/cjs/api/move-overwrite.d.ts.map +1 -1
  11. package/dist/cjs/api/move-overwrite.js +19 -3
  12. package/dist/cjs/api/selections.d.ts +2 -2
  13. package/dist/cjs/api/validation.d.ts +39 -1
  14. package/dist/cjs/api/validation.d.ts.map +1 -1
  15. package/dist/cjs/api/validation.js +87 -1
  16. package/dist/cjs/atoms/cell-input-context.atom.d.ts +4 -1
  17. package/dist/cjs/atoms/cell-input-context.atom.d.ts.map +1 -1
  18. package/dist/cjs/atoms/enter-key-direction.atom.d.ts +11 -0
  19. package/dist/cjs/atoms/enter-key-direction.atom.d.ts.map +1 -0
  20. package/dist/cjs/atoms/enter-key-direction.atom.js +13 -0
  21. package/dist/cjs/atoms/index.d.ts +1 -0
  22. package/dist/cjs/atoms/index.d.ts.map +1 -1
  23. package/dist/cjs/atoms/index.js +1 -0
  24. package/dist/cjs/atoms/paste-menu.atom.d.ts +22 -0
  25. package/dist/cjs/atoms/paste-menu.atom.d.ts.map +1 -1
  26. package/dist/cjs/atoms/paste-menu.atom.js +13 -1
  27. package/dist/cjs/atoms/pick-list.atom.d.ts +15 -0
  28. package/dist/cjs/atoms/pick-list.atom.d.ts.map +1 -0
  29. package/dist/cjs/atoms/pick-list.atom.js +7 -0
  30. package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
  31. package/dist/cjs/components/canvas-grid/index.js +305 -70
  32. package/dist/cjs/components/canvas-grid/typings.d.ts +96 -11
  33. package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
  34. package/dist/cjs/components/cell/index.d.ts.map +1 -1
  35. package/dist/cjs/components/cell/index.js +7 -8
  36. package/dist/cjs/components/cell/typings.d.ts +9 -0
  37. package/dist/cjs/components/cell/typings.d.ts.map +1 -1
  38. package/dist/cjs/components/cell-editor/helpers.d.ts +22 -2
  39. package/dist/cjs/components/cell-editor/helpers.d.ts.map +1 -1
  40. package/dist/cjs/components/cell-editor/helpers.js +32 -8
  41. package/dist/cjs/components/cell-editor/index.d.ts +7 -1
  42. package/dist/cjs/components/cell-editor/index.d.ts.map +1 -1
  43. package/dist/cjs/components/cell-editor/index.js +85 -13
  44. package/dist/cjs/components/cell-indicator/index.d.ts +41 -0
  45. package/dist/cjs/components/cell-indicator/index.d.ts.map +1 -0
  46. package/dist/cjs/components/cell-indicator/index.js +90 -0
  47. package/dist/cjs/components/cell-input/cell-input.d.ts +10 -2
  48. package/dist/cjs/components/cell-input/cell-input.d.ts.map +1 -1
  49. package/dist/cjs/components/cell-input/cell-input.js +5 -3
  50. package/dist/cjs/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  51. package/dist/cjs/components/cell-input/formula-bar-cell-input.js +9 -2
  52. package/dist/cjs/components/cell-structured/sparkline-math.d.ts +27 -1
  53. package/dist/cjs/components/cell-structured/sparkline-math.d.ts.map +1 -1
  54. package/dist/cjs/components/cell-structured/sparkline-math.js +48 -1
  55. package/dist/cjs/components/cell-structured/sparkline.d.ts +1 -1
  56. package/dist/cjs/components/cell-structured/sparkline.d.ts.map +1 -1
  57. package/dist/cjs/components/cell-structured/sparkline.js +36 -92
  58. package/dist/cjs/components/cell-structured/types.d.ts +6 -0
  59. package/dist/cjs/components/cell-structured/types.d.ts.map +1 -1
  60. package/dist/cjs/components/data-table-dialog/index.d.ts +22 -0
  61. package/dist/cjs/components/data-table-dialog/index.d.ts.map +1 -0
  62. package/dist/cjs/components/data-table-dialog/index.js +93 -0
  63. package/dist/cjs/components/error-check-smart-tag/index.d.ts +27 -0
  64. package/dist/cjs/components/error-check-smart-tag/index.d.ts.map +1 -0
  65. package/dist/cjs/components/error-check-smart-tag/index.js +39 -0
  66. package/dist/cjs/components/forecast-sheet-dialog/index.d.ts +26 -0
  67. package/dist/cjs/components/forecast-sheet-dialog/index.d.ts.map +1 -0
  68. package/dist/cjs/components/forecast-sheet-dialog/index.js +92 -0
  69. package/dist/cjs/components/paste-special-dialog/index.d.ts +3 -3
  70. package/dist/cjs/components/paste-special-dialog/index.d.ts.map +1 -1
  71. package/dist/cjs/components/paste-special-dialog/index.js +61 -23
  72. package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts +57 -0
  73. package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts.map +1 -0
  74. package/dist/cjs/components/protect-sheet-dialog/allow-edit-ranges-dialog.js +196 -0
  75. package/dist/cjs/components/protect-sheet-dialog/constants.d.ts +3 -0
  76. package/dist/cjs/components/protect-sheet-dialog/constants.d.ts.map +1 -0
  77. package/dist/cjs/components/protect-sheet-dialog/constants.js +5 -0
  78. package/dist/cjs/components/protect-sheet-dialog/index.d.ts +2 -2
  79. package/dist/cjs/components/protect-sheet-dialog/index.d.ts.map +1 -1
  80. package/dist/cjs/components/protect-sheet-dialog/index.js +5 -3
  81. package/dist/cjs/components/scenario-manager-dialog/index.d.ts +51 -0
  82. package/dist/cjs/components/scenario-manager-dialog/index.d.ts.map +1 -0
  83. package/dist/cjs/components/scenario-manager-dialog/index.js +257 -0
  84. package/dist/cjs/components/selection/index.d.ts +1 -1
  85. package/dist/cjs/components/selection/index.d.ts.map +1 -1
  86. package/dist/cjs/components/selection/index.js +9 -4
  87. package/dist/cjs/components/selection/paste-menu.d.ts +14 -1
  88. package/dist/cjs/components/selection/paste-menu.d.ts.map +1 -1
  89. package/dist/cjs/components/selection/paste-menu.js +78 -6
  90. package/dist/cjs/components/selection/paste-options.d.ts +28 -0
  91. package/dist/cjs/components/selection/paste-options.d.ts.map +1 -0
  92. package/dist/cjs/components/selection/paste-options.js +70 -0
  93. package/dist/cjs/components/selection/types.d.ts +12 -1
  94. package/dist/cjs/components/selection/types.d.ts.map +1 -1
  95. package/dist/cjs/components/selection-drop-menu/index.d.ts +18 -0
  96. package/dist/cjs/components/selection-drop-menu/index.d.ts.map +1 -0
  97. package/dist/cjs/components/selection-drop-menu/index.js +62 -0
  98. package/dist/cjs/components/solver-dialog/index.d.ts +57 -0
  99. package/dist/cjs/components/solver-dialog/index.d.ts.map +1 -0
  100. package/dist/cjs/components/solver-dialog/index.js +204 -0
  101. package/dist/cjs/components/toolbar/sparkline-actions.d.ts +3 -2
  102. package/dist/cjs/components/toolbar/sparkline-actions.d.ts.map +1 -1
  103. package/dist/cjs/components/toolbar/sparkline-actions.js +6 -2
  104. package/dist/cjs/components/toolbar/table-style-selector.d.ts.map +1 -1
  105. package/dist/cjs/components/toolbar/table-style-selector.js +33 -2
  106. package/dist/cjs/config.d.ts +5 -4
  107. package/dist/cjs/config.d.ts.map +1 -1
  108. package/dist/cjs/config.js +13 -9
  109. package/dist/cjs/hooks/use-cell-renderer.d.ts +12 -1
  110. package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
  111. package/dist/cjs/hooks/use-cell-renderer.js +6 -3
  112. package/dist/cjs/hooks/use-copy-paste-cut.d.ts +36 -2
  113. package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
  114. package/dist/cjs/hooks/use-copy-paste-cut.js +131 -5
  115. package/dist/cjs/hooks/use-editable.d.ts +6 -0
  116. package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
  117. package/dist/cjs/hooks/use-editor-submit.d.ts +45 -3
  118. package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
  119. package/dist/cjs/hooks/use-editor-submit.js +91 -7
  120. package/dist/cjs/hooks/use-keyboard-handler.d.ts +5 -1
  121. package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
  122. package/dist/cjs/hooks/use-keyboard-handler.js +10 -1
  123. package/dist/cjs/hooks/use-selection-drag-copy.d.ts +55 -0
  124. package/dist/cjs/hooks/use-selection-drag-copy.d.ts.map +1 -0
  125. package/dist/cjs/hooks/use-selection-drag-copy.js +274 -0
  126. package/dist/cjs/hooks/use-selection-renderer.d.ts +8 -1
  127. package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
  128. package/dist/cjs/hooks/use-selection-renderer.js +7 -2
  129. package/dist/cjs/hooks/use-selection.d.ts +59 -1
  130. package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
  131. package/dist/cjs/hooks/use-selection.js +270 -61
  132. package/dist/cjs/index.d.ts +6 -1
  133. package/dist/cjs/index.d.ts.map +1 -1
  134. package/dist/cjs/index.js +5 -0
  135. package/dist/cjs/release-date.js +1 -1
  136. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  137. package/dist/cjs/types.d.ts +50 -1
  138. package/dist/cjs/types.d.ts.map +1 -1
  139. package/dist/esm/api/autocomplete.d.ts +42 -0
  140. package/dist/esm/api/autocomplete.d.ts.map +1 -0
  141. package/dist/esm/api/autocomplete.js +91 -0
  142. package/dist/esm/api/banded-ranges.d.ts.map +1 -1
  143. package/dist/esm/api/banded-ranges.js +52 -2
  144. package/dist/esm/api/error-checking.d.ts +82 -0
  145. package/dist/esm/api/error-checking.d.ts.map +1 -0
  146. package/dist/esm/api/error-checking.js +156 -0
  147. package/dist/esm/api/move-overwrite.d.ts +8 -2
  148. package/dist/esm/api/move-overwrite.d.ts.map +1 -1
  149. package/dist/esm/api/move-overwrite.js +17 -2
  150. package/dist/esm/api/selections.d.ts +2 -2
  151. package/dist/esm/api/validation.d.ts +39 -1
  152. package/dist/esm/api/validation.d.ts.map +1 -1
  153. package/dist/esm/api/validation.js +70 -0
  154. package/dist/esm/atoms/cell-input-context.atom.d.ts +4 -1
  155. package/dist/esm/atoms/cell-input-context.atom.d.ts.map +1 -1
  156. package/dist/esm/atoms/enter-key-direction.atom.d.ts +11 -0
  157. package/dist/esm/atoms/enter-key-direction.atom.d.ts.map +1 -0
  158. package/dist/esm/atoms/enter-key-direction.atom.js +8 -0
  159. package/dist/esm/atoms/index.d.ts +1 -0
  160. package/dist/esm/atoms/index.d.ts.map +1 -1
  161. package/dist/esm/atoms/index.js +1 -0
  162. package/dist/esm/atoms/paste-menu.atom.d.ts +22 -0
  163. package/dist/esm/atoms/paste-menu.atom.d.ts.map +1 -1
  164. package/dist/esm/atoms/paste-menu.atom.js +10 -1
  165. package/dist/esm/atoms/pick-list.atom.d.ts +15 -0
  166. package/dist/esm/atoms/pick-list.atom.d.ts.map +1 -0
  167. package/dist/esm/atoms/pick-list.atom.js +3 -0
  168. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  169. package/dist/esm/components/canvas-grid/index.js +239 -13
  170. package/dist/esm/components/canvas-grid/typings.d.ts +96 -11
  171. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  172. package/dist/esm/components/cell/index.d.ts.map +1 -1
  173. package/dist/esm/components/cell/index.js +8 -9
  174. package/dist/esm/components/cell/typings.d.ts +9 -0
  175. package/dist/esm/components/cell/typings.d.ts.map +1 -1
  176. package/dist/esm/components/cell-editor/helpers.d.ts +22 -2
  177. package/dist/esm/components/cell-editor/helpers.d.ts.map +1 -1
  178. package/dist/esm/components/cell-editor/helpers.js +25 -7
  179. package/dist/esm/components/cell-editor/index.d.ts +7 -1
  180. package/dist/esm/components/cell-editor/index.d.ts.map +1 -1
  181. package/dist/esm/components/cell-editor/index.js +80 -9
  182. package/dist/esm/components/cell-indicator/index.d.ts +41 -0
  183. package/dist/esm/components/cell-indicator/index.d.ts.map +1 -0
  184. package/dist/esm/components/cell-indicator/index.js +76 -0
  185. package/dist/esm/components/cell-input/cell-input.d.ts +10 -2
  186. package/dist/esm/components/cell-input/cell-input.d.ts.map +1 -1
  187. package/dist/esm/components/cell-input/cell-input.js +5 -3
  188. package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  189. package/dist/esm/components/cell-input/formula-bar-cell-input.js +9 -2
  190. package/dist/esm/components/cell-structured/sparkline-math.d.ts +27 -1
  191. package/dist/esm/components/cell-structured/sparkline-math.d.ts.map +1 -1
  192. package/dist/esm/components/cell-structured/sparkline-math.js +35 -0
  193. package/dist/esm/components/cell-structured/sparkline.d.ts +1 -1
  194. package/dist/esm/components/cell-structured/sparkline.d.ts.map +1 -1
  195. package/dist/esm/components/cell-structured/sparkline.js +34 -88
  196. package/dist/esm/components/cell-structured/types.d.ts +6 -0
  197. package/dist/esm/components/cell-structured/types.d.ts.map +1 -1
  198. package/dist/esm/components/data-table-dialog/index.d.ts +22 -0
  199. package/dist/esm/components/data-table-dialog/index.d.ts.map +1 -0
  200. package/dist/esm/components/data-table-dialog/index.js +75 -0
  201. package/dist/esm/components/error-check-smart-tag/index.d.ts +27 -0
  202. package/dist/esm/components/error-check-smart-tag/index.d.ts.map +1 -0
  203. package/dist/esm/components/error-check-smart-tag/index.js +33 -0
  204. package/dist/esm/components/forecast-sheet-dialog/index.d.ts +26 -0
  205. package/dist/esm/components/forecast-sheet-dialog/index.d.ts.map +1 -0
  206. package/dist/esm/components/forecast-sheet-dialog/index.js +83 -0
  207. package/dist/esm/components/paste-special-dialog/index.d.ts +3 -3
  208. package/dist/esm/components/paste-special-dialog/index.d.ts.map +1 -1
  209. package/dist/esm/components/paste-special-dialog/index.js +58 -23
  210. package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts +57 -0
  211. package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.d.ts.map +1 -0
  212. package/dist/esm/components/protect-sheet-dialog/allow-edit-ranges-dialog.js +177 -0
  213. package/dist/esm/components/protect-sheet-dialog/constants.d.ts +3 -0
  214. package/dist/esm/components/protect-sheet-dialog/constants.d.ts.map +1 -0
  215. package/dist/esm/components/protect-sheet-dialog/constants.js +2 -0
  216. package/dist/esm/components/protect-sheet-dialog/index.d.ts +2 -2
  217. package/dist/esm/components/protect-sheet-dialog/index.d.ts.map +1 -1
  218. package/dist/esm/components/protect-sheet-dialog/index.js +3 -2
  219. package/dist/esm/components/scenario-manager-dialog/index.d.ts +51 -0
  220. package/dist/esm/components/scenario-manager-dialog/index.d.ts.map +1 -0
  221. package/dist/esm/components/scenario-manager-dialog/index.js +213 -0
  222. package/dist/esm/components/selection/index.d.ts +1 -1
  223. package/dist/esm/components/selection/index.d.ts.map +1 -1
  224. package/dist/esm/components/selection/index.js +9 -4
  225. package/dist/esm/components/selection/paste-menu.d.ts +14 -1
  226. package/dist/esm/components/selection/paste-menu.d.ts.map +1 -1
  227. package/dist/esm/components/selection/paste-menu.js +76 -8
  228. package/dist/esm/components/selection/paste-options.d.ts +28 -0
  229. package/dist/esm/components/selection/paste-options.d.ts.map +1 -0
  230. package/dist/esm/components/selection/paste-options.js +62 -0
  231. package/dist/esm/components/selection/types.d.ts +12 -1
  232. package/dist/esm/components/selection/types.d.ts.map +1 -1
  233. package/dist/esm/components/selection-drop-menu/index.d.ts +18 -0
  234. package/dist/esm/components/selection-drop-menu/index.d.ts.map +1 -0
  235. package/dist/esm/components/selection-drop-menu/index.js +56 -0
  236. package/dist/esm/components/solver-dialog/index.d.ts +57 -0
  237. package/dist/esm/components/solver-dialog/index.d.ts.map +1 -0
  238. package/dist/esm/components/solver-dialog/index.js +176 -0
  239. package/dist/esm/components/toolbar/sparkline-actions.d.ts +3 -2
  240. package/dist/esm/components/toolbar/sparkline-actions.d.ts.map +1 -1
  241. package/dist/esm/components/toolbar/sparkline-actions.js +6 -2
  242. package/dist/esm/components/toolbar/table-style-selector.d.ts.map +1 -1
  243. package/dist/esm/components/toolbar/table-style-selector.js +29 -3
  244. package/dist/esm/config.d.ts +5 -4
  245. package/dist/esm/config.d.ts.map +1 -1
  246. package/dist/esm/config.js +12 -8
  247. package/dist/esm/hooks/use-cell-renderer.d.ts +12 -1
  248. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
  249. package/dist/esm/hooks/use-cell-renderer.js +5 -2
  250. package/dist/esm/hooks/use-copy-paste-cut.d.ts +36 -2
  251. package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
  252. package/dist/esm/hooks/use-copy-paste-cut.js +117 -6
  253. package/dist/esm/hooks/use-editable.d.ts +6 -0
  254. package/dist/esm/hooks/use-editable.d.ts.map +1 -1
  255. package/dist/esm/hooks/use-editor-submit.d.ts +45 -3
  256. package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
  257. package/dist/esm/hooks/use-editor-submit.js +81 -6
  258. package/dist/esm/hooks/use-keyboard-handler.d.ts +5 -1
  259. package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
  260. package/dist/esm/hooks/use-keyboard-handler.js +10 -1
  261. package/dist/esm/hooks/use-selection-drag-copy.d.ts +55 -0
  262. package/dist/esm/hooks/use-selection-drag-copy.d.ts.map +1 -0
  263. package/dist/esm/hooks/use-selection-drag-copy.js +245 -0
  264. package/dist/esm/hooks/use-selection-renderer.d.ts +8 -1
  265. package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
  266. package/dist/esm/hooks/use-selection-renderer.js +7 -2
  267. package/dist/esm/hooks/use-selection.d.ts +59 -1
  268. package/dist/esm/hooks/use-selection.d.ts.map +1 -1
  269. package/dist/esm/hooks/use-selection.js +245 -52
  270. package/dist/esm/index.d.ts +6 -1
  271. package/dist/esm/index.d.ts.map +1 -1
  272. package/dist/esm/index.js +5 -0
  273. package/dist/esm/release-date.js +1 -1
  274. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  275. package/dist/esm/types.d.ts +50 -1
  276. package/dist/esm/types.d.ts.map +1 -1
  277. package/dist/spreadsheet.min.css +1 -1
  278. package/package.json +6 -5
  279. package/dist/cjs/components/cell-error/index.d.ts +0 -14
  280. package/dist/cjs/components/cell-error/index.d.ts.map +0 -1
  281. package/dist/cjs/components/cell-error/index.js +0 -24
  282. package/dist/esm/components/cell-error/index.d.ts +0 -14
  283. package/dist/esm/components/cell-error/index.d.ts.map +0 -1
  284. package/dist/esm/components/cell-error/index.js +0 -18
@@ -1,5 +1,5 @@
1
1
  import type { CellInterface, GridRange } from "@rowsncolumns/grid";
2
- import type { BooleanCondition, CellData, ConditionType, ConditionValue, CustomFormulaResult, DataValidationRule, DataValidationRuleAlert, FilterCriteria, Maybe, ProtectedRange, SheetProtection, TimePeriodTypes } from "../types";
2
+ import type { AllowEditRange, BooleanCondition, CellData, ConditionType, ConditionValue, CustomFormulaResult, DataValidationRule, DataValidationRuleAlert, FilterCriteria, Maybe, ProtectedRange, SheetProtection, TimePeriodTypes } from "../types";
3
3
  export type CheckBooleanRuleOptions = {
4
4
  locale?: string;
5
5
  };
@@ -50,6 +50,28 @@ export declare const showValidationDropdownArrow: (rule?: DataValidationRule | n
50
50
  * @returns
51
51
  */
52
52
  export declare const isProtectedCell: (sheetId: number, cell: CellInterface, protectedRanges: ProtectedRange[]) => boolean;
53
+ /**
54
+ * The Excel Allow Edit Range covering `cell` on `sheetId`, preferring one this
55
+ * session may already edit (no password, or unlocked). `undefined` when no
56
+ * range covers the cell.
57
+ */
58
+ export declare const getAllowEditRangeAt: (sheetId: number, cell: CellInterface, allowEditRanges: Maybe<AllowEditRange[]> | undefined) => AllowEditRange | undefined;
59
+ /**
60
+ * What worksheet protection lets a typed edit of `cell` do (Excel's rules):
61
+ * `"edit"` for an unprotected sheet, an unlocked cell or a cell of an open
62
+ * Allow Edit Range; `"locked"` for any other locked cell; `{ unlock }` for a
63
+ * cell of a password-protected range this session has not unlocked (Excel's
64
+ * Unlock Range prompt).
65
+ */
66
+ export declare const resolveProtectedCellEdit: ({ sheetId, cell, sheetProtection, cellProtection, allowEditRanges, }: {
67
+ sheetId: number;
68
+ cell: CellInterface;
69
+ sheetProtection: Maybe<SheetProtection> | undefined;
70
+ cellProtection: Maybe<Pick<NonNullable<CellData["protection"]>, "locked">>;
71
+ allowEditRanges?: Maybe<AllowEditRange[]>;
72
+ }) => "edit" | "locked" | {
73
+ unlock: AllowEditRange;
74
+ };
53
75
  /**
54
76
  * Check if the entire sheet is protected
55
77
  * @param sheetId
@@ -86,6 +108,22 @@ export declare const isActionBlockedBySheetProtection: (sheetProtection: Maybe<S
86
108
  * protection is inactive.
87
109
  */
88
110
  export declare const isCellLockedUnderProtection: (sheetProtection: Maybe<SheetProtection> | undefined, cellProtection: Maybe<Pick<NonNullable<CellData["protection"]>, "locked">>) => boolean;
111
+ /**
112
+ * Past this many cells a selection on a sheet that refuses locked cells is
113
+ * refused without a per-cell scan (it would cover a locked default cell in
114
+ * practice — the engine's protection gate uses the same reasoning).
115
+ */
116
+ export declare const SELECTABLE_SCAN_CELL_CAP = 100000;
117
+ /**
118
+ * Excel's "Select locked cells" / "Select unlocked cells" (support.microsoft.com
119
+ * "Protect a worksheet"): whether the selection may cover `range` on a sheet.
120
+ * Only an ACTIVE protection restricts anything. `selectUnlockedCells` set
121
+ * (`true` prohibits) means no cell can be selected — Excel clears both boxes
122
+ * together. `selectLockedCells` set means the range must hold only unlocked
123
+ * cells (`protection.locked === false`; a cell is locked by default). Absent
124
+ * flags take the OOXML schema default: allowed.
125
+ */
126
+ export declare const isRangeSelectableUnderProtection: (sheetProtection: Maybe<SheetProtection> | undefined, range: GridRange, getCellProtection: (rowIndex: number, columnIndex: number) => Maybe<Pick<NonNullable<CellData["protection"]>, "locked">> | undefined) => boolean;
89
127
  /**
90
128
  * Whether a cell's contents are hidden from the formula bar: Excel's Format
91
129
  * Cells ▸ Protection ▸ Hidden takes effect only while the sheet is protected.
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../api/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../api/validation.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decideValidationCommit = exports.shouldUsePreviousValue = exports.getProtectedRange = exports.isProtectedRange = exports.isCellFormulaHiddenUnderProtection = exports.isCellLockedUnderProtection = exports.isActionBlockedBySheetProtection = exports.isSheetProtectionActive = exports.isProtectedSheet = exports.isProtectedCell = exports.showValidationDropdownArrow = exports.validationValueToDate = exports.passesAggregateFilterThreshold = exports.resolveAggregateFilterThreshold = exports.isAggregateFilterCondition = exports.AGGREGATE_FILTER_CONDITION_TYPES = exports.checkFilterCondition = exports.checkFilterRule = exports.checkBooleanRule = void 0;
3
+ exports.decideValidationCommit = exports.shouldUsePreviousValue = exports.getProtectedRange = exports.isProtectedRange = exports.isCellFormulaHiddenUnderProtection = exports.isRangeSelectableUnderProtection = exports.SELECTABLE_SCAN_CELL_CAP = exports.isCellLockedUnderProtection = exports.isActionBlockedBySheetProtection = exports.isSheetProtectionActive = exports.isProtectedSheet = exports.resolveProtectedCellEdit = exports.getAllowEditRangeAt = exports.isProtectedCell = exports.showValidationDropdownArrow = exports.validationValueToDate = exports.passesAggregateFilterThreshold = exports.resolveAggregateFilterThreshold = exports.isAggregateFilterCondition = exports.AGGREGATE_FILTER_CONDITION_TYPES = exports.checkFilterCondition = exports.checkFilterRule = exports.checkBooleanRule = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var grid_1 = require("@rowsncolumns/grid");
6
6
  var utils_1 = require("@rowsncolumns/utils");
@@ -515,6 +515,54 @@ var isProtectedCell = function (sheetId, cell, protectedRanges) {
515
515
  });
516
516
  };
517
517
  exports.isProtectedCell = isProtectedCell;
518
+ /**
519
+ * The Excel Allow Edit Range covering `cell` on `sheetId`, preferring one this
520
+ * session may already edit (no password, or unlocked). `undefined` when no
521
+ * range covers the cell.
522
+ */
523
+ var getAllowEditRangeAt = function (sheetId, cell, allowEditRanges) {
524
+ var e_1, _a;
525
+ var found;
526
+ try {
527
+ for (var _b = tslib_1.__values(allowEditRanges !== null && allowEditRanges !== void 0 ? allowEditRanges : []), _c = _b.next(); !_c.done; _c = _b.next()) {
528
+ var range = _c.value;
529
+ if (range.sheetId !== sheetId)
530
+ continue;
531
+ if (!range.ranges.some(function (r) { return (0, grid_1.isCellWithinBounds)(cell, r); }))
532
+ continue;
533
+ if (range.unlocked)
534
+ return range;
535
+ found !== null && found !== void 0 ? found : (found = range);
536
+ }
537
+ }
538
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
539
+ finally {
540
+ try {
541
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
542
+ }
543
+ finally { if (e_1) throw e_1.error; }
544
+ }
545
+ return found;
546
+ };
547
+ exports.getAllowEditRangeAt = getAllowEditRangeAt;
548
+ /**
549
+ * What worksheet protection lets a typed edit of `cell` do (Excel's rules):
550
+ * `"edit"` for an unprotected sheet, an unlocked cell or a cell of an open
551
+ * Allow Edit Range; `"locked"` for any other locked cell; `{ unlock }` for a
552
+ * cell of a password-protected range this session has not unlocked (Excel's
553
+ * Unlock Range prompt).
554
+ */
555
+ var resolveProtectedCellEdit = function (_a) {
556
+ var sheetId = _a.sheetId, cell = _a.cell, sheetProtection = _a.sheetProtection, cellProtection = _a.cellProtection, allowEditRanges = _a.allowEditRanges;
557
+ if (!(0, exports.isCellLockedUnderProtection)(sheetProtection, cellProtection)) {
558
+ return "edit";
559
+ }
560
+ var range = (0, exports.getAllowEditRangeAt)(sheetId, cell, allowEditRanges);
561
+ if (!range)
562
+ return "locked";
563
+ return range.unlocked ? "edit" : { unlock: range };
564
+ };
565
+ exports.resolveProtectedCellEdit = resolveProtectedCellEdit;
518
566
  /**
519
567
  * Check if the entire sheet is protected
520
568
  * @param sheetId
@@ -570,6 +618,44 @@ var isCellLockedUnderProtection = function (sheetProtection, cellProtection) {
570
618
  return (0, exports.isSheetProtectionActive)(sheetProtection) && (cellProtection === null || cellProtection === void 0 ? void 0 : cellProtection.locked) !== false;
571
619
  };
572
620
  exports.isCellLockedUnderProtection = isCellLockedUnderProtection;
621
+ /**
622
+ * Past this many cells a selection on a sheet that refuses locked cells is
623
+ * refused without a per-cell scan (it would cover a locked default cell in
624
+ * practice — the engine's protection gate uses the same reasoning).
625
+ */
626
+ exports.SELECTABLE_SCAN_CELL_CAP = 100000;
627
+ /**
628
+ * Excel's "Select locked cells" / "Select unlocked cells" (support.microsoft.com
629
+ * "Protect a worksheet"): whether the selection may cover `range` on a sheet.
630
+ * Only an ACTIVE protection restricts anything. `selectUnlockedCells` set
631
+ * (`true` prohibits) means no cell can be selected — Excel clears both boxes
632
+ * together. `selectLockedCells` set means the range must hold only unlocked
633
+ * cells (`protection.locked === false`; a cell is locked by default). Absent
634
+ * flags take the OOXML schema default: allowed.
635
+ */
636
+ var isRangeSelectableUnderProtection = function (sheetProtection, range, getCellProtection) {
637
+ var _a;
638
+ if (!(0, exports.isSheetProtectionActive)(sheetProtection))
639
+ return true;
640
+ if ((sheetProtection === null || sheetProtection === void 0 ? void 0 : sheetProtection.selectUnlockedCells) === true)
641
+ return false;
642
+ if ((sheetProtection === null || sheetProtection === void 0 ? void 0 : sheetProtection.selectLockedCells) !== true)
643
+ return true;
644
+ var rows = range.endRowIndex - range.startRowIndex + 1;
645
+ var columns = range.endColumnIndex - range.startColumnIndex + 1;
646
+ if (rows <= 0 || columns <= 0)
647
+ return true;
648
+ if (rows * columns > exports.SELECTABLE_SCAN_CELL_CAP)
649
+ return false;
650
+ for (var row = range.startRowIndex; row <= range.endRowIndex; row++) {
651
+ for (var column = range.startColumnIndex; column <= range.endColumnIndex; column++) {
652
+ if (((_a = getCellProtection(row, column)) === null || _a === void 0 ? void 0 : _a.locked) !== false)
653
+ return false;
654
+ }
655
+ }
656
+ return true;
657
+ };
658
+ exports.isRangeSelectableUnderProtection = isRangeSelectableUnderProtection;
573
659
  /**
574
660
  * Whether a cell's contents are hidden from the formula bar: Excel's Format
575
661
  * Cells ▸ Protection ▸ Hidden takes effect only while the sheet is protected.
@@ -1,7 +1,10 @@
1
1
  export declare const useCellInputContext: () => {
2
2
  makeEditable: ((sheetId: number, cell: import("@rowsncolumns/grid").CellInterface, initialValue?: string, options?: import("../hooks/use-editable").MakeEditableOptions) => void) | undefined;
3
3
  getNextFocusableCell: ((sheetId: number, currentCell: import("@rowsncolumns/grid").CellInterface, direction?: import("@rowsncolumns/grid").Direction, restrictWithinSelection?: boolean) => import("@rowsncolumns/grid").CellInterface | null) | undefined;
4
- submitEditor: ((value: string, textFormatRuns: import("@rowsncolumns/common-types").TextFormatRun[] | undefined, sheetId: number, activeCell: import("@rowsncolumns/grid").CellInterface, nextActiveCell?: import("@rowsncolumns/grid").CellInterface | null | undefined) => void) | undefined;
4
+ submitEditor: ((value: string, textFormatRuns: import("@rowsncolumns/common-types").TextFormatRun[] | undefined, sheetId: number, activeCell: import("@rowsncolumns/grid").CellInterface, nextActiveCell?: import("@rowsncolumns/grid").CellInterface | null | undefined, shouldFocusGrid?: boolean, options?: {
5
+ arrayFormula?: boolean;
6
+ fillSelection?: boolean;
7
+ }) => void) | undefined;
5
8
  cancelEditor: ((e?: React.KeyboardEvent<HTMLDivElement>) => void) | undefined;
6
9
  onEditorKeyDown: ((e: React.KeyboardEvent<HTMLDivElement>) => void) | undefined;
7
10
  canEditCell: ((sheetId: number, cell: import("@rowsncolumns/grid").CellInterface) => boolean) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"cell-input-context.atom.d.ts","sourceRoot":"","sources":["../../../atoms/cell-input-context.atom.ts"],"names":[],"mappings":"AAoCA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;CAA+C,CAAC"}
1
+ {"version":3,"file":"cell-input-context.atom.d.ts","sourceRoot":"","sources":["../../../atoms/cell-input-context.atom.ts"],"names":[],"mappings":"AAoCA,eAAO,MAAM,mBAAmB;;;;oBACohiF,CAAC;qBAAwB,CAAC;;;;;;;;;;;CAD//hF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { EnterKeyDirection } from "../components/cell-editor/helpers";
2
+ /**
3
+ * The grid's `enterKeyDirection`, for the editors that commit on Enter outside its props (the
4
+ * in-cell editor a host supplies, the formula bar).
5
+ */
6
+ export declare const enterKeyDirectionAtom: import("jotai").PrimitiveAtom<EnterKeyDirection> & {
7
+ init: EnterKeyDirection;
8
+ };
9
+ export declare const useEnterKeyDirection: () => EnterKeyDirection;
10
+ export declare const useSetEnterKeyDirection: () => (args_0: EnterKeyDirection | ((prev: EnterKeyDirection) => EnterKeyDirection)) => void;
11
+ //# sourceMappingURL=enter-key-direction.atom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enter-key-direction.atom.d.ts","sourceRoot":"","sources":["../../../atoms/enter-key-direction.atom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;CAAkC,CAAC;AAErE,eAAO,MAAM,oBAAoB,yBAA4C,CAAC;AAC9E,eAAO,MAAM,uBAAuB,8FAA0C,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSetEnterKeyDirection = exports.useEnterKeyDirection = exports.enterKeyDirectionAtom = void 0;
4
+ var jotai_1 = require("jotai");
5
+ /**
6
+ * The grid's `enterKeyDirection`, for the editors that commit on Enter outside its props (the
7
+ * in-cell editor a host supplies, the formula bar).
8
+ */
9
+ exports.enterKeyDirectionAtom = (0, jotai_1.atom)("down");
10
+ var useEnterKeyDirection = function () { return (0, jotai_1.useAtomValue)(exports.enterKeyDirectionAtom); };
11
+ exports.useEnterKeyDirection = useEnterKeyDirection;
12
+ var useSetEnterKeyDirection = function () { return (0, jotai_1.useSetAtom)(exports.enterKeyDirectionAtom); };
13
+ exports.useSetEnterKeyDirection = useSetEnterKeyDirection;
@@ -13,6 +13,7 @@ export * from "./selected-chart-embed.atom";
13
13
  export * from "./selected-chart-series.atom";
14
14
  export * from "./popover.atom";
15
15
  export * from "./paste-menu.atom";
16
+ export * from "./pick-list.atom";
16
17
  export * from "./fill-options.atom";
17
18
  export * from "./fill-series-dialog.atom";
18
19
  export * from "./magic-fill-state.atom";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../atoms/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../atoms/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC"}
@@ -18,6 +18,7 @@ tslib_1.__exportStar(require("./selected-chart-embed.atom"), exports);
18
18
  tslib_1.__exportStar(require("./selected-chart-series.atom"), exports);
19
19
  tslib_1.__exportStar(require("./popover.atom"), exports);
20
20
  tslib_1.__exportStar(require("./paste-menu.atom"), exports);
21
+ tslib_1.__exportStar(require("./pick-list.atom"), exports);
21
22
  tslib_1.__exportStar(require("./fill-options.atom"), exports);
22
23
  tslib_1.__exportStar(require("./fill-series-dialog.atom"), exports);
23
24
  tslib_1.__exportStar(require("./magic-fill-state.atom"), exports);
@@ -1,6 +1,28 @@
1
+ import type { PasteOptionId } from "../components/selection/paste-options";
1
2
  export declare const showPasteMenuAtom: import("jotai").PrimitiveAtom<boolean> & {
2
3
  init: boolean;
3
4
  };
4
5
  export declare const useShowPasteMenu: () => [boolean, (args_0: boolean | ((prev: boolean) => boolean)) => void];
5
6
  export declare const useSetShowPasteMenu: () => (args_0: boolean | ((prev: boolean) => boolean)) => void;
7
+ /**
8
+ * The Paste Options button's state for the last paste: whether its gallery
9
+ * is open (a click, or Ctrl pressed alone after the paste), which gallery
10
+ * entry the paste currently stands as, and what the gallery may offer.
11
+ */
12
+ export type PasteMenuState = {
13
+ open: boolean;
14
+ /** The gallery entry the last paste was applied as. */
15
+ active?: PasteOptionId;
16
+ /** The last paste can be re-applied in another mode (a copy, not a cut). */
17
+ canReapply: boolean;
18
+ /** Paste Link needs copied grid cells (not after a cut or a foreign clipboard). */
19
+ canLink: boolean;
20
+ };
21
+ export declare const DEFAULT_PASTE_MENU_STATE: PasteMenuState;
22
+ export declare const pasteMenuStateAtom: import("jotai").PrimitiveAtom<PasteMenuState> & {
23
+ init: PasteMenuState;
24
+ };
25
+ export declare const usePasteMenuState: () => [PasteMenuState, (args_0: PasteMenuState | ((prev: PasteMenuState) => PasteMenuState)) => void];
26
+ export declare const usePasteMenuStateValue: () => PasteMenuState;
27
+ export declare const useSetPasteMenuState: () => (args_0: PasteMenuState | ((prev: PasteMenuState) => PasteMenuState)) => void;
6
28
  //# sourceMappingURL=paste-menu.atom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paste-menu.atom.d.ts","sourceRoot":"","sources":["../../../atoms/paste-menu.atom.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB;;CAAc,CAAC;AAE7C,eAAO,MAAM,gBAAgB,2EAAmC,CAAC;AACjE,eAAO,MAAM,mBAAmB,gEAAsC,CAAC"}
1
+ {"version":3,"file":"paste-menu.atom.d.ts","sourceRoot":"","sources":["../../../atoms/paste-menu.atom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAE3E,eAAO,MAAM,iBAAiB;;CAAc,CAAC;AAE7C,eAAO,MAAM,gBAAgB,2EAAmC,CAAC;AACjE,eAAO,MAAM,mBAAmB,gEAAsC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,uDAAuD;IACvD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,4EAA4E;IAC5E,UAAU,EAAE,OAAO,CAAC;IACpB,mFAAmF;IACnF,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,cAItC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;CAAiD,CAAC;AAEjF,eAAO,MAAM,iBAAiB,uGAAoC,CAAC;AACnE,eAAO,MAAM,sBAAsB,sBAAyC,CAAC;AAC7E,eAAO,MAAM,oBAAoB,qFAAuC,CAAC"}
@@ -1,9 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useSetShowPasteMenu = exports.useShowPasteMenu = exports.showPasteMenuAtom = void 0;
3
+ exports.useSetPasteMenuState = exports.usePasteMenuStateValue = exports.usePasteMenuState = exports.pasteMenuStateAtom = exports.DEFAULT_PASTE_MENU_STATE = exports.useSetShowPasteMenu = exports.useShowPasteMenu = exports.showPasteMenuAtom = void 0;
4
4
  var jotai_1 = require("jotai");
5
5
  exports.showPasteMenuAtom = (0, jotai_1.atom)(false);
6
6
  var useShowPasteMenu = function () { return (0, jotai_1.useAtom)(exports.showPasteMenuAtom); };
7
7
  exports.useShowPasteMenu = useShowPasteMenu;
8
8
  var useSetShowPasteMenu = function () { return (0, jotai_1.useSetAtom)(exports.showPasteMenuAtom); };
9
9
  exports.useSetShowPasteMenu = useSetShowPasteMenu;
10
+ exports.DEFAULT_PASTE_MENU_STATE = {
11
+ open: false,
12
+ canReapply: false,
13
+ canLink: false,
14
+ };
15
+ exports.pasteMenuStateAtom = (0, jotai_1.atom)(exports.DEFAULT_PASTE_MENU_STATE);
16
+ var usePasteMenuState = function () { return (0, jotai_1.useAtom)(exports.pasteMenuStateAtom); };
17
+ exports.usePasteMenuState = usePasteMenuState;
18
+ var usePasteMenuStateValue = function () { return (0, jotai_1.useAtomValue)(exports.pasteMenuStateAtom); };
19
+ exports.usePasteMenuStateValue = usePasteMenuStateValue;
20
+ var useSetPasteMenuState = function () { return (0, jotai_1.useSetAtom)(exports.pasteMenuStateAtom); };
21
+ exports.useSetPasteMenuState = useSetPasteMenuState;
@@ -0,0 +1,15 @@
1
+ import type { CellInterface } from "@rowsncolumns/grid";
2
+ /**
3
+ * Excel's Pick From Drop-down List (Alt+↓ on a cell with no list of its
4
+ * own): the column's entries the cell editor offers for `cell`.
5
+ */
6
+ export type PickListRequest = {
7
+ sheetId: number;
8
+ cell: CellInterface;
9
+ entries: string[];
10
+ };
11
+ export declare const pickListAtom: import("jotai").PrimitiveAtom<PickListRequest | null> & {
12
+ init: PickListRequest | null;
13
+ };
14
+ export declare const usePickList: () => [PickListRequest | null, (args_0: PickListRequest | ((prev: PickListRequest | null) => PickListRequest | null) | null) => void];
15
+ //# sourceMappingURL=pick-list.atom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick-list.atom.d.ts","sourceRoot":"","sources":["../../../atoms/pick-list.atom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,YAAY;;CAAqC,CAAC;AAE/D,eAAO,MAAM,WAAW,uIAA8B,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.usePickList = exports.pickListAtom = void 0;
4
+ var jotai_1 = require("jotai");
5
+ exports.pickListAtom = (0, jotai_1.atom)(null);
6
+ var usePickList = function () { return (0, jotai_1.useAtom)(exports.pickListAtom); };
7
+ exports.usePickList = usePickList;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/canvas-grid/index.tsx"],"names":[],"mappings":"AAsDA,OAAO,KASN,MAAM,OAAO,CAAC;AAgOf,OAAO,KAAK,EAGV,QAAQ,EAWT,MAAM,aAAa,CAAC;AAoBrB,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EAEhB,MAAM,WAAW,CAAC;AA6sMnB,eAAO,MAAM,UAAU,EAA4C,CACjE,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC,EAEvB,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GACvB,wBAAwB,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;CAAE,KAChE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/canvas-grid/index.tsx"],"names":[],"mappings":"AAwDA,OAAO,KASN,MAAM,OAAO,CAAC;AA4Of,OAAO,KAAK,EAGV,QAAQ,EAWT,MAAM,aAAa,CAAC;AAyBrB,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EAEhB,MAAM,WAAW,CAAC;AAqgNnB,eAAO,MAAM,UAAU,EAA4C,CACjE,CAAC,SAAS,QAAQ,CAAC,GAAG,CAAC,EAEvB,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GACvB,wBAAwB,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;CAAE,KAChE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC"}