@dxos/react-ui-editor 0.5.9-main.ea1d25b → 0.5.9-main.f099efe
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 +39 -32
- package/dist/lib/browser/index.mjs.map +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/package.json +25 -25
- package/src/components/TextEditor/TextEditor.stories.tsx +2 -2
- package/src/components/Toolbar/Toolbar.stories.tsx +2 -2
- package/src/extensions/automerge/automerge.stories.tsx +2 -2
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/translations.ts", "../../../src/index.ts", "../../../src/components/TextEditor/TextEditor.tsx", "../../../src/extensions/annotations.ts", "../../../src/extensions/cursor.ts", "../../../src/extensions/autocomplete.ts", "../../../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/command.ts", "../../../src/extensions/command/hint.ts", "../../../src/extensions/command/state.ts", "../../../src/extensions/util/dom.ts", "../../../src/extensions/comments.ts", "../../../src/styles/markdown.ts", "../../../src/styles/tokens.ts", "../../../src/styles/layout.ts", "../../../src/util.ts", "../../../src/extensions/doc.ts", "../../../src/extensions/dnd.ts", "../../../src/extensions/factories.ts", "../../../src/themes/default.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/decorate.ts", "../../../src/extensions/markdown/image.ts", "../../../src/extensions/markdown/link.ts", "../../../src/extensions/markdown/table.ts", "../../../src/extensions/mention.ts", "../../../src/extensions/modes.ts", "../../../src/extensions/state.ts", "../../../src/extensions/typewriter.ts", "../../../src/components/Toolbar/Toolbar.tsx", "../../../src/hooks/useActionHandler.ts", "../../../src/hooks/useTextEditor.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport const translationKey = 'react-ui-editor';\n\nexport default [\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 'image label': 'Insert image',\n 'heading label': 'Heading level',\n 'table label': 'Create table',\n 'heading level label_zero': 'Paragraph',\n 'heading level label_one': 'Heading level {{count}}',\n 'heading level label_other': 'Heading level {{count}}',\n },\n },\n },\n];\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport translations from './translations';\n\nexport { type Extension, type EditorState } from '@codemirror/state';\nexport { type 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 './extensions';\nexport * from './hooks';\nexport { getToken, editorWithToolbarLayout, editorFillLayoutRoot, editorFillLayoutEditor } from './styles';\nexport * from './themes';\nexport * from './util';\nexport { translations };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { EditorState, type EditorStateConfig, type StateEffect } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport React, {\n type KeyboardEventHandler,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\n\nimport { log } from '@dxos/log';\nimport { useDefaultValue } from '@dxos/react-ui';\nimport { isNotFalsy } from '@dxos/util';\n\nimport { documentId, editorMode, focusEvent } from '../../extensions';\nimport { logChanges } from '../../util';\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 TextEditorProps = Pick<EditorStateConfig, 'doc' | 'selection' | 'extensions'> & {\n id?: string;\n className?: string;\n autoFocus?: boolean;\n scrollTo?: StateEffect<unknown>;\n moveToEndOfLine?: boolean;\n debug?: boolean;\n dataTestId?: string;\n};\n\nlet instanceCount = 0;\n\n/**\n * Thin wrapper for text editor.\n * Handles tabster and focus management.\n */\n// TODO(burdon): Use useTextEditor internally.\nexport const TextEditor = forwardRef<EditorView | null, TextEditorProps>(\n (\n {\n id,\n // TODO(wittjosiah): Rename initialText?\n doc,\n selection,\n extensions,\n className,\n autoFocus,\n scrollTo: propsScrollTo,\n moveToEndOfLine,\n debug,\n dataTestId,\n },\n forwardedRef,\n ) => {\n // NOTE: Increments by 2 in strict mode.\n const [instanceId] = useState(() => `text-editor-${++instanceCount}`);\n const scrollTo = useDefaultValue(propsScrollTo, EditorView.scrollIntoView(0, { yMargin: 0 }));\n\n // TODO(burdon): Make tabster optional.\n const tabsterDOMAttribute = useFocusableGroup({ tabBehavior: 'limited' });\n const rootRef = useRef<HTMLDivElement>(null);\n const [view, setView] = useState<EditorView | null>(null);\n\n // The view ref can be used to focus the editor.\n // NOTE: Ref updates do not cause the parent to re-render; also the ref is not available immediately.\n useImperativeHandle<EditorView | null, EditorView | null>(forwardedRef, () => view, [view]);\n\n // Set focus.\n useEffect(() => {\n if (autoFocus) {\n view?.focus();\n }\n }, [view, autoFocus]);\n\n // Create editor state and view.\n // The view is recreated if the model or extensions are changed.\n useEffect(() => {\n log('create', { id, instanceId });\n\n //\n // EditorState\n // https://codemirror.net/docs/ref/#state.EditorStateConfig\n // NOTE: Don't set selection here in case it is invalid (and crashes the state); dispatch below.\n //\n const state = EditorState.create({\n doc,\n extensions: [\n id && documentId.of(id),\n // TODO(burdon): NOTE: Doesn't catch errors in keymap functions.\n EditorView.exceptionSink.of((err) => {\n log.catch(err);\n }),\n\n // Focus.\n EditorView.updateListener.of((update) => {\n update.transactions.forEach((transaction) => {\n if (transaction.isUserEvent(focusEvent)) {\n rootRef.current?.focus();\n }\n });\n }),\n\n extensions,\n ].filter(isNotFalsy),\n });\n\n //\n // EditorView\n // https://codemirror.net/docs/ref/#view.EditorViewConfig\n //\n const view = new EditorView({\n state,\n parent: rootRef.current!,\n scrollTo,\n\n // NOTE: Uncomment to debug/monitor all transactions.\n // https://codemirror.net/docs/ref/#view.EditorView.dispatch\n dispatchTransactions: (trs, view) => {\n if (debug) {\n logChanges(trs);\n }\n view.update(trs);\n },\n });\n\n // Position cursor at end of first line.\n if (moveToEndOfLine && !(scrollTo || selection)) {\n const { to } = view.state.doc.lineAt(0);\n view.dispatch({ selection: { anchor: to } });\n }\n\n // Remove tabster attribute (rely on custom keymap).\n if (state.facet(editorMode).noTabster) {\n rootRef.current?.removeAttribute('data-tabster');\n }\n\n setView(view);\n\n return () => {\n log('destroy', { id, instanceId });\n view?.destroy();\n };\n }, [id, selection, scrollTo, editorMode, extensions]);\n\n // Focus editor on Enter (e.g., when tabbing to this component).\n const handleKeyUp = useCallback<KeyboardEventHandler<HTMLDivElement>>(\n (event) => {\n const { key } = event;\n switch (key) {\n case 'Enter': {\n view?.focus();\n break;\n }\n }\n },\n [view],\n );\n\n return (\n <div\n role='none'\n ref={rootRef}\n tabIndex={0}\n className={className}\n data-testid={dataTestId}\n {...tabsterDOMAttribute}\n onKeyUp={handleKeyUp}\n />\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type EditorState, type Extension, StateField } from '@codemirror/state';\nimport { Decoration, EditorView } from '@codemirror/view';\n\nimport { isNotFalsy } from '@dxos/util';\n\nimport { Cursor } from './cursor';\n\ntype Annotation = {\n cursor: string;\n};\n\nexport type AnnotationOptions = {\n match?: RegExp; // TODO(burdon): Update via hook (e.g., for search).\n};\n\nconst annotationMark = Decoration.mark({ class: 'cm-annotation' });\n\nexport const annotations = (options: AnnotationOptions = {}): Extension => {\n // TODO(burdon): Build index of matches and cursors (in background function).\n // Define annotation action in prompt. E.g., extract company names. Find links, etc.\n // Show popover card. A16Z chain demo. Identify, extract, research, link. Multi-agent.\n const match = (state: EditorState) => {\n const annotations: Annotation[] = [];\n const text = state.doc.toString();\n if (options.match) {\n const matches = text.matchAll(options.match);\n for (const match of matches) {\n const from = match.index!;\n const to = from + match[0].length;\n const cursor = Cursor.getCursorFromRange(state, { from, to });\n annotations.push({ cursor });\n }\n }\n\n return annotations;\n };\n\n const annotationsState = StateField.define<Annotation[]>({\n create: (state) => {\n return match(state);\n },\n update: (value, tr) => {\n if (!tr.changes.empty) {\n return match(tr.state);\n }\n\n return value;\n },\n });\n\n return [\n annotationsState,\n EditorView.decorations.compute([annotationsState], (state) => {\n const annotations = state.field(annotationsState);\n const decorations = annotations\n .map((annotation) => {\n const range = Cursor.getRangeFromCursor(state, annotation.cursor);\n return range && annotationMark.range(range.from, range.to);\n })\n .filter(isNotFalsy);\n\n return Decoration.set(decorations);\n }),\n styles,\n ];\n};\n\nconst styles = EditorView.baseTheme({\n '.cm-annotation': {\n textDecoration: 'underline',\n textDecorationStyle: 'wavy',\n textDecorationColor: 'red',\n },\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type EditorState, Facet } from '@codemirror/state';\n\nimport type { Range } from './types';\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 = Facet.define<CursorConverter, CursorConverter>({\n combine: (providers) => {\n return providers[0] ?? defaultCursorConverter;\n },\n });\n\n static readonly getCursorFromRange = (state: EditorState, range: Range) => {\n const cursorConverter = state.facet(Cursor.converter);\n\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 2023 DXOS.org\n//\n\n// https://codemirror.net/examples/autocompletion\n// https://codemirror.net/docs/ref/#autocomplete.autocompletion\n// https://codemirror.net/docs/ref/#autocomplete.Completion\n\nimport {\n autocompletion,\n completionKeymap,\n type Completion,\n type CompletionContext,\n type CompletionResult,\n} from '@codemirror/autocomplete';\nimport { markdownLanguage } from '@codemirror/lang-markdown';\nimport { keymap } from '@codemirror/view';\n\nexport type AutocompleteResult = Completion;\n\nexport type AutocompleteOptions = {\n onSearch: (text: string) => Completion[];\n};\n\n/**\n * Autocomplete extension.\n */\nexport const autocomplete = ({ onSearch }: AutocompleteOptions) => {\n return [\n // https://codemirror.net/docs/ref/#view.keymap\n // https://discuss.codemirror.net/t/how-can-i-replace-the-default-autocompletion-keymap-v6/3322\n // TODO(burdon): Set custom keymap.\n keymap.of(completionKeymap),\n\n // https://codemirror.net/examples/autocompletion\n // https://codemirror.net/docs/ref/#autocomplete.autocompletion\n autocompletion({\n activateOnTyping: false,\n\n // closeOnBlur: false,\n // defaultKeymap: false,\n\n // TODO(burdon): Styles/fragments.\n tooltipClass: () => 'shadow rounded',\n }),\n\n // TODO(burdon): Option to create new page?\n // TODO(burdon): Optional decoration via addToOptions\n markdownLanguage.data.of({\n autocomplete: (context: CompletionContext): CompletionResult | null => {\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.toLowerCase()),\n };\n },\n }),\n ];\n};\n", "//\n// Copyright 2023 DXOS.org\n// Copyright 2024 Automerge\n// Ref: https://github.com/automerge/automerge-codemirror\n//\n\nimport { StateField, type Extension } from '@codemirror/state';\nimport { EditorView, ViewPlugin } from '@codemirror/view';\n\nimport { next as A } from '@dxos/automerge/automerge';\nimport { type DocAccessor } from '@dxos/react-client/echo';\n\nimport { cursorConverter } from './cursor';\nimport { updateHeadsEffect, isReconcile, type State } from './defs';\nimport { Syncer } from './sync';\nimport { Cursor } from '../cursor';\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.docSync()!),\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 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 { toCursor, type DocAccessor, fromCursor } from '@dxos/react-client/echo';\n\nimport { type CursorConverter } from '../cursor';\n\nexport const cursorConverter = (accessor: DocAccessor): CursorConverter => ({\n // TODO(burdon): Handle assoc to associate with a previous character.\n toCursor: (pos) => {\n try {\n return toCursor(accessor, pos);\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 { Annotation, StateEffect, type StateField, type EditorState, type Transaction } from '@codemirror/state';\n\nimport { type Heads, type Prop } from '@dxos/automerge/automerge';\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 { type StateField } from '@codemirror/state';\nimport { type EditorView } from '@codemirror/view';\n\nimport { next as A } from '@dxos/automerge/automerge';\nimport { type IDocHandle } from '@dxos/react-client/echo';\n\nimport { getLastHeads, getPath, type State, reconcileAnnotation, updateHeads, isReconcile } 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) {\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) {\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) {\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.docSync()!);\n const diff = A.equals(oldHeads, newHeads) ? [] : A.diff(this._handle.docSync()!, 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 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 { type EditorState, type StateField, type Transaction, type Text } from '@codemirror/state';\n\nimport { next as A, type Heads } from '@dxos/automerge/automerge';\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 { ChangeSet, type ChangeSpec, type EditorSelection, type EditorState } from '@codemirror/state';\nimport { type EditorView } from '@codemirror/view';\n\nimport {\n type DelPatch,\n type InsertPatch,\n type Patch,\n type Prop,\n type PutPatch,\n type SpliceTextPatch,\n} from '@dxos/automerge/automerge';\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, Facet, type Extension, RangeSet, type Range } 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 } from '../cursor';\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 = Facet.define<AwarenessProvider, AwarenessProvider>({\n combine: (providers) => providers[0] ?? dummyProvider,\n});\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 // TODO(burdon): Rename light/dark.\n color?: 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 public decorations: DecorationSet = RangeSet.of([]);\n\n private readonly _ctx = new Context();\n\n private _cursorConverter: CursorConverter;\n private _provider: AwarenessProvider;\n private _lastAnchor?: number = undefined;\n private _lastHead?: number = undefined;\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() {\n void this._ctx.dispose();\n this._provider.close();\n }\n\n update(update: ViewUpdate) {\n this._updateLocalSelection(update);\n this._updateRemoteSelections(update);\n }\n\n private _updateLocalSelection(update: ViewUpdate) {\n const hasFocus = update.view.hasFocus && update.view.dom.ownerDocument.hasFocus();\n const { anchor = undefined, head = undefined } = hasFocus ? update.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),\n }\n : undefined,\n );\n }\n\n private _updateRemoteSelections(update: ViewUpdate) {\n const decorations: Range<Decoration>[] = [];\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), update.view.state.doc.length);\n const end = Math.min(Math.max(anchor, head), update.view.state.doc.length);\n\n const startLine = update.view.state.doc.lineAt(start);\n const endLine = update.view.state.doc.lineAt(end);\n\n // TODO(burdon): Factor out styles.\n const color = state.info.color ?? '#30bced';\n const lightColor = state.info.lightColor ?? color + '33';\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 = update.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', color),\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\n return span;\n }\n\n override updateDOM() {\n return false;\n }\n\n override eq(widget: this) {\n return widget._color === this._color;\n }\n\n override get estimatedHeight() {\n return -1;\n }\n\n override ignoreEvent() {\n return true;\n }\n}\n\nconst styles = EditorView.baseTheme({\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',\n zIndex: 101,\n transition: 'opacity .3s ease-in-out',\n backgroundColor: 'inherit',\n borderRadius: '2px',\n // These should be separate.\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() {\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 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() {\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() {\n invariant(this._postTask);\n this._postTask.schedule();\n }\n\n private _handlePostMessage(message: ProtocolMessage) {\n invariant(message.kind === 'post');\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 { 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() {\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() {\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() {\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() {\n // console.log('start');\n invariant(this._canvas && this._ctx);\n this._running = true;\n this.loop();\n }\n\n stop() {\n // console.log('stop');\n this._running = false;\n this._node.style.transform = 'translate(0px, 0px)';\n }\n\n loop() {\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: number }>(({ time }) => {\n this._shakeTime = this._shakeTimeMax || time;\n this._shakeTimeMax = time;\n }, 100);\n\n spawn = throttle<{ element: Element; point: { x: number; y: number } }>(({ element, point }) => {\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() {\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) {\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) {\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\nfunction throttle<T>(callback: (arg: T) => void, limit: number): (arg: T) => void {\n let wait = false;\n return function (...args: any[]) {\n if (!wait) {\n // @ts-ignore\n callback.apply(this, args);\n wait = true;\n setTimeout(() => {\n wait = false;\n }, limit);\n }\n };\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 2024 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { EditorView, keymap } from '@codemirror/view';\n\nimport { hintViewPlugin } from './hint';\nimport { closeEffect, commandConfig, commandKeyBindings, 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 CommandAction = {\n insert?: string;\n};\n\nexport type CommandOptions = {\n onRender: (el: HTMLElement, cb: (action?: CommandAction) => void) => void;\n onHint: () => string | undefined;\n};\n\nexport const command = (options: CommandOptions): Extension => {\n return [\n commandConfig.of(options),\n commandState,\n keymap.of(commandKeyBindings),\n hintViewPlugin(options),\n EditorView.focusChangeEffect.of((_, focusing) => {\n return focusing ? closeEffect.of(null) : null;\n }),\n ];\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { RangeSetBuilder } from '@codemirror/state';\nimport { Decoration, EditorView, ViewPlugin, type ViewUpdate, WidgetType } from '@codemirror/view';\n\nimport { type CommandOptions } from './command';\nimport { commandState } from './state';\nimport { clientRectsFor, flattenRect } from '../util/dom';\n\nclass CommandHint extends WidgetType {\n constructor(readonly content: string | HTMLElement) {\n super();\n }\n\n toDOM() {\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 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 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 return rect;\n }\n\n override ignoreEvent() {\n return false;\n }\n}\n\nexport const hintViewPlugin = ({ onHint }: CommandOptions) =>\n ViewPlugin.fromClass(\n class {\n deco = Decoration.none;\n update(update: ViewUpdate) {\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 // TODO(burdon): Clashes with placeholder if pos === 0.\n // TODO(burdon): Show after delay or if blank line above?\n if (selection.from === selection.to && line.from === line.to) {\n const hint = onHint();\n if (hint) {\n builder.add(selection.from, selection.to, Decoration.widget({ widget: new CommandHint(hint) }));\n }\n }\n }\n\n this.deco = builder.finish();\n }\n },\n {\n provide: (plugin) => [EditorView.decorations.of((view) => view.plugin(plugin)?.deco ?? Decoration.none)],\n },\n );\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Facet, StateEffect, StateField } from '@codemirror/state';\nimport {\n type Command,\n type EditorView,\n type KeyBinding,\n showTooltip,\n type Tooltip,\n type TooltipView,\n} from '@codemirror/view';\n\nimport { type CommandOptions } from './command';\n\ntype CommandState = {\n tooltip?: Tooltip | null;\n};\n\nexport const commandConfig = Facet.define<CommandOptions, Required<CommandOptions>>({\n combine: (providers) => providers[0],\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 if (effect.is(openEffect)) {\n const options = tr.state.facet(commandConfig);\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 dom = document.createElement('div');\n const tooltipView: TooltipView = {\n dom,\n mount: (view: EditorView) => {\n if (fullWidth) {\n const parent = dom.parentElement!;\n const { paddingLeft, paddingRight } = window.getComputedStyle(parent);\n const widthWithoutPadding = parent.clientWidth - parseFloat(paddingLeft) - parseFloat(paddingRight);\n dom.style.width = `${widthWithoutPadding}px`;\n }\n\n // Render react component.\n options.onRender(dom, (action) => {\n view.dispatch({ effects: closeEffect.of(null) });\n if (action?.insert?.length) {\n view.dispatch({\n changes: { from: pos, insert: action.insert },\n selection: { anchor: pos + action.insert.length },\n });\n }\n // NOTE: Truncates text if set focus immediately.\n requestAnimationFrame(() => view.focus());\n });\n },\n };\n\n return tooltipView;\n },\n };\n return { tooltip };\n }\n }\n\n return state;\n },\n provide: (field) => [showTooltip.from(field, (value) => value.tooltip ?? null)],\n});\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 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 return false;\n};\n\nexport const commandKeyBindings: readonly KeyBinding[] = [\n { key: '/', run: openCommand },\n { key: 'Escape', run: closeCommand },\n];\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// Copied from @codemirror/view\n\nexport interface 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) => {\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) => {\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) => {\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 2023 DXOS.org\n//\n\nimport { invertedEffects } from '@codemirror/commands';\nimport { type Extension, Facet, StateEffect, StateField, type Text, type ChangeDesc } from '@codemirror/state';\nimport { hoverTooltip, keymap, type Command, Decoration, EditorView, type Rect } from '@codemirror/view';\nimport sortBy from 'lodash.sortby';\nimport { useEffect } from 'react';\n\nimport { debounce } from '@dxos/async';\nimport { log } from '@dxos/log';\nimport { nonNullable } from '@dxos/util';\n\nimport { Cursor } from './cursor';\nimport { type Comment, type Range } from './types';\nimport { getToken } from '../styles';\nimport { callbackWrapper } from '../util';\n\n//\n// State management.\n//\n\nconst documentId = Facet.define<string | undefined, string | undefined>({ combine: (values) => values[0] });\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 */\nconst commentsState = StateField.define<CommentsState>({\n create: (state) => ({ id: state.facet(documentId), comments: [], selection: {} }),\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(nonNullable);\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// UX\n//\n\nconst styles = EditorView.baseTheme({\n '&light .cm-comment, &light .cm-comment-current': { mixBlendMode: 'darken' },\n '&dark .cm-comment, &dark .cm-comment-current': { mixBlendMode: 'plus-lighter' },\n '&light .cm-comment': {\n backgroundColor: getToken('extend.colors.yellow.50'),\n },\n '&light .cm-comment-current': {\n backgroundColor: getToken('extend.colors.yellow.100'),\n },\n '&dark .cm-comment': {\n color: getToken('extend.colors.yellow.50'),\n backgroundColor: getToken('extend.colors.yellow.900'),\n },\n '&dark .cm-comment-current': {\n color: getToken('extend.colors.yellow.100'),\n backgroundColor: getToken('extend.colors.yellow.950'),\n },\n});\n\nconst commentMark = Decoration.mark({ class: 'cm-comment', attributes: { 'data-testid': 'cm-comment' } });\nconst commentCurrentMark = Decoration.mark({\n class: 'cm-comment-current',\n attributes: { 'data-testid': 'cm-comment' },\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 || range.from === range.to) {\n log.warn('Invalid range:', range);\n return undefined;\n }\n\n if (comment.comment.id === current) {\n return commentCurrentMark.range(range.from, range.to);\n } else {\n return commentMark.range(range.from, range.to);\n }\n })\n .filter(nonNullable);\n\n return Decoration.set(decorations);\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 const id = options.onCreate?.({ cursor, from, location: view.coordsAtPos(from) });\n if (id) {\n // Update range.\n view.dispatch({\n effects: setSelection.of({ current: id }),\n selection: { anchor: to },\n });\n\n return true;\n }\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 create a new thread and return the thread id.\n */\n onCreate?: (params: { cursor: string; from: number; location?: Rect | null }) => string | undefined;\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 * Called to render tooltip.\n */\n onHover?: (el: Element, shortcut: string) => void;\n};\n\nconst optionsFacet = Facet.define<CommentsOptions, CommentsOptions>({ combine: (providers) => providers[0] });\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 documentId.of(options.id),\n commentsState,\n commentsDecorations,\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 //\n // Hover tooltip (for key shortcut hints, etc.)\n // TODO(burdon): Factor out to generic hints extension for current selection/line.\n //\n options.onHover\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.onHover!(el, shortcut);\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 //\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 ];\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\n const range = Cursor.getRangeFromCursor(view.state, comment.comment.cursor);\n if (range) {\n view.dispatch({\n selection: { anchor: range.from },\n effects: [\n //\n EditorView.scrollIntoView(range.from, center ? { y: 'center' } : undefined),\n setSelection.of({ current: id }),\n ],\n });\n }\n};\n\n/**\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 }, [id, view, comments]);\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// TODO(burdon): Better way to align vertically than negative margin? Font-specific?\n// https://tailwindcss.com/docs/font-weight\nexport const headings: Record<HeadingLevel, string> = {\n 1: 'mbs-4 mbe-2 font-medium text-inherit no-underline text-4xl',\n 2: 'mbs-4 mbe-2 font-medium text-inherit no-underline text-3xl',\n 3: 'mbs-4 mbe-2 font-medium text-inherit no-underline text-2xl',\n 4: 'mbs-4 mbe-2 font-medium text-inherit no-underline text-xl',\n 5: 'mbs-4 mbe-2 font-medium text-inherit no-underline text-lg',\n 6: 'mbs-4 mbe-2 font-medium text-inherit no-underline',\n};\n\nexport const heading = (level: HeadingLevel) => {\n return headings[level];\n};\n\nexport const text = 'text-neutral-800 dark:text-neutral-200';\nexport const light = 'text-neutral-200 dark:text-neutral-800';\n\nexport const mark = mx('!font-normal !no-underline !text-inherit opacity-40', light);\n\nexport const paragraph = 'mlb-1';\n\nexport const bold = 'font-bold';\nexport const italic = 'italic';\nexport const strikethrough = 'line-through';\n\nexport const code = 'font-mono !no-underline text-neutral-700 dark:text-neutral-300';\nexport const codeMark = 'font-mono text-primary-500';\nexport const codeBlock = 'mlb-2 font-mono bg-neutral-500/10 p-3 rounded';\n\nexport const inlineUrl = mx(code, 'px-1');\n\nexport const blockquote = mx('pl-1 mr-1 border-is-4 border-primary-500/70 dark:border-primary-500/30', light);\n\nexport const horizontalRule =\n 'flex mlb-4 border-b text-neutral-100 dark:text-neutral-900 border-neutral-200 dark:border-neutral-800';\n\n// TODO(thure): Tailwind was not seeing `[&>li:before]:content-[\"•\"]` as a utility class, but it would work if instead of `\"•\"` it was `\"X\"`… why?\nexport const unorderedList =\n 'mlb-2 grid grid-cols-[min-content_1fr] [&>li:before]:content-[attr(marker)] [&>li:before]:mlb-1 [&>li:before]:mie-2';\nexport const orderedList =\n 'mlb-2 grid grid-cols-[min-content_1fr] [&>li:before]:content-[counters(section,_\".\")_\"._\"] [counter-reset:section] [&>li:before]:mlb-1';\n\nexport const listItem = 'contents before:[counter-increment:section]';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport get from 'lodash.get';\nimport type { StyleSpec } from 'style-mod';\n\nimport { tailwindConfig, type TailwindConfig } from '@dxos/react-ui-theme';\n\nexport type ThemeStyles = {\n [selector: string]: StyleSpec;\n};\n\n// TODO(thure): Why export the whole theme? Can this be done differently?\nexport const tokens: TailwindConfig['theme'] = tailwindConfig({}).theme;\n\nexport const getToken = (path: string, defaultValue: any = undefined) => get(tokens, path, defaultValue);\n", "//\n// Copyright 2024 DXOS.org\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\nexport const editorFillLayoutRoot = 'bs-full relative';\nexport const editorFillLayoutEditor = '!absolute inset-0';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { Transaction } from '@codemirror/state';\n\nimport { log } from '@dxos/log';\n\n/**\n * CodeMirror callbacks swallow errors so wrap handlers.\n */\n// TODO(burdon): EditorView.exceptionSink should catch errors.\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\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.info('changes', { changes });\n }\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Facet } from '@codemirror/state';\n\nimport { invariant } from '@dxos/invariant';\n\nexport const documentId = Facet.define<string, string>({\n combine: (providers) => {\n invariant(providers.length <= 1);\n return providers[0];\n },\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport type { Extension } from '@codemirror/state';\nimport { dropCursor, EditorView } from '@codemirror/view';\n\nimport { getToken } from '../styles';\n\nexport type DNDOptions = { onDrop?: (view: EditorView, event: { files: FileList }) => void };\n\nconst styles = EditorView.baseTheme({\n '.cm-dropCursor': {\n borderLeft: `2px solid ${getToken('extend.colors.primary.500')}`,\n color: getToken('extend.colors.primary.500'),\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 } from '@codemirror/language';\nimport { searchKeymap } from '@codemirror/search';\nimport { EditorState, type Extension } from '@codemirror/state';\nimport {\n EditorView,\n type KeyBinding,\n drawSelection,\n dropCursor,\n highlightActiveLine,\n keymap,\n lineNumbers,\n placeholder,\n scrollPastEnd,\n} from '@codemirror/view';\nimport defaultsDeep from 'lodash.defaultsdeep';\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, hueTokens } from '@dxos/react-ui-theme';\nimport { hexToHue, isNotFalsy } from '@dxos/util';\n\nimport { automerge } from './automerge';\nimport { awareness, SpaceAwarenessProvider } from './awareness';\nimport { type ThemeStyles } from '../styles';\nimport { defaultTheme } from '../themes';\n\n//\n// Basic\n//\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 */\nexport type BasicExtensionsOptions = {\n allowMultipleSelections?: boolean;\n bracketMatching?: boolean;\n closeBrackets?: boolean;\n dropCursor?: boolean;\n drawSelection?: boolean;\n editable?: boolean;\n highlightActiveLine?: boolean;\n history?: boolean;\n indentWithTab?: boolean;\n keymap?: null | 'default' | 'standard';\n lineNumbers?: boolean;\n lineWrapping?: boolean;\n placeholder?: string;\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 editable: true,\n history: true,\n keymap: 'standard',\n lineWrapping: true,\n search: true,\n};\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: BasicExtensionsOptions = 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(),\n props.highlightActiveLine && highlightActiveLine(),\n props.history && history(),\n props.lineNumbers && lineNumbers(),\n props.lineWrapping && EditorView.lineWrapping,\n props.placeholder && placeholder(props.placeholder),\n props.readonly && [EditorState.readOnly.of(true), EditorView.editable.of(false)],\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 // 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 ].filter(isNotFalsy),\n ),\n ].filter(isNotFalsy);\n};\n\n//\n// Theme\n//\n\nexport type ThemeExtensionsOptions = {\n theme?: ThemeStyles;\n themeMode?: ThemeMode;\n slots?: {\n editor?: {\n className?: string;\n };\n content?: {\n className?: string;\n };\n };\n};\n\nconst defaultThemeSlots = {\n editor: {\n className: 'w-full bs-full',\n },\n};\n\nexport const createThemeExtensions = ({ theme, themeMode, slots: _slots }: ThemeExtensionsOptions = {}): Extension => {\n const slots = defaultsDeep({}, _slots, defaultThemeSlots);\n return [\n EditorView.baseTheme(defaultTheme),\n EditorView.darkTheme.of(themeMode === 'dark'),\n theme && EditorView.theme(theme),\n slots.editor?.className && EditorView.editorAttributes.of({ class: slots.editor.className }),\n slots.content?.className && EditorView.contentAttributes.of({ class: slots.content.className }),\n ].filter(isNotFalsy);\n};\n\n//\n// Data\n//\n\nexport type DataExtensionsProps = {\n id: string;\n text?: DocAccessor;\n space?: Space;\n identity?: Identity | null;\n};\n\n// TODO(burdon): Move out of react-ui-editor (remove echo deps).\nexport const createDataExtensions = ({ id, text, space, identity }: DataExtensionsProps): Extension[] => {\n const extensions: Extension[] = text ? [automerge(text)] : [];\n\n if (space && identity) {\n const peerId = identity?.identityKey.toHex();\n const { cursorLightValue, cursorDarkValue } =\n hueTokens[(identity?.profile?.data?.hue as HuePalette | undefined) ?? hexToHue(peerId ?? '0')];\n const awarenessProvider = new SpaceAwarenessProvider({\n space,\n channel: `awareness.${id}`,\n peerId: identity.identityKey.toHex(),\n info: {\n displayName: identity.profile?.displayName ?? generateName(identity.identityKey.toHex()),\n color: cursorDarkValue,\n lightColor: cursorLightValue,\n },\n });\n\n extensions.push(awareness(awarenessProvider));\n }\n\n return extensions;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport get from 'lodash.get';\n\nimport { type ThemeStyles, tokens } from '../styles';\n\n// TODO(burdon): Can we use @apply and import css file?\n// https://tailwindcss.com/docs/reusing-styles#extracting-classes-with-apply?\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 * NOTE: Use one of '&', '&light', and '&dark' prefix to scope instance.\n * NOTE: `light` and `dark` selectors are preprocessed by CodeMirror and can only be in the base theme.\n */\nexport const defaultTheme: ThemeStyles = {\n //\n // Main layout:\n // https://codemirror.net/examples/styling\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\n '&': {},\n '&.cm-focused': {\n outline: 'none',\n },\n\n // NOTE: See https://codemirror.net/docs/guide (DOM Structure).\n '.cm-scroller': {\n // TODO(burdon): Reconcile with docs: https://codemirror.net/docs/guide\n // Inside of that is the scroller element. If the editor has its own scrollbar, this one should be styled with overflow: auto. But it doesn't have to—the editor also supports growing to accomodate its content, or growing up to a certain max-height and then scrolling.\n overflowY: 'auto',\n fontFamily: get(tokens, 'fontFamily.body', []).join(','),\n lineHeight: 1.5,\n },\n\n '.cm-content': {\n // TODO(burdon): Is it possible to remove the padding value from CM's default theme?\n // padding: 'unset',\n // NOTE: Base font size (otherwise defined by HTML tag, which might be different for storybook).\n fontSize: '16px',\n },\n '&light .cm-content': {\n color: get(tokens, 'extend.semanticColors.base.fg.light', 'black'),\n caretColor: 'black',\n },\n '&dark .cm-content': {\n color: get(tokens, 'extend.semanticColors.base.fg.dark', 'white'),\n caretColor: 'white',\n },\n\n //\n // Cursor\n //\n '&light .cm-cursor, &light .cm-dropCursor': {\n borderLeft: '2px solid black',\n },\n '&dark .cm-cursor, &dark .cm-dropCursor': {\n borderLeft: '2px solid white',\n },\n '&light .cm-placeholder': {\n color: get(tokens, 'extend.semanticColors.description.light', 'rgba(0,0,0,.2)'),\n },\n '&dark .cm-placeholder': {\n color: get(tokens, 'extend.semanticColors.description.dark', 'rgba(255,255,255,.2)'),\n },\n\n //\n // line\n //\n '.cm-line': {\n paddingInline: 0,\n },\n '.cm-activeLine': {\n background: 'transparent',\n },\n\n //\n // gutter\n //\n '.cm-gutterElement': {\n width: '48px',\n },\n\n //\n // Selection\n //\n\n '&light .cm-selectionBackground': {\n background: get(tokens, 'extend.colors.primary.100'),\n },\n '&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground': {\n background: get(tokens, 'extend.colors.primary.200'),\n },\n '&dark .cm-selectionBackground': {\n background: get(tokens, 'extend.colors.primary.700'),\n },\n '&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground': {\n background: get(tokens, 'extend.colors.primary.600'),\n },\n\n //\n // Search\n //\n\n '&light .cm-searchMatch': {\n backgroundColor: get(tokens, 'extend.colors.yellow.100'),\n },\n '&dark .cm-searchMatch': {\n backgroundColor: get(tokens, 'extend.colors.yellow.700'),\n },\n\n //\n // link\n //\n '.cm-link': {\n color: get(tokens, 'extend.colors.primary.500'),\n textDecorationLine: 'underline',\n textDecorationThickness: '1px',\n textUnderlineOffset: '2px',\n borderRadius: '.125rem',\n fontFamily: get(tokens, 'fontFamily.body', []).join(','),\n },\n\n //\n // tooltip\n //\n '.cm-tooltip': {\n border: 'none',\n background: 'unset',\n },\n '.cm-tooltip-below': {},\n\n //\n // autocomplete\n //\n '.cm-tooltip-autocomplete': {\n marginTop: '4px',\n marginLeft: '-3px',\n },\n '.cm-tooltip-autocomplete ul li': {},\n '.cm-tooltip-autocomplete ul li[aria-selected]': {},\n '.cm-completionIcon': {\n display: 'none',\n },\n '.cm-completionLabel': {\n fontFamily: get(tokens, 'fontFamily.body', []).join(','),\n },\n '.cm-completionMatchedText': {\n textDecoration: 'none',\n },\n\n //\n // table\n //\n '.cm-table *': {\n fontFamily: `${get(tokens, 'fontFamily.mono', []).join(',')} !important`,\n textDecoration: 'none !important',\n },\n '.cm-table-head': {\n padding: '2px 16px 2px 0px',\n borderBottom: `1px solid ${get(tokens, 'extend.colors.neutral.500')}`,\n fontWeight: 100,\n textAlign: 'left',\n color: get(tokens, 'extend.colors.neutral.500'),\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\n //\n // font size\n // TODO(thure): This appears to be the best or only way to set selection caret heights,\n // but it's far more verbose than it needs to be.\n //\n // ...Object.keys(get(tokens, 'extend.fontSize', {})).reduce((acc: Record<string, any>, fontSize) => {\n // const height = get(tokens, ['extend', 'fontSize', fontSize, 1, 'lineHeight']);\n //\n // acc[`& .text-${fontSize} + .cm-ySelectionCaret`] = { height };\n // acc[`& .text-${fontSize} + .cm-ySelection + .cm-ySelectionCaret`] = { height };\n // acc[`& .text-${fontSize} + .cm-widgetBuffer + .cm-ySelectionCaret`] = { height };\n // return acc;\n // }, {}),\n\n /**\n * Panels\n * TODO(burdon): Needs styling attention (esp. dark mode).\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 '.cm-panels': {},\n '.cm-panel': {\n fontFamily: get(tokens, 'fontFamily.body', []).join(','),\n },\n '.cm-panel input[type=checkbox]': {\n marginRight: '0.4rem !important',\n },\n '&light .cm-panel': {\n background: get(tokens, 'extend.colors.neutral.50'),\n },\n '&dark .cm-panel': {\n background: get(tokens, 'extend.colors.neutral.850'),\n },\n '.cm-button': {\n margin: '4px',\n fontFamily: get(tokens, 'fontFamily.body', []).join(','),\n backgroundImage: 'none',\n border: 'none',\n '&:active': {\n backgroundImage: 'none',\n },\n },\n '&light .cm-button': {\n background: get(tokens, 'extend.colors.neutral.100'),\n '&:hover': {\n background: get(tokens, 'extend.colors.neutral.200'),\n },\n '&:active': {\n background: get(tokens, 'extend.colors.neutral.300'),\n },\n },\n '&dark .cm-button': {\n background: get(tokens, 'extend.colors.neutral.800'),\n '&:hover': {\n background: get(tokens, 'extend.colors.neutral.700'),\n },\n '&:active': {\n background: get(tokens, 'extend.colors.neutral.600'),\n },\n },\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Extension } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\n\nexport type ListenerOptions = {\n onFocus?: (focusing: boolean) => void;\n onChange?: (text: string) => void;\n};\n\n/**\n * Event listener.\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());\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 Extension,\n type StateCommand,\n type EditorState,\n type ChangeSpec,\n type Text,\n EditorSelection,\n type Line,\n} from '@codemirror/state';\nimport { EditorView, keymap } from '@codemirror/view';\nimport { type SyntaxNodeRef, type SyntaxNode } from '@lezer/common';\nimport { useMemo, useState } from 'react';\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 = {\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 ('Oeswe');\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 ];\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 = (): [Formatting | undefined, Extension] => {\n const [state, setState] = useState<Formatting>();\n\n const observer = useMemo(\n () =>\n EditorView.updateListener.of((update) => {\n if (update.docChanged || update.selectionSet) {\n setState((prevState) => {\n const newState = getFormatting(update.state);\n if (!prevState || !formattingEquals(prevState, newState)) {\n return newState;\n }\n return prevState;\n });\n }\n }),\n [setState],\n );\n\n return [state, observer];\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\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';\nimport { createComment } from '../comments';\n\nexport type ActionType =\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 | 'strikethrough'\n | 'table';\n\nexport type Action = {\n type: ActionType;\n data?: any;\n};\n\nexport type ActionHandler = (view: EditorView, action: Action) => void;\n\nexport const processAction: ActionHandler = (view, action) => {\n let inlineType, listType;\n switch (action.type) {\n case 'heading':\n setHeading(parseInt(action.data))(view);\n break;\n\n case 'strong':\n case 'emphasis':\n case 'strikethrough':\n case 'code':\n inlineType =\n action.type === 'strong'\n ? Inline.Strong\n : action.type === 'emphasis'\n ? Inline.Emphasis\n : action.type === 'strikethrough'\n ? Inline.Strikethrough\n : Inline.Code;\n (typeof action.data === 'boolean' ? setStyle(inlineType, action.data) : toggleStyle(inlineType))(view);\n break;\n\n case 'list-ordered':\n case 'list-bullet':\n case 'list-task':\n listType =\n action.type === 'list-ordered' ? List.Ordered : action.type === 'list-bullet' ? List.Bullet : List.Task;\n (action.data === false ? removeList(listType) : action.data === true ? addList(listType) : toggleList(listType))(\n view,\n );\n break;\n\n case 'blockquote':\n (action.data === false ? removeBlockquote : action.data === true ? addBlockquote : toggleBlockquote)(view);\n break;\n case 'codeblock':\n (action.data === false ? removeCodeblock : addCodeblock)(view);\n break;\n case 'table':\n insertTable(view);\n break;\n\n case 'link':\n (action.data === false ? removeLink : addLink())(view);\n break;\n\n case 'image':\n addLink({ url: action.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 { markdownLanguage, markdown } from '@codemirror/lang-markdown';\nimport { defaultHighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { languages } from '@codemirror/language-data';\nimport { lintKeymap } from '@codemirror/lint';\nimport { type Extension } from '@codemirror/state';\nimport { oneDarkHighlightStyle } from '@codemirror/theme-one-dark';\nimport { keymap } from '@codemirror/view';\n\nimport { type ThemeMode } from '@dxos/react-ui';\n\nimport { markdownHighlightStyle, markdownTagsExtensions } from './highlight';\n\nexport type MarkdownBundleOptions = {\n themeMode?: ThemeMode;\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 = ({ themeMode }: 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 // Parser extensions.\n extensions: [\n // GFM provided by default.\n markdownTagsExtensions,\n ],\n }),\n\n // https://github.com/codemirror/theme-one-dark\n themeMode === 'dark' ? syntaxHighlighting(oneDarkHighlightStyle) : syntaxHighlighting(defaultHighlightStyle),\n\n // Custom styles.\n syntaxHighlighting(markdownHighlightStyle()),\n\n keymap.of([\n // https://codemirror.net/docs/ref/#commands.indentWithTab\n indentWithTab,\n\n // https://codemirror.net/docs/ref/#commands.defaultKeymap\n ...defaultKeymap,\n ...completionKeymap,\n ...lintKeymap,\n ]),\n ];\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { markdownLanguage } from '@codemirror/lang-markdown';\nimport { HighlightStyle } from '@codemirror/language';\nimport { tags, styleTags, Tag } from '@lezer/highlight';\nimport { type MarkdownConfig, Table } from '@lezer/markdown';\n\nimport {\n blockquote,\n bold,\n code,\n codeMark,\n getToken,\n heading,\n inlineUrl,\n italic,\n mark,\n strikethrough,\n} 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\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 = (readonly?: boolean) => {\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 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: mark,\n },\n\n // Markdown marks.\n {\n tag: [markdownTags.CodeMark, markdownTags.HeaderMark, markdownTags.QuoteMark, markdownTags.EmphasisMark],\n class: mark,\n },\n\n // E.g., code block language (after ```).\n {\n tag: [tags.function(tags.variableName), tags.labelName],\n class: codeMark,\n },\n\n {\n tag: [tags.monospace],\n class: 'font-mono',\n },\n\n // Headings.\n { tag: tags.heading1, class: heading(1) },\n { tag: tags.heading2, class: heading(2) },\n { tag: tags.heading3, class: heading(3) },\n { tag: tags.heading4, class: heading(4) },\n { tag: tags.heading5, class: heading(5) },\n { tag: tags.heading6, class: heading(6) },\n\n // Emphasis.\n { tag: tags.emphasis, class: italic },\n { tag: tags.strong, class: bold },\n { tag: tags.strikethrough, class: strikethrough },\n\n // Naked URLs.\n {\n tag: [markdownTags.URL],\n class: inlineUrl,\n },\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: code,\n },\n\n {\n tag: [markdownTags.QuoteMark],\n class: blockquote,\n },\n\n {\n tag: [markdownTags.TableCell],\n class: 'font-mono',\n },\n ],\n {\n scope: markdownLanguage,\n all: {\n fontFamily: getToken('fontFamily.body', []).join(','),\n },\n },\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { RangeSetBuilder, type EditorState, StateEffect } from '@codemirror/state';\nimport { EditorView, Decoration, type DecorationSet, WidgetType, ViewPlugin, type ViewUpdate } from '@codemirror/view';\n\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { getToken } from '../../styles';\n\nclass HorizontalRuleWidget extends WidgetType {\n override toDOM() {\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: (el: Element, url: string) => void,\n ) {\n super();\n }\n\n override eq(other: this) {\n return this.url === other.url;\n }\n\n override toDOM(view: EditorView) {\n const el = document.createElement('span');\n this.render(el, this.url);\n return el;\n }\n}\n\nclass CheckboxWidget extends WidgetType {\n constructor(private _checked: boolean) {\n super();\n }\n\n override eq(other: this) {\n return this._checked === other._checked;\n }\n\n override toDOM(view: EditorView) {\n const input = document.createElement('input');\n input.className = 'cm-task-checkbox ch-checkbox ch-focus-ring -mbs-0.5';\n input.type = 'checkbox';\n input.checked = this._checked;\n if (view.state.readOnly) {\n input.setAttribute('disabled', 'true');\n } else {\n input.onmousedown = (event: Event) => {\n const pos = view.posAtDOM(input);\n const text = view.state.sliceDoc(pos, pos + 3);\n if (text === (this._checked ? '[x]' : '[ ]')) {\n view.dispatch({\n changes: { from: pos + 1, to: pos + 2, insert: this._checked ? ' ' : 'x' },\n });\n event.preventDefault();\n }\n };\n }\n return input;\n }\n\n override ignoreEvent() {\n return false;\n }\n}\n\nconst hide = Decoration.replace({});\nconst fencedCodeLine = Decoration.line({ class: mx('cm-code cm-codeblock-line') });\nconst fencedCodeLineFirst = Decoration.line({ class: mx('cm-code cm-codeblock-line', 'cm-codeblock-first') });\nconst fencedCodeLineLast = Decoration.line({ class: mx('cm-code cm-codeblock-line', 'cm-codeblock-last') });\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// Check if cursor is inside text.\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 MarksByParent = new Set(['CodeMark', 'EmphasisMark', 'StrikethroughMark', 'SubscriptMark', 'SuperscriptMark']);\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 for (const { from, to } of view.visibleRanges) {\n syntaxTree(state).iterate({\n from,\n to,\n enter: (node) => {\n switch (node.name) {\n // CommentBlock\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 const first = block.from <= node.from;\n const last = block.to >= node.to && /^(\\s>)*-->$/.test(state.doc.sliceString(block.from, block.to));\n deco.add(\n block.from,\n block.from,\n first ? commentBlockLineFirst : last ? commentBlockLineLast : commentBlockLine,\n );\n if (!editing && (first || last)) {\n atomicDeco.add(block.from, block.to, hide);\n }\n }\n break;\n }\n\n // FencedCode > CodeMark > [CodeInfo] > CodeText > CodeMark\n case 'FencedCode': {\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 const first = block.from <= node.from;\n const last = block.to >= node.to && /^(\\s>)*```$/.test(state.doc.sliceString(block.from, block.to));\n deco.add(\n block.from,\n block.from,\n first ? fencedCodeLineFirst : last ? fencedCodeLineLast : fencedCodeLine,\n );\n if (!editing && (first || last)) {\n atomicDeco.add(block.from, block.to, hide);\n }\n }\n return false;\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 (!editing) {\n atomicDeco.add(node.from, marks[0].to, hide);\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 case 'HeaderMark': {\n const parent = node.node.parent!;\n if (/^ATX/.test(parent.name) && !editingRange(state, state.doc.lineAt(node.from), focus)) {\n const next = state.doc.sliceString(node.to, node.to + 1);\n atomicDeco.add(node.from, node.to + (next === ' ' ? 1 : 0), hide);\n }\n break;\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 case 'TaskMarker': {\n if (!editingRange(state, node, focus)) {\n const checked = state.doc.sliceString(node.from + 1, node.to - 1) === 'x';\n atomicDeco.add(node.from - 2, node.from - 1, Decoration.mark({ class: 'cm-task' }));\n atomicDeco.add(node.from, node.to, checked ? checkedTask : uncheckedTask);\n }\n break;\n }\n\n case 'ListItem': {\n const start = state.doc.lineAt(node.from);\n deco.add(start.from, start.from, Decoration.line({ class: 'cm-list-item' }));\n break;\n }\n\n default: {\n if (MarksByParent.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 }\n\n return { deco: deco.finish(), atomicDeco: atomicDeco.finish() };\n};\n\nexport interface DecorateOptions {\n renderLinkButton?: (el: Element, url: string) => void;\n /**\n * Prevents triggering decorations as the cursor moves through the document.\n */\n selectionChangeDelay?: number;\n}\n\nconst forceUpdate = StateEffect.define<null>();\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((e) => e.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 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 EditorView.atomicRanges.of((view) => view.plugin(plugin)?.atomicDeco ?? Decoration.none),\n EditorView.decorations.of((view) => view.plugin(plugin)?.atomicDeco ?? Decoration.none),\n EditorView.decorations.of((view) => view.plugin(plugin)?.deco ?? Decoration.none),\n ],\n },\n ),\n formattingStyles,\n ];\n};\n\nconst formattingStyles = EditorView.baseTheme({\n '& .cm-code': {\n fontFamily: getToken('fontFamily.mono', []).join(','),\n },\n '& .cm-codeblock-line': {\n paddingInline: '1rem !important',\n },\n '& .cm-codeblock-end': {\n display: 'inline-block',\n width: '100%',\n position: 'relative',\n '&::after': {\n position: 'absolute',\n inset: 0,\n content: '\"\"',\n },\n },\n '& .cm-codeblock-first': {\n borderTopLeftRadius: '.5rem',\n borderTopRightRadius: '.5rem',\n },\n '& .cm-codeblock-last': {\n borderBottomLeftRadius: '.5rem',\n borderBottomRightRadius: '.5rem',\n },\n '&light .cm-codeblock-line, &light .cm-activeLine.cm-codeblock-line': {\n background: getToken('extend.semanticColors.input.light'),\n mixBlendMode: 'darken',\n },\n '&dark .cm-codeblock-line, &dark .cm-activeLine.cm-codeblock-line': {\n background: getToken('extend.semanticColors.input.dark'),\n mixBlendMode: 'lighten',\n },\n '& .cm-hr': {\n display: 'inline-block',\n width: '100%',\n height: '0',\n verticalAlign: 'middle',\n borderTop: `1px solid ${getToken('extend.colors.neutral.200')}`,\n },\n '& .cm-task': {\n color: getToken('extend.colors.blue.500'),\n },\n '& .cm-task-checkbox': {\n marginLeft: '4px',\n marginRight: '4px',\n },\n\n // '& .cm-list-item > span:nth-child(2)': {},\n});\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type EditorState, type Extension, StateField, type Transaction, type Range } from '@codemirror/state';\nimport { Decoration, type DecorationSet, EditorView, WidgetType } from '@codemirror/view';\n\nexport type ImageOptions = {};\n\nexport const image = (options: ImageOptions = {}): Extension => {\n return StateField.define<DecorationSet>({\n create: (state) => {\n return Decoration.set(buildDecorations(0, state.doc.length, state));\n },\n update: (value: DecorationSet, tr: Transaction) => {\n if (!tr.docChanged && !tr.selection) {\n return value;\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 // Expand to cover lines.\n from = tr.state.doc.lineAt(from).from;\n to = tr.state.doc.lineAt(to).to;\n return value.map(tr.changes).update({\n filterFrom: from,\n filterTo: to,\n filter: () => false,\n add: buildDecorations(from, to, tr.state),\n });\n },\n provide: (field) => EditorView.decorations.from(field),\n });\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\nconst buildDecorations = (from: number, to: number, state: EditorState) => {\n const decorations: Range<Decoration>[] = [];\n const cursor = state.selection.main.head;\n\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;\n const url = state.sliceDoc(urlNode.from, urlNode.to);\n // TODO(burdon): Doesn't load if scrolling with mouse.\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\nclass ImageWidget extends WidgetType {\n constructor(readonly _url: string) {\n super();\n }\n\n override eq(other: this) {\n return this._url === (other as any as ImageWidget)._url;\n }\n\n override toDOM(view: EditorView) {\n const img = document.createElement('img');\n img.setAttribute('src', this._url);\n img.setAttribute('class', 'cm-image');\n // Images are hidden until successfully loaded to avoid flickering effects.\n img.onload = () => img.classList.add('cm-loaded-image');\n return img;\n }\n}\n\nexport type ImageUploadOptions = {\n onSelect: () => { url: string };\n};\n\nexport const imageUpload = (options: ImageOptions = {}) => {};\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\nexport const linkTooltip = (render: (el: Element, url: string) => void) =>\n hoverTooltip((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 return {\n pos: link.from,\n end: link.to,\n above: true,\n create: () => {\n const el = document.createElement('div');\n el.className = tooltipContent({}, 'pli-2 plb-1');\n render(el, urlText);\n return { dom: el, offset: { x: 0, y: 4 } };\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<any>>({\n create: (state) => update(state, options),\n update: (_: RangeSet<any>, 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();\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(table.from, table.to, Decoration.mark({ class: 'cm-table' }));\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) {\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) {\n const table = document.createElement('table');\n\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\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\n return table;\n }\n\n override ignoreEvent(e: Event) {\n return !/^mouse/.test(e.type);\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { autocompletion, type CompletionContext, type CompletionResult } from '@codemirror/autocomplete';\nimport type { Extension } from '@codemirror/state';\n\nimport { log } from '@dxos/log';\n\nexport type MentionOptions = {\n onSearch: (text: string) => string[];\n};\n\n// TODO(burdon): Can only have a single autocompletion. Merge configuration with autocomplete.\nexport const mention = ({ onSearch }: MentionOptions): Extension => {\n return autocompletion({\n // TODO(burdon): Not working.\n activateOnTyping: true,\n // activateOnTypingDelay: 100,\n // selectOnOpen: true,\n closeOnBlur: false, // For debugging.\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, Facet } from '@codemirror/state';\nimport { keymap } from '@codemirror/view';\nimport { vim } from '@replit/codemirror-vim';\nimport { vscodeKeymap } from '@replit/codemirror-vscode-keymap';\n\nexport const focusEvent = 'focus.container';\n\nexport type EditorMode = 'default' | 'vim' | 'vscode' | undefined;\n\nexport type EditorConfig = {\n type: string;\n noTabster?: boolean;\n};\n\nexport const editorMode = Facet.define<EditorConfig, EditorConfig>({\n combine: (modes) => modes[0] ?? {},\n});\n\nexport const EditorModes: { [mode: string]: Extension } = {\n default: [],\n vscode: [\n // https://github.com/replit/codemirror-vscode-keymap\n editorMode.of({ type: 'vscode' }),\n keymap.of(vscodeKeymap),\n ],\n vim: [\n // https://github.com/replit/codemirror-vim\n vim(),\n editorMode.of({ type: 'vim', noTabster: true }),\n keymap.of([\n {\n key: 'Alt-Escape',\n run: (view) => {\n // Focus container for tab navigation.\n view.dispatch({ userEvent: focusEvent });\n return true;\n },\n },\n ]),\n ],\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Extension, Transaction } 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 { documentId } from './doc';\n\nconst scrollAnnotation = 'dxos.org/cm/scrolling';\n\n// NOTE: Serializable.\nexport type SelectionState = {\n scrollTo: {\n from: number;\n };\n selection: {\n anchor: number;\n head?: number;\n };\n};\n\nexport type StateOptions = {\n setState: (id: string, state: SelectionState) => void;\n getState: (id: string) => SelectionState | undefined;\n};\n\nconst keyPrefix = 'dxos.org/react-ui-editor/state';\nexport const localStorageStateStoreAdapter: StateOptions = {\n setState: (id, state) => {\n invariant(id);\n localStorage.setItem(`${keyPrefix}/${id}`, JSON.stringify(state));\n },\n getState: (id) => {\n invariant(id);\n const state = localStorage.getItem(`${keyPrefix}/${id}`);\n return state ? JSON.parse(state) : undefined;\n },\n};\n\n/**\n * Track scrolling and selection state to be restored when switching to document.\n */\nexport const state = ({ getState, setState }: Partial<StateOptions> = {}): Extension => {\n const setStateDebounced = debounce(setState!, 1_000);\n\n return [\n // TODO(burdon): Track scrolling (currently only updates when cursor moves).\n EditorView.updateListener.of(({ view, changes, transactions }) => {\n // TODO(burdon): Don't react to initial scroll.\n const id = view.state.facet(documentId);\n if (!id || transactions.some((tr) => tr.isUserEvent(scrollAnnotation))) {\n return;\n }\n\n if (setState) {\n const { top } = view.dom.getBoundingClientRect();\n const pos = view.posAtCoords({ x: 0, y: top });\n if (pos !== null) {\n const { anchor, head } = view.state.selection.main;\n setStateDebounced(id, {\n scrollTo: { from: pos, yMargin: 0 },\n selection: { anchor, head },\n });\n }\n }\n }),\n getState &&\n keymap.of([\n {\n key: 'ctrl-r', // TODO(burdon): Setting to jump back to bookmark.\n run: (view) => {\n const state = getState(view.state.facet(documentId));\n if (state) {\n view.dispatch({\n effects: EditorView.scrollIntoView(state.scrollTo.from, { yMargin: 0 }),\n selection: state.selection,\n annotations: Transaction.userEvent.of(scrollAnnotation),\n });\n }\n return true;\n },\n },\n ]),\n ].filter(isNotFalsy);\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 {\n type Icon,\n ChatText,\n Code,\n CodeBlock,\n Image,\n Link,\n ListBullets,\n ListChecks,\n ListNumbers,\n Paragraph,\n Quotes,\n TextStrikethrough,\n Table,\n TextB,\n TextHOne,\n TextHTwo,\n TextHThree,\n TextHFour,\n TextHFive,\n TextHSix,\n TextItalic,\n CaretDown,\n Check,\n} from '@phosphor-icons/react';\nimport { createContext } from '@radix-ui/react-context';\nimport React, { type PropsWithChildren, useEffect, useRef, useState } from 'react';\nimport { useDropzone } from 'react-dropzone';\n\nimport {\n DensityProvider,\n ElevationProvider,\n Toolbar as NaturalToolbar,\n Tooltip,\n type ThemedClassName,\n type ToolbarToggleGroupItemProps as NaturalToolbarToggleGroupItemProps,\n type ToolbarButtonProps as NaturalToolbarButtonProps,\n useTranslation,\n DropdownMenu,\n Button,\n} from '@dxos/react-ui';\nimport { getSize } from '@dxos/react-ui-theme';\n\nimport { type Action, type ActionType, type Formatting } from '../../extensions';\nimport { translationKey } from '../../translations';\n\nconst tooltipProps = { side: 'top' as const, classNames: 'z-10' };\n\nconst HeadingIcons: { [key: string]: Icon } = {\n '0': Paragraph,\n '1': TextHOne,\n '2': TextHTwo,\n '3': TextHThree,\n '4': TextHFour,\n '5': TextHFive,\n '6': TextHSix,\n};\n\nexport type ToolbarProps = ThemedClassName<\n PropsWithChildren<{\n state: Formatting | undefined;\n onAction?: (action: Action) => void;\n }>\n>;\n\nconst [ToolbarContextProvider, useToolbarContext] = createContext<ToolbarProps>('Toolbar');\n\nconst ToolbarRoot = ({ children, onAction, classNames, state }: ToolbarProps) => {\n return (\n <ToolbarContextProvider onAction={onAction} state={state}>\n <DensityProvider density='fine'>\n <ElevationProvider elevation='chrome'>\n <NaturalToolbar.Root classNames={['is-full shrink-0 overflow-x-auto overflow-y-hidden p-1', classNames]}>\n {children}\n </NaturalToolbar.Root>\n </ElevationProvider>\n </DensityProvider>\n </ToolbarContextProvider>\n );\n};\n\nconst buttonStyles = 'min-bs-0 p-2';\nconst iconStyles = getSize(5);\n\ntype ButtonProps = {\n type: ActionType;\n Icon: Icon;\n getState: (state: Formatting) => boolean;\n disabled?: (state: Formatting) => boolean;\n};\n\ntype ToolbarToggleButtonProps = NaturalToolbarToggleGroupItemProps & { Icon: Icon };\n\nconst ToolbarToggleButton = ({ Icon, children, ...props }: ToolbarToggleButtonProps) => {\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <NaturalToolbar.ToggleGroupItem variant='ghost' {...props} classNames={buttonStyles}>\n <Icon className={iconStyles} />\n <span className='sr-only'>{children}</span>\n </NaturalToolbar.ToggleGroupItem>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content {...tooltipProps}>\n {children}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\ntype ToolbarButtonProps = NaturalToolbarButtonProps & { Icon: Icon };\n\nconst ToolbarButton = ({ Icon, children, ...props }: ToolbarButtonProps) => {\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <NaturalToolbar.Button variant='ghost' {...props} classNames={buttonStyles}>\n <Icon className={iconStyles} />\n <span className='sr-only'>{children}</span>\n </NaturalToolbar.Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content {...tooltipProps}>\n {children}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\nconst ToolbarSeparator = () => <div role='separator' className='grow' />;\n\nconst MarkdownHeading = () => {\n const { t } = useTranslation(translationKey);\n const { onAction, state } = useToolbarContext('MarkdownFormatting');\n const blockType = state ? state.blockType : 'paragraph';\n const header = blockType && /heading(\\d)/.exec(blockType);\n const value = header ? header[1] : blockType === 'paragraph' || !blockType ? '0' : undefined;\n const HeadingIcon = HeadingIcons[value ?? '0'];\n const suppressNextTooltip = useRef<boolean>(false);\n const [tooltipOpen, setTooltipOpen] = useState<boolean>(false);\n const [selectOpen, setSelectOpen] = useState<boolean>(false);\n return (\n <Tooltip.Root\n open={tooltipOpen}\n onOpenChange={(nextOpen) => {\n if (nextOpen && suppressNextTooltip.current) {\n suppressNextTooltip.current = false;\n return setTooltipOpen(false);\n } else {\n return setTooltipOpen(nextOpen);\n }\n }}\n >\n {/* TODO(thure): `Select` encounters a ref error if used here (repro: select a heading, then select another\n heading). Determine the root cause and fix or report to Radix. */}\n <DropdownMenu.Root\n open={selectOpen}\n onOpenChange={(nextOpen: boolean) => {\n if (!nextOpen) {\n suppressNextTooltip.current = true;\n }\n return setSelectOpen(nextOpen);\n }}\n >\n <Tooltip.Trigger asChild>\n <NaturalToolbar.Button asChild>\n <DropdownMenu.Trigger asChild>\n <Button variant='ghost' classNames={buttonStyles} disabled={value === null}>\n <span className='sr-only'>{t('heading label')}</span>\n <HeadingIcon className={iconStyles} />\n <CaretDown />\n </Button>\n </DropdownMenu.Trigger>\n </NaturalToolbar.Button>\n </Tooltip.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content classNames='is-min md:is-min' onCloseAutoFocus={(e) => e.preventDefault()}>\n <DropdownMenu.Viewport>\n {Object.keys(HeadingIcons).map((level) => {\n const Icon = HeadingIcons[level];\n return (\n <DropdownMenu.CheckboxItem\n key={level}\n checked={value === level}\n onClick={() => onAction?.({ type: 'heading', data: level })}\n >\n <span className='sr-only'>{t('heading level label', { count: parseInt(level) })}</span>\n <Icon className={iconStyles} />\n <DropdownMenu.ItemIndicator>\n <Check />\n </DropdownMenu.ItemIndicator>\n </DropdownMenu.CheckboxItem>\n );\n })}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n <Tooltip.Portal>\n <Tooltip.Content {...tooltipProps}>\n {t('heading label')}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\nconst markdownStyles: ButtonProps[] = [\n { type: 'strong', Icon: TextB, getState: (state) => state.strong },\n { type: 'emphasis', Icon: TextItalic, getState: (state) => state.emphasis },\n { type: 'strikethrough', Icon: TextStrikethrough, getState: (state) => state.strikethrough },\n { type: 'code', Icon: Code, getState: (state) => state.code },\n { type: 'link', Icon: Link, getState: (state) => state.link },\n];\n\nconst MarkdownStyles = () => {\n const { onAction, state } = useToolbarContext('MarkdownStyles');\n const { t } = useTranslation(translationKey);\n\n return (\n <NaturalToolbar.ToggleGroup\n type='multiple'\n value={markdownStyles.filter(({ getState }) => state && getState(state)).map(({ type }) => type)}\n >\n {markdownStyles.map(({ type, getState, Icon }) => (\n <ToolbarToggleButton\n key={type}\n value={type}\n Icon={Icon}\n disabled={state?.blockType === 'codeblock'}\n onClick={state ? () => onAction?.({ type, data: !getState(state) }) : undefined}\n >\n {t(`${type} label`)}\n </ToolbarToggleButton>\n ))}\n </NaturalToolbar.ToggleGroup>\n );\n};\n\nconst markdownLists: ButtonProps[] = [\n { type: 'list-bullet', Icon: ListBullets, getState: (state) => state.listStyle === 'bullet' },\n { type: 'list-ordered', Icon: ListNumbers, getState: (state) => state.listStyle === 'ordered' },\n { type: 'list-task', Icon: ListChecks, getState: (state) => state.listStyle === 'task' },\n];\n\nconst MarkdownLists = () => {\n const { onAction, state } = useToolbarContext('MarkdownStyles');\n const { t } = useTranslation(translationKey);\n return (\n <NaturalToolbar.ToggleGroup type='single' value={state?.listStyle ? `list-${state.listStyle}` : ''}>\n {markdownLists.map(({ type, getState, Icon }) => (\n <ToolbarToggleButton\n key={type}\n value={type}\n Icon={Icon}\n onClick={state ? () => onAction?.({ type, data: !getState(state) }) : undefined}\n >\n {t(`${type} label`)}\n </ToolbarToggleButton>\n ))}\n </NaturalToolbar.ToggleGroup>\n );\n};\n\nconst markdownBlocks: ButtonProps[] = [\n {\n type: 'blockquote',\n Icon: Quotes,\n getState: (state) => state.blockQuote,\n },\n {\n type: 'codeblock',\n Icon: CodeBlock,\n getState: (state) => state.blockType === 'codeblock',\n },\n {\n type: 'table',\n Icon: Table,\n getState: (state) => state.blockType === 'tablecell',\n disabled: (state) => !state.blankLine,\n },\n];\n\nconst MarkdownBlocks = () => {\n const { onAction, state } = useToolbarContext('MarkdownStyles');\n const { t } = useTranslation(translationKey);\n const value = markdownBlocks.find(({ getState }) => state && getState(state));\n return (\n <NaturalToolbar.ToggleGroup type='single' value={value?.type ?? ''}>\n {markdownBlocks.map(({ type, disabled, getState, Icon }) => (\n <ToolbarToggleButton\n key={type}\n value={type}\n Icon={Icon}\n disabled={!state || disabled?.(state)}\n onClick={state ? () => onAction?.({ type, data: !getState(state) }) : undefined}\n >\n {t(`${type} label`)}\n </ToolbarToggleButton>\n ))}\n </NaturalToolbar.ToggleGroup>\n );\n};\n\nconst MarkdownStandard = () => (\n <>\n <MarkdownHeading />\n <MarkdownStyles />\n <MarkdownLists />\n <MarkdownBlocks />\n </>\n);\n\n// TODO(burdon): Make extensible.\nexport type MarkdownCustomOptions = {\n onUpload?: (file: File) => Promise<{ url?: string } | undefined>;\n};\n\nconst MarkdownCustom = ({ onUpload }: MarkdownCustomOptions = {}) => {\n const { onAction } = useToolbarContext('MarkdownStyles');\n const { t } = useTranslation(translationKey);\n // https://react-dropzone.js.org/#src\n const { acceptedFiles, getInputProps, open } = useDropzone({\n multiple: false,\n noDrag: true,\n accept: {\n 'image/*': ['.jpg', '.jpeg', '.png', '.gif'],\n },\n });\n\n useEffect(() => {\n if (onUpload && acceptedFiles.length) {\n requestAnimationFrame(async () => {\n // NOTE: Clone file since react-dropzone patches in a non-standard `path` property, which confuses IPFS.\n const f = acceptedFiles[0];\n const file = new File([f], f.name, {\n type: f.type,\n lastModified: f.lastModified,\n });\n\n const info = await onUpload(file);\n if (info) {\n onAction?.({ type: 'image', data: info.url });\n }\n });\n }\n }, [acceptedFiles]);\n\n return (\n <>\n <input {...getInputProps()} />\n <ToolbarButton value='image' Icon={Image} onClick={() => open()}>\n {t('image label')}\n </ToolbarButton>\n </>\n );\n};\n\n// TODO(burdon): Make extensible.\nconst MarkdownActions = () => {\n const { onAction } = useToolbarContext('MarkdownStyles');\n const { t } = useTranslation(translationKey);\n return (\n <>\n {/* TODO(burdon): Toggle readonly state. */}\n {/* <ToolbarButton value='comment' Icon={BookOpenText} onClick={() => onAction?.({ type: 'comment' })}> */}\n {/* {t('comment label')} */}\n {/* </ToolbarButton> */}\n <ToolbarButton\n value='comment'\n Icon={ChatText}\n data-testid='editor.toolbar.comment'\n onClick={() => onAction?.({ type: 'comment' })}\n >\n {t('comment label')}\n </ToolbarButton>\n </>\n );\n};\n\nexport const Toolbar = {\n Root: ToolbarRoot,\n Button: ToolbarToggleButton,\n Separator: ToolbarSeparator,\n Markdown: MarkdownStandard,\n Custom: MarkdownCustom,\n Actions: MarkdownActions,\n};\n\nexport { useToolbarContext };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\n\nimport { type ToolbarProps } from '../components';\nimport { processAction } from '../extensions';\n\nexport const useActionHandler = (view?: EditorView | null): ToolbarProps['onAction'] => {\n return (action) => view && processAction(view, action);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorSelection, EditorState } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { 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 { isNotFalsy } from '@dxos/util';\n\nimport { type TextEditorProps } from '../components';\nimport { documentId } from '../extensions';\nimport { logChanges } from '../util';\n\nexport type UseTextEditor = {\n parentRef: RefObject<HTMLDivElement>;\n view?: EditorView;\n focusAttributes: ReturnType<typeof useFocusableGroup> & {\n tabIndex: 0;\n onKeyUp: KeyboardEventHandler<HTMLDivElement>;\n };\n};\n\nexport type UseTextEditorProps = Omit<TextEditorProps, 'moveToEndOfLine' | 'dataTestId'>;\n\n/**\n * Hook for creating editor.\n */\nexport const useTextEditor = (cb: () => UseTextEditorProps = () => ({}), deps: DependencyList = []): UseTextEditor => {\n let { id, doc, selection, extensions, autoFocus, scrollTo, debug } = useMemo<UseTextEditorProps>(cb, deps ?? []);\n\n const onUpdate = useRef<() => void>();\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 });\n\n // https://codemirror.net/docs/ref/#state.EditorStateConfig\n // NOTE: Don't set selection here in case it is invalid (and crashes the state); dispatch below.\n const state = EditorState.create({\n doc,\n extensions: [\n id && documentId.of(id),\n // TODO(burdon): Doesn't catch errors in keymap functions.\n EditorView.exceptionSink.of((err) => {\n log.catch(err);\n }),\n extensions,\n EditorView.updateListener.of(() => {\n onUpdate.current?.();\n }),\n ].filter(isNotFalsy),\n });\n\n // https://codemirror.net/docs/ref/#view.EditorViewConfig\n view = new EditorView({\n parent: parentRef.current,\n scrollTo,\n state,\n // NOTE: Uncomment to debug/monitor all transactions.\n // https://codemirror.net/docs/ref/#view.EditorView.dispatch\n dispatchTransactions: (trs, view) => {\n if (debug) {\n logChanges(trs);\n }\n view.update(trs);\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 // Select end of line if not specified.\n if (!selection && !view.state.selection.main.anchor) {\n selection = EditorSelection.single(view.state.doc.line(1).to);\n }\n\n // Set selection after first update (since content may rerender on focus).\n // TODO(burdon): Make invisible until first render?\n if (selection || scrollTo) {\n onUpdate.current = () => {\n onUpdate.current = undefined;\n view.dispatch({ selection, effects: scrollTo && [scrollTo], scrollIntoView: !scrollTo });\n };\n }\n\n if (autoFocus) {\n view.focus();\n }\n }\n }, [view, autoFocus, selection, scrollTo]);\n\n const focusableGroup = useFocusableGroup({ tabBehavior: 'limited' });\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 const focusAttributes = { tabIndex: 0 as const, ...focusableGroup, onKeyUp: handleKeyUp };\n\n return { parentRef, view, focusAttributes };\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["translationKey", "keymap", "tags", "TextKind", "EditorState", "EditorView", "useFocusableGroup", "React", "forwardRef", "useCallback", "useEffect", "useImperativeHandle", "useRef", "useState", "log", "useDefaultValue", "isNotFalsy", "StateField", "Decoration", "EditorView", "isNotFalsy", "Facet", "defaultCursorConverter", "toCursor", "position", "toString", "fromCursor", "cursor", "parseInt", "Cursor", "converter", "Facet", "define", "combine", "providers", "getCursorFromRange", "state", "range", "cursorConverter", "facet", "from", "to", "join", "getRangeFromCursor", "parts", "split", "undefined", "annotationMark", "Decoration", "mark", "class", "annotations", "options", "match", "state", "text", "doc", "toString", "matches", "matchAll", "from", "index", "to", "length", "cursor", "Cursor", "getCursorFromRange", "push", "annotationsState", "StateField", "define", "create", "update", "value", "tr", "changes", "empty", "EditorView", "decorations", "compute", "field", "map", "annotation", "range", "getRangeFromCursor", "filter", "isNotFalsy", "set", "styles", "baseTheme", "textDecoration", "textDecorationStyle", "textDecorationColor", "autocompletion", "completionKeymap", "markdownLanguage", "keymap", "autocomplete", "onSearch", "keymap", "of", "completionKeymap", "autocompletion", "activateOnTyping", "tooltipClass", "markdownLanguage", "data", "context", "match", "matchBefore", "from", "to", "explicit", "options", "text", "toLowerCase", "StateField", "EditorView", "ViewPlugin", "next", "A", "log", "toCursor", "fromCursor", "cursorConverter", "accessor", "pos", "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", "constructor", "_handle", "_state", "_pending", "reconcile", "view", "editor", "onEditorChange", "onAutomergeChange", "transactions", "state", "field", "unreconciledTransactions", "filter", "tx", "isReconcile", "newHeads", "updateAutomerge", "dispatch", "effects", "updateHeads", "annotations", "reconcileAnnotation", "of", "oldHeads", "getLastHeads", "A", "getHeads", "docSync", "diff", "equals", "selection", "path", "getPath", "updateCodeMirror", "automerge", "accessor", "syncState", "StateField", "define", "create", "path", "slice", "lastHeads", "A", "getHeads", "handle", "docSync", "unreconciledTransactions", "update", "value", "tr", "result", "clearUnreconciled", "effect", "effects", "is", "updateHeadsEffect", "newHeads", "isReconcile", "push", "syncer", "Syncer", "Cursor", "converter", "of", "cursorConverter", "ViewPlugin", "fromClass", "constructor", "_view", "_handleChange", "reconcile", "addListener", "destroy", "removeListener", "EditorView", "updateListener", "view", "changes", "empty", "Annotation", "Facet", "RangeSet", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "Event", "Context", "dummyProvider", "remoteStateChange", "Event", "open", "close", "getRemoteStates", "update", "awarenessProvider", "Facet", "define", "combine", "providers", "RemoteSelectionChangedAnnotation", "Annotation", "awareness", "provider", "of", "ViewPlugin", "fromClass", "RemoteSelectionsDecorator", "decorations", "value", "styles", "constructor", "view", "RangeSet", "_ctx", "Context", "_lastAnchor", "undefined", "_lastHead", "_cursorConverter", "state", "facet", "Cursor", "converter", "_provider", "on", "dispatch", "annotations", "destroy", "dispose", "_updateLocalSelection", "_updateRemoteSelections", "hasFocus", "dom", "ownerDocument", "anchor", "head", "selection", "main", "toCursor", "awarenessStates", "position", "fromCursor", "start", "Math", "min", "doc", "length", "end", "max", "startLine", "lineAt", "endLine", "color", "info", "lightColor", "number", "push", "from", "to", "Decoration", "mark", "attributes", "style", "class", "i", "linePos", "line", "widget", "side", "block", "RemoteCaretWidget", "displayName", "set", "WidgetType", "_name", "_color", "toDOM", "span", "document", "createElement", "className", "backgroundColor", "borderColor", "dot", "innerText", "appendChild", "createTextNode", "updateDOM", "eq", "estimatedHeight", "ignoreEvent", "EditorView", "baseTheme", "padding", "margin", "borderLeft", "borderRight", "marginLeft", "marginRight", "boxSizing", "display", "cursor", "borderRadius", "width", "height", "top", "left", "transition", "transform", "transformOrigin", "fontSize", "fontFamily", "fontStyle", "fontWeight", "lineHeight", "userSelect", "zIndex", "opacity", "transitionDelay", "whiteSpace", "DeferredTask", "Event", "sleep", "Context", "invariant", "log", "DEBOUNCE_INTERVAL", "SpaceAwarenessProvider", "constructor", "params", "_remoteStates", "Map", "remoteStateChange", "_space", "space", "_channel", "channel", "_peerId", "peerId", "_info", "info", "open", "_ctx", "_postTask", "_localState", "postMessage", "kind", "state", "onDispose", "listen", "message", "payload", "_handleQueryMessage", "_handlePostMessage", "catch", "err", "debug", "close", "dispose", "undefined", "getRemoteStates", "Array", "from", "values", "update", "position", "schedule", "set", "emit", "EditorView", "keymap", "defaultsDeep", "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", "constructor", "_node", "_options", "_running", "_shakeTime", "_shakeTimeMax", "_particles", "_particlePointer", "_lastPoint", "throttle", "getRGBComponents", "numParticles", "dir", "i", "_effect", "create", "Effect1", "Effect2", "_canvas", "_ctx", "createElement", "id", "style", "position", "zIndex", "pointerEvents", "getContext", "parent", "appendChild", "stop", "remove", "undefined", "offsetWidth", "width", "offsetHeight", "height", "loop", "transform", "clearRect", "now", "Date", "getTime", "_lastTime", "dt", "magnitude", "shakeX", "shakeY", "drawParticles", "requestAnimationFrame", "bind", "length", "particle", "alpha", "size", "Effect", "vx", "vy", "ctx", "fillStyle", "fillRect", "round", "theta", "PI", "drag", "wander", "sin", "cos", "beginPath", "arc", "fill", "callback", "limit", "wait", "args", "apply", "setTimeout", "bgColor", "getComputedStyle", "match", "slice", "EditorView", "keymap", "RangeSetBuilder", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "Facet", "StateEffect", "StateField", "showTooltip", "commandConfig", "Facet", "define", "combine", "providers", "commandState", "StateField", "create", "update", "state", "tr", "effect", "effects", "is", "closeEffect", "openEffect", "options", "facet", "pos", "fullWidth", "value", "tooltip", "above", "arrow", "strictSide", "view", "dom", "document", "createElement", "tooltipView", "mount", "parent", "parentElement", "paddingLeft", "paddingRight", "window", "getComputedStyle", "widthWithoutPadding", "clientWidth", "parseFloat", "style", "width", "onRender", "action", "dispatch", "of", "insert", "length", "changes", "from", "selection", "anchor", "requestAnimationFrame", "focus", "provide", "field", "showTooltip", "StateEffect", "openCommand", "main", "line", "doc", "lineAt", "to", "closeCommand", "commandKeyBindings", "key", "run", "flattenRect", "rect", "left", "x", "right", "top", "bottom", "scratchRange", "textRange", "node", "from", "to", "range", "document", "createRange", "setEnd", "setStart", "clientRectsFor", "dom", "nodeType", "nodeValue", "length", "getClientRects", "CommandHint", "WidgetType", "constructor", "content", "toDOM", "wrap", "document", "createElement", "className", "style", "pointerEvents", "appendChild", "createTextNode", "setAttribute", "coordsAt", "dom", "rects", "firstChild", "clientRectsFor", "length", "window", "getComputedStyle", "parentNode", "rect", "flattenRect", "direction", "lineHeight", "parseInt", "bottom", "top", "left", "right", "ignoreEvent", "hintViewPlugin", "onHint", "ViewPlugin", "fromClass", "deco", "Decoration", "none", "update", "builder", "RangeSetBuilder", "cState", "view", "state", "field", "commandState", "tooltip", "selection", "main", "line", "doc", "lineAt", "from", "to", "hint", "add", "widget", "finish", "provide", "plugin", "EditorView", "decorations", "of", "command", "options", "commandConfig", "of", "commandState", "keymap", "commandKeyBindings", "hintViewPlugin", "EditorView", "focusChangeEffect", "_", "focusing", "closeEffect", "invertedEffects", "Facet", "StateEffect", "StateField", "hoverTooltip", "keymap", "Decoration", "EditorView", "sortBy", "useEffect", "debounce", "log", "nonNullable", "mx", "headings", "heading", "level", "light", "mark", "mx", "bold", "italic", "strikethrough", "code", "codeMark", "inlineUrl", "mx", "code", "blockquote", "light", "get", "tailwindConfig", "tokens", "tailwindConfig", "theme", "getToken", "path", "defaultValue", "undefined", "get", "editorWithToolbarLayout", "editorFillLayoutRoot", "editorFillLayoutEditor", "log", "callbackWrapper", "fn", "args", "err", "catch", "logChanges", "trs", "changes", "flatMap", "tr", "empty", "undefined", "iterChanges", "fromA", "toA", "fromB", "toB", "inserted", "push", "JSON", "stringify", "toString", "filter", "Boolean", "length", "info", "documentId", "Facet", "define", "combine", "values", "setComments", "StateEffect", "setSelection", "setCommentState", "commentsState", "StateField", "create", "state", "id", "facet", "comments", "selection", "update", "value", "tr", "effect", "effects", "is", "commentStates", "map", "comment", "cursor", "undefined", "range", "Cursor", "getRangeFromCursor", "filter", "nonNullable", "styles", "EditorView", "baseTheme", "mixBlendMode", "backgroundColor", "getToken", "color", "commentMark", "Decoration", "mark", "class", "attributes", "commentCurrentMark", "commentsDecorations", "decorations", "compute", "current", "field", "sortBy", "from", "flatMap", "to", "log", "warn", "set", "trackPastedComments", "onUpdate", "tracked", "handleTrack", "event", "view", "main", "selectedRanges", "length", "text", "doc", "slice", "domEventHandlers", "cut", "copy", "invertedEffects", "of", "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", "dispatch", "insert", "onCreate", "location", "coordsAtPos", "anchor", "providers", "key", "shortcut", "handleSelect", "debounce", "onSelect", "keymap", "run", "callbackWrapper", "onHover", "hoverTooltip", "pos", "end", "above", "el", "document", "createElement", "dom", "offset", "x", "y", "hoverTime", "mod", "from2", "to2", "forEach", "newRange", "onDelete", "Object", "assign", "min", "Infinity", "closest", "head", "d", "Math", "abs", "scrollThreadIntoView", "center", "scrollIntoView", "useComments", "useEffect", "Facet", "invariant", "documentId", "define", "combine", "providers", "length", "dropCursor", "EditorView", "styles", "EditorView", "baseTheme", "borderLeft", "getToken", "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", "searchKeymap", "EditorState", "EditorView", "drawSelection", "dropCursor", "highlightActiveLine", "keymap", "lineNumbers", "placeholder", "scrollPastEnd", "defaultsDeep", "generateName", "log", "hueTokens", "hexToHue", "isNotFalsy", "get", "defaultTheme", "outline", "overflowY", "fontFamily", "get", "tokens", "join", "lineHeight", "fontSize", "color", "caretColor", "borderLeft", "paddingInline", "background", "width", "backgroundColor", "textDecorationLine", "textDecorationThickness", "textUnderlineOffset", "borderRadius", "border", "marginTop", "marginLeft", "display", "textDecoration", "padding", "borderBottom", "fontWeight", "textAlign", "height", "borderTop", "marginRight", "margin", "backgroundImage", "defaultBasicOptions", "allowMultipleSelections", "bracketMatching", "closeBrackets", "drawSelection", "editable", "history", "keymap", "lineWrapping", "search", "keymaps", "standard", "standardKeymap", "default", "defaultKeymap", "createBasicExtensions", "_props", "props", "defaultsDeep", "EditorView", "exceptionSink", "of", "err", "log", "catch", "EditorState", "dropCursor", "highlightActiveLine", "lineNumbers", "placeholder", "readonly", "readOnly", "scrollPastEnd", "tabSize", "indentWithTab", "closeBracketsKeymap", "historyKeymap", "searchKeymap", "filter", "isNotFalsy", "defaultThemeSlots", "editor", "className", "createThemeExtensions", "theme", "themeMode", "slots", "_slots", "baseTheme", "defaultTheme", "darkTheme", "editorAttributes", "class", "content", "contentAttributes", "createDataExtensions", "id", "text", "space", "identity", "extensions", "automerge", "peerId", "identityKey", "toHex", "cursorLightValue", "cursorDarkValue", "hueTokens", "profile", "data", "hue", "hexToHue", "awarenessProvider", "SpaceAwarenessProvider", "channel", "info", "displayName", "generateName", "color", "lightColor", "push", "awareness", "EditorView", "listener", "onFocus", "onChange", "extensions", "push", "EditorView", "focusChangeEffect", "of", "_", "focusing", "updateListener", "update", "state", "doc", "toString", "snippet", "syntaxTree", "EditorSelection", "EditorView", "keymap", "useMemo", "useState", "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", "setState", "useState", "observer", "useMemo", "EditorView", "updateListener", "docChanged", "selectionSet", "prevState", "newState", "processAction", "view", "action", "inlineType", "listType", "type", "setHeading", "parseInt", "data", "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", "markdownLanguage", "markdown", "defaultHighlightStyle", "syntaxHighlighting", "languages", "lintKeymap", "oneDarkHighlightStyle", "keymap", "markdownLanguage", "HighlightStyle", "tags", "styleTags", "Tag", "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", "readonly", "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", "mark", "function", "labelName", "codeMark", "monospace", "heading1", "heading", "heading2", "heading3", "heading4", "heading5", "heading6", "emphasis", "italic", "strong", "bold", "strikethrough", "inlineUrl", "code", "blockquote", "scope", "markdownLanguage", "all", "fontFamily", "getToken", "join", "createMarkdownExtensions", "themeMode", "markdown", "base", "markdownLanguage", "codeLanguages", "languages", "extensions", "markdownTagsExtensions", "syntaxHighlighting", "oneDarkHighlightStyle", "defaultHighlightStyle", "markdownHighlightStyle", "keymap", "of", "indentWithTab", "defaultKeymap", "completionKeymap", "lintKeymap", "syntaxTree", "RangeSetBuilder", "StateEffect", "EditorView", "Decoration", "WidgetType", "ViewPlugin", "mx", "HorizontalRuleWidget", "WidgetType", "toDOM", "el", "document", "createElement", "className", "LinkButton", "constructor", "url", "render", "eq", "other", "view", "CheckboxWidget", "_checked", "input", "type", "checked", "state", "readOnly", "setAttribute", "onmousedown", "event", "pos", "posAtDOM", "text", "sliceDoc", "dispatch", "changes", "from", "to", "insert", "preventDefault", "ignoreEvent", "hide", "Decoration", "replace", "fencedCodeLine", "line", "class", "mx", "fencedCodeLineFirst", "fencedCodeLineLast", "commentBlockLine", "commentBlockLineFirst", "commentBlockLineLast", "horizontalRule", "widget", "checkedTask", "uncheckedTask", "editingRange", "range", "focus", "selection", "main", "head", "MarksByParent", "Set", "buildDecorations", "options", "deco", "RangeSetBuilder", "atomicDeco", "visibleRanges", "syntaxTree", "iterate", "enter", "node", "name", "editing", "block", "viewportLineBlocks", "first", "last", "test", "doc", "sliceString", "add", "marks", "getChildren", "urlNode", "getChild", "length", "mark", "tagName", "attributes", "href", "rel", "target", "renderLinkButton", "parent", "lineAt", "next", "start", "has", "finish", "forceUpdate", "StateEffect", "define", "decorateMarkdown", "ViewPlugin", "fromClass", "hasFocus", "update", "docChanged", "viewportChanged", "focusChanged", "transactions", "some", "tr", "effects", "e", "is", "selectionSet", "selectionChangeDelay", "clearUpdate", "scheduleUpdate", "pendingUpdate", "setTimeout", "of", "clearTimeout", "undefined", "destroy", "provide", "plugin", "EditorView", "atomicRanges", "none", "decorations", "formattingStyles", "baseTheme", "fontFamily", "getToken", "join", "paddingInline", "display", "width", "position", "inset", "content", "borderTopLeftRadius", "borderTopRightRadius", "borderBottomLeftRadius", "borderBottomRightRadius", "background", "mixBlendMode", "height", "verticalAlign", "borderTop", "color", "marginLeft", "marginRight", "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", "preloaded", "Set", "preloadImage", "url", "has", "img", "document", "createElement", "src", "syntaxTree", "iterate", "enter", "node", "name", "urlNode", "getChild", "hide", "readOnly", "sliceDoc", "push", "replace", "block", "widget", "ImageWidget", "range", "WidgetType", "constructor", "_url", "eq", "other", "toDOM", "view", "setAttribute", "onload", "classList", "imageUpload", "syntaxTree", "hoverTooltip", "tooltipContent", "linkTooltip", "render", "hoverTooltip", "view", "pos", "side", "syntax", "syntaxTree", "state", "resolveInner", "link", "i", "node", "parent", "name", "url", "getChild", "urlText", "sliceDoc", "from", "to", "end", "above", "create", "el", "document", "createElement", "className", "tooltipContent", "dom", "offset", "x", "y", "syntaxTree", "RangeSetBuilder", "StateField", "Decoration", "EditorView", "WidgetType", "table", "options", "StateField", "define", "create", "state", "update", "_", "tr", "provide", "field", "EditorView", "decorations", "from", "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", "constructor", "_table", "eq", "other", "join", "toDOM", "view", "document", "createElement", "appendChild", "cell", "th", "setAttribute", "textContent", "body", "td", "ignoreEvent", "e", "test", "type", "autocompletion", "log", "mention", "onSearch", "activateOnTyping", "closeOnBlur", "icons", "override", "context", "info", "match", "matchBefore", "from", "to", "explicit", "options", "text", "slice", "toLowerCase", "map", "value", "label", "Facet", "keymap", "vim", "vscodeKeymap", "focusEvent", "editorMode", "Facet", "define", "combine", "modes", "EditorModes", "default", "vscode", "of", "type", "keymap", "vscodeKeymap", "vim", "noTabster", "key", "run", "view", "dispatch", "userEvent", "Transaction", "EditorView", "keymap", "debounce", "invariant", "isNotFalsy", "scrollAnnotation", "keyPrefix", "localStorageStateStoreAdapter", "setState", "id", "state", "invariant", "localStorage", "setItem", "JSON", "stringify", "getState", "getItem", "parse", "undefined", "setStateDebounced", "debounce", "EditorView", "updateListener", "of", "view", "changes", "transactions", "facet", "documentId", "some", "tr", "isUserEvent", "top", "dom", "getBoundingClientRect", "pos", "posAtCoords", "x", "y", "anchor", "head", "selection", "main", "scrollTo", "from", "yMargin", "keymap", "key", "run", "dispatch", "effects", "scrollIntoView", "annotations", "Transaction", "userEvent", "filter", "isNotFalsy", "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", "TextEditor", "forwardRef", "id", "doc", "selection", "extensions", "className", "autoFocus", "scrollTo", "propsScrollTo", "moveToEndOfLine", "debug", "dataTestId", "forwardedRef", "instanceId", "useState", "useDefaultValue", "EditorView", "scrollIntoView", "yMargin", "tabsterDOMAttribute", "useFocusableGroup", "tabBehavior", "rootRef", "useRef", "view", "setView", "useImperativeHandle", "useEffect", "focus", "log", "state", "EditorState", "create", "documentId", "of", "exceptionSink", "err", "catch", "updateListener", "update", "transactions", "forEach", "transaction", "isUserEvent", "focusEvent", "current", "filter", "isNotFalsy", "parent", "dispatchTransactions", "trs", "logChanges", "to", "lineAt", "dispatch", "anchor", "facet", "editorMode", "noTabster", "removeAttribute", "destroy", "handleKeyUp", "useCallback", "event", "key", "div", "role", "ref", "tabIndex", "data-testid", "onKeyUp", "ChatText", "Code", "CodeBlock", "Image", "Link", "ListBullets", "ListChecks", "ListNumbers", "Paragraph", "Quotes", "TextStrikethrough", "Table", "TextB", "TextHOne", "TextHTwo", "TextHThree", "TextHFour", "TextHFive", "TextHSix", "TextItalic", "CaretDown", "Check", "createContext", "React", "useEffect", "useRef", "useState", "useDropzone", "DensityProvider", "ElevationProvider", "Toolbar", "NaturalToolbar", "Tooltip", "useTranslation", "DropdownMenu", "Button", "getSize", "tooltipProps", "side", "classNames", "HeadingIcons", "Paragraph", "TextHOne", "TextHTwo", "TextHThree", "TextHFour", "TextHFive", "TextHSix", "ToolbarContextProvider", "useToolbarContext", "createContext", "ToolbarRoot", "children", "onAction", "state", "React", "DensityProvider", "density", "ElevationProvider", "elevation", "NaturalToolbar", "Root", "buttonStyles", "iconStyles", "getSize", "ToolbarToggleButton", "Icon", "props", "Tooltip", "Trigger", "asChild", "ToggleGroupItem", "variant", "className", "span", "Portal", "Content", "Arrow", "ToolbarButton", "Button", "ToolbarSeparator", "div", "role", "MarkdownHeading", "t", "useTranslation", "translationKey", "blockType", "header", "exec", "value", "undefined", "HeadingIcon", "suppressNextTooltip", "useRef", "tooltipOpen", "setTooltipOpen", "useState", "selectOpen", "setSelectOpen", "open", "onOpenChange", "nextOpen", "current", "DropdownMenu", "disabled", "CaretDown", "onCloseAutoFocus", "e", "preventDefault", "Viewport", "Object", "keys", "map", "level", "CheckboxItem", "key", "checked", "onClick", "type", "data", "count", "parseInt", "ItemIndicator", "Check", "markdownStyles", "TextB", "getState", "strong", "TextItalic", "emphasis", "TextStrikethrough", "strikethrough", "Code", "code", "Link", "link", "MarkdownStyles", "ToggleGroup", "filter", "markdownLists", "ListBullets", "listStyle", "ListNumbers", "ListChecks", "MarkdownLists", "markdownBlocks", "Quotes", "blockQuote", "CodeBlock", "Table", "blankLine", "MarkdownBlocks", "find", "MarkdownStandard", "MarkdownCustom", "onUpload", "acceptedFiles", "getInputProps", "useDropzone", "multiple", "noDrag", "accept", "useEffect", "length", "requestAnimationFrame", "f", "file", "File", "name", "lastModified", "info", "url", "input", "Image", "MarkdownActions", "ChatText", "data-testid", "Toolbar", "Separator", "Markdown", "Custom", "Actions", "useActionHandler", "view", "action", "processAction", "EditorSelection", "EditorState", "EditorView", "useFocusableGroup", "useCallback", "useEffect", "useMemo", "useRef", "useState", "log", "isNotFalsy", "useTextEditor", "cb", "deps", "id", "doc", "selection", "extensions", "autoFocus", "scrollTo", "debug", "useMemo", "onUpdate", "useRef", "view", "setView", "useState", "parentRef", "useEffect", "current", "log", "state", "EditorState", "create", "documentId", "of", "EditorView", "exceptionSink", "err", "catch", "updateListener", "filter", "isNotFalsy", "parent", "dispatchTransactions", "trs", "logChanges", "update", "destroy", "main", "anchor", "EditorSelection", "single", "line", "to", "undefined", "dispatch", "effects", "scrollIntoView", "focus", "focusableGroup", "useFocusableGroup", "tabBehavior", "handleKeyUp", "useCallback", "event", "key", "target", "currentTarget", "focusAttributes", "tabIndex", "onKeyUp"]
|
|
7
7
|
}
|