+
{code}
)}
@@ -169,16 +223,21 @@ function FallbackPre({
children,
editorHeight,
isModal,
+ className,
}: {
children: string;
editorHeight: number;
isModal?: boolean;
+ className?: string;
}) {
// AceEditorはなぜかline-heightが小さい
// fontSize + 1px になるっぽい?
return (
("");
+ const [prevPageKey, setPrevPageKey] = useState(pageKey);
const [files, setFiles] = useState<
- Record>
+ Record>
>({});
const [replOutputs, setReplOutputs] = useState<
Record
@@ -71,8 +80,8 @@ export function EmbedContextProvider({ children }: { children: ReactNode }) {
const [execResults, setExecResults] = useState<
Record
>({});
- if (pathname && pathname !== prevPathname) {
- setPrevPathname(pathname);
+ if (pageKey && pageKey !== prevPageKey) {
+ setPrevPageKey(pageKey);
setReplOutputs({});
setCommandIdCounters({});
setExecResults({});
@@ -84,24 +93,24 @@ export function EmbedContextProvider({ children }: { children: ReactNode }) {
setFiles((files) => {
let changed = false;
const newFiles = { ...files };
- newFiles[pathname] = { ...(newFiles[pathname] ?? {}) };
+ newFiles[pageKey] = { ...(newFiles[pageKey] ?? {}) };
for (const [name, content] of Object.entries(updatedFiles)) {
- if (newFiles[pathname][name] !== content) {
+ if (newFiles[pageKey][name] !== content) {
changed = true;
- newFiles[pathname][name] = content;
+ newFiles[pageKey][name] = content;
}
}
if (changed) {
- resolve(newFiles[pathname]);
+ resolve(newFiles[pageKey]);
return newFiles;
} else {
- resolve(files[pathname] || {});
+ resolve(files[pageKey] || {});
return files;
}
});
});
},
- [pathname]
+ [pageKey]
);
const addReplCommand = useCallback(
(terminalId: TerminalId, command: string): string => {
@@ -175,7 +184,7 @@ export function EmbedContextProvider({ children }: { children: ReactNode }) {
return (
-
+
ブラウザ上で動作する
{runtimeInfo?.prettyLangName || props.language.runtime}
@@ -218,7 +218,7 @@ export function ExecFile(props: ExecProps) {