Signed-off-by: Jess Frazelle <github@jessfraz.com> clear scene Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> cleanups Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> delete unused shit Signed-off-by: Jess Frazelle <github@jessfraz.com> add comments Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> fix linter Signed-off-by: Jess Frazelle <github@jessfraz.com> format moved to plugin Signed-off-by: Jess Frazelle <github@jessfraz.com> arc the fs Signed-off-by: Jess Frazelle <github@jessfraz.com> update units Signed-off-by: Jess Frazelle <github@jessfraz.com> fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> tests for folding range Signed-off-by: Jess Frazelle <github@jessfraz.com> start of folding Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> get rid of old re-execute Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) lint Signed-off-by: Jess Frazelle <github@jessfraz.com> fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> test for recast bug fixed Signed-off-by: Jess Frazelle <github@jessfraz.com> A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> udpates Signed-off-by: Jess Frazelle <github@jessfraz.com> fix rust test Signed-off-by: Jess Frazelle <github@jessfraz.com> A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) updates Signed-off-by: Jess Frazelle <github@jessfraz.com> fix Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) recreate the planes Signed-off-by: Jess Frazelle <github@jessfraz.com> console Signed-off-by: Jess Frazelle <github@jessfraz.com> A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) get rid of unnessary executions Signed-off-by: Jess Frazelle <github@jessfraz.com> add test Signed-off-by: Jess Frazelle <github@jessfraz.com> add test Signed-off-by: Jess Frazelle <github@jessfraz.com> get rid of unnessary executions Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> fix race on engine execute Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> better naming; Signed-off-by: Jess Frazelle <github@jessfraz.com> fix planes Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> errors pane Signed-off-by: Jess Frazelle <github@jessfraz.com> add errors for tokenizer Signed-off-by: Jess Frazelle <github@jessfraz.com> fix docs Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> fix tests Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> planes in engine Signed-off-by: Jess Frazelle <github@jessfraz.com> use the default planes Signed-off-by: Jess Frazelle <github@jessfraz.com> better size Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> fix tests Signed-off-by: Jess Frazelle <github@jessfraz.com> ffix load local storage Signed-off-by: Jess Frazelle <github@jessfraz.com> fix Signed-off-by: Jess Frazelle <github@jessfraz.com> dont wait for execute on exit Signed-off-by: Jess Frazelle <github@jessfraz.com> A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) add back in bs Signed-off-by: Jess Frazelle <github@jessfraz.com> Revert "dont wait for execute on exit" This reverts commit efcaca150ae589ba6ac293765b8302d0fd0c3bf8. A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) updates Signed-off-by: Jess Frazelle <github@jessfraz.com> A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> add endpoint for setcanexecute Signed-off-by: Jess Frazelle <github@jessfraz.com> A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) fixed tests Signed-off-by: Jess Frazelle <github@jessfraz.com> fix tests Signed-off-by: Jess Frazelle <github@jessfraz.com> A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) updates Signed-off-by: Jess Frazelle <github@jessfraz.com> add back in debounce for now Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> updates Signed-off-by: Jess Frazelle <github@jessfraz.com> better debounce Signed-off-by: Jess Frazelle <github@jessfraz.com> A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) updates Signed-off-by: Jess Frazelle <github@jessfraz.com> Bump syn from 2.0.58 to 2.0.59 in /src/wasm-lib (#2106) Bumps [syn](https://github.com/dtolnay/syn) from 2.0.58 to 2.0.59. - [Release notes](https://github.com/dtolnay/syn/releases) - [Commits](https://github.com/dtolnay/syn/compare/2.0.58...2.0.59) --- updated-dependencies: - dependency-name: syn dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) updates Signed-off-by: Jess Frazelle <github@jessfraz.com> A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) mepty A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) empty updates Signed-off-by: Jess Frazelle <github@jessfraz.com> Bump vitest from 1.4.0 to 1.5.0 (#2111) Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 1.4.0 to 1.5.0. - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v1.5.0/packages/vitest) --- updated-dependencies: - dependency-name: vitest dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Bump @testing-library/react from 15.0.1 to 15.0.2 (#2112) Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 15.0.1 to 15.0.2. - [Release notes](https://github.com/testing-library/react-testing-library/releases) - [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/react-testing-library/compare/v15.0.1...v15.0.2) --- updated-dependencies: - dependency-name: "@testing-library/react" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Bump @wdio/mocha-framework from 8.35.0 to 8.36.0 (#2110) Bumps [@wdio/mocha-framework](https://github.com/webdriverio/webdriverio/tree/HEAD/packages/wdio-mocha-framework) from 8.35.0 to 8.36.0. - [Release notes](https://github.com/webdriverio/webdriverio/releases) - [Changelog](https://github.com/webdriverio/webdriverio/blob/main/CHANGELOG.md) - [Commits](https://github.com/webdriverio/webdriverio/commits/v8.36.0/packages/wdio-mocha-framework) --- updated-dependencies: - dependency-name: "@wdio/mocha-framework" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> A snapshot a day keeps the bugs away! 📷🐛 (OS: ubuntu) empty updates Signed-off-by: Jess Frazelle <github@jessfraz.com> deferrer Signed-off-by: Jess Frazelle <github@jessfraz.com>
230 lines
6.3 KiB
TypeScript
230 lines
6.3 KiB
TypeScript
import { create } from 'zustand'
|
|
import { persist } from 'zustand/middleware'
|
|
import { addLineHighlight, EditorView } from './editor/highlightextension'
|
|
import {
|
|
Program,
|
|
_executor,
|
|
ProgramMemory,
|
|
programMemoryInit,
|
|
} from './lang/wasm'
|
|
import { Selection } from 'lib/selections'
|
|
import { enginelessExecutor } from './lib/testHelpers'
|
|
import { EngineCommandManager } from './lang/std/engineConnection'
|
|
import { KCLError } from './lang/errors'
|
|
|
|
export type ToolTip =
|
|
| 'lineTo'
|
|
| 'line'
|
|
| 'angledLine'
|
|
| 'angledLineOfXLength'
|
|
| 'angledLineOfYLength'
|
|
| 'angledLineToX'
|
|
| 'angledLineToY'
|
|
| 'xLine'
|
|
| 'yLine'
|
|
| 'xLineTo'
|
|
| 'yLineTo'
|
|
| 'angledLineThatIntersects'
|
|
| 'tangentialArcTo'
|
|
|
|
export const toolTips = [
|
|
'sketch_line',
|
|
'move',
|
|
// original tooltips
|
|
'line',
|
|
'lineTo',
|
|
'angledLine',
|
|
'angledLineOfXLength',
|
|
'angledLineOfYLength',
|
|
'angledLineToX',
|
|
'angledLineToY',
|
|
'xLine',
|
|
'yLine',
|
|
'xLineTo',
|
|
'yLineTo',
|
|
'angledLineThatIntersects',
|
|
'tangentialArcTo',
|
|
] as any as ToolTip[]
|
|
|
|
export type PaneType =
|
|
| 'code'
|
|
| 'variables'
|
|
| 'debug'
|
|
| 'kclErrors'
|
|
| 'logs'
|
|
| 'lspMessages'
|
|
|
|
export interface StoreState {
|
|
editorView: EditorView | null
|
|
setEditorView: (editorView: EditorView) => void
|
|
highlightRange: [number, number]
|
|
setHighlightRange: (range: Selection['range']) => void
|
|
isShiftDown: boolean
|
|
setIsShiftDown: (isShiftDown: boolean) => void
|
|
mediaStream?: MediaStream
|
|
setMediaStream: (mediaStream: MediaStream) => void
|
|
isStreamReady: boolean
|
|
setIsStreamReady: (isStreamReady: boolean) => void
|
|
isKclLspServerReady: boolean
|
|
isCopilotLspServerReady: boolean
|
|
setIsKclLspServerReady: (isKclLspServerReady: boolean) => void
|
|
setIsCopilotLspServerReady: (isCopilotLspServerReady: boolean) => void
|
|
buttonDownInStream: number | undefined
|
|
setButtonDownInStream: (buttonDownInStream: number | undefined) => void
|
|
didDragInStream: boolean
|
|
setDidDragInStream: (didDragInStream: boolean) => void
|
|
fileId: string
|
|
setFileId: (fileId: string) => void
|
|
streamDimensions: { streamWidth: number; streamHeight: number }
|
|
setStreamDimensions: (dimensions: {
|
|
streamWidth: number
|
|
streamHeight: number
|
|
}) => void
|
|
setHtmlRef: (ref: React.RefObject<HTMLDivElement>) => void
|
|
htmlRef: React.RefObject<HTMLDivElement> | null
|
|
|
|
showHomeMenu: boolean
|
|
setHomeShowMenu: (showMenu: boolean) => void
|
|
openPanes: PaneType[]
|
|
setOpenPanes: (panes: PaneType[]) => void
|
|
homeMenuItems: {
|
|
name: string
|
|
path: string
|
|
}[]
|
|
setHomeMenuItems: (items: { name: string; path: string }[]) => void
|
|
lastCodeMirrorSelectionUpdatedFromScene: number
|
|
setLastCodeMirrorSelectionUpdatedFromScene: (time: number) => void
|
|
}
|
|
|
|
export const useStore = create<StoreState>()(
|
|
persist(
|
|
(set, get) => {
|
|
return {
|
|
editorView: null,
|
|
setEditorView: (editorView) => {
|
|
set({ editorView })
|
|
},
|
|
highlightRange: [0, 0],
|
|
setHighlightRange: (selection) => {
|
|
set({ highlightRange: selection })
|
|
const editorView = get().editorView
|
|
const safeEnd = Math.min(
|
|
selection[1],
|
|
editorView?.state.doc.length || selection[1]
|
|
)
|
|
if (editorView) {
|
|
editorView.dispatch({
|
|
effects: addLineHighlight.of([selection[0], safeEnd]),
|
|
})
|
|
}
|
|
},
|
|
isShiftDown: false,
|
|
setIsShiftDown: (isShiftDown) => set({ isShiftDown }),
|
|
setMediaStream: (mediaStream) => set({ mediaStream }),
|
|
isStreamReady: false,
|
|
setIsStreamReady: (isStreamReady) => set({ isStreamReady }),
|
|
isKclLspServerReady: false,
|
|
isCopilotLspServerReady: false,
|
|
setIsKclLspServerReady: (isKclLspServerReady) =>
|
|
set({ isKclLspServerReady }),
|
|
setIsCopilotLspServerReady: (isCopilotLspServerReady) =>
|
|
set({ isCopilotLspServerReady }),
|
|
buttonDownInStream: undefined,
|
|
setButtonDownInStream: (buttonDownInStream) => {
|
|
set({ buttonDownInStream })
|
|
},
|
|
setHtmlRef: (htmlRef) => {
|
|
set({ htmlRef })
|
|
},
|
|
htmlRef: null,
|
|
didDragInStream: false,
|
|
setDidDragInStream: (didDragInStream) => {
|
|
set({ didDragInStream })
|
|
},
|
|
// For stream event handling
|
|
fileId: '',
|
|
setFileId: (fileId) => set({ fileId }),
|
|
streamDimensions: { streamWidth: 1280, streamHeight: 720 },
|
|
setStreamDimensions: (streamDimensions) => {
|
|
set({ streamDimensions })
|
|
},
|
|
|
|
// tauri specific app settings
|
|
defaultDir: {
|
|
dir: '',
|
|
},
|
|
openPanes: ['code'],
|
|
setOpenPanes: (openPanes) => set({ openPanes }),
|
|
showHomeMenu: true,
|
|
setHomeShowMenu: (showHomeMenu) => set({ showHomeMenu }),
|
|
homeMenuItems: [],
|
|
setHomeMenuItems: (homeMenuItems) => set({ homeMenuItems }),
|
|
lastCodeMirrorSelectionUpdatedFromScene: Date.now(),
|
|
setLastCodeMirrorSelectionUpdatedFromScene: (time) =>
|
|
set({ lastCodeMirrorSelectionUpdatedFromScene: time }),
|
|
}
|
|
},
|
|
{
|
|
name: 'store',
|
|
partialize: (state) =>
|
|
Object.fromEntries(
|
|
Object.entries(state).filter(([key]) => ['openPanes'].includes(key))
|
|
),
|
|
}
|
|
)
|
|
)
|
|
|
|
export async function executeAst({
|
|
ast,
|
|
engineCommandManager,
|
|
useFakeExecutor = false,
|
|
programMemoryOverride,
|
|
}: {
|
|
ast: Program
|
|
engineCommandManager: EngineCommandManager
|
|
useFakeExecutor?: boolean
|
|
programMemoryOverride?: ProgramMemory
|
|
}): Promise<{
|
|
logs: string[]
|
|
errors: KCLError[]
|
|
programMemory: ProgramMemory
|
|
}> {
|
|
try {
|
|
if (!useFakeExecutor) {
|
|
engineCommandManager.endSession()
|
|
engineCommandManager.startNewSession()
|
|
}
|
|
const programMemory = await (useFakeExecutor
|
|
? enginelessExecutor(ast, programMemoryOverride || programMemoryInit())
|
|
: _executor(ast, programMemoryInit(), engineCommandManager, false))
|
|
|
|
await engineCommandManager.waitForAllCommands()
|
|
return {
|
|
logs: [],
|
|
errors: [],
|
|
programMemory,
|
|
}
|
|
} catch (e: any) {
|
|
if (e instanceof KCLError) {
|
|
return {
|
|
errors: [e],
|
|
logs: [],
|
|
programMemory: {
|
|
root: {},
|
|
return: null,
|
|
},
|
|
}
|
|
} else {
|
|
console.log(e)
|
|
return {
|
|
logs: [e],
|
|
errors: [],
|
|
programMemory: {
|
|
root: {},
|
|
return: null,
|
|
},
|
|
}
|
|
}
|
|
}
|
|
}
|