11"use client" ;
22
3- import { useFile } from "./file" ;
4- import AceEditor from "react-ace" ;
3+ import dynamic from "next/dynamic" ;
4+ // https://github.com/securingsincity/react-ace/issues/27 により普通のimportができない
5+ const AceEditor = dynamic ( async ( ) => {
6+ const ace = await import ( "react-ace" ) ;
7+ // テーマは色分けが今のTerminal側のハイライト(highlight.js)の実装に近いものを適当に選んだ
8+ await import ( "ace-builds/src-min-noconflict/theme-tomorrow" ) ;
9+ await import ( "ace-builds/src-min-noconflict/theme-twilight" ) ;
10+ await import ( "ace-builds/src-min-noconflict/ext-language_tools" ) ;
11+ await import ( "ace-builds/src-min-noconflict/ext-searchbox" ) ;
12+ await import ( "ace-builds/src-min-noconflict/mode-python" ) ;
13+ await import ( "ace-builds/src-min-noconflict/mode-c_cpp" ) ;
14+ await import ( "ace-builds/src-min-noconflict/mode-json" ) ;
15+ await import ( "ace-builds/src-min-noconflict/mode-csv" ) ;
16+ await import ( "ace-builds/src-min-noconflict/mode-text" ) ;
17+ return ace ;
18+ } , { ssr : false } ) ;
519import "./editor.css" ;
6- // テーマは色分けが今のTerminal側のハイライト(highlight.js)の実装に近いものを適当に選んだ
7- import "ace-builds/src-min-noconflict/theme-tomorrow" ;
8- import "ace-builds/src-min-noconflict/theme-twilight" ;
9- import "ace-builds/src-min-noconflict/ext-language_tools" ;
10- import "ace-builds/src-min-noconflict/ext-searchbox" ;
11- import "ace-builds/src-min-noconflict/mode-python" ;
12- import "ace-builds/src-min-noconflict/mode-c_cpp" ;
13- import "ace-builds/src-min-noconflict/mode-json" ;
14- import "ace-builds/src-min-noconflict/mode-csv" ;
15- import "ace-builds/src-min-noconflict/mode-text" ;
20+ import { useFile } from "./file" ;
1621import { useEffect } from "react" ;
1722import { useSectionCode } from "../[docs_id]/section" ;
1823import clsx from "clsx" ;
@@ -38,13 +43,7 @@ export function EditorComponent(props: EditorProps) {
3843 writeFile ( props . filename , props . initContent ) ;
3944 }
4045 addSectionFile ?.( props . filename ) ;
41- } , [
42- files ,
43- props . filename ,
44- props . initContent ,
45- writeFile ,
46- addSectionFile ,
47- ] ) ;
46+ } , [ files , props . filename , props . initContent , writeFile , addSectionFile ] ) ;
4847
4948 return (
5049 < div className = "embedded-editor" >
0 commit comments