import {ACTION_GROUPS, EDITOR_ACTIONS, slashItems} from './actions'; import {classMap} from "lit/directives/class-map.js"; import {type CSSResultGroup, html, type PropertyValues, type TemplateResult, unsafeCSS} from 'lit'; import {defaultValue} from "../../internal/default-value"; import {FormControlController} from "../../internal/form"; import {property, query, state} from 'lit/decorators.js'; import {parse as remarkdParse} from "remarkd-js"; import {ToolbarOverflowController} from '../../internal/toolbar-overflow'; import {unsafeHTML} from "lit/directives/unsafe-html.js"; import {watch} from "../../internal/watch"; import ZincElement from '../../internal/zinc-element'; import ZnDropdown from "../dropdown"; import ZnMenu from "../menu"; import ZnMenuItem from "../menu-item"; import ZnSlashMenu, {SlashMenuController, type SlashMenuItem} from "../slash-menu"; import type {EditorAction, InlineMark} from './actions'; import type {ZincFormControl} from '../../internal/zinc-element'; import type ZnFile from "../file"; import styles from './remarkd-editor.scss'; interface UploadResponse { uploadPath: string; uploadUrl: string; originalFilename: string; } interface ImageBlockData { caption: string; align: '' | 'center' | 'right'; src: string; alt: string; width: string; height: string; } interface IncludeBlockData { target: string; label: string; } interface IncludeOption { id: string; title: string; description?: string; scope?: string; keywords?: string[]; languages?: string; url?: string; } /** remarkd's include directive on a line of its own: `include::[