import type { Editor } from '@tiptap/core'; import type { MarkdownSourceEdit, MarkdownSourceSelection } from './editors/markdown-source-commands'; import type { WorkDocumentSelectionMenuIcon } from './work-document-selection-menu'; import type { WorkMarkdownContent } from './work-types'; export type WorkMarkdownSelectionMenuIcon = WorkDocumentSelectionMenuIcon; export type WorkMarkdownSelectionCommandFailure = 'command-rejected' | 'editor-unavailable' | 'invalid-text' | 'read-only' | 'stale-selection'; export type WorkMarkdownSelectionCommandResult = { applied: true; } | { applied: false; reason: WorkMarkdownSelectionCommandFailure; }; export interface WorkMarkdownSelectionCommands { copyText(): Promise; insertAfter(text: string): WorkMarkdownSelectionCommandResult; insertBefore(text: string): WorkMarkdownSelectionCommandResult; replaceText(text: string): WorkMarkdownSelectionCommandResult; } export interface WorkMarkdownSelectionSnapshot { selection: { surface: 'source' | 'visual'; from: number; to: number; text: string; rawText: string; beforeText: string; afterText: string; }; document: { content: WorkMarkdownContent; markdown: string; text: string; }; } export interface WorkMarkdownSelectionContext extends WorkMarkdownSelectionSnapshot { commands: WorkMarkdownSelectionCommands; } export interface WorkMarkdownSelectionMenuItem { id: string; label: string; icon?: WorkMarkdownSelectionMenuIcon; shortcut?: string; ariaKeyShortcut?: string; danger?: boolean; disabled?: boolean; separatorBefore?: boolean; onSelect(context: WorkMarkdownSelectionContext): void | Promise; } export type WorkGetMarkdownSelectionMenuItems = (context: WorkMarkdownSelectionSnapshot) => readonly WorkMarkdownSelectionMenuItem[]; export interface WorkMarkdownSelectionAction { context: WorkMarkdownSelectionContext; dispose(): void; } export declare function createWorkMarkdownSourceSelectionSnapshot(markdown: string, selection: MarkdownSourceSelection, content: WorkMarkdownContent): WorkMarkdownSelectionSnapshot | null; export declare function createWorkMarkdownVisualSelectionSnapshot(editor: Editor, content: WorkMarkdownContent): WorkMarkdownSelectionSnapshot | null; export declare function createWorkMarkdownSourceSelectionAction(snapshot: WorkMarkdownSelectionSnapshot, getMarkdown: () => string, applyEdit: (edit: MarkdownSourceEdit) => boolean): WorkMarkdownSelectionAction; export declare function createWorkMarkdownVisualSelectionAction(editor: Editor, snapshot: WorkMarkdownSelectionSnapshot): WorkMarkdownSelectionAction;