Add units as inline annotation on file creation
This commit is contained in:
@ -31,6 +31,9 @@ import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext'
|
|||||||
import { markOnce } from 'lib/performance'
|
import { markOnce } from 'lib/performance'
|
||||||
import { commandBarActor } from 'machines/commandBarMachine'
|
import { commandBarActor } from 'machines/commandBarMachine'
|
||||||
import { useToken } from 'machines/appMachine'
|
import { useToken } from 'machines/appMachine'
|
||||||
|
import { unit } from '@kittycad/lib/dist/types/src'
|
||||||
|
import { changeKclSettings, unitLengthToUnitLen } from 'lang/wasm'
|
||||||
|
import { err } from 'lib/trap'
|
||||||
|
|
||||||
type MachineContext<T extends AnyStateMachine> = {
|
type MachineContext<T extends AnyStateMachine> = {
|
||||||
state: StateFrom<T>
|
state: StateFrom<T>
|
||||||
@ -96,8 +99,8 @@ export const FileMachineProvider = ({
|
|||||||
navigate(
|
navigate(
|
||||||
`..${PATHS.FILE}/${encodeURIComponent(
|
`..${PATHS.FILE}/${encodeURIComponent(
|
||||||
context.selectedDirectory +
|
context.selectedDirectory +
|
||||||
window.electron.path.sep +
|
window.electron.path.sep +
|
||||||
event.output.name
|
event.output.name
|
||||||
)}`
|
)}`
|
||||||
)
|
)
|
||||||
} else if (
|
} else if (
|
||||||
@ -159,7 +162,12 @@ export const FileMachineProvider = ({
|
|||||||
createdPath
|
createdPath
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
await window.electron.writeFile(createdPath, input.content ?? '')
|
const codeToWrite = changeKclSettings(input.content ?? '', {
|
||||||
|
defaultLengthUnits: unitLengthToUnitLen(settings.context.modeling.defaultUnit.current),
|
||||||
|
defaultAngleUnits: { type: 'Degrees' },
|
||||||
|
})
|
||||||
|
if (err(codeToWrite)) return Promise.reject(codeToWrite)
|
||||||
|
await window.electron.writeFile(createdPath, codeToWrite)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,7 +196,13 @@ export const FileMachineProvider = ({
|
|||||||
})
|
})
|
||||||
createdName = name
|
createdName = name
|
||||||
createdPath = path
|
createdPath = path
|
||||||
await window.electron.writeFile(createdPath, input.content ?? '')
|
|
||||||
|
const codeToWrite = changeKclSettings(input.content ?? '', {
|
||||||
|
defaultLengthUnits: unitLengthToUnitLen(settings.context.modeling.defaultUnit.current),
|
||||||
|
defaultAngleUnits: { type: 'Degrees' },
|
||||||
|
})
|
||||||
|
if (err(codeToWrite)) return Promise.reject(codeToWrite)
|
||||||
|
await window.electron.writeFile(createdPath, codeToWrite)
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -302,9 +316,8 @@ export const FileMachineProvider = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
message: `Successfully deleted ${isDir ? 'folder' : 'file'} "${
|
message: `Successfully deleted ${isDir ? 'folder' : 'file'} "${input.name
|
||||||
input.name
|
}"`,
|
||||||
}"`,
|
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
@ -32,6 +32,8 @@ import {
|
|||||||
} from 'lib/constants'
|
} from 'lib/constants'
|
||||||
import { codeManager, kclManager } from 'lib/singletons'
|
import { codeManager, kclManager } from 'lib/singletons'
|
||||||
import { Project } from 'lib/project'
|
import { Project } from 'lib/project'
|
||||||
|
import { changeKclSettings, unitLengthToUnitLen } from 'lang/wasm'
|
||||||
|
import { err } from 'lib/trap'
|
||||||
|
|
||||||
type MachineContext<T extends AnyStateMachine> = {
|
type MachineContext<T extends AnyStateMachine> = {
|
||||||
state?: StateFrom<T>
|
state?: StateFrom<T>
|
||||||
@ -84,25 +86,25 @@ const ProjectsContextWeb = ({ children }: { children: React.ReactNode }) => {
|
|||||||
const [state, send, actor] = useMachine(
|
const [state, send, actor] = useMachine(
|
||||||
projectsMachine.provide({
|
projectsMachine.provide({
|
||||||
actions: {
|
actions: {
|
||||||
navigateToProject: () => {},
|
navigateToProject: () => { },
|
||||||
navigateToProjectIfNeeded: () => {},
|
navigateToProjectIfNeeded: () => { },
|
||||||
navigateToFile: () => {},
|
navigateToFile: () => { },
|
||||||
toastSuccess: ({ event }) =>
|
toastSuccess: ({ event }) =>
|
||||||
toast.success(
|
toast.success(
|
||||||
('data' in event && typeof event.data === 'string' && event.data) ||
|
('data' in event && typeof event.data === 'string' && event.data) ||
|
||||||
('output' in event &&
|
('output' in event &&
|
||||||
'message' in event.output &&
|
'message' in event.output &&
|
||||||
typeof event.output.message === 'string' &&
|
typeof event.output.message === 'string' &&
|
||||||
event.output.message) ||
|
event.output.message) ||
|
||||||
''
|
''
|
||||||
),
|
),
|
||||||
toastError: ({ event }) =>
|
toastError: ({ event }) =>
|
||||||
toast.error(
|
toast.error(
|
||||||
('data' in event && typeof event.data === 'string' && event.data) ||
|
('data' in event && typeof event.data === 'string' && event.data) ||
|
||||||
('output' in event &&
|
('output' in event &&
|
||||||
typeof event.output === 'string' &&
|
typeof event.output === 'string' &&
|
||||||
event.output) ||
|
event.output) ||
|
||||||
''
|
''
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
actors: {
|
actors: {
|
||||||
@ -122,7 +124,12 @@ const ProjectsContextWeb = ({ children }: { children: React.ReactNode }) => {
|
|||||||
createFile: fromPromise(async ({ input }) => {
|
createFile: fromPromise(async ({ input }) => {
|
||||||
// Browser version doesn't navigate, just overwrites the current file
|
// Browser version doesn't navigate, just overwrites the current file
|
||||||
clearImportSearchParams()
|
clearImportSearchParams()
|
||||||
codeManager.updateCodeStateEditor(input.code || '')
|
const codeToWrite = changeKclSettings(input.code ?? '', {
|
||||||
|
defaultLengthUnits: unitLengthToUnitLen(settings.context.modeling.defaultUnit.current),
|
||||||
|
defaultAngleUnits: { type: 'Degrees' },
|
||||||
|
})
|
||||||
|
if (err(codeToWrite)) return Promise.reject(codeToWrite)
|
||||||
|
codeManager.updateCodeStateEditor(codeToWrite)
|
||||||
await codeManager.writeToFile()
|
await codeManager.writeToFile()
|
||||||
await kclManager.executeCode(true)
|
await kclManager.executeCode(true)
|
||||||
|
|
||||||
@ -298,19 +305,19 @@ const ProjectsContextDesktop = ({
|
|||||||
toastSuccess: ({ event }) =>
|
toastSuccess: ({ event }) =>
|
||||||
toast.success(
|
toast.success(
|
||||||
('data' in event && typeof event.data === 'string' && event.data) ||
|
('data' in event && typeof event.data === 'string' && event.data) ||
|
||||||
('output' in event &&
|
('output' in event &&
|
||||||
'message' in event.output &&
|
'message' in event.output &&
|
||||||
typeof event.output.message === 'string' &&
|
typeof event.output.message === 'string' &&
|
||||||
event.output.message) ||
|
event.output.message) ||
|
||||||
''
|
''
|
||||||
),
|
),
|
||||||
toastError: ({ event }) =>
|
toastError: ({ event }) =>
|
||||||
toast.error(
|
toast.error(
|
||||||
('data' in event && typeof event.data === 'string' && event.data) ||
|
('data' in event && typeof event.data === 'string' && event.data) ||
|
||||||
('output' in event &&
|
('output' in event &&
|
||||||
typeof event.output === 'string' &&
|
typeof event.output === 'string' &&
|
||||||
event.output) ||
|
event.output) ||
|
||||||
''
|
''
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
actors: {
|
actors: {
|
||||||
@ -374,8 +381,8 @@ const ProjectsContextDesktop = ({
|
|||||||
input.method === 'newProject'
|
input.method === 'newProject'
|
||||||
? PROJECT_ENTRYPOINT
|
? PROJECT_ENTRYPOINT
|
||||||
: input.name.endsWith(FILE_EXT)
|
: input.name.endsWith(FILE_EXT)
|
||||||
? input.name
|
? input.name
|
||||||
: input.name + FILE_EXT
|
: input.name + FILE_EXT
|
||||||
let message = 'File created successfully'
|
let message = 'File created successfully'
|
||||||
|
|
||||||
const needsInterpolated = doesProjectNameNeedInterpolated(projectName)
|
const needsInterpolated = doesProjectNameNeedInterpolated(projectName)
|
||||||
@ -406,7 +413,12 @@ const ProjectsContextDesktop = ({
|
|||||||
})
|
})
|
||||||
|
|
||||||
fileName = name
|
fileName = name
|
||||||
await window.electron.writeFile(path, input.code || '')
|
const codeToWrite = changeKclSettings(input.code ?? '', {
|
||||||
|
defaultLengthUnits: unitLengthToUnitLen(settings.context.modeling.defaultUnit.current),
|
||||||
|
defaultAngleUnits: { type: 'Degrees' },
|
||||||
|
})
|
||||||
|
if (err(codeToWrite)) return Promise.reject(codeToWrite)
|
||||||
|
await window.electron.writeFile(path, codeToWrite)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
message,
|
message,
|
||||||
|
Reference in New Issue
Block a user