Feat(Editor): Support autoload Native API
This commit is contained in:
33
src/renderer/src/components/Playground/CodeEditor/Editor/_NativeApi.d.ts
vendored
Normal file
33
src/renderer/src/components/Playground/CodeEditor/Editor/_NativeApi.d.ts
vendored
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
interface NativeApi {
|
||||||
|
/**
|
||||||
|
* Copy text to clipboard
|
||||||
|
*
|
||||||
|
* @param {string} text Text to be copied to clipboard
|
||||||
|
* @returns {boolean} Result
|
||||||
|
*/
|
||||||
|
copyToClipboard: (text: string) => boolean
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read text from clipboard
|
||||||
|
*
|
||||||
|
* @returns {string} Result
|
||||||
|
*/
|
||||||
|
readClipboard: () => string
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save file to download directory
|
||||||
|
*
|
||||||
|
* @param {string} dataBase64 Base64 encoded data
|
||||||
|
* @param {string} fileName File name to be saved
|
||||||
|
* @returns {boolean} Result
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* // From Unit8Array:
|
||||||
|
* NativeApi.saveToDownloads(btoa(String.fromCharCode(...data)))
|
||||||
|
* // From string:
|
||||||
|
* NativeApi.saveToDownloads(btoa(String.fromCharCode(...new TextEncoder().encode(text))))
|
||||||
|
*/
|
||||||
|
saveToDownloads: (dataBase64: string, fileName: string) => boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
declare const NativeApi: NativeApi
|
||||||
@@ -6,6 +6,7 @@ import { IEditorOptions, IFiles, ITheme, ITsconfig } from '@/components/Playgrou
|
|||||||
import { fileNameToLanguage, tsconfigJsonDiagnosticsOptions } from '@/components/Playground/files'
|
import { fileNameToLanguage, tsconfigJsonDiagnosticsOptions } from '@/components/Playground/files'
|
||||||
import { useEditor, useTypesProgress } from '@/components/Playground/CodeEditor/Editor/hooks'
|
import { useEditor, useTypesProgress } from '@/components/Playground/CodeEditor/Editor/hooks'
|
||||||
import { MonacoEditorConfig } from '@/components/Playground/CodeEditor/Editor/monacoConfig'
|
import { MonacoEditorConfig } from '@/components/Playground/CodeEditor/Editor/monacoConfig'
|
||||||
|
import nativeApiDTS from '@/components/Playground/CodeEditor/Editor/_NativeApi.d.ts?raw'
|
||||||
|
|
||||||
interface EditorProps {
|
interface EditorProps {
|
||||||
tsconfig?: ITsconfig
|
tsconfig?: ITsconfig
|
||||||
@@ -83,6 +84,10 @@ const Editor = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
jsxSyntaxHighlightRef.current = loadJsxSyntaxHighlight(editor, monaco)
|
jsxSyntaxHighlightRef.current = loadJsxSyntaxHighlight(editor, monaco)
|
||||||
|
monaco.languages.typescript.typescriptDefaults.addExtraLib(
|
||||||
|
nativeApiDTS,
|
||||||
|
'file:///node_modules/_NativeApi.d.ts'
|
||||||
|
)
|
||||||
|
|
||||||
void autoLoadExtraLib(editor, monaco, file.value, onWatch)
|
void autoLoadExtraLib(editor, monaco, file.value, onWatch)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user