@rowsncolumns/spreadsheet 10.2.76 → 10.3.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 (180) hide show
  1. package/dist/cjs/api/insert-options.d.ts +67 -0
  2. package/dist/cjs/api/insert-options.d.ts.map +1 -0
  3. package/dist/cjs/api/insert-options.js +104 -0
  4. package/dist/cjs/api/move-overwrite.d.ts +14 -0
  5. package/dist/cjs/api/move-overwrite.d.ts.map +1 -0
  6. package/dist/cjs/api/move-overwrite.js +29 -0
  7. package/dist/cjs/api/multi-selection.d.ts +59 -0
  8. package/dist/cjs/api/multi-selection.d.ts.map +1 -0
  9. package/dist/cjs/api/multi-selection.js +166 -0
  10. package/dist/cjs/atoms/index.d.ts +3 -0
  11. package/dist/cjs/atoms/index.d.ts.map +1 -1
  12. package/dist/cjs/atoms/index.js +3 -0
  13. package/dist/cjs/atoms/insert-cells-dialog.atom.d.ts +36 -0
  14. package/dist/cjs/atoms/insert-cells-dialog.atom.d.ts.map +1 -0
  15. package/dist/cjs/atoms/insert-cells-dialog.atom.js +34 -0
  16. package/dist/cjs/atoms/insert-options.atom.d.ts +21 -0
  17. package/dist/cjs/atoms/insert-options.atom.d.ts.map +1 -0
  18. package/dist/cjs/atoms/insert-options.atom.js +11 -0
  19. package/dist/cjs/atoms/move-overwrite-confirm.atom.d.ts +24 -0
  20. package/dist/cjs/atoms/move-overwrite-confirm.atom.d.ts.map +1 -0
  21. package/dist/cjs/atoms/move-overwrite-confirm.atom.js +42 -0
  22. package/dist/cjs/atoms/sheet-context.atom.d.ts +2 -0
  23. package/dist/cjs/atoms/sheet-context.atom.d.ts.map +1 -1
  24. package/dist/cjs/atoms/sheet-context.atom.js +15 -2
  25. package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
  26. package/dist/cjs/components/canvas-grid/index.js +284 -63
  27. package/dist/cjs/components/canvas-grid/typings.d.ts +47 -5
  28. package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
  29. package/dist/cjs/components/cell-editor/formula-result-preview.d.ts +4 -1
  30. package/dist/cjs/components/cell-editor/formula-result-preview.d.ts.map +1 -1
  31. package/dist/cjs/components/cell-editor/formula-result-preview.js +2 -2
  32. package/dist/cjs/components/cell-editor/index.d.ts +7 -1
  33. package/dist/cjs/components/cell-editor/index.d.ts.map +1 -1
  34. package/dist/cjs/components/cell-editor/index.js +3 -3
  35. package/dist/cjs/components/cell-input/cell-input.d.ts +13 -0
  36. package/dist/cjs/components/cell-input/cell-input.d.ts.map +1 -1
  37. package/dist/cjs/components/cell-input/cell-input.js +8 -3
  38. package/dist/cjs/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  39. package/dist/cjs/components/cell-input/formula-bar-cell-input.js +3 -1
  40. package/dist/cjs/components/context-menu/index.d.ts +16 -1
  41. package/dist/cjs/components/context-menu/index.d.ts.map +1 -1
  42. package/dist/cjs/components/context-menu/index.js +245 -24
  43. package/dist/cjs/components/floating-cell-editor/index.d.ts.map +1 -1
  44. package/dist/cjs/components/floating-cell-editor/index.js +13 -5
  45. package/dist/cjs/components/insert-cells-dialog/index.d.ts +35 -0
  46. package/dist/cjs/components/insert-cells-dialog/index.d.ts.map +1 -0
  47. package/dist/cjs/components/insert-cells-dialog/index.js +84 -0
  48. package/dist/cjs/components/insert-options-smart-tag/index.d.ts +25 -0
  49. package/dist/cjs/components/insert-options-smart-tag/index.d.ts.map +1 -0
  50. package/dist/cjs/components/insert-options-smart-tag/index.js +41 -0
  51. package/dist/cjs/components/move-overwrite-confirm-dialog/index.d.ts +8 -0
  52. package/dist/cjs/components/move-overwrite-confirm-dialog/index.d.ts.map +1 -0
  53. package/dist/cjs/components/move-overwrite-confirm-dialog/index.js +34 -0
  54. package/dist/cjs/components/selection/index.d.ts +1 -1
  55. package/dist/cjs/components/selection/index.d.ts.map +1 -1
  56. package/dist/cjs/components/selection/index.js +4 -2
  57. package/dist/cjs/components/selection/types.d.ts +8 -0
  58. package/dist/cjs/components/selection/types.d.ts.map +1 -1
  59. package/dist/cjs/config.d.ts +6 -0
  60. package/dist/cjs/config.d.ts.map +1 -1
  61. package/dist/cjs/config.js +7 -1
  62. package/dist/cjs/hooks/use-cell-renderer.d.ts +7 -1
  63. package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
  64. package/dist/cjs/hooks/use-cell-renderer.js +8 -3
  65. package/dist/cjs/hooks/use-context-setter.d.ts.map +1 -1
  66. package/dist/cjs/hooks/use-context-setter.js +5 -1
  67. package/dist/cjs/hooks/use-copy-paste-cut.d.ts +5 -0
  68. package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
  69. package/dist/cjs/hooks/use-copy-paste-cut.js +19 -0
  70. package/dist/cjs/hooks/use-editor-change.d.ts +4 -1
  71. package/dist/cjs/hooks/use-editor-change.d.ts.map +1 -1
  72. package/dist/cjs/hooks/use-editor-change.js +4 -3
  73. package/dist/cjs/hooks/use-editor-submit.d.ts +8 -1
  74. package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
  75. package/dist/cjs/hooks/use-editor-submit.js +9 -1
  76. package/dist/cjs/hooks/use-move-columns-rows.d.ts.map +1 -1
  77. package/dist/cjs/hooks/use-move-columns-rows.js +6 -0
  78. package/dist/cjs/hooks/use-selection-renderer.d.ts +9 -1
  79. package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
  80. package/dist/cjs/hooks/use-selection-renderer.js +26 -2
  81. package/dist/cjs/hooks/use-selection.d.ts +13 -5
  82. package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
  83. package/dist/cjs/hooks/use-selection.js +48 -6
  84. package/dist/cjs/index.d.ts +7 -0
  85. package/dist/cjs/index.d.ts.map +1 -1
  86. package/dist/cjs/index.js +7 -0
  87. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  88. package/dist/cjs/types.d.ts +8 -0
  89. package/dist/cjs/types.d.ts.map +1 -1
  90. package/dist/esm/api/insert-options.d.ts +67 -0
  91. package/dist/esm/api/insert-options.d.ts.map +1 -0
  92. package/dist/esm/api/insert-options.js +91 -0
  93. package/dist/esm/api/move-overwrite.d.ts +14 -0
  94. package/dist/esm/api/move-overwrite.d.ts.map +1 -0
  95. package/dist/esm/api/move-overwrite.js +25 -0
  96. package/dist/esm/api/multi-selection.d.ts +59 -0
  97. package/dist/esm/api/multi-selection.d.ts.map +1 -0
  98. package/dist/esm/api/multi-selection.js +92 -0
  99. package/dist/esm/atoms/index.d.ts +3 -0
  100. package/dist/esm/atoms/index.d.ts.map +1 -1
  101. package/dist/esm/atoms/index.js +3 -0
  102. package/dist/esm/atoms/insert-cells-dialog.atom.d.ts +36 -0
  103. package/dist/esm/atoms/insert-cells-dialog.atom.d.ts.map +1 -0
  104. package/dist/esm/atoms/insert-cells-dialog.atom.js +25 -0
  105. package/dist/esm/atoms/insert-options.atom.d.ts +21 -0
  106. package/dist/esm/atoms/insert-options.atom.d.ts.map +1 -0
  107. package/dist/esm/atoms/insert-options.atom.js +5 -0
  108. package/dist/esm/atoms/move-overwrite-confirm.atom.d.ts +24 -0
  109. package/dist/esm/atoms/move-overwrite-confirm.atom.d.ts.map +1 -0
  110. package/dist/esm/atoms/move-overwrite-confirm.atom.js +29 -0
  111. package/dist/esm/atoms/sheet-context.atom.d.ts +2 -0
  112. package/dist/esm/atoms/sheet-context.atom.d.ts.map +1 -1
  113. package/dist/esm/atoms/sheet-context.atom.js +10 -0
  114. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  115. package/dist/esm/components/canvas-grid/index.js +236 -19
  116. package/dist/esm/components/canvas-grid/typings.d.ts +47 -5
  117. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  118. package/dist/esm/components/cell-editor/formula-result-preview.d.ts +4 -1
  119. package/dist/esm/components/cell-editor/formula-result-preview.d.ts.map +1 -1
  120. package/dist/esm/components/cell-editor/formula-result-preview.js +3 -3
  121. package/dist/esm/components/cell-editor/index.d.ts +7 -1
  122. package/dist/esm/components/cell-editor/index.d.ts.map +1 -1
  123. package/dist/esm/components/cell-editor/index.js +3 -3
  124. package/dist/esm/components/cell-input/cell-input.d.ts +13 -0
  125. package/dist/esm/components/cell-input/cell-input.d.ts.map +1 -1
  126. package/dist/esm/components/cell-input/cell-input.js +10 -5
  127. package/dist/esm/components/cell-input/formula-bar-cell-input.d.ts.map +1 -1
  128. package/dist/esm/components/cell-input/formula-bar-cell-input.js +3 -1
  129. package/dist/esm/components/context-menu/index.d.ts +16 -1
  130. package/dist/esm/components/context-menu/index.d.ts.map +1 -1
  131. package/dist/esm/components/context-menu/index.js +193 -16
  132. package/dist/esm/components/floating-cell-editor/index.d.ts.map +1 -1
  133. package/dist/esm/components/floating-cell-editor/index.js +12 -6
  134. package/dist/esm/components/insert-cells-dialog/index.d.ts +35 -0
  135. package/dist/esm/components/insert-cells-dialog/index.d.ts.map +1 -0
  136. package/dist/esm/components/insert-cells-dialog/index.js +79 -0
  137. package/dist/esm/components/insert-options-smart-tag/index.d.ts +25 -0
  138. package/dist/esm/components/insert-options-smart-tag/index.d.ts.map +1 -0
  139. package/dist/esm/components/insert-options-smart-tag/index.js +35 -0
  140. package/dist/esm/components/move-overwrite-confirm-dialog/index.d.ts +8 -0
  141. package/dist/esm/components/move-overwrite-confirm-dialog/index.d.ts.map +1 -0
  142. package/dist/esm/components/move-overwrite-confirm-dialog/index.js +30 -0
  143. package/dist/esm/components/selection/index.d.ts +1 -1
  144. package/dist/esm/components/selection/index.d.ts.map +1 -1
  145. package/dist/esm/components/selection/index.js +4 -2
  146. package/dist/esm/components/selection/types.d.ts +8 -0
  147. package/dist/esm/components/selection/types.d.ts.map +1 -1
  148. package/dist/esm/config.d.ts +6 -0
  149. package/dist/esm/config.d.ts.map +1 -1
  150. package/dist/esm/config.js +6 -0
  151. package/dist/esm/hooks/use-cell-renderer.d.ts +7 -1
  152. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
  153. package/dist/esm/hooks/use-cell-renderer.js +9 -4
  154. package/dist/esm/hooks/use-context-setter.d.ts.map +1 -1
  155. package/dist/esm/hooks/use-context-setter.js +5 -1
  156. package/dist/esm/hooks/use-copy-paste-cut.d.ts +5 -0
  157. package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
  158. package/dist/esm/hooks/use-copy-paste-cut.js +19 -0
  159. package/dist/esm/hooks/use-editor-change.d.ts +4 -1
  160. package/dist/esm/hooks/use-editor-change.d.ts.map +1 -1
  161. package/dist/esm/hooks/use-editor-change.js +5 -4
  162. package/dist/esm/hooks/use-editor-submit.d.ts +8 -1
  163. package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
  164. package/dist/esm/hooks/use-editor-submit.js +10 -2
  165. package/dist/esm/hooks/use-move-columns-rows.d.ts.map +1 -1
  166. package/dist/esm/hooks/use-move-columns-rows.js +6 -0
  167. package/dist/esm/hooks/use-selection-renderer.d.ts +9 -1
  168. package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
  169. package/dist/esm/hooks/use-selection-renderer.js +26 -2
  170. package/dist/esm/hooks/use-selection.d.ts +13 -5
  171. package/dist/esm/hooks/use-selection.d.ts.map +1 -1
  172. package/dist/esm/hooks/use-selection.js +39 -3
  173. package/dist/esm/index.d.ts +7 -0
  174. package/dist/esm/index.d.ts.map +1 -1
  175. package/dist/esm/index.js +7 -0
  176. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  177. package/dist/esm/types.d.ts +8 -0
  178. package/dist/esm/types.d.ts.map +1 -1
  179. package/dist/spreadsheet.min.css +1 -1
  180. package/package.json +8 -7
@@ -0,0 +1,25 @@
1
+ import { atom, useAtom, useAtomValue, useSetAtom } from "jotai";
2
+ import { useCallback, useEffect } from "react";
3
+ export const insertCellsDialogAtom = atom(null);
4
+ export const useInsertCellsDialogState = () => useAtom(insertCellsDialogAtom);
5
+ /**
6
+ * Number of mounted `InsertCellsDialogHost`s. The context menu only offers the
7
+ * dialog entry while a host is mounted; without one it keeps the direct
8
+ * submenu so a host that has not adopted the dialog never gets a dead item.
9
+ */
10
+ export const insertCellsDialogHostCountAtom = atom(0);
11
+ /** True when at least one `InsertCellsDialogHost` is mounted. */
12
+ export const useIsInsertCellsDialogMounted = () => useAtomValue(insertCellsDialogHostCountAtom) > 0;
13
+ /** Registers the calling component as a dialog host for its lifetime. */
14
+ export const useRegisterInsertCellsDialogHost = () => {
15
+ const setCount = useSetAtom(insertCellsDialogHostCountAtom);
16
+ useEffect(() => {
17
+ setCount((count) => count + 1);
18
+ return () => setCount((count) => count - 1);
19
+ }, [setCount]);
20
+ };
21
+ /** Returns a function that opens the host-mounted Insert / Delete cells dialog. */
22
+ export const useOpenInsertCellsDialog = () => {
23
+ const setRequest = useSetAtom(insertCellsDialogAtom);
24
+ return useCallback((request) => setRequest(request), [setRequest]);
25
+ };
@@ -0,0 +1,21 @@
1
+ import type { InsertedBand, InsertFormatOption } from "../api/insert-options";
2
+ /**
3
+ * A just-inserted row / column band waiting for the user to (re)choose how it
4
+ * is formatted — Excel's Insert Options smart tag ("Format Same As Above /
5
+ * Below / Clear Formatting"; "Left / Right" for columns). The insert already
6
+ * applied `before` (the row above / column to the left); choosing another
7
+ * entry re-formats the band from the other neighbour, or clears it. Dropped
8
+ * on the next click elsewhere (a new active cell) or sheet switch.
9
+ */
10
+ export type InsertOptionsRequest = InsertedBand & {
11
+ sheetId: number;
12
+ /** The entry currently applied to the band. */
13
+ option: InsertFormatOption;
14
+ };
15
+ export declare const insertOptionsAtom: import("jotai").PrimitiveAtom<InsertOptionsRequest | null> & {
16
+ init: InsertOptionsRequest | null;
17
+ };
18
+ export declare const useInsertOptionsState: () => [InsertOptionsRequest | null, (args_0: InsertOptionsRequest | ((prev: InsertOptionsRequest | null) => InsertOptionsRequest | null) | null) => void];
19
+ export declare const useInsertOptionsValue: () => InsertOptionsRequest | null;
20
+ export declare const useSetInsertOptions: () => (args_0: InsertOptionsRequest | ((prev: InsertOptionsRequest | null) => InsertOptionsRequest | null) | null) => void;
21
+ //# sourceMappingURL=insert-options.atom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-options.atom.d.ts","sourceRoot":"","sources":["../../../atoms/insert-options.atom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,MAAM,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;CAA0C,CAAC;AAEzE,eAAO,MAAM,qBAAqB,2JAAmC,CAAC;AACtE,eAAO,MAAM,qBAAqB,mCAAwC,CAAC;AAC3E,eAAO,MAAM,mBAAmB,4HAAsC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { atom, useAtom, useAtomValue, useSetAtom } from "jotai";
2
+ export const insertOptionsAtom = atom(null);
3
+ export const useInsertOptionsState = () => useAtom(insertOptionsAtom);
4
+ export const useInsertOptionsValue = () => useAtomValue(insertOptionsAtom);
5
+ export const useSetInsertOptions = () => useSetAtom(insertOptionsAtom);
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Open-state + payload for the drag-move overwrite prompt (Excel: "There's
3
+ * already data here. Do you want to replace it?"). The grid raises it from the
4
+ * selection-border drop; the host-mounted dialog answers through `resolve`.
5
+ */
6
+ export type MoveOverwriteConfirmRequest = {
7
+ message: string;
8
+ resolve: (replace: boolean) => void;
9
+ };
10
+ export declare const moveOverwriteConfirmAtom: import("jotai").PrimitiveAtom<MoveOverwriteConfirmRequest | null> & {
11
+ init: MoveOverwriteConfirmRequest | null;
12
+ };
13
+ export declare const useMoveOverwriteConfirmState: () => [MoveOverwriteConfirmRequest | null, (args_0: MoveOverwriteConfirmRequest | ((prev: MoveOverwriteConfirmRequest | null) => MoveOverwriteConfirmRequest | null) | null) => void];
14
+ /** Number of mounted `MoveOverwriteConfirmDialogHost`s. */
15
+ export declare const moveOverwriteConfirmHostCountAtom: import("jotai").PrimitiveAtom<number> & {
16
+ init: number;
17
+ };
18
+ /** True when a host has mounted the dialog; otherwise the grid falls back to `window.confirm`. */
19
+ export declare const useIsMoveOverwriteConfirmMounted: () => boolean;
20
+ /** Registers the calling component as a dialog host for its lifetime. */
21
+ export declare const useRegisterMoveOverwriteConfirmHost: () => void;
22
+ /** Returns a function that opens the host-mounted prompt and resolves with the user's answer. */
23
+ export declare const useOpenMoveOverwriteConfirm: () => (message: string) => Promise<boolean>;
24
+ //# sourceMappingURL=move-overwrite-confirm.atom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move-overwrite-confirm.atom.d.ts","sourceRoot":"","sources":["../../../atoms/move-overwrite-confirm.atom.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF,eAAO,MAAM,wBAAwB;;CAEpC,CAAC;AAEF,eAAO,MAAM,4BAA4B,uLACN,CAAC;AAEpC,2DAA2D;AAC3D,eAAO,MAAM,iCAAiC;;CAAU,CAAC;AAEzD,kGAAkG;AAClG,eAAO,MAAM,gCAAgC,eACQ,CAAC;AAEtD,yEAAyE;AACzE,eAAO,MAAM,mCAAmC,YAM/C,CAAC;AAEF,iGAAiG;AACjG,eAAO,MAAM,2BAA2B,kBAG1B,MAAM,qBAYnB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { atom, useAtom, useAtomValue, useSetAtom } from "jotai";
2
+ import { useCallback, useEffect } from "react";
3
+ export const moveOverwriteConfirmAtom = atom(null);
4
+ export const useMoveOverwriteConfirmState = () => useAtom(moveOverwriteConfirmAtom);
5
+ /** Number of mounted `MoveOverwriteConfirmDialogHost`s. */
6
+ export const moveOverwriteConfirmHostCountAtom = atom(0);
7
+ /** True when a host has mounted the dialog; otherwise the grid falls back to `window.confirm`. */
8
+ export const useIsMoveOverwriteConfirmMounted = () => useAtomValue(moveOverwriteConfirmHostCountAtom) > 0;
9
+ /** Registers the calling component as a dialog host for its lifetime. */
10
+ export const useRegisterMoveOverwriteConfirmHost = () => {
11
+ const setCount = useSetAtom(moveOverwriteConfirmHostCountAtom);
12
+ useEffect(() => {
13
+ setCount((count) => count + 1);
14
+ return () => setCount((count) => count - 1);
15
+ }, [setCount]);
16
+ };
17
+ /** Returns a function that opens the host-mounted prompt and resolves with the user's answer. */
18
+ export const useOpenMoveOverwriteConfirm = () => {
19
+ const setRequest = useSetAtom(moveOverwriteConfirmAtom);
20
+ return useCallback((message) => new Promise((resolve) => {
21
+ setRequest({
22
+ message,
23
+ resolve: (replace) => {
24
+ setRequest(null);
25
+ resolve(replace);
26
+ },
27
+ });
28
+ }), [setRequest]);
29
+ };
@@ -5,6 +5,8 @@ export declare const spreadsheetContextAtom: import("jotai").PrimitiveAtom<Canva
5
5
  export declare const useSpreadsheet: () => CanvasGridMethods;
6
6
  export declare const tokenizerSelector: import("jotai").Atom<(str: string) => import("..").ParsedToken[]>;
7
7
  export declare const useTokenizer: () => (str: string) => import("..").ParsedToken[];
8
+ export declare const useLocaleTokenizer: () => (str: string) => import("..").ParsedToken[];
9
+ export declare const useFormulaLocale: () => import("@rowsncolumns/utils").FormulaLocale;
8
10
  export declare const useSetSpreadsheetContext: () => (args_0: CanvasGridMethods | ((prev: CanvasGridMethods) => CanvasGridMethods)) => void;
9
11
  export declare const useGetCellBounds: () => ((coords: import("@rowsncolumns/grid").CellInterface, spanMerges?: boolean | undefined) => import("@rowsncolumns/grid").GridRange) | undefined;
10
12
  export declare const useGetSelectionsFromFormula: () => ((value: string, anchorCell?: import("@rowsncolumns/grid").CellInterface) => import("@rowsncolumns/grid").SelectionArea<import("../components/canvas-grid/typings").SelectionAttributes>[]) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"sheet-context.atom.d.ts","sourceRoot":"","sources":["../../../atoms/sheet-context.atom.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,eAAO,MAAM,sBAAsB;;CAEjC,CAAC;AAEH,eAAO,MAAM,cAAc,yBAA6C,CAAC;AAGzE,eAAO,MAAM,iBAAiB,mEAE7B,CAAC;AAEF,eAAO,MAAM,YAAY,mDAAwC,CAAC;AAElE,eAAO,MAAM,wBAAwB,8FACD,CAAC;AAOrC,eAAO,MAAM,gBAAgB,sJAA4C,CAAC;AAO1E,eAAO,MAAM,2BAA2B,+MACK,CAAC;AAO9C,eAAO,MAAM,0BAA0B,uQACM,CAAC;AAO9C,eAAO,MAAM,8BAA8B,+GACM,CAAC;AAMlD,eAAO,MAAM,oBAAoB;;;cACQ,CAAC;AAM1C,eAAO,MAAM,eAAe,+GAA2C,CAAC;AAMxE,eAAO,MAAM,iBAAiB;;;;yBAA6C,CAAC;AAM5E,eAAO,MAAM,+BAA+B,wIACY,CAAC;AAMzD,eAAO,MAAM,0BAA0B,8HACQ,CAAC;AAMhD,eAAO,MAAM,0BAA0B,iIACQ,CAAC;AAEhD,eAAO,MAAM,wCAAwC,oPAEpD,CAAC;AAEF,eAAO,MAAM,mCAAmC,oOACQ,CAAC;AAEzD,eAAO,MAAM,mBAAmB,oHAE/B,CAAC;AAEF,eAAO,MAAM,cAAc,oGAA0C,CAAC;AAEtE,eAAO,MAAM,wBAAwB,kEAEpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,kDAA+C,CAAC;AAEhF,eAAO,MAAM,2BAA2B,mDAEvC,CAAC;AAEF,eAAO,MAAM,sBAAsB,mCACQ,CAAC;AAE5C,eAAO,MAAM,0BAA0B,0GAEtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,0FACQ,CAAC;AAE3C,eAAO,MAAM,mCAAmC,gHAE/C,CAAC;AAEF,eAAO,MAAM,8BAA8B,gGACQ,CAAC;AAEpD,eAAO,MAAM,kBAAkB,4OAE9B,CAAC;AAEF,eAAO,MAAM,aAAa,4NAAyC,CAAC;AAEpE,eAAO,MAAM,kBAAkB,gDAE9B,CAAC;AAEF,eAAO,MAAM,aAAa,gCAAyC,CAAC;AAEpE,eAAO,MAAM,0BAA0B,oFAEtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,oEACQ,CAAC;AAE3C,eAAO,MAAM,yBAAyB,oMAErC,CAAC;AAEF,eAAO,MAAM,oBAAoB,oLACQ,CAAC;AAE1C,eAAO,MAAM,uBAAuB,sFAEnC,CAAC;AAEF,eAAO,MAAM,kBAAkB,sEAA8C,CAAC;AAE9E,eAAO,MAAM,oBAAoB,iEAEhC,CAAC;AAEF,eAAO,MAAM,eAAe,iDAA2C,CAAC;AAExE,eAAO,MAAM,kBAAkB,+EAE9B,CAAC;AAEF,eAAO,MAAM,aAAa,+DAAyC,CAAC;AAEpE,eAAO,MAAM,0BAA0B,wOAEtC,CAAC;AAEF,eAAO,MAAM,kBAAkB,wNACW,CAAC;AAE3C,eAAO,MAAM,oBAAoB,oJAEhC,CAAC;AAEF,eAAO,MAAM,eAAe,oIAA2C,CAAC;AAExE,eAAO,MAAM,kBAAkB,gDAE9B,CAAC;AAEF,eAAO,MAAM,aAAa,gCAAyC,CAAC;AAEpE,eAAO,MAAM,mBAAmB,sFAE/B,CAAC;AAEF,eAAO,MAAM,cAAc,sEAA0C,CAAC;AAEtE,eAAO,MAAM,sBAAsB,+FAElC,CAAC;AAEF,eAAO,MAAM,iBAAiB,+EAA6C,CAAC;AAE5E,eAAO,MAAM,kBAAkB,uFAE9B,CAAC;AACF,eAAO,MAAM,aAAa,uEAAyC,CAAC;AAEpE,eAAO,MAAM,4BAA4B,kLAExC,CAAC;AACF,eAAO,MAAM,uBAAuB,kKACQ,CAAC"}
1
+ {"version":3,"file":"sheet-context.atom.d.ts","sourceRoot":"","sources":["../../../atoms/sheet-context.atom.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,eAAO,MAAM,sBAAsB;;CAEjC,CAAC;AAEH,eAAO,MAAM,cAAc,yBAA6C,CAAC;AAGzE,eAAO,MAAM,iBAAiB,mEAE7B,CAAC;AAEF,eAAO,MAAM,YAAY,mDAAwC,CAAC;AAQlE,eAAO,MAAM,kBAAkB,mDAA8C,CAAC;AAO9E,eAAO,MAAM,gBAAgB,mDAA4C,CAAC;AAE1E,eAAO,MAAM,wBAAwB,8FACD,CAAC;AAOrC,eAAO,MAAM,gBAAgB,sJAA4C,CAAC;AAO1E,eAAO,MAAM,2BAA2B,+MACK,CAAC;AAO9C,eAAO,MAAM,0BAA0B,uQACM,CAAC;AAO9C,eAAO,MAAM,8BAA8B,+GACM,CAAC;AAMlD,eAAO,MAAM,oBAAoB;;;cACQ,CAAC;AAM1C,eAAO,MAAM,eAAe,+GAA2C,CAAC;AAMxE,eAAO,MAAM,iBAAiB;;;;yBAA6C,CAAC;AAM5E,eAAO,MAAM,+BAA+B,wIACY,CAAC;AAMzD,eAAO,MAAM,0BAA0B,8HACQ,CAAC;AAMhD,eAAO,MAAM,0BAA0B,iIACQ,CAAC;AAEhD,eAAO,MAAM,wCAAwC,oPAEpD,CAAC;AAEF,eAAO,MAAM,mCAAmC,oOACQ,CAAC;AAEzD,eAAO,MAAM,mBAAmB,oHAE/B,CAAC;AAEF,eAAO,MAAM,cAAc,oGAA0C,CAAC;AAEtE,eAAO,MAAM,wBAAwB,kEAEpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,kDAA+C,CAAC;AAEhF,eAAO,MAAM,2BAA2B,mDAEvC,CAAC;AAEF,eAAO,MAAM,sBAAsB,mCACQ,CAAC;AAE5C,eAAO,MAAM,0BAA0B,0GAEtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,0FACQ,CAAC;AAE3C,eAAO,MAAM,mCAAmC,gHAE/C,CAAC;AAEF,eAAO,MAAM,8BAA8B,gGACQ,CAAC;AAEpD,eAAO,MAAM,kBAAkB,4OAE9B,CAAC;AAEF,eAAO,MAAM,aAAa,4NAAyC,CAAC;AAEpE,eAAO,MAAM,kBAAkB,gDAE9B,CAAC;AAEF,eAAO,MAAM,aAAa,gCAAyC,CAAC;AAEpE,eAAO,MAAM,0BAA0B,oFAEtC,CAAC;AAEF,eAAO,MAAM,qBAAqB,oEACQ,CAAC;AAE3C,eAAO,MAAM,yBAAyB,oMAErC,CAAC;AAEF,eAAO,MAAM,oBAAoB,oLACQ,CAAC;AAE1C,eAAO,MAAM,uBAAuB,sFAEnC,CAAC;AAEF,eAAO,MAAM,kBAAkB,sEAA8C,CAAC;AAE9E,eAAO,MAAM,oBAAoB,iEAEhC,CAAC;AAEF,eAAO,MAAM,eAAe,iDAA2C,CAAC;AAExE,eAAO,MAAM,kBAAkB,+EAE9B,CAAC;AAEF,eAAO,MAAM,aAAa,+DAAyC,CAAC;AAEpE,eAAO,MAAM,0BAA0B,wOAEtC,CAAC;AAEF,eAAO,MAAM,kBAAkB,wNACW,CAAC;AAE3C,eAAO,MAAM,oBAAoB,oJAEhC,CAAC;AAEF,eAAO,MAAM,eAAe,oIAA2C,CAAC;AAExE,eAAO,MAAM,kBAAkB,gDAE9B,CAAC;AAEF,eAAO,MAAM,aAAa,gCAAyC,CAAC;AAEpE,eAAO,MAAM,mBAAmB,sFAE/B,CAAC;AAEF,eAAO,MAAM,cAAc,sEAA0C,CAAC;AAEtE,eAAO,MAAM,sBAAsB,+FAElC,CAAC;AAEF,eAAO,MAAM,iBAAiB,+EAA6C,CAAC;AAE5E,eAAO,MAAM,kBAAkB,uFAE9B,CAAC;AACF,eAAO,MAAM,aAAa,uEAAyC,CAAC;AAEpE,eAAO,MAAM,4BAA4B,kLAExC,CAAC;AACF,eAAO,MAAM,uBAAuB,kKACQ,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { CANONICAL_FORMULA_LOCALE } from "@rowsncolumns/utils";
1
2
  import { atom, useAtomValue, useSetAtom } from "jotai";
2
3
  export const spreadsheetContextAtom = atom({
3
4
  tokenizer: () => [],
@@ -6,6 +7,15 @@ export const useSpreadsheet = () => useAtomValue(spreadsheetContextAtom);
6
7
  // Tokenizer selector
7
8
  export const tokenizerSelector = atom((get) => get(spreadsheetContextAtom).tokenizer);
8
9
  export const useTokenizer = () => useAtomValue(tokenizerSelector);
10
+ // Formula-locale tokenizer (falls back to the canonical one before the grid publishes it)
11
+ const localeTokenizerSelector = atom((get) => {
12
+ const context = get(spreadsheetContextAtom);
13
+ return context.localeTokenizer ?? context.tokenizer;
14
+ });
15
+ export const useLocaleTokenizer = () => useAtomValue(localeTokenizerSelector);
16
+ // The grid's resolved formula locale (canonical until the grid publishes one)
17
+ const formulaLocaleSelector = atom((get) => get(spreadsheetContextAtom).formulaLocale ?? CANONICAL_FORMULA_LOCALE);
18
+ export const useFormulaLocale = () => useAtomValue(formulaLocaleSelector);
9
19
  export const useSetSpreadsheetContext = () => useSetAtom(spreadsheetContextAtom);
10
20
  // Cellbounds selector
11
21
  const getCellBoundsSelector = atom((get) => get(spreadsheetContextAtom).getCellBounds);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../components/canvas-grid/index.tsx"],"names":[],"mappings":"AA2CA,OAAO,KASN,MAAM,OAAO,CAAC;AA4Lf,OAAO,KAAK,EAGV,QAAQ,EAUT,MAAM,aAAa,CAAC;AAcrB,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EAEhB,MAAM,WAAW,CAAC;AAmkKnB,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":"AA+CA,OAAO,KASN,MAAM,OAAO,CAAC;AAuMf,OAAO,KAAK,EAGV,QAAQ,EAUT,MAAM,aAAa,CAAC;AAcrB,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EAEhB,MAAM,WAAW,CAAC;AAk1KnB,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"}