@dxos/plugin-markdown 0.6.12-main.5cc132e → 0.6.12-main.89e9959

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/lib/browser/MarkdownContainer-OWVU5WMN.mjs +467 -0
  2. package/dist/lib/browser/MarkdownContainer-OWVU5WMN.mjs.map +7 -0
  3. package/dist/lib/{node-esm/chunk-4GGD6YJO.mjs → browser/chunk-2SJN46PA.mjs} +2 -5
  4. package/dist/lib/browser/chunk-2SJN46PA.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-7WORDTCY.mjs +50 -0
  6. package/dist/lib/browser/chunk-7WORDTCY.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-7W37KPH3.mjs → chunk-OUZCML5B.mjs} +4 -2
  8. package/dist/lib/browser/chunk-OUZCML5B.mjs.map +7 -0
  9. package/dist/lib/browser/index.mjs +68 -114
  10. package/dist/lib/browser/index.mjs.map +4 -4
  11. package/dist/lib/browser/meta.json +1 -1
  12. package/dist/lib/browser/meta.mjs +1 -1
  13. package/dist/lib/browser/types/index.mjs +6 -4
  14. package/dist/lib/node/MarkdownContainer-IWMLWI6Z.cjs +482 -0
  15. package/dist/lib/node/MarkdownContainer-IWMLWI6Z.cjs.map +7 -0
  16. package/dist/lib/node/{chunk-EZTJSCMZ.cjs → chunk-HVDIBL5H.cjs} +11 -8
  17. package/dist/lib/node/chunk-HVDIBL5H.cjs.map +7 -0
  18. package/dist/lib/node/chunk-L2FIDO4L.cjs +72 -0
  19. package/dist/lib/node/chunk-L2FIDO4L.cjs.map +7 -0
  20. package/dist/lib/node/{MarkdownEditor-IUHHJ532.cjs → chunk-LPD4NOTH.cjs} +17 -9
  21. package/dist/lib/node/chunk-LPD4NOTH.cjs.map +7 -0
  22. package/dist/lib/node/index.cjs +103 -145
  23. package/dist/lib/node/index.cjs.map +4 -4
  24. package/dist/lib/node/meta.cjs +3 -3
  25. package/dist/lib/node/meta.cjs.map +1 -1
  26. package/dist/lib/node/meta.json +1 -1
  27. package/dist/lib/node/types/index.cjs +8 -6
  28. package/dist/lib/node/types/index.cjs.map +2 -2
  29. package/dist/lib/node-esm/MarkdownContainer-MLTDWWGB.mjs +468 -0
  30. package/dist/lib/node-esm/MarkdownContainer-MLTDWWGB.mjs.map +7 -0
  31. package/dist/lib/{browser/chunk-4GGD6YJO.mjs → node-esm/chunk-2BGTVWHN.mjs} +4 -5
  32. package/dist/lib/node-esm/chunk-2BGTVWHN.mjs.map +7 -0
  33. package/dist/lib/node-esm/{chunk-7W37KPH3.mjs → chunk-4AGP7IJE.mjs} +5 -2
  34. package/dist/lib/node-esm/chunk-4AGP7IJE.mjs.map +7 -0
  35. package/dist/lib/node-esm/chunk-YOIARYUO.mjs +51 -0
  36. package/dist/lib/node-esm/chunk-YOIARYUO.mjs.map +7 -0
  37. package/dist/lib/node-esm/index.mjs +69 -114
  38. package/dist/lib/node-esm/index.mjs.map +4 -4
  39. package/dist/lib/node-esm/meta.json +1 -1
  40. package/dist/lib/node-esm/meta.mjs +2 -1
  41. package/dist/lib/node-esm/types/index.mjs +7 -4
  42. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  43. package/dist/types/src/components/MarkdownContainer.d.ts +15 -0
  44. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -0
  45. package/dist/types/src/components/MarkdownEditor.d.ts +8 -3
  46. package/dist/types/src/components/MarkdownEditor.d.ts.map +1 -1
  47. package/dist/types/src/components/MarkdownEditor.stories.d.ts +3 -3
  48. package/dist/types/src/components/MarkdownEditor.stories.d.ts.map +1 -1
  49. package/dist/types/src/components/index.d.ts +2 -11
  50. package/dist/types/src/components/index.d.ts.map +1 -1
  51. package/dist/types/src/extensions.d.ts +11 -15
  52. package/dist/types/src/extensions.d.ts.map +1 -1
  53. package/dist/types/src/meta.d.ts +1 -4
  54. package/dist/types/src/meta.d.ts.map +1 -1
  55. package/dist/types/src/types/document.d.ts +10 -1
  56. package/dist/types/src/types/document.d.ts.map +1 -1
  57. package/dist/types/src/types/types.d.ts +7 -8
  58. package/dist/types/src/types/types.d.ts.map +1 -1
  59. package/package.json +34 -33
  60. package/src/MarkdownPlugin.tsx +40 -94
  61. package/src/components/MarkdownContainer.tsx +108 -0
  62. package/src/components/MarkdownEditor.stories.tsx +11 -5
  63. package/src/components/MarkdownEditor.tsx +33 -39
  64. package/src/components/index.ts +2 -14
  65. package/src/extensions.tsx +124 -67
  66. package/src/meta.tsx +1 -5
  67. package/src/types/document.ts +12 -0
  68. package/src/types/types.ts +9 -6
  69. package/dist/lib/browser/DocumentCard-2P4EICBA.mjs +0 -11
  70. package/dist/lib/browser/DocumentCard-2P4EICBA.mjs.map +0 -7
  71. package/dist/lib/browser/DocumentEditor-PXYEHGQA.mjs +0 -11
  72. package/dist/lib/browser/DocumentEditor-PXYEHGQA.mjs.map +0 -7
  73. package/dist/lib/browser/MarkdownEditor-IE2ISQQF.mjs +0 -10
  74. package/dist/lib/browser/MarkdownEditor-IE2ISQQF.mjs.map +0 -7
  75. package/dist/lib/browser/chunk-354DCID5.mjs +0 -117
  76. package/dist/lib/browser/chunk-354DCID5.mjs.map +0 -7
  77. package/dist/lib/browser/chunk-4GGD6YJO.mjs.map +0 -7
  78. package/dist/lib/browser/chunk-5FP6MXCU.mjs +0 -164
  79. package/dist/lib/browser/chunk-5FP6MXCU.mjs.map +0 -7
  80. package/dist/lib/browser/chunk-7W37KPH3.mjs.map +0 -7
  81. package/dist/lib/browser/chunk-RL7QY322.mjs +0 -86
  82. package/dist/lib/browser/chunk-RL7QY322.mjs.map +0 -7
  83. package/dist/lib/browser/chunk-RQLDAFNM.mjs +0 -216
  84. package/dist/lib/browser/chunk-RQLDAFNM.mjs.map +0 -7
  85. package/dist/lib/node/DocumentCard-EHJDDSRY.cjs +0 -32
  86. package/dist/lib/node/DocumentCard-EHJDDSRY.cjs.map +0 -7
  87. package/dist/lib/node/DocumentEditor-DZOOGCBM.cjs +0 -29
  88. package/dist/lib/node/DocumentEditor-DZOOGCBM.cjs.map +0 -7
  89. package/dist/lib/node/MarkdownEditor-IUHHJ532.cjs.map +0 -7
  90. package/dist/lib/node/chunk-DFWSVQEA.cjs +0 -189
  91. package/dist/lib/node/chunk-DFWSVQEA.cjs.map +0 -7
  92. package/dist/lib/node/chunk-EZTJSCMZ.cjs.map +0 -7
  93. package/dist/lib/node/chunk-GRU6YP3J.cjs +0 -242
  94. package/dist/lib/node/chunk-GRU6YP3J.cjs.map +0 -7
  95. package/dist/lib/node/chunk-KTYIOXL5.cjs +0 -149
  96. package/dist/lib/node/chunk-KTYIOXL5.cjs.map +0 -7
  97. package/dist/lib/node/chunk-Q4ZSCBQE.cjs +0 -114
  98. package/dist/lib/node/chunk-Q4ZSCBQE.cjs.map +0 -7
  99. package/dist/lib/node/chunk-TGMR2CKU.cjs +0 -52
  100. package/dist/lib/node/chunk-TGMR2CKU.cjs.map +0 -7
  101. package/dist/lib/node-esm/DocumentCard-2P4EICBA.mjs +0 -11
  102. package/dist/lib/node-esm/DocumentCard-2P4EICBA.mjs.map +0 -7
  103. package/dist/lib/node-esm/DocumentEditor-PXYEHGQA.mjs +0 -11
  104. package/dist/lib/node-esm/DocumentEditor-PXYEHGQA.mjs.map +0 -7
  105. package/dist/lib/node-esm/MarkdownEditor-IE2ISQQF.mjs +0 -10
  106. package/dist/lib/node-esm/MarkdownEditor-IE2ISQQF.mjs.map +0 -7
  107. package/dist/lib/node-esm/chunk-354DCID5.mjs +0 -117
  108. package/dist/lib/node-esm/chunk-354DCID5.mjs.map +0 -7
  109. package/dist/lib/node-esm/chunk-4GGD6YJO.mjs.map +0 -7
  110. package/dist/lib/node-esm/chunk-5FP6MXCU.mjs +0 -164
  111. package/dist/lib/node-esm/chunk-5FP6MXCU.mjs.map +0 -7
  112. package/dist/lib/node-esm/chunk-7W37KPH3.mjs.map +0 -7
  113. package/dist/lib/node-esm/chunk-RL7QY322.mjs +0 -86
  114. package/dist/lib/node-esm/chunk-RL7QY322.mjs.map +0 -7
  115. package/dist/lib/node-esm/chunk-RQLDAFNM.mjs +0 -216
  116. package/dist/lib/node-esm/chunk-RQLDAFNM.mjs.map +0 -7
  117. package/dist/types/src/components/DocumentCard.d.ts +0 -16
  118. package/dist/types/src/components/DocumentCard.d.ts.map +0 -1
  119. package/dist/types/src/components/DocumentEditor.d.ts +0 -14
  120. package/dist/types/src/components/DocumentEditor.d.ts.map +0 -1
  121. package/dist/types/src/components/HeadingMenu.d.ts +0 -13
  122. package/dist/types/src/components/HeadingMenu.d.ts.map +0 -1
  123. package/dist/types/src/components/Layout.d.ts +0 -6
  124. package/dist/types/src/components/Layout.d.ts.map +0 -1
  125. package/src/components/DocumentCard.tsx +0 -107
  126. package/src/components/DocumentEditor.tsx +0 -137
  127. package/src/components/HeadingMenu.tsx +0 -46
  128. package/src/components/Layout.tsx +0 -27
@@ -1 +0,0 @@
1
- {"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAMtD,eAAO,MAAM,UAAU,0BAA2B,iBAAiB,CAAC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,sBAUzF,CAAC;AAIF,eAAO,MAAM,cAAc,iBAAkB,iBAAiB,sBAE7D,CAAC"}
@@ -1,107 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import React, { forwardRef } from 'react';
6
-
7
- import { createDocAccessor } from '@dxos/react-client/echo';
8
- import { DropdownMenu, Input, useThemeContext, useTranslation } from '@dxos/react-ui';
9
- import { Card } from '@dxos/react-ui-card';
10
- import {
11
- createBasicExtensions,
12
- createDataExtensions,
13
- createThemeExtensions,
14
- useTextEditor,
15
- } from '@dxos/react-ui-editor';
16
- import type { MosaicTileComponent } from '@dxos/react-ui-mosaic';
17
- import { focusRing, mx } from '@dxos/react-ui-theme';
18
-
19
- import { createBaseExtensions } from '../extensions';
20
- import { MARKDOWN_PLUGIN } from '../meta';
21
- import { type DocumentType, type MarkdownSettingsProps } from '../types';
22
-
23
- export type DocumentItemProps = {
24
- id: string;
25
- object: DocumentType;
26
- color?: string;
27
- };
28
-
29
- export type DocumentCardProps = {
30
- settings: MarkdownSettingsProps;
31
- };
32
-
33
- /**
34
- * @deprecated
35
- */
36
- // TODO(wittjosiah): Unify with DocumentEditor.
37
- export const DocumentCard: MosaicTileComponent<DocumentItemProps, HTMLDivElement, DocumentCardProps> = forwardRef(
38
- (
39
- {
40
- classNames,
41
- isDragging,
42
- draggableStyle,
43
- draggableProps,
44
- item: { id, object, color },
45
- grow,
46
- settings,
47
- onSelect,
48
- onAction,
49
- },
50
- forwardRef,
51
- ) => {
52
- const { t } = useTranslation(MARKDOWN_PLUGIN);
53
- const { themeMode } = useThemeContext();
54
- const { parentRef, focusAttributes } = useTextEditor(
55
- () => ({
56
- initialValue: object.content?.content,
57
- extensions: [
58
- createBasicExtensions({ placeholder: t('editor placeholder') }),
59
- createThemeExtensions({ themeMode }),
60
- createDataExtensions({
61
- id: object.id,
62
- text: object.content && createDocAccessor(object.content, ['content']),
63
- }),
64
- createBaseExtensions({
65
- document: object,
66
- debug: settings.debug,
67
- experimental: settings.experimental,
68
- }),
69
- ],
70
- }),
71
- [object, object.content, themeMode],
72
- );
73
-
74
- return (
75
- <div role='none' ref={forwardRef} className='flex w-full' style={draggableStyle}>
76
- <Card.Root classNames={mx('w-full snap-center', color, isDragging && 'opacity-20', classNames)} grow={grow}>
77
- <Card.Header onDoubleClick={() => onSelect?.()}>
78
- <Card.DragHandle {...draggableProps} />
79
- <Input.Root>
80
- <Input.TextInput
81
- variant='subdued'
82
- classNames='p-0'
83
- placeholder={t('document title placeholder')}
84
- value={object.name}
85
- onChange={(event) => (object.name = event.target.value)}
86
- />
87
- </Input.Root>
88
- <Card.Menu>
89
- {/* TODO(burdon): Handle events/intents? */}
90
- <DropdownMenu.Item onClick={() => onAction?.({ id, action: 'delete' })}>
91
- <span className='grow'>Delete</span>
92
- </DropdownMenu.Item>
93
- <DropdownMenu.Item onClick={() => onAction?.({ id, action: 'set-color' })}>
94
- <span className='grow'>Change color</span>
95
- </DropdownMenu.Item>
96
- </Card.Menu>
97
- </Card.Header>
98
- <Card.Body>
99
- <div {...focusAttributes} ref={parentRef} className={mx(focusRing, 'rounded-sm h-full p-1 text-sm')} />
100
- </Card.Body>
101
- </Card.Root>
102
- </div>
103
- );
104
- },
105
- );
106
-
107
- export default DocumentCard;
@@ -1,137 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import React, { useEffect, useMemo } from 'react';
6
-
7
- import { useResolvePlugin, parseFileManagerPlugin, useIntentDispatcher } from '@dxos/app-framework';
8
- import { createDocAccessor, fullyQualifiedId, getSpace } from '@dxos/react-client/echo';
9
- import { useIdentity } from '@dxos/react-client/halo';
10
- import {
11
- createDataExtensions,
12
- listener,
13
- localStorageStateStoreAdapter,
14
- state,
15
- type Extension,
16
- type EditorSelectionState,
17
- } from '@dxos/react-ui-editor';
18
-
19
- import MarkdownEditor, { type MarkdownEditorProps } from './MarkdownEditor';
20
- import { createBaseExtensions } from '../extensions';
21
- import { type DocumentType, type MarkdownPluginState, type MarkdownSettingsProps } from '../types';
22
- import { getFallbackName, setFallbackName } from '../util';
23
-
24
- type DocumentEditorProps = {
25
- document: DocumentType;
26
- settings: MarkdownSettingsProps;
27
- } & Omit<MarkdownEditorProps, 'id' | 'inputMode' | 'toolbar' | 'extensions'> &
28
- Pick<MarkdownPluginState, 'extensionProviders'>;
29
-
30
- /**
31
- * Editor for a `DocumentType`.
32
- */
33
- const DocumentEditor = ({
34
- document: doc,
35
- extensionProviders = [],
36
- viewMode,
37
- settings,
38
- ...props
39
- }: DocumentEditorProps) => {
40
- const space = getSpace(doc);
41
- const identity = useIdentity();
42
- const dispatch = useIntentDispatcher();
43
-
44
- const baseExtensions = useMemo(() => {
45
- // TODO(wittjosiah): Autocomplete is not working and this query is causing performance issues.
46
- // const query = space?.db.query(Filter.schema(DocumentType));
47
- // query?.subscribe();
48
- return createBaseExtensions({
49
- viewMode,
50
- settings,
51
- document: doc,
52
- dispatch,
53
- // query,
54
- });
55
- }, [doc, viewMode, dispatch, settings, settings.folding, settings.numberedHeadings]);
56
-
57
- const providerExtensions = useMemo(
58
- () =>
59
- extensionProviders.reduce((acc: Extension[], provider) => {
60
- const provided = typeof provider === 'function' ? provider({ document: doc }) : provider;
61
- acc.push(...provided);
62
- return acc;
63
- }, []),
64
- [extensionProviders],
65
- );
66
-
67
- const extensions = useMemo(
68
- () => [
69
- // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
70
- createDataExtensions({
71
- id: doc.id,
72
- text: doc.content && createDocAccessor(doc.content, ['content']),
73
- space,
74
- identity,
75
- }),
76
- state(localStorageStateStoreAdapter),
77
- listener({
78
- onChange: (text) => {
79
- setFallbackName(doc, text);
80
- },
81
- }),
82
- providerExtensions,
83
- baseExtensions,
84
- ],
85
- [doc, doc.content, space, baseExtensions, providerExtensions, identity],
86
- );
87
-
88
- const initialValue = useMemo(() => doc.content?.content, [doc.content]);
89
-
90
- // Migrate gradually to `fallbackName`.
91
- useEffect(() => {
92
- if (!doc.fallbackName && doc.content?.content) {
93
- doc.fallbackName = getFallbackName(doc.content.content);
94
- }
95
- }, [doc, doc.content]);
96
-
97
- // Restore last selection and scroll point.
98
- const id = fullyQualifiedId(doc);
99
- const { scrollTo, selection } = useMemo<EditorSelectionState>(
100
- () => localStorageStateStoreAdapter.getState(id) ?? {},
101
- [doc],
102
- );
103
-
104
- const fileManagerPlugin = useResolvePlugin(parseFileManagerPlugin);
105
- const handleFileUpload = useMemo(() => {
106
- if (space === undefined) {
107
- return undefined;
108
- }
109
-
110
- if (fileManagerPlugin?.provides.file.upload === undefined) {
111
- return undefined;
112
- }
113
-
114
- return async (file: File) => {
115
- return fileManagerPlugin?.provides?.file?.upload?.(file, space);
116
- };
117
- }, [fileManagerPlugin, space]);
118
-
119
- return (
120
- <MarkdownEditor
121
- id={id}
122
- initialValue={initialValue}
123
- extensions={extensions}
124
- scrollTo={scrollTo}
125
- selection={selection}
126
- onFileUpload={handleFileUpload}
127
- inputMode={settings.editorInputMode}
128
- toolbar={settings.toolbar}
129
- viewMode={viewMode}
130
- {...props}
131
- />
132
- );
133
- };
134
-
135
- export default DocumentEditor;
136
-
137
- export type DocumentEditor = typeof DocumentEditor;
@@ -1,46 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { DotsThreeVertical } from '@phosphor-icons/react';
6
- import React, { type PropsWithChildren, type FC } from 'react';
7
-
8
- import { Surface } from '@dxos/app-framework';
9
- import { Button, DropdownMenu } from '@dxos/react-ui';
10
- import { fineButtonDimensions, getSize } from '@dxos/react-ui-theme';
11
-
12
- import { type DocumentType, type MarkdownProperties } from '../types';
13
-
14
- // TODO(thure): This needs to be refactored into a graph node action.
15
- export const DocumentHeadingMenu: FC<{ document: DocumentType }> = ({ document }) => {
16
- return <HeadingMenu properties={document} content={document.content?.content} />;
17
- };
18
-
19
- /**
20
- * Menu for the layout heading.
21
- */
22
- export const HeadingMenu = ({
23
- content,
24
- properties,
25
- }: PropsWithChildren<{
26
- content: string | undefined;
27
- properties: MarkdownProperties;
28
- }>) => {
29
- return (
30
- <DropdownMenu.Root modal={false}>
31
- <DropdownMenu.Trigger asChild>
32
- <Button variant='ghost' classNames={fineButtonDimensions}>
33
- <DotsThreeVertical className={getSize(4)} />
34
- </Button>
35
- </DropdownMenu.Trigger>
36
- <DropdownMenu.Portal>
37
- <DropdownMenu.Content sideOffset={8} classNames='z-10'>
38
- <DropdownMenu.Viewport>
39
- <Surface data={{ content, properties }} role='menuitem' />
40
- </DropdownMenu.Viewport>
41
- <DropdownMenu.Arrow />
42
- </DropdownMenu.Content>
43
- </DropdownMenu.Portal>
44
- </DropdownMenu.Root>
45
- );
46
- };
@@ -1,27 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import React, { type PropsWithChildren } from 'react';
6
-
7
- import { Main } from '@dxos/react-ui';
8
- import { editorWithToolbarLayout } from '@dxos/react-ui-editor';
9
- import { topbarBlockPaddingStart } from '@dxos/react-ui-theme';
10
-
11
- export const MainLayout = ({ children, toolbar }: PropsWithChildren<{ toolbar?: boolean }>) => {
12
- return (
13
- <Main.Content
14
- bounce
15
- data-toolbar={toolbar ? 'enabled' : 'disabled'}
16
- classNames={[topbarBlockPaddingStart, editorWithToolbarLayout]}
17
- >
18
- {children}
19
- </Main.Content>
20
- );
21
- };
22
-
23
- // Used when the editor is embedded in another context (e.g., iframe) and has no topbar/sidebar/etc.
24
- // TODO(wittjosiah): What's the difference between this and Section/Card?
25
- export const EmbeddedLayout = ({ children }: PropsWithChildren) => {
26
- return <Main.Content classNames='min-bs-[100dvh] grid p-0.5'>{children}</Main.Content>;
27
- };