@k2b/ui 0.45.0 → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/actions/Dropdown.js +8 -1
- package/dist/browser/actions/Dropdown.js.map +1 -1
- package/dist/browser/actions/FilterChip.js +11 -5
- package/dist/browser/actions/FilterChip.js.map +1 -1
- package/dist/browser/actions/ViewTabs.js +225 -93
- package/dist/browser/actions/ViewTabs.js.map +1 -1
- package/dist/browser/chat/ChatDecision.js +10 -6
- package/dist/browser/chat/ChatDecision.js.map +1 -1
- package/dist/browser/content/FileGrid.js +125 -99
- package/dist/browser/content/FileGrid.js.map +1 -1
- package/dist/browser/content/VirtualFeed.js +26 -21
- package/dist/browser/content/VirtualFeed.js.map +1 -1
- package/dist/browser/inputs/Combobox.js +14 -6
- package/dist/browser/inputs/Combobox.js.map +1 -1
- package/dist/browser/inputs/choice.js +36 -9
- package/dist/browser/inputs/choice.js.map +1 -1
- package/dist/browser/layout/AnchoredPopover.js +2 -1
- package/dist/browser/layout/AnchoredPopover.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +348 -444
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/AppWorkspaceSidebarItemStatus.js +113 -0
- package/dist/browser/layout/AppWorkspaceSidebarItemStatus.js.map +1 -0
- package/dist/browser/layout/DetailPanel.js +130 -108
- package/dist/browser/layout/DetailPanel.js.map +1 -1
- package/dist/browser/layout/DetailSections.js +1123 -0
- package/dist/browser/layout/DetailSections.js.map +1 -0
- package/dist/browser/layout/DetailsToggle.js +32 -0
- package/dist/browser/layout/DetailsToggle.js.map +1 -0
- package/dist/browser/layout/Discussion.js +3 -0
- package/dist/browser/layout/Discussion.js.map +1 -1
- package/dist/browser/layout/MobileShell.js +141 -102
- package/dist/browser/layout/MobileShell.js.map +1 -1
- package/dist/browser/layout/PageTitle.js +33 -10
- package/dist/browser/layout/PageTitle.js.map +1 -1
- package/dist/browser/layout/app-workspace-controller.js +12 -0
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/detail-sections-messages.js +127 -0
- package/dist/browser/layout/detail-sections-messages.js.map +1 -0
- package/dist/browser/layout/index.js +3 -0
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/surfaces/Avatar.js +3 -1
- package/dist/browser/surfaces/Avatar.js.map +1 -1
- package/dist/browser/surfaces/AvatarStack.js +95 -61
- package/dist/browser/surfaces/AvatarStack.js.map +1 -1
- package/dist/browser/surfaces/ChangeList.js +77 -0
- package/dist/browser/surfaces/ChangeList.js.map +1 -0
- package/dist/browser/surfaces/index.js +2 -1
- package/dist/browser/surfaces/index.js.map +1 -1
- package/dist/browser/text-editor/TextEditor.js +19 -8
- package/dist/browser/text-editor/TextEditor.js.map +1 -1
- package/dist/ssr/actions/Dropdown.js +6 -0
- package/dist/ssr/actions/Dropdown.js.map +1 -1
- package/dist/ssr/actions/FilterChip.js +1 -1
- package/dist/ssr/actions/FilterChip.js.map +1 -1
- package/dist/ssr/actions/ViewTabs.js +144 -37
- package/dist/ssr/actions/ViewTabs.js.map +1 -1
- package/dist/ssr/chat/ChatDecision.js +10 -6
- package/dist/ssr/chat/ChatDecision.js.map +1 -1
- package/dist/ssr/content/FileGrid.js +36 -22
- package/dist/ssr/content/FileGrid.js.map +1 -1
- package/dist/ssr/content/VirtualFeed.js +26 -21
- package/dist/ssr/content/VirtualFeed.js.map +1 -1
- package/dist/ssr/inputs/Combobox.js +6 -3
- package/dist/ssr/inputs/Combobox.js.map +1 -1
- package/dist/ssr/inputs/choice.js +36 -9
- package/dist/ssr/inputs/choice.js.map +1 -1
- package/dist/ssr/layout/AnchoredPopover.js +2 -1
- package/dist/ssr/layout/AnchoredPopover.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +66 -132
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/AppWorkspaceSidebarItemStatus.js +76 -0
- package/dist/ssr/layout/AppWorkspaceSidebarItemStatus.js.map +1 -0
- package/dist/ssr/layout/DetailPanel.js +18 -1
- package/dist/ssr/layout/DetailPanel.js.map +1 -1
- package/dist/ssr/layout/DetailSections.js +838 -0
- package/dist/ssr/layout/DetailSections.js.map +1 -0
- package/dist/ssr/layout/DetailsToggle.js +29 -0
- package/dist/ssr/layout/DetailsToggle.js.map +1 -0
- package/dist/ssr/layout/Discussion.js +3 -0
- package/dist/ssr/layout/Discussion.js.map +1 -1
- package/dist/ssr/layout/MobileShell.js +60 -29
- package/dist/ssr/layout/MobileShell.js.map +1 -1
- package/dist/ssr/layout/PageTitle.js +29 -6
- package/dist/ssr/layout/PageTitle.js.map +1 -1
- package/dist/ssr/layout/app-workspace-controller.js +12 -0
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/detail-sections-messages.js +127 -0
- package/dist/ssr/layout/detail-sections-messages.js.map +1 -0
- package/dist/ssr/layout/index.js +3 -0
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/surfaces/Avatar.js +3 -1
- package/dist/ssr/surfaces/Avatar.js.map +1 -1
- package/dist/ssr/surfaces/AvatarStack.js +61 -32
- package/dist/ssr/surfaces/AvatarStack.js.map +1 -1
- package/dist/ssr/surfaces/ChangeList.js +37 -0
- package/dist/ssr/surfaces/ChangeList.js.map +1 -0
- package/dist/ssr/surfaces/index.js +2 -1
- package/dist/ssr/surfaces/index.js.map +1 -1
- package/dist/ssr/text-editor/TextEditor.js +19 -8
- package/dist/ssr/text-editor/TextEditor.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/actions/FilterChip.d.ts +4 -0
- package/dist/types/actions/ViewTabs.d.ts +11 -1
- package/dist/types/chat/ChatDecision.d.ts +5 -0
- package/dist/types/content/FileGrid.d.ts +6 -0
- package/dist/types/inputs/Combobox.d.ts +2 -0
- package/dist/types/inputs/choice.d.ts +9 -3
- package/dist/types/layout/AppWorkspace.d.ts +2 -28
- package/dist/types/layout/AppWorkspaceSidebarItemStatus.d.ts +30 -0
- package/dist/types/layout/DetailPanel.d.ts +9 -0
- package/dist/types/layout/DetailSections.d.ts +186 -0
- package/dist/types/layout/DetailsToggle.d.ts +13 -0
- package/dist/types/layout/MobileShell.d.ts +12 -0
- package/dist/types/layout/PageTitle.d.ts +7 -0
- package/dist/types/layout/detail-sections-messages.d.ts +61 -0
- package/dist/types/layout/index.d.ts +5 -1
- package/dist/types/surfaces/Avatar.d.ts +3 -0
- package/dist/types/surfaces/AvatarStack.d.ts +20 -1
- package/dist/types/surfaces/ChangeList.d.ts +20 -0
- package/dist/types/surfaces/index.d.ts +5 -3
- package/package.json +3 -3
|
@@ -434,11 +434,20 @@ export function TextEditor(props) {
|
|
|
434
434
|
positionMenu();
|
|
435
435
|
});
|
|
436
436
|
};
|
|
437
|
-
const unavailable = () => !!props.host?.structure && !props.host.structure.available();
|
|
437
|
+
const unavailable = createMemo(() => !!props.host?.structure && !props.host.structure.available());
|
|
438
|
+
// Closed table menus keep their entries until they open again. A host may report another availability on every
|
|
439
|
+
// edit, and each entry rebuilt or re-enabled in a hidden menu restyles the whole page through the shared `:has()`
|
|
440
|
+
// rules, so typing would lag.
|
|
441
|
+
const [tableMenuShown, setTableMenuShown] = createSignal(false);
|
|
442
|
+
const whileMenuShown = read => createMemo(last => tableMenuShown() ? read() : last, untrack(read));
|
|
443
|
+
const menuRevision = whileMenuShown(documentRevision);
|
|
444
|
+
const menuUnavailable = whileMenuShown(unavailable);
|
|
438
445
|
const actionDisabled = action => {
|
|
439
|
-
|
|
446
|
+
menuRevision();
|
|
447
|
+
menuUnavailable();
|
|
440
448
|
const wrap = cell()?.closest(".k2b-ste-table");
|
|
441
|
-
|
|
449
|
+
const view = editor?.view;
|
|
450
|
+
return blocked() || !view || !wrap || untrack(() => !tableActionEnabled(view, wrap, action));
|
|
442
451
|
};
|
|
443
452
|
const isMove = action => action.startsWith("move");
|
|
444
453
|
const runAction = action => {
|
|
@@ -479,11 +488,11 @@ export function TextEditor(props) {
|
|
|
479
488
|
deleteCol: "menuDelete"
|
|
480
489
|
};
|
|
481
490
|
const menuRow = () => {
|
|
482
|
-
|
|
491
|
+
menuRevision();
|
|
483
492
|
return t().menuRow(Number(cell()?.dataset.r ?? 0));
|
|
484
493
|
};
|
|
485
494
|
const menuColumn = () => {
|
|
486
|
-
|
|
495
|
+
menuRevision();
|
|
487
496
|
const column = Number(cell()?.dataset.c ?? 0);
|
|
488
497
|
const header = cell()?.closest(".k2b-ste-table")?.querySelector(`.k2b-ste-cell[data-r="0"][data-c="${column}"]`);
|
|
489
498
|
return t().menuColumn(header?.dataset.raw || t().column(column + 1));
|
|
@@ -567,7 +576,7 @@ export function TextEditor(props) {
|
|
|
567
576
|
const items = kind => {
|
|
568
577
|
if (props.readOnly) return copyItems();
|
|
569
578
|
const align = () => {
|
|
570
|
-
|
|
579
|
+
menuRevision();
|
|
571
580
|
return cell()?.parentElement?.style.textAlign || "left";
|
|
572
581
|
};
|
|
573
582
|
const row = [{
|
|
@@ -604,7 +613,7 @@ export function TextEditor(props) {
|
|
|
604
613
|
choice: "checkbox",
|
|
605
614
|
class: "k2b-ste-header-choice",
|
|
606
615
|
checked: () => {
|
|
607
|
-
|
|
616
|
+
menuRevision();
|
|
608
617
|
return cell()?.closest(".k2b-ste-table")?.dataset.header === "true";
|
|
609
618
|
}
|
|
610
619
|
}), {
|
|
@@ -614,7 +623,7 @@ export function TextEditor(props) {
|
|
|
614
623
|
const wrap = cell()?.closest(".k2b-ste-table");
|
|
615
624
|
if (editor && wrap) editTableSource(editor.view, wrap);
|
|
616
625
|
}
|
|
617
|
-
}, ...copyItems(), actionItem("deleteTable"), ...(
|
|
626
|
+
}, ...copyItems(), actionItem("deleteTable"), ...(menuUnavailable() ? [{
|
|
618
627
|
label: t().structureUnavailable,
|
|
619
628
|
disabled: true
|
|
620
629
|
}] : [])]
|
|
@@ -630,6 +639,7 @@ export function TextEditor(props) {
|
|
|
630
639
|
const tableMenuChange = open => {
|
|
631
640
|
menuOpen = open;
|
|
632
641
|
tableMenuOpen = open && !phoneMenu();
|
|
642
|
+
setTableMenuShown(open);
|
|
633
643
|
};
|
|
634
644
|
let swallow;
|
|
635
645
|
const pressBesideMenu = event => {
|
|
@@ -670,6 +680,7 @@ export function TextEditor(props) {
|
|
|
670
680
|
const menuClose = () => {
|
|
671
681
|
menuOpen = false;
|
|
672
682
|
tableMenuOpen = false;
|
|
683
|
+
setTableMenuShown(false);
|
|
673
684
|
setScope("cell");
|
|
674
685
|
grip = undefined;
|
|
675
686
|
schedulePosition();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["text-editor/TextEditor.tsx"],"sourcesContent":["import { history, historyKeymap, redo, undo } from \"@codemirror/commands\";\nimport type { Extension } from \"@codemirror/state\";\nimport { EditorView, keymap } from \"@codemirror/view\";\nimport { clipboard } from \"@k2b/stdlib/solid\";\nimport {\n children,\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n For,\n type JSX,\n on,\n onCleanup,\n onMount,\n Show,\n untrack,\n} from \"solid-js\";\nimport { Button, IconButton } from \"../actions/Button\";\nimport {\n Dropdown,\n type DropdownAction,\n type DropdownAnchor,\n type DropdownChoice,\n type DropdownItem,\n type DropdownPosition,\n} from \"../actions/Dropdown\";\nimport { SegmentedControl } from \"../actions/SegmentedControl\";\nimport { Toolbar } from \"../actions/Toolbar\";\nimport { Kbd } from \"../content/Kbd\";\nimport { dialogCore } from \"../feedback/dialog-core\";\nimport { createDictation } from \"../inputs/dictation/create-dictation\";\nimport { DictationBar, DictationButton, dictationBarShown } from \"../inputs/dictation/Dictation\";\nimport type { DictationAlternative, DictationSource } from \"../inputs/dictation/types\";\nimport { NumberInput } from \"../inputs/NumberInput\";\nimport { LocaleProvider, useLocale } from \"../intl/locale\";\nimport { formatShortcut, type KeyboardPlatform, keyboardPlatform } from \"../intl/shortcut\";\nimport BottomSheet, { bottomSheetAdaptiveOptions } from \"../layout/BottomSheet\";\nimport { codeMirrorDictationTarget, dictationExtension } from \"./dictation\";\nimport { createTextEditor, type TextEditorController, type TextEditorMode, type TextEditorOptions } from \"./engine\";\nimport { commands, formatLabels, type InlineFormat } from \"./format\";\nimport { findTables, inspectTableStructure } from \"./markdown-table\";\nimport { textEditorMessages } from \"./messages\";\nimport {\n copyTable,\n editTableSource,\n formatActiveCell,\n type MenuAction,\n runMenuAction,\n runTableAction,\n type TableHost,\n tableActionEnabled,\n} from \"./table\";\n\nexport type TextEditorProps = {\n label: string;\n initialValue?: string;\n mode?: TextEditorMode;\n onModeChange?: (mode: TextEditorMode) => void;\n readOnly?: boolean;\n loading?: boolean;\n placeholder?: string;\n extensions?: Extension;\n /** Host-owned Markdown presentation; see `createTextEditor`. The host then also styles the editor surface. */\n presentation?: TextEditorOptions[\"presentation\"];\n /** `false` when the host renders its own formatting toolbar and mode control; place `controls.TableMenu` in it. */\n toolbar?: boolean;\n /** Collaboration supplies history and server-owned structure here. */\n host?: Pick<TableHost, \"structure\" | \"renderCell\" | \"onCellSelection\" | \"tabMovesFocus\"> &\n Partial<Pick<TableHost, \"undo\" | \"redo\" | \"boundary\">>;\n maxLength: number;\n maxPasteCells?: number;\n onChange?: (text: string) => void;\n onReady?: (editor: TextEditorController, controls: TextEditorControls) => void;\n /** Return `true` when the host attached the images itself; otherwise the editor shows its attachment hint. */\n onDroppedImages?: (count: number, files: File[]) => boolean | void;\n /** Opens the host's attachment picker when clipboard images cannot be inserted. */\n onAttachImages?: () => void;\n onTableCheck?: (needsCheck: boolean) => void;\n /** Host-owned sync status. Its row appears only while there is a status or a table check; keep it set across transitions. */\n status?: JSX.Element;\n /**\n * Live dictation as the last control of the toolbar, so it never scrolls away. While it runs, the dictation bar\n * stands in for the formatting controls in the same row. Words land at the caret as typed text does.\n */\n dictation?: { source: DictationSource; alternative?: DictationAlternative };\n class?: string;\n};\n\nexport type TableSizePickerProps = {\n maxRows: number;\n maxColumns: number;\n onPick: (size: { rows: number; columns: number }) => void;\n /** Share this picker with slash commands or secondary menus. */\n onReady?: (open: () => void) => void;\n disabled?: boolean;\n class?: string;\n size?: \"xs\" | \"sm\";\n};\n\n/** Shared table-size control: pointer grid on desktop, large fields in a phone sheet. */\nexport function TableSizePicker(props: TableSizePickerProps) {\n const locale = useLocale();\n const t = () => textEditorMessages.resolve([locale()]).t;\n const [rows, setRows] = createSignal<number | null>(3);\n const [columns, setColumns] = createSignal<number | null>(3);\n const [expanded, setExpanded] = createSignal(false);\n const id = createUniqueId();\n const abort = new AbortController();\n let disposed = false;\n onCleanup(() => {\n disposed = true;\n abort.abort();\n });\n let trigger!: HTMLButtonElement;\n let popup!: HTMLDivElement;\n const reset = () => {\n setRows(Math.min(3, props.maxRows));\n setColumns(Math.min(3, props.maxColumns));\n };\n const choose = (r: number, c: number) => {\n popup.hidePopover();\n if (!disposed && !props.disabled) props.onPick({ rows: r, columns: c });\n };\n const open = async () => {\n if (disposed || props.disabled || expanded()) return;\n reset();\n if (!window.matchMedia(\"(max-width: 47.999rem)\").matches) {\n popup.showPopover();\n const anchor = trigger.getBoundingClientRect(),\n box = popup.getBoundingClientRect();\n popup.style.left = `${Math.max(8, Math.min(anchor.left, innerWidth - box.width - 8))}px`;\n popup.style.top = `${Math.max(8, anchor.top > box.height + 8 ? anchor.top - box.height - 8 : Math.min(anchor.bottom + 8, innerHeight - box.height - 8))}px`;\n popup.focus();\n return;\n }\n setExpanded(true);\n const chosen = await dialogCore.open<{ rows: number; columns: number }>(\n (close, context) => (\n <LocaleProvider locale={locale()}>\n <BottomSheet onDismiss={context.requestDismiss}>\n <BottomSheet.Header title={t().insertTable} close={context.requestDismiss} />\n <BottomSheet.Body>\n <div class=\"k2b-ste-size-picker\">\n <NumberInput label={t().rows} value={rows()} onValueChange={setRows} min={1} max={props.maxRows} step={1} />\n <NumberInput label={t().columns} value={columns()} onValueChange={setColumns} min={1} max={props.maxColumns} step={1} />\n </div>\n </BottomSheet.Body>\n <BottomSheet.Footer>\n <Button\n disabled={!rows() || !columns()}\n onClick={() => {\n const r = rows(),\n c = columns();\n if (r && c) close({ rows: r, columns: c });\n }}\n >\n {t().insertSize({ rows: rows() ?? 0, columns: columns() ?? 0 })}\n </Button>\n </BottomSheet.Footer>\n </BottomSheet>\n </LocaleProvider>\n ),\n { ...bottomSheetAdaptiveOptions, ariaLabel: t().insertTable, history: true, signal: abort.signal },\n );\n setExpanded(false);\n if (chosen && !disposed && !props.disabled) props.onPick(chosen);\n };\n onMount(() => props.onReady?.(() => void open()));\n const keyboard = (event: KeyboardEvent) => {\n const directions: Record<string, [number, number]> = { ArrowUp: [-1, 0], ArrowDown: [1, 0], ArrowLeft: [0, -1], ArrowRight: [0, 1] };\n const direction = directions[event.key];\n if (direction) {\n event.preventDefault();\n setRows(Math.max(1, Math.min(Math.min(9, props.maxRows), (rows() ?? 1) + direction[0])));\n setColumns(Math.max(1, Math.min(Math.min(10, props.maxColumns), (columns() ?? 1) + direction[1])));\n } else if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n choose(rows() ?? 1, columns() ?? 1);\n } else if (event.key === \"Escape\") trigger.focus();\n };\n return (\n <>\n <IconButton\n ref={trigger}\n variant=\"ghost\"\n class={props.class}\n size={props.size ?? \"sm\"}\n disabled={props.disabled}\n label={t().insertTable}\n aria-haspopup=\"dialog\"\n aria-controls={id}\n aria-expanded={expanded()}\n tooltip={t().insertTable}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => void open()}\n >\n <i class=\"ti ti-table\" aria-hidden=\"true\" />\n </IconButton>\n <div\n ref={popup}\n id={id}\n popover=\"auto\"\n class=\"k2b-ste-size-popover\"\n role=\"dialog\"\n aria-label={t().insertTable}\n tabIndex={-1}\n onKeyDown={keyboard}\n on:toggle={() => setExpanded(popup.matches(\":popover-open\"))}\n >\n <div class=\"k2b-ste-size-grid\" role=\"group\" aria-label={t().insertTable}>\n <For each={Array.from({ length: Math.min(9, props.maxRows) }, (_, index) => index + 1)}>\n {(r) => (\n <div class=\"k2b-ste-size-row\">\n <For each={Array.from({ length: Math.min(10, props.maxColumns) }, (_, index) => index + 1)}>\n {(c) => (\n <button\n type=\"button\"\n tabIndex={-1}\n aria-label={t().insertSize({ rows: r, columns: c })}\n data-selected={r <= (rows() ?? 0) && c <= (columns() ?? 0) ? \"true\" : undefined}\n onPointerEnter={() => {\n setRows(r);\n setColumns(c);\n }}\n onClick={() => choose(r, c)}\n />\n )}\n </For>\n </div>\n )}\n </For>\n </div>\n <div class=\"k2b-ste-size-caption\" role=\"status\">\n {t().insertSize({ rows: rows() ?? 0, columns: columns() ?? 0 })}\n </div>\n </div>\n </>\n );\n}\n\ntype TableMenuTrigger = { text?: string; class?: string; size?: \"xs\" | \"sm\"; position?: DropdownPosition };\n/** Shared table controls for a host-owned toolbar (`toolbar={false}`). */\nexport type TextEditorControls = {\n /** A table cell has focus in the formatted view. */\n tableActive: () => boolean;\n /** The shared cell menu behind a host-styled trigger; on phones it opens as a sheet. */\n TableMenu: (props: TableMenuTrigger) => JSX.Element;\n /** Formats the focused cell's selection; `false` when no cell has focus. */\n formatCell: (format: InlineFormat) => boolean;\n /** Shows a host message, such as a server's reason for a rejected table action, in the editor's notice. */\n notify: (message: string) => void;\n};\n\nconst toolbar = [\n [\"bold\", \"bold\"],\n [\"italic\", \"italic\"],\n [\"heading\", \"heading\"],\n [\"bulletList\", \"list\"],\n [\"orderedList\", \"list-numbers\"],\n [\"quote\", \"quote\"],\n [\"link\", \"link\"],\n [\"code\", \"code\"],\n [\"table\", \"table\"],\n [\"rule\", \"separator\"],\n] as const;\nconst actionIcons = {\n rowAbove: \"row-insert-top\",\n rowBelow: \"row-insert-bottom\",\n colLeft: \"column-insert-left\",\n colRight: \"column-insert-right\",\n alignLeft: \"align-left\",\n alignCenter: \"align-center\",\n alignRight: \"align-right\",\n deleteRow: \"row-remove\",\n deleteCol: \"column-remove\",\n moveRowUp: \"arrow-up\",\n moveRowDown: \"arrow-down\",\n moveColLeft: \"arrow-left\",\n moveColRight: \"arrow-right\",\n toggleHeader: \"table-row\",\n deleteTable: \"trash\",\n} as const;\ntype MenuScope = \"row\" | \"column\" | \"cell\";\nconst isInlineCommand = (command: string): command is Extract<InlineFormat, string> => inlineCommands.has(command);\nconst shortcuts: Partial<Record<keyof typeof commands, string>> = { bold: \"mod+b\", italic: \"mod+i\", link: \"mod+k\" };\nconst inlineCommands = new Set<string>([\"bold\", \"italic\", \"code\", \"link\", \"strike\"]);\n\n/** A Markdown text field with app-injected collaboration and a directly editable table view. */\nexport function TextEditor(props: TextEditorProps) {\n const locale = useLocale();\n const t = () => textEditorMessages.resolve([locale()]).t;\n const [mode, setMode] = createSignal<TextEditorMode>(props.mode ?? \"formatted\");\n const status = children(() => props.status);\n const [ready, setReady] = createSignal(false);\n const [recovery, setRecovery] = createSignal<string>();\n const [notice, setNotice] = createSignal<{ message: string; images?: boolean }>();\n const [cell, setCell] = createSignal<HTMLElement>();\n const [localSource, setLocalSource] = createSignal(false);\n const [announcement, setAnnouncement] = createSignal(\"\");\n const [check, setCheck] = createSignal(false);\n const [missingSeparator, setMissingSeparator] = createSignal(false);\n const [active, setActive] = createSignal(false);\n const [documentRevision, setDocumentRevision] = createSignal(0);\n const [phoneMenu, setPhoneMenu] = createSignal(false);\n const [platform, setPlatform] = createSignal<KeyboardPlatform>(\"other\");\n /** What the open cell menu acts on: a row grip, a column grip, or the cell (right-click, keys, toolbar). */\n const [scope, setScope] = createSignal<MenuScope>(\"cell\");\n let grip: HTMLElement | undefined;\n createEffect(() => {\n const target = cell();\n const kind = scope();\n if (!target) return;\n if (kind === \"cell\") {\n target.setAttribute(\"data-active\", \"\");\n onCleanup(() => target.removeAttribute(\"data-active\"));\n return;\n }\n // A grip's menu marks its whole row or column, and the grip stays visible while the menu is open.\n const marked =\n kind === \"row\"\n ? [target.closest(\"tr\")]\n : [...(target.closest(\".k2b-ste-table\")?.querySelectorAll<HTMLElement>(`.k2b-ste-cell[data-c=\"${target.dataset.c}\"]`) ?? [])].map(\n (element) => element.parentElement,\n );\n const opener = grip;\n for (const element of marked) element?.setAttribute(\"data-marked\", \"\");\n opener?.setAttribute(\"data-open\", \"\");\n onCleanup(() => {\n for (const element of marked) element?.removeAttribute(\"data-marked\");\n opener?.removeAttribute(\"data-open\");\n });\n });\n let disposed = false;\n onCleanup(() => {\n disposed = true;\n const text = recovery();\n if (text !== undefined) detachedRecovery(text);\n });\n // A local draft can outlive an island during navigation. Keep its recovery\n // surface in the shared dialog root so disposal never silently drops it.\n const detachedRecovery = (text: string) => {\n const language = locale();\n const labels = t();\n const beforeUnload = (event: BeforeUnloadEvent) => {\n event.preventDefault();\n event.returnValue = \"\";\n };\n window.addEventListener(\"beforeunload\", beforeUnload);\n const show = () =>\n void dialogCore\n .open<\"discard\">(\n (close, context) => {\n context.setDismissHandler(() => {});\n return (\n <LocaleProvider locale={language}>\n <BottomSheet handle={false} onDismiss={() => {}}>\n <BottomSheet.Header title={labels.recoveredInput} />\n <BottomSheet.Body>\n <label class=\"k2b-ste-recovery-label\">\n {labels.recoveredInput}\n <textarea class=\"k2b-ste-recovery\" readOnly value={text} />\n </label>\n </BottomSheet.Body>\n <BottomSheet.Footer>\n <Button variant=\"ghost\" onClick={() => close(\"discard\")}>\n {labels.discardRecovery}\n </Button>\n </BottomSheet.Footer>\n </BottomSheet>\n </LocaleProvider>\n );\n },\n { ...bottomSheetAdaptiveOptions, ariaLabel: labels.recoveredInput },\n )\n .then((result) => {\n if (result === \"discard\") window.removeEventListener(\"beforeunload\", beforeUnload);\n // The shared dialog root closes on each island disposal. Retain the\n // draft across subsequent navigation until the person explicitly discards it.\n else queueMicrotask(show);\n });\n show();\n };\n let menuOpen = false;\n let openCellMenu: ((anchor: DropdownAnchor, returnFocus?: () => HTMLElement | undefined) => void) | undefined;\n let closeCellMenu: (() => void) | undefined;\n let copyTrigger: HTMLButtonElement | undefined;\n const tableTriggers = new Set<HTMLButtonElement>();\n let frame = 0;\n const [menuPosition, setMenuPosition] = createSignal({ left: \"0px\", top: \"0px\" });\n let root!: HTMLDivElement;\n let mount!: HTMLDivElement;\n let editor: TextEditorController | undefined;\n // The view is read-only while it loads or recovers, too; dictation only runs where words can land.\n const dictationWritable = () => !props.readOnly && !props.loading && ready() && recovery() === undefined && mode() !== \"plain\";\n const dictation = createDictation({\n source: {\n start: (options) => props.dictation!.source.start(options),\n devices: () => props.dictation?.source.devices() ?? Promise.resolve([]),\n },\n get alternative() {\n return props.dictation?.alternative;\n },\n target: codeMirrorDictationTarget(() => editor?.view),\n disabled: () => !props.dictation || !dictationWritable(),\n });\n // A field that turns read-only or plain hides the toolbar; dictation then ends and the words so far stay.\n // A memo compares the value, so ordinary edits never end it.\n const dictationScope = createMemo(() => `${Boolean(props.dictation)}:${dictationWritable()}`);\n createEffect(on(dictationScope, () => dictation.end(), { defer: true }));\n const dictating = () => Boolean(props.dictation) && dictationBarShown(dictation);\n const menuBlocked = () => !!props.loading || !ready() || recovery() !== undefined;\n const blocked = () => !!props.readOnly || menuBlocked();\n const updateCheck = () => {\n const issue =\n mode() === \"plain\"\n ? { extraCells: false, missingSeparator: false }\n : inspectTableStructure(editor?.view.state.doc.toString() ?? props.initialValue ?? \"\");\n const needsCheck = issue.extraCells || issue.missingSeparator;\n setMissingSeparator(issue.missingSeparator);\n setCheck(needsCheck);\n props.onTableCheck?.(needsCheck);\n };\n const positionMenu = () => {\n const target = cell();\n if (!target) return;\n const wrap = target.closest<HTMLElement>(\".k2b-ste-table\");\n const table = wrap?.querySelector(\"table\");\n if (!target.isConnected || !wrap || !table || mode() !== \"formatted\") {\n closeCellMenu?.();\n menuOpen = false;\n setCell(undefined);\n checkFocus();\n return;\n }\n // Only the read-only phone copy control sits below its table; every other menu opens beside its anchor.\n if (!props.readOnly) return;\n const bounds = root.getBoundingClientRect();\n setMenuPosition({\n left: `${wrap.getBoundingClientRect().left - bounds.left}px`,\n top: `${wrap.getBoundingClientRect().bottom - bounds.top - (window.matchMedia(\"(max-width: 47.999rem)\").matches ? 44 : 0)}px`,\n });\n };\n const schedulePosition = () => {\n if (!frame)\n frame = requestAnimationFrame(() => {\n frame = 0;\n positionMenu();\n });\n };\n const unavailable = () => !!props.host?.structure && !props.host.structure.available();\n const actionDisabled = (action: MenuAction) => {\n documentRevision();\n const wrap = cell()?.closest<HTMLElement>(\".k2b-ste-table\");\n return blocked() || !editor || !wrap || !tableActionEnabled(editor.view, wrap, action);\n };\n const isMove = (action: MenuAction) => action.startsWith(\"move\");\n const runAction = (action: MenuAction) => {\n const wrap = cell()?.closest<HTMLElement>(\".k2b-ste-table\");\n const focused = document.activeElement;\n const menuElement = focused instanceof HTMLElement ? focused.closest<HTMLElement>('[role=\"menu\"]') : null;\n if (editor && wrap && !actionDisabled(action)) runMenuAction(editor.view, wrap, action);\n // The phone move sheet remains usable for another move. Local structural\n // focus belongs to the cell only after the menu has closed.\n if (isMove(action) && focused instanceof HTMLElement && menuElement) {\n const restore = () => {\n if (disposed || !menuElement.isConnected) return;\n const target =\n focused.isConnected && !focused.matches(\":disabled\")\n ? focused\n : menuElement.querySelector<HTMLElement>('[role^=\"menuitem\"]:not(:disabled)');\n target?.focus({ preventScroll: true });\n };\n restore();\n queueMicrotask(restore);\n }\n };\n const moveKeys: Partial<Record<MenuAction, string>> = {\n moveRowUp: \"alt+arrowup\",\n moveRowDown: \"alt+arrowdown\",\n moveColLeft: \"alt+arrowleft\",\n moveColRight: \"alt+arrowright\",\n };\n const shortActionLabels = {\n rowAbove: \"menuAbove\",\n rowBelow: \"menuBelow\",\n moveRowUp: \"menuUp\",\n moveRowDown: \"menuDown\",\n deleteRow: \"menuDelete\",\n colLeft: \"menuInsertLeft\",\n colRight: \"menuInsertRight\",\n moveColLeft: \"menuMoveLeft\",\n moveColRight: \"menuMoveRight\",\n deleteCol: \"menuDelete\",\n } as const;\n const menuRow = () => {\n documentRevision();\n return t().menuRow(Number(cell()?.dataset.r ?? 0));\n };\n const menuColumn = () => {\n documentRevision();\n const column = Number(cell()?.dataset.c ?? 0);\n const header = cell()?.closest(\".k2b-ste-table\")?.querySelector<HTMLElement>(`.k2b-ste-cell[data-r=\"0\"][data-c=\"${column}\"]`);\n return t().menuColumn(header?.dataset.raw || t().column(column + 1));\n };\n const menuHeading = (kind: MenuScope = scope()) =>\n kind === \"row\" ? menuRow() : kind === \"column\" ? menuColumn() : `${menuRow()} · ${menuColumn()}`;\n const actionItem = (\n action: keyof typeof actionIcons,\n choice?: Pick<DropdownChoice, \"choice\" | \"checked\" | \"class\" | \"ariaLabel\">,\n kind: MenuScope = \"cell\",\n ) =>\n ({\n get label() {\n // A grip's sheet has no row or column heading over its entries, so deleting keeps its full name.\n const short = phoneMenu() && action in shortActionLabels && !(kind !== \"cell\" && action.startsWith(\"delete\"));\n return short ? t()[shortActionLabels[action as keyof typeof shortActionLabels]] : t()[action];\n },\n icon: `ti ti-${actionIcons[action]}`,\n get disabled() {\n return actionDisabled(action);\n },\n immediate: true,\n trailing: moveKeys[action] ? <Kbd keys={moveKeys[action]!} /> : action === \"rowBelow\" ? <Kbd keys=\"enter\" /> : undefined,\n variant: action === \"deleteRow\" || action === \"deleteCol\" || action === \"deleteTable\" ? \"danger\" : undefined,\n closeOnSelect: !isMove(action),\n action: () => runAction(action),\n ...choice,\n }) satisfies DropdownAction;\n const [copying, setCopying] = createSignal(false);\n const tableCopy = clipboard.createWriter({\n write: ({ view, wrap, format }: { view: EditorView; wrap: HTMLElement; format: \"table\" | \"markdown\" }) => copyTable(view, wrap, format),\n });\n const copy = async (format: \"table\" | \"markdown\") => {\n const wrap = cell()?.closest<HTMLElement>(\".k2b-ste-table\");\n if (!editor || !wrap || copying()) return;\n setCopying(true);\n setNotice({ message: t().copyingTable });\n const success = await tableCopy.copy({ view: editor.view, wrap, format });\n if (disposed) return;\n setCopying(false);\n setNotice({ message: success ? (format === \"table\" ? t().copiedTable : t().copiedMarkdown) : t().copyFailed });\n };\n const copyItems = (): DropdownAction[] => [\n {\n get label() {\n return phoneMenu() && !props.readOnly ? t().menuCopy : t().copyTable;\n },\n icon: \"ti ti-copy\",\n get disabled() {\n return copying();\n },\n immediate: true,\n action: () => {\n void copy(\"table\");\n },\n },\n {\n get label() {\n return phoneMenu() && !props.readOnly ? t().menuMarkdown : t().copyMarkdown;\n },\n icon: \"ti ti-markdown\",\n get disabled() {\n return copying();\n },\n immediate: true,\n action: () => {\n void copy(\"markdown\");\n },\n },\n ];\n /** The row grip shows row and table actions, the column grip column, alignment and table actions; the rest everything. */\n const items = (kind: MenuScope): DropdownItem[] => {\n if (props.readOnly) return copyItems();\n const align = () => {\n documentRevision();\n return cell()?.parentElement?.style.textAlign || \"left\";\n };\n const row: DropdownItem[] = [\n {\n get sectionLabel() {\n return kind === \"cell\" ? menuRow() : undefined;\n },\n items: ([\"rowAbove\", \"rowBelow\", \"moveRowUp\", \"moveRowDown\", \"deleteRow\"] as const).map((action) =>\n actionItem(action, undefined, kind),\n ),\n },\n ];\n const column: DropdownItem[] = [\n {\n get sectionLabel() {\n return kind === \"cell\" ? menuColumn() : undefined;\n },\n items: ([\"colLeft\", \"colRight\", \"moveColLeft\", \"moveColRight\"] as const).map((action) => actionItem(action)),\n },\n {\n sectionLabel: t().alignment,\n layout: \"row\",\n items: ([\"alignLeft\", \"alignCenter\", \"alignRight\"] as const).map((action, index) =>\n actionItem(action, {\n choice: \"radio\",\n class: \"k2b-ste-align-choice\",\n ariaLabel: t()[action],\n checked: () => align() === [\"left\", \"center\", \"right\"][index],\n }),\n ),\n },\n { items: [actionItem(\"deleteCol\", undefined, kind)] },\n ];\n return [\n {\n get sectionLabel() {\n return menuHeading(kind);\n },\n items: [],\n },\n ...(kind === \"column\" ? [] : row),\n ...(kind === \"row\" ? [] : column),\n {\n sectionLabel: t().table,\n items: [\n actionItem(\"toggleHeader\", {\n choice: \"checkbox\",\n class: \"k2b-ste-header-choice\",\n checked: () => {\n documentRevision();\n return cell()?.closest<HTMLElement>(\".k2b-ste-table\")?.dataset.header === \"true\";\n },\n }),\n {\n label: t().editMarkdown,\n icon: \"ti ti-markdown\",\n action: () => {\n const wrap = cell()?.closest<HTMLElement>(\".k2b-ste-table\");\n if (editor && wrap) editTableSource(editor.view, wrap);\n },\n },\n ...copyItems(),\n actionItem(\"deleteTable\"),\n ...(unavailable() ? [{ label: t().structureUnavailable, disabled: true as const }] : []),\n ],\n },\n ];\n };\n const preserveSelection = (event: MouseEvent) => event.preventDefault();\n const menuChange = (open: boolean) => {\n menuOpen = open;\n };\n // A press beside an open table menu only closes it: no cell takes focus, no\n // text is selected and no column is marked. The menu's light dismiss closes it.\n let tableMenuOpen = false;\n const tableMenuChange = (open: boolean) => {\n menuOpen = open;\n tableMenuOpen = open && !phoneMenu();\n };\n let swallow: AbortController | undefined;\n const pressBesideMenu = (event: PointerEvent) => {\n swallow?.abort();\n if (!tableMenuOpen || (event.target instanceof Element && event.target.closest(\".k2b-ste-table-menu\"))) return;\n event.stopPropagation();\n const current = new AbortController();\n swallow = current;\n const block = (blocked: Event) => {\n blocked.preventDefault();\n blocked.stopPropagation();\n if (blocked.type === \"click\" || blocked.type === \"contextmenu\") current.abort();\n };\n for (const type of [\"mousedown\", \"mouseup\", \"click\", \"contextmenu\"])\n document.addEventListener(type, block, { capture: true, signal: current.signal });\n // Only this press is swallowed: its click follows the release in the same task, and a cancelled press never\n // clicks. A key other than a modifier, which may come with the press, starts new input.\n const end = () => current.abort();\n document.addEventListener(\"pointerup\", () => setTimeout(end), { capture: true, once: true, signal: current.signal });\n document.addEventListener(\"pointercancel\", end, { capture: true, once: true, signal: current.signal });\n document.addEventListener(\n \"keydown\",\n (key) => {\n if (![\"Shift\", \"Control\", \"Alt\", \"Meta\"].includes(key.key)) end();\n },\n { capture: true, signal: current.signal },\n );\n };\n const menuClose = () => {\n menuOpen = false;\n tableMenuOpen = false;\n setScope(\"cell\");\n grip = undefined;\n schedulePosition();\n queueMicrotask(() => {\n if (disposed) return;\n const focused = document.activeElement;\n if (focused instanceof HTMLElement && focused.matches(\".k2b-ste-copy-menu, .k2b-ste-table-tool\")) cell()?.focus();\n checkFocus();\n });\n };\n const sheetTop = (kind: () => MenuScope) =>\n props.readOnly\n ? undefined\n : (close: () => void) => (\n <div class=\"k2b-ste-table-sheet-heading\">\n <span title={menuHeading(kind())}>{menuHeading(kind())}</span>\n <Button variant=\"ghost\" onClick={close}>\n {t().done}\n </Button>\n </div>\n );\n const menuLabel = () => (props.readOnly ? t().copyTable : t().tableMenu);\n const menuDisabled = () => menuBlocked() || localSource() || !cell()?.isConnected;\n // A sheet owns its item inventory until it closes. Replace that owner when\n // edit access changes so an already open sheet cannot retain edit entries.\n /** The toolbar's table button: the whole menu for the focused cell. */\n const menu = (trigger?: TableMenuTrigger) => (\n <Show when={props.readOnly ? \"read\" : \"write\"} keyed>\n {(_access) => (\n <Dropdown\n items={items(\"cell\")}\n phone=\"sheet\"\n sheetTop={sheetTop(() => \"cell\")}\n menuClass=\"k2b-ste-table-menu\"\n position={trigger?.position ?? \"bottom-right\"}\n width=\"18rem\"\n label={menuLabel()}\n disabled={menuDisabled()}\n onOpenChange={tableMenuChange}\n onClose={menuClose}\n >\n <Dropdown.Trigger\n ref={(element) => {\n tableTriggers.add(element);\n onCleanup(() => tableTriggers.delete(element));\n }}\n class={`k2b-ste-tool k2b-ste-table-tool ${trigger?.class ?? \"\"}`}\n variant=\"ghost\"\n size={trigger?.size ?? \"sm\"}\n iconOnly={!trigger?.text}\n label={trigger?.text ?? t().tableMenu}\n aria-pressed={true}\n onMouseDown={preserveSelection}\n >\n <i class=\"ti ti-table\" aria-hidden=\"true\" />\n {trigger?.text}\n <Show when={trigger?.text}>\n <i class=\"ti ti-chevron-down\" aria-hidden=\"true\" />\n </Show>\n </Dropdown.Trigger>\n </Dropdown>\n )}\n </Show>\n );\n /** Grips, right-click and Shift+F10 open this menu beside its anchor; it has no button of its own. */\n const cellMenu = () => (\n <Show when={props.readOnly ? \"read\" : \"write\"} keyed>\n {(_access) => (\n <Dropdown\n items={items(scope())}\n phone=\"sheet\"\n sheetTop={sheetTop(scope)}\n menuClass=\"k2b-ste-table-menu\"\n position=\"bottom-right\"\n width=\"18rem\"\n label={menuLabel()}\n disabled={menuDisabled()}\n onOpenChange={tableMenuChange}\n onClose={menuClose}\n openAt={(open) => {\n openCellMenu = open;\n }}\n closeWith={(close) => {\n closeCellMenu = close;\n }}\n >\n {/* Phones have no right-click: a read-only table keeps a visible copy control below it. */}\n <Show when={props.readOnly && cell() && mode() === \"formatted\" && !menuBlocked()}>\n <Dropdown.Trigger\n ref={(element) => {\n copyTrigger = element;\n }}\n class=\"k2b-ste-copy-menu\"\n variant=\"ghost\"\n size=\"sm\"\n label={t().copyTable}\n onMouseDown={preserveSelection}\n >\n <i class=\"ti ti-copy\" aria-hidden=\"true\" />\n {t().copyTable}\n </Dropdown.Trigger>\n </Show>\n </Dropdown>\n )}\n </Show>\n );\n const runFormat = (command: keyof typeof commands) => {\n if (!editor || blocked()) return;\n if (cell()?.isConnected && isInlineCommand(command) && formatActiveCell(editor.view, command)) return;\n commands[command](editor.view);\n };\n const checkFocus = () => {\n if (disposed) return;\n // A host toolbar sits outside this root. Native popover focus moves before\n // its toggle callback, but Dropdown already exposes its synchronous state.\n if (\n menuOpen ||\n [...tableTriggers, copyTrigger].some((trigger) => trigger?.isConnected && trigger.getAttribute(\"aria-expanded\") === \"true\")\n )\n return;\n const focused = document.activeElement;\n setLocalSource(focused instanceof HTMLElement && !!focused.closest(\".k2b-ste-table-source\"));\n const inside = focused instanceof Node && root.contains(focused);\n setActive(inside);\n if (!inside || focused === editor?.view.contentDOM) setCell(undefined);\n else if (!cell()?.isConnected) setCell(undefined);\n };\n const formatMenu = (command: \"heading\" | \"code\") => (\n <Dropdown\n phone=\"sheet\"\n label={t()[command]}\n disabled={blocked() || (command === \"heading\" && !!cell())}\n onOpenChange={menuChange}\n onClose={menuClose}\n items={\n command === \"heading\"\n ? [\n {\n items: ([\"heading1\", \"heading2\", \"heading3\"] as const).map((name, index) => ({\n label: t()[name],\n icon: `ti ti-h-${index + 1}`,\n action: () => runFormat(name),\n })),\n },\n ]\n : [\n { label: t().inlineCode, icon: \"ti ti-code\", action: () => runFormat(\"code\") },\n { label: t().codeBlock, icon: \"ti ti-source-code\", disabled: !!cell(), action: () => runFormat(\"codeBlock\") },\n { label: t().strike, icon: \"ti ti-strikethrough\", trailing: <Kbd keys=\"mod+shift+x\" />, action: () => runFormat(\"strike\") },\n ]\n }\n >\n <Dropdown.Trigger class=\"k2b-ste-tool\" variant=\"ghost\" size=\"sm\" iconOnly label={t()[command]} onMouseDown={preserveSelection}>\n <i class={`ti ti-${command}`} aria-hidden=\"true\" />\n </Dropdown.Trigger>\n </Dropdown>\n );\n const selectMode = (next: TextEditorMode) => {\n // Returning from the source view removes its switch; keyboard focus then moves into the text.\n const restoreEditorFocus =\n !!editor?.view.contentDOM.contains(document.activeElement) ||\n !!root.querySelector(\".k2b-ste-views\")?.contains(document.activeElement);\n menuOpen = false;\n setCell(undefined);\n setMode(next);\n props.onModeChange?.(next);\n if (restoreEditorFocus) queueMicrotask(() => editor?.view.focus());\n };\n onMount(() => {\n setPlatform(keyboardPlatform());\n const menuMedia = window.matchMedia(\"(max-width: 47.999rem)\");\n const menuViewport = () => setPhoneMenu(menuMedia.matches);\n menuViewport();\n menuMedia.addEventListener(\"change\", menuViewport);\n onCleanup(() => menuMedia.removeEventListener(\"change\", menuViewport));\n // A standalone editor has no binding history; collaboration supplies its own instead.\n const nativeHistory = !props.host?.undo;\n editor = createTextEditor({\n parent: mount,\n doc: props.initialValue,\n mode: mode(),\n label: props.label,\n readOnly: props.readOnly,\n placeholder: props.placeholder,\n presentation: props.presentation,\n extensions: [\n nativeHistory ? [history(), keymap.of(historyKeymap)] : [],\n formatLabels.of({\n get link() {\n return t().link;\n },\n column: (column) => t().column(column),\n }),\n EditorView.updateListener.of((update) => {\n schedulePosition();\n if (update.docChanged) queueMicrotask(() => setDocumentRevision((revision) => revision + 1));\n }),\n // The caret never moves under a toolbar that stays at the top of a scrolling host.\n EditorView.scrollMargins.of(() => {\n const slot = root.querySelector<HTMLElement>(\".k2b-ste-toolbar-slot\");\n return slot && getComputedStyle(slot).position === \"sticky\" ? { top: slot.offsetHeight } : null;\n }),\n props.extensions ?? [],\n props.dictation ? dictationExtension() : [],\n ],\n host: {\n ...props.host,\n undo: props.host?.undo ?? (() => editor && undo(editor.view)),\n redo: props.host?.redo ?? (() => editor && redo(editor.view)),\n boundary: props.host?.boundary ?? (() => {}),\n cellLabel: (row, column, name) => t().cellLabel({ row, column, name }),\n actionLabel: (name) => t()[name],\n sourceLabels: () => ({\n edit: t().editMarkdown,\n valid: t().markdownValid,\n invalid: t().markdownInvalid,\n changed: t().markdownChanged,\n structural: t().markdownStructural,\n applying: t().applyingTable,\n applyFailed: t().markdownApplyFailed,\n done: phoneMenu() ? t().done : t().showTable,\n discard: t().discardMarkdown,\n continue: t().continueMarkdown,\n line: t().markdownLine,\n separator: (header, separator) => t().markdownSeparator({ header, separator }),\n extra: t().markdownExtra,\n complete: t().completeColumns,\n }),\n maxLength: props.maxLength,\n maxPasteCells: props.maxPasteCells ?? 2000,\n onRecovery: (text) => {\n if (disposed) detachedRecovery(text);\n else setRecovery((previous) => (previous === undefined ? text : `${previous}\\n\\n${text}`));\n },\n onError: (code) => setNotice({ message: t()[code] }),\n },\n onChange: (text) => {\n props.onChange?.(text);\n queueMicrotask(updateCheck);\n },\n onDroppedImages: (count, files) => {\n if (props.onDroppedImages?.(count, files) !== true) setNotice({ message: t().imageHint, images: true });\n },\n });\n const focus = (event: Event) => {\n if (!(event instanceof CustomEvent) || !(event.detail.cell instanceof HTMLElement)) return;\n setActive(true);\n setCell(event.detail.cell);\n positionMenu();\n };\n const structureAnnouncement = (event: Event) => {\n if (!(event instanceof CustomEvent)) return;\n const detail: unknown = event.detail;\n if (\n detail &&\n typeof detail === \"object\" &&\n \"rows\" in detail &&\n \"columns\" in detail &&\n typeof detail.rows === \"number\" &&\n typeof detail.columns === \"number\"\n )\n setAnnouncement(t().tableChanged({ rows: detail.rows, columns: detail.columns }));\n };\n const focusChange = () => queueMicrotask(checkFocus);\n let pointerCheck: ReturnType<typeof setTimeout> | undefined;\n const pointer = (event: PointerEvent) => {\n if (event.target instanceof Node && root.contains(event.target)) setActive(true);\n // After the press moved focus: a host toolbar control that keeps focus in the cell keeps it active.\n else if (!menuOpen) {\n clearTimeout(pointerCheck);\n pointerCheck = setTimeout(checkFocus);\n }\n };\n // A grip opens its row's or column's menu below itself; right-click opens\n // at the pointer and a key below the cell. Focus returns to the cell.\n const keyboardMenu = (event: Event) => {\n if (menuBlocked() || menuOpen || !(event instanceof CustomEvent) || !(event.detail.cell instanceof HTMLElement)) return;\n const target: HTMLElement = event.detail.cell;\n const opener = event.detail.anchor instanceof HTMLElement ? event.detail.anchor : undefined;\n const kind: MenuScope = event.detail.scope === \"row\" || event.detail.scope === \"column\" ? event.detail.scope : \"cell\";\n const { x, y } = event.detail;\n let anchor: DropdownAnchor = opener ?? target;\n if (!opener && typeof x === \"number\" && typeof y === \"number\") {\n // Keep the pointer's place inside the cell, so the menu follows it while the page scrolls.\n const start = target.getBoundingClientRect();\n anchor = {\n getBoundingClientRect: () => {\n const box = target.getBoundingClientRect();\n const left = box.left + x - start.left;\n const top = box.top + y - start.top;\n return { left, top, right: left, bottom: top };\n },\n };\n }\n grip = opener;\n setScope(kind);\n focus(event);\n // Focus returns to the menu's cell as it closes; moving a row or column moves that cell.\n queueMicrotask(() => {\n if (!disposed && cell()?.isConnected) openCellMenu?.(anchor, () => cell());\n });\n };\n const mutations = new MutationObserver(schedulePosition);\n mutations.observe(mount, { childList: true, subtree: true, characterData: true });\n const resize = new ResizeObserver(schedulePosition);\n resize.observe(mount);\n // Safari blurs a contenteditable on mouse-down without focusing the radio.\n // Keep the caret and phone toolbar stationary until the view switch runs.\n const viewMouseDown = (event: MouseEvent) => {\n if (event.target instanceof Element && event.target.closest(\".k2b-ste-views\")) event.preventDefault();\n };\n root.addEventListener(\"mousedown\", viewMouseDown);\n document.addEventListener(\"focusin\", focusChange);\n document.addEventListener(\"pointerdown\", pointer);\n document.addEventListener(\"pointerdown\", pressBesideMenu, true);\n root.addEventListener(\"k2b-ste-table-structure\", structureAnnouncement);\n root.addEventListener(\"k2b-ste-cell-focus\", focus);\n root.addEventListener(\"k2b-ste-cell-blur\", focusChange);\n root.addEventListener(\"k2b-ste-cell-menu\", keyboardMenu);\n window.addEventListener(\"scroll\", schedulePosition, true);\n window.addEventListener(\"resize\", schedulePosition);\n const viewport = window.visualViewport;\n const keyboard = () =>\n root.style.setProperty(\n \"--k2b-ste-keyboard\",\n `${Math.max(0, window.innerHeight - (viewport?.height ?? window.innerHeight) - (viewport?.offsetTop ?? 0))}px`,\n );\n viewport?.addEventListener(\"resize\", keyboard);\n viewport?.addEventListener(\"scroll\", keyboard);\n keyboard();\n setReady(true);\n updateCheck();\n props.onReady?.(editor, {\n tableActive: () => mode() === \"formatted\" && !!cell()?.isConnected,\n TableMenu: (trigger) => menu(trigger),\n formatCell: (format) => !!editor && !blocked() && !!cell()?.isConnected && formatActiveCell(editor.view, format),\n notify: (message) => setNotice({ message }),\n });\n onCleanup(() => {\n clearTimeout(pointerCheck);\n mutations.disconnect();\n resize.disconnect();\n cancelAnimationFrame(frame);\n root.removeEventListener(\"mousedown\", viewMouseDown);\n document.removeEventListener(\"focusin\", focusChange);\n document.removeEventListener(\"pointerdown\", pointer);\n document.removeEventListener(\"pointerdown\", pressBesideMenu, true);\n swallow?.abort();\n root.removeEventListener(\"k2b-ste-table-structure\", structureAnnouncement);\n root.removeEventListener(\"k2b-ste-cell-focus\", focus);\n root.removeEventListener(\"k2b-ste-cell-blur\", focusChange);\n root.removeEventListener(\"k2b-ste-cell-menu\", keyboardMenu);\n window.removeEventListener(\"scroll\", schedulePosition, true);\n window.removeEventListener(\"resize\", schedulePosition);\n viewport?.removeEventListener(\"resize\", keyboard);\n viewport?.removeEventListener(\"scroll\", keyboard);\n editor?.destroy();\n });\n });\n createEffect(() => {\n if (props.mode !== undefined) setMode(props.mode);\n });\n createEffect(() => {\n if (ready()) {\n const next = mode();\n // Rendering the grid consults reactive host availability. Those reads\n // must not turn a history notification into a nested mode reconfigure.\n untrack(() => {\n menuOpen = false;\n setCell(undefined);\n editor?.setMode(next);\n updateCheck();\n });\n }\n });\n createEffect(() => {\n const label = props.label;\n if (ready()) untrack(() => editor?.setLabel(label));\n });\n createEffect(() => {\n const readOnly = !!props.readOnly || !!props.loading || recovery() !== undefined;\n if (ready()) untrack(() => editor?.setReadOnly(readOnly));\n });\n createEffect(() => {\n documentRevision();\n const disabled = blocked() || unavailable();\n if (ready())\n root.querySelectorAll<HTMLButtonElement>(\".k2b-ste-addColumn\").forEach((button) => {\n button.disabled = disabled;\n });\n });\n return (\n <div\n ref={root}\n class={`k2b-text-editor ${props.class ?? \"\"}`}\n data-mode={mode()}\n data-readonly={props.readOnly ? \"true\" : undefined}\n data-active={active() ? \"true\" : undefined}\n aria-busy={props.loading || !ready()}\n >\n <span class=\"k2b-ste-announcement\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {announcement()}\n </span>\n <Show when={(status() !== undefined && status() !== null && status() !== false) || check()}>\n <div class=\"k2b-ste-status\" role=\"status\">\n <span>{status()}</span>\n <Show when={check()}>\n <span class=\"k2b-ste-check\" title={missingSeparator() ? t().checkSeparatorDetail : t().checkTableDetail}>\n <i class=\"ti ti-alert-triangle\" aria-hidden=\"true\" />\n {t().checkTable}\n </span>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={blocked() || (!missingSeparator() && unavailable())}\n hidden={props.readOnly}\n tooltip={missingSeparator() ? t().checkSeparatorDetail : unavailable() ? t().structureUnavailable : t().checkTableDetail}\n onMouseDown={preserveSelection}\n onClick={() => {\n if (!editor) return;\n if (missingSeparator()) {\n selectMode(\"source\");\n queueMicrotask(() => editor?.view.focus());\n return;\n }\n const table = findTables(editor.view.state.doc.toString()).find((table) =>\n table.lines.some((row) => row.cells.length > table.columns),\n );\n if (table) runTableAction(editor.view, table.from, 0, 0, \"completeColumns\");\n }}\n >\n {missingSeparator() ? t().reviewMarkdown : t().completeColumns}\n </Button>\n </Show>\n </div>\n </Show>\n <Show when={!props.readOnly && mode() !== \"plain\" && props.toolbar !== false}>\n <div class=\"k2b-ste-toolbar-slot\">\n <Toolbar class=\"k2b-ste-toolbar\" label={t().formatting}>\n <Show when={dictating()}>\n <DictationBar dictation={dictation} />\n </Show>\n <For each={dictating() ? [] : [toolbar.slice(0, 3), toolbar.slice(3, 6), toolbar.slice(6)]}>\n {(group) => (\n <Toolbar.Group class=\"k2b-ste-tool-group\">\n <For each={group}>\n {([command, icon]) =>\n command === \"heading\" || command === \"code\" ? (\n formatMenu(command)\n ) : (\n <Show\n when={command === \"table\" && mode() === \"formatted\" && cell()?.isConnected}\n fallback={\n <IconButton\n class=\"k2b-ste-tool\"\n variant=\"ghost\"\n size=\"sm\"\n label={t()[command]}\n tooltip={\n shortcuts[command]\n ? `${t()[command]} (${formatShortcut(shortcuts[command] ?? \"\", { platform: platform(), locale: locale() }).label})`\n : t()[command]\n }\n disabled={blocked() || (!!cell() && !inlineCommands.has(command) && command !== \"table\")}\n onMouseDown={preserveSelection}\n onClick={() => runFormat(command)}\n >\n <i class={`ti ti-${icon}`} aria-hidden=\"true\" />\n </IconButton>\n }\n >\n {menu()}\n </Show>\n )\n }\n </For>\n </Toolbar.Group>\n )}\n </For>\n {/* Editing is always formatted. Only a source view reached through the table check offers the way back. */}\n <Show when={mode() === \"source\" && !dictating()}>\n <SegmentedControl\n class=\"k2b-ste-views\"\n size=\"sm\"\n ariaLabel={t().view}\n value=\"source\"\n options={[\n { value: \"formatted\", label: t().formatted, icon: \"ti ti-typography\" },\n { value: \"source\", label: t().source, icon: \"ti ti-markdown\" },\n ]}\n onValueChange={selectMode}\n />\n </Show>\n <Show when={props.dictation && !dictating()}>\n <DictationButton dictation={dictation} class=\"k2b-ste-tool k2b-ste-dictate\" />\n </Show>\n </Toolbar>\n </div>\n </Show>\n <Show when={props.loading || !ready()}>\n <div class=\"k2b-ste-loading\" role=\"status\" aria-label={t().loading}>\n <For each={[82, 100, 68, 0, 96, 74]}>\n {(width) => (\n <div>\n <span style={{ width: `${width}%` }} />\n </div>\n )}\n </For>\n </div>\n </Show>\n <div ref={mount} class={props.presentation ? \"k2b-ste-app-host\" : \"k2b-ste-host\"} hidden={props.loading || !ready()} />\n <div class=\"k2b-ste-floating-menu\" style={menuPosition()}>\n {cellMenu()}\n </div>\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n <Show when={notice() || recovery() !== undefined}>\n <div class=\"k2b-ste-notice\">\n <div class=\"k2b-ste-notice-content\">\n <Show when={notice()}>\n <Show when={notice()?.images && props.onAttachImages} fallback={<span>{notice()?.message}</span>}>\n <Button size=\"sm\" variant=\"ghost\" disabled={blocked()} onClick={() => props.onAttachImages?.()}>\n {notice()?.message}\n </Button>\n </Show>\n </Show>\n <Show when={recovery() !== undefined}>\n <label class=\"k2b-ste-recovery-label\">\n {t().recoveredInput}\n <textarea class=\"k2b-ste-recovery\" readOnly value={recovery()} />\n </label>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => {\n setRecovery(undefined);\n if (notice()?.message === t().cellRemoved) setNotice(undefined);\n }}\n >\n {t().discardRecovery}\n </Button>\n </Show>\n </div>\n <Show when={notice()}>\n <IconButton size=\"sm\" variant=\"ghost\" label={t().dismiss} onClick={() => setNotice(undefined)}>\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </IconButton>\n </Show>\n </div>\n </Show>\n </div>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["text-editor/TextEditor.tsx"],"sourcesContent":["import { history, historyKeymap, redo, undo } from \"@codemirror/commands\";\nimport type { Extension } from \"@codemirror/state\";\nimport { EditorView, keymap } from \"@codemirror/view\";\nimport { clipboard } from \"@k2b/stdlib/solid\";\nimport {\n children,\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n For,\n type JSX,\n on,\n onCleanup,\n onMount,\n Show,\n untrack,\n} from \"solid-js\";\nimport { Button, IconButton } from \"../actions/Button\";\nimport {\n Dropdown,\n type DropdownAction,\n type DropdownAnchor,\n type DropdownChoice,\n type DropdownItem,\n type DropdownPosition,\n} from \"../actions/Dropdown\";\nimport { SegmentedControl } from \"../actions/SegmentedControl\";\nimport { Toolbar } from \"../actions/Toolbar\";\nimport { Kbd } from \"../content/Kbd\";\nimport { dialogCore } from \"../feedback/dialog-core\";\nimport { createDictation } from \"../inputs/dictation/create-dictation\";\nimport { DictationBar, DictationButton, dictationBarShown } from \"../inputs/dictation/Dictation\";\nimport type { DictationAlternative, DictationSource } from \"../inputs/dictation/types\";\nimport { NumberInput } from \"../inputs/NumberInput\";\nimport { LocaleProvider, useLocale } from \"../intl/locale\";\nimport { formatShortcut, type KeyboardPlatform, keyboardPlatform } from \"../intl/shortcut\";\nimport BottomSheet, { bottomSheetAdaptiveOptions } from \"../layout/BottomSheet\";\nimport { codeMirrorDictationTarget, dictationExtension } from \"./dictation\";\nimport { createTextEditor, type TextEditorController, type TextEditorMode, type TextEditorOptions } from \"./engine\";\nimport { commands, formatLabels, type InlineFormat } from \"./format\";\nimport { findTables, inspectTableStructure } from \"./markdown-table\";\nimport { textEditorMessages } from \"./messages\";\nimport {\n copyTable,\n editTableSource,\n formatActiveCell,\n type MenuAction,\n runMenuAction,\n runTableAction,\n type TableHost,\n tableActionEnabled,\n} from \"./table\";\n\nexport type TextEditorProps = {\n label: string;\n initialValue?: string;\n mode?: TextEditorMode;\n onModeChange?: (mode: TextEditorMode) => void;\n readOnly?: boolean;\n loading?: boolean;\n placeholder?: string;\n extensions?: Extension;\n /** Host-owned Markdown presentation; see `createTextEditor`. The host then also styles the editor surface. */\n presentation?: TextEditorOptions[\"presentation\"];\n /** `false` when the host renders its own formatting toolbar and mode control; place `controls.TableMenu` in it. */\n toolbar?: boolean;\n /** Collaboration supplies history and server-owned structure here. */\n host?: Pick<TableHost, \"structure\" | \"renderCell\" | \"onCellSelection\" | \"tabMovesFocus\"> &\n Partial<Pick<TableHost, \"undo\" | \"redo\" | \"boundary\">>;\n maxLength: number;\n maxPasteCells?: number;\n onChange?: (text: string) => void;\n onReady?: (editor: TextEditorController, controls: TextEditorControls) => void;\n /** Return `true` when the host attached the images itself; otherwise the editor shows its attachment hint. */\n onDroppedImages?: (count: number, files: File[]) => boolean | void;\n /** Opens the host's attachment picker when clipboard images cannot be inserted. */\n onAttachImages?: () => void;\n onTableCheck?: (needsCheck: boolean) => void;\n /** Host-owned sync status. Its row appears only while there is a status or a table check; keep it set across transitions. */\n status?: JSX.Element;\n /**\n * Live dictation as the last control of the toolbar, so it never scrolls away. While it runs, the dictation bar\n * stands in for the formatting controls in the same row. Words land at the caret as typed text does.\n */\n dictation?: { source: DictationSource; alternative?: DictationAlternative };\n class?: string;\n};\n\nexport type TableSizePickerProps = {\n maxRows: number;\n maxColumns: number;\n onPick: (size: { rows: number; columns: number }) => void;\n /** Share this picker with slash commands or secondary menus. */\n onReady?: (open: () => void) => void;\n disabled?: boolean;\n class?: string;\n size?: \"xs\" | \"sm\";\n};\n\n/** Shared table-size control: pointer grid on desktop, large fields in a phone sheet. */\nexport function TableSizePicker(props: TableSizePickerProps) {\n const locale = useLocale();\n const t = () => textEditorMessages.resolve([locale()]).t;\n const [rows, setRows] = createSignal<number | null>(3);\n const [columns, setColumns] = createSignal<number | null>(3);\n const [expanded, setExpanded] = createSignal(false);\n const id = createUniqueId();\n const abort = new AbortController();\n let disposed = false;\n onCleanup(() => {\n disposed = true;\n abort.abort();\n });\n let trigger!: HTMLButtonElement;\n let popup!: HTMLDivElement;\n const reset = () => {\n setRows(Math.min(3, props.maxRows));\n setColumns(Math.min(3, props.maxColumns));\n };\n const choose = (r: number, c: number) => {\n popup.hidePopover();\n if (!disposed && !props.disabled) props.onPick({ rows: r, columns: c });\n };\n const open = async () => {\n if (disposed || props.disabled || expanded()) return;\n reset();\n if (!window.matchMedia(\"(max-width: 47.999rem)\").matches) {\n popup.showPopover();\n const anchor = trigger.getBoundingClientRect(),\n box = popup.getBoundingClientRect();\n popup.style.left = `${Math.max(8, Math.min(anchor.left, innerWidth - box.width - 8))}px`;\n popup.style.top = `${Math.max(8, anchor.top > box.height + 8 ? anchor.top - box.height - 8 : Math.min(anchor.bottom + 8, innerHeight - box.height - 8))}px`;\n popup.focus();\n return;\n }\n setExpanded(true);\n const chosen = await dialogCore.open<{ rows: number; columns: number }>(\n (close, context) => (\n <LocaleProvider locale={locale()}>\n <BottomSheet onDismiss={context.requestDismiss}>\n <BottomSheet.Header title={t().insertTable} close={context.requestDismiss} />\n <BottomSheet.Body>\n <div class=\"k2b-ste-size-picker\">\n <NumberInput label={t().rows} value={rows()} onValueChange={setRows} min={1} max={props.maxRows} step={1} />\n <NumberInput label={t().columns} value={columns()} onValueChange={setColumns} min={1} max={props.maxColumns} step={1} />\n </div>\n </BottomSheet.Body>\n <BottomSheet.Footer>\n <Button\n disabled={!rows() || !columns()}\n onClick={() => {\n const r = rows(),\n c = columns();\n if (r && c) close({ rows: r, columns: c });\n }}\n >\n {t().insertSize({ rows: rows() ?? 0, columns: columns() ?? 0 })}\n </Button>\n </BottomSheet.Footer>\n </BottomSheet>\n </LocaleProvider>\n ),\n { ...bottomSheetAdaptiveOptions, ariaLabel: t().insertTable, history: true, signal: abort.signal },\n );\n setExpanded(false);\n if (chosen && !disposed && !props.disabled) props.onPick(chosen);\n };\n onMount(() => props.onReady?.(() => void open()));\n const keyboard = (event: KeyboardEvent) => {\n const directions: Record<string, [number, number]> = { ArrowUp: [-1, 0], ArrowDown: [1, 0], ArrowLeft: [0, -1], ArrowRight: [0, 1] };\n const direction = directions[event.key];\n if (direction) {\n event.preventDefault();\n setRows(Math.max(1, Math.min(Math.min(9, props.maxRows), (rows() ?? 1) + direction[0])));\n setColumns(Math.max(1, Math.min(Math.min(10, props.maxColumns), (columns() ?? 1) + direction[1])));\n } else if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n choose(rows() ?? 1, columns() ?? 1);\n } else if (event.key === \"Escape\") trigger.focus();\n };\n return (\n <>\n <IconButton\n ref={trigger}\n variant=\"ghost\"\n class={props.class}\n size={props.size ?? \"sm\"}\n disabled={props.disabled}\n label={t().insertTable}\n aria-haspopup=\"dialog\"\n aria-controls={id}\n aria-expanded={expanded()}\n tooltip={t().insertTable}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => void open()}\n >\n <i class=\"ti ti-table\" aria-hidden=\"true\" />\n </IconButton>\n <div\n ref={popup}\n id={id}\n popover=\"auto\"\n class=\"k2b-ste-size-popover\"\n role=\"dialog\"\n aria-label={t().insertTable}\n tabIndex={-1}\n onKeyDown={keyboard}\n on:toggle={() => setExpanded(popup.matches(\":popover-open\"))}\n >\n <div class=\"k2b-ste-size-grid\" role=\"group\" aria-label={t().insertTable}>\n <For each={Array.from({ length: Math.min(9, props.maxRows) }, (_, index) => index + 1)}>\n {(r) => (\n <div class=\"k2b-ste-size-row\">\n <For each={Array.from({ length: Math.min(10, props.maxColumns) }, (_, index) => index + 1)}>\n {(c) => (\n <button\n type=\"button\"\n tabIndex={-1}\n aria-label={t().insertSize({ rows: r, columns: c })}\n data-selected={r <= (rows() ?? 0) && c <= (columns() ?? 0) ? \"true\" : undefined}\n onPointerEnter={() => {\n setRows(r);\n setColumns(c);\n }}\n onClick={() => choose(r, c)}\n />\n )}\n </For>\n </div>\n )}\n </For>\n </div>\n <div class=\"k2b-ste-size-caption\" role=\"status\">\n {t().insertSize({ rows: rows() ?? 0, columns: columns() ?? 0 })}\n </div>\n </div>\n </>\n );\n}\n\ntype TableMenuTrigger = { text?: string; class?: string; size?: \"xs\" | \"sm\"; position?: DropdownPosition };\n/** Shared table controls for a host-owned toolbar (`toolbar={false}`). */\nexport type TextEditorControls = {\n /** A table cell has focus in the formatted view. */\n tableActive: () => boolean;\n /** The shared cell menu behind a host-styled trigger; on phones it opens as a sheet. */\n TableMenu: (props: TableMenuTrigger) => JSX.Element;\n /** Formats the focused cell's selection; `false` when no cell has focus. */\n formatCell: (format: InlineFormat) => boolean;\n /** Shows a host message, such as a server's reason for a rejected table action, in the editor's notice. */\n notify: (message: string) => void;\n};\n\nconst toolbar = [\n [\"bold\", \"bold\"],\n [\"italic\", \"italic\"],\n [\"heading\", \"heading\"],\n [\"bulletList\", \"list\"],\n [\"orderedList\", \"list-numbers\"],\n [\"quote\", \"quote\"],\n [\"link\", \"link\"],\n [\"code\", \"code\"],\n [\"table\", \"table\"],\n [\"rule\", \"separator\"],\n] as const;\nconst actionIcons = {\n rowAbove: \"row-insert-top\",\n rowBelow: \"row-insert-bottom\",\n colLeft: \"column-insert-left\",\n colRight: \"column-insert-right\",\n alignLeft: \"align-left\",\n alignCenter: \"align-center\",\n alignRight: \"align-right\",\n deleteRow: \"row-remove\",\n deleteCol: \"column-remove\",\n moveRowUp: \"arrow-up\",\n moveRowDown: \"arrow-down\",\n moveColLeft: \"arrow-left\",\n moveColRight: \"arrow-right\",\n toggleHeader: \"table-row\",\n deleteTable: \"trash\",\n} as const;\ntype MenuScope = \"row\" | \"column\" | \"cell\";\nconst isInlineCommand = (command: string): command is Extract<InlineFormat, string> => inlineCommands.has(command);\nconst shortcuts: Partial<Record<keyof typeof commands, string>> = { bold: \"mod+b\", italic: \"mod+i\", link: \"mod+k\" };\nconst inlineCommands = new Set<string>([\"bold\", \"italic\", \"code\", \"link\", \"strike\"]);\n\n/** A Markdown text field with app-injected collaboration and a directly editable table view. */\nexport function TextEditor(props: TextEditorProps) {\n const locale = useLocale();\n const t = () => textEditorMessages.resolve([locale()]).t;\n const [mode, setMode] = createSignal<TextEditorMode>(props.mode ?? \"formatted\");\n const status = children(() => props.status);\n const [ready, setReady] = createSignal(false);\n const [recovery, setRecovery] = createSignal<string>();\n const [notice, setNotice] = createSignal<{ message: string; images?: boolean }>();\n const [cell, setCell] = createSignal<HTMLElement>();\n const [localSource, setLocalSource] = createSignal(false);\n const [announcement, setAnnouncement] = createSignal(\"\");\n const [check, setCheck] = createSignal(false);\n const [missingSeparator, setMissingSeparator] = createSignal(false);\n const [active, setActive] = createSignal(false);\n const [documentRevision, setDocumentRevision] = createSignal(0);\n const [phoneMenu, setPhoneMenu] = createSignal(false);\n const [platform, setPlatform] = createSignal<KeyboardPlatform>(\"other\");\n /** What the open cell menu acts on: a row grip, a column grip, or the cell (right-click, keys, toolbar). */\n const [scope, setScope] = createSignal<MenuScope>(\"cell\");\n let grip: HTMLElement | undefined;\n createEffect(() => {\n const target = cell();\n const kind = scope();\n if (!target) return;\n if (kind === \"cell\") {\n target.setAttribute(\"data-active\", \"\");\n onCleanup(() => target.removeAttribute(\"data-active\"));\n return;\n }\n // A grip's menu marks its whole row or column, and the grip stays visible while the menu is open.\n const marked =\n kind === \"row\"\n ? [target.closest(\"tr\")]\n : [...(target.closest(\".k2b-ste-table\")?.querySelectorAll<HTMLElement>(`.k2b-ste-cell[data-c=\"${target.dataset.c}\"]`) ?? [])].map(\n (element) => element.parentElement,\n );\n const opener = grip;\n for (const element of marked) element?.setAttribute(\"data-marked\", \"\");\n opener?.setAttribute(\"data-open\", \"\");\n onCleanup(() => {\n for (const element of marked) element?.removeAttribute(\"data-marked\");\n opener?.removeAttribute(\"data-open\");\n });\n });\n let disposed = false;\n onCleanup(() => {\n disposed = true;\n const text = recovery();\n if (text !== undefined) detachedRecovery(text);\n });\n // A local draft can outlive an island during navigation. Keep its recovery\n // surface in the shared dialog root so disposal never silently drops it.\n const detachedRecovery = (text: string) => {\n const language = locale();\n const labels = t();\n const beforeUnload = (event: BeforeUnloadEvent) => {\n event.preventDefault();\n event.returnValue = \"\";\n };\n window.addEventListener(\"beforeunload\", beforeUnload);\n const show = () =>\n void dialogCore\n .open<\"discard\">(\n (close, context) => {\n context.setDismissHandler(() => {});\n return (\n <LocaleProvider locale={language}>\n <BottomSheet handle={false} onDismiss={() => {}}>\n <BottomSheet.Header title={labels.recoveredInput} />\n <BottomSheet.Body>\n <label class=\"k2b-ste-recovery-label\">\n {labels.recoveredInput}\n <textarea class=\"k2b-ste-recovery\" readOnly value={text} />\n </label>\n </BottomSheet.Body>\n <BottomSheet.Footer>\n <Button variant=\"ghost\" onClick={() => close(\"discard\")}>\n {labels.discardRecovery}\n </Button>\n </BottomSheet.Footer>\n </BottomSheet>\n </LocaleProvider>\n );\n },\n { ...bottomSheetAdaptiveOptions, ariaLabel: labels.recoveredInput },\n )\n .then((result) => {\n if (result === \"discard\") window.removeEventListener(\"beforeunload\", beforeUnload);\n // The shared dialog root closes on each island disposal. Retain the\n // draft across subsequent navigation until the person explicitly discards it.\n else queueMicrotask(show);\n });\n show();\n };\n let menuOpen = false;\n let openCellMenu: ((anchor: DropdownAnchor, returnFocus?: () => HTMLElement | undefined) => void) | undefined;\n let closeCellMenu: (() => void) | undefined;\n let copyTrigger: HTMLButtonElement | undefined;\n const tableTriggers = new Set<HTMLButtonElement>();\n let frame = 0;\n const [menuPosition, setMenuPosition] = createSignal({ left: \"0px\", top: \"0px\" });\n let root!: HTMLDivElement;\n let mount!: HTMLDivElement;\n let editor: TextEditorController | undefined;\n // The view is read-only while it loads or recovers, too; dictation only runs where words can land.\n const dictationWritable = () => !props.readOnly && !props.loading && ready() && recovery() === undefined && mode() !== \"plain\";\n const dictation = createDictation({\n source: {\n start: (options) => props.dictation!.source.start(options),\n devices: () => props.dictation?.source.devices() ?? Promise.resolve([]),\n },\n get alternative() {\n return props.dictation?.alternative;\n },\n target: codeMirrorDictationTarget(() => editor?.view),\n disabled: () => !props.dictation || !dictationWritable(),\n });\n // A field that turns read-only or plain hides the toolbar; dictation then ends and the words so far stay.\n // A memo compares the value, so ordinary edits never end it.\n const dictationScope = createMemo(() => `${Boolean(props.dictation)}:${dictationWritable()}`);\n createEffect(on(dictationScope, () => dictation.end(), { defer: true }));\n const dictating = () => Boolean(props.dictation) && dictationBarShown(dictation);\n const menuBlocked = () => !!props.loading || !ready() || recovery() !== undefined;\n const blocked = () => !!props.readOnly || menuBlocked();\n const updateCheck = () => {\n const issue =\n mode() === \"plain\"\n ? { extraCells: false, missingSeparator: false }\n : inspectTableStructure(editor?.view.state.doc.toString() ?? props.initialValue ?? \"\");\n const needsCheck = issue.extraCells || issue.missingSeparator;\n setMissingSeparator(issue.missingSeparator);\n setCheck(needsCheck);\n props.onTableCheck?.(needsCheck);\n };\n const positionMenu = () => {\n const target = cell();\n if (!target) return;\n const wrap = target.closest<HTMLElement>(\".k2b-ste-table\");\n const table = wrap?.querySelector(\"table\");\n if (!target.isConnected || !wrap || !table || mode() !== \"formatted\") {\n closeCellMenu?.();\n menuOpen = false;\n setCell(undefined);\n checkFocus();\n return;\n }\n // Only the read-only phone copy control sits below its table; every other menu opens beside its anchor.\n if (!props.readOnly) return;\n const bounds = root.getBoundingClientRect();\n setMenuPosition({\n left: `${wrap.getBoundingClientRect().left - bounds.left}px`,\n top: `${wrap.getBoundingClientRect().bottom - bounds.top - (window.matchMedia(\"(max-width: 47.999rem)\").matches ? 44 : 0)}px`,\n });\n };\n const schedulePosition = () => {\n if (!frame)\n frame = requestAnimationFrame(() => {\n frame = 0;\n positionMenu();\n });\n };\n const unavailable = createMemo(() => !!props.host?.structure && !props.host.structure.available());\n // Closed table menus keep their entries until they open again. A host may report another availability on every\n // edit, and each entry rebuilt or re-enabled in a hidden menu restyles the whole page through the shared `:has()`\n // rules, so typing would lag.\n const [tableMenuShown, setTableMenuShown] = createSignal(false);\n const whileMenuShown = <T,>(read: () => T) => createMemo<T>((last) => (tableMenuShown() ? read() : last), untrack(read));\n const menuRevision = whileMenuShown(documentRevision);\n const menuUnavailable = whileMenuShown(unavailable);\n const actionDisabled = (action: MenuAction) => {\n menuRevision();\n menuUnavailable();\n const wrap = cell()?.closest<HTMLElement>(\".k2b-ste-table\");\n const view = editor?.view;\n return blocked() || !view || !wrap || untrack(() => !tableActionEnabled(view, wrap, action));\n };\n const isMove = (action: MenuAction) => action.startsWith(\"move\");\n const runAction = (action: MenuAction) => {\n const wrap = cell()?.closest<HTMLElement>(\".k2b-ste-table\");\n const focused = document.activeElement;\n const menuElement = focused instanceof HTMLElement ? focused.closest<HTMLElement>('[role=\"menu\"]') : null;\n if (editor && wrap && !actionDisabled(action)) runMenuAction(editor.view, wrap, action);\n // The phone move sheet remains usable for another move. Local structural\n // focus belongs to the cell only after the menu has closed.\n if (isMove(action) && focused instanceof HTMLElement && menuElement) {\n const restore = () => {\n if (disposed || !menuElement.isConnected) return;\n const target =\n focused.isConnected && !focused.matches(\":disabled\")\n ? focused\n : menuElement.querySelector<HTMLElement>('[role^=\"menuitem\"]:not(:disabled)');\n target?.focus({ preventScroll: true });\n };\n restore();\n queueMicrotask(restore);\n }\n };\n const moveKeys: Partial<Record<MenuAction, string>> = {\n moveRowUp: \"alt+arrowup\",\n moveRowDown: \"alt+arrowdown\",\n moveColLeft: \"alt+arrowleft\",\n moveColRight: \"alt+arrowright\",\n };\n const shortActionLabels = {\n rowAbove: \"menuAbove\",\n rowBelow: \"menuBelow\",\n moveRowUp: \"menuUp\",\n moveRowDown: \"menuDown\",\n deleteRow: \"menuDelete\",\n colLeft: \"menuInsertLeft\",\n colRight: \"menuInsertRight\",\n moveColLeft: \"menuMoveLeft\",\n moveColRight: \"menuMoveRight\",\n deleteCol: \"menuDelete\",\n } as const;\n const menuRow = () => {\n menuRevision();\n return t().menuRow(Number(cell()?.dataset.r ?? 0));\n };\n const menuColumn = () => {\n menuRevision();\n const column = Number(cell()?.dataset.c ?? 0);\n const header = cell()?.closest(\".k2b-ste-table\")?.querySelector<HTMLElement>(`.k2b-ste-cell[data-r=\"0\"][data-c=\"${column}\"]`);\n return t().menuColumn(header?.dataset.raw || t().column(column + 1));\n };\n const menuHeading = (kind: MenuScope = scope()) =>\n kind === \"row\" ? menuRow() : kind === \"column\" ? menuColumn() : `${menuRow()} · ${menuColumn()}`;\n const actionItem = (\n action: keyof typeof actionIcons,\n choice?: Pick<DropdownChoice, \"choice\" | \"checked\" | \"class\" | \"ariaLabel\">,\n kind: MenuScope = \"cell\",\n ) =>\n ({\n get label() {\n // A grip's sheet has no row or column heading over its entries, so deleting keeps its full name.\n const short = phoneMenu() && action in shortActionLabels && !(kind !== \"cell\" && action.startsWith(\"delete\"));\n return short ? t()[shortActionLabels[action as keyof typeof shortActionLabels]] : t()[action];\n },\n icon: `ti ti-${actionIcons[action]}`,\n get disabled() {\n return actionDisabled(action);\n },\n immediate: true,\n trailing: moveKeys[action] ? <Kbd keys={moveKeys[action]!} /> : action === \"rowBelow\" ? <Kbd keys=\"enter\" /> : undefined,\n variant: action === \"deleteRow\" || action === \"deleteCol\" || action === \"deleteTable\" ? \"danger\" : undefined,\n closeOnSelect: !isMove(action),\n action: () => runAction(action),\n ...choice,\n }) satisfies DropdownAction;\n const [copying, setCopying] = createSignal(false);\n const tableCopy = clipboard.createWriter({\n write: ({ view, wrap, format }: { view: EditorView; wrap: HTMLElement; format: \"table\" | \"markdown\" }) => copyTable(view, wrap, format),\n });\n const copy = async (format: \"table\" | \"markdown\") => {\n const wrap = cell()?.closest<HTMLElement>(\".k2b-ste-table\");\n if (!editor || !wrap || copying()) return;\n setCopying(true);\n setNotice({ message: t().copyingTable });\n const success = await tableCopy.copy({ view: editor.view, wrap, format });\n if (disposed) return;\n setCopying(false);\n setNotice({ message: success ? (format === \"table\" ? t().copiedTable : t().copiedMarkdown) : t().copyFailed });\n };\n const copyItems = (): DropdownAction[] => [\n {\n get label() {\n return phoneMenu() && !props.readOnly ? t().menuCopy : t().copyTable;\n },\n icon: \"ti ti-copy\",\n get disabled() {\n return copying();\n },\n immediate: true,\n action: () => {\n void copy(\"table\");\n },\n },\n {\n get label() {\n return phoneMenu() && !props.readOnly ? t().menuMarkdown : t().copyMarkdown;\n },\n icon: \"ti ti-markdown\",\n get disabled() {\n return copying();\n },\n immediate: true,\n action: () => {\n void copy(\"markdown\");\n },\n },\n ];\n /** The row grip shows row and table actions, the column grip column, alignment and table actions; the rest everything. */\n const items = (kind: MenuScope): DropdownItem[] => {\n if (props.readOnly) return copyItems();\n const align = () => {\n menuRevision();\n return cell()?.parentElement?.style.textAlign || \"left\";\n };\n const row: DropdownItem[] = [\n {\n get sectionLabel() {\n return kind === \"cell\" ? menuRow() : undefined;\n },\n items: ([\"rowAbove\", \"rowBelow\", \"moveRowUp\", \"moveRowDown\", \"deleteRow\"] as const).map((action) =>\n actionItem(action, undefined, kind),\n ),\n },\n ];\n const column: DropdownItem[] = [\n {\n get sectionLabel() {\n return kind === \"cell\" ? menuColumn() : undefined;\n },\n items: ([\"colLeft\", \"colRight\", \"moveColLeft\", \"moveColRight\"] as const).map((action) => actionItem(action)),\n },\n {\n sectionLabel: t().alignment,\n layout: \"row\",\n items: ([\"alignLeft\", \"alignCenter\", \"alignRight\"] as const).map((action, index) =>\n actionItem(action, {\n choice: \"radio\",\n class: \"k2b-ste-align-choice\",\n ariaLabel: t()[action],\n checked: () => align() === [\"left\", \"center\", \"right\"][index],\n }),\n ),\n },\n { items: [actionItem(\"deleteCol\", undefined, kind)] },\n ];\n return [\n {\n get sectionLabel() {\n return menuHeading(kind);\n },\n items: [],\n },\n ...(kind === \"column\" ? [] : row),\n ...(kind === \"row\" ? [] : column),\n {\n sectionLabel: t().table,\n items: [\n actionItem(\"toggleHeader\", {\n choice: \"checkbox\",\n class: \"k2b-ste-header-choice\",\n checked: () => {\n menuRevision();\n return cell()?.closest<HTMLElement>(\".k2b-ste-table\")?.dataset.header === \"true\";\n },\n }),\n {\n label: t().editMarkdown,\n icon: \"ti ti-markdown\",\n action: () => {\n const wrap = cell()?.closest<HTMLElement>(\".k2b-ste-table\");\n if (editor && wrap) editTableSource(editor.view, wrap);\n },\n },\n ...copyItems(),\n actionItem(\"deleteTable\"),\n ...(menuUnavailable() ? [{ label: t().structureUnavailable, disabled: true as const }] : []),\n ],\n },\n ];\n };\n const preserveSelection = (event: MouseEvent) => event.preventDefault();\n const menuChange = (open: boolean) => {\n menuOpen = open;\n };\n // A press beside an open table menu only closes it: no cell takes focus, no\n // text is selected and no column is marked. The menu's light dismiss closes it.\n let tableMenuOpen = false;\n const tableMenuChange = (open: boolean) => {\n menuOpen = open;\n tableMenuOpen = open && !phoneMenu();\n setTableMenuShown(open);\n };\n let swallow: AbortController | undefined;\n const pressBesideMenu = (event: PointerEvent) => {\n swallow?.abort();\n if (!tableMenuOpen || (event.target instanceof Element && event.target.closest(\".k2b-ste-table-menu\"))) return;\n event.stopPropagation();\n const current = new AbortController();\n swallow = current;\n const block = (blocked: Event) => {\n blocked.preventDefault();\n blocked.stopPropagation();\n if (blocked.type === \"click\" || blocked.type === \"contextmenu\") current.abort();\n };\n for (const type of [\"mousedown\", \"mouseup\", \"click\", \"contextmenu\"])\n document.addEventListener(type, block, { capture: true, signal: current.signal });\n // Only this press is swallowed: its click follows the release in the same task, and a cancelled press never\n // clicks. A key other than a modifier, which may come with the press, starts new input.\n const end = () => current.abort();\n document.addEventListener(\"pointerup\", () => setTimeout(end), { capture: true, once: true, signal: current.signal });\n document.addEventListener(\"pointercancel\", end, { capture: true, once: true, signal: current.signal });\n document.addEventListener(\n \"keydown\",\n (key) => {\n if (![\"Shift\", \"Control\", \"Alt\", \"Meta\"].includes(key.key)) end();\n },\n { capture: true, signal: current.signal },\n );\n };\n const menuClose = () => {\n menuOpen = false;\n tableMenuOpen = false;\n setTableMenuShown(false);\n setScope(\"cell\");\n grip = undefined;\n schedulePosition();\n queueMicrotask(() => {\n if (disposed) return;\n const focused = document.activeElement;\n if (focused instanceof HTMLElement && focused.matches(\".k2b-ste-copy-menu, .k2b-ste-table-tool\")) cell()?.focus();\n checkFocus();\n });\n };\n const sheetTop = (kind: () => MenuScope) =>\n props.readOnly\n ? undefined\n : (close: () => void) => (\n <div class=\"k2b-ste-table-sheet-heading\">\n <span title={menuHeading(kind())}>{menuHeading(kind())}</span>\n <Button variant=\"ghost\" onClick={close}>\n {t().done}\n </Button>\n </div>\n );\n const menuLabel = () => (props.readOnly ? t().copyTable : t().tableMenu);\n const menuDisabled = () => menuBlocked() || localSource() || !cell()?.isConnected;\n // A sheet owns its item inventory until it closes. Replace that owner when\n // edit access changes so an already open sheet cannot retain edit entries.\n /** The toolbar's table button: the whole menu for the focused cell. */\n const menu = (trigger?: TableMenuTrigger) => (\n <Show when={props.readOnly ? \"read\" : \"write\"} keyed>\n {(_access) => (\n <Dropdown\n items={items(\"cell\")}\n phone=\"sheet\"\n sheetTop={sheetTop(() => \"cell\")}\n menuClass=\"k2b-ste-table-menu\"\n position={trigger?.position ?? \"bottom-right\"}\n width=\"18rem\"\n label={menuLabel()}\n disabled={menuDisabled()}\n onOpenChange={tableMenuChange}\n onClose={menuClose}\n >\n <Dropdown.Trigger\n ref={(element) => {\n tableTriggers.add(element);\n onCleanup(() => tableTriggers.delete(element));\n }}\n class={`k2b-ste-tool k2b-ste-table-tool ${trigger?.class ?? \"\"}`}\n variant=\"ghost\"\n size={trigger?.size ?? \"sm\"}\n iconOnly={!trigger?.text}\n label={trigger?.text ?? t().tableMenu}\n aria-pressed={true}\n onMouseDown={preserveSelection}\n >\n <i class=\"ti ti-table\" aria-hidden=\"true\" />\n {trigger?.text}\n <Show when={trigger?.text}>\n <i class=\"ti ti-chevron-down\" aria-hidden=\"true\" />\n </Show>\n </Dropdown.Trigger>\n </Dropdown>\n )}\n </Show>\n );\n /** Grips, right-click and Shift+F10 open this menu beside its anchor; it has no button of its own. */\n const cellMenu = () => (\n <Show when={props.readOnly ? \"read\" : \"write\"} keyed>\n {(_access) => (\n <Dropdown\n items={items(scope())}\n phone=\"sheet\"\n sheetTop={sheetTop(scope)}\n menuClass=\"k2b-ste-table-menu\"\n position=\"bottom-right\"\n width=\"18rem\"\n label={menuLabel()}\n disabled={menuDisabled()}\n onOpenChange={tableMenuChange}\n onClose={menuClose}\n openAt={(open) => {\n openCellMenu = open;\n }}\n closeWith={(close) => {\n closeCellMenu = close;\n }}\n >\n {/* Phones have no right-click: a read-only table keeps a visible copy control below it. */}\n <Show when={props.readOnly && cell() && mode() === \"formatted\" && !menuBlocked()}>\n <Dropdown.Trigger\n ref={(element) => {\n copyTrigger = element;\n }}\n class=\"k2b-ste-copy-menu\"\n variant=\"ghost\"\n size=\"sm\"\n label={t().copyTable}\n onMouseDown={preserveSelection}\n >\n <i class=\"ti ti-copy\" aria-hidden=\"true\" />\n {t().copyTable}\n </Dropdown.Trigger>\n </Show>\n </Dropdown>\n )}\n </Show>\n );\n const runFormat = (command: keyof typeof commands) => {\n if (!editor || blocked()) return;\n if (cell()?.isConnected && isInlineCommand(command) && formatActiveCell(editor.view, command)) return;\n commands[command](editor.view);\n };\n const checkFocus = () => {\n if (disposed) return;\n // A host toolbar sits outside this root. Native popover focus moves before\n // its toggle callback, but Dropdown already exposes its synchronous state.\n if (\n menuOpen ||\n [...tableTriggers, copyTrigger].some((trigger) => trigger?.isConnected && trigger.getAttribute(\"aria-expanded\") === \"true\")\n )\n return;\n const focused = document.activeElement;\n setLocalSource(focused instanceof HTMLElement && !!focused.closest(\".k2b-ste-table-source\"));\n const inside = focused instanceof Node && root.contains(focused);\n setActive(inside);\n if (!inside || focused === editor?.view.contentDOM) setCell(undefined);\n else if (!cell()?.isConnected) setCell(undefined);\n };\n const formatMenu = (command: \"heading\" | \"code\") => (\n <Dropdown\n phone=\"sheet\"\n label={t()[command]}\n disabled={blocked() || (command === \"heading\" && !!cell())}\n onOpenChange={menuChange}\n onClose={menuClose}\n items={\n command === \"heading\"\n ? [\n {\n items: ([\"heading1\", \"heading2\", \"heading3\"] as const).map((name, index) => ({\n label: t()[name],\n icon: `ti ti-h-${index + 1}`,\n action: () => runFormat(name),\n })),\n },\n ]\n : [\n { label: t().inlineCode, icon: \"ti ti-code\", action: () => runFormat(\"code\") },\n { label: t().codeBlock, icon: \"ti ti-source-code\", disabled: !!cell(), action: () => runFormat(\"codeBlock\") },\n { label: t().strike, icon: \"ti ti-strikethrough\", trailing: <Kbd keys=\"mod+shift+x\" />, action: () => runFormat(\"strike\") },\n ]\n }\n >\n <Dropdown.Trigger class=\"k2b-ste-tool\" variant=\"ghost\" size=\"sm\" iconOnly label={t()[command]} onMouseDown={preserveSelection}>\n <i class={`ti ti-${command}`} aria-hidden=\"true\" />\n </Dropdown.Trigger>\n </Dropdown>\n );\n const selectMode = (next: TextEditorMode) => {\n // Returning from the source view removes its switch; keyboard focus then moves into the text.\n const restoreEditorFocus =\n !!editor?.view.contentDOM.contains(document.activeElement) ||\n !!root.querySelector(\".k2b-ste-views\")?.contains(document.activeElement);\n menuOpen = false;\n setCell(undefined);\n setMode(next);\n props.onModeChange?.(next);\n if (restoreEditorFocus) queueMicrotask(() => editor?.view.focus());\n };\n onMount(() => {\n setPlatform(keyboardPlatform());\n const menuMedia = window.matchMedia(\"(max-width: 47.999rem)\");\n const menuViewport = () => setPhoneMenu(menuMedia.matches);\n menuViewport();\n menuMedia.addEventListener(\"change\", menuViewport);\n onCleanup(() => menuMedia.removeEventListener(\"change\", menuViewport));\n // A standalone editor has no binding history; collaboration supplies its own instead.\n const nativeHistory = !props.host?.undo;\n editor = createTextEditor({\n parent: mount,\n doc: props.initialValue,\n mode: mode(),\n label: props.label,\n readOnly: props.readOnly,\n placeholder: props.placeholder,\n presentation: props.presentation,\n extensions: [\n nativeHistory ? [history(), keymap.of(historyKeymap)] : [],\n formatLabels.of({\n get link() {\n return t().link;\n },\n column: (column) => t().column(column),\n }),\n EditorView.updateListener.of((update) => {\n schedulePosition();\n if (update.docChanged) queueMicrotask(() => setDocumentRevision((revision) => revision + 1));\n }),\n // The caret never moves under a toolbar that stays at the top of a scrolling host.\n EditorView.scrollMargins.of(() => {\n const slot = root.querySelector<HTMLElement>(\".k2b-ste-toolbar-slot\");\n return slot && getComputedStyle(slot).position === \"sticky\" ? { top: slot.offsetHeight } : null;\n }),\n props.extensions ?? [],\n props.dictation ? dictationExtension() : [],\n ],\n host: {\n ...props.host,\n undo: props.host?.undo ?? (() => editor && undo(editor.view)),\n redo: props.host?.redo ?? (() => editor && redo(editor.view)),\n boundary: props.host?.boundary ?? (() => {}),\n cellLabel: (row, column, name) => t().cellLabel({ row, column, name }),\n actionLabel: (name) => t()[name],\n sourceLabels: () => ({\n edit: t().editMarkdown,\n valid: t().markdownValid,\n invalid: t().markdownInvalid,\n changed: t().markdownChanged,\n structural: t().markdownStructural,\n applying: t().applyingTable,\n applyFailed: t().markdownApplyFailed,\n done: phoneMenu() ? t().done : t().showTable,\n discard: t().discardMarkdown,\n continue: t().continueMarkdown,\n line: t().markdownLine,\n separator: (header, separator) => t().markdownSeparator({ header, separator }),\n extra: t().markdownExtra,\n complete: t().completeColumns,\n }),\n maxLength: props.maxLength,\n maxPasteCells: props.maxPasteCells ?? 2000,\n onRecovery: (text) => {\n if (disposed) detachedRecovery(text);\n else setRecovery((previous) => (previous === undefined ? text : `${previous}\\n\\n${text}`));\n },\n onError: (code) => setNotice({ message: t()[code] }),\n },\n onChange: (text) => {\n props.onChange?.(text);\n queueMicrotask(updateCheck);\n },\n onDroppedImages: (count, files) => {\n if (props.onDroppedImages?.(count, files) !== true) setNotice({ message: t().imageHint, images: true });\n },\n });\n const focus = (event: Event) => {\n if (!(event instanceof CustomEvent) || !(event.detail.cell instanceof HTMLElement)) return;\n setActive(true);\n setCell(event.detail.cell);\n positionMenu();\n };\n const structureAnnouncement = (event: Event) => {\n if (!(event instanceof CustomEvent)) return;\n const detail: unknown = event.detail;\n if (\n detail &&\n typeof detail === \"object\" &&\n \"rows\" in detail &&\n \"columns\" in detail &&\n typeof detail.rows === \"number\" &&\n typeof detail.columns === \"number\"\n )\n setAnnouncement(t().tableChanged({ rows: detail.rows, columns: detail.columns }));\n };\n const focusChange = () => queueMicrotask(checkFocus);\n let pointerCheck: ReturnType<typeof setTimeout> | undefined;\n const pointer = (event: PointerEvent) => {\n if (event.target instanceof Node && root.contains(event.target)) setActive(true);\n // After the press moved focus: a host toolbar control that keeps focus in the cell keeps it active.\n else if (!menuOpen) {\n clearTimeout(pointerCheck);\n pointerCheck = setTimeout(checkFocus);\n }\n };\n // A grip opens its row's or column's menu below itself; right-click opens\n // at the pointer and a key below the cell. Focus returns to the cell.\n const keyboardMenu = (event: Event) => {\n if (menuBlocked() || menuOpen || !(event instanceof CustomEvent) || !(event.detail.cell instanceof HTMLElement)) return;\n const target: HTMLElement = event.detail.cell;\n const opener = event.detail.anchor instanceof HTMLElement ? event.detail.anchor : undefined;\n const kind: MenuScope = event.detail.scope === \"row\" || event.detail.scope === \"column\" ? event.detail.scope : \"cell\";\n const { x, y } = event.detail;\n let anchor: DropdownAnchor = opener ?? target;\n if (!opener && typeof x === \"number\" && typeof y === \"number\") {\n // Keep the pointer's place inside the cell, so the menu follows it while the page scrolls.\n const start = target.getBoundingClientRect();\n anchor = {\n getBoundingClientRect: () => {\n const box = target.getBoundingClientRect();\n const left = box.left + x - start.left;\n const top = box.top + y - start.top;\n return { left, top, right: left, bottom: top };\n },\n };\n }\n grip = opener;\n setScope(kind);\n focus(event);\n // Focus returns to the menu's cell as it closes; moving a row or column moves that cell.\n queueMicrotask(() => {\n if (!disposed && cell()?.isConnected) openCellMenu?.(anchor, () => cell());\n });\n };\n const mutations = new MutationObserver(schedulePosition);\n mutations.observe(mount, { childList: true, subtree: true, characterData: true });\n const resize = new ResizeObserver(schedulePosition);\n resize.observe(mount);\n // Safari blurs a contenteditable on mouse-down without focusing the radio.\n // Keep the caret and phone toolbar stationary until the view switch runs.\n const viewMouseDown = (event: MouseEvent) => {\n if (event.target instanceof Element && event.target.closest(\".k2b-ste-views\")) event.preventDefault();\n };\n root.addEventListener(\"mousedown\", viewMouseDown);\n document.addEventListener(\"focusin\", focusChange);\n document.addEventListener(\"pointerdown\", pointer);\n document.addEventListener(\"pointerdown\", pressBesideMenu, true);\n root.addEventListener(\"k2b-ste-table-structure\", structureAnnouncement);\n root.addEventListener(\"k2b-ste-cell-focus\", focus);\n root.addEventListener(\"k2b-ste-cell-blur\", focusChange);\n root.addEventListener(\"k2b-ste-cell-menu\", keyboardMenu);\n window.addEventListener(\"scroll\", schedulePosition, true);\n window.addEventListener(\"resize\", schedulePosition);\n const viewport = window.visualViewport;\n const keyboard = () =>\n root.style.setProperty(\n \"--k2b-ste-keyboard\",\n `${Math.max(0, window.innerHeight - (viewport?.height ?? window.innerHeight) - (viewport?.offsetTop ?? 0))}px`,\n );\n viewport?.addEventListener(\"resize\", keyboard);\n viewport?.addEventListener(\"scroll\", keyboard);\n keyboard();\n setReady(true);\n updateCheck();\n props.onReady?.(editor, {\n tableActive: () => mode() === \"formatted\" && !!cell()?.isConnected,\n TableMenu: (trigger) => menu(trigger),\n formatCell: (format) => !!editor && !blocked() && !!cell()?.isConnected && formatActiveCell(editor.view, format),\n notify: (message) => setNotice({ message }),\n });\n onCleanup(() => {\n clearTimeout(pointerCheck);\n mutations.disconnect();\n resize.disconnect();\n cancelAnimationFrame(frame);\n root.removeEventListener(\"mousedown\", viewMouseDown);\n document.removeEventListener(\"focusin\", focusChange);\n document.removeEventListener(\"pointerdown\", pointer);\n document.removeEventListener(\"pointerdown\", pressBesideMenu, true);\n swallow?.abort();\n root.removeEventListener(\"k2b-ste-table-structure\", structureAnnouncement);\n root.removeEventListener(\"k2b-ste-cell-focus\", focus);\n root.removeEventListener(\"k2b-ste-cell-blur\", focusChange);\n root.removeEventListener(\"k2b-ste-cell-menu\", keyboardMenu);\n window.removeEventListener(\"scroll\", schedulePosition, true);\n window.removeEventListener(\"resize\", schedulePosition);\n viewport?.removeEventListener(\"resize\", keyboard);\n viewport?.removeEventListener(\"scroll\", keyboard);\n editor?.destroy();\n });\n });\n createEffect(() => {\n if (props.mode !== undefined) setMode(props.mode);\n });\n createEffect(() => {\n if (ready()) {\n const next = mode();\n // Rendering the grid consults reactive host availability. Those reads\n // must not turn a history notification into a nested mode reconfigure.\n untrack(() => {\n menuOpen = false;\n setCell(undefined);\n editor?.setMode(next);\n updateCheck();\n });\n }\n });\n createEffect(() => {\n const label = props.label;\n if (ready()) untrack(() => editor?.setLabel(label));\n });\n createEffect(() => {\n const readOnly = !!props.readOnly || !!props.loading || recovery() !== undefined;\n if (ready()) untrack(() => editor?.setReadOnly(readOnly));\n });\n createEffect(() => {\n documentRevision();\n const disabled = blocked() || unavailable();\n if (ready())\n root.querySelectorAll<HTMLButtonElement>(\".k2b-ste-addColumn\").forEach((button) => {\n button.disabled = disabled;\n });\n });\n return (\n <div\n ref={root}\n class={`k2b-text-editor ${props.class ?? \"\"}`}\n data-mode={mode()}\n data-readonly={props.readOnly ? \"true\" : undefined}\n data-active={active() ? \"true\" : undefined}\n aria-busy={props.loading || !ready()}\n >\n <span class=\"k2b-ste-announcement\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {announcement()}\n </span>\n <Show when={(status() !== undefined && status() !== null && status() !== false) || check()}>\n <div class=\"k2b-ste-status\" role=\"status\">\n <span>{status()}</span>\n <Show when={check()}>\n <span class=\"k2b-ste-check\" title={missingSeparator() ? t().checkSeparatorDetail : t().checkTableDetail}>\n <i class=\"ti ti-alert-triangle\" aria-hidden=\"true\" />\n {t().checkTable}\n </span>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={blocked() || (!missingSeparator() && unavailable())}\n hidden={props.readOnly}\n tooltip={missingSeparator() ? t().checkSeparatorDetail : unavailable() ? t().structureUnavailable : t().checkTableDetail}\n onMouseDown={preserveSelection}\n onClick={() => {\n if (!editor) return;\n if (missingSeparator()) {\n selectMode(\"source\");\n queueMicrotask(() => editor?.view.focus());\n return;\n }\n const table = findTables(editor.view.state.doc.toString()).find((table) =>\n table.lines.some((row) => row.cells.length > table.columns),\n );\n if (table) runTableAction(editor.view, table.from, 0, 0, \"completeColumns\");\n }}\n >\n {missingSeparator() ? t().reviewMarkdown : t().completeColumns}\n </Button>\n </Show>\n </div>\n </Show>\n <Show when={!props.readOnly && mode() !== \"plain\" && props.toolbar !== false}>\n <div class=\"k2b-ste-toolbar-slot\">\n <Toolbar class=\"k2b-ste-toolbar\" label={t().formatting}>\n <Show when={dictating()}>\n <DictationBar dictation={dictation} />\n </Show>\n <For each={dictating() ? [] : [toolbar.slice(0, 3), toolbar.slice(3, 6), toolbar.slice(6)]}>\n {(group) => (\n <Toolbar.Group class=\"k2b-ste-tool-group\">\n <For each={group}>\n {([command, icon]) =>\n command === \"heading\" || command === \"code\" ? (\n formatMenu(command)\n ) : (\n <Show\n when={command === \"table\" && mode() === \"formatted\" && cell()?.isConnected}\n fallback={\n <IconButton\n class=\"k2b-ste-tool\"\n variant=\"ghost\"\n size=\"sm\"\n label={t()[command]}\n tooltip={\n shortcuts[command]\n ? `${t()[command]} (${formatShortcut(shortcuts[command] ?? \"\", { platform: platform(), locale: locale() }).label})`\n : t()[command]\n }\n disabled={blocked() || (!!cell() && !inlineCommands.has(command) && command !== \"table\")}\n onMouseDown={preserveSelection}\n onClick={() => runFormat(command)}\n >\n <i class={`ti ti-${icon}`} aria-hidden=\"true\" />\n </IconButton>\n }\n >\n {menu()}\n </Show>\n )\n }\n </For>\n </Toolbar.Group>\n )}\n </For>\n {/* Editing is always formatted. Only a source view reached through the table check offers the way back. */}\n <Show when={mode() === \"source\" && !dictating()}>\n <SegmentedControl\n class=\"k2b-ste-views\"\n size=\"sm\"\n ariaLabel={t().view}\n value=\"source\"\n options={[\n { value: \"formatted\", label: t().formatted, icon: \"ti ti-typography\" },\n { value: \"source\", label: t().source, icon: \"ti ti-markdown\" },\n ]}\n onValueChange={selectMode}\n />\n </Show>\n <Show when={props.dictation && !dictating()}>\n <DictationButton dictation={dictation} class=\"k2b-ste-tool k2b-ste-dictate\" />\n </Show>\n </Toolbar>\n </div>\n </Show>\n <Show when={props.loading || !ready()}>\n <div class=\"k2b-ste-loading\" role=\"status\" aria-label={t().loading}>\n <For each={[82, 100, 68, 0, 96, 74]}>\n {(width) => (\n <div>\n <span style={{ width: `${width}%` }} />\n </div>\n )}\n </For>\n </div>\n </Show>\n <div ref={mount} class={props.presentation ? \"k2b-ste-app-host\" : \"k2b-ste-host\"} hidden={props.loading || !ready()} />\n <div class=\"k2b-ste-floating-menu\" style={menuPosition()}>\n {cellMenu()}\n </div>\n <div role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n <Show when={notice() || recovery() !== undefined}>\n <div class=\"k2b-ste-notice\">\n <div class=\"k2b-ste-notice-content\">\n <Show when={notice()}>\n <Show when={notice()?.images && props.onAttachImages} fallback={<span>{notice()?.message}</span>}>\n <Button size=\"sm\" variant=\"ghost\" disabled={blocked()} onClick={() => props.onAttachImages?.()}>\n {notice()?.message}\n </Button>\n </Show>\n </Show>\n <Show when={recovery() !== undefined}>\n <label class=\"k2b-ste-recovery-label\">\n {t().recoveredInput}\n <textarea class=\"k2b-ste-recovery\" readOnly value={recovery()} />\n </label>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => {\n setRecovery(undefined);\n if (notice()?.message === t().cellRemoved) setNotice(undefined);\n }}\n >\n {t().discardRecovery}\n </Button>\n </Show>\n </div>\n <Show when={notice()}>\n <IconButton size=\"sm\" variant=\"ghost\" label={t().dismiss} onClick={() => setNotice(undefined)}>\n <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </IconButton>\n </Show>\n </div>\n </Show>\n </div>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|