fix: code copy to clipboard

This commit is contained in:
DiamondThree
2022-07-27 11:48:01 +08:00
parent 3fc70a7aad
commit 144a0f4af9
3 changed files with 15 additions and 16 deletions

View File

@@ -97,8 +97,12 @@ export const BulletView: FC<CreateView> = ({ block, editor }) => {
} }
block.setProperty('numberType', getChildrenType(parentNumberType)); block.setProperty('numberType', getChildrenType(parentNumberType));
} catch (e) { } catch (e) {
// TODO console.warn(
console.log('undo redo bugfix'); 'Failed to update bullet list numbers!',
'This issue may be related to the undo redo. block:',
block
);
console.warn(e);
} }
}; };

View File

@@ -52,6 +52,7 @@ import {
useOnSelect, useOnSelect,
WrapperWithPendantAndDragDrop, WrapperWithPendantAndDragDrop,
} from '@toeverything/components/editor-core'; } from '@toeverything/components/editor-core';
import { copyToClipboard } from '@toeverything/utils';
interface CreateCodeView extends CreateView { interface CreateCodeView extends CreateView {
style9?: StyleWithAtRules; style9?: StyleWithAtRules;
containerClassName?: string; containerClassName?: string;
@@ -128,8 +129,8 @@ const CodeBlock = styled('div')(({ theme }) => ({
}, },
})); }));
export const CodeView: FC<CreateCodeView> = ({ block, editor }) => { export const CodeView: FC<CreateCodeView> = ({ block, editor }) => {
const init_value: string = block.getProperty('text')?.value?.[0]?.text; const initValue: string = block.getProperty('text')?.value?.[0]?.text;
const lang_type: string = block.getProperty('lang')?.value?.[0]?.text; const langType: string = block.getProperty('lang')?.value?.[0]?.text;
const [mode, setMode] = useState('javascript'); const [mode, setMode] = useState('javascript');
const [extensions, setExtensions] = useState<Extension[]>(); const [extensions, setExtensions] = useState<Extension[]>();
const codeMirror = useRef(); const codeMirror = useRef();
@@ -140,21 +141,20 @@ export const CodeView: FC<CreateCodeView> = ({ block, editor }) => {
} }
}); });
const onChange = (value: any, codeEditor: any) => { const onChange = (value: any, codeEditor: any) => {
console.log(value);
block.setProperty('text', { block.setProperty('text', {
value: [{ text: value }], value: [{ text: value }],
}); });
}; };
useEffect(() => { useEffect(() => {
handleLangChange(lang_type ? lang_type : 'javascript'); handleLangChange(langType ? langType : 'javascript');
}, []); }, []);
function handleLangChange(lang: string) { function handleLangChange(lang: string) {
block.setProperty('lang', lang); block.setProperty('lang', lang);
setMode(lang); setMode(lang);
setExtensions([langs[lang]()]); setExtensions([langs[lang]()]);
} }
const handle_remove_block = () => { const copyCode = () => {
block.remove(); copyToClipboard(initValue);
}; };
const handleKeyArrowDown = () => { const handleKeyArrowDown = () => {
editor.selectionManager.activeNextNode(block.id, 'start'); editor.selectionManager.activeNextNode(block.id, 'start');
@@ -197,10 +197,7 @@ export const CodeView: FC<CreateCodeView> = ({ block, editor }) => {
</Select> </Select>
</div> </div>
<div> <div>
<div <div className="delete-block" onClick={copyCode}>
className="delete-block"
// onClick={handle_remove_block}
>
Copy Copy
{/* <DeleteSweepOutlinedIcon {/* <DeleteSweepOutlinedIcon
className="delete-icon" className="delete-icon"
@@ -217,7 +214,7 @@ export const CodeView: FC<CreateCodeView> = ({ block, editor }) => {
<CodeMirror <CodeMirror
ref={codeMirror} ref={codeMirror}
value={init_value} value={initValue}
height={'auto'} height={'auto'}
extensions={extensions} extensions={extensions}
onChange={onChange} onChange={onChange}

View File

@@ -59,7 +59,6 @@ class ClipboardPopulator {
} }
} }
} }
private copy_to_cliboard_from_pc(clips: any[]) { private copy_to_cliboard_from_pc(clips: any[]) {
let success = false; let success = false;
const tempElem = document.createElement('textarea'); const tempElem = document.createElement('textarea');
@@ -113,8 +112,7 @@ class ClipboardPopulator {
private async get_inner_clip(): Promise<InnerClipInfo> { private async get_inner_clip(): Promise<InnerClipInfo> {
const clips: ClipBlockInfo[] = []; const clips: ClipBlockInfo[] = [];
const select_info: SelectInfo = const select_info: SelectInfo = await this.selection_manager.getSelectInfo();
await this.selection_manager.getSelectInfo();
for (let i = 0; i < select_info.blocks.length; i++) { for (let i = 0; i < select_info.blocks.length; i++) {
const sel_block = select_info.blocks[i]; const sel_block = select_info.blocks[i];
const clip_block_info = await this.get_clip_block_info(sel_block); const clip_block_info = await this.get_clip_block_info(sel_block);