@dxos/react-ui-editor 0.3.3-main.1b7ca63

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.
Files changed (81) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +21 -0
  3. package/dist/lib/browser/index.mjs +883 -0
  4. package/dist/lib/browser/index.mjs.map +7 -0
  5. package/dist/lib/browser/meta.json +1 -0
  6. package/dist/types/src/components/Composer/Composer.d.ts +15 -0
  7. package/dist/types/src/components/Composer/Composer.d.ts.map +1 -0
  8. package/dist/types/src/components/Composer/Composer.stories.d.ts +28 -0
  9. package/dist/types/src/components/Composer/Composer.stories.d.ts.map +1 -0
  10. package/dist/types/src/components/Composer/index.d.ts +2 -0
  11. package/dist/types/src/components/Composer/index.d.ts.map +1 -0
  12. package/dist/types/src/components/Markdown/Markdown.d.ts +19 -0
  13. package/dist/types/src/components/Markdown/Markdown.d.ts.map +1 -0
  14. package/dist/types/src/components/Markdown/Markdown.stories.d.ts +19 -0
  15. package/dist/types/src/components/Markdown/Markdown.stories.d.ts.map +1 -0
  16. package/dist/types/src/components/Markdown/index.d.ts +2 -0
  17. package/dist/types/src/components/Markdown/index.d.ts.map +1 -0
  18. package/dist/types/src/components/Markdown/markdownTags.d.ts +17 -0
  19. package/dist/types/src/components/Markdown/markdownTags.d.ts.map +1 -0
  20. package/dist/types/src/components/Markdown/markdownTheme.d.ts +93 -0
  21. package/dist/types/src/components/Markdown/markdownTheme.d.ts.map +1 -0
  22. package/dist/types/src/components/RichText/RichText.d.ts +20 -0
  23. package/dist/types/src/components/RichText/RichText.d.ts.map +1 -0
  24. package/dist/types/src/components/RichText/RichText.stories.d.ts +26 -0
  25. package/dist/types/src/components/RichText/RichText.stories.d.ts.map +1 -0
  26. package/dist/types/src/components/RichText/index.d.ts +2 -0
  27. package/dist/types/src/components/RichText/index.d.ts.map +1 -0
  28. package/dist/types/src/components/index.d.ts +4 -0
  29. package/dist/types/src/components/index.d.ts.map +1 -0
  30. package/dist/types/src/index.d.ts +5 -0
  31. package/dist/types/src/index.d.ts.map +1 -0
  32. package/dist/types/src/model.d.ts +37 -0
  33. package/dist/types/src/model.d.ts.map +1 -0
  34. package/dist/types/src/styles/index.d.ts +3 -0
  35. package/dist/types/src/styles/index.d.ts.map +1 -0
  36. package/dist/types/src/styles/markdown.d.ts +17 -0
  37. package/dist/types/src/styles/markdown.d.ts.map +1 -0
  38. package/dist/types/src/styles/tokens.d.ts +3 -0
  39. package/dist/types/src/styles/tokens.d.ts.map +1 -0
  40. package/dist/types/src/testing/index.d.ts +3 -0
  41. package/dist/types/src/testing/index.d.ts.map +1 -0
  42. package/dist/types/src/testing/proto/gen/schema.d.ts +15 -0
  43. package/dist/types/src/testing/proto/gen/schema.d.ts.map +1 -0
  44. package/dist/types/src/testing/proto/index.d.ts +2 -0
  45. package/dist/types/src/testing/proto/index.d.ts.map +1 -0
  46. package/dist/types/src/testing/replicator.d.ts +45 -0
  47. package/dist/types/src/testing/replicator.d.ts.map +1 -0
  48. package/dist/types/src/yjs/cursors.d.ts +5 -0
  49. package/dist/types/src/yjs/cursors.d.ts.map +1 -0
  50. package/dist/types/src/yjs/index.d.ts +3 -0
  51. package/dist/types/src/yjs/index.d.ts.map +1 -0
  52. package/dist/types/src/yjs/space-provider.d.ts +27 -0
  53. package/dist/types/src/yjs/space-provider.d.ts.map +1 -0
  54. package/dist/types/stories/html/code-mirror.stories.d.ts +12 -0
  55. package/dist/types/stories/html/code-mirror.stories.d.ts.map +1 -0
  56. package/package.json +82 -0
  57. package/src/components/Composer/Composer.stories.tsx +80 -0
  58. package/src/components/Composer/Composer.tsx +33 -0
  59. package/src/components/Composer/index.ts +5 -0
  60. package/src/components/Markdown/Markdown.stories.tsx +56 -0
  61. package/src/components/Markdown/Markdown.tsx +240 -0
  62. package/src/components/Markdown/index.ts +5 -0
  63. package/src/components/Markdown/markdownTags.ts +38 -0
  64. package/src/components/Markdown/markdownTheme.ts +236 -0
  65. package/src/components/RichText/RichText.stories.tsx +68 -0
  66. package/src/components/RichText/RichText.tsx +181 -0
  67. package/src/components/RichText/index.ts +5 -0
  68. package/src/components/index.ts +7 -0
  69. package/src/index.ts +9 -0
  70. package/src/model.ts +72 -0
  71. package/src/styles/index.ts +6 -0
  72. package/src/styles/markdown.ts +46 -0
  73. package/src/styles/tokens.ts +8 -0
  74. package/src/testing/index.ts +6 -0
  75. package/src/testing/proto/gen/schema.ts +47 -0
  76. package/src/testing/proto/index.ts +5 -0
  77. package/src/testing/proto/schema.proto +15 -0
  78. package/src/testing/replicator.ts +191 -0
  79. package/src/yjs/cursors.ts +21 -0
  80. package/src/yjs/index.ts +6 -0
  81. package/src/yjs/space-provider.ts +126 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/Composer/Composer.tsx", "../../../src/model.ts", "../../../src/yjs/cursors.ts", "../../../src/yjs/space-provider.ts", "../../../src/components/Markdown/Markdown.tsx", "../../../src/components/Markdown/markdownTags.ts", "../../../src/components/Markdown/markdownTheme.ts", "../../../src/styles/markdown.ts", "../../../src/styles/tokens.ts", "../../../src/components/RichText/RichText.tsx", "../../../src/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { forwardRef, memo, type Ref } from 'react';\n\nimport { YXmlFragment } from '@dxos/text-model';\n\nimport { type ComposerSlots, useTextModel, type UseTextModelOptions } from '../../model';\nimport { MarkdownComposer, type MarkdownComposerRef } from '../Markdown';\nimport { RichTextComposer, type TipTapEditor } from '../RichText';\n\nexport type ComposerProps = UseTextModelOptions & {\n slots?: ComposerSlots;\n};\n\n/**\n * Memoized composer which depends DXOS platform.\n *\n * Determines which composer to render based on the kind of text.\n */\n// NOTE: Without `memo`, if parent component uses `observer` the composer re-renders excessively.\n// TODO(wittjosiah): Factor out?\nexport const Composer = memo(\n forwardRef<TipTapEditor | MarkdownComposerRef, ComposerProps>(({ slots, ...options }, forwardedRef) => {\n const model = useTextModel(options);\n if (model?.content instanceof YXmlFragment) {\n return <RichTextComposer ref={forwardedRef as Ref<TipTapEditor>} model={model} slots={slots} />;\n } else {\n return <MarkdownComposer ref={forwardedRef as Ref<MarkdownComposerRef>} model={model} slots={slots} />;\n }\n }),\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { type ComponentProps, useMemo } from 'react';\nimport type * as awarenessProtocol from 'y-protocols/awareness';\n\nimport { type Space, type Text } from '@dxos/react-client/echo';\nimport { type Identity } from '@dxos/react-client/halo';\nimport type { YText, YXmlFragment } from '@dxos/text-model';\n\nimport { SpaceAwarenessProvider } from './yjs';\n\nexport type ComposerSlots = {\n root?: Omit<ComponentProps<'div'>, 'ref'>;\n editor?: {\n className?: string;\n placeholder?: string;\n spellCheck?: boolean;\n tabIndex?: number;\n markdownTheme?: Parameters<typeof EditorView.theme>[0];\n };\n};\n\ntype Awareness = awarenessProtocol.Awareness;\ntype Provider = { awareness: Awareness };\n\n// TODO(wittjosiah): Factor out to common package? @dxos/react-client?\nexport type ComposerModel = {\n id: string;\n content: string | YText | YXmlFragment;\n provider?: Provider;\n peer?: {\n id: string;\n name?: string;\n };\n};\n\nexport type UseTextModelOptions = {\n identity?: Identity | null;\n space?: Space;\n text?: Text;\n};\n\n// TODO(wittjosiah): Factor out to common package? @dxos/react-client?\n// TODO(burdon): Decouple space (make Composer less dependent on entire stack)?\nexport const useTextModel = ({ identity, space, text }: UseTextModelOptions): ComposerModel | undefined => {\n const provider = useMemo(() => {\n if (!space || !text?.doc) {\n return undefined;\n }\n\n return new SpaceAwarenessProvider({ space, doc: text.doc, channel: `yjs.awareness.${text.id}` });\n }, [identity, space, text?.doc]);\n\n if (!text?.doc || !text?.content) {\n return undefined;\n }\n\n return {\n id: text.doc.guid,\n content: text.content,\n provider,\n peer: identity\n ? {\n id: identity.identityKey.toHex(),\n name: identity.profile?.displayName,\n }\n : undefined,\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\n// Copied from https://github.com/yjs/y-codemirror.next#example.\n\nimport * as random from 'lib0/random';\n\nconst cursorColors = [\n { color: '#30bced', light: '#30bced33' },\n { color: '#6eeb83', light: '#6eeb8333' },\n { color: '#ffbc42', light: '#ffbc4233' },\n { color: '#ecd444', light: '#ecd44433' },\n { color: '#ee6352', light: '#ee635233' },\n { color: '#9ac2c9', light: '#9ac2c933' },\n { color: '#8acb88', light: '#8acb8833' },\n { color: '#1be7ff', light: '#1be7ff33' },\n];\n\n// Select a random color for this user.\nexport const cursorColor = cursorColors[random.uint32() % cursorColors.length];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport * as decoding from 'lib0/decoding';\nimport * as encoding from 'lib0/encoding';\nimport { Observable } from 'lib0/observable';\nimport * as awarenessProtocol from 'y-protocols/awareness';\nimport { type Doc } from 'yjs';\n\nimport { log } from '@dxos/log';\nimport { type Space } from '@dxos/react-client/echo';\nimport { type GossipMessage } from '@dxos/react-client/mesh';\n\ntype Awareness = awarenessProtocol.Awareness;\n\n// Based on https://github.com/yjs/y-webrtc/blob/88baab2/src/y-webrtc.js.\n\nconst messageAwareness = 1;\nconst messageQueryAwareness = 3;\n\n/**\n * Yjs awareness provider on top of a DXOS space.\n */\nexport class SpaceAwarenessProvider extends Observable<any> {\n private readonly _space: Space;\n private readonly _awareness: Awareness;\n private readonly _clientId: number;\n private readonly _channel: string;\n\n constructor({ space, doc, channel, awareness }: { space: Space; doc: Doc; channel: string; awareness?: Awareness }) {\n super();\n this._space = space;\n this._awareness = awareness ?? new awarenessProtocol.Awareness(doc);\n this._channel = channel;\n this._clientId = doc.clientID;\n\n this._awareness.on('update', this._handleAwarenessUpdate.bind(this));\n this._space.listen(this._channel, this._handleSpaceMessage.bind(this));\n\n if (typeof window !== 'undefined') {\n window.addEventListener('beforeunload', this._handleBeforeUnload.bind(this));\n } else if (typeof process !== 'undefined') {\n process.on('exit', this._handleBeforeUnload.bind(this));\n }\n\n // Post queryAwareness.\n const encoderAwarenessQuery = encoding.createEncoder();\n encoding.writeVarUint(encoderAwarenessQuery, messageQueryAwareness);\n void this._space.postMessage(this._channel, encoding.toUint8Array(encoderAwarenessQuery));\n\n // Post local awareness state.\n const encoderAwarenessState = encoding.createEncoder();\n encoding.writeVarUint(encoderAwarenessState, messageAwareness);\n encoding.writeVarUint8Array(\n encoderAwarenessState,\n awarenessProtocol.encodeAwarenessUpdate(this.awareness, [this._clientId]),\n );\n void this._space.postMessage(this._channel, encoding.toUint8Array(encoderAwarenessState));\n }\n\n get awareness(): Awareness {\n return this._awareness;\n }\n\n private _handleAwarenessUpdate({ added, updated, removed }: any, origin: any) {\n log('awareness update', { added, updated, removed, origin });\n const changedClients = added.concat(updated).concat(removed);\n const encoderAwareness = encoding.createEncoder();\n encoding.writeVarUint(encoderAwareness, messageAwareness);\n encoding.writeVarUint8Array(\n encoderAwareness,\n awarenessProtocol.encodeAwarenessUpdate(this._awareness, changedClients),\n );\n void this._space.postMessage(this._channel, encoding.toUint8Array(encoderAwareness));\n }\n\n private _handleSpaceMessage({ payload }: GossipMessage) {\n log('space message', payload);\n const data = new Uint8Array(Array.from(Object.values(payload)));\n const encoder = this._readMessage(data);\n if (encoder) {\n void this._space.postMessage(this._channel, encoding.toUint8Array(encoder));\n }\n }\n\n private _readMessage(message: Uint8Array) {\n const decoder = decoding.createDecoder(message);\n const encoder = encoding.createEncoder();\n const messageType = decoding.readVarUint(decoder);\n\n let sendReply = false;\n switch (messageType) {\n case messageAwareness: {\n awarenessProtocol.applyAwarenessUpdate(this._awareness, decoding.readVarUint8Array(decoder), this);\n break;\n }\n\n case messageQueryAwareness: {\n encoding.writeVarUint(encoder, messageAwareness);\n encoding.writeVarUint8Array(\n encoder,\n awarenessProtocol.encodeAwarenessUpdate(this._awareness, Array.from(this._awareness.getStates().keys())),\n );\n sendReply = true;\n break;\n }\n\n default: {\n console.error('Invalid message:', messageType);\n return encoder;\n }\n }\n\n if (!sendReply) {\n // Nothing has been written, no answer created.\n return null;\n }\n\n return encoder;\n }\n\n private _handleBeforeUnload() {\n awarenessProtocol.removeAwarenessStates(this._awareness, [this._clientId], 'window unload');\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { autocompletion, completionKeymap, closeBrackets, closeBracketsKeymap } from '@codemirror/autocomplete';\nimport { defaultKeymap, history, historyKeymap, indentWithTab } from '@codemirror/commands';\nimport { markdown, markdownLanguage } from '@codemirror/lang-markdown';\nimport {\n bracketMatching,\n defaultHighlightStyle,\n foldKeymap,\n indentOnInput,\n syntaxHighlighting,\n} from '@codemirror/language';\nimport { languages } from '@codemirror/language-data';\nimport { lintKeymap } from '@codemirror/lint';\nimport { searchKeymap, highlightSelectionMatches } from '@codemirror/search';\nimport { EditorState, StateField, type Text } from '@codemirror/state';\nimport { oneDarkHighlightStyle } from '@codemirror/theme-one-dark';\nimport {\n keymap,\n crosshairCursor,\n drawSelection,\n dropCursor,\n highlightActiveLine,\n highlightActiveLineGutter,\n highlightSpecialChars,\n placeholder,\n rectangularSelection,\n EditorView,\n} from '@codemirror/view';\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { vim } from '@replit/codemirror-vim';\nimport React, {\n type KeyboardEvent,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n useMemo,\n useCallback,\n} from 'react';\nimport { yCollab } from 'y-codemirror.next';\n\nimport { generateName } from '@dxos/display-name';\nimport { useThemeContext } from '@dxos/react-ui';\nimport { configColors } from '@dxos/react-ui-theme';\nimport { YText } from '@dxos/text-model';\n\nimport { markdownTagsExtension } from './markdownTags';\nimport { markdownDarkHighlighting, markdownTheme } from './markdownTheme';\nimport { type ComposerModel, type ComposerSlots } from '../../model';\n\nexport const EditorModes = ['default', 'vim'] as const;\nexport type EditorMode = (typeof EditorModes)[number];\n\nexport type MarkdownComposerProps = {\n model?: ComposerModel;\n slots?: ComposerSlots;\n editorMode?: EditorMode;\n onChange?: (content: string | Text) => void;\n};\n\nexport type MarkdownComposerRef = {\n editor: HTMLDivElement | null;\n state?: EditorState;\n view?: EditorView;\n};\n\nconst hexadecimalPaletteSeries: (keyof typeof configColors)[] = [\n 'red' as const,\n 'orange' as const,\n 'amber' as const,\n 'yellow' as const,\n 'lime' as const,\n 'green' as const,\n 'emerald' as const,\n 'teal' as const,\n 'cyan' as const,\n 'sky' as const,\n 'indigo' as const,\n 'violet' as const,\n 'purple' as const,\n 'fuchsia' as const,\n 'pink' as const,\n 'rose' as const,\n];\n\nconst shadeKeys = {\n color: '450' as const,\n highlightDark: '800' as const,\n highlightLight: '100' as const,\n};\n\nexport const MarkdownComposer = forwardRef<MarkdownComposerRef, MarkdownComposerProps>(\n ({ model, slots = {}, onChange, editorMode }, forwardedRef) => {\n const { id, content, provider, peer } = model ?? {};\n const { themeMode } = useThemeContext();\n const tabsterDOMAttribute = useFocusableGroup({ tabBehavior: 'limited' });\n\n const [parent, setParent] = useState<HTMLDivElement | null>(null);\n const [state, setState] = useState<EditorState>();\n const [view, setView] = useState<EditorView>();\n\n useImperativeHandle(forwardedRef, () => ({\n editor: parent,\n state,\n view,\n }));\n\n const listenChangesExtension = useMemo(\n () =>\n StateField.define({\n create: () => null,\n update: (_value, transaction) => {\n if (transaction.docChanged && onChange) {\n onChange(transaction.newDoc);\n }\n return null;\n },\n }),\n [onChange],\n );\n\n useEffect(() => {\n if (provider && peer) {\n let peerColorDigit = Math.floor(16 * Math.random());\n try {\n // TODO(wittjosiah): Factor out for use w/ html-only story and RichText component.\n // `peer.id` is already a `string`, so we attempt `parseInt` within a `try` since we can’t be certain it is hexadecimal.\n peerColorDigit = parseInt(peer.id.slice(-1), 16);\n } catch (_) {}\n provider.awareness.setLocalStateField('user', {\n name: peer.name ?? generateName(peer.id),\n color: configColors[hexadecimalPaletteSeries[peerColorDigit]][shadeKeys.color],\n colorLight:\n configColors[hexadecimalPaletteSeries[peerColorDigit]][\n shadeKeys[themeMode === 'dark' ? 'highlightDark' : 'highlightLight']\n ],\n });\n }\n }, [provider, peer, themeMode]);\n\n useEffect(() => {\n if (!parent) {\n return;\n }\n\n const state = EditorState.create({\n doc: content?.toString(),\n extensions: [\n // Based on https://github.com/codemirror/dev/issues/44#issuecomment-789093799.\n listenChangesExtension,\n\n ...(editorMode === 'vim' ? [vim()] : []),\n\n // All of https://github.com/codemirror/basic-setup minus line numbers and fold gutter.\n highlightActiveLineGutter(),\n highlightSpecialChars(),\n history(),\n drawSelection(),\n dropCursor(),\n EditorState.allowMultipleSelections.of(true),\n indentOnInput(),\n syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n bracketMatching(),\n closeBrackets(),\n autocompletion(),\n rectangularSelection(),\n crosshairCursor(),\n highlightActiveLine(),\n highlightSelectionMatches(),\n placeholder(slots.editor?.placeholder ?? ''), // TODO(burdon): Needs consistent styling.\n keymap.of([\n ...closeBracketsKeymap,\n ...defaultKeymap,\n ...searchKeymap,\n ...historyKeymap,\n ...foldKeymap,\n ...completionKeymap,\n ...lintKeymap,\n indentWithTab,\n ]),\n EditorView.lineWrapping,\n // Theme\n markdown({ base: markdownLanguage, codeLanguages: languages, extensions: [markdownTagsExtension] }),\n EditorView.theme({ ...markdownTheme, ...slots.editor?.markdownTheme }),\n ...(themeMode === 'dark'\n ? [syntaxHighlighting(oneDarkHighlightStyle)]\n : [syntaxHighlighting(defaultHighlightStyle)]),\n // TODO(thure): All but one rule here apply to both themes; rename or refactor.\n syntaxHighlighting(markdownDarkHighlighting),\n\n // Collaboration\n ...(content instanceof YText ? [yCollab(content, provider?.awareness)] : []),\n ],\n });\n\n setState(state);\n\n // NOTE: This repaints the editor.\n // If the new state is derived from the old state, it will likely not be visible other than the cursor resetting.\n // Ideally this should not be hit except when changing between text objects.\n view?.destroy();\n setView(new EditorView({ state, parent }));\n\n return () => {\n view?.destroy();\n setView(undefined);\n setState(undefined);\n };\n }, [parent, content, provider?.awareness, themeMode, editorMode]);\n\n const handleKeyUp = useCallback(\n ({ key, altKey, shiftKey, metaKey, ctrlKey }: KeyboardEvent) => {\n switch (key) {\n case 'Enter':\n view?.contentDOM.focus();\n break;\n\n case 'Escape':\n editorMode === 'vim' && (altKey || shiftKey || metaKey || ctrlKey) && parent?.focus();\n break;\n }\n },\n [view, editorMode],\n );\n\n return (\n <div\n tabIndex={0}\n key={id}\n {...slots.root}\n onKeyUp={handleKeyUp}\n {...(editorMode !== 'vim' ? tabsterDOMAttribute : {})}\n ref={setParent}\n />\n );\n },\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { styleTags, Tag } from '@lezer/highlight';\nimport { type MarkdownConfig } from '@lezer/markdown';\n\nexport const markdownTags = {\n headingMark: Tag.define(),\n quoteMark: Tag.define(),\n listMark: Tag.define(),\n linkMark: Tag.define(),\n emphasisMark: Tag.define(),\n codeMark: Tag.define(),\n codeText: Tag.define(),\n inlineCode: Tag.define(),\n url: Tag.define(),\n linkReference: Tag.define(),\n linkLabel: Tag.define(),\n};\n\nexport const markdownTagsExtension: MarkdownConfig = {\n props: [\n styleTags({\n HeaderMark: markdownTags.headingMark,\n QuoteMark: markdownTags.quoteMark,\n ListMark: markdownTags.listMark,\n LinkMark: markdownTags.linkMark,\n EmphasisMark: markdownTags.emphasisMark,\n CodeMark: markdownTags.codeMark,\n CodeText: markdownTags.codeText,\n InlineCode: markdownTags.inlineCode,\n URL: markdownTags.url,\n LinkReference: markdownTags.linkReference,\n LinkLabel: markdownTags.linkLabel,\n }),\n ],\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { markdownLanguage } from '@codemirror/lang-markdown';\nimport { HighlightStyle } from '@codemirror/language';\nimport { tags } from '@lezer/highlight';\nimport get from 'lodash.get';\n\nimport { markdownTags } from './markdownTags';\nimport { bold, heading, italic, mark, strikethrough, tokens } from '../../styles';\n\n// TODO(burdon): Use theme colors.\n// TODO(burdon): Light mode.\n\nexport const chalky = '#e5c07b';\nexport const coral = '#e06c75';\nexport const cyan = '#56b6c2';\nexport const invalid = '#ffffff';\nexport const ivory = '#abb2bf';\nexport const stone = '#7d8799';\nexport const malibu = '#61afef';\nexport const sage = '#98c379';\nexport const whiskey = '#d19a66';\nexport const violet = '#c678dd';\nconst _darkBackground = '#21252b';\nexport const highlightBackground = '#2c313a';\nconst _background = '#282c34';\nexport const tooltipBackground = '#353a42';\nconst _selection = '#3E4451';\nexport const cursor = '#ffffff';\n\nconst monospace = get(tokens, 'fontFamily.mono', ['monospace']).join(',');\n\nexport const markdownTheme = {\n // TODO(thure): consider whether these commented-out rules from one-dark-theme should be integrated.\n // '&': {\n // color: ivory,\n // backgroundColor: background\n // },\n // '.cm-cursor, .cm-dropCursor': { borderLeftColor: cursor },\n // '&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection': {\n // backgroundColor: selection\n // },\n // '.cm-panels': { backgroundColor: darkBackground, color: ivory },\n // '.cm-panels.cm-panels-top': { borderBottom: '2px solid black' },\n // '.cm-panels.cm-panels-bottom': { borderTop: '2px solid black' },\n // '.cm-searchMatch': {\n // backgroundColor: '#72a1ff59',\n // outline: '1px solid #457dff'\n // },\n // '.cm-searchMatch.cm-searchMatch-selected': {\n // backgroundColor: '#6199ff2f'\n // },\n // '.cm-activeLine': { backgroundColor: '#6699ff0b' },\n // '.cm-selectionMatch': { backgroundColor: '#aafe661a' },\n // '&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket': {\n // backgroundColor: '#bad0f847'\n // },\n // '.cm-gutters': {\n // backgroundColor: background,\n // color: stone,\n // border: 'none'\n // },\n // '.cm-activeLineGutter': {\n // backgroundColor: highlightBackground\n // },\n // '.cm-foldPlaceholder': {\n // backgroundColor: 'transparent',\n // border: 'none',\n // color: '#ddd'\n // },\n\n '.dark & .cm-tooltip': {\n border: 'none',\n backgroundColor: tooltipBackground,\n },\n '.dark & .cm-tooltip .cm-tooltip-arrow:before': {\n borderTopColor: 'transparent',\n borderBottomColor: 'transparent',\n },\n '.dark & .cm-tooltip .cm-tooltip-arrow:after': {\n borderTopColor: tooltipBackground,\n borderBottomColor: tooltipBackground,\n },\n '.dark & .cm-tooltip-autocomplete': {\n '& > ul > li[aria-selected]': {\n backgroundColor: highlightBackground,\n color: ivory,\n },\n },\n '&.cm-focused': {\n outline: 'none',\n },\n '& .cm-line': {\n paddingInline: 0,\n },\n '& .cm-line *': {\n lineHeight: 1.6,\n },\n '& .cm-selectionBackground': {\n background: get(tokens, 'extend.colors.primary.150', '#00ffff') + 'aa',\n },\n '.dark & .cm-selectionBackground': {\n background: get(tokens, 'extend.colors.primary.500', '#00ffff') + 'aa',\n },\n '& .cm-selectionMatch': {\n background: get(tokens, 'extend.colors.primary.100', '#00ffff') + '44',\n },\n '.dark & .cm-selectionMatch': {\n background: get(tokens, 'extend.colors.primary.400', '#00ffff') + '44',\n },\n '& .cm-content': {\n caretColor: 'black',\n },\n '.dark & .cm-content': {\n caretColor: cursor,\n },\n '& .cm-cursor': {\n borderLeftColor: 'black',\n },\n '.dark & .cm-cursor': {\n borderLeftColor: cursor,\n },\n '.cm-placeholder': {\n fontFamily: get(tokens, 'fontFamily.body', []).join(','),\n },\n '& .cm-scroller': {\n fontFamily: get(tokens, 'fontFamily.mono', []).join(','),\n },\n '& .cm-activeLine': {\n backgroundColor: 'transparent',\n },\n '.dark & .cm-activeLine': {\n backgroundColor: 'transparent',\n },\n '& .cm-ySelectionInfo': {\n fontFamily: get(tokens, 'fontFamily.body', []).join(','),\n padding: '2px 4px',\n marginBlockStart: '-4px',\n },\n '& .cm-ySelection': {\n display: 'inline-block',\n },\n '& .cm-ySelectionCaret': {\n display: 'inline-block',\n verticalAlign: 'top',\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 // TODO(thure): This appears to be the best or only way to set selection caret heights, but it's far more verbose than it needs to be.\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\nexport const markdownDarkHighlighting = 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 tag: [tags.link, tags.url],\n color: 'inherit !important',\n textDecoration: 'none !important',\n },\n {\n tag: [tags.function(tags.variableName), tags.labelName],\n color: malibu,\n fontFamily: monospace,\n },\n {\n tag: [\n markdownTags.codeMark,\n markdownTags.emphasisMark,\n markdownTags.headingMark,\n markdownTags.linkLabel,\n markdownTags.linkReference,\n markdownTags.listMark,\n markdownTags.quoteMark,\n markdownTags.url,\n tags.meta,\n tags.processingInstruction,\n ],\n class: mark,\n },\n { tag: [markdownTags.codeText, markdownTags.inlineCode], class: 'font-mono' },\n { tag: tags.emphasis, class: italic },\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 { tag: tags.strikethrough, class: strikethrough },\n { tag: tags.strong, class: bold },\n ],\n { scope: markdownLanguage, all: { fontFamily: get(tokens, 'fontFamily.body', []).join(',') } },\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\nexport const heading: Record<HeadingLevel, string> = {\n 1: 'mbs-4 mbe-2 text-4xl font-semibold text-inherit no-underline',\n 2: 'mbs-4 mbe-2 text-3xl font-bold text-inherit no-underline',\n 3: 'mbs-4 mbe-2 text-2xl font-bold text-inherit no-underline',\n 4: 'mbs-4 mbe-2 text-xl font-extrabold text-inherit no-underline',\n 5: 'mbs-4 mbe-2 text-lg font-extrabold text-inherit no-underline',\n 6: 'mbs-4 mbe-2 font-black text-inherit no-underline',\n};\n\nexport const blockquote = 'mlb-2 border-is-4 border-neutral-500/50 pis-5';\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\nexport const codeBlock = 'mlb-2 font-mono bg-neutral-500/10 p-3 rounded';\n\nexport const horizontalRule = 'mlb-4 border-neutral-500/50';\n\nexport const paragraph = 'mlb-1';\n\nexport const bold = 'font-bold';\n\nexport const code = 'font-mono bg-neutral-500/10 rounded pli-0.5 plb-0.5 -mlb-0.5';\n\nexport const placeholder = 'font-mono';\n\nexport const codeWithoutMarks = mx(code, 'pli-1.5 mli-0.5');\n\nexport const italic = 'italic';\n\nexport const strikethrough = 'line-through';\n\nexport const mark = '!font-normal !no-underline !text-inherit opacity-40';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { tailwindConfig, type TailwindConfig } from '@dxos/react-ui-theme';\n\n// TODO(thure): Why export the whole theme? Can this be done differently?\nexport const tokens: TailwindConfig['theme'] = tailwindConfig({}).theme;\n", "//\n// Copyright 2022 DXOS.org\n//\nimport { mergeAttributes } from '@tiptap/core';\nimport Collaboration from '@tiptap/extension-collaboration';\nimport CollaborationCursor from '@tiptap/extension-collaboration-cursor';\nimport Heading from '@tiptap/extension-heading';\nimport ListItem from '@tiptap/extension-list-item';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport { type Editor, EditorContent, useEditor as useNaturalEditor } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport React, { forwardRef, useImperativeHandle, useMemo } from 'react';\n\nimport { generateName } from '@dxos/display-name';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type ComposerModel, type ComposerSlots } from '../../model';\nimport {\n blockquote,\n bold,\n codeBlock,\n heading,\n type HeadingLevel,\n horizontalRule,\n italic,\n listItem,\n orderedList,\n paragraph,\n strikethrough,\n unorderedList,\n codeWithoutMarks,\n} from '../../styles';\nimport { cursorColor } from '../../yjs';\n\nexport type TipTapEditor = Editor;\n\ntype UseEditorOptions = {\n model?: ComposerModel;\n placeholder?: string;\n slots?: Pick<ComposerSlots, 'editor'>;\n};\n\nconst useEditor = ({ model, placeholder = 'Enter text…', slots = {} }: UseEditorOptions) => {\n const extensions = useMemo(\n () => [\n StarterKit.configure({\n // Extensions\n history: false,\n // Nodes\n blockquote: {\n HTMLAttributes: {\n class: blockquote,\n },\n },\n bulletList: {\n HTMLAttributes: {\n class: unorderedList,\n },\n },\n codeBlock: {\n HTMLAttributes: {\n class: codeBlock,\n },\n },\n heading: false, // (thure): `StarterKit` doesn’t let you configure how headings are rendered, see `Heading` below.\n horizontalRule: {\n HTMLAttributes: {\n class: horizontalRule,\n },\n },\n listItem: false, // (thure): `StarterKit` doesn’t let you configure how list items are rendered, see `ListItem` below.\n orderedList: {\n HTMLAttributes: {\n class: orderedList,\n },\n },\n paragraph: {\n HTMLAttributes: {\n class: paragraph,\n },\n },\n // Marks\n bold: {\n HTMLAttributes: {\n class: bold,\n },\n },\n code: {\n HTMLAttributes: {\n class: codeWithoutMarks,\n },\n },\n italic: {\n HTMLAttributes: {\n class: italic,\n },\n },\n strike: {\n HTMLAttributes: {\n class: strikethrough,\n },\n },\n }),\n Heading.extend({\n renderHTML({ node, HTMLAttributes }) {\n const hasLevel = this.options.levels.includes(node.attrs.level);\n const level: HeadingLevel = hasLevel ? node.attrs.level : this.options.levels[0];\n\n return [\n `h${level}`,\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {\n class: heading[level],\n }),\n 0,\n ];\n },\n }),\n ListItem.extend({\n renderHTML: ({ HTMLAttributes }) => [\n 'li',\n mergeAttributes(HTMLAttributes, {\n marker: '• ',\n class: listItem,\n }),\n ['div', { role: 'none' }, 0],\n ],\n }),\n // https://github.com/ueberdosis/tiptap/tree/main/packages/extension-collaboration\n ...(model && typeof model.content !== 'string' ? [Collaboration.configure({ fragment: model.content })] : []),\n ...(model?.provider\n ? [\n CollaborationCursor.configure({\n provider: model.provider,\n user: model.peer && {\n name: model.peer.name ?? generateName(model.peer.id),\n color: cursorColor.color,\n },\n }),\n ]\n : []),\n Placeholder.configure({\n placeholder,\n emptyEditorClass: 'before:content-[attr(data-placeholder)] before:absolute opacity-50 cursor-text',\n }),\n ],\n [model?.id],\n );\n\n return useNaturalEditor(\n {\n extensions,\n editorProps: {\n attributes: {\n class: mx('focus:outline-none focus-visible:outline-none', slots.editor?.className),\n spellcheck: slots.editor?.spellCheck === false ? 'false' : 'true',\n tabindex: slots.editor?.tabIndex ? String(slots.editor?.tabIndex) : '0',\n },\n },\n },\n [extensions],\n );\n};\n\nexport type RichTextComposerProps = UseEditorOptions & {\n slots?: ComposerSlots;\n};\n\n/**\n * @deprecated\n */\n// TODO(burdon): Currently broken.\nexport const RichTextComposer = forwardRef<Editor | null, RichTextComposerProps>((props, ref) => {\n const editor = useEditor(props);\n useImperativeHandle<Editor | null, Editor | null>(ref, () => editor, [editor]);\n\n // Reference:\n // https://tiptap.dev/installation/react\n // https://github.com/ueberdosis/tiptap\n // https://tiptap.dev/guide/output/#option-3-yjs\n return <EditorContent {...props.slots?.root} editor={editor} />;\n});\n", "//\n// Copyright 2022 DXOS.org\n//\n\nexport * from './components';\nexport * from './model';\n\nexport { TextKind } from '@dxos/protocols/proto/dxos/echo/model/text';\nexport { Doc, YText, YXmlFragment } from '@dxos/text-model';\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "forwardRef", "memo", "YXmlFragment", "useMemo", "random", "cursorColors", "color", "light", "cursorColor", "uint32", "length", "decoding", "encoding", "Observable", "awarenessProtocol", "log", "messageAwareness", "messageQueryAwareness", "SpaceAwarenessProvider", "constructor", "space", "doc", "channel", "awareness", "_space", "_awareness", "Awareness", "_channel", "_clientId", "clientID", "on", "_handleAwarenessUpdate", "bind", "listen", "_handleSpaceMessage", "window", "addEventListener", "_handleBeforeUnload", "process", "encoderAwarenessQuery", "createEncoder", "writeVarUint", "postMessage", "toUint8Array", "encoderAwarenessState", "writeVarUint8Array", "encodeAwarenessUpdate", "added", "updated", "removed", "origin", "changedClients", "concat", "encoderAwareness", "payload", "data", "Uint8Array", "Array", "from", "Object", "values", "encoder", "_readMessage", "message", "decoder", "createDecoder", "messageType", "readVarUint", "sendReply", "applyAwarenessUpdate", "readVarUint8Array", "getStates", "keys", "console", "error", "removeAwarenessStates", "useTextModel", "identity", "space", "text", "provider", "useMemo", "doc", "undefined", "SpaceAwarenessProvider", "channel", "id", "content", "guid", "peer", "identityKey", "toHex", "name", "profile", "displayName", "autocompletion", "completionKeymap", "closeBrackets", "closeBracketsKeymap", "defaultKeymap", "history", "historyKeymap", "indentWithTab", "markdown", "markdownLanguage", "bracketMatching", "defaultHighlightStyle", "foldKeymap", "indentOnInput", "syntaxHighlighting", "languages", "lintKeymap", "searchKeymap", "highlightSelectionMatches", "EditorState", "StateField", "oneDarkHighlightStyle", "keymap", "crosshairCursor", "drawSelection", "dropCursor", "highlightActiveLine", "highlightActiveLineGutter", "highlightSpecialChars", "placeholder", "rectangularSelection", "EditorView", "useFocusableGroup", "vim", "React", "forwardRef", "useEffect", "useImperativeHandle", "useState", "useMemo", "useCallback", "yCollab", "generateName", "useThemeContext", "configColors", "YText", "styleTags", "Tag", "markdownTags", "headingMark", "Tag", "define", "quoteMark", "listMark", "linkMark", "emphasisMark", "codeMark", "codeText", "inlineCode", "url", "linkReference", "linkLabel", "markdownTagsExtension", "props", "styleTags", "HeaderMark", "QuoteMark", "ListMark", "LinkMark", "EmphasisMark", "CodeMark", "CodeText", "InlineCode", "URL", "LinkReference", "LinkLabel", "markdownLanguage", "HighlightStyle", "tags", "get", "mx", "heading", "blockquote", "unorderedList", "orderedList", "listItem", "codeBlock", "horizontalRule", "paragraph", "bold", "code", "codeWithoutMarks", "mx", "code", "italic", "strikethrough", "mark", "tailwindConfig", "tokens", "tailwindConfig", "theme", "ivory", "malibu", "highlightBackground", "tooltipBackground", "cursor", "monospace", "get", "tokens", "join", "markdownTheme", "border", "backgroundColor", "tooltipBackground", "borderTopColor", "borderBottomColor", "highlightBackground", "color", "ivory", "outline", "paddingInline", "lineHeight", "background", "caretColor", "borderLeftColor", "fontFamily", "padding", "marginBlockStart", "display", "verticalAlign", "Object", "keys", "reduce", "acc", "fontSize", "height", "markdownDarkHighlighting", "HighlightStyle", "define", "tag", "tags", "keyword", "name", "deleted", "character", "propertyName", "macroName", "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", "link", "url", "textDecoration", "function", "labelName", "malibu", "markdownTags", "codeMark", "emphasisMark", "headingMark", "linkLabel", "linkReference", "listMark", "quoteMark", "class", "mark", "codeText", "inlineCode", "emphasis", "italic", "heading1", "heading", "heading2", "heading3", "heading4", "heading5", "heading6", "strikethrough", "strong", "bold", "scope", "markdownLanguage", "all", "EditorModes", "hexadecimalPaletteSeries", "shadeKeys", "color", "highlightDark", "highlightLight", "MarkdownComposer", "forwardRef", "model", "slots", "onChange", "editorMode", "forwardedRef", "id", "content", "provider", "peer", "themeMode", "useThemeContext", "tabsterDOMAttribute", "useFocusableGroup", "tabBehavior", "parent", "setParent", "useState", "state", "setState", "view", "setView", "useImperativeHandle", "editor", "listenChangesExtension", "useMemo", "StateField", "define", "create", "update", "_value", "transaction", "docChanged", "newDoc", "useEffect", "peerColorDigit", "Math", "floor", "random", "parseInt", "slice", "_", "awareness", "setLocalStateField", "name", "generateName", "configColors", "colorLight", "EditorState", "doc", "toString", "extensions", "vim", "highlightActiveLineGutter", "highlightSpecialChars", "history", "drawSelection", "dropCursor", "allowMultipleSelections", "of", "indentOnInput", "syntaxHighlighting", "defaultHighlightStyle", "fallback", "bracketMatching", "closeBrackets", "autocompletion", "rectangularSelection", "crosshairCursor", "highlightActiveLine", "highlightSelectionMatches", "placeholder", "keymap", "closeBracketsKeymap", "defaultKeymap", "searchKeymap", "historyKeymap", "foldKeymap", "completionKeymap", "lintKeymap", "indentWithTab", "EditorView", "lineWrapping", "markdown", "base", "markdownLanguage", "codeLanguages", "languages", "markdownTagsExtension", "theme", "markdownTheme", "oneDarkHighlightStyle", "markdownDarkHighlighting", "YText", "yCollab", "destroy", "undefined", "handleKeyUp", "useCallback", "key", "altKey", "shiftKey", "metaKey", "ctrlKey", "contentDOM", "focus", "div", "tabIndex", "root", "onKeyUp", "ref", "mergeAttributes", "Collaboration", "CollaborationCursor", "Heading", "ListItem", "Placeholder", "EditorContent", "useEditor", "useNaturalEditor", "StarterKit", "React", "forwardRef", "useImperativeHandle", "useMemo", "generateName", "mx", "useEditor", "model", "placeholder", "slots", "extensions", "useMemo", "StarterKit", "configure", "history", "blockquote", "HTMLAttributes", "class", "bulletList", "unorderedList", "codeBlock", "heading", "horizontalRule", "listItem", "orderedList", "paragraph", "bold", "code", "codeWithoutMarks", "italic", "strike", "strikethrough", "Heading", "extend", "renderHTML", "node", "hasLevel", "options", "levels", "includes", "attrs", "level", "mergeAttributes", "ListItem", "marker", "role", "content", "Collaboration", "fragment", "provider", "CollaborationCursor", "user", "peer", "name", "generateName", "id", "color", "cursorColor", "Placeholder", "emptyEditorClass", "useNaturalEditor", "editorProps", "attributes", "mx", "editor", "className", "spellcheck", "spellCheck", "tabindex", "tabIndex", "String", "RichTextComposer", "forwardRef", "props", "ref", "useImperativeHandle", "React", "EditorContent", "root", "Composer", "memo", "forwardRef", "slots", "options", "forwardedRef", "model", "useTextModel", "content", "YXmlFragment", "React", "RichTextComposer", "ref", "MarkdownComposer", "TextKind", "Doc", "YText", "YXmlFragment"]
7
+ }
@@ -0,0 +1 @@
1
+ {"inputs":{"packages/ui/react-ui-editor/src/yjs/cursors.ts":{"bytes":2630,"imports":[{"path":"lib0/random","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-editor/src/yjs/space-provider.ts":{"bytes":15633,"imports":[{"path":"lib0/decoding","kind":"import-statement","external":true},{"path":"lib0/encoding","kind":"import-statement","external":true},{"path":"lib0/observable","kind":"import-statement","external":true},{"path":"y-protocols/awareness","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-editor/src/yjs/index.ts":{"bytes":576,"imports":[{"path":"packages/ui/react-ui-editor/src/yjs/cursors.ts","kind":"import-statement","original":"./cursors"},{"path":"packages/ui/react-ui-editor/src/yjs/space-provider.ts","kind":"import-statement","original":"./space-provider"}],"format":"esm"},"packages/ui/react-ui-editor/src/model.ts":{"bytes":5001,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-editor/src/yjs/index.ts","kind":"import-statement","original":"./yjs"}],"format":"esm"},"packages/ui/react-ui-editor/src/components/Markdown/markdownTags.ts":{"bytes":4139,"imports":[{"path":"@lezer/highlight","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-editor/src/styles/markdown.ts":{"bytes":5365,"imports":[{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-editor/src/styles/tokens.ts":{"bytes":1040,"imports":[{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true}],"format":"esm"},"packages/ui/react-ui-editor/src/styles/index.ts":{"bytes":560,"imports":[{"path":"packages/ui/react-ui-editor/src/styles/markdown.ts","kind":"import-statement","original":"./markdown"},{"path":"packages/ui/react-ui-editor/src/styles/tokens.ts","kind":"import-statement","original":"./tokens"}],"format":"esm"},"packages/ui/react-ui-editor/src/components/Markdown/markdownTheme.ts":{"bytes":26016,"imports":[{"path":"@codemirror/lang-markdown","kind":"import-statement","external":true},{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@lezer/highlight","kind":"import-statement","external":true},{"path":"lodash.get","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-editor/src/components/Markdown/markdownTags.ts","kind":"import-statement","original":"./markdownTags"},{"path":"packages/ui/react-ui-editor/src/styles/index.ts","kind":"import-statement","original":"../../styles"}],"format":"esm"},"packages/ui/react-ui-editor/src/components/Markdown/Markdown.tsx":{"bytes":25605,"imports":[{"path":"@codemirror/autocomplete","kind":"import-statement","external":true},{"path":"@codemirror/commands","kind":"import-statement","external":true},{"path":"@codemirror/lang-markdown","kind":"import-statement","external":true},{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@codemirror/language-data","kind":"import-statement","external":true},{"path":"@codemirror/lint","kind":"import-statement","external":true},{"path":"@codemirror/search","kind":"import-statement","external":true},{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/theme-one-dark","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@replit/codemirror-vim","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"y-codemirror.next","kind":"import-statement","external":true},{"path":"@dxos/display-name","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/text-model","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-editor/src/components/Markdown/markdownTags.ts","kind":"import-statement","original":"./markdownTags"},{"path":"packages/ui/react-ui-editor/src/components/Markdown/markdownTheme.ts","kind":"import-statement","original":"./markdownTheme"}],"format":"esm"},"packages/ui/react-ui-editor/src/components/Markdown/index.ts":{"bytes":487,"imports":[{"path":"packages/ui/react-ui-editor/src/components/Markdown/Markdown.tsx","kind":"import-statement","original":"./Markdown"}],"format":"esm"},"packages/ui/react-ui-editor/src/components/RichText/RichText.tsx":{"bytes":17970,"imports":[{"path":"@tiptap/core","kind":"import-statement","external":true},{"path":"@tiptap/extension-collaboration","kind":"import-statement","external":true},{"path":"@tiptap/extension-collaboration-cursor","kind":"import-statement","external":true},{"path":"@tiptap/extension-heading","kind":"import-statement","external":true},{"path":"@tiptap/extension-list-item","kind":"import-statement","external":true},{"path":"@tiptap/extension-placeholder","kind":"import-statement","external":true},{"path":"@tiptap/react","kind":"import-statement","external":true},{"path":"@tiptap/starter-kit","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/display-name","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-editor/src/styles/index.ts","kind":"import-statement","original":"../../styles"},{"path":"packages/ui/react-ui-editor/src/yjs/index.ts","kind":"import-statement","original":"../../yjs"}],"format":"esm"},"packages/ui/react-ui-editor/src/components/RichText/index.ts":{"bytes":487,"imports":[{"path":"packages/ui/react-ui-editor/src/components/RichText/RichText.tsx","kind":"import-statement","original":"./RichText"}],"format":"esm"},"packages/ui/react-ui-editor/src/components/Composer/Composer.tsx":{"bytes":3877,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/text-model","kind":"import-statement","external":true},{"path":"packages/ui/react-ui-editor/src/model.ts","kind":"import-statement","original":"../../model"},{"path":"packages/ui/react-ui-editor/src/components/Markdown/index.ts","kind":"import-statement","original":"../Markdown"},{"path":"packages/ui/react-ui-editor/src/components/RichText/index.ts","kind":"import-statement","original":"../RichText"}],"format":"esm"},"packages/ui/react-ui-editor/src/components/Composer/index.ts":{"bytes":487,"imports":[{"path":"packages/ui/react-ui-editor/src/components/Composer/Composer.tsx","kind":"import-statement","original":"./Composer"}],"format":"esm"},"packages/ui/react-ui-editor/src/components/index.ts":{"bytes":654,"imports":[{"path":"packages/ui/react-ui-editor/src/components/Composer/index.ts","kind":"import-statement","original":"./Composer"},{"path":"packages/ui/react-ui-editor/src/components/Markdown/index.ts","kind":"import-statement","original":"./Markdown"},{"path":"packages/ui/react-ui-editor/src/components/RichText/index.ts","kind":"import-statement","original":"./RichText"}],"format":"esm"},"packages/ui/react-ui-editor/src/index.ts":{"bytes":1026,"imports":[{"path":"packages/ui/react-ui-editor/src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"packages/ui/react-ui-editor/src/model.ts","kind":"import-statement","original":"./model"},{"path":"@dxos/protocols/proto/dxos/echo/model/text","kind":"import-statement","external":true},{"path":"@dxos/text-model","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/ui/react-ui-editor/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":53035},"packages/ui/react-ui-editor/dist/lib/browser/index.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/text-model","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"lib0/random","kind":"import-statement","external":true},{"path":"lib0/decoding","kind":"import-statement","external":true},{"path":"lib0/encoding","kind":"import-statement","external":true},{"path":"lib0/observable","kind":"import-statement","external":true},{"path":"y-protocols/awareness","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@codemirror/autocomplete","kind":"import-statement","external":true},{"path":"@codemirror/commands","kind":"import-statement","external":true},{"path":"@codemirror/lang-markdown","kind":"import-statement","external":true},{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@codemirror/language-data","kind":"import-statement","external":true},{"path":"@codemirror/lint","kind":"import-statement","external":true},{"path":"@codemirror/search","kind":"import-statement","external":true},{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/theme-one-dark","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"@fluentui/react-tabster","kind":"import-statement","external":true},{"path":"@replit/codemirror-vim","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"y-codemirror.next","kind":"import-statement","external":true},{"path":"@dxos/display-name","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/text-model","kind":"import-statement","external":true},{"path":"@lezer/highlight","kind":"import-statement","external":true},{"path":"@codemirror/lang-markdown","kind":"import-statement","external":true},{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@lezer/highlight","kind":"import-statement","external":true},{"path":"lodash.get","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@tiptap/core","kind":"import-statement","external":true},{"path":"@tiptap/extension-collaboration","kind":"import-statement","external":true},{"path":"@tiptap/extension-collaboration-cursor","kind":"import-statement","external":true},{"path":"@tiptap/extension-heading","kind":"import-statement","external":true},{"path":"@tiptap/extension-list-item","kind":"import-statement","external":true},{"path":"@tiptap/extension-placeholder","kind":"import-statement","external":true},{"path":"@tiptap/react","kind":"import-statement","external":true},{"path":"@tiptap/starter-kit","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/display-name","kind":"import-statement","external":true},{"path":"@dxos/react-ui-theme","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/echo/model/text","kind":"import-statement","external":true},{"path":"@dxos/text-model","kind":"import-statement","external":true}],"exports":["Composer","Doc","EditorModes","MarkdownComposer","RichTextComposer","TextKind","YText","YXmlFragment","useTextModel"],"entryPoint":"packages/ui/react-ui-editor/src/index.ts","inputs":{"packages/ui/react-ui-editor/src/components/Composer/Composer.tsx":{"bytesInOutput":580},"packages/ui/react-ui-editor/src/model.ts":{"bytesInOutput":619},"packages/ui/react-ui-editor/src/yjs/cursors.ts":{"bytesInOutput":565},"packages/ui/react-ui-editor/src/yjs/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-editor/src/yjs/space-provider.ts":{"bytesInOutput":3760},"packages/ui/react-ui-editor/src/components/Markdown/Markdown.tsx":{"bytesInOutput":6043},"packages/ui/react-ui-editor/src/components/Markdown/markdownTags.ts":{"bytesInOutput":891},"packages/ui/react-ui-editor/src/components/Markdown/markdownTheme.ts":{"bytesInOutput":6361},"packages/ui/react-ui-editor/src/styles/markdown.ts":{"bytesInOutput":1297},"packages/ui/react-ui-editor/src/styles/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-editor/src/styles/tokens.ts":{"bytesInOutput":94},"packages/ui/react-ui-editor/src/components/Markdown/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-editor/src/components/RichText/RichText.tsx":{"bytesInOutput":3965},"packages/ui/react-ui-editor/src/components/RichText/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-editor/src/components/Composer/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-editor/src/components/index.ts":{"bytesInOutput":0},"packages/ui/react-ui-editor/src/index.ts":{"bytesInOutput":159}},"bytes":25448}}}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { type ComposerSlots, type UseTextModelOptions } from '../../model';
3
+ import { type MarkdownComposerRef } from '../Markdown';
4
+ export type ComposerProps = UseTextModelOptions & {
5
+ slots?: ComposerSlots;
6
+ };
7
+ /**
8
+ * Memoized composer which depends DXOS platform.
9
+ *
10
+ * Determines which composer to render based on the kind of text.
11
+ */
12
+ export declare const Composer: React.MemoExoticComponent<React.ForwardRefExoticComponent<UseTextModelOptions & {
13
+ slots?: ComposerSlots | undefined;
14
+ } & React.RefAttributes<MarkdownComposerRef | import("@tiptap/react").Editor>>>;
15
+ //# sourceMappingURL=Composer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../../../../src/components/Composer/Composer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAI1D,OAAO,EAAE,KAAK,aAAa,EAAgB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGzE,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG;IAChD,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF;;;;GAIG;AAGH,eAAO,MAAM,QAAQ;;+EASpB,CAAC"}
@@ -0,0 +1,28 @@
1
+ import '@dxosTheme';
2
+ import React from 'react';
3
+ declare const _default: {
4
+ component: React.MemoExoticComponent<React.ForwardRefExoticComponent<import("../..").UseTextModelOptions & {
5
+ slots?: import("../..").ComposerSlots | undefined;
6
+ } & React.RefAttributes<import("..").MarkdownComposerRef | import("@tiptap/react").Editor>>>;
7
+ };
8
+ export default _default;
9
+ export declare const Markdown: {
10
+ render: (args: {
11
+ id: number;
12
+ }) => JSX.Element;
13
+ decorators: import("@storybook/csf").DecoratorFunction<import("@storybook/react/dist/types-0a347bb9").R, any>[];
14
+ };
15
+ export declare const Rich: {
16
+ render: (args: {
17
+ id: number;
18
+ }) => JSX.Element;
19
+ args: {
20
+ slots: {
21
+ editor: {
22
+ className: string;
23
+ };
24
+ };
25
+ };
26
+ decorators: import("@storybook/csf").DecoratorFunction<import("@storybook/react/dist/types-0a347bb9").R, any>[];
27
+ };
28
+ //# sourceMappingURL=Composer.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Composer.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Composer/Composer.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,YAAY,CAAC;AAEpB,OAAO,KAAmB,MAAM,OAAO,CAAC;;;;;;AAWxC,wBAEE;AAoCF,eAAO,MAAM,QAAQ;mBACJ;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;;CAE9B,CAAC;AAWF,eAAO,MAAM,IAAI;mBACA;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE;;;;;;;;;CAS9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './Composer';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Composer/index.ts"],"names":[],"mappings":"AAIA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { EditorState, type Text } from '@codemirror/state';
2
+ import { EditorView } from '@codemirror/view';
3
+ import React from 'react';
4
+ import { type ComposerModel, type ComposerSlots } from '../../model';
5
+ export declare const EditorModes: readonly ["default", "vim"];
6
+ export type EditorMode = (typeof EditorModes)[number];
7
+ export type MarkdownComposerProps = {
8
+ model?: ComposerModel;
9
+ slots?: ComposerSlots;
10
+ editorMode?: EditorMode;
11
+ onChange?: (content: string | Text) => void;
12
+ };
13
+ export type MarkdownComposerRef = {
14
+ editor: HTMLDivElement | null;
15
+ state?: EditorState;
16
+ view?: EditorView;
17
+ };
18
+ export declare const MarkdownComposer: React.ForwardRefExoticComponent<MarkdownComposerProps & React.RefAttributes<MarkdownComposerRef>>;
19
+ //# sourceMappingURL=Markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../../../src/components/Markdown/Markdown.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,WAAW,EAAc,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAUL,UAAU,EACX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,KAQN,MAAM,OAAO,CAAC;AAUf,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAErE,eAAO,MAAM,WAAW,6BAA8B,CAAC;AACvD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC;AA2BF,eAAO,MAAM,gBAAgB,mGAiJ5B,CAAC"}
@@ -0,0 +1,19 @@
1
+ import '@dxosTheme';
2
+ import React from 'react';
3
+ declare const _default: {
4
+ component: React.ForwardRefExoticComponent<import("./Markdown").MarkdownComposerProps & React.RefAttributes<import("./Markdown").MarkdownComposerRef>>;
5
+ };
6
+ export default _default;
7
+ export declare const Default: {
8
+ args: {
9
+ model: {
10
+ id: string;
11
+ content: string;
12
+ };
13
+ };
14
+ };
15
+ export declare const WithYjs: {
16
+ render: () => JSX.Element;
17
+ decorators: import("@storybook/csf").DecoratorFunction<import("@storybook/react/dist/types-0a347bb9").R, any>[];
18
+ };
19
+ //# sourceMappingURL=Markdown.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Markdown.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Markdown/Markdown.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,YAAY,CAAC;AAEpB,OAAO,KAAmB,MAAM,OAAO,CAAC;;;;AAUxC,wBAEE;AAEF,eAAO,MAAM,OAAO;;;;;;;CAOnB,CAAC;AAGF,eAAO,MAAM,OAAO;;;CAyBnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './Markdown';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Markdown/index.ts"],"names":[],"mappings":"AAIA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Tag } from '@lezer/highlight';
2
+ import { type MarkdownConfig } from '@lezer/markdown';
3
+ export declare const markdownTags: {
4
+ headingMark: Tag;
5
+ quoteMark: Tag;
6
+ listMark: Tag;
7
+ linkMark: Tag;
8
+ emphasisMark: Tag;
9
+ codeMark: Tag;
10
+ codeText: Tag;
11
+ inlineCode: Tag;
12
+ url: Tag;
13
+ linkReference: Tag;
14
+ linkLabel: Tag;
15
+ };
16
+ export declare const markdownTagsExtension: MarkdownConfig;
17
+ //# sourceMappingURL=markdownTags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdownTags.d.ts","sourceRoot":"","sources":["../../../../../src/components/Markdown/markdownTags.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,eAAO,MAAM,YAAY;;;;;;;;;;;;CAYxB,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,cAgBnC,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { HighlightStyle } from '@codemirror/language';
2
+ export declare const chalky = "#e5c07b";
3
+ export declare const coral = "#e06c75";
4
+ export declare const cyan = "#56b6c2";
5
+ export declare const invalid = "#ffffff";
6
+ export declare const ivory = "#abb2bf";
7
+ export declare const stone = "#7d8799";
8
+ export declare const malibu = "#61afef";
9
+ export declare const sage = "#98c379";
10
+ export declare const whiskey = "#d19a66";
11
+ export declare const violet = "#c678dd";
12
+ export declare const highlightBackground = "#2c313a";
13
+ export declare const tooltipBackground = "#353a42";
14
+ export declare const cursor = "#ffffff";
15
+ export declare const markdownTheme: {
16
+ '.dark & .cm-tooltip': {
17
+ border: string;
18
+ backgroundColor: string;
19
+ };
20
+ '.dark & .cm-tooltip .cm-tooltip-arrow:before': {
21
+ borderTopColor: string;
22
+ borderBottomColor: string;
23
+ };
24
+ '.dark & .cm-tooltip .cm-tooltip-arrow:after': {
25
+ borderTopColor: string;
26
+ borderBottomColor: string;
27
+ };
28
+ '.dark & .cm-tooltip-autocomplete': {
29
+ '& > ul > li[aria-selected]': {
30
+ backgroundColor: string;
31
+ color: string;
32
+ };
33
+ };
34
+ '&.cm-focused': {
35
+ outline: string;
36
+ };
37
+ '& .cm-line': {
38
+ paddingInline: number;
39
+ };
40
+ '& .cm-line *': {
41
+ lineHeight: number;
42
+ };
43
+ '& .cm-selectionBackground': {
44
+ background: string;
45
+ };
46
+ '.dark & .cm-selectionBackground': {
47
+ background: string;
48
+ };
49
+ '& .cm-selectionMatch': {
50
+ background: string;
51
+ };
52
+ '.dark & .cm-selectionMatch': {
53
+ background: string;
54
+ };
55
+ '& .cm-content': {
56
+ caretColor: string;
57
+ };
58
+ '.dark & .cm-content': {
59
+ caretColor: string;
60
+ };
61
+ '& .cm-cursor': {
62
+ borderLeftColor: string;
63
+ };
64
+ '.dark & .cm-cursor': {
65
+ borderLeftColor: string;
66
+ };
67
+ '.cm-placeholder': {
68
+ fontFamily: any;
69
+ };
70
+ '& .cm-scroller': {
71
+ fontFamily: any;
72
+ };
73
+ '& .cm-activeLine': {
74
+ backgroundColor: string;
75
+ };
76
+ '.dark & .cm-activeLine': {
77
+ backgroundColor: string;
78
+ };
79
+ '& .cm-ySelectionInfo': {
80
+ fontFamily: any;
81
+ padding: string;
82
+ marginBlockStart: string;
83
+ };
84
+ '& .cm-ySelection': {
85
+ display: string;
86
+ };
87
+ '& .cm-ySelectionCaret': {
88
+ display: string;
89
+ verticalAlign: string;
90
+ };
91
+ };
92
+ export declare const markdownDarkHighlighting: HighlightStyle;
93
+ //# sourceMappingURL=markdownTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdownTheme.d.ts","sourceRoot":"","sources":["../../../../../src/components/Markdown/markdownTheme.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAUtD,eAAO,MAAM,MAAM,YAAY,CAAC;AAChC,eAAO,MAAM,KAAK,YAAY,CAAC;AAC/B,eAAO,MAAM,IAAI,YAAY,CAAC;AAC9B,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,KAAK,YAAY,CAAC;AAC/B,eAAO,MAAM,KAAK,YAAY,CAAC;AAC/B,eAAO,MAAM,MAAM,YAAY,CAAC;AAChC,eAAO,MAAM,IAAI,YAAY,CAAC;AAC9B,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,MAAM,YAAY,CAAC;AAEhC,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAE3C,eAAO,MAAM,MAAM,YAAY,CAAC;AAIhC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0HzB,CAAC;AAEF,eAAO,MAAM,wBAAwB,gBA6EpC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type Editor } from '@tiptap/react';
2
+ import React from 'react';
3
+ import { type ComposerModel, type ComposerSlots } from '../../model';
4
+ export type TipTapEditor = Editor;
5
+ type UseEditorOptions = {
6
+ model?: ComposerModel;
7
+ placeholder?: string;
8
+ slots?: Pick<ComposerSlots, 'editor'>;
9
+ };
10
+ export type RichTextComposerProps = UseEditorOptions & {
11
+ slots?: ComposerSlots;
12
+ };
13
+ /**
14
+ * @deprecated
15
+ */
16
+ export declare const RichTextComposer: React.ForwardRefExoticComponent<UseEditorOptions & {
17
+ slots?: ComposerSlots | undefined;
18
+ } & React.RefAttributes<Editor | null>>;
19
+ export {};
20
+ //# sourceMappingURL=RichText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichText.d.ts","sourceRoot":"","sources":["../../../../../src/components/RichText/RichText.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,MAAM,EAAgD,MAAM,eAAe,CAAC;AAE1F,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAkBrE,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC,KAAK,gBAAgB,GAAG;IACtB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;CACvC,CAAC;AA2HF,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,GAAG;IACrD,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,gBAAgB;;uCAS3B,CAAC"}
@@ -0,0 +1,26 @@
1
+ import '@dxosTheme';
2
+ import React from 'react';
3
+ import { type RichTextComposerProps } from './RichText';
4
+ declare const _default: {
5
+ component: React.ForwardRefExoticComponent<{
6
+ model?: import("../..").ComposerModel | undefined;
7
+ placeholder?: string | undefined;
8
+ slots?: Pick<import("../..").ComposerSlots, "editor"> | undefined;
9
+ } & {
10
+ slots?: import("../..").ComposerSlots | undefined;
11
+ } & React.RefAttributes<import("@tiptap/react").Editor | null>>;
12
+ };
13
+ export default _default;
14
+ export declare const Default: {
15
+ args: {
16
+ model: {
17
+ id: string;
18
+ content: string;
19
+ };
20
+ };
21
+ };
22
+ export declare const WithYjs: {
23
+ render: (args: Omit<RichTextComposerProps, 'model'>) => JSX.Element;
24
+ decorators: import("@storybook/csf").DecoratorFunction<import("@storybook/react/dist/types-0a347bb9").R, any>[];
25
+ };
26
+ //# sourceMappingURL=RichText.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichText.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/RichText/RichText.stories.tsx"],"names":[],"mappings":"AAIA,OAAO,YAAY,CAAC;AAEpB,OAAO,KAAmB,MAAM,OAAO,CAAC;AAQxC,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,YAAY,CAAC;;;;;;;;;;AAG1E,wBAEE;AAEF,eAAO,MAAM,OAAO;;;;;;;CAOnB,CAAC;AAGF,eAAO,MAAM,OAAO;mBACH,KAAK,qBAAqB,EAAE,OAAO,CAAC;;CAmCpD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './RichText';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/RichText/index.ts"],"names":[],"mappings":"AAIA,cAAc,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './Composer';
2
+ export * from './Markdown';
3
+ export * from './RichText';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.ts"],"names":[],"mappings":"AAIA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './components';
2
+ export * from './model';
3
+ export { TextKind } from '@dxos/protocols/proto/dxos/echo/model/text';
4
+ export { Doc, YText, YXmlFragment } from '@dxos/text-model';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { type EditorView } from '@codemirror/view';
2
+ import { type ComponentProps } from 'react';
3
+ import type * as awarenessProtocol from 'y-protocols/awareness';
4
+ import { type Space, type Text } from '@dxos/react-client/echo';
5
+ import { type Identity } from '@dxos/react-client/halo';
6
+ import type { YText, YXmlFragment } from '@dxos/text-model';
7
+ export type ComposerSlots = {
8
+ root?: Omit<ComponentProps<'div'>, 'ref'>;
9
+ editor?: {
10
+ className?: string;
11
+ placeholder?: string;
12
+ spellCheck?: boolean;
13
+ tabIndex?: number;
14
+ markdownTheme?: Parameters<typeof EditorView.theme>[0];
15
+ };
16
+ };
17
+ type Awareness = awarenessProtocol.Awareness;
18
+ type Provider = {
19
+ awareness: Awareness;
20
+ };
21
+ export type ComposerModel = {
22
+ id: string;
23
+ content: string | YText | YXmlFragment;
24
+ provider?: Provider;
25
+ peer?: {
26
+ id: string;
27
+ name?: string;
28
+ };
29
+ };
30
+ export type UseTextModelOptions = {
31
+ identity?: Identity | null;
32
+ space?: Space;
33
+ text?: Text;
34
+ };
35
+ export declare const useTextModel: ({ identity, space, text }: UseTextModelOptions) => ComposerModel | undefined;
36
+ export {};
37
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/model.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,cAAc,EAAW,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,KAAK,iBAAiB,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAI5D,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD,CAAC;CACH,CAAC;AAEF,KAAK,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC;AAC7C,KAAK,QAAQ,GAAG;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC;AAGzC,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;IACvC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,CAAC;AAIF,eAAO,MAAM,YAAY,8BAA+B,mBAAmB,KAAG,aAAa,GAAG,SAwB7F,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './markdown';
2
+ export * from './tokens';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/styles/index.ts"],"names":[],"mappings":"AAIA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,17 @@
1
+ export type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
2
+ export declare const heading: Record<HeadingLevel, string>;
3
+ export declare const blockquote = "mlb-2 border-is-4 border-neutral-500/50 pis-5";
4
+ export declare const unorderedList = "mlb-2 grid grid-cols-[min-content_1fr] [&>li:before]:content-[attr(marker)] [&>li:before]:mlb-1 [&>li:before]:mie-2";
5
+ export declare const orderedList = "mlb-2 grid grid-cols-[min-content_1fr] [&>li:before]:content-[counters(section,_\".\")_\"._\"] [counter-reset:section] [&>li:before]:mlb-1";
6
+ export declare const listItem = "contents before:[counter-increment:section]";
7
+ export declare const codeBlock = "mlb-2 font-mono bg-neutral-500/10 p-3 rounded";
8
+ export declare const horizontalRule = "mlb-4 border-neutral-500/50";
9
+ export declare const paragraph = "mlb-1";
10
+ export declare const bold = "font-bold";
11
+ export declare const code = "font-mono bg-neutral-500/10 rounded pli-0.5 plb-0.5 -mlb-0.5";
12
+ export declare const placeholder = "font-mono";
13
+ export declare const codeWithoutMarks: string;
14
+ export declare const italic = "italic";
15
+ export declare const strikethrough = "line-through";
16
+ export declare const mark = "!font-normal !no-underline !text-inherit opacity-40";
17
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../../src/styles/markdown.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjD,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAOhD,CAAC;AAEF,eAAO,MAAM,UAAU,kDAAkD,CAAC;AAG1E,eAAO,MAAM,aAAa,wHAC6F,CAAC;AACxH,eAAO,MAAM,WAAW,gJACmH,CAAC;AAE5I,eAAO,MAAM,QAAQ,gDAAgD,CAAC;AAEtE,eAAO,MAAM,SAAS,kDAAkD,CAAC;AAEzE,eAAO,MAAM,cAAc,gCAAgC,CAAC;AAE5D,eAAO,MAAM,SAAS,UAAU,CAAC;AAEjC,eAAO,MAAM,IAAI,cAAc,CAAC;AAEhC,eAAO,MAAM,IAAI,iEAAiE,CAAC;AAEnF,eAAO,MAAM,WAAW,cAAc,CAAC;AAEvC,eAAO,MAAM,gBAAgB,QAA8B,CAAC;AAE5D,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAE5C,eAAO,MAAM,IAAI,wDAAwD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type TailwindConfig } from '@dxos/react-ui-theme';
2
+ export declare const tokens: TailwindConfig['theme'];
3
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../../src/styles/tokens.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3E,eAAO,MAAM,MAAM,EAAE,cAAc,CAAC,OAAO,CAA4B,CAAC"}