@gridsheet/react-dev 3.0.0-rc.5 → 3.0.0-rc.8

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.
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
- import { BookType } from '../../react-core/src/index.ts';
2
+ import { BookType } from '@gridsheet/core';
3
3
  export type DebuggerProps = {
4
4
  book: BookType;
5
5
  intervalMs?: number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Debugger.d.ts","sourceRoot":"","sources":["../src/Debugger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AA6ChD,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAshB5C,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export * from './react-dev/src/index'
2
- export {}
1
+ export { Debugger } from './Debugger';
2
+ export type { DebuggerProps } from './Debugger';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsxs as s, jsx as r } from "react/jsx-runtime";
2
2
  import { useState as L, useEffect as N } from "react";
3
- import { a2p as X, x2c as ee, Lexer as te, FormulaParser as oe, Sheet as re } from "@gridsheet/react-core";
3
+ import { a2p as X, x2c as ee, Lexer as te, FormulaParser as oe, Sheet as re } from "@gridsheet/core";
4
4
  import { Light as Y } from "react-syntax-highlighter";
5
5
  import ne from "react-syntax-highlighter/dist/esm/languages/hljs/json";
6
6
  import ie from "react-syntax-highlighter/dist/esm/styles/hljs/atom-one-light";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/Debugger.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport type { BookType } from '@gridsheet/react-core';\nimport { a2p, x2c, Lexer, FormulaParser, Sheet } from '@gridsheet/react-core';\nimport { Light as SyntaxHighlighter } from 'react-syntax-highlighter';\nimport type { SyntaxHighlighterProps } from 'react-syntax-highlighter';\nimport jsonLang from 'react-syntax-highlighter/dist/esm/languages/hljs/json';\nimport atomOneLight from 'react-syntax-highlighter/dist/esm/styles/hljs/atom-one-light';\nimport tomorrowNight from 'react-syntax-highlighter/dist/esm/styles/hljs/tomorrow-night';\nimport solarizedDark from 'react-syntax-highlighter/dist/esm/styles/hljs/solarized-dark';\nimport solarizedLight from 'react-syntax-highlighter/dist/esm/styles/hljs/solarized-light';\nimport docco from 'react-syntax-highlighter/dist/esm/styles/hljs/docco';\nimport atelierSeasideLight from 'react-syntax-highlighter/dist/esm/styles/hljs/atelier-seaside-light';\nimport atelierHeathLight from 'react-syntax-highlighter/dist/esm/styles/hljs/atelier-heath-light';\n\nSyntaxHighlighter.registerLanguage('json', jsonLang);\n\nconst ss = {\n get: (key: string) => (typeof window !== 'undefined' ? sessionStorage.getItem(key) : null),\n set: (key: string, value: string) => {\n if (typeof window !== 'undefined') {\n sessionStorage.setItem(key, value);\n }\n },\n};\n\ntype HljsStyle = SyntaxHighlighterProps['style'];\n\nconst JsonCode: React.FC<{ data: any; replacer?: (k: string, v: any) => any; theme: HljsStyle }> = ({\n data,\n replacer,\n theme,\n}) => {\n const code = JSON.stringify(data, replacer, 2) ?? '';\n return (\n <SyntaxHighlighter\n language=\"json\"\n style={theme}\n showLineNumbers\n customStyle={{ margin: 0, fontSize: '10px', minHeight: '100%', borderRadius: 0, whiteSpace: 'pre' }}\n codeTagProps={{ style: { display: 'block', whiteSpace: 'pre', fontSize: '10px' } }}\n >\n {code}\n </SyntaxHighlighter>\n );\n};\n\nexport type DebuggerProps = {\n book: BookType;\n intervalMs?: number;\n};\n\nexport const Debugger: React.FC<DebuggerProps> = ({ book, intervalMs = 500 }) => {\n const { registry } = book;\n const [snapshot, setSnapshot] = useState<any>({});\n const [activeTabId, setActiveTabId] = useState<number | null>(null);\n const [topHeight, setTopHeight] = useState<number>(200);\n const [bottomHeight, setBottomHeight] = useState<number>(200);\n const [formulaView, setFormulaView] = useState<'expressions' | 'tokens'>('expressions');\n\n useEffect(() => {\n const savedTop = ss.get('gs-debugger-top-height');\n if (savedTop) {\n setTopHeight(Number(savedTop));\n }\n const savedBottom = ss.get('gs-debugger-bottom-height');\n if (savedBottom) {\n setBottomHeight(Number(savedBottom));\n }\n const savedFormula = ss.get('gs-debugger-formula-view') as 'expressions' | 'tokens';\n if (savedFormula) {\n setFormulaView(savedFormula);\n }\n }, []);\n\n useEffect(() => {\n const updateSnapshot = () => {\n if (!registry) {\n return;\n }\n\n const {\n choosingAddress,\n choosingSheetId,\n editingAddress,\n editingSheetId,\n ready,\n sheetIdsByName,\n sheetHead,\n cellHead,\n paletteBySheetName,\n solvedCaches,\n copyingSheetId,\n copyingZone,\n cutting,\n historyIndex,\n historyLimit,\n histories,\n asyncPending,\n asyncInflight,\n } = registry;\n\n setSnapshot({\n asyncPending,\n asyncInflight,\n ready,\n sheetIdsByName,\n sheetHead,\n cellHead,\n paletteBySheetName,\n solvedCaches,\n choosingAddress,\n choosingSheetId,\n editingAddress,\n editingSheetId,\n copyingSheetId,\n copyingZone,\n cutting,\n historyIndex,\n historyLimit,\n histories,\n });\n };\n\n updateSnapshot();\n\n const intervalId = setInterval(updateSnapshot, intervalMs);\n return () => clearInterval(intervalId);\n }, [registry, intervalMs]);\n\n const sheets = snapshot.sheetIdsByName\n ? Object.entries(snapshot.sheetIdsByName)\n .map(([name, id]) => ({ id: id as number, name }))\n .sort((a, b) => a.id - b.id)\n : [];\n\n useEffect(() => {\n if (activeTabId === null && sheets.length > 0) {\n setActiveTabId(sheets[0].id);\n }\n }, [sheets.length, activeTabId]);\n\n let activeStoreData = null;\n let activeTableData = null;\n\n // Cell data for the currently selected cell (registry.choosingSheetId / choosingAddress)\n let registryCellData = null;\n let registrySystemData = null;\n let registryCellAddress = registry?.choosingAddress || '';\n let registryCellSheetName = '';\n let registryFormulaExpr = null;\n let registryFormulaTokens = null;\n\n if (registry && activeTabId !== null) {\n const { contextsBySheetId } = registry;\n const context = contextsBySheetId[activeTabId];\n\n if (context) {\n activeStoreData = context.store;\n\n const sheet = context.store.sheetReactive.current;\n if (sheet) {\n activeTableData = sheet;\n }\n }\n }\n\n // Resolve cell data for the currently selected cell (registry.choosingSheetId / choosingAddress)\n if (registry && registry.choosingSheetId != null) {\n const { contextsBySheetId } = registry;\n const choosingContext = contextsBySheetId[registry.choosingSheetId];\n\n // Resolve sheet name\n if (registry.sheetIdsByName) {\n const entry = Object.entries(registry.sheetIdsByName).find(([, id]) => id === registry.choosingSheetId);\n if (entry) {\n registryCellSheetName = entry[0];\n }\n }\n\n if (choosingContext) {\n const sheet = choosingContext.store.sheetReactive.current;\n const store = choosingContext.store;\n if (sheet) {\n const rawTable = (sheet as any).__raw__ || sheet;\n const idMatrix = rawTable.idMatrix;\n\n // When a header cell is selected, use y=0 (top header) or x=0 (left header)\n const isTopHeaderSelecting = store.topHeaderSelecting;\n const isLeftHeaderSelecting = store.leftHeaderSelecting;\n const pos = isTopHeaderSelecting\n ? { y: 0, x: store.choosing.x }\n : isLeftHeaderSelecting\n ? { y: store.choosing.y, x: 0 }\n : a2p(registry.choosingAddress);\n\n if (isTopHeaderSelecting) {\n registryCellAddress = `header:${x2c(store.choosing.x)}`;\n } else if (isLeftHeaderSelecting) {\n registryCellAddress = `header:${store.choosing.y}`;\n }\n\n if (pos && idMatrix[pos.y]) {\n const id = idMatrix[pos.y][pos.x];\n if (id) {\n registryCellData = registry.data[id];\n registrySystemData = registry.systems[id] ?? null;\n\n // Parse formula\n const text = registryCellData?.value;\n if (typeof text === 'string' && text.startsWith('=')) {\n try {\n const lexer = new Lexer(text.substring(1));\n lexer.tokenize();\n registryFormulaTokens = lexer.tokens;\n const parser = new FormulaParser(lexer.tokens);\n registryFormulaExpr = parser.build();\n } catch (e) {\n registryFormulaExpr = { error: String(e) };\n }\n }\n }\n }\n }\n }\n }\n\n const baseReplacer = (key: string, value: any) => {\n // Avoid circular refs, noisy internals, and React RefObjects\n if (\n key === 'registry' ||\n key === '__raw__' ||\n (value && typeof value === 'object' && 'current' in value && Object.keys(value).length === 1) // heuristic to skip React ref objects\n ) {\n return undefined;\n }\n if (value instanceof Map) {\n return Object.fromEntries(value.entries());\n }\n if (value instanceof Set) {\n return Array.from(value);\n }\n return value;\n };\n\n // Replace nested Sheet instances with their string representation (for Registry State / Store Data panels)\n const jsonReplacer = (key: string, value: any) => {\n if (value instanceof Sheet) {\n return value.toString();\n }\n return baseReplacer(key, value);\n };\n\n const startDrag = (e: React.MouseEvent) => {\n e.preventDefault();\n const startY = e.clientY;\n const startHeight = topHeight;\n const onMouseMove = (moveEvent: MouseEvent) => {\n const h = Math.max(100, startHeight + moveEvent.clientY - startY);\n setTopHeight(h);\n ss.set('gs-debugger-top-height', String(h));\n };\n const onMouseUp = () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n };\n\n const startDragBottom = (e: React.MouseEvent) => {\n e.preventDefault();\n const startY = e.clientY;\n const startHeight = bottomHeight;\n const onMouseMove = (moveEvent: MouseEvent) => {\n const h = Math.max(100, startHeight + moveEvent.clientY - startY);\n setBottomHeight(h);\n ss.set('gs-debugger-bottom-height', String(h));\n };\n const onMouseUp = () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n };\n\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n fontFamily: 'monospace',\n fontSize: '12px',\n color: '#212529',\n border: '1px solid #dee2e6',\n borderRadius: '6px',\n overflow: 'hidden',\n }}\n >\n {/* Top pane: Registry State | Cell | System | Formula */}\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n height: `${topHeight}px`,\n overflow: 'hidden',\n }}\n >\n {/* Registry State panel */}\n <div\n style={{\n flex: 1,\n borderRight: '1px solid #dee2e6',\n backgroundColor: '#fafafa',\n overflow: 'auto',\n position: 'relative',\n }}\n >\n <div\n style={{\n position: 'sticky',\n top: 0,\n background: '#fafafa',\n zIndex: 1,\n padding: '8px 12px',\n fontWeight: 'bold',\n borderBottom: '2px solid #ccc',\n }}\n >\n Registry State\n </div>\n <JsonCode data={snapshot} replacer={jsonReplacer} theme={atomOneLight} />\n </div>\n\n {/* Registry Cell Value: cell data for registry.choosingSheetId / choosingAddress */}\n <div\n style={{\n flex: 1,\n borderRight: '1px solid #dee2e6',\n overflow: 'auto',\n backgroundColor: '#f0f8f0',\n position: 'relative',\n }}\n >\n <div\n style={{\n position: 'sticky',\n top: 0,\n background: '#f0f8f0',\n zIndex: 1,\n padding: '8px 12px',\n fontWeight: 'bold',\n borderBottom: '2px solid #ccc',\n }}\n >\n Cell: {registryCellSheetName && `'${registryCellSheetName}'!`}\n {registryCellAddress}\n </div>\n {registryCellData ? (\n <JsonCode data={registryCellData} replacer={baseReplacer} theme={atelierSeasideLight} />\n ) : (\n <div style={{ fontStyle: 'italic', color: '#6c757d', padding: '12px' }}>No cell data</div>\n )}\n </div>\n\n {/* System: systems[id] for the choosing cell */}\n <div\n style={{\n flex: 1,\n borderRight: '1px solid #dee2e6',\n overflow: 'auto',\n backgroundColor: '#fdf0f2',\n position: 'relative',\n }}\n >\n <div\n style={{\n position: 'sticky',\n top: 0,\n background: '#fdf0f2',\n zIndex: 1,\n padding: '8px 12px',\n fontWeight: 'bold',\n borderBottom: '2px solid #ccc',\n }}\n >\n System: {registryCellSheetName && `'${registryCellSheetName}'!`}\n {registryCellAddress}\n </div>\n {registrySystemData ? (\n <JsonCode data={registrySystemData} replacer={baseReplacer} theme={atelierHeathLight} />\n ) : (\n <div style={{ fontStyle: 'italic', color: '#6c757d', padding: '12px' }}>No system data</div>\n )}\n </div>\n\n {/* Formula: toggling between Expressions and Tokens */}\n <div\n style={{\n flex: 1,\n overflow: 'auto',\n backgroundColor: formulaView === 'expressions' ? '#fffbf0' : '#f5f0ff',\n position: 'relative',\n }}\n >\n <div\n style={{\n position: 'sticky',\n top: 0,\n background: formulaView === 'expressions' ? '#fffbf0' : '#f5f0ff',\n zIndex: 1,\n padding: '6px 12px',\n fontWeight: 'bold',\n borderBottom: '2px solid #ccc',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n }}\n >\n <span>{formulaView === 'expressions' ? 'Formula Expressions' : 'Formula Tokens'}</span>\n <button\n onClick={() => {\n const next = formulaView === 'expressions' ? 'tokens' : 'expressions';\n setFormulaView(next);\n ss.set('gs-debugger-formula-view', next);\n }}\n style={{\n marginLeft: 'auto',\n fontSize: '11px',\n padding: '2px 8px',\n cursor: 'pointer',\n border: '1px solid #aaa',\n borderRadius: '4px',\n background: '#fff',\n }}\n >\n {formulaView === 'expressions' ? '→ Tokens' : '→ Expressions'}\n </button>\n </div>\n {registryCellData ? (\n <JsonCode\n data={formulaView === 'expressions' ? registryFormulaExpr : registryFormulaTokens}\n replacer={baseReplacer}\n theme={formulaView === 'expressions' ? solarizedLight : docco}\n />\n ) : (\n <div style={{ fontStyle: 'italic', color: '#6c757d', padding: '12px' }}>No cell selected</div>\n )}\n </div>\n </div>\n\n {/* Resizer for top pane */}\n <div\n onMouseDown={startDrag}\n style={{\n height: '6px',\n backgroundColor: '#dee2e6',\n cursor: 'row-resize',\n transition: 'background-color 0.2s',\n zIndex: 10,\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#adb5bd';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = '#dee2e6';\n }}\n />\n\n {/* Sheet tabs */}\n <div\n style={{\n display: 'flex',\n borderBottom: '1px solid #dee2e6',\n borderTop: '1px solid #dee2e6',\n backgroundColor: '#f8f9fa',\n }}\n >\n {sheets.map((sheet) => (\n <div\n key={sheet.id}\n onClick={() => setActiveTabId(sheet.id)}\n style={{\n padding: '8px 16px',\n cursor: 'pointer',\n fontWeight: 'bold',\n borderBottom: activeTabId === sheet.id ? '2px solid #0d6efd' : '2px solid transparent',\n color: activeTabId === sheet.id ? '#0d6efd' : '#495057',\n }}\n >\n {sheet.name} (ID: {sheet.id})\n </div>\n ))}\n {sheets.length === 0 && <div style={{ padding: '8px 16px', color: '#6c757d' }}>No sheets detected</div>}\n </div>\n\n {/* Bottom pane: Sheet Data | Store Data */}\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n height: `${bottomHeight}px`,\n backgroundColor: '#282c34',\n overflow: 'hidden',\n }}\n >\n <div\n style={{\n flex: 1,\n borderRight: '1px solid #3a3a3a',\n overflow: 'auto',\n position: 'relative',\n backgroundColor: '#282c34',\n }}\n >\n <div\n style={{\n position: 'sticky',\n top: 0,\n background: '#21252b',\n zIndex: 1,\n padding: '8px 12px',\n fontWeight: 'bold',\n borderBottom: '2px solid #3a3a3a',\n color: '#abb2bf',\n }}\n >\n Sheet Data\n </div>\n {activeTableData ? (\n <JsonCode data={activeTableData} replacer={baseReplacer} theme={tomorrowNight} />\n ) : (\n <div style={{ fontStyle: 'italic', color: '#6c757d', padding: '12px' }}>Sheet instance not found</div>\n )}\n </div>\n\n <div\n style={{\n flex: 1,\n overflow: 'auto',\n backgroundColor: '#282c34',\n position: 'relative',\n }}\n >\n <div\n style={{\n position: 'sticky',\n top: 0,\n background: '#21252b',\n zIndex: 1,\n padding: '8px 12px',\n fontWeight: 'bold',\n borderBottom: '2px solid #3a3a3a',\n color: '#abb2bf',\n }}\n >\n Store Data\n </div>\n {activeStoreData ? (\n <JsonCode data={activeStoreData} replacer={jsonReplacer} theme={solarizedDark} />\n ) : (\n <div style={{ fontStyle: 'italic', color: '#6c757d', padding: '12px' }}>Store state not found</div>\n )}\n </div>\n </div>\n\n {/* Resizer for bottom pane */}\n <div\n onMouseDown={startDragBottom}\n style={{\n height: '6px',\n backgroundColor: '#dee2e6',\n cursor: 'row-resize',\n transition: 'background-color 0.2s',\n zIndex: 10,\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#adb5bd';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = '#dee2e6';\n }}\n />\n </div>\n );\n};\n"],"names":["SyntaxHighlighter","jsonLang","ss","key","value","JsonCode","data","replacer","theme","code","jsx","Debugger","book","intervalMs","registry","snapshot","setSnapshot","useState","activeTabId","setActiveTabId","topHeight","setTopHeight","bottomHeight","setBottomHeight","formulaView","setFormulaView","useEffect","savedTop","savedBottom","savedFormula","updateSnapshot","choosingAddress","choosingSheetId","editingAddress","editingSheetId","ready","sheetIdsByName","sheetHead","cellHead","paletteBySheetName","solvedCaches","copyingSheetId","copyingZone","cutting","historyIndex","historyLimit","histories","asyncPending","asyncInflight","intervalId","sheets","name","id","a","b","activeStoreData","activeTableData","registryCellData","registrySystemData","registryCellAddress","registryCellSheetName","registryFormulaExpr","registryFormulaTokens","contextsBySheetId","context","sheet","choosingContext","entry","store","idMatrix","isTopHeaderSelecting","isLeftHeaderSelecting","pos","a2p","x2c","text","lexer","Lexer","FormulaParser","e","baseReplacer","jsonReplacer","Sheet","startDrag","startY","startHeight","onMouseMove","moveEvent","h","onMouseUp","startDragBottom","jsxs","atomOneLight","atelierSeasideLight","atelierHeathLight","next","solarizedLight","docco","tomorrowNight","solarizedDark"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/Debugger.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport type { BookType } from '@gridsheet/core';\nimport { a2p, x2c, Lexer, FormulaParser, Sheet } from '@gridsheet/core';\nimport { Light as SyntaxHighlighter } from 'react-syntax-highlighter';\nimport type { SyntaxHighlighterProps } from 'react-syntax-highlighter';\nimport jsonLang from 'react-syntax-highlighter/dist/esm/languages/hljs/json';\nimport atomOneLight from 'react-syntax-highlighter/dist/esm/styles/hljs/atom-one-light';\nimport tomorrowNight from 'react-syntax-highlighter/dist/esm/styles/hljs/tomorrow-night';\nimport solarizedDark from 'react-syntax-highlighter/dist/esm/styles/hljs/solarized-dark';\nimport solarizedLight from 'react-syntax-highlighter/dist/esm/styles/hljs/solarized-light';\nimport docco from 'react-syntax-highlighter/dist/esm/styles/hljs/docco';\nimport atelierSeasideLight from 'react-syntax-highlighter/dist/esm/styles/hljs/atelier-seaside-light';\nimport atelierHeathLight from 'react-syntax-highlighter/dist/esm/styles/hljs/atelier-heath-light';\n\nSyntaxHighlighter.registerLanguage('json', jsonLang);\n\nconst ss = {\n get: (key: string) => (typeof window !== 'undefined' ? sessionStorage.getItem(key) : null),\n set: (key: string, value: string) => {\n if (typeof window !== 'undefined') {\n sessionStorage.setItem(key, value);\n }\n },\n};\n\ntype HljsStyle = SyntaxHighlighterProps['style'];\n\nconst JsonCode: React.FC<{ data: any; replacer?: (k: string, v: any) => any; theme: HljsStyle }> = ({\n data,\n replacer,\n theme,\n}) => {\n const code = JSON.stringify(data, replacer, 2) ?? '';\n return (\n <SyntaxHighlighter\n language=\"json\"\n style={theme}\n showLineNumbers\n customStyle={{ margin: 0, fontSize: '10px', minHeight: '100%', borderRadius: 0, whiteSpace: 'pre' }}\n codeTagProps={{ style: { display: 'block', whiteSpace: 'pre', fontSize: '10px' } }}\n >\n {code}\n </SyntaxHighlighter>\n );\n};\n\nexport type DebuggerProps = {\n book: BookType;\n intervalMs?: number;\n};\n\nexport const Debugger: React.FC<DebuggerProps> = ({ book, intervalMs = 500 }) => {\n const { registry } = book;\n const [snapshot, setSnapshot] = useState<any>({});\n const [activeTabId, setActiveTabId] = useState<number | null>(null);\n const [topHeight, setTopHeight] = useState<number>(200);\n const [bottomHeight, setBottomHeight] = useState<number>(200);\n const [formulaView, setFormulaView] = useState<'expressions' | 'tokens'>('expressions');\n\n useEffect(() => {\n const savedTop = ss.get('gs-debugger-top-height');\n if (savedTop) {\n setTopHeight(Number(savedTop));\n }\n const savedBottom = ss.get('gs-debugger-bottom-height');\n if (savedBottom) {\n setBottomHeight(Number(savedBottom));\n }\n const savedFormula = ss.get('gs-debugger-formula-view') as 'expressions' | 'tokens';\n if (savedFormula) {\n setFormulaView(savedFormula);\n }\n }, []);\n\n useEffect(() => {\n const updateSnapshot = () => {\n if (!registry) {\n return;\n }\n\n const {\n choosingAddress,\n choosingSheetId,\n editingAddress,\n editingSheetId,\n ready,\n sheetIdsByName,\n sheetHead,\n cellHead,\n paletteBySheetName,\n solvedCaches,\n copyingSheetId,\n copyingZone,\n cutting,\n historyIndex,\n historyLimit,\n histories,\n asyncPending,\n asyncInflight,\n } = registry;\n\n setSnapshot({\n asyncPending,\n asyncInflight,\n ready,\n sheetIdsByName,\n sheetHead,\n cellHead,\n paletteBySheetName,\n solvedCaches,\n choosingAddress,\n choosingSheetId,\n editingAddress,\n editingSheetId,\n copyingSheetId,\n copyingZone,\n cutting,\n historyIndex,\n historyLimit,\n histories,\n });\n };\n\n updateSnapshot();\n\n const intervalId = setInterval(updateSnapshot, intervalMs);\n return () => clearInterval(intervalId);\n }, [registry, intervalMs]);\n\n const sheets = snapshot.sheetIdsByName\n ? Object.entries(snapshot.sheetIdsByName)\n .map(([name, id]) => ({ id: id as number, name }))\n .sort((a, b) => a.id - b.id)\n : [];\n\n useEffect(() => {\n if (activeTabId === null && sheets.length > 0) {\n setActiveTabId(sheets[0].id);\n }\n }, [sheets.length, activeTabId]);\n\n let activeStoreData = null;\n let activeTableData = null;\n\n // Cell data for the currently selected cell (registry.choosingSheetId / choosingAddress)\n let registryCellData = null;\n let registrySystemData = null;\n let registryCellAddress = registry?.choosingAddress || '';\n let registryCellSheetName = '';\n let registryFormulaExpr = null;\n let registryFormulaTokens = null;\n\n if (registry && activeTabId !== null) {\n const { contextsBySheetId } = registry;\n const context = contextsBySheetId[activeTabId];\n\n if (context) {\n activeStoreData = context.store;\n\n const sheet = context.store.sheetReactive.current;\n if (sheet) {\n activeTableData = sheet;\n }\n }\n }\n\n // Resolve cell data for the currently selected cell (registry.choosingSheetId / choosingAddress)\n if (registry && registry.choosingSheetId != null) {\n const { contextsBySheetId } = registry;\n const choosingContext = contextsBySheetId[registry.choosingSheetId];\n\n // Resolve sheet name\n if (registry.sheetIdsByName) {\n const entry = Object.entries(registry.sheetIdsByName).find(([, id]) => id === registry.choosingSheetId);\n if (entry) {\n registryCellSheetName = entry[0];\n }\n }\n\n if (choosingContext) {\n const sheet = choosingContext.store.sheetReactive.current;\n const store = choosingContext.store;\n if (sheet) {\n const rawTable = (sheet as any).__raw__ || sheet;\n const idMatrix = rawTable.idMatrix;\n\n // When a header cell is selected, use y=0 (top header) or x=0 (left header)\n const isTopHeaderSelecting = store.topHeaderSelecting;\n const isLeftHeaderSelecting = store.leftHeaderSelecting;\n const pos = isTopHeaderSelecting\n ? { y: 0, x: store.choosing.x }\n : isLeftHeaderSelecting\n ? { y: store.choosing.y, x: 0 }\n : a2p(registry.choosingAddress);\n\n if (isTopHeaderSelecting) {\n registryCellAddress = `header:${x2c(store.choosing.x)}`;\n } else if (isLeftHeaderSelecting) {\n registryCellAddress = `header:${store.choosing.y}`;\n }\n\n if (pos && idMatrix[pos.y]) {\n const id = idMatrix[pos.y][pos.x];\n if (id) {\n registryCellData = registry.data[id];\n registrySystemData = registry.systems[id] ?? null;\n\n // Parse formula\n const text = registryCellData?.value;\n if (typeof text === 'string' && text.startsWith('=')) {\n try {\n const lexer = new Lexer(text.substring(1));\n lexer.tokenize();\n registryFormulaTokens = lexer.tokens;\n const parser = new FormulaParser(lexer.tokens);\n registryFormulaExpr = parser.build();\n } catch (e) {\n registryFormulaExpr = { error: String(e) };\n }\n }\n }\n }\n }\n }\n }\n\n const baseReplacer = (key: string, value: any) => {\n // Avoid circular refs, noisy internals, and React RefObjects\n if (\n key === 'registry' ||\n key === '__raw__' ||\n (value && typeof value === 'object' && 'current' in value && Object.keys(value).length === 1) // heuristic to skip React ref objects\n ) {\n return undefined;\n }\n if (value instanceof Map) {\n return Object.fromEntries(value.entries());\n }\n if (value instanceof Set) {\n return Array.from(value);\n }\n return value;\n };\n\n // Replace nested Sheet instances with their string representation (for Registry State / Store Data panels)\n const jsonReplacer = (key: string, value: any) => {\n if (value instanceof Sheet) {\n return value.toString();\n }\n return baseReplacer(key, value);\n };\n\n const startDrag = (e: React.MouseEvent) => {\n e.preventDefault();\n const startY = e.clientY;\n const startHeight = topHeight;\n const onMouseMove = (moveEvent: MouseEvent) => {\n const h = Math.max(100, startHeight + moveEvent.clientY - startY);\n setTopHeight(h);\n ss.set('gs-debugger-top-height', String(h));\n };\n const onMouseUp = () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n };\n\n const startDragBottom = (e: React.MouseEvent) => {\n e.preventDefault();\n const startY = e.clientY;\n const startHeight = bottomHeight;\n const onMouseMove = (moveEvent: MouseEvent) => {\n const h = Math.max(100, startHeight + moveEvent.clientY - startY);\n setBottomHeight(h);\n ss.set('gs-debugger-bottom-height', String(h));\n };\n const onMouseUp = () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n };\n\n return (\n <div\n style={{\n display: 'flex',\n flexDirection: 'column',\n fontFamily: 'monospace',\n fontSize: '12px',\n color: '#212529',\n border: '1px solid #dee2e6',\n borderRadius: '6px',\n overflow: 'hidden',\n }}\n >\n {/* Top pane: Registry State | Cell | System | Formula */}\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n height: `${topHeight}px`,\n overflow: 'hidden',\n }}\n >\n {/* Registry State panel */}\n <div\n style={{\n flex: 1,\n borderRight: '1px solid #dee2e6',\n backgroundColor: '#fafafa',\n overflow: 'auto',\n position: 'relative',\n }}\n >\n <div\n style={{\n position: 'sticky',\n top: 0,\n background: '#fafafa',\n zIndex: 1,\n padding: '8px 12px',\n fontWeight: 'bold',\n borderBottom: '2px solid #ccc',\n }}\n >\n Registry State\n </div>\n <JsonCode data={snapshot} replacer={jsonReplacer} theme={atomOneLight} />\n </div>\n\n {/* Registry Cell Value: cell data for registry.choosingSheetId / choosingAddress */}\n <div\n style={{\n flex: 1,\n borderRight: '1px solid #dee2e6',\n overflow: 'auto',\n backgroundColor: '#f0f8f0',\n position: 'relative',\n }}\n >\n <div\n style={{\n position: 'sticky',\n top: 0,\n background: '#f0f8f0',\n zIndex: 1,\n padding: '8px 12px',\n fontWeight: 'bold',\n borderBottom: '2px solid #ccc',\n }}\n >\n Cell: {registryCellSheetName && `'${registryCellSheetName}'!`}\n {registryCellAddress}\n </div>\n {registryCellData ? (\n <JsonCode data={registryCellData} replacer={baseReplacer} theme={atelierSeasideLight} />\n ) : (\n <div style={{ fontStyle: 'italic', color: '#6c757d', padding: '12px' }}>No cell data</div>\n )}\n </div>\n\n {/* System: systems[id] for the choosing cell */}\n <div\n style={{\n flex: 1,\n borderRight: '1px solid #dee2e6',\n overflow: 'auto',\n backgroundColor: '#fdf0f2',\n position: 'relative',\n }}\n >\n <div\n style={{\n position: 'sticky',\n top: 0,\n background: '#fdf0f2',\n zIndex: 1,\n padding: '8px 12px',\n fontWeight: 'bold',\n borderBottom: '2px solid #ccc',\n }}\n >\n System: {registryCellSheetName && `'${registryCellSheetName}'!`}\n {registryCellAddress}\n </div>\n {registrySystemData ? (\n <JsonCode data={registrySystemData} replacer={baseReplacer} theme={atelierHeathLight} />\n ) : (\n <div style={{ fontStyle: 'italic', color: '#6c757d', padding: '12px' }}>No system data</div>\n )}\n </div>\n\n {/* Formula: toggling between Expressions and Tokens */}\n <div\n style={{\n flex: 1,\n overflow: 'auto',\n backgroundColor: formulaView === 'expressions' ? '#fffbf0' : '#f5f0ff',\n position: 'relative',\n }}\n >\n <div\n style={{\n position: 'sticky',\n top: 0,\n background: formulaView === 'expressions' ? '#fffbf0' : '#f5f0ff',\n zIndex: 1,\n padding: '6px 12px',\n fontWeight: 'bold',\n borderBottom: '2px solid #ccc',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n }}\n >\n <span>{formulaView === 'expressions' ? 'Formula Expressions' : 'Formula Tokens'}</span>\n <button\n onClick={() => {\n const next = formulaView === 'expressions' ? 'tokens' : 'expressions';\n setFormulaView(next);\n ss.set('gs-debugger-formula-view', next);\n }}\n style={{\n marginLeft: 'auto',\n fontSize: '11px',\n padding: '2px 8px',\n cursor: 'pointer',\n border: '1px solid #aaa',\n borderRadius: '4px',\n background: '#fff',\n }}\n >\n {formulaView === 'expressions' ? '→ Tokens' : '→ Expressions'}\n </button>\n </div>\n {registryCellData ? (\n <JsonCode\n data={formulaView === 'expressions' ? registryFormulaExpr : registryFormulaTokens}\n replacer={baseReplacer}\n theme={formulaView === 'expressions' ? solarizedLight : docco}\n />\n ) : (\n <div style={{ fontStyle: 'italic', color: '#6c757d', padding: '12px' }}>No cell selected</div>\n )}\n </div>\n </div>\n\n {/* Resizer for top pane */}\n <div\n onMouseDown={startDrag}\n style={{\n height: '6px',\n backgroundColor: '#dee2e6',\n cursor: 'row-resize',\n transition: 'background-color 0.2s',\n zIndex: 10,\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#adb5bd';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = '#dee2e6';\n }}\n />\n\n {/* Sheet tabs */}\n <div\n style={{\n display: 'flex',\n borderBottom: '1px solid #dee2e6',\n borderTop: '1px solid #dee2e6',\n backgroundColor: '#f8f9fa',\n }}\n >\n {sheets.map((sheet) => (\n <div\n key={sheet.id}\n onClick={() => setActiveTabId(sheet.id)}\n style={{\n padding: '8px 16px',\n cursor: 'pointer',\n fontWeight: 'bold',\n borderBottom: activeTabId === sheet.id ? '2px solid #0d6efd' : '2px solid transparent',\n color: activeTabId === sheet.id ? '#0d6efd' : '#495057',\n }}\n >\n {sheet.name} (ID: {sheet.id})\n </div>\n ))}\n {sheets.length === 0 && <div style={{ padding: '8px 16px', color: '#6c757d' }}>No sheets detected</div>}\n </div>\n\n {/* Bottom pane: Sheet Data | Store Data */}\n <div\n style={{\n display: 'flex',\n flexDirection: 'row',\n height: `${bottomHeight}px`,\n backgroundColor: '#282c34',\n overflow: 'hidden',\n }}\n >\n <div\n style={{\n flex: 1,\n borderRight: '1px solid #3a3a3a',\n overflow: 'auto',\n position: 'relative',\n backgroundColor: '#282c34',\n }}\n >\n <div\n style={{\n position: 'sticky',\n top: 0,\n background: '#21252b',\n zIndex: 1,\n padding: '8px 12px',\n fontWeight: 'bold',\n borderBottom: '2px solid #3a3a3a',\n color: '#abb2bf',\n }}\n >\n Sheet Data\n </div>\n {activeTableData ? (\n <JsonCode data={activeTableData} replacer={baseReplacer} theme={tomorrowNight} />\n ) : (\n <div style={{ fontStyle: 'italic', color: '#6c757d', padding: '12px' }}>Sheet instance not found</div>\n )}\n </div>\n\n <div\n style={{\n flex: 1,\n overflow: 'auto',\n backgroundColor: '#282c34',\n position: 'relative',\n }}\n >\n <div\n style={{\n position: 'sticky',\n top: 0,\n background: '#21252b',\n zIndex: 1,\n padding: '8px 12px',\n fontWeight: 'bold',\n borderBottom: '2px solid #3a3a3a',\n color: '#abb2bf',\n }}\n >\n Store Data\n </div>\n {activeStoreData ? (\n <JsonCode data={activeStoreData} replacer={jsonReplacer} theme={solarizedDark} />\n ) : (\n <div style={{ fontStyle: 'italic', color: '#6c757d', padding: '12px' }}>Store state not found</div>\n )}\n </div>\n </div>\n\n {/* Resizer for bottom pane */}\n <div\n onMouseDown={startDragBottom}\n style={{\n height: '6px',\n backgroundColor: '#dee2e6',\n cursor: 'row-resize',\n transition: 'background-color 0.2s',\n zIndex: 10,\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#adb5bd';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = '#dee2e6';\n }}\n />\n </div>\n );\n};\n"],"names":["SyntaxHighlighter","jsonLang","ss","key","value","JsonCode","data","replacer","theme","code","jsx","Debugger","book","intervalMs","registry","snapshot","setSnapshot","useState","activeTabId","setActiveTabId","topHeight","setTopHeight","bottomHeight","setBottomHeight","formulaView","setFormulaView","useEffect","savedTop","savedBottom","savedFormula","updateSnapshot","choosingAddress","choosingSheetId","editingAddress","editingSheetId","ready","sheetIdsByName","sheetHead","cellHead","paletteBySheetName","solvedCaches","copyingSheetId","copyingZone","cutting","historyIndex","historyLimit","histories","asyncPending","asyncInflight","intervalId","sheets","name","id","a","b","activeStoreData","activeTableData","registryCellData","registrySystemData","registryCellAddress","registryCellSheetName","registryFormulaExpr","registryFormulaTokens","contextsBySheetId","context","sheet","choosingContext","entry","store","idMatrix","isTopHeaderSelecting","isLeftHeaderSelecting","pos","a2p","x2c","text","lexer","Lexer","FormulaParser","e","baseReplacer","jsonReplacer","Sheet","startDrag","startY","startHeight","onMouseMove","moveEvent","h","onMouseUp","startDragBottom","jsxs","atomOneLight","atelierSeasideLight","atelierHeathLight","next","solarizedLight","docco","tomorrowNight","solarizedDark"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gridsheet/react-dev",
3
- "version": "3.0.0-rc.5",
3
+ "version": "3.0.0-rc.8",
4
4
  "description": "Development tools for GridSheet",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -34,11 +34,12 @@
34
34
  "homepage": "https://gridsheet.walkframe.com/",
35
35
  "packageManager": "pnpm@10.6.5",
36
36
  "peerDependencies": {
37
- "@gridsheet/react-core": ">=3.0.0-rc.5",
37
+ "@gridsheet/core": ">=3.0.0-rc.8",
38
38
  "react": ">=16.9.0",
39
39
  "react-dom": ">=16.9.0"
40
40
  },
41
41
  "devDependencies": {
42
+ "@gridsheet/core": "workspace:*",
42
43
  "@types/react": "^16.9.24",
43
44
  "@types/react-dom": "^16.9.24",
44
45
  "@vitejs/plugin-react": "^4.3.4",
@@ -1 +0,0 @@
1
- {"version":3,"file":"Debugger.d.ts","sourceRoot":"","sources":["../../../src/Debugger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AA6CtD,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAshB5C,CAAC"}
@@ -1,3 +0,0 @@
1
- export { Debugger } from './Debugger';
2
- export type { DebuggerProps } from './Debugger';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}