Add format code to the command palette (#3001)
* Add format code to the command palette * Fix to use renamed groupId parameter * Add icon to format code command * Fix to remove commands during teardown * Fix dependencies * Change formatting
This commit is contained in:
@ -131,6 +131,16 @@ const CustomIconMap = {
|
|||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
),
|
),
|
||||||
|
code: (
|
||||||
|
<svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
fillRule="evenodd"
|
||||||
|
clipRule="evenodd"
|
||||||
|
d="M10.7071 5L7.77734 14.7794L8.73527 15.0663L11.665 5.28698L10.7071 5ZM2.35356 9.64644L5.85362 6.14644L6.56072 6.85355L3.41423 10L6.56072 13.1464L5.85362 13.8536L2.35356 10.3536L2 10L2.35356 9.64644ZM17.0607 9.64644L13.5607 6.14644L12.8536 6.85355L16 10L12.8536 13.1464L13.5607 13.8535L17.0607 10.3536L17.4142 10L17.0607 9.64644Z"
|
||||||
|
fill="currentColor"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
),
|
||||||
dimension: (
|
dimension: (
|
||||||
<svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path
|
<path
|
||||||
|
@ -3,6 +3,8 @@ import { createContext, useContext, useEffect, useState } from 'react'
|
|||||||
import { type IndexLoaderData } from 'lib/types'
|
import { type IndexLoaderData } from 'lib/types'
|
||||||
import { useLoaderData } from 'react-router-dom'
|
import { useLoaderData } from 'react-router-dom'
|
||||||
import { codeManager, kclManager } from 'lib/singletons'
|
import { codeManager, kclManager } from 'lib/singletons'
|
||||||
|
import { useCommandsContext } from 'hooks/useCommandsContext'
|
||||||
|
import { Command } from 'lib/commandTypes'
|
||||||
|
|
||||||
const KclContext = createContext({
|
const KclContext = createContext({
|
||||||
code: codeManager?.code || '',
|
code: codeManager?.code || '',
|
||||||
@ -35,6 +37,7 @@ export function KclContextProvider({
|
|||||||
const [errors, setErrors] = useState<KCLError[]>([])
|
const [errors, setErrors] = useState<KCLError[]>([])
|
||||||
const [logs, setLogs] = useState<string[]>([])
|
const [logs, setLogs] = useState<string[]>([])
|
||||||
const [wasmInitFailed, setWasmInitFailed] = useState(false)
|
const [wasmInitFailed, setWasmInitFailed] = useState(false)
|
||||||
|
const { commandBarSend } = useCommandsContext()
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
codeManager.registerCallBacks({
|
codeManager.registerCallBacks({
|
||||||
@ -50,6 +53,28 @@ export function KclContextProvider({
|
|||||||
})
|
})
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
|
// Add format code to command palette.
|
||||||
|
useEffect(() => {
|
||||||
|
const commands: Command[] = [
|
||||||
|
{
|
||||||
|
name: 'format-code',
|
||||||
|
displayName: 'Format Code',
|
||||||
|
description: 'Nicely formats the KCL code in the editor.',
|
||||||
|
needsReview: false,
|
||||||
|
groupId: 'code',
|
||||||
|
icon: 'code',
|
||||||
|
onSubmit: (data) => {
|
||||||
|
kclManager.format()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
commandBarSend({ type: 'Add commands', data: { commands } })
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
commandBarSend({ type: 'Remove commands', data: { commands } })
|
||||||
|
}
|
||||||
|
}, [kclManager, commandBarSend])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<KclContext.Provider
|
<KclContext.Provider
|
||||||
value={{
|
value={{
|
||||||
|
Reference in New Issue
Block a user