import { Decorator, StoryContext } from "@storybook/react";
import React, { useMemo } from "react";
import { githubDark } from "@uiw/codemirror-theme-github";
import { langs } from "@uiw/codemirror-extensions-langs";
import { createPortal } from "react-dom";
import LiveEditor from "../../components/live-editor/LiveEditor";
import LiveContent from "./components/LiveContent/LiveContent";
import LiveEditorAction from "./components/LiveEditorAction/LiveEditorAction";
import styles from "./withLiveEdit.module.scss";
import useLiveEditorActions from "./hooks/useLiveEditorActions";
const withLiveEdit: Decorator = (Story, context: StoryContext) => {
const { id, parameters, viewMode, moduleExport } = context;
const { source: sourceParams, liveEdit: liveEditParams } = parameters.docs || {};
const canvasEditorContainer = useMemo(() => document.getElementById(id), [id]);
const shouldAllowLiveEdit = viewMode === "docs" && liveEditParams?.isEnabled && !!canvasEditorContainer;
const { code, isDirty, onChange, onCopyClick, isCopied, onFormatClick, onResetClick } = useLiveEditorActions(
sourceParams?.originalSource
);
if (!shouldAllowLiveEdit) {
return ;
}
return (
<>
{isDirty ? (
) : (
)}
{createPortal(
<>
{isCopied ? "Copied" : "Copy"}
Format
Reset
>,
canvasEditorContainer
)}
>
);
};
export default withLiveEdit;