@dxos/plugin-markdown 0.9.0 → 0.9.1-staging.ee54ba693a
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/neutral/{MarkdownArticle-LWT5RFFJ.mjs → MarkdownArticle-ZHBXH7YF.mjs} +5 -7
- package/dist/lib/neutral/MarkdownArticle-ZHBXH7YF.mjs.map +7 -0
- package/dist/lib/neutral/{MarkdownCard-TBLIRDBO.mjs → MarkdownCard-2HUXCGZP.mjs} +3 -3
- package/dist/lib/neutral/MarkdownCard-2HUXCGZP.mjs.map +7 -0
- package/dist/lib/neutral/MarkdownPlugin.mjs +8 -15
- package/dist/lib/neutral/MarkdownPlugin.mjs.map +3 -3
- package/dist/lib/neutral/MarkdownPlugin.node.mjs +4 -2
- package/dist/lib/neutral/MarkdownPlugin.node.mjs.map +3 -3
- package/dist/lib/neutral/MarkdownPlugin.workerd.mjs +6 -17
- package/dist/lib/neutral/MarkdownPlugin.workerd.mjs.map +4 -4
- package/dist/lib/neutral/MarkdownSettings-5VMOYMND.mjs +43 -0
- package/dist/lib/neutral/MarkdownSettings-5VMOYMND.mjs.map +7 -0
- package/dist/lib/neutral/{anchor-sort-UXN4RHFX.mjs → anchor-sort-QF7UDG2A.mjs} +4 -3
- package/dist/lib/neutral/anchor-sort-QF7UDG2A.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +10 -16
- package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
- package/dist/lib/neutral/capabilities/node.mjs +5 -3
- package/dist/lib/neutral/capabilities/node.mjs.map +3 -3
- package/dist/lib/neutral/chunk-2V6A5NDQ.mjs +8 -0
- package/dist/lib/neutral/{operation-handler-2ARMPBGZ.mjs → chunk-ANHHOTCD.mjs} +3 -4
- package/dist/lib/neutral/{operation-handler-2ARMPBGZ.mjs.map → chunk-ANHHOTCD.mjs.map} +1 -1
- package/dist/lib/neutral/chunk-CNYFGIDS.mjs +32 -0
- package/dist/lib/neutral/chunk-CNYFGIDS.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-LXNSKCPD.mjs → chunk-EV4ZOL4P.mjs} +12 -11
- package/dist/lib/neutral/chunk-EV4ZOL4P.mjs.map +7 -0
- package/dist/lib/neutral/chunk-OC3JD73N.mjs +43 -0
- package/dist/lib/neutral/chunk-OC3JD73N.mjs.map +7 -0
- package/dist/lib/neutral/chunk-YJF6XOXX.mjs +175 -0
- package/dist/lib/neutral/chunk-YJF6XOXX.mjs.map +7 -0
- package/dist/lib/neutral/chunk-YMBC62S7.mjs +14 -0
- package/dist/lib/neutral/chunk-YMBC62S7.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-Y2LQRUU7.mjs → chunk-ZJ3GWRUJ.mjs} +24 -23
- package/dist/lib/neutral/chunk-ZJ3GWRUJ.mjs.map +7 -0
- package/dist/lib/neutral/{comment-config-EGY7RPPW.mjs → comment-config-M5OGFULS.mjs} +6 -4
- package/dist/lib/neutral/comment-config-M5OGFULS.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +19 -57
- package/dist/lib/neutral/components/index.mjs.map +4 -4
- package/dist/lib/neutral/containers/index.mjs +5 -3
- package/dist/lib/neutral/containers/index.mjs.map +3 -3
- package/dist/lib/neutral/{create-JK35XC4R.mjs → create-OQUMKL5I.mjs} +2 -2
- package/dist/lib/neutral/{create-markdown-7MLE625M.mjs → create-markdown-4O5FDA77.mjs} +2 -2
- package/dist/lib/neutral/{create-object-MU2LGXG6.mjs → create-object-RSEWTCMM.mjs} +2 -6
- package/dist/lib/neutral/create-object-RSEWTCMM.mjs.map +7 -0
- package/dist/lib/neutral/hooks/index.mjs +53 -23
- package/dist/lib/neutral/hooks/index.mjs.map +3 -3
- package/dist/lib/neutral/index.mjs +10 -16
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/meta.mjs +1 -1
- package/dist/lib/neutral/{open-5YC77C4O.mjs → open-BAZIRXII.mjs} +2 -2
- package/dist/lib/neutral/operation-handler-SDCXGMGK.mjs +8 -0
- package/dist/lib/neutral/operations/index.mjs +1 -1
- package/dist/lib/neutral/plugin.mjs +2 -2
- package/dist/lib/neutral/plugin.workerd.mjs +12 -0
- package/dist/lib/neutral/plugin.workerd.mjs.map +7 -0
- package/dist/lib/neutral/{react-surface-XYZJBKHZ.mjs → react-surface-37GL3UVG.mjs} +10 -15
- package/dist/lib/neutral/react-surface-37GL3UVG.mjs.map +7 -0
- package/dist/lib/neutral/{scroll-to-anchor-GAFB7W55.mjs → scroll-to-anchor-I6HFE5AH.mjs} +2 -2
- package/dist/lib/neutral/{set-view-mode-N7UHYMPG.mjs → set-view-mode-NY5OYYIM.mjs} +2 -2
- package/dist/lib/neutral/{settings-TDGDLCUR.mjs → settings-O6O6HT3I.mjs} +3 -3
- package/dist/lib/neutral/settings-O6O6HT3I.mjs.map +7 -0
- package/dist/lib/neutral/skill-definition-ET7BYY47.mjs +8 -0
- package/dist/lib/neutral/skill-definition-ET7BYY47.mjs.map +7 -0
- package/dist/lib/neutral/skills/index.mjs +8 -0
- package/dist/lib/neutral/skills/index.mjs.map +7 -0
- package/dist/lib/neutral/state-3BR7L6CW.mjs +69 -0
- package/dist/lib/neutral/state-3BR7L6CW.mjs.map +7 -0
- package/dist/lib/neutral/testing.mjs +2 -2
- package/dist/lib/neutral/testing.mjs.map +3 -3
- package/dist/lib/neutral/translations.mjs +1 -1
- package/dist/lib/neutral/translations.mjs.map +3 -3
- package/dist/lib/neutral/types/index.mjs +1 -1
- package/dist/lib/neutral/update-markdown-M4PTA6VS.mjs +24 -0
- package/dist/lib/neutral/update-markdown-M4PTA6VS.mjs.map +7 -0
- package/dist/types/dx.config.d.ts +28 -0
- package/dist/types/dx.config.d.ts.map +1 -0
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/MarkdownPlugin.node.d.ts.map +1 -1
- package/dist/types/src/MarkdownPlugin.workerd.d.ts.map +1 -1
- package/dist/types/src/capabilities/anchor-sort.d.ts +1 -2
- package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
- package/dist/types/src/capabilities/comment-config.d.ts +1 -2
- package/dist/types/src/capabilities/comment-config.d.ts.map +1 -1
- package/dist/types/src/capabilities/create-object.d.ts +1 -7
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
- package/dist/types/src/capabilities/editor-view-state.d.ts +7 -0
- package/dist/types/src/capabilities/editor-view-state.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +7 -16
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/node.d.ts +2 -6
- package/dist/types/src/capabilities/node.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -2
- package/dist/types/src/capabilities/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/skill-definition.d.ts +5 -0
- package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/state.d.ts +1 -2
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +2 -2
- package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +5 -6
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +3 -2
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +2 -2
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
- package/dist/types/src/components/PreviewComponent/PreviewComponent.d.ts +17 -0
- package/dist/types/src/components/PreviewComponent/PreviewComponent.d.ts.map +1 -0
- package/dist/types/src/components/PreviewComponent/index.d.ts +2 -0
- package/dist/types/src/components/PreviewComponent/index.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +1 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts +6 -17
- package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts.map +1 -1
- package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.stories.d.ts.map +1 -1
- package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.d.ts +1 -1
- package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
- package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -1
- package/dist/types/src/{components → containers}/MarkdownSettings/index.d.ts.map +1 -1
- package/dist/types/src/containers/index.d.ts +1 -0
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useExtensions.d.ts +5 -5
- package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
- package/dist/types/src/hooks/useLinkQuery.d.ts +2 -2
- package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +32 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/update-markdown.d.ts.map +1 -1
- package/dist/types/src/plugin.workerd.d.ts +2 -0
- package/dist/types/src/plugin.workerd.d.ts.map +1 -0
- package/dist/types/src/skills/index.d.ts +2 -0
- package/dist/types/src/skills/index.d.ts.map +1 -0
- package/dist/types/src/skills/markdown-skill.d.ts +4 -0
- package/dist/types/src/skills/markdown-skill.d.ts.map +1 -0
- package/dist/types/src/types/Markdown.d.ts +12 -20
- package/dist/types/src/types/Markdown.d.ts.map +1 -1
- package/dist/types/src/types/MarkdownCapabilities.d.ts.map +1 -1
- package/dist/types/src/types/MarkdownOperation.d.ts +5 -28
- package/dist/types/src/types/MarkdownOperation.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +2 -0
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dx.config.ts +31 -0
- package/package.json +67 -59
- package/src/MarkdownPlugin.node.ts +2 -1
- package/src/MarkdownPlugin.test.ts +1 -1
- package/src/MarkdownPlugin.tsx +7 -16
- package/src/MarkdownPlugin.workerd.ts +5 -2
- package/src/capabilities/anchor-sort.ts +3 -2
- package/src/capabilities/comment-config.ts +6 -9
- package/src/capabilities/create-object.ts +1 -4
- package/src/capabilities/editor-view-state.ts +28 -0
- package/src/capabilities/index.ts +2 -16
- package/src/capabilities/node.ts +1 -0
- package/src/capabilities/react-surface.tsx +29 -13
- package/src/capabilities/settings.ts +2 -2
- package/src/capabilities/skill-definition.ts +14 -0
- package/src/capabilities/state.ts +8 -4
- package/src/components/MarkdownEditor/FileUpload.tsx +2 -2
- package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +72 -30
- package/src/components/MarkdownEditor/MarkdownEditor.tsx +14 -40
- package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +7 -6
- package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +2 -2
- package/src/components/PreviewComponent/PreviewComponent.tsx +195 -0
- package/src/components/PreviewComponent/index.ts +5 -0
- package/src/components/index.ts +1 -4
- package/src/containers/MarkdownArticle/MarkdownArticle.stories.tsx +3 -4
- package/src/containers/MarkdownArticle/MarkdownArticle.tsx +6 -6
- package/src/containers/MarkdownCard/MarkdownCard.tsx +2 -2
- package/src/{components → containers}/MarkdownSettings/MarkdownSettings.stories.tsx +1 -1
- package/src/containers/MarkdownSettings/MarkdownSettings.tsx +54 -0
- package/src/containers/index.ts +1 -0
- package/src/hooks/useEditorMenuOptions.ts +2 -2
- package/src/hooks/useExtensions.tsx +42 -22
- package/src/hooks/useLinkQuery.ts +5 -3
- package/src/index.ts +1 -2
- package/src/meta.ts +2 -22
- package/src/operations/create.conversations.json +1 -1
- package/src/operations/create.test.ts +5 -12
- package/src/operations/update-markdown.ts +7 -27
- package/src/operations/update.conversations.json +1 -1
- package/src/operations/update.test.ts +86 -16
- package/src/plugin.workerd.ts +5 -0
- package/src/skills/index.ts +5 -0
- package/src/{blueprints/markdown-blueprint.ts → skills/markdown-skill.ts} +8 -7
- package/src/testing.ts +2 -2
- package/src/translations.ts +1 -1
- package/src/types/Markdown.ts +20 -19
- package/src/types/MarkdownCapabilities.ts +7 -5
- package/src/types/MarkdownEvents.ts +1 -1
- package/src/types/MarkdownOperation.ts +12 -6
- package/src/types/types.ts +2 -7
- package/dist/lib/neutral/MarkdownArticle-LWT5RFFJ.mjs.map +0 -7
- package/dist/lib/neutral/MarkdownCard-TBLIRDBO.mjs.map +0 -7
- package/dist/lib/neutral/MarkdownSettings-YCTZJL5V.mjs +0 -32
- package/dist/lib/neutral/MarkdownSettings-YCTZJL5V.mjs.map +0 -7
- package/dist/lib/neutral/anchor-sort-UXN4RHFX.mjs.map +0 -7
- package/dist/lib/neutral/app-graph-builder-BWBA23FF.mjs +0 -67
- package/dist/lib/neutral/app-graph-builder-BWBA23FF.mjs.map +0 -7
- package/dist/lib/neutral/app-graph-serializer-EN5E3BMG.mjs +0 -56
- package/dist/lib/neutral/app-graph-serializer-EN5E3BMG.mjs.map +0 -7
- package/dist/lib/neutral/blueprint-definition-DSPXK77L.mjs +0 -15
- package/dist/lib/neutral/blueprint-definition-DSPXK77L.mjs.map +0 -7
- package/dist/lib/neutral/blueprints/index.mjs +0 -8
- package/dist/lib/neutral/chunk-36QFEVOZ.mjs +0 -30
- package/dist/lib/neutral/chunk-36QFEVOZ.mjs.map +0 -7
- package/dist/lib/neutral/chunk-67DKWOKF.mjs +0 -10
- package/dist/lib/neutral/chunk-67DKWOKF.mjs.map +0 -7
- package/dist/lib/neutral/chunk-CIJD7P6X.mjs +0 -8
- package/dist/lib/neutral/chunk-LXNSKCPD.mjs.map +0 -7
- package/dist/lib/neutral/chunk-Y2LQRUU7.mjs.map +0 -7
- package/dist/lib/neutral/comment-config-EGY7RPPW.mjs.map +0 -7
- package/dist/lib/neutral/create-object-MU2LGXG6.mjs.map +0 -7
- package/dist/lib/neutral/navigation-resolver-3KBOMN4U.mjs +0 -14
- package/dist/lib/neutral/navigation-resolver-3KBOMN4U.mjs.map +0 -7
- package/dist/lib/neutral/react-surface-XYZJBKHZ.mjs.map +0 -7
- package/dist/lib/neutral/settings-TDGDLCUR.mjs.map +0 -7
- package/dist/lib/neutral/state-5COCF5PN.mjs +0 -44
- package/dist/lib/neutral/state-5COCF5PN.mjs.map +0 -7
- package/dist/lib/neutral/update-markdown-NNINDDV5.mjs +0 -44
- package/dist/lib/neutral/update-markdown-NNINDDV5.mjs.map +0 -7
- package/dist/types/src/blueprints/index.d.ts +0 -2
- package/dist/types/src/blueprints/index.d.ts.map +0 -1
- package/dist/types/src/blueprints/markdown-blueprint.d.ts +0 -4
- package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -6
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-serializer.d.ts +0 -5
- package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +0 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -6
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
- package/dist/types/src/capabilities/navigation-resolver.d.ts +0 -6
- package/dist/types/src/capabilities/navigation-resolver.d.ts.map +0 -1
- package/dist/types/src/paths.d.ts +0 -3
- package/dist/types/src/paths.d.ts.map +0 -1
- package/src/blueprints/index.ts +0 -5
- package/src/capabilities/app-graph-builder.ts +0 -63
- package/src/capabilities/app-graph-serializer.ts +0 -64
- package/src/capabilities/blueprint-definition.ts +0 -19
- package/src/capabilities/navigation-resolver.ts +0 -19
- package/src/components/MarkdownSettings/MarkdownSettings.tsx +0 -35
- package/src/paths.ts +0 -11
- /package/dist/lib/neutral/{chunk-CIJD7P6X.mjs.map → chunk-2V6A5NDQ.mjs.map} +0 -0
- /package/dist/lib/neutral/{create-JK35XC4R.mjs.map → create-OQUMKL5I.mjs.map} +0 -0
- /package/dist/lib/neutral/{create-markdown-7MLE625M.mjs.map → create-markdown-4O5FDA77.mjs.map} +0 -0
- /package/dist/lib/neutral/{open-5YC77C4O.mjs.map → open-BAZIRXII.mjs.map} +0 -0
- /package/dist/lib/neutral/{blueprints/index.mjs.map → operation-handler-SDCXGMGK.mjs.map} +0 -0
- /package/dist/lib/neutral/{scroll-to-anchor-GAFB7W55.mjs.map → scroll-to-anchor-I6HFE5AH.mjs.map} +0 -0
- /package/dist/lib/neutral/{set-view-mode-N7UHYMPG.mjs.map → set-view-mode-NY5OYYIM.mjs.map} +0 -0
- /package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.stories.d.ts +0 -0
- /package/dist/types/src/{components → containers}/MarkdownSettings/index.d.ts +0 -0
- /package/src/{components → containers}/MarkdownSettings/index.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/hooks/useEditorMenuOptions.ts", "../../../../src/hooks/useExtensions.tsx", "../../../../src/hooks/useLinkQuery.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { useCallback, useMemo, useRef } from 'react';\n\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport {\n type EditorMenuGroup,\n type UseEditorMenuProps,\n filterMenuGroups,\n formattingCommands,\n linkSlashCommands,\n} from '@dxos/react-ui-editor';\nimport { Domino } from '@dxos/ui';\n\nimport { meta } from '#meta';\n\nexport type UseEditorMenuOptionsProps = {\n editorView?: EditorView;\n slashCommandGroups?: EditorMenuGroup[];\n onLinkQuery?: (query?: string) => Promise<EditorMenuGroup[]>;\n};\n\nexport const useEditorMenuOptions = ({\n editorView,\n slashCommandGroups,\n onLinkQuery,\n}: UseEditorMenuOptionsProps): UseEditorMenuProps => {\n const { t } = useTranslation(meta.id);\n\n const getMenu = useCallback<NonNullable<UseEditorMenuProps['getMenu']>>(\n ({ text, trigger }) => {\n switch (trigger) {\n case '@': {\n return onLinkQuery?.(text) ?? [];\n }\n\n case '/':\n default: {\n return filterMenuGroups([formattingCommands, linkSlashCommands, ...(slashCommandGroups ?? [])], (item) =>\n text ? toLocalizedString(item.label, t).toLowerCase().includes(text.toLowerCase()) : true,\n );\n }\n }\n },\n [slashCommandGroups, onLinkQuery],\n );\n\n const viewRef = useRef(editorView);\n return useMemo<UseEditorMenuProps>(() => {\n const trigger = onLinkQuery ? ['/', '@'] : ['/'];\n const placeholder = {\n delay: 3_000,\n content: () => {\n const pressEl = Domino.of('span').text('Press');\n const triggerEls = trigger.map((text) =>\n Domino.of('span').classNames('mx-1 px-1.5 pt-[1px] pb-[2px] border border-separator rounded-xs').text(text),\n );\n const forCommandsEl = Domino.of('span').text('for commands.');\n return Domino.of('div').append(pressEl, ...triggerEls, forCommandsEl).root;\n },\n };\n\n return { viewRef, getMenu, trigger, placeholder };\n }, [getMenu, onLinkQuery]);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ViewUpdate } from '@codemirror/view';\nimport { useMemo } from 'react';\n\nimport { fromUrlPath } from '@dxos/app-toolkit';\nimport { debounceAndThrottle } from '@dxos/async';\nimport { Obj } from '@dxos/echo';\nimport { createDocAccessor } from '@dxos/echo-client';\nimport { invariant } from '@dxos/invariant';\nimport { getSpace, useObject } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useThemeContext } from '@dxos/react-ui';\nimport { type SelectionManager } from '@dxos/react-ui-attention';\nimport { Text } from '@dxos/schema';\nimport { Domino } from '@dxos/ui';\nimport {\n Cursor,\n type EditorStateStore,\n EditorView,\n type Extension,\n InputModeExtensions,\n type PreviewOptions,\n createDataExtensions,\n decorateMarkdown,\n documentId,\n folding,\n formattingKeymap,\n linkTooltip,\n listener,\n preview,\n replacer,\n selectionState,\n snippets,\n} from '@dxos/ui-editor';\nimport { type EditorViewMode, type RenderCallback } from '@dxos/ui-editor/types';\nimport { isTruthy, safeUrl } from '@dxos/util';\n\nimport { Markdown } from '#types';\n\nimport { setFallbackName } from '../util';\n\nexport type DocumentType = Markdown.Document | Text.Text | { id: string; text: string };\n\nexport type ExtensionsOptions = {\n id: string;\n object?: DocumentType;\n settings?: Markdown.Settings;\n compact?: boolean;\n viewMode?: EditorViewMode;\n editable?: boolean;\n selectionManager?: SelectionManager;\n editorStateStore?: EditorStateStore;\n previewOptions?: PreviewOptions;\n platform?: 'mobile' | 'desktop';\n /** Callback when an internal link is clicked. */\n onSelectObject?: (objectId: string) => void;\n};\n\n// TODO(burdon): Merge with createBaseExtensions below.\nexport const useExtensions = ({\n id,\n object,\n settings,\n compact,\n viewMode,\n selectionManager,\n editorStateStore,\n previewOptions,\n onSelectObject,\n}: ExtensionsOptions): Extension[] => {\n const { platform } = useThemeContext();\n const identity = useIdentity();\n const space = getSpace(object);\n\n // Get the content reference from Document objects.\n const contentRef = Obj.instanceOf(Markdown.Document, object) ? (object as Markdown.Document).content : undefined;\n // Use useObject to trigger re-render when the reference loads (returns snapshot for reactivity).\n useObject(contentRef);\n // Get the actual live object target via .target (needed for createDocAccessor).\n const target = contentRef?.target ?? (Obj.instanceOf(Text.Text, object) ? object : undefined);\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.type(DocumentType));\n // query?.subscribe();\n\n const baseExtensions = useMemo(\n () =>\n createBaseExtensions({\n id,\n object,\n settings,\n compact,\n viewMode,\n selectionManager,\n previewOptions,\n platform,\n onSelectObject,\n }),\n [\n id,\n object,\n compact,\n viewMode,\n selectionManager,\n previewOptions,\n settings,\n settings?.debug,\n settings?.editorInputMode,\n settings?.folding,\n settings?.numberedHeadings,\n platform,\n onSelectObject,\n ],\n );\n\n return useMemo<Extension[]>(\n () =>\n [\n // TODO(burdon): Pass this in?\n // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.\n target &&\n createDataExtensions({\n id,\n text: createDocAccessor(target, ['content']),\n messenger: space,\n identity,\n }),\n\n // TODO(burdon): Reconcile with effect in parent.\n Obj.instanceOf(Markdown.Document, object) &&\n listener({\n onChange: ({ text }) => {\n setFallbackName(object as Markdown.Document, text);\n },\n }),\n\n baseExtensions,\n selectionState(editorStateStore),\n ].filter(isTruthy),\n [identity, space, id, object, target, baseExtensions],\n );\n};\n\n/**\n * Create extension instances for editor.\n */\nconst createBaseExtensions = ({\n id,\n object,\n onSelectObject,\n settings,\n compact,\n viewMode,\n selectionManager,\n previewOptions,\n platform,\n}: ExtensionsOptions): Extension[] => {\n const extensions: Extension[] = [\n selectionManager && selectionChange(selectionManager),\n settings?.editorInputMode && InputModeExtensions[settings.editorInputMode],\n settings?.folding && !compact && platform !== 'mobile' && folding(),\n ].filter(isTruthy);\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 render the label of the object.\n renderLinkButton: onSelectObject && createRenderLink(onSelectObject),\n }),\n linkTooltip(renderLinkTooltip),\n preview(previewOptions),\n replacer(),\n ],\n );\n }\n\n if (settings?.debug) {\n const items = settings.snippets?.split(/[,\\n]/) ?? '';\n if (items) {\n extensions.push(snippets({ items }));\n }\n }\n\n return extensions;\n};\n\nconst selectionChange = (selectionManager: SelectionManager) => {\n const debouncedHandler = debounceAndThrottle((update: ViewUpdate) => {\n const id = update.state.facet(documentId);\n const cursorConverter = update.state.facet(Cursor.converter);\n const selection = update.state.selection;\n // NOTE: Filter on numeric offsets BEFORE converting to cursor strings.\n // Cursors are opaque (Automerge-encoded), so a lexicographic `to > from`\n // comparison is nondeterministic — it would let some cursor-placements\n // (where from === to numerically) through and reject genuine selections\n // depending on encoding, which made the comment button's enabled state\n // appear random across different lines.\n const ranges = selection.ranges\n .filter((range) => range.to > range.from)\n .map((range) => ({\n from: cursorConverter.toCursor(range.from),\n to: cursorConverter.toCursor(range.to),\n }));\n\n selectionManager.updateMultiRange(id, ranges);\n }, 100);\n\n return EditorView.updateListener.of((update: ViewUpdate) => {\n if (update.selectionSet) {\n debouncedHandler(update);\n }\n });\n};\n\nconst createRenderLink =\n (onSelectObject: (id: string) => void): RenderCallback<{ url: string }> =>\n (el, { url }) => {\n // TODO(burdon): Formalize/document internal link format.\n const isInternal = url.startsWith('/') || url.startsWith(window.location.origin);\n const qualifiedId = isInternal ? fromUrlPath(new URL(url, window.location.origin).pathname) : undefined;\n const icon = Domino.of('span')\n .classNames('dx-link ms-1 inline-block align-[-0.125em]')\n .append(Domino.svg(isInternal ? 'ph--arrow-square-down--regular' : 'ph--arrow-square-out--regular'));\n\n if (isInternal) {\n invariant(qualifiedId, 'Invalid link format.');\n icon\n .attributes({ role: 'button', tabindex: '0' })\n .on('click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n onSelectObject(qualifiedId);\n })\n .on('keydown', (event) => {\n const keyboardEvent = event as KeyboardEvent;\n if (keyboardEvent.key !== 'Enter' && keyboardEvent.key !== ' ') {\n return;\n }\n\n keyboardEvent.preventDefault();\n keyboardEvent.stopPropagation();\n onSelectObject(qualifiedId);\n });\n }\n\n el.appendChild(icon.root);\n };\n\nconst renderLinkTooltip: RenderCallback<{ url: string }> = (el, { url }) => {\n el.appendChild(\n Domino.of('a')\n .attributes({ href: url, target: '_blank', rel: 'noreferrer' })\n .classNames('dx-link flex items-center gap-2')\n .text(safeUrl(url)?.toString() ?? url)\n .append(Domino.svg('ph--arrow-square-out--regular')).root,\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport { useCallback, useMemo } from 'react';\n\nimport { Annotation, type Database, Filter, Obj, Query, Type } from '@dxos/echo';\nimport { HiddenAnnotation, getTypeAnnotation } from '@dxos/echo/Annotation';\nimport { Kind as EntityKind } from '@dxos/echo/Entity';\nimport { type Label, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { type EditorMenuGroup, type EditorMenuItem } from '@dxos/react-ui-editor';\nimport { insertAtCursor, insertAtLineStart } from '@dxos/ui-editor';\n\nimport { Markdown } from '../types';\n\nexport const useLinkQuery = (db: Database.Database | undefined) => {\n const { t } = useTranslation();\n\n const filter = useMemo(\n () =>\n Filter.or(\n ...(db ? db.graph.registry.list().filter(Type.isType) : [])\n .filter((schema) => getTypeAnnotation(Type.getSchema(schema))?.kind !== EntityKind.Relation)\n .filter((schema) => !HiddenAnnotation.get(Type.getSchema(schema)).pipe(Option.getOrElse(() => false)))\n .map((schema) => Filter.type(Type.getURI(schema))),\n ),\n [db],\n );\n\n const handleLinkQuery = useCallback(\n async (query?: string): Promise<EditorMenuGroup[]> => {\n // A second \"@\" switches the link query into block-embed mode, so \"@@foo\" searches for \"foo\".\n const name = query?.startsWith('@') ? query.slice(1).toLowerCase() : (query?.toLowerCase() ?? '');\n const results = await db?.query(Query.select(filter)).run();\n\n const getLabel = (object: Obj.Unknown): Label => {\n const type = Obj.getTypename(object)!;\n return Obj.getLabel(object) ?? ['object-name.placeholder', { ns: type, defaultValue: 'New object' }];\n };\n\n const items =\n results\n ?.filter((object) => toLocalizedString(getLabel(object), t).toLowerCase().includes(name))\n .map((object: Obj.Unknown): EditorMenuItem => {\n const type = Obj.getType(object);\n const icon = type\n ? Option.getOrUndefined(Annotation.IconAnnotation.get(Type.getSchema(type)))?.icon\n : undefined;\n const label = toLocalizedString(getLabel(object), t);\n return {\n id: object.id,\n label,\n icon,\n onSelect: ({ view, head }) => {\n const link = `[${label}](${Obj.getURI(object)})`;\n // \"@@\" inserts a block embed on its own line instead of an inline link.\n if (query?.startsWith('@')) {\n insertAtLineStart(view, head, `!${link}\\n`);\n } else {\n insertAtCursor(view, head, `${link} `);\n }\n },\n };\n }) ?? [];\n\n // Add \"Create new document\" option at the end.\n const createItem: EditorMenuItem = {\n id: 'create-document',\n label: ['add-object.label', { ns: Type.getTypename(Markdown.Document) }],\n icon: 'ph--plus--regular',\n onSelect: ({ view, head }) => {\n const doc = Markdown.make({ name: name || undefined });\n db?.add(doc);\n const label = name || t('object-name.placeholder', { ns: Type.getTypename(Markdown.Document) });\n const link = `[${label}](${Obj.getURI(doc)})`;\n if (query?.startsWith('@')) {\n insertAtLineStart(view, head, `!${link}\\n`);\n } else {\n insertAtCursor(view, head, `${link} `);\n }\n },\n };\n\n return [\n { id: 'echo', items },\n { id: 'create', items: [createItem] },\n ];\n },\n [db, filter, t],\n );\n\n return handleLinkQuery;\n};\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["useCallback", "useMemo", "useRef", "toLocalizedString", "useTranslation", "filterMenuGroups", "formattingCommands", "linkSlashCommands", "Domino", "meta", "useEditorMenuOptions", "editorView", "slashCommandGroups", "onLinkQuery", "t", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type EditorView } from '@codemirror/view';\nimport { useCallback, useMemo, useRef } from 'react';\n\nimport { toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport {\n type EditorMenuGroup,\n type UseEditorMenuProps,\n filterMenuGroups,\n formattingCommands,\n linkSlashCommands,\n} from '@dxos/react-ui-editor';\nimport { Domino } from '@dxos/ui';\n\nimport { meta } from '#meta';\n\nexport type UseEditorMenuOptionsProps = {\n editorView?: EditorView;\n slashCommandGroups?: EditorMenuGroup[];\n onLinkQuery?: (query?: string) => Promise<EditorMenuGroup[]>;\n};\n\nexport const useEditorMenuOptions = ({\n editorView,\n slashCommandGroups,\n onLinkQuery,\n}: UseEditorMenuOptionsProps): UseEditorMenuProps => {\n const { t } = useTranslation(meta.profile.key);\n\n const getMenu = useCallback<NonNullable<UseEditorMenuProps['getMenu']>>(\n ({ text, trigger }) => {\n switch (trigger) {\n case '@': {\n return onLinkQuery?.(text) ?? [];\n }\n\n case '/':\n default: {\n return filterMenuGroups([linkSlashCommands, formattingCommands, ...(slashCommandGroups ?? [])], (item) =>\n text ? toLocalizedString(item.label, t).toLowerCase().includes(text.toLowerCase()) : true,\n );\n }\n }\n },\n [slashCommandGroups, onLinkQuery],\n );\n\n const viewRef = useRef(editorView);\n return useMemo<UseEditorMenuProps>(() => {\n const trigger = onLinkQuery ? ['/', '@'] : ['/'];\n const placeholder = {\n delay: 3_000,\n content: () => {\n const pressEl = Domino.of('span').text('Press');\n const triggerEls = trigger.map((text) =>\n Domino.of('span').classNames('mx-1 px-1.5 pt-[1px] pb-[2px] border border-separator rounded-xs').text(text),\n );\n const forCommandsEl = Domino.of('span').text('for commands.');\n return Domino.of('div').append(pressEl, ...triggerEls, forCommandsEl).root;\n },\n };\n\n return { viewRef, getMenu, trigger, placeholder };\n }, [getMenu, onLinkQuery]);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type ViewUpdate } from '@codemirror/view';\nimport { useMemo } from 'react';\n\nimport { Paths } from '@dxos/app-toolkit';\nimport { debounceAndThrottle } from '@dxos/async';\nimport { Obj } from '@dxos/echo';\nimport { Doc } from '@dxos/echo-doc';\nimport { invariant } from '@dxos/invariant';\nimport { getSpace, useObject } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useThemeContext } from '@dxos/react-ui';\nimport { type ViewStateManager, selectionAspect } from '@dxos/react-ui-attention';\nimport { Text } from '@dxos/schema';\nimport { Domino } from '@dxos/ui';\nimport {\n AnchorWidget,\n Cursor,\n type EditorStateStore,\n EditorView,\n type Extension,\n InputModeExtensions,\n type XmlWidgetProps,\n type XmlWidgetState,\n createDataExtensions,\n decorateMarkdown,\n documentId,\n folding,\n formattingKeymap,\n linkTooltip,\n listener,\n replacer,\n selectionState,\n snippets,\n xmlTags,\n} from '@dxos/ui-editor';\nimport { type EditorViewMode, type RenderCallback } from '@dxos/ui-editor/types';\nimport { isTruthy, safeUrl } from '@dxos/util';\n\nimport { Markdown } from '#types';\n\nimport { PreviewComponent } from '../components/PreviewComponent/PreviewComponent';\nimport { setFallbackName } from '../util';\n\nexport type DocumentType = Markdown.Document | Text.Text | { id: string; text: string };\n\nexport type ExtensionsOptions = {\n id: string;\n object?: DocumentType;\n settings?: Markdown.Settings;\n compact?: boolean;\n viewMode?: EditorViewMode;\n editable?: boolean;\n viewState?: ViewStateManager;\n editorStateStore?: EditorStateStore;\n setWidgets?: (widgets: XmlWidgetState[]) => void;\n platform?: 'mobile' | 'desktop';\n /** Callback when an internal link is clicked. */\n onSelectObject?: (objectId: string) => void;\n};\n\n// TODO(burdon): Merge with createBaseExtensions below.\nexport const useExtensions = ({\n id,\n object,\n settings,\n compact,\n viewMode,\n viewState,\n editorStateStore,\n setWidgets,\n onSelectObject,\n}: ExtensionsOptions): Extension[] => {\n const { platform } = useThemeContext();\n const identity = useIdentity();\n const space = getSpace(object);\n\n // Get the content reference from Document objects.\n const contentRef = Obj.instanceOf(Markdown.Document, object) ? (object as Markdown.Document).content : undefined;\n // Use useObject to trigger re-render when the reference loads (returns snapshot for reactivity).\n useObject(contentRef);\n // Get the actual live object target via .target (needed for Doc.createAccessor).\n const target = contentRef?.target ?? (Obj.instanceOf(Text.Text, object) ? object : undefined);\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.type(DocumentType));\n // query?.subscribe();\n\n const baseExtensions = useMemo(\n () =>\n createBaseExtensions({\n id,\n object,\n settings,\n compact,\n viewMode,\n viewState,\n setWidgets,\n platform,\n onSelectObject,\n }),\n [\n id,\n object,\n compact,\n viewMode,\n viewState,\n setWidgets,\n settings,\n settings?.debug,\n settings?.editorInputMode,\n settings?.folding,\n settings?.numberedHeadings,\n platform,\n onSelectObject,\n ],\n );\n\n return useMemo<Extension[]>(\n () =>\n [\n // TODO(burdon): Pass this in?\n // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.\n target &&\n createDataExtensions({\n id,\n text: Doc.createAccessor(target, ['content']),\n messenger: space,\n identity,\n }),\n\n // TODO(burdon): Reconcile with effect in parent.\n Obj.instanceOf(Markdown.Document, object) &&\n listener({\n onChange: ({ text }) => {\n setFallbackName(object as Markdown.Document, text);\n },\n }),\n\n baseExtensions,\n selectionState(editorStateStore),\n ].filter(isTruthy),\n [identity, space, id, object, target, baseExtensions],\n );\n};\n\n/**\n * Create extension instances for editor.\n */\nconst createBaseExtensions = ({\n id,\n object,\n onSelectObject,\n settings,\n compact,\n viewMode,\n viewState,\n setWidgets,\n platform,\n}: ExtensionsOptions): Extension[] => {\n const extensions: Extension[] = [\n viewState && selectionChange(viewState),\n settings?.editorInputMode && InputModeExtensions[settings.editorInputMode],\n settings?.folding && !compact && platform !== 'mobile' && folding(),\n ].filter(isTruthy);\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 render the label of the object.\n renderLinkButton: onSelectObject && createRenderLink(onSelectObject),\n // xmlTags() handles dxn:/echo: links via url-scheme widgets; skip here to avoid double-processing.\n skip: ({ url }) => url.startsWith('dxn:') || url.startsWith('echo:'),\n }),\n linkTooltip(renderLinkTooltip),\n xmlTags({\n registry: {\n 'dxn-preview': {\n block: true,\n urlSchemes: ['dxn:', 'echo:'],\n Component: PreviewComponent,\n },\n 'link-preview': {\n block: false,\n urlSchemes: ['dxn:', 'echo:'],\n factory: ({ label, dxn }: XmlWidgetProps<{ label: string; dxn: string }>) =>\n label && dxn ? new AnchorWidget(label, dxn) : null,\n },\n },\n setWidgets,\n }),\n replacer(),\n ],\n );\n }\n\n if (settings?.debug) {\n const items = settings.snippets?.split(/[,\\n]/) ?? '';\n if (items) {\n extensions.push(snippets({ items }));\n }\n }\n\n return extensions;\n};\n\nconst selectionChange = (viewState: ViewStateManager) => {\n const debouncedHandler = debounceAndThrottle((update: ViewUpdate) => {\n const id = update.state.facet(documentId);\n const cursorConverter = update.state.facet(Cursor.converter);\n const selection = update.state.selection;\n // NOTE: Filter on numeric offsets BEFORE converting to cursor strings.\n // Cursors are opaque (Automerge-encoded), so a lexicographic `to > from`\n // comparison is nondeterministic — it would let some cursor-placements\n // (where from === to numerically) through and reject genuine selections\n // depending on encoding, which made the comment button's enabled state\n // appear random across different lines.\n const ranges = selection.ranges\n .filter((range) => range.to > range.from)\n .map((range) => ({\n from: cursorConverter.toCursor(range.from),\n to: cursorConverter.toCursor(range.to),\n }));\n\n viewState.set(selectionAspect, id, { mode: 'multi-range', ranges });\n }, 100);\n\n return EditorView.updateListener.of((update: ViewUpdate) => {\n if (update.selectionSet) {\n debouncedHandler(update);\n }\n });\n};\n\nconst createRenderLink =\n (onSelectObject: (id: string) => void): RenderCallback<{ url: string }> =>\n (el, { url }) => {\n // TODO(burdon): Formalize/document internal link format.\n const isInternal = url.startsWith('/') || url.startsWith(window.location.origin);\n const qualifiedId = isInternal ? Paths.fromUrlPath(new URL(url, window.location.origin).pathname) : undefined;\n const icon = Domino.of('span')\n .classNames('dx-link ms-1 inline-block align-[-0.125em]')\n .append(Domino.svg(isInternal ? 'ph--arrow-square-down--regular' : 'ph--arrow-square-out--regular'));\n\n if (isInternal) {\n invariant(qualifiedId, 'Invalid link format.');\n icon\n .attributes({ role: 'button', tabindex: '0' })\n .on('click', (event) => {\n event.preventDefault();\n event.stopPropagation();\n onSelectObject(qualifiedId);\n })\n .on('keydown', (event) => {\n const keyboardEvent = event as KeyboardEvent;\n if (keyboardEvent.key !== 'Enter' && keyboardEvent.key !== ' ') {\n return;\n }\n\n keyboardEvent.preventDefault();\n keyboardEvent.stopPropagation();\n onSelectObject(qualifiedId);\n });\n }\n\n el.appendChild(icon.root);\n };\n\nconst renderLinkTooltip: RenderCallback<{ url: string }> = (el, { url }) => {\n el.appendChild(\n Domino.of('a')\n .attributes({ href: url, target: '_blank', rel: 'noreferrer' })\n .classNames('dx-link flex items-center gap-2')\n .text(safeUrl(url)?.toString() ?? url)\n .append(Domino.svg('ph--arrow-square-out--regular')).root,\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Option from 'effect/Option';\nimport { useCallback, useMemo } from 'react';\n\nimport { Annotation, type Database, Filter, Obj, Query, Type } from '@dxos/echo';\nimport { HiddenAnnotation, getTypeAnnotation } from '@dxos/echo/Annotation';\nimport { Kind as EntityKind } from '@dxos/echo/Entity';\nimport { type Label, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { type EditorMenuGroup, type EditorMenuItem } from '@dxos/react-ui-editor';\nimport { insertAtCursor, insertAtLineStart } from '@dxos/ui-editor';\n\nimport { Markdown } from '../types';\n\nexport const useLinkQuery = (db: Database.Database | undefined, current?: Obj.Unknown) => {\n const { t } = useTranslation();\n\n const filter = useMemo(\n () =>\n Filter.or(\n ...(db ? db.graph.registry.list().filter(Type.isType) : [])\n .filter((schema) => getTypeAnnotation(Type.getSchema(schema))?.kind !== EntityKind.Relation)\n .filter((schema) => !HiddenAnnotation.get(Type.getSchema(schema)).pipe(Option.getOrElse(() => false)))\n .map((schema) => Filter.type(Type.getURI(schema))),\n ),\n [db],\n );\n\n const handleLinkQuery = useCallback(\n async (query?: string): Promise<EditorMenuGroup[]> => {\n // A second \"@\" switches the link query into block-embed mode, so \"@@foo\" searches for \"foo\".\n const name = query?.startsWith('@') ? query.slice(1).toLowerCase() : (query?.toLowerCase() ?? '');\n const results = await db?.query(Query.select(filter)).run();\n\n const getLabel = (object: Obj.Unknown): Label => {\n const type = Obj.getTypename(object)!;\n return Obj.getLabel(object) ?? ['object-name.placeholder', { ns: type, defaultValue: 'New object' }];\n };\n\n const items =\n results\n // Exclude the current document; it cannot link to itself.\n ?.filter((object) => object.id !== current?.id)\n .filter((object) => toLocalizedString(getLabel(object), t).toLowerCase().includes(name))\n .map((object: Obj.Unknown): EditorMenuItem => {\n const type = Obj.getType(object);\n const icon = type\n ? Option.getOrUndefined(Annotation.IconAnnotation.get(Type.getSchema(type)))?.icon\n : undefined;\n const label = toLocalizedString(getLabel(object), t);\n return {\n id: object.id,\n label,\n icon,\n onSelect: ({ view, head }) => {\n const link = `[${label}](${Obj.getURI(object)})`;\n // \"@@\" inserts a block embed on its own line instead of an inline link.\n if (query?.startsWith('@')) {\n insertAtLineStart(view, head, `!${link}\\n`);\n } else {\n insertAtCursor(view, head, `${link} `);\n }\n },\n };\n }) ?? [];\n\n // Add \"Create new document\" option at the end.\n const createItem: EditorMenuItem = {\n id: 'create-document',\n label: ['add-object.label', { ns: Type.getTypename(Markdown.Document) }],\n icon: 'ph--plus--regular',\n onSelect: ({ view, head }) => {\n const doc = Markdown.make({ name: name || undefined });\n db?.add(doc);\n const label = name || t('object-name.placeholder', { ns: Type.getTypename(Markdown.Document) });\n const link = `[${label}](${Obj.getURI(doc)})`;\n if (query?.startsWith('@')) {\n insertAtLineStart(view, head, `!${link}\\n`);\n } else {\n insertAtCursor(view, head, `${link} `);\n }\n },\n };\n\n return [\n { id: 'echo', items },\n { id: 'create', items: [createItem] },\n ];\n },\n [db, filter, t, current],\n );\n\n return handleLinkQuery;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["useCallback", "useMemo", "useRef", "toLocalizedString", "useTranslation", "filterMenuGroups", "formattingCommands", "linkSlashCommands", "Domino", "meta", "useEditorMenuOptions", "editorView", "slashCommandGroups", "onLinkQuery", "t", "profile", "key", "getMenu", "text", "trigger", "item", "label", "toLowerCase", "includes", "viewRef", "placeholder", "delay", "content", "pressEl", "of", "triggerEls", "map", "classNames", "forCommandsEl", "append", "root", "useMemo", "Paths", "debounceAndThrottle", "Obj", "Doc", "invariant", "getSpace", "useObject", "useIdentity", "useThemeContext", "selectionAspect", "Text", "Domino", "AnchorWidget", "Cursor", "EditorView", "InputModeExtensions", "createDataExtensions", "decorateMarkdown", "documentId", "folding", "formattingKeymap", "linkTooltip", "listener", "replacer", "selectionState", "snippets", "xmlTags", "isTruthy", "safeUrl", "Markdown", "identity", "useIdentity", "space", "getSpace", "object", "contentRef", "instanceOf", "useObject", "target", "settings", "compact", "viewMode", "viewState", "setWidgets", "platform", "onSelectObject", "id", "folding", "numberedHeadings", "Doc", "messenger", "Obj", "setFallbackName", "text", "baseExtensions", "selectionState", "filter", "selectionChange", "editorInputMode", "isTruthy", "formattingKeymap", "decorateMarkdown", "selectionChangeDelay", "undefined", "renderLinkButton", "skip", "url", "startsWith", "linkTooltip", "renderLinkTooltip", "xmlTags", "registry", "block", "urlSchemes", "Component", "factory", "replacer", "items", "extensions", "snippets", "update", "cursorConverter", "facet", "converter", "selection", "toCursor", "range", "set", "selectionAspect", "mode", "ranges", "debouncedHandler", "isInternal", "icon", "Domino", "classNames", "invariant", "qualifiedId", "attributes", "tabindex", "on", "event", "preventDefault", "stopPropagation", "keyboardEvent", "appendChild", "el", "rel", "Option", "useCallback", "useMemo", "Annotation", "Filter", "Obj", "Query", "Type", "HiddenAnnotation", "getTypeAnnotation", "Kind", "EntityKind", "toLocalizedString", "useTranslation", "insertAtCursor", "insertAtLineStart", "useLinkQuery", "db", "current", "t", "useTranslation", "filter", "useMemo", "Filter", "or", "graph", "registry", "list", "Type", "isType", "schema", "getTypeAnnotation", "getSchema", "kind", "EntityKind", "Relation", "HiddenAnnotation", "get", "pipe", "getOrElse", "map", "type", "getURI", "handleLinkQuery", "useCallback", "query", "name", "startsWith", "slice", "toLowerCase", "results", "Query", "select", "run", "getLabel", "object", "Obj", "getTypename", "ns", "defaultValue", "items", "id", "toLocalizedString", "includes", "getType", "icon", "getOrUndefined", "Annotation", "IconAnnotation", "undefined", "label", "onSelect", "view", "head", "link", "insertAtLineStart", "insertAtCursor", "createItem", "Markdown", "Document", "doc", "make", "add"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getDocumentPath,
|
|
3
|
-
getDocumentsPath
|
|
4
|
-
} from "./chunk-67DKWOKF.mjs";
|
|
5
1
|
import {
|
|
6
2
|
getContentSnippet,
|
|
7
3
|
getFallbackName,
|
|
@@ -10,34 +6,32 @@ import {
|
|
|
10
6
|
serializer,
|
|
11
7
|
setFallbackName
|
|
12
8
|
} from "./chunk-KDN4GKG2.mjs";
|
|
13
|
-
import {
|
|
14
|
-
meta
|
|
15
|
-
} from "./chunk-36QFEVOZ.mjs";
|
|
16
|
-
import {
|
|
17
|
-
MarkdownOperationHandlerSet
|
|
18
|
-
} from "./chunk-CIJD7P6X.mjs";
|
|
19
9
|
import {
|
|
20
10
|
MarkdownCapabilities_exports,
|
|
21
11
|
MarkdownEvents_exports,
|
|
22
12
|
MarkdownOperation_exports,
|
|
23
13
|
Markdown_exports,
|
|
24
14
|
Settings_exports
|
|
25
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-ZJ3GWRUJ.mjs";
|
|
16
|
+
import {
|
|
17
|
+
meta
|
|
18
|
+
} from "./chunk-OC3JD73N.mjs";
|
|
19
|
+
import {
|
|
20
|
+
MarkdownOperationHandlerSet
|
|
21
|
+
} from "./chunk-2V6A5NDQ.mjs";
|
|
26
22
|
import {
|
|
27
|
-
|
|
28
|
-
} from "./chunk-
|
|
23
|
+
markdown_skill_default
|
|
24
|
+
} from "./chunk-EV4ZOL4P.mjs";
|
|
29
25
|
import "./chunk-J5LGTIGS.mjs";
|
|
30
26
|
export {
|
|
31
27
|
Markdown_exports as Markdown,
|
|
32
|
-
markdown_blueprint_default as MarkdownBlueprint,
|
|
33
28
|
MarkdownCapabilities_exports as MarkdownCapabilities,
|
|
34
29
|
MarkdownEvents_exports as MarkdownEvents,
|
|
35
30
|
MarkdownOperation_exports as MarkdownOperation,
|
|
36
31
|
MarkdownOperationHandlerSet,
|
|
32
|
+
markdown_skill_default as MarkdownSkill,
|
|
37
33
|
Settings_exports as Settings,
|
|
38
34
|
getContentSnippet,
|
|
39
|
-
getDocumentPath,
|
|
40
|
-
getDocumentsPath,
|
|
41
35
|
getFallbackName,
|
|
42
36
|
isEditorModel,
|
|
43
37
|
isMarkdownProperties,
|