import { Editor } from "editor/editor"; import { EditorNode } from "editor/types"; import { markNames, setAuxiliaryToolbar, clearSelected } from "editor/utils"; function select(editor: Editor, el: HTMLAnchorElement): void { clearSelected(editor); el.dataset.editorSelected = ""; editor.toolbar.auxiliary.link.urlEl.value = el.href; setAuxiliaryToolbar(editor, editor.toolbar.auxiliary.link.parentEl); } export const link: EditorNode = { selector: "a", allowedChildren: [...markNames.filter((n) => n !== "link"), "text"], handleEmpty: "remove", create: () => document.createElement("a"), onClick(editor, el) { if (!(el instanceof HTMLAnchorElement)) throw new Error("oh no"); select(editor, el); }, }; export function setupAuxiliaryToolbar(editor: Editor): void { editor.toolbar.auxiliary.link.urlEl.addEventListener("input", (event) => { const url = editor.toolbar.auxiliary.link.urlEl.value; const selectedEl = editor.contentEl.querySelector( "a[data-editor-selected]" ); if (!selectedEl) throw new Error("No pude encontrar el link para setear el enlace"); selectedEl.href = url; }); editor.toolbar.auxiliary.link.urlEl.addEventListener("keydown", (event) => { if (event.keyCode == 13) event.preventDefault(); }); }