@dxos/plugin-markdown 0.6.12-staging.e11e696 → 0.6.13-main.548ca8d

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 (53) hide show
  1. package/dist/lib/browser/{MarkdownContainer-OWVU5WMN.mjs → MarkdownContainer-52FJDCTV.mjs} +4 -4
  2. package/dist/lib/{node-esm/MarkdownContainer-MLTDWWGB.mjs.map → browser/MarkdownContainer-52FJDCTV.mjs.map} +2 -2
  3. package/dist/lib/browser/{chunk-7WORDTCY.mjs → chunk-4MPY6KRJ.mjs} +2 -2
  4. package/dist/lib/browser/{chunk-2SJN46PA.mjs → chunk-DRJ3FPYF.mjs} +6 -7
  5. package/dist/lib/browser/chunk-DRJ3FPYF.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-OUZCML5B.mjs → chunk-US5O2P3R.mjs} +2 -2
  7. package/dist/lib/browser/index.mjs +5 -5
  8. package/dist/lib/browser/index.mjs.map +1 -1
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/meta.mjs +1 -1
  11. package/dist/lib/browser/types/index.mjs +2 -2
  12. package/dist/lib/node/{MarkdownContainer-IWMLWI6Z.cjs → MarkdownContainer-5XPB5VP5.cjs} +12 -12
  13. package/dist/lib/node/MarkdownContainer-5XPB5VP5.cjs.map +7 -0
  14. package/dist/lib/node/{chunk-L2FIDO4L.cjs → chunk-MOF6UCLA.cjs} +7 -7
  15. package/dist/lib/node/{chunk-LPD4NOTH.cjs → chunk-P7YU53RP.cjs} +8 -9
  16. package/dist/lib/node/chunk-P7YU53RP.cjs.map +7 -0
  17. package/dist/lib/node/{chunk-HVDIBL5H.cjs → chunk-UJMOZCIA.cjs} +6 -6
  18. package/dist/lib/node/index.cjs +48 -48
  19. package/dist/lib/node/index.cjs.map +1 -1
  20. package/dist/lib/node/meta.cjs +3 -3
  21. package/dist/lib/node/meta.cjs.map +1 -1
  22. package/dist/lib/node/meta.json +1 -1
  23. package/dist/lib/node/types/index.cjs +6 -6
  24. package/dist/lib/node/types/index.cjs.map +1 -1
  25. package/dist/lib/node-esm/{MarkdownContainer-MLTDWWGB.mjs → MarkdownContainer-ILCO3PDV.mjs} +4 -4
  26. package/dist/lib/node-esm/MarkdownContainer-ILCO3PDV.mjs.map +7 -0
  27. package/dist/lib/node-esm/{chunk-YOIARYUO.mjs → chunk-CD634NG3.mjs} +2 -2
  28. package/dist/lib/node-esm/{chunk-4AGP7IJE.mjs → chunk-MIDCCMIX.mjs} +2 -2
  29. package/dist/lib/node-esm/{chunk-2BGTVWHN.mjs → chunk-NEVN5WR6.mjs} +6 -7
  30. package/dist/lib/node-esm/chunk-NEVN5WR6.mjs.map +7 -0
  31. package/dist/lib/node-esm/index.mjs +5 -5
  32. package/dist/lib/node-esm/index.mjs.map +1 -1
  33. package/dist/lib/node-esm/meta.json +1 -1
  34. package/dist/lib/node-esm/meta.mjs +1 -1
  35. package/dist/lib/node-esm/types/index.mjs +2 -2
  36. package/dist/types/src/components/MarkdownEditor.d.ts.map +1 -1
  37. package/dist/types/src/meta.d.ts +4 -6
  38. package/dist/types/src/meta.d.ts.map +1 -1
  39. package/package.json +30 -30
  40. package/src/MarkdownPlugin.tsx +1 -1
  41. package/src/components/MarkdownEditor.tsx +4 -1
  42. package/src/{meta.tsx → meta.ts} +5 -5
  43. package/dist/lib/browser/MarkdownContainer-OWVU5WMN.mjs.map +0 -7
  44. package/dist/lib/browser/chunk-2SJN46PA.mjs.map +0 -7
  45. package/dist/lib/node/MarkdownContainer-IWMLWI6Z.cjs.map +0 -7
  46. package/dist/lib/node/chunk-LPD4NOTH.cjs.map +0 -7
  47. package/dist/lib/node-esm/chunk-2BGTVWHN.mjs.map +0 -7
  48. /package/dist/lib/browser/{chunk-7WORDTCY.mjs.map → chunk-4MPY6KRJ.mjs.map} +0 -0
  49. /package/dist/lib/browser/{chunk-OUZCML5B.mjs.map → chunk-US5O2P3R.mjs.map} +0 -0
  50. /package/dist/lib/node/{chunk-L2FIDO4L.cjs.map → chunk-MOF6UCLA.cjs.map} +0 -0
  51. /package/dist/lib/node/{chunk-HVDIBL5H.cjs.map → chunk-UJMOZCIA.cjs.map} +0 -0
  52. /package/dist/lib/node-esm/{chunk-YOIARYUO.mjs.map → chunk-CD634NG3.mjs.map} +0 -0
  53. /package/dist/lib/node-esm/{chunk-4AGP7IJE.mjs.map → chunk-MIDCCMIX.mjs.map} +0 -0
@@ -26,15 +26,15 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var MarkdownContainer_IWMLWI6Z_exports = {};
30
- __export(MarkdownContainer_IWMLWI6Z_exports, {
29
+ var MarkdownContainer_5XPB5VP5_exports = {};
30
+ __export(MarkdownContainer_5XPB5VP5_exports, {
31
31
  DocumentEditor: () => DocumentEditor,
32
32
  default: () => MarkdownContainer_default
33
33
  });
34
- module.exports = __toCommonJS(MarkdownContainer_IWMLWI6Z_exports);
35
- var import_chunk_L2FIDO4L = require("./chunk-L2FIDO4L.cjs");
36
- var import_chunk_HVDIBL5H = require("./chunk-HVDIBL5H.cjs");
37
- var import_chunk_LPD4NOTH = require("./chunk-LPD4NOTH.cjs");
34
+ module.exports = __toCommonJS(MarkdownContainer_5XPB5VP5_exports);
35
+ var import_chunk_MOF6UCLA = require("./chunk-MOF6UCLA.cjs");
36
+ var import_chunk_UJMOZCIA = require("./chunk-UJMOZCIA.cjs");
37
+ var import_chunk_P7YU53RP = require("./chunk-P7YU53RP.cjs");
38
38
  var import_react = __toESM(require("react"));
39
39
  var import_app_framework = require("@dxos/app-framework");
40
40
  var import_echo = require("@dxos/react-client/echo");
@@ -97,11 +97,11 @@ var useSelectCurrentThread = (editorView, documentId) => {
97
97
  documentId,
98
98
  editorView
99
99
  ]);
100
- (0, import_app_framework3.useIntentResolver)(import_chunk_LPD4NOTH.MARKDOWN_PLUGIN, handleScrollIntoView);
100
+ (0, import_app_framework3.useIntentResolver)(import_chunk_P7YU53RP.MARKDOWN_PLUGIN, handleScrollIntoView);
101
101
  };
102
102
  var DEFAULT_VIEW_MODE = "preview";
103
103
  var MarkdownEditor = ({ id, role = "article", initialValue, extensions, extensionProviders, scrollPastEnd, scrollTo, selection, toolbar, viewMode, onFileUpload, onViewModeChange }) => {
104
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_LPD4NOTH.MARKDOWN_PLUGIN);
104
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_P7YU53RP.MARKDOWN_PLUGIN);
105
105
  const { themeMode } = (0, import_react_ui.useThemeContext)();
106
106
  const dispatch = (0, import_app_framework2.useIntentDispatcher)();
107
107
  const [formattingState, formattingObserver] = (0, import_react_ui_editor2.useFormattingState)();
@@ -291,7 +291,7 @@ var useExtensions = ({ extensionProviders, document, settings, viewMode }) => {
291
291
  }),
292
292
  (0, import_react_ui_editor4.state)(import_react_ui_editor4.localStorageStateStoreAdapter),
293
293
  (0, import_react_ui_editor4.listener)({
294
- onChange: (text) => (0, import_chunk_L2FIDO4L.setFallbackName)(document, text)
294
+ onChange: (text) => (0, import_chunk_MOF6UCLA.setFallbackName)(document, text)
295
295
  }),
296
296
  baseExtensions,
297
297
  pluginExtensions
@@ -410,7 +410,7 @@ var renderRoot = (root, node) => {
410
410
  };
411
411
  var MarkdownContainer = ({ role, id, object, settings, ...props }) => {
412
412
  const scrollPastEnd = role === "article";
413
- if (object instanceof import_chunk_HVDIBL5H.DocumentType) {
413
+ if (object instanceof import_chunk_UJMOZCIA.DocumentType) {
414
414
  return /* @__PURE__ */ import_react.default.createElement(DocumentEditor, {
415
415
  id: (0, import_echo.fullyQualifiedId)(object),
416
416
  document: object,
@@ -441,7 +441,7 @@ var DocumentEditor = ({ id, document: doc, extensionProviders, settings, viewMod
441
441
  });
442
442
  (0, import_react.useEffect)(() => {
443
443
  if (!doc.fallbackName && doc.content?.content) {
444
- doc.fallbackName = (0, import_chunk_L2FIDO4L.getFallbackName)(doc.content.content);
444
+ doc.fallbackName = (0, import_chunk_MOF6UCLA.getFallbackName)(doc.content.content);
445
445
  }
446
446
  }, [
447
447
  doc,
@@ -479,4 +479,4 @@ var MarkdownContainer_default = MarkdownContainer;
479
479
  0 && (module.exports = {
480
480
  DocumentEditor
481
481
  });
482
- //# sourceMappingURL=MarkdownContainer-IWMLWI6Z.cjs.map
482
+ //# sourceMappingURL=MarkdownContainer-5XPB5VP5.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/MarkdownContainer.tsx", "../../../src/components/MarkdownEditor.tsx", "../../../src/hooks/useSelectCurrentThread.tsx", "../../../src/extensions.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect, useMemo } from 'react';\n\nimport { useResolvePlugin, parseFileManagerPlugin } from '@dxos/app-framework';\nimport { fullyQualifiedId, getSpace } from '@dxos/react-client/echo';\nimport { localStorageStateStoreAdapter, type EditorSelectionState } from '@dxos/react-ui-editor';\n\nimport { MarkdownEditor, type MarkdownEditorProps } from './MarkdownEditor';\nimport { useExtensions } from '../extensions';\nimport { DocumentType, type MarkdownSettingsProps } from '../types';\nimport { getFallbackName } from '../util';\n\nexport type MarkdownContainerProps = Pick<\n MarkdownEditorProps,\n 'role' | 'coordinate' | 'extensionProviders' | 'viewMode' | 'onViewModeChange'\n> & {\n id: string;\n object: DocumentType | any;\n settings: MarkdownSettingsProps;\n};\n\n// TODO(burdon): Factor out difference for ECHO and non-ECHO objects; i.e., single component.\nconst MarkdownContainer = ({ role, id, object, settings, ...props }: MarkdownContainerProps) => {\n const scrollPastEnd = role === 'article';\n if (object instanceof DocumentType) {\n return (\n <DocumentEditor\n id={fullyQualifiedId(object)}\n document={object}\n settings={settings}\n scrollPastEnd={scrollPastEnd}\n {...props}\n />\n );\n } else {\n return (\n <MarkdownEditor\n id={id}\n initialValue={object.text}\n toolbar={settings.toolbar}\n scrollPastEnd={scrollPastEnd}\n {...props}\n />\n );\n }\n};\n\ntype DocumentEditorProps = Omit<MarkdownContainerProps, 'object'> & { document: DocumentType } & Pick<\n MarkdownEditorProps,\n 'id' | 'scrollPastEnd'\n >;\n\nexport const DocumentEditor = ({\n id,\n document: doc,\n extensionProviders,\n settings,\n viewMode,\n ...props\n}: DocumentEditorProps) => {\n const space = getSpace(doc);\n const initialValue = useMemo(() => doc.content?.content, [doc.content]);\n const extensions = useExtensions({ extensionProviders, document: doc, settings, viewMode });\n\n // Migrate gradually to `fallbackName`.\n useEffect(() => {\n if (!doc.fallbackName && doc.content?.content) {\n doc.fallbackName = getFallbackName(doc.content.content);\n }\n }, [doc, doc.content]);\n\n // Restore last selection and scroll point.\n const { scrollTo, selection } = useMemo<EditorSelectionState>(\n () => localStorageStateStoreAdapter.getState(id) ?? {},\n [id, doc],\n );\n\n // File dragging.\n const fileManagerPlugin = useResolvePlugin(parseFileManagerPlugin);\n const handleFileUpload = useMemo(() => {\n if (space === undefined || fileManagerPlugin?.provides.file.upload === undefined) {\n return undefined;\n }\n\n // TODO(burdon): Re-order props: space, file.\n return async (file: File) => fileManagerPlugin?.provides?.file?.upload?.(file, space);\n }, [space, fileManagerPlugin]);\n\n return (\n <MarkdownEditor\n id={id}\n initialValue={initialValue}\n extensions={extensions}\n scrollTo={scrollTo}\n selection={selection}\n toolbar={settings.toolbar}\n inputMode={settings.editorInputMode}\n viewMode={viewMode}\n onFileUpload={handleFileUpload}\n {...props}\n />\n );\n};\n\nexport default MarkdownContainer;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { openSearchPanel } from '@codemirror/search';\nimport { type EditorView } from '@codemirror/view';\nimport React, { useMemo, useEffect, useCallback } from 'react';\n\nimport { type FileInfo, LayoutAction, type LayoutCoordinate, useIntentDispatcher } from '@dxos/app-framework';\nimport { useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { useAttendableAttributes, useAttention } from '@dxos/react-ui-attention';\nimport {\n type Action,\n type DNDOptions,\n type EditorViewMode,\n type EditorInputMode,\n Toolbar,\n type UseTextEditorProps,\n createBasicExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n dropFile,\n editorContent,\n editorGutter,\n processAction,\n useActionHandler,\n useCommentState,\n useCommentClickListener,\n useFormattingState,\n useTextEditor,\n} from '@dxos/react-ui-editor';\nimport { sectionToolbarLayout } from '@dxos/react-ui-stack';\nimport { textBlockWidth, focusRing, mx } from '@dxos/react-ui-theme';\nimport { isNotFalsy, nonNullable } from '@dxos/util';\n\nimport { useSelectCurrentThread } from '../hooks';\nimport { MARKDOWN_PLUGIN } from '../meta';\nimport { type MarkdownPluginState } from '../types';\n\nconst DEFAULT_VIEW_MODE: EditorViewMode = 'preview';\n\nexport type MarkdownEditorProps = {\n id: string;\n role?: string;\n coordinate?: LayoutCoordinate;\n inputMode?: EditorInputMode;\n scrollPastEnd?: boolean;\n toolbar?: boolean;\n viewMode?: EditorViewMode;\n onViewModeChange?: (id: string, mode: EditorViewMode) => void;\n onFileUpload?: (file: File) => Promise<FileInfo | undefined>;\n} & Pick<UseTextEditorProps, 'initialValue' | 'scrollTo' | 'selection' | 'extensions'> &\n Partial<Pick<MarkdownPluginState, 'extensionProviders'>>;\n\n/**\n * Base markdown editor component.\n *\n * This component provides all the features of the markdown editor that do no depend on ECHO.\n * This allows it to be used as a common editor for markdown content on arbitrary backends (e.g. files).\n */\nexport const MarkdownEditor = ({\n id,\n role = 'article',\n initialValue,\n extensions,\n extensionProviders,\n scrollPastEnd,\n scrollTo,\n selection,\n toolbar,\n viewMode,\n onFileUpload,\n onViewModeChange,\n}: MarkdownEditorProps) => {\n const { t } = useTranslation(MARKDOWN_PLUGIN);\n const { themeMode } = useThemeContext();\n const dispatch = useIntentDispatcher();\n const [formattingState, formattingObserver] = useFormattingState();\n const attendableAttributes = useAttendableAttributes(id);\n const { hasAttention } = useAttention(id);\n\n // Extensions from other plugins.\n // TODO(burdon): Reconcile with DocumentEditor.useExtensions.\n const providerExtensions = useMemo(\n () => extensionProviders?.flatMap((provider) => provider({})).filter(nonNullable),\n [extensionProviders],\n );\n\n // TODO(Zan): Move these into thread plugin as well?\n const [commentsState, commentObserver] = useCommentState();\n const onCommentClick = useCallback(() => {\n void dispatch({\n action: LayoutAction.SET_LAYOUT,\n data: { element: 'complementary', state: true },\n });\n }, [dispatch]);\n const commentClickObserver = useCommentClickListener(onCommentClick);\n\n // Drag files.\n const handleDrop: DNDOptions['onDrop'] = async (view, { files }) => {\n const file = files[0];\n const info = file && onFileUpload ? await onFileUpload(file) : undefined;\n if (info) {\n processAction(view, { type: 'image', data: info.url });\n }\n };\n\n const {\n parentRef,\n view: editorView,\n focusAttributes,\n } = useTextEditor(\n () => ({\n initialValue,\n extensions: [\n formattingObserver,\n commentObserver,\n commentClickObserver,\n createBasicExtensions({\n readonly: viewMode === 'readonly',\n placeholder: t('editor placeholder'),\n scrollPastEnd: role === 'section' ? false : scrollPastEnd,\n }),\n createMarkdownExtensions({ themeMode }),\n createThemeExtensions({\n themeMode,\n syntaxHighlighting: true,\n slots: { content: { className: editorContent } },\n }),\n editorGutter,\n role !== 'section' && onFileUpload && dropFile({ onDrop: handleDrop }),\n providerExtensions,\n extensions,\n ].filter(isNotFalsy),\n ...(role !== 'section' && {\n id,\n scrollTo,\n selection,\n // TODO(wittjosiah): Autofocus based on layout is racy.\n // autoFocus: layoutPlugin?.provides.layout ? layoutPlugin?.provides.layout.scrollIntoView === id : true,\n moveToEndOfLine: true,\n }),\n }),\n [id, initialValue, formattingObserver, viewMode, themeMode, extensions, providerExtensions],\n );\n\n useTest(editorView);\n useSelectCurrentThread(editorView, id);\n\n // Toolbar handler.\n const handleToolbarAction = useActionHandler(editorView);\n const handleAction = (action: Action) => {\n switch (action.type) {\n case 'search': {\n if (editorView) {\n openSearchPanel(editorView);\n }\n return;\n }\n case 'view-mode': {\n onViewModeChange?.(id, action.data);\n return;\n }\n }\n\n handleToolbarAction?.(action);\n };\n\n return (\n <div\n role='none'\n // TODO(burdon): Move role logic out of here (see sheet, table, sketch, etc.)\n {...(role === 'section'\n ? { className: 'flex flex-col' }\n : {\n className: 'contents',\n // TODO(wittjosiah): Factor out to `useAttendableAttributes`?\n ...(hasAttention && { 'aria-current': 'location' }),\n ...attendableAttributes,\n })}\n >\n {toolbar && (\n <div role='none' className='flex shrink-0 justify-center overflow-x-auto attention-surface'>\n <Toolbar.Root\n classNames={\n role === 'section'\n ? [\n textBlockWidth,\n 'z-[2] group-focus-within/section:visible',\n !hasAttention && 'invisible',\n sectionToolbarLayout,\n ]\n : [textBlockWidth]\n }\n state={formattingState && { ...formattingState, ...commentsState }}\n onAction={handleAction}\n >\n <Toolbar.Markdown />\n {onFileUpload && <Toolbar.Custom onUpload={onFileUpload} />}\n <Toolbar.Separator />\n <Toolbar.View mode={viewMode ?? DEFAULT_VIEW_MODE} />\n <Toolbar.Actions />\n </Toolbar.Root>\n </div>\n )}\n <div\n role='none'\n ref={parentRef}\n data-testid='composer.markdownRoot'\n data-toolbar={toolbar ? 'enabled' : 'disabled'}\n className={\n role === 'section'\n ? mx('flex flex-col flex-1 min-bs-[12rem]', focusRing)\n : mx(\n 'flex is-full bs-full overflow-hidden',\n focusRing,\n 'focus-visible:ring-inset attention-surface',\n 'p-0.5', // TODO(burdon): Handle padding for focusRing consistently.\n 'data-[toolbar=disabled]:pbs-2 data-[toolbar=disabled]:row-span-2',\n )\n }\n {...focusAttributes}\n />\n </div>\n );\n};\n\n// Expose editor view for playwright tests.\n// TODO(wittjosiah): Find a better way to expose this or find a way to limit it to test runs.\nconst useTest = (view?: EditorView) => {\n useEffect(() => {\n const composer = (window as any).composer;\n if (composer) {\n composer.editorView = view;\n }\n }, [view]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\nimport { useCallback } from 'react';\n\nimport { LayoutAction, useIntentResolver } from '@dxos/app-framework';\nimport { Cursor, setSelection } from '@dxos/react-ui-editor';\n\nimport { MARKDOWN_PLUGIN } from '../meta';\n\n/**\n * Handle scrolling and selection of the current thread in a markdown editor.\n */\nexport const useSelectCurrentThread = (editorView: EditorView | undefined, documentId: string) => {\n const handleScrollIntoView = useCallback(\n ({ action, data }: { action: string; data?: any }) => {\n if (action === LayoutAction.SCROLL_INTO_VIEW) {\n if (editorView && data?.id === documentId && data?.cursor) {\n // TODO(burdon): We need typed intents.\n const range = Cursor.getRangeFromCursor(editorView.state, data.cursor);\n if (range) {\n const selection = editorView.state.selection.main.from !== range.from ? { anchor: range.from } : undefined;\n const effects = [\n // NOTE: This does not use the DOM scrollIntoView function.\n EditorView.scrollIntoView(range.from, { y: 'start', yMargin: 96 }),\n ];\n if (selection) {\n // Update the editor selection to get bi-directional highlighting.\n effects.push(setSelection.of({ current: documentId }));\n }\n\n editorView.dispatch({\n effects,\n selection: selection ? { anchor: range.from } : undefined,\n });\n }\n }\n }\n },\n [documentId, editorView],\n );\n\n useIntentResolver(MARKDOWN_PLUGIN, handleScrollIntoView);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type AnchorHTMLAttributes, type ReactNode, useMemo } from 'react';\nimport { createRoot } from 'react-dom/client';\n\nimport { type IntentDispatcher, NavigationAction, useIntentDispatcher } from '@dxos/app-framework';\nimport { invariant } from '@dxos/invariant';\nimport { createDocAccessor, fullyQualifiedId, getSpace, type Query } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Icon, ThemeProvider } from '@dxos/react-ui';\nimport { createDataExtensions, listener, localStorageStateStoreAdapter, state } from '@dxos/react-ui-editor';\nimport {\n type AutocompleteResult,\n type EditorViewMode,\n type Extension,\n InputModeExtensions,\n autocomplete,\n decorateMarkdown,\n folding,\n formattingKeymap,\n linkTooltip,\n typewriter,\n} from '@dxos/react-ui-editor';\nimport { defaultTx } from '@dxos/react-ui-theme';\nimport { isNotFalsy } from '@dxos/util';\n\nimport { type DocumentType, type MarkdownPluginState, type MarkdownSettingsProps } from './types';\nimport { setFallbackName } from './util';\n\ntype ExtensionsOptions = {\n document: DocumentType;\n dispatch?: IntentDispatcher;\n query?: Query<DocumentType>;\n settings: MarkdownSettingsProps;\n viewMode?: EditorViewMode;\n};\n\n// TODO(burdon): Merge with createBaseExtensions above.\nexport const useExtensions = ({\n extensionProviders,\n document,\n settings,\n viewMode,\n}: Pick<ExtensionsOptions, 'document' | 'settings' | 'viewMode'> &\n Pick<MarkdownPluginState, 'extensionProviders'>): Extension[] => {\n const dispatch = useIntentDispatcher();\n const identity = useIdentity();\n const space = getSpace(document);\n\n // TODO(wittjosiah): Autocomplete is not working and this query is causing performance issues.\n // TODO(burdon): Unsubscribe.\n // const query = space?.db.query(Filter.schema(DocumentType));\n // query?.subscribe();\n const baseExtensions = useMemo(\n () =>\n createBaseExtensions({\n document,\n settings,\n viewMode,\n dispatch,\n // query,\n }),\n [document, viewMode, dispatch, settings, settings.folding, settings.numberedHeadings],\n );\n\n //\n // External extensions from other plugins.\n //\n const pluginExtensions = useMemo<Extension[] | undefined>(\n () =>\n extensionProviders?.reduce((acc: Extension[], provider) => {\n const extension = typeof provider === 'function' ? provider({ document }) : provider;\n if (extension) {\n acc.push(extension);\n }\n\n return acc;\n }, []),\n [extensionProviders],\n );\n\n //\n // Basic plugins.\n //\n return useMemo<Extension[]>(\n () =>\n [\n // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.\n createDataExtensions({\n id: document.id,\n text: document.content && createDocAccessor(document.content, ['content']),\n space,\n identity,\n }),\n state(localStorageStateStoreAdapter),\n listener({\n onChange: (text) => setFallbackName(document, text),\n }),\n baseExtensions,\n pluginExtensions,\n ].filter(isNotFalsy),\n [baseExtensions, pluginExtensions, document, document.content, space, identity],\n );\n};\n\n/**\n * Create extension instances for editor.\n */\nconst createBaseExtensions = ({ document, dispatch, settings, query, viewMode }: ExtensionsOptions): Extension[] => {\n const extensions: Extension[] = [\n settings.editorInputMode && InputModeExtensions[settings.editorInputMode],\n settings.folding && folding(),\n ].filter(isNotFalsy);\n\n //\n // Markdown\n //\n if (viewMode !== 'source') {\n extensions.push(\n ...[\n formattingKeymap(),\n decorateMarkdown({\n selectionChangeDelay: 100,\n numberedHeadings: settings.numberedHeadings ? { from: 2 } : undefined,\n // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.\n renderLinkButton:\n dispatch && document\n ? onRenderLink((id: string) => {\n void dispatch({\n action: NavigationAction.ADD_TO_ACTIVE,\n data: {\n id,\n part: 'main',\n pivotId: fullyQualifiedId(document),\n scrollIntoView: true,\n },\n });\n })\n : undefined,\n }),\n linkTooltip(renderLinkTooltip),\n ],\n );\n }\n\n //\n // Autocomplete object links.\n //\n if (query) {\n extensions.push(\n autocomplete({\n onSearch: (text: string) => {\n // TODO(burdon): Specify filter (e.g., stack).\n return query.objects\n .map<AutocompleteResult | undefined>((object) =>\n object.name?.length && object.id !== document?.id\n ? {\n label: object.name,\n // TODO(burdon): Factor out URL builder.\n apply: `[${object.name}](/${fullyQualifiedId(object)})`,\n }\n : undefined,\n )\n .filter(isNotFalsy);\n },\n }),\n );\n }\n\n if (settings.debug) {\n const items = settings.typewriter?.split(/[,\\n]/) ?? '';\n if (items) {\n extensions.push(typewriter({ items }));\n }\n }\n\n return extensions;\n};\n\n// TODO(burdon): Factor out styles.\nconst style = {\n hover: 'rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400',\n icon: 'inline-block leading-none mis-1 cursor-pointer',\n};\n\nconst onRenderLink = (onSelectObject: (id: string) => void) => (el: Element, url: string) => {\n // TODO(burdon): Formalize/document internal link format.\n const isInternal =\n url.startsWith('/') ||\n // TODO(wittjosiah): This should probably be parsed out on paste?\n url.startsWith(window.location.origin);\n\n const options: AnchorHTMLAttributes<any> = isInternal\n ? {\n onClick: () => {\n const qualifiedId = url.split('/').at(-1);\n invariant(qualifiedId, 'Invalid link format.');\n onSelectObject(qualifiedId);\n },\n }\n : {\n href: url,\n rel: 'noreferrer',\n target: '_blank',\n };\n\n renderRoot(\n el,\n <a {...options} className={style.hover}>\n <Icon\n icon={isInternal ? 'ph--arrow-square-down--bold' : 'ph--arrow-square-out--bold'}\n size={4}\n classNames={style.icon}\n />\n </a>,\n );\n};\n\nconst renderLinkTooltip = (el: Element, url: string) => {\n const web = new URL(url);\n renderRoot(\n el,\n <a href={url} rel='noreferrer' target='_blank' className={style.hover}>\n {web.origin}\n <Icon icon='ph--arrow-square-out--bold' size={4} classNames={style.icon} />\n </a>,\n );\n};\n\n// TODO(burdon): Remove react rendering; use DOM directly.\nexport const renderRoot = <T extends Element>(root: T, node: ReactNode): T => {\n createRoot(root).render(<ThemeProvider tx={defaultTx}>{node}</ThemeProvider>);\n return root;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_app_framework", "import_react_ui_editor", "import_echo", "import_react_ui", "import_react_ui_theme", "import_util", "useSelectCurrentThread", "editorView", "documentId", "handleScrollIntoView", "useCallback", "action", "data", "LayoutAction", "SCROLL_INTO_VIEW", "id", "cursor", "range", "Cursor", "getRangeFromCursor", "state", "selection", "main", "from", "anchor", "undefined", "effects", "EditorView", "scrollIntoView", "y", "yMargin", "push", "setSelection", "of", "current", "dispatch", "useIntentResolver", "MARKDOWN_PLUGIN", "DEFAULT_VIEW_MODE", "MarkdownEditor", "role", "initialValue", "extensions", "extensionProviders", "scrollPastEnd", "scrollTo", "toolbar", "viewMode", "onFileUpload", "onViewModeChange", "t", "useTranslation", "themeMode", "useThemeContext", "useIntentDispatcher", "formattingState", "formattingObserver", "useFormattingState", "attendableAttributes", "useAttendableAttributes", "hasAttention", "useAttention", "providerExtensions", "useMemo", "flatMap", "provider", "filter", "nonNullable", "commentsState", "commentObserver", "useCommentState", "onCommentClick", "SET_LAYOUT", "element", "commentClickObserver", "useCommentClickListener", "handleDrop", "view", "files", "file", "info", "processAction", "type", "url", "parentRef", "focusAttributes", "useTextEditor", "createBasicExtensions", "readonly", "placeholder", "createMarkdownExtensions", "createThemeExtensions", "syntaxHighlighting", "slots", "content", "className", "editorContent", "editorGutter", "dropFile", "onDrop", "isNotFalsy", "moveToEndOfLine", "useTest", "handleToolbarAction", "useActionHandler", "handleAction", "openSearchPanel", "React", "div", "Toolbar", "Root", "classNames", "textBlockWidth", "sectionToolbarLayout", "onAction", "Markdown", "Custom", "onUpload", "Separator", "View", "mode", "Actions", "ref", "data-testid", "data-toolbar", "mx", "focusRing", "useEffect", "composer", "window", "useExtensions", "document", "settings", "identity", "useIdentity", "space", "getSpace", "baseExtensions", "createBaseExtensions", "folding", "numberedHeadings", "pluginExtensions", "reduce", "acc", "extension", "createDataExtensions", "text", "createDocAccessor", "localStorageStateStoreAdapter", "listener", "onChange", "setFallbackName", "query", "editorInputMode", "InputModeExtensions", "formattingKeymap", "decorateMarkdown", "selectionChangeDelay", "renderLinkButton", "onRenderLink", "NavigationAction", "ADD_TO_ACTIVE", "part", "pivotId", "fullyQualifiedId", "linkTooltip", "renderLinkTooltip", "autocomplete", "onSearch", "objects", "map", "object", "name", "length", "label", "apply", "debug", "items", "typewriter", "split", "style", "hover", "icon", "onSelectObject", "el", "isInternal", "startsWith", "location", "origin", "options", "onClick", "qualifiedId", "at", "invariant", "href", "rel", "target", "renderRoot", "a", "Icon", "size", "web", "URL", "root", "node", "createRoot", "render", "ThemeProvider", "tx", "defaultTx", "MarkdownContainer", "props", "DocumentType", "DocumentEditor", "doc", "fallbackName", "getFallbackName", "getState", "fileManagerPlugin", "useResolvePlugin", "parseFileManagerPlugin", "handleFileUpload", "provides", "upload", "inputMode"]
7
+ }
@@ -16,16 +16,16 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_L2FIDO4L_exports = {};
20
- __export(chunk_L2FIDO4L_exports, {
19
+ var chunk_MOF6UCLA_exports = {};
20
+ __export(chunk_MOF6UCLA_exports, {
21
21
  getFallbackName: () => getFallbackName,
22
22
  isMarkdownProperties: () => isMarkdownProperties,
23
23
  markdownExtensionPlugins: () => markdownExtensionPlugins,
24
24
  serializer: () => serializer,
25
25
  setFallbackName: () => setFallbackName
26
26
  });
27
- module.exports = __toCommonJS(chunk_L2FIDO4L_exports);
28
- var import_chunk_HVDIBL5H = require("./chunk-HVDIBL5H.cjs");
27
+ module.exports = __toCommonJS(chunk_MOF6UCLA_exports);
28
+ var import_chunk_UJMOZCIA = require("./chunk-UJMOZCIA.cjs");
29
29
  var import_async = require("@dxos/async");
30
30
  var import_echo = require("@dxos/react-client/echo");
31
31
  var isMarkdownProperties = (data) => (0, import_echo.isEchoObject)(data) ? true : data && typeof data === "object" ? "title" in data && typeof data.title === "string" : false;
@@ -52,9 +52,9 @@ var serializer = {
52
52
  },
53
53
  deserialize: async ({ content: serialized }) => {
54
54
  const { name, content } = JSON.parse(serialized);
55
- return (0, import_echo.createEchoObject)((0, import_echo.create)(import_chunk_HVDIBL5H.DocumentType, {
55
+ return (0, import_echo.createEchoObject)((0, import_echo.create)(import_chunk_UJMOZCIA.DocumentType, {
56
56
  name,
57
- content: (0, import_echo.create)(import_chunk_HVDIBL5H.TextType, {
57
+ content: (0, import_echo.create)(import_chunk_UJMOZCIA.TextType, {
58
58
  content
59
59
  }),
60
60
  threads: []
@@ -69,4 +69,4 @@ var serializer = {
69
69
  serializer,
70
70
  setFallbackName
71
71
  });
72
- //# sourceMappingURL=chunk-L2FIDO4L.cjs.map
72
+ //# sourceMappingURL=chunk-MOF6UCLA.cjs.map
@@ -16,24 +16,23 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_LPD4NOTH_exports = {};
20
- __export(chunk_LPD4NOTH_exports, {
19
+ var chunk_P7YU53RP_exports = {};
20
+ __export(chunk_P7YU53RP_exports, {
21
21
  MARKDOWN_PLUGIN: () => MARKDOWN_PLUGIN,
22
22
  meta_default: () => meta_default
23
23
  });
24
- module.exports = __toCommonJS(chunk_LPD4NOTH_exports);
25
- var import_app_framework = require("@dxos/app-framework");
24
+ module.exports = __toCommonJS(chunk_P7YU53RP_exports);
26
25
  var MARKDOWN_PLUGIN = "dxos.org/plugin/markdown";
27
- var meta_default = (0, import_app_framework.pluginMeta)({
26
+ var meta_default = {
28
27
  id: MARKDOWN_PLUGIN,
29
- name: "Editor",
30
- description: "Markdown text editor.",
28
+ name: "Markdown Editor",
29
+ description: "Text editor supporting extended Markdown.",
31
30
  homePage: "https://github.com/dxos/dxos/tree/main/packages/apps/plugins/plugin-markdown",
32
31
  icon: "ph--text-aa--regular"
33
- });
32
+ };
34
33
  // Annotate the CommonJS export names for ESM import in node:
35
34
  0 && (module.exports = {
36
35
  MARKDOWN_PLUGIN,
37
36
  meta_default
38
37
  });
39
- //# sourceMappingURL=chunk-LPD4NOTH.cjs.map
38
+ //# sourceMappingURL=chunk-P7YU53RP.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const MARKDOWN_PLUGIN = 'dxos.org/plugin/markdown';\n\nexport default {\n id: MARKDOWN_PLUGIN,\n name: 'Markdown Editor',\n description: 'Text editor supporting extended Markdown.',\n homePage: 'https://github.com/dxos/dxos/tree/main/packages/apps/plugins/plugin-markdown',\n icon: 'ph--text-aa--regular',\n} satisfies PluginMeta;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,kBAAkB;AAE/B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;EACNC,aAAa;EACbC,UAAU;EACVC,MAAM;AACR;",
6
+ "names": ["MARKDOWN_PLUGIN", "id", "name", "description", "homePage", "icon"]
7
+ }
@@ -16,15 +16,15 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_HVDIBL5H_exports = {};
20
- __export(chunk_HVDIBL5H_exports, {
19
+ var chunk_UJMOZCIA_exports = {};
20
+ __export(chunk_UJMOZCIA_exports, {
21
21
  DocumentType: () => DocumentType,
22
22
  MarkdownAction: () => MarkdownAction,
23
23
  TextType: () => TextType,
24
24
  isEditorModel: () => isEditorModel
25
25
  });
26
- module.exports = __toCommonJS(chunk_HVDIBL5H_exports);
27
- var import_chunk_LPD4NOTH = require("./chunk-LPD4NOTH.cjs");
26
+ module.exports = __toCommonJS(chunk_UJMOZCIA_exports);
27
+ var import_chunk_P7YU53RP = require("./chunk-P7YU53RP.cjs");
28
28
  var import_echo_schema = require("@dxos/echo-schema");
29
29
  var import_types = require("@dxos/plugin-space/types");
30
30
  var TextType = class extends (0, import_echo_schema.TypedObject)({
@@ -45,7 +45,7 @@ var DocumentType = class extends (0, import_echo_schema.TypedObject)({
45
45
  }) {
46
46
  };
47
47
  var isEditorModel = (data) => data && typeof data === "object" && "id" in data && typeof data.id === "string" && "text" in data && typeof data.text === "string";
48
- var MARKDOWN_ACTION = `${import_chunk_LPD4NOTH.MARKDOWN_PLUGIN}/action`;
48
+ var MARKDOWN_ACTION = `${import_chunk_P7YU53RP.MARKDOWN_PLUGIN}/action`;
49
49
  var MarkdownAction;
50
50
  (function(MarkdownAction2) {
51
51
  MarkdownAction2[MarkdownAction2["CREATE"] = `${MARKDOWN_ACTION}/create`] = "CREATE";
@@ -58,4 +58,4 @@ var MarkdownAction;
58
58
  TextType,
59
59
  isEditorModel
60
60
  });
61
- //# sourceMappingURL=chunk-HVDIBL5H.cjs.map
61
+ //# sourceMappingURL=chunk-UJMOZCIA.cjs.map
@@ -28,22 +28,22 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var node_exports = {};
30
30
  __export(node_exports, {
31
- DocumentType: () => import_chunk_HVDIBL5H.DocumentType,
32
- MarkdownAction: () => import_chunk_HVDIBL5H.MarkdownAction,
31
+ DocumentType: () => import_chunk_UJMOZCIA.DocumentType,
32
+ MarkdownAction: () => import_chunk_UJMOZCIA.MarkdownAction,
33
33
  MarkdownPlugin: () => MarkdownPlugin,
34
- TextType: () => import_chunk_HVDIBL5H.TextType,
34
+ TextType: () => import_chunk_UJMOZCIA.TextType,
35
35
  default: () => src_default,
36
- getFallbackName: () => import_chunk_L2FIDO4L.getFallbackName,
37
- isEditorModel: () => import_chunk_HVDIBL5H.isEditorModel,
38
- isMarkdownProperties: () => import_chunk_L2FIDO4L.isMarkdownProperties,
39
- markdownExtensionPlugins: () => import_chunk_L2FIDO4L.markdownExtensionPlugins,
40
- serializer: () => import_chunk_L2FIDO4L.serializer,
41
- setFallbackName: () => import_chunk_L2FIDO4L.setFallbackName
36
+ getFallbackName: () => import_chunk_MOF6UCLA.getFallbackName,
37
+ isEditorModel: () => import_chunk_UJMOZCIA.isEditorModel,
38
+ isMarkdownProperties: () => import_chunk_MOF6UCLA.isMarkdownProperties,
39
+ markdownExtensionPlugins: () => import_chunk_MOF6UCLA.markdownExtensionPlugins,
40
+ serializer: () => import_chunk_MOF6UCLA.serializer,
41
+ setFallbackName: () => import_chunk_MOF6UCLA.setFallbackName
42
42
  });
43
43
  module.exports = __toCommonJS(node_exports);
44
- var import_chunk_L2FIDO4L = require("./chunk-L2FIDO4L.cjs");
45
- var import_chunk_HVDIBL5H = require("./chunk-HVDIBL5H.cjs");
46
- var import_chunk_LPD4NOTH = require("./chunk-LPD4NOTH.cjs");
44
+ var import_chunk_MOF6UCLA = require("./chunk-MOF6UCLA.cjs");
45
+ var import_chunk_UJMOZCIA = require("./chunk-UJMOZCIA.cjs");
46
+ var import_chunk_P7YU53RP = require("./chunk-P7YU53RP.cjs");
47
47
  var import_react = require("@phosphor-icons/react");
48
48
  var import_react2 = __toESM(require("react"));
49
49
  var import_app_framework = require("@dxos/app-framework");
@@ -61,7 +61,7 @@ var import_plugin_settings = require("@dxos/plugin-settings");
61
61
  var import_react_ui = require("@dxos/react-ui");
62
62
  var import_react_ui_editor2 = require("@dxos/react-ui-editor");
63
63
  var MarkdownSettings = ({ settings }) => {
64
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_LPD4NOTH.MARKDOWN_PLUGIN);
64
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_P7YU53RP.MARKDOWN_PLUGIN);
65
65
  return /* @__PURE__ */ import_react4.default.createElement(import_react4.default.Fragment, null, /* @__PURE__ */ import_react4.default.createElement(import_plugin_settings.SettingsValue, {
66
66
  label: t("default view mode label")
67
67
  }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui.Select.Root, {
@@ -119,11 +119,11 @@ var MarkdownSettings = ({ settings }) => {
119
119
  onCheckedChange: (checked) => settings.debug = !!checked
120
120
  })));
121
121
  };
122
- var MarkdownContainer = import_react3.default.lazy(() => import("./MarkdownContainer-IWMLWI6Z.cjs"));
122
+ var MarkdownContainer = import_react3.default.lazy(() => import("./MarkdownContainer-5XPB5VP5.cjs"));
123
123
  var translations_default = [
124
124
  {
125
125
  "en-US": {
126
- [import_chunk_LPD4NOTH.MARKDOWN_PLUGIN]: {
126
+ [import_chunk_P7YU53RP.MARKDOWN_PLUGIN]: {
127
127
  "plugin name": "Editor",
128
128
  "create stack section label": "Create document",
129
129
  "document title placeholder": "New document",
@@ -150,22 +150,22 @@ var translations_default = [
150
150
  }
151
151
  }
152
152
  ];
153
- var getDoc = (object) => object instanceof import_chunk_HVDIBL5H.DocumentType ? object : void 0;
153
+ var getDoc = (object) => object instanceof import_chunk_UJMOZCIA.DocumentType ? object : void 0;
154
154
  var MarkdownPlugin = () => {
155
- const settings = new import_local_storage.LocalStorageStore(import_chunk_LPD4NOTH.MARKDOWN_PLUGIN, {
155
+ const settings = new import_local_storage.LocalStorageStore(import_chunk_P7YU53RP.MARKDOWN_PLUGIN, {
156
156
  defaultViewMode: "preview",
157
157
  toolbar: true,
158
158
  folding: false,
159
159
  experimental: false
160
160
  });
161
- const state = new import_local_storage.LocalStorageStore(import_chunk_LPD4NOTH.MARKDOWN_PLUGIN, {
161
+ const state = new import_local_storage.LocalStorageStore(import_chunk_P7YU53RP.MARKDOWN_PLUGIN, {
162
162
  extensionProviders: [],
163
163
  viewMode: {}
164
164
  });
165
165
  const getViewMode = (id) => id && state.values.viewMode[id] || settings.values.defaultViewMode;
166
166
  const setViewMode = (id, viewMode) => state.values.viewMode[id] = viewMode;
167
167
  return {
168
- meta: import_chunk_LPD4NOTH.meta_default,
168
+ meta: import_chunk_P7YU53RP.meta_default,
169
169
  ready: async (plugins) => {
170
170
  settings.prop({
171
171
  key: "defaultViewMode",
@@ -213,7 +213,7 @@ var MarkdownPlugin = () => {
213
213
  storageKey: "view-mode",
214
214
  type: import_local_storage.LocalStorageStore.json()
215
215
  });
216
- (0, import_chunk_L2FIDO4L.markdownExtensionPlugins)(plugins).forEach((plugin) => {
216
+ (0, import_chunk_MOF6UCLA.markdownExtensionPlugins)(plugins).forEach((plugin) => {
217
217
  const { extensions } = plugin.provides.markdown;
218
218
  state.values.extensionProviders?.push(extensions);
219
219
  });
@@ -222,12 +222,12 @@ var MarkdownPlugin = () => {
222
222
  settings: settings.values,
223
223
  metadata: {
224
224
  records: {
225
- [import_chunk_HVDIBL5H.DocumentType.typename]: {
226
- label: (object) => object instanceof import_chunk_HVDIBL5H.DocumentType ? object.name ?? object.fallbackName : void 0,
225
+ [import_chunk_UJMOZCIA.DocumentType.typename]: {
226
+ label: (object) => object instanceof import_chunk_UJMOZCIA.DocumentType ? object.name || object.fallbackName : void 0,
227
227
  placeholder: [
228
228
  "document title placeholder",
229
229
  {
230
- ns: import_chunk_LPD4NOTH.MARKDOWN_PLUGIN
230
+ ns: import_chunk_P7YU53RP.MARKDOWN_PLUGIN
231
231
  }
232
232
  ],
233
233
  icon: "ph--text-aa--regular",
@@ -239,7 +239,7 @@ var MarkdownPlugin = () => {
239
239
  doc2.content,
240
240
  ...doc2.threads
241
241
  ]),
242
- serializer: import_chunk_L2FIDO4L.serializer
242
+ serializer: import_chunk_MOF6UCLA.serializer
243
243
  }
244
244
  }
245
245
  },
@@ -249,8 +249,8 @@ var MarkdownPlugin = () => {
249
249
  ],
250
250
  echo: {
251
251
  schema: [
252
- import_chunk_HVDIBL5H.DocumentType,
253
- import_chunk_HVDIBL5H.TextType
252
+ import_chunk_UJMOZCIA.DocumentType,
253
+ import_chunk_UJMOZCIA.TextType
254
254
  ]
255
255
  },
256
256
  space: {
@@ -258,10 +258,10 @@ var MarkdownPlugin = () => {
258
258
  label: [
259
259
  "create document label",
260
260
  {
261
- ns: import_chunk_LPD4NOTH.MARKDOWN_PLUGIN
261
+ ns: import_chunk_P7YU53RP.MARKDOWN_PLUGIN
262
262
  }
263
263
  ],
264
- action: import_chunk_HVDIBL5H.MarkdownAction.CREATE
264
+ action: import_chunk_UJMOZCIA.MarkdownAction.CREATE
265
265
  }
266
266
  },
267
267
  graph: {
@@ -272,7 +272,7 @@ var MarkdownPlugin = () => {
272
272
  return [];
273
273
  }
274
274
  return (0, import_plugin_graph.createExtension)({
275
- id: import_chunk_HVDIBL5H.MarkdownAction.CREATE,
275
+ id: import_chunk_UJMOZCIA.MarkdownAction.CREATE,
276
276
  filter: (node) => (0, import_plugin_graph.isActionGroup)(node) && node.id.startsWith(import_plugin_space.SpaceAction.ADD_OBJECT),
277
277
  actions: ({ node }) => {
278
278
  const id = node.id.split("/").at(-1);
@@ -285,12 +285,12 @@ var MarkdownPlugin = () => {
285
285
  }
286
286
  return [
287
287
  {
288
- id: `${import_chunk_LPD4NOTH.MARKDOWN_PLUGIN}/create/${node.id}`,
288
+ id: `${import_chunk_P7YU53RP.MARKDOWN_PLUGIN}/create/${node.id}`,
289
289
  data: async () => {
290
290
  await dispatch([
291
291
  {
292
- plugin: import_chunk_LPD4NOTH.MARKDOWN_PLUGIN,
293
- action: import_chunk_HVDIBL5H.MarkdownAction.CREATE
292
+ plugin: import_chunk_P7YU53RP.MARKDOWN_PLUGIN,
293
+ action: import_chunk_UJMOZCIA.MarkdownAction.CREATE
294
294
  },
295
295
  {
296
296
  action: import_plugin_space.SpaceAction.ADD_OBJECT,
@@ -307,7 +307,7 @@ var MarkdownPlugin = () => {
307
307
  label: [
308
308
  "create document label",
309
309
  {
310
- ns: import_chunk_LPD4NOTH.MARKDOWN_PLUGIN
310
+ ns: import_chunk_P7YU53RP.MARKDOWN_PLUGIN
311
311
  }
312
312
  ],
313
313
  icon: "ph--text-aa--regular",
@@ -325,14 +325,14 @@ var MarkdownPlugin = () => {
325
325
  }
326
326
  return [
327
327
  {
328
- inputType: import_chunk_HVDIBL5H.DocumentType.typename,
328
+ inputType: import_chunk_UJMOZCIA.DocumentType.typename,
329
329
  outputType: "text/markdown",
330
330
  // Reconcile with metadata serializers.
331
331
  serialize: async (node) => {
332
332
  const doc = node.data;
333
333
  const content = await (0, import_echo.loadObjectReferences)(doc, (doc2) => doc2.content);
334
334
  return {
335
- name: doc.name || doc.fallbackName || translations_default[0]["en-US"][import_chunk_LPD4NOTH.MARKDOWN_PLUGIN]["document title placeholder"],
335
+ name: doc.name || doc.fallbackName || translations_default[0]["en-US"][import_chunk_P7YU53RP.MARKDOWN_PLUGIN]["document title placeholder"],
336
336
  data: content.content,
337
337
  type: "text/markdown"
338
338
  };
@@ -345,8 +345,8 @@ var MarkdownPlugin = () => {
345
345
  }
346
346
  const result = await dispatch([
347
347
  {
348
- plugin: import_chunk_LPD4NOTH.MARKDOWN_PLUGIN,
349
- action: import_chunk_HVDIBL5H.MarkdownAction.CREATE,
348
+ plugin: import_chunk_P7YU53RP.MARKDOWN_PLUGIN,
349
+ action: import_chunk_UJMOZCIA.MarkdownAction.CREATE,
350
350
  data: {
351
351
  name: data.name,
352
352
  content: data.data
@@ -373,25 +373,25 @@ var MarkdownPlugin = () => {
373
373
  type: [
374
374
  "plugin name",
375
375
  {
376
- ns: import_chunk_LPD4NOTH.MARKDOWN_PLUGIN
376
+ ns: import_chunk_P7YU53RP.MARKDOWN_PLUGIN
377
377
  }
378
378
  ],
379
379
  label: [
380
380
  "create stack section label",
381
381
  {
382
- ns: import_chunk_LPD4NOTH.MARKDOWN_PLUGIN
382
+ ns: import_chunk_P7YU53RP.MARKDOWN_PLUGIN
383
383
  }
384
384
  ],
385
385
  icon: (props) => /* @__PURE__ */ import_react2.default.createElement(import_react.TextAa, props),
386
386
  intent: {
387
- plugin: import_chunk_LPD4NOTH.MARKDOWN_PLUGIN,
388
- action: import_chunk_HVDIBL5H.MarkdownAction.CREATE
387
+ plugin: import_chunk_P7YU53RP.MARKDOWN_PLUGIN,
388
+ action: import_chunk_UJMOZCIA.MarkdownAction.CREATE
389
389
  }
390
390
  }
391
391
  ]
392
392
  },
393
393
  thread: {
394
- predicate: (obj) => obj instanceof import_chunk_HVDIBL5H.DocumentType,
394
+ predicate: (obj) => obj instanceof import_chunk_UJMOZCIA.DocumentType,
395
395
  createSort: (doc) => {
396
396
  const accessor = doc.content ? (0, import_echo.createDocAccessor)(doc.content, [
397
397
  "content"
@@ -419,7 +419,7 @@ var MarkdownPlugin = () => {
419
419
  case "section":
420
420
  case "article": {
421
421
  const doc = getDoc(data.active) ?? getDoc(data.object);
422
- const { id, object } = (0, import_chunk_HVDIBL5H.isEditorModel)(data.object) ? {
422
+ const { id, object } = (0, import_chunk_UJMOZCIA.isEditorModel)(data.object) ? {
423
423
  id: data.object.id,
424
424
  object: data.object
425
425
  } : doc ? {
@@ -441,7 +441,7 @@ var MarkdownPlugin = () => {
441
441
  });
442
442
  }
443
443
  case "settings": {
444
- return data.plugin === import_chunk_LPD4NOTH.meta_default.id ? /* @__PURE__ */ import_react2.default.createElement(MarkdownSettings, {
444
+ return data.plugin === import_chunk_P7YU53RP.meta_default.id ? /* @__PURE__ */ import_react2.default.createElement(MarkdownSettings, {
445
445
  settings: settings.values
446
446
  }) : null;
447
447
  }
@@ -452,10 +452,10 @@ var MarkdownPlugin = () => {
452
452
  intent: {
453
453
  resolver: ({ action, data }) => {
454
454
  switch (action) {
455
- case import_chunk_HVDIBL5H.MarkdownAction.CREATE: {
456
- const doc = (0, import_echo_schema.create)(import_chunk_HVDIBL5H.DocumentType, {
455
+ case import_chunk_UJMOZCIA.MarkdownAction.CREATE: {
456
+ const doc = (0, import_echo_schema.create)(import_chunk_UJMOZCIA.DocumentType, {
457
457
  name: data?.name,
458
- content: (0, import_echo_schema.create)(import_chunk_HVDIBL5H.TextType, {
458
+ content: (0, import_echo_schema.create)(import_chunk_UJMOZCIA.TextType, {
459
459
  content: data?.content ?? ""
460
460
  }),
461
461
  threads: []
@@ -474,7 +474,7 @@ var MarkdownPlugin = () => {
474
474
  ]
475
475
  };
476
476
  }
477
- case import_chunk_HVDIBL5H.MarkdownAction.SET_VIEW_MODE: {
477
+ case import_chunk_UJMOZCIA.MarkdownAction.SET_VIEW_MODE: {
478
478
  const { id, viewMode } = data ?? {};
479
479
  if (typeof id === "string" && import_react_ui_editor.EditorViewModes.includes(viewMode)) {
480
480
  state.values.viewMode[id] = viewMode;