@dxos/react-ui-editor 0.8.4-main.1da679c → 0.8.4-main.1f223c7
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/lib/browser/index.mjs +4 -4
- package/dist/lib/browser/index.mjs.map +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node-esm/index.mjs +4 -4
- package/dist/lib/node-esm/index.mjs.map +1 -1
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +32 -33
@@ -2,6 +2,6 @@
|
|
2
2
|
"version": 3,
|
3
3
|
"sources": ["../../../src/translations.ts", "../../../src/index.ts", "../../../src/components/Editor/Editor.tsx", "../../../src/hooks/useTextEditor.ts", "../../../src/extensions/annotations.ts", "../../../src/extensions/autocomplete.ts", "../../../src/extensions/autoscroll.ts", "../../../src/util/facet.ts", "../../../src/util/cursor.ts", "../../../src/util/decorations.ts", "../../../src/util/debug.ts", "../../../src/util/dom.ts", "../../../src/util/domino.ts", "../../../src/util/react.tsx", "../../../src/extensions/automerge/automerge.ts", "../../../src/extensions/automerge/cursor.ts", "../../../src/extensions/automerge/defs.ts", "../../../src/extensions/automerge/sync.ts", "../../../src/extensions/automerge/update-automerge.ts", "../../../src/extensions/automerge/update-codemirror.ts", "../../../src/extensions/awareness/awareness.ts", "../../../src/extensions/awareness/awareness-provider.ts", "../../../src/extensions/blast.ts", "../../../src/extensions/command/action.ts", "../../../src/extensions/command/state.ts", "../../../src/extensions/command/command.ts", "../../../src/extensions/command/hint.ts", "../../../src/extensions/command/command-menu.ts", "../../../src/extensions/command/placeholder.ts", "../../../src/extensions/command/floating-menu.ts", "../../../src/extensions/command/typeahead.ts", "../../../src/extensions/command/useCommandMenu.ts", "../../../src/extensions/comments.ts", "../../../src/extensions/selection.ts", "../../../src/extensions/debug.ts", "../../../src/extensions/dnd.ts", "../../../src/extensions/factories.ts", "../../../src/defaults.ts", "../../../src/styles/markdown.ts", "../../../src/styles/tokens.ts", "../../../src/styles/theme.ts", "../../../src/extensions/focus.ts", "../../../src/extensions/folding.tsx", "../../../src/extensions/hashtag.tsx", "../../../src/extensions/json.ts", "../../../src/extensions/listener.ts", "../../../src/extensions/markdown/formatting.ts", "../../../src/extensions/markdown/action.ts", "../../../src/extensions/markdown/bundle.ts", "../../../src/extensions/markdown/highlight.ts", "../../../src/extensions/markdown/debug.ts", "../../../src/extensions/markdown/decorate.ts", "../../../src/extensions/markdown/changes.ts", "../../../src/extensions/markdown/image.ts", "../../../src/extensions/markdown/styles.ts", "../../../src/extensions/markdown/table.ts", "../../../src/extensions/markdown/link.ts", "../../../src/extensions/mention.ts", "../../../src/extensions/modes.ts", "../../../src/extensions/outliner/commands.ts", "../../../src/extensions/outliner/selection.ts", "../../../src/extensions/outliner/tree.ts", "../../../src/extensions/outliner/outliner.ts", "../../../src/extensions/outliner/editor.ts", "../../../src/extensions/preview/preview.ts", "../../../src/extensions/tags/extended-markdown.ts", "../../../src/extensions/tags/streamer.ts", "../../../src/extensions/tags/xml-tags.ts", "../../../src/extensions/tags/xml-util.ts", "../../../src/extensions/typewriter.ts", "../../../src/components/EditorToolbar/EditorToolbar.tsx", "../../../src/components/EditorToolbar/util.ts", "../../../src/components/EditorToolbar/blocks.ts", "../../../src/components/EditorToolbar/formatting.ts", "../../../src/components/EditorToolbar/headings.ts", "../../../src/components/EditorToolbar/image.ts", "../../../src/components/EditorToolbar/lists.ts", "../../../src/components/EditorToolbar/search.ts", "../../../src/components/EditorToolbar/view-mode.ts", "../../../src/components/CommandMenu/CommandMenu.tsx"],
|
4
4
|
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nexport const translationKey = 'react-ui-editor';\n\nexport const translations = [\n {\n 'en-US': {\n [translationKey]: {\n 'strong label': 'Bold',\n 'emphasis label': 'Italics',\n 'strikethrough label': 'Strikethrough',\n 'code label': 'Code',\n 'link label': 'Link',\n 'list-bullet label': 'Bullet list',\n 'list-ordered label': 'Numbered list',\n 'list-task label': 'Task list',\n 'blockquote label': 'Block quote',\n 'codeblock label': 'Code block',\n 'comment label': 'Create comment',\n 'selection overlaps existing comment label': 'Selection overlaps existing comment',\n 'select text to comment label': 'Select text to comment',\n 'image label': 'Insert image',\n 'table label': 'Create table',\n 'heading label': 'Heading level',\n 'heading level label_zero': 'Paragraph',\n 'heading level label_one': 'Heading level {{count}}',\n 'heading level label_other': 'Heading level {{count}}',\n 'view mode label': 'Editor view',\n 'preview mode label': 'Live preview',\n 'readonly mode label': 'Read only',\n 'search label': 'Search',\n 'source mode label': 'Source',\n },\n },\n },\n] as const satisfies Resource[];\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { translations } from './translations';\n\nexport { type Extension, EditorState } from '@codemirror/state';\nexport { EditorView, keymap } from '@codemirror/view';\nexport { tags } from '@lezer/highlight';\n\nexport { TextKind } from '@dxos/protocols/proto/dxos/echo/model/text';\n\nexport * from './components';\nexport * from './defaults';\nexport * from './extensions';\nexport * from './hooks';\nexport * from './types';\nexport * from './util';\n\nexport { translations };\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport React, { forwardRef, useImperativeHandle } from 'react';\n\nimport { type ThemedClassName, useThemeContext } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { type UseTextEditorProps, useTextEditor } from '../../hooks';\n\nexport type EditorProps = ThemedClassName<\n {\n id: string;\n text: DataType.Text;\n } & Omit<UseTextEditorProps, 'id'>\n>;\n\n/**\n * Minimal text editor.\n */\nexport const Editor = forwardRef<EditorView | undefined, EditorProps>(\n ({ classNames, id, text, ...props }, forwardedRef) => {\n const { themeMode } = useThemeContext();\n const { parentRef, focusAttributes, view } = useTextEditor(\n () => ({\n id,\n initialValue: text.content,\n ...props,\n }),\n [id, text, themeMode],\n );\n\n useImperativeHandle(forwardedRef, () => view, [view]);\n return <div ref={parentRef} className={mx(classNames)} {...focusAttributes} />;\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorState, type EditorStateConfig, type Text } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { type TabsterTypes, useFocusableGroup } from '@fluentui/react-tabster';\nimport {\n type DependencyList,\n type KeyboardEventHandler,\n type RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { log } from '@dxos/log';\nimport { type MaybeProvider, getProviderValue, isNotFalsy } from '@dxos/util';\n\nimport { type EditorSelection, createEditorStateTransaction, documentId, editorInputMode } from '../extensions';\nimport { debugDispatcher } from '../util';\n\nlet instanceCount = 0;\n\nexport type CursorInfo = {\n from: number;\n to: number;\n line: number;\n lines: number;\n length: number;\n after?: string;\n};\n\nexport type UseTextEditor = {\n // TODO(burdon): Rename.\n parentRef: RefObject<HTMLDivElement>;\n view?: EditorView;\n focusAttributes?: TabsterTypes.TabsterDOMAttribute & {\n tabIndex: 0;\n onKeyUp: KeyboardEventHandler<HTMLDivElement>;\n };\n};\n\nexport type UseTextEditorProps = Pick<EditorStateConfig, 'extensions'> & {\n id?: string;\n doc?: Text;\n initialValue?: string;\n autoFocus?: boolean;\n scrollTo?: number;\n selection?: EditorSelection;\n moveToEndOfLine?: boolean;\n debug?: boolean;\n};\n\n/**\n * Creates codemirror text editor.\n */\nexport const useTextEditor = (\n props: MaybeProvider<UseTextEditorProps> = {},\n deps: DependencyList = [],\n): UseTextEditor => {\n const { id, doc, initialValue, extensions, autoFocus, scrollTo, selection, moveToEndOfLine, debug } =\n useMemo<UseTextEditorProps>(() => getProviderValue(props), deps ?? []);\n\n // NOTE: Increments by 2 in strict mode.\n const [instanceId] = useState(() => `text-editor-${++instanceCount}`);\n const [view, setView] = useState<EditorView>();\n const parentRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n let view: EditorView;\n if (parentRef.current) {\n log('create', { id, instanceId, doc: initialValue?.length ?? 0 });\n\n let initialSelection;\n if (selection?.anchor && initialValue?.length) {\n if (selection.anchor <= initialValue.length && (selection?.head ?? 0) <= initialValue.length) {\n initialSelection = selection;\n }\n } else if (moveToEndOfLine && selection === undefined) {\n const index = initialValue?.indexOf('\\n');\n const anchor = !index || index === -1 ? 0 : index;\n initialSelection = { anchor };\n }\n\n // https://codemirror.net/docs/ref/#state.EditorStateConfig\n const state = EditorState.create({\n doc: doc ?? initialValue,\n // selection: initialSelection,\n extensions: [\n id && documentId.of(id),\n extensions,\n // NOTE: This doesn't catch errors in keymap functions.\n EditorView.exceptionSink.of((err) => {\n log.catch(err);\n }),\n ].filter(isNotFalsy),\n });\n\n // https://codemirror.net/docs/ref/#view.EditorViewConfig\n view = new EditorView({\n parent: parentRef.current,\n state,\n scrollTo: scrollTo ? EditorView.scrollIntoView(scrollTo, { yMargin: 96 }) : undefined, // TODO(burdon): Const.\n dispatchTransactions: debug ? debugDispatcher : undefined,\n });\n\n // Move to end of line after document loaded (unless selection is specified).\n if (moveToEndOfLine && !initialSelection) {\n const { to } = view.state.doc.lineAt(0);\n if (to) {\n view.dispatch({ selection: { anchor: to } });\n }\n }\n\n setView(view);\n }\n\n return () => {\n log('destroy', { id });\n view?.destroy();\n };\n }, deps);\n\n useEffect(() => {\n if (view) {\n if (scrollTo || selection) {\n if (selection && selection.anchor > view.state.doc.length) {\n log.warn('invalid selection', { length: view.state.doc.length, scrollTo, selection });\n return;\n }\n\n view.dispatch(createEditorStateTransaction({ scrollTo, selection }));\n }\n }\n }, [view, scrollTo, selection]);\n\n useEffect(() => {\n if (view && autoFocus) {\n view.focus();\n }\n }, [autoFocus, view]);\n\n const focusableGroupAttrs = useFocusableGroup({\n tabBehavior: 'limited',\n ignoreDefaultKeydown: {\n Escape: view?.state.facet(editorInputMode).noTabster,\n },\n });\n\n // Focus editor on Enter (e.g., when tabbing to this component).\n const handleKeyUp = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n const { key, target, currentTarget } = event;\n if (target === currentTarget) {\n switch (key) {\n case 'Enter': {\n view?.focus();\n break;\n }\n }\n }\n },\n [view],\n );\n\n return {\n parentRef,\n view,\n focusAttributes: {\n tabIndex: 0 as const,\n ...focusableGroupAttrs,\n onKeyUp: handleKeyUp,\n },\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Extension, RangeSetBuilder } from '@codemirror/state';\nimport { Decoration, type DecorationSet, EditorView, ViewPlugin, type ViewUpdate } from '@codemirror/view';\n\nconst annotationMark = Decoration.mark({ class: 'cm-annotation' });\n\nexport type AnnotationOptions = {\n match?: RegExp; // TODO(burdon): Update via hook (e.g., for search).\n};\n\n/**\n *\n */\nexport const annotations = ({ match }: AnnotationOptions = {}): Extension => {\n return [\n ViewPlugin.fromClass(\n class {\n decorations: DecorationSet = Decoration.none;\n update(update: ViewUpdate) {\n const builder = new RangeSetBuilder<Decoration>();\n if (match) {\n // Only process visible lines.\n const { from, to } = update.view.viewport;\n const text = update.state.doc.sliceString(from, to);\n const matches = text.matchAll(match);\n for (const m of matches) {\n if (m.index !== undefined) {\n // Adjust match position relative to viewport.\n const start = from + m.index;\n const end = start + m[0].length;\n builder.add(start, end, annotationMark);\n }\n }\n }\n\n this.decorations = builder.finish();\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n ),\n\n EditorView.theme({\n '.cm-annotation': {\n textDecoration: 'underline',\n textDecorationStyle: 'wavy',\n textDecorationColor: 'var(--dx-errorText)',\n },\n }),\n ];\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, Prec } from '@codemirror/state';\nimport {\n Decoration,\n type DecorationSet,\n EditorView,\n ViewPlugin,\n type ViewUpdate,\n WidgetType,\n keymap,\n} from '@codemirror/view';\n\nexport type AutocompleteOptions = {\n fireIfEmpty?: boolean;\n\n /**\n * Callback triggered when Enter is pressed.\n * @param text The current text in the editor\n * @returns true if the editor should reset the document.\n */\n onSubmit?: (text: string) => boolean | void;\n\n /**\n * Function that returns a list of suggestions based on the current text.\n * @param text The current text before the cursor\n * @returns Array of suggestion strings\n */\n onSuggest?: (text: string) => string[];\n\n /**\n * ESC pressed.\n */\n onCancel?: () => void;\n};\n\n/**\n * Creates an autocomplete extension that shows inline suggestions.\n * Pressing Tab will complete the suggestion.\n */\nexport const autocomplete = ({ fireIfEmpty, onSubmit, onSuggest, onCancel }: AutocompleteOptions): Extension => {\n const suggest = ViewPlugin.fromClass(\n class {\n _decorations: DecorationSet;\n _currentSuggestion: string | null = null;\n\n constructor(view: EditorView) {\n this._decorations = this.computeDecorations(view);\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.selectionSet) {\n this._decorations = this.computeDecorations(update.view);\n }\n }\n\n private computeDecorations(view: EditorView): DecorationSet {\n const text = view.state.doc.toString();\n const suggestions = onSuggest?.(text) ?? [];\n if (!suggestions.length) {\n this._currentSuggestion = null;\n return Decoration.none;\n }\n\n // Get the first suggestion.\n this._currentSuggestion = suggestions[0];\n const suffix = this._currentSuggestion.slice(text.length);\n if (!suffix) {\n return Decoration.none;\n }\n\n // Always show ghost text at the end of the document.\n return Decoration.set([\n Decoration.widget({\n widget: new InlineSuggestionWidget(suffix),\n side: 1,\n }).range(view.state.doc.length),\n ]);\n }\n\n completeSuggestion(view: EditorView): boolean {\n if (!this._currentSuggestion) {\n return false;\n }\n\n const text = view.state.doc.toString();\n const suffix = this._currentSuggestion.slice(text.length);\n if (!suffix) {\n return false;\n }\n\n view.dispatch({\n changes: {\n from: view.state.doc.length,\n insert: suffix,\n },\n selection: {\n anchor: view.state.doc.length + suffix.length,\n },\n });\n\n return true;\n }\n },\n {\n decorations: (v) => v._decorations,\n },\n );\n\n return [\n suggest,\n EditorView.theme({\n '.cm-inline-suggestion': {\n opacity: 0.4,\n },\n }),\n\n Prec.highest(\n keymap.of([\n {\n key: 'Tab',\n preventDefault: true,\n run: (view) => {\n const plugin = view.plugin(suggest);\n return plugin?.completeSuggestion(view) ?? false;\n },\n },\n {\n key: 'ArrowRight',\n preventDefault: true,\n run: (view) => {\n // Only complete if cursor is at the end\n if (view.state.selection.main.head !== view.state.doc.length) {\n return false;\n }\n\n const plugin = view.plugin(suggest);\n return plugin?.completeSuggestion(view) ?? false;\n },\n },\n {\n key: 'Enter',\n preventDefault: true,\n run: (view) => {\n const text = view.state.doc.toString().trim();\n if (onSubmit && (fireIfEmpty || text.length > 0)) {\n const reset = onSubmit(text);\n\n // Clear the document after calling onEnter.\n if (reset) {\n view.dispatch({\n changes: {\n from: 0,\n to: view.state.doc.length,\n insert: '',\n },\n });\n }\n }\n\n return true;\n },\n },\n {\n key: 'Shift-Enter',\n preventDefault: true,\n run: (view) => {\n view.dispatch({\n changes: {\n from: view.state.selection.main.head,\n insert: '\\n',\n },\n selection: {\n anchor: view.state.selection.main.head + 1,\n head: view.state.selection.main.head + 1,\n },\n });\n return true;\n },\n },\n {\n key: 'Escape',\n preventDefault: true,\n run: (view) => {\n // Clear the entire document.\n view.dispatch({\n changes: {\n from: 0,\n to: view.state.doc.length,\n insert: '',\n },\n });\n onCancel?.();\n return true;\n },\n },\n ]),\n ),\n ];\n};\n\nclass InlineSuggestionWidget extends WidgetType {\n constructor(private suffix: string) {\n super();\n }\n\n override toDOM(): HTMLSpanElement {\n const span = document.createElement('span');\n span.textContent = this.suffix;\n span.className = 'cm-inline-suggestion';\n return span;\n }\n\n override eq(other: InlineSuggestionWidget): boolean {\n return other.suffix === this.suffix;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { StateEffect } from '@codemirror/state';\nimport { EditorView, ViewPlugin } from '@codemirror/view';\n\nimport { Domino } from '../util';\n\nconst lineHeight = 24;\n\nexport const scrollToBottomEffect = StateEffect.define<any>();\n\nexport type AutoScrollOptions = {\n overscroll: number;\n throttle: number;\n};\n\n/**\n * Extension that supports pinning the scroll position and automatically scrolls to the bottom when content is added.\n */\n// TODO(burdon): Reconcile with transcript-extension.\nexport const autoScroll = ({ overscroll = 4 * lineHeight, throttle = 2_000 }: Partial<AutoScrollOptions> = {}) => {\n let isThrottled = false;\n let isPinned = true;\n let timeout: NodeJS.Timeout | undefined;\n let buttonContainer: HTMLDivElement;\n let lastScrollTop = 0;\n let scrollCounter = 0;\n\n const hideScrollbar = (view: EditorView) => {\n view.scrollDOM.classList.add('cm-hide-scrollbar');\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n view.scrollDOM.classList.remove('cm-hide-scrollbar');\n }, 1_000);\n };\n\n const scrollToBottom = (view: EditorView) => {\n isPinned = true;\n scrollCounter = 0;\n buttonContainer?.classList.add('opacity-0');\n requestAnimationFrame(() => {\n hideScrollbar(view);\n view.scrollDOM.scrollTo({\n top: view.scrollDOM.scrollHeight,\n behavior: 'smooth',\n });\n });\n };\n\n return [\n // Scroll button.\n ViewPlugin.fromClass(\n class {\n constructor(view: EditorView) {\n const scroller = view.scrollDOM.parentElement;\n buttonContainer = Domino.of('div')\n .classNames(true && 'cm-scroll-button transition-opacity duration-300 opacity-0')\n .child(\n Domino.of('button')\n .classNames('dx-button bg-accentSurface')\n .data('density', 'fine')\n .child(Domino.of<any>('dx-icon').attr('icon', 'ph--arrow-down--regular'))\n .on('click', () => {\n scrollToBottom(view);\n }),\n )\n .build();\n scroller?.appendChild(buttonContainer);\n }\n },\n ),\n\n // Update listener for logging when scrolling is needed.\n EditorView.updateListener.of((update) => {\n // Listen for effects.\n update.transactions.forEach((transaction) => {\n for (const effect of transaction.effects) {\n if (effect.is(scrollToBottomEffect)) {\n scrollToBottom(update.view);\n }\n }\n });\n\n if (update.docChanged && isPinned && !isThrottled) {\n const distanceFromBottom = calcDistance(update.view.scrollDOM);\n\n // Keep pinned.\n if (distanceFromBottom >= overscroll) {\n isThrottled = true;\n requestAnimationFrame(() => {\n scrollToBottom(update.view);\n });\n\n // Reset throttle.\n setTimeout(() => {\n isThrottled = false;\n }, throttle);\n }\n }\n }),\n\n // Detect user scroll.\n // NOTE: Multiple scroll events are triggered during programmatic smooth scrolling.\n EditorView.domEventHandlers({\n scroll: (event, view) => {\n const scroller = view.scrollDOM;\n // Suspect delta goes positive when rendering widgets, so count positive deltas.\n // TODO(burdon): Detect user scroll directly (wheel, touch, keys, etc.)\n if (lastScrollTop > scroller.scrollTop) {\n scrollCounter++;\n }\n lastScrollTop = scroller.scrollTop;\n const distanceFromBottom = calcDistance(scroller);\n if (distanceFromBottom === 0) {\n // Pin to bottom.\n isPinned = true;\n buttonContainer?.classList.add('opacity-0');\n scrollCounter = 0;\n } else if (scrollCounter > 3) {\n // Break pin if user scrolls up.\n isPinned = false;\n buttonContainer?.classList.remove('opacity-0');\n }\n },\n }),\n\n EditorView.theme({\n '.cm-scroller': {\n paddingBottom: `${overscroll}px`,\n scrollbarWidth: 'thin',\n },\n '.cm-scroller.cm-hide-scrollbar': {\n scrollbarWidth: 'none',\n },\n '.cm-scroller.cm-hide-scrollbar::-webkit-scrollbar': {\n display: 'none',\n },\n\n // TODO(burdon): IconButton.\n '.cm-scroll-button': {\n position: 'absolute',\n bottom: '0.5rem',\n right: '1rem',\n },\n }),\n ];\n};\n\nconst calcDistance = (scroller: HTMLElement) => {\n const scrollTop = scroller.scrollTop;\n const scrollHeight = scroller.scrollHeight;\n const clientHeight = scroller.clientHeight;\n const distanceFromBottom = scrollHeight - (scrollTop + clientHeight);\n return distanceFromBottom;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Facet } from '@codemirror/state';\n\nexport const singleValueFacet = <I, O = I>(defaultValue?: O) =>\n Facet.define<I, O>({\n // Called immediately.\n combine: (providers) => {\n return (providers[0] ?? defaultValue) as O;\n },\n });\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type EditorState } from '@codemirror/state';\n\nimport { type Range } from '../types';\n\nimport { singleValueFacet } from './facet';\n\n/**\n * Determines if two ranges overlap.\n * A range is considered to overlap if there is any intersection\n * between the two ranges, inclusive of their boundaries.\n */\nexport const overlap = (a: Range, b: Range): boolean => a.from <= b.to && a.to >= b.from;\n\n/**\n * Converts indexes into the text document into stable peer-independent cursors.\n *\n * See:\n * - https://automerge.org/automerge/api-docs/js/functions/next.getCursor.html\n * - https://github.com/yjs/yjs?tab=readme-ov-file#relative-positions\n *\n * @param {assoc} number Negative values will associate the cursor with the previous character\n * while positive - with the next one.\n */\nexport interface CursorConverter {\n toCursor(position: number, assoc?: -1 | 1 | undefined): string;\n fromCursor(cursor: string): number;\n}\n\nconst defaultCursorConverter: CursorConverter = {\n toCursor: (position) => position.toString(),\n fromCursor: (cursor) => parseInt(cursor),\n};\n\nexport class Cursor {\n static readonly converter = singleValueFacet(defaultCursorConverter);\n\n static readonly getCursorFromRange = (state: EditorState, range: Range) => {\n const cursorConverter = state.facet(Cursor.converter);\n const from = cursorConverter.toCursor(range.from);\n const to = cursorConverter.toCursor(range.to, -1);\n return [from, to].join(':');\n };\n\n static readonly getRangeFromCursor = (state: EditorState, cursor: string) => {\n const cursorConverter = state.facet(Cursor.converter);\n\n const parts = cursor.split(':');\n const from = cursorConverter.fromCursor(parts[0]);\n const to = cursorConverter.fromCursor(parts[1]);\n return from !== undefined && to !== undefined ? { from, to } : undefined;\n };\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Range } from '@codemirror/state';\nimport { type Decoration, type DecorationSet } from '@codemirror/view';\n\nexport const decorationSetToArray = (deco: DecorationSet): readonly Range<Decoration>[] => {\n const ranges: Range<Decoration>[] = [];\n const iter = deco.iter();\n while (iter.value) {\n ranges.push({\n from: iter.from,\n to: iter.to,\n value: iter.value,\n });\n iter.next();\n }\n\n return ranges;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Transaction } from '@codemirror/state';\nimport { type EditorView } from '@codemirror/view';\n\nimport { log } from '@dxos/log';\n\nexport const wrapWithCatch = (fn: (...args: any[]) => any, label?: string) => {\n return (...args: any[]) => {\n try {\n return fn(...args);\n } catch (err) {\n log.catch(err, { label });\n }\n };\n};\n\n/**\n * CodeMirror callbacks swallow errors so wrap handlers.\n */\n// TODO(burdon): Reconcile with wrapWithCatch.\nexport const callbackWrapper = <T extends Function>(fn: T): T =>\n ((...args: any[]) => {\n try {\n return fn(...args);\n } catch (err) {\n log.catch(err);\n }\n }) as unknown as T;\n\n/**\n * Log all changes before dispatching them to the view.\n * https://codemirror.net/docs/ref/#view.EditorView.dispatch\n */\nexport const debugDispatcher = (trs: readonly Transaction[], view: EditorView) => {\n logChanges(trs);\n view.update(trs);\n};\n\n/**\n * Util to log transactions in update listener.\n */\nexport const logChanges = (trs: readonly Transaction[]) => {\n const changes = trs\n .flatMap((tr) => {\n if (tr.changes.empty) {\n return undefined;\n }\n\n const changes: any[] = [];\n tr.changes.iterChanges((fromA, toA, fromB, toB, inserted) =>\n changes.push(JSON.stringify({ fromA, toA, fromB, toB, inserted: inserted.toString() })),\n );\n\n return changes;\n })\n .filter(Boolean);\n\n if (changes.length) {\n log('changes', { changes });\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport type Rect = {\n readonly left: number;\n readonly right: number;\n readonly top: number;\n readonly bottom: number;\n};\n\nexport const flattenRect = (rect: Rect, left: boolean): Rect => {\n const x = left ? rect.left : rect.right;\n return { left: x, right: x, top: rect.top, bottom: rect.bottom };\n};\n\nlet scratchRange: Range | null;\n\nexport const textRange = (node: Text, from: number, to = from): Range => {\n const range = scratchRange || (scratchRange = document.createRange());\n range.setEnd(node, to);\n range.setStart(node, from);\n return range;\n};\n\nexport const clientRectsFor = (dom: Node): DOMRectList => {\n if (dom.nodeType === 3) {\n return textRange(dom as Text, 0, dom.nodeValue!.length).getClientRects();\n } else if (dom.nodeType === 1) {\n return (dom as HTMLElement).getClientRects();\n } else {\n return [] as any as DOMRectList;\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { mx } from '@dxos/react-ui-theme';\nimport { type ClassNameValue } from '@dxos/react-ui-types';\n\n/**\n * Super lightweight chainable DOM builder.\n */\nexport class Domino<T extends HTMLElement> {\n static of<K extends keyof HTMLElementTagNameMap>(tag: K): Domino<HTMLElementTagNameMap[K]> {\n return new Domino<HTMLElementTagNameMap[K]>(tag);\n }\n\n private readonly _el: T;\n constructor(tag: keyof HTMLElementTagNameMap) {\n this._el = document.createElement(tag) as T;\n }\n classNames(...classNames: ClassNameValue[]): this {\n this._el.className = mx(classNames);\n return this;\n }\n text(value: string): this {\n this._el.textContent = value;\n return this;\n }\n data(key: string, value: string): this {\n this._el.dataset[key] = value;\n return this;\n }\n style(styles: Partial<CSSStyleDeclaration>): this {\n Object.assign(this._el.style, styles);\n return this;\n }\n attr<K extends keyof T>(key: K, value: T[K]): this {\n (this._el as any)[key] = value;\n return this;\n }\n child<C extends HTMLElement>(...children: Domino<C>[]): this {\n children.forEach((child) => this._el.appendChild(child.build()));\n return this;\n }\n on(event: string, handler: (e: Event) => void): this {\n this._el.addEventListener(event, handler);\n return this;\n }\n build(): T {\n return this._el;\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type FC, type ReactNode } from 'react';\nimport { createRoot } from 'react-dom/client';\n\nimport { ThemeProvider, Tooltip } from '@dxos/react-ui';\nimport { defaultTx } from '@dxos/react-ui-theme';\n\nimport { type RenderCallback } from '../types';\n\n/** @deprecated */\n// TODO(wittjosiah): Replace with portals which are lighter weight and inherit context from the main react tree.\nexport const renderRoot = <T extends Element>(root: T, node: ReactNode): T => {\n createRoot(root).render(<ThemeProvider tx={defaultTx}>{node}</ThemeProvider>);\n return root;\n};\n\n/**\n * Utility to create a renderer for a React component.\n * @deprecated\n */\nexport const createRenderer =\n <TProps extends object>(Component: FC<TProps>): RenderCallback<TProps> =>\n (el, props) => {\n renderRoot(\n el,\n <ThemeProvider tx={defaultTx}>\n <Tooltip.Provider>\n <Component {...props} />\n </Tooltip.Provider>\n </ThemeProvider>,\n );\n };\n", "//\n// Copyright 2024 DXOS.org\n// Copyright 2024 Automerge\n// Ref: https://github.com/automerge/automerge-codemirror\n//\n\nimport { next as A } from '@automerge/automerge';\nimport { type Extension, StateField } from '@codemirror/state';\nimport { EditorView, ViewPlugin } from '@codemirror/view';\n\nimport { type DocAccessor } from '@dxos/react-client/echo';\n\nimport { Cursor } from '../../util';\n\nimport { cursorConverter } from './cursor';\nimport { type State, isReconcile, updateHeadsEffect } from './defs';\nimport { Syncer } from './sync';\n\nexport const automerge = (accessor: DocAccessor): Extension => {\n const syncState = StateField.define<State>({\n create: () => ({\n path: accessor.path.slice(),\n lastHeads: A.getHeads(accessor.handle.doc()!),\n unreconciledTransactions: [],\n }),\n\n update: (value, tr) => {\n const result: State = {\n path: accessor.path.slice(),\n lastHeads: value.lastHeads,\n unreconciledTransactions: value.unreconciledTransactions.slice(),\n };\n\n let clearUnreconciled = false;\n for (const effect of tr.effects) {\n if (effect.is(updateHeadsEffect)) {\n result.lastHeads = effect.value.newHeads;\n clearUnreconciled = true;\n }\n }\n\n if (clearUnreconciled) {\n result.unreconciledTransactions = [];\n } else {\n if (!isReconcile(tr)) {\n result.unreconciledTransactions.push(tr);\n }\n }\n\n return result;\n },\n });\n\n const syncer = new Syncer(accessor.handle, syncState);\n\n return [\n Cursor.converter.of(cursorConverter(accessor)),\n\n // Track heads.\n syncState,\n\n // Reconcile external updates.\n ViewPlugin.fromClass(\n class {\n constructor(private readonly _view: EditorView) {\n accessor.handle.addListener('change', this._handleChange);\n }\n\n destroy() {\n accessor.handle.removeListener('change', this._handleChange);\n }\n\n readonly _handleChange = () => {\n syncer.reconcile(this._view, false);\n };\n },\n ),\n\n // Reconcile local updates.\n EditorView.updateListener.of(({ view, changes }) => {\n if (!changes.empty) {\n syncer.reconcile(view, true);\n }\n }),\n ];\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { log } from '@dxos/log';\nimport { type DocAccessor, fromCursor, toCursor } from '@dxos/react-client/echo';\n\nimport { type CursorConverter } from '../../util';\n\nexport const cursorConverter = (accessor: DocAccessor): CursorConverter => ({\n toCursor: (pos, assoc) => {\n try {\n return toCursor(accessor, pos, assoc);\n } catch (err) {\n log.catch(err);\n return ''; // In case of invalid request (e.g., wrong document).\n }\n },\n\n fromCursor: (cursor) => {\n try {\n return fromCursor(accessor, cursor);\n } catch (err) {\n log.catch(err);\n return 0; // In case of invalid request (e.g., wrong document).\n }\n },\n});\n", "//\n// Copyright 2023 DXOS.org\n// Copyright 2024 Automerge\n// Ref: https://github.com/automerge/automerge-codemirror\n//\n\nimport { type Heads, type Prop } from '@automerge/automerge';\nimport { Annotation, type EditorState, StateEffect, type StateField, type Transaction } from '@codemirror/state';\n\nexport type State = {\n path: Prop[];\n lastHeads: Heads;\n unreconciledTransactions: Transaction[];\n};\n\nexport const getPath = (state: EditorState, field: StateField<State>): Prop[] => state.field(field).path;\nexport const getLastHeads = (state: EditorState, field: StateField<State>): Heads => state.field(field).lastHeads;\n\nexport type UpdateHeads = {\n newHeads: Heads;\n};\n\nexport const updateHeadsEffect = StateEffect.define<UpdateHeads>({});\n\nexport const updateHeads = (newHeads: Heads): StateEffect<UpdateHeads> => updateHeadsEffect.of({ newHeads });\n\nexport const reconcileAnnotation = Annotation.define<boolean>();\n\nexport const isReconcile = (tr: Transaction): boolean => {\n return !!tr.annotation(reconcileAnnotation);\n};\n", "//\n// Copyright 2023 DXOS.org\n// Copyright 2024 Automerge\n// Ref: https://github.com/automerge/automerge-codemirror\n//\n\nimport { next as A } from '@automerge/automerge';\nimport { type StateField } from '@codemirror/state';\nimport { type EditorView } from '@codemirror/view';\n\nimport { type IDocHandle } from '@dxos/react-client/echo';\n\nimport { type State, getLastHeads, getPath, isReconcile, reconcileAnnotation, updateHeads } from './defs';\nimport { updateAutomerge } from './update-automerge';\nimport { updateCodeMirror } from './update-codemirror';\n\n/**\n * Implements three-way merge (on each mutation).\n */\nexport class Syncer {\n private _pending = false;\n\n // prettier-ignore\n constructor(\n private readonly _handle: IDocHandle,\n private readonly _state: StateField<State>\n ) {}\n\n reconcile(view: EditorView, editor: boolean): void {\n // TODO(burdon): Better way to do mutex?\n if (this._pending) {\n return;\n }\n\n this._pending = true;\n if (editor) {\n this.onEditorChange(view);\n } else {\n this.onAutomergeChange(view);\n }\n this._pending = false;\n }\n\n onEditorChange(view: EditorView): void {\n // Apply the unreconciled transactions to the document.\n const transactions = view.state.field(this._state).unreconciledTransactions.filter((tx) => !isReconcile(tx));\n const newHeads = updateAutomerge(this._state, this._handle, transactions, view.state);\n\n if (newHeads) {\n view.dispatch({\n effects: updateHeads(newHeads),\n annotations: reconcileAnnotation.of(false),\n });\n }\n }\n\n onAutomergeChange(view: EditorView): void {\n // Get the diff between the updated state of the document and the heads and apply that to the codemirror doc.\n const oldHeads = getLastHeads(view.state, this._state);\n const newHeads = A.getHeads(this._handle.doc()!);\n const diff = A.equals(oldHeads, newHeads) ? [] : A.diff(this._handle.doc()!, oldHeads, newHeads);\n\n const selection = view.state.selection;\n const path = getPath(view.state, this._state);\n updateCodeMirror(view, selection, path, diff);\n\n // TODO(burdon): Test conflicts?\n // A.getConflicts(this._handle.doc()!, path[0]);\n\n view.dispatch({\n effects: updateHeads(newHeads),\n annotations: reconcileAnnotation.of(false),\n });\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n// Copyright 2024 Automerge\n// Ref: https://github.com/automerge/automerge-codemirror\n//\n\nimport { next as A, type Heads } from '@automerge/automerge';\nimport { type EditorState, type StateField, type Text, type Transaction } from '@codemirror/state';\n\nimport { type IDocHandle } from '@dxos/react-client/echo';\n\nimport { type State } from './defs';\n\nexport const updateAutomerge = (\n field: StateField<State>,\n handle: IDocHandle,\n transactions: Transaction[],\n state: EditorState, // TODO(burdon): Just pass in the state field value?\n): Heads | undefined => {\n const { lastHeads, path } = state.field(field);\n\n // We don't want to call `automerge.updateAt` if there are no changes.\n // Otherwise, later on `automerge.diff` will return empty patches that result in a no-op but still mess up the selection.\n let hasChanges = false;\n for (const tr of transactions) {\n tr.changes.iterChanges(() => {\n hasChanges = true;\n });\n }\n\n if (!hasChanges) {\n return undefined;\n }\n\n const newHeads = handle.changeAt(lastHeads, (doc: A.Doc<unknown>) => {\n const invertedTransactions: { from: number; del: number; insert: Text }[] = [];\n for (const tr of transactions) {\n tr.changes.iterChanges((fromA, toA, _fromB, _toB, insert) => {\n invertedTransactions.push({ from: fromA, del: toA - fromA, insert });\n });\n }\n\n // TODO(burdon): Hack to apply in reverse order to properly apply range.\n invertedTransactions.reverse().forEach(({ from, del, insert }) => {\n A.splice(doc, path.slice(), from, del, insert.toString());\n });\n });\n\n return newHeads ?? undefined;\n};\n", "//\n// Copyright 2023 DXOS.org\n// Copyright 2024 Automerge\n// Ref: https://github.com/automerge/automerge-codemirror\n//\n\nimport {\n type DelPatch,\n type InsertPatch,\n type Patch,\n type Prop,\n type PutPatch,\n type SpliceTextPatch,\n} from '@automerge/automerge';\nimport { ChangeSet, type ChangeSpec, type EditorSelection, type EditorState } from '@codemirror/state';\nimport { type EditorView } from '@codemirror/view';\n\nimport { reconcileAnnotation } from './defs';\n\nexport const updateCodeMirror = (view: EditorView, selection: EditorSelection, target: Prop[], patches: Patch[]) => {\n for (const patch of patches) {\n const changeSpec = handlePatch(patch, target, view.state);\n if (changeSpec != null) {\n const changeSet = ChangeSet.of(changeSpec, view.state.doc.length, '\\n');\n selection = selection.map(changeSet, 1);\n view.dispatch({\n changes: changeSet,\n annotations: reconcileAnnotation.of(false),\n });\n }\n }\n\n view.dispatch({\n selection,\n annotations: reconcileAnnotation.of(false),\n });\n};\n\nconst handlePatch = (patch: Patch, target: Prop[], state: EditorState): ChangeSpec | null => {\n if (patch.action === 'insert') {\n return handleInsert(target, patch);\n } else if (patch.action === 'splice') {\n return handleSplice(target, patch);\n } else if (patch.action === 'del') {\n return handleDel(target, patch);\n } else if (patch.action === 'put') {\n return handlePut(target, patch, state);\n } else {\n return null;\n }\n};\n\nconst handleInsert = (target: Prop[], patch: InsertPatch): Array<ChangeSpec> => {\n const index = charPath(target, patch.path);\n if (index == null) {\n return [];\n }\n\n const text = patch.values.map((value) => (value ? value.toString() : '')).join('');\n return [{ from: index, to: index, insert: text }];\n};\n\nconst handleSplice = (target: Prop[], patch: SpliceTextPatch): Array<ChangeSpec> => {\n const index = charPath(target, patch.path);\n if (index == null) {\n return [];\n }\n\n return [{ from: index, insert: patch.value }];\n};\n\nconst handleDel = (target: Prop[], patch: DelPatch): Array<ChangeSpec> => {\n const index = charPath(target, patch.path);\n if (index == null) {\n return [];\n }\n\n const length = patch.length || 1;\n return [{ from: index, to: index + length }];\n};\n\nconst handlePut = (target: Prop[], patch: PutPatch, state: EditorState): Array<ChangeSpec> => {\n const index = charPath(target, [...patch.path, 0]);\n if (index == null) {\n return [];\n }\n\n const length = state.doc.length;\n if (typeof patch.value !== 'string') {\n return []; // TODO(dmaretskyi): How to handle non-string values?\n }\n\n return [{ from: 0, to: length, insert: patch.value as any }];\n};\n\n// If the path of the patch is of the form [path, <index>] then we know this is a path to a character\n// within the sequence given by path.\nconst charPath = (textPath: Prop[], candidatePath: Prop[]): number | null => {\n if (candidatePath.length !== textPath.length + 1) {\n return null;\n }\n\n for (let i = 0; i < textPath.length; i++) {\n if (textPath[i] !== candidatePath[i]) {\n return null;\n }\n }\n\n const index = candidatePath[candidatePath.length - 1];\n if (typeof index === 'number') {\n return index;\n }\n\n return null;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Annotation, type Extension, type Range, RangeSet } from '@codemirror/state';\nimport {\n Decoration,\n type DecorationSet,\n EditorView,\n type PluginValue,\n ViewPlugin,\n type ViewUpdate,\n WidgetType,\n} from '@codemirror/view';\n\nimport { Event } from '@dxos/async';\nimport { Context } from '@dxos/context';\n\nimport { Cursor, type CursorConverter, singleValueFacet } from '../../util';\n\nexport interface AwarenessProvider {\n remoteStateChange: Event<void>;\n\n open(): void;\n close(): void;\n\n getRemoteStates(): AwarenessState[];\n update(position: AwarenessPosition | undefined): void;\n}\n\nconst dummyProvider: AwarenessProvider = {\n remoteStateChange: new Event(),\n\n open: () => {},\n close: () => {},\n\n getRemoteStates: () => [],\n update: () => {},\n};\n\nexport const awarenessProvider = singleValueFacet<AwarenessProvider>(dummyProvider);\n\n// TODO(dmaretskyi): Specify the users that actually changed. Currently, we recalculate positions for every user.\nconst RemoteSelectionChangedAnnotation = Annotation.define();\n\nexport type AwarenessPosition = {\n anchor?: string;\n head?: string;\n};\n\nexport type AwarenessInfo = {\n displayName: string;\n darkColor: string;\n lightColor: string;\n};\n\nexport type AwarenessState = {\n position?: AwarenessPosition;\n peerId: string;\n info: AwarenessInfo;\n};\n\n/**\n * Extension provides presence information about other peers.\n */\nexport const awareness = (provider = dummyProvider): Extension => {\n return [\n awarenessProvider.of(provider),\n ViewPlugin.fromClass(RemoteSelectionsDecorator, {\n decorations: (value) => value.decorations,\n }),\n styles,\n ];\n};\n\n/**\n * Generates selection decorations from remote peers.\n */\nexport class RemoteSelectionsDecorator implements PluginValue {\n private readonly _ctx = new Context();\n private readonly _cursorConverter: CursorConverter;\n private readonly _provider: AwarenessProvider;\n\n private _lastAnchor?: number;\n private _lastHead?: number;\n\n public decorations: DecorationSet = RangeSet.of([]);\n\n constructor(view: EditorView) {\n this._cursorConverter = view.state.facet(Cursor.converter);\n this._provider = view.state.facet(awarenessProvider);\n this._provider.open();\n this._provider.remoteStateChange.on(this._ctx, () => {\n view.dispatch({ annotations: [RemoteSelectionChangedAnnotation.of([])] });\n });\n }\n\n destroy(): void {\n void this._ctx.dispose();\n this._provider.close();\n }\n\n update(update: ViewUpdate): void {\n this._updateLocalSelection(update.view);\n this._updateRemoteSelections(update.view);\n }\n\n private _updateLocalSelection(view: EditorView): void {\n const hasFocus = view.hasFocus && view.dom.ownerDocument.hasFocus();\n const { anchor = undefined, head = undefined } = hasFocus ? view.state.selection.main : {};\n if (this._lastAnchor === anchor && this._lastHead === head) {\n return;\n }\n\n this._lastAnchor = anchor;\n this._lastHead = head;\n\n this._provider.update(\n anchor !== undefined && head !== undefined\n ? {\n anchor: this._cursorConverter.toCursor(anchor),\n head: this._cursorConverter.toCursor(head, -1),\n }\n : undefined,\n );\n }\n\n private _updateRemoteSelections(view: EditorView): void {\n const decorations: Range<Decoration>[] = [\n // TODO(burdon): Factor out for testing.\n // {\n // from: 0,\n // to: 0,\n // value: Decoration.widget({ side: 0, block: false, widget: new RemoteCaretWidget('Test', 'red') }),\n // },\n ];\n\n const awarenessStates = this._provider.getRemoteStates();\n for (const state of awarenessStates) {\n const anchor = state.position?.anchor ? this._cursorConverter.fromCursor(state.position.anchor) : null;\n const head = state.position?.head ? this._cursorConverter.fromCursor(state.position.head) : null;\n if (anchor == null || head == null) {\n continue;\n }\n\n const start = Math.min(Math.min(anchor, head), view.state.doc.length);\n const end = Math.min(Math.max(anchor, head), view.state.doc.length);\n\n const startLine = view.state.doc.lineAt(start);\n const endLine = view.state.doc.lineAt(end);\n\n const darkColor = state.info.darkColor;\n const lightColor = state.info.lightColor;\n\n if (startLine.number === endLine.number) {\n // Selected content in a single line.\n decorations.push({\n from: start,\n to: end,\n value: Decoration.mark({\n attributes: { style: `background-color: ${lightColor}` },\n class: 'cm-collab-selection',\n }),\n });\n } else {\n // Selected content in multiple lines; first, render text-selection in the first line.\n decorations.push({\n from: start,\n to: startLine.from + startLine.length,\n value: Decoration.mark({\n attributes: { style: `background-color: ${lightColor}` },\n class: 'cm-collab-selection',\n }),\n });\n\n // Render text-selection in the last line.\n decorations.push({\n from: endLine.from,\n to: end,\n value: Decoration.mark({\n attributes: { style: `background-color: ${lightColor}` },\n class: 'cm-collab-selection',\n }),\n });\n\n for (let i = startLine.number + 1; i < endLine.number; i++) {\n const linePos = view.state.doc.line(i).from;\n decorations.push({\n from: linePos,\n to: linePos,\n value: Decoration.line({\n attributes: { style: `background-color: ${lightColor}`, class: 'cm-collab-selectionLine' },\n }),\n });\n }\n }\n\n decorations.push({\n from: head,\n to: head,\n value: Decoration.widget({\n side: head - anchor > 0 ? -1 : 1, // The local cursor should be rendered outside the remote selection.\n block: false,\n widget: new RemoteCaretWidget(state.info.displayName ?? 'Anonymous', darkColor),\n }),\n });\n }\n\n this.decorations = Decoration.set(decorations, true);\n }\n}\n\nclass RemoteCaretWidget extends WidgetType {\n constructor(\n private readonly _name: string,\n private readonly _color: string,\n ) {\n super();\n }\n\n override toDOM(): HTMLElement {\n const span = document.createElement('span');\n span.className = 'cm-collab-selectionCaret';\n span.style.backgroundColor = this._color;\n span.style.borderColor = this._color;\n\n const dot = document.createElement('div');\n dot.className = 'cm-collab-selectionCaretDot';\n\n const info = document.createElement('div');\n info.className = 'cm-collab-selectionInfo';\n info.innerText = this._name;\n\n span.appendChild(document.createTextNode('\\u2060'));\n span.appendChild(dot);\n span.appendChild(document.createTextNode('\\u2060'));\n span.appendChild(info);\n span.appendChild(document.createTextNode('\\u2060'));\n return span;\n }\n\n override updateDOM(): boolean {\n return false;\n }\n\n override eq(widget: this): boolean {\n return widget._color === this._color;\n }\n\n override get estimatedHeight() {\n return -1;\n }\n\n override ignoreEvent(): boolean {\n return true;\n }\n}\n\nconst styles = EditorView.theme({\n '.cm-collab-selection': {},\n '.cm-collab-selectionLine': {\n padding: 0,\n margin: '0px 2px 0px 4px',\n },\n '.cm-collab-selectionCaret': {\n position: 'relative',\n borderLeft: '1px solid black',\n borderRight: '1px solid black',\n marginLeft: '-1px',\n marginRight: '-1px',\n boxSizing: 'border-box',\n display: 'inline',\n cursor: 'pointer',\n },\n '.cm-collab-selectionCaretDot': {\n borderRadius: '50%',\n position: 'absolute',\n width: '.5em',\n height: '.5em',\n top: '-.25em',\n left: '-.25em',\n backgroundColor: 'inherit',\n transition: 'transform .3s ease-in-out',\n boxSizing: 'border-box',\n },\n '.cm-collab-selectionCaret:hover > .cm-collab-selectionCaretDot': {\n transform: 'scale(0)',\n transformOrigin: 'center',\n },\n '.cm-collab-selectionInfo': {\n position: 'absolute',\n transform: 'translate(-50%, 0)',\n top: '-20px',\n left: 0,\n fontSize: '.75em',\n fontFamily: 'sans-serif',\n fontStyle: 'normal',\n fontWeight: 'normal',\n lineHeight: 'normal',\n userSelect: 'none',\n color: 'white',\n padding: '2px 6px',\n zIndex: 101,\n transition: 'opacity .3s ease-in-out',\n backgroundColor: 'inherit',\n borderRadius: '2px',\n opacity: 0,\n transitionDelay: '0s',\n whiteSpace: 'nowrap',\n },\n '.cm-collab-selectionCaret:hover > .cm-collab-selectionInfo': {\n opacity: 1,\n transitionDelay: '0s',\n },\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { DeferredTask, Event, sleep } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\nimport { type Space } from '@dxos/react-client/echo';\nimport { type GossipMessage } from '@dxos/react-client/mesh';\n\nimport { type AwarenessInfo, type AwarenessPosition, type AwarenessProvider, type AwarenessState } from './awareness';\n\ntype ProtocolMessage =\n | {\n kind: 'query';\n }\n | {\n kind: 'post';\n state: AwarenessState;\n };\n\nconst DEBOUNCE_INTERVAL = 100; // ms\n\nexport type AwarenessProviderParams = {\n space: Space;\n channel: string;\n peerId: string;\n info: AwarenessInfo;\n};\n\n/**\n * Receives and broadcasts profile and cursor position.\n */\nexport class SpaceAwarenessProvider implements AwarenessProvider {\n private readonly _remoteStates = new Map<string, AwarenessState>();\n\n private readonly _space: Space;\n private readonly _channel: string;\n private readonly _peerId: string;\n private readonly _info: AwarenessInfo;\n\n private _ctx?: Context;\n private _postTask?: DeferredTask;\n private _localState?: AwarenessState;\n\n public readonly remoteStateChange = new Event<void>();\n\n constructor(params: AwarenessProviderParams) {\n this._space = params.space;\n this._channel = params.channel;\n this._peerId = params.peerId;\n this._info = params.info;\n }\n\n open(): void {\n this._ctx = new Context();\n this._postTask = new DeferredTask(this._ctx, async () => {\n if (this._localState) {\n await this._space.postMessage(this._channel, {\n kind: 'post',\n state: this._localState,\n } satisfies ProtocolMessage);\n\n // TODO(burdon): Replace with throttle.\n // TODO(burdon): Send heads?\n await sleep(DEBOUNCE_INTERVAL);\n }\n });\n\n this._ctx.onDispose(\n this._space.listen(this._channel, (message: GossipMessage) => {\n switch (message.payload.kind) {\n case 'query': {\n this._handleQueryMessage();\n break;\n }\n case 'post': {\n this._handlePostMessage(message.payload);\n break;\n }\n }\n }),\n );\n\n void this._space\n .postMessage(this._channel, {\n kind: 'query',\n } satisfies ProtocolMessage)\n .catch((err) => {\n log.debug('failed to query awareness', { err });\n });\n }\n\n close(): void {\n void this._ctx?.dispose();\n this._ctx = undefined;\n this._postTask = undefined;\n }\n\n getRemoteStates(): AwarenessState[] {\n return Array.from(this._remoteStates.values());\n }\n\n update(position: AwarenessPosition | undefined): void {\n invariant(this._postTask);\n this._localState = {\n peerId: this._peerId,\n position,\n info: this._info,\n };\n\n this._postTask.schedule();\n }\n\n private _handleQueryMessage(): void {\n invariant(this._postTask);\n this._postTask.schedule();\n }\n\n private _handlePostMessage(message: ProtocolMessage): void {\n invariant(message.kind === 'post');\n // TODO(wittjosiah): Is it helpful or confusing to show cursors for self on other devices?\n this._remoteStates.set(message.state.peerId, message.state);\n this.remoteStateChange.emit();\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n// Based on a demo by Joel Besada and Kushagra Gour.\n// https://twitter.com/JoelBesada/status/670343885655293952\n// https://github.com/chinchang/code-blast-codemirror/blob/master/code-blast.js\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { EditorView, keymap } from '@codemirror/view';\nimport defaultsDeep from 'lodash.defaultsdeep';\n\nimport { throttle } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\n\nexport type BlastOptions = {\n effect?: number;\n maxParticles: number;\n particleGravity: number;\n particleAlphaFadeout: number;\n particleSize: { min: number; max: number };\n particleNumRange: { min: number; max: number };\n particleVelocityRange: { x: [number, number]; y: [number, number] };\n particleShrinkRate: number;\n shakeIntensity: number;\n color?: () => number[];\n};\n\nexport const defaultOptions: BlastOptions = {\n effect: 2,\n maxParticles: 200,\n particleGravity: 0.08,\n particleAlphaFadeout: 0.996,\n particleSize: { min: 2, max: 8 },\n particleNumRange: { min: 5, max: 10 },\n particleVelocityRange: { x: [-1, 1], y: [-3.5, -1.5] },\n particleShrinkRate: 0.95,\n shakeIntensity: 5,\n};\n\nexport const blast = (options: Partial<BlastOptions> = defaultOptions): Extension => {\n let blaster: Blaster | undefined;\n let last = 0;\n\n const getPoint = (view: EditorView, pos: number) => {\n const { left: x = 0, top: y = 0 } = view.coordsForChar(pos) ?? {};\n const element = document.elementFromPoint(x, y);\n\n const { offsetLeft: left = 0, offsetTop: top = 0 } = view.scrollDOM.parentElement ?? {};\n const point = { x: x - left, y: y - top };\n\n return { element, point };\n };\n\n return [\n // Cursor moved.\n EditorView.updateListener.of((update) => {\n // NOTE: The MarkdownEditor may recreated the EditorView.\n if (blaster?.node !== update.view.scrollDOM) {\n if (blaster) {\n blaster.destroy();\n }\n\n blaster = new Blaster(\n update.view.scrollDOM,\n defaultsDeep(\n {\n particleGravity: 0.2,\n particleShrinkRate: 0.995,\n color: () => [100 + Math.random() * 100, 0, 0],\n },\n options,\n defaultOptions,\n ),\n );\n blaster.initialize();\n blaster.start(); // TODO(burdon): Stop/clean-up.\n } else {\n blaster.resize();\n }\n\n const current = update.state.selection.main.head;\n if (current !== last) {\n last = current;\n // TODO(burdon): Null if end of line.\n const { element, point } = getPoint(update.view, current - 1);\n if (element && point) {\n blaster.spawn({ element, point });\n }\n }\n }),\n\n keymap.of([\n {\n any: (_, event) => {\n if (blaster) {\n if (event.key === 'Enter' && event.shiftKey) {\n blaster.shake({ time: 0.8 });\n return true;\n }\n }\n\n return false;\n },\n },\n ]),\n ];\n};\n\n//\n// Blaster (no CM deps).\n//\n\nclass Blaster {\n private readonly _effect: Effect;\n\n _canvas: HTMLCanvasElement | undefined;\n _ctx: CanvasRenderingContext2D | undefined | null;\n\n _running = false;\n _lastTime: number | undefined;\n _shakeTime = 0;\n _shakeTimeMax = 0;\n\n _particles: Particle[] = [];\n _particlePointer = 0;\n\n _lastPoint = { x: 0, y: 0 };\n\n constructor(\n private readonly _node: HTMLElement,\n private readonly _options: BlastOptions,\n ) {\n this._effect = this._options.effect === 1 ? new Effect1(_options) : new Effect2(_options);\n }\n\n get node() {\n return this._node;\n }\n\n initialize(): void {\n // console.log('initialize');\n invariant(!this._canvas && !this._ctx);\n\n this._canvas = document.createElement('canvas');\n this._canvas.id = 'code-blast-canvas';\n this._canvas.style.position = 'absolute';\n this._canvas.style.zIndex = '0';\n this._canvas.style.pointerEvents = 'none';\n // this._canvas.style.border = '2px dashed red';\n\n this._ctx = this._canvas.getContext('2d');\n\n const parent = this._node.parentElement?.parentElement;\n parent?.appendChild(this._canvas);\n\n this.resize();\n }\n\n destroy(): void {\n this.stop();\n // console.log('destroy');\n if (this._canvas) {\n this._canvas.remove();\n this._canvas = undefined;\n this._ctx = undefined;\n }\n }\n\n resize(): void {\n if (this._node.parentElement && this._canvas) {\n const { offsetLeft: x, offsetTop: y, offsetWidth: width, offsetHeight: height } = this._node.parentElement;\n this._canvas.style.top = `${y}px`;\n this._canvas.style.left = `${x}px`;\n this._canvas.width = width;\n this._canvas.height = height;\n }\n }\n\n start(): void {\n // console.log('start');\n invariant(this._canvas && this._ctx);\n this._running = true;\n this.loop();\n }\n\n stop(): void {\n // console.log('stop');\n this._running = false;\n this._node.style.transform = 'translate(0px, 0px)';\n }\n\n loop(): void {\n if (!this._running || !this._canvas || !this._ctx) {\n return;\n }\n\n this._ctx.clearRect(0, 0, this._canvas.width ?? 0, this._canvas.height ?? 0);\n\n // Calculate the delta from the previous frame.\n const now = new Date().getTime();\n this._lastTime ??= now;\n const dt = (now - this._lastTime) / 1000;\n this._lastTime = now;\n\n if (this._shakeTime > 0) {\n this._shakeTime -= dt;\n const magnitude = (this._shakeTime / this._shakeTimeMax) * this._options.shakeIntensity;\n const shakeX = random(-magnitude, magnitude);\n const shakeY = random(-magnitude, magnitude);\n this._node!.style.transform = `translate(${shakeX}px,${shakeY}px)`;\n }\n\n this.drawParticles();\n\n requestAnimationFrame(this.loop.bind(this));\n }\n\n shake = throttle(({ time }: { time: number }) => {\n this._shakeTime = this._shakeTimeMax || time;\n this._shakeTimeMax = time;\n }, 100);\n\n spawn = throttle(({ element, point }: { element: Element; point: { x: number; y: number } }) => {\n const color = getRGBComponents(element, this._options.color);\n const numParticles = random(this._options.particleNumRange.min, this._options.particleNumRange.max);\n const dir = this._lastPoint.x === point.x ? 0 : this._lastPoint.x < point.x ? 1 : -1;\n this._lastPoint = point;\n for (let i = numParticles; i--; i > 0) {\n this._particles[this._particlePointer] = this._effect.create(point.x - dir * 16, point.y, color);\n this._particlePointer = (this._particlePointer + 1) % this._options.maxParticles;\n }\n }, 100);\n\n drawParticles(): void {\n for (let i = this._particles.length; i--; i > 0) {\n const particle = this._particles[i];\n if (!particle) {\n continue;\n }\n\n if (particle.alpha < 0.01 || particle.size <= 0.5) {\n continue;\n }\n\n this._effect.update(this._ctx!, particle);\n }\n }\n}\n\n//\n// Effects\n//\n\ntype Particle = {\n x: number;\n y: number;\n vx: number;\n vy: number;\n size: number;\n color: (string | number)[];\n alpha: number;\n theta?: number;\n drag?: number;\n wander?: number;\n};\n\nabstract class Effect {\n constructor(protected readonly _options: BlastOptions) {}\n abstract create(x: number, y: number, color: Particle['color']): Particle;\n abstract update(ctx: CanvasRenderingContext2D, particle: Particle): void;\n}\n\nclass Effect1 extends Effect {\n create(x: number, y: number, color: Particle['color']) {\n return {\n x,\n y: y + 10,\n vx: random(this._options.particleVelocityRange.x[0], this._options.particleVelocityRange.x[1]),\n vy: random(this._options.particleVelocityRange.y[0], this._options.particleVelocityRange.y[1]),\n size: random(this._options.particleSize.min, this._options.particleSize.max),\n color,\n alpha: 1,\n };\n }\n\n update(ctx: CanvasRenderingContext2D, particle: Particle): void {\n particle.vy += this._options.particleGravity;\n particle.x += particle.vx;\n particle.y += particle.vy;\n particle.alpha *= this._options.particleAlphaFadeout;\n\n ctx.fillStyle = `rgba(${particle.color[0]},${particle.color[1]},${particle.color[2]},${particle.alpha})`;\n ctx.fillRect(Math.round(particle.x - 1), Math.round(particle.y - 1), particle.size, particle.size);\n }\n}\n\n/**\n * Based on Soulwire's demo.\n * http://codepen.io/soulwire/pen/foktm\n */\nclass Effect2 extends Effect {\n create(x: number, y: number, color: Particle['color']) {\n return {\n x,\n y: y + 10,\n vx: random(this._options.particleVelocityRange.x[0], this._options.particleVelocityRange.x[1]),\n vy: random(this._options.particleVelocityRange.y[0], this._options.particleVelocityRange.y[1]),\n size: random(this._options.particleSize.min, this._options.particleSize.max),\n color,\n alpha: 1,\n theta: (random(0, 360) * Math.PI) / 180,\n drag: 0.92,\n wander: 0.15,\n };\n }\n\n update(ctx: CanvasRenderingContext2D, particle: Particle): void {\n particle.vy += this._options.particleGravity;\n particle.x += particle.vx;\n particle.y += particle.vy;\n particle.vx *= particle.drag!;\n particle.vy *= particle.drag!;\n particle.theta! += random(-0.5, 0.5);\n particle.vx += Math.sin(particle.theta!) * 0.1;\n particle.vy += Math.cos(particle.theta!) * 0.1;\n particle.size *= this._options.particleShrinkRate;\n particle.alpha *= this._options.particleAlphaFadeout;\n\n ctx.fillStyle = `rgba(${particle.color[0]},${particle.color[1]},${particle.color[2]},${particle.alpha})`;\n ctx.beginPath();\n ctx.arc(Math.round(particle.x - 1), Math.round(particle.y - 1), particle.size, 0, 2 * Math.PI);\n ctx.fill();\n }\n}\n\n//\n// Utils\n//\n\nconst getRGBComponents = (node: Element, color: BlastOptions['color']): Particle['color'] => {\n if (typeof color === 'function') {\n return color();\n }\n\n const bgColor = getComputedStyle(node).color;\n if (bgColor) {\n const x = bgColor.match(/(\\d+), (\\d+), (\\d+)/)?.slice(1);\n if (x) {\n return x;\n }\n }\n\n return [50, 50, 50];\n};\n\nconst random = (min: number, max: number) => {\n if (!max) {\n max = min;\n min = 0;\n }\n\n return min + ~~(Math.random() * (max - min + 1));\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { StateEffect } from '@codemirror/state';\nimport { type Command, type EditorView, type KeyBinding } from '@codemirror/view';\n\nimport { commandState } from './state';\n\nexport type Action =\n | {\n type: 'insert';\n text: string;\n }\n | {\n type: 'cancel';\n };\n\nexport type ActionHandler = (action: Action) => void;\n\nexport const openEffect = StateEffect.define<{ pos: number; fullWidth?: boolean }>();\nexport const closeEffect = StateEffect.define<null>();\n\nexport const openCommand: Command = (view: EditorView) => {\n if (view.state.field(commandState, false)) {\n const selection = view.state.selection.main;\n const line = view.state.doc.lineAt(selection.from);\n if (line.from === selection.from && line.from === line.to) {\n view.dispatch({ effects: openEffect.of({ pos: selection.anchor, fullWidth: true }) });\n return true;\n }\n }\n\n return false;\n};\n\nexport const closeCommand: Command = (view: EditorView) => {\n if (view.state.field(commandState, false)) {\n view.dispatch({ effects: closeEffect.of(null) });\n return true;\n }\n\n return false;\n};\n\nexport const commandKeyBindings: readonly KeyBinding[] = [\n {\n key: '/',\n run: openCommand,\n },\n {\n key: 'Escape',\n run: closeCommand,\n },\n];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { StateField } from '@codemirror/state';\nimport { type EditorView, type Tooltip, type TooltipView, showTooltip } from '@codemirror/view';\n\nimport { type RenderCallback } from '../../types';\nimport { singleValueFacet } from '../../util';\n\nimport { type Action, closeEffect, openEffect } from './action';\nimport { type CommandOptions } from './command';\n\nexport const commandConfig = singleValueFacet<CommandOptions>();\n\nexport type PopupOptions = {\n renderDialog: RenderCallback<{ onAction: (action?: Action) => void }>;\n};\n\ntype CommandState = {\n tooltip?: Tooltip;\n};\n\nexport const commandState = StateField.define<CommandState>({\n create: () => ({}),\n update: (state, tr) => {\n for (const effect of tr.effects) {\n if (effect.is(closeEffect)) {\n return {};\n }\n\n const { renderDialog } = tr.state.facet(commandConfig);\n if (effect.is(openEffect) && renderDialog) {\n const { pos, fullWidth } = effect.value;\n const tooltip: Tooltip = {\n pos,\n above: false,\n arrow: false,\n strictSide: true,\n create: (view: EditorView) => {\n const root = document.createElement('div');\n const tooltipView: TooltipView = {\n dom: root,\n mount: (view: EditorView) => {\n if (fullWidth) {\n const parent = root.parentElement!;\n const { paddingLeft, paddingRight } = window.getComputedStyle(parent);\n const widthWithoutPadding = parent.clientWidth - parseFloat(paddingLeft) - parseFloat(paddingRight);\n root.style.width = `${widthWithoutPadding}px`;\n }\n\n // Render react component.\n renderDialog(\n root,\n {\n onAction: (action) => {\n view.dispatch({ effects: closeEffect.of(null) });\n switch (action?.type) {\n case 'insert': {\n // Insert into editor.\n const text = action.text + '\\n';\n view.dispatch({\n changes: { from: pos, insert: text },\n selection: { anchor: pos + text.length },\n });\n break;\n }\n }\n\n // NOTE: Truncates text if set focus immediately.\n requestAnimationFrame(() => view.focus());\n },\n },\n view,\n );\n },\n };\n\n return tooltipView;\n },\n };\n\n return { tooltip };\n }\n }\n\n return state;\n },\n provide: (field) => [showTooltip.from(field, (value) => value.tooltip ?? null)],\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Extension, Prec } from '@codemirror/state';\nimport { EditorView, keymap } from '@codemirror/view';\n\nimport { isNonNullable } from '@dxos/util';\n\nimport { closeEffect, commandKeyBindings } from './action';\nimport { type HintOptions, hint } from './hint';\nimport { type PopupOptions, commandConfig, commandState } from './state';\n\n// TODO(burdon): Create knowledge base for CM notes and ideas.\n// https://discuss.codemirror.net/t/inline-code-hints-like-vscode/5533/4\n// https://github.com/saminzadeh/codemirror-extension-inline-suggestion\n// https://github.com/ChromeDevTools/devtools-frontend/blob/main/front_end/ui/components/text_editor/config.ts#L370\n\nexport type CommandOptions = Partial<PopupOptions & HintOptions>;\n\nexport const command = (options: CommandOptions = {}): Extension => {\n return [\n Prec.highest(keymap.of(commandKeyBindings)),\n commandConfig.of(options),\n commandState,\n options.onHint && hint(options),\n EditorView.focusChangeEffect.of((_, focusing) => (focusing ? closeEffect.of(null) : null)),\n EditorView.theme({\n '.cm-tooltip': {\n background: 'transparent',\n },\n }),\n ].filter(isNonNullable);\n};\n", "//\n// Copyright 2024 DXOS.org\n// Based on https://github.com/codemirror/view/blob/main/src/placeholder.ts\n//\n\nimport { RangeSetBuilder } from '@codemirror/state';\nimport { Decoration, EditorView, ViewPlugin, type ViewUpdate, WidgetType } from '@codemirror/view';\n\nimport { clientRectsFor, flattenRect } from '../../util';\n\nimport { commandState } from './state';\n\nexport type HintOptions = {\n delay?: number;\n onHint?: () => string | undefined;\n};\n\nexport const hint = ({ delay = 3_000, onHint }: HintOptions) => {\n return ViewPlugin.fromClass(\n class {\n decorations = Decoration.none;\n timeout: ReturnType<typeof setTimeout> | undefined;\n\n update(update: ViewUpdate) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = undefined;\n }\n\n const builder = new RangeSetBuilder<Decoration>();\n const cState = update.view.state.field(commandState, false);\n if (!cState?.tooltip) {\n const selection = update.view.state.selection.main;\n const line = update.view.state.doc.lineAt(selection.from);\n // Only show if blank line.\n if (selection.from === selection.to && line.from === line.to) {\n // Set timeout to add decoration after delay.\n this.timeout = setTimeout(() => {\n const hint = onHint?.();\n if (hint) {\n const builder = new RangeSetBuilder<Decoration>();\n builder.add(selection.from, selection.to, Decoration.widget({ widget: new Hint(hint) }));\n this.decorations = builder.finish();\n update.view.update([]);\n }\n }, delay);\n }\n }\n\n this.decorations = builder.finish();\n }\n\n destroy() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n }\n },\n {\n provide: (plugin) => [EditorView.decorations.of((view) => view.plugin(plugin)?.decorations ?? Decoration.none)],\n },\n );\n};\n\nexport class Hint extends WidgetType {\n constructor(readonly content: string | HTMLElement) {\n super();\n }\n\n toDOM(): HTMLSpanElement {\n const wrap = document.createElement('span');\n wrap.className = 'cm-placeholder';\n wrap.style.pointerEvents = 'none';\n wrap.appendChild(typeof this.content === 'string' ? document.createTextNode(this.content) : this.content);\n if (typeof this.content === 'string') {\n wrap.setAttribute('aria-label', 'placeholder ' + this.content);\n } else {\n wrap.setAttribute('aria-hidden', 'true');\n }\n\n return wrap;\n }\n\n override coordsAt(dom: HTMLElement) {\n const rects = dom.firstChild ? clientRectsFor(dom.firstChild) : [];\n if (!rects.length) {\n return null;\n }\n\n const style = window.getComputedStyle(dom.parentNode as HTMLElement);\n const rect = flattenRect(rects[0], style.direction !== 'rtl');\n const lineHeight = parseInt(style.lineHeight);\n if (rect.bottom - rect.top > lineHeight * 1.5) {\n return { left: rect.left, right: rect.right, top: rect.top, bottom: rect.top + lineHeight };\n }\n\n return rect;\n }\n\n override ignoreEvent(): boolean {\n return false;\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Prec, RangeSetBuilder, StateEffect, StateField } from '@codemirror/state';\nimport { Decoration, type DecorationSet, EditorView, ViewPlugin, type ViewUpdate, keymap } from '@codemirror/view';\n\nimport { type Range } from '../../types';\n\nimport { type PlaceholderOptions, placeholder } from './placeholder';\n\nexport type CommandMenuOptions = {\n trigger: string | string[];\n placeholder?: Partial<PlaceholderOptions>;\n\n // TODO(burdon): Replace with onKey?\n onClose?: () => void;\n onArrowDown?: () => void;\n onArrowUp?: () => void;\n onEnter?: () => void;\n\n onTextChange?: (trigger: string, text: string) => void;\n};\n\nexport const commandMenu = (options: CommandMenuOptions) => {\n const commandMenuPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet = Decoration.none;\n\n constructor(readonly view: EditorView) {}\n\n // TODO(wittjosiah): The decorations are repainted on every update, this occasionally causes menu to flicker.\n update(update: ViewUpdate) {\n const builder = new RangeSetBuilder<Decoration>();\n const selection = update.view.state.selection.main;\n const { range: activeRange, trigger } = update.view.state.field(commandMenuState) ?? {};\n\n // Check if we should show the widget - only if cursor is within the active command range.\n const shouldShowWidget = activeRange && selection.head >= activeRange.from && selection.head <= activeRange.to;\n if (shouldShowWidget) {\n // Create mark decoration that wraps the entire line content in a dx-anchor.\n builder.add(\n activeRange.from,\n activeRange.to,\n Decoration.mark({\n tagName: 'dx-anchor',\n class: 'cm-floating-menu-trigger',\n attributes: {\n 'data-auto-trigger': 'true',\n 'data-trigger': trigger!,\n },\n }),\n );\n }\n\n const activeRangeChanged = update.transactions.some((tr) =>\n tr.effects.some((effect) => effect.is(commandRangeEffect)),\n );\n if (activeRange && activeRangeChanged && trigger) {\n const content = update.view.state.sliceDoc(\n activeRange.from + 1, // Skip the trigger character.\n activeRange.to,\n );\n options.onTextChange?.(trigger, content);\n }\n\n this.decorations = builder.finish();\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n );\n\n const triggers = Array.isArray(options.trigger) ? options.trigger : [options.trigger];\n\n const commandKeymap = keymap.of([\n ...triggers.map((trigger) => ({\n key: trigger,\n preventDefault: true,\n run: (view: EditorView) => {\n const selection = view.state.selection.main;\n const line = view.state.doc.lineAt(selection.head);\n\n // Check if we should trigger the command menu:\n // 1. Empty lines or at the beginning of a line\n // 2. When there's a preceding space\n if (\n line.text.trim() === '' ||\n selection.head === line.from ||\n (selection.head > line.from && line.text[selection.head - line.from - 1] === ' ')\n ) {\n // Insert and select the trigger.\n view.dispatch({\n changes: { from: selection.head, insert: trigger },\n selection: { anchor: selection.head + 1, head: selection.head + 1 },\n effects: commandRangeEffect.of({ trigger, range: { from: selection.head, to: selection.head + 1 } }),\n });\n\n return true;\n }\n\n return false;\n },\n })),\n {\n key: 'Enter',\n run: (view) => {\n const activeRange = view.state.field(commandMenuState)?.range;\n if (activeRange) {\n view.dispatch({ changes: { from: activeRange.from, to: activeRange.to, insert: '' } });\n options.onEnter?.();\n return true;\n }\n\n return false;\n },\n },\n {\n key: 'ArrowDown',\n run: (view) => {\n const activeRange = view.state.field(commandMenuState)?.range;\n if (activeRange) {\n options.onArrowDown?.();\n return true;\n }\n\n return false;\n },\n },\n {\n key: 'ArrowUp',\n run: (view) => {\n const activeRange = view.state.field(commandMenuState)?.range;\n if (activeRange) {\n options.onArrowUp?.();\n return true;\n }\n\n return false;\n },\n },\n ]);\n\n // Listen for selection and document changes to clean up the command menu.\n const updateListener = EditorView.updateListener.of((update) => {\n const { trigger, range: activeRange } = update.view.state.field(commandMenuState) ?? {};\n if (!activeRange || !trigger) {\n return;\n }\n\n const selection = update.view.state.selection.main;\n const firstChar = update.view.state.doc.sliceString(activeRange.from, activeRange.from + 1);\n const shouldRemove =\n firstChar !== trigger || // Trigger deleted.\n selection.head < activeRange.from || // Cursor moved before the range.\n selection.head > activeRange.to + 1; // Cursor moved after the range (+1 to handle selection changing before doc).\n\n const nextRange = shouldRemove\n ? null\n : update.docChanged\n ? { from: activeRange.from, to: selection.head }\n : activeRange;\n if (nextRange !== activeRange) {\n update.view.dispatch({ effects: commandRangeEffect.of(nextRange ? { trigger, range: nextRange } : null) });\n }\n\n // TODO(burdon): Should delete if user presses escape? How else to insert the trigger character?\n if (shouldRemove) {\n options.onClose?.();\n }\n });\n\n return [\n Prec.highest(commandKeymap),\n placeholder(\n Object.assign(\n {\n content: `Press '${Array.isArray(options.trigger) ? options.trigger[0] : options.trigger}' for commands`,\n },\n options.placeholder,\n ),\n ),\n updateListener,\n commandMenuState,\n commandMenuPlugin,\n ];\n};\n\ntype CommandState = {\n trigger: string;\n range: Range;\n};\n\n// State effects for managing command menu state.\nexport const commandRangeEffect = StateEffect.define<CommandState | null>();\n\n// State field to track the active command menu range.\nconst commandMenuState = StateField.define<CommandState | null>({\n create: () => null,\n update: (value, tr) => {\n let newValue = value;\n for (const effect of tr.effects) {\n if (effect.is(commandRangeEffect)) {\n newValue = effect.value;\n }\n }\n\n return newValue;\n },\n});\n", "//\n// Copyright 2025 DXOS.org\n// Based on https://github.com/codemirror/view/blob/main/src/placeholder.ts\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { Decoration, EditorView, ViewPlugin, type ViewUpdate, WidgetType } from '@codemirror/view';\n\nimport { clientRectsFor, flattenRect } from '../../util';\n\ntype Content = string | HTMLElement | ((view: EditorView) => HTMLElement);\n\nexport type PlaceholderOptions = {\n delay?: number;\n content: Content;\n};\n\nexport const placeholder = ({ delay = 3_000, content }: PlaceholderOptions): Extension => {\n const plugin = ViewPlugin.fromClass(\n class {\n decorations = Decoration.none;\n timeout: ReturnType<typeof setTimeout> | undefined;\n\n update(update: ViewUpdate) {\n if (this.timeout) {\n window.clearTimeout(this.timeout);\n this.timeout = undefined;\n }\n\n // Check if the active line (where cursor is) is empty.\n const activeLine = update.view.state.doc.lineAt(update.view.state.selection.main.head);\n const isEmpty = activeLine.text.trim() === '';\n if (isEmpty) {\n // Create widget decoration at the start of the current line.\n const lineStart = activeLine.from;\n this.timeout = setTimeout(() => {\n this.decorations = Decoration.set([\n Decoration.widget({\n widget: new Placeholder(content),\n side: 1,\n }).range(lineStart),\n ]);\n\n update.view.update([]);\n }, delay);\n }\n\n this.decorations = Decoration.none;\n }\n\n destroy() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n }\n },\n {\n provide: (plugin) => {\n return [EditorView.decorations.of((view) => view.plugin(plugin)?.decorations ?? Decoration.none)];\n },\n },\n );\n\n return typeof content === 'string'\n ? [plugin, EditorView.contentAttributes.of({ 'aria-placeholder': content })]\n : plugin;\n};\n\nclass Placeholder extends WidgetType {\n constructor(readonly content: Content) {\n super();\n }\n\n toDOM(view: EditorView) {\n const wrap = document.createElement('span');\n wrap.className = 'cm-placeholder';\n wrap.style.pointerEvents = 'none';\n wrap.appendChild(\n typeof this.content === 'string'\n ? document.createTextNode(this.content)\n : typeof this.content === 'function'\n ? this.content(view)\n : this.content.cloneNode(true),\n );\n wrap.setAttribute('aria-hidden', 'true');\n return wrap;\n }\n\n override coordsAt(dom: HTMLElement) {\n const rects = dom.firstChild ? clientRectsFor(dom.firstChild) : [];\n if (!rects.length) {\n return null;\n }\n\n const style = window.getComputedStyle(dom.parentNode as HTMLElement);\n const rect = flattenRect(rects[0], style.direction !== 'rtl');\n const lineHeight = parseInt(style.lineHeight);\n if (rect.bottom - rect.top > lineHeight * 1.5) {\n return {\n left: rect.left,\n right: rect.right,\n top: rect.top,\n bottom: rect.top + lineHeight,\n };\n }\n\n return rect;\n }\n\n override ignoreEvent() {\n return false;\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView, ViewPlugin, type ViewUpdate } from '@codemirror/view';\n\nimport { type CleanupFn, addEventListener } from '@dxos/async';\n\nimport { closeEffect, openEffect } from './action';\n\nexport type FloatingMenuOptions = {\n icon?: string;\n height?: number;\n padding?: number;\n};\n\nexport const floatingMenu = (options: FloatingMenuOptions = {}) => [\n ViewPlugin.fromClass(\n class {\n view: EditorView;\n tag: HTMLElement;\n rafId?: number | null;\n cleanup?: CleanupFn;\n\n constructor(view: EditorView) {\n this.view = view;\n\n // Position context.\n const container = view.scrollDOM;\n if (getComputedStyle(container).position === 'static') {\n container.style.position = 'relative';\n }\n\n {\n const icon = document.createElement('dx-icon');\n icon.setAttribute('icon', options.icon ?? 'ph--dots-three-vertical--regular');\n\n this.tag = document.createElement('dx-anchor');\n this.tag.classList.add('cm-floating-menu-trigger');\n this.tag.appendChild(icon);\n }\n\n container.appendChild(this.tag);\n\n // Listen for scroll events.\n const handler = () => this.scheduleUpdate();\n this.cleanup = addEventListener(container, 'scroll', handler);\n this.scheduleUpdate();\n }\n\n destroy() {\n this.cleanup?.();\n this.tag.remove();\n if (this.rafId != null) {\n cancelAnimationFrame(this.rafId);\n }\n }\n\n update(update: ViewUpdate) {\n this.tag.dataset.focused = update.view.hasFocus ? 'true' : 'false';\n if (!update.view.hasFocus) {\n return;\n }\n\n // TODO(burdon): Timer to fade in/out.\n if (update.transactions.some((tr) => tr.effects.some((effect) => effect.is(openEffect)))) {\n this.tag.style.display = 'none';\n this.tag.classList.add('opacity-10');\n } else if (update.transactions.some((tr) => tr.effects.some((effect) => effect.is(closeEffect)))) {\n this.tag.style.display = '';\n } else if (\n update.docChanged ||\n update.focusChanged ||\n update.geometryChanged ||\n update.selectionSet ||\n update.viewportChanged\n ) {\n this.scheduleUpdate();\n }\n }\n\n updateButtonPosition() {\n const { x, width } = this.view.contentDOM.getBoundingClientRect();\n\n const pos = this.view.state.selection.main.head;\n const line = this.view.lineBlockAt(pos);\n const coords = this.view.coordsAtPos(line.from);\n if (!coords) {\n return;\n }\n\n const lineHeight = coords.bottom - coords.top;\n const dy = (lineHeight - (options.height ?? 32)) / 2;\n\n const offsetTop = coords.top + dy;\n const offsetLeft = x + width + (options.padding ?? 8);\n\n this.tag.style.top = `${offsetTop}px`;\n this.tag.style.left = `${offsetLeft}px`;\n this.tag.style.display = '';\n }\n\n scheduleUpdate() {\n if (this.rafId != null) {\n cancelAnimationFrame(this.rafId);\n }\n\n this.rafId = requestAnimationFrame(this.updateButtonPosition.bind(this));\n }\n },\n ),\n\n EditorView.theme({\n '.cm-floating-menu-trigger': {\n position: 'fixed',\n padding: '0',\n border: 'none',\n opacity: '0',\n display: 'grid',\n placeContent: 'center',\n width: '2rem',\n height: '2rem',\n },\n '&:focus-within .cm-floating-menu-trigger': {\n opacity: '1',\n },\n }),\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { EditorSelection, type Extension, Prec, RangeSetBuilder } from '@codemirror/state';\nimport {\n type Command,\n Decoration,\n type DecorationSet,\n type EditorView,\n ViewPlugin,\n type ViewUpdate,\n keymap,\n} from '@codemirror/view';\n\nimport { Hint } from './hint';\n\nexport type TypeaheadContext = { line: string };\n\n// TODO(burdon): Option to complete only at end of line?\nexport type TypeaheadOptions = {\n onComplete?: (context: TypeaheadContext) => string | undefined;\n};\n\n/**\n * CodeMirror extension for typeahead completion.\n */\nexport const typeahead = ({ onComplete }: TypeaheadOptions = {}): Extension => {\n let hint: string | undefined;\n\n const complete: Command = (view: EditorView) => {\n if (!hint) {\n return false;\n }\n\n const selection = view.state.selection.main;\n view.dispatch({\n changes: [{ from: selection.from, to: selection.to, insert: hint }],\n selection: EditorSelection.cursor(selection.from + hint.length),\n });\n\n return true;\n };\n\n return [\n ViewPlugin.fromClass(\n class {\n decorations: DecorationSet = Decoration.none;\n update(update: ViewUpdate) {\n const builder = new RangeSetBuilder<Decoration>();\n const selection = update.view.state.selection.main;\n const line = update.view.state.doc.lineAt(selection.from);\n\n // TODO(burdon): Check at end of line and matches start of previous word.\n // TODO(burdon): Context grammar.\n if (selection.from === selection.to && selection.from === line.to) {\n const str = update.state.sliceDoc(line.from, selection.from);\n hint = onComplete?.({ line: str });\n if (hint) {\n builder.add(selection.from, selection.to, Decoration.widget({ widget: new Hint(hint) }));\n }\n }\n\n this.decorations = builder.finish();\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n ),\n\n // Keys.\n Prec.highest(\n keymap.of([\n {\n key: 'Tab',\n preventDefault: true,\n run: complete,\n },\n {\n key: 'ArrowRight',\n preventDefault: true,\n run: complete,\n },\n ]),\n ),\n ];\n};\n\ntype CompletionOptions = {\n default?: string;\n minLength?: number;\n};\n\n/**\n * Util to match current line to a static list of completions.\n */\nexport const staticCompletion =\n (completions: string[], options: CompletionOptions = {}) =>\n ({ line }: TypeaheadContext) => {\n if (line.length === 0 && options.default) {\n return options.default;\n }\n\n const parts = line.split(/\\s+/).filter(Boolean);\n if (parts.length) {\n const str = parts.at(-1)!;\n if (str.length >= (options.minLength ?? 0)) {\n for (const completion of completions) {\n const match = matchCompletion(completion, str);\n if (match) {\n return match;\n }\n }\n }\n }\n };\n\nexport const matchCompletion = (completion: string, str: string, minLength = 0): string | undefined => {\n if (\n str.length >= minLength &&\n completion.length > str.length &&\n completion.startsWith(str)\n // TODO(burdon): If case insensitive, need to replace existing chars.\n // completion.toLowerCase().startsWith(str.toLowerCase())\n ) {\n return completion.slice(str.length);\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { type RefObject, useCallback, useMemo, useRef, useState } from 'react';\n\nimport { type DxAnchorActivate } from '@dxos/react-ui';\nimport { type MaybePromise } from '@dxos/util';\n\nimport { type CommandMenuGroup, type CommandMenuItem, getItem, getNextItem, getPreviousItem } from '../../components';\n\nimport { commandMenu, commandRangeEffect } from './command-menu';\nimport { type PlaceholderOptions } from './placeholder';\n\nexport type UseCommandMenuOptions = {\n viewRef: RefObject<EditorView | undefined>;\n trigger: string | string[];\n placeholder?: Partial<PlaceholderOptions>;\n getMenu: (trigger: string, query?: string) => MaybePromise<CommandMenuGroup[]>;\n};\n\nexport const useCommandMenu = ({ viewRef, trigger, placeholder, getMenu }: UseCommandMenuOptions) => {\n const currentRef = useRef<CommandMenuItem | null>(null);\n const groupsRef = useRef<CommandMenuGroup[]>([]);\n const [currentItem, setCurrentItem] = useState<string>();\n const [open, setOpen] = useState(false);\n const [_, refresh] = useState({});\n\n const handleOpenChange = useCallback(\n async (open: boolean, trigger?: string) => {\n if (open && trigger) {\n groupsRef.current = await getMenu(trigger);\n }\n setOpen(open);\n if (!open) {\n setCurrentItem(undefined);\n viewRef.current?.dispatch({ effects: [commandRangeEffect.of(null)] });\n }\n },\n [getMenu],\n );\n\n const handleActivate = useCallback(\n async (event: DxAnchorActivate) => {\n const item = getItem(groupsRef.current, currentItem);\n if (item) {\n currentRef.current = item;\n }\n\n const triggerKey = event.trigger.getAttribute('data-trigger');\n if (!open && triggerKey) {\n await handleOpenChange(true, triggerKey);\n }\n },\n [open, handleOpenChange],\n );\n\n const handleSelect = useCallback((item: CommandMenuItem) => {\n const view = viewRef.current;\n if (!view) {\n return;\n }\n\n const selection = view.state.selection.main;\n void item.onSelect?.(view, selection.head);\n }, []);\n\n const serializedTrigger = Array.isArray(trigger) ? trigger.join(',') : trigger;\n const memoizedCommandMenu = useMemo(() => {\n return commandMenu({\n trigger,\n placeholder,\n onClose: () => handleOpenChange(false),\n onArrowDown: () => {\n setCurrentItem((currentItem) => {\n const next = getNextItem(groupsRef.current, currentItem);\n currentRef.current = next;\n return next.id;\n });\n },\n onArrowUp: () => {\n setCurrentItem((currentItem) => {\n const previous = getPreviousItem(groupsRef.current, currentItem);\n currentRef.current = previous;\n return previous.id;\n });\n },\n onEnter: () => {\n if (currentRef.current) {\n handleSelect(currentRef.current);\n }\n },\n onTextChange: async (trigger, text) => {\n groupsRef.current = await getMenu(trigger, text);\n const firstItem = groupsRef.current.filter((group) => group.items.length > 0)[0]?.items[0];\n if (firstItem) {\n setCurrentItem(firstItem.id);\n currentRef.current = firstItem;\n }\n refresh({});\n },\n });\n }, [handleOpenChange, getMenu, serializedTrigger, placeholder]);\n\n return {\n commandMenu: memoizedCommandMenu,\n currentItem,\n groupsRef,\n open,\n onActivate: handleActivate,\n onOpenChange: setOpen,\n onSelect: handleSelect,\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { invertedEffects } from '@codemirror/commands';\nimport { type ChangeDesc, type Extension, StateEffect, StateField, type Text } from '@codemirror/state';\nimport {\n type Command,\n Decoration,\n EditorView,\n type PluginValue,\n type Rect,\n ViewPlugin,\n hoverTooltip,\n keymap,\n} from '@codemirror/view';\nimport sortBy from 'lodash.sortby';\nimport { useEffect } from 'react';\n\nimport { type CleanupFn, debounce } from '@dxos/async';\nimport { log } from '@dxos/log';\nimport { isNonNullable } from '@dxos/util';\n\nimport { type Comment, type Range, type RenderCallback } from '../types';\nimport { Cursor, callbackWrapper, singleValueFacet } from '../util';\n\nimport { documentId } from './selection';\n\n//\n// State management.\n//\n\ntype CommentState = {\n comment: Comment;\n range: Range;\n location?: Rect | null;\n};\n\ntype SelectionState = {\n current?: string;\n closest?: string;\n};\n\nexport type CommentsState = {\n id?: string;\n comments: CommentState[];\n selection: SelectionState;\n};\n\nexport const setComments = StateEffect.define<{ id: string; comments: Comment[] }>();\n\nexport const setSelection = StateEffect.define<SelectionState>();\n\nconst setCommentState = StateEffect.define<CommentsState>();\n\n/**\n * State field (reducer) that tracks comment ranges.\n * The ranges are tracked as Automerge cursors from which the absolute indexed ranges can be computed.\n */\nexport const commentsState = StateField.define<CommentsState>({\n create: (state) => ({\n id: state.facet(documentId),\n comments: [],\n selection: {},\n }),\n update: (value, tr) => {\n for (const effect of tr.effects) {\n // Update selection.\n if (effect.is(setSelection)) {\n return { ...value, selection: effect.value };\n }\n\n // Update range from store.\n if (effect.is(setComments)) {\n const { comments } = effect.value;\n const commentStates: CommentState[] = comments\n .map((comment) => {\n // Skip cut/deleted comments.\n if (!comment.cursor) {\n return undefined;\n }\n\n const range = Cursor.getRangeFromCursor(tr.state, comment.cursor);\n return range && { comment, range };\n })\n .filter(isNonNullable);\n\n return { ...value, comments: commentStates };\n }\n\n // Update entire state.\n if (effect.is(setCommentState)) {\n return effect.value;\n }\n }\n\n return value;\n },\n});\n\n/**\n * NOTE: Matches search.\n */\nconst styles = EditorView.theme({\n '.cm-comment, .cm-comment-current': {\n padding: '3px 0',\n backgroundColor: 'var(--dx-cmCommentSurface)',\n },\n '.cm-comment > span, .cm-comment-current > span': {\n boxDecorationBreak: 'clone',\n boxShadow: '0 0 1px 3px var(--dx-cmCommentSurface)',\n backgroundColor: 'var(--dx-cmCommentSurface)',\n color: 'var(--dx-cmComment)',\n cursor: 'pointer',\n },\n});\n\nconst createCommentMark = (id: string, isCurrent: boolean) =>\n Decoration.mark({\n class: isCurrent ? 'cm-comment-current' : 'cm-comment',\n attributes: {\n 'data-testid': 'cm-comment',\n 'data-comment-id': id,\n },\n });\n\n/**\n * Decorate ranges.\n */\nconst commentsDecorations = EditorView.decorations.compute([commentsState], (state) => {\n const {\n selection: { current },\n comments,\n } = state.field(commentsState);\n\n const decorations = sortBy(comments ?? [], (range) => range.range.from)\n ?.flatMap((comment) => {\n const range = comment.range;\n if (!range) {\n log.warn('Invalid range:', range);\n return undefined;\n } else if (range.from === range.to) {\n // Skip empty ranges. This can happen when a comment is cut or deleted.\n return undefined;\n }\n\n const mark = createCommentMark(comment.comment.id, comment.comment.id === current);\n return mark.range(range.from, range.to);\n })\n .filter(isNonNullable);\n\n return Decoration.set(decorations);\n});\n\nexport const commentClickedEffect = StateEffect.define<string>();\n\nconst handleCommentClick = EditorView.domEventHandlers({\n click: (event, view) => {\n let target = event.target as HTMLElement;\n const editorRoot = view.dom;\n\n // Traverse up the DOM tree looking for an element with data-comment-id\n // Stop if we reach the editor root or find the comment id\n while (target && target !== editorRoot && !target.hasAttribute('data-comment-id')) {\n target = target.parentElement as HTMLElement;\n }\n\n // Check if we found a comment id and are still within the editor\n if (target && target !== editorRoot) {\n const commentId = target.getAttribute('data-comment-id');\n if (commentId) {\n view.dispatch({ effects: commentClickedEffect.of(commentId) });\n return true;\n }\n }\n\n return false;\n },\n});\n\n//\n// Cut-and-paste.\n//\n\ntype TrackedComment = { id: string; from: number; to: number };\n\nconst trackPastedComments = (onUpdate: NonNullable<CommentsOptions['onUpdate']>) => {\n // Tracks indexed selections within text.\n let tracked: { text: Text; comments: TrackedComment[] } | null = null;\n\n // Track cut or copy (enables cut-and-paste and copy-delete-paste to restore comment selection).\n const handleTrack = (event: Event, view: EditorView) => {\n const comments = view.state.field(commentsState);\n const { main } = view.state.selection;\n const selectedRanges = comments.comments.filter(\n ({ range }) => range.from >= main.from && range.to <= main.to && range.from < range.to,\n );\n\n if (!selectedRanges.length) {\n tracked = null;\n } else {\n tracked = {\n text: view.state.doc.slice(main.from, main.to),\n comments: selectedRanges.map(({ comment, range }) => ({\n id: comment.id,\n from: range.from - main.from,\n to: range.to - main.from,\n })),\n };\n }\n };\n\n return [\n EditorView.domEventHandlers({\n cut: handleTrack,\n copy: handleTrack,\n }),\n\n // Track deleted comments.\n invertedEffects.of((tr) => {\n const { comments } = tr.startState.field(commentsState);\n const effects: StateEffect<any>[] = [];\n tr.changes.iterChangedRanges((fromA, toA) => {\n for (const {\n comment: { id },\n range: { from, to },\n } of comments) {\n if (from < to && from >= fromA && to <= toA) {\n effects.push(restoreCommentEffect.of({ id, from, to }));\n }\n }\n });\n\n return effects;\n }),\n\n // Handle paste or the undo of comment deletion.\n EditorView.updateListener.of((update) => {\n const restore: TrackedComment[] = [];\n\n for (let i = 0; i < update.transactions.length; i++) {\n const tr = update.transactions[i];\n for (let j = 0; j < restore.length; j++) {\n restore[j] = mapTrackedComment(restore[j], tr.changes);\n }\n for (const effect of tr.effects) {\n if (effect.is(restoreCommentEffect)) {\n restore.push(effect.value);\n }\n }\n }\n\n if (tracked) {\n const paste = update.transactions.find((tr) => tr.isUserEvent('input.paste'));\n if (paste) {\n let found = -1;\n paste.changes.iterChanges((fromA, toA, fromB, toB, text) => {\n if (text.eq(tracked!.text)) {\n for (let i = update.transactions.indexOf(paste!) + 1; i < update.transactions.length; i++) {\n fromB = update.transactions[i].changes.mapPos(fromB);\n }\n\n found = fromB;\n }\n });\n\n if (found > -1) {\n for (const moved of tracked.comments) {\n restore.push({ id: moved.id, from: found + moved.from, to: found + moved.to });\n }\n }\n\n tracked = null;\n }\n }\n\n for (const comment of restore) {\n const { comments } = update.startState.field(commentsState);\n const exists = comments.some((c) => c.comment.id === comment.id && c.range.from < c.range.to);\n if (!exists) {\n const cursor = Cursor.getCursorFromRange(update.state, comment);\n onUpdate({ id: comment.id, cursor });\n }\n }\n }),\n ];\n};\n\nconst mapTrackedComment = (comment: TrackedComment, changes: ChangeDesc) => ({\n id: comment.id,\n from: changes.mapPos(comment.from, 1),\n to: changes.mapPos(comment.to, 1),\n});\n\n/**\n * These are attached to undone/redone transactions in the editor for the purpose of restoring comments\n * that were deleted by the original changes.\n */\nconst restoreCommentEffect = StateEffect.define<TrackedComment>({ map: mapTrackedComment });\n\n/**\n * Create comment thread action.\n */\nexport const createComment: Command = (view) => {\n const options = view.state.facet(optionsFacet);\n const { from, to } = view.state.selection.main;\n if (from === to) {\n return false;\n }\n\n // Don't allow selection at end of document.\n if (to === view.state.doc.length) {\n view.dispatch({\n changes: {\n from: to,\n insert: '\\n',\n },\n });\n }\n\n const cursor = Cursor.getCursorFromRange(view.state, { from, to });\n if (cursor) {\n // Create thread via callback.\n options.onCreate?.({ cursor, from, location: view.coordsAtPos(from) });\n return true;\n }\n\n return false;\n};\n\n//\n// Options\n//\n\nexport type CommentsOptions = {\n /**\n * Document id.\n */\n id?: string;\n /**\n * Key shortcut to create a new thread.\n */\n key?: string;\n /**\n * Called to render tooltip.\n */\n renderTooltip?: RenderCallback<{ shortcut: string }>;\n /**\n * Called to create a new thread and return the thread id.\n */\n onCreate?: (params: { cursor: string; from: number; location?: Rect | null }) => void;\n /**\n * Selection cut/deleted.\n */\n onDelete?: (params: { id: string }) => void;\n /**\n * Called when a comment is moved.\n */\n onUpdate?: (params: { id: string; cursor: string }) => void;\n /**\n * Called to notify which thread is currently closest to the cursor.\n */\n onSelect?: (state: CommentsState) => void;\n};\n\nconst optionsFacet = singleValueFacet<CommentsOptions>();\n\n/**\n * Comment threads.\n * 1). Updates the EditorModel to store relative selections for a set of comments threads.\n * Since the selections are relative, they do not need to be updated when the document is edited.\n * 2). Implements a StateField to track absolute selections corresponding to the comments (i.e., when the document is edited).\n * 3). Creates decoration marks to apply classes to each selection.\n * 4). Tracks the current cursor position to:\n * a). Update the decoration to show if the cursor is within a current selection.\n * b). Calls a handler to indicate which is the closest selection (e.g., to update the thread sidebar).\n * 5). Optionally, implements a hoverTooltip to show hints when creating a selection range.\n */\nexport const comments = (options: CommentsOptions = {}): Extension => {\n const { key: shortcut = \"meta-'\" } = options;\n\n const handleSelect = debounce((state: CommentsState) => options.onSelect?.(state), 200);\n\n return [\n optionsFacet.of(options),\n options.id ? documentId.of(options.id) : undefined,\n commentsState,\n commentsDecorations,\n handleCommentClick,\n styles,\n\n //\n // Keymap.\n //\n options.onCreate &&\n keymap.of([\n {\n key: shortcut,\n run: callbackWrapper(createComment),\n },\n ]),\n\n //\n // Hover tooltip (for key shortcut hints, etc.)\n // TODO(burdon): Factor out to generic hints extension for current selection/line.\n //\n options.renderTooltip &&\n hoverTooltip(\n (view, pos) => {\n const selection = view.state.selection.main;\n if (selection && pos >= selection.from && pos <= selection.to) {\n return {\n pos: selection.from,\n end: selection.to,\n above: true,\n create: () => {\n const el = document.createElement('div');\n options.renderTooltip!(el, { shortcut }, view);\n return { dom: el, offset: { x: 0, y: 8 } };\n },\n };\n }\n\n return null;\n },\n {\n // TODO(burdon): Hide on change triggered immediately?\n // hideOnChange: true,\n hoverTime: 1_000,\n },\n ),\n\n //\n // Track deleted ranges and update ranges for decorations.\n //\n EditorView.updateListener.of(({ view, state, changes }) => {\n let mod = false;\n const { comments, ...value } = state.field(commentsState);\n changes.iterChanges((from, to, from2, to2) => {\n comments.forEach(({ comment, range }) => {\n // Test if range deleted.\n if (from2 === to2) {\n const newRange = Cursor.getRangeFromCursor(view.state, comment.cursor!);\n if (!newRange || newRange.to - newRange.from === 0) {\n options.onDelete?.({ id: comment.id });\n }\n }\n\n // Update range.\n if (from <= range.to) {\n const newRange = Cursor.getRangeFromCursor(view.state, comment.cursor!);\n Object.assign(range, newRange);\n mod = true;\n }\n });\n });\n\n if (mod) {\n view.dispatch({ effects: setCommentState.of({ comments, ...value }) });\n }\n }),\n\n //\n // Track selection/proximity.\n //\n EditorView.updateListener.of(({ view, state }) => {\n let min = Infinity;\n const {\n selection: { current, closest },\n comments,\n } = state.field(commentsState);\n\n const { head } = state.selection.main;\n const selection: SelectionState = {};\n comments.forEach(({ comment, range }) => {\n if (head >= range.from && head <= range.to) {\n selection.current = comment.id;\n selection.closest = undefined;\n }\n\n if (!selection.current) {\n const d = Math.min(Math.abs(head - range.from), Math.abs(head - range.to));\n if (d < min) {\n selection.closest = comment.id;\n min = d;\n }\n }\n });\n\n if (selection.current !== current || selection.closest !== closest) {\n view.dispatch({ effects: setSelection.of(selection) });\n\n // Update callback.\n handleSelect({\n selection,\n id: state.facet(documentId),\n comments: comments.map(({ comment, range }) => ({\n comment,\n range,\n location: view.coordsAtPos(range.from),\n })),\n });\n }\n }),\n\n options.onUpdate && trackPastedComments(options.onUpdate),\n ].filter(isNonNullable);\n};\n\n//\n// Utils.\n//\n\nexport const scrollThreadIntoView = (view: EditorView, id: string, center = true) => {\n const comment = view.state.field(commentsState).comments.find((range) => range.comment.id === id);\n if (!comment?.comment.cursor) {\n return;\n }\n const range = Cursor.getRangeFromCursor(view.state, comment.comment.cursor);\n if (range) {\n const currentSelection = view.state.selection.main;\n const currentScrollPosition = view.scrollDOM.scrollTop;\n const targetScrollPosition = view.coordsAtPos(range.from)?.top;\n\n const needsScroll =\n targetScrollPosition !== undefined &&\n (targetScrollPosition < currentScrollPosition ||\n targetScrollPosition > currentScrollPosition + view.scrollDOM.clientHeight);\n\n const needsSelectionUpdate = currentSelection.from !== range.from || currentSelection.to !== range.from;\n\n if (needsScroll || needsSelectionUpdate) {\n view.dispatch({\n selection: needsSelectionUpdate ? { anchor: range.from } : undefined,\n effects: [\n needsScroll ? EditorView.scrollIntoView(range.from, center ? { y: 'center' } : undefined) : [],\n needsSelectionUpdate ? setSelection.of({ current: id }) : [],\n ].flat(),\n });\n }\n }\n};\n\n/**\n * Manages external comment synchronization for the editor.\n * This class subscribes to external comment updates and applies them to the editor view.\n */\nclass ExternalCommentSync implements PluginValue {\n private readonly unsubscribe: () => void;\n\n constructor(view: EditorView, id: string, subscribe: (sink: () => void) => CleanupFn, getComments: () => Comment[]) {\n const updateComments = () => {\n const comments = getComments();\n if (id === view.state.facet(documentId)) {\n queueMicrotask(() => view.dispatch({ effects: setComments.of({ id, comments }) }));\n }\n };\n\n this.unsubscribe = subscribe(updateComments);\n }\n\n destroy = () => {\n this.unsubscribe();\n };\n}\n\n// TODO(burdon): Needs comment.\nexport const createExternalCommentSync = (\n id: string,\n subscribe: (sink: () => void) => CleanupFn,\n getComments: () => Comment[],\n): Extension =>\n ViewPlugin.fromClass(\n class {\n constructor(view: EditorView) {\n return new ExternalCommentSync(view, id, subscribe, getComments);\n }\n },\n );\n\n/**\n * @deprecated This hook will be removed in future versions. Use the new comment sync extension instead.\n * Update comments state field.\n */\nexport const useComments = (view: EditorView | null | undefined, id: string, comments?: Comment[]) => {\n useEffect(() => {\n if (view) {\n // Check same document.\n // NOTE: Hook might be called before editor state is updated.\n if (id === view.state.facet(documentId)) {\n view.dispatch({\n effects: setComments.of({ id, comments: comments ?? [] }),\n });\n }\n }\n });\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Extension, Transaction, type TransactionSpec } from '@codemirror/state';\nimport { EditorView, keymap } from '@codemirror/view';\n\nimport { debounce } from '@dxos/async';\nimport { invariant } from '@dxos/invariant';\nimport { isNotFalsy } from '@dxos/util';\n\nimport { singleValueFacet } from '../util';\n\n/**\n * Currently edited document id as FQ string.\n */\nexport const documentId = singleValueFacet<string>();\n\nexport type EditorSelection = {\n anchor: number;\n head?: number;\n};\n\nexport type EditorSelectionState = {\n scrollTo?: number;\n selection?: EditorSelection;\n};\n\nexport type EditorStateStore = {\n setState: (id: string, state: EditorSelectionState) => void;\n getState: (id: string) => EditorSelectionState | undefined;\n};\n\nconst stateRestoreAnnotation = 'dxos.org/cm/state-restore';\n\nexport const createEditorStateTransaction = ({ scrollTo, selection }: EditorSelectionState): TransactionSpec => {\n return {\n selection,\n scrollIntoView: !scrollTo,\n effects: scrollTo ? EditorView.scrollIntoView(scrollTo, { yMargin: 96 }) : undefined,\n annotations: Transaction.userEvent.of(stateRestoreAnnotation),\n };\n};\n\nexport const createEditorStateStore = (keyPrefix: string): EditorStateStore => ({\n getState: (id) => {\n invariant(id);\n const state = localStorage.getItem(`${keyPrefix}/${id}`);\n return state ? JSON.parse(state) : undefined;\n },\n\n setState: (id, state) => {\n invariant(id);\n localStorage.setItem(`${keyPrefix}/${id}`, JSON.stringify(state));\n },\n});\n\n/**\n * Track scrolling and selection state to be restored when switching to document.\n */\nexport const selectionState = ({ getState, setState }: Partial<EditorStateStore> = {}): Extension => {\n const setStateDebounced = debounce(setState!, 1_000);\n\n return [\n // TODO(burdon): Track scrolling (currently only updates when cursor moves).\n // EditorView.domEventHandlers({\n // scroll: (event) => {\n // setStateDebounced(id, {});\n // },\n // }),\n EditorView.updateListener.of(({ view, transactions }) => {\n const id = view.state.facet(documentId);\n if (!id || transactions.some((tr) => tr.isUserEvent(stateRestoreAnnotation))) {\n return;\n }\n\n if (setState) {\n const { scrollTop } = view.scrollDOM;\n const pos = view.posAtCoords({ x: 0, y: scrollTop });\n if (pos !== null) {\n const { anchor, head } = view.state.selection.main;\n setStateDebounced(id, { scrollTo: pos, selection: { anchor, head } });\n }\n }\n }),\n getState &&\n keymap.of([\n {\n key: 'ctrl-r', // TODO(burdon): Setting to jump back to selection.\n run: (view) => {\n const state = getState(view.state.facet(documentId));\n if (state) {\n view.dispatch(createEditorStateTransaction(state));\n }\n return true;\n },\n },\n ]),\n ].filter(isNotFalsy);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type EditorState, type Extension, type RangeSet, StateField, type Transaction } from '@codemirror/state';\n\n// eslint-disable-next-line no-console\nexport const debugNodeLogger = (log: (...args: any[]) => void = console.log): Extension => {\n const logTokens = (state: EditorState) => syntaxTree(state).iterate({ enter: (node) => log(node.type) });\n return StateField.define<any>({\n create: (state) => logTokens(state),\n update: (_: RangeSet<any>, tr: Transaction) => logTokens(tr.state),\n });\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { Extension } from '@codemirror/state';\nimport { EditorView, dropCursor } from '@codemirror/view';\n\nexport type DNDOptions = { onDrop?: (view: EditorView, event: { files: FileList }) => void };\n\nconst styles = EditorView.theme({\n '.cm-dropCursor': {\n borderLeft: '2px solid var(--dx-accentText)',\n color: 'var(--dx-accentText)',\n padding: '0 4px',\n },\n '.cm-dropCursor:after': {\n content: '\"←\"',\n },\n});\n\nexport const dropFile = (options: DNDOptions = {}): Extension => {\n return [\n styles,\n dropCursor(),\n EditorView.domEventHandlers({\n drop: (event, view) => {\n event.preventDefault();\n const files = event.dataTransfer?.files;\n const pos = view.posAtCoords(event);\n if (files?.length && pos !== null) {\n view.dispatch({ selection: { anchor: pos } });\n options.onDrop?.(view, { files });\n }\n },\n }),\n ];\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { closeBrackets, closeBracketsKeymap } from '@codemirror/autocomplete';\nimport { defaultKeymap, history, historyKeymap, indentWithTab, standardKeymap } from '@codemirror/commands';\nimport { bracketMatching, defaultHighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { searchKeymap } from '@codemirror/search';\nimport { EditorState, type Extension } from '@codemirror/state';\nimport { oneDarkHighlightStyle } from '@codemirror/theme-one-dark';\nimport {\n EditorView,\n type KeyBinding,\n ViewPlugin,\n drawSelection,\n dropCursor,\n highlightActiveLine,\n keymap,\n lineNumbers,\n placeholder,\n scrollPastEnd,\n} from '@codemirror/view';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport merge from 'lodash.merge';\n\nimport { generateName } from '@dxos/display-name';\nimport { log } from '@dxos/log';\nimport { type DocAccessor, type Space } from '@dxos/react-client/echo';\nimport { type Identity } from '@dxos/react-client/halo';\nimport { type ThemeMode } from '@dxos/react-ui';\nimport { type HuePalette } from '@dxos/react-ui-theme';\nimport { hexToHue, isNotFalsy } from '@dxos/util';\n\nimport { editorGutter, editorMonospace } from '../defaults';\nimport { type ThemeStyles, defaultTheme } from '../styles';\n\nimport { automerge } from './automerge';\nimport { SpaceAwarenessProvider, awareness } from './awareness';\nimport { focus } from './focus';\n\n//\n// Basic\n//\n\nexport const preventNewline = EditorState.transactionFilter.of((tr) => (tr.newDoc.lines > 1 ? [] : tr));\n\n/**\n * https://codemirror.net/docs/extensions\n * https://github.com/codemirror/basic-setup\n * https://github.com/codemirror/basic-setup/blob/main/src/codemirror.ts\n * https://github.com/codemirror/theme-one-dark\n */\nexport type BasicExtensionsOptions = {\n allowMultipleSelections?: boolean;\n bracketMatching?: boolean;\n closeBrackets?: boolean;\n dropCursor?: boolean;\n drawSelection?: boolean;\n editable?: boolean;\n focus?: boolean;\n highlightActiveLine?: boolean;\n history?: boolean;\n indentWithTab?: boolean;\n keymap?: null | 'default' | 'standard';\n lineNumbers?: boolean;\n /** If false then do not set a max-width or side margin on the editor. */\n lineWrapping?: boolean;\n monospace?: boolean;\n placeholder?: string;\n /** If true user cannot edit the text, but they can still select and copy it. */\n readOnly?: boolean;\n search?: boolean;\n scrollPastEnd?: boolean;\n standardKeymap?: boolean;\n tabSize?: number;\n};\n\nconst defaultBasicOptions: BasicExtensionsOptions = {\n allowMultipleSelections: true,\n bracketMatching: true,\n closeBrackets: true,\n drawSelection: true,\n focus: true,\n history: true,\n keymap: 'standard',\n lineWrapping: true,\n search: false,\n} as const;\n\nconst keymaps: { [key: string]: readonly KeyBinding[] } = {\n // https://codemirror.net/docs/ref/#commands.standardKeymap\n standard: standardKeymap,\n // https://codemirror.net/docs/ref/#commands.defaultKeymap\n default: defaultKeymap,\n};\n\nexport const createBasicExtensions = (_props?: BasicExtensionsOptions): Extension => {\n const props = defaultsDeep({}, _props, defaultBasicOptions);\n return [\n // NOTE: Doesn't catch errors in keymap functions.\n EditorView.exceptionSink.of((err) => {\n log.catch(err);\n }),\n\n props.allowMultipleSelections && EditorState.allowMultipleSelections.of(true),\n props.bracketMatching && bracketMatching(),\n props.closeBrackets && closeBrackets(),\n props.dropCursor && dropCursor(),\n props.drawSelection && drawSelection({ cursorBlinkRate: 1_200 }),\n props.editable !== undefined && EditorView.editable.of(props.editable),\n props.focus && focus,\n props.highlightActiveLine && highlightActiveLine(),\n props.history && history(),\n props.lineNumbers && [lineNumbers(), editorGutter],\n props.lineWrapping && EditorView.lineWrapping,\n props.monospace && editorMonospace,\n props.placeholder && placeholder(props.placeholder),\n props.readOnly !== undefined && EditorState.readOnly.of(props.readOnly),\n props.scrollPastEnd && scrollPastEnd(),\n props.tabSize && EditorState.tabSize.of(props.tabSize),\n\n // https://codemirror.net/docs/ref/#view.KeyBinding\n keymap.of(\n [\n ...((props.keymap && keymaps[props.keymap]) ?? []),\n // NOTE: Tabs are also configured by markdown extension.\n // https://codemirror.net/docs/ref/#commands.indentWithTab\n ...(props.indentWithTab ? [indentWithTab] : []),\n // https://codemirror.net/docs/ref/#autocomplete.closeBracketsKeymap\n ...(props.closeBrackets ? closeBracketsKeymap : []),\n // https://codemirror.net/docs/ref/#commands.historyKeymap\n ...(props.history ? historyKeymap : []),\n // https://codemirror.net/docs/ref/#search.searchKeymap\n ...(props.search ? searchKeymap : []),\n // Disable bindings that conflict with system shortcuts.\n // TODO(burdon): Catalog global shortcuts.\n {\n key: 'Mod-Shift-k',\n preventDefault: true,\n run: () => true,\n },\n ].filter(isNotFalsy),\n ),\n ].filter(isNotFalsy);\n};\n\n//\n// Theme\n//\n\nexport type ThemeExtensionsOptions = {\n themeMode?: ThemeMode;\n styles?: ThemeStyles;\n syntaxHighlighting?: boolean;\n slots?: {\n editor?: {\n className?: string;\n };\n scroll?: {\n className?: string;\n };\n content?: {\n className?: string;\n };\n };\n};\n\nexport const grow: ThemeExtensionsOptions['slots'] = {\n editor: {\n className: 'is-full bs-full',\n },\n} as const;\n\nexport const fullWidth: ThemeExtensionsOptions['slots'] = {\n editor: {\n className: 'is-full',\n },\n} as const;\n\nexport const defaultThemeSlots = grow;\n\n/**\n * https://codemirror.net/examples/styling\n */\nexport const createThemeExtensions = ({\n themeMode,\n styles,\n syntaxHighlighting: syntaxHighlightingProps,\n slots: _slots,\n}: ThemeExtensionsOptions = {}): Extension => {\n const slots = defaultsDeep({}, _slots, defaultThemeSlots);\n return [\n EditorView.darkTheme.of(themeMode === 'dark'),\n EditorView.baseTheme(styles ? merge({}, defaultTheme, styles) : defaultTheme),\n syntaxHighlightingProps && syntaxHighlighting(themeMode === 'dark' ? oneDarkHighlightStyle : defaultHighlightStyle),\n slots.editor?.className && EditorView.editorAttributes.of({ class: slots.editor.className }),\n slots.content?.className && EditorView.contentAttributes.of({ class: slots.content.className }),\n slots.scroll?.className &&\n ViewPlugin.fromClass(\n class {\n constructor(view: EditorView) {\n view.scrollDOM.classList.add(...slots.scroll.className.split(/\\s+/));\n }\n },\n ),\n ].filter(isNotFalsy);\n};\n\n//\n// Data\n//\n\nexport type DataExtensionsProps<T> = {\n id: string;\n text?: DocAccessor<T>;\n space?: Space;\n identity?: Identity | null;\n};\n\n// TODO(burdon): Move out of react-ui-editor (remove echo deps).\nexport const createDataExtensions = <T>({ id, text, space, identity }: DataExtensionsProps<T>): Extension[] => {\n const extensions: Extension[] = [];\n if (text) {\n extensions.push(automerge(text));\n }\n\n if (space && identity) {\n const peerId = identity?.identityKey.toHex();\n const hue = (identity?.profile?.data?.hue as HuePalette | undefined) ?? hexToHue(peerId ?? '0');\n extensions.push(\n awareness(\n new SpaceAwarenessProvider({\n space,\n channel: `awareness.${id}`,\n peerId: identity.identityKey.toHex(),\n info: {\n darkColor: `var(--dx-${hue}Cursor)`,\n lightColor: `var(--dx-${hue}Cursor)`,\n displayName: identity.profile?.displayName ?? generateName(identity.identityKey.toHex()),\n },\n }),\n ),\n );\n }\n\n return extensions;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\n\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type ThemeExtensionsOptions } from './extensions';\nimport { fontMono } from './styles';\n\n/**\n * CodeMirror content width.\n * 40rem = 640px. Corresponds to initial plank width (Google docs, Stashpad, etc.)\n * 50rem = 800px. Maximum content width for solo mode.\n * NOTE: Max width - 4rem = 2rem left/right margin (or 2rem gutter plus 1rem left/right margin).\n */\nexport const editorWidth = '!mli-auto is-full max-is-[min(50rem,100%-4rem)]';\n\nexport const editorSlots: ThemeExtensionsOptions['slots'] = {\n scroll: {\n className: 'pbs-2',\n },\n content: {\n className: editorWidth,\n },\n};\n\nexport const editorGutter = EditorView.theme({\n '.cm-gutters': {\n // NOTE: Color required to cover content if scrolling horizontally.\n // TODO(burdon): Non-transparent background clips the focus ring.\n background: 'var(--dx-baseSurface) !important',\n paddingRight: '1rem',\n },\n});\n\nexport const editorMonospace = EditorView.theme({\n '.cm-content': {\n fontFamily: fontMono,\n },\n});\n\nexport const editorWithToolbarLayout =\n 'grid grid-cols-1 grid-rows-[min-content_1fr] data-[toolbar=disabled]:grid-rows-[1fr] justify-center content-start overflow-hidden';\n\n// NOTE: Padding is added to the editor to account for the focus ring (since otherwise the CM gutter will clip it)\nexport const stackItemContentEditorClassNames = (role?: string) =>\n mx(\n 'p-0.5 dx-focus-ring-inset attention-surface data-[toolbar=disabled]:pbs-2',\n role === 'section' ? '[&_.cm-scroller]:overflow-hidden [&_.cm-scroller]:min-bs-24' : 'min-bs-0',\n );\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { mx } from '@dxos/react-ui-theme';\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\n// https://tailwindcss.com/docs/font-weight\nconst headings: Record<HeadingLevel, string> = {\n 1: 'text-4xl',\n 2: 'text-3xl',\n 3: 'text-2xl',\n 4: 'text-xl',\n 5: 'text-lg',\n 6: '', // TODO(burdon): Should be text-base, but that's a color in our system.\n};\n\nexport const theme = {\n code: 'font-mono !no-underline text-neutral-700 dark:text-neutral-300',\n codeMark: 'font-mono text-primary-500',\n mark: 'opacity-50',\n heading: (level: HeadingLevel) => {\n return mx(headings[level], 'dark:text-primary-400');\n },\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { tokens } from '@dxos/react-ui-theme';\nimport { get } from '@dxos/util';\n\n/**\n * Returns the tailwind token value.\n */\nconst getToken = (path: string, defaultValue?: string | string[]): string => {\n const value = get(tokens, path, defaultValue);\n return value?.toString() ?? '';\n};\n\nexport const fontBody = getToken('fontFamily.body');\nexport const fontMono = getToken('fontFamily.mono');\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type StyleSpec } from 'style-mod';\n\nimport { fontBody } from './tokens';\n\nexport type ThemeStyles = Record<string, StyleSpec>;\n\n/**\n * Minimal styles.\n * https://codemirror.net/examples/styling\n *\n * Examples:\n * - https://github.com/codemirror/view/blob/main/src/theme.ts\n * - https://github.com/codemirror/theme-one-dark/blob/main/src/one-dark.ts\n *\n * Main layout:\n * https://codemirror.net/examples/styling\n * https://codemirror.net/docs/guide (DOM Structure).\n *\n * <div class=\"cm-editor [cm-focused] [generated classes]\">\n * <div class=\"cm-scroller\">\n * <div class=\"cm-gutters\">\n * <div class=\"cm-gutter [...]\">\n * <div class=\"cm-gutterElement\">...</div>\n * </div>\n * </div>\n * <div class=\"cm-content\" role=\"textbox\" contenteditable=\"true\">\n * <div class=\"cm-line\"></div>\n * </div>\n * <div class=\"cm-selectionLayer\">\n * <div class=\"cm-selectionBackground\"></div>\n * </div>\n * <div class=\"cm-cursorLayer\">\n * <div class=\"cm-cursor\"></div>\n * </div>\n * </div>\n * </div>\n *\n * NOTE: `light` and `dark` selectors are preprocessed by CodeMirror and can only be in the base theme.\n * NOTE: Use 'unset' to remove default CM style.\n */\nexport const defaultTheme: ThemeStyles = {\n '&': {},\n '&.cm-focused': {\n outline: 'none',\n },\n\n /**\n * Scroller\n */\n '.cm-scroller': {\n overflowY: 'auto',\n },\n\n /**\n * Content\n * NOTE: Apply margins to content so that scrollbar is at the edge of the container.\n */\n '.cm-content': {\n padding: 'unset',\n fontFamily: fontBody,\n // NOTE: Base font size (otherwise defined by HTML tag, which might be different for storybook).\n fontSize: '16px',\n lineHeight: '24px',\n color: 'unset',\n },\n\n /**\n * Gutters\n * NOTE: Gutters should have the same top margin as the content.\n */\n '.cm-gutters': {\n borderRight: 'none',\n // background: 'transparent',\n },\n '.cm-gutter': {},\n '.cm-gutter.cm-lineNumbers': {\n paddingRight: '4px',\n borderRight: '1px solid var(--dx-subduedSeparator)',\n },\n '.cm-gutter.cm-lineNumbers .cm-gutterElement': {\n minWidth: '40px',\n },\n /**\n * Height is set to match the corresponding line (which may have wrapped).\n */\n '.cm-gutterElement': {\n lineHeight: '24px',\n fontSize: '12px',\n },\n\n /**\n * Line.\n */\n '.cm-line': {\n lineHeight: '24px',\n paddingInline: 0,\n },\n '.cm-activeLine': {\n background: 'var(--dx-cmActiveLine)',\n },\n\n /**\n * Cursor (layer).\n */\n '.cm-cursor, .cm-dropCursor': {\n borderLeft: '2px solid var(--dx-cmCursor)',\n },\n '.cm-placeholder': {\n color: 'var(--dx-placeholder)',\n },\n\n /**\n * Selection (layer).\n */\n '.cm-selectionBackground': {\n background: 'var(--dx-cmSelection)',\n },\n '&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground': {\n background: 'var(--dx-cmFocusedSelection)',\n },\n\n /**\n * Search.\n * NOTE: Matches comment.\n */\n '.cm-searchMatch': {\n margin: '0 -3px',\n padding: '3px',\n borderRadius: '3px',\n background: 'var(--dx-cmHighlightSurface)',\n color: 'var(--dx-cmHighlight)',\n },\n '.cm-searchMatch-selected': {\n textDecoration: 'underline',\n },\n\n /**\n * Link.\n */\n '.cm-link': {\n textDecorationLine: 'underline',\n textDecorationThickness: '1px',\n textDecorationColor: 'var(--dx-separator)',\n textUnderlineOffset: '2px',\n borderRadius: '.125rem',\n },\n '.cm-link > span': {\n color: 'var(--dx-accentText)',\n },\n\n /**\n * Tooltip.\n */\n '.cm-tooltip': {\n background: 'var(--dx-modalSurface)',\n },\n '.cm-tooltip-below': {},\n\n /**\n * Autocomplete.\n * https://github.com/codemirror/autocomplete/blob/main/src/completion.ts\n */\n '.cm-tooltip.cm-tooltip-autocomplete': {\n marginTop: '4px',\n marginLeft: '-3px',\n borderColor: 'var(--dx-separator)',\n borderTop: 'none',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul': {\n maxHeight: '20em',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li': {\n padding: '4px',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected]': {\n background: 'var(--dx-accentSurface)',\n color: 'var(--dx-accentSurfaceText)',\n },\n '.cm-tooltip.cm-tooltip-autocomplete > ul > completion-section': {\n paddingLeft: '4px !important',\n borderBottom: 'none !important',\n color: 'var(--dx-accentText)',\n },\n\n '.cm-completionInfo': {\n width: '360px !important',\n margin: '-10px 1px 0 1px',\n padding: '8px !important',\n borderColor: 'var(--dx-separator)',\n },\n '.cm-completionIcon': {\n display: 'none',\n },\n '.cm-completionLabel': {\n fontFamily: fontBody,\n },\n '.cm-completionMatchedText': {\n textDecoration: 'none !important',\n opacity: 0.5,\n },\n\n /**\n * Panels\n * https://github.com/codemirror/search/blob/main/src/search.ts#L745\n *\n * Find/replace panel.\n * <div class=\"cm-announced\">...</div>\n * <div class=\"cm-scroller\">...</div>\n * <div class=\"cm-panels cm-panels-bottom\">\n * <div class=\"cm-search cm-panel\">\n * <input class=\"cm-textfield\" />\n * <button class=\"cm-button\">...</button>\n * <label><input type=\"checkbox\" />...</label>\n * </div>\n * </div\n */\n // TODO(burdon): Implement custom panel (with icon buttons).\n '.cm-panels': {},\n '.cm-panel': {\n fontFamily: fontBody,\n backgroundColor: 'var(--surface-bg)',\n },\n '.cm-panel input, .cm-panel button, .cm-panel label': {\n color: 'var(--dx-subdued)',\n fontFamily: fontBody,\n fontSize: '14px',\n all: 'unset',\n margin: '3px !important',\n padding: '2px 6px !important',\n outline: '1px solid transparent',\n },\n '.cm-panel input, .cm-panel button': {\n backgroundColor: 'var(--dx-inputSurface)',\n },\n '.cm-panel input:focus, .cm-panel button:focus': {\n outline: '1px solid var(--dx-neutralFocusIndicator)',\n },\n '.cm-panel label': {\n display: 'inline-flex',\n alignItems: 'center',\n cursor: 'pointer',\n },\n '.cm-panel input.cm-textfield': {},\n '.cm-panel input[type=checkbox]': {\n width: '8px',\n height: '8px',\n marginRight: '6px !important',\n padding: '2px !important',\n color: 'var(--dx-neutralFocusIndicator)',\n },\n '.cm-panel button': {\n '&:hover': {\n backgroundColor: 'var(--dx-accentSurfaceHover) !important',\n },\n '&:active': {\n backgroundColor: 'var(--dx-accentSurfaceHover)',\n },\n },\n '.cm-panel.cm-search': {\n padding: '4px',\n borderTop: '1px solid var(--dx-separator)',\n },\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { StateEffect, StateField } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\n\nconst focusEffect = StateEffect.define<boolean>();\n\nexport const focusField = StateField.define<boolean>({\n create: () => false,\n update: (value, tr) => {\n for (const effect of tr.effects) {\n if (effect.is(focusEffect)) {\n return effect.value;\n }\n }\n return value;\n },\n});\n\n/**\n * Manage focus.\n */\nexport const focus = [\n focusField,\n EditorView.domEventHandlers({\n focus: (event, view) => {\n setTimeout(() => view.dispatch({ effects: focusEffect.of(true) }));\n },\n blur: (event, view) => {\n setTimeout(() => view.dispatch({ effects: focusEffect.of(false) }));\n },\n }),\n];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { codeFolding, foldGutter } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport React from 'react';\n\nimport { Icon } from '@dxos/react-ui';\n\nimport { Domino, renderRoot } from '../util';\n\nexport type FoldingOptions = {};\n\n/**\n * https://codemirror.net/examples/gutter\n */\n// TODO(burdon): Remember folding state (to state).\nexport const folding = (_props: FoldingOptions = {}): Extension => [\n codeFolding({\n placeholderDOM: () => {\n return document.createElement('span'); // Collapse content.\n },\n }),\n foldGutter({\n markerDOM: (open) => {\n // TODO(burdon): Use sprite directly.\n const el = Domino.of('div').classNames('flex h-full items-center').build();\n return renderRoot(\n el,\n <Icon icon='ph--caret-right--bold' size={3} classNames={['mx-3 cursor-pointer', open && 'rotate-90']} />,\n );\n },\n }),\n EditorView.theme({\n '.cm-foldGutter': {\n opacity: 0.3,\n transition: 'opacity 0.3s',\n width: '32px',\n },\n '.cm-foldGutter:hover': {\n opacity: 1,\n },\n }),\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport {\n Decoration,\n type DecorationSet,\n EditorView,\n MatchDecorator,\n ViewPlugin,\n type ViewUpdate,\n WidgetType,\n} from '@codemirror/view';\n\nimport { getHashColor, mx } from '@dxos/react-ui-theme';\n\nclass TagWidget extends WidgetType {\n constructor(private _text: string) {\n super();\n }\n\n toDOM(): HTMLSpanElement {\n const span = document.createElement('span');\n span.className = mx('cm-tag', getHashColor(this._text).tag);\n span.textContent = this._text;\n return span;\n }\n}\n\nconst tagMatcher = new MatchDecorator({\n regexp: /#(\\w+)\\W/g,\n decoration: (match) =>\n Decoration.replace({\n widget: new TagWidget(match[1]),\n }),\n});\n\n// TODO(burdon): Autocomplete from existing tags?\nexport const hashtag = (): Extension => [\n ViewPlugin.fromClass(\n class {\n tags: DecorationSet;\n constructor(view: EditorView) {\n this.tags = tagMatcher.createDeco(view);\n }\n\n update(update: ViewUpdate) {\n this.tags = tagMatcher.updateDeco(update, this.tags);\n }\n },\n {\n decorations: (instance) => instance.tags,\n provide: (plugin) =>\n EditorView.atomicRanges.of((view) => {\n return view.plugin(plugin)?.tags || Decoration.none;\n }),\n },\n ),\n\n EditorView.theme({\n '.cm-tag': {\n borderRadius: '4px',\n marginRight: '6px',\n padding: '2px 6px',\n },\n }),\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { json, jsonParseLinter } from '@codemirror/lang-json';\nimport { type LintSource, linter } from '@codemirror/lint';\nimport { type Extension } from '@codemirror/state';\nimport Ajv, { type ValidateFunction } from 'ajv';\n\nimport { type JsonSchemaType } from '@dxos/echo-schema';\n\nexport type JsonExtensionsOptions = {\n schema?: JsonSchemaType;\n};\n\nexport const createJsonExtensions = ({ schema }: JsonExtensionsOptions = {}): Extension => {\n let lintSource: LintSource = jsonParseLinter();\n if (schema) {\n // NOTE: Relaxing strict mode to allow additional custom schema properties.\n const ajv = new Ajv({ allErrors: false, strict: false });\n const validate = ajv.compile(schema);\n lintSource = schemaLinter(validate);\n }\n\n return [json(), linter(lintSource)];\n};\n\nconst schemaLinter =\n (validate: ValidateFunction): LintSource =>\n (view) => {\n try {\n const jsonText = view.state.doc.toString();\n const jsonData = JSON.parse(jsonText);\n const valid = validate(jsonData);\n if (valid) {\n return [];\n }\n\n return (\n validate.errors?.map((err: any) => ({\n from: 0,\n to: jsonText.length,\n severity: 'error',\n message: `${err.instancePath || '(root)'} ${err.message}`,\n })) ?? []\n );\n } catch (err: unknown) {\n return [\n {\n from: 0,\n to: view.state.doc.length,\n severity: 'error',\n message: 'Invalid JSON: ' + (err as Error).message,\n },\n ];\n }\n };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\n\nimport { documentId } from './selection';\n\nexport type ListenerOptions = {\n onFocus?: (focusing: boolean) => void;\n onChange?: (text: string, id: string) => void;\n};\n\n/**\n * Event listener.\n * @deprecated Use EditorView.updateListener and listen for specific update events.\n */\nexport const listener = ({ onFocus, onChange }: ListenerOptions): Extension => {\n const extensions: Extension[] = [];\n\n onFocus &&\n extensions.push(\n EditorView.focusChangeEffect.of((_, focusing) => {\n onFocus(focusing);\n return null;\n }),\n );\n\n onChange &&\n extensions.push(\n EditorView.updateListener.of((update) => {\n onChange(update.state.doc.toString(), update.state.facet(documentId));\n }),\n );\n\n return extensions;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { snippet } from '@codemirror/autocomplete';\nimport { syntaxTree } from '@codemirror/language';\nimport {\n type ChangeSpec,\n EditorSelection,\n type EditorState,\n type Extension,\n type Line,\n type StateCommand,\n type Text,\n} from '@codemirror/state';\nimport { EditorView, type ViewUpdate, keymap } from '@codemirror/view';\nimport { type SyntaxNode, type SyntaxNodeRef } from '@lezer/common';\nimport { useCallback, useMemo } from 'react';\n\nimport { debounceAndThrottle } from '@dxos/async';\nimport { type Live } from '@dxos/live-object';\n\nimport { type EditorToolbarState } from '../../components';\n\n// Markdown refs:\n// https://github.github.com/gfm\n// https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax\n\n// Describes the formatting situation of the selection in an editor state.\n// For inline styles `strong`, `emphasis`, `strikethrough`, and `code`,\n// the field only holds true when *all* selected text has the style,\n// or when the selection is a cursor inside such a style.\nexport type Formatting = Partial<{\n blankLine: boolean;\n // The type of the block at the selection.\n // If multiple different block types are selected, this will hold null.\n blockType:\n | 'codeblock'\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'heading4'\n | 'heading5'\n | 'heading6'\n | 'paragraph'\n | 'tablecell'\n | null;\n // Whether all selected text is wrapped in a blockquote.\n blockQuote: boolean;\n // Whether the selected text is strong.\n strong: boolean;\n // Whether the selected text is emphasized.\n emphasis: boolean;\n // Whether the selected text is stricken through.\n strikethrough: boolean;\n // Whether the selected text is inline code.\n code: boolean;\n // Whether there are links in the selected text.\n link: boolean;\n // If all selected blocks have the same (innermost) list style, that is indicated here.\n listStyle: null | 'ordered' | 'bullet' | 'task';\n}>;\n\nexport const formattingEquals = (a: Formatting, b: Formatting) =>\n a.blockType === b.blockType &&\n a.strong === b.strong &&\n a.emphasis === b.emphasis &&\n a.strikethrough === b.strikethrough &&\n a.code === b.code &&\n a.link === b.link &&\n a.listStyle === b.listStyle &&\n a.blockQuote === b.blockQuote;\n\nexport enum Inline {\n Strong = 0,\n Emphasis = 1,\n Strikethrough = 2,\n Code = 3,\n}\n\nexport enum List {\n Ordered,\n Bullet,\n Task,\n}\n\n//\n// Headings\n//\n\nexport const setHeading = (level: number): StateCommand => {\n return ({ state, dispatch }) => {\n const {\n selection: { ranges },\n doc,\n } = state;\n const changes: ChangeSpec[] = [];\n let prevBlock = -1;\n for (const range of ranges) {\n let sawBlock = false;\n syntaxTree(state).iterate({\n from: range.from,\n to: range.to,\n enter: (node) => {\n if (!Object.hasOwn(Textblocks, node.name) || prevBlock === node.from) {\n return;\n }\n sawBlock = true;\n prevBlock = node.from;\n const blockType = Textblocks[node.name];\n const isHeading = /heading(\\d)/.exec(blockType);\n const curLevel = isHeading ? +isHeading[1] : node.name === 'Paragraph' ? 0 : -1;\n if (curLevel < 0 || curLevel === level) {\n return;\n }\n if (curLevel === 0) {\n changes.push({ from: node.from, insert: '#'.repeat(level) + ' ' });\n } else if (node.name === 'SetextHeading1' || node.name === 'SetextHeading2') {\n // Change Setext heading to regular one.\n const nextLine = doc.lineAt(node.to);\n if (level) {\n changes.push({ from: node.from, insert: '#'.repeat(level) + ' ' });\n }\n changes.push({ from: nextLine.from - 1, to: nextLine.to });\n } else {\n // Adjust the level of an ATX heading.\n if (level === 0) {\n changes.push({ from: node.from, to: Math.min(node.to, node.from + curLevel + 1) });\n } else if (level < curLevel) {\n changes.push({ from: node.from, to: node.from + (curLevel - level) });\n } else {\n changes.push({ from: node.from, insert: '#'.repeat(level - curLevel) });\n }\n }\n },\n });\n let line;\n if (!sawBlock && range.empty && level > 0 && !/\\S/.test((line = state.doc.lineAt(range.from)).text)) {\n changes.push({ from: line.from, to: line.to, insert: '#'.repeat(level) + ' ' });\n }\n }\n\n if (!changes.length) {\n return false;\n }\n\n const changeSet = state.changes(changes);\n dispatch(\n state.update({\n changes: changeSet,\n selection: state.selection.map(changeSet, 1),\n userEvent: 'format.setHeading',\n scrollIntoView: true,\n }),\n );\n return true;\n };\n};\n\n//\n// Styles\n//\n\nexport const setStyle = (type: Inline, enable: boolean): StateCommand => {\n return ({ state, dispatch }) => {\n const marker = inlineMarkerText(type);\n const changes = state.changeByRange((range) => {\n // Special case for markers directly around the cursor, which will often not be parsed as valid styling.\n if (!enable && range.empty) {\n const after = state.doc.sliceString(range.head, range.head + 6);\n const found = after.indexOf(marker);\n if (found >= 0 && /^[*~`]*$/.test(after.slice(0, found))) {\n const before = state.doc.sliceString(range.head - 6, range.head);\n if (\n before.slice(before.length - found - marker.length, before.length - found) === marker &&\n [...before.slice(before.length - found)].reverse().join('') === after.slice(0, found)\n ) {\n return {\n changes: [\n { from: range.head - marker.length - found, to: range.head - found },\n { from: range.head + found, to: range.head + found + marker.length },\n ],\n range: EditorSelection.cursor(range.from - marker.length),\n };\n }\n }\n }\n\n const changes: ChangeSpec[] = [];\n // Used to add insertions that should happen *after* any other insertions at the same position.\n const changesAtEnd: ChangeSpec[] = [];\n let blockStart = -1;\n let blockEnd = -1;\n let startCovered: boolean | { from: number; to: number } = false;\n let endCovered: boolean | { from: number; to: number } = false;\n let { from, to } = range;\n\n // Iterate the selected range. For each textblock, determine a start and end position,\n // the overlap of the selected range and the block's extent, that should be styled/unstyled.\n syntaxTree(state).iterate({\n from,\n to,\n enter: (node) => {\n const { name } = node;\n if (Object.hasOwn(Textblocks, name) && Textblocks[name] !== 'codeblock') {\n // Set up for this textblock.\n blockStart = blockContentStart(node);\n blockEnd = blockContentEnd(node, state.doc);\n startCovered = endCovered = false;\n } else if (name === 'Link' || (name === 'Image' && enable)) {\n // If the range partially overlaps a link or image, expand it to cover it.\n if (from < node.from && to > node.from && to <= node.to) {\n to = node.to;\n } else if (to > node.to && from >= node.from && from < node.to) {\n from = node.from;\n }\n } else if (IgnoreInline.has(name) && enable) {\n // Move endpoints out of markers.\n if (node.from < from && node.to > from) {\n if (to === from) {\n to = node.to;\n }\n from = node.to;\n }\n if (node.from < to && node.to > to) {\n to = node.from;\n }\n } else if (Object.hasOwn(InlineMarker, name)) {\n // This is an inline marker node.\n const markType = InlineMarker[name];\n const size = inlineMarkerText(markType).length;\n const openEnd = node.from + size;\n const closeStart = node.to - size;\n // Determine whether the start/end of the range is covered\n // by this.\n if (markType === type) {\n if (openEnd <= from && closeStart >= from) {\n startCovered =\n !enable && openEnd === skipMarkers(from, node.node, -1, openEnd)\n ? { from: node.from, to: openEnd }\n : true;\n }\n if (openEnd <= to && closeStart >= to) {\n endCovered =\n !enable && closeStart === skipMarkers(to, node.node, 1, closeStart)\n ? { from: closeStart, to: node.to }\n : true;\n }\n }\n // Marks of the same type in range, or any mark if we're adding code style, need to be removed.\n if (markType === type || (type === Inline.Code && enable)) {\n if (node.from >= from && openEnd <= to) {\n changes.push({ from: node.from, to: openEnd });\n if (markType !== type && closeStart >= to) {\n // End marker outside, move start\n changesAtEnd.push({\n from: skipSpaces(Math.min(to, blockEnd), state.doc, 1, blockEnd),\n insert: inlineMarkerText(markType),\n });\n }\n }\n if (closeStart >= from && node.to <= to) {\n changes.push({ from: closeStart, to: node.to });\n if (markType !== type && openEnd <= from) {\n // Start marker outside, move end\n changes.push({\n from: skipSpaces(Math.max(from, blockStart), state.doc, -1, blockStart),\n insert: inlineMarkerText(markType),\n });\n }\n }\n }\n }\n },\n leave: (node) => {\n if (Object.hasOwn(Textblocks, node.name) && Textblocks[node.name] !== 'codeblock') {\n // Finish opening/closing the marks for this textblock.\n const rangeStart = Math.max(from, blockStart);\n const rangeEnd = Math.min(to, blockEnd);\n if (enable) {\n if (!startCovered) {\n changes.push({ from: rangeStart, insert: marker });\n }\n if (!endCovered) {\n changes.push({ from: rangeEnd, insert: marker });\n }\n } else {\n if (typeof startCovered === 'object') {\n changes.push(startCovered);\n } else if (startCovered) {\n changes.push({ from: skipSpaces(rangeStart, state.doc, -1, blockStart), insert: marker });\n }\n if (typeof endCovered === 'object') {\n changes.push(endCovered);\n } else if (endCovered) {\n changes.push({ from: skipSpaces(rangeEnd, state.doc, 1, blockEnd), insert: marker });\n }\n }\n }\n },\n });\n\n if (blockStart < 0 && range.empty && enable && !/\\S/.test(state.doc.lineAt(range.from).text)) {\n return {\n changes: { from: range.head, insert: marker + marker },\n range: EditorSelection.cursor(range.head + marker.length),\n };\n }\n\n const changeSet = state.changes(changes.concat(changesAtEnd));\n return {\n changes: changeSet,\n range:\n range.empty && !changeSet.empty\n ? EditorSelection.cursor(range.head + marker.length)\n : EditorSelection.range(changeSet.mapPos(range.from, 1), changeSet.mapPos(range.to, -1)),\n };\n });\n\n dispatch(\n state.update(changes, {\n userEvent: enable ? 'format.style.add' : 'format.style.remove',\n scrollIntoView: true,\n }),\n );\n\n return true;\n };\n};\n\nexport const addStyle = (style: Inline): StateCommand => setStyle(style, true);\n\nexport const removeStyle = (style: Inline): StateCommand => setStyle(style, false);\n\nexport const toggleStyle = (style: Inline): StateCommand => {\n return (arg) => {\n const form = getFormatting(arg.state);\n return setStyle(\n style,\n style === Inline.Strong\n ? !form.strong\n : style === Inline.Emphasis\n ? !form.emphasis\n : style === Inline.Strikethrough\n ? !form.strikethrough\n : !form.code,\n )(arg);\n };\n};\n\nexport const toggleStrong = toggleStyle(Inline.Strong);\nexport const toggleEmphasis = toggleStyle(Inline.Emphasis);\nexport const toggleStrikethrough = toggleStyle(Inline.Strikethrough);\nexport const toggleInlineCode = toggleStyle(Inline.Code);\n\nconst inlineMarkerText = (type: Inline) =>\n type === Inline.Strong ? '**' : type === Inline.Strikethrough ? '~~' : type === Inline.Emphasis ? '*' : '`';\n\n//\n// Utils\n//\n\nconst blockContentStart = (node: SyntaxNodeRef) => {\n const atx = /^ATXHeading(\\d)/.exec(node.name);\n if (atx) {\n return Math.min(node.to, node.from + +atx[1] + 1);\n }\n return node.from;\n};\n\nconst blockContentEnd = (node: SyntaxNodeRef, doc: Text) => {\n const setext = /^SetextHeading(\\d)/.exec(node.name);\n const lastLine = doc.lineAt(node.to);\n if (setext || /^[\\s>]*$/.exec(lastLine.text)) {\n return lastLine.from - 1;\n }\n return node.to;\n};\n\nconst skipSpaces = (pos: number, doc: Text, dir: -1 | 1, limit?: number) => {\n const line = doc.lineAt(pos);\n while (pos !== limit && line.text[pos - line.from - (dir < 0 ? 1 : 0)] === ' ') {\n pos += dir;\n }\n return pos;\n};\n\nconst skipMarkers = (pos: number, tree: SyntaxNode, dir: -1 | 1, limit?: number) => {\n for (;;) {\n const next = tree.resolve(pos, dir);\n if (!IgnoreInline.has(next.name)) {\n return pos;\n }\n const moveTo = dir < 0 ? next.from : next.to;\n if (limit != null && (dir < 0 ? moveTo < limit : moveTo > limit)) {\n return pos;\n }\n pos = moveTo;\n }\n};\n\n// TODO(burdon): Define and trigger snippets for codeblock, table, etc.\nconst snippets = {\n codeblock: snippet(\n [\n //\n '```#{}',\n '',\n '```',\n ].join('\\n'),\n ),\n table: snippet(\n [\n //\n '| #{col1} | #{col2} |',\n '| ---- | ---- |',\n '| #{val1} | #{val2} |',\n '| #{val3} | #{val4} |',\n '',\n ].join('\\n'),\n ),\n};\n\n//\n// Table\n//\n\nexport const insertTable = (view: EditorView) => {\n const {\n selection: { main },\n doc,\n } = view.state;\n const { number } = doc.lineAt(main.anchor);\n const { from } = doc.line(number);\n\n snippets.table(view, null, from, from);\n};\n\n//\n// Links\n//\n\n// For each link in the given range, remove the link markup\nconst removeLinkInner = (from: number, to: number, changes: ChangeSpec[], state: EditorState) => {\n syntaxTree(state).iterate({\n from,\n to,\n enter: (node) => {\n if (node.name === 'Link' && node.from < to && node.to > from) {\n node.node.cursor().iterate((node) => {\n const { name } = node;\n if (name === 'LinkMark' || name === 'LinkLabel') {\n changes.push({ from: node.from, to: node.to });\n } else if (name === 'LinkTitle' || name === 'URL') {\n changes.push({ from: skipSpaces(node.from, state.doc, -1), to: skipSpaces(node.to, state.doc, 1) });\n }\n });\n return false;\n }\n },\n });\n};\n\n// Remove all links touching the selection\nexport const removeLink: StateCommand = ({ state, dispatch }) => {\n const changes: ChangeSpec[] = [];\n for (const { from, to } of state.selection.ranges) {\n removeLinkInner(from, to, changes, state);\n }\n if (!changes) {\n return false;\n }\n dispatch(state.update({ changes, userEvent: 'format.link.remove', scrollIntoView: true }));\n return true;\n};\n\n// Add link markup around the selection.\nexport const addLink = ({ url, image }: { url?: string; image?: boolean } = {}): StateCommand => {\n return ({ state, dispatch }) => {\n const changes = state.changeByRange((range) => {\n let { from, to } = range;\n const cutStyles: SyntaxNode[] = [];\n let okay: boolean | null = null;\n // Check whether this range is in a position where a link makes sense.\n syntaxTree(state).iterate({\n from,\n to,\n enter: (node) => {\n if (Object.hasOwn(Textblocks, node.name)) {\n // If the selection spans multiple textblocks or is in a code block, abort.\n okay =\n Textblocks[node.name] !== 'codeblock' &&\n from >= blockContentStart(node) &&\n to <= blockContentEnd(node, state.doc);\n } else if (Object.hasOwn(InlineMarker, node.name)) {\n // Look for inline styles that partially overlap the range.\n // Expand the range over them if they start directly outside, otherwise mark them for later.\n const sNode = node.node;\n if (node.from < from && node.to <= to) {\n if (sNode.firstChild!.to === from) {\n from = node.from;\n } else {\n cutStyles.push(sNode);\n }\n } else if (node.from >= from && node.to > to) {\n if (sNode.lastChild!.from === to) {\n to = node.to;\n } else {\n cutStyles.push(sNode);\n }\n }\n }\n },\n });\n\n if (okay === null) {\n // No textblock found around selection. Check if the rest of the line is empty.\n const line = state.doc.lineAt(from);\n okay = to <= line.to && !/\\S/.test(line.text.slice(from - line.from));\n }\n if (!okay) {\n return { range };\n }\n\n const changes: ChangeSpec[] = [];\n // Some changes must be moved to end of change array so that they are applied in the right order.\n const changesAfter: ChangeSpec[] = [];\n // Clear existing links.\n removeLinkInner(from, to, changesAfter, state);\n let cursorOffset = 1;\n // Close and reopen inline styles that partially overlap the range.\n for (const style of cutStyles) {\n const type = InlineMarker[style.name];\n const mark = inlineMarkerText(type);\n if (style.from < from) {\n // Extends before.\n changes.push({ from: skipSpaces(from, state.doc, -1), insert: mark });\n changesAfter.push({ from: skipSpaces(from, state.doc, 1, to), insert: mark });\n } else {\n changes.push({ from: skipSpaces(to, state.doc, -1, from), insert: mark });\n const after = skipSpaces(to, state.doc, 1);\n if (after === to) {\n cursorOffset += mark.length;\n }\n changesAfter.push({ from: after, insert: mark });\n }\n }\n\n // Add the link markup.\n changes.push({ from, insert: image ? '` });\n const changeSet = state.changes(changes.concat(changesAfter));\n // Put the cursor between the title or parenthesis.\n return {\n changes: changeSet,\n range: EditorSelection.cursor(changeSet.mapPos(to, 1) - cursorOffset - (url ? url.length + 2 : 0)),\n };\n });\n\n if (changes.changes.empty) {\n return false;\n }\n\n dispatch(\n state.update(changes, {\n userEvent: 'format.link.add',\n scrollIntoView: true,\n }),\n );\n return true;\n };\n};\n\n//\n// Lists\n//\n\nexport const addList = (type: List): StateCommand => {\n return ({ state, dispatch }) => {\n let lastBlock = -1;\n let counter = 1;\n let first = true;\n let parentColumn: number | null = null;\n\n // Scan the syntax tree to locate textblocks that can be wrapped.\n const blocks: { node: SyntaxNode; counter: number; parentColumn: number | null }[] = [];\n for (const { from, to } of state.selection.ranges) {\n syntaxTree(state).iterate({\n from,\n to,\n enter: (node) => {\n if ((Object.hasOwn(Textblocks, node.name) && node.name !== 'TableCell') || node.name === 'Table') {\n if (first) {\n // For the first block, see if it follows a list,\n // so we can take indentation and numbering information from that one.\n let before = node.node.prevSibling;\n while (before && /Mark$/.test(before.name)) {\n before = before.prevSibling;\n }\n if (before?.name === (type === List.Ordered ? 'OrderedList' : 'BulletList')) {\n const item = before.lastChild!;\n const itemLine = state.doc.lineAt(item.from);\n const itemText = itemLine.text.slice(item.from - itemLine.from);\n parentColumn = item.from - itemLine.from + /^\\s*/.exec(itemText)![0].length;\n if (type === List.Ordered) {\n const mark = /^\\s*(\\d+)[.)]/.exec(itemText);\n if (mark) {\n parentColumn += mark[1].length;\n counter = +mark[1] + 1;\n }\n }\n }\n first = false;\n }\n if (node.from === lastBlock) {\n return;\n }\n\n lastBlock = node.from;\n blocks.push({ node: node.node, counter, parentColumn });\n counter++;\n return false;\n }\n },\n leave: (node) => {\n // When exiting block-level markup, reset the indentation and counter.\n if (node.name === 'BulletList' || node.name === 'OrderedList' || node.name === 'Blockquote') {\n counter = 1;\n parentColumn = null;\n }\n },\n });\n }\n\n if (!blocks.length) {\n // Insert a new list item if the selection is empty.\n const { from, to } = state.doc.lineAt(state.selection.main.anchor);\n if (from === to) {\n const insert = type === List.Bullet ? '- ' : type === List.Ordered ? '1. ' : '- [ ] ';\n dispatch(\n state.update({\n changes: [\n {\n from,\n insert,\n },\n ],\n selection: { anchor: from + insert.length },\n userEvent: 'format.list.add',\n scrollIntoView: true,\n }),\n );\n return true;\n }\n\n return false;\n }\n\n const changes: ChangeSpec[] = [];\n for (let i = 0; i < blocks.length; i++) {\n const { node, counter, parentColumn } = blocks[i];\n const nodeFrom = node.name === 'CodeBlock' ? node.from - 4 : node.from;\n // Compute a padding based on whether we are after whitespace.\n let padding = nodeFrom > 0 && !/\\s/.test(state.doc.sliceString(nodeFrom - 1, nodeFrom)) ? 1 : 0;\n // On ordered lists, the number is counted in the padding.\n if (type === List.Ordered) {\n padding += String(counter).length;\n }\n let line = state.doc.lineAt(nodeFrom);\n const column = nodeFrom - line.from;\n // Align to the list above if possible.\n if (parentColumn !== null && parentColumn > column) {\n padding = Math.max(padding, parentColumn - column);\n }\n\n let mark;\n if (type === List.Ordered) {\n // Scan ahead to find the max number we're adding, adjust padding for that.\n let max = counter;\n for (let j = i + 1; j < blocks.length; j++) {\n if (blocks[j].counter !== max + 1) {\n break;\n }\n max++;\n }\n const num = String(counter);\n padding = Math.max(String(max).length, padding);\n mark = ' '.repeat(Math.max(0, padding - num.length)) + num + '. ';\n } else {\n mark = ' '.repeat(padding) + '- ' + (type === List.Task ? '[ ] ' : '');\n }\n\n changes.push({ from: nodeFrom, insert: mark });\n // Add indentation for the other lines in this block.\n while (line.to < node.to) {\n line = state.doc.lineAt(line.to + 1);\n const open = /^[\\s>]*/.exec(line.text)![0].length;\n changes.push({ from: line.from + Math.min(open, column), insert: ' '.repeat(mark.length) });\n }\n }\n\n // If we are inserting an ordered list and there is another one right after the last selected block,\n // renumber that one to match the new order.\n if (type === List.Ordered) {\n const last = blocks[blocks.length - 1];\n let next = last.node.nextSibling;\n while (next && /Mark$/.test(next.name)) {\n next = next.nextSibling;\n }\n if (next?.name === 'OrderedList') {\n renumberListItems(next.firstChild, last.counter + 1, changes, state.doc);\n }\n }\n const changeSet = state.changes(changes);\n dispatch(\n state.update({\n changes: changeSet,\n selection: state.selection.map(changeSet, 1),\n userEvent: 'format.list.add',\n scrollIntoView: true,\n }),\n );\n return true;\n };\n};\n\nexport const removeList = (type: List): StateCommand => {\n return ({ state, dispatch }) => {\n let lastBlock = -1;\n const changes: ChangeSpec[] = [];\n const stack: string[] = [];\n const targetNodeType = type === List.Ordered ? 'OrderedList' : type === List.Bullet ? 'BulletList' : 'TaskList';\n // Scan the syntax tree to locate list items that can be unwrapped.\n for (const { from, to } of state.selection.ranges) {\n syntaxTree(state).iterate({\n from,\n to,\n enter: (node) => {\n const { name } = node;\n if (name === 'BulletList' || name === 'OrderedList' || name === 'Blockquote') {\n // Maintain block context.\n stack.push(name);\n } else if (name === 'Task' && stack[stack.length - 1] === 'BulletList') {\n stack[stack.length - 1] = 'TaskList';\n }\n },\n leave: (node) => {\n const { name } = node;\n if (name === 'BulletList' || name === 'OrderedList' || name === 'Blockquote') {\n stack.pop();\n } else if (name === 'ListItem' && stack[stack.length - 1] === targetNodeType && node.from !== lastBlock) {\n lastBlock = node.from;\n let line = state.doc.lineAt(node.from);\n const mark = /^\\s*(\\d+[.)] |[-*+] (\\[[ x]\\] )?)/.exec(line.text.slice(node.from - line.from));\n if (!mark) {\n return false;\n }\n const column = node.from - line.from;\n // Delete the marker on the first line.\n changes.push({ from: node.from, to: node.from + mark[0].length });\n // and indentation on subsequent lines.\n while (line.to < node.to) {\n line = state.doc.lineAt(line.to + 1);\n const open = /^[\\s>]*/.exec(line.text)![0].length;\n if (open > column) {\n changes.push({ from: line.from + column, to: line.from + Math.min(column + mark[0].length, open) });\n }\n }\n if (node.to >= to) {\n renumberListItems(node.node.nextSibling, 1, changes, state.doc);\n }\n return false;\n }\n },\n });\n }\n if (!changes.length) {\n return false;\n }\n\n dispatch(\n state.update({\n changes,\n userEvent: 'format.list.remove',\n scrollIntoView: true,\n }),\n );\n return true;\n };\n};\n\nexport const toggleList = (type: List): StateCommand => {\n return (target) => {\n const formatting = getFormatting(target.state);\n const active =\n formatting.listStyle === (type === List.Bullet ? 'bullet' : type === List.Ordered ? 'ordered' : 'task');\n return (active ? removeList(type) : addList(type))(target);\n };\n};\n\nconst renumberListItems = (item: SyntaxNode | null, counter: number, changes: ChangeSpec[], doc: Text) => {\n for (; item; item = item.nextSibling) {\n if (item.name === 'ListItem') {\n const number = /(\\s*)(\\d+)[.)]/.exec(doc.sliceString(item.from, item.from + 10));\n if (!number || +number[2] === counter) {\n break;\n }\n const size = number[1].length + number[2].length;\n const newNum = String(counter);\n changes.push({ from: item.from + Math.max(0, size - newNum.length), to: item.from + size, insert: newNum });\n counter++;\n }\n }\n};\n\n//\n// Block quotes\n//\n\nexport const setBlockquote = (enable: boolean): StateCommand => {\n return ({ state, dispatch }) => {\n const lines: Line[] = [];\n let lastBlock = -1;\n for (const { from, to } of state.selection.ranges) {\n const sawBlock = false;\n syntaxTree(state).iterate({\n from,\n to,\n enter: (node) => {\n if (Object.hasOwn(Textblocks, node.name) || node.name === 'Table') {\n if (node.from === lastBlock) {\n return false;\n }\n lastBlock = node.from;\n let line = state.doc.lineAt(node.from);\n if (line.number > 1) {\n const prevLine = state.doc.line(line.number - 1);\n if (/^[>\\s]*$/.test(prevLine.text)) {\n if (!enable || (lines.length && lines[lines.length - 1].number === prevLine.number - 1)) {\n lines.push(prevLine);\n }\n }\n }\n for (;;) {\n lines.push(line);\n if (line.to >= node.to) {\n break;\n }\n line = state.doc.line(line.number + 1);\n }\n if (!enable && line.number < state.doc.lines) {\n const nextLine = state.doc.line(line.number + 1);\n if (/^[>\\s]*$/.test(nextLine.text)) {\n lines.push(nextLine);\n }\n }\n return false;\n }\n },\n });\n let line;\n if (!sawBlock && enable && from === to && !/\\S/.test((line = state.doc.lineAt(from)).text)) {\n lines.push(line);\n }\n }\n\n const changes: ChangeSpec[] = [];\n for (const line of lines) {\n if (enable) {\n changes.push({ from: line.from, insert: /\\S/.test(line.text) ? '> ' : '>' });\n } else {\n const quote = /((?:[\\s>\\-+*]|\\d+[.)])*?)> ?/.exec(line.text);\n if (quote) {\n changes.push({ from: line.from + quote[1].length, to: line.from + quote[0].length });\n }\n }\n }\n if (!changes.length) {\n return false;\n }\n\n const changeSet = state.changes(changes);\n dispatch(\n state.update({\n changes: changeSet,\n selection: state.selection.map(changeSet, 1),\n userEvent: enable ? 'format.blockquote.add' : 'format.blockquote.remove',\n scrollIntoView: true,\n }),\n );\n return true;\n };\n};\n\nexport const addBlockquote = setBlockquote(true);\n\nexport const removeBlockquote = setBlockquote(false);\n\nexport const toggleBlockquote: StateCommand = (target) => {\n return (getFormatting(target.state).blockQuote ? removeBlockquote : addBlockquote)(target);\n};\n\n//\n// Code block\n//\n\nexport const addCodeblock: StateCommand = (target) => {\n const { state, dispatch } = target;\n const { selection } = state;\n // If on a blank line, use the code block snippet.\n if (selection.ranges.length === 1 && selection.main.empty) {\n const { head } = selection.main;\n const line = state.doc.lineAt(head);\n if (!/\\S/.test(line.text) && head === line.from) {\n snippets.codeblock(target, null, line.from, line.to);\n return true;\n }\n }\n\n // Otherwise, wrap any selected blocks in triple backticks.\n const ranges: { from: number; to: number }[] = [];\n for (const { from, to } of selection.ranges) {\n let blockFrom = from;\n let blockTo = to;\n syntaxTree(state).iterate({\n from,\n to,\n enter: (node) => {\n if (Object.hasOwn(Textblocks, node.name)) {\n if (from >= node.from && to <= node.to) {\n // Selection in a single block.\n blockFrom = node.from;\n blockTo = node.to;\n } else {\n // Expand to cover whole lines.\n blockFrom = Math.min(blockFrom, state.doc.lineAt(node.from).from);\n blockTo = Math.max(blockTo, state.doc.lineAt(node.to).to);\n }\n }\n },\n });\n if (ranges.length && ranges[ranges.length - 1].to >= blockFrom - 1) {\n ranges[ranges.length - 1].to = blockTo;\n } else {\n ranges.push({ from: blockFrom, to: blockTo });\n }\n }\n if (!ranges.length) {\n return false;\n }\n\n const changes: ChangeSpec[] = ranges.map(({ from, to }) => {\n const column = from - state.doc.lineAt(from).from;\n return [\n { from, insert: '```\\n' + ' '.repeat(column) },\n { from: to, insert: '\\n' + ' '.repeat(column) + '```' },\n ];\n });\n\n dispatch(\n state.update({\n changes,\n userEvent: 'format.codeblock.add',\n scrollIntoView: true,\n }),\n );\n\n return true;\n};\n\nexport const removeCodeblock: StateCommand = ({ state, dispatch }) => {\n let lastBlock = -1;\n\n // Find all code blocks, remove their markup.\n const changes: ChangeSpec[] = [];\n for (const { from, to } of state.selection.ranges) {\n syntaxTree(state).iterate({\n from,\n to,\n enter: (node) => {\n if (Textblocks[node.name] === 'codeblock' && lastBlock !== node.from) {\n lastBlock = node.from;\n const firstLine = state.doc.lineAt(node.from);\n if (node.name === 'FencedCode') {\n changes.push({ from: node.from, to: firstLine.to + 1 + node.from - firstLine.from });\n const lastLine = state.doc.lineAt(node.to);\n if (/^([\\s>]|[-*+] |\\d+[).])*`+$/.test(lastLine.text)) {\n changes.push({\n from: lastLine.from - (lastLine.number === firstLine.number + 1 ? 0 : 1),\n to: lastLine.to,\n });\n }\n } else {\n // Indented code block.\n const column = node.from - firstLine.from;\n for (let line = firstLine; ; line = state.doc.line(line.number + 1)) {\n changes.push({ from: line.from + column - 4, to: line.from + column });\n if (line.to >= node.to) {\n break;\n }\n }\n }\n }\n },\n });\n }\n if (!changes.length) {\n return false;\n }\n\n dispatch(state.update({ changes, userEvent: 'format.codeblock.remove', scrollIntoView: true }));\n return true;\n};\n\nexport const toggleCodeblock: StateCommand = (target) => {\n return (getFormatting(target.state).blockType === 'codeblock' ? removeCodeblock : addCodeblock)(target);\n};\n\n//\n// Formatting extension.\n//\n\nexport type FormattingOptions = {};\n\nexport const formattingKeymap = (_options: FormattingOptions = {}): Extension => {\n return [\n keymap.of([\n {\n key: 'meta-b',\n run: toggleStrong,\n },\n {\n key: 'meta-i',\n run: toggleEmphasis,\n },\n ]),\n ];\n};\n\nconst InlineMarker: { [name: string]: number } = {\n Emphasis: Inline.Emphasis,\n StrongEmphasis: Inline.Strong,\n InlineCode: Inline.Code,\n Strikethrough: Inline.Strikethrough,\n};\n\nconst IgnoreInline = new Set([\n 'Autolink',\n 'CodeMark',\n 'CodeText',\n 'Comment',\n 'EmphasisMark',\n 'Hardbreak',\n 'HeaderMark',\n 'HTMLTag',\n 'LinkMark',\n 'ListMark',\n 'ProcessingInstruction',\n 'QuoteMark',\n 'StrikethroughMark',\n 'SubscriptMark',\n 'SuperscriptMark',\n 'TaskMarker',\n]);\n\nconst Textblocks: { [name: string]: NonNullable<Formatting['blockType']> } = {\n ATXHeading1: 'heading1',\n ATXHeading2: 'heading2',\n ATXHeading3: 'heading3',\n ATXHeading4: 'heading4',\n ATXHeading5: 'heading5',\n ATXHeading6: 'heading6',\n CodeBlock: 'codeblock',\n FencedCode: 'codeblock',\n Paragraph: 'paragraph',\n SetextHeading1: 'heading1',\n SetextHeading2: 'heading2',\n TableCell: 'tablecell',\n Task: 'paragraph',\n};\n\n/**\n * Query the editor state for the active formatting at the selection.\n */\nexport const getFormatting = (state: EditorState): Formatting => {\n // These will track the formatting we've seen so far.\n // False indicates mixed block types.\n let blockType: Formatting['blockType'] | false = null;\n // Indexed by the Inline enum, tracks inline markup.\n // null = no text seen, true = all text had the mark, false = saw text without it.\n const inline: (boolean | null)[] = [null, null, null, null];\n let link: boolean = false;\n let blockQuote: boolean | null = null;\n // False indicates mixed list styles.\n let listStyle: Formatting['listStyle'] | null | false = null;\n\n // Track block context for list/blockquote handling.\n const stack: ('BulletList' | 'OrderedList' | 'Blockquote' | 'TaskList')[] = [];\n // This is set when entering a textblock (paragraph, heading, etc.)\n // and cleared when exiting again. It is used to track inline style.\n // `active` holds an array that indicates, for the various style (`Inline` enum) whether they are currently active.\n let currentBlock: { pos: number; end: number; active: boolean[] } | null = null;\n // Advance over regular inline text. Will update `inline` depending on what styles are active.\n const advanceInline = (upto: number) => {\n if (!currentBlock) {\n return;\n }\n upto = Math.min(upto, currentBlock.end);\n if (upto <= currentBlock.pos) {\n return;\n }\n for (let i = 0; i < currentBlock.active.length; i++) {\n if (inline[i] === false) {\n continue;\n } else if (currentBlock.active[i]) {\n inline[i] = true;\n } else if (/\\S/.test(state.doc.sliceString(currentBlock.pos, upto))) {\n inline[i] = false;\n }\n }\n currentBlock.pos = upto;\n };\n\n // Skip markup that shouldn't be treated as inline text for style-tracking purposes.\n const skipInline = (upto: number) => {\n if (currentBlock && upto > currentBlock.pos) {\n currentBlock.pos = Math.min(upto, currentBlock.end);\n }\n };\n\n const { selection } = state;\n for (const range of selection.ranges) {\n if (range.empty && inline.some((v) => v === null)) {\n // Check for markers directly around the cursor (which, not being valid Markdown, the syntax tree won't pick up).\n const contextSize = Math.min(range.head, 6);\n const contextBefore = state.doc.sliceString(range.head - contextSize, range.head);\n let contextAfter = state.doc.sliceString(range.head, range.head + contextSize);\n for (let i = 0; i < contextSize; i++) {\n const ch = contextAfter[i];\n if (ch !== contextBefore[contextBefore.length - 1 - i] || !/[~`*]/.test(ch)) {\n contextAfter = contextAfter.slice(0, i);\n break;\n }\n }\n for (let i = 0; i < inline.length; i++) {\n const mark = inlineMarkerText(i);\n const found = contextAfter.indexOf(mark);\n if (found > -1) {\n contextAfter = contextAfter.slice(0, found) + contextAfter.slice(found + mark.length);\n if (inline[i] === null) {\n inline[i] = true;\n }\n }\n }\n }\n\n syntaxTree(state).iterate({\n from: range.from,\n to: range.to,\n enter: (node) => {\n advanceInline(node.from);\n const { name } = node;\n if (name === 'BulletList' || name === 'OrderedList' || name === 'Blockquote') {\n // Maintain block context.\n stack.push(name);\n } else if (name === 'Link') {\n link = true;\n } else if (Object.hasOwn(Textblocks, name) && (range.empty || node.to > range.from || node.from < range.to)) {\n if (name === 'Task' && stack[stack.length - 1] === 'BulletList') {\n stack[stack.length - 1] = 'TaskList';\n }\n const blockCode = Textblocks[name];\n if (blockType === null) {\n blockType = blockCode;\n } else if (blockType !== blockCode) {\n blockType = false;\n }\n if (blockCode !== 'codeblock' && inline.some((i) => i !== false)) {\n // Set up inline content tracking for non-code textblocks.\n currentBlock = {\n pos: Math.max(range.from, node.from),\n end: Math.min(range.to, node.to),\n active: [false, false, false, false],\n };\n }\n } else if (Object.hasOwn(InlineMarker, name) && currentBlock) {\n const index = InlineMarker[name];\n // Cursors selections always count as active.\n if (range.empty && inline[index] === null) {\n inline[index] = true;\n }\n currentBlock.active[index] = true;\n } else if (IgnoreInline.has(name)) {\n skipInline(node.to);\n }\n },\n leave: (node) => {\n advanceInline(node.to);\n const { name } = node;\n if (name === 'BulletList' || name === 'OrderedList' || name === 'Blockquote') {\n // Track block context.\n stack.pop();\n } else if (Object.hasOwn(Textblocks, name)) {\n // Scan the stack for blockquote/list context.\n // Done at end of node because task lists aren't recognized until a task is seen\n let hasList: Formatting['listStyle'] | false = false;\n let hasQuote = false;\n for (let i = stack.length - 1; i >= 0; i--) {\n if (stack[i] === 'Blockquote') {\n hasQuote = true;\n } else if (!hasList) {\n hasList = stack[i] === 'TaskList' ? 'task' : stack[i] === 'BulletList' ? 'bullet' : 'ordered';\n }\n }\n if (blockQuote === null) {\n blockQuote = hasQuote;\n } else if (!hasQuote && blockQuote) {\n blockQuote = false;\n }\n if (listStyle === null) {\n listStyle = hasList;\n } else if (listStyle !== hasList) {\n listStyle = false;\n }\n\n // End textblock.\n currentBlock = null;\n } else if (Object.hasOwn(InlineMarker, name) && currentBlock) {\n // Track markup in textblock.\n currentBlock.active[InlineMarker[name]] = false;\n }\n },\n });\n }\n\n const { from, to } = state.doc.lineAt(selection.main.anchor);\n const blankLine = from === to;\n\n return {\n blankLine,\n blockType: blockType || null,\n blockQuote: blockQuote ?? false,\n code: inline[Inline.Code] ?? false,\n emphasis: inline[Inline.Emphasis] ?? false,\n strong: inline[Inline.Strong] ?? false,\n strikethrough: inline[Inline.Strikethrough] ?? false,\n link,\n listStyle: listStyle || null,\n };\n};\n\n/**\n * Hook provides an extension to compute the current formatting state.\n */\nexport const useFormattingState = (state: Live<EditorToolbarState>): Extension => {\n const handleUpdate = useCallback(\n debounceAndThrottle((update: ViewUpdate) => {\n if (update.docChanged || update.selectionSet) {\n Object.entries(getFormatting(update.state)).forEach(([key, active]) => {\n state[key as keyof Formatting] = active as any;\n });\n }\n }, 100),\n [state],\n );\n\n return useMemo(() => EditorView.updateListener.of(handleUpdate), [handleUpdate]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\n\nimport { type Action } from '@dxos/app-graph';\nimport { type MenuActionProperties } from '@dxos/react-ui-menu';\n\nimport { createComment } from '../comments';\n\nimport {\n Inline,\n List,\n addBlockquote,\n addCodeblock,\n addLink,\n addList,\n insertTable,\n removeBlockquote,\n removeCodeblock,\n removeLink,\n removeList,\n setHeading,\n setStyle,\n toggleBlockquote,\n toggleList,\n toggleStyle,\n} from './formatting';\n\nexport type PayloadType =\n | 'view-mode'\n | 'blockquote'\n | 'strong'\n | 'codeblock'\n | 'comment'\n | 'heading'\n | 'image'\n | 'emphasis'\n | 'code'\n | 'link'\n | 'list-bullet'\n | 'list-ordered'\n | 'list-task'\n | 'mention'\n | 'prompt'\n | 'search'\n | 'strikethrough'\n | 'table';\n\nexport type EditorActionPayload = {\n type: PayloadType;\n data?: any;\n};\n\nexport type EditorAction = Action<MenuActionProperties & EditorActionPayload>;\n\nexport type EditorPayloadHandler = (view: EditorView, payload: EditorActionPayload) => void;\n\nexport const processEditorPayload: EditorPayloadHandler = (view, { type, data }) => {\n let inlineType, listType;\n switch (type) {\n case 'heading':\n setHeading(parseInt(data))(view);\n break;\n\n case 'strong':\n case 'emphasis':\n case 'strikethrough':\n case 'code':\n inlineType =\n type === 'strong'\n ? Inline.Strong\n : type === 'emphasis'\n ? Inline.Emphasis\n : type === 'strikethrough'\n ? Inline.Strikethrough\n : Inline.Code;\n (typeof data === 'boolean' ? setStyle(inlineType, data) : toggleStyle(inlineType))(view);\n break;\n\n case 'list-ordered':\n case 'list-bullet':\n case 'list-task':\n listType = type === 'list-ordered' ? List.Ordered : type === 'list-bullet' ? List.Bullet : List.Task;\n (data === false ? removeList(listType) : data === true ? addList(listType) : toggleList(listType))(view);\n break;\n\n case 'blockquote':\n (data === false ? removeBlockquote : data === true ? addBlockquote : toggleBlockquote)(view);\n break;\n case 'codeblock':\n (data === false ? removeCodeblock : addCodeblock)(view);\n break;\n case 'table':\n insertTable(view);\n break;\n\n case 'link':\n (data === false ? removeLink : addLink())(view);\n break;\n\n case 'image':\n addLink({ url: data, image: true })(view);\n break;\n\n case 'comment':\n createComment(view);\n break;\n }\n\n requestAnimationFrame(() => {\n if (!view.hasFocus) {\n view.focus();\n }\n });\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { completionKeymap } from '@codemirror/autocomplete';\nimport { defaultKeymap, indentWithTab } from '@codemirror/commands';\nimport { markdown, markdownLanguage } from '@codemirror/lang-markdown';\nimport { syntaxHighlighting } from '@codemirror/language';\nimport { languages } from '@codemirror/language-data';\nimport { type Extension } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { type MarkdownConfig } from '@lezer/markdown';\n\nimport { isNotFalsy } from '@dxos/util';\n\nimport { markdownHighlightStyle, markdownTagsExtensions } from './highlight';\n\nexport type MarkdownBundleOptions = {\n extensions?: MarkdownConfig[];\n indentWithTab?: boolean;\n setextHeading?: boolean;\n};\n\n/**\n * Creates markdown extensions.\n * To be used in conjunction with createBasicExtensions.\n *\n * Refs:\n * https://codemirror.net/docs/community\n * https://codemirror.net/docs/ref/#codemirror.basicSetup\n */\nexport const createMarkdownExtensions = (options: MarkdownBundleOptions = {}): Extension[] => {\n return [\n // Main extension.\n // https://github.com/codemirror/lang-markdown\n // https://codemirror.net/5/mode/markdown/index.html (demo).\n markdown({\n // GRM by default (vs strict CommonMark):\n // Table, TaskList, Strikethrough, and Autolink.\n // NOTE: This extends the parser; it doesn't affect rendering.\n // https://github.github.com/gfm\n // https://github.com/lezer-parser/markdown?tab=readme-ov-file#github-flavored-markdown\n base: markdownLanguage,\n\n // Languages for syntax highlighting fenced code blocks.\n codeLanguages: languages,\n\n // Don't complete HTML tags.\n completeHTMLTags: false,\n\n // Parser extensions.\n extensions: [\n // GFM provided by default.\n markdownTagsExtensions,\n ...(options.extensions ?? defaultExtensions()),\n ],\n }),\n\n // Custom styles.\n syntaxHighlighting(markdownHighlightStyle()),\n\n keymap.of(\n [\n // https://codemirror.net/docs/ref/#commands.indentWithTab\n options.indentWithTab !== false && indentWithTab,\n\n // https://codemirror.net/docs/ref/#commands.defaultKeymap\n ...defaultKeymap,\n ...completionKeymap,\n ].filter(isNotFalsy),\n ),\n ];\n};\n\n/**\n * Default customizations.\n * https://github.com/lezer-parser/markdown/blob/main/src/markdown.ts\n */\nexport const defaultExtensions = (): MarkdownConfig[] => [noSetExtHeading, noHtml];\n\n/**\n * Remove SetextHeading (e.g., headings created from \"---\").\n */\nconst noSetExtHeading: MarkdownConfig = {\n remove: ['SetextHeading'],\n};\n\n/**\n * Remove HTML and XML parsing.\n */\nconst noHtml: MarkdownConfig = {\n remove: ['HTMLBlock', 'HTMLTag'],\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { markdownLanguage } from '@codemirror/lang-markdown';\nimport { HighlightStyle } from '@codemirror/language';\nimport { Tag, styleTags, tags } from '@lezer/highlight';\nimport { type MarkdownConfig, Table } from '@lezer/markdown';\n\nimport { fontBody, theme } from '../../styles';\n\n/**\n * Custom tags defined and processed by the GFM lezer extension.\n * https://github.com/lezer-parser/markdown\n * https://github.com/lezer-parser/markdown/blob/main/src/markdown.ts\n */\nexport const markdownTags = {\n Blockquote: Tag.define(),\n CodeMark: Tag.define(),\n CodeText: Tag.define(),\n EmphasisMark: Tag.define(),\n HeaderMark: Tag.define(),\n InlineCode: Tag.define(),\n LinkLabel: Tag.define(),\n LinkReference: Tag.define(),\n ListMark: Tag.define(),\n QuoteMark: Tag.define(),\n URL: Tag.define(),\n\n // Custom.\n TableCell: Tag.define(),\n};\n\n// TODO(burdon): Customize table parser (make all content monospace).\n// https://github.com/lezer-parser/markdown/blob/main/src/extension.ts\nTable.defineNodes?.forEach((node: any) => {\n switch (node?.name) {\n case 'TableCell': {\n node.style = markdownTags.TableCell;\n break;\n }\n }\n});\n\nexport const markdownTagsExtensions: MarkdownConfig[] = [\n Table,\n {\n props: [styleTags(markdownTags)],\n },\n];\n\nexport type HighlightOptions = {};\n\n/**\n * Styling based on `lezer` parser tags.\n * https://codemirror.net/examples/styling\n * https://github.com/lezer-parser/highlight\n * https://github.com/lezer-parser/highlight/blob/main/src/highlight.ts#L427\n * https://lezer.codemirror.net/docs/ref/#highlight.tags (list of tags)\n *\n * Examples:\n * - https://github.com/codemirror/language/blob/main/src/highlight.ts#L194\n * - https://github.com/codemirror/theme-one-dark/blob/main/src/one-dark.ts#L115\n */\nexport const markdownHighlightStyle = (_options: HighlightOptions = {}) => {\n return HighlightStyle.define(\n [\n {\n tag: [\n tags.keyword,\n tags.name,\n tags.deleted,\n tags.character,\n tags.propertyName,\n tags.macroName,\n tags.color,\n tags.constant(tags.name),\n tags.standard(tags.name),\n tags.definition(tags.name),\n tags.separator,\n tags.typeName,\n tags.className,\n tags.number,\n tags.changed,\n tags.annotation,\n tags.modifier,\n tags.self,\n tags.namespace,\n tags.operator,\n tags.operatorKeyword,\n tags.escape,\n tags.regexp,\n tags.special(tags.string),\n tags.meta,\n tags.comment,\n tags.atom,\n tags.bool,\n tags.special(tags.variableName),\n tags.processingInstruction,\n tags.string,\n tags.inserted,\n tags.invalid,\n ],\n // TODO(burdon): Explain.\n color: 'inherit !important',\n },\n\n // Markdown marks.\n {\n tag: [\n tags.meta,\n tags.processingInstruction,\n markdownTags.LinkLabel,\n markdownTags.LinkReference,\n markdownTags.ListMark,\n ],\n class: theme.mark,\n },\n\n // Markdown marks.\n {\n tag: [\n //\n markdownTags.CodeMark,\n markdownTags.HeaderMark,\n markdownTags.QuoteMark,\n markdownTags.EmphasisMark,\n ],\n class: theme.mark,\n },\n\n // E.g., code block language (after ```).\n {\n tag: [\n //\n tags.function(tags.variableName),\n tags.labelName,\n ],\n class: theme.codeMark,\n },\n\n // Fonts.\n {\n tag: [tags.monospace],\n class: 'font-mono',\n },\n\n // Headings.\n { tag: tags.heading1, class: theme.heading(1) },\n { tag: tags.heading2, class: theme.heading(2) },\n { tag: tags.heading3, class: theme.heading(3) },\n { tag: tags.heading4, class: theme.heading(4) },\n { tag: tags.heading5, class: theme.heading(5) },\n { tag: tags.heading6, class: theme.heading(6) },\n\n // Emphasis.\n { tag: tags.emphasis, class: 'italic' },\n { tag: tags.strong, class: 'font-bold' },\n { tag: tags.strikethrough, class: 'line-through' },\n\n // NOTE: The `markdown` extension configures extensions for `lezer` to parse markdown tokens (incl. below).\n // However, since `codeLanguages` is also defined, the `lezer` will not parse fenced code blocks,\n // when a language is specified. In this case, the syntax highlighting extensions will colorize\n // the code, but all other CSS properties will be inherited.\n // IMPORTANT: Therefore, the fenced code block will use the base editor font unless changed by an extension.\n {\n tag: [markdownTags.CodeText, markdownTags.InlineCode],\n class: theme.code,\n },\n\n {\n tag: [markdownTags.TableCell],\n class: 'font-mono',\n },\n ],\n {\n scope: markdownLanguage,\n all: {\n fontFamily: fontBody,\n },\n },\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type EditorState, type Extension, StateField } from '@codemirror/state';\nimport { type TreeCursor } from '@lezer/common';\n\nexport const debugTree = (cb: (tree: DebugNode) => void): Extension =>\n StateField.define({\n create: (state) => cb(convertTreeToJson(state)),\n update: (value, tr) => cb(convertTreeToJson(tr.state)),\n });\n\nexport type DebugNode = {\n type: string;\n from: number;\n to: number;\n text: string;\n children: DebugNode[];\n};\n\nexport const convertTreeToJson = (state: EditorState): DebugNode => {\n const treeToJson = (cursor: TreeCursor): DebugNode => {\n const node: DebugNode = {\n type: cursor.type.name,\n from: cursor.from,\n to: cursor.to,\n text: state.doc.slice(cursor.from, cursor.to).toString(),\n children: [],\n };\n\n if (cursor.firstChild()) {\n do {\n node.children.push(treeToJson(cursor));\n } while (cursor.nextSibling());\n cursor.parent();\n }\n\n return node;\n };\n\n return treeToJson(syntaxTree(state).cursor());\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type EditorState, Prec, RangeSetBuilder, StateEffect } from '@codemirror/state';\nimport { Decoration, type DecorationSet, EditorView, ViewPlugin, type ViewUpdate, WidgetType } from '@codemirror/view';\nimport { type SyntaxNodeRef } from '@lezer/common';\n\nimport { invariant } from '@dxos/invariant';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type HeadingLevel, theme } from '../../styles';\nimport { type RenderCallback } from '../../types';\nimport { wrapWithCatch } from '../../util';\n\nimport { adjustChanges } from './changes';\nimport { image } from './image';\nimport { bulletListIndentationWidth, formattingStyles, orderedListIndentationWidth } from './styles';\nimport { table } from './table';\n\n/**\n * Unicode characters.\n * NOTE: Depends on font.\n * https://www.compart.com/en/unicode (nice resource).\n * https://en.wikipedia.org/wiki/List_of_Unicode_characters\n */\nconst Unicode = {\n emDash: '\\u2014',\n bullet: '\\u2022',\n bulletSmall: '\\u2219',\n bulletSquare: '\\u2b1d',\n};\n\n//\n// Widgets\n//\n\nclass HorizontalRuleWidget extends WidgetType {\n override toDOM(): HTMLSpanElement {\n const el = document.createElement('span');\n el.className = 'cm-hr';\n return el;\n }\n}\n\nclass LinkButton extends WidgetType {\n constructor(\n private readonly url: string,\n private readonly render: RenderCallback<{ url: string }>,\n ) {\n super();\n }\n\n override eq(other: this): boolean {\n return this.url === other.url;\n }\n\n // TODO(burdon): Create icon and link directly without react?\n override toDOM(view: EditorView): HTMLSpanElement {\n const el = document.createElement('span');\n this.render(el, { url: this.url }, view);\n return el;\n }\n}\n\nclass CheckboxWidget extends WidgetType {\n constructor(private _checked: boolean) {\n super();\n }\n\n override eq(other: this): boolean {\n return this._checked === other._checked;\n }\n\n override toDOM(view: EditorView): HTMLSpanElement {\n const input = document.createElement('input');\n input.className = 'cm-task-checkbox dx-checkbox';\n input.type = 'checkbox';\n input.tabIndex = -1;\n input.checked = this._checked;\n if (view.state.readOnly) {\n input.setAttribute('disabled', 'true');\n } else {\n input.onmousedown = (event: Event) => {\n // Could be beginning of line.\n const line = view.state.doc.lineAt(view.posAtDOM(span));\n const text = view.state.sliceDoc(line.from, line.to);\n const match = text.match(/^\\s*- (\\[[xX ]]).*/);\n if (match) {\n const [, checked] = match;\n const pos = line.from + text.indexOf(checked);\n this._checked = checked !== '[ ]';\n view.dispatch({\n changes: { from: pos + 1, to: pos + 2, insert: this._checked ? ' ' : 'x' },\n });\n\n event.preventDefault();\n }\n };\n }\n\n const span = document.createElement('span');\n span.className = 'cm-task';\n span.appendChild(input);\n return span;\n }\n\n override ignoreEvent(): boolean {\n return false;\n }\n}\n\nclass TextWidget extends WidgetType {\n constructor(\n private readonly text: string,\n private readonly className?: string,\n ) {\n super();\n }\n\n override toDOM(): HTMLSpanElement {\n const el = document.createElement('span');\n if (this.className) {\n el.className = this.className;\n }\n el.innerText = this.text;\n return el;\n }\n}\n\nconst hide = Decoration.replace({});\nconst blockQuote = Decoration.line({ class: 'cm-blockquote' });\nconst fencedCodeLine = Decoration.line({ class: 'cm-code cm-codeblock-line' });\nconst fencedCodeLineFirst = Decoration.line({ class: mx('cm-code cm-codeblock-line', 'cm-codeblock-start') });\nconst fencedCodeLineLast = Decoration.line({ class: mx('cm-code cm-codeblock-line', 'cm-codeblock-end') });\nconst commentBlockLine = fencedCodeLine;\nconst commentBlockLineFirst = fencedCodeLineFirst;\nconst commentBlockLineLast = fencedCodeLineLast;\nconst horizontalRule = Decoration.replace({ widget: new HorizontalRuleWidget() });\nconst checkedTask = Decoration.replace({ widget: new CheckboxWidget(true) });\nconst uncheckedTask = Decoration.replace({ widget: new CheckboxWidget(false) });\n\n/**\n * Checks if cursor is inside text.\n */\nconst editingRange = (state: EditorState, range: { from: number; to: number }, focus: boolean) => {\n const {\n readOnly,\n selection: {\n main: { head },\n },\n } = state;\n return focus && !readOnly && head >= range.from && head <= range.to;\n};\n\nconst autoHideTags = new Set([\n 'CodeMark',\n 'CodeInfo',\n 'EmphasisMark',\n 'StrikethroughMark',\n 'SubscriptMark',\n 'SuperscriptMark',\n]);\n\n/**\n * Markdown list level.\n */\ntype NumberingLevel = { type: string; from: number; to: number; level: number; number: number };\n\nconst buildDecorations = (view: EditorView, options: DecorateOptions, focus: boolean) => {\n const deco = new RangeSetBuilder<Decoration>();\n const atomicDeco = new RangeSetBuilder<Decoration>();\n const { state } = view;\n\n // Header numbering.\n // TODO(burdon): Pre-parse headers to allow virtualization.\n const headerLevels: (NumberingLevel | null)[] = [];\n const getHeaderLevels = (node: SyntaxNodeRef, level: number): (NumberingLevel | null)[] => {\n invariant(level > 0);\n if (level > headerLevels.length) {\n const len = headerLevels.length;\n headerLevels.length = level;\n headerLevels.fill(null, len);\n headerLevels[level - 1] = { type: node.name, from: node.from, to: node.to, level, number: 0 };\n } else {\n headerLevels.splice(level);\n }\n\n return headerLevels.slice(0, level);\n };\n\n // List numbering and indentation.\n const listLevels: NumberingLevel[] = [];\n const enterList = (node: SyntaxNodeRef) => {\n listLevels.push({ type: node.name, from: node.from, to: node.to, level: listLevels.length, number: 0 });\n };\n const leaveList = () => {\n listLevels.pop();\n };\n const getCurrentListLevel = (): NumberingLevel => {\n invariant(listLevels.length);\n return listLevels[listLevels.length - 1];\n };\n\n // let count = 0;\n const enterNode = (node: SyntaxNodeRef) => {\n // console.log(`[${count++}]`, { node: node.name, from: node.from, to: node.to });\n switch (node.name) {\n // ATXHeading > HeaderMark > Paragraph\n // NOTE: Numbering requires processing the entire document since otherwise only the visible range will be\n // processed and the numbering will be incorrect.\n case 'ATXHeading1':\n case 'ATXHeading2':\n case 'ATXHeading3':\n case 'ATXHeading4':\n case 'ATXHeading5':\n case 'ATXHeading6': {\n const level = parseInt(node.name['ATXHeading'.length]) as HeadingLevel;\n const headers = getHeaderLevels(node, level);\n if (options.numberedHeadings?.from !== undefined) {\n const header = headers[level - 1];\n // TODO(burdon): Header will be missing if headers are out of order (e.g., ## header then # header).\n if (header) {\n header.number++;\n }\n }\n\n const editing = editingRange(state, node, focus);\n if (editing) {\n break;\n }\n\n const mark = node.node.firstChild!;\n if (mark?.name === 'HeaderMark') {\n const { from, to = 6 } = options.numberedHeadings ?? {};\n const text = state.sliceDoc(node.from, node.to);\n const len = text.match(/[#\\s]+/)![0].length;\n if (!from || level < from || level > to) {\n atomicDeco.add(mark.from, mark.from + len, hide);\n } else {\n // TODO(burdon): Number format/style.\n const num =\n headers\n .slice(from - 1)\n .map((level) => level?.number ?? 0)\n .join('.') + ' ';\n\n if (num.length) {\n atomicDeco.add(\n mark.from,\n mark.from + len,\n Decoration.replace({\n widget: new TextWidget(num, theme.heading(level)),\n }),\n );\n }\n }\n }\n\n return false;\n }\n\n //\n // Lists.\n // [BulletList | OrderedList] > (ListItem > ListMark) > (Task > TaskMarker)?\n //\n\n case 'BulletList':\n case 'OrderedList': {\n enterList(node);\n break;\n }\n\n case 'ListItem': {\n const line = state.doc.lineAt(node.from);\n\n // Set indentation.\n const list = getCurrentListLevel();\n const width = list.type === 'OrderedList' ? orderedListIndentationWidth : bulletListIndentationWidth;\n const offset = (options?.listPaddingLeft ?? 0) + ((list.level ?? 0) + 1) * width;\n if (node.from === line.to - 1) {\n // Abort if only the hyphen is typed.\n return false;\n }\n\n // Add line decoration for the continuation indent.\n // TODO(burdon): Bug if indentation is more than one indentation unit (e.g., 4 spaces) from the previous line.\n deco.add(\n line.from,\n line.from,\n Decoration.line({\n class: 'cm-list-item',\n attributes: {\n style: `padding-left: ${offset}px; text-indent: -${width}px;`,\n },\n }),\n );\n\n break;\n }\n\n case 'ListMark': {\n const list = getCurrentListLevel();\n\n // Look-ahead for task marker.\n // NOTE: Requires space to exist (otherwise the text is parsed as the start of a link).\n const next = tree.resolve(node.to + 1, 1);\n if (next?.name === 'TaskMarker') {\n break;\n }\n\n // TODO(burdon): Option to make hierarchical; or a), i), etc.\n const label = list.type === 'OrderedList' ? `${++list.number}.` : Unicode.bulletSmall;\n const line = state.doc.lineAt(node.from);\n const to = state.doc.sliceString(node.to, node.to + 1) === ' ' ? node.to + 1 : node.to;\n atomicDeco.add(\n line.from,\n to,\n Decoration.replace({\n widget: new TextWidget(\n label,\n list.type === 'OrderedList' ? 'cm-list-mark cm-list-mark-ordered' : 'cm-list-mark cm-list-mark-bullet',\n ),\n }),\n );\n break;\n }\n\n case 'TaskMarker': {\n const checked = state.doc.sliceString(node.from + 1, node.to - 1) === 'x';\n // Check if the next character is a space and if so, include it in the replacement.\n const line = state.doc.lineAt(node.from);\n const to = state.doc.sliceString(node.to, node.to + 1) === ' ' ? node.to + 1 : node.to;\n atomicDeco.add(line.from, to, checked ? checkedTask : uncheckedTask);\n break;\n }\n\n //\n // Blockquote > QuoteMark > Paragraph\n //\n\n case 'Blockquote': {\n const editing = editingRange(state, node, focus);\n const quoteMark = node.node.getChild('QuoteMark');\n const paragraph = node.node.getChild('Paragraph');\n if (!editing && quoteMark && paragraph) {\n atomicDeco.add(quoteMark.from, paragraph.from, hide);\n }\n\n for (const block of view.viewportLineBlocks) {\n if (block.to < node.from) {\n continue;\n }\n if (block.from > node.to) {\n break;\n }\n\n deco.add(block.from, block.from, blockQuote);\n }\n\n break;\n }\n\n //\n // CommentBlock\n //\n\n case 'CommentBlock': {\n const editing = editingRange(state, node, focus);\n for (const block of view.viewportLineBlocks) {\n if (block.to < node.from) {\n continue;\n }\n if (block.from > node.to) {\n break;\n }\n\n const isFirst = block.from <= node.from;\n const isLast = block.to >= node.to && /^(\\s>)*-->$/.test(state.doc.sliceString(block.from, block.to));\n\n deco.add(\n block.from,\n block.from,\n isFirst ? commentBlockLineFirst : isLast ? commentBlockLineLast : commentBlockLine,\n );\n\n if (!editing && (isFirst || isLast)) {\n atomicDeco.add(block.from, block.to, hide);\n }\n }\n break;\n }\n\n //\n // FencedCode > CodeMark > [CodeInfo] > CodeText > CodeMark\n //\n\n case 'FencedCode': {\n for (const block of view.viewportLineBlocks) {\n if (block.to < node.from) {\n continue;\n }\n if (block.from > node.to) {\n break;\n }\n\n const first = block.from <= node.from;\n const last = block.to >= node.to && /```$/.test(state.doc.sliceString(block.from, block.to));\n deco.add(block.from, block.from, first ? fencedCodeLineFirst : last ? fencedCodeLineLast : fencedCodeLine);\n\n const editing = editingRange(state, node, focus);\n if (!editing && (first || last)) {\n atomicDeco.add(block.from, block.to, hide);\n }\n }\n return false;\n }\n\n //\n // Link > [LinkMark, URL]\n //\n\n case 'Link': {\n const marks = node.node.getChildren('LinkMark');\n const urlNode = node.node.getChild('URL');\n const editing = editingRange(state, node, focus);\n if (urlNode && marks.length >= 2) {\n const url = state.sliceDoc(urlNode.from, urlNode.to);\n if (options.skip?.({ name: 'Link', url })) {\n break;\n }\n if (!editing) {\n atomicDeco.add(node.from, marks[0].to, hide);\n }\n\n deco.add(\n marks[0].to,\n marks[1].from,\n Decoration.mark({\n tagName: 'a',\n attributes: {\n class: 'cm-link',\n href: url,\n rel: 'noreferrer',\n target: '_blank',\n },\n }),\n );\n if (!editing) {\n atomicDeco.add(\n marks[1].from,\n node.to,\n options.renderLinkButton\n ? Decoration.replace({ widget: new LinkButton(url, options.renderLinkButton) })\n : hide,\n );\n }\n }\n break;\n }\n\n //\n // HR\n //\n\n case 'HorizontalRule': {\n if (!editingRange(state, node, focus)) {\n deco.add(node.from, node.to, horizontalRule);\n }\n break;\n }\n\n default: {\n if (autoHideTags.has(node.name)) {\n if (!editingRange(state, node.node.parent!, focus)) {\n atomicDeco.add(node.from, node.to, hide);\n }\n }\n }\n }\n };\n\n const leaveNode = (node: SyntaxNodeRef) => {\n switch (node.name) {\n case 'BulletList':\n case 'OrderedList': {\n leaveList();\n break;\n }\n }\n };\n\n const tree = syntaxTree(state);\n if (options.numberedHeadings?.from === undefined) {\n for (const { from, to } of view.visibleRanges) {\n tree.iterate({\n from,\n to,\n enter: wrapWithCatch(enterNode, 'decorate.enter'),\n leave: wrapWithCatch(leaveNode, 'decorate.leave'),\n });\n }\n } else {\n // NOTE: If line numbering then we must iterate from the start of document.\n tree.iterate({\n enter: wrapWithCatch(enterNode, 'decorate.enter'),\n leave: wrapWithCatch(leaveNode, 'decorate.leave'),\n });\n }\n\n return {\n deco: deco.finish(),\n atomicDeco: atomicDeco.finish(),\n };\n};\n\nconst forceUpdate = StateEffect.define<null>();\n\nexport type NodeData = { name: 'Link'; url: string } | { name: 'Image'; url: string };\n\nexport interface DecorateOptions {\n /**\n * Prevents triggering decorations as the cursor moves through the document.\n */\n selectionChangeDelay?: number;\n numberedHeadings?: { from: number; to?: number };\n // TODO(burdon): Additional padding for each line.\n listPaddingLeft?: number;\n // TODO(burdon): Use consistently.\n skip?: (node: NodeData) => boolean;\n // TODO(burdon): Remove.\n renderLinkButton?: RenderCallback<{ url: string }>;\n}\n\nexport const decorateMarkdown = (options: DecorateOptions = {}) => {\n return [\n ViewPlugin.fromClass(\n class {\n deco: DecorationSet;\n atomicDeco: DecorationSet;\n pendingUpdate?: NodeJS.Timeout;\n\n constructor(view: EditorView) {\n ({ deco: this.deco, atomicDeco: this.atomicDeco } = buildDecorations(view, options, view.hasFocus));\n }\n\n update(update: ViewUpdate) {\n if (\n update.docChanged ||\n update.viewportChanged ||\n update.focusChanged ||\n update.transactions.some((tr) => tr.effects.some((effect) => effect.is(forceUpdate))) ||\n (update.selectionSet && !options.selectionChangeDelay)\n ) {\n ({ deco: this.deco, atomicDeco: this.atomicDeco } = buildDecorations(\n update.view,\n options,\n update.view.hasFocus,\n ));\n\n this.clearUpdate();\n } else if (update.selectionSet) {\n this.scheduleUpdate(update.view);\n }\n }\n\n // Defer update in case moving through the document.\n scheduleUpdate(view: EditorView) {\n this.clearUpdate();\n this.pendingUpdate = setTimeout(() => {\n view.dispatch({ effects: forceUpdate.of(null) });\n }, options.selectionChangeDelay);\n }\n\n clearUpdate() {\n if (this.pendingUpdate) {\n clearTimeout(this.pendingUpdate);\n this.pendingUpdate = undefined;\n }\n }\n\n destroy() {\n this.clearUpdate();\n }\n },\n {\n provide: (plugin) => [\n Prec.low(EditorView.decorations.of((view) => view.plugin(plugin)?.deco ?? Decoration.none)),\n EditorView.decorations.of((view) => view.plugin(plugin)?.atomicDeco ?? Decoration.none),\n EditorView.atomicRanges.of((view) => view.plugin(plugin)?.atomicDeco ?? Decoration.none),\n ],\n },\n ),\n image(),\n table(),\n adjustChanges(),\n formattingStyles,\n ];\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type ChangeSpec, Transaction } from '@codemirror/state';\nimport { type PluginValue, ViewPlugin, type ViewUpdate } from '@codemirror/view';\n\n/**\n * Monitors and augments changes.\n */\n// TODO(burdon): Tests.\nexport const adjustChanges = () => {\n return ViewPlugin.fromClass(\n class implements PluginValue {\n update(update: ViewUpdate) {\n const tree = syntaxTree(update.state);\n const adjustments: ChangeSpec[] = [];\n\n for (const tr of update.transactions) {\n const event = tr.annotation(Transaction.userEvent);\n switch (event) {\n //\n // Enter\n //\n case 'input': {\n const changes = tr.changes;\n if (changes.empty) {\n break;\n }\n\n changes.iterChanges((fromA) => {\n const node = tree.resolveInner(fromA, 1);\n if (node?.name === 'BulletList') {\n // Add space to previous line if an empty list item (otherwise it is not interpreted as a Task).\n const { text } = update.state.doc.lineAt(fromA);\n if (text.endsWith(']')) {\n adjustments.push({ from: fromA, to: fromA, insert: ' ' });\n }\n }\n });\n\n break;\n }\n\n //\n // Paste\n //\n case 'input.paste': {\n const changes = tr.changes;\n if (changes.empty) {\n break;\n }\n\n changes.iterChanges((fromA, toA, fromB, toB, text) => {\n // Check for URL.\n const url = getValidUrl(update.view.state.sliceDoc(fromB, toB));\n if (url) {\n // Check if pasting inside existing link.\n const node = tree.resolveInner(fromA, -1);\n const invalidPositions = new Set(['Code', 'CodeText', 'FencedCode', 'Link', 'LinkMark', 'URL']);\n if (!invalidPositions.has(node?.name)) {\n const replacedText = tr.startState.sliceDoc(fromA, toA);\n adjustments.push({ from: fromA, to: toB, insert: createLink(url, replacedText) });\n }\n } else {\n const node = tree.resolveInner(fromA, 1);\n switch (node?.name) {\n case 'Task': {\n // Remove task marker if pasting into task list.\n const str = text.toString();\n const match = str.match(/\\s*- \\[[ xX]\\]\\s*(.+)/);\n if (match) {\n const [, replacement] = match;\n adjustments.push({ from: fromA, to: toB, insert: replacement });\n }\n break;\n }\n }\n }\n });\n\n break;\n }\n }\n }\n\n // TODO(burdon): Is this the right way to augment changes? Alt: EditorState.transactionFilter\n if (adjustments.length) {\n setTimeout(() => {\n update.view.dispatch(\n update.view.state.update({\n changes: adjustments,\n }),\n );\n });\n }\n }\n },\n );\n};\n\n//\n// Links\n//\n\nexport const createLink = (url: URL, label: string): string => {\n // Check if image.\n // Example: https://dxos.network/dxos-logotype-blue.png\n const { host, pathname } = url;\n const [, extension] = pathname.split('.');\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'svg', 'webp'];\n if (imageExtensions.includes(extension)) {\n return ``;\n }\n\n if (!label) {\n label = createLinkLabel(url);\n }\n\n return `[${label}](${url})`;\n};\n\nexport const createLinkLabel = (url: URL): string => {\n let { protocol, host, pathname } = url;\n if (protocol === 'http:' || protocol === 'https:') {\n protocol = '';\n }\n\n // NOTE(Zan): Consult: https://github.com/dxos/dxos/issues/7331 before changing this.\n // Remove 'www.' if at the beginning of the URL\n host = host.replace(/^www\\./, '');\n\n return [protocol, host].filter(Boolean).join('//') + (pathname !== '/' ? pathname : '');\n};\n\nconst getValidUrl = (str: string): URL | undefined => {\n const validProtocols = ['http:', 'https:', 'mailto:', 'tel:'];\n try {\n const url = new URL(str);\n if (!validProtocols.includes(url.protocol)) {\n return undefined;\n }\n\n return url;\n } catch (_err) {\n return undefined;\n }\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type EditorState, type Extension, type Range, StateField, type Transaction } from '@codemirror/state';\nimport { Decoration, type DecorationSet, EditorView, WidgetType } from '@codemirror/view';\n\nimport { focusField } from '../focus';\n\nexport type ImageOptions = {};\n\n/**\n * Create image decorations.\n */\nexport const image = (_options: ImageOptions = {}): Extension => {\n return [\n StateField.define<DecorationSet>({\n create: (state) => {\n return Decoration.set(buildDecorations(state, 0, state.doc.length));\n },\n update: (value: DecorationSet, tr: Transaction) => {\n if (!tr.docChanged && !tr.selection) {\n return value;\n }\n\n // Find range of changes and cursor changes.\n const cursor = tr.state.selection.main.head;\n const oldCursor = tr.changes.mapPos(tr.startState.selection.main.head);\n let from = Math.min(cursor, oldCursor);\n let to = Math.max(cursor, oldCursor);\n tr.changes.iterChangedRanges((fromA, toA, fromB, toB) => {\n from = Math.min(from, fromB);\n to = Math.max(to, toB);\n });\n\n // Expand to cover lines.\n from = tr.state.doc.lineAt(from).from;\n to = tr.state.doc.lineAt(to).to;\n\n return value.map(tr.changes).update({\n filterFrom: from,\n filterTo: to,\n filter: () => false,\n add: buildDecorations(tr.state, from, to),\n });\n },\n provide: (field) => EditorView.decorations.from(field),\n }),\n ];\n};\n\nconst buildDecorations = (state: EditorState, from: number, to: number) => {\n const decorations: Range<Decoration>[] = [];\n const cursor = state.selection.main.head;\n syntaxTree(state).iterate({\n enter: (node) => {\n if (node.name === 'Image') {\n const urlNode = node.node.getChild('URL');\n if (urlNode) {\n const hide = state.readOnly || cursor < node.from || cursor > node.to || !state.field(focusField);\n\n const url = state.sliceDoc(urlNode.from, urlNode.to);\n // Some plugins might be using custom URLs; avoid attempts to render those URLs.\n if (url.match(/^https?:\\/\\//) === null && url.match(/^file?:\\/\\//) === null) {\n return;\n }\n\n preloadImage(url);\n decorations.push(\n Decoration.replace({\n block: true, // Prevent cursor from entering.\n widget: new ImageWidget(url),\n }).range(hide ? node.from : node.to, node.to),\n );\n }\n }\n },\n from,\n to,\n });\n\n return decorations;\n};\n\nconst preloaded = new Set<string>();\n\nconst preloadImage = (url: string) => {\n if (!preloaded.has(url)) {\n const img = document.createElement('img');\n img.src = url;\n preloaded.add(url);\n }\n};\n\nclass ImageWidget extends WidgetType {\n constructor(readonly _url: string) {\n super();\n }\n\n override eq(other: this): boolean {\n return this._url === other._url;\n }\n\n override toDOM(view: EditorView): HTMLImageElement {\n const img = document.createElement('img');\n img.setAttribute('src', this._url);\n img.setAttribute('class', 'cm-image');\n // If focused, hide image until successfully loaded to avoid flickering effects.\n if (view.state.field(focusField)) {\n img.onload = () => img.classList.add('cm-loaded-image');\n } else {\n img.classList.add('cm-loaded-image');\n }\n\n return img;\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\n\nimport { fontMono } from '../../styles';\n\nexport const bulletListIndentationWidth = 24;\nexport const orderedListIndentationWidth = 36; // TODO(burdon): Make variable length based on number of digits.\n\nexport const formattingStyles = EditorView.theme({\n /**\n * Horizontal rule.\n */\n '& .cm-hr': {\n display: 'inline-block',\n width: '100%',\n height: '0',\n verticalAlign: 'middle',\n borderTop: '1px solid var(--dx-cmSeparator)',\n opacity: 0.5,\n },\n\n /**\n * Lists.\n */\n '& .cm-list-item': {},\n '& .cm-list-mark': {\n display: 'inline-block',\n textAlign: 'right',\n paddingRight: '0.5em',\n fontVariant: 'tabular-nums',\n },\n '& .cm-list-mark-bullet': {\n width: `${bulletListIndentationWidth}px`,\n },\n '& .cm-list-mark-ordered': {\n width: `${orderedListIndentationWidth}px`,\n },\n\n /**\n * Blockquote.\n */\n '& .cm-blockquote': {\n background: 'var(--dx-cmCodeblock)',\n borderLeft: '2px solid var(--dx-cmSeparator)',\n paddingLeft: '1rem',\n margin: '0',\n },\n\n /**\n * Code and codeblocks.\n */\n '& .cm-code': {\n fontFamily: fontMono,\n },\n '& .cm-codeblock-line': {\n background: 'var(--dx-cmCodeblock)',\n paddingInline: '1rem !important',\n },\n '& .cm-codeblock-start': {\n borderTopLeftRadius: '.25rem',\n borderTopRightRadius: '.25rem',\n },\n '& .cm-codeblock-end': {\n borderBottomLeftRadius: '.25rem',\n borderBottomRightRadius: '.25rem',\n },\n\n /**\n * Task list.\n */\n '& .cm-task': {\n display: 'inline-flex',\n width: `${bulletListIndentationWidth}px`,\n height: '20px',\n },\n '& .cm-task-checkbox': {\n display: 'grid',\n margin: '0',\n transform: 'translateY(2px)',\n },\n\n /**\n * Table.\n */\n '.cm-table *': {\n fontFamily: fontMono,\n textDecoration: 'none !important',\n },\n '.cm-table-head': {\n padding: '2px 16px 2px 0px',\n textAlign: 'left',\n borderBottom: '1px solid var(--dx-cmSeparator)',\n color: 'var(--dx-subdued)',\n },\n '.cm-table-cell': {\n padding: '2px 16px 2px 0px',\n },\n\n /**\n * Image.\n */\n '.cm-image': {\n display: 'block',\n height: '0',\n },\n '.cm-image.cm-loaded-image': {\n height: 'auto',\n borderTop: '0.5rem solid transparent',\n borderBottom: '0.5rem solid transparent',\n },\n '.cm-image-with-loader': {\n display: 'block',\n opacity: '0',\n transitionDuration: '350ms',\n transitionProperty: 'opacity',\n },\n '.cm-image-with-loader.cm-loaded-image': {\n opacity: '1',\n },\n '.cm-image-wrapper': {\n 'grid-template-columns': '1fr',\n display: 'grid',\n margin: '0.5rem 0',\n overflow: 'hidden',\n transitionDuration: '350ms',\n transitionProperty: 'height',\n '& > *': {\n 'grid-row-start': 1,\n 'grid-column-start': 1,\n },\n },\n});\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport {\n type EditorState,\n type Extension,\n type RangeSet,\n RangeSetBuilder,\n StateField,\n type Transaction,\n} from '@codemirror/state';\nimport { Decoration, EditorView, WidgetType } from '@codemirror/view';\n\n// TODO(burdon): Snippet to create basic table.\n// https://codemirror.net/docs/ref/#autocomplete.snippet\n// TODO(burdon): Advanced formatting (left/right/center).\n// TODO(burdon): Editor to auto balance columns.\n\nexport type TableOptions = {};\n\n/**\n * GFM tables.\n * https://github.github.com/gfm/#tables-extension\n */\nexport const table = (options: TableOptions = {}): Extension => {\n return StateField.define<RangeSet<Decoration>>({\n create: (state) => update(state, options),\n update: (_: RangeSet<Decoration>, tr: Transaction) => update(tr.state, options),\n provide: (field) => EditorView.decorations.from(field),\n });\n};\n\ntype Table = {\n from: number;\n to: number;\n header?: string[];\n rows?: string[][];\n};\n\nconst update = (state: EditorState, _options: TableOptions) => {\n const builder = new RangeSetBuilder<Decoration>();\n const cursor = state.selection.main.head;\n\n const tables: Table[] = [];\n const getTable = () => tables[tables.length - 1];\n const getRow = () => {\n const table = getTable();\n return table.rows?.[table.rows.length - 1];\n };\n\n // Parse table.\n syntaxTree(state).iterate({\n enter: (node) => {\n // Check if cursor is inside text.\n switch (node.name) {\n case 'Table': {\n tables.push({ from: node.from, to: node.to });\n break;\n }\n case 'TableHeader': {\n getTable().header = [];\n break;\n }\n case 'TableRow': {\n (getTable().rows ??= []).push([]);\n break;\n }\n case 'TableCell': {\n const row = getRow();\n if (row) {\n row.push(state.sliceDoc(node.from, node.to));\n } else {\n getTable().header?.push(state.sliceDoc(node.from, node.to));\n }\n break;\n }\n }\n },\n });\n\n tables.forEach((table) => {\n const replace = state.readOnly || cursor < table.from || cursor > table.to;\n if (replace) {\n builder.add(\n table.from,\n table.to,\n Decoration.replace({\n block: true,\n widget: new TableWidget(table),\n }),\n );\n } else {\n // Add class for styling.\n // TODO(burdon): Apply to each line?\n builder.add(\n table.from,\n table.to,\n Decoration.mark({\n class: 'cm-table',\n }),\n );\n }\n });\n\n return builder.finish();\n};\n\nclass TableWidget extends WidgetType {\n constructor(readonly _table: Table) {\n super();\n }\n\n override eq(other: this): boolean {\n return (\n this._table.header?.join() === other._table.header?.join() &&\n this._table.rows?.join() === other._table.rows?.join()\n );\n }\n\n override toDOM(view: EditorView): HTMLDivElement {\n const div = document.createElement('div');\n const table = div.appendChild(document.createElement('table'));\n\n const header = table.appendChild(document.createElement('thead'));\n const tr = header.appendChild(document.createElement('tr'));\n this._table.header?.forEach((cell) => {\n const th = document.createElement('th');\n th.setAttribute('class', 'cm-table-head');\n tr.appendChild(th).textContent = cell;\n });\n\n const body = table.appendChild(document.createElement('tbody'));\n this._table.rows?.forEach((row) => {\n const tr = body.appendChild(document.createElement('tr'));\n row.forEach((cell) => {\n const td = document.createElement('td');\n td.setAttribute('class', 'cm-table-cell');\n tr.appendChild(td).textContent = cell;\n });\n });\n\n return div;\n }\n\n override ignoreEvent(e: Event): boolean {\n return !/^mouse/.test(e.type);\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n// Copyright CodeMirror\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { hoverTooltip } from '@codemirror/view';\nimport { type SyntaxNode } from '@lezer/common';\n\nimport { tooltipContent } from '@dxos/react-ui-theme';\n\nimport { type RenderCallback } from '../../types';\n\nexport const linkTooltip = (renderTooltip: RenderCallback<{ url: string }>) => {\n return hoverTooltip(\n (view, pos, side) => {\n const syntax = syntaxTree(view.state).resolveInner(pos, side);\n let link = null;\n for (let i = 0, node: SyntaxNode | null = syntax; !link && node && i < 5; node = node.parent, i++) {\n link = node.name === 'Link' ? node : null;\n }\n\n const url = link && link.getChild('URL');\n if (!url || !link) {\n return null;\n }\n\n const urlText = view.state.sliceDoc(url.from, url.to);\n if (urlText.startsWith('dxn')) {\n return null;\n }\n return {\n pos: link.from,\n end: link.to,\n // NOTE: Forcing above causes the tooltip to flicker.\n // above: true,\n create: () => {\n const el = document.createElement('div');\n el.className = tooltipContent({});\n renderTooltip(el, { url: urlText }, view);\n return { dom: el, offset: { x: 0, y: 4 } };\n },\n };\n },\n {\n // NOTE: 0 = default of 300ms.\n hoverTime: 1,\n },\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type CompletionContext, type CompletionResult, autocompletion } from '@codemirror/autocomplete';\nimport type { Extension } from '@codemirror/state';\n\nimport { log } from '@dxos/log';\n\nexport type MentionOptions = {\n debug?: boolean;\n onSearch: (text: string) => string[];\n};\n\n// TODO(burdon): Can only have a single autocompletion. Merge configuration with autocomplete.\nexport const mention = ({ debug, onSearch }: MentionOptions): Extension => {\n return autocompletion({\n // TODO(burdon): Not working.\n activateOnTyping: true,\n // activateOnTypingDelay: 100,\n // selectOnOpen: true,\n closeOnBlur: !debug,\n // defaultKeymap: false,\n icons: false,\n override: [\n (context: CompletionContext): CompletionResult | null => {\n log.info('completion context', { context });\n\n const match = context.matchBefore(/@(\\w+)?/);\n if (!match || (match.from === match.to && !context.explicit)) {\n return null;\n }\n\n return {\n from: match.from,\n options: onSearch(match.text.slice(1).toLowerCase()).map((value) => ({ label: `@${value}` })),\n };\n },\n ],\n });\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { vim } from '@replit/codemirror-vim';\nimport { vscodeKeymap } from '@replit/codemirror-vscode-keymap';\n\nimport { singleValueFacet } from '../util';\n\nexport type EditorInputConfig = {\n type?: string;\n noTabster?: boolean;\n};\n\nexport const editorInputMode = singleValueFacet<EditorInputConfig>({});\n\nexport const InputModeExtensions: { [mode: string]: Extension } = {\n default: [],\n vscode: [\n // https://github.com/replit/codemirror-vscode-keymap\n editorInputMode.of({ type: 'vscode' }),\n keymap.of(vscodeKeymap),\n ],\n vim: [\n // https://github.com/replit/codemirror-vim\n vim(),\n editorInputMode.of({ type: 'vim', noTabster: true }),\n keymap.of([\n {\n key: 'Alt-Escape',\n run: (view) => {\n // Focus container for tab navigation.\n view.dom.parentElement?.focus();\n return true;\n },\n },\n ]),\n ],\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { indentMore } from '@codemirror/commands';\nimport { getIndentUnit } from '@codemirror/language';\nimport { type ChangeSpec, EditorSelection, type Extension } from '@codemirror/state';\nimport { type Command, type EditorView, keymap } from '@codemirror/view';\n\nimport { getSelection, selectAll, selectDown, selectNone, selectUp } from './selection';\nimport { getRange, treeFacet } from './tree';\n\n//\n// Indentation comnmands.\n//\n\nexport const indentItemMore: Command = (view: EditorView) => {\n const pos = getSelection(view.state).from;\n const tree = view.state.facet(treeFacet);\n const current = tree.find(pos);\n if (current) {\n const previous = tree.prev(current);\n if (previous && current.level <= previous.level) {\n // TODO(burdon): Indent descendants?\n indentMore(view);\n }\n }\n\n return true;\n};\n\nexport const indentItemLess: Command = (view: EditorView) => {\n const pos = getSelection(view.state).from;\n const tree = view.state.facet(treeFacet);\n const current = tree.find(pos);\n if (current) {\n if (current.level > 0) {\n // Unindent current line and all descendants.\n // NOTE: The markdown extension doesn't provide an indentation service.\n const indentUnit = getIndentUnit(view.state);\n const changes: ChangeSpec[] = [];\n tree.traverse(current, (item) => {\n const line = view.state.doc.lineAt(item.lineRange.from);\n changes.push({ from: line.from, to: line.from + indentUnit });\n });\n\n if (changes.length > 0) {\n view.dispatch({ changes });\n }\n }\n }\n\n return true;\n};\n\n//\n// Moving commands.\n//\n\nexport const moveItemDown: Command = (view: EditorView) => {\n const pos = getSelection(view.state)?.from;\n const tree = view.state.facet(treeFacet);\n const current = tree.find(pos);\n if (current && current.nextSibling) {\n const next = current.nextSibling;\n const currentContent = view.state.doc.sliceString(...getRange(tree, current));\n const nextContent = view.state.doc.sliceString(...getRange(tree, next));\n const changes: ChangeSpec[] = [\n {\n from: current.lineRange.from,\n to: current.lineRange.from + currentContent.length,\n insert: nextContent,\n },\n {\n from: next.lineRange.from,\n to: next.lineRange.from + nextContent.length,\n insert: currentContent,\n },\n ];\n\n view.dispatch({\n changes,\n selection: EditorSelection.cursor(pos + nextContent.length + 1),\n scrollIntoView: true,\n });\n }\n\n return true;\n};\n\nexport const moveItemUp: Command = (view: EditorView) => {\n const pos = getSelection(view.state)?.from;\n const tree = view.state.facet(treeFacet);\n const current = tree.find(pos);\n if (current && current.prevSibling) {\n const prev = current.prevSibling;\n const currentContent = view.state.doc.sliceString(...getRange(tree, current));\n const prevContent = view.state.doc.sliceString(...getRange(tree, prev));\n const changes: ChangeSpec[] = [\n {\n from: prev.lineRange.from,\n to: prev.lineRange.from + prevContent.length,\n insert: currentContent,\n },\n {\n from: current.lineRange.from,\n to: current.lineRange.from + currentContent.length,\n insert: prevContent,\n },\n ];\n\n view.dispatch({\n changes,\n selection: EditorSelection.cursor(pos - prevContent.length - 1),\n scrollIntoView: true,\n });\n }\n\n return true;\n};\n\n//\n// Misc commands.\n//\n\nexport const deleteItem: Command = (view: EditorView) => {\n const tree = view.state.facet(treeFacet);\n const pos = getSelection(view.state).from;\n const current = tree.find(pos);\n if (current) {\n view.dispatch({\n selection: EditorSelection.cursor(current.lineRange.from),\n changes: [\n {\n from: current.lineRange.from,\n to: Math.min(current.lineRange.to + 1, view.state.doc.length),\n },\n ],\n });\n }\n\n return true;\n};\n\nexport const toggleTask: Command = (view: EditorView) => {\n const tree = view.state.facet(treeFacet);\n const pos = getSelection(view.state)?.from;\n const current = tree.find(pos);\n if (current) {\n const type = current.type === 'task' ? 'bullet' : 'task';\n const indent = ' '.repeat(getIndentUnit(view.state) * current.level);\n view.dispatch({\n changes: [\n {\n from: current.lineRange.from,\n to: current.contentRange.from,\n insert: indent + (type === 'task' ? '- [ ] ' : '- '),\n },\n ],\n });\n }\n\n return true;\n};\n\nexport const commands = (): Extension =>\n keymap.of([\n //\n // Indentation.\n //\n {\n key: 'Tab',\n preventDefault: true,\n run: indentItemMore,\n shift: indentItemLess,\n },\n\n //\n // Continuation.\n //\n {\n key: 'Enter',\n shift: (view) => {\n const pos = getSelection(view.state).from;\n const insert = '\\n '; // TODO(burdon): Fix parsing.\n view.dispatch({\n changes: [{ from: pos, to: pos, insert }],\n selection: EditorSelection.cursor(pos + insert.length),\n });\n return true;\n },\n },\n\n //\n // Navigation.\n //\n {\n key: 'ArrowDown',\n // Jump to next item (default moves to end of currentline).\n run: (view) => {\n const tree = view.state.facet(treeFacet);\n const item = tree.find(getSelection(view.state).from);\n if (\n item &&\n view.state.doc.lineAt(item.lineRange.to).number - view.state.doc.lineAt(item.lineRange.from).number === 0\n ) {\n const next = tree.next(item);\n if (next) {\n view.dispatch({ selection: EditorSelection.cursor(next.contentRange.from) });\n return true;\n }\n }\n\n return false;\n },\n },\n\n //\n // Line selection.\n // TODO(burdon): Shortcut to select current item?\n //\n {\n key: 'Mod-a',\n preventDefault: true,\n run: selectAll,\n },\n {\n key: 'Escape',\n preventDefault: true,\n run: selectNone,\n },\n {\n key: 'ArrowUp',\n shift: selectUp,\n },\n {\n key: 'ArrowDown',\n shift: selectDown,\n },\n\n //\n // Move.\n //\n {\n key: 'Alt-ArrowDown',\n preventDefault: true,\n run: moveItemDown,\n },\n {\n key: 'Alt-ArrowUp',\n preventDefault: true,\n run: moveItemUp,\n },\n //\n // Delete.\n //\n {\n key: 'Mod-Backspace',\n preventDefault: true,\n run: deleteItem,\n },\n //\n // Misc.\n //\n {\n key: 'Alt-t',\n preventDefault: true,\n run: toggleTask,\n },\n ]);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Compartment, type EditorState, Facet, type SelectionRange } from '@codemirror/state';\nimport { type Command, type EditorView } from '@codemirror/view';\n\nimport { treeFacet } from './tree';\n\nexport type Selection = number[];\n\nexport const getSelection = (state: EditorState): SelectionRange => state.selection.main;\n\nexport const selectionEquals = (a: number[], b: number[]) => a.length === b.length && a.every((i) => b.includes(i));\n\nexport const selectionFacet = Facet.define<Selection, Selection>({\n combine: (values) => values[0],\n});\n\nexport const selectionCompartment = new Compartment();\n\nexport const selectNone: Command = (view: EditorView) => {\n view.dispatch({\n effects: selectionCompartment.reconfigure(selectionFacet.of([])),\n });\n\n return true;\n};\n\nexport const selectAll: Command = (view: EditorView) => {\n const tree = view.state.facet(treeFacet);\n const selection = view.state.facet(selectionFacet);\n const items: Selection = [];\n tree.traverse((item) => items.push(item.index));\n view.dispatch({\n effects: selectionCompartment.reconfigure(selectionFacet.of(selectionEquals(selection, items) ? [] : items)),\n });\n\n return true;\n};\n\n// TODO(burdon): Implement.\nexport const selectUp: Command = (view: EditorView) => {\n return true;\n};\n\n// TODO(burdon): Implement.\nexport const selectDown: Command = (view: EditorView) => {\n return true;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type EditorState, type Extension, StateField, type Transaction } from '@codemirror/state';\nimport { Facet } from '@codemirror/state';\nimport { type SyntaxNode } from '@lezer/common';\n\nimport { invariant } from '@dxos/invariant';\n\nimport { type Range } from '../../types';\n\n/**\n * Represents a single item in the tree.\n */\nexport interface Item {\n type: 'root' | 'bullet' | 'task' | 'unknown';\n index: number;\n level: number;\n node: SyntaxNode;\n parent?: Item;\n nextSibling?: Item;\n prevSibling?: Item;\n children: Item[];\n /**\n * Actual range.\n * Starts at the start of the line containing the item and ends at the end of the line before the\n * first child or next sibling.\n */\n lineRange: Range;\n /**\n * Range of the editable content.\n * This doesn't include the list or task marker or indentation.\n */\n contentRange: Range;\n}\n\nexport const itemToJSON = ({ type, index, level, lineRange, contentRange, children }: Item): any => {\n return { type, index, level, lineRange, contentRange, children: children.map(itemToJSON) };\n};\n\n/**\n * Tree assumes the entire document is a single contiguous well-formed hierarchy of markdown LiteItem nodes.\n */\nexport class Tree implements Item {\n type: Item['type'] = 'root';\n index = -1;\n level = -1;\n node: Item['node'];\n lineRange: Item['lineRange'];\n contentRange: Item['contentRange'];\n children: Item['children'] = [];\n\n constructor(node: SyntaxNode) {\n this.node = node;\n this.lineRange = { from: node.from, to: node.to };\n this.contentRange = this.lineRange;\n }\n\n toJSON() {\n return itemToJSON(this);\n }\n\n get root(): Item {\n return this;\n }\n\n traverse<T = any>(cb: (item: Item, level: number) => T | void): T | undefined;\n traverse<T = any>(item: Item, cb: (item: Item, level: number) => T | void): T | undefined;\n traverse<T = any>(\n itemOrCb: Item | ((item: Item, level: number) => T | undefined | void),\n maybeCb?: (item: Item, level: number) => T | undefined | void,\n ): T | undefined {\n if (typeof itemOrCb === 'function') {\n return traverse<T>(this, itemOrCb);\n } else {\n return traverse<T>(itemOrCb, maybeCb!);\n }\n }\n\n /**\n * Return the closest item.\n */\n find(pos: number): Item | undefined {\n return this.traverse<Item>((item) => (item.lineRange.from <= pos && item.lineRange.to >= pos ? item : undefined));\n }\n\n /**\n * Return the first child, next sibling, or parent's next sibling.\n */\n next(item: Item, enter = true): Item | undefined {\n if (enter && item.children.length > 0) {\n return item.children[0];\n }\n\n if (item.nextSibling) {\n return item.nextSibling;\n }\n\n if (item.parent) {\n return this.next(item.parent, false);\n }\n\n return undefined;\n }\n\n /**\n * Return the previous sibling, or parent.\n */\n prev(item: Item): Item | undefined {\n if (item.prevSibling) {\n return this.lastDescendant(item.prevSibling);\n }\n\n return item.parent?.type === 'root' ? undefined : item.parent;\n }\n\n /**\n * Return the last descendant of the item, or the item itself if it has no children.\n */\n lastDescendant(item: Item): Item {\n return item.children.length > 0 ? this.lastDescendant(item.children.at(-1)!) : item;\n }\n}\n\nexport const getRange = (tree: Tree, item: Item): [number, number] => {\n const lastDescendant = tree.lastDescendant(item);\n return [item.lineRange.from, lastDescendant.lineRange.to];\n};\n\n/**\n * Traverse the tree, calling the callback for each item.\n * If the callback returns a value, the traversal is stopped and the value is returned.\n */\nexport const traverse = <T = any>(root: Item, cb: (item: Item, level: number) => T | void): T | undefined => {\n const t = (item: Item, level: number): T | undefined => {\n if (item.type !== 'root') {\n const value = cb(item, level);\n if (value != null) {\n return value;\n }\n }\n\n for (const child of item.children) {\n const value = t(child, level + 1);\n if (value != null) {\n return value;\n }\n }\n\n return undefined;\n };\n\n return t(root, root.type === 'root' ? -1 : 0);\n};\n\nexport const getListItemContent = (state: EditorState, item: Item): string => {\n return state.doc.sliceString(item.contentRange.from, item.contentRange.to);\n};\n\nexport const listItemToString = (item: Item, level = 0) => {\n const indent = ' '.repeat(level);\n const data = {\n i: item.index,\n n: item.nextSibling?.index ?? '∅',\n p: item.prevSibling?.index ?? '∅',\n level: item.level,\n node: format([item.node.from, item.node.to]),\n line: format([item.lineRange.from, item.lineRange.to]),\n content: format([item.contentRange.from, item.contentRange.to]),\n };\n\n return `${indent}${item.type[0].toUpperCase()}(${Object.entries(data)\n .map(([k, v]) => `${k}=${v}`)\n .join(', ')})`;\n};\n\nconst format = (value: any) =>\n JSON.stringify(value, (key: string, value: any) => {\n if (typeof value === 'number') {\n return value.toString().padStart(3, ' ');\n }\n return value;\n }).replaceAll('\"', '');\n\nexport const treeFacet = Facet.define<Tree, Tree>({\n combine: (values) => values[0],\n});\n\nexport type TreeOptions = {};\n\n/**\n * Creates a shadow tree of `ListItem` nodes whenever the document changes.\n * This adds overhead relative to the markdown AST, but allows for efficient traversal of the list items.\n * NOTE: Requires markdown parser to be enabled.\n */\nexport const outlinerTree = (_options: TreeOptions = {}): Extension => {\n const buildTree = (state: EditorState): Tree => {\n let tree: Tree | undefined;\n let parent: Item | undefined;\n let current: Item | undefined;\n let prev: Item | undefined;\n let level = -1;\n let index = -1;\n\n // Array to track previous siblings at each level.\n const prevSiblings: (Item | undefined)[] = [];\n\n syntaxTree(state).iterate({\n enter: (node) => {\n switch (node.name) {\n case 'Document': {\n tree = new Tree(node.node);\n current = tree;\n break;\n }\n case 'BulletList': {\n invariant(current);\n parent = current;\n if (current) {\n current.lineRange.to = current.node.from;\n }\n prevSiblings[++level] = undefined;\n break;\n }\n case 'ListItem': {\n invariant(parent);\n\n // Include all content up to the next sibling or the end of the document.\n const nextSibling = node.node.nextSibling ?? node.node.parent?.nextSibling;\n const docRange: Range = {\n from: state.doc.lineAt(node.from).from,\n to: nextSibling ? nextSibling.from - 1 : state.doc.length,\n };\n\n current = {\n type: 'unknown',\n index: ++index,\n level,\n node: node.node,\n lineRange: docRange,\n contentRange: { ...docRange },\n parent,\n prevSibling: prevSiblings[level],\n children: [],\n };\n\n // Update sibling refs.\n if (current.prevSibling) {\n current.prevSibling.nextSibling = current;\n }\n\n // Update previous siblings array at current level.\n prevSiblings[level] = current;\n\n // Update previous item (not sibling).\n if (prev) {\n prev.lineRange.to = prev.contentRange.to = current.lineRange.from - 1;\n }\n prev = current;\n\n // Update parent.\n parent.children.push(current);\n if (parent.lineRange.to === parent.node.from) {\n parent.lineRange.to = parent.contentRange.to = current.lineRange.from - 1;\n }\n\n break;\n }\n case 'ListMark': {\n invariant(current);\n current.type = 'bullet';\n current.contentRange.from = node.from + '- '.length;\n break;\n }\n case 'Task': {\n invariant(current);\n current.type = 'task';\n break;\n }\n case 'TaskMarker': {\n invariant(current);\n current.contentRange.from = node.from + '[ ] '.length;\n break;\n }\n }\n },\n leave: (node) => {\n if (node.name === 'BulletList') {\n invariant(parent);\n prevSiblings[level--] = undefined;\n parent = parent.parent;\n }\n },\n });\n\n invariant(tree);\n return tree;\n };\n\n return [\n StateField.define<Tree | undefined>({\n create: (state) => {\n return buildTree(state);\n },\n update: (value: Tree | undefined, tr: Transaction) => {\n if (!tr.docChanged) {\n return value;\n }\n\n return buildTree(tr.state);\n },\n provide: (field) => treeFacet.from(field),\n }),\n ];\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorState, type Extension, Prec, type Range } from '@codemirror/state';\nimport { Decoration, type DecorationSet, EditorView, ViewPlugin, type ViewUpdate } from '@codemirror/view';\n\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { floatingMenu } from '../command';\nimport { decorateMarkdown } from '../markdown';\n\nimport { commands } from './commands';\nimport { editor } from './editor';\nimport { selectionCompartment, selectionEquals, selectionFacet } from './selection';\nimport { outlinerTree, treeFacet } from './tree';\n\n// ISSUES:\n// TODO(burdon): Remove requirement for continuous lines to be indented (so that user's can't accidentally delete them and break the layout).\n// TODO(burdon): Prevent unterminated fenced code from breaking subsequent items (\"firewall\" markdown parsing within each item?)\n// TODO(burdon): What if a different editor \"breaks\" the layout?\n// TODO(burdon): Check Automerge recognizes text that is moved/indented (e.g., concurrent editing item while being moved).\n\n// NEXT:\n// TODO(burdon): Update selection when adding/removing items.\n// TODO(burdon): When selecting across items, select entire items (don't show selection that spans the gaps).\n// TODO(burdon): Handle backspace at start of line (or empty line).\n// TODO(burdon): Convert to task object and insert link (menu button).\n// TODO(burdon): Smart Cut-and-paste.\n// TODO(burdon): DND.\n\nexport type OutlinerProps = {};\n\n/**\n * Outliner extension.\n * - Stores outline as a standard markdown document with task and list markers.\n * - Supports continuation lines and rich formatting (with Shift+Enter).\n * - Constrains editor to outline structure.\n * - Supports smart cut-and-paste.\n */\nexport const outliner = (_options: OutlinerProps = {}): Extension => [\n // Commands.\n Prec.highest(commands()),\n\n // Selection.\n selectionCompartment.of(selectionFacet.of([])),\n\n // State.\n outlinerTree(),\n\n // Filter and possibly modify changes.\n editor(),\n\n // Floating menu.\n floatingMenu(),\n\n // Line decorations.\n decorations(),\n\n // Default markdown decorations.\n decorateMarkdown({ listPaddingLeft: 8 }),\n\n // Researve space for menu.\n EditorView.contentAttributes.of({ class: 'is-full !mr-[3rem]' }),\n];\n\n/**\n * Line decorations (for border and selection).\n */\nconst decorations = () => [\n ViewPlugin.fromClass(\n class {\n decorations: DecorationSet = Decoration.none;\n constructor(view: EditorView) {\n this.updateDecorations(view.state, view);\n }\n\n update(update: ViewUpdate) {\n const selectionChanged = !selectionEquals(\n update.state.facet(selectionFacet),\n update.startState.facet(selectionFacet),\n );\n\n if (\n update.focusChanged ||\n update.docChanged ||\n update.viewportChanged ||\n update.selectionSet ||\n selectionChanged\n ) {\n this.updateDecorations(update.state, update.view);\n }\n }\n\n private updateDecorations(state: EditorState, { viewport: { from, to }, hasFocus }: EditorView) {\n const selection = state.facet(selectionFacet);\n const tree = state.facet(treeFacet);\n const current = tree.find(state.selection.ranges[state.selection.mainIndex]?.from);\n const doc = state.doc;\n\n const decorations: Range<Decoration>[] = [];\n for (let lineNum = doc.lineAt(from).number; lineNum <= doc.lineAt(to).number; lineNum++) {\n const line = doc.line(lineNum);\n const item = tree.find(line.from);\n if (item) {\n const lineFrom = doc.lineAt(item.contentRange.from);\n const lineTo = doc.lineAt(item.contentRange.to);\n const isSelected = selection.includes(item.index) || item === current;\n decorations.push(\n Decoration.line({\n class: mx(\n 'cm-list-item',\n lineFrom.number === line.number && 'cm-list-item-start',\n lineTo.number === line.number && 'cm-list-item-end',\n isSelected && (hasFocus ? 'cm-list-item-focused' : 'cm-list-item-selected'),\n ),\n }).range(line.from, line.from),\n );\n }\n }\n\n this.decorations = Decoration.set(decorations);\n }\n },\n {\n decorations: (v) => v.decorations,\n },\n ),\n\n // Theme.\n EditorView.theme(\n Object.assign({\n '.cm-list-item': {\n borderLeftWidth: '1px',\n borderRightWidth: '1px',\n paddingLeft: '32px',\n borderColor: 'transparent',\n },\n '.cm-list-item.cm-codeblock-start': {\n borderRadius: '0',\n },\n\n '.cm-list-item-start': {\n borderTopWidth: '1px',\n borderTopLeftRadius: '4px',\n borderTopRightRadius: '4px',\n paddingTop: '4px',\n marginTop: '2px',\n },\n\n '.cm-list-item-end': {\n borderBottomWidth: '1px',\n borderBottomLeftRadius: '4px',\n borderBottomRightRadius: '4px',\n paddingBottom: '4px',\n marginBottom: '2px',\n },\n\n '.cm-list-item-focused': {\n borderColor: 'var(--dx-accentFocusIndicator)',\n },\n '&:focus-within .cm-list-item-selected': {\n borderColor: 'var(--dx-separator)',\n },\n }),\n ),\n];\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ChangeSpec, EditorSelection, EditorState } from '@codemirror/state';\nimport { type EditorView, ViewPlugin } from '@codemirror/view';\n\nimport { log } from '@dxos/log';\n\nimport { getSelection } from './selection';\nimport { treeFacet } from './tree';\n\nconst LIST_ITEM_REGEX = /^\\s*- (\\[ \\]|\\[x\\])? /;\n\n/**\n * Initialize empty document.\n */\nconst initialize = () => {\n return ViewPlugin.fromClass(\n class {\n constructor(view: EditorView) {\n const first = view.state.doc.lineAt(0);\n const text = view.state.sliceDoc(first.from, first.to);\n const match = text.match(LIST_ITEM_REGEX);\n if (!match) {\n setTimeout(() => {\n const insert = '- [ ] ';\n view.dispatch({\n changes: [{ from: 0, to: 0, insert }],\n selection: EditorSelection.cursor(insert.length),\n });\n });\n }\n }\n },\n );\n};\n\n/**\n * Handle cursor movement, selection, and editing.\n */\nexport const editor = () => [\n initialize(),\n\n EditorState.transactionFilter.of((tr) => {\n const tree = tr.state.facet(treeFacet);\n\n //\n // Check cursor is in a valid position.\n //\n if (!tr.docChanged) {\n const current = getSelection(tr.state).from;\n if (current != null) {\n const currentItem = tree.find(current);\n if (!currentItem) {\n return [];\n }\n\n // Check if outside of editable range.\n if (current < currentItem.contentRange.from || current > currentItem.contentRange.to) {\n const prev = getSelection(tr.startState).from;\n const prevItem = prev != null ? tree.find(prev) : undefined;\n if (!prevItem) {\n return [{ selection: EditorSelection.cursor(currentItem.contentRange.from) }];\n } else {\n if (currentItem.index < prevItem.index) {\n // Moving line up.\n return [{ selection: EditorSelection.cursor(currentItem.contentRange.to) }];\n } else if (currentItem.index > prevItem.index) {\n // Moving line down.\n return [{ selection: EditorSelection.cursor(currentItem.contentRange.from) }];\n } else {\n // Moving left.\n if (current < prev) {\n if (currentItem.index === 0) {\n // At start of the list.\n return [];\n } else {\n // Go to previous line.\n return [{ selection: EditorSelection.cursor(currentItem.lineRange.from - 1) }];\n }\n } else {\n // Go to end of line.\n return [{ selection: EditorSelection.cursor(currentItem.contentRange.to) }];\n }\n }\n }\n }\n }\n\n return tr;\n }\n\n //\n // Validate changes that don't break the tree.\n //\n let cancel = false;\n const changes: ChangeSpec[] = [];\n tr.changes.iterChanges((fromA, toA, fromB, toB, insert) => {\n const line = tr.startState.doc.lineAt(fromA);\n const match = line.text.match(LIST_ITEM_REGEX);\n if (match) {\n // Check cursor was in a valid position.\n const startTree = tr.startState.facet(treeFacet);\n const startItem = startTree.find(tr.startState.selection.main.from);\n\n // Check if entire line was deleted (which is ok).\n const deleteLine = fromA === startItem?.lineRange.from && toA === startItem?.lineRange.to + 1;\n if (deleteLine) {\n return;\n }\n\n // if (!deleteLine && (!startItem || fromA < startItem.contentRange.from || toA > startItem.contentRange.to)) {\n // cancel = true;\n // return;\n // }\n\n // Check valid item.\n const currentItem = tree.find(tr.state.selection.main.from);\n if (!currentItem?.contentRange) {\n cancel = true;\n return;\n }\n\n // Detect and cancel replacement of task marker with continuation indent.\n // Task markers are atomic so will be deleted when backspace is pressed.\n // The markdown extension inserts 2 or 6 spaces when deleting a list or task marker in order to create a continuation.\n // - [ ] <- backspace here deletes the task marker.\n // - [ ] <- backspace here inserts 6 spaces (creates continuation).\n // - [ ] <- backspace here deletes the task marker.\n const start = line.from + (match?.[0]?.length ?? 0);\n const replace = start === toA && toA - fromA === insert.length;\n if (replace) {\n changes.push({ from: line.from - 1, to: toA });\n return;\n }\n\n // Detect deletion of marker.\n if (fromB === toB) {\n if (toA === line.to) {\n const line = tr.state.doc.lineAt(fromA);\n if (line.text.match(/^\\s*$/)) {\n if (line.from === 0) {\n // Don't delete first line.\n cancel = true;\n return;\n } else {\n // Delete indent and marker.\n changes.push({ from: line.from - 1, to: toA });\n return;\n }\n }\n }\n return;\n }\n\n // Prevent newline if line is empty.\n const item = tree.find(fromA);\n if (item?.contentRange.from === item?.contentRange.to && fromA === toA) {\n cancel = true;\n return;\n }\n\n log('change', {\n item,\n line: { from: line.from, to: line.to },\n a: [fromA, toA],\n b: [fromB, toB],\n insert: { text: insert.toString(), length: insert.length },\n });\n }\n });\n\n if (changes.length > 0) {\n log('modified,', { changes });\n return [{ changes }];\n } else if (cancel) {\n log('cancel');\n return [];\n }\n\n return tr;\n }),\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type EditorState, type Extension, RangeSetBuilder, StateField } from '@codemirror/state';\nimport { Decoration, type DecorationSet, EditorView, WidgetType } from '@codemirror/view';\nimport { type SyntaxNode } from '@lezer/common';\n\nexport type PreviewLinkRef = {\n /** @deprecated */\n // TODO(burdon): Remove?\n suggest?: boolean;\n block?: boolean;\n label: string;\n ref: string;\n};\n\nexport type PreviewLinkTarget = {\n label: string;\n text?: string;\n object?: any;\n};\n\nexport type PreviewOptions = {\n addBlockContainer?: (link: PreviewLinkRef, el: HTMLElement) => void;\n removeBlockContainer?: (link: PreviewLinkRef) => void;\n};\n\n/**\n * Create preview decorations.\n */\nexport const preview = (options: PreviewOptions = {}): Extension => {\n return [\n // NOTE: Atomic block decorations must be created from a state field, now a widget, otherwise it results in the following error:\n // \"Block decorations may not be specified via plugins\".\n StateField.define<DecorationSet>({\n create: (state) => buildDecorations(state, options),\n update: (decorations, tr) => {\n if (tr.docChanged) {\n return buildDecorations(tr.state, options);\n }\n\n return decorations.map(tr.changes);\n },\n provide: (field) => [\n EditorView.decorations.from(field),\n EditorView.atomicRanges.of((view) => view.state.field(field)),\n ],\n }),\n ];\n};\n\n/**\n * Echo references are represented as markdown reference links.\n * https://www.markdownguide.org/basic-syntax/#reference-style-links\n */\nconst buildDecorations = (state: EditorState, options: PreviewOptions): DecorationSet => {\n const builder = new RangeSetBuilder<Decoration>();\n\n syntaxTree(state).iterate({\n enter: (node) => {\n switch (node.name) {\n //\n // Inline widget.\n // [Label](dxn:echo:123)\n //\n case 'Link': {\n const link = getLinkRef(state, node.node);\n if (link) {\n builder.add(\n node.from,\n node.to,\n Decoration.replace({\n widget: new PreviewInlineWidget(options, link),\n side: 1,\n }),\n );\n }\n return false;\n }\n\n //\n // Block widget (transclusion).\n // \n //\n case 'Image': {\n if (options.addBlockContainer && options.removeBlockContainer) {\n const link = getLinkRef(state, node.node);\n if (link) {\n builder.add(\n node.from,\n node.to,\n Decoration.replace({\n block: true,\n widget: new PreviewBlockWidget(options, link),\n }),\n );\n }\n }\n return false;\n }\n }\n },\n });\n\n return builder.finish();\n};\n\n/**\n * Link references.\n * [Label](dxn:echo:123) Inline reference\n *  Block reference\n */\nexport const getLinkRef = (state: EditorState, node: SyntaxNode): PreviewLinkRef | undefined => {\n const mark = node.getChildren('LinkMark');\n const urlNode = node.getChild('URL');\n if (mark && urlNode) {\n const url = state.sliceDoc(urlNode.from, urlNode.to);\n if (url.startsWith('dxn:')) {\n const label = state.sliceDoc(mark[0].to, mark[1].from);\n return {\n block: state.sliceDoc(mark[0].from, mark[0].from + 1) === '!',\n label,\n ref: url,\n };\n }\n }\n};\n\n/**\n * Inline widget.\n * [Label](dxn:echo:123)\n */\nclass PreviewInlineWidget extends WidgetType {\n constructor(\n readonly _options: PreviewOptions,\n readonly _link: PreviewLinkRef,\n ) {\n super();\n }\n\n // override ignoreEvent() {\n // return false;\n // }\n\n override eq(other: this): boolean {\n return this._link.ref === other._link.ref && this._link.label === other._link.label;\n }\n\n override toDOM(_view: EditorView): HTMLElement {\n const root = document.createElement('dx-anchor');\n root.classList.add('dx-tag--anchor');\n root.textContent = this._link.label;\n root.setAttribute('refId', this._link.ref);\n return root;\n }\n}\n\n/**\n * Block widget (e.g., for surfaces).\n * ![Label][dxn:echo:123]\n */\nclass PreviewBlockWidget extends WidgetType {\n constructor(\n readonly _options: PreviewOptions,\n readonly _link: PreviewLinkRef,\n ) {\n super();\n }\n\n // override ignoreEvent() {\n // return true;\n // }\n\n override eq(other: this): boolean {\n return this._link.ref === other._link.ref;\n }\n\n override toDOM(_view: EditorView): HTMLDivElement {\n const root = document.createElement('div');\n root.classList.add('cm-preview-block', 'density-coarse');\n this._options.addBlockContainer?.(this._link, root);\n return root;\n }\n\n override destroy() {\n this._options.removeBlockContainer?.(this._link);\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { xmlLanguage } from '@codemirror/lang-xml';\nimport { type Extension } from '@codemirror/state';\nimport { type ParseWrapper, parseMixed } from '@lezer/common';\n\nimport { createMarkdownExtensions } from '../markdown';\n\nimport { type XmlWidgetRegistry } from './xml-tags';\n\nexport type ExtendedMarkdownOptions = {\n registry?: XmlWidgetRegistry;\n};\n\n/**\n * Extended markdown parser with mixed parser for custom rendering of XML tags.\n */\nexport const extendedMarkdown = ({ registry }: ExtendedMarkdownOptions = {}): Extension => {\n return [\n createMarkdownExtensions({\n extensions: [\n {\n wrap: mixedParser(registry),\n parseBlock: [\n // Disable SetextHeading since it causes flickering when parsing/rendering tasks in chunks.\n {\n name: 'SetextHeading',\n parse: () => false,\n },\n ],\n },\n ],\n }),\n ];\n};\n\n/**\n * Configure mixed parser to recognize custom tags.\n */\nconst mixedParser = (registry?: XmlWidgetRegistry): ParseWrapper => {\n const customTags = Object.keys(registry ?? {});\n const tagPattern = new RegExp(`<(${customTags.join('|')})`);\n\n return parseMixed((node, input) => {\n switch (node.name) {\n // Ignore XML inside of fenced and inline code.\n case 'FencedCode':\n case 'InlineCode': {\n return null;\n }\n\n // Parse multi-line HTML blocks.\n // case 'XMLBlock':\n case 'HTMLBlock': {\n return {\n parser: xmlLanguage.parser,\n };\n }\n\n // Parse paragraphs that contain custom XML tags.\n // TODO(burdon): Entire paragraph should be parsed as XML.\n case 'Paragraph': {\n const content = input.read(node.from, node.to);\n if (tagPattern.test(content)) {\n return {\n parser: xmlLanguage.parser,\n };\n }\n\n return null;\n }\n }\n\n return null;\n });\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Extension, StateEffect, StateField } from '@codemirror/state';\nimport { Decoration, type DecorationSet, EditorView, ViewPlugin, type ViewUpdate, WidgetType } from '@codemirror/view';\n\nimport { isNotFalsy } from '@dxos/util';\n\nimport { Domino } from '../../util';\n\nconst BLINK_RATE = 2_000;\n\nexport type StreamerOptions = {\n cursor?: boolean;\n // When true, uses defaults. When object, allows configuring removal delay.\n fadeIn?: boolean | { removalDelay?: number };\n};\n\n/**\n * Extension that adds a blinking cursor widget at the end of the document.\n */\nexport const streamer = (options: StreamerOptions = {}): Extension => {\n return [\n options.cursor && cursor(),\n options.fadeIn && fadeIn(typeof options.fadeIn === 'object' ? options.fadeIn : {}),\n ].filter(isNotFalsy);\n};\n\n/**\n * State field to manage the cursor widget decoration.\n */\nconst cursor = (): Extension => {\n const hideCursor = StateEffect.define();\n\n // State field to track if cursor should be shown.\n const showCursor = StateField.define<boolean>({\n create: () => true,\n update: (value, tr) => {\n for (const effect of tr.effects) {\n if (effect.is(hideCursor)) {\n return false;\n }\n }\n if (tr.docChanged) {\n return true;\n }\n\n return value;\n },\n });\n\n // View plugin to manage timer and dispatch effects.\n const timerPlugin = ViewPlugin.fromClass(\n class {\n timer: any;\n\n constructor(private view: EditorView) {}\n\n update(update: ViewUpdate) {\n if (update.docChanged) {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.view.dispatch({\n effects: hideCursor.of(null),\n });\n }, BLINK_RATE);\n }\n }\n\n destroy() {\n clearTimeout(this.timer);\n }\n },\n );\n\n // Decoration field that uses the showCursor state.\n const cursorDecoration = StateField.define<DecorationSet>({\n create: () => Decoration.none,\n update: (_decorations, tr) => {\n const show = tr.state.field(showCursor);\n if (!show) {\n return Decoration.none;\n }\n\n // Always place cursor at the end of the document.\n const endPos = tr.state.doc.length;\n return Decoration.set([\n Decoration.widget({\n widget: new CursorWidget(),\n side: 1, // Place after the position.\n }).range(endPos),\n ]);\n },\n provide: (f) => EditorView.decorations.from(f),\n });\n\n return [showCursor, timerPlugin, cursorDecoration];\n};\n\n/**\n * Widget class for the cursor at the end of the document.\n * Half\n */\nclass CursorWidget extends WidgetType {\n toDOM() {\n return Domino.of('span')\n .style({ opacity: '0.8' })\n .child(Domino.of('span').text('\\u258F').style({ animation: 'blink 2s infinite' }))\n .build();\n }\n}\n\n/**\n * State field to detect and decorate appended text with a fade-in effect.\n * Also schedules removal of the last appended decoration after a delay.\n */\nconst fadeIn = (options: { removalDelay?: number } = {}): Extension => {\n const FADE_IN_DURATION = 1_000; // ms.\n const DEFAULT_REMOVAL_DELAY = 5_000; // ms.\n const removalDelay = options.removalDelay ?? DEFAULT_REMOVAL_DELAY;\n\n // Effect to remove a specific decoration by range.\n const removeDecoration = StateEffect.define<{ from: number; to: number }>();\n\n // Decoration field that adds fade-in marks for appended content and responds to removal effects.\n const fadeField = StateField.define<DecorationSet>({\n create: () => Decoration.none,\n update: (decorations, tr) => {\n let next = decorations;\n\n // Apply removals first, if any.\n for (const effect of tr.effects) {\n if (effect.is(removeDecoration)) {\n const target = effect.value;\n next = next.update({\n filter: (from, to) => !(from === target.from && to === target.to),\n });\n }\n }\n\n if (!tr.docChanged) {\n return next;\n }\n\n // Reset decorations if the entire content was replaced.\n let isReset = tr.state.doc.length === 0;\n if (!isReset) {\n tr.changes.iterChanges((fromA, toA) => {\n if (fromA === 0 && toA === tr.startState.doc.length) {\n isReset = true;\n }\n });\n }\n if (isReset) {\n return Decoration.none;\n }\n\n // Add fade-in decorations for appended content at the end only.\n const add: any[] = [];\n tr.changes.iterChanges((fromA, toA, fromB, toB, inserted) => {\n // Don't fade in initial content.\n if (fromB === 0 && toB === inserted.length) {\n return;\n }\n // At-the-end append.\n if (toA === tr.startState.doc.length && inserted.length > 0) {\n add.push(Decoration.mark({ class: 'cm-fade-in' }).range(fromB, toB));\n }\n });\n\n return next.update({ add });\n },\n provide: (f) => EditorView.decorations.from(f),\n });\n\n // View plugin that tracks appended ranges and schedules their removal.\n const timerPlugin = ViewPlugin.fromClass(\n class {\n // Map a simple key \"from-to\" to timer id.\n _timers = new Map<string, any>();\n\n constructor(private view: EditorView) {}\n\n update(update: ViewUpdate) {\n if (!update.docChanged) {\n return;\n }\n\n update.changes.iterChanges((fromA, toA, fromB, toB, inserted) => {\n // Only consider appends at the end.\n if (toA !== update.startState.doc.length || inserted.length === 0) {\n return;\n }\n\n const key = `${fromB}-${toB}`;\n // Clear any prior timer for this exact range.\n if (this._timers.has(key)) {\n clearTimeout(this._timers.get(key));\n }\n\n const totalDelay = FADE_IN_DURATION + removalDelay;\n const id = setTimeout(() => {\n this.view.dispatch({ effects: removeDecoration.of({ from: fromB, to: toB }) });\n this._timers.delete(key);\n }, totalDelay);\n\n this._timers.set(key, id);\n });\n }\n\n destroy() {\n for (const id of this._timers.values()) {\n clearTimeout(id);\n }\n this._timers.clear();\n }\n },\n );\n\n return [\n fadeField,\n timerPlugin,\n EditorView.theme({\n '.cm-line > span': {\n opacity: '0.8',\n },\n '.cm-fade-in': {\n animation: 'fade-in 3s ease-out forwards',\n },\n '@keyframes fade-in': {\n '0%': {\n opacity: '0',\n },\n '80%': {\n opacity: '1',\n },\n '100%': {\n opacity: '0.8',\n },\n },\n }),\n ];\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type EditorState, type Extension, RangeSetBuilder, StateEffect, StateField } from '@codemirror/state';\nimport { Decoration, type DecorationSet, EditorView, WidgetType } from '@codemirror/view';\nimport { type ComponentType, type FC } from 'react';\n\nimport { invariant } from '@dxos/invariant';\nimport { log } from '@dxos/log';\n\nimport { decorationSetToArray } from '../../util';\n\nimport { nodeToJson } from './xml-util';\n\nexport type StateDispatch<T> = T | ((state: T) => T);\n\n/**\n * Manages widget state.\n */\nexport interface XmlWidgetStateManager {\n updateWidget<T>(id: string, props: StateDispatch<T>): void;\n}\n\nexport type XmlEventHandler<TEvent = any> = (event: TEvent) => void;\n\n/**\n * Widget component.\n */\nexport type XmlWidgetProps<TContext = any, TProps = any> = TProps & {\n _tag: string;\n context: TContext;\n onEvent?: XmlEventHandler;\n};\n\n/**\n * Factory for creating widgets.\n */\nexport type XmlWidgetFactory = (props: XmlWidgetProps, onEvent?: XmlEventHandler) => WidgetType | null;\n\n/**\n * Widget registry definition.\n */\nexport type XmlWidgetDef = {\n block?: boolean;\n /** Native widget. */\n factory?: XmlWidgetFactory;\n /** React widget. */\n Component?: FC<XmlWidgetProps>;\n};\n\nexport type XmlWidgetRegistry = Record<string, XmlWidgetDef>;\n\n/**\n * Update context.\n */\nexport const xmlTagContextEffect = StateEffect.define<any>();\n\n/**\n * Update widget.\n */\nexport const xmlTagUpdateEffect = StateEffect.define<{ id: string; value: any }>();\n\n/**\n * Reset all state.\n */\nexport const xmlTagResetEffect = StateEffect.define();\n\ntype WidgetDecorationSet = {\n from: number;\n decorations: DecorationSet;\n};\n\ntype XmlWidgetStateMap = Record<string, any>;\n\nexport type XmlWidgetState = {\n id: string;\n props: any;\n root: HTMLElement;\n Component: ComponentType<any>;\n};\n\nexport interface XmlWidgetNotifier {\n mounted(widget: XmlWidgetState): void;\n unmounted(id: string): void;\n}\n\nexport type XmlTagsOptions = {\n registry?: XmlWidgetRegistry;\n /**\n * Called when a widget is mounted or unmounted.\n */\n setWidgets?: (widgets: XmlWidgetState[]) => void;\n};\n\n/**\n * Extension that adds thread-related functionality including XML tag decorations.\n */\nexport const xmlTags = (options: XmlTagsOptions = {}): Extension => {\n //\n // Context state.\n //\n const contextState = StateField.define<any>({\n create: () => undefined,\n update: (value, tr) => {\n for (const effect of tr.effects) {\n if (effect.is(xmlTagContextEffect)) {\n return effect.value;\n }\n }\n\n return value;\n },\n });\n\n //\n // Active widgets.\n //\n const widgets = new Map<string, XmlWidgetState>();\n const notifier = {\n mounted: (widget: XmlWidgetState) => {\n widgets.set(widget.id, widget);\n options.setWidgets?.([...widgets.values()]);\n },\n unmounted: (id: string) => {\n widgets.delete(id);\n options.setWidgets?.([...widgets.values()]);\n },\n } satisfies XmlWidgetNotifier;\n\n //\n // Widget decorations.\n //\n const decorationsState = StateField.define<WidgetDecorationSet>({\n create: (state) => {\n return buildDecorations(\n state,\n 0,\n state.doc.length,\n state.field(contextState),\n state.field(widgetState),\n options,\n notifier,\n );\n },\n update: ({ from, decorations }, tr) => {\n for (const effect of tr.effects) {\n if (effect.is(xmlTagResetEffect)) {\n return { from: 0, decorations: Decoration.none };\n }\n }\n\n if (tr.docChanged) {\n const { state } = tr;\n\n // Flag if the transaction has modified the head of the document.\n // (i.e., any changes that touch before the current `from` position).\n const reset = tr.changes.touchesRange(0, from);\n\n // Since append-only, rebuild decorations from after the last widget.\n const result = buildDecorations(\n state,\n reset ? 0 : from,\n state.doc.length,\n state.field(contextState),\n state.field(widgetState),\n options,\n notifier,\n );\n\n // Merge with existing decorations.\n return {\n from: result.from,\n decorations: decorations.update({ add: decorationSetToArray(result.decorations) }),\n };\n }\n\n // No document changes: avoid mapping decorations through an empty ChangeSet,\n // which can throw when the decoration set was created for a different base length.\n // Simply return the existing decorations unchanged.\n return { from, decorations };\n },\n provide: (field) => [\n EditorView.decorations.from(field, (v) => v.decorations),\n EditorView.atomicRanges.of((view) => view.state.field(field).decorations || Decoration.none),\n ],\n });\n\n //\n // Widget state management.\n //\n const widgetState = StateField.define<XmlWidgetStateMap>({\n create: () => ({}),\n update: (map, tr) => {\n for (const effect of tr.effects) {\n if (effect.is(xmlTagResetEffect)) {\n return {};\n }\n\n if (effect.is(xmlTagUpdateEffect)) {\n // Update accumulated widget props by id.\n const { id, value } = effect.value;\n const state = typeof value === 'function' ? value(map[id]) : value;\n\n // Find and render widget.\n const { decorations } = tr.state.field(decorationsState);\n for (const range of decorationSetToArray(decorations)) {\n const deco = range.value;\n const widget = deco?.spec?.widget;\n if (widget && widget instanceof PlaceholderWidget && widget.id === effect.value.id && widget.root) {\n const props = { ...widget.props, ...state };\n notifier.mounted({ id: widget.id, props, root: widget.root, Component: widget.Component });\n }\n }\n\n return { ...map, [id]: state };\n }\n }\n\n return map;\n },\n });\n\n return [contextState, decorationsState, widgetState];\n};\n\n/**\n * Creates widget decorations for XML tags in the document using the syntax tree.\n */\nconst buildDecorations = (\n state: EditorState,\n from: number,\n to: number,\n context: any,\n widgetState: XmlWidgetStateMap,\n options: XmlTagsOptions,\n notifier: XmlWidgetNotifier,\n): WidgetDecorationSet => {\n const builder = new RangeSetBuilder<Decoration>();\n const tree = syntaxTree(state);\n if (!tree || (tree.type.name === 'Program' && tree.length === 0)) {\n return { from, decorations: Decoration.none };\n }\n\n tree.iterate({\n from,\n to,\n enter: (node) => {\n switch (node.type.name) {\n // XML Element.\n case 'Element': {\n try {\n if (options.registry) {\n const props = nodeToJson(state, node.node);\n if (props) {\n const def = options.registry[props._tag];\n if (def) {\n const { block, factory, Component } = def;\n const state = props.id ? widgetState[props.id] : undefined;\n const args = { context, ...props, ...state };\n const widget: WidgetType | undefined = factory\n ? factory(args)\n : Component\n ? props.id && new PlaceholderWidget(props.id, Component, args, notifier)\n : undefined;\n\n if (widget) {\n from = node.node.to;\n builder.add(\n node.node.from,\n node.node.to,\n Decoration.replace({\n widget,\n block,\n atomic: true,\n inclusive: true,\n }),\n );\n }\n }\n }\n }\n } catch (err) {\n log.catch(err);\n }\n\n return false; // Don't descend into children.\n }\n }\n },\n });\n\n return { from, decorations: builder.finish() };\n};\n\n/**\n * Placeholder for React widgets.\n */\nclass PlaceholderWidget<TProps = {}> extends WidgetType {\n private _root: HTMLElement | null = null;\n\n constructor(\n public readonly id: string,\n public readonly Component: FC<TProps>,\n public readonly props: TProps,\n private readonly notifier: XmlWidgetNotifier,\n ) {\n super();\n invariant(id);\n }\n\n get root() {\n return this._root;\n }\n\n override eq(other: WidgetType): boolean {\n return other instanceof PlaceholderWidget && this.id === other.id;\n }\n\n override ignoreEvent() {\n return true;\n }\n\n override toDOM(_view: EditorView): HTMLElement {\n this._root = document.createElement('span');\n this.notifier.mounted({ id: this.id, props: this.props, root: this._root, Component: this.Component });\n return this._root;\n }\n\n override destroy(_dom: HTMLElement): void {\n this.notifier.unmounted(this.id);\n this._root = null;\n }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorState } from '@codemirror/state';\nimport { type SyntaxNode } from '@lezer/common';\n\nimport { invariant } from '@dxos/invariant';\n\nexport type Tag = Record<string, any> & {\n _tag: string;\n};\n\n/**\n * Parse XML Element.\n */\nexport const nodeToJson = (state: EditorState, node: SyntaxNode): Tag | undefined => {\n invariant(node.type.name === 'Element', 'Node is not an Element');\n\n // Find the opening tag.\n const openTag = node.node.getChild('OpenTag') || node.node.getChild('SelfClosingTag');\n if (openTag) {\n // Extract tag name.\n const tagName = openTag.getChild('TagName');\n if (!tagName) {\n return;\n }\n\n const tag: Tag = {\n _tag: state.doc.sliceString(tagName.from, tagName.to),\n };\n\n // Extract attributes.\n let attributeNode = openTag.getChild('Attribute');\n while (attributeNode) {\n const attrName = attributeNode.getChild('AttributeName');\n const attrValue = attributeNode.getChild('AttributeValue');\n if (attrName) {\n const attr = state.doc.sliceString(attrName.from, attrName.to);\n\n // Default for attributes without values.\n let value: string | boolean = true;\n\n if (attrValue) {\n const rawValue = state.doc.sliceString(attrValue.from, attrValue.to);\n // Remove quotes if present.\n if (\n (rawValue.startsWith('\"') && rawValue.endsWith('\"')) ||\n (rawValue.startsWith(\"'\") && rawValue.endsWith(\"'\"))\n ) {\n value = rawValue.slice(1, -1);\n } else {\n value = rawValue;\n }\n }\n\n tag[attr] = value;\n }\n\n // Get next sibling attribute.\n attributeNode = attributeNode.nextSibling;\n }\n\n // Extract children for non-self-closing tags.\n if (node.type.name === 'Element' && openTag.type.name !== 'SelfClosingTag') {\n const children: any[] = [];\n let child = node.node.firstChild;\n\n while (child) {\n // Skip the opening and closing tags.\n if (child.type.name !== 'OpenTag' && child.type.name !== 'CloseTag') {\n if (child.type.name === 'Text') {\n const text = state.doc.sliceString(child.from, child.to).trim();\n if (text) {\n children.push(text);\n }\n } else if (child.type.name === 'Element') {\n const data = nodeToJson(state, child);\n if (data) {\n children.push(data);\n }\n }\n }\n child = child.nextSibling;\n }\n\n if (children.length > 0) {\n tag.children = children;\n }\n }\n\n return tag;\n }\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\n\n// TODO(burdon): Review https://github.com/sergeche/codemirror-movie?tab=readme-ov-file\n\nexport type DemoOptions = {\n delay?: number;\n items?: string[];\n};\n\nconst defaultItems = ['hello world!', 'this is a test.', 'this is [DXOS](https://dxos.org)'];\n\n/**\n * Configurable plugin that let's user cycle through pre-configured input script.\n */\nexport const typewriter = ({ delay = 75, items = defaultItems }: DemoOptions = {}): Extension => {\n let t: any;\n let idx = 0; // TODO(burdon): Make global.\n\n return [\n keymap.of([\n {\n // Reset.\n key: \"alt-meta-'\",\n run: (view) => {\n clearTimeout(t);\n idx = 0;\n return true;\n },\n },\n {\n // Next prompt.\n // TODO(burdon): Press 1-9 to select prompt?\n key: \"shift-meta-'\",\n run: (view) => {\n clearTimeout(t);\n // TODO(burdon): Add space if needed.\n const text = items[idx++];\n if (idx === items?.length) {\n idx = 0;\n }\n\n let i = 0;\n const insert = (d = 0) => {\n t = setTimeout(() => {\n const pos = view.state.selection.main.head;\n view.dispatch({\n changes: { from: pos, insert: text[i++] },\n selection: { anchor: pos + 1 },\n });\n\n if (i < text.length) {\n insert(Math.random() * delay * (text[i] === ' ' ? 2 : 1));\n }\n }, d);\n };\n\n insert();\n return true;\n },\n },\n ]),\n ];\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport React, { memo, useMemo } from 'react';\n\nimport { rxFromSignal } from '@dxos/app-graph';\nimport { ElevationProvider } from '@dxos/react-ui';\nimport {\n type ActionGraphProps,\n MenuProvider,\n ToolbarMenu,\n createGapSeparator,\n useMenuActions,\n} from '@dxos/react-ui-menu';\n\nimport { createBlocks } from './blocks';\nimport { createFormatting } from './formatting';\nimport { createHeadings } from './headings';\nimport { createImageUpload } from './image';\nimport { createLists } from './lists';\nimport { createSearch } from './search';\nimport { type EditorToolbarActionGraphProps, type EditorToolbarFeatureFlags, type EditorToolbarProps } from './util';\nimport { createViewMode } from './view-mode';\n\nconst createToolbarActions = ({\n getView,\n state,\n customActions,\n ...features\n}: EditorToolbarFeatureFlags &\n Pick<EditorToolbarActionGraphProps, 'getView' | 'state' | 'customActions'>): Rx.Rx<ActionGraphProps> => {\n return Rx.make((get) => {\n const graph: ActionGraphProps = {\n nodes: [],\n edges: [],\n };\n\n if (features.headings ?? true) {\n const headings = get(rxFromSignal(() => createHeadings(state, getView)));\n graph.nodes.push(...headings.nodes);\n graph.edges.push(...headings.edges);\n }\n if (features.formatting ?? true) {\n const formatting = get(rxFromSignal(() => createFormatting(state, getView)));\n graph.nodes.push(...formatting.nodes);\n graph.edges.push(...formatting.edges);\n }\n if (features.lists ?? true) {\n const lists = get(rxFromSignal(() => createLists(state, getView)));\n graph.nodes.push(...lists.nodes);\n graph.edges.push(...lists.edges);\n }\n if (features.blocks ?? true) {\n const blocks = get(rxFromSignal(() => createBlocks(state, getView)));\n graph.nodes.push(...blocks.nodes);\n graph.edges.push(...blocks.edges);\n }\n if (features.image) {\n const image = get(rxFromSignal(() => createImageUpload(features.image!)));\n graph.nodes.push(...image.nodes);\n graph.edges.push(...image.edges);\n }\n {\n const gap = createGapSeparator();\n graph.nodes.push(...gap.nodes);\n graph.edges.push(...gap.edges);\n }\n if (customActions) {\n const custom = get(customActions);\n graph.nodes.push(...custom.nodes);\n graph.edges.push(...custom.edges);\n }\n if (features.search ?? true) {\n const search = get(rxFromSignal(() => createSearch(getView)));\n graph.nodes.push(...search.nodes);\n graph.edges.push(...search.edges);\n }\n if (features.viewMode) {\n const viewMode = get(rxFromSignal(() => createViewMode(state, features.viewMode!)));\n graph.nodes.push(...viewMode.nodes);\n graph.edges.push(...viewMode.edges);\n }\n\n return graph;\n });\n};\n\n// TODO(wittjosiah): Toolbar re-rendering is causing this graph to be recreated and breaking reactivity in some cases.\n// E.g. for toolbar dropdowns which use active icon, the icon is not updated when the active item changes.\n// This is currently only happening in the markdown plugin usage and should be reproduced in an editor story.\nconst useEditorToolbarActionGraph = (props: EditorToolbarProps) => {\n const menuCreator = useMemo(\n () =>\n createToolbarActions({\n getView: props.getView,\n state: props.state,\n customActions: props.customActions,\n headings: props.headings,\n formatting: props.formatting,\n lists: props.lists,\n blocks: props.blocks,\n image: props.image,\n search: props.search,\n viewMode: props.viewMode,\n }),\n [\n props.getView,\n props.state,\n props.customActions,\n props.headings,\n props.formatting,\n props.lists,\n props.blocks,\n props.image,\n props.search,\n props.viewMode,\n ],\n );\n\n return useMenuActions(menuCreator);\n};\n\nexport const EditorToolbar = memo(({ classNames, attendableId, role, ...props }: EditorToolbarProps) => {\n const menuProps = useEditorToolbarActionGraph(props);\n return (\n <ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>\n <MenuProvider {...menuProps} attendableId={attendableId}>\n <ToolbarMenu classNames={classNames} textBlockWidth />\n </MenuProvider>\n </ElevationProvider>\n );\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { type Rx } from '@effect-rx/rx-react';\nimport { useMemo } from 'react';\n\nimport { type Action } from '@dxos/app-graph';\nimport { type Live, live } from '@dxos/live-object';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport {\n type ActionGraphProps,\n type MenuActionProperties,\n type MenuItemGroup,\n type MenuSeparator,\n type ToolbarMenuActionGroupProperties,\n createMenuAction,\n createMenuItemGroup,\n} from '@dxos/react-ui-menu';\n\nimport type { EditorAction, Formatting } from '../../extensions';\nimport { translationKey } from '../../translations';\nimport { type EditorViewMode } from '../../types';\n\nexport type EditorToolbarState = Formatting & Partial<{ viewMode: EditorViewMode }>;\n\nexport const useEditorToolbarState = (initialState: Partial<EditorToolbarState> = {}) => {\n return useMemo(() => live<EditorToolbarState>(initialState), []);\n};\n\nexport type EditorToolbarFeatureFlags = Partial<{\n headings: boolean;\n formatting: boolean;\n lists: boolean;\n blocks: boolean;\n search: boolean;\n // TODO(wittjosiah): Factor out. Depend on plugin-level capabilities.\n image: () => void;\n viewMode: (mode: EditorViewMode) => void;\n}>;\n\nexport type EditorToolbarActionGraphProps = {\n state: Live<EditorToolbarState>;\n getView: () => EditorView;\n // TODO(wittjosiah): Control positioning.\n customActions?: Rx.Rx<ActionGraphProps>;\n};\n\nexport type EditorToolbarProps = ThemedClassName<\n EditorToolbarActionGraphProps & EditorToolbarFeatureFlags & { attendableId?: string; role?: string }\n>;\n\nexport type EditorToolbarItem = EditorAction | MenuItemGroup | MenuSeparator;\n\nexport const createEditorAction = (id: string, props: Partial<MenuActionProperties>, invoke: () => void) => {\n const { label = [`${id} label`, { ns: translationKey }], ...rest } = props;\n return createMenuAction(id, invoke, {\n label,\n ...rest,\n }) as Action<MenuActionProperties>;\n};\n\nexport const createEditorActionGroup = (\n id: string,\n props: Omit<ToolbarMenuActionGroupProperties, 'icon'>,\n icon?: string,\n) => {\n const { label = [`${id} label`, { ns: translationKey }], ...rest } = props;\n return createMenuItemGroup(id, {\n label,\n icon,\n iconOnly: true,\n ...rest,\n });\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\n\nimport { type NodeArg } from '@dxos/app-graph';\nimport { type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { addBlockquote, addCodeblock, insertTable, removeBlockquote, removeCodeblock } from '../../extensions';\n\nimport { type EditorToolbarState, createEditorAction, createEditorActionGroup } from './util';\n\nconst createBlockGroupAction = (value: string) =>\n createEditorActionGroup('block', {\n variant: 'toggleGroup',\n selectCardinality: 'single',\n value,\n } as ToolbarMenuActionGroupProperties);\n\nconst createBlockActions = (value: string, getView: () => EditorView, blankLine?: boolean) =>\n Object.entries({\n blockquote: 'ph--quotes--regular',\n codeblock: 'ph--code-block--regular',\n table: 'ph--table--regular',\n }).map(([type, icon]) => {\n const checked = type === value;\n return createEditorAction(type, { checked, ...(type === 'table' && { disabled: !!blankLine }), icon }, () => {\n const view = getView();\n if (!view) {\n return;\n }\n\n switch (type) {\n case 'blockquote':\n checked ? removeBlockquote(view) : addBlockquote(view);\n break;\n case 'codeblock':\n checked ? removeCodeblock(view) : addCodeblock(view);\n break;\n case 'table':\n insertTable(view);\n break;\n }\n });\n });\n\nexport const createBlocks = (state: EditorToolbarState, getView: () => EditorView) => {\n const value = state?.blockQuote ? 'blockquote' : (state.blockType ?? '');\n const blockGroupAction = createBlockGroupAction(value);\n const blockActions = createBlockActions(value, getView, state.blankLine);\n return {\n nodes: [blockGroupAction as NodeArg<any>, ...blockActions],\n edges: [\n { source: 'root', target: 'block' },\n ...blockActions.map(({ id }) => ({ source: blockGroupAction.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\n\nimport { type NodeArg } from '@dxos/app-graph';\nimport { type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { type Formatting, Inline, addLink, removeLink, setStyle } from '../../extensions';\n\nimport { type EditorToolbarState, createEditorAction, createEditorActionGroup } from './util';\n\nconst formats = {\n strong: 'ph--text-b--regular',\n emphasis: 'ph--text-italic--regular',\n strikethrough: 'ph--text-strikethrough--regular',\n code: 'ph--code--regular',\n link: 'ph--link--regular',\n};\n\nconst createFormattingGroup = (formatting: Formatting) =>\n createEditorActionGroup('formatting', {\n variant: 'toggleGroup',\n selectCardinality: 'multiple',\n value: Object.keys(formats).filter((key) => !!formatting[key as keyof Formatting]),\n } as ToolbarMenuActionGroupProperties);\n\nconst createFormattingActions = (formatting: Formatting, getView: () => EditorView) =>\n Object.entries(formats).map(([type, icon]) => {\n const checked = !!formatting[type as keyof Formatting];\n return createEditorAction(type, { checked, icon }, () => {\n const view = getView();\n if (!view) {\n return;\n }\n\n if (type === 'link') {\n checked ? removeLink(view) : addLink()(view);\n return;\n }\n\n const inlineType =\n type === 'strong'\n ? Inline.Strong\n : type === 'emphasis'\n ? Inline.Emphasis\n : type === 'strikethrough'\n ? Inline.Strikethrough\n : Inline.Code;\n setStyle(inlineType, !checked)(view);\n });\n });\n\nexport const createFormatting = (state: EditorToolbarState, getView: () => EditorView) => {\n const formattingGroupAction = createFormattingGroup(state);\n const formattingActions = createFormattingActions(state, getView);\n return {\n nodes: [formattingGroupAction as NodeArg<any>, ...formattingActions],\n edges: [\n { source: 'root', target: 'formatting' },\n ...formattingActions.map(({ id }) => ({ source: formattingGroupAction.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\n\nimport { type NodeArg } from '@dxos/app-graph';\nimport { type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { setHeading } from '../../extensions';\nimport { translationKey } from '../../translations';\n\nimport { type EditorToolbarState, createEditorAction, createEditorActionGroup } from './util';\n\nconst createHeadingGroupAction = (value: string) =>\n createEditorActionGroup(\n 'heading',\n {\n variant: 'dropdownMenu',\n applyActive: true,\n selectCardinality: 'single',\n value,\n } as ToolbarMenuActionGroupProperties,\n 'ph--text-h--regular',\n );\n\nconst createHeadingActions = (getView: () => EditorView) =>\n Object.entries({\n '0': 'ph--paragraph--regular',\n '1': 'ph--text-h-one--regular',\n '2': 'ph--text-h-two--regular',\n '3': 'ph--text-h-three--regular',\n '4': 'ph--text-h-four--regular',\n '5': 'ph--text-h-five--regular',\n '6': 'ph--text-h-six--regular',\n }).map(([levelStr, icon]) => {\n const level = parseInt(levelStr);\n return createEditorAction(\n `heading--${levelStr}`,\n {\n label: ['heading level label', { count: level, ns: translationKey }],\n icon,\n },\n () => setHeading(level)(getView()),\n );\n });\n\nconst computeHeadingValue = (state: EditorToolbarState) => {\n const blockType = state ? state.blockType : 'paragraph';\n const header = blockType && /heading(\\d)/.exec(blockType);\n return header ? header[1] : blockType === 'paragraph' || !blockType ? '0' : '';\n};\n\nexport const createHeadings = (state: EditorToolbarState, getView: () => EditorView) => {\n const headingValue = computeHeadingValue(state);\n const headingGroupAction = createHeadingGroupAction(headingValue);\n const headingActions = createHeadingActions(getView);\n return {\n nodes: [headingGroupAction as NodeArg<any>, ...headingActions],\n edges: [\n { source: 'root', target: 'heading' },\n ...headingActions.map(({ id }) => ({ source: headingGroupAction.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { createEditorAction } from './util';\n\nconst createImageUploadAction = (onImageUpload: () => void) =>\n createEditorAction(\n 'image',\n {\n testId: 'editor.toolbar.image',\n icon: 'ph--image-square--regular',\n },\n onImageUpload,\n );\n\nexport const createImageUpload = (onImageUpload: () => void) => ({\n nodes: [createImageUploadAction(onImageUpload)],\n edges: [{ source: 'root', target: 'image' }],\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\n\nimport { type NodeArg } from '@dxos/app-graph';\nimport { type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { List, addList, removeList } from '../../extensions';\n\nimport { type EditorToolbarState, createEditorAction, createEditorActionGroup } from './util';\n\nconst listStyles = {\n bullet: 'ph--list-bullets--regular',\n ordered: 'ph--list-numbers--regular',\n task: 'ph--list-checks--regular',\n};\n\nconst createListGroupAction = (value: string) =>\n createEditorActionGroup('list', {\n variant: 'toggleGroup',\n selectCardinality: 'single',\n value,\n } as ToolbarMenuActionGroupProperties);\n\nconst createListActions = (value: string, getView: () => EditorView) =>\n Object.entries(listStyles).map(([listStyle, icon]) => {\n const checked = value === listStyle;\n return createEditorAction(`list-${listStyle}`, { checked, icon }, () => {\n const view = getView();\n if (!view) {\n return;\n }\n\n const listType = listStyle === 'ordered' ? List.Ordered : listStyle === 'bullet' ? List.Bullet : List.Task;\n if (checked) {\n removeList(listType)(view);\n } else {\n addList(listType)(view);\n }\n });\n });\n\nexport const createLists = (state: EditorToolbarState, getView: () => EditorView) => {\n const value = state.listStyle ?? '';\n const listGroupAction = createListGroupAction(value);\n const listActionsMap = createListActions(value, getView);\n return {\n nodes: [listGroupAction as NodeArg<any>, ...listActionsMap],\n edges: [\n { source: 'root', target: 'list' },\n ...listActionsMap.map(({ id }) => ({ source: listGroupAction.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { openSearchPanel } from '@codemirror/search';\nimport { type EditorView } from '@codemirror/view';\n\nimport { createEditorAction } from './util';\n\nconst createSearchAction = (getView: () => EditorView) =>\n createEditorAction(\n 'search',\n {\n testId: 'editor.toolbar.search',\n icon: 'ph--magnifying-glass--regular',\n },\n () => openSearchPanel(getView()),\n );\n\nexport const createSearch = (getView: () => EditorView) => ({\n nodes: [createSearchAction(getView)],\n edges: [{ source: 'root', target: 'search' }],\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type NodeArg } from '@dxos/app-graph';\nimport { type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { translationKey } from '../../translations';\nimport { type EditorViewMode } from '../../types';\n\nimport { type EditorToolbarState, createEditorAction, createEditorActionGroup } from './util';\n\nconst createViewModeGroupAction = (value: string) =>\n createEditorActionGroup(\n 'viewMode',\n {\n variant: 'dropdownMenu',\n applyActive: true,\n selectCardinality: 'single',\n value,\n } as ToolbarMenuActionGroupProperties,\n 'ph--eye--regular',\n );\n\nconst createViewModeActions = (value: string, onViewModeChange: (mode: EditorViewMode) => void) =>\n Object.entries({\n preview: 'ph--eye--regular',\n source: 'ph--pencil-simple--regular',\n readonly: 'ph--pencil-slash--regular',\n }).map(([viewMode, icon]) => {\n const checked = viewMode === value;\n return createEditorAction(\n `view-mode--${viewMode}`,\n {\n label: [`${viewMode} mode label`, { ns: translationKey }],\n checked,\n icon,\n },\n () => onViewModeChange(viewMode as EditorViewMode),\n );\n });\n\nexport const createViewMode = (state: EditorToolbarState, onViewModeChange: (mode: EditorViewMode) => void) => {\n const value = state.viewMode ?? 'source';\n const viewModeGroupAction = createViewModeGroupAction(value);\n const viewModeActions = createViewModeActions(value, onViewModeChange);\n return {\n nodes: [viewModeGroupAction as NodeArg<any>, ...viewModeActions],\n edges: [\n { source: 'root', target: 'viewMode' },\n ...viewModeActions.map(({ id }) => ({ source: viewModeGroupAction.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport React, { Fragment, type PropsWithChildren, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { addEventListener } from '@dxos/async';\nimport {\n type DxAnchorActivate,\n Icon,\n type Label,\n Popover,\n toLocalizedString,\n useThemeContext,\n useTranslation,\n} from '@dxos/react-ui';\nimport { type MaybePromise } from '@dxos/util';\n\nimport { commandRangeEffect } from '../../extensions';\n\nexport type CommandMenuGroup = {\n id: string;\n label?: Label;\n items: CommandMenuItem[];\n};\n\nexport type CommandMenuItem = {\n id: string;\n label: Label;\n icon?: string;\n onSelect?: (view: EditorView, head: number) => MaybePromise<void>;\n};\n\nexport type CommandMenuProps = PropsWithChildren<{\n groups: CommandMenuGroup[];\n onSelect: (item: CommandMenuItem) => void;\n onActivate?: (event: DxAnchorActivate) => void;\n currentItem?: string;\n open?: boolean;\n onOpenChange?: (nextOpen: boolean) => void;\n defaultOpen?: boolean;\n}>;\n\n// NOTE: Not using DropdownMenu because the command menu needs to manage focus explicitly.\nexport const CommandMenuProvider = ({\n groups,\n onSelect,\n onActivate,\n currentItem,\n children,\n open: propsOpen,\n onOpenChange,\n defaultOpen,\n}: CommandMenuProps) => {\n const { tx } = useThemeContext();\n const groupsWithItems = groups.filter((group) => group.items.length > 0);\n const trigger = useRef<HTMLButtonElement | null>(null);\n\n const [open, setOpen] = useControllableState({\n prop: propsOpen,\n onChange: onOpenChange,\n defaultProp: defaultOpen,\n });\n\n const handleDxAnchorActivate = useCallback(\n (event: DxAnchorActivate) => {\n const { trigger: dxTrigger, refId } = event;\n // If this has a `refId`, then it’s probably a URL or DXN and out of scope for this component.\n if (!refId) {\n trigger.current = dxTrigger as HTMLButtonElement;\n if (onActivate) {\n onActivate(event);\n } else {\n queueMicrotask(() => setOpen(true));\n }\n }\n },\n [onActivate],\n );\n\n const [rootRef, setRootRef] = useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (!rootRef || !handleDxAnchorActivate) {\n return;\n }\n\n return addEventListener(rootRef, 'dx-anchor-activate' as any, handleDxAnchorActivate, {\n capture: true,\n passive: false,\n });\n }, [rootRef, handleDxAnchorActivate]);\n\n return (\n <Popover.Root modal={false} open={open} onOpenChange={setOpen}>\n <Popover.Portal>\n <Popover.Content\n align='start'\n onOpenAutoFocus={(event) => event.preventDefault()}\n classNames={tx('menu.content', 'menu--exotic-unfocusable', { elevation: 'positioned' }, [\n 'max-bs-80 overflow-y-auto',\n ])}\n >\n <Popover.Viewport classNames={tx('menu.viewport', 'menu__viewport--exotic-unfocusable', {})}>\n <ul>\n {groupsWithItems.map((group, index) => (\n <Fragment key={group.id}>\n <CommandGroup group={group} currentItem={currentItem} onSelect={onSelect} />\n {index < groupsWithItems.length - 1 && <div className={tx('menu.separator', 'menu__item', {})} />}\n </Fragment>\n ))}\n </ul>\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n <Popover.VirtualTrigger virtualRef={trigger} />\n <div role='none' className='contents' ref={setRootRef}>\n {children}\n </div>\n </Popover.Root>\n );\n};\n\nconst CommandGroup = ({\n group,\n currentItem,\n onSelect,\n}: {\n group: CommandMenuGroup;\n currentItem?: string;\n onSelect: (item: CommandMenuItem) => void;\n}) => {\n const { tx } = useThemeContext();\n const { t } = useTranslation();\n return (\n <>\n {group.label && (\n <div className={tx('menu.groupLabel', 'menu__group__label', {})}>\n <span>{toLocalizedString(group.label, t)}</span>\n </div>\n )}\n {group.items.map((item) => (\n <CommandItem key={item.id} item={item} current={currentItem === item.id} onSelect={onSelect} />\n ))}\n </>\n );\n};\n\nconst CommandItem = ({\n item,\n current,\n onSelect,\n}: {\n item: CommandMenuItem;\n current: boolean;\n onSelect: (item: CommandMenuItem) => void;\n}) => {\n const ref = useRef<HTMLLIElement>(null);\n const { tx } = useThemeContext();\n const { t } = useTranslation();\n const handleSelect = useCallback(() => onSelect(item), [item, onSelect]);\n\n useEffect(() => {\n if (current && ref.current) {\n ref.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }, [current]);\n\n return (\n <li\n ref={ref}\n className={tx('menu.item', 'menu__item--exotic-unfocusable', {}, [current && 'bg-hoverSurface'])}\n onClick={handleSelect}\n >\n {item.icon && <Icon icon={item.icon} size={5} />}\n <span className='grow truncate'>{toLocalizedString(item.label, t)}</span>\n </li>\n );\n};\n\n// TODO(wittjosiah): Factor out into a separate file.\n\n//\n// Helpers\n//\n\nexport const getItem = (groups: CommandMenuGroup[], id?: string): CommandMenuItem | undefined => {\n return groups.flatMap((group) => group.items).find((item) => item.id === id);\n};\n\nexport const getNextItem = (groups: CommandMenuGroup[], id?: string): CommandMenuItem => {\n const items = groups.flatMap((group) => group.items);\n const index = items.findIndex((item) => item.id === id);\n return items[(index + 1) % items.length];\n};\n\nexport const getPreviousItem = (groups: CommandMenuGroup[], id?: string): CommandMenuItem => {\n const items = groups.flatMap((group) => group.items);\n const index = items.findIndex((item) => item.id === id);\n return items[(index - 1 + items.length) % items.length];\n};\n\nexport const filterItems = (\n groups: CommandMenuGroup[],\n filter: (item: CommandMenuItem) => boolean,\n): CommandMenuGroup[] => {\n return groups.map((group) => ({\n ...group,\n items: group.items.filter(filter),\n }));\n};\n\nexport const insertAtCursor = (view: EditorView, head: number, insert: string) => {\n view.dispatch({\n changes: { from: head, to: head, insert },\n selection: { anchor: head + insert.length, head: head + insert.length },\n });\n};\n\n/**\n * If the cursor is at the start of a line, insert the text at the cursor.\n * Otherwise, insert the text on a new line.\n */\nexport const insertAtLineStart = (view: EditorView, head: number, insert: string) => {\n const line = view.state.doc.lineAt(head);\n if (line.from === head) {\n insertAtCursor(view, head, insert);\n } else {\n insert = '\\n' + insert;\n view.dispatch({\n changes: { from: line.to, to: line.to, insert },\n selection: { anchor: line.to + insert.length, head: line.to + insert.length },\n });\n }\n};\n\nexport const coreSlashCommands: CommandMenuGroup = {\n id: 'markdown',\n label: 'Markdown',\n items: [\n {\n id: 'heading-1',\n label: 'Heading 1',\n icon: 'ph--text-h-one--regular',\n onSelect: (view, head) => insertAtLineStart(view, head, '# '),\n },\n {\n id: 'heading-2',\n label: 'Heading 2',\n icon: 'ph--text-h-two--regular',\n onSelect: (view, head) => insertAtLineStart(view, head, '## '),\n },\n {\n id: 'heading-3',\n label: 'Heading 3',\n icon: 'ph--text-h-three--regular',\n onSelect: (view, head) => insertAtLineStart(view, head, '### '),\n },\n {\n id: 'heading-4',\n label: 'Heading 4',\n icon: 'ph--text-h-four--regular',\n onSelect: (view, head) => insertAtLineStart(view, head, '#### '),\n },\n {\n id: 'heading-5',\n label: 'Heading 5',\n icon: 'ph--text-h-five--regular',\n onSelect: (view, head) => insertAtLineStart(view, head, '##### '),\n },\n {\n id: 'heading-6',\n label: 'Heading 6',\n icon: 'ph--text-h-six--regular',\n onSelect: (view, head) => insertAtLineStart(view, head, '###### '),\n },\n {\n id: 'bullet-list',\n label: 'Bullet List',\n icon: 'ph--list-bullets--regular',\n onSelect: (view, head) => insertAtLineStart(view, head, '- '),\n },\n {\n id: 'numbered-list',\n label: 'Numbered List',\n icon: 'ph--list-numbers--regular',\n onSelect: (view, head) => insertAtLineStart(view, head, '1. '),\n },\n {\n id: 'task-list',\n label: 'Task List',\n icon: 'ph--list-checks--regular',\n onSelect: (view, head) => insertAtLineStart(view, head, '- [ ] '),\n },\n {\n id: 'quote',\n label: 'Quote',\n icon: 'ph--quotes--regular',\n onSelect: (view, head) => insertAtLineStart(view, head, '> '),\n },\n {\n id: 'code-block',\n label: 'Code Block',\n icon: 'ph--code-block--regular',\n onSelect: (view, head) => insertAtLineStart(view, head, '```\\n\\n```'),\n },\n {\n id: 'table',\n label: 'Table',\n icon: 'ph--table--regular',\n onSelect: (view, head) => insertAtLineStart(view, head, '| | | |\\n|---|---|---|\\n| | | |'),\n },\n ],\n};\n\nexport const linkSlashCommands: CommandMenuGroup = {\n id: 'link',\n label: 'Link',\n items: [\n {\n id: 'inline-link',\n label: 'Inline link',\n icon: 'ph--link--regular',\n onSelect: (view, head) =>\n view.dispatch({\n changes: { from: head, insert: '@' },\n selection: { anchor: head + 1, head: head + 1 },\n effects: commandRangeEffect.of({ trigger: '@', range: { from: head, to: head + 1 } }),\n }),\n },\n {\n id: 'block-embed',\n label: 'Block embed',\n icon: 'ph--lego--regular',\n onSelect: (view, head) =>\n view.dispatch({\n changes: { from: head, insert: '@@' },\n selection: { anchor: head + 2, head: head + 2 },\n effects: commandRangeEffect.of({ trigger: '@', range: { from: head, to: head + 2 } }),\n }),\n },\n ],\n};\n"],
|
5
|
-
"mappings": "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",
|
5
|
+
"mappings": "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",
|
6
6
|
"names": ["translationKey", "translations", "EditorState", "EditorView", "keymap", "tags", "TextKind", "React", "forwardRef", "useImperativeHandle", "useThemeContext", "mx", "EditorState", "EditorView", "useFocusableGroup", "useCallback", "useEffect", "useMemo", "useRef", "useState", "log", "getProviderValue", "isNotFalsy", "RangeSetBuilder", "Decoration", "EditorView", "ViewPlugin", "annotationMark", "Decoration", "mark", "class", "annotations", "match", "ViewPlugin", "fromClass", "update", "builder", "RangeSetBuilder", "from", "to", "view", "viewport", "text", "state", "doc", "sliceString", "matches", "matchAll", "m", "index", "undefined", "start", "end", "length", "add", "decorations", "finish", "none", "v", "EditorView", "theme", "textDecoration", "textDecorationStyle", "textDecorationColor", "Prec", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "keymap", "autocomplete", "fireIfEmpty", "onSubmit", "onSuggest", "onCancel", "suggest", "ViewPlugin", "fromClass", "update", "docChanged", "selectionSet", "_decorations", "computeDecorations", "view", "text", "state", "doc", "toString", "suggestions", "length", "_currentSuggestion", "Decoration", "none", "suffix", "slice", "set", "widget", "InlineSuggestionWidget", "side", "range", "completeSuggestion", "dispatch", "changes", "from", "insert", "selection", "anchor", "decorations", "v", "EditorView", "theme", "opacity", "Prec", "highest", "keymap", "of", "key", "preventDefault", "run", "plugin", "main", "head", "trim", "reset", "to", "WidgetType", "toDOM", "span", "document", "createElement", "textContent", "className", "eq", "other", "_define_property", "StateEffect", "EditorView", "ViewPlugin", "Facet", "singleValueFacet", "defaultValue", "Facet", "define", "combine", "providers", "overlap", "a", "b", "from", "to", "defaultCursorConverter", "toCursor", "position", "toString", "fromCursor", "cursor", "parseInt", "Cursor", "_define_property", "converter", "singleValueFacet", "getCursorFromRange", "state", "range", "cursorConverter", "facet", "join", "getRangeFromCursor", "parts", "split", "undefined", "decorationSetToArray", "deco", "ranges", "iter", "value", "push", "from", "to", "next", "log", "wrapWithCatch", "fn", "label", "args", "err", "catch", "callbackWrapper", "debugDispatcher", "trs", "view", "logChanges", "update", "changes", "flatMap", "tr", "empty", "undefined", "iterChanges", "fromA", "toA", "fromB", "toB", "inserted", "push", "JSON", "stringify", "toString", "filter", "Boolean", "length", "flattenRect", "rect", "left", "x", "right", "top", "bottom", "scratchRange", "textRange", "node", "from", "to", "range", "document", "createRange", "setEnd", "setStart", "clientRectsFor", "dom", "nodeType", "nodeValue", "length", "getClientRects", "mx", "Domino", "of", "tag", "classNames", "_el", "className", "mx", "text", "value", "textContent", "data", "key", "dataset", "style", "styles", "Object", "assign", "attr", "child", "children", "forEach", "appendChild", "build", "on", "event", "handler", "addEventListener", "_define_property", "document", "createElement", "React", "createRoot", "ThemeProvider", "Tooltip", "defaultTx", "renderRoot", "root", "node", "createRoot", "render", "ThemeProvider", "tx", "defaultTx", "createRenderer", "Component", "el", "props", "Tooltip", "Provider", "lineHeight", "scrollToBottomEffect", "StateEffect", "define", "autoScroll", "overscroll", "throttle", "isThrottled", "isPinned", "timeout", "buttonContainer", "lastScrollTop", "scrollCounter", "hideScrollbar", "view", "scrollDOM", "classList", "add", "clearTimeout", "setTimeout", "remove", "scrollToBottom", "requestAnimationFrame", "scrollTo", "top", "scrollHeight", "behavior", "ViewPlugin", "fromClass", "scroller", "parentElement", "Domino", "of", "classNames", "child", "data", "attr", "on", "build", "appendChild", "EditorView", "updateListener", "update", "transactions", "forEach", "transaction", "effect", "effects", "is", "docChanged", "distanceFromBottom", "calcDistance", "domEventHandlers", "scroll", "event", "scrollTop", "theme", "paddingBottom", "scrollbarWidth", "display", "position", "bottom", "right", "clientHeight", "next", "A", "StateField", "EditorView", "ViewPlugin", "log", "fromCursor", "toCursor", "cursorConverter", "accessor", "pos", "assoc", "err", "catch", "cursor", "Annotation", "StateEffect", "getPath", "state", "field", "path", "getLastHeads", "lastHeads", "updateHeadsEffect", "StateEffect", "define", "updateHeads", "newHeads", "of", "reconcileAnnotation", "Annotation", "isReconcile", "tr", "annotation", "next", "A", "next", "A", "updateAutomerge", "field", "handle", "transactions", "state", "lastHeads", "path", "hasChanges", "tr", "changes", "iterChanges", "undefined", "newHeads", "changeAt", "doc", "invertedTransactions", "fromA", "toA", "_fromB", "_toB", "insert", "push", "from", "del", "reverse", "forEach", "A", "splice", "slice", "toString", "ChangeSet", "updateCodeMirror", "view", "selection", "target", "patches", "patch", "changeSpec", "handlePatch", "state", "changeSet", "ChangeSet", "of", "doc", "length", "map", "dispatch", "changes", "annotations", "reconcileAnnotation", "action", "handleInsert", "handleSplice", "handleDel", "handlePut", "index", "charPath", "path", "text", "values", "value", "toString", "join", "from", "to", "insert", "textPath", "candidatePath", "i", "Syncer", "reconcile", "view", "editor", "_pending", "onEditorChange", "onAutomergeChange", "transactions", "state", "field", "_state", "unreconciledTransactions", "filter", "tx", "isReconcile", "newHeads", "updateAutomerge", "_handle", "dispatch", "effects", "updateHeads", "annotations", "reconcileAnnotation", "of", "oldHeads", "getLastHeads", "A", "getHeads", "doc", "diff", "equals", "selection", "path", "getPath", "updateCodeMirror", "_define_property", "automerge", "accessor", "syncState", "StateField", "define", "create", "path", "slice", "lastHeads", "A", "getHeads", "handle", "doc", "unreconciledTransactions", "update", "value", "tr", "result", "clearUnreconciled", "effect", "effects", "is", "updateHeadsEffect", "newHeads", "isReconcile", "push", "syncer", "Syncer", "Cursor", "converter", "of", "cursorConverter", "ViewPlugin", "fromClass", "destroy", "removeListener", "_handleChange", "_view", "_define_property", "reconcile", "addListener", "EditorView", "updateListener", "view", "changes", "empty", "Annotation", "RangeSet", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "Event", "Context", "dummyProvider", "remoteStateChange", "Event", "open", "close", "getRemoteStates", "update", "awarenessProvider", "singleValueFacet", "RemoteSelectionChangedAnnotation", "Annotation", "define", "awareness", "provider", "of", "ViewPlugin", "fromClass", "RemoteSelectionsDecorator", "decorations", "value", "styles", "destroy", "_ctx", "dispose", "_provider", "_updateLocalSelection", "view", "_updateRemoteSelections", "hasFocus", "dom", "ownerDocument", "anchor", "undefined", "head", "state", "selection", "main", "_lastAnchor", "_lastHead", "_cursorConverter", "toCursor", "awarenessStates", "position", "fromCursor", "start", "Math", "min", "doc", "length", "end", "max", "startLine", "lineAt", "endLine", "darkColor", "info", "lightColor", "number", "push", "from", "to", "Decoration", "mark", "attributes", "style", "class", "i", "linePos", "line", "widget", "side", "block", "RemoteCaretWidget", "displayName", "set", "_define_property", "Context", "RangeSet", "facet", "Cursor", "converter", "on", "dispatch", "annotations", "WidgetType", "toDOM", "span", "document", "createElement", "className", "backgroundColor", "_color", "borderColor", "dot", "innerText", "_name", "appendChild", "createTextNode", "updateDOM", "eq", "estimatedHeight", "ignoreEvent", "EditorView", "theme", "padding", "margin", "borderLeft", "borderRight", "marginLeft", "marginRight", "boxSizing", "display", "cursor", "borderRadius", "width", "height", "top", "left", "transition", "transform", "transformOrigin", "fontSize", "fontFamily", "fontStyle", "fontWeight", "lineHeight", "userSelect", "color", "zIndex", "opacity", "transitionDelay", "whiteSpace", "DeferredTask", "Event", "sleep", "Context", "invariant", "log", "DEBOUNCE_INTERVAL", "SpaceAwarenessProvider", "open", "_ctx", "_postTask", "_localState", "_space", "postMessage", "_channel", "kind", "state", "onDispose", "listen", "message", "payload", "_handleQueryMessage", "_handlePostMessage", "catch", "err", "debug", "close", "dispose", "undefined", "getRemoteStates", "Array", "from", "_remoteStates", "values", "update", "position", "peerId", "_peerId", "info", "_info", "schedule", "set", "remoteStateChange", "emit", "params", "_define_property", "Map", "space", "channel", "EditorView", "keymap", "defaultsDeep", "throttle", "invariant", "defaultOptions", "effect", "maxParticles", "particleGravity", "particleAlphaFadeout", "particleSize", "min", "max", "particleNumRange", "particleVelocityRange", "x", "y", "particleShrinkRate", "shakeIntensity", "blast", "options", "blaster", "last", "getPoint", "view", "pos", "left", "top", "coordsForChar", "element", "document", "elementFromPoint", "offsetLeft", "offsetTop", "scrollDOM", "parentElement", "point", "updateListener", "of", "update", "node", "destroy", "Blaster", "color", "Math", "random", "initialize", "start", "resize", "current", "state", "selection", "main", "head", "spawn", "any", "_", "event", "key", "shiftKey", "shake", "time", "_node", "_canvas", "_ctx", "createElement", "id", "style", "position", "zIndex", "pointerEvents", "getContext", "parent", "appendChild", "stop", "remove", "undefined", "offsetWidth", "width", "offsetHeight", "height", "_running", "loop", "transform", "clearRect", "now", "Date", "getTime", "_lastTime", "dt", "_shakeTime", "magnitude", "_shakeTimeMax", "_options", "shakeX", "shakeY", "drawParticles", "requestAnimationFrame", "bind", "i", "_particles", "length", "particle", "alpha", "size", "_effect", "_define_property", "_particlePointer", "_lastPoint", "getRGBComponents", "numParticles", "dir", "create", "Effect1", "Effect2", "Effect", "vx", "vy", "ctx", "fillStyle", "fillRect", "round", "theta", "PI", "drag", "wander", "sin", "cos", "beginPath", "arc", "fill", "bgColor", "getComputedStyle", "match", "slice", "StateEffect", "StateField", "showTooltip", "commandConfig", "singleValueFacet", "commandState", "StateField", "define", "create", "update", "state", "tr", "effect", "effects", "is", "closeEffect", "renderDialog", "facet", "openEffect", "pos", "fullWidth", "value", "tooltip", "above", "arrow", "strictSide", "view", "root", "document", "createElement", "tooltipView", "dom", "mount", "parent", "parentElement", "paddingLeft", "paddingRight", "window", "getComputedStyle", "widthWithoutPadding", "clientWidth", "parseFloat", "style", "width", "onAction", "action", "dispatch", "of", "type", "text", "changes", "from", "insert", "selection", "anchor", "length", "requestAnimationFrame", "focus", "provide", "field", "showTooltip", "openEffect", "StateEffect", "define", "closeEffect", "openCommand", "view", "state", "field", "commandState", "selection", "main", "line", "doc", "lineAt", "from", "to", "dispatch", "effects", "of", "pos", "anchor", "fullWidth", "closeCommand", "commandKeyBindings", "key", "run", "Prec", "EditorView", "keymap", "isNonNullable", "RangeSetBuilder", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "hint", "delay", "onHint", "ViewPlugin", "fromClass", "update", "timeout", "clearTimeout", "undefined", "builder", "RangeSetBuilder", "cState", "view", "state", "field", "commandState", "tooltip", "selection", "main", "line", "doc", "lineAt", "from", "to", "setTimeout", "add", "Decoration", "widget", "Hint", "decorations", "finish", "destroy", "none", "provide", "plugin", "EditorView", "of", "WidgetType", "toDOM", "wrap", "document", "createElement", "className", "style", "pointerEvents", "appendChild", "content", "createTextNode", "setAttribute", "coordsAt", "dom", "rects", "firstChild", "clientRectsFor", "length", "window", "getComputedStyle", "parentNode", "rect", "flattenRect", "direction", "lineHeight", "parseInt", "bottom", "top", "left", "right", "ignoreEvent", "_define_property", "command", "options", "Prec", "highest", "keymap", "of", "commandKeyBindings", "commandConfig", "commandState", "onHint", "hint", "EditorView", "focusChangeEffect", "_", "focusing", "closeEffect", "theme", "background", "filter", "isNonNullable", "Prec", "RangeSetBuilder", "StateEffect", "StateField", "Decoration", "EditorView", "ViewPlugin", "keymap", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "placeholder", "delay", "content", "plugin", "ViewPlugin", "fromClass", "update", "timeout", "window", "clearTimeout", "undefined", "activeLine", "view", "state", "doc", "lineAt", "selection", "main", "head", "isEmpty", "text", "trim", "lineStart", "from", "setTimeout", "decorations", "Decoration", "set", "widget", "Placeholder", "side", "range", "none", "destroy", "provide", "EditorView", "of", "contentAttributes", "WidgetType", "toDOM", "wrap", "document", "createElement", "className", "style", "pointerEvents", "appendChild", "createTextNode", "cloneNode", "setAttribute", "coordsAt", "dom", "rects", "firstChild", "clientRectsFor", "length", "getComputedStyle", "parentNode", "rect", "flattenRect", "direction", "lineHeight", "parseInt", "bottom", "top", "left", "right", "ignoreEvent", "_define_property", "commandMenu", "options", "commandMenuPlugin", "ViewPlugin", "fromClass", "update", "builder", "RangeSetBuilder", "selection", "view", "state", "main", "range", "activeRange", "trigger", "field", "commandMenuState", "shouldShowWidget", "head", "from", "to", "add", "Decoration", "mark", "tagName", "class", "attributes", "activeRangeChanged", "transactions", "some", "tr", "effects", "effect", "is", "commandRangeEffect", "content", "sliceDoc", "onTextChange", "decorations", "finish", "none", "v", "triggers", "Array", "isArray", "commandKeymap", "keymap", "of", "map", "key", "preventDefault", "run", "line", "doc", "lineAt", "text", "trim", "dispatch", "changes", "insert", "anchor", "onEnter", "onArrowDown", "onArrowUp", "updateListener", "EditorView", "firstChar", "sliceString", "shouldRemove", "nextRange", "docChanged", "onClose", "Prec", "highest", "placeholder", "Object", "assign", "StateEffect", "define", "StateField", "create", "value", "newValue", "EditorView", "ViewPlugin", "addEventListener", "floatingMenu", "options", "ViewPlugin", "fromClass", "destroy", "cleanup", "tag", "remove", "rafId", "cancelAnimationFrame", "update", "dataset", "focused", "view", "hasFocus", "transactions", "some", "tr", "effects", "effect", "is", "openEffect", "style", "display", "classList", "add", "closeEffect", "docChanged", "focusChanged", "geometryChanged", "selectionSet", "viewportChanged", "scheduleUpdate", "updateButtonPosition", "x", "width", "contentDOM", "getBoundingClientRect", "pos", "state", "selection", "main", "head", "line", "lineBlockAt", "coords", "coordsAtPos", "from", "lineHeight", "bottom", "top", "dy", "height", "offsetTop", "offsetLeft", "padding", "left", "requestAnimationFrame", "bind", "container", "scrollDOM", "getComputedStyle", "position", "icon", "document", "createElement", "setAttribute", "appendChild", "handler", "addEventListener", "EditorView", "theme", "border", "opacity", "placeContent", "EditorSelection", "Prec", "RangeSetBuilder", "Decoration", "ViewPlugin", "keymap", "typeahead", "onComplete", "hint", "complete", "view", "selection", "state", "main", "dispatch", "changes", "from", "to", "insert", "EditorSelection", "cursor", "length", "ViewPlugin", "fromClass", "update", "builder", "RangeSetBuilder", "line", "doc", "lineAt", "str", "sliceDoc", "add", "Decoration", "widget", "Hint", "decorations", "finish", "none", "v", "Prec", "highest", "keymap", "of", "key", "preventDefault", "run", "staticCompletion", "completions", "options", "default", "parts", "split", "filter", "Boolean", "at", "minLength", "completion", "match", "matchCompletion", "startsWith", "slice", "useCallback", "useMemo", "useRef", "useState", "useCommandMenu", "viewRef", "trigger", "placeholder", "getMenu", "currentRef", "useRef", "groupsRef", "currentItem", "setCurrentItem", "useState", "open", "setOpen", "_", "refresh", "handleOpenChange", "useCallback", "current", "undefined", "dispatch", "effects", "commandRangeEffect", "of", "handleActivate", "event", "item", "getItem", "triggerKey", "getAttribute", "handleSelect", "view", "selection", "state", "main", "onSelect", "head", "serializedTrigger", "Array", "isArray", "join", "memoizedCommandMenu", "useMemo", "commandMenu", "onClose", "onArrowDown", "next", "getNextItem", "id", "onArrowUp", "previous", "getPreviousItem", "onEnter", "onTextChange", "text", "firstItem", "filter", "group", "items", "length", "onActivate", "onOpenChange", "invertedEffects", "StateEffect", "StateField", "Decoration", "EditorView", "ViewPlugin", "hoverTooltip", "keymap", "sortBy", "useEffect", "debounce", "log", "isNonNullable", "Transaction", "EditorView", "keymap", "debounce", "invariant", "isNotFalsy", "documentId", "singleValueFacet", "stateRestoreAnnotation", "createEditorStateTransaction", "scrollTo", "selection", "scrollIntoView", "effects", "EditorView", "yMargin", "undefined", "annotations", "Transaction", "userEvent", "of", "createEditorStateStore", "keyPrefix", "getState", "id", "invariant", "state", "localStorage", "getItem", "JSON", "parse", "setState", "setItem", "stringify", "selectionState", "setStateDebounced", "debounce", "updateListener", "view", "transactions", "facet", "some", "tr", "isUserEvent", "scrollTop", "scrollDOM", "pos", "posAtCoords", "x", "y", "anchor", "head", "main", "keymap", "key", "run", "dispatch", "filter", "isNotFalsy", "setComments", "StateEffect", "define", "setSelection", "setCommentState", "commentsState", "StateField", "create", "state", "id", "facet", "documentId", "comments", "selection", "update", "value", "tr", "effect", "effects", "is", "commentStates", "map", "comment", "cursor", "undefined", "range", "Cursor", "getRangeFromCursor", "filter", "isNonNullable", "styles", "EditorView", "theme", "padding", "backgroundColor", "boxDecorationBreak", "boxShadow", "color", "createCommentMark", "isCurrent", "Decoration", "mark", "class", "attributes", "commentsDecorations", "decorations", "compute", "current", "field", "sortBy", "from", "flatMap", "log", "warn", "to", "set", "commentClickedEffect", "handleCommentClick", "domEventHandlers", "click", "event", "view", "target", "editorRoot", "dom", "hasAttribute", "parentElement", "commentId", "getAttribute", "dispatch", "of", "trackPastedComments", "onUpdate", "tracked", "handleTrack", "main", "selectedRanges", "length", "text", "doc", "slice", "cut", "copy", "invertedEffects", "startState", "changes", "iterChangedRanges", "fromA", "toA", "push", "restoreCommentEffect", "updateListener", "restore", "i", "transactions", "j", "mapTrackedComment", "paste", "find", "isUserEvent", "found", "iterChanges", "fromB", "toB", "eq", "indexOf", "mapPos", "moved", "exists", "some", "c", "getCursorFromRange", "createComment", "options", "optionsFacet", "insert", "onCreate", "location", "coordsAtPos", "singleValueFacet", "key", "shortcut", "handleSelect", "debounce", "onSelect", "keymap", "run", "callbackWrapper", "renderTooltip", "hoverTooltip", "pos", "end", "above", "el", "document", "createElement", "offset", "x", "y", "hoverTime", "mod", "from2", "to2", "forEach", "newRange", "onDelete", "Object", "assign", "min", "Infinity", "closest", "head", "d", "Math", "abs", "scrollThreadIntoView", "center", "currentSelection", "currentScrollPosition", "scrollDOM", "scrollTop", "targetScrollPosition", "top", "needsScroll", "clientHeight", "needsSelectionUpdate", "anchor", "scrollIntoView", "flat", "ExternalCommentSync", "subscribe", "getComments", "_define_property", "unsubscribe", "destroy", "updateComments", "queueMicrotask", "createExternalCommentSync", "ViewPlugin", "fromClass", "useComments", "useEffect", "syntaxTree", "StateField", "debugNodeLogger", "log", "console", "logTokens", "state", "syntaxTree", "iterate", "enter", "node", "type", "StateField", "define", "create", "update", "_", "tr", "EditorView", "dropCursor", "styles", "EditorView", "theme", "borderLeft", "color", "padding", "content", "dropFile", "options", "dropCursor", "domEventHandlers", "drop", "event", "view", "preventDefault", "files", "dataTransfer", "pos", "posAtCoords", "length", "dispatch", "selection", "anchor", "onDrop", "closeBrackets", "closeBracketsKeymap", "defaultKeymap", "history", "historyKeymap", "indentWithTab", "standardKeymap", "bracketMatching", "defaultHighlightStyle", "syntaxHighlighting", "searchKeymap", "EditorState", "oneDarkHighlightStyle", "EditorView", "ViewPlugin", "drawSelection", "dropCursor", "highlightActiveLine", "keymap", "lineNumbers", "placeholder", "scrollPastEnd", "defaultsDeep", "merge", "generateName", "log", "hexToHue", "isNotFalsy", "EditorView", "mx", "mx", "headings", "theme", "code", "codeMark", "mark", "heading", "level", "mx", "tokens", "get", "getToken", "path", "defaultValue", "value", "get", "tokens", "toString", "fontBody", "fontMono", "defaultTheme", "outline", "overflowY", "padding", "fontFamily", "fontBody", "fontSize", "lineHeight", "color", "borderRight", "paddingRight", "minWidth", "paddingInline", "background", "borderLeft", "margin", "borderRadius", "textDecoration", "textDecorationLine", "textDecorationThickness", "textDecorationColor", "textUnderlineOffset", "marginTop", "marginLeft", "borderColor", "borderTop", "maxHeight", "paddingLeft", "borderBottom", "width", "display", "opacity", "backgroundColor", "all", "alignItems", "cursor", "height", "marginRight", "editorWidth", "editorSlots", "scroll", "className", "content", "editorGutter", "EditorView", "theme", "background", "paddingRight", "editorMonospace", "fontFamily", "fontMono", "editorWithToolbarLayout", "stackItemContentEditorClassNames", "role", "mx", "StateEffect", "StateField", "EditorView", "focusEffect", "StateEffect", "define", "focusField", "StateField", "create", "update", "value", "tr", "effect", "effects", "is", "focus", "EditorView", "domEventHandlers", "event", "view", "setTimeout", "dispatch", "of", "blur", "preventNewline", "EditorState", "transactionFilter", "of", "tr", "newDoc", "lines", "defaultBasicOptions", "allowMultipleSelections", "bracketMatching", "closeBrackets", "drawSelection", "focus", "history", "keymap", "lineWrapping", "search", "keymaps", "standard", "standardKeymap", "default", "defaultKeymap", "createBasicExtensions", "_props", "props", "defaultsDeep", "EditorView", "exceptionSink", "err", "log", "catch", "dropCursor", "cursorBlinkRate", "editable", "undefined", "highlightActiveLine", "lineNumbers", "editorGutter", "monospace", "editorMonospace", "placeholder", "readOnly", "scrollPastEnd", "tabSize", "indentWithTab", "closeBracketsKeymap", "historyKeymap", "searchKeymap", "key", "preventDefault", "run", "filter", "isNotFalsy", "grow", "editor", "className", "fullWidth", "defaultThemeSlots", "createThemeExtensions", "themeMode", "styles", "syntaxHighlighting", "syntaxHighlightingProps", "slots", "_slots", "darkTheme", "baseTheme", "merge", "defaultTheme", "oneDarkHighlightStyle", "defaultHighlightStyle", "editorAttributes", "class", "content", "contentAttributes", "scroll", "ViewPlugin", "fromClass", "view", "scrollDOM", "classList", "add", "split", "createDataExtensions", "id", "text", "space", "identity", "extensions", "push", "automerge", "peerId", "identityKey", "toHex", "hue", "profile", "data", "hexToHue", "awareness", "SpaceAwarenessProvider", "channel", "info", "darkColor", "lightColor", "displayName", "generateName", "codeFolding", "foldGutter", "EditorView", "React", "Icon", "folding", "_props", "codeFolding", "placeholderDOM", "document", "createElement", "foldGutter", "markerDOM", "open", "el", "Domino", "of", "classNames", "build", "renderRoot", "React", "Icon", "icon", "size", "EditorView", "theme", "opacity", "transition", "width", "Decoration", "EditorView", "MatchDecorator", "ViewPlugin", "WidgetType", "getHashColor", "mx", "TagWidget", "WidgetType", "toDOM", "span", "document", "createElement", "className", "mx", "getHashColor", "_text", "tag", "textContent", "_define_property", "tagMatcher", "MatchDecorator", "regexp", "decoration", "match", "Decoration", "replace", "widget", "hashtag", "ViewPlugin", "fromClass", "update", "tags", "updateDeco", "view", "createDeco", "decorations", "instance", "provide", "plugin", "EditorView", "atomicRanges", "of", "none", "theme", "borderRadius", "marginRight", "padding", "json", "jsonParseLinter", "linter", "Ajv", "createJsonExtensions", "schema", "lintSource", "jsonParseLinter", "ajv", "Ajv", "allErrors", "strict", "validate", "compile", "schemaLinter", "json", "linter", "view", "jsonText", "state", "doc", "toString", "jsonData", "JSON", "parse", "valid", "errors", "map", "err", "from", "to", "length", "severity", "message", "instancePath", "EditorView", "listener", "onFocus", "onChange", "extensions", "push", "EditorView", "focusChangeEffect", "of", "_", "focusing", "updateListener", "update", "state", "doc", "toString", "facet", "documentId", "snippet", "syntaxTree", "EditorSelection", "EditorView", "keymap", "useCallback", "useMemo", "debounceAndThrottle", "formattingEquals", "a", "b", "blockType", "strong", "emphasis", "strikethrough", "code", "link", "listStyle", "blockQuote", "Inline", "List", "setHeading", "level", "state", "dispatch", "selection", "ranges", "doc", "changes", "prevBlock", "range", "sawBlock", "syntaxTree", "iterate", "from", "to", "enter", "node", "Object", "hasOwn", "Textblocks", "name", "isHeading", "exec", "curLevel", "push", "insert", "repeat", "nextLine", "lineAt", "Math", "min", "line", "empty", "test", "text", "length", "changeSet", "update", "map", "userEvent", "scrollIntoView", "setStyle", "type", "enable", "marker", "inlineMarkerText", "changeByRange", "after", "sliceString", "head", "found", "indexOf", "slice", "before", "reverse", "join", "EditorSelection", "cursor", "changesAtEnd", "blockStart", "blockEnd", "startCovered", "endCovered", "blockContentStart", "blockContentEnd", "IgnoreInline", "has", "InlineMarker", "markType", "size", "openEnd", "closeStart", "skipMarkers", "skipSpaces", "max", "leave", "rangeStart", "rangeEnd", "concat", "mapPos", "addStyle", "style", "removeStyle", "toggleStyle", "arg", "form", "getFormatting", "toggleStrong", "toggleEmphasis", "toggleStrikethrough", "toggleInlineCode", "atx", "setext", "lastLine", "pos", "dir", "limit", "tree", "next", "resolve", "moveTo", "snippets", "codeblock", "snippet", "table", "insertTable", "view", "main", "number", "anchor", "removeLinkInner", "removeLink", "addLink", "url", "image", "cutStyles", "okay", "sNode", "firstChild", "lastChild", "changesAfter", "cursorOffset", "mark", "addList", "lastBlock", "counter", "first", "parentColumn", "blocks", "prevSibling", "item", "itemLine", "itemText", "i", "nodeFrom", "padding", "String", "column", "j", "num", "open", "last", "nextSibling", "renumberListItems", "removeList", "stack", "targetNodeType", "pop", "toggleList", "target", "formatting", "active", "newNum", "setBlockquote", "lines", "prevLine", "quote", "addBlockquote", "removeBlockquote", "toggleBlockquote", "addCodeblock", "blockFrom", "blockTo", "removeCodeblock", "firstLine", "toggleCodeblock", "formattingKeymap", "_options", "keymap", "of", "key", "run", "Emphasis", "StrongEmphasis", "InlineCode", "Strikethrough", "Set", "ATXHeading1", "ATXHeading2", "ATXHeading3", "ATXHeading4", "ATXHeading5", "ATXHeading6", "CodeBlock", "FencedCode", "Paragraph", "SetextHeading1", "SetextHeading2", "TableCell", "Task", "inline", "currentBlock", "advanceInline", "upto", "end", "skipInline", "some", "v", "contextSize", "contextBefore", "contextAfter", "ch", "blockCode", "index", "hasList", "hasQuote", "blankLine", "useFormattingState", "handleUpdate", "useCallback", "debounceAndThrottle", "docChanged", "selectionSet", "entries", "forEach", "useMemo", "EditorView", "updateListener", "processEditorPayload", "view", "type", "data", "inlineType", "listType", "setHeading", "parseInt", "Inline", "Strong", "Emphasis", "Strikethrough", "Code", "setStyle", "toggleStyle", "List", "Ordered", "Bullet", "Task", "removeList", "addList", "toggleList", "removeBlockquote", "addBlockquote", "toggleBlockquote", "removeCodeblock", "addCodeblock", "insertTable", "removeLink", "addLink", "url", "image", "createComment", "requestAnimationFrame", "hasFocus", "focus", "completionKeymap", "defaultKeymap", "indentWithTab", "markdown", "markdownLanguage", "syntaxHighlighting", "languages", "keymap", "isNotFalsy", "markdownLanguage", "HighlightStyle", "Tag", "styleTags", "tags", "Table", "markdownTags", "Blockquote", "Tag", "define", "CodeMark", "CodeText", "EmphasisMark", "HeaderMark", "InlineCode", "LinkLabel", "LinkReference", "ListMark", "QuoteMark", "URL", "TableCell", "Table", "defineNodes", "forEach", "node", "name", "style", "markdownTagsExtensions", "props", "styleTags", "markdownHighlightStyle", "_options", "HighlightStyle", "tag", "tags", "keyword", "deleted", "character", "propertyName", "macroName", "color", "constant", "standard", "definition", "separator", "typeName", "className", "number", "changed", "annotation", "modifier", "self", "namespace", "operator", "operatorKeyword", "escape", "regexp", "special", "string", "meta", "comment", "atom", "bool", "variableName", "processingInstruction", "inserted", "invalid", "class", "theme", "mark", "function", "labelName", "codeMark", "monospace", "heading1", "heading", "heading2", "heading3", "heading4", "heading5", "heading6", "emphasis", "strong", "strikethrough", "code", "scope", "markdownLanguage", "all", "fontFamily", "fontBody", "createMarkdownExtensions", "options", "markdown", "base", "markdownLanguage", "codeLanguages", "languages", "completeHTMLTags", "extensions", "markdownTagsExtensions", "defaultExtensions", "syntaxHighlighting", "markdownHighlightStyle", "keymap", "of", "indentWithTab", "defaultKeymap", "completionKeymap", "filter", "isNotFalsy", "noSetExtHeading", "noHtml", "remove", "syntaxTree", "StateField", "debugTree", "cb", "StateField", "define", "create", "state", "convertTreeToJson", "update", "value", "tr", "treeToJson", "cursor", "node", "type", "name", "from", "to", "text", "doc", "slice", "toString", "children", "firstChild", "push", "nextSibling", "parent", "syntaxTree", "syntaxTree", "Prec", "RangeSetBuilder", "StateEffect", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "invariant", "mx", "syntaxTree", "Transaction", "ViewPlugin", "adjustChanges", "ViewPlugin", "fromClass", "update", "tree", "syntaxTree", "state", "adjustments", "tr", "transactions", "event", "annotation", "Transaction", "userEvent", "changes", "empty", "iterChanges", "fromA", "node", "resolveInner", "name", "text", "doc", "lineAt", "endsWith", "push", "from", "to", "insert", "toA", "fromB", "toB", "url", "getValidUrl", "view", "sliceDoc", "invalidPositions", "Set", "has", "replacedText", "startState", "createLink", "str", "toString", "match", "replacement", "length", "setTimeout", "dispatch", "label", "host", "pathname", "extension", "split", "imageExtensions", "includes", "createLinkLabel", "protocol", "replace", "filter", "Boolean", "join", "validProtocols", "URL", "undefined", "_err", "syntaxTree", "StateField", "Decoration", "EditorView", "WidgetType", "image", "_options", "StateField", "define", "create", "state", "Decoration", "set", "buildDecorations", "doc", "length", "update", "value", "tr", "docChanged", "selection", "cursor", "main", "head", "oldCursor", "changes", "mapPos", "startState", "from", "Math", "min", "to", "max", "iterChangedRanges", "fromA", "toA", "fromB", "toB", "lineAt", "map", "filterFrom", "filterTo", "filter", "add", "provide", "field", "EditorView", "decorations", "syntaxTree", "iterate", "enter", "node", "name", "urlNode", "getChild", "hide", "readOnly", "focusField", "url", "sliceDoc", "match", "preloadImage", "push", "replace", "block", "widget", "ImageWidget", "range", "preloaded", "Set", "has", "img", "document", "createElement", "src", "WidgetType", "eq", "other", "_url", "toDOM", "view", "setAttribute", "onload", "classList", "_define_property", "EditorView", "bulletListIndentationWidth", "orderedListIndentationWidth", "formattingStyles", "EditorView", "theme", "display", "width", "height", "verticalAlign", "borderTop", "opacity", "textAlign", "paddingRight", "fontVariant", "background", "borderLeft", "paddingLeft", "margin", "fontFamily", "fontMono", "paddingInline", "borderTopLeftRadius", "borderTopRightRadius", "borderBottomLeftRadius", "borderBottomRightRadius", "transform", "textDecoration", "padding", "borderBottom", "color", "transitionDuration", "transitionProperty", "overflow", "syntaxTree", "RangeSetBuilder", "StateField", "Decoration", "EditorView", "WidgetType", "table", "options", "StateField", "define", "create", "state", "update", "_", "tr", "provide", "field", "EditorView", "decorations", "from", "_options", "builder", "RangeSetBuilder", "cursor", "selection", "main", "head", "tables", "getTable", "length", "getRow", "rows", "syntaxTree", "iterate", "enter", "node", "name", "push", "to", "header", "row", "sliceDoc", "forEach", "replace", "readOnly", "add", "Decoration", "block", "widget", "TableWidget", "mark", "class", "finish", "WidgetType", "eq", "other", "_table", "join", "toDOM", "view", "div", "document", "createElement", "appendChild", "cell", "th", "setAttribute", "textContent", "body", "td", "ignoreEvent", "e", "test", "type", "_define_property", "Unicode", "emDash", "bullet", "bulletSmall", "bulletSquare", "HorizontalRuleWidget", "WidgetType", "toDOM", "el", "document", "createElement", "className", "LinkButton", "eq", "other", "url", "view", "render", "_define_property", "CheckboxWidget", "_checked", "input", "type", "tabIndex", "checked", "state", "readOnly", "setAttribute", "onmousedown", "event", "line", "doc", "lineAt", "posAtDOM", "span", "text", "sliceDoc", "from", "to", "match", "pos", "indexOf", "dispatch", "changes", "insert", "preventDefault", "appendChild", "ignoreEvent", "TextWidget", "innerText", "hide", "Decoration", "replace", "blockQuote", "class", "fencedCodeLine", "fencedCodeLineFirst", "mx", "fencedCodeLineLast", "commentBlockLine", "commentBlockLineFirst", "commentBlockLineLast", "horizontalRule", "widget", "checkedTask", "uncheckedTask", "editingRange", "range", "focus", "selection", "main", "head", "autoHideTags", "Set", "buildDecorations", "options", "deco", "RangeSetBuilder", "atomicDeco", "headerLevels", "getHeaderLevels", "node", "level", "invariant", "length", "len", "fill", "name", "number", "splice", "slice", "listLevels", "enterList", "push", "leaveList", "pop", "getCurrentListLevel", "enterNode", "parseInt", "headers", "numberedHeadings", "undefined", "header", "editing", "mark", "firstChild", "add", "num", "map", "join", "theme", "heading", "list", "width", "orderedListIndentationWidth", "bulletListIndentationWidth", "offset", "listPaddingLeft", "attributes", "style", "next", "tree", "resolve", "label", "sliceString", "quoteMark", "getChild", "paragraph", "block", "viewportLineBlocks", "isFirst", "isLast", "test", "first", "last", "marks", "getChildren", "urlNode", "skip", "tagName", "href", "rel", "target", "renderLinkButton", "has", "parent", "leaveNode", "syntaxTree", "visibleRanges", "iterate", "enter", "wrapWithCatch", "leave", "finish", "forceUpdate", "StateEffect", "define", "decorateMarkdown", "ViewPlugin", "fromClass", "update", "docChanged", "viewportChanged", "focusChanged", "transactions", "some", "tr", "effects", "effect", "is", "selectionSet", "selectionChangeDelay", "hasFocus", "clearUpdate", "scheduleUpdate", "pendingUpdate", "setTimeout", "of", "clearTimeout", "destroy", "provide", "plugin", "Prec", "low", "EditorView", "decorations", "none", "atomicRanges", "image", "table", "adjustChanges", "formattingStyles", "syntaxTree", "hoverTooltip", "tooltipContent", "linkTooltip", "renderTooltip", "hoverTooltip", "view", "pos", "side", "syntax", "syntaxTree", "state", "resolveInner", "link", "i", "node", "parent", "name", "url", "getChild", "urlText", "sliceDoc", "from", "to", "startsWith", "end", "create", "el", "document", "createElement", "className", "tooltipContent", "dom", "offset", "x", "y", "hoverTime", "autocompletion", "log", "mention", "debug", "onSearch", "activateOnTyping", "closeOnBlur", "icons", "override", "context", "info", "match", "matchBefore", "from", "to", "explicit", "options", "text", "slice", "toLowerCase", "map", "value", "label", "keymap", "vim", "vscodeKeymap", "editorInputMode", "singleValueFacet", "InputModeExtensions", "default", "vscode", "of", "type", "keymap", "vscodeKeymap", "vim", "noTabster", "key", "run", "view", "dom", "parentElement", "focus", "indentMore", "getIndentUnit", "EditorSelection", "keymap", "Compartment", "Facet", "syntaxTree", "StateField", "Facet", "invariant", "itemToJSON", "type", "index", "level", "lineRange", "contentRange", "children", "map", "Tree", "toJSON", "root", "traverse", "itemOrCb", "maybeCb", "find", "pos", "item", "from", "to", "undefined", "next", "enter", "length", "nextSibling", "parent", "prev", "prevSibling", "lastDescendant", "at", "node", "getRange", "tree", "cb", "t", "value", "child", "getListItemContent", "state", "doc", "sliceString", "listItemToString", "indent", "repeat", "data", "i", "n", "p", "format", "line", "content", "toUpperCase", "Object", "entries", "k", "v", "join", "JSON", "stringify", "key", "toString", "padStart", "replaceAll", "treeFacet", "define", "combine", "values", "outlinerTree", "_options", "buildTree", "current", "prevSiblings", "iterate", "name", "docRange", "lineAt", "push", "leave", "create", "update", "tr", "docChanged", "provide", "field", "getSelection", "state", "selection", "main", "selectionEquals", "a", "b", "length", "every", "i", "includes", "selectionFacet", "Facet", "define", "combine", "values", "selectionCompartment", "Compartment", "selectNone", "view", "dispatch", "effects", "reconfigure", "of", "selectAll", "tree", "facet", "treeFacet", "items", "traverse", "item", "push", "index", "selectUp", "selectDown", "indentItemMore", "view", "pos", "getSelection", "state", "from", "tree", "facet", "treeFacet", "current", "find", "previous", "prev", "level", "indentMore", "indentItemLess", "indentUnit", "getIndentUnit", "changes", "traverse", "item", "line", "doc", "lineAt", "lineRange", "push", "to", "length", "dispatch", "moveItemDown", "nextSibling", "next", "currentContent", "sliceString", "getRange", "nextContent", "insert", "selection", "EditorSelection", "cursor", "scrollIntoView", "moveItemUp", "prevSibling", "prevContent", "deleteItem", "Math", "min", "toggleTask", "type", "indent", "repeat", "contentRange", "commands", "keymap", "of", "key", "preventDefault", "run", "shift", "number", "selectAll", "selectNone", "selectUp", "selectDown", "Prec", "Decoration", "EditorView", "ViewPlugin", "mx", "EditorSelection", "EditorState", "ViewPlugin", "log", "LIST_ITEM_REGEX", "initialize", "ViewPlugin", "fromClass", "view", "first", "state", "doc", "lineAt", "text", "sliceDoc", "from", "to", "match", "setTimeout", "insert", "dispatch", "changes", "selection", "EditorSelection", "cursor", "length", "editor", "EditorState", "transactionFilter", "of", "tr", "tree", "facet", "treeFacet", "docChanged", "current", "getSelection", "currentItem", "find", "contentRange", "prev", "startState", "prevItem", "undefined", "index", "lineRange", "cancel", "iterChanges", "fromA", "toA", "fromB", "toB", "line", "startTree", "startItem", "main", "deleteLine", "start", "replace", "push", "item", "log", "a", "b", "toString", "outliner", "_options", "Prec", "highest", "commands", "selectionCompartment", "of", "selectionFacet", "outlinerTree", "editor", "floatingMenu", "decorations", "decorateMarkdown", "listPaddingLeft", "EditorView", "contentAttributes", "class", "ViewPlugin", "fromClass", "update", "selectionChanged", "selectionEquals", "state", "facet", "startState", "focusChanged", "docChanged", "viewportChanged", "selectionSet", "updateDecorations", "view", "viewport", "from", "to", "hasFocus", "selection", "tree", "treeFacet", "current", "find", "ranges", "mainIndex", "doc", "lineNum", "lineAt", "number", "line", "item", "lineFrom", "contentRange", "lineTo", "isSelected", "includes", "index", "push", "Decoration", "mx", "range", "set", "none", "v", "theme", "Object", "assign", "borderLeftWidth", "borderRightWidth", "paddingLeft", "borderColor", "borderRadius", "borderTopWidth", "borderTopLeftRadius", "borderTopRightRadius", "paddingTop", "marginTop", "borderBottomWidth", "borderBottomLeftRadius", "borderBottomRightRadius", "paddingBottom", "marginBottom", "syntaxTree", "RangeSetBuilder", "StateField", "Decoration", "EditorView", "WidgetType", "preview", "options", "StateField", "define", "create", "state", "buildDecorations", "update", "decorations", "tr", "docChanged", "map", "changes", "provide", "field", "EditorView", "from", "atomicRanges", "of", "view", "builder", "RangeSetBuilder", "syntaxTree", "iterate", "enter", "node", "name", "link", "getLinkRef", "add", "to", "Decoration", "replace", "widget", "PreviewInlineWidget", "side", "addBlockContainer", "removeBlockContainer", "block", "PreviewBlockWidget", "finish", "mark", "getChildren", "urlNode", "getChild", "url", "sliceDoc", "startsWith", "label", "ref", "WidgetType", "eq", "other", "_link", "toDOM", "_view", "root", "document", "createElement", "classList", "textContent", "setAttribute", "_options", "_define_property", "destroy", "xmlLanguage", "parseMixed", "extendedMarkdown", "registry", "createMarkdownExtensions", "extensions", "wrap", "mixedParser", "parseBlock", "name", "parse", "customTags", "Object", "keys", "tagPattern", "RegExp", "join", "parseMixed", "node", "input", "parser", "xmlLanguage", "content", "read", "from", "to", "test", "StateEffect", "StateField", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "isNotFalsy", "BLINK_RATE", "streamer", "options", "cursor", "fadeIn", "filter", "isNotFalsy", "hideCursor", "StateEffect", "define", "showCursor", "StateField", "create", "update", "value", "tr", "effect", "effects", "is", "docChanged", "timerPlugin", "ViewPlugin", "fromClass", "clearTimeout", "timer", "setTimeout", "view", "dispatch", "of", "destroy", "cursorDecoration", "Decoration", "none", "_decorations", "show", "state", "field", "endPos", "doc", "length", "set", "widget", "CursorWidget", "side", "range", "provide", "f", "EditorView", "decorations", "from", "WidgetType", "toDOM", "Domino", "style", "opacity", "child", "text", "animation", "build", "FADE_IN_DURATION", "DEFAULT_REMOVAL_DELAY", "removalDelay", "removeDecoration", "fadeField", "next", "target", "to", "isReset", "changes", "iterChanges", "fromA", "toA", "startState", "add", "fromB", "toB", "inserted", "push", "mark", "class", "key", "_timers", "has", "get", "totalDelay", "id", "delete", "values", "clear", "Map", "theme", "syntaxTree", "RangeSetBuilder", "StateEffect", "StateField", "Decoration", "EditorView", "WidgetType", "invariant", "log", "invariant", "nodeToJson", "state", "node", "type", "name", "openTag", "getChild", "tagName", "tag", "_tag", "doc", "sliceString", "from", "to", "attributeNode", "attrName", "attrValue", "attr", "value", "rawValue", "startsWith", "endsWith", "slice", "nextSibling", "children", "child", "firstChild", "text", "trim", "push", "data", "length", "xmlTagContextEffect", "StateEffect", "define", "xmlTagUpdateEffect", "xmlTagResetEffect", "xmlTags", "options", "contextState", "StateField", "create", "undefined", "update", "value", "tr", "effect", "effects", "is", "widgets", "Map", "notifier", "mounted", "widget", "set", "id", "setWidgets", "values", "unmounted", "delete", "decorationsState", "state", "buildDecorations", "doc", "length", "field", "widgetState", "from", "decorations", "Decoration", "none", "docChanged", "reset", "changes", "touchesRange", "result", "add", "decorationSetToArray", "provide", "EditorView", "v", "atomicRanges", "of", "view", "map", "range", "deco", "spec", "PlaceholderWidget", "root", "props", "Component", "to", "context", "builder", "RangeSetBuilder", "tree", "syntaxTree", "type", "name", "iterate", "enter", "node", "registry", "nodeToJson", "def", "_tag", "block", "factory", "args", "replace", "atomic", "inclusive", "err", "log", "catch", "finish", "WidgetType", "_root", "eq", "other", "ignoreEvent", "toDOM", "_view", "document", "createElement", "destroy", "_dom", "_define_property", "invariant", "keymap", "defaultItems", "typewriter", "delay", "items", "t", "idx", "keymap", "of", "key", "run", "view", "clearTimeout", "text", "length", "i", "insert", "d", "setTimeout", "pos", "state", "selection", "main", "head", "dispatch", "changes", "from", "anchor", "Math", "random", "instanceCount", "useTextEditor", "props", "deps", "id", "doc", "initialValue", "extensions", "autoFocus", "scrollTo", "selection", "moveToEndOfLine", "debug", "useMemo", "getProviderValue", "instanceId", "useState", "view", "setView", "parentRef", "useRef", "useEffect", "current", "log", "length", "initialSelection", "anchor", "head", "undefined", "index", "indexOf", "state", "EditorState", "create", "documentId", "of", "EditorView", "exceptionSink", "err", "catch", "filter", "isNotFalsy", "parent", "scrollIntoView", "yMargin", "dispatchTransactions", "debugDispatcher", "to", "lineAt", "dispatch", "destroy", "warn", "createEditorStateTransaction", "focus", "focusableGroupAttrs", "useFocusableGroup", "tabBehavior", "ignoreDefaultKeydown", "Escape", "facet", "editorInputMode", "noTabster", "handleKeyUp", "useCallback", "event", "key", "target", "currentTarget", "focusAttributes", "tabIndex", "onKeyUp", "Editor", "forwardRef", "classNames", "id", "text", "props", "forwardedRef", "themeMode", "useThemeContext", "parentRef", "focusAttributes", "view", "useTextEditor", "initialValue", "content", "useImperativeHandle", "React", "div", "ref", "className", "mx", "Rx", "React", "memo", "useMemo", "rxFromSignal", "ElevationProvider", "MenuProvider", "ToolbarMenu", "createGapSeparator", "useMenuActions", "useMemo", "live", "createMenuAction", "createMenuItemGroup", "useEditorToolbarState", "initialState", "useMemo", "live", "createEditorAction", "id", "props", "invoke", "label", "ns", "translationKey", "rest", "createMenuAction", "createEditorActionGroup", "icon", "createMenuItemGroup", "iconOnly", "createBlockGroupAction", "value", "createEditorActionGroup", "variant", "selectCardinality", "createBlockActions", "getView", "blankLine", "Object", "entries", "blockquote", "codeblock", "table", "map", "type", "icon", "checked", "createEditorAction", "disabled", "view", "removeBlockquote", "addBlockquote", "removeCodeblock", "addCodeblock", "insertTable", "createBlocks", "state", "blockQuote", "blockType", "blockGroupAction", "blockActions", "nodes", "edges", "source", "target", "id", "formats", "strong", "emphasis", "strikethrough", "code", "link", "createFormattingGroup", "formatting", "createEditorActionGroup", "variant", "selectCardinality", "value", "Object", "keys", "filter", "key", "createFormattingActions", "getView", "entries", "map", "type", "icon", "checked", "createEditorAction", "view", "removeLink", "addLink", "inlineType", "Inline", "Strong", "Emphasis", "Strikethrough", "Code", "setStyle", "createFormatting", "state", "formattingGroupAction", "formattingActions", "nodes", "edges", "source", "target", "id", "createHeadingGroupAction", "value", "createEditorActionGroup", "variant", "applyActive", "selectCardinality", "createHeadingActions", "getView", "Object", "entries", "map", "levelStr", "icon", "level", "parseInt", "createEditorAction", "label", "count", "ns", "translationKey", "setHeading", "computeHeadingValue", "state", "blockType", "header", "exec", "createHeadings", "headingValue", "headingGroupAction", "headingActions", "nodes", "edges", "source", "target", "id", "createImageUploadAction", "onImageUpload", "createEditorAction", "testId", "icon", "createImageUpload", "nodes", "edges", "source", "target", "listStyles", "bullet", "ordered", "task", "createListGroupAction", "value", "createEditorActionGroup", "variant", "selectCardinality", "createListActions", "getView", "Object", "entries", "map", "listStyle", "icon", "checked", "createEditorAction", "view", "listType", "List", "Ordered", "Bullet", "Task", "removeList", "addList", "createLists", "state", "listGroupAction", "listActionsMap", "nodes", "edges", "source", "target", "id", "openSearchPanel", "createSearchAction", "getView", "createEditorAction", "testId", "icon", "openSearchPanel", "createSearch", "nodes", "edges", "source", "target", "createViewModeGroupAction", "value", "createEditorActionGroup", "variant", "applyActive", "selectCardinality", "createViewModeActions", "onViewModeChange", "Object", "entries", "preview", "source", "readonly", "map", "viewMode", "icon", "checked", "createEditorAction", "label", "ns", "translationKey", "createViewMode", "state", "viewModeGroupAction", "viewModeActions", "nodes", "edges", "target", "id", "createToolbarActions", "getView", "state", "customActions", "features", "Rx", "make", "get", "graph", "nodes", "edges", "headings", "rxFromSignal", "createHeadings", "push", "formatting", "createFormatting", "lists", "createLists", "blocks", "createBlocks", "image", "createImageUpload", "gap", "createGapSeparator", "custom", "search", "createSearch", "viewMode", "createViewMode", "useEditorToolbarActionGraph", "props", "menuCreator", "useMemo", "useMenuActions", "EditorToolbar", "memo", "classNames", "attendableId", "role", "menuProps", "React", "ElevationProvider", "elevation", "MenuProvider", "ToolbarMenu", "textBlockWidth", "useControllableState", "React", "Fragment", "useCallback", "useEffect", "useRef", "useState", "addEventListener", "Icon", "Popover", "toLocalizedString", "useThemeContext", "useTranslation", "CommandMenuProvider", "groups", "onSelect", "onActivate", "currentItem", "children", "open", "propsOpen", "onOpenChange", "defaultOpen", "tx", "useThemeContext", "groupsWithItems", "filter", "group", "items", "length", "trigger", "useRef", "setOpen", "useControllableState", "prop", "onChange", "defaultProp", "handleDxAnchorActivate", "useCallback", "event", "dxTrigger", "refId", "current", "queueMicrotask", "rootRef", "setRootRef", "useState", "useEffect", "addEventListener", "capture", "passive", "React", "Popover", "Root", "modal", "Portal", "Content", "align", "onOpenAutoFocus", "preventDefault", "classNames", "elevation", "Viewport", "ul", "map", "index", "Fragment", "key", "id", "CommandGroup", "div", "className", "Arrow", "VirtualTrigger", "virtualRef", "role", "ref", "t", "useTranslation", "label", "span", "toLocalizedString", "item", "CommandItem", "handleSelect", "scrollIntoView", "behavior", "block", "li", "onClick", "icon", "Icon", "size", "getItem", "flatMap", "find", "getNextItem", "findIndex", "getPreviousItem", "filterItems", "insertAtCursor", "view", "head", "insert", "dispatch", "changes", "from", "to", "selection", "anchor", "insertAtLineStart", "line", "state", "doc", "lineAt", "coreSlashCommands", "linkSlashCommands", "effects", "commandRangeEffect", "of", "range"]
|
7
7
|
}
|