@gridsheet/react-core 3.0.0-rc.9 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -1
- package/dist/components/Cell.d.ts.map +1 -0
- package/dist/components/CellStateOverlay.d.ts.map +1 -0
- package/dist/components/ColumnMenu.d.ts.map +1 -0
- package/dist/components/ColumnMenuFilterSection.d.ts.map +1 -0
- package/dist/components/ColumnMenuLabelSection.d.ts.map +1 -0
- package/dist/components/ColumnMenuSortSection.d.ts.map +1 -0
- package/dist/components/ContextMenu.d.ts.map +1 -0
- package/dist/components/Editor.d.ts.map +1 -0
- package/dist/components/EditorOptions.d.ts.map +1 -0
- package/dist/components/Emitter.d.ts.map +1 -0
- package/dist/components/Fixed.d.ts.map +1 -0
- package/dist/components/FormulaBar.d.ts.map +1 -0
- package/dist/{react-core/src/components → components}/FunctionGuide.d.ts +1 -2
- package/dist/components/FunctionGuide.d.ts.map +1 -0
- package/dist/components/GridSheet.d.ts.map +1 -0
- package/dist/components/HeaderCellLeft.d.ts.map +1 -0
- package/dist/components/HeaderCellTop.d.ts.map +1 -0
- package/dist/components/MenuItem.d.ts.map +1 -0
- package/dist/components/PluginBase.d.ts.map +1 -0
- package/dist/components/Resizer.d.ts.map +1 -0
- package/dist/components/RowMenu.d.ts.map +1 -0
- package/dist/components/ScrollHandle.d.ts.map +1 -0
- package/dist/components/SearchBar.d.ts.map +1 -0
- package/dist/components/StoreObserver.d.ts.map +1 -0
- package/dist/components/Tabular.d.ts.map +1 -0
- package/dist/components/svg/AddIcon.d.ts.map +1 -0
- package/dist/components/svg/Base.d.ts.map +1 -0
- package/dist/components/svg/CloseIcon.d.ts.map +1 -0
- package/dist/components/svg/SearchIcon.d.ts.map +1 -0
- package/dist/{react-core/src/components → components}/useAutocomplete.d.ts +1 -3
- package/dist/components/useAutocomplete.d.ts.map +1 -0
- package/dist/{hooks-6pHKH3g9.mjs → hooks-Y7BI_RNj.mjs} +141 -147
- package/dist/hooks-Y7BI_RNj.mjs.map +1 -0
- package/dist/index.d.ts +17 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +441 -457
- package/dist/index.js.map +1 -1
- package/dist/{react-core/src/lib → lib}/clipboard.d.ts +1 -1
- package/dist/lib/clipboard.d.ts.map +1 -0
- package/dist/lib/events.d.ts.map +1 -0
- package/dist/{react-core/src/lib → lib}/hooks.d.ts +1 -1
- package/dist/lib/hooks.d.ts.map +1 -0
- package/dist/{react-core/src/lib → lib}/menu.d.ts +1 -1
- package/dist/lib/menu.d.ts.map +1 -0
- package/dist/lib/paste.d.ts.map +1 -0
- package/dist/lib/style.d.ts.map +1 -0
- package/dist/policy/checkbox.d.ts +3 -0
- package/dist/policy/checkbox.d.ts.map +1 -0
- package/dist/spellbook.d.ts +6 -2
- package/dist/spellbook.d.ts.map +1 -0
- package/dist/spellbook.js +1 -1
- package/dist/{react-core/src/store → store}/actions.d.ts +1 -1
- package/dist/store/actions.d.ts.map +1 -0
- package/dist/store/applyers.d.ts.map +1 -0
- package/dist/{react-core/src/store → store}/helpers.d.ts +1 -1
- package/dist/store/helpers.d.ts.map +1 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/{react-core/src/types.d.ts → types.d.ts} +2 -5
- package/dist/types.d.ts.map +1 -0
- package/package.json +3 -4
- package/dist/hooks-6pHKH3g9.mjs.map +0 -1
- package/dist/react-core/src/components/Cell.d.ts.map +0 -1
- package/dist/react-core/src/components/CellStateOverlay.d.ts.map +0 -1
- package/dist/react-core/src/components/ColumnMenu.d.ts.map +0 -1
- package/dist/react-core/src/components/ColumnMenuFilterSection.d.ts.map +0 -1
- package/dist/react-core/src/components/ColumnMenuLabelSection.d.ts.map +0 -1
- package/dist/react-core/src/components/ColumnMenuSortSection.d.ts.map +0 -1
- package/dist/react-core/src/components/ContextMenu.d.ts.map +0 -1
- package/dist/react-core/src/components/Editor.d.ts.map +0 -1
- package/dist/react-core/src/components/EditorOptions.d.ts.map +0 -1
- package/dist/react-core/src/components/Emitter.d.ts.map +0 -1
- package/dist/react-core/src/components/Fixed.d.ts.map +0 -1
- package/dist/react-core/src/components/FormulaBar.d.ts.map +0 -1
- package/dist/react-core/src/components/FunctionGuide.d.ts.map +0 -1
- package/dist/react-core/src/components/GridSheet.d.ts.map +0 -1
- package/dist/react-core/src/components/HeaderCellLeft.d.ts.map +0 -1
- package/dist/react-core/src/components/HeaderCellTop.d.ts.map +0 -1
- package/dist/react-core/src/components/MenuItem.d.ts.map +0 -1
- package/dist/react-core/src/components/PluginBase.d.ts.map +0 -1
- package/dist/react-core/src/components/Resizer.d.ts.map +0 -1
- package/dist/react-core/src/components/RowMenu.d.ts.map +0 -1
- package/dist/react-core/src/components/ScrollHandle.d.ts.map +0 -1
- package/dist/react-core/src/components/SearchBar.d.ts.map +0 -1
- package/dist/react-core/src/components/StoreObserver.d.ts.map +0 -1
- package/dist/react-core/src/components/Tabular.d.ts.map +0 -1
- package/dist/react-core/src/components/svg/AddIcon.d.ts.map +0 -1
- package/dist/react-core/src/components/svg/Base.d.ts.map +0 -1
- package/dist/react-core/src/components/svg/CloseIcon.d.ts.map +0 -1
- package/dist/react-core/src/components/svg/SearchIcon.d.ts.map +0 -1
- package/dist/react-core/src/components/useAutocomplete.d.ts.map +0 -1
- package/dist/react-core/src/index.d.ts +0 -17
- package/dist/react-core/src/index.d.ts.map +0 -1
- package/dist/react-core/src/lib/clipboard.d.ts.map +0 -1
- package/dist/react-core/src/lib/events.d.ts.map +0 -1
- package/dist/react-core/src/lib/hooks.d.ts.map +0 -1
- package/dist/react-core/src/lib/menu.d.ts.map +0 -1
- package/dist/react-core/src/lib/paste.d.ts.map +0 -1
- package/dist/react-core/src/lib/style.d.ts.map +0 -1
- package/dist/react-core/src/policy/checkbox.d.ts +0 -3
- package/dist/react-core/src/policy/checkbox.d.ts.map +0 -1
- package/dist/react-core/src/spellbook.d.ts +0 -6
- package/dist/react-core/src/spellbook.d.ts.map +0 -1
- package/dist/react-core/src/store/actions.d.ts.map +0 -1
- package/dist/react-core/src/store/applyers.d.ts.map +0 -1
- package/dist/react-core/src/store/helpers.d.ts.map +0 -1
- package/dist/react-core/src/store/index.d.ts.map +0 -1
- package/dist/react-core/src/types.d.ts.map +0 -1
- /package/dist/{react-core/src/components → components}/Cell.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/CellStateOverlay.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/ColumnMenu.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/ColumnMenuFilterSection.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/ColumnMenuLabelSection.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/ColumnMenuSortSection.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/ContextMenu.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/Editor.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/EditorOptions.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/Emitter.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/Fixed.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/FormulaBar.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/GridSheet.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/HeaderCellLeft.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/HeaderCellTop.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/MenuItem.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/PluginBase.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/Resizer.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/RowMenu.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/ScrollHandle.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/SearchBar.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/StoreObserver.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/Tabular.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/svg/AddIcon.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/svg/Base.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/svg/CloseIcon.d.ts +0 -0
- /package/dist/{react-core/src/components → components}/svg/SearchIcon.d.ts +0 -0
- /package/dist/{react-core/src/lib → lib}/events.d.ts +0 -0
- /package/dist/{react-core/src/lib → lib}/paste.d.ts +0 -0
- /package/dist/{react-core/src/lib → lib}/style.d.ts +0 -0
- /package/dist/{react-core/src/store → store}/applyers.d.ts +0 -0
- /package/dist/{react-core/src/store → store}/index.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks-Y7BI_RNj.mjs","sources":["../src/store/helpers.ts","../src/store/actions.ts","../src/lib/hooks.ts"],"sourcesContent":["import { a2p, x2c, y2r } from '@gridsheet/core';\nimport { Sheet } from '@gridsheet/core';\nimport type { Address, PointType, StorePatchType, StoreType } from '../types';\n\n/**\n * Strip redundant fields from a StorePatchType before recording in history.\n * - selectingZone with endY === -1 && endX === -1 is a no-selection sentinel and need not be stored.\n */\nexport const compactReflection = (reflection: StorePatchType): StorePatchType => {\n const result = { ...reflection };\n if (result.selectingZone != null && result.selectingZone.endY === -1 && result.selectingZone.endX === -1) {\n delete result.selectingZone;\n }\n return result;\n};\n\nexport const restrictPoints = (store: StoreType, sheet: Sheet) => {\n const { choosing, selectingZone } = store;\n let { y, x } = choosing;\n let { startY: y1, startX: x1, endY: y2, endX: x2 } = selectingZone;\n const [numRows, numCols] = [sheet.numRows, sheet.numCols];\n if (y > numRows) {\n y = numRows;\n }\n if (x > numCols) {\n x = numCols;\n }\n if (y1 > numRows) {\n y1 = numRows;\n }\n if (y2 > numRows) {\n y2 = numRows;\n }\n if (x1 > numCols) {\n x1 = numCols;\n }\n if (x2 > numCols) {\n x2 = numCols;\n }\n return {\n choosing: { y, x } as PointType,\n selectingZone: { startY: y1, startX: x1, endY: y2, endX: x2 },\n };\n};\n\nconst FLASH_CLASS = 'gs-flash-overlay--active';\nconst FLASH_DURATION_MS = 600;\nexport const flashSheet = (el: HTMLElement | null) => {\n if (!el) {\n return;\n }\n el.classList.remove(FLASH_CLASS);\n // force reflow to restart animation when called consecutively\n void el.offsetWidth;\n el.classList.add(FLASH_CLASS);\n setTimeout(() => el.classList.remove(FLASH_CLASS), FLASH_DURATION_MS);\n};\n\nexport const flashWithCallback = (\n store: StoreType,\n sheet: Sheet,\n callback: ((s: StoreType) => void) | undefined,\n): StoreType & { callback?: (store: StoreType) => void } => ({\n ...store,\n sheetReactive: { current: sheet },\n callback: (s: StoreType) => {\n callback?.(s);\n flashSheet(store.flashRef.current);\n },\n});\n\nexport const initSearchStatement = (sheet: Sheet, store: StoreType) => {\n const { searchQuery, searchCaseSensitive, searchRegex, searchRange } = store;\n let { choosing } = store;\n if (!searchQuery) {\n return { matchingCells: [] };\n }\n const matchingCells: Address[] = [];\n\n let matcher: (value: string) => boolean;\n if (searchRegex) {\n try {\n const flags = searchCaseSensitive ? '' : 'i';\n const regex = new RegExp(searchQuery, flags);\n matcher = (v: string) => regex.test(v);\n } catch (e) {\n // Invalid regex, treat as literal string\n const q = searchCaseSensitive ? searchQuery : searchQuery.toLowerCase();\n matcher = (v: string) => {\n const s = searchCaseSensitive ? v : v.toLowerCase();\n return s.indexOf(q) !== -1;\n };\n }\n } else {\n const q = searchCaseSensitive ? searchQuery : searchQuery.toLowerCase();\n matcher = (v: string) => {\n const s = searchCaseSensitive ? v : v.toLowerCase();\n return s.indexOf(q) !== -1;\n };\n }\n\n // Determine search range\n let startY = 1,\n endY = sheet.bottom;\n let startX = 1,\n endX = sheet.right;\n if (searchRange) {\n startY = searchRange.startY;\n endY = searchRange.endY;\n startX = searchRange.startX;\n endX = searchRange.endX;\n }\n\n for (let y = startY; y <= endY; y++) {\n for (let x = startX; x <= endX; x++) {\n const v = sheet.getSerializedValue({ point: { y, x } });\n if (matcher(v)) {\n matchingCells.push(`${x2c(x)}${y2r(y)}`);\n }\n }\n }\n const matchingCellIndex = matchingCells.length === store.matchingCells.length ? store.matchingCellIndex : 0;\n if (matchingCells.length > 0) {\n const address = matchingCells[matchingCellIndex];\n choosing = a2p(address);\n }\n return { matchingCells, searchQuery, matchingCellIndex, choosing };\n};\n\nexport const isXSheetFocused = (store: StoreType) => {\n const { sheetId, sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return false;\n }\n if (sheetId === sheet.registry.editingSheetId) {\n return false;\n }\n return !!sheet.registry.editingAddress;\n};\n","import {\n StoreType,\n RectType,\n ZoneType,\n PointType,\n RangeType,\n FeedbackType,\n CellsByAddressType,\n AreaType,\n PositionType,\n ModeType,\n RawCellType,\n OperatorType,\n FilterConfig,\n} from '../types';\nimport { zoneToArea, superposeArea, matrixShape, areaShape, areaDiff, areaToZone, restrictZone } from '@gridsheet/core';\nimport { Sheet } from '@gridsheet/core';\n\nimport { p2a, a2p } from '@gridsheet/core';\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH } from '@gridsheet/core';\nimport { initSearchStatement, restrictPoints, flashSheet, flashWithCallback, compactReflection } from './helpers';\nimport { smartScroll } from '@gridsheet/core';\nimport { operations as prevention } from '@gridsheet/core';\nimport { Autofill } from '@gridsheet/core';\n\nconst resetZone: ZoneType = { startY: -1, startX: -1, endY: -1, endX: -1 };\n\nconst actions: { [s: string]: CoreAction<any> } = {};\n\ntype StoreWithCallback = StoreType & {\n callback?: (store: StoreType) => void;\n};\n\nexport const reducer = <T>(store: StoreType, action: { type: number; value: T }): StoreType => {\n const act: CoreAction<T> | undefined = actions[action.type];\n if (act == null) {\n return store;\n }\n\n // React StrictMode calls reducers twice per dispatch to detect side effects.\n // Since Sheet is a mutable object, the second call re-applies operations (double undo, etc.).\n // Guard: React passes the SAME action object reference to both calls, so we use object identity\n // to distinguish a StrictMode second-call (same reference) from a new dispatch (new reference).\n // Using a Map allows multiple batched dispatches to each have their own cached result,\n // preventing the single-slot cache from being overwritten when actions are processed together.\n const registry = store.sheetReactive.current?.registry;\n if (registry?._strictModeCache?.has(action)) {\n const cached = registry._strictModeCache.get(action) as StoreType;\n registry._strictModeCache.delete(action);\n return cached;\n }\n\n const { callback, ...newStore } = act.reduce(store, action.value);\n callback?.(newStore);\n const result = { ...store, ...newStore };\n\n if (registry) {\n if (!registry._strictModeCache) {\n registry._strictModeCache = new Map();\n }\n registry._strictModeCache.set(action, result);\n queueMicrotask(() => {\n registry._strictModeCache?.delete(action);\n });\n }\n\n return result;\n};\n\nexport class CoreAction<T> {\n static head = 1;\n private actionId: number = 1;\n\n public reduce(store: StoreType, payload: T): StoreWithCallback {\n return store;\n }\n public call(payload: T): { type: number; value: T } {\n return {\n type: this.actionId,\n value: payload,\n };\n }\n public bind() {\n this.actionId = CoreAction.head++;\n actions[this.actionId] = this;\n return this.call.bind(this);\n }\n}\n\nclass SetSearchQueryAction<T extends string | undefined> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const searchQuery = payload;\n const { sheetReactive: sheetRef } = store;\n if (sheetRef.current == null) {\n return store;\n }\n return {\n ...store,\n ...initSearchStatement(sheetRef.current, { ...store, searchQuery }),\n searchQuery,\n };\n }\n}\nexport const setSearchQuery = new SetSearchQueryAction().bind();\n\nclass SetSearchCaseSensitiveAction<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const searchCaseSensitive = payload;\n const { sheetReactive: sheetRef } = store;\n if (sheetRef.current == null) {\n return store;\n }\n return {\n ...store,\n ...initSearchStatement(sheetRef.current, { ...store, searchCaseSensitive }),\n searchCaseSensitive,\n };\n }\n}\nexport const setSearchCaseSensitive = new SetSearchCaseSensitiveAction().bind();\n\nclass SetSearchRegexAction<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const searchRegex = payload;\n const { sheetReactive: sheetRef } = store;\n if (sheetRef.current == null) {\n return store;\n }\n return {\n ...store,\n ...initSearchStatement(sheetRef.current, { ...store, searchRegex }),\n searchRegex,\n };\n }\n}\nexport const setSearchRegex = new SetSearchRegexAction().bind();\n\nclass SetSearchRangeAction<T extends ZoneType | undefined> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const searchRange = payload;\n const { sheetReactive: sheetRef } = store;\n if (sheetRef.current == null) {\n return store;\n }\n return {\n ...store,\n ...initSearchStatement(sheetRef.current, { ...store, searchRange }),\n searchRange,\n };\n }\n}\nexport const setSearchRange = new SetSearchRangeAction().bind();\n\nclass SetEditingAddressAction<T extends string> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n editingAddress: payload,\n };\n }\n}\nexport const setEditingAddress = new SetEditingAddressAction().bind();\n\nclass SetAutofillDraggingToAction<T extends PointType | null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n autofillDraggingTo: payload,\n };\n }\n}\nexport const setAutofillDraggingTo = new SetAutofillDraggingToAction().bind();\n\nclass SubmitAutofillAction<T extends PointType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const autofill = new Autofill(store, payload);\n const sheet = autofill.applied;\n const selectingZone = areaToZone(autofill.wholeArea);\n\n return {\n ...store,\n sheetReactive: { current: sheet },\n ...initSearchStatement(sheet, store),\n ...restrictPoints(store, sheet),\n selectingZone,\n leftHeaderSelecting: false,\n topHeaderSelecting: false,\n autofillDraggingTo: null,\n };\n }\n}\nexport const submitAutofill = new SubmitAutofillAction().bind();\n\nclass SetContextMenuPositionAction<T extends PositionType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n contextMenuPosition: payload,\n };\n }\n}\nexport const setContextMenuPosition = new SetContextMenuPositionAction().bind();\n\nclass SetResizingPositionYAction<T extends [number, number, number]> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n resizingPositionY: payload,\n };\n }\n}\nexport const setResizingPositionY = new SetResizingPositionYAction().bind();\n\nclass SetResizingPositionXAction<T extends [number, number, number]> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n resizingPositionX: payload,\n };\n }\n}\nexport const setResizingPositionX = new SetResizingPositionXAction().bind();\n\nclass SetEnteringAction<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n entering: payload,\n };\n }\n}\nexport const setEntering = new SetEnteringAction().bind();\n\nclass UpdateSheetAction<T extends Sheet> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n sheetReactive: { current: payload },\n ...initSearchStatement(payload, store),\n ...restrictPoints(store, payload),\n };\n }\n}\nexport const updateSheet = new UpdateSheetAction().bind();\n\nclass SetEditorRectAction<T extends RectType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n editorRect: payload,\n };\n }\n}\nexport const setEditorRect = new SetEditorRectAction().bind();\n\nclass SetDragging<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n dragging: payload,\n };\n }\n}\nexport const setDragging = new SetDragging().bind();\n\nclass BlurAction<T extends null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n editingAddress: '',\n };\n }\n}\nexport const blur = new BlurAction().bind();\n\nclass CopyAction<T extends ZoneType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n return {\n ...store,\n callback: ({ sheetReactive: sheetRef }) => {\n sheet.registry.transmit({\n copyingSheetId: sheet.id,\n copyingZone: payload,\n cutting: false,\n });\n },\n };\n }\n}\nexport const copy = new CopyAction().bind();\n\nclass CutAction<T extends ZoneType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n return {\n ...store,\n callback: ({ sheetReactive: sheetRef }) => {\n sheet.registry.transmit({\n copyingSheetId: sheet.id,\n copyingZone: payload,\n cutting: true,\n });\n },\n };\n }\n}\nexport const cut = new CutAction().bind();\n\nclass PasteAction<T extends { matrix: RawCellType[][]; onlyValue: boolean }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { choosing, selectingZone, sheetReactive: dstSheetRef } = store;\n const dstSheet = dstSheetRef.current;\n if (!dstSheet) {\n return store;\n }\n const { registry } = dstSheet;\n const { copyingSheetId, copyingZone, cutting } = registry;\n const srcSheet = dstSheet.getSheetBySheetId(copyingSheetId);\n\n let selectingArea = zoneToArea(selectingZone);\n const copyingArea = zoneToArea(copyingZone);\n const { matrix, onlyValue } = payload;\n\n if (cutting) {\n if (!srcSheet) {\n return store;\n }\n const src = copyingArea;\n const { rows: dy, cols: dx } = areaDiff(copyingArea);\n const dst: AreaType =\n selectingArea.top !== -1\n ? {\n top: selectingArea.top,\n left: selectingArea.left,\n bottom: selectingArea.top + dy,\n right: selectingArea.left + dx,\n }\n : {\n top: choosing.y,\n left: choosing.x,\n bottom: choosing.y + dy,\n right: choosing.x + dx,\n };\n\n const nextSelectingZone = restrictZone(areaToZone(dst));\n const newSheet = dstSheet.move({\n srcSheet,\n src,\n dst,\n operator: 'USER',\n undoReflection: compactReflection({\n sheetId: srcSheet.id,\n selectingZone: nextSelectingZone,\n choosing,\n transmit: { copyingSheetId: srcSheet.id, copyingZone, cutting: true },\n }),\n redoReflection: compactReflection({\n sheetId: srcSheet.id,\n choosing,\n transmit: { copyingSheetId: srcSheet.id, copyingZone: resetZone },\n }),\n });\n\n return {\n ...store,\n ...initSearchStatement(newSheet, store),\n sheetReactive: { current: newSheet },\n selectingZone: nextSelectingZone,\n inputting: newSheet.getSerializedValue({ point: choosing, resolution: 'RAW' }),\n callback: ({ sheetReactive: sheetRef }) => {\n registry.transmit({\n cutting: false,\n copyingZone: resetZone,\n });\n },\n };\n }\n\n let newSheet: Sheet;\n let { y, x } = choosing;\n\n if (copyingArea.top === -1) {\n const { rows: height, cols: width } = matrixShape({ matrix, base: -1 });\n selectingArea = {\n top: y,\n left: x,\n bottom: y + height,\n right: x + width,\n };\n const nextSelectingZone = restrictZone(areaToZone(selectingArea));\n newSheet = dstSheet.writeRawCellMatrix({\n point: { y, x },\n matrix,\n onlyValue,\n undoReflection: compactReflection({\n sheetId: dstSheet.id,\n selectingZone: nextSelectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: dstSheet.id,\n selectingZone: nextSelectingZone,\n choosing,\n }),\n });\n } else {\n if (srcSheet == null) {\n return store;\n }\n let { rows: dy, cols: dx } = areaDiff(copyingArea);\n if (selectingArea.top !== -1) {\n y = selectingArea.top;\n x = selectingArea.left;\n const superposed = superposeArea(selectingArea, copyingArea);\n dy = superposed.rows;\n dx = superposed.cols;\n }\n selectingArea = { top: y, left: x, bottom: y + dy, right: x + dx };\n newSheet = dstSheet.copy({\n srcSheet,\n src: copyingArea,\n dst: selectingArea,\n onlyValue,\n operator: 'USER',\n undoReflection: compactReflection({\n sheetId: srcSheet.id,\n transmit: { copyingZone },\n choosing,\n selectingZone,\n }),\n redoReflection: compactReflection({\n sheetId: srcSheet.id,\n transmit: { copyingSheetId: srcSheet.id, copyingZone: resetZone },\n choosing,\n selectingZone: areaToZone(selectingArea),\n }),\n });\n }\n\n const nextSelectingZone = restrictZone(areaToZone(selectingArea));\n nextSelectingZone.endX = Math.min(nextSelectingZone.endX, newSheet.numCols);\n nextSelectingZone.endY = Math.min(nextSelectingZone.endY, newSheet.numRows);\n return {\n ...store,\n sheetReactive: { current: newSheet },\n selectingZone: nextSelectingZone,\n inputting: newSheet.getSerializedValue({ point: choosing, resolution: 'RAW' }),\n ...initSearchStatement(newSheet, store),\n callback: ({ sheetReactive: sheetRef }) => {\n registry.transmit({\n copyingZone: resetZone,\n });\n },\n };\n }\n}\nexport const paste = new PasteAction().bind();\n\nclass EscapeAction<T extends null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n return {\n ...store,\n editingAddress: '',\n leftHeaderSelecting: false,\n topHeaderSelecting: false,\n callback: ({ sheetReactive: sheetRef }) => {\n sheetRef.current!.registry.transmit({\n copyingZone: resetZone,\n cutting: false,\n });\n },\n };\n }\n}\nexport const escape = new EscapeAction().bind();\n\nclass ChooseAction<T extends PointType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n choosing: payload,\n entering: true,\n };\n }\n}\nexport const choose = new ChooseAction().bind();\n\nclass SelectAction<T extends ZoneType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n selectingZone: payload,\n leftHeaderSelecting: false,\n topHeaderSelecting: false,\n };\n }\n}\nexport const select = new SelectAction().bind();\n\nclass SelectRowsAction<T extends { range: RangeType; numCols: number }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { range, numCols } = payload;\n const { start, end } = range;\n const sheet = store.sheetReactive.current;\n const selectingZone = {\n startY: start,\n startX: 1,\n endY: end,\n endX: numCols,\n };\n // Find the first non-filtered row in the selection for choosing\n let choosingY = start;\n if (sheet) {\n for (let y = start; y <= end; y++) {\n if (!sheet.isRowFiltered(y)) {\n choosingY = y;\n break;\n }\n }\n }\n return {\n ...store,\n selectingZone,\n choosing: { y: choosingY, x: 1 },\n leftHeaderSelecting: true,\n topHeaderSelecting: false,\n };\n }\n}\nexport const selectRows = new SelectRowsAction().bind();\n\nclass SelectColsAction<T extends { range: RangeType; numRows: number }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { range, numRows } = payload;\n const { start, end } = range;\n const sheet = store.sheetReactive.current;\n const selectingZone = {\n startY: 1,\n startX: start,\n endY: numRows,\n endX: end,\n };\n // Find the first non-filtered row (y=1 is always visible for columns, use y=1)\n // For columns there is no column-level filter, so choosing y=1 (first data row visible)\n let choosingY = 1;\n if (sheet) {\n for (let y = 1; y <= numRows; y++) {\n if (!sheet.isRowFiltered(y)) {\n choosingY = y;\n break;\n }\n }\n }\n return {\n ...store,\n selectingZone,\n choosing: { y: choosingY, x: start },\n leftHeaderSelecting: false,\n topHeaderSelecting: true,\n };\n }\n}\nexport const selectCols = new SelectColsAction().bind();\n\nclass DragAction<T extends PointType> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { startY, startX } = store.selectingZone;\n const selectingZone = {\n startY,\n startX,\n endY: payload.y,\n endX: payload.x,\n };\n if (startY === payload.y && startX === payload.x) {\n selectingZone.endY = -1;\n selectingZone.endX = -1;\n }\n return { ...store, selectingZone };\n }\n}\nexport const drag = new DragAction().bind();\n\nclass SearchAction<T extends number> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { matchingCells } = store;\n let { matchingCellIndex, choosing } = store;\n matchingCellIndex += payload;\n if (matchingCellIndex >= matchingCells.length) {\n matchingCellIndex = 0;\n } else if (matchingCellIndex < 0) {\n matchingCellIndex = matchingCells.length - 1;\n }\n\n if (matchingCells.length > 0) {\n const address = matchingCells[matchingCellIndex];\n choosing = a2p(address);\n }\n return { ...store, matchingCells, matchingCellIndex, choosing };\n }\n}\nexport const search = new SearchAction().bind();\n\nclass WriteAction<T extends { value: string; point?: PointType }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n let { value, point } = payload;\n const { choosing, selectingZone, sheetReactive: sheetRef } = store;\n if (point == null) {\n point = choosing;\n }\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n const newSheet = sheet.write({\n point: point,\n value,\n operator: 'USER',\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing: point,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing: point,\n }),\n });\n return {\n ...store,\n ...initSearchStatement(newSheet, store),\n sheetReactive: { current: newSheet },\n callback: ({ sheetReactive: sheetRef }) => {\n sheet.registry.transmit({\n copyingZone: resetZone,\n });\n },\n };\n }\n}\nexport const write = new WriteAction().bind();\n\nclass ClearAction<T extends null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { choosing, selectingZone, sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n\n let selectingArea = zoneToArea(selectingZone);\n if (selectingArea.top === -1) {\n const { y, x } = choosing;\n selectingArea = { top: y, left: x, bottom: y, right: x };\n }\n const { top, left, bottom, right } = selectingArea;\n const diff: CellsByAddressType = {};\n let diffCount = 0;\n for (let y = top; y <= bottom; y++) {\n if (sheet.isRowFiltered(y)) {\n continue;\n }\n for (let x = left; x <= right; x++) {\n const cell = sheet.getCell({ y, x }, { resolution: 'SYSTEM' });\n const address = p2a({ y, x });\n if (prevention.hasOperation(cell?.prevention, prevention.Write)) {\n continue;\n }\n // Spilled cells are derived from the origin cell's formula and should\n // not be cleared independently — doing so would blank the FormulaBar\n // while the spill re-populates the value on next evaluation.\n if (sheet.getSystem({ y, x })?.spilledFrom != null) {\n continue;\n }\n if (cell?.value != null) {\n diff[address] = { value: undefined };\n diffCount++;\n }\n }\n }\n if (diffCount === 0) {\n return store;\n }\n sheet.update({\n diff,\n partial: true,\n operator: 'USER',\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n return {\n ...store,\n ...initSearchStatement(sheet, store),\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const clear = new ClearAction().bind();\n\nclass UndoAction<T extends null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (!sheet) {\n return store;\n }\n const { history, callback } = sheet.undo();\n if (history == null) {\n return store;\n }\n if (history.dstSheetId !== sheet.id) {\n const { dispatch, store: dstStore } = sheet.registry.contextsBySheetId[history.dstSheetId];\n dispatch(\n setStore({\n ...dstStore,\n ...history.undoReflection,\n sheetReactive: { current: dstStore.sheetReactive.current },\n }),\n );\n flashSheet(dstStore.flashRef.current);\n // For cross-sheet MOVE: the src (current) sheet's lastChangedAddresses was also updated.\n // Return updated sheetReactive so this sheet's Emitter fires onChange.\n if (history.srcSheetId === sheet.id) {\n return flashWithCallback(store, sheet, callback);\n }\n return store;\n }\n return {\n ...store,\n ...restrictPoints(store, sheet),\n ...history.undoReflection,\n ...initSearchStatement(sheet, store),\n sheetReactive: { current: sheet },\n callback: (s: StoreType) => {\n callback?.(s);\n flashSheet(store.flashRef.current);\n },\n };\n }\n}\nexport const undo = new UndoAction().bind();\n\nclass RedoAction<T extends null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { sheetReactive: sheetRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n const { history, newSheet, callback } = sheet.redo();\n if (history == null) {\n return store;\n }\n if (history.dstSheetId !== sheet.id) {\n const { dispatch, store: dstStore } = sheet.registry.contextsBySheetId[history.dstSheetId];\n dispatch(\n setStore({\n ...dstStore,\n ...history.redoReflection,\n sheetReactive: { current: dstStore.sheetReactive.current },\n }),\n );\n flashSheet(dstStore.flashRef.current);\n // For cross-sheet MOVE: the src (current) sheet's lastChangedAddresses was also updated.\n // Return updated sheetReactive so this sheet's Emitter fires onChange.\n if (history.srcSheetId === sheet.id) {\n return flashWithCallback(store, sheet, callback);\n }\n return store;\n }\n return {\n ...store,\n ...restrictPoints(store, sheet),\n ...history.redoReflection,\n ...initSearchStatement(sheet, store),\n sheetReactive: { current: sheet },\n callback: (s: StoreType) => {\n callback?.(s);\n flashSheet(store.flashRef.current);\n },\n };\n }\n}\nexport const redo = new RedoAction().bind();\n\nclass ArrowAction<\n T extends {\n shiftKey: boolean;\n deltaY: number;\n deltaX: number;\n numRows: number;\n numCols: number;\n },\n> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { shiftKey, deltaY, deltaX, numRows, numCols } = payload;\n const { choosing, sheetReactive: sheetRef, tabularRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n let { selectingZone } = store;\n const { y, x } = choosing;\n if (shiftKey) {\n const [dragEndY, dragEndX] = [\n selectingZone.endY === -1 ? y : selectingZone.endY,\n selectingZone.endX === -1 ? x : selectingZone.endX,\n ];\n const [nextY, nextX] = [dragEndY + deltaY, dragEndX + deltaX];\n if (nextY < 1 || numRows < nextY || nextX < 1 || numCols < nextX) {\n return store;\n }\n selectingZone =\n y === nextY && x === nextX\n ? { startY: -1, startX: -1, endY: -1, endX: -1 }\n : { startY: y, startX: x, endY: nextY, endX: nextX };\n return {\n ...store,\n selectingZone,\n };\n }\n const [nextY, nextX] = [y + deltaY, x + deltaX];\n if (nextY < 1 || numRows < nextY || nextX < 1 || numCols < nextX) {\n return store;\n }\n // Skip hidden rows\n let resolvedY = nextY;\n if (sheet.isRowFiltered(resolvedY)) {\n const dir = deltaY >= 0 ? 1 : -1;\n while (resolvedY >= 1 && resolvedY <= numRows && sheet.isRowFiltered(resolvedY)) {\n resolvedY += dir;\n }\n if (resolvedY < 1 || resolvedY > numRows) {\n return store; // no visible row in that direction\n }\n }\n let { y: editorTop, x: editorLeft, height, width } = store.editorRect;\n if (deltaY > 0) {\n for (let i = y; i < resolvedY; i++) {\n editorTop += sheet.getCell({ y: i, x: 0 }, { resolution: 'SYSTEM' })?.height || DEFAULT_HEIGHT;\n }\n } else if (deltaY < 0) {\n for (let i = y - 1; i >= resolvedY; i--) {\n editorTop -= sheet.getCell({ y: i, x: 0 }, { resolution: 'SYSTEM' })?.height || DEFAULT_HEIGHT;\n }\n }\n if (deltaX > 0) {\n for (let i = x; i < nextX; i++) {\n editorLeft += sheet.getCell({ y: 0, x: i }, { resolution: 'SYSTEM' })?.width || DEFAULT_WIDTH;\n }\n } else if (deltaX < 0) {\n for (let i = x - 1; i >= nextX; i--) {\n editorLeft -= sheet.getCell({ y: 0, x: i }, { resolution: 'SYSTEM' })?.width || DEFAULT_WIDTH;\n }\n }\n\n const cell = sheet.getCell({ y: resolvedY, x: nextX }, { resolution: 'SYSTEM' });\n height = cell?.height || DEFAULT_HEIGHT;\n width = cell?.width || DEFAULT_WIDTH;\n\n smartScroll(sheet, tabularRef.current, { y: resolvedY, x: nextX });\n return {\n ...store,\n selectingZone: { startY: -1, startX: -1, endY: -1, endX: -1 },\n choosing: { y: resolvedY, x: nextX } as PointType,\n editorRect: { y: editorTop, x: editorLeft, height, width },\n };\n }\n}\nexport const arrow = new ArrowAction().bind();\n\nclass WalkAction<\n T extends {\n deltaY: number;\n deltaX: number;\n numRows: number;\n numCols: number;\n },\n> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numRows, numCols } = payload;\n let { deltaY, deltaX } = payload;\n const { choosing, selectingZone, sheetReactive: sheetRef, tabularRef: gridOuterRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n\n let { y: editorTop, x: editorLeft, height, width } = store.editorRect;\n const { y, x } = choosing;\n const selectingArea = zoneToArea(selectingZone);\n const { top, left, bottom, right } = selectingArea;\n let [nextY, nextX] = [y + deltaY, x + deltaX];\n if (nextY < top && top !== -1) {\n deltaY = bottom - nextY;\n nextY = bottom;\n if (nextX > left) {\n nextX--;\n deltaX--;\n } else {\n deltaX = right - nextX;\n nextX = right;\n }\n }\n if (nextY > bottom && bottom !== -1) {\n deltaY = top - nextY;\n nextY = top;\n if (nextX < right) {\n nextX++;\n deltaX++;\n } else {\n deltaX = left - nextX;\n nextX = left;\n }\n }\n if (nextX < left && left !== -1) {\n deltaX = right - nextX;\n nextX = right;\n if (nextY > top) {\n nextY--;\n deltaY--;\n } else {\n deltaY = bottom - nextY;\n nextY = bottom;\n }\n }\n if (nextX > right && right !== -1) {\n deltaX = left - nextX;\n nextX = left;\n if (nextY < bottom) {\n nextY++;\n deltaY++;\n } else {\n deltaY = top - nextY;\n nextY = top;\n }\n }\n\n if (nextY < 1 || numRows < nextY || nextX < 1 || numCols < nextX) {\n return store;\n }\n\n // Skip hidden rows\n if (sheet.isRowFiltered(nextY)) {\n const dir = deltaY >= 0 ? 1 : -1;\n const lo = top !== -1 ? top : 1;\n const hi = bottom !== -1 ? bottom : numRows;\n while (nextY >= lo && nextY <= hi && sheet.isRowFiltered(nextY)) {\n nextY += dir;\n }\n if (nextY < lo || nextY > hi || sheet.isRowFiltered(nextY)) {\n return store; // no visible row in range\n }\n }\n\n if (deltaY > 0) {\n for (let i = y; i < nextY; i++) {\n editorTop += sheet.getCell({ y: i, x: 0 }, { resolution: 'SYSTEM' })?.height || DEFAULT_HEIGHT;\n }\n } else if (deltaY < 0) {\n for (let i = y - 1; i >= nextY; i--) {\n editorTop -= sheet.getCell({ y: i, x: 0 }, { resolution: 'SYSTEM' })?.height || DEFAULT_HEIGHT;\n }\n }\n if (deltaX > 0) {\n for (let i = x; i < nextX; i++) {\n editorLeft += sheet.getCell({ y: 0, x: i }, { resolution: 'SYSTEM' })?.width || DEFAULT_WIDTH;\n }\n } else if (deltaX < 0) {\n for (let i = x - 1; i >= nextX; i--) {\n editorLeft -= sheet.getCell({ y: 0, x: i }, { resolution: 'SYSTEM' })?.width || DEFAULT_WIDTH;\n }\n }\n const cell = sheet.getCell({ y: nextY, x: nextX }, { resolution: 'SYSTEM' });\n height = cell?.height || DEFAULT_HEIGHT;\n width = cell?.width || DEFAULT_WIDTH;\n smartScroll(sheet, gridOuterRef.current, { y: nextY, x: nextX });\n return {\n ...store,\n choosing: { y: nextY, x: nextX } as PointType,\n editorRect: { y: editorTop, x: editorLeft, height, width },\n };\n }\n}\nexport const walk = new WalkAction().bind();\n\nclass SetInputtingAction<T extends string> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n inputting: payload,\n };\n }\n}\n\nexport const setInputting = new SetInputtingAction().bind();\n\nclass InsertRowsAboveAction<T extends { numRows: number; y: number; operator?: OperatorType }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numRows, y, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n sheet.insertRows({\n y,\n numRows,\n baseY: y,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n return {\n ...store,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const insertRowsAbove = new InsertRowsAboveAction().bind();\n\nclass InsertRowsBelowAction<T extends { numRows: number; y: number; operator?: OperatorType }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numRows, y, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing, editorRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n const nextSelectingZone = {\n ...selectingZone,\n startY: selectingZone.startY + numRows,\n endY: selectingZone.endY + numRows,\n };\n const nextChoosing = { ...choosing, y: choosing.y + numRows };\n\n sheet.insertRows({\n y: y + 1,\n numRows,\n baseY: y,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone: nextSelectingZone,\n choosing: nextChoosing,\n }),\n });\n return {\n ...store,\n selectingZone: nextSelectingZone,\n choosing: nextChoosing,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const insertRowsBelow = new InsertRowsBelowAction().bind();\n\nclass InsertColsLeftAction<T extends { numCols: number; x: number; operator?: OperatorType }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numCols, x, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing, editorRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n\n sheet.insertCols({\n x,\n numCols,\n baseX: x,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n return {\n ...store,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const insertColsLeft = new InsertColsLeftAction().bind();\n\nclass InsertColsRightAction<T extends { numCols: number; x: number; operator?: OperatorType }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numCols, x, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n const nextSelectingZone = {\n ...selectingZone,\n startX: selectingZone.startX + numCols,\n endX: selectingZone.endX + numCols,\n };\n const nextChoosing = { ...choosing, x: choosing.x + numCols };\n\n selectingZone.startX += numCols;\n selectingZone.endX += numCols;\n\n sheet.insertCols({\n x: x + 1,\n numCols,\n baseX: x,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone: nextSelectingZone,\n choosing: nextChoosing,\n }),\n });\n return {\n ...store,\n selectingZone: nextSelectingZone,\n choosing: nextChoosing,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const insertColsRight = new InsertColsRightAction().bind();\n\nclass RemoveRowsAction<T extends { numRows: number; y: number; operator?: OperatorType }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numRows, y, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing, editorRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n\n sheet.removeRows({\n y,\n numRows,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n sheetHeight: store.sheetHeight,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n\n return {\n ...store,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const removeRows = new RemoveRowsAction().bind();\n\nclass RemoveColsAction<T extends { numCols: number; x: number; operator?: OperatorType }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { numCols, x, operator } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing, editorRef } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n\n sheet.removeCols({\n x,\n numCols,\n operator,\n undoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n sheetWidth: store.sheetWidth,\n }),\n redoReflection: compactReflection({\n sheetId: sheet.id,\n selectingZone,\n choosing,\n }),\n });\n\n return {\n ...store,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const removeCols = new RemoveColsAction().bind();\n\nclass SortRowsAction<T extends { x: number; direction: 'asc' | 'desc' }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { x, direction } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n sheet.sortRows({ x, direction });\n const reflection = compactReflection({ sheetId: sheet.id, selectingZone, choosing });\n if (sheet.registry.lastHistory) {\n sheet.registry.lastHistory.undoReflection = reflection;\n sheet.registry.lastHistory.redoReflection = reflection;\n }\n return {\n ...store,\n sheetReactive: { current: sheet },\n };\n }\n}\nexport const sortRows = new SortRowsAction().bind();\n\nclass FilterRowsAction<T extends { x?: number; filter?: FilterConfig }> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n const { x, filter } = payload;\n const { sheetReactive: sheetRef, selectingZone, choosing } = store;\n const sheet = sheetRef.current;\n if (sheet == null) {\n return store;\n }\n sheet.filterRows({ x, filter });\n const reflection = compactReflection({ sheetId: sheet.id, selectingZone, choosing });\n if (sheet.registry.lastHistory) {\n sheet.registry.lastHistory.undoReflection = reflection;\n sheet.registry.lastHistory.redoReflection = reflection;\n }\n let newChoosing = choosing;\n if (sheet.isRowFiltered(choosing.y)) {\n for (let y = 1; y <= sheet.numRows; y++) {\n if (!sheet.isRowFiltered(y)) {\n newChoosing = { y, x: choosing.x };\n break;\n }\n }\n }\n return {\n ...store,\n choosing: newChoosing,\n selectingZone: newChoosing !== choosing ? resetZone : selectingZone,\n sheetReactive: { current: sheet },\n callback: ({ sheetReactive: sheetRef }) => {\n const t = sheetRef.current;\n if (t) {\n t.registry.transmit({\n cutting: false,\n copyingZone: resetZone,\n });\n }\n },\n };\n }\n}\nexport const filterRows = new FilterRowsAction().bind();\n\nclass SetColumnMenuAction<T extends { x: number; position: { y: number; x: number } } | null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n columnMenuState: payload,\n };\n }\n}\nexport const setColumnMenu = new SetColumnMenuAction().bind();\n\nclass SetRowMenuAction<T extends { y: number; position: { y: number; x: number } } | null> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n rowMenuState: payload,\n };\n }\n}\nexport const setRowMenu = new SetRowMenuAction().bind();\n\nclass SetEditorHoveringAction<T extends boolean> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n editorHovering: payload,\n };\n }\n}\nexport const setEditorHovering = new SetEditorHoveringAction().bind();\n\nclass setStoreAction<T extends Partial<StoreType>> extends CoreAction<T> {\n reduce(store: StoreType, payload: T): StoreWithCallback {\n return {\n ...store,\n ...payload,\n };\n }\n}\nexport const setStore = new setStoreAction().bind();\n\nexport const userActions = {\n blur,\n copy,\n cut,\n paste,\n escape,\n choose,\n select,\n selectRows,\n selectCols,\n drag,\n search,\n write,\n clear,\n undo,\n redo,\n arrow,\n walk,\n insertRowsAbove,\n insertRowsBelow,\n insertColsLeft,\n insertColsRight,\n removeRows,\n removeCols,\n sortRows,\n filterRows,\n};\n","import { useEffect, useState, useRef } from 'react';\nimport { createBook, type BookType, type RegistryProps, type TransmitProps } from '@gridsheet/core';\nimport { updateSheet } from '../store/actions';\n\n// Return the document object with SSR.\nexport const useBrowser = () => {\n const [ok, setOk] = useState(false);\n useEffect(() => {\n setOk(true);\n }, []);\n if (ok && typeof window !== 'undefined') {\n return { window, document };\n }\n return { window: null, document: null };\n};\n\nexport const useDebounce = <T>(value: T, delay = 100) => {\n const [debouncedValue, setDebouncedValue] = useState(value);\n const timerRef = useRef<number>();\n\n useEffect(() => {\n timerRef.current = window.setTimeout(() => setDebouncedValue(value), delay);\n return () => {\n window.clearTimeout(timerRef.current);\n };\n }, [value, delay]);\n return debouncedValue;\n};\n\nexport const useDebounceCallback = (callback: (...args: any[]) => void, delay = 100) => {\n const debouncedCallback = useRef(callback);\n const timerRef = useRef<number>();\n\n useEffect(() => {\n debouncedCallback.current = callback;\n }, [callback]);\n\n return (...args: any[]) => {\n window.clearTimeout(timerRef.current);\n timerRef.current = window.setTimeout(() => {\n debouncedCallback.current(...args);\n }, delay);\n };\n};\n\nexport const useBook = (props: RegistryProps = {}) => {\n const [book, setBook] = useState<BookType>(() => createBook(props));\n const { registry } = book;\n registry.updateSheet = updateSheet;\n registry.transmit = (patch?: TransmitProps) => {\n Object.assign(registry, patch);\n if (!registry.ready) {\n return;\n }\n requestAnimationFrame(() => setBook({ registry }));\n };\n useEffect(() => {\n Object.assign(registry, props);\n }, [props]);\n return book;\n};\n"],"names":["compactReflection","reflection","result","restrictPoints","store","sheet","choosing","selectingZone","y","x","y1","x1","y2","x2","numRows","numCols","FLASH_CLASS","FLASH_DURATION_MS","flashSheet","el","flashWithCallback","callback","s","initSearchStatement","searchQuery","searchCaseSensitive","searchRegex","searchRange","matchingCells","matcher","flags","regex","v","q","startY","endY","startX","endX","x2c","y2r","matchingCellIndex","address","a2p","isXSheetFocused","sheetId","sheetRef","resetZone","actions","reducer","action","act","registry","_a","_b","cached","newStore","_CoreAction","payload","CoreAction","SetSearchQueryAction","setSearchQuery","SetSearchCaseSensitiveAction","setSearchCaseSensitive","SetSearchRegexAction","setSearchRegex","SetSearchRangeAction","setSearchRange","SetEditingAddressAction","setEditingAddress","SetAutofillDraggingToAction","setAutofillDraggingTo","SubmitAutofillAction","autofill","Autofill","areaToZone","submitAutofill","SetContextMenuPositionAction","setContextMenuPosition","SetResizingPositionYAction","setResizingPositionY","SetResizingPositionXAction","setResizingPositionX","SetEnteringAction","setEntering","UpdateSheetAction","updateSheet","SetEditorRectAction","setEditorRect","SetDragging","setDragging","BlurAction","blur","CopyAction","copy","CutAction","cut","PasteAction","dstSheetRef","dstSheet","copyingSheetId","copyingZone","cutting","srcSheet","selectingArea","zoneToArea","copyingArea","matrix","onlyValue","src","dy","dx","areaDiff","dst","nextSelectingZone","restrictZone","newSheet","height","width","matrixShape","superposed","superposeArea","paste","EscapeAction","escape","ChooseAction","choose","SelectAction","select","SelectRowsAction","range","start","end","choosingY","selectRows","SelectColsAction","selectCols","DragAction","drag","SearchAction","search","WriteAction","value","point","write","ClearAction","top","left","bottom","right","diff","diffCount","cell","p2a","prevention","clear","UndoAction","history","dispatch","dstStore","setStore","undo","RedoAction","redo","ArrowAction","shiftKey","deltaY","deltaX","tabularRef","dragEndY","dragEndX","nextY","nextX","resolvedY","dir","editorTop","editorLeft","i","DEFAULT_HEIGHT","_c","DEFAULT_WIDTH","_d","smartScroll","arrow","WalkAction","gridOuterRef","lo","hi","walk","SetInputtingAction","setInputting","InsertRowsAboveAction","operator","insertRowsAbove","InsertRowsBelowAction","editorRef","nextChoosing","insertRowsBelow","InsertColsLeftAction","insertColsLeft","InsertColsRightAction","insertColsRight","RemoveRowsAction","removeRows","RemoveColsAction","removeCols","SortRowsAction","direction","sortRows","FilterRowsAction","filter","newChoosing","t","filterRows","SetColumnMenuAction","setColumnMenu","SetRowMenuAction","setRowMenu","SetEditorHoveringAction","setEditorHovering","setStoreAction","userActions","useBrowser","ok","setOk","useState","useEffect","useDebounceCallback","delay","debouncedCallback","useRef","timerRef","args","useBook","props","book","setBook","createBook","patch"],"mappings":";;AAQa,MAAAA,IAAoB,CAACC,MAA+C;AACzE,QAAAC,IAAS,EAAE,GAAGD,EAAW;AAC3B,SAAAC,EAAO,iBAAiB,QAAQA,EAAO,cAAc,SAAS,MAAMA,EAAO,cAAc,SAAS,MACpG,OAAOA,EAAO,eAETA;AACT,GAEaC,IAAiB,CAACC,GAAkBC,MAAiB;AAC1D,QAAA,EAAE,UAAAC,GAAU,eAAAC,EAAA,IAAkBH;AAChC,MAAA,EAAE,GAAAI,GAAG,GAAAC,EAAA,IAAMH,GACX,EAAE,QAAQI,GAAI,QAAQC,GAAI,MAAMC,GAAI,MAAMC,EAAA,IAAON;AAC/C,QAAA,CAACO,GAASC,CAAO,IAAI,CAACV,EAAM,SAASA,EAAM,OAAO;AACxD,SAAIG,IAAIM,MACFN,IAAAM,IAEFL,IAAIM,MACFN,IAAAM,IAEFL,IAAKI,MACFJ,IAAAI,IAEHF,IAAKE,MACFF,IAAAE,IAEHH,IAAKI,MACFJ,IAAAI,IAEHF,IAAKE,MACFF,IAAAE,IAEA;AAAA,IACL,UAAU,EAAE,GAAAP,GAAG,GAAAC,EAAE;AAAA,IACjB,eAAe,EAAE,QAAQC,GAAI,QAAQC,GAAI,MAAMC,GAAI,MAAMC,EAAG;AAAA,EAC9D;AACF,GAEMG,IAAc,4BACdC,KAAoB,KACbC,IAAa,CAACC,MAA2B;AACpD,EAAKA,MAGFA,EAAA,UAAU,OAAOH,CAAW,GAE1BG,EAAG,aACLA,EAAA,UAAU,IAAIH,CAAW,GAC5B,WAAW,MAAMG,EAAG,UAAU,OAAOH,CAAW,GAAGC,EAAiB;AACtE,GAEaG,IAAoB,CAC/BhB,GACAC,GACAgB,OAC2D;AAAA,EAC3D,GAAGjB;AAAA,EACH,eAAe,EAAE,SAASC,EAAM;AAAA,EAChC,UAAU,CAACiB,MAAiB;AAC1B,IAAAD,KAAA,QAAAA,EAAWC,IACAJ,EAAAd,EAAM,SAAS,OAAO;AAAA,EAAA;AAErC,IAEamB,IAAsB,CAAClB,GAAcD,MAAqB;AACrE,QAAM,EAAE,aAAAoB,GAAa,qBAAAC,GAAqB,aAAAC,GAAa,aAAAC,EAAgB,IAAAvB;AACnE,MAAA,EAAE,UAAAE,MAAaF;AACnB,MAAI,CAACoB;AACI,WAAA,EAAE,eAAe,GAAG;AAE7B,QAAMI,IAA2B,CAAC;AAE9B,MAAAC;AACJ,MAAIH;AACE,QAAA;AACI,YAAAI,IAAQL,IAAsB,KAAK,KACnCM,IAAQ,IAAI,OAAOP,GAAaM,CAAK;AAC3C,MAAAD,IAAU,CAACG,MAAcD,EAAM,KAAKC,CAAC;AAAA,YAC3B;AAEV,YAAMC,IAAIR,IAAsBD,IAAcA,EAAY,YAAY;AACtE,MAAAK,IAAU,CAACG,OACCP,IAAsBO,IAAIA,EAAE,YAAY,GACzC,QAAQC,CAAC,MAAM;AAAA,IAC1B;AAAA,OAEG;AACL,UAAMA,IAAIR,IAAsBD,IAAcA,EAAY,YAAY;AACtE,IAAAK,IAAU,CAACG,OACCP,IAAsBO,IAAIA,EAAE,YAAY,GACzC,QAAQC,CAAC,MAAM;AAAA,EAC1B;AAIE,MAAAC,IAAS,GACXC,IAAO9B,EAAM,QACX+B,IAAS,GACXC,IAAOhC,EAAM;AACf,EAAIsB,MACFO,IAASP,EAAY,QACrBQ,IAAOR,EAAY,MACnBS,IAAST,EAAY,QACrBU,IAAOV,EAAY;AAGrB,WAASnB,IAAI0B,GAAQ1B,KAAK2B,GAAM3B;AAC9B,aAASC,IAAI2B,GAAQ3B,KAAK4B,GAAM5B,KAAK;AAC7B,YAAAuB,IAAI3B,EAAM,mBAAmB,EAAE,OAAO,EAAE,GAAAG,GAAG,GAAAC,EAAE,GAAG;AAClD,MAAAoB,EAAQG,CAAC,KACGJ,EAAA,KAAK,GAAGU,GAAI7B,CAAC,CAAC,GAAG8B,GAAI/B,CAAC,CAAC,EAAE;AAAA,IACzC;AAGJ,QAAMgC,IAAoBZ,EAAc,WAAWxB,EAAM,cAAc,SAASA,EAAM,oBAAoB;AACtG,MAAAwB,EAAc,SAAS,GAAG;AACtB,UAAAa,IAAUb,EAAcY,CAAiB;AAC/C,IAAAlC,IAAWoC,EAAID,CAAO;AAAA,EAAA;AAExB,SAAO,EAAE,eAAAb,GAAe,aAAAJ,GAAa,mBAAAgB,GAAmB,UAAAlC,EAAS;AACnE,GAEaqC,KAAkB,CAACvC,MAAqB;AACnD,QAAM,EAAE,SAAAwC,GAAS,eAAeC,EAAa,IAAAzC,GACvCC,IAAQwC,EAAS;AAInB,SAHA,CAACxC,KAGDuC,MAAYvC,EAAM,SAAS,iBACtB,KAEF,CAAC,CAACA,EAAM,SAAS;AAC1B,GClHMyC,IAAsB,EAAE,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,GAAG,GAEnEC,KAA4C,CAAC,GAMtCC,KAAU,CAAI5C,GAAkB6C,MAAkD;;AACvF,QAAAC,IAAiCH,GAAQE,EAAO,IAAI;AAC1D,MAAIC,KAAO;AACF,WAAA9C;AASH,QAAA+C,KAAWC,IAAAhD,EAAM,cAAc,YAApB,gBAAAgD,EAA6B;AAC9C,OAAIC,IAAAF,KAAA,gBAAAA,EAAU,qBAAV,QAAAE,EAA4B,IAAIJ,IAAS;AAC3C,UAAMK,IAASH,EAAS,iBAAiB,IAAIF,CAAM;AAC1C,WAAAE,EAAA,iBAAiB,OAAOF,CAAM,GAChCK;AAAA,EAAA;AAGH,QAAA,EAAE,UAAAjC,GAAU,GAAGkC,MAAaL,EAAI,OAAO9C,GAAO6C,EAAO,KAAK;AAChE,EAAA5B,KAAA,QAAAA,EAAWkC;AACX,QAAMrD,IAAS,EAAE,GAAGE,GAAO,GAAGmD,EAAS;AAEvC,SAAIJ,MACGA,EAAS,qBACHA,EAAA,uCAAuB,IAAI,IAE7BA,EAAA,iBAAiB,IAAIF,GAAQ/C,CAAM,GAC5C,eAAe,MAAM;;AACV,KAAAkD,IAAAD,EAAA,qBAAA,QAAAC,EAAkB,OAAOH;AAAA,EAAM,CACzC,IAGI/C;AACT,GAEasD,IAAN,MAAMA,EAAc;AAAA,EAApB,cAAA;AAEL,SAAQ,WAAmB;AAAA,EAAA;AAAA,EAEpB,OAAOpD,GAAkBqD,GAA+B;AACtD,WAAArD;AAAA,EAAA;AAAA,EAEF,KAAKqD,GAAwC;AAC3C,WAAA;AAAA,MACL,MAAM,KAAK;AAAA,MACX,OAAOA;AAAA,IACT;AAAA,EAAA;AAAA,EAEK,OAAO;AACZ,gBAAK,WAAWD,EAAW,QACnBT,GAAA,KAAK,QAAQ,IAAI,MAClB,KAAK,KAAK,KAAK,IAAI;AAAA,EAAA;AAE9B;AAjBES,EAAO,OAAO;AADT,IAAME,IAANF;AAoBP,MAAMG,WAA2DD,EAAc;AAAA,EAC7E,OAAOtD,GAAkBqD,GAA+B;AACtD,UAAMjC,IAAciC,GACd,EAAE,eAAeZ,EAAA,IAAazC;AAChC,WAAAyC,EAAS,WAAW,OACfzC,IAEF;AAAA,MACL,GAAGA;AAAA,MACH,GAAGmB,EAAoBsB,EAAS,SAAS,EAAE,GAAGzC,GAAO,aAAAoB,GAAa;AAAA,MAClE,aAAAA;AAAA,IACF;AAAA,EAAA;AAEJ;AACO,MAAMoC,KAAiB,IAAID,GAAqB,EAAE,KAAK;AAE9D,MAAME,WAAwDH,EAAc;AAAA,EAC1E,OAAOtD,GAAkBqD,GAA+B;AACtD,UAAMhC,IAAsBgC,GACtB,EAAE,eAAeZ,EAAA,IAAazC;AAChC,WAAAyC,EAAS,WAAW,OACfzC,IAEF;AAAA,MACL,GAAGA;AAAA,MACH,GAAGmB,EAAoBsB,EAAS,SAAS,EAAE,GAAGzC,GAAO,qBAAAqB,GAAqB;AAAA,MAC1E,qBAAAA;AAAA,IACF;AAAA,EAAA;AAEJ;AACO,MAAMqC,KAAyB,IAAID,GAA6B,EAAE,KAAK;AAE9E,MAAME,WAAgDL,EAAc;AAAA,EAClE,OAAOtD,GAAkBqD,GAA+B;AACtD,UAAM/B,IAAc+B,GACd,EAAE,eAAeZ,EAAA,IAAazC;AAChC,WAAAyC,EAAS,WAAW,OACfzC,IAEF;AAAA,MACL,GAAGA;AAAA,MACH,GAAGmB,EAAoBsB,EAAS,SAAS,EAAE,GAAGzC,GAAO,aAAAsB,GAAa;AAAA,MAClE,aAAAA;AAAA,IACF;AAAA,EAAA;AAEJ;AACO,MAAMsC,KAAiB,IAAID,GAAqB,EAAE,KAAK;AAE9D,MAAME,WAA6DP,EAAc;AAAA,EAC/E,OAAOtD,GAAkBqD,GAA+B;AACtD,UAAM9B,IAAc8B,GACd,EAAE,eAAeZ,EAAA,IAAazC;AAChC,WAAAyC,EAAS,WAAW,OACfzC,IAEF;AAAA,MACL,GAAGA;AAAA,MACH,GAAGmB,EAAoBsB,EAAS,SAAS,EAAE,GAAGzC,GAAO,aAAAuB,GAAa;AAAA,MAClE,aAAAA;AAAA,IACF;AAAA,EAAA;AAEJ;AACO,MAAMuC,KAAiB,IAAID,GAAqB,EAAE,KAAK;AAE9D,MAAME,WAAkDT,EAAc;AAAA,EACpE,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,gBAAgBqD;AAAA,IAClB;AAAA,EAAA;AAEJ;AACO,MAAMW,KAAoB,IAAID,GAAwB,EAAE,KAAK;AAEpE,MAAME,WAAgEX,EAAc;AAAA,EAClF,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,oBAAoBqD;AAAA,IACtB;AAAA,EAAA;AAEJ;AACO,MAAMa,KAAwB,IAAID,GAA4B,EAAE,KAAK;AAE5E,MAAME,WAAkDb,EAAc;AAAA,EACpE,OAAOtD,GAAkBqD,GAA+B;AACtD,UAAMe,IAAW,IAAIC,GAASrE,GAAOqD,CAAO,GACtCpD,IAAQmE,EAAS,SACjBjE,IAAgBmE,EAAWF,EAAS,SAAS;AAE5C,WAAA;AAAA,MACL,GAAGpE;AAAA,MACH,eAAe,EAAE,SAASC,EAAM;AAAA,MAChC,GAAGkB,EAAoBlB,GAAOD,CAAK;AAAA,MACnC,GAAGD,EAAeC,GAAOC,CAAK;AAAA,MAC9B,eAAAE;AAAA,MACA,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,IACtB;AAAA,EAAA;AAEJ;AACO,MAAMoE,KAAiB,IAAIJ,GAAqB,EAAE,KAAK;AAE9D,MAAMK,WAA6DlB,EAAc;AAAA,EAC/E,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,qBAAqBqD;AAAA,IACvB;AAAA,EAAA;AAEJ;AACO,MAAMoB,KAAyB,IAAID,GAA6B,EAAE,KAAK;AAE9E,MAAME,WAAuEpB,EAAc;AAAA,EACzF,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,mBAAmBqD;AAAA,IACrB;AAAA,EAAA;AAEJ;AACO,MAAMsB,KAAuB,IAAID,GAA2B,EAAE,KAAK;AAE1E,MAAME,WAAuEtB,EAAc;AAAA,EACzF,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,mBAAmBqD;AAAA,IACrB;AAAA,EAAA;AAEJ;AACO,MAAMwB,KAAuB,IAAID,GAA2B,EAAE,KAAK;AAE1E,MAAME,WAA6CxB,EAAc;AAAA,EAC/D,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,UAAUqD;AAAA,IACZ;AAAA,EAAA;AAEJ;AACO,MAAM0B,KAAc,IAAID,GAAkB,EAAE,KAAK;AAExD,MAAME,WAA2C1B,EAAc;AAAA,EAC7D,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,eAAe,EAAE,SAASqD,EAAQ;AAAA,MAClC,GAAGlC,EAAoBkC,GAASrD,CAAK;AAAA,MACrC,GAAGD,EAAeC,GAAOqD,CAAO;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAM4B,KAAc,IAAID,GAAkB,EAAE,KAAK;AAExD,MAAME,WAAgD5B,EAAc;AAAA,EAClE,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,YAAYqD;AAAA,IACd;AAAA,EAAA;AAEJ;AACO,MAAM8B,KAAgB,IAAID,GAAoB,EAAE,KAAK;AAE5D,MAAME,WAAuC9B,EAAc;AAAA,EACzD,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,UAAUqD;AAAA,IACZ;AAAA,EAAA;AAEJ;AACO,MAAMgC,KAAc,IAAID,GAAY,EAAE,KAAK;AAElD,MAAME,WAAmChC,EAAc;AAAA,EACrD,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,gBAAgB;AAAA,IAClB;AAAA,EAAA;AAEJ;AACO,MAAMuF,KAAO,IAAID,GAAW,EAAE,KAAK;AAE1C,MAAME,WAAuClC,EAAc;AAAA,EACzD,OAAOtD,GAAkBqD,GAA+B;AAChD,UAAA,EAAE,eAAeZ,EAAA,IAAazC,GAC9BC,IAAQwC,EAAS;AACvB,WAAKxC,IAGE;AAAA,MACL,GAAGD;AAAA,MACH,UAAU,CAAC,EAAE,eAAeyC,QAAe;AACzC,QAAAxC,EAAM,SAAS,SAAS;AAAA,UACtB,gBAAgBA,EAAM;AAAA,UACtB,aAAaoD;AAAA,UACb,SAAS;AAAA,QAAA,CACV;AAAA,MAAA;AAAA,IAEL,IAXSrD;AAAA,EAWT;AAEJ;AACO,MAAMyF,KAAO,IAAID,GAAW,EAAE,KAAK;AAE1C,MAAME,WAAsCpC,EAAc;AAAA,EACxD,OAAOtD,GAAkBqD,GAA+B;AAChD,UAAA,EAAE,eAAeZ,EAAA,IAAazC,GAC9BC,IAAQwC,EAAS;AACvB,WAAKxC,IAGE;AAAA,MACL,GAAGD;AAAA,MACH,UAAU,CAAC,EAAE,eAAeyC,QAAe;AACzC,QAAAxC,EAAM,SAAS,SAAS;AAAA,UACtB,gBAAgBA,EAAM;AAAA,UACtB,aAAaoD;AAAA,UACb,SAAS;AAAA,QAAA,CACV;AAAA,MAAA;AAAA,IAEL,IAXSrD;AAAA,EAWT;AAEJ;AACO,MAAM2F,KAAM,IAAID,GAAU,EAAE,KAAK;AAExC,MAAME,WAA+EtC,EAAc;AAAA,EACjG,OAAOtD,GAAkBqD,GAA+B;AACtD,UAAM,EAAE,UAAAnD,GAAU,eAAAC,GAAe,eAAe0F,EAAgB,IAAA7F,GAC1D8F,IAAWD,EAAY;AAC7B,QAAI,CAACC;AACI,aAAA9F;AAEH,UAAA,EAAE,UAAA+C,MAAa+C,GACf,EAAE,gBAAAC,GAAgB,aAAAC,GAAa,SAAAC,EAAY,IAAAlD,GAC3CmD,IAAWJ,EAAS,kBAAkBC,CAAc;AAEtD,QAAAI,IAAgBC,EAAWjG,CAAa;AACtC,UAAAkG,IAAcD,EAAWJ,CAAW,GACpC,EAAE,QAAAM,GAAQ,WAAAC,EAAA,IAAclD;AAE9B,QAAI4C,GAAS;AACX,UAAI,CAACC;AACI,eAAAlG;AAET,YAAMwG,IAAMH,GACN,EAAE,MAAMI,GAAI,MAAMC,EAAG,IAAIC,EAASN,CAAW,GAC7CO,IACJT,EAAc,QAAQ,KAClB;AAAA,QACE,KAAKA,EAAc;AAAA,QACnB,MAAMA,EAAc;AAAA,QACpB,QAAQA,EAAc,MAAMM;AAAA,QAC5B,OAAON,EAAc,OAAOO;AAAA,MAAA,IAE9B;AAAA,QACE,KAAKxG,EAAS;AAAA,QACd,MAAMA,EAAS;AAAA,QACf,QAAQA,EAAS,IAAIuG;AAAA,QACrB,OAAOvG,EAAS,IAAIwG;AAAA,MACtB,GAEAG,IAAoBC,EAAaxC,EAAWsC,CAAG,CAAC,GAChDG,IAAWjB,EAAS,KAAK;AAAA,QAC7B,UAAAI;AAAA,QACA,KAAAM;AAAA,QACA,KAAAI;AAAA,QACA,UAAU;AAAA,QACV,gBAAgBhH,EAAkB;AAAA,UAChC,SAASsG,EAAS;AAAA,UAClB,eAAeW;AAAAA,UACf,UAAA3G;AAAA,UACA,UAAU,EAAE,gBAAgBgG,EAAS,IAAI,aAAAF,GAAa,SAAS,GAAK;AAAA,QAAA,CACrE;AAAA,QACD,gBAAgBpG,EAAkB;AAAA,UAChC,SAASsG,EAAS;AAAA,UAClB,UAAAhG;AAAA,UACA,UAAU,EAAE,gBAAgBgG,EAAS,IAAI,aAAaxD,EAAU;AAAA,QACjE,CAAA;AAAA,MAAA,CACF;AAEM,aAAA;AAAA,QACL,GAAG1C;AAAA,QACH,GAAGmB,EAAoB4F,GAAU/G,CAAK;AAAA,QACtC,eAAe,EAAE,SAAS+G,EAAS;AAAA,QACnC,eAAeF;AAAAA,QACf,WAAWE,EAAS,mBAAmB,EAAE,OAAO7G,GAAU,YAAY,OAAO;AAAA,QAC7E,UAAU,CAAC,EAAE,eAAeuC,QAAe;AACzC,UAAAM,EAAS,SAAS;AAAA,YAChB,SAAS;AAAA,YACT,aAAaL;AAAA,UAAA,CACd;AAAA,QAAA;AAAA,MAEL;AAAA,IAAA;AAGE,QAAAqE,GACA,EAAE,GAAA3G,GAAG,GAAAC,EAAA,IAAMH;AAEX,QAAAmG,EAAY,QAAQ,IAAI;AACpB,YAAA,EAAE,MAAMW,GAAQ,MAAMC,EAAA,IAAUC,GAAY,EAAE,QAAAZ,GAAQ,MAAM,IAAI;AACtD,MAAAH,IAAA;AAAA,QACd,KAAK/F;AAAA,QACL,MAAMC;AAAA,QACN,QAAQD,IAAI4G;AAAA,QACZ,OAAO3G,IAAI4G;AAAA,MACb;AACA,YAAMJ,IAAoBC,EAAaxC,EAAW6B,CAAa,CAAC;AAChE,MAAAY,IAAWjB,EAAS,mBAAmB;AAAA,QACrC,OAAO,EAAE,GAAA1F,GAAG,GAAAC,EAAE;AAAA,QACd,QAAAiG;AAAA,QACA,WAAAC;AAAA,QACA,gBAAgB3G,EAAkB;AAAA,UAChC,SAASkG,EAAS;AAAA,UAClB,eAAee;AAAAA,UACf,UAAA3G;AAAA,QAAA,CACD;AAAA,QACD,gBAAgBN,EAAkB;AAAA,UAChC,SAASkG,EAAS;AAAA,UAClB,eAAee;AAAAA,UACf,UAAA3G;AAAA,QACD,CAAA;AAAA,MAAA,CACF;AAAA,IAAA,OACI;AACL,UAAIgG,KAAY;AACP,eAAAlG;AAET,UAAI,EAAE,MAAMyG,GAAI,MAAMC,EAAG,IAAIC,EAASN,CAAW;AAC7C,UAAAF,EAAc,QAAQ,IAAI;AAC5B,QAAA/F,IAAI+F,EAAc,KAClB9F,IAAI8F,EAAc;AACZ,cAAAgB,IAAaC,GAAcjB,GAAeE,CAAW;AAC3D,QAAAI,IAAKU,EAAW,MAChBT,IAAKS,EAAW;AAAA,MAAA;AAEF,MAAAhB,IAAA,EAAE,KAAK/F,GAAG,MAAMC,GAAG,QAAQD,IAAIqG,GAAI,OAAOpG,IAAIqG,EAAG,GACjEK,IAAWjB,EAAS,KAAK;AAAA,QACvB,UAAAI;AAAA,QACA,KAAKG;AAAA,QACL,KAAKF;AAAA,QACL,WAAAI;AAAA,QACA,UAAU;AAAA,QACV,gBAAgB3G,EAAkB;AAAA,UAChC,SAASsG,EAAS;AAAA,UAClB,UAAU,EAAE,aAAAF,EAAY;AAAA,UACxB,UAAA9F;AAAA,UACA,eAAAC;AAAA,QAAA,CACD;AAAA,QACD,gBAAgBP,EAAkB;AAAA,UAChC,SAASsG,EAAS;AAAA,UAClB,UAAU,EAAE,gBAAgBA,EAAS,IAAI,aAAaxD,EAAU;AAAA,UAChE,UAAAxC;AAAA,UACA,eAAeoE,EAAW6B,CAAa;AAAA,QACxC,CAAA;AAAA,MAAA,CACF;AAAA,IAAA;AAGH,UAAMU,IAAoBC,EAAaxC,EAAW6B,CAAa,CAAC;AAChE,WAAAU,EAAkB,OAAO,KAAK,IAAIA,EAAkB,MAAME,EAAS,OAAO,GAC1EF,EAAkB,OAAO,KAAK,IAAIA,EAAkB,MAAME,EAAS,OAAO,GACnE;AAAA,MACL,GAAG/G;AAAA,MACH,eAAe,EAAE,SAAS+G,EAAS;AAAA,MACnC,eAAeF;AAAA,MACf,WAAWE,EAAS,mBAAmB,EAAE,OAAO7G,GAAU,YAAY,OAAO;AAAA,MAC7E,GAAGiB,EAAoB4F,GAAU/G,CAAK;AAAA,MACtC,UAAU,CAAC,EAAE,eAAeyC,QAAe;AACzC,QAAAM,EAAS,SAAS;AAAA,UAChB,aAAaL;AAAA,QAAA,CACd;AAAA,MAAA;AAAA,IAEL;AAAA,EAAA;AAEJ;AACO,MAAM2E,KAAQ,IAAIzB,GAAY,EAAE,KAAK;AAE5C,MAAM0B,WAAqChE,EAAc;AAAA,EACvD,OAAOtD,GAAkBqD,GAA+B;AAChD,UAAA,EAAE,eAAeZ,EAAA,IAAazC;AAC7B,WAAA;AAAA,MACL,GAAGA;AAAA,MACH,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,MACpB,UAAU,CAAC,EAAE,eAAeyC,QAAe;AACzCA,QAAAA,EAAS,QAAS,SAAS,SAAS;AAAA,UAClC,aAAaC;AAAA,UACb,SAAS;AAAA,QAAA,CACV;AAAA,MAAA;AAAA,IAEL;AAAA,EAAA;AAEJ;AACO,MAAM6E,KAAS,IAAID,GAAa,EAAE,KAAK;AAE9C,MAAME,WAA0ClE,EAAc;AAAA,EAC5D,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,UAAUqD;AAAA,MACV,UAAU;AAAA,IACZ;AAAA,EAAA;AAEJ;AACO,MAAMoE,KAAS,IAAID,GAAa,EAAE,KAAK;AAE9C,MAAME,WAAyCpE,EAAc;AAAA,EAC3D,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,eAAeqD;AAAA,MACf,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,IACtB;AAAA,EAAA;AAEJ;AACO,MAAMsE,KAAS,IAAID,GAAa,EAAE,KAAK;AAE9C,MAAME,WAA0EtE,EAAc;AAAA,EAC5F,OAAOtD,GAAkBqD,GAA+B;AAChD,UAAA,EAAE,OAAAwE,GAAO,SAAAlH,EAAA,IAAY0C,GACrB,EAAE,OAAAyE,GAAO,KAAAC,EAAA,IAAQF,GACjB5H,IAAQD,EAAM,cAAc,SAC5BG,IAAgB;AAAA,MACpB,QAAQ2H;AAAA,MACR,QAAQ;AAAA,MACR,MAAMC;AAAA,MACN,MAAMpH;AAAA,IACR;AAEA,QAAIqH,IAAYF;AAChB,QAAI7H;AACF,eAASG,IAAI0H,GAAO1H,KAAK2H,GAAK3H;AAC5B,YAAI,CAACH,EAAM,cAAcG,CAAC,GAAG;AACf,UAAA4H,IAAA5H;AACZ;AAAA,QAAA;AAAA;AAIC,WAAA;AAAA,MACL,GAAGJ;AAAA,MACH,eAAAG;AAAA,MACA,UAAU,EAAE,GAAG6H,GAAW,GAAG,EAAE;AAAA,MAC/B,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,IACtB;AAAA,EAAA;AAEJ;AACO,MAAMC,KAAa,IAAIL,GAAiB,EAAE,KAAK;AAEtD,MAAMM,WAA0E5E,EAAc;AAAA,EAC5F,OAAOtD,GAAkBqD,GAA+B;AAChD,UAAA,EAAE,OAAAwE,GAAO,SAAAnH,EAAA,IAAY2C,GACrB,EAAE,OAAAyE,GAAO,KAAAC,EAAA,IAAQF,GACjB5H,IAAQD,EAAM,cAAc,SAC5BG,IAAgB;AAAA,MACpB,QAAQ;AAAA,MACR,QAAQ2H;AAAA,MACR,MAAMpH;AAAA,MACN,MAAMqH;AAAA,IACR;AAGA,QAAIC,IAAY;AAChB,QAAI/H;AACF,eAASG,IAAI,GAAGA,KAAKM,GAASN;AAC5B,YAAI,CAACH,EAAM,cAAcG,CAAC,GAAG;AACf,UAAA4H,IAAA5H;AACZ;AAAA,QAAA;AAAA;AAIC,WAAA;AAAA,MACL,GAAGJ;AAAA,MACH,eAAAG;AAAA,MACA,UAAU,EAAE,GAAG6H,GAAW,GAAGF,EAAM;AAAA,MACnC,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,IACtB;AAAA,EAAA;AAEJ;AACO,MAAMK,KAAa,IAAID,GAAiB,EAAE,KAAK;AAEtD,MAAME,WAAwC9E,EAAc;AAAA,EAC1D,OAAOtD,GAAkBqD,GAA+B;AACtD,UAAM,EAAE,QAAAvB,GAAQ,QAAAE,EAAO,IAAIhC,EAAM,eAC3BG,IAAgB;AAAA,MACpB,QAAA2B;AAAA,MACA,QAAAE;AAAA,MACA,MAAMqB,EAAQ;AAAA,MACd,MAAMA,EAAQ;AAAA,IAChB;AACA,WAAIvB,MAAWuB,EAAQ,KAAKrB,MAAWqB,EAAQ,MAC7ClD,EAAc,OAAO,IACrBA,EAAc,OAAO,KAEhB,EAAE,GAAGH,GAAO,eAAAG,EAAc;AAAA,EAAA;AAErC;AACO,MAAMkI,KAAO,IAAID,GAAW,EAAE,KAAK;AAE1C,MAAME,WAAuChF,EAAc;AAAA,EACzD,OAAOtD,GAAkBqD,GAA+B;AAChD,UAAA,EAAE,eAAA7B,MAAkBxB;AACtB,QAAA,EAAE,mBAAAoC,GAAmB,UAAAlC,EAAA,IAAaF;AAQlC,QAPiBoC,KAAAiB,GACjBjB,KAAqBZ,EAAc,SACjBY,IAAA,IACXA,IAAoB,MAC7BA,IAAoBZ,EAAc,SAAS,IAGzCA,EAAc,SAAS,GAAG;AACtB,YAAAa,IAAUb,EAAcY,CAAiB;AAC/C,MAAAlC,IAAWoC,EAAID,CAAO;AAAA,IAAA;AAExB,WAAO,EAAE,GAAGrC,GAAO,eAAAwB,GAAe,mBAAAY,GAAmB,UAAAlC,EAAS;AAAA,EAAA;AAElE;AACO,MAAMqI,KAAS,IAAID,GAAa,EAAE,KAAK;AAE9C,MAAME,WAAoElF,EAAc;AAAA,EACtF,OAAOtD,GAAkBqD,GAA+B;AAClD,QAAA,EAAE,OAAAoF,GAAO,OAAAC,EAAA,IAAUrF;AACvB,UAAM,EAAE,UAAAnD,GAAU,eAAAC,GAAe,eAAesC,EAAa,IAAAzC;AAC7D,IAAI0I,KAAS,SACHA,IAAAxI;AAEV,UAAMD,IAAQwC,EAAS;AACvB,QAAI,CAACxC;AACI,aAAAD;AAEH,UAAA+G,IAAW9G,EAAM,MAAM;AAAA,MAC3B,OAAAyI;AAAA,MACA,OAAAD;AAAA,MACA,UAAU;AAAA,MACV,gBAAgB7I,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAUuI;AAAA,MAAA,CACX;AAAA,MACD,gBAAgB9I,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAUuI;AAAA,MACX,CAAA;AAAA,IAAA,CACF;AACM,WAAA;AAAA,MACL,GAAG1I;AAAA,MACH,GAAGmB,EAAoB4F,GAAU/G,CAAK;AAAA,MACtC,eAAe,EAAE,SAAS+G,EAAS;AAAA,MACnC,UAAU,CAAC,EAAE,eAAetE,QAAe;AACzC,QAAAxC,EAAM,SAAS,SAAS;AAAA,UACtB,aAAayC;AAAA,QAAA,CACd;AAAA,MAAA;AAAA,IAEL;AAAA,EAAA;AAEJ;AACO,MAAMiG,KAAQ,IAAIH,GAAY,EAAE,KAAK;AAE5C,MAAMI,WAAoCtF,EAAc;AAAA,EACtD,OAAOtD,GAAkBqD,GAA+B;;AACtD,UAAM,EAAE,UAAAnD,GAAU,eAAAC,GAAe,eAAesC,EAAa,IAAAzC,GACvDC,IAAQwC,EAAS;AACvB,QAAI,CAACxC;AACI,aAAAD;AAGL,QAAAmG,IAAgBC,EAAWjG,CAAa;AACxC,QAAAgG,EAAc,QAAQ,IAAI;AACtB,YAAA,EAAE,GAAA/F,GAAG,GAAAC,EAAA,IAAMH;AACD,MAAAiG,IAAA,EAAE,KAAK/F,GAAG,MAAMC,GAAG,QAAQD,GAAG,OAAOC,EAAE;AAAA,IAAA;AAEzD,UAAM,EAAE,KAAAwI,GAAK,MAAAC,GAAM,QAAAC,GAAQ,OAAAC,EAAU,IAAA7C,GAC/B8C,IAA2B,CAAC;AAClC,QAAIC,IAAY;AAChB,aAAS9I,IAAIyI,GAAKzI,KAAK2I,GAAQ3I;AACzB,UAAA,CAAAH,EAAM,cAAcG,CAAC;AAGzB,iBAASC,IAAIyI,GAAMzI,KAAK2I,GAAO3I,KAAK;AAC5B,gBAAA8I,IAAOlJ,EAAM,QAAQ,EAAE,GAAAG,GAAG,GAAAC,KAAK,EAAE,YAAY,UAAU,GACvDgC,IAAU+G,GAAI,EAAE,GAAAhJ,GAAG,GAAAC,GAAG;AAC5B,UAAIgJ,EAAW,aAAaF,KAAA,gBAAAA,EAAM,YAAYE,EAAW,KAAK,OAM1DrG,IAAA/C,EAAM,UAAU,EAAE,GAAAG,GAAG,GAAAC,GAAG,MAAxB,gBAAA2C,EAA2B,gBAAe,SAG1CmG,KAAA,gBAAAA,EAAM,UAAS,SACjBF,EAAK5G,CAAO,IAAI,EAAE,OAAO,OAAU,GACnC6G;AAAA,QACF;AAGJ,WAAIA,MAAc,IACTlJ,KAETC,EAAM,OAAO;AAAA,MACX,MAAAgJ;AAAA,MACA,SAAS;AAAA,MACT,UAAU;AAAA,MACV,gBAAgBrJ,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MAAA,CACD;AAAA,MACD,gBAAgBN,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MACD,CAAA;AAAA,IAAA,CACF,GACM;AAAA,MACL,GAAGF;AAAA,MACH,GAAGmB,EAAoBlB,GAAOD,CAAK;AAAA,MACnC,eAAe,EAAE,SAASC,EAAM;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAMqJ,KAAQ,IAAIV,GAAY,EAAE,KAAK;AAE5C,MAAMW,WAAmCjG,EAAc;AAAA,EACrD,OAAOtD,GAAkBqD,GAA+B;AAChD,UAAA,EAAE,eAAeZ,EAAA,IAAazC,GAC9BC,IAAQwC,EAAS;AACvB,QAAI,CAACxC;AACI,aAAAD;AAET,UAAM,EAAE,SAAAwJ,GAAS,UAAAvI,MAAahB,EAAM,KAAK;AACzC,QAAIuJ,KAAW;AACN,aAAAxJ;AAEL,QAAAwJ,EAAQ,eAAevJ,EAAM,IAAI;AAC7B,YAAA,EAAE,UAAAwJ,GAAU,OAAOC,MAAazJ,EAAM,SAAS,kBAAkBuJ,EAAQ,UAAU;AAWrF,aAVJC;AAAA,QACEE,GAAS;AAAA,UACP,GAAGD;AAAA,UACH,GAAGF,EAAQ;AAAA,UACX,eAAe,EAAE,SAASE,EAAS,cAAc,QAAQ;AAAA,QAC1D,CAAA;AAAA,MACH,GACW5I,EAAA4I,EAAS,SAAS,OAAO,GAGhCF,EAAQ,eAAevJ,EAAM,KACxBe,EAAkBhB,GAAOC,GAAOgB,CAAQ,IAE1CjB;AAAA,IAAA;AAEF,WAAA;AAAA,MACL,GAAGA;AAAA,MACH,GAAGD,EAAeC,GAAOC,CAAK;AAAA,MAC9B,GAAGuJ,EAAQ;AAAA,MACX,GAAGrI,EAAoBlB,GAAOD,CAAK;AAAA,MACnC,eAAe,EAAE,SAASC,EAAM;AAAA,MAChC,UAAU,CAACiB,MAAiB;AAC1B,QAAAD,KAAA,QAAAA,EAAWC,IACAJ,EAAAd,EAAM,SAAS,OAAO;AAAA,MAAA;AAAA,IAErC;AAAA,EAAA;AAEJ;AACO,MAAM4J,KAAO,IAAIL,GAAW,EAAE,KAAK;AAE1C,MAAMM,WAAmCvG,EAAc;AAAA,EACrD,OAAOtD,GAAkBqD,GAA+B;AAChD,UAAA,EAAE,eAAeZ,EAAA,IAAazC,GAC9BC,IAAQwC,EAAS;AACvB,QAAIxC,KAAS;AACJ,aAAAD;AAET,UAAM,EAAE,SAAAwJ,GAAS,UAAAzC,GAAU,UAAA9F,EAAS,IAAIhB,EAAM,KAAK;AACnD,QAAIuJ,KAAW;AACN,aAAAxJ;AAEL,QAAAwJ,EAAQ,eAAevJ,EAAM,IAAI;AAC7B,YAAA,EAAE,UAAAwJ,GAAU,OAAOC,MAAazJ,EAAM,SAAS,kBAAkBuJ,EAAQ,UAAU;AAWrF,aAVJC;AAAA,QACEE,GAAS;AAAA,UACP,GAAGD;AAAA,UACH,GAAGF,EAAQ;AAAA,UACX,eAAe,EAAE,SAASE,EAAS,cAAc,QAAQ;AAAA,QAC1D,CAAA;AAAA,MACH,GACW5I,EAAA4I,EAAS,SAAS,OAAO,GAGhCF,EAAQ,eAAevJ,EAAM,KACxBe,EAAkBhB,GAAOC,GAAOgB,CAAQ,IAE1CjB;AAAA,IAAA;AAEF,WAAA;AAAA,MACL,GAAGA;AAAA,MACH,GAAGD,EAAeC,GAAOC,CAAK;AAAA,MAC9B,GAAGuJ,EAAQ;AAAA,MACX,GAAGrI,EAAoBlB,GAAOD,CAAK;AAAA,MACnC,eAAe,EAAE,SAASC,EAAM;AAAA,MAChC,UAAU,CAACiB,MAAiB;AAC1B,QAAAD,KAAA,QAAAA,EAAWC,IACAJ,EAAAd,EAAM,SAAS,OAAO;AAAA,MAAA;AAAA,IAErC;AAAA,EAAA;AAEJ;AACO,MAAM8J,KAAO,IAAID,GAAW,EAAE,KAAK;AAE1C,MAAME,WAQIzG,EAAc;AAAA,EACtB,OAAOtD,GAAkBqD,GAA+B;;AACtD,UAAM,EAAE,UAAA2G,GAAU,QAAAC,GAAQ,QAAAC,GAAQ,SAAAxJ,GAAS,SAAAC,MAAY0C,GACjD,EAAE,UAAAnD,GAAU,eAAeuC,GAAU,YAAA0H,EAAe,IAAAnK,GACpDC,IAAQwC,EAAS;AACvB,QAAIxC,KAAS;AACJ,aAAAD;AAEL,QAAA,EAAE,eAAAG,MAAkBH;AAClB,UAAA,EAAE,GAAAI,GAAG,EAAA,IAAMF;AACjB,QAAI8J,GAAU;AACN,YAAA,CAACI,GAAUC,CAAQ,IAAI;AAAA,QAC3BlK,EAAc,SAAS,KAAKC,IAAID,EAAc;AAAA,QAC9CA,EAAc,SAAS,KAAK,IAAIA,EAAc;AAAA,MAChD,GACM,CAACmK,GAAOC,CAAK,IAAI,CAACH,IAAWH,GAAQI,IAAWH,CAAM;AAC5D,aAAII,IAAQ,KAAK5J,IAAU4J,KAASC,IAAQ,KAAK5J,IAAU4J,IAClDvK,KAGPG,IAAAC,MAAMkK,KAAS,MAAMC,IACjB,EAAE,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,GAAG,IAC7C,EAAE,QAAQnK,GAAG,QAAQ,GAAG,MAAMkK,GAAO,MAAMC,EAAM,GAChD;AAAA,QACL,GAAGvK;AAAA,QACH,eAAAG;AAAA,MACF;AAAA,IAAA;AAEI,UAAA,CAACmK,GAAOC,CAAK,IAAI,CAACnK,IAAI6J,GAAQ,IAAIC,CAAM;AAC9C,QAAII,IAAQ,KAAK5J,IAAU4J,KAASC,IAAQ,KAAK5J,IAAU4J;AAClD,aAAAvK;AAGT,QAAIwK,IAAYF;AACZ,QAAArK,EAAM,cAAcuK,CAAS,GAAG;AAC5B,YAAAC,IAAMR,KAAU,IAAI,IAAI;AAC9B,aAAOO,KAAa,KAAKA,KAAa9J,KAAWT,EAAM,cAAcuK,CAAS;AAC/D,QAAAA,KAAAC;AAEX,UAAAD,IAAY,KAAKA,IAAY9J;AACxB,eAAAV;AAAA,IACT;AAEE,QAAA,EAAE,GAAG0K,GAAW,GAAGC,GAAY,QAAA3D,GAAQ,OAAAC,MAAUjH,EAAM;AAC3D,QAAIiK,IAAS;AACX,eAASW,IAAIxK,GAAGwK,IAAIJ,GAAWI;AAC7B,QAAAF,OAAa1H,IAAA/C,EAAM,QAAQ,EAAE,GAAG2K,GAAG,GAAG,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAA5H,EAAyD,WAAU6H;AAAA,aAEzEZ,IAAS;AAClB,eAASW,IAAIxK,IAAI,GAAGwK,KAAKJ,GAAWI;AAClC,QAAAF,OAAazH,IAAAhD,EAAM,QAAQ,EAAE,GAAG2K,GAAG,GAAG,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAA3H,EAAyD,WAAU4H;AAGpF,QAAIX,IAAS;AACX,eAASU,IAAI,GAAGA,IAAIL,GAAOK;AACzB,QAAAD,OAAcG,IAAA7K,EAAM,QAAQ,EAAE,GAAG,GAAG,GAAG2K,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAAE,EAAyD,UAASC;AAAA,aAEzEb,IAAS;AAClB,eAASU,IAAI,IAAI,GAAGA,KAAKL,GAAOK;AAC9B,QAAAD,OAAcK,IAAA/K,EAAM,QAAQ,EAAE,GAAG,GAAG,GAAG2K,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAAI,EAAyD,UAASD;AAIpF,UAAM5B,IAAOlJ,EAAM,QAAQ,EAAE,GAAGuK,GAAW,GAAGD,EAAS,GAAA,EAAE,YAAY,SAAA,CAAU;AAC/E,WAAAvD,KAASmC,KAAA,gBAAAA,EAAM,WAAU0B,GACzB5D,KAAQkC,KAAA,gBAAAA,EAAM,UAAS4B,GAEXE,EAAAhL,GAAOkK,EAAW,SAAS,EAAE,GAAGK,GAAW,GAAGD,GAAO,GAC1D;AAAA,MACL,GAAGvK;AAAA,MACH,eAAe,EAAE,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,MAAM,GAAG;AAAA,MAC5D,UAAU,EAAE,GAAGwK,GAAW,GAAGD,EAAM;AAAA,MACnC,YAAY,EAAE,GAAGG,GAAW,GAAGC,GAAY,QAAA3D,GAAQ,OAAAC,EAAM;AAAA,IAC3D;AAAA,EAAA;AAEJ;AACO,MAAMiE,KAAQ,IAAInB,GAAY,EAAE,KAAK;AAE5C,MAAMoB,WAOI7H,EAAc;AAAA,EACtB,OAAOtD,GAAkBqD,GAA+B;;AAChD,UAAA,EAAE,SAAA3C,GAAS,SAAAC,EAAA,IAAY0C;AACzB,QAAA,EAAE,QAAA4G,GAAQ,QAAAC,EAAA,IAAW7G;AACzB,UAAM,EAAE,UAAAnD,GAAU,eAAAC,GAAe,eAAesC,GAAU,YAAY2I,MAAiBpL,GACjFC,IAAQwC,EAAS;AACvB,QAAIxC,KAAS;AACJ,aAAAD;AAGL,QAAA,EAAE,GAAG0K,GAAW,GAAGC,GAAY,QAAA3D,GAAQ,OAAAC,MAAUjH,EAAM;AACrD,UAAA,EAAE,GAAAI,GAAG,GAAAC,EAAA,IAAMH,GACXiG,IAAgBC,EAAWjG,CAAa,GACxC,EAAE,KAAA0I,GAAK,MAAAC,GAAM,QAAAC,GAAQ,OAAAC,EAAU,IAAA7C;AACjC,QAAA,CAACmE,GAAOC,CAAK,IAAI,CAACnK,IAAI6J,GAAQ5J,IAAI6J,CAAM;AA8C5C,QA7CII,IAAQzB,KAAOA,MAAQ,OACzBoB,IAASlB,IAASuB,GACVA,IAAAvB,GACJwB,IAAQzB,KACVyB,KACAL,QAEAA,IAASlB,IAAQuB,GACTA,IAAAvB,KAGRsB,IAAQvB,KAAUA,MAAW,OAC/BkB,IAASpB,IAAMyB,GACPA,IAAAzB,GACJ0B,IAAQvB,KACVuB,KACAL,QAEAA,IAASpB,IAAOyB,GACRA,IAAAzB,KAGRyB,IAAQzB,KAAQA,MAAS,OAC3BoB,IAASlB,IAAQuB,GACTA,IAAAvB,GACJsB,IAAQzB,KACVyB,KACAL,QAEAA,IAASlB,IAASuB,GACVA,IAAAvB,KAGRwB,IAAQvB,KAASA,MAAU,OAC7BkB,IAASpB,IAAOyB,GACRA,IAAAzB,GACJwB,IAAQvB,KACVuB,KACAL,QAEAA,IAASpB,IAAMyB,GACPA,IAAAzB,KAIRyB,IAAQ,KAAK5J,IAAU4J,KAASC,IAAQ,KAAK5J,IAAU4J;AAClD,aAAAvK;AAIL,QAAAC,EAAM,cAAcqK,CAAK,GAAG;AACxB,YAAAG,IAAMR,KAAU,IAAI,IAAI,IACxBoB,IAAKxC,MAAQ,KAAKA,IAAM,GACxByC,IAAKvC,MAAW,KAAKA,IAASrI;AACpC,aAAO4J,KAASe,KAAMf,KAASgB,KAAMrL,EAAM,cAAcqK,CAAK;AACnD,QAAAA,KAAAG;AAEX,UAAIH,IAAQe,KAAMf,IAAQgB,KAAMrL,EAAM,cAAcqK,CAAK;AAChD,eAAAtK;AAAA,IACT;AAGF,QAAIiK,IAAS;AACX,eAASW,IAAIxK,GAAGwK,IAAIN,GAAOM;AACzB,QAAAF,OAAa1H,IAAA/C,EAAM,QAAQ,EAAE,GAAG2K,GAAG,GAAG,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAA5H,EAAyD,WAAU6H;AAAA,aAEzEZ,IAAS;AAClB,eAASW,IAAIxK,IAAI,GAAGwK,KAAKN,GAAOM;AAC9B,QAAAF,OAAazH,IAAAhD,EAAM,QAAQ,EAAE,GAAG2K,GAAG,GAAG,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAA3H,EAAyD,WAAU4H;AAGpF,QAAIX,IAAS;AACX,eAASU,IAAIvK,GAAGuK,IAAIL,GAAOK;AACzB,QAAAD,OAAcG,IAAA7K,EAAM,QAAQ,EAAE,GAAG,GAAG,GAAG2K,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAAE,EAAyD,UAASC;AAAA,aAEzEb,IAAS;AAClB,eAASU,IAAIvK,IAAI,GAAGuK,KAAKL,GAAOK;AAC9B,QAAAD,OAAcK,IAAA/K,EAAM,QAAQ,EAAE,GAAG,GAAG,GAAG2K,EAAE,GAAG,EAAE,YAAY,SAAS,CAAC,MAAtD,gBAAAI,EAAyD,UAASD;AAGpF,UAAM5B,IAAOlJ,EAAM,QAAQ,EAAE,GAAGqK,GAAO,GAAGC,EAAS,GAAA,EAAE,YAAY,SAAA,CAAU;AAC3E,WAAAvD,KAASmC,KAAA,gBAAAA,EAAM,WAAU0B,GACzB5D,KAAQkC,KAAA,gBAAAA,EAAM,UAAS4B,GACXE,EAAAhL,GAAOmL,EAAa,SAAS,EAAE,GAAGd,GAAO,GAAGC,GAAO,GACxD;AAAA,MACL,GAAGvK;AAAA,MACH,UAAU,EAAE,GAAGsK,GAAO,GAAGC,EAAM;AAAA,MAC/B,YAAY,EAAE,GAAGG,GAAW,GAAGC,GAAY,QAAA3D,GAAQ,OAAAC,EAAM;AAAA,IAC3D;AAAA,EAAA;AAEJ;AACO,MAAMsE,KAAO,IAAIJ,GAAW,EAAE,KAAK;AAE1C,MAAMK,WAA6ClI,EAAc;AAAA,EAC/D,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,WAAWqD;AAAA,IACb;AAAA,EAAA;AAEJ;AAEO,MAAMoI,KAAe,IAAID,GAAmB,EAAE,KAAK;AAE1D,MAAME,WAAiGpI,EAAc;AAAA,EACnH,OAAOtD,GAAkBqD,GAA+B;AACtD,UAAM,EAAE,SAAA3C,GAAS,GAAAN,GAAG,UAAAuL,EAAa,IAAAtI,GAC3B,EAAE,eAAeZ,GAAU,eAAAtC,GAAe,UAAAD,EAAa,IAAAF,GACvDC,IAAQwC,EAAS;AACvB,WAAIxC,KAAS,OACJD,KAETC,EAAM,WAAW;AAAA,MACf,GAAAG;AAAA,MACA,SAAAM;AAAA,MACA,OAAON;AAAA,MACP,UAAAuL;AAAA,MACA,gBAAgB/L,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MAAA,CACD;AAAA,MACD,gBAAgBN,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MACD,CAAA;AAAA,IAAA,CACF,GACM;AAAA,MACL,GAAGF;AAAA,MACH,eAAe,EAAE,SAASC,EAAM;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAM2L,KAAkB,IAAIF,GAAsB,EAAE,KAAK;AAEhE,MAAMG,WAAiGvI,EAAc;AAAA,EACnH,OAAOtD,GAAkBqD,GAA+B;AACtD,UAAM,EAAE,SAAA3C,GAAS,GAAAN,GAAG,UAAAuL,EAAa,IAAAtI,GAC3B,EAAE,eAAeZ,GAAU,eAAAtC,GAAe,UAAAD,GAAU,WAAA4L,MAAc9L,GAClEC,IAAQwC,EAAS;AACvB,QAAIxC,KAAS;AACJ,aAAAD;AAET,UAAM6G,IAAoB;AAAA,MACxB,GAAG1G;AAAA,MACH,QAAQA,EAAc,SAASO;AAAA,MAC/B,MAAMP,EAAc,OAAOO;AAAA,IAC7B,GACMqL,IAAe,EAAE,GAAG7L,GAAU,GAAGA,EAAS,IAAIQ,EAAQ;AAE5D,WAAAT,EAAM,WAAW;AAAA,MACf,GAAGG,IAAI;AAAA,MACP,SAAAM;AAAA,MACA,OAAON;AAAA,MACP,UAAAuL;AAAA,MACA,gBAAgB/L,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MAAA,CACD;AAAA,MACD,gBAAgBN,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAe4G;AAAA,QACf,UAAUkF;AAAA,MACX,CAAA;AAAA,IAAA,CACF,GACM;AAAA,MACL,GAAG/L;AAAA,MACH,eAAe6G;AAAA,MACf,UAAUkF;AAAA,MACV,eAAe,EAAE,SAAS9L,EAAM;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAM+L,KAAkB,IAAIH,GAAsB,EAAE,KAAK;AAEhE,MAAMI,WAAgG3I,EAAc;AAAA,EAClH,OAAOtD,GAAkBqD,GAA+B;AACtD,UAAM,EAAE,SAAA1C,GAAS,GAAAN,GAAG,UAAAsL,EAAa,IAAAtI,GAC3B,EAAE,eAAeZ,GAAU,eAAAtC,GAAe,UAAAD,GAAU,WAAA4L,MAAc9L,GAClEC,IAAQwC,EAAS;AACvB,WAAIxC,KAAS,OACJD,KAGTC,EAAM,WAAW;AAAA,MACf,GAAAI;AAAA,MACA,SAAAM;AAAA,MACA,OAAON;AAAA,MACP,UAAAsL;AAAA,MACA,gBAAgB/L,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MAAA,CACD;AAAA,MACD,gBAAgBN,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MACD,CAAA;AAAA,IAAA,CACF,GACM;AAAA,MACL,GAAGF;AAAA,MACH,eAAe,EAAE,SAASC,EAAM;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAMiM,KAAiB,IAAID,GAAqB,EAAE,KAAK;AAE9D,MAAME,WAAiG7I,EAAc;AAAA,EACnH,OAAOtD,GAAkBqD,GAA+B;AACtD,UAAM,EAAE,SAAA1C,GAAS,GAAAN,GAAG,UAAAsL,EAAa,IAAAtI,GAC3B,EAAE,eAAeZ,GAAU,eAAAtC,GAAe,UAAAD,EAAa,IAAAF,GACvDC,IAAQwC,EAAS;AACvB,QAAIxC,KAAS;AACJ,aAAAD;AAET,UAAM6G,IAAoB;AAAA,MACxB,GAAG1G;AAAA,MACH,QAAQA,EAAc,SAASQ;AAAA,MAC/B,MAAMR,EAAc,OAAOQ;AAAA,IAC7B,GACMoL,IAAe,EAAE,GAAG7L,GAAU,GAAGA,EAAS,IAAIS,EAAQ;AAE5D,WAAAR,EAAc,UAAUQ,GACxBR,EAAc,QAAQQ,GAEtBV,EAAM,WAAW;AAAA,MACf,GAAGI,IAAI;AAAA,MACP,SAAAM;AAAA,MACA,OAAON;AAAA,MACP,UAAAsL;AAAA,MACA,gBAAgB/L,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MAAA,CACD;AAAA,MACD,gBAAgBN,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAe4G;AAAA,QACf,UAAUkF;AAAA,MACX,CAAA;AAAA,IAAA,CACF,GACM;AAAA,MACL,GAAG/L;AAAA,MACH,eAAe6G;AAAA,MACf,UAAUkF;AAAA,MACV,eAAe,EAAE,SAAS9L,EAAM;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAMmM,KAAkB,IAAID,GAAsB,EAAE,KAAK;AAEhE,MAAME,WAA4F/I,EAAc;AAAA,EAC9G,OAAOtD,GAAkBqD,GAA+B;AACtD,UAAM,EAAE,SAAA3C,GAAS,GAAAN,GAAG,UAAAuL,EAAa,IAAAtI,GAC3B,EAAE,eAAeZ,GAAU,eAAAtC,GAAe,UAAAD,GAAU,WAAA4L,MAAc9L,GAClEC,IAAQwC,EAAS;AACvB,WAAIxC,KAAS,OACJD,KAGTC,EAAM,WAAW;AAAA,MACf,GAAAG;AAAA,MACA,SAAAM;AAAA,MACA,UAAAiL;AAAA,MACA,gBAAgB/L,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,QACA,aAAaF,EAAM;AAAA,MAAA,CACpB;AAAA,MACD,gBAAgBJ,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MACD,CAAA;AAAA,IAAA,CACF,GAEM;AAAA,MACL,GAAGF;AAAA,MACH,eAAe,EAAE,SAASC,EAAM;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAMqM,KAAa,IAAID,GAAiB,EAAE,KAAK;AAEtD,MAAME,WAA4FjJ,EAAc;AAAA,EAC9G,OAAOtD,GAAkBqD,GAA+B;AACtD,UAAM,EAAE,SAAA1C,GAAS,GAAAN,GAAG,UAAAsL,EAAa,IAAAtI,GAC3B,EAAE,eAAeZ,GAAU,eAAAtC,GAAe,UAAAD,GAAU,WAAA4L,MAAc9L,GAClEC,IAAQwC,EAAS;AACvB,WAAIxC,KAAS,OACJD,KAGTC,EAAM,WAAW;AAAA,MACf,GAAAI;AAAA,MACA,SAAAM;AAAA,MACA,UAAAgL;AAAA,MACA,gBAAgB/L,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,QACA,YAAYF,EAAM;AAAA,MAAA,CACnB;AAAA,MACD,gBAAgBJ,EAAkB;AAAA,QAChC,SAASK,EAAM;AAAA,QACf,eAAAE;AAAA,QACA,UAAAD;AAAA,MACD,CAAA;AAAA,IAAA,CACF,GAEM;AAAA,MACL,GAAGF;AAAA,MACH,eAAe,EAAE,SAASC,EAAM;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAMuM,KAAa,IAAID,GAAiB,EAAE,KAAK;AAEtD,MAAME,WAA2EnJ,EAAc;AAAA,EAC7F,OAAOtD,GAAkBqD,GAA+B;AAChD,UAAA,EAAE,GAAAhD,GAAG,WAAAqM,EAAA,IAAcrJ,GACnB,EAAE,eAAeZ,GAAU,eAAAtC,GAAe,UAAAD,EAAa,IAAAF,GACvDC,IAAQwC,EAAS;AACvB,QAAIxC,KAAS;AACJ,aAAAD;AAET,IAAAC,EAAM,SAAS,EAAE,GAAAI,GAAG,WAAAqM,EAAA,CAAW;AACzB,UAAA7M,IAAaD,EAAkB,EAAE,SAASK,EAAM,IAAI,eAAAE,GAAe,UAAAD,GAAU;AAC/E,WAAAD,EAAM,SAAS,gBACXA,EAAA,SAAS,YAAY,iBAAiBJ,GACtCI,EAAA,SAAS,YAAY,iBAAiBJ,IAEvC;AAAA,MACL,GAAGG;AAAA,MACH,eAAe,EAAE,SAASC,EAAM;AAAA,IAClC;AAAA,EAAA;AAEJ;AACO,MAAM0M,KAAW,IAAIF,GAAe,EAAE,KAAK;AAElD,MAAMG,WAA0EtJ,EAAc;AAAA,EAC5F,OAAOtD,GAAkBqD,GAA+B;AAChD,UAAA,EAAE,GAAAhD,GAAG,QAAAwM,EAAA,IAAWxJ,GAChB,EAAE,eAAeZ,GAAU,eAAAtC,GAAe,UAAAD,EAAa,IAAAF,GACvDC,IAAQwC,EAAS;AACvB,QAAIxC,KAAS;AACJ,aAAAD;AAET,IAAAC,EAAM,WAAW,EAAE,GAAAI,GAAG,QAAAwM,EAAA,CAAQ;AACxB,UAAAhN,IAAaD,EAAkB,EAAE,SAASK,EAAM,IAAI,eAAAE,GAAe,UAAAD,GAAU;AAC/E,IAAAD,EAAM,SAAS,gBACXA,EAAA,SAAS,YAAY,iBAAiBJ,GACtCI,EAAA,SAAS,YAAY,iBAAiBJ;AAE9C,QAAIiN,IAAc5M;AAClB,QAAID,EAAM,cAAcC,EAAS,CAAC;AAChC,eAASE,IAAI,GAAGA,KAAKH,EAAM,SAASG;AAClC,YAAI,CAACH,EAAM,cAAcG,CAAC,GAAG;AAC3B,UAAA0M,IAAc,EAAE,GAAA1M,GAAG,GAAGF,EAAS,EAAE;AACjC;AAAA,QAAA;AAAA;AAIC,WAAA;AAAA,MACL,GAAGF;AAAA,MACH,UAAU8M;AAAA,MACV,eAAeA,MAAgB5M,IAAWwC,IAAYvC;AAAA,MACtD,eAAe,EAAE,SAASF,EAAM;AAAA,MAChC,UAAU,CAAC,EAAE,eAAewC,QAAe;AACzC,cAAMsK,IAAItK,EAAS;AACnB,QAAIsK,KACFA,EAAE,SAAS,SAAS;AAAA,UAClB,SAAS;AAAA,UACT,aAAarK;AAAA,QAAA,CACd;AAAA,MACH;AAAA,IAEJ;AAAA,EAAA;AAEJ;AACO,MAAMsK,KAAa,IAAIJ,GAAiB,EAAE,KAAK;AAEtD,MAAMK,WAAgG3J,EAAc;AAAA,EAClH,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,iBAAiBqD;AAAA,IACnB;AAAA,EAAA;AAEJ;AACO,MAAM6J,KAAgB,IAAID,GAAoB,EAAE,KAAK;AAE5D,MAAME,WAA6F7J,EAAc;AAAA,EAC/G,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,cAAcqD;AAAA,IAChB;AAAA,EAAA;AAEJ;AACO,MAAM+J,KAAa,IAAID,GAAiB,EAAE,KAAK;AAEtD,MAAME,WAAmD/J,EAAc;AAAA,EACrE,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,gBAAgBqD;AAAA,IAClB;AAAA,EAAA;AAEJ;AACO,MAAMiK,KAAoB,IAAID,GAAwB,EAAE,KAAK;AAEpE,MAAME,WAAqDjK,EAAc;AAAA,EACvE,OAAOtD,GAAkBqD,GAA+B;AAC/C,WAAA;AAAA,MACL,GAAGrD;AAAA,MACH,GAAGqD;AAAA,IACL;AAAA,EAAA;AAEJ;AACO,MAAMsG,KAAW,IAAI4D,GAAe,EAAE,KAAK,GAErCC,KAAc;AAAA,EACzB,MAAAjI;AAAA,EACA,MAAAE;AAAA,EACA,KAAAE;AAAA,EACA,OAAA0B;AAAA,EACA,QAAAE;AAAA,EACA,QAAAE;AAAA,EACA,QAAAE;AAAA,EACA,YAAAM;AAAA,EACA,YAAAE;AAAA,EACA,MAAAE;AAAA,EACA,QAAAE;AAAA,EACA,OAAAI;AAAA,EACA,OAAAW;AAAA,EACA,MAAAM;AAAA,EACA,MAAAE;AAAA,EACA,OAAAoB;AAAA,EACA,MAAAK;AAAA,EACA,iBAAAK;AAAA,EACA,iBAAAI;AAAA,EACA,gBAAAE;AAAA,EACA,iBAAAE;AAAA,EACA,YAAAE;AAAA,EACA,YAAAE;AAAA,EACA,UAAAG;AAAA,EACA,YAAAK;AACF,GC90CaS,KAAa,MAAM;AAC9B,QAAM,CAACC,GAAIC,CAAK,IAAIC,EAAS,EAAK;AAI9B,SAHJC,EAAU,MAAM;AACd,IAAAF,EAAM,EAAI;AAAA,EACZ,GAAG,EAAE,GACDD,KAAM,OAAO,SAAW,MACnB,EAAE,QAAQ,SAAS,IAErB,EAAE,QAAQ,MAAM,UAAU,KAAK;AACxC,GAeaI,KAAsB,CAAC7M,GAAoC8M,IAAQ,QAAQ;AAChF,QAAAC,IAAoBC,EAAOhN,CAAQ,GACnCiN,IAAWD,EAAe;AAEhC,SAAAJ,EAAU,MAAM;AACd,IAAAG,EAAkB,UAAU/M;AAAA,EAAA,GAC3B,CAACA,CAAQ,CAAC,GAEN,IAAIkN,MAAgB;AAClB,WAAA,aAAaD,EAAS,OAAO,GAC3BA,EAAA,UAAU,OAAO,WAAW,MAAM;AACvB,MAAAF,EAAA,QAAQ,GAAGG,CAAI;AAAA,OAChCJ,CAAK;AAAA,EACV;AACF,GAEaK,KAAU,CAACC,IAAuB,OAAO;AAC9C,QAAA,CAACC,GAAMC,CAAO,IAAIX,EAAmB,MAAMY,GAAWH,CAAK,CAAC,GAC5D,EAAE,UAAAtL,MAAauL;AACrB,SAAAvL,EAAS,cAAckC,IACdlC,EAAA,WAAW,CAAC0L,MAA0B;AAEzC,IADG,OAAA,OAAO1L,GAAU0L,CAAK,GACxB1L,EAAS,SAGd,sBAAsB,MAAMwL,EAAQ,EAAE,UAAAxL,EAAU,CAAA,CAAC;AAAA,EACnD,GACA8K,EAAU,MAAM;AACP,WAAA,OAAO9K,GAAUsL,CAAK;AAAA,EAAA,GAC5B,CAACA,CAAK,CAAC,GACHC;AACT;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,17 @@
|
|
|
1
|
-
export
|
|
2
|
-
export {}
|
|
1
|
+
export { oa2aa, aa2oa, buildInitialCells, buildInitialCellsFromOrigin, zoneToArea, areaToZone, areaToRange, matrixShape, addressesToAreas, addressesToCols, addressesToRows, Time, x2c, c2x, y2r, r2y, p2a, a2p, rh, ch, Registry, createBook, createRegistry, Sheet, toValueMatrix, toValueObject, toValueRows, toValueCols, toCellMatrix, toCellObject, toCellRows, toCellCols, BaseFunction, BaseFunctionAsync, Lexer, FormulaParser, RefEntity, ValueEntity, RangeEntity, FormulaError, ensureString, ensureNumber, ensureBoolean, ensureDate, check, eachMatrix, createBooleanMask, conditionArg, stripMatrix, Policy, ThousandSeparatorPolicyMixin, operations, DEFAULT_HISTORY_LIMIT, Pending, Spilling, } from '@gridsheet/core';
|
|
2
|
+
export type { CSSPropertiesLike, RefLike, MatrixType, CellType, System, Address, AsyncCache, FilterCondition, FilterConditionMethod, FilterConfig, FeedbackType, WriterType, CellsByAddressType, CellsByIdType, SystemsByIdType, ModeType, HeadersType, HistoryType, HistorySortRowsType, PointType, AreaType, ZoneType, EditorEvent, CursorStateType, BookType, BookProps, RegistryProps, TransmitProps, UserSheet, SheetLimits, ToValueMatrixProps, ToValueObjectProps, ToValueRowsProps, ToValueColsProps, ToCellMatrixProps, ToCellObjectProps, ToCellRowsProps, ToCellColsProps, FunctionProps, FunctionArgumentDefinition, FunctionCategory, FunctionMapping, EnsureNumberOptions, EnsureBooleanOptions, PolicyType, AutocompleteOption, PolicyMixinType, RenderProps, SerializeProps, SelectProps, SelectFallbackProps, SerializeForClipboardProps, } from '@gridsheet/core';
|
|
3
|
+
export { GridSheet, createSheetRef, useSheetRef, createStoreRef, useStoreRef } from './components/GridSheet';
|
|
4
|
+
export { updateSheet } from './store/actions';
|
|
5
|
+
export { PluginBase, useInitialPluginContext, usePluginContext } from './components/PluginBase';
|
|
6
|
+
export { MenuItem, MenuDivider } from './components/MenuItem';
|
|
7
|
+
export { useBook } from './lib/hooks';
|
|
8
|
+
export type { Dispatcher } from './store';
|
|
9
|
+
export { CheckboxPolicyMixin } from './policy/checkbox';
|
|
10
|
+
export type { Props, StoreType, SheetHandle, StoreHandle, OptionsType } from './types';
|
|
11
|
+
export { userActions } from './store/actions';
|
|
12
|
+
export { clip, sheet2csv } from './lib/clipboard';
|
|
13
|
+
export { applyers } from './store/applyers';
|
|
14
|
+
export { makeBorder } from './lib/style';
|
|
15
|
+
export type { MenuContext, MenuItemBase, MenuComponentItem, ContextMenuItemDescriptor, RowMenuItemDescriptor, ColMenuItemDescriptor, MenuDividerItem, ContextMenuSectionProps, RowMenuSectionProps, ColMenuSectionProps, } from './lib/menu';
|
|
16
|
+
export { defaultContextMenuDescriptors, defaultRowMenuDescriptors, defaultColMenuDescriptors, registerMenuComponent, } from './lib/menu';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,eAAe,EAEf,IAAI,EAEJ,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,EAAE,EACF,EAAE,EAEF,QAAQ,EACR,UAAU,EACV,cAAc,EAEd,KAAK,EACL,aAAa,EACb,aAAa,EACb,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EAEV,YAAY,EACZ,iBAAiB,EACjB,KAAK,EACL,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,UAAU,EACV,KAAK,EACL,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,WAAW,EAEX,MAAM,EACN,4BAA4B,EAE5B,UAAU,EAEV,qBAAqB,EACrB,OAAO,EACP,QAAQ,GACT,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EAEV,iBAAiB,EACjB,OAAO,EACP,UAAU,EACV,QAAQ,EACR,MAAM,EACN,OAAO,EACP,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,QAAQ,EACR,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,eAAe,EAEf,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,EAEb,SAAS,EACT,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EAEf,aAAa,EACb,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EAEpB,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7G,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEvF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,YAAY,EACV,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,YAAY,CAAC"}
|