@gridsheet/react-core 1.4.0-alpha.15 → 1.4.0-alpha.17
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.
- package/dist/components/Cell.d.ts.map +1 -1
- package/dist/components/Cell.js +3 -1
- package/dist/components/Cell.js.map +1 -1
- package/dist/components/Editor.d.ts +2 -1
- package/dist/components/Editor.d.ts.map +1 -1
- package/dist/components/Editor.js +12 -3
- package/dist/components/Editor.js.map +1 -1
- package/dist/components/GridSheet.d.ts.map +1 -1
- package/dist/components/GridSheet.js +3 -2
- package/dist/components/GridSheet.js.map +1 -1
- package/dist/components/SheetProvider.d.ts +2 -0
- package/dist/components/SheetProvider.d.ts.map +1 -1
- package/dist/components/SheetProvider.js +3 -0
- package/dist/components/SheetProvider.js.map +1 -1
- package/dist/components/Tabular.d.ts.map +1 -1
- package/dist/components/Tabular.js +38 -29
- package/dist/components/Tabular.js.map +1 -1
- package/dist/lib/table.d.ts +2 -1
- package/dist/lib/table.d.ts.map +1 -1
- package/dist/lib/table.js +4 -1
- package/dist/lib/table.js.map +1 -1
- package/dist/types.d.ts +4 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cell.d.ts","sourceRoot":"","sources":["../../components/Cell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAwB1B,KAAK,KAAK,GAAG;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"Cell.d.ts","sourceRoot":"","sources":["../../components/Cell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAwB1B,KAAK,KAAK,GAAG;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAoO/B,CAAC"}
|
package/dist/components/Cell.js
CHANGED
|
@@ -33,6 +33,7 @@ const Cell = React__default.memo(({ y, x, operationStyle }) => {
|
|
|
33
33
|
const lastFocusedRef = (sheetContext == null ? void 0 : sheetContext.lastFocusedRef) || store.lastFocusedRef;
|
|
34
34
|
const selectingArea = zoneToArea(selectingZone);
|
|
35
35
|
const editing = editingCell === address;
|
|
36
|
+
const xEditing = !sheetProvided || (sheetContext == null ? void 0 : sheetContext.editingCell) === (sheetContext == null ? void 0 : sheetContext.choosingCell);
|
|
36
37
|
const pointed = choosing.y === y && choosing.x === x;
|
|
37
38
|
const _setEditorRect = React__default.useCallback(() => {
|
|
38
39
|
const rect = cellRef.current.getBoundingClientRect();
|
|
@@ -126,6 +127,7 @@ const Cell = React__default.memo(({ y, x, operationStyle }) => {
|
|
|
126
127
|
},
|
|
127
128
|
onDoubleClick: (e) => {
|
|
128
129
|
e.preventDefault();
|
|
130
|
+
setEditingCell(address);
|
|
129
131
|
const dblclick = document.createEvent("MouseEvents");
|
|
130
132
|
dblclick.initEvent("dblclick", true, true);
|
|
131
133
|
input.dispatchEvent(dblclick);
|
|
@@ -139,7 +141,7 @@ const Cell = React__default.memo(({ y, x, operationStyle }) => {
|
|
|
139
141
|
e.dataTransfer.setDragImage(DUMMY_IMG, 0, 0);
|
|
140
142
|
dispatch(select({ startY: y, startX: x, endY: y, endX: x }));
|
|
141
143
|
const insertable = isRefInsertable(lastInput);
|
|
142
|
-
if (insertable) {
|
|
144
|
+
if (insertable && xEditing) {
|
|
143
145
|
return true;
|
|
144
146
|
} else if (insertable != null) {
|
|
145
147
|
writeCell(input.value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cell.js","sources":["../../components/Cell.tsx"],"sourcesContent":["import React from 'react';\nimport { x2c, y2r } from '../lib/converters';\nimport { zoneToArea, among, zoneShape, areaToZone, areaToRange } from '../lib/structs';\nimport {\n choose,\n select,\n drag,\n write,\n setEditorRect,\n setContextMenuPosition,\n setAutofillDraggingTo,\n updateTable,\n setEditingCell,\n setInputting,\n} from '../store/actions';\n\nimport { DUMMY_IMG } from '../constants';\n\nimport { Context } from '../store';\nimport { FormulaError } from '../formula/evaluator';\nimport { Autofill } from '../lib/autofill';\nimport { insertRef, isRefInsertable } from '../lib/input';\nimport { useSheetContext } from './SheetProvider';\n\ntype Props = {\n y: number;\n x: number;\n operationStyle?: React.CSSProperties;\n};\n\nexport const Cell: React.FC<Props> = React.memo(({ y, x, operationStyle }) => {\n const rowId = y2r(y);\n const colId = x2c(x);\n const address = `${colId}${rowId}`;\n const { store, dispatch } = React.useContext(Context);\n const isFirstPointed = React.useRef(true);\n\n const [sheetProvided, sheetContext] = useSheetContext();\n\n const cellRef = React.useRef<HTMLTableCellElement | null>(null);\n const {\n table,\n editingCell,\n choosing,\n selectingZone,\n leftHeaderSelecting,\n topHeaderSelecting,\n editorRef,\n showAddress,\n autofillDraggingTo,\n lastEdited,\n } = store;\n\n // Whether the focus is on another sheet\n const differentSheetFocused = sheetProvided && sheetContext?.lastFocusedRef !== store.lastFocusedRef;\n\n const lastFocusedRef = sheetContext?.lastFocusedRef || store.lastFocusedRef;\n\n const selectingArea = zoneToArea(selectingZone); // (top, left) -> (bottom, right)\n\n const editing = editingCell === address;\n const pointed = choosing.y === y && choosing.x === x;\n const _setEditorRect = React.useCallback(() => {\n const rect = cellRef.current!.getBoundingClientRect();\n dispatch(\n setEditorRect({\n y: rect.y,\n x: rect.x,\n height: rect.height,\n width: rect.width,\n }),\n );\n }, []);\n\n React.useEffect(() => {\n // Avoid setting coordinates on the initial render to account for shifts caused by redrawing due to virtualization.\n if (pointed && !isFirstPointed.current) {\n _setEditorRect();\n if (!editing) {\n dispatch(setInputting(table.stringify({ y, x })));\n }\n return;\n }\n isFirstPointed.current = false;\n }, [pointed, editing]);\n const cell = table.getByPoint({ y, x });\n const writeCell = (value: string) => {\n if (lastEdited !== value) {\n dispatch(write(value));\n return;\n }\n };\n\n let errorMessage = '';\n let rendered;\n try {\n rendered = table.render({ y, x }, writeCell);\n } catch (e: any) {\n if (e instanceof FormulaError) {\n errorMessage = e.message;\n rendered = e.code;\n } else {\n errorMessage = e.message;\n rendered = '#UNKNOWN';\n console.error(e);\n }\n // TODO: debug flag\n }\n const lastInput = lastFocusedRef.current;\n const input = editorRef.current;\n if (!input) {\n return null;\n }\n\n return (\n <td\n key={x}\n ref={cellRef}\n data-x={x}\n data-y={y}\n data-address={address}\n className={`gs-cell ${among(selectingArea, { y, x }) ? 'gs-selecting' : ''} ${pointed ? 'gs-choosing' : ''} ${\n editing ? 'gs-editing' : ''\n }`}\n style={{\n ...cell?.style,\n ...operationStyle,\n }}\n onContextMenu={(e) => {\n e.preventDefault();\n dispatch(setContextMenuPosition({ y: e.clientY, x: e.clientX }));\n return false;\n }}\n onClick={(e) => {\n if (autofillDraggingTo) {\n return false;\n }\n\n const fullAddress = `${table.sheetPrefix(!differentSheetFocused)}${address}`;\n const editing = !!(sheetContext?.editingCell || editingCell);\n if (editing) {\n const inserted = insertRef(lastInput, fullAddress);\n if (inserted) {\n return false;\n }\n }\n dispatch(setEditingCell(''));\n dispatch(setContextMenuPosition({ y: -1, x: -1 }));\n input.focus();\n if (e.shiftKey) {\n dispatch(drag({ y, x }));\n return;\n } else {\n dispatch(choose({ y, x }));\n dispatch(select({ startY: y, startX: x, endY: -1, endX: -1 }));\n _setEditorRect();\n }\n const valueString = table.stringify({ y, x });\n dispatch(setInputting(valueString));\n }}\n onDoubleClick={(e) => {\n e.preventDefault();\n const dblclick = document.createEvent('MouseEvents');\n dblclick.initEvent('dblclick', true, true);\n input.dispatchEvent(dblclick);\n return false;\n }}\n draggable\n onDragStart={(e) => {\n if (autofillDraggingTo) {\n return false;\n }\n e.dataTransfer.setDragImage(DUMMY_IMG, 0, 0);\n dispatch(select({ startY: y, startX: x, endY: y, endX: x }));\n const insertable = isRefInsertable(lastInput);\n if (insertable) {\n return true;\n } else if (insertable != null) {\n writeCell(input.value);\n }\n dispatch(choose({ y, x }));\n input.focus();\n dispatch(setInputting(''));\n }}\n onDragEnd={() => {\n if (autofillDraggingTo) {\n if (autofillDraggingTo.x !== x || autofillDraggingTo.y !== y) {\n const autofill = new Autofill(store, autofillDraggingTo);\n dispatch(updateTable(autofill.applied));\n dispatch(select(areaToZone(autofill.wholeArea)));\n input.focus();\n }\n dispatch(setAutofillDraggingTo(null));\n return false;\n }\n const { height: h, width: w } = zoneShape(selectingZone);\n if (h + w === 0) {\n dispatch(select({ startY: -1, startX: -1, endY: -1, endX: -1 }));\n }\n if (isRefInsertable(lastInput)) {\n dispatch(select({ startY: -1, startX: -1, endY: -1, endX: -1 }));\n }\n lastFocusedRef.current?.focus();\n }}\n onDragEnter={() => {\n if (autofillDraggingTo) {\n if (!among(selectingArea, { x, y })) {\n dispatch(setAutofillDraggingTo({ x, y }));\n }\n return false;\n }\n if (leftHeaderSelecting) {\n dispatch(drag({ y: table.getNumRows(), x }));\n return false;\n }\n if (topHeaderSelecting) {\n dispatch(drag({ y, x: table.getNumCols() }));\n return false;\n }\n dispatch(drag({ y, x }));\n\n const newArea = zoneToArea({ ...selectingZone, endY: y, endX: x });\n const fullRange = `${table.sheetPrefix(!differentSheetFocused)}${areaToRange(newArea)}`;\n insertRef(lastInput, fullRange);\n sheetContext?.forceRender?.(); // Force drawing because the formula is not reflected in largeInput\n return true;\n }}\n >\n <div className={`gs-cell-inner-wrap`}>\n <div\n className={'gs-cell-inner'}\n style={{\n ...cell?.style,\n justifyContent: cell?.justifyContent || 'left',\n alignItems: cell?.alignItems || 'start',\n }}\n >\n {errorMessage && <div className=\"gs-formula-error-triangle\" title={errorMessage} />}\n {showAddress && <div className=\"gs-cell-label\">{address}</div>}\n <div className=\"gs-cell-rendered\">{rendered}</div>\n </div>\n {((!editing && pointed && selectingArea.bottom === -1) ||\n (selectingArea.bottom === y && selectingArea.right === x)) && (\n <div\n className=\"gs-autofill-drag\"\n draggable\n onDragStart={(e) => {\n e.dataTransfer.setDragImage(DUMMY_IMG, 0, 0);\n dispatch(setAutofillDraggingTo({ x, y }));\n e.stopPropagation();\n }}\n ></div>\n )}\n </div>\n </td>\n );\n});\n"],"names":["React","editing"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Cell.js","sources":["../../components/Cell.tsx"],"sourcesContent":["import React from 'react';\nimport { x2c, y2r } from '../lib/converters';\nimport { zoneToArea, among, zoneShape, areaToZone, areaToRange } from '../lib/structs';\nimport {\n choose,\n select,\n drag,\n write,\n setEditorRect,\n setContextMenuPosition,\n setAutofillDraggingTo,\n updateTable,\n setEditingCell,\n setInputting,\n} from '../store/actions';\n\nimport { DUMMY_IMG } from '../constants';\n\nimport { Context } from '../store';\nimport { FormulaError } from '../formula/evaluator';\nimport { Autofill } from '../lib/autofill';\nimport { insertRef, isRefInsertable } from '../lib/input';\nimport { useSheetContext } from './SheetProvider';\n\ntype Props = {\n y: number;\n x: number;\n operationStyle?: React.CSSProperties;\n};\n\nexport const Cell: React.FC<Props> = React.memo(({ y, x, operationStyle }) => {\n const rowId = y2r(y);\n const colId = x2c(x);\n const address = `${colId}${rowId}`;\n const { store, dispatch } = React.useContext(Context);\n const isFirstPointed = React.useRef(true);\n\n const [sheetProvided, sheetContext] = useSheetContext();\n\n const cellRef = React.useRef<HTMLTableCellElement | null>(null);\n const {\n table,\n editingCell,\n choosing,\n selectingZone,\n leftHeaderSelecting,\n topHeaderSelecting,\n editorRef,\n showAddress,\n autofillDraggingTo,\n lastEdited,\n } = store;\n\n // Whether the focus is on another sheet\n const differentSheetFocused = sheetProvided && sheetContext?.lastFocusedRef !== store.lastFocusedRef;\n\n const lastFocusedRef = sheetContext?.lastFocusedRef || store.lastFocusedRef;\n\n const selectingArea = zoneToArea(selectingZone); // (top, left) -> (bottom, right)\n\n const editing = editingCell === address;\n const xEditing = !sheetProvided || sheetContext?.editingCell === sheetContext?.choosingCell;\n const pointed = choosing.y === y && choosing.x === x;\n const _setEditorRect = React.useCallback(() => {\n const rect = cellRef.current!.getBoundingClientRect();\n dispatch(\n setEditorRect({\n y: rect.y,\n x: rect.x,\n height: rect.height,\n width: rect.width,\n }),\n );\n }, []);\n\n React.useEffect(() => {\n // Avoid setting coordinates on the initial render to account for shifts caused by redrawing due to virtualization.\n if (pointed && !isFirstPointed.current) {\n _setEditorRect();\n if (!editing) {\n dispatch(setInputting(table.stringify({ y, x })));\n }\n return;\n }\n isFirstPointed.current = false;\n }, [pointed, editing]);\n const cell = table.getByPoint({ y, x });\n const writeCell = (value: string) => {\n if (lastEdited !== value) {\n dispatch(write(value));\n return;\n }\n };\n\n let errorMessage = '';\n let rendered;\n try {\n rendered = table.render({ y, x }, writeCell);\n } catch (e: any) {\n if (e instanceof FormulaError) {\n errorMessage = e.message;\n rendered = e.code;\n } else {\n errorMessage = e.message;\n rendered = '#UNKNOWN';\n console.error(e);\n }\n // TODO: debug flag\n }\n const lastInput = lastFocusedRef.current;\n const input = editorRef.current;\n if (!input) {\n return null;\n }\n\n return (\n <td\n key={x}\n ref={cellRef}\n data-x={x}\n data-y={y}\n data-address={address}\n className={`gs-cell ${among(selectingArea, { y, x }) ? 'gs-selecting' : ''} ${pointed ? 'gs-choosing' : ''} ${\n editing ? 'gs-editing' : ''\n }`}\n style={{\n ...cell?.style,\n ...operationStyle,\n }}\n onContextMenu={(e) => {\n e.preventDefault();\n dispatch(setContextMenuPosition({ y: e.clientY, x: e.clientX }));\n return false;\n }}\n onClick={(e) => {\n if (autofillDraggingTo) {\n return false;\n }\n\n const fullAddress = `${table.sheetPrefix(!differentSheetFocused)}${address}`;\n const editing = !!(sheetContext?.editingCell || editingCell);\n if (editing) {\n const inserted = insertRef(lastInput, fullAddress);\n if (inserted) {\n return false;\n }\n }\n dispatch(setEditingCell(''));\n dispatch(setContextMenuPosition({ y: -1, x: -1 }));\n input.focus();\n if (e.shiftKey) {\n dispatch(drag({ y, x }));\n return;\n } else {\n dispatch(choose({ y, x }));\n dispatch(select({ startY: y, startX: x, endY: -1, endX: -1 }));\n _setEditorRect();\n }\n const valueString = table.stringify({ y, x });\n dispatch(setInputting(valueString));\n }}\n onDoubleClick={(e) => {\n e.preventDefault();\n setEditingCell(address);\n const dblclick = document.createEvent('MouseEvents');\n dblclick.initEvent('dblclick', true, true);\n input.dispatchEvent(dblclick);\n return false;\n }}\n draggable\n onDragStart={(e) => {\n if (autofillDraggingTo) {\n return false;\n }\n e.dataTransfer.setDragImage(DUMMY_IMG, 0, 0);\n dispatch(select({ startY: y, startX: x, endY: y, endX: x }));\n const insertable = isRefInsertable(lastInput);\n if (insertable && xEditing) {\n return true;\n } else if (insertable != null) {\n writeCell(input.value);\n }\n dispatch(choose({ y, x }));\n input.focus();\n dispatch(setInputting(''));\n }}\n onDragEnd={() => {\n if (autofillDraggingTo) {\n if (autofillDraggingTo.x !== x || autofillDraggingTo.y !== y) {\n const autofill = new Autofill(store, autofillDraggingTo);\n dispatch(updateTable(autofill.applied));\n dispatch(select(areaToZone(autofill.wholeArea)));\n input.focus();\n }\n dispatch(setAutofillDraggingTo(null));\n return false;\n }\n const { height: h, width: w } = zoneShape(selectingZone);\n if (h + w === 0) {\n dispatch(select({ startY: -1, startX: -1, endY: -1, endX: -1 }));\n }\n if (isRefInsertable(lastInput)) {\n dispatch(select({ startY: -1, startX: -1, endY: -1, endX: -1 }));\n }\n lastFocusedRef.current?.focus();\n }}\n onDragEnter={() => {\n if (autofillDraggingTo) {\n if (!among(selectingArea, { x, y })) {\n dispatch(setAutofillDraggingTo({ x, y }));\n }\n return false;\n }\n if (leftHeaderSelecting) {\n dispatch(drag({ y: table.getNumRows(), x }));\n return false;\n }\n if (topHeaderSelecting) {\n dispatch(drag({ y, x: table.getNumCols() }));\n return false;\n }\n dispatch(drag({ y, x }));\n\n const newArea = zoneToArea({ ...selectingZone, endY: y, endX: x });\n const fullRange = `${table.sheetPrefix(!differentSheetFocused)}${areaToRange(newArea)}`;\n insertRef(lastInput, fullRange);\n sheetContext?.forceRender?.(); // Force drawing because the formula is not reflected in largeInput\n return true;\n }}\n >\n <div className={`gs-cell-inner-wrap`}>\n <div\n className={'gs-cell-inner'}\n style={{\n ...cell?.style,\n justifyContent: cell?.justifyContent || 'left',\n alignItems: cell?.alignItems || 'start',\n }}\n >\n {errorMessage && <div className=\"gs-formula-error-triangle\" title={errorMessage} />}\n {showAddress && <div className=\"gs-cell-label\">{address}</div>}\n <div className=\"gs-cell-rendered\">{rendered}</div>\n </div>\n {((!editing && pointed && selectingArea.bottom === -1) ||\n (selectingArea.bottom === y && selectingArea.right === x)) && (\n <div\n className=\"gs-autofill-drag\"\n draggable\n onDragStart={(e) => {\n e.dataTransfer.setDragImage(DUMMY_IMG, 0, 0);\n dispatch(setAutofillDraggingTo({ x, y }));\n e.stopPropagation();\n }}\n ></div>\n )}\n </div>\n </td>\n );\n});\n"],"names":["React","editing"],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import { ModeType } from '../types';
|
|
2
|
+
import { CursorStateType, ModeType } from '../types';
|
|
3
3
|
type Props = {
|
|
4
4
|
mode: ModeType;
|
|
5
|
+
handleKeyUp?: (e: React.KeyboardEvent<HTMLTextAreaElement>, points: CursorStateType) => void;
|
|
5
6
|
};
|
|
6
7
|
export declare const Editor: React.FC<Props>;
|
|
7
8
|
export declare const editorStyle: (text: string) => React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Editor.d.ts","sourceRoot":"","sources":["../../components/Editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AA8B1B,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Editor.d.ts","sourceRoot":"","sources":["../../components/Editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AA8B1B,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGrD,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CAC9F,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA4alC,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,sBAuCvC,CAAC"}
|
|
@@ -4,14 +4,14 @@ import { x2c, y2r } from "../lib/converters.js";
|
|
|
4
4
|
import { clip } from "../lib/clipboard.js";
|
|
5
5
|
import { setEditingCell, setInputting, setLastEdited, setLastFocusedRef, redo, undo, cut, paste, setSearchQuery, setEntering, copy, select, arrow, escape, clear, walk, write } from "../store/actions.js";
|
|
6
6
|
import { Context } from "../store/index.js";
|
|
7
|
-
import { areaToZone } from "../lib/structs.js";
|
|
7
|
+
import { zoneToArea, areaToZone } from "../lib/structs.js";
|
|
8
8
|
import { isPrevented, Write } from "../lib/prevention.js";
|
|
9
9
|
import { expandInput, insertTextAtCursor } from "../lib/input.js";
|
|
10
10
|
import { useSheetContext } from "./SheetProvider.js";
|
|
11
11
|
import { Lexer } from "../formula/evaluator.js";
|
|
12
12
|
import { REF_PALETTE } from "../lib/palette.js";
|
|
13
13
|
import { Fixed } from "./Fixed.js";
|
|
14
|
-
const Editor = ({ mode }) => {
|
|
14
|
+
const Editor = ({ mode, handleKeyUp }) => {
|
|
15
15
|
var _a, _b;
|
|
16
16
|
const { store, dispatch } = React__default.useContext(Context);
|
|
17
17
|
const {
|
|
@@ -411,7 +411,16 @@ const Editor = ({ mode }) => {
|
|
|
411
411
|
expandInput(input);
|
|
412
412
|
dispatch(setInputting(e.currentTarget.value));
|
|
413
413
|
},
|
|
414
|
-
onKeyDown: handleKeyDown
|
|
414
|
+
onKeyDown: handleKeyDown,
|
|
415
|
+
onKeyUp: (e) => {
|
|
416
|
+
e.currentTarget;
|
|
417
|
+
const selectingArea = zoneToArea(store.selectingZone);
|
|
418
|
+
handleKeyUp == null ? void 0 : handleKeyUp(e, {
|
|
419
|
+
pointing: choosing,
|
|
420
|
+
selectingFrom: { y: selectingArea.top, x: selectingArea.left },
|
|
421
|
+
selectingTo: { y: selectingArea.bottom, x: selectingArea.right }
|
|
422
|
+
});
|
|
423
|
+
}
|
|
415
424
|
}
|
|
416
425
|
)
|
|
417
426
|
] })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Editor.js","sources":["../../components/Editor.tsx"],"sourcesContent":["import React from 'react';\nimport { x2c, y2r } from '../lib/converters';\nimport { clip } from '../lib/clipboard';\nimport {\n clear,\n escape,\n select,\n setEditingCell,\n undo,\n redo,\n arrow,\n walk,\n write,\n copy,\n cut,\n paste,\n setSearchQuery,\n setEntering,\n setLastEdited,\n setLastFocusedRef,\n setInputting,\n} from '../store/actions';\n\nimport { Context } from '../store';\nimport { areaToZone } from '../lib/structs';\nimport * as prevention from '../lib/prevention';\nimport { expandInput, insertTextAtCursor } from '../lib/input';\nimport { useSheetContext } from './SheetProvider';\nimport { Lexer } from '../formula/evaluator';\nimport { REF_PALETTE } from '../lib/palette';\nimport { ModeType } from '../types';\nimport { Fixed } from './Fixed';\n\ntype Props = {\n mode: ModeType;\n};\n\nexport const Editor: React.FC<Props> = ({ mode }: Props) => {\n const { store, dispatch } = React.useContext(Context);\n const {\n showAddress,\n editorRect,\n editingCell,\n choosing,\n inputting,\n selectingZone,\n searchQuery,\n editorRef,\n largeEditorRef,\n searchInputRef,\n editingOnEnter,\n onSave,\n table,\n sheetId,\n } = store;\n\n const [, sheetContext] = useSheetContext();\n React.useEffect(() => {\n editorRef?.current?.focus?.({ preventScroll: true });\n }, [editorRef]);\n\n React.useEffect(() => {\n if (!sheetContext?.lastFocusedRef) {\n return;\n }\n if (sheetContext.lastFocusedRef === editorRef) {\n return;\n }\n if (sheetContext.lastFocusedRef === largeEditorRef) {\n return;\n }\n dispatch(setEditingCell(''));\n }, [sheetContext?.lastFocusedRef]);\n React.useEffect(() => {\n sheetContext?.setEditingCell?.(editingCell);\n }, [editingCell]);\n\n const { y, x } = choosing;\n const rowId = `${y2r(y)}`;\n const colId = x2c(x);\n const address = `${colId}${rowId}`;\n const editing = editingCell === address;\n\n const cell = table.getByPoint({ y, x });\n const value: any = cell?.value;\n const valueString = table.stringify({ y, x }, value);\n const [before, setBefore] = React.useState<string>(valueString);\n React.useEffect(() => {\n setBefore(valueString);\n }, [choosing]);\n\n const { y: top, x: left, height, width } = editorRect;\n\n const writeCell = (value: string) => {\n if (before !== value) {\n dispatch(write(value));\n }\n setBefore(value);\n };\n\n const numLines = valueString.split('\\n').length;\n const [isKeyDown, setIsKeyDown] = React.useState(false);\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (isKeyDown) {\n return;\n }\n // do not debounce it if control key is down.\n if (!(e.key === 'Meta' || e.key === 'Control')) {\n setIsKeyDown(true);\n const timeout = window.setTimeout(() => {\n setIsKeyDown(false);\n window.clearTimeout(timeout);\n }, 10);\n }\n const input = e.currentTarget;\n\n const shiftKey = e.shiftKey;\n switch (e.key) {\n case 'Tab': // TAB\n e.preventDefault();\n if (editing) {\n writeCell(input.value);\n dispatch(setEditingCell(''));\n dispatch(setInputting(''));\n }\n dispatch(\n walk({\n numRows: table.getNumRows(),\n numCols: table.getNumCols(),\n deltaY: 0,\n deltaX: shiftKey ? -1 : 1,\n }),\n );\n dispatch(setEditingCell(''));\n resetSize(e.currentTarget);\n return false;\n\n case 'Enter': // ENTER\n if (editing) {\n if (e.altKey) {\n insertTextAtCursor(input, '\\n');\n dispatch(setInputting(input.value));\n e.preventDefault();\n return false;\n } else {\n if (e.nativeEvent.isComposing) {\n return false;\n }\n writeCell(input.value);\n dispatch(setEditingCell(''));\n }\n resetSize(e.currentTarget);\n } else if (editingOnEnter && selectingZone.endY === -1) {\n const dblclick = document.createEvent('MouseEvents');\n dblclick.initEvent('dblclick', true, true);\n input.dispatchEvent(dblclick);\n e.preventDefault();\n return false;\n }\n dispatch(\n walk({\n numRows: table.getNumRows(),\n numCols: table.getNumCols(),\n deltaY: shiftKey ? -1 : 1,\n deltaX: 0,\n }),\n );\n e.preventDefault();\n return false;\n\n case 'Backspace': // BACKSPACE\n if (!editing) {\n dispatch(clear(null));\n return false;\n }\n break;\n case 'Shift': // SHIFT\n return false;\n\n case 'Control': // CTRL\n return false;\n\n case 'Alt': // OPTION\n return false;\n\n case 'Meta': // COMMAND\n return false;\n\n case 'NumLock': // NUMLOCK\n return false;\n\n case 'Escape': // ESCAPE\n dispatch(escape(null));\n dispatch(setSearchQuery(undefined));\n // input.blur();\n return false;\n\n case 'ArrowLeft': // LEFT\n if (!editing) {\n dispatch(\n arrow({\n shiftKey,\n numRows: table.getNumRows(),\n numCols: table.getNumCols(),\n deltaY: 0,\n deltaX: -1,\n }),\n );\n return false;\n }\n break;\n case 'ArrowUp': // UP\n if (!editing) {\n dispatch(\n arrow({\n shiftKey,\n numRows: table.getNumRows(),\n numCols: table.getNumCols(),\n deltaY: -1,\n deltaX: 0,\n }),\n );\n return false;\n }\n break;\n case 'ArrowRight': // RIGHT\n if (!editing) {\n dispatch(\n arrow({\n shiftKey,\n numRows: table.getNumRows(),\n numCols: table.getNumCols(),\n deltaY: 0,\n deltaX: 1,\n }),\n );\n return false;\n }\n break;\n case 'ArrowDown': // DOWN\n if (!editing) {\n dispatch(\n arrow({\n shiftKey,\n numRows: table.getNumRows(),\n numCols: table.getNumCols(),\n deltaY: 1,\n deltaX: 0,\n }),\n );\n return false;\n }\n break;\n case 'a': // A\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n dispatch(\n select({\n startY: 1,\n startX: 1,\n endY: table.getNumRows(),\n endX: table.getNumCols(),\n }),\n );\n return false;\n }\n }\n break;\n case 'c': // C\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n const area = clip(store);\n dispatch(copy(areaToZone(area)));\n input.focus(); // refocus\n return false;\n }\n }\n break;\n case 'f': // F\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n if (typeof searchQuery === 'undefined') {\n dispatch(setSearchQuery(''));\n }\n dispatch(setEntering(false));\n window.setTimeout(() => searchInputRef.current!.focus(), 100);\n return false;\n }\n }\n break;\n case 'r': // R\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n dispatch(redo(null));\n window.setTimeout(() => dispatch(setInputting('')), 100); // resetting textarea\n return false;\n }\n }\n break;\n case 's': // S\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n onSave &&\n onSave(table, {\n pointing: choosing,\n selectingFrom: {\n y: selectingZone.startY,\n x: selectingZone.startX,\n },\n selectingTo: {\n y: selectingZone.endY,\n x: selectingZone.endX,\n },\n });\n return false;\n }\n }\n break;\n case 'v': // V\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n window.setTimeout(() => {\n dispatch(paste({ text: input.value }));\n dispatch(setInputting(''));\n }, 50);\n return false;\n }\n }\n break;\n case 'x': // X\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n const area = clip(store);\n dispatch(cut(areaToZone(area)));\n input.focus(); // refocus\n\n return false;\n }\n }\n break;\n case 'z': // Z\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n if (e.shiftKey) {\n dispatch(redo(null));\n //window.setTimeout(() => dispatch(setInputting('')), 100); // resetting textarea\n } else {\n dispatch(undo(null));\n }\n return false;\n }\n }\n break;\n case ';': // semicolon\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n // MAYBE: need to aware timezone.\n writeCell(new Date().toDateString());\n }\n }\n break;\n }\n if (e.ctrlKey || e.metaKey) {\n return false;\n }\n if (prevention.isPrevented(cell?.prevention, prevention.Write)) {\n console.warn('This cell is protected from writing.');\n return false;\n }\n dispatch(setEditingCell(address));\n if (!editing) {\n dispatch(setInputting(''));\n }\n return false;\n };\n\n return (\n <Fixed\n className={`gs-editor ${editing ? 'gs-editing' : ''}`}\n style={editing ? { top, left, height } : {}}\n {...{\n 'data-mode': mode,\n 'data-sheet-id': sheetId,\n }}\n >\n {showAddress && <div className=\"gs-cell-label\">{address}</div>}\n <div className=\"gs-editor-inner\" style={{ width }}>\n <pre\n className=\"gs-editor-hl\"\n style={{\n //...cell?.style,\n height: editorRef.current?.scrollHeight,\n width: (editorRef.current?.scrollWidth ?? 0) - 4,\n }}\n >\n {editorStyle(inputting)}\n </pre>\n <textarea\n autoFocus={true}\n spellCheck={false}\n draggable={false}\n ref={editorRef}\n rows={numLines}\n onFocus={() => {\n dispatch(setLastFocusedRef(editorRef));\n sheetContext?.setLastFocusedRef?.(editorRef);\n }}\n style={{ minWidth: width, minHeight: height }}\n onDoubleClick={(e) => {\n if (prevention.isPrevented(cell?.prevention, prevention.Write)) {\n console.warn('This cell is protected from writing.');\n return;\n }\n const input = e.currentTarget;\n resetSize(input);\n if (!editing) {\n dispatch(setInputting(valueString));\n dispatch(setEditingCell(address));\n window.setTimeout(() => {\n input.style.width = `${input.scrollWidth}px`;\n input.style.height = `${input.scrollHeight}px`;\n const length = new String(valueString).length;\n input.setSelectionRange(length, length);\n }, 20);\n }\n }}\n onBlur={(e) => {\n dispatch(setLastEdited(before));\n if (e.target.value.startsWith('=')) {\n return true;\n } else {\n if (editing) {\n writeCell(e.target.value);\n }\n }\n resetSize(e.target);\n }}\n value={inputting}\n onChange={(e) => {\n const input = e.currentTarget;\n expandInput(input);\n dispatch(setInputting(e.currentTarget.value));\n }}\n onKeyDown={handleKeyDown}\n />\n </div>\n </Fixed>\n );\n};\n\nexport const editorStyle = (text: string) => {\n if (text[0] !== '=') {\n return <>{text}</>;\n }\n const lexer = new Lexer(text.substring(1));\n lexer.tokenize();\n let palletIndex = 0;\n const exists: { [ref: string]: number } = {};\n return (\n <>\n =\n {lexer.tokens.map((token, i) => {\n if (token.type === 'REF' || token.type === 'RANGE') {\n const normalizedToken = token.stringify();\n const existsIndex = exists[normalizedToken];\n if (existsIndex !== undefined) {\n return (\n <span key={i} style={{ color: REF_PALETTE[existsIndex % REF_PALETTE.length] }}>\n {token.stringify()}\n </span>\n );\n }\n const color = REF_PALETTE[palletIndex % REF_PALETTE.length];\n exists[normalizedToken] = palletIndex++;\n return (\n <span key={i} style={{ color }} className={`gs-token-type-${token.type}`}>\n {normalizedToken}\n </span>\n );\n }\n\n return (\n <span key={i} className={`gs-token-type-${token.type} gs-token-entity-type-${typeof token.entity}`}>\n {token.stringify()}\n </span>\n );\n })}\n </>\n );\n};\n\nconst resetSize = (input: HTMLTextAreaElement) => {\n input.style.width = '0px';\n input.style.height = '0px';\n};\n"],"names":["React","_b","_a","value","prevention.isPrevented","prevention.Write"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Editor.js","sources":["../../components/Editor.tsx"],"sourcesContent":["import React from 'react';\nimport { x2c, y2r } from '../lib/converters';\nimport { clip } from '../lib/clipboard';\nimport {\n clear,\n escape,\n select,\n setEditingCell,\n undo,\n redo,\n arrow,\n walk,\n write,\n copy,\n cut,\n paste,\n setSearchQuery,\n setEntering,\n setLastEdited,\n setLastFocusedRef,\n setInputting,\n} from '../store/actions';\n\nimport { Context } from '../store';\nimport { areaToZone, zoneToArea } from '../lib/structs';\nimport * as prevention from '../lib/prevention';\nimport { expandInput, insertTextAtCursor } from '../lib/input';\nimport { useSheetContext } from './SheetProvider';\nimport { Lexer } from '../formula/evaluator';\nimport { REF_PALETTE } from '../lib/palette';\nimport { CursorStateType, ModeType } from '../types';\nimport { Fixed } from './Fixed';\n\ntype Props = {\n mode: ModeType;\n handleKeyUp?: (e: React.KeyboardEvent<HTMLTextAreaElement>, points: CursorStateType) => void;\n};\n\nexport const Editor: React.FC<Props> = ({ mode, handleKeyUp }: Props) => {\n const { store, dispatch } = React.useContext(Context);\n const {\n showAddress,\n editorRect,\n editingCell,\n choosing,\n inputting,\n selectingZone,\n searchQuery,\n editorRef,\n largeEditorRef,\n searchInputRef,\n editingOnEnter,\n onSave,\n table,\n sheetId,\n } = store;\n\n const [, sheetContext] = useSheetContext();\n React.useEffect(() => {\n editorRef?.current?.focus?.({ preventScroll: true });\n }, [editorRef]);\n\n React.useEffect(() => {\n if (!sheetContext?.lastFocusedRef) {\n return;\n }\n if (sheetContext.lastFocusedRef === editorRef) {\n return;\n }\n if (sheetContext.lastFocusedRef === largeEditorRef) {\n return;\n }\n dispatch(setEditingCell(''));\n }, [sheetContext?.lastFocusedRef]);\n React.useEffect(() => {\n sheetContext?.setEditingCell?.(editingCell);\n }, [editingCell]);\n\n const { y, x } = choosing;\n const rowId = `${y2r(y)}`;\n const colId = x2c(x);\n const address = `${colId}${rowId}`;\n const editing = editingCell === address;\n\n const cell = table.getByPoint({ y, x });\n const value: any = cell?.value;\n const valueString = table.stringify({ y, x }, value);\n const [before, setBefore] = React.useState<string>(valueString);\n React.useEffect(() => {\n setBefore(valueString);\n }, [choosing]);\n\n const { y: top, x: left, height, width } = editorRect;\n\n const writeCell = (value: string) => {\n if (before !== value) {\n dispatch(write(value));\n }\n setBefore(value);\n };\n\n const numLines = valueString.split('\\n').length;\n const [isKeyDown, setIsKeyDown] = React.useState(false);\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (isKeyDown) {\n return;\n }\n // do not debounce it if control key is down.\n if (!(e.key === 'Meta' || e.key === 'Control')) {\n setIsKeyDown(true);\n const timeout = window.setTimeout(() => {\n setIsKeyDown(false);\n window.clearTimeout(timeout);\n }, 10);\n }\n const input = e.currentTarget;\n\n const shiftKey = e.shiftKey;\n switch (e.key) {\n case 'Tab': // TAB\n e.preventDefault();\n if (editing) {\n writeCell(input.value);\n dispatch(setEditingCell(''));\n dispatch(setInputting(''));\n }\n dispatch(\n walk({\n numRows: table.getNumRows(),\n numCols: table.getNumCols(),\n deltaY: 0,\n deltaX: shiftKey ? -1 : 1,\n }),\n );\n dispatch(setEditingCell(''));\n resetSize(e.currentTarget);\n return false;\n\n case 'Enter': // ENTER\n if (editing) {\n if (e.altKey) {\n insertTextAtCursor(input, '\\n');\n dispatch(setInputting(input.value));\n e.preventDefault();\n return false;\n } else {\n if (e.nativeEvent.isComposing) {\n return false;\n }\n writeCell(input.value);\n dispatch(setEditingCell(''));\n }\n resetSize(e.currentTarget);\n } else if (editingOnEnter && selectingZone.endY === -1) {\n const dblclick = document.createEvent('MouseEvents');\n dblclick.initEvent('dblclick', true, true);\n input.dispatchEvent(dblclick);\n e.preventDefault();\n return false;\n }\n dispatch(\n walk({\n numRows: table.getNumRows(),\n numCols: table.getNumCols(),\n deltaY: shiftKey ? -1 : 1,\n deltaX: 0,\n }),\n );\n e.preventDefault();\n return false;\n\n case 'Backspace': // BACKSPACE\n if (!editing) {\n dispatch(clear(null));\n return false;\n }\n break;\n case 'Shift': // SHIFT\n return false;\n\n case 'Control': // CTRL\n return false;\n\n case 'Alt': // OPTION\n return false;\n\n case 'Meta': // COMMAND\n return false;\n\n case 'NumLock': // NUMLOCK\n return false;\n\n case 'Escape': // ESCAPE\n dispatch(escape(null));\n dispatch(setSearchQuery(undefined));\n // input.blur();\n return false;\n\n case 'ArrowLeft': // LEFT\n if (!editing) {\n dispatch(\n arrow({\n shiftKey,\n numRows: table.getNumRows(),\n numCols: table.getNumCols(),\n deltaY: 0,\n deltaX: -1,\n }),\n );\n return false;\n }\n break;\n case 'ArrowUp': // UP\n if (!editing) {\n dispatch(\n arrow({\n shiftKey,\n numRows: table.getNumRows(),\n numCols: table.getNumCols(),\n deltaY: -1,\n deltaX: 0,\n }),\n );\n return false;\n }\n break;\n case 'ArrowRight': // RIGHT\n if (!editing) {\n dispatch(\n arrow({\n shiftKey,\n numRows: table.getNumRows(),\n numCols: table.getNumCols(),\n deltaY: 0,\n deltaX: 1,\n }),\n );\n return false;\n }\n break;\n case 'ArrowDown': // DOWN\n if (!editing) {\n dispatch(\n arrow({\n shiftKey,\n numRows: table.getNumRows(),\n numCols: table.getNumCols(),\n deltaY: 1,\n deltaX: 0,\n }),\n );\n return false;\n }\n break;\n case 'a': // A\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n dispatch(\n select({\n startY: 1,\n startX: 1,\n endY: table.getNumRows(),\n endX: table.getNumCols(),\n }),\n );\n return false;\n }\n }\n break;\n case 'c': // C\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n const area = clip(store);\n dispatch(copy(areaToZone(area)));\n input.focus(); // refocus\n return false;\n }\n }\n break;\n case 'f': // F\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n if (typeof searchQuery === 'undefined') {\n dispatch(setSearchQuery(''));\n }\n dispatch(setEntering(false));\n window.setTimeout(() => searchInputRef.current!.focus(), 100);\n return false;\n }\n }\n break;\n case 'r': // R\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n dispatch(redo(null));\n window.setTimeout(() => dispatch(setInputting('')), 100); // resetting textarea\n return false;\n }\n }\n break;\n case 's': // S\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n onSave &&\n onSave(table, {\n pointing: choosing,\n selectingFrom: {\n y: selectingZone.startY,\n x: selectingZone.startX,\n },\n selectingTo: {\n y: selectingZone.endY,\n x: selectingZone.endX,\n },\n });\n return false;\n }\n }\n break;\n case 'v': // V\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n window.setTimeout(() => {\n dispatch(paste({ text: input.value }));\n dispatch(setInputting(''));\n }, 50);\n return false;\n }\n }\n break;\n case 'x': // X\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n const area = clip(store);\n dispatch(cut(areaToZone(area)));\n input.focus(); // refocus\n\n return false;\n }\n }\n break;\n case 'z': // Z\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n if (e.shiftKey) {\n dispatch(redo(null));\n //window.setTimeout(() => dispatch(setInputting('')), 100); // resetting textarea\n } else {\n dispatch(undo(null));\n }\n return false;\n }\n }\n break;\n case ';': // semicolon\n if (e.ctrlKey || e.metaKey) {\n if (!editing) {\n e.preventDefault();\n // MAYBE: need to aware timezone.\n writeCell(new Date().toDateString());\n }\n }\n break;\n }\n if (e.ctrlKey || e.metaKey) {\n return false;\n }\n if (prevention.isPrevented(cell?.prevention, prevention.Write)) {\n console.warn('This cell is protected from writing.');\n return false;\n }\n dispatch(setEditingCell(address));\n if (!editing) {\n dispatch(setInputting(''));\n }\n return false;\n };\n\n return (\n <Fixed\n className={`gs-editor ${editing ? 'gs-editing' : ''}`}\n style={editing ? { top, left, height } : {}}\n {...{\n 'data-mode': mode,\n 'data-sheet-id': sheetId,\n }}\n >\n {showAddress && <div className=\"gs-cell-label\">{address}</div>}\n <div className=\"gs-editor-inner\" style={{ width }}>\n <pre\n className=\"gs-editor-hl\"\n style={{\n //...cell?.style,\n height: editorRef.current?.scrollHeight,\n width: (editorRef.current?.scrollWidth ?? 0) - 4,\n }}\n >\n {editorStyle(inputting)}\n </pre>\n <textarea\n autoFocus={true}\n spellCheck={false}\n draggable={false}\n ref={editorRef}\n rows={numLines}\n onFocus={() => {\n dispatch(setLastFocusedRef(editorRef));\n sheetContext?.setLastFocusedRef?.(editorRef);\n }}\n style={{ minWidth: width, minHeight: height }}\n onDoubleClick={(e) => {\n if (prevention.isPrevented(cell?.prevention, prevention.Write)) {\n console.warn('This cell is protected from writing.');\n return;\n }\n const input = e.currentTarget;\n resetSize(input);\n if (!editing) {\n dispatch(setInputting(valueString));\n dispatch(setEditingCell(address));\n window.setTimeout(() => {\n input.style.width = `${input.scrollWidth}px`;\n input.style.height = `${input.scrollHeight}px`;\n const length = new String(valueString).length;\n input.setSelectionRange(length, length);\n }, 20);\n }\n }}\n onBlur={(e) => {\n dispatch(setLastEdited(before));\n if (e.target.value.startsWith('=')) {\n return true;\n } else {\n if (editing) {\n writeCell(e.target.value);\n }\n }\n resetSize(e.target);\n }}\n value={inputting}\n onChange={(e) => {\n const input = e.currentTarget;\n expandInput(input);\n dispatch(setInputting(e.currentTarget.value));\n }}\n onKeyDown={handleKeyDown}\n onKeyUp={(e) => {\n const input = e.currentTarget;\n const selectingArea = zoneToArea(store.selectingZone);\n handleKeyUp?.(e, {\n pointing: choosing,\n selectingFrom: { y: selectingArea.top, x: selectingArea.left },\n selectingTo: { y: selectingArea.bottom, x: selectingArea.right },\n });\n }}\n />\n </div>\n </Fixed>\n );\n};\n\nexport const editorStyle = (text: string) => {\n if (text[0] !== '=') {\n return <>{text}</>;\n }\n const lexer = new Lexer(text.substring(1));\n lexer.tokenize();\n let palletIndex = 0;\n const exists: { [ref: string]: number } = {};\n return (\n <>\n =\n {lexer.tokens.map((token, i) => {\n if (token.type === 'REF' || token.type === 'RANGE') {\n const normalizedToken = token.stringify();\n const existsIndex = exists[normalizedToken];\n if (existsIndex !== undefined) {\n return (\n <span key={i} style={{ color: REF_PALETTE[existsIndex % REF_PALETTE.length] }}>\n {token.stringify()}\n </span>\n );\n }\n const color = REF_PALETTE[palletIndex % REF_PALETTE.length];\n exists[normalizedToken] = palletIndex++;\n return (\n <span key={i} style={{ color }} className={`gs-token-type-${token.type}`}>\n {normalizedToken}\n </span>\n );\n }\n\n return (\n <span key={i} className={`gs-token-type-${token.type} gs-token-entity-type-${typeof token.entity}`}>\n {token.stringify()}\n </span>\n );\n })}\n </>\n );\n};\n\nconst resetSize = (input: HTMLTextAreaElement) => {\n input.style.width = '0px';\n input.style.height = '0px';\n};\n"],"names":["React","_b","_a","value","prevention.isPrevented","prevention.Write"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridSheet.d.ts","sourceRoot":"","sources":["../../components/GridSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAmC,KAAK,EAAa,MAAM,UAAU,CAAC;AA4B7E,wBAAgB,SAAS,CAAC,EACxB,YAAY,EACZ,SAAc,EACd,QAAQ,EACR,OAAY,EACZ,SAAS,EACT,KAAK,EACL,mBAAwB,GACzB,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"GridSheet.d.ts","sourceRoot":"","sources":["../../components/GridSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAmC,KAAK,EAAa,MAAM,UAAU,CAAC;AA4B7E,wBAAgB,SAAS,CAAC,EACxB,YAAY,EACZ,SAAc,EACd,QAAQ,EACR,OAAY,EACZ,SAAS,EACT,KAAK,EACL,mBAAwB,GACzB,EAAE,KAAK,qBAwLP"}
|
|
@@ -60,6 +60,7 @@ function GridSheet({
|
|
|
60
60
|
maxNumCols,
|
|
61
61
|
headerHeight,
|
|
62
62
|
headerWidth,
|
|
63
|
+
sheetName,
|
|
63
64
|
functions: { ...functions, ...additionalFunctions }
|
|
64
65
|
});
|
|
65
66
|
let sheetId = 0;
|
|
@@ -169,7 +170,7 @@ function GridSheet({
|
|
|
169
170
|
setSheetWidth(options.sheetWidth);
|
|
170
171
|
}
|
|
171
172
|
}, [options.sheetWidth]);
|
|
172
|
-
const { onChange, onSelect } = options;
|
|
173
|
+
const { onChange, onSelect, onKeyUp } = options;
|
|
173
174
|
return /* @__PURE__ */ jsx(Context.Provider, { value: { store, dispatch }, children: /* @__PURE__ */ jsxs(
|
|
174
175
|
"div",
|
|
175
176
|
{
|
|
@@ -192,7 +193,7 @@ function GridSheet({
|
|
|
192
193
|
resize: sheetResize
|
|
193
194
|
},
|
|
194
195
|
children: [
|
|
195
|
-
/* @__PURE__ */ jsx(Editor, { mode }),
|
|
196
|
+
/* @__PURE__ */ jsx(Editor, { mode, handleKeyUp: onKeyUp }),
|
|
196
197
|
/* @__PURE__ */ jsx(Tabular, { tableRef }),
|
|
197
198
|
/* @__PURE__ */ jsx(
|
|
198
199
|
StoreInitializer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridSheet.js","sources":["../../components/GridSheet.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ReducerWithoutAction } from 'react';\n\nimport { CellsByAddressType, OptionsType, Props, StoreType } from '../types';\nimport {\n DEFAULT_HEIGHT,\n DEFAULT_WIDTH,\n HEADER_HEIGHT,\n HEADER_WIDTH,\n SHEET_HEIGHT,\n SHEET_WIDTH,\n HISTORY_LIMIT,\n} from '../constants';\nimport { functions } from '../formula/mapping';\nimport { Context } from '../store';\nimport { reducer as defaultReducer } from '../store/actions';\n\nimport { Editor } from './Editor';\nimport { StoreInitializer } from './StoreInitializer';\nimport { Resizer } from './Resizer';\nimport { Emitter } from './Emitter';\nimport { ContextMenu } from './ContextMenu';\nimport { Table } from '../lib/table';\nimport { Tabular } from './Tabular';\nimport { getMaxSizesFromCells } from '../lib/structs';\nimport { x2c, y2r } from '../lib/converters';\nimport { embedStyle } from '../styles/embedder';\nimport { useSheetContext } from './SheetProvider';\nimport { FormulaBar } from './FormulaBar';\nimport { SearchBar } from './SearchBar';\n\nexport function GridSheet({\n initialCells,\n sheetName = '',\n tableRef,\n options = {},\n className,\n style,\n additionalFunctions = {},\n}: Props) {\n const { sheetResize, showFormulaBar = true, onInit, mode = 'light' } = options;\n const [prevSheetName, setPrevSheetName] = React.useState(sheetName);\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const mainRef = React.useRef<HTMLDivElement | null>(null);\n const searchInputRef = React.useRef<HTMLTextAreaElement | null>(null);\n const editorRef = React.useRef<HTMLTextAreaElement | null>(null);\n const largeEditorRef = React.useRef<HTMLTextAreaElement | null>(null);\n const tabularRef = React.useRef<HTMLDivElement | null>(null);\n const lastFocusedRef = React.useRef<HTMLTextAreaElement | null>(null);\n const [sheetProvided, sheetContext] = useSheetContext();\n\n const [initialState] = React.useState<StoreType>(() => {\n const {\n headerHeight = HEADER_HEIGHT,\n headerWidth = HEADER_WIDTH,\n historyLimit = HISTORY_LIMIT,\n renderers,\n parsers,\n labelers,\n minNumRows,\n maxNumRows,\n minNumCols,\n maxNumCols,\n } = options;\n const table = new Table({\n historyLimit,\n parsers,\n renderers,\n labelers,\n minNumRows,\n maxNumRows,\n minNumCols,\n maxNumCols,\n headerHeight,\n headerWidth,\n functions: { ...functions, ...additionalFunctions },\n });\n let sheetId = 0;\n if (sheetProvided) {\n sheetId = sheetContext.head.current++;\n table.tables = sheetContext.tables.current;\n table.sheets = sheetContext.sheets.current;\n }\n table.tables[sheetId] = table;\n table.sheetId = sheetId;\n table.initialize(initialCells);\n onInit?.(table);\n return {\n sheetId,\n table, // temporary (see StoreInitializer for detail)\n tableInitialized: false,\n rootRef,\n mainRef,\n searchInputRef,\n editorRef,\n largeEditorRef,\n tabularRef,\n lastFocusedRef,\n choosing: { y: 1, x: 1 },\n cutting: false,\n inputting: '',\n selectingZone: { startY: -1, startX: -1, endY: -1, endX: -1 },\n copyingZone: { startY: -1, startX: -1, endY: -1, endX: -1 },\n autofillDraggingTo: null,\n leftHeaderSelecting: false,\n topHeaderSelecting: false,\n editingCell: '',\n editorRect: { y: 0, x: 0, height: 0, width: 0 },\n resizingRect: { y: -1, x: -1, height: -1, width: -1 },\n sheetHeight: 0,\n sheetWidth: 0,\n headerHeight: 0,\n headerWidth: 0,\n entering: false,\n matchingCells: [],\n matchingCellIndex: 0,\n searchCaseSensitive: false,\n editingOnEnter: true,\n showAddress: true,\n contextMenuPosition: { y: -1, x: -1 },\n resizingPositionY: [-1, -1, -1],\n resizingPositionX: [-1, -1, -1],\n minNumRows: 1,\n maxNumRows: -1,\n minNumCols: 1,\n maxNumCols: -1,\n mode: 'light',\n lastEdited: '',\n };\n });\n\n const [store, dispatch] = React.useReducer(\n defaultReducer as unknown as ReducerWithoutAction<StoreType>,\n initialState,\n () => initialState,\n );\n\n React.useEffect(() => {\n embedStyle();\n }, []);\n\n React.useEffect(() => {\n if (!sheetProvided) {\n return;\n }\n sheetContext.tables.current[store.sheetId] = store.table;\n sheetContext?.forceRender?.();\n }, [store.table]);\n\n React.useEffect(() => {\n if (!sheetProvided) {\n return;\n }\n if (prevSheetName !== sheetName) {\n delete sheetContext.sheets.current[prevSheetName];\n setPrevSheetName(sheetName);\n }\n if (sheetName) {\n sheetContext.sheets.current[sheetName] = store.sheetId;\n }\n store.table.sheetName = sheetName;\n }, [sheetName]);\n\n const [sheetHeight, setSheetHeight] = React.useState(\n options?.sheetHeight || estimateSheetHeight({ options, initialData: initialCells }),\n );\n const [sheetWidth, setSheetWidth] = React.useState(\n options?.sheetWidth || estimateSheetWidth({ options, initialData: initialCells }),\n );\n React.useEffect(() => {\n const intervalId = window.setInterval(() => {\n setSheetHeight(mainRef.current?.clientHeight || 0);\n setSheetWidth(mainRef.current?.clientWidth || 0);\n }, 1000);\n return () => window.clearInterval(intervalId);\n }, []);\n React.useEffect(() => {\n if (options.sheetHeight) {\n setSheetHeight(options.sheetHeight);\n }\n }, [options.sheetHeight]);\n React.useEffect(() => {\n if (options.sheetWidth) {\n setSheetWidth(options.sheetWidth);\n }\n }, [options.sheetWidth]);\n\n const { onChange, onSelect } = options;\n return (\n <Context.Provider value={{ store, dispatch }}>\n <div\n className={`gs-root1`}\n ref={rootRef}\n data-sheet-name={sheetName}\n data-mode={mode}\n style={{ maxWidth: `min(100%, ${store.table.totalWidth + 2}px)` }}\n >\n {typeof store.searchQuery === 'undefined' ? showFormulaBar && <FormulaBar /> : <SearchBar />}\n <div\n className={`gs-main ${className || ''}`}\n ref={mainRef}\n style={{\n maxWidth: `min(100%-1px, ${store.table.totalWidth + 2}px)`,\n maxHeight: store.table.totalHeight + 2,\n ...style,\n resize: sheetResize,\n }}\n >\n <Editor mode={mode} />\n <Tabular tableRef={tableRef} />\n <StoreInitializer\n initialCells={initialCells}\n options={{ ...options, sheetHeight, sheetWidth }}\n additionalFunctions={additionalFunctions}\n />\n <ContextMenu />\n <Resizer />\n <Emitter onChange={onChange} onSelect={onSelect} />\n </div>\n </div>\n </Context.Provider>\n );\n}\n\ntype EstimateProps = {\n initialData: CellsByAddressType;\n options: OptionsType;\n};\n\nconst estimateSheetHeight = ({ initialData, options }: EstimateProps) => {\n const auto = getMaxSizesFromCells(initialData);\n let estimatedHeight = options.headerHeight || HEADER_HEIGHT;\n for (let y = 0; y < auto.numRows; y++) {\n const row = y2r(y);\n const height = initialData?.[row]?.height || initialData?.default?.height || DEFAULT_HEIGHT;\n if (estimatedHeight + height > SHEET_HEIGHT) {\n return SHEET_HEIGHT;\n }\n estimatedHeight += height;\n }\n return estimatedHeight + 3;\n};\n\nconst estimateSheetWidth = ({ initialData, options }: EstimateProps) => {\n const auto = getMaxSizesFromCells(initialData);\n let estimatedWidth = options.headerWidth || HEADER_WIDTH;\n for (let x = 0; x < auto.numCols; x++) {\n const col = x2c(x);\n const width = initialData?.[col]?.width || initialData?.default?.width || DEFAULT_WIDTH;\n if (estimatedWidth + width > SHEET_WIDTH) {\n return SHEET_WIDTH;\n }\n estimatedWidth += width;\n }\n return estimatedWidth + 3;\n};\n"],"names":["defaultReducer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GridSheet.js","sources":["../../components/GridSheet.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ReducerWithoutAction } from 'react';\n\nimport { CellsByAddressType, OptionsType, Props, StoreType } from '../types';\nimport {\n DEFAULT_HEIGHT,\n DEFAULT_WIDTH,\n HEADER_HEIGHT,\n HEADER_WIDTH,\n SHEET_HEIGHT,\n SHEET_WIDTH,\n HISTORY_LIMIT,\n} from '../constants';\nimport { functions } from '../formula/mapping';\nimport { Context } from '../store';\nimport { reducer as defaultReducer } from '../store/actions';\n\nimport { Editor } from './Editor';\nimport { StoreInitializer } from './StoreInitializer';\nimport { Resizer } from './Resizer';\nimport { Emitter } from './Emitter';\nimport { ContextMenu } from './ContextMenu';\nimport { Table } from '../lib/table';\nimport { Tabular } from './Tabular';\nimport { getMaxSizesFromCells } from '../lib/structs';\nimport { x2c, y2r } from '../lib/converters';\nimport { embedStyle } from '../styles/embedder';\nimport { useSheetContext } from './SheetProvider';\nimport { FormulaBar } from './FormulaBar';\nimport { SearchBar } from './SearchBar';\n\nexport function GridSheet({\n initialCells,\n sheetName = '',\n tableRef,\n options = {},\n className,\n style,\n additionalFunctions = {},\n}: Props) {\n const { sheetResize, showFormulaBar = true, onInit, mode = 'light' } = options;\n const [prevSheetName, setPrevSheetName] = React.useState(sheetName);\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const mainRef = React.useRef<HTMLDivElement | null>(null);\n const searchInputRef = React.useRef<HTMLTextAreaElement | null>(null);\n const editorRef = React.useRef<HTMLTextAreaElement | null>(null);\n const largeEditorRef = React.useRef<HTMLTextAreaElement | null>(null);\n const tabularRef = React.useRef<HTMLDivElement | null>(null);\n const lastFocusedRef = React.useRef<HTMLTextAreaElement | null>(null);\n const [sheetProvided, sheetContext] = useSheetContext();\n\n const [initialState] = React.useState<StoreType>(() => {\n const {\n headerHeight = HEADER_HEIGHT,\n headerWidth = HEADER_WIDTH,\n historyLimit = HISTORY_LIMIT,\n renderers,\n parsers,\n labelers,\n minNumRows,\n maxNumRows,\n minNumCols,\n maxNumCols,\n } = options;\n const table = new Table({\n historyLimit,\n parsers,\n renderers,\n labelers,\n minNumRows,\n maxNumRows,\n minNumCols,\n maxNumCols,\n headerHeight,\n headerWidth,\n sheetName,\n functions: { ...functions, ...additionalFunctions },\n });\n let sheetId = 0;\n if (sheetProvided) {\n sheetId = sheetContext.head.current++;\n table.tables = sheetContext.tables.current;\n table.sheets = sheetContext.sheets.current;\n }\n table.tables[sheetId] = table;\n table.sheetId = sheetId;\n table.initialize(initialCells);\n onInit?.(table);\n return {\n sheetId,\n table, // temporary (see StoreInitializer for detail)\n tableInitialized: false,\n rootRef,\n mainRef,\n searchInputRef,\n editorRef,\n largeEditorRef,\n tabularRef,\n lastFocusedRef,\n choosing: { y: 1, x: 1 },\n cutting: false,\n inputting: '',\n selectingZone: { startY: -1, startX: -1, endY: -1, endX: -1 },\n copyingZone: { startY: -1, startX: -1, endY: -1, endX: -1 },\n autofillDraggingTo: null,\n leftHeaderSelecting: false,\n topHeaderSelecting: false,\n editingCell: '',\n editorRect: { y: 0, x: 0, height: 0, width: 0 },\n resizingRect: { y: -1, x: -1, height: -1, width: -1 },\n sheetHeight: 0,\n sheetWidth: 0,\n headerHeight: 0,\n headerWidth: 0,\n entering: false,\n matchingCells: [],\n matchingCellIndex: 0,\n searchCaseSensitive: false,\n editingOnEnter: true,\n showAddress: true,\n contextMenuPosition: { y: -1, x: -1 },\n resizingPositionY: [-1, -1, -1],\n resizingPositionX: [-1, -1, -1],\n minNumRows: 1,\n maxNumRows: -1,\n minNumCols: 1,\n maxNumCols: -1,\n mode: 'light',\n lastEdited: '',\n };\n });\n\n const [store, dispatch] = React.useReducer(\n defaultReducer as unknown as ReducerWithoutAction<StoreType>,\n initialState,\n () => initialState,\n );\n\n React.useEffect(() => {\n embedStyle();\n }, []);\n\n React.useEffect(() => {\n if (!sheetProvided) {\n return;\n }\n sheetContext.tables.current[store.sheetId] = store.table;\n sheetContext?.forceRender?.();\n }, [store.table]);\n\n React.useEffect(() => {\n if (!sheetProvided) {\n return;\n }\n if (prevSheetName !== sheetName) {\n delete sheetContext.sheets.current[prevSheetName];\n setPrevSheetName(sheetName);\n }\n if (sheetName) {\n sheetContext.sheets.current[sheetName] = store.sheetId;\n }\n store.table.sheetName = sheetName;\n }, [sheetName]);\n\n const [sheetHeight, setSheetHeight] = React.useState(\n options?.sheetHeight || estimateSheetHeight({ options, initialData: initialCells }),\n );\n const [sheetWidth, setSheetWidth] = React.useState(\n options?.sheetWidth || estimateSheetWidth({ options, initialData: initialCells }),\n );\n React.useEffect(() => {\n const intervalId = window.setInterval(() => {\n setSheetHeight(mainRef.current?.clientHeight || 0);\n setSheetWidth(mainRef.current?.clientWidth || 0);\n }, 1000);\n return () => window.clearInterval(intervalId);\n }, []);\n React.useEffect(() => {\n if (options.sheetHeight) {\n setSheetHeight(options.sheetHeight);\n }\n }, [options.sheetHeight]);\n React.useEffect(() => {\n if (options.sheetWidth) {\n setSheetWidth(options.sheetWidth);\n }\n }, [options.sheetWidth]);\n\n const { onChange, onSelect, onKeyUp } = options;\n return (\n <Context.Provider value={{ store, dispatch }}>\n <div\n className={`gs-root1`}\n ref={rootRef}\n data-sheet-name={sheetName}\n data-mode={mode}\n style={{ maxWidth: `min(100%, ${store.table.totalWidth + 2}px)` }}\n >\n {typeof store.searchQuery === 'undefined' ? showFormulaBar && <FormulaBar /> : <SearchBar />}\n <div\n className={`gs-main ${className || ''}`}\n ref={mainRef}\n style={{\n maxWidth: `min(100%-1px, ${store.table.totalWidth + 2}px)`,\n maxHeight: store.table.totalHeight + 2,\n ...style,\n resize: sheetResize,\n }}\n >\n <Editor mode={mode} handleKeyUp={onKeyUp} />\n <Tabular tableRef={tableRef} />\n <StoreInitializer\n initialCells={initialCells}\n options={{ ...options, sheetHeight, sheetWidth }}\n additionalFunctions={additionalFunctions}\n />\n <ContextMenu />\n <Resizer />\n <Emitter onChange={onChange} onSelect={onSelect} />\n </div>\n </div>\n </Context.Provider>\n );\n}\n\ntype EstimateProps = {\n initialData: CellsByAddressType;\n options: OptionsType;\n};\n\nconst estimateSheetHeight = ({ initialData, options }: EstimateProps) => {\n const auto = getMaxSizesFromCells(initialData);\n let estimatedHeight = options.headerHeight || HEADER_HEIGHT;\n for (let y = 0; y < auto.numRows; y++) {\n const row = y2r(y);\n const height = initialData?.[row]?.height || initialData?.default?.height || DEFAULT_HEIGHT;\n if (estimatedHeight + height > SHEET_HEIGHT) {\n return SHEET_HEIGHT;\n }\n estimatedHeight += height;\n }\n return estimatedHeight + 3;\n};\n\nconst estimateSheetWidth = ({ initialData, options }: EstimateProps) => {\n const auto = getMaxSizesFromCells(initialData);\n let estimatedWidth = options.headerWidth || HEADER_WIDTH;\n for (let x = 0; x < auto.numCols; x++) {\n const col = x2c(x);\n const width = initialData?.[col]?.width || initialData?.default?.width || DEFAULT_WIDTH;\n if (estimatedWidth + width > SHEET_WIDTH) {\n return SHEET_WIDTH;\n }\n estimatedWidth += width;\n }\n return estimatedWidth + 3;\n};\n"],"names":["defaultReducer"],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ export type SheetContextType = {
|
|
|
5
5
|
sheets: React.MutableRefObject<SheetMapType>;
|
|
6
6
|
tables: React.MutableRefObject<TableMapType>;
|
|
7
7
|
head: React.MutableRefObject<number>;
|
|
8
|
+
choosingCell: string;
|
|
9
|
+
setChoosingCell: (cell: string) => void;
|
|
8
10
|
editingCell: string;
|
|
9
11
|
setEditingCell: (cell: string) => void;
|
|
10
12
|
externalRefs?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SheetProvider.d.ts","sourceRoot":"","sources":["../../components/SheetProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEtE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,YAAY,CAAC,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,CAAC;IACvD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1E,cAAc,EAAE,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACnE,iBAAiB,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;IACrF,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,YAAY,iCAA8C,CAAC;AAExE,wBAAgB,eAAe,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAM7D;AAED,wBAAgB,gBAAgB,iCAM/B;AAED,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"SheetProvider.d.ts","sourceRoot":"","sources":["../../components/SheetProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEtE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAI,EAAE,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,YAAY,CAAC,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,CAAC;IACvD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1E,cAAc,EAAE,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACnE,iBAAiB,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;IACrF,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,YAAY,iCAA8C,CAAC;AAExE,wBAAgB,eAAe,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAM7D;AAED,wBAAgB,gBAAgB,iCAM/B;AAED,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,qBA2ChD"}
|
|
@@ -15,6 +15,7 @@ function SheetProvider({ children }) {
|
|
|
15
15
|
const head = React__default.useRef(1);
|
|
16
16
|
const sheets = React__default.useRef({});
|
|
17
17
|
const tables = React__default.useRef({});
|
|
18
|
+
const [choosingCell, setChoosingCell] = React__default.useState("");
|
|
18
19
|
const [editingCell, setEditingCell] = React__default.useState("");
|
|
19
20
|
const [externalRefs, setExternalRefs] = React__default.useState({});
|
|
20
21
|
const lastFocusedRefInitial = React__default.useRef(null);
|
|
@@ -30,6 +31,8 @@ function SheetProvider({ children }) {
|
|
|
30
31
|
tables,
|
|
31
32
|
sheets,
|
|
32
33
|
head,
|
|
34
|
+
choosingCell,
|
|
35
|
+
setChoosingCell,
|
|
33
36
|
editingCell,
|
|
34
37
|
setEditingCell,
|
|
35
38
|
externalRefs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SheetProvider.js","sources":["../../components/SheetProvider.tsx"],"sourcesContent":["import React from 'react';\n\nimport { RefPaletteType, SheetMapType, TableMapType } from '../types';\n\nexport type SheetContextType = {\n mounted: boolean;\n sheets: React.MutableRefObject<SheetMapType>;\n tables: React.MutableRefObject<TableMapType>;\n head: React.MutableRefObject<number>;\n editingCell: string;\n setEditingCell: (cell: string) => void;\n externalRefs?: { [sheetName: string]: RefPaletteType };\n setExternalRefs?: (refs: { [sheetName: string]: RefPaletteType }) => void;\n lastFocusedRef: React.MutableRefObject<HTMLTextAreaElement | null>;\n setLastFocusedRef: (ref: React.MutableRefObject<HTMLTextAreaElement | null>) => void;\n forceRender: () => void;\n};\n\nexport const SheetContext = React.createContext({} as SheetContextType);\n\nexport function useSheetContext(): [boolean, SheetContextType] {\n const ctx = React.useContext(SheetContext);\n if (ctx.tables?.current == null) {\n return [false, ctx];\n }\n return [true, ctx];\n}\n\nexport function useSheetDispatch() {\n const dispatch = React.useContext(SheetContext);\n if (!dispatch) {\n return undefined;\n }\n return dispatch;\n}\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport function SheetProvider({ children }: Props) {\n const [mounted, setMounted] = React.useState(false);\n const [version, setVersion] = React.useState(0);\n const head = React.useRef(1);\n const sheets = React.useRef<SheetMapType>({});\n const tables = React.useRef<TableMapType>({});\n const [editingCell, setEditingCell] = React.useState('');\n const [externalRefs, setExternalRefs] = React.useState<{ [sheetName: string]: RefPaletteType }>({});\n const lastFocusedRefInitial = React.useRef<HTMLTextAreaElement | null>(null);\n const [lastFocusedRef, setLastFocusedRef] = React.useState(lastFocusedRefInitial);\n\n React.useEffect(() => {\n setMounted(true);\n }, []);\n\n return (\n <SheetContext.Provider\n value={{\n mounted,\n tables,\n sheets,\n head,\n editingCell,\n setEditingCell,\n externalRefs,\n setExternalRefs,\n lastFocusedRef,\n setLastFocusedRef,\n forceRender: () => {\n if (version >= Number.MAX_SAFE_INTEGER) {\n setVersion(0);\n return;\n }\n setVersion(version + 1);\n },\n }}\n >\n {children}\n </SheetContext.Provider>\n );\n}\n"],"names":["React"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"SheetProvider.js","sources":["../../components/SheetProvider.tsx"],"sourcesContent":["import React from 'react';\n\nimport { RefPaletteType, SheetMapType, TableMapType } from '../types';\n\nexport type SheetContextType = {\n mounted: boolean;\n sheets: React.MutableRefObject<SheetMapType>;\n tables: React.MutableRefObject<TableMapType>;\n head: React.MutableRefObject<number>;\n choosingCell: string;\n setChoosingCell: (cell: string) => void;\n editingCell: string;\n setEditingCell: (cell: string) => void;\n externalRefs?: { [sheetName: string]: RefPaletteType };\n setExternalRefs?: (refs: { [sheetName: string]: RefPaletteType }) => void;\n lastFocusedRef: React.MutableRefObject<HTMLTextAreaElement | null>;\n setLastFocusedRef: (ref: React.MutableRefObject<HTMLTextAreaElement | null>) => void;\n forceRender: () => void;\n};\n\nexport const SheetContext = React.createContext({} as SheetContextType);\n\nexport function useSheetContext(): [boolean, SheetContextType] {\n const ctx = React.useContext(SheetContext);\n if (ctx.tables?.current == null) {\n return [false, ctx];\n }\n return [true, ctx];\n}\n\nexport function useSheetDispatch() {\n const dispatch = React.useContext(SheetContext);\n if (!dispatch) {\n return undefined;\n }\n return dispatch;\n}\n\ntype Props = {\n children: React.ReactNode;\n};\n\nexport function SheetProvider({ children }: Props) {\n const [mounted, setMounted] = React.useState(false);\n const [version, setVersion] = React.useState(0);\n const head = React.useRef(1);\n const sheets = React.useRef<SheetMapType>({});\n const tables = React.useRef<TableMapType>({});\n const [choosingCell, setChoosingCell] = React.useState('');\n const [editingCell, setEditingCell] = React.useState('');\n const [externalRefs, setExternalRefs] = React.useState<{ [sheetName: string]: RefPaletteType }>({});\n const lastFocusedRefInitial = React.useRef<HTMLTextAreaElement | null>(null);\n const [lastFocusedRef, setLastFocusedRef] = React.useState(lastFocusedRefInitial);\n\n React.useEffect(() => {\n setMounted(true);\n }, []);\n\n return (\n <SheetContext.Provider\n value={{\n mounted,\n tables,\n sheets,\n head,\n choosingCell,\n setChoosingCell,\n editingCell,\n setEditingCell,\n externalRefs,\n setExternalRefs,\n lastFocusedRef,\n setLastFocusedRef,\n forceRender: () => {\n if (version >= Number.MAX_SAFE_INTEGER) {\n setVersion(0);\n return;\n }\n setVersion(version + 1);\n },\n }}\n >\n {children}\n </SheetContext.Provider>\n );\n}\n"],"names":["React"],"mappings":";;AAoBO,MAAM,eAAeA,eAAM,cAAc,CAAsB,CAAA;AAE/D,SAAS,kBAA+C;;AACvD,QAAA,MAAMA,eAAM,WAAW,YAAY;AACrC,QAAA,SAAI,WAAJ,mBAAY,YAAW,MAAM;AACxB,WAAA,CAAC,OAAO,GAAG;AAAA,EAAA;AAEb,SAAA,CAAC,MAAM,GAAG;AACnB;AAcgB,SAAA,cAAc,EAAE,YAAmB;AACjD,QAAM,CAAC,SAAS,UAAU,IAAIA,eAAM,SAAS,KAAK;AAClD,QAAM,CAAC,SAAS,UAAU,IAAIA,eAAM,SAAS,CAAC;AACxC,QAAA,OAAOA,eAAM,OAAO,CAAC;AAC3B,QAAM,SAASA,eAAM,OAAqB,EAAE;AAC5C,QAAM,SAASA,eAAM,OAAqB,EAAE;AAC5C,QAAM,CAAC,cAAc,eAAe,IAAIA,eAAM,SAAS,EAAE;AACzD,QAAM,CAAC,aAAa,cAAc,IAAIA,eAAM,SAAS,EAAE;AACvD,QAAM,CAAC,cAAc,eAAe,IAAIA,eAAM,SAAkD,CAAA,CAAE;AAC5F,QAAA,wBAAwBA,eAAM,OAAmC,IAAI;AAC3E,QAAM,CAAC,gBAAgB,iBAAiB,IAAIA,eAAM,SAAS,qBAAqB;AAEhFA,iBAAM,UAAU,MAAM;AACpB,eAAW,IAAI;AAAA,EACjB,GAAG,EAAE;AAGH,SAAA;AAAA,IAAC,aAAa;AAAA,IAAb;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,aAAa,MAAM;AACb,cAAA,WAAW,OAAO,kBAAkB;AACtC,uBAAW,CAAC;AACZ;AAAA,UAAA;AAEF,qBAAW,UAAU,CAAC;AAAA,QAAA;AAAA,MAE1B;AAAA,MAEC;AAAA,IAAA;AAAA,EACH;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabular.d.ts","sourceRoot":"","sources":["../../components/Tabular.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,EAAwC,QAAQ,EAAkB,MAAM,UAAU,CAAC;AAS1F,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;CAC/D,CAAC;AAEF,eAAO,MAAM,cAAc,+CAA4C,CAAC;AAExE,eAAO,MAAM,OAAO,GAAI,cAAc,KAAK,
|
|
1
|
+
{"version":3,"file":"Tabular.d.ts","sourceRoot":"","sources":["../../components/Tabular.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,EAAwC,QAAQ,EAAkB,MAAM,UAAU,CAAC;AAS1F,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;CAC/D,CAAC;AAEF,eAAO,MAAM,cAAc,+CAA4C,CAAC;AAExE,eAAO,MAAM,OAAO,GAAI,cAAc,KAAK,sBAmL1C,CAAC"}
|
|
@@ -8,7 +8,7 @@ import { updateTable, setInputting, choose, select, setEntering } from "../store
|
|
|
8
8
|
import { virtualize } from "../lib/virtualization.js";
|
|
9
9
|
import { stripAddressAbsolute, p2a, a2p } from "../lib/converters.js";
|
|
10
10
|
import { zoneToArea } from "../lib/structs.js";
|
|
11
|
-
import { Lexer } from "../formula/evaluator.js";
|
|
11
|
+
import { Lexer, stripSheetName } from "../formula/evaluator.js";
|
|
12
12
|
import { REF_PALETTE } from "../lib/palette.js";
|
|
13
13
|
import { useSheetContext } from "./SheetProvider.js";
|
|
14
14
|
import { Autofill } from "../lib/autofill.js";
|
|
@@ -29,39 +29,44 @@ const Tabular = ({ tableRef }) => {
|
|
|
29
29
|
editingCell,
|
|
30
30
|
inputting
|
|
31
31
|
} = store;
|
|
32
|
+
const [sheetProvided, sheetContext] = useSheetContext();
|
|
32
33
|
React__default.useEffect(() => {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
34
|
+
const formulaEditing = editingCell && inputting.startsWith("=");
|
|
35
|
+
if (!formulaEditing) {
|
|
36
|
+
setRefs({});
|
|
37
|
+
setExternalRefs == null ? void 0 : setExternalRefs({});
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const refs2 = {};
|
|
41
|
+
const externalRefs2 = {};
|
|
42
|
+
const lexer = new Lexer(inputting.substring(1));
|
|
43
|
+
lexer.tokenize();
|
|
44
|
+
let i = 0;
|
|
45
|
+
for (const token of lexer.tokens) {
|
|
46
|
+
if (token.type === "REF" || token.type === "RANGE") {
|
|
47
|
+
const normalizedRef = stripAddressAbsolute(token.stringify());
|
|
48
|
+
const splitterIndex = normalizedRef.indexOf("!");
|
|
49
|
+
if (splitterIndex !== -1) {
|
|
50
|
+
const sheetName = normalizedRef.substring(0, splitterIndex);
|
|
51
|
+
const ref = normalizedRef.substring(splitterIndex + 1);
|
|
52
|
+
const stripped = stripSheetName(sheetName);
|
|
53
|
+
const upperRef = ref.toUpperCase();
|
|
54
|
+
if (externalRefs2[stripped] == null) {
|
|
55
|
+
externalRefs2[stripped] = {};
|
|
56
|
+
}
|
|
57
|
+
if (externalRefs2[stripped][upperRef] == null) {
|
|
58
|
+
externalRefs2[stripped][upperRef] = i++;
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
const upperRef = normalizedRef.toUpperCase();
|
|
62
|
+
if (refs2[upperRef] == null) {
|
|
63
|
+
refs2[upperRef] = i++;
|
|
56
64
|
}
|
|
57
65
|
}
|
|
58
66
|
}
|
|
59
|
-
setRefs(refs2);
|
|
60
|
-
setExternalRefs == null ? void 0 : setExternalRefs(externalRefs2);
|
|
61
|
-
} else {
|
|
62
|
-
setRefs({});
|
|
63
|
-
setExternalRefs == null ? void 0 : setExternalRefs({});
|
|
64
67
|
}
|
|
68
|
+
setRefs(refs2);
|
|
69
|
+
setExternalRefs == null ? void 0 : setExternalRefs(externalRefs2);
|
|
65
70
|
}, [store.inputting, store.editingCell]);
|
|
66
71
|
React__default.useEffect(() => {
|
|
67
72
|
if (tableRef && tableInitialized) {
|
|
@@ -77,6 +82,10 @@ const Tabular = ({ tableRef }) => {
|
|
|
77
82
|
const v = table.stringify(store.choosing);
|
|
78
83
|
dispatch(setInputting(v || ""));
|
|
79
84
|
}, [table, store.choosing]);
|
|
85
|
+
React__default.useEffect(() => {
|
|
86
|
+
var _a2;
|
|
87
|
+
(_a2 = sheetContext == null ? void 0 : sheetContext.setChoosingCell) == null ? void 0 : _a2.call(sheetContext, p2a(store.choosing));
|
|
88
|
+
}, [store.choosing]);
|
|
80
89
|
const [virtualized, setVirtualized] = React__default.useState(null);
|
|
81
90
|
React__default.useEffect(() => {
|
|
82
91
|
setVirtualized(virtualize(table, tabularRef.current));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabular.js","sources":["../../components/Tabular.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Cell } from './Cell';\nimport { HeaderCellTop } from './HeaderCellTop';\nimport { HeaderCellLeft } from './HeaderCellLeft';\n\nimport { Context } from '../store';\nimport { choose, select, setEntering, updateTable, setInputting } from '../store/actions';\n\nimport { Table } from '../lib/table';\nimport { RefPaletteType, PointType, StoreType, TableRef, Virtualization } from '../types';\nimport { virtualize } from '../lib/virtualization';\nimport { a2p, p2a, stripAddressAbsolute } from '../lib/converters';\nimport { zoneToArea } from '../lib/structs';\nimport { Lexer } from '../formula/evaluator';\nimport { REF_PALETTE } from '../lib/palette';\nimport { useSheetContext } from './SheetProvider';\nimport { Autofill } from '../lib/autofill';\n\ntype Props = {\n tableRef: React.MutableRefObject<TableRef | null> | undefined;\n};\n\nexport const createTableRef = () => React.useRef<TableRef | null>(null);\n\nexport const Tabular = ({ tableRef }: Props) => {\n const [refs, setRefs] = React.useState<RefPaletteType>({});\n const [, { externalRefs = {}, setExternalRefs }] = useSheetContext();\n const { store, dispatch } = React.useContext(Context);\n const {\n sheetHeight,\n table,\n tableInitialized,\n tabularRef,\n mainRef,\n headerWidth,\n headerHeight,\n editingCell,\n inputting,\n } = store;\n\n React.useEffect(() => {\n if (editingCell && inputting.startsWith('=')) {\n const refs: RefPaletteType = {};\n const externalRefs: { [sheetName: string]: RefPaletteType } = {};\n const lexer = new Lexer(inputting.substring(1));\n lexer.tokenize();\n\n let i = 0;\n for (const token of lexer.tokens) {\n if (token.type === 'REF' || token.type === 'RANGE') {\n const normalizedRef = stripAddressAbsolute(token.stringify());\n if (normalizedRef.includes('!')) {\n const [sheetName, ref] = normalizedRef.split('!');\n const upperRef = ref.toUpperCase();\n if (externalRefs[sheetName] == null) {\n externalRefs[sheetName] = {};\n }\n if (externalRefs[sheetName][upperRef] == null) {\n externalRefs[sheetName][upperRef] = i++;\n }\n } else {\n const upperRef = normalizedRef.toUpperCase();\n if (refs[upperRef] == null) {\n refs[upperRef] = i++;\n }\n }\n }\n }\n setRefs(refs);\n setExternalRefs?.(externalRefs);\n } else {\n setRefs({});\n setExternalRefs?.({});\n }\n }, [store.inputting, store.editingCell]);\n\n React.useEffect(() => {\n if (tableRef && tableInitialized) {\n tableRef.current = {\n table,\n dispatch: (table) => {\n dispatch(updateTable(table as Table));\n },\n };\n }\n }, [table]);\n React.useEffect(() => {\n const v = table.stringify(store.choosing);\n dispatch(setInputting(v || ''));\n }, [table, store.choosing]);\n const [virtualized, setVirtualized] = React.useState<Virtualization | null>(null);\n React.useEffect(() => {\n setVirtualized(virtualize(table, tabularRef.current));\n }, [tabularRef.current, table, mainRef.current?.clientHeight, mainRef.current?.clientWidth]);\n\n const operationStyles = useOperationStyles(store, { ...refs, ...externalRefs[table.sheetName] });\n\n return (\n <>\n <div\n className=\"gs-tabular\"\n style={{\n //width: sheetWidth,\n height: sheetHeight,\n }}\n ref={tabularRef}\n onMouseEnter={() => {\n dispatch(setEntering(true));\n }}\n onMouseLeave={() => {\n dispatch(setEntering(false));\n }}\n onScroll={(e) => {\n setVirtualized(virtualize(table, e.currentTarget));\n }}\n >\n <div\n className={'gs-tabular-inner'}\n style={{\n width: table.totalWidth + 1,\n height: table.totalHeight + 1,\n }}\n >\n <table\n className={`gs-table`}\n style={{\n width: table.totalWidth,\n }}\n >\n <thead className=\"gs-thead\" style={{ height: headerHeight }}>\n <tr className=\"gs-row\">\n <th\n className=\"gs-th gs-th-left gs-th-top\"\n style={{ position: 'sticky', width: headerWidth, height: headerHeight }}\n onClick={() => {\n dispatch(choose({ y: -1, x: -1 }));\n window.setTimeout(() => {\n dispatch(choose({ y: 1, x: 1 }));\n dispatch(\n select({\n startY: 1,\n startX: 1,\n endY: table.getNumRows(),\n endX: table.getNumCols(),\n }),\n );\n }, 100);\n }}\n >\n <div className=\"gs-th-inner\"></div>\n </th>\n <th\n className=\"gs-adjuster gs-adjuster-horizontal gs-adjuster-horizontal-left\"\n style={{ width: virtualized?.adjuster?.left || 1 }}\n ></th>\n {virtualized?.xs?.map?.((x) => <HeaderCellTop x={x} key={x} />)}\n <th\n className=\"gs-adjuster gs-adjuster-horizontal gs-adjuster-horizontal-right\"\n style={{ width: virtualized?.adjuster?.right }}\n ></th>\n </tr>\n </thead>\n\n <tbody className=\"gs-table-body-adjuster\">\n <tr className=\"gs-row\">\n <th\n className={`gs-adjuster gs-adjuster-horizontal gs-adjuster-vertical`}\n style={{ height: virtualized?.adjuster?.top || 1 }}\n ></th>\n <td className=\"gs-adjuster gs-adjuster-vertical\"></td>\n {virtualized?.xs?.map((x) => <td className=\"gs-adjuster gs-adjuster-vertical\" key={x}></td>)}\n <th className={`gs-adjuster gs-adjuster-horizontal gs-adjuster-vertical`}></th>\n </tr>\n </tbody>\n\n <tbody className=\"gs-table-body-data\">\n {virtualized?.ys?.map((y) => {\n return (\n <tr key={y} className=\"gs-row\">\n <HeaderCellLeft y={y} />\n <td className=\"gs-adjuster gs-adjuster-horizontal gs-adjuster-horizontal-left\" />\n {virtualized?.xs?.map((x) => (\n <Cell key={x} y={y} x={x} operationStyle={operationStyles[p2a({ y, x })]} />\n ))}\n <td className=\"gs-adjuster gs-adjuster-horizontal gs-adjuster-horizontal-right\" />\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n </>\n );\n};\n\nconst BORDER_POINTED = 'solid 2px #0077ff';\nconst BORDER_SELECTED = 'solid 1px #0077ff';\nconst BORDER_CUTTING = 'dotted 2px #0077ff';\nconst BORDER_COPYING = 'dashed 2px #0077ff';\nconst SEARCH_MATCHING_BACKGROUND = 'rgba(0,200,100,.2)';\nconst SEARCH_MATCHING_BORDER = 'solid 2px #00aa78';\nconst AUTOFILL_BORDER = 'dashed 1px #444444';\n\nconst useOperationStyles = (store: StoreType, refs: RefPaletteType) => {\n const cellStyles: { [key: string]: React.CSSProperties } = {};\n const updateStyle = (point: PointType, style: React.CSSProperties) => {\n const address = p2a(point);\n cellStyles[address] = cellStyles[address] || {};\n Object.assign(cellStyles[address], style);\n };\n const { choosing, selectingZone, copyingZone, cutting, matchingCells, matchingCellIndex, table, autofillDraggingTo } =\n store;\n {\n // selecting\n const { top, left, bottom, right } = zoneToArea(selectingZone);\n for (let y = top; y <= bottom; y++) {\n updateStyle({ y, x: left - 1 }, { borderRight: BORDER_SELECTED });\n updateStyle({ y, x: left }, { borderLeft: BORDER_SELECTED });\n updateStyle({ y, x: right }, { borderRight: BORDER_SELECTED });\n updateStyle({ y, x: right + 1 }, { borderLeft: BORDER_SELECTED });\n }\n for (let x = left; x <= right; x++) {\n updateStyle({ y: top - 1, x }, { borderBottom: BORDER_SELECTED });\n updateStyle({ y: top, x }, { borderTop: BORDER_SELECTED });\n updateStyle({ y: bottom, x }, { borderBottom: BORDER_SELECTED });\n updateStyle({ y: bottom + 1, x }, { borderTop: BORDER_SELECTED });\n }\n }\n if (autofillDraggingTo) {\n const autofill = new Autofill(store, autofillDraggingTo);\n const { top, left, bottom, right } = autofill.wholeArea;\n for (let y = top; y <= bottom; y++) {\n updateStyle({ y, x: left - 1 }, { borderRight: AUTOFILL_BORDER });\n updateStyle({ y, x: left }, { borderLeft: AUTOFILL_BORDER });\n updateStyle({ y, x: right }, { borderRight: AUTOFILL_BORDER });\n updateStyle({ y, x: right + 1 }, { borderLeft: AUTOFILL_BORDER });\n }\n for (let x = left; x <= right; x++) {\n updateStyle({ y: top - 1, x }, { borderBottom: AUTOFILL_BORDER });\n updateStyle({ y: top, x }, { borderTop: AUTOFILL_BORDER });\n updateStyle({ y: bottom, x }, { borderBottom: AUTOFILL_BORDER });\n updateStyle({ y: bottom + 1, x }, { borderTop: AUTOFILL_BORDER });\n }\n }\n {\n // choosing\n const { y, x } = choosing;\n updateStyle(\n { y, x },\n {\n borderLeft: BORDER_POINTED,\n borderRight: BORDER_POINTED,\n borderTop: BORDER_POINTED,\n borderBottom: BORDER_POINTED,\n },\n );\n updateStyle({ y, x: x - 1 }, { borderRight: BORDER_POINTED });\n updateStyle({ y, x: x + 1 }, { borderLeft: BORDER_POINTED });\n updateStyle({ y: y - 1, x }, { borderBottom: BORDER_POINTED });\n updateStyle({ y: y + 1, x }, { borderTop: BORDER_POINTED });\n }\n {\n // copying\n const borderStyle = cutting ? BORDER_CUTTING : BORDER_COPYING;\n const { top, left, bottom, right } = zoneToArea(copyingZone);\n for (let y = top; y <= bottom; y++) {\n updateStyle({ y, x: left - 1 }, { borderRight: borderStyle });\n updateStyle({ y, x: left }, { borderLeft: borderStyle });\n updateStyle({ y, x: right }, { borderRight: borderStyle });\n updateStyle({ y, x: right + 1 }, { borderLeft: borderStyle });\n }\n for (let x = left; x <= right; x++) {\n updateStyle({ y: top - 1, x }, { borderBottom: borderStyle });\n updateStyle({ y: top, x }, { borderTop: borderStyle });\n updateStyle({ y: bottom, x }, { borderBottom: borderStyle });\n updateStyle({ y: bottom + 1, x }, { borderTop: borderStyle });\n }\n }\n\n Object.entries(refs).forEach(([ref, i]) => {\n const palette = REF_PALETTE[i % REF_PALETTE.length];\n const borderStyle = `dashed 2px ${palette}`;\n const { top, left, bottom, right } = table.rangeToArea(ref);\n for (let y = top; y <= bottom; y++) {\n updateStyle({ y, x: left - 1 }, { borderRight: borderStyle });\n updateStyle({ y, x: left }, { borderLeft: borderStyle });\n updateStyle({ y, x: right }, { borderRight: borderStyle });\n updateStyle({ y, x: right + 1 }, { borderLeft: borderStyle });\n }\n for (let x = left; x <= right; x++) {\n updateStyle({ y: top - 1, x }, { borderBottom: borderStyle });\n updateStyle({ y: top, x }, { borderTop: borderStyle });\n updateStyle({ y: bottom, x }, { borderBottom: borderStyle });\n updateStyle({ y: bottom + 1, x }, { borderTop: borderStyle });\n }\n });\n matchingCells.forEach((address) => {\n const { y, x } = a2p(address);\n updateStyle({ y, x }, { backgroundColor: SEARCH_MATCHING_BACKGROUND });\n });\n if (matchingCells.length > 0) {\n const { y, x } = a2p(matchingCells[matchingCellIndex]);\n updateStyle(\n { y, x },\n {\n borderLeft: SEARCH_MATCHING_BORDER,\n borderRight: SEARCH_MATCHING_BORDER,\n borderTop: SEARCH_MATCHING_BORDER,\n borderBottom: SEARCH_MATCHING_BORDER,\n },\n );\n updateStyle({ y, x: x - 1 }, { borderRight: SEARCH_MATCHING_BORDER });\n updateStyle({ y, x: x + 1 }, { borderLeft: SEARCH_MATCHING_BORDER });\n updateStyle({ y: y - 1, x }, { borderBottom: SEARCH_MATCHING_BORDER });\n updateStyle({ y: y + 1, x }, { borderTop: SEARCH_MATCHING_BORDER });\n }\n return cellStyles;\n};\n"],"names":["React","refs","externalRefs","table","_a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tabular.js","sources":["../../components/Tabular.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Cell } from './Cell';\nimport { HeaderCellTop } from './HeaderCellTop';\nimport { HeaderCellLeft } from './HeaderCellLeft';\n\nimport { Context } from '../store';\nimport { choose, select, setEntering, updateTable, setInputting } from '../store/actions';\n\nimport { Table } from '../lib/table';\nimport { RefPaletteType, PointType, StoreType, TableRef, Virtualization } from '../types';\nimport { virtualize } from '../lib/virtualization';\nimport { a2p, p2a, stripAddressAbsolute } from '../lib/converters';\nimport { zoneToArea } from '../lib/structs';\nimport { Lexer, stripSheetName } from '../formula/evaluator';\nimport { REF_PALETTE } from '../lib/palette';\nimport { useSheetContext } from './SheetProvider';\nimport { Autofill } from '../lib/autofill';\n\ntype Props = {\n tableRef: React.MutableRefObject<TableRef | null> | undefined;\n};\n\nexport const createTableRef = () => React.useRef<TableRef | null>(null);\n\nexport const Tabular = ({ tableRef }: Props) => {\n const [refs, setRefs] = React.useState<RefPaletteType>({});\n const [, { externalRefs = {}, setExternalRefs }] = useSheetContext();\n const { store, dispatch } = React.useContext(Context);\n const {\n sheetHeight,\n table,\n tableInitialized,\n tabularRef,\n mainRef,\n headerWidth,\n headerHeight,\n editingCell,\n inputting,\n } = store;\n\n const [sheetProvided, sheetContext] = useSheetContext();\n\n React.useEffect(() => {\n const formulaEditing = editingCell && inputting.startsWith('=');\n if (!formulaEditing) {\n setRefs({});\n setExternalRefs?.({});\n return;\n }\n const refs: RefPaletteType = {};\n const externalRefs: { [sheetName: string]: RefPaletteType } = {};\n const lexer = new Lexer(inputting.substring(1));\n lexer.tokenize();\n\n let i = 0;\n for (const token of lexer.tokens) {\n if (token.type === 'REF' || token.type === 'RANGE') {\n const normalizedRef = stripAddressAbsolute(token.stringify());\n const splitterIndex = normalizedRef.indexOf('!');\n if (splitterIndex !== -1) {\n const sheetName = normalizedRef.substring(0, splitterIndex);\n const ref = normalizedRef.substring(splitterIndex + 1);\n const stripped = stripSheetName(sheetName);\n const upperRef = ref.toUpperCase();\n if (externalRefs[stripped] == null) {\n externalRefs[stripped] = {};\n }\n if (externalRefs[stripped][upperRef] == null) {\n externalRefs[stripped][upperRef] = i++;\n }\n } else {\n const upperRef = normalizedRef.toUpperCase();\n if (refs[upperRef] == null) {\n refs[upperRef] = i++;\n }\n }\n }\n }\n setRefs(refs);\n setExternalRefs?.(externalRefs);\n }, [store.inputting, store.editingCell]);\n\n React.useEffect(() => {\n if (tableRef && tableInitialized) {\n tableRef.current = {\n table,\n dispatch: (table) => {\n dispatch(updateTable(table as Table));\n },\n };\n }\n }, [table]);\n React.useEffect(() => {\n const v = table.stringify(store.choosing);\n dispatch(setInputting(v || ''));\n }, [table, store.choosing]);\n React.useEffect(() => {\n sheetContext?.setChoosingCell?.(p2a(store.choosing));\n }, [store.choosing]);\n const [virtualized, setVirtualized] = React.useState<Virtualization | null>(null);\n React.useEffect(() => {\n setVirtualized(virtualize(table, tabularRef.current));\n }, [tabularRef.current, table, mainRef.current?.clientHeight, mainRef.current?.clientWidth]);\n\n const operationStyles = useOperationStyles(store, { ...refs, ...externalRefs[table.sheetName] });\n\n return (\n <>\n <div\n className=\"gs-tabular\"\n style={{\n //width: sheetWidth,\n height: sheetHeight,\n }}\n ref={tabularRef}\n onMouseEnter={() => {\n dispatch(setEntering(true));\n }}\n onMouseLeave={() => {\n dispatch(setEntering(false));\n }}\n onScroll={(e) => {\n setVirtualized(virtualize(table, e.currentTarget));\n }}\n >\n <div\n className={'gs-tabular-inner'}\n style={{\n width: table.totalWidth + 1,\n height: table.totalHeight + 1,\n }}\n >\n <table\n className={`gs-table`}\n style={{\n width: table.totalWidth,\n }}\n >\n <thead className=\"gs-thead\" style={{ height: headerHeight }}>\n <tr className=\"gs-row\">\n <th\n className=\"gs-th gs-th-left gs-th-top\"\n style={{ position: 'sticky', width: headerWidth, height: headerHeight }}\n onClick={() => {\n dispatch(choose({ y: -1, x: -1 }));\n window.setTimeout(() => {\n dispatch(choose({ y: 1, x: 1 }));\n dispatch(\n select({\n startY: 1,\n startX: 1,\n endY: table.getNumRows(),\n endX: table.getNumCols(),\n }),\n );\n }, 100);\n }}\n >\n <div className=\"gs-th-inner\"></div>\n </th>\n <th\n className=\"gs-adjuster gs-adjuster-horizontal gs-adjuster-horizontal-left\"\n style={{ width: virtualized?.adjuster?.left || 1 }}\n ></th>\n {virtualized?.xs?.map?.((x) => <HeaderCellTop x={x} key={x} />)}\n <th\n className=\"gs-adjuster gs-adjuster-horizontal gs-adjuster-horizontal-right\"\n style={{ width: virtualized?.adjuster?.right }}\n ></th>\n </tr>\n </thead>\n\n <tbody className=\"gs-table-body-adjuster\">\n <tr className=\"gs-row\">\n <th\n className={`gs-adjuster gs-adjuster-horizontal gs-adjuster-vertical`}\n style={{ height: virtualized?.adjuster?.top || 1 }}\n ></th>\n <td className=\"gs-adjuster gs-adjuster-vertical\"></td>\n {virtualized?.xs?.map((x) => <td className=\"gs-adjuster gs-adjuster-vertical\" key={x}></td>)}\n <th className={`gs-adjuster gs-adjuster-horizontal gs-adjuster-vertical`}></th>\n </tr>\n </tbody>\n\n <tbody className=\"gs-table-body-data\">\n {virtualized?.ys?.map((y) => {\n return (\n <tr key={y} className=\"gs-row\">\n <HeaderCellLeft y={y} />\n <td className=\"gs-adjuster gs-adjuster-horizontal gs-adjuster-horizontal-left\" />\n {virtualized?.xs?.map((x) => (\n <Cell key={x} y={y} x={x} operationStyle={operationStyles[p2a({ y, x })]} />\n ))}\n <td className=\"gs-adjuster gs-adjuster-horizontal gs-adjuster-horizontal-right\" />\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n </>\n );\n};\n\nconst BORDER_POINTED = 'solid 2px #0077ff';\nconst BORDER_SELECTED = 'solid 1px #0077ff';\nconst BORDER_CUTTING = 'dotted 2px #0077ff';\nconst BORDER_COPYING = 'dashed 2px #0077ff';\nconst SEARCH_MATCHING_BACKGROUND = 'rgba(0,200,100,.2)';\nconst SEARCH_MATCHING_BORDER = 'solid 2px #00aa78';\nconst AUTOFILL_BORDER = 'dashed 1px #444444';\n\nconst useOperationStyles = (store: StoreType, refs: RefPaletteType) => {\n const cellStyles: { [key: string]: React.CSSProperties } = {};\n const updateStyle = (point: PointType, style: React.CSSProperties) => {\n const address = p2a(point);\n cellStyles[address] = cellStyles[address] || {};\n Object.assign(cellStyles[address], style);\n };\n const { choosing, selectingZone, copyingZone, cutting, matchingCells, matchingCellIndex, table, autofillDraggingTo } =\n store;\n {\n // selecting\n const { top, left, bottom, right } = zoneToArea(selectingZone);\n for (let y = top; y <= bottom; y++) {\n updateStyle({ y, x: left - 1 }, { borderRight: BORDER_SELECTED });\n updateStyle({ y, x: left }, { borderLeft: BORDER_SELECTED });\n updateStyle({ y, x: right }, { borderRight: BORDER_SELECTED });\n updateStyle({ y, x: right + 1 }, { borderLeft: BORDER_SELECTED });\n }\n for (let x = left; x <= right; x++) {\n updateStyle({ y: top - 1, x }, { borderBottom: BORDER_SELECTED });\n updateStyle({ y: top, x }, { borderTop: BORDER_SELECTED });\n updateStyle({ y: bottom, x }, { borderBottom: BORDER_SELECTED });\n updateStyle({ y: bottom + 1, x }, { borderTop: BORDER_SELECTED });\n }\n }\n if (autofillDraggingTo) {\n const autofill = new Autofill(store, autofillDraggingTo);\n const { top, left, bottom, right } = autofill.wholeArea;\n for (let y = top; y <= bottom; y++) {\n updateStyle({ y, x: left - 1 }, { borderRight: AUTOFILL_BORDER });\n updateStyle({ y, x: left }, { borderLeft: AUTOFILL_BORDER });\n updateStyle({ y, x: right }, { borderRight: AUTOFILL_BORDER });\n updateStyle({ y, x: right + 1 }, { borderLeft: AUTOFILL_BORDER });\n }\n for (let x = left; x <= right; x++) {\n updateStyle({ y: top - 1, x }, { borderBottom: AUTOFILL_BORDER });\n updateStyle({ y: top, x }, { borderTop: AUTOFILL_BORDER });\n updateStyle({ y: bottom, x }, { borderBottom: AUTOFILL_BORDER });\n updateStyle({ y: bottom + 1, x }, { borderTop: AUTOFILL_BORDER });\n }\n }\n {\n // choosing\n const { y, x } = choosing;\n updateStyle(\n { y, x },\n {\n borderLeft: BORDER_POINTED,\n borderRight: BORDER_POINTED,\n borderTop: BORDER_POINTED,\n borderBottom: BORDER_POINTED,\n },\n );\n updateStyle({ y, x: x - 1 }, { borderRight: BORDER_POINTED });\n updateStyle({ y, x: x + 1 }, { borderLeft: BORDER_POINTED });\n updateStyle({ y: y - 1, x }, { borderBottom: BORDER_POINTED });\n updateStyle({ y: y + 1, x }, { borderTop: BORDER_POINTED });\n }\n {\n // copying\n const borderStyle = cutting ? BORDER_CUTTING : BORDER_COPYING;\n const { top, left, bottom, right } = zoneToArea(copyingZone);\n for (let y = top; y <= bottom; y++) {\n updateStyle({ y, x: left - 1 }, { borderRight: borderStyle });\n updateStyle({ y, x: left }, { borderLeft: borderStyle });\n updateStyle({ y, x: right }, { borderRight: borderStyle });\n updateStyle({ y, x: right + 1 }, { borderLeft: borderStyle });\n }\n for (let x = left; x <= right; x++) {\n updateStyle({ y: top - 1, x }, { borderBottom: borderStyle });\n updateStyle({ y: top, x }, { borderTop: borderStyle });\n updateStyle({ y: bottom, x }, { borderBottom: borderStyle });\n updateStyle({ y: bottom + 1, x }, { borderTop: borderStyle });\n }\n }\n\n Object.entries(refs).forEach(([ref, i]) => {\n const palette = REF_PALETTE[i % REF_PALETTE.length];\n const borderStyle = `dashed 2px ${palette}`;\n const { top, left, bottom, right } = table.rangeToArea(ref);\n for (let y = top; y <= bottom; y++) {\n updateStyle({ y, x: left - 1 }, { borderRight: borderStyle });\n updateStyle({ y, x: left }, { borderLeft: borderStyle });\n updateStyle({ y, x: right }, { borderRight: borderStyle });\n updateStyle({ y, x: right + 1 }, { borderLeft: borderStyle });\n }\n for (let x = left; x <= right; x++) {\n updateStyle({ y: top - 1, x }, { borderBottom: borderStyle });\n updateStyle({ y: top, x }, { borderTop: borderStyle });\n updateStyle({ y: bottom, x }, { borderBottom: borderStyle });\n updateStyle({ y: bottom + 1, x }, { borderTop: borderStyle });\n }\n });\n matchingCells.forEach((address) => {\n const { y, x } = a2p(address);\n updateStyle({ y, x }, { backgroundColor: SEARCH_MATCHING_BACKGROUND });\n });\n if (matchingCells.length > 0) {\n const { y, x } = a2p(matchingCells[matchingCellIndex]);\n updateStyle(\n { y, x },\n {\n borderLeft: SEARCH_MATCHING_BORDER,\n borderRight: SEARCH_MATCHING_BORDER,\n borderTop: SEARCH_MATCHING_BORDER,\n borderBottom: SEARCH_MATCHING_BORDER,\n },\n );\n updateStyle({ y, x: x - 1 }, { borderRight: SEARCH_MATCHING_BORDER });\n updateStyle({ y, x: x + 1 }, { borderLeft: SEARCH_MATCHING_BORDER });\n updateStyle({ y: y - 1, x }, { borderBottom: SEARCH_MATCHING_BORDER });\n updateStyle({ y: y + 1, x }, { borderTop: SEARCH_MATCHING_BORDER });\n }\n return cellStyles;\n};\n"],"names":["React","refs","externalRefs","table","_a"],"mappings":"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"}
|
package/dist/lib/table.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ type Props = {
|
|
|
13
13
|
headerHeight?: number;
|
|
14
14
|
headerWidth?: number;
|
|
15
15
|
functions?: FunctionMapping;
|
|
16
|
+
sheetName?: string;
|
|
16
17
|
};
|
|
17
18
|
type GetProps = {
|
|
18
19
|
evaluates?: boolean | null;
|
|
@@ -171,7 +172,7 @@ export declare class Table implements UserTable {
|
|
|
171
172
|
private historyLimit;
|
|
172
173
|
private solvedCaches;
|
|
173
174
|
private idsToBeAbsoluted;
|
|
174
|
-
constructor({ parsers, renderers, labelers, useBigInt, historyLimit: historyLimit, minNumRows, maxNumRows, minNumCols, maxNumCols, headerWidth, headerHeight, functions, }: Props);
|
|
175
|
+
constructor({ parsers, renderers, labelers, useBigInt, historyLimit: historyLimit, minNumRows, maxNumRows, minNumCols, maxNumCols, headerWidth, headerHeight, functions, sheetName, }: Props);
|
|
175
176
|
getTableBySheetName(sheetName: string): Table;
|
|
176
177
|
initialize(cells: CellsByAddressType): void;
|
|
177
178
|
absolutizeFormula(): void;
|
package/dist/lib/table.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../lib/table.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../lib/table.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/table.js
CHANGED
|
@@ -22,7 +22,8 @@ class Table {
|
|
|
22
22
|
maxNumCols = -1,
|
|
23
23
|
headerWidth = HEADER_WIDTH,
|
|
24
24
|
headerHeight = HEADER_HEIGHT,
|
|
25
|
-
functions: functions$1 = functions
|
|
25
|
+
functions: functions$1 = functions,
|
|
26
|
+
sheetName
|
|
26
27
|
}) {
|
|
27
28
|
this.totalWidth = 0;
|
|
28
29
|
this.totalHeight = 0;
|
|
@@ -54,6 +55,7 @@ class Table {
|
|
|
54
55
|
this.headerWidth = headerWidth;
|
|
55
56
|
this.functions = functions$1;
|
|
56
57
|
this.idsToBeAbsoluted = [];
|
|
58
|
+
this.sheetName = sheetName || "";
|
|
57
59
|
}
|
|
58
60
|
getTableBySheetName(sheetName) {
|
|
59
61
|
const sheetId = this.sheets[sheetName];
|
|
@@ -185,6 +187,7 @@ class Table {
|
|
|
185
187
|
if (!copyCache) {
|
|
186
188
|
this.addressesById = {};
|
|
187
189
|
}
|
|
190
|
+
copied.sheetName = this.sheetName;
|
|
188
191
|
return copied;
|
|
189
192
|
}
|
|
190
193
|
getAddressById(id, slideY = 0, slideX = 0) {
|
package/dist/lib/table.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../lib/table.ts"],"sourcesContent":["import { defaultParser } from '../parsers/core';\nimport { defaultRenderer } from '../renderers/core';\nimport {\n Id,\n Ids,\n IdMatrix,\n AreaType,\n CellsByIdType,\n CellsByAddressType,\n PointType,\n WriterType,\n Address,\n CellFilter,\n Labelers,\n MatrixType,\n CellType,\n Parsers,\n Renderers,\n HistoryType,\n StoreReflectionType,\n ShapeType,\n OperatorType,\n TableMapType,\n SheetMapType,\n} from '../types';\nimport { areaShape, createMatrix, expandRange, getMaxSizesFromCells, matrixShape, putMatrix } from './structs';\nimport { a2p, x2c, p2a, y2r, grantAddressAbsolute } from './converters';\nimport { FunctionMapping } from '../formula/functions/__base';\nimport { functions as functionsDefault } from '../formula/mapping';\nimport { absolutizeFormula, Lexer, stripSheetName } from '../formula/evaluator';\nimport { solveFormula } from '../formula/solver';\n\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH, HEADER_HEIGHT, HEADER_WIDTH, HISTORY_LIMIT } from '../constants';\nimport { shouldTracking } from '../store/helpers';\nimport * as prevention from './prevention';\n\ntype Props = {\n parsers?: Parsers;\n renderers?: Renderers;\n labelers?: Labelers;\n useBigInt?: boolean;\n historyLimit?: number;\n minNumRows?: number;\n maxNumRows?: number;\n minNumCols?: number;\n maxNumCols?: number;\n headerHeight?: number;\n headerWidth?: number;\n functions?: FunctionMapping;\n};\n\nconst noFilter: CellFilter = () => true;\n\ntype GetProps = {\n // null for the system, do not use it\n evaluates?: boolean | null;\n raise?: boolean;\n filter?: CellFilter;\n};\n\ntype MoveProps = {\n src: AreaType;\n dst: AreaType;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n historicize?: boolean;\n};\n\ntype GetFlattenProps = GetProps & {\n key?: keyof CellType;\n};\n\ntype GetPropsWithArea = GetProps & {\n area?: AreaType;\n};\n\ntype GetFlattenPropsWithArea = GetFlattenProps & {\n area?: AreaType;\n};\n\nexport interface UserTable {\n changedAt: Date;\n lastChangedAt?: Date;\n top: number;\n left: number;\n bottom: number;\n right: number;\n minNumRows: number;\n maxNumRows: number;\n minNumCols: number;\n maxNumCols: number;\n totalWidth: number;\n totalHeight: number;\n headerWidth: number;\n headerHeight: number;\n currentHistory?: HistoryType;\n\n getRectSize(area: AreaType): ShapeType;\n getAddressById(id: Id, slideY: number, slideX: number): string | undefined;\n getAddressesByIds(ids: CellsByIdType): CellsByAddressType;\n getPointById(id: Id): PointType;\n getByPoint(point: PointType): CellType | undefined;\n getById(id: Id): CellType | undefined;\n getNumRows(base?: number): number;\n getNumCols(base?: number): number;\n getMatrixFlatten(args?: GetFlattenPropsWithArea): any[][];\n getObjectFlatten(args?: GetFlattenProps): CellsByAddressType;\n getRowsFlatten(args?: GetFlattenProps): CellsByAddressType[];\n getColsFlatten(args?: GetFlattenProps): CellsByAddressType[];\n getMatrix(args?: GetPropsWithArea): (CellType | null)[][];\n getObject(args?: GetProps): CellsByAddressType;\n getRows(args?: GetProps): CellsByAddressType[];\n getCols(args?: GetProps): CellsByAddressType[];\n getTableBySheetName(sheetName: string): UserTable;\n move(args: MoveProps): UserTable;\n copy(args: MoveProps): UserTable;\n update(args: {\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n writeMatrix(args: {\n point: PointType;\n matrix: MatrixType<string>;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n write(args: {\n point: PointType;\n value: string;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n addRowsAndUpdate(args: {\n y: number;\n numRows: number;\n baseY: number;\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n addRows(args: { y: number; numRows: number; baseY: number; reflection?: StoreReflectionType }): UserTable;\n deleteRows(args: { y: number; numRows: number; reflection?: StoreReflectionType }): UserTable;\n addColsAndUpdate(args: {\n x: number;\n numCols: number;\n baseX: number;\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n addCols(args: { x: number; numCols: number; baseX: number; reflection?: StoreReflectionType }): UserTable;\n deleteCols(args: { x: number; numCols: number; reflection?: StoreReflectionType }): UserTable;\n undo(): {\n history: HistoryType | null;\n newTable: UserTable;\n };\n redo(): {\n history: HistoryType | null;\n newTable: UserTable;\n };\n getHistories(): HistoryType[];\n getHistoryIndex(): number;\n getHistorySize(): number;\n}\n\nexport class Table implements UserTable {\n public changedAt: Date;\n public lastChangedAt?: Date;\n public minNumRows: number;\n public maxNumRows: number;\n public minNumCols: number;\n public maxNumCols: number;\n public totalWidth: number = 0;\n public totalHeight: number = 0;\n public headerWidth: number = 0;\n public headerHeight: number = 0;\n public currentHistory?: HistoryType;\n public sheetId: number = 0;\n public sheetName: string = '';\n public sheets: SheetMapType = {};\n public tables: TableMapType = {};\n\n private head: bigint | number;\n private idMatrix: IdMatrix;\n private data: CellsByIdType = {};\n private area: AreaType = { top: 0, left: 0, bottom: 0, right: 0 };\n private parsers: Parsers;\n private renderers: Renderers;\n private labelers: Labelers;\n private functions: FunctionMapping = {};\n private lastHistory?: HistoryType;\n private histories: HistoryType[];\n private historyIndex: number;\n private addressesById: { [id: Id]: Address };\n private historyLimit: number;\n private solvedCaches: { [address: Address]: any };\n private idsToBeAbsoluted: Id[];\n\n constructor({\n parsers = {},\n renderers = {},\n labelers = {},\n useBigInt = false,\n historyLimit: historyLimit,\n minNumRows = 1,\n maxNumRows = -1,\n minNumCols = 1,\n maxNumCols = -1,\n headerWidth = HEADER_WIDTH,\n headerHeight = HEADER_HEIGHT,\n functions = functionsDefault,\n }: Props) {\n this.head = useBigInt ? BigInt(0) : 0;\n this.parsers = parsers || {};\n this.renderers = renderers || {};\n this.labelers = labelers || {};\n this.idMatrix = [];\n this.histories = [];\n this.historyIndex = -1;\n this.addressesById = {};\n this.historyLimit = historyLimit || HISTORY_LIMIT;\n this.changedAt = new Date();\n this.minNumRows = minNumRows || 0;\n this.maxNumRows = maxNumRows || 0;\n this.minNumCols = minNumCols || 0;\n this.maxNumCols = maxNumCols || 0;\n this.solvedCaches = {};\n this.headerHeight = headerHeight;\n this.headerWidth = headerWidth;\n this.functions = functions;\n this.idsToBeAbsoluted = [];\n }\n\n public getTableBySheetName(sheetName: string) {\n const sheetId = this.sheets[sheetName];\n return this.tables[sheetId];\n }\n\n public initialize(cells: CellsByAddressType) {\n const auto = getMaxSizesFromCells(cells);\n this.area = {\n top: 0,\n left: 0,\n bottom: auto.numRows || 0,\n right: auto.numCols || 0,\n };\n\n // make idMatrix beforehand\n for (let y = 0; y < auto.numRows + 1; y++) {\n const ids: Ids = [];\n this.idMatrix.push(ids);\n for (let x = 0; x < auto.numCols + 1; x++) {\n const id = this.generateId();\n ids.push(id);\n const address = p2a({ y, x });\n this.addressesById[id] = address;\n }\n }\n Object.keys(cells).forEach((address) => {\n const range = expandRange(address);\n const data = cells[address];\n range.forEach((address) => {\n const origin = cells[address];\n cells[address] = {\n ...origin,\n ...data,\n style: {\n ...origin?.style,\n ...data?.style,\n },\n prevention: (origin?.prevention || 0) | (data?.prevention || 0),\n };\n });\n });\n\n const common = cells?.['default'];\n for (let y = 0; y < auto.numRows + 1; y++) {\n const rowId = y2r(y);\n const rowDefault = cells?.[rowId];\n for (let x = 0; x < auto.numCols + 1; x++) {\n const id = this.getId({ y, x });\n const address = p2a({ y, x });\n const colId = x2c(x);\n const colDefault = cells?.[colId];\n const cell = cells?.[address];\n const stacked = {\n ...common,\n ...rowDefault,\n ...colDefault,\n ...cell,\n style: {\n ...common?.style,\n ...rowDefault?.style,\n ...colDefault?.style,\n ...cell?.style,\n },\n prevention:\n (common?.prevention || 0) |\n (rowDefault?.prevention || 0) |\n (colDefault?.prevention || 0) |\n (cell?.prevention || 0),\n } as CellType;\n\n if (stacked?.value?.startsWith?.('=')) {\n this.idsToBeAbsoluted.push(id);\n }\n if (y === 0) {\n if (stacked.width == null) {\n stacked.width = DEFAULT_WIDTH;\n }\n } else if (x === 0) {\n if (stacked.height == null) {\n stacked.height = DEFAULT_HEIGHT;\n }\n } else {\n delete stacked.height;\n delete stacked.width;\n delete stacked.labeler;\n }\n this.data[id] = stacked;\n }\n }\n this.setTotalSize();\n }\n\n public absolutizeFormula() {\n this.idsToBeAbsoluted.forEach((id) => {\n const cell = this.data[id];\n if (cell == null) {\n return;\n }\n cell.value = absolutizeFormula({\n value: cell?.value,\n table: this,\n });\n });\n }\n\n private generateId() {\n return (this.head++).toString(36);\n }\n\n public getRectSize({ top, left, bottom, right }: AreaType) {\n let width = 0,\n height = 0;\n for (let x = left || 1; x < right; x++) {\n width += this.getByPoint({ y: 0, x })?.width || DEFAULT_WIDTH;\n }\n for (let y = top || 1; y < bottom; y++) {\n height += this.getByPoint({ y, x: 0 })?.height || DEFAULT_HEIGHT;\n }\n return { width, height };\n }\n private setTotalSize() {\n const { bottom, right } = this.area;\n const { width, height } = this.getRectSize({\n top: 1,\n left: 1,\n bottom: bottom + 1,\n right: right + 1,\n });\n this.totalWidth = width + this.headerWidth;\n this.totalHeight = height + this.headerHeight;\n }\n\n public shallowCopy({ copyCache = true }: { copyCache?: boolean } = {}) {\n const copied: Table = Object.assign(Object.create(Object.getPrototypeOf(this)), this);\n copied.changedAt = new Date();\n copied.lastChangedAt = this.changedAt;\n copied.setTotalSize();\n copied.idsToBeAbsoluted = [];\n copied.solvedCaches = {};\n if (!copyCache) {\n // force reset\n this.addressesById = {};\n }\n return copied;\n }\n\n public getAddressById(id: Id, slideY = 0, slideX = 0): string | undefined {\n const absCol = id.startsWith('$');\n if (absCol) {\n id = id.slice(1);\n slideX = 0;\n }\n const absRow = id.endsWith('$');\n if (absRow) {\n id = id.slice(0, -1);\n slideY = 0;\n }\n\n for (let y = 0; y < this.idMatrix.length; y++) {\n const ids = this.idMatrix[y];\n for (let x = 0; x < ids.length; x++) {\n const existing = ids[x];\n const address = p2a({ y, x });\n this.addressesById[existing] = address;\n if (existing === id) {\n const slidedAddress = p2a({\n y: y + slideY,\n x: x + slideX,\n });\n return grantAddressAbsolute(slidedAddress, absCol, absRow);\n }\n }\n }\n }\n\n public getAddressesByIds(ids: CellsByIdType) {\n const addresses: CellsByAddressType = {};\n Object.keys(ids).forEach((id) => {\n const cell = ids[id];\n const address = this.getAddressById(id);\n if (cell && address) {\n addresses[address] = cell;\n }\n });\n return addresses;\n }\n\n public getPointById(id: Id): PointType {\n const address = this.getAddressById(id);\n if (address) {\n return a2p(address);\n }\n return { y: 0, x: 0 };\n }\n private getId(point: PointType) {\n const { y, x } = point;\n return this.idMatrix[Math.abs(y)]?.[Math.abs(x)];\n }\n\n public getByPoint(point: PointType) {\n const { y, x } = point;\n if (y === -1 || x === -1) {\n return undefined;\n }\n const id = this.idMatrix[y]?.[x];\n if (id == null) {\n return undefined;\n }\n const value = this.data[id];\n return value;\n }\n\n public getById(id: Id) {\n return this.data[id];\n }\n\n public getNumRows(base = 0) {\n const { top, bottom } = this.area;\n return base + bottom - top;\n }\n\n public getNumCols(base = 0) {\n const { left, right } = this.area;\n return base + right - left;\n }\n\n public get top() {\n return this.area.top;\n }\n public get left() {\n return this.area.left;\n }\n public get bottom() {\n return this.area.bottom;\n }\n public get right() {\n return this.area.right;\n }\n\n public getMatrixFlatten({\n area,\n key = 'value',\n evaluates = true,\n raise = false,\n filter = noFilter,\n }: GetFlattenPropsWithArea = {}) {\n const { top, left, bottom, right } = area || {\n top: 1,\n left: 1,\n bottom: this.area.bottom,\n right: this.area.right,\n };\n const matrix = createMatrix(bottom - top + 1, right - left + 1);\n for (let y = top; y <= bottom; y++) {\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y, x }) || {};\n if (!filter(cell)) {\n continue;\n }\n matrix[y - top][x - left] = solveFormula({\n value: cell[key],\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n });\n }\n }\n return matrix;\n }\n public getObjectFlatten({ key = 'value', evaluates = true, raise = false, filter = noFilter }: GetFlattenProps = {}) {\n const result: CellsByAddressType = {};\n const { top, left, bottom, right } = this.area;\n for (let y = top; y <= bottom; y++) {\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n result[p2a({ y, x })] = solveFormula({\n value: cell[key],\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n });\n }\n }\n }\n return result;\n }\n public getRowsFlatten({ key = 'value', evaluates = true, raise = false, filter = noFilter }: GetFlattenProps = {}) {\n const result: CellsByAddressType[] = [];\n const { top, left, bottom, right } = this.area;\n for (let y = top; y <= bottom; y++) {\n const row: CellsByAddressType = {};\n result.push(row);\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n row[x2c(x) || y2r(y)] = solveFormula({\n value: cell[key],\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n });\n }\n }\n }\n return result;\n }\n public getColsFlatten({ key = 'value', evaluates = true, raise = false, filter = noFilter }: GetFlattenProps = {}) {\n const result: CellsByAddressType[] = [];\n const { top, left, bottom, right } = this.area;\n for (let x = left; x <= right; x++) {\n const col: CellsByAddressType = {};\n result.push(col);\n for (let y = top; y <= bottom; y++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n col[y2r(y) || x2c(x)] = solveFormula({\n value: cell[key],\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n });\n }\n }\n }\n return result;\n }\n public getMatrix({\n area,\n evaluates = true,\n raise = false,\n filter = noFilter,\n }: GetPropsWithArea = {}): (CellType | null)[][] {\n const { top, left, bottom, right } = area || {\n top: 1,\n left: 1,\n bottom: this.area.bottom,\n right: this.area.right,\n };\n const matrix = createMatrix(bottom - top + 1, right - left + 1);\n for (let y = top; y <= bottom; y++) {\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y, x });\n if (cell != null && filter(cell)) {\n matrix[y - top][x - left] = {\n ...cell,\n value: solveFormula({\n value: cell?.value,\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n }),\n };\n }\n }\n }\n return matrix;\n }\n public getObject({ evaluates = true, raise = false, filter = noFilter }: GetProps = {}) {\n const result: CellsByAddressType = {};\n const { top, left, bottom, right } = this.area;\n for (let y = top; y <= bottom; y++) {\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n result[p2a({ y, x })] = {\n ...cell,\n value: solveFormula({\n value: cell?.value,\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n }),\n };\n }\n }\n }\n return result;\n }\n public getRows({ evaluates = true, raise = false, filter = noFilter }: GetProps = {}) {\n const result: CellsByAddressType[] = [];\n const { top, left, bottom, right } = this.area;\n for (let y = top; y <= bottom; y++) {\n const row: CellsByAddressType = {};\n result.push(row);\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n row[x2c(x) || y2r(y)] = {\n ...cell,\n value: solveFormula({\n value: cell?.value,\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n }),\n };\n }\n }\n }\n return result;\n }\n public getCols({ evaluates = true, raise = false, filter = noFilter }: GetProps = {}) {\n const result: CellsByAddressType[] = [];\n const { top, left, bottom, right } = this.area;\n for (let x = left; x <= right; x++) {\n const col: CellsByAddressType = {};\n result.push(col);\n for (let y = top; y <= bottom; y++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n col[y2r(y) || x2c(x)] = {\n ...cell,\n value: solveFormula({\n value: cell?.value,\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n }),\n };\n }\n }\n }\n return result;\n }\n\n private pushHistory(history: HistoryType) {\n const strayedHistories = this.histories.splice(this.historyIndex + 1, this.histories.length);\n strayedHistories.forEach(this.cleanStrayed.bind(this));\n this.histories.push(history);\n this.lastHistory = this.currentHistory = history;\n if (this.histories.length > this.historyLimit) {\n const kickedOut = this.histories.splice(0, 1)[0];\n this.cleanObsolete(kickedOut);\n } else {\n this.historyIndex++;\n }\n }\n\n private cleanObsolete(history: HistoryType) {\n if (history.operation === 'DELETE_ROWS' || history.operation === 'DELETE_COLS') {\n history.deleted.forEach((ids) => {\n ids.forEach((id) => {\n delete this.data[id];\n });\n });\n }\n if (history.operation === 'MOVE') {\n Object.keys(history.lostRows).forEach((address) => {\n const idMatrix = history.lostRows[address];\n idMatrix.map((ids) =>\n ids.forEach((id) => {\n if (id != null) {\n delete this.data[id];\n }\n }),\n );\n });\n }\n }\n\n private cleanStrayed(history: HistoryType) {\n if (history.operation === 'ADD_ROWS' || history.operation === 'ADD_COLS') {\n history.idMatrix.forEach((ids) => {\n ids.forEach((id) => {\n delete this.data[id];\n });\n });\n }\n }\n\n private getNewIdMatrix(area: AreaType) {\n const matrix: IdMatrix = [];\n const { top, left, bottom, right } = area;\n for (let y = top; y <= bottom; y++) {\n const ids: Ids = [];\n matrix.push(ids);\n for (let x = left; x <= right; x++) {\n ids.push(this.generateId());\n }\n }\n return matrix;\n }\n\n private getIdMatrixFromArea(area: AreaType) {\n const matrix: IdMatrix = [];\n const { top, left, bottom, right } = area;\n for (let y = top; y <= bottom; y++) {\n const ids: Ids = [];\n matrix.push(ids);\n for (let x = left; x <= right; x++) {\n const id = this.idMatrix[y]?.[x];\n if (id == null) {\n continue;\n }\n ids.push(id);\n }\n }\n return matrix;\n }\n\n private setChangedAt(cell?: CellType, changedAt?: Date) {\n if (cell == null) {\n return null;\n }\n cell.changedAt = changedAt || new Date();\n return cell;\n }\n\n private copyCellLayout(cell: CellType | undefined) {\n if (cell == null) {\n return undefined;\n }\n const newCell: CellType = {};\n if (cell.style != null) {\n newCell.style = cell.style;\n }\n if (cell.justifyContent != null) {\n newCell.justifyContent = cell.justifyContent;\n }\n if (cell.alignItems != null) {\n newCell.alignItems = cell.alignItems;\n }\n if (cell.renderer != null) {\n newCell.renderer = cell.renderer;\n }\n if (cell.parser != null) {\n newCell.parser = cell.parser;\n }\n if (cell.width != null) {\n newCell.width = cell.width;\n }\n if (cell.height != null) {\n newCell.height = cell.height;\n }\n if (cell.labeler != null) {\n newCell.labeler = cell.labeler;\n }\n return newCell;\n }\n\n public move({ src, dst, historicize = true, operator = 'SYSTEM', reflection = {} }: MoveProps) {\n const matrixNew = this.getNewIdMatrix(src);\n const matrixFrom = this.getIdMatrixFromArea(src);\n const matrixTo = this.getIdMatrixFromArea(dst);\n putMatrix(this.idMatrix, matrixNew, src, (_, id) => {\n const cell = this.data[id];\n if (operator === 'USER' && prevention.isPrevented(cell?.prevention, prevention.MoveFrom)) {\n return false;\n }\n return true;\n });\n const lostRows = putMatrix(this.idMatrix, matrixFrom, dst, (srcId, dstId) => {\n const srcCell = this.data[srcId];\n const dstCell = this.data[dstId];\n if (\n operator === 'USER' &&\n (prevention.isPrevented(srcCell?.prevention, prevention.MoveFrom) ||\n prevention.isPrevented(dstCell?.prevention, prevention.MoveTo))\n ) {\n return false;\n }\n if (srcCell != null) {\n this.setChangedAt(srcCell, new Date());\n }\n return true;\n });\n if (historicize) {\n this.pushHistory({\n applyed: true,\n operation: 'MOVE',\n reflection,\n src,\n dst,\n matrixFrom,\n matrixTo,\n matrixNew,\n lostRows,\n });\n }\n return this.shallowCopy({ copyCache: false });\n }\n\n public copy({ src, dst, operator = 'SYSTEM', reflection = {} }: MoveProps) {\n const { height: maxHeight, width: maxWidth } = areaShape({\n ...src,\n base: 1,\n });\n const { top: topFrom, left: leftFrom } = src;\n const { top: topTo, left: leftTo, bottom: bottomTo, right: rightTo } = dst;\n const diff: CellsByAddressType = {};\n const changedAt = new Date();\n\n for (let i = 0; i <= bottomTo - topTo; i++) {\n const toY = topTo + i;\n if (toY > this.getNumRows()) {\n continue;\n }\n for (let j = 0; j <= rightTo - leftTo; j++) {\n const toX = leftTo + j;\n if (toX > this.getNumCols()) {\n continue;\n }\n const fromY = topFrom + (i % maxHeight);\n const fromX = leftFrom + (j % maxWidth);\n const slideY = toY - fromY;\n const slideX = toX - fromX;\n const cell: CellType = {\n ...this.getByPoint({\n y: topFrom + (i % maxHeight),\n x: leftFrom + (j % maxWidth),\n }),\n prevention: 0, // Is this okay?\n };\n const value = absolutizeFormula({\n value: cell?.value,\n table: this,\n slideY,\n slideX,\n });\n this.setChangedAt(cell, changedAt);\n diff[p2a({ y: toY, x: toX })] = {\n ...cell,\n style: { ...cell?.style },\n value,\n };\n }\n }\n return this.update({\n diff,\n partial: false,\n operator,\n reflection,\n });\n }\n\n private _update({\n diff,\n partial = true,\n updateChangedAt = true,\n ignoreFields = ['labeler', 'prevention'],\n operator = 'SYSTEM',\n }: {\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n ignoreFields?: (keyof CellType)[];\n operator?: OperatorType;\n }) {\n const diffBefore: CellsByIdType = {};\n const diffAfter: CellsByIdType = {};\n const changedAt = new Date();\n\n Object.keys(diff).forEach((address) => {\n const cell = { ...diff[address] };\n if (operator === 'USER' && prevention.isPrevented(cell?.prevention, prevention.Update)) {\n return;\n }\n\n cell.value = absolutizeFormula({\n value: cell.value,\n table: this,\n });\n const point = a2p(address);\n const id = this.getId(point);\n const current = this.data[id];\n ignoreFields.forEach((key) => {\n cell[key] = current?.[key];\n });\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.Write)) {\n cell.value = current?.value;\n }\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.Style)) {\n cell.style = current?.style;\n cell.justifyContent = current?.justifyContent;\n cell.alignItems = current?.alignItems;\n }\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.Resize)) {\n cell.width = current?.width;\n cell.height = current?.height;\n }\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.SetRenderer)) {\n cell.renderer = current?.renderer;\n }\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.SetParser)) {\n cell.parser = current?.parser;\n }\n if (updateChangedAt) {\n this.setChangedAt(cell, changedAt);\n }\n // must not partial\n diffBefore[id] = this.getByPoint(point);\n diffAfter[id] = cell;\n if (partial) {\n this.data[id] = { ...current, ...cell };\n } else {\n this.data[id] = cell;\n }\n });\n this.solvedCaches = {};\n return {\n diffBefore,\n diffAfter,\n };\n }\n\n public update({\n diff,\n partial = true,\n updateChangedAt = true,\n historicize = true,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n historicize?: boolean;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n const { diffBefore, diffAfter } = this._update({\n diff,\n partial,\n operator,\n updateChangedAt,\n });\n\n if (historicize) {\n this.pushHistory({\n applyed: true,\n operation: 'UPDATE',\n reflection,\n diffBefore,\n diffAfter,\n partial,\n });\n }\n return this.shallowCopy({ copyCache: true });\n }\n\n public writeMatrix({\n point,\n matrix,\n updateChangedAt = true,\n historicize = true,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n point: PointType;\n matrix: MatrixType<string>;\n updateChangedAt?: boolean;\n historicize?: boolean;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n const { y: baseY, x: baseX } = point;\n const diff: CellsByAddressType = {};\n matrix.forEach((cols, i) => {\n const y = baseY + i;\n if (y > this.bottom) {\n return;\n }\n cols.forEach((value, j) => {\n const x = baseX + j;\n if (x > this.right) {\n return;\n }\n const cell = this.parse({ y, x }, value);\n diff[p2a({ y, x })] = cell;\n });\n });\n return this.update({\n diff,\n partial: true,\n updateChangedAt,\n historicize,\n operator,\n reflection,\n });\n }\n\n public write({\n point,\n value,\n updateChangedAt = true,\n historicize = true,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n point: PointType;\n value: string;\n updateChangedAt?: boolean;\n historicize?: boolean;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n return this.writeMatrix({\n point,\n matrix: [[value]],\n updateChangedAt,\n historicize,\n operator,\n reflection,\n });\n }\n\n public addRowsAndUpdate({\n y,\n numRows,\n baseY,\n diff,\n partial,\n updateChangedAt,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n y: number;\n numRows: number;\n baseY: number;\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n const returned = this.addRows({\n y,\n numRows,\n baseY,\n reflection,\n });\n\n Object.assign(this.lastHistory!, this._update({ diff, partial, updateChangedAt, operator }), { partial });\n\n return returned;\n }\n\n public addRows({\n y,\n numRows,\n baseY,\n // operator = 'SYSTEM',\n reflection = {},\n }: {\n y: number;\n numRows: number;\n baseY: number;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n if (this.maxNumRows !== -1 && this.getNumRows() + numRows > this.maxNumRows) {\n console.error(`Rows are limited to ${this.maxNumRows}.`);\n return this;\n }\n const numCols = this.getNumCols(1);\n const rows: IdMatrix = [];\n const changedAt = new Date();\n for (let i = 0; i < numRows; i++) {\n const row: Ids = [];\n for (let j = 0; j < numCols; j++) {\n const id = this.generateId();\n row.push(id);\n const cell = this.getByPoint({ y: baseY, x: j });\n const copied = this.copyCellLayout(cell);\n this.data[id] = { ...copied, changedAt };\n }\n rows.push(row);\n }\n this.idMatrix.splice(y, 0, ...rows);\n this.area.bottom += numRows;\n\n this.pushHistory({\n applyed: true,\n operation: 'ADD_ROWS',\n reflection,\n y,\n numRows,\n idMatrix: rows,\n });\n return this.shallowCopy({ copyCache: false });\n }\n public deleteRows({\n y,\n numRows,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n y: number;\n numRows: number;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n if (this.minNumRows !== -1 && this.getNumRows() - numRows < this.minNumRows) {\n console.error(`At least ${this.minNumRows} row(s) are required.`);\n return this;\n }\n\n const ys: number[] = [];\n for (let i = y; i < y + numRows; i++) {\n const cell = this.getByPoint({ y: i, x: 0 });\n if (operator === 'USER' && prevention.isPrevented(cell?.prevention, prevention.DeleteRow)) {\n console.warn(`Cannot delete row ${i}.`);\n return this;\n }\n ys.unshift(i);\n }\n\n const deleted: MatrixType = [];\n ys.forEach((y) => {\n const row = this.idMatrix.splice(y, 1);\n deleted.unshift(row[0]);\n });\n this.area.bottom -= ys.length;\n this.pushHistory({\n applyed: true,\n operation: 'DELETE_ROWS',\n reflection,\n ys: ys.reverse(),\n deleted,\n });\n return this.shallowCopy({ copyCache: false });\n }\n\n public addColsAndUpdate({\n x,\n numCols,\n baseX,\n diff,\n partial,\n updateChangedAt,\n reflection = {},\n }: {\n x: number;\n numCols: number;\n baseX: number;\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }) {\n const returned = this.addCols({\n x,\n numCols,\n baseX,\n reflection,\n });\n\n Object.assign(this.lastHistory!, this._update({ diff, partial, updateChangedAt }), { partial });\n return returned;\n }\n\n public addCols({\n x,\n numCols,\n baseX,\n reflection = {},\n }: {\n x: number;\n numCols: number;\n baseX: number;\n reflection?: StoreReflectionType;\n }) {\n if (this.maxNumCols !== -1 && this.getNumCols() + numCols > this.maxNumCols) {\n console.error(`Columns are limited to ${this.maxNumCols}.`);\n return this;\n }\n const numRows = this.getNumRows(1);\n const rows: IdMatrix = [];\n const changedAt = new Date();\n for (let i = 0; i < numRows; i++) {\n const row: Ids = [];\n for (let j = 0; j < numCols; j++) {\n const id = this.generateId();\n row.push(id);\n const cell = this.getByPoint({ y: i, x: baseX });\n const copied = this.copyCellLayout(cell);\n this.idMatrix[i].splice(x, 0, id);\n this.data[id] = { ...copied, changedAt };\n }\n rows.push(row);\n }\n this.area.right += numCols;\n\n this.pushHistory({\n applyed: true,\n operation: 'ADD_COLS',\n reflection,\n x,\n numCols,\n idMatrix: rows,\n });\n return this.shallowCopy({ copyCache: false });\n }\n public deleteCols({\n x,\n numCols,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n x: number;\n numCols: number;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n if (this.minNumCols !== -1 && this.getNumCols() - numCols < this.minNumCols) {\n console.error(`At least ${this.minNumCols} column(s) are required.`);\n return this;\n }\n\n const xs: number[] = [];\n for (let i = x; i < x + numCols; i++) {\n const cell = this.getByPoint({ y: 0, x: i });\n if (operator === 'USER' && prevention.isPrevented(cell?.prevention, prevention.DeleteCol)) {\n console.warn(`Cannot delete col ${i}.`);\n continue;\n }\n xs.unshift(i);\n }\n\n const deleted: MatrixType = [];\n this.idMatrix.forEach((row) => {\n const deleting: Ids = [];\n deleted.push(deleting);\n // reverse and delete\n xs.forEach((x) => {\n deleting.unshift(...row.splice(x, 1));\n });\n });\n this.area.right -= xs.length;\n\n this.pushHistory({\n applyed: true,\n operation: 'DELETE_COLS',\n reflection,\n xs: xs.reverse(),\n deleted,\n });\n return this.shallowCopy({ copyCache: false });\n }\n public getHistories() {\n return [...this.histories];\n }\n public getHistoryIndex() {\n return this.historyIndex;\n }\n public getHistorySize() {\n return this.histories.length;\n }\n public getHistoryLimit() {\n return this.historyLimit;\n }\n\n public setFunctions(additionalFunctions: FunctionMapping) {\n this.functions = { ...functionsDefault, ...additionalFunctions };\n }\n\n public getArea(): AreaType {\n return { ...this.area };\n }\n\n public parse(point: PointType, value: string) {\n const cell = this.getByPoint(point) || {};\n const parser = this.parsers[cell.parser || ''] || defaultParser;\n return parser.call(value, cell);\n }\n\n public render(point: PointType, writer?: WriterType) {\n const cell = this.getByPoint(point) || {};\n const renderer = this.renderers[cell.renderer || ''] || defaultRenderer;\n return renderer.call(this, point, writer);\n }\n\n public stringify(point: PointType, value?: any, evaluates = false) {\n const cell = this.getByPoint(point);\n const renderer = this.renderers[cell?.renderer || ''] || defaultRenderer;\n const s = renderer.stringify(typeof value === 'undefined' ? { ...cell } : { ...cell, value });\n\n if (s[0] === '=') {\n if (evaluates) {\n return String(solveFormula({ value: s, table: this, raise: false, evaluates, origin: point }));\n }\n const lexer = new Lexer(s.substring(1));\n lexer.tokenize();\n return '=' + lexer.stringifyToRef(this);\n }\n return s;\n }\n\n public trim(area: AreaType): Table {\n const copied: Table = Object.assign(Object.create(Object.getPrototypeOf(this)), this);\n copied.area = area;\n // this causes RangeError on circular reference(maximum call stack size exceeded)\n // copied.solvedCaches = {};\n return copied;\n }\n\n public getIdByAddress(address: Address) {\n let table: Table = this;\n if (address.indexOf('!') !== -1) {\n const [sheetName, addr] = address.split('!');\n const sheetId = this.sheets[stripSheetName(sheetName)];\n table = this.tables[sheetId];\n address = addr;\n }\n const { y, x } = a2p(address);\n const id = table.getId({ y, x });\n if (id) {\n const prefix = table === this ? '' : `#${table.sheetId}!`;\n return `${prefix}#${x < 0 ? '$' : ''}${id}${y < 0 ? '$' : ''}`;\n }\n }\n\n private applyDiff(diff: CellsByIdType, partial = true) {\n if (!partial) {\n Object.assign(this.data, diff);\n return;\n }\n Object.keys(diff).map((id) => {\n const cell = diff[id];\n this.data[id] = { ...this.getById(id), ...cell };\n });\n }\n\n public undo() {\n if (this.historyIndex < 0) {\n return { history: null, newTable: this as Table };\n }\n const history = this.histories[this.historyIndex--];\n history.applyed = false;\n this.currentHistory = history;\n switch (history.operation) {\n case 'UPDATE':\n // diffBefore is guaranteed as total of cell (not partial)\n this.applyDiff(history.diffBefore, false);\n break;\n case 'ADD_ROWS': {\n if (history.diffBefore) {\n this.applyDiff(history.diffBefore, false);\n }\n const { height } = matrixShape({ matrix: history.idMatrix });\n this.idMatrix.splice(history.y, height);\n this.area.bottom -= height;\n break;\n }\n case 'ADD_COLS': {\n if (history.diffBefore) {\n this.applyDiff(history.diffBefore, false);\n }\n const { width } = matrixShape({ matrix: history.idMatrix });\n this.idMatrix.forEach((row) => {\n row.splice(history.x, width);\n });\n this.area.right -= width;\n break;\n }\n case 'DELETE_ROWS': {\n const { ys, deleted } = history;\n ys.forEach((y, i) => {\n this.idMatrix.splice(y, 0, deleted[i]);\n });\n this.area.bottom += ys.length;\n break;\n }\n case 'DELETE_COLS': {\n const { xs, deleted } = history;\n this.idMatrix.forEach((row, i) => {\n for (let j = 0; j < xs.length; j++) {\n row.splice(xs[j], 0, deleted[i][j]);\n }\n });\n this.area.right += xs.length;\n break;\n }\n case 'MOVE': {\n const { top: yFrom, left: xFrom } = history.src;\n const { top: yTo, left: xTo } = history.dst;\n const { height: rows, width: cols } = matrixShape({\n matrix: history.matrixFrom,\n base: -1,\n });\n putMatrix(this.idMatrix, history.matrixFrom, {\n top: yFrom,\n left: xFrom,\n bottom: yFrom + rows,\n right: xFrom + cols,\n });\n putMatrix(this.idMatrix, history.matrixTo, {\n top: yTo,\n left: xTo,\n bottom: yTo + rows,\n right: xTo + cols,\n });\n break;\n }\n }\n return {\n history,\n newTable: this.shallowCopy({\n copyCache: !shouldTracking(history.operation),\n }),\n };\n }\n\n public redo() {\n if (this.historyIndex + 1 >= this.histories.length) {\n return { history: null, newTable: this as Table };\n }\n const history = this.histories[++this.historyIndex];\n history.applyed = true;\n this.currentHistory = history;\n\n switch (history.operation) {\n case 'UPDATE':\n this.applyDiff(history.diffAfter, history.partial);\n break;\n case 'ADD_ROWS': {\n if (history.diffAfter) {\n this.applyDiff(history.diffAfter, history.partial);\n }\n const { height } = matrixShape({ matrix: history.idMatrix });\n this.idMatrix.splice(history.y, 0, ...history.idMatrix);\n this.area.bottom += height;\n break;\n }\n case 'ADD_COLS': {\n if (history.diffAfter) {\n this.applyDiff(history.diffAfter, history.partial);\n }\n const { width } = matrixShape({ matrix: history.idMatrix });\n this.idMatrix.map((row, i) => {\n row.splice(history.x, 0, ...history.idMatrix[i]);\n });\n this.area.right += width;\n break;\n }\n case 'DELETE_ROWS': {\n const { ys } = history;\n [...ys].reverse().forEach((y) => {\n this.idMatrix.splice(y, 1);\n });\n this.area.bottom -= ys.length;\n break;\n }\n case 'DELETE_COLS': {\n const { xs } = history;\n [...xs].reverse().forEach((x) => {\n this.idMatrix.forEach((row) => {\n row.splice(x, 1);\n });\n });\n this.area.right -= xs.length;\n break;\n }\n case 'MOVE': {\n const { src, dst } = history;\n this.move({ src, dst, operator: 'USER', historicize: false });\n }\n }\n return {\n history,\n newTable: this.shallowCopy({\n copyCache: !shouldTracking(history.operation),\n }),\n };\n }\n public getFunction(name: string) {\n return this.functions[name];\n }\n\n public getLabel(key: string, n: number) {\n const labeler = this.labelers[key];\n return labeler?.(n);\n }\n public getBase() {\n return this;\n }\n public getSolvedCache(key: string) {\n return this.solvedCaches[key];\n }\n public setSolvedCache(key: string, value: any) {\n this.solvedCaches[key] = value;\n }\n public wrappedSheetName() {\n const sheetName = this.sheetName;\n if (sheetName.indexOf(' ') !== -1) {\n return `'${sheetName}'`;\n }\n return sheetName;\n }\n public sheetPrefix(omit = false) {\n if (omit) {\n return '';\n }\n if (this.sheetName) {\n return `${this.wrappedSheetName()}!`;\n }\n return '';\n }\n public rangeToArea(range: string) {\n const cells = range.split(':');\n let [start, end] = cells;\n if (start.match(/[a-zA-Z]$/)) {\n start += '1';\n }\n if (start.match(/^[1-9]/)) {\n start = `A${start}`;\n }\n if (end?.match(/[a-zA-Z]$/)) {\n end += this.bottom;\n }\n if (end?.match(/^[1-9]/)) {\n end = `${x2c(this.right)}${end}`;\n }\n const { y: top, x: left } = a2p(start);\n const { y: bottom, x: right } = a2p(end || start);\n return {\n top: Math.abs(top),\n left: Math.abs(left),\n bottom: Math.abs(bottom),\n right: Math.abs(right),\n };\n }\n}\n"],"names":["functions","functionsDefault","address","prevention.isPrevented","prevention.MoveFrom","prevention.MoveTo","prevention.Update","prevention.Write","prevention.Style","prevention.Resize","prevention.SetRenderer","prevention.SetParser","prevention.DeleteRow","y","prevention.DeleteCol","x"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.js","sources":["../../lib/table.ts"],"sourcesContent":["import { defaultParser } from '../parsers/core';\nimport { defaultRenderer } from '../renderers/core';\nimport {\n Id,\n Ids,\n IdMatrix,\n AreaType,\n CellsByIdType,\n CellsByAddressType,\n PointType,\n WriterType,\n Address,\n CellFilter,\n Labelers,\n MatrixType,\n CellType,\n Parsers,\n Renderers,\n HistoryType,\n StoreReflectionType,\n ShapeType,\n OperatorType,\n TableMapType,\n SheetMapType,\n} from '../types';\nimport { areaShape, createMatrix, expandRange, getMaxSizesFromCells, matrixShape, putMatrix } from './structs';\nimport { a2p, x2c, p2a, y2r, grantAddressAbsolute } from './converters';\nimport { FunctionMapping } from '../formula/functions/__base';\nimport { functions as functionsDefault } from '../formula/mapping';\nimport { absolutizeFormula, Lexer, stripSheetName } from '../formula/evaluator';\nimport { solveFormula } from '../formula/solver';\n\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH, HEADER_HEIGHT, HEADER_WIDTH, HISTORY_LIMIT } from '../constants';\nimport { shouldTracking } from '../store/helpers';\nimport * as prevention from './prevention';\n\ntype Props = {\n parsers?: Parsers;\n renderers?: Renderers;\n labelers?: Labelers;\n useBigInt?: boolean;\n historyLimit?: number;\n minNumRows?: number;\n maxNumRows?: number;\n minNumCols?: number;\n maxNumCols?: number;\n headerHeight?: number;\n headerWidth?: number;\n functions?: FunctionMapping;\n sheetName?: string;\n};\n\nconst noFilter: CellFilter = () => true;\n\ntype GetProps = {\n // null for the system, do not use it\n evaluates?: boolean | null;\n raise?: boolean;\n filter?: CellFilter;\n};\n\ntype MoveProps = {\n src: AreaType;\n dst: AreaType;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n historicize?: boolean;\n};\n\ntype GetFlattenProps = GetProps & {\n key?: keyof CellType;\n};\n\ntype GetPropsWithArea = GetProps & {\n area?: AreaType;\n};\n\ntype GetFlattenPropsWithArea = GetFlattenProps & {\n area?: AreaType;\n};\n\nexport interface UserTable {\n changedAt: Date;\n lastChangedAt?: Date;\n top: number;\n left: number;\n bottom: number;\n right: number;\n minNumRows: number;\n maxNumRows: number;\n minNumCols: number;\n maxNumCols: number;\n totalWidth: number;\n totalHeight: number;\n headerWidth: number;\n headerHeight: number;\n currentHistory?: HistoryType;\n\n getRectSize(area: AreaType): ShapeType;\n getAddressById(id: Id, slideY: number, slideX: number): string | undefined;\n getAddressesByIds(ids: CellsByIdType): CellsByAddressType;\n getPointById(id: Id): PointType;\n getByPoint(point: PointType): CellType | undefined;\n getById(id: Id): CellType | undefined;\n getNumRows(base?: number): number;\n getNumCols(base?: number): number;\n getMatrixFlatten(args?: GetFlattenPropsWithArea): any[][];\n getObjectFlatten(args?: GetFlattenProps): CellsByAddressType;\n getRowsFlatten(args?: GetFlattenProps): CellsByAddressType[];\n getColsFlatten(args?: GetFlattenProps): CellsByAddressType[];\n getMatrix(args?: GetPropsWithArea): (CellType | null)[][];\n getObject(args?: GetProps): CellsByAddressType;\n getRows(args?: GetProps): CellsByAddressType[];\n getCols(args?: GetProps): CellsByAddressType[];\n getTableBySheetName(sheetName: string): UserTable;\n move(args: MoveProps): UserTable;\n copy(args: MoveProps): UserTable;\n update(args: {\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n writeMatrix(args: {\n point: PointType;\n matrix: MatrixType<string>;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n write(args: {\n point: PointType;\n value: string;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n addRowsAndUpdate(args: {\n y: number;\n numRows: number;\n baseY: number;\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n addRows(args: { y: number; numRows: number; baseY: number; reflection?: StoreReflectionType }): UserTable;\n deleteRows(args: { y: number; numRows: number; reflection?: StoreReflectionType }): UserTable;\n addColsAndUpdate(args: {\n x: number;\n numCols: number;\n baseX: number;\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }): UserTable;\n addCols(args: { x: number; numCols: number; baseX: number; reflection?: StoreReflectionType }): UserTable;\n deleteCols(args: { x: number; numCols: number; reflection?: StoreReflectionType }): UserTable;\n undo(): {\n history: HistoryType | null;\n newTable: UserTable;\n };\n redo(): {\n history: HistoryType | null;\n newTable: UserTable;\n };\n getHistories(): HistoryType[];\n getHistoryIndex(): number;\n getHistorySize(): number;\n}\n\nexport class Table implements UserTable {\n public changedAt: Date;\n public lastChangedAt?: Date;\n public minNumRows: number;\n public maxNumRows: number;\n public minNumCols: number;\n public maxNumCols: number;\n public totalWidth: number = 0;\n public totalHeight: number = 0;\n public headerWidth: number = 0;\n public headerHeight: number = 0;\n public currentHistory?: HistoryType;\n public sheetId: number = 0;\n public sheetName: string = '';\n public sheets: SheetMapType = {};\n public tables: TableMapType = {};\n\n private head: bigint | number;\n private idMatrix: IdMatrix;\n private data: CellsByIdType = {};\n private area: AreaType = { top: 0, left: 0, bottom: 0, right: 0 };\n private parsers: Parsers;\n private renderers: Renderers;\n private labelers: Labelers;\n private functions: FunctionMapping = {};\n private lastHistory?: HistoryType;\n private histories: HistoryType[];\n private historyIndex: number;\n private addressesById: { [id: Id]: Address };\n private historyLimit: number;\n private solvedCaches: { [address: Address]: any };\n private idsToBeAbsoluted: Id[];\n\n constructor({\n parsers = {},\n renderers = {},\n labelers = {},\n useBigInt = false,\n historyLimit: historyLimit,\n minNumRows = 1,\n maxNumRows = -1,\n minNumCols = 1,\n maxNumCols = -1,\n headerWidth = HEADER_WIDTH,\n headerHeight = HEADER_HEIGHT,\n functions = functionsDefault,\n sheetName,\n }: Props) {\n this.head = useBigInt ? BigInt(0) : 0;\n this.parsers = parsers || {};\n this.renderers = renderers || {};\n this.labelers = labelers || {};\n this.idMatrix = [];\n this.histories = [];\n this.historyIndex = -1;\n this.addressesById = {};\n this.historyLimit = historyLimit || HISTORY_LIMIT;\n this.changedAt = new Date();\n this.minNumRows = minNumRows || 0;\n this.maxNumRows = maxNumRows || 0;\n this.minNumCols = minNumCols || 0;\n this.maxNumCols = maxNumCols || 0;\n this.solvedCaches = {};\n this.headerHeight = headerHeight;\n this.headerWidth = headerWidth;\n this.functions = functions;\n this.idsToBeAbsoluted = [];\n this.sheetName = sheetName || '';\n }\n\n public getTableBySheetName(sheetName: string) {\n const sheetId = this.sheets[sheetName];\n return this.tables[sheetId];\n }\n\n public initialize(cells: CellsByAddressType) {\n const auto = getMaxSizesFromCells(cells);\n this.area = {\n top: 0,\n left: 0,\n bottom: auto.numRows || 0,\n right: auto.numCols || 0,\n };\n\n // make idMatrix beforehand\n for (let y = 0; y < auto.numRows + 1; y++) {\n const ids: Ids = [];\n this.idMatrix.push(ids);\n for (let x = 0; x < auto.numCols + 1; x++) {\n const id = this.generateId();\n ids.push(id);\n const address = p2a({ y, x });\n this.addressesById[id] = address;\n }\n }\n Object.keys(cells).forEach((address) => {\n const range = expandRange(address);\n const data = cells[address];\n range.forEach((address) => {\n const origin = cells[address];\n cells[address] = {\n ...origin,\n ...data,\n style: {\n ...origin?.style,\n ...data?.style,\n },\n prevention: (origin?.prevention || 0) | (data?.prevention || 0),\n };\n });\n });\n\n const common = cells?.['default'];\n for (let y = 0; y < auto.numRows + 1; y++) {\n const rowId = y2r(y);\n const rowDefault = cells?.[rowId];\n for (let x = 0; x < auto.numCols + 1; x++) {\n const id = this.getId({ y, x });\n const address = p2a({ y, x });\n const colId = x2c(x);\n const colDefault = cells?.[colId];\n const cell = cells?.[address];\n const stacked = {\n ...common,\n ...rowDefault,\n ...colDefault,\n ...cell,\n style: {\n ...common?.style,\n ...rowDefault?.style,\n ...colDefault?.style,\n ...cell?.style,\n },\n prevention:\n (common?.prevention || 0) |\n (rowDefault?.prevention || 0) |\n (colDefault?.prevention || 0) |\n (cell?.prevention || 0),\n } as CellType;\n\n if (stacked?.value?.startsWith?.('=')) {\n this.idsToBeAbsoluted.push(id);\n }\n if (y === 0) {\n if (stacked.width == null) {\n stacked.width = DEFAULT_WIDTH;\n }\n } else if (x === 0) {\n if (stacked.height == null) {\n stacked.height = DEFAULT_HEIGHT;\n }\n } else {\n delete stacked.height;\n delete stacked.width;\n delete stacked.labeler;\n }\n this.data[id] = stacked;\n }\n }\n this.setTotalSize();\n }\n\n public absolutizeFormula() {\n this.idsToBeAbsoluted.forEach((id) => {\n const cell = this.data[id];\n if (cell == null) {\n return;\n }\n cell.value = absolutizeFormula({\n value: cell?.value,\n table: this,\n });\n });\n }\n\n private generateId() {\n return (this.head++).toString(36);\n }\n\n public getRectSize({ top, left, bottom, right }: AreaType) {\n let width = 0,\n height = 0;\n for (let x = left || 1; x < right; x++) {\n width += this.getByPoint({ y: 0, x })?.width || DEFAULT_WIDTH;\n }\n for (let y = top || 1; y < bottom; y++) {\n height += this.getByPoint({ y, x: 0 })?.height || DEFAULT_HEIGHT;\n }\n return { width, height };\n }\n private setTotalSize() {\n const { bottom, right } = this.area;\n const { width, height } = this.getRectSize({\n top: 1,\n left: 1,\n bottom: bottom + 1,\n right: right + 1,\n });\n this.totalWidth = width + this.headerWidth;\n this.totalHeight = height + this.headerHeight;\n }\n\n public shallowCopy({ copyCache = true }: { copyCache?: boolean } = {}) {\n const copied: Table = Object.assign(Object.create(Object.getPrototypeOf(this)), this);\n copied.changedAt = new Date();\n copied.lastChangedAt = this.changedAt;\n copied.setTotalSize();\n copied.idsToBeAbsoluted = [];\n copied.solvedCaches = {};\n if (!copyCache) {\n // force reset\n this.addressesById = {};\n }\n copied.sheetName = this.sheetName;\n return copied;\n }\n\n public getAddressById(id: Id, slideY = 0, slideX = 0): string | undefined {\n const absCol = id.startsWith('$');\n if (absCol) {\n id = id.slice(1);\n slideX = 0;\n }\n const absRow = id.endsWith('$');\n if (absRow) {\n id = id.slice(0, -1);\n slideY = 0;\n }\n\n for (let y = 0; y < this.idMatrix.length; y++) {\n const ids = this.idMatrix[y];\n for (let x = 0; x < ids.length; x++) {\n const existing = ids[x];\n const address = p2a({ y, x });\n this.addressesById[existing] = address;\n if (existing === id) {\n const slidedAddress = p2a({\n y: y + slideY,\n x: x + slideX,\n });\n return grantAddressAbsolute(slidedAddress, absCol, absRow);\n }\n }\n }\n }\n\n public getAddressesByIds(ids: CellsByIdType) {\n const addresses: CellsByAddressType = {};\n Object.keys(ids).forEach((id) => {\n const cell = ids[id];\n const address = this.getAddressById(id);\n if (cell && address) {\n addresses[address] = cell;\n }\n });\n return addresses;\n }\n\n public getPointById(id: Id): PointType {\n const address = this.getAddressById(id);\n if (address) {\n return a2p(address);\n }\n return { y: 0, x: 0 };\n }\n private getId(point: PointType) {\n const { y, x } = point;\n return this.idMatrix[Math.abs(y)]?.[Math.abs(x)];\n }\n\n public getByPoint(point: PointType) {\n const { y, x } = point;\n if (y === -1 || x === -1) {\n return undefined;\n }\n const id = this.idMatrix[y]?.[x];\n if (id == null) {\n return undefined;\n }\n const value = this.data[id];\n return value;\n }\n\n public getById(id: Id) {\n return this.data[id];\n }\n\n public getNumRows(base = 0) {\n const { top, bottom } = this.area;\n return base + bottom - top;\n }\n\n public getNumCols(base = 0) {\n const { left, right } = this.area;\n return base + right - left;\n }\n\n public get top() {\n return this.area.top;\n }\n public get left() {\n return this.area.left;\n }\n public get bottom() {\n return this.area.bottom;\n }\n public get right() {\n return this.area.right;\n }\n\n public getMatrixFlatten({\n area,\n key = 'value',\n evaluates = true,\n raise = false,\n filter = noFilter,\n }: GetFlattenPropsWithArea = {}) {\n const { top, left, bottom, right } = area || {\n top: 1,\n left: 1,\n bottom: this.area.bottom,\n right: this.area.right,\n };\n const matrix = createMatrix(bottom - top + 1, right - left + 1);\n for (let y = top; y <= bottom; y++) {\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y, x }) || {};\n if (!filter(cell)) {\n continue;\n }\n matrix[y - top][x - left] = solveFormula({\n value: cell[key],\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n });\n }\n }\n return matrix;\n }\n public getObjectFlatten({ key = 'value', evaluates = true, raise = false, filter = noFilter }: GetFlattenProps = {}) {\n const result: CellsByAddressType = {};\n const { top, left, bottom, right } = this.area;\n for (let y = top; y <= bottom; y++) {\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n result[p2a({ y, x })] = solveFormula({\n value: cell[key],\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n });\n }\n }\n }\n return result;\n }\n public getRowsFlatten({ key = 'value', evaluates = true, raise = false, filter = noFilter }: GetFlattenProps = {}) {\n const result: CellsByAddressType[] = [];\n const { top, left, bottom, right } = this.area;\n for (let y = top; y <= bottom; y++) {\n const row: CellsByAddressType = {};\n result.push(row);\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n row[x2c(x) || y2r(y)] = solveFormula({\n value: cell[key],\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n });\n }\n }\n }\n return result;\n }\n public getColsFlatten({ key = 'value', evaluates = true, raise = false, filter = noFilter }: GetFlattenProps = {}) {\n const result: CellsByAddressType[] = [];\n const { top, left, bottom, right } = this.area;\n for (let x = left; x <= right; x++) {\n const col: CellsByAddressType = {};\n result.push(col);\n for (let y = top; y <= bottom; y++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n col[y2r(y) || x2c(x)] = solveFormula({\n value: cell[key],\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n });\n }\n }\n }\n return result;\n }\n public getMatrix({\n area,\n evaluates = true,\n raise = false,\n filter = noFilter,\n }: GetPropsWithArea = {}): (CellType | null)[][] {\n const { top, left, bottom, right } = area || {\n top: 1,\n left: 1,\n bottom: this.area.bottom,\n right: this.area.right,\n };\n const matrix = createMatrix(bottom - top + 1, right - left + 1);\n for (let y = top; y <= bottom; y++) {\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y, x });\n if (cell != null && filter(cell)) {\n matrix[y - top][x - left] = {\n ...cell,\n value: solveFormula({\n value: cell?.value,\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n }),\n };\n }\n }\n }\n return matrix;\n }\n public getObject({ evaluates = true, raise = false, filter = noFilter }: GetProps = {}) {\n const result: CellsByAddressType = {};\n const { top, left, bottom, right } = this.area;\n for (let y = top; y <= bottom; y++) {\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n result[p2a({ y, x })] = {\n ...cell,\n value: solveFormula({\n value: cell?.value,\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n }),\n };\n }\n }\n }\n return result;\n }\n public getRows({ evaluates = true, raise = false, filter = noFilter }: GetProps = {}) {\n const result: CellsByAddressType[] = [];\n const { top, left, bottom, right } = this.area;\n for (let y = top; y <= bottom; y++) {\n const row: CellsByAddressType = {};\n result.push(row);\n for (let x = left; x <= right; x++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n row[x2c(x) || y2r(y)] = {\n ...cell,\n value: solveFormula({\n value: cell?.value,\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n }),\n };\n }\n }\n }\n return result;\n }\n public getCols({ evaluates = true, raise = false, filter = noFilter }: GetProps = {}) {\n const result: CellsByAddressType[] = [];\n const { top, left, bottom, right } = this.area;\n for (let x = left; x <= right; x++) {\n const col: CellsByAddressType = {};\n result.push(col);\n for (let y = top; y <= bottom; y++) {\n const cell = this.getByPoint({ y: y - top, x: x - left });\n if (cell != null && filter(cell)) {\n col[y2r(y) || x2c(x)] = {\n ...cell,\n value: solveFormula({\n value: cell?.value,\n table: this,\n raise,\n evaluates,\n origin: { y, x },\n }),\n };\n }\n }\n }\n return result;\n }\n\n private pushHistory(history: HistoryType) {\n const strayedHistories = this.histories.splice(this.historyIndex + 1, this.histories.length);\n strayedHistories.forEach(this.cleanStrayed.bind(this));\n this.histories.push(history);\n this.lastHistory = this.currentHistory = history;\n if (this.histories.length > this.historyLimit) {\n const kickedOut = this.histories.splice(0, 1)[0];\n this.cleanObsolete(kickedOut);\n } else {\n this.historyIndex++;\n }\n }\n\n private cleanObsolete(history: HistoryType) {\n if (history.operation === 'DELETE_ROWS' || history.operation === 'DELETE_COLS') {\n history.deleted.forEach((ids) => {\n ids.forEach((id) => {\n delete this.data[id];\n });\n });\n }\n if (history.operation === 'MOVE') {\n Object.keys(history.lostRows).forEach((address) => {\n const idMatrix = history.lostRows[address];\n idMatrix.map((ids) =>\n ids.forEach((id) => {\n if (id != null) {\n delete this.data[id];\n }\n }),\n );\n });\n }\n }\n\n private cleanStrayed(history: HistoryType) {\n if (history.operation === 'ADD_ROWS' || history.operation === 'ADD_COLS') {\n history.idMatrix.forEach((ids) => {\n ids.forEach((id) => {\n delete this.data[id];\n });\n });\n }\n }\n\n private getNewIdMatrix(area: AreaType) {\n const matrix: IdMatrix = [];\n const { top, left, bottom, right } = area;\n for (let y = top; y <= bottom; y++) {\n const ids: Ids = [];\n matrix.push(ids);\n for (let x = left; x <= right; x++) {\n ids.push(this.generateId());\n }\n }\n return matrix;\n }\n\n private getIdMatrixFromArea(area: AreaType) {\n const matrix: IdMatrix = [];\n const { top, left, bottom, right } = area;\n for (let y = top; y <= bottom; y++) {\n const ids: Ids = [];\n matrix.push(ids);\n for (let x = left; x <= right; x++) {\n const id = this.idMatrix[y]?.[x];\n if (id == null) {\n continue;\n }\n ids.push(id);\n }\n }\n return matrix;\n }\n\n private setChangedAt(cell?: CellType, changedAt?: Date) {\n if (cell == null) {\n return null;\n }\n cell.changedAt = changedAt || new Date();\n return cell;\n }\n\n private copyCellLayout(cell: CellType | undefined) {\n if (cell == null) {\n return undefined;\n }\n const newCell: CellType = {};\n if (cell.style != null) {\n newCell.style = cell.style;\n }\n if (cell.justifyContent != null) {\n newCell.justifyContent = cell.justifyContent;\n }\n if (cell.alignItems != null) {\n newCell.alignItems = cell.alignItems;\n }\n if (cell.renderer != null) {\n newCell.renderer = cell.renderer;\n }\n if (cell.parser != null) {\n newCell.parser = cell.parser;\n }\n if (cell.width != null) {\n newCell.width = cell.width;\n }\n if (cell.height != null) {\n newCell.height = cell.height;\n }\n if (cell.labeler != null) {\n newCell.labeler = cell.labeler;\n }\n return newCell;\n }\n\n public move({ src, dst, historicize = true, operator = 'SYSTEM', reflection = {} }: MoveProps) {\n const matrixNew = this.getNewIdMatrix(src);\n const matrixFrom = this.getIdMatrixFromArea(src);\n const matrixTo = this.getIdMatrixFromArea(dst);\n putMatrix(this.idMatrix, matrixNew, src, (_, id) => {\n const cell = this.data[id];\n if (operator === 'USER' && prevention.isPrevented(cell?.prevention, prevention.MoveFrom)) {\n return false;\n }\n return true;\n });\n const lostRows = putMatrix(this.idMatrix, matrixFrom, dst, (srcId, dstId) => {\n const srcCell = this.data[srcId];\n const dstCell = this.data[dstId];\n if (\n operator === 'USER' &&\n (prevention.isPrevented(srcCell?.prevention, prevention.MoveFrom) ||\n prevention.isPrevented(dstCell?.prevention, prevention.MoveTo))\n ) {\n return false;\n }\n if (srcCell != null) {\n this.setChangedAt(srcCell, new Date());\n }\n return true;\n });\n if (historicize) {\n this.pushHistory({\n applyed: true,\n operation: 'MOVE',\n reflection,\n src,\n dst,\n matrixFrom,\n matrixTo,\n matrixNew,\n lostRows,\n });\n }\n return this.shallowCopy({ copyCache: false });\n }\n\n public copy({ src, dst, operator = 'SYSTEM', reflection = {} }: MoveProps) {\n const { height: maxHeight, width: maxWidth } = areaShape({\n ...src,\n base: 1,\n });\n const { top: topFrom, left: leftFrom } = src;\n const { top: topTo, left: leftTo, bottom: bottomTo, right: rightTo } = dst;\n const diff: CellsByAddressType = {};\n const changedAt = new Date();\n\n for (let i = 0; i <= bottomTo - topTo; i++) {\n const toY = topTo + i;\n if (toY > this.getNumRows()) {\n continue;\n }\n for (let j = 0; j <= rightTo - leftTo; j++) {\n const toX = leftTo + j;\n if (toX > this.getNumCols()) {\n continue;\n }\n const fromY = topFrom + (i % maxHeight);\n const fromX = leftFrom + (j % maxWidth);\n const slideY = toY - fromY;\n const slideX = toX - fromX;\n const cell: CellType = {\n ...this.getByPoint({\n y: topFrom + (i % maxHeight),\n x: leftFrom + (j % maxWidth),\n }),\n prevention: 0, // Is this okay?\n };\n const value = absolutizeFormula({\n value: cell?.value,\n table: this,\n slideY,\n slideX,\n });\n this.setChangedAt(cell, changedAt);\n diff[p2a({ y: toY, x: toX })] = {\n ...cell,\n style: { ...cell?.style },\n value,\n };\n }\n }\n return this.update({\n diff,\n partial: false,\n operator,\n reflection,\n });\n }\n\n private _update({\n diff,\n partial = true,\n updateChangedAt = true,\n ignoreFields = ['labeler', 'prevention'],\n operator = 'SYSTEM',\n }: {\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n ignoreFields?: (keyof CellType)[];\n operator?: OperatorType;\n }) {\n const diffBefore: CellsByIdType = {};\n const diffAfter: CellsByIdType = {};\n const changedAt = new Date();\n\n Object.keys(diff).forEach((address) => {\n const cell = { ...diff[address] };\n if (operator === 'USER' && prevention.isPrevented(cell?.prevention, prevention.Update)) {\n return;\n }\n\n cell.value = absolutizeFormula({\n value: cell.value,\n table: this,\n });\n const point = a2p(address);\n const id = this.getId(point);\n const current = this.data[id];\n ignoreFields.forEach((key) => {\n cell[key] = current?.[key];\n });\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.Write)) {\n cell.value = current?.value;\n }\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.Style)) {\n cell.style = current?.style;\n cell.justifyContent = current?.justifyContent;\n cell.alignItems = current?.alignItems;\n }\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.Resize)) {\n cell.width = current?.width;\n cell.height = current?.height;\n }\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.SetRenderer)) {\n cell.renderer = current?.renderer;\n }\n if (operator === 'USER' && prevention.isPrevented(current?.prevention, prevention.SetParser)) {\n cell.parser = current?.parser;\n }\n if (updateChangedAt) {\n this.setChangedAt(cell, changedAt);\n }\n // must not partial\n diffBefore[id] = this.getByPoint(point);\n diffAfter[id] = cell;\n if (partial) {\n this.data[id] = { ...current, ...cell };\n } else {\n this.data[id] = cell;\n }\n });\n this.solvedCaches = {};\n return {\n diffBefore,\n diffAfter,\n };\n }\n\n public update({\n diff,\n partial = true,\n updateChangedAt = true,\n historicize = true,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n historicize?: boolean;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n const { diffBefore, diffAfter } = this._update({\n diff,\n partial,\n operator,\n updateChangedAt,\n });\n\n if (historicize) {\n this.pushHistory({\n applyed: true,\n operation: 'UPDATE',\n reflection,\n diffBefore,\n diffAfter,\n partial,\n });\n }\n return this.shallowCopy({ copyCache: true });\n }\n\n public writeMatrix({\n point,\n matrix,\n updateChangedAt = true,\n historicize = true,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n point: PointType;\n matrix: MatrixType<string>;\n updateChangedAt?: boolean;\n historicize?: boolean;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n const { y: baseY, x: baseX } = point;\n const diff: CellsByAddressType = {};\n matrix.forEach((cols, i) => {\n const y = baseY + i;\n if (y > this.bottom) {\n return;\n }\n cols.forEach((value, j) => {\n const x = baseX + j;\n if (x > this.right) {\n return;\n }\n const cell = this.parse({ y, x }, value);\n diff[p2a({ y, x })] = cell;\n });\n });\n return this.update({\n diff,\n partial: true,\n updateChangedAt,\n historicize,\n operator,\n reflection,\n });\n }\n\n public write({\n point,\n value,\n updateChangedAt = true,\n historicize = true,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n point: PointType;\n value: string;\n updateChangedAt?: boolean;\n historicize?: boolean;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n return this.writeMatrix({\n point,\n matrix: [[value]],\n updateChangedAt,\n historicize,\n operator,\n reflection,\n });\n }\n\n public addRowsAndUpdate({\n y,\n numRows,\n baseY,\n diff,\n partial,\n updateChangedAt,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n y: number;\n numRows: number;\n baseY: number;\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n const returned = this.addRows({\n y,\n numRows,\n baseY,\n reflection,\n });\n\n Object.assign(this.lastHistory!, this._update({ diff, partial, updateChangedAt, operator }), { partial });\n\n return returned;\n }\n\n public addRows({\n y,\n numRows,\n baseY,\n // operator = 'SYSTEM',\n reflection = {},\n }: {\n y: number;\n numRows: number;\n baseY: number;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n if (this.maxNumRows !== -1 && this.getNumRows() + numRows > this.maxNumRows) {\n console.error(`Rows are limited to ${this.maxNumRows}.`);\n return this;\n }\n const numCols = this.getNumCols(1);\n const rows: IdMatrix = [];\n const changedAt = new Date();\n for (let i = 0; i < numRows; i++) {\n const row: Ids = [];\n for (let j = 0; j < numCols; j++) {\n const id = this.generateId();\n row.push(id);\n const cell = this.getByPoint({ y: baseY, x: j });\n const copied = this.copyCellLayout(cell);\n this.data[id] = { ...copied, changedAt };\n }\n rows.push(row);\n }\n this.idMatrix.splice(y, 0, ...rows);\n this.area.bottom += numRows;\n\n this.pushHistory({\n applyed: true,\n operation: 'ADD_ROWS',\n reflection,\n y,\n numRows,\n idMatrix: rows,\n });\n return this.shallowCopy({ copyCache: false });\n }\n public deleteRows({\n y,\n numRows,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n y: number;\n numRows: number;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n if (this.minNumRows !== -1 && this.getNumRows() - numRows < this.minNumRows) {\n console.error(`At least ${this.minNumRows} row(s) are required.`);\n return this;\n }\n\n const ys: number[] = [];\n for (let i = y; i < y + numRows; i++) {\n const cell = this.getByPoint({ y: i, x: 0 });\n if (operator === 'USER' && prevention.isPrevented(cell?.prevention, prevention.DeleteRow)) {\n console.warn(`Cannot delete row ${i}.`);\n return this;\n }\n ys.unshift(i);\n }\n\n const deleted: MatrixType = [];\n ys.forEach((y) => {\n const row = this.idMatrix.splice(y, 1);\n deleted.unshift(row[0]);\n });\n this.area.bottom -= ys.length;\n this.pushHistory({\n applyed: true,\n operation: 'DELETE_ROWS',\n reflection,\n ys: ys.reverse(),\n deleted,\n });\n return this.shallowCopy({ copyCache: false });\n }\n\n public addColsAndUpdate({\n x,\n numCols,\n baseX,\n diff,\n partial,\n updateChangedAt,\n reflection = {},\n }: {\n x: number;\n numCols: number;\n baseX: number;\n diff: CellsByAddressType;\n partial?: boolean;\n updateChangedAt?: boolean;\n reflection?: StoreReflectionType;\n }) {\n const returned = this.addCols({\n x,\n numCols,\n baseX,\n reflection,\n });\n\n Object.assign(this.lastHistory!, this._update({ diff, partial, updateChangedAt }), { partial });\n return returned;\n }\n\n public addCols({\n x,\n numCols,\n baseX,\n reflection = {},\n }: {\n x: number;\n numCols: number;\n baseX: number;\n reflection?: StoreReflectionType;\n }) {\n if (this.maxNumCols !== -1 && this.getNumCols() + numCols > this.maxNumCols) {\n console.error(`Columns are limited to ${this.maxNumCols}.`);\n return this;\n }\n const numRows = this.getNumRows(1);\n const rows: IdMatrix = [];\n const changedAt = new Date();\n for (let i = 0; i < numRows; i++) {\n const row: Ids = [];\n for (let j = 0; j < numCols; j++) {\n const id = this.generateId();\n row.push(id);\n const cell = this.getByPoint({ y: i, x: baseX });\n const copied = this.copyCellLayout(cell);\n this.idMatrix[i].splice(x, 0, id);\n this.data[id] = { ...copied, changedAt };\n }\n rows.push(row);\n }\n this.area.right += numCols;\n\n this.pushHistory({\n applyed: true,\n operation: 'ADD_COLS',\n reflection,\n x,\n numCols,\n idMatrix: rows,\n });\n return this.shallowCopy({ copyCache: false });\n }\n public deleteCols({\n x,\n numCols,\n operator = 'SYSTEM',\n reflection = {},\n }: {\n x: number;\n numCols: number;\n operator?: OperatorType;\n reflection?: StoreReflectionType;\n }) {\n if (this.minNumCols !== -1 && this.getNumCols() - numCols < this.minNumCols) {\n console.error(`At least ${this.minNumCols} column(s) are required.`);\n return this;\n }\n\n const xs: number[] = [];\n for (let i = x; i < x + numCols; i++) {\n const cell = this.getByPoint({ y: 0, x: i });\n if (operator === 'USER' && prevention.isPrevented(cell?.prevention, prevention.DeleteCol)) {\n console.warn(`Cannot delete col ${i}.`);\n continue;\n }\n xs.unshift(i);\n }\n\n const deleted: MatrixType = [];\n this.idMatrix.forEach((row) => {\n const deleting: Ids = [];\n deleted.push(deleting);\n // reverse and delete\n xs.forEach((x) => {\n deleting.unshift(...row.splice(x, 1));\n });\n });\n this.area.right -= xs.length;\n\n this.pushHistory({\n applyed: true,\n operation: 'DELETE_COLS',\n reflection,\n xs: xs.reverse(),\n deleted,\n });\n return this.shallowCopy({ copyCache: false });\n }\n public getHistories() {\n return [...this.histories];\n }\n public getHistoryIndex() {\n return this.historyIndex;\n }\n public getHistorySize() {\n return this.histories.length;\n }\n public getHistoryLimit() {\n return this.historyLimit;\n }\n\n public setFunctions(additionalFunctions: FunctionMapping) {\n this.functions = { ...functionsDefault, ...additionalFunctions };\n }\n\n public getArea(): AreaType {\n return { ...this.area };\n }\n\n public parse(point: PointType, value: string) {\n const cell = this.getByPoint(point) || {};\n const parser = this.parsers[cell.parser || ''] || defaultParser;\n return parser.call(value, cell);\n }\n\n public render(point: PointType, writer?: WriterType) {\n const cell = this.getByPoint(point) || {};\n const renderer = this.renderers[cell.renderer || ''] || defaultRenderer;\n return renderer.call(this, point, writer);\n }\n\n public stringify(point: PointType, value?: any, evaluates = false) {\n const cell = this.getByPoint(point);\n const renderer = this.renderers[cell?.renderer || ''] || defaultRenderer;\n const s = renderer.stringify(typeof value === 'undefined' ? { ...cell } : { ...cell, value });\n\n if (s[0] === '=') {\n if (evaluates) {\n return String(solveFormula({ value: s, table: this, raise: false, evaluates, origin: point }));\n }\n const lexer = new Lexer(s.substring(1));\n lexer.tokenize();\n return '=' + lexer.stringifyToRef(this);\n }\n return s;\n }\n\n public trim(area: AreaType): Table {\n const copied: Table = Object.assign(Object.create(Object.getPrototypeOf(this)), this);\n copied.area = area;\n // this causes RangeError on circular reference(maximum call stack size exceeded)\n // copied.solvedCaches = {};\n return copied;\n }\n\n public getIdByAddress(address: Address) {\n let table: Table = this;\n if (address.indexOf('!') !== -1) {\n const [sheetName, addr] = address.split('!');\n const sheetId = this.sheets[stripSheetName(sheetName)];\n table = this.tables[sheetId];\n address = addr;\n }\n const { y, x } = a2p(address);\n const id = table.getId({ y, x });\n if (id) {\n const prefix = table === this ? '' : `#${table.sheetId}!`;\n return `${prefix}#${x < 0 ? '$' : ''}${id}${y < 0 ? '$' : ''}`;\n }\n }\n\n private applyDiff(diff: CellsByIdType, partial = true) {\n if (!partial) {\n Object.assign(this.data, diff);\n return;\n }\n Object.keys(diff).map((id) => {\n const cell = diff[id];\n this.data[id] = { ...this.getById(id), ...cell };\n });\n }\n\n public undo() {\n if (this.historyIndex < 0) {\n return { history: null, newTable: this as Table };\n }\n const history = this.histories[this.historyIndex--];\n history.applyed = false;\n this.currentHistory = history;\n switch (history.operation) {\n case 'UPDATE':\n // diffBefore is guaranteed as total of cell (not partial)\n this.applyDiff(history.diffBefore, false);\n break;\n case 'ADD_ROWS': {\n if (history.diffBefore) {\n this.applyDiff(history.diffBefore, false);\n }\n const { height } = matrixShape({ matrix: history.idMatrix });\n this.idMatrix.splice(history.y, height);\n this.area.bottom -= height;\n break;\n }\n case 'ADD_COLS': {\n if (history.diffBefore) {\n this.applyDiff(history.diffBefore, false);\n }\n const { width } = matrixShape({ matrix: history.idMatrix });\n this.idMatrix.forEach((row) => {\n row.splice(history.x, width);\n });\n this.area.right -= width;\n break;\n }\n case 'DELETE_ROWS': {\n const { ys, deleted } = history;\n ys.forEach((y, i) => {\n this.idMatrix.splice(y, 0, deleted[i]);\n });\n this.area.bottom += ys.length;\n break;\n }\n case 'DELETE_COLS': {\n const { xs, deleted } = history;\n this.idMatrix.forEach((row, i) => {\n for (let j = 0; j < xs.length; j++) {\n row.splice(xs[j], 0, deleted[i][j]);\n }\n });\n this.area.right += xs.length;\n break;\n }\n case 'MOVE': {\n const { top: yFrom, left: xFrom } = history.src;\n const { top: yTo, left: xTo } = history.dst;\n const { height: rows, width: cols } = matrixShape({\n matrix: history.matrixFrom,\n base: -1,\n });\n putMatrix(this.idMatrix, history.matrixFrom, {\n top: yFrom,\n left: xFrom,\n bottom: yFrom + rows,\n right: xFrom + cols,\n });\n putMatrix(this.idMatrix, history.matrixTo, {\n top: yTo,\n left: xTo,\n bottom: yTo + rows,\n right: xTo + cols,\n });\n break;\n }\n }\n return {\n history,\n newTable: this.shallowCopy({\n copyCache: !shouldTracking(history.operation),\n }),\n };\n }\n\n public redo() {\n if (this.historyIndex + 1 >= this.histories.length) {\n return { history: null, newTable: this as Table };\n }\n const history = this.histories[++this.historyIndex];\n history.applyed = true;\n this.currentHistory = history;\n\n switch (history.operation) {\n case 'UPDATE':\n this.applyDiff(history.diffAfter, history.partial);\n break;\n case 'ADD_ROWS': {\n if (history.diffAfter) {\n this.applyDiff(history.diffAfter, history.partial);\n }\n const { height } = matrixShape({ matrix: history.idMatrix });\n this.idMatrix.splice(history.y, 0, ...history.idMatrix);\n this.area.bottom += height;\n break;\n }\n case 'ADD_COLS': {\n if (history.diffAfter) {\n this.applyDiff(history.diffAfter, history.partial);\n }\n const { width } = matrixShape({ matrix: history.idMatrix });\n this.idMatrix.map((row, i) => {\n row.splice(history.x, 0, ...history.idMatrix[i]);\n });\n this.area.right += width;\n break;\n }\n case 'DELETE_ROWS': {\n const { ys } = history;\n [...ys].reverse().forEach((y) => {\n this.idMatrix.splice(y, 1);\n });\n this.area.bottom -= ys.length;\n break;\n }\n case 'DELETE_COLS': {\n const { xs } = history;\n [...xs].reverse().forEach((x) => {\n this.idMatrix.forEach((row) => {\n row.splice(x, 1);\n });\n });\n this.area.right -= xs.length;\n break;\n }\n case 'MOVE': {\n const { src, dst } = history;\n this.move({ src, dst, operator: 'USER', historicize: false });\n }\n }\n return {\n history,\n newTable: this.shallowCopy({\n copyCache: !shouldTracking(history.operation),\n }),\n };\n }\n public getFunction(name: string) {\n return this.functions[name];\n }\n\n public getLabel(key: string, n: number) {\n const labeler = this.labelers[key];\n return labeler?.(n);\n }\n public getBase() {\n return this;\n }\n public getSolvedCache(key: string) {\n return this.solvedCaches[key];\n }\n public setSolvedCache(key: string, value: any) {\n this.solvedCaches[key] = value;\n }\n public wrappedSheetName() {\n const sheetName = this.sheetName;\n if (sheetName.indexOf(' ') !== -1) {\n return `'${sheetName}'`;\n }\n return sheetName;\n }\n public sheetPrefix(omit = false) {\n if (omit) {\n return '';\n }\n if (this.sheetName) {\n return `${this.wrappedSheetName()}!`;\n }\n return '';\n }\n public rangeToArea(range: string) {\n const cells = range.split(':');\n let [start, end] = cells;\n if (start.match(/[a-zA-Z]$/)) {\n start += '1';\n }\n if (start.match(/^[1-9]/)) {\n start = `A${start}`;\n }\n if (end?.match(/[a-zA-Z]$/)) {\n end += this.bottom;\n }\n if (end?.match(/^[1-9]/)) {\n end = `${x2c(this.right)}${end}`;\n }\n const { y: top, x: left } = a2p(start);\n const { y: bottom, x: right } = a2p(end || start);\n return {\n top: Math.abs(top),\n left: Math.abs(left),\n bottom: Math.abs(bottom),\n right: Math.abs(right),\n };\n }\n}\n"],"names":["functions","functionsDefault","address","prevention.isPrevented","prevention.MoveFrom","prevention.MoveTo","prevention.Update","prevention.Write","prevention.Style","prevention.Resize","prevention.SetRenderer","prevention.SetParser","prevention.DeleteRow","y","prevention.DeleteCol","x"],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -32,11 +32,12 @@ export type TableRef = {
|
|
|
32
32
|
table: UserTable;
|
|
33
33
|
dispatch: (table: UserTable) => void;
|
|
34
34
|
};
|
|
35
|
-
export type
|
|
35
|
+
export type CursorStateType = {
|
|
36
36
|
pointing: PointType;
|
|
37
37
|
selectingFrom: PointType;
|
|
38
38
|
selectingTo: PointType;
|
|
39
|
-
}
|
|
39
|
+
};
|
|
40
|
+
export type FeedbackType = (table: UserTable, points?: CursorStateType) => void;
|
|
40
41
|
export type ModeType = 'light' | 'dark';
|
|
41
42
|
export type HeadersType = 'both' | 'vertical' | 'horizontal' | 'none';
|
|
42
43
|
export type CellType<Custom = any> = {
|
|
@@ -81,6 +82,7 @@ export type OptionsType = {
|
|
|
81
82
|
onSave?: FeedbackType;
|
|
82
83
|
onChange?: FeedbackType;
|
|
83
84
|
onSelect?: FeedbackType;
|
|
85
|
+
onKeyUp?: (e: React.KeyboardEvent<HTMLTextAreaElement>, points: CursorStateType) => void;
|
|
84
86
|
onInit?: (table: UserTable) => void;
|
|
85
87
|
};
|
|
86
88
|
export type RangeType = {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC;AACvB,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC;AAEvB,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAC5B,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B,MAAM,MAAM,SAAS,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,QAAQ,GAAG;IAAE,CAAC,EAAE,CAAC,CAAC;IAAC,CAAC,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAExC,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAE5C,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,YAAY,CAAA;CAAE,CAAC;AACtD,MAAM,MAAM,OAAO,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC;AAClD,MAAM,MAAM,QAAQ,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
|