@dxos/plugin-markdown 0.6.12-staging.e11e696 → 0.6.13-main.09887cd
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{MarkdownContainer-OWVU5WMN.mjs → MarkdownContainer-52FJDCTV.mjs} +4 -4
- package/dist/lib/{node-esm/MarkdownContainer-MLTDWWGB.mjs.map → browser/MarkdownContainer-52FJDCTV.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-7WORDTCY.mjs → chunk-4MPY6KRJ.mjs} +2 -2
- package/dist/lib/browser/{chunk-2SJN46PA.mjs → chunk-DRJ3FPYF.mjs} +6 -7
- package/dist/lib/browser/chunk-DRJ3FPYF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-OUZCML5B.mjs → chunk-US5O2P3R.mjs} +2 -2
- package/dist/lib/browser/index.mjs +5 -5
- package/dist/lib/browser/index.mjs.map +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/meta.mjs +1 -1
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node/{MarkdownContainer-IWMLWI6Z.cjs → MarkdownContainer-5XPB5VP5.cjs} +12 -12
- package/dist/lib/node/MarkdownContainer-5XPB5VP5.cjs.map +7 -0
- package/dist/lib/node/{chunk-L2FIDO4L.cjs → chunk-MOF6UCLA.cjs} +7 -7
- package/dist/lib/node/{chunk-LPD4NOTH.cjs → chunk-P7YU53RP.cjs} +8 -9
- package/dist/lib/node/chunk-P7YU53RP.cjs.map +7 -0
- package/dist/lib/node/{chunk-HVDIBL5H.cjs → chunk-UJMOZCIA.cjs} +6 -6
- package/dist/lib/node/index.cjs +48 -48
- package/dist/lib/node/index.cjs.map +1 -1
- package/dist/lib/node/meta.cjs +3 -3
- package/dist/lib/node/meta.cjs.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/types/index.cjs +6 -6
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/lib/node-esm/{MarkdownContainer-MLTDWWGB.mjs → MarkdownContainer-ILCO3PDV.mjs} +4 -4
- package/dist/lib/node-esm/MarkdownContainer-ILCO3PDV.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-YOIARYUO.mjs → chunk-CD634NG3.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-4AGP7IJE.mjs → chunk-MIDCCMIX.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-2BGTVWHN.mjs → chunk-NEVN5WR6.mjs} +6 -7
- package/dist/lib/node-esm/chunk-NEVN5WR6.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +5 -5
- package/dist/lib/node-esm/index.mjs.map +1 -1
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/meta.mjs +1 -1
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/components/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +4 -6
- package/dist/types/src/meta.d.ts.map +1 -1
- package/package.json +30 -30
- package/src/MarkdownPlugin.tsx +1 -1
- package/src/components/MarkdownEditor.tsx +4 -1
- package/src/{meta.tsx → meta.ts} +5 -5
- package/dist/lib/browser/MarkdownContainer-OWVU5WMN.mjs.map +0 -7
- package/dist/lib/browser/chunk-2SJN46PA.mjs.map +0 -7
- package/dist/lib/node/MarkdownContainer-IWMLWI6Z.cjs.map +0 -7
- package/dist/lib/node/chunk-LPD4NOTH.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-2BGTVWHN.mjs.map +0 -7
- /package/dist/lib/browser/{chunk-7WORDTCY.mjs.map → chunk-4MPY6KRJ.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-OUZCML5B.mjs.map → chunk-US5O2P3R.mjs.map} +0 -0
- /package/dist/lib/node/{chunk-L2FIDO4L.cjs.map → chunk-MOF6UCLA.cjs.map} +0 -0
- /package/dist/lib/node/{chunk-HVDIBL5H.cjs.map → chunk-UJMOZCIA.cjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-YOIARYUO.mjs.map → chunk-CD634NG3.mjs.map} +0 -0
- /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
|
|
30
|
-
__export(
|
|
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(
|
|
35
|
-
var
|
|
36
|
-
var
|
|
37
|
-
var
|
|
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)(
|
|
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)(
|
|
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,
|
|
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
|
|
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,
|
|
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-
|
|
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
|
|
20
|
-
__export(
|
|
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(
|
|
28
|
-
var
|
|
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)(
|
|
55
|
+
return (0, import_echo.createEchoObject)((0, import_echo.create)(import_chunk_UJMOZCIA.DocumentType, {
|
|
56
56
|
name,
|
|
57
|
-
content: (0, import_echo.create)(
|
|
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-
|
|
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
|
|
20
|
-
__export(
|
|
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(
|
|
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 =
|
|
26
|
+
var meta_default = {
|
|
28
27
|
id: MARKDOWN_PLUGIN,
|
|
29
|
-
name: "Editor",
|
|
30
|
-
description: "
|
|
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-
|
|
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
|
|
20
|
-
__export(
|
|
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(
|
|
27
|
-
var
|
|
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 = `${
|
|
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-
|
|
61
|
+
//# sourceMappingURL=chunk-UJMOZCIA.cjs.map
|
package/dist/lib/node/index.cjs
CHANGED
|
@@ -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: () =>
|
|
32
|
-
MarkdownAction: () =>
|
|
31
|
+
DocumentType: () => import_chunk_UJMOZCIA.DocumentType,
|
|
32
|
+
MarkdownAction: () => import_chunk_UJMOZCIA.MarkdownAction,
|
|
33
33
|
MarkdownPlugin: () => MarkdownPlugin,
|
|
34
|
-
TextType: () =>
|
|
34
|
+
TextType: () => import_chunk_UJMOZCIA.TextType,
|
|
35
35
|
default: () => src_default,
|
|
36
|
-
getFallbackName: () =>
|
|
37
|
-
isEditorModel: () =>
|
|
38
|
-
isMarkdownProperties: () =>
|
|
39
|
-
markdownExtensionPlugins: () =>
|
|
40
|
-
serializer: () =>
|
|
41
|
-
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
|
|
45
|
-
var
|
|
46
|
-
var
|
|
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)(
|
|
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-
|
|
122
|
+
var MarkdownContainer = import_react3.default.lazy(() => import("./MarkdownContainer-5XPB5VP5.cjs"));
|
|
123
123
|
var translations_default = [
|
|
124
124
|
{
|
|
125
125
|
"en-US": {
|
|
126
|
-
[
|
|
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
|
|
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(
|
|
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(
|
|
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:
|
|
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,
|
|
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
|
-
[
|
|
226
|
-
label: (object) => object instanceof
|
|
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:
|
|
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:
|
|
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
|
-
|
|
253
|
-
|
|
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:
|
|
261
|
+
ns: import_chunk_P7YU53RP.MARKDOWN_PLUGIN
|
|
262
262
|
}
|
|
263
263
|
],
|
|
264
|
-
action:
|
|
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:
|
|
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: `${
|
|
288
|
+
id: `${import_chunk_P7YU53RP.MARKDOWN_PLUGIN}/create/${node.id}`,
|
|
289
289
|
data: async () => {
|
|
290
290
|
await dispatch([
|
|
291
291
|
{
|
|
292
|
-
plugin:
|
|
293
|
-
action:
|
|
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:
|
|
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:
|
|
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"][
|
|
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:
|
|
349
|
-
action:
|
|
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:
|
|
376
|
+
ns: import_chunk_P7YU53RP.MARKDOWN_PLUGIN
|
|
377
377
|
}
|
|
378
378
|
],
|
|
379
379
|
label: [
|
|
380
380
|
"create stack section label",
|
|
381
381
|
{
|
|
382
|
-
ns:
|
|
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:
|
|
388
|
-
action:
|
|
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
|
|
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,
|
|
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 ===
|
|
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
|
|
456
|
-
const doc = (0, import_echo_schema.create)(
|
|
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)(
|
|
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
|
|
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;
|