import { createSignal, Show } from 'solid-js' import type { Editor } from '@tiptap/core' import { Icon } from '../_shared/Icon' import { InlineForm } from './InlineForm' import styles from './EditorFloatingMenu.module.scss' import HTMLParser from 'html-to-json-parser' type FloatingMenuProps = { editor: Editor ref: (el: HTMLDivElement) => void } const embedData = async (data) => { const result = await HTMLParser(data, false) if (result && 'type' in result && result.type === 'iframe') { return result.attributes } } export const EditorFloatingMenu = (props: FloatingMenuProps) => { const [inlineEditorOpen, setInlineEditorOpen] = createSignal(false) const handleEmbedFormSubmit = async (value: string) => { // TODO: add support instagram embed (blockquote) const emb = await embedData(value) props.editor.chain().focus().setIframe(emb).run() } const validateEmbed = async (value) => { const iframeData = await HTMLParser(value, false) if (iframeData && iframeData.type !== 'iframe') { return } } return (
setInlineEditorOpen(false)} validate={validateEmbed} onSubmit={handleEmbedFormSubmit} />
) }