@dxos/plugin-markdown 0.8.2-main.f11618f → 0.8.2-staging.7ac8446

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 (170) hide show
  1. package/dist/lib/browser/{MarkdownContainer-5XV7K2NX.mjs → MarkdownContainer-T3HU27RE.mjs} +12 -16
  2. package/dist/lib/browser/MarkdownContainer-T3HU27RE.mjs.map +7 -0
  3. package/dist/lib/browser/{app-graph-serializer-OCXP7PCK.mjs → app-graph-serializer-NOXI4IQ5.mjs} +3 -3
  4. package/dist/lib/browser/{artifact-definition-XTVOUMMI.mjs → artifact-definition-CE6J6NY4.mjs} +2 -2
  5. package/dist/lib/browser/{chunk-QV6ZIXAD.mjs → chunk-3ULJ4FIJ.mjs} +23 -10
  6. package/dist/lib/browser/chunk-3ULJ4FIJ.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-LJ2UFBJ2.mjs → chunk-QXDKFACU.mjs} +3 -5
  8. package/dist/lib/browser/{chunk-LJ2UFBJ2.mjs.map → chunk-QXDKFACU.mjs.map} +2 -2
  9. package/dist/lib/browser/{chunk-GVOEHF7E.mjs → chunk-YCJNW2RU.mjs} +1 -10
  10. package/dist/lib/browser/chunk-YCJNW2RU.mjs.map +7 -0
  11. package/dist/lib/browser/index.mjs +4 -8
  12. package/dist/lib/browser/index.mjs.map +2 -2
  13. package/dist/lib/browser/intent-resolver-42GQ6HNZ.mjs +50 -0
  14. package/dist/lib/browser/intent-resolver-42GQ6HNZ.mjs.map +7 -0
  15. package/dist/lib/browser/meta.json +1 -1
  16. package/dist/lib/browser/{react-surface-LBCMSLJ5.mjs → react-surface-RQX3CPFV.mjs} +4 -14
  17. package/dist/lib/browser/react-surface-RQX3CPFV.mjs.map +7 -0
  18. package/dist/lib/browser/{settings-EQSDBX6O.mjs → settings-GCSS3Y4Z.mjs} +4 -4
  19. package/dist/lib/browser/settings-GCSS3Y4Z.mjs.map +7 -0
  20. package/dist/lib/browser/{state-AIN4J7N5.mjs → state-O7P5JDIH.mjs} +1 -1
  21. package/dist/lib/browser/{state-AIN4J7N5.mjs.map → state-O7P5JDIH.mjs.map} +2 -2
  22. package/dist/lib/browser/{thread-MFKBUVCB.mjs → thread-3QGCFNVZ.mjs} +2 -2
  23. package/dist/lib/browser/types/index.mjs +1 -3
  24. package/dist/lib/node/{MarkdownContainer-5EQTBXV3.cjs → MarkdownContainer-6ZJIFAP6.cjs} +15 -19
  25. package/dist/lib/node/MarkdownContainer-6ZJIFAP6.cjs.map +7 -0
  26. package/dist/lib/node/{app-graph-serializer-KBDLASRP.cjs → app-graph-serializer-HKK3SEDN.cjs} +9 -9
  27. package/dist/lib/node/{artifact-definition-ADEN2KD6.cjs → artifact-definition-XGADFWCQ.cjs} +9 -9
  28. package/dist/lib/node/{chunk-QRE5L6ZC.cjs → chunk-7QVONRSI.cjs} +57 -13
  29. package/dist/lib/node/chunk-7QVONRSI.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-JO4SBK36.cjs → chunk-H5MYVP6F.cjs} +7 -9
  31. package/dist/lib/node/{chunk-JO4SBK36.cjs.map → chunk-H5MYVP6F.cjs.map} +2 -2
  32. package/dist/lib/node/{chunk-YHL4JSA6.cjs → chunk-UEXGNGSS.cjs} +4 -14
  33. package/dist/lib/node/chunk-UEXGNGSS.cjs.map +7 -0
  34. package/dist/lib/node/index.cjs +20 -23
  35. package/dist/lib/node/index.cjs.map +2 -2
  36. package/dist/lib/node/{intent-resolver-NX5QNRYF.cjs → intent-resolver-NW27BF3W.cjs} +9 -45
  37. package/dist/lib/node/intent-resolver-NW27BF3W.cjs.map +7 -0
  38. package/dist/lib/node/meta.json +1 -1
  39. package/dist/lib/node/{react-surface-DJIZSVMN.cjs → react-surface-5X3SMHGI.cjs} +8 -18
  40. package/dist/lib/node/react-surface-5X3SMHGI.cjs.map +7 -0
  41. package/dist/lib/node/{settings-2JXASSLU.cjs → settings-S2ISUVIH.cjs} +7 -7
  42. package/dist/lib/node/settings-S2ISUVIH.cjs.map +7 -0
  43. package/dist/lib/node/{state-PC7IVXFP.cjs → state-L44SG3ZM.cjs} +4 -4
  44. package/dist/lib/node/{state-PC7IVXFP.cjs.map → state-L44SG3ZM.cjs.map} +2 -2
  45. package/dist/lib/node/{thread-MXEGV6HS.cjs → thread-42R57L4K.cjs} +6 -6
  46. package/dist/lib/node/types/index.cjs +6 -8
  47. package/dist/lib/node/types/index.cjs.map +2 -2
  48. package/dist/lib/node-esm/{MarkdownContainer-LONZOJJX.mjs → MarkdownContainer-URAPTO37.mjs} +12 -16
  49. package/dist/lib/node-esm/MarkdownContainer-URAPTO37.mjs.map +7 -0
  50. package/dist/lib/node-esm/{app-graph-serializer-67CO7ST3.mjs → app-graph-serializer-QQ2CTHOQ.mjs} +3 -3
  51. package/dist/lib/node-esm/{artifact-definition-KTS5M2FW.mjs → artifact-definition-WRG5ZRN5.mjs} +2 -2
  52. package/dist/lib/node-esm/{chunk-NUZHKZSZ.mjs → chunk-4AM4VU3Y.mjs} +1 -10
  53. package/dist/lib/node-esm/chunk-4AM4VU3Y.mjs.map +7 -0
  54. package/dist/lib/node-esm/{chunk-4U2F4EB7.mjs → chunk-F6UHVLH7.mjs} +23 -10
  55. package/dist/lib/node-esm/chunk-F6UHVLH7.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-VQA6BQGT.mjs → chunk-JAVD67QP.mjs} +3 -5
  57. package/dist/lib/node-esm/{chunk-VQA6BQGT.mjs.map → chunk-JAVD67QP.mjs.map} +2 -2
  58. package/dist/lib/node-esm/index.mjs +4 -8
  59. package/dist/lib/node-esm/index.mjs.map +2 -2
  60. package/dist/lib/node-esm/intent-resolver-7HOMUVHR.mjs +51 -0
  61. package/dist/lib/node-esm/intent-resolver-7HOMUVHR.mjs.map +7 -0
  62. package/dist/lib/node-esm/meta.json +1 -1
  63. package/dist/lib/node-esm/{react-surface-737EXAWT.mjs → react-surface-6IKC3G46.mjs} +4 -14
  64. package/dist/lib/node-esm/react-surface-6IKC3G46.mjs.map +7 -0
  65. package/dist/lib/node-esm/{settings-67RVIH3N.mjs → settings-ZDIFTK4N.mjs} +4 -4
  66. package/dist/lib/node-esm/settings-ZDIFTK4N.mjs.map +7 -0
  67. package/dist/lib/node-esm/{state-PNOPM4TS.mjs → state-DWPOKLEY.mjs} +1 -1
  68. package/dist/lib/node-esm/{state-PNOPM4TS.mjs.map → state-DWPOKLEY.mjs.map} +2 -2
  69. package/dist/lib/node-esm/{thread-5U4KSBED.mjs → thread-R2KHZD6V.mjs} +2 -2
  70. package/dist/lib/node-esm/types/index.mjs +1 -3
  71. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  72. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  73. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  74. package/dist/types/src/components/{MarkdownEditor/MarkdownEditor.d.ts → MarkdownEditor.d.ts} +1 -1
  75. package/dist/types/src/components/MarkdownEditor.d.ts.map +1 -0
  76. package/dist/types/src/components/{MarkdownEditor/MarkdownEditor.stories.d.ts → MarkdownEditor.stories.d.ts} +3 -3
  77. package/dist/types/src/components/MarkdownEditor.stories.d.ts.map +1 -0
  78. package/dist/types/src/components/{MarkdownSettings/MarkdownSettings.d.ts → MarkdownSettings.d.ts} +1 -1
  79. package/dist/types/src/components/MarkdownSettings.d.ts.map +1 -0
  80. package/dist/types/src/components/Toolbar.stories.d.ts +2 -2
  81. package/dist/types/src/components/Toolbar.stories.d.ts.map +1 -1
  82. package/dist/types/src/components/index.d.ts +0 -1
  83. package/dist/types/src/components/index.d.ts.map +1 -1
  84. package/dist/types/src/extensions.d.ts.map +1 -1
  85. package/dist/types/src/translations.d.ts +0 -6
  86. package/dist/types/src/translations.d.ts.map +1 -1
  87. package/dist/types/src/types/schema.d.ts +17 -421
  88. package/dist/types/src/types/schema.d.ts.map +1 -1
  89. package/dist/types/src/types/types.d.ts +8 -120
  90. package/dist/types/src/types/types.d.ts.map +1 -1
  91. package/dist/types/src/util.d.ts +0 -1
  92. package/dist/types/src/util.d.ts.map +1 -1
  93. package/package.json +32 -37
  94. package/src/MarkdownPlugin.tsx +3 -3
  95. package/src/capabilities/intent-resolver.ts +5 -38
  96. package/src/capabilities/react-surface.tsx +1 -8
  97. package/src/capabilities/settings.ts +2 -2
  98. package/src/capabilities/state.ts +1 -1
  99. package/src/components/MarkdownContainer.tsx +0 -1
  100. package/src/components/{MarkdownEditor/MarkdownEditor.stories.tsx → MarkdownEditor.stories.tsx} +35 -22
  101. package/src/components/{MarkdownEditor/MarkdownEditor.tsx → MarkdownEditor.tsx} +4 -5
  102. package/src/components/{MarkdownSettings/MarkdownSettings.tsx → MarkdownSettings.tsx} +2 -2
  103. package/src/components/Toolbar.stories.tsx +15 -15
  104. package/src/components/index.ts +0 -1
  105. package/src/extensions.tsx +32 -37
  106. package/src/translations.ts +0 -2
  107. package/src/types/schema.ts +0 -5
  108. package/src/util.tsx +2 -6
  109. package/dist/lib/browser/MarkdownContainer-5XV7K2NX.mjs.map +0 -7
  110. package/dist/lib/browser/MarkdownPreview-DX5U5LCX.mjs +0 -81
  111. package/dist/lib/browser/MarkdownPreview-DX5U5LCX.mjs.map +0 -7
  112. package/dist/lib/browser/chunk-5QXYEKSX.mjs +0 -20
  113. package/dist/lib/browser/chunk-5QXYEKSX.mjs.map +0 -7
  114. package/dist/lib/browser/chunk-GVOEHF7E.mjs.map +0 -7
  115. package/dist/lib/browser/chunk-QV6ZIXAD.mjs.map +0 -7
  116. package/dist/lib/browser/intent-resolver-H37L3DBD.mjs +0 -86
  117. package/dist/lib/browser/intent-resolver-H37L3DBD.mjs.map +0 -7
  118. package/dist/lib/browser/react-surface-LBCMSLJ5.mjs.map +0 -7
  119. package/dist/lib/browser/settings-EQSDBX6O.mjs.map +0 -7
  120. package/dist/lib/node/MarkdownContainer-5EQTBXV3.cjs.map +0 -7
  121. package/dist/lib/node/MarkdownPreview-W7QIN2KJ.cjs +0 -104
  122. package/dist/lib/node/MarkdownPreview-W7QIN2KJ.cjs.map +0 -7
  123. package/dist/lib/node/chunk-QRE5L6ZC.cjs.map +0 -7
  124. package/dist/lib/node/chunk-WGMVEPB3.cjs +0 -75
  125. package/dist/lib/node/chunk-WGMVEPB3.cjs.map +0 -7
  126. package/dist/lib/node/chunk-YHL4JSA6.cjs.map +0 -7
  127. package/dist/lib/node/intent-resolver-NX5QNRYF.cjs.map +0 -7
  128. package/dist/lib/node/react-surface-DJIZSVMN.cjs.map +0 -7
  129. package/dist/lib/node/settings-2JXASSLU.cjs.map +0 -7
  130. package/dist/lib/node-esm/MarkdownContainer-LONZOJJX.mjs.map +0 -7
  131. package/dist/lib/node-esm/MarkdownPreview-T3OW2EN4.mjs +0 -82
  132. package/dist/lib/node-esm/MarkdownPreview-T3OW2EN4.mjs.map +0 -7
  133. package/dist/lib/node-esm/chunk-4U2F4EB7.mjs.map +0 -7
  134. package/dist/lib/node-esm/chunk-NUZHKZSZ.mjs.map +0 -7
  135. package/dist/lib/node-esm/chunk-PALFXZBY.mjs +0 -22
  136. package/dist/lib/node-esm/chunk-PALFXZBY.mjs.map +0 -7
  137. package/dist/lib/node-esm/intent-resolver-XES4ZCA6.mjs +0 -87
  138. package/dist/lib/node-esm/intent-resolver-XES4ZCA6.mjs.map +0 -7
  139. package/dist/lib/node-esm/react-surface-737EXAWT.mjs.map +0 -7
  140. package/dist/lib/node-esm/settings-67RVIH3N.mjs.map +0 -7
  141. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +0 -1
  142. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +0 -1
  143. package/dist/types/src/components/MarkdownEditor/index.d.ts +0 -2
  144. package/dist/types/src/components/MarkdownEditor/index.d.ts.map +0 -1
  145. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts +0 -6
  146. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts.map +0 -1
  147. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts +0 -191
  148. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts.map +0 -1
  149. package/dist/types/src/components/MarkdownPreview/index.d.ts +0 -4
  150. package/dist/types/src/components/MarkdownPreview/index.d.ts.map +0 -1
  151. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +0 -1
  152. package/dist/types/src/components/MarkdownSettings/index.d.ts +0 -2
  153. package/dist/types/src/components/MarkdownSettings/index.d.ts.map +0 -1
  154. package/dist/types/src/components/Suggestions.stories.d.ts +0 -12
  155. package/dist/types/src/components/Suggestions.stories.d.ts.map +0 -1
  156. package/src/components/MarkdownEditor/index.ts +0 -5
  157. package/src/components/MarkdownPreview/MarkdownPreview.stories.tsx +0 -68
  158. package/src/components/MarkdownPreview/MarkdownPreview.tsx +0 -85
  159. package/src/components/MarkdownPreview/index.ts +0 -9
  160. package/src/components/MarkdownSettings/index.ts +0 -5
  161. package/src/components/Suggestions.stories.tsx +0 -184
  162. /package/dist/lib/browser/{app-graph-serializer-OCXP7PCK.mjs.map → app-graph-serializer-NOXI4IQ5.mjs.map} +0 -0
  163. /package/dist/lib/browser/{artifact-definition-XTVOUMMI.mjs.map → artifact-definition-CE6J6NY4.mjs.map} +0 -0
  164. /package/dist/lib/browser/{thread-MFKBUVCB.mjs.map → thread-3QGCFNVZ.mjs.map} +0 -0
  165. /package/dist/lib/node/{app-graph-serializer-KBDLASRP.cjs.map → app-graph-serializer-HKK3SEDN.cjs.map} +0 -0
  166. /package/dist/lib/node/{artifact-definition-ADEN2KD6.cjs.map → artifact-definition-XGADFWCQ.cjs.map} +0 -0
  167. /package/dist/lib/node/{thread-MXEGV6HS.cjs.map → thread-42R57L4K.cjs.map} +0 -0
  168. /package/dist/lib/node-esm/{app-graph-serializer-67CO7ST3.mjs.map → app-graph-serializer-QQ2CTHOQ.mjs.map} +0 -0
  169. /package/dist/lib/node-esm/{artifact-definition-KTS5M2FW.mjs.map → artifact-definition-WRG5ZRN5.mjs.map} +0 -0
  170. /package/dist/lib/node-esm/{thread-5U4KSBED.mjs.map → thread-R2KHZD6V.mjs.map} +0 -0
@@ -1,68 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import '@dxos-theme';
6
-
7
- import { type Meta } from '@storybook/react';
8
- import React from 'react';
9
-
10
- import { IntentPlugin } from '@dxos/app-framework';
11
- import { withPluginManager } from '@dxos/app-framework/testing';
12
- import { create } from '@dxos/echo-schema';
13
- import { DocumentType } from '@dxos/plugin-markdown/types';
14
- import { faker } from '@dxos/random';
15
- import { makeRef } from '@dxos/react-client/echo';
16
- import { Icon, Popover } from '@dxos/react-ui';
17
- import { TextType } from '@dxos/schema';
18
- import { withTheme, withLayout } from '@dxos/storybook-utils';
19
-
20
- import { MarkdownPreview } from './MarkdownPreview';
21
- import translations from '../../translations';
22
-
23
- faker.seed(1234);
24
-
25
- const meta: Meta<typeof MarkdownPreview> = {
26
- title: 'plugins/plugin-markdown/MarkdownPreview',
27
- component: MarkdownPreview,
28
- render: ({ subject }) => {
29
- return (
30
- <Popover.Root open>
31
- <Popover.Content>
32
- <MarkdownPreview subject={subject} role='popover' />
33
- <Popover.Arrow />
34
- </Popover.Content>
35
- <Popover.Trigger>
36
- <Icon icon='ph--text-aa--regular' size={5} />
37
- </Popover.Trigger>
38
- </Popover.Root>
39
- );
40
- },
41
- decorators: [withPluginManager({ plugins: [IntentPlugin()] }), withTheme, withLayout({ tooltips: true })],
42
- parameters: {
43
- layout: 'centered',
44
- translations,
45
- },
46
- };
47
-
48
- export default meta;
49
-
50
- const data = (() => {
51
- const document = create(DocumentType, {
52
- name: faker.lorem.words(3),
53
- content: makeRef(
54
- create(TextType, {
55
- content: faker.lorem.paragraphs(3),
56
- }),
57
- ),
58
- threads: [],
59
- });
60
-
61
- return { document };
62
- })();
63
-
64
- export const Default = {
65
- args: {
66
- subject: create(DocumentType, data.document),
67
- },
68
- };
@@ -1,85 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { pipe } from 'effect';
6
- import React, { useCallback } from 'react';
7
-
8
- import { chain, createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
9
- import { isInstanceOf } from '@dxos/echo-schema';
10
- import {
11
- type PreviewProps,
12
- popoverCard,
13
- previewTitle,
14
- previewProse,
15
- previewChrome,
16
- defaultCard,
17
- kanbanCardWithoutPoster,
18
- } from '@dxos/plugin-preview';
19
- import { fullyQualifiedId } from '@dxos/react-client/echo';
20
- import { Button, Icon, useTranslation } from '@dxos/react-ui';
21
- import { mx } from '@dxos/react-ui-theme';
22
- import { TextType } from '@dxos/schema';
23
-
24
- import { MARKDOWN_PLUGIN } from '../../meta';
25
- import { DocumentType } from '../../types';
26
- import { getAbstract, getFallbackName } from '../../util';
27
-
28
- // TODO(burdon): Factor out.
29
- const getTitle = (subject: DocumentType | TextType, fallback: string) => {
30
- if (isInstanceOf(DocumentType, subject)) {
31
- return subject.name ?? subject.fallbackName ?? getFallbackName(subject.content?.target?.content ?? fallback);
32
- } else if (isInstanceOf(TextType, subject)) {
33
- return getFallbackName(subject.content);
34
- }
35
- };
36
-
37
- // TODO(burdon): Factor out.
38
- const getSnippet = (subject: DocumentType | TextType, fallback: string) => {
39
- if (isInstanceOf(DocumentType, subject)) {
40
- return getAbstract(subject.content?.target?.content ?? fallback);
41
- } else if (isInstanceOf(TextType, subject)) {
42
- return getAbstract(subject.content);
43
- }
44
- };
45
-
46
- export const MarkdownPreview = ({ classNames, subject, role }: PreviewProps<DocumentType | TextType>) => {
47
- const { dispatchPromise: dispatch } = useIntentDispatcher();
48
- const { t } = useTranslation(MARKDOWN_PLUGIN);
49
- const snippet = getSnippet(subject, t('fallback abstract'));
50
-
51
- // TODO(wittjosiah): Factor out so this component isn't dependent on the app framework.
52
- const handleNavigate = useCallback(
53
- () =>
54
- dispatch(
55
- pipe(
56
- createIntent(LayoutAction.UpdatePopover, {
57
- part: 'popover',
58
- subject: null,
59
- options: { state: false, anchorId: '' },
60
- }),
61
- chain(LayoutAction.Open, { part: 'main', subject: [fullyQualifiedId(subject)] }),
62
- ),
63
- ),
64
- [dispatch, subject],
65
- );
66
-
67
- return (
68
- <div
69
- role='none'
70
- className={mx(
71
- role === 'popover' ? popoverCard : role === 'card--kanban' ? kanbanCardWithoutPoster : defaultCard,
72
- classNames,
73
- )}
74
- >
75
- <h2 className={mx(previewTitle, previewProse)}>{getTitle(subject, t('fallback title'))}</h2>
76
- {snippet && <p className={mx(previewProse, 'line-clamp-3 break-words col-span-2')}>{snippet}</p>}
77
- <div role='none' className={previewChrome}>
78
- <Button onClick={handleNavigate}>
79
- <span className='grow'>{t('navigate to document label')}</span>
80
- <Icon icon='ph--arrow-right--regular' />
81
- </Button>
82
- </div>
83
- </div>
84
- );
85
- };
@@ -1,9 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- import { MarkdownPreview } from './MarkdownPreview';
6
-
7
- export * from './MarkdownPreview';
8
-
9
- export default MarkdownPreview;
@@ -1,5 +0,0 @@
1
- //
2
- // Copyright 2025 DXOS.org
3
- //
4
-
5
- export * from './MarkdownSettings';
@@ -1,184 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import '@dxos-theme';
6
-
7
- import { type Meta } from '@storybook/react';
8
- import React, { type FC, useEffect, useMemo, useState } from 'react';
9
-
10
- import {
11
- Capabilities,
12
- CollaborationActions,
13
- IntentPlugin,
14
- SettingsPlugin,
15
- contributes,
16
- createIntent,
17
- useCapability,
18
- useIntentDispatcher,
19
- } from '@dxos/app-framework';
20
- import { withPluginManager } from '@dxos/app-framework/testing';
21
- import { Message } from '@dxos/artifact';
22
- import { S, AST, create, type Expando, EchoObject } from '@dxos/echo-schema';
23
- import { invariant } from '@dxos/invariant';
24
- import { DXN } from '@dxos/keys';
25
- import { live, makeRef, refFromDXN } from '@dxos/live-object';
26
- import { ClientPlugin } from '@dxos/plugin-client';
27
- import { PreviewPlugin } from '@dxos/plugin-preview';
28
- import { SpacePlugin } from '@dxos/plugin-space';
29
- import { StorybookLayoutPlugin } from '@dxos/plugin-storybook-layout';
30
- import { ThemePlugin } from '@dxos/plugin-theme';
31
- import { faker } from '@dxos/random';
32
- import { createQueueDxn, useQueue, useSpace } from '@dxos/react-client/echo';
33
- import { IconButton, Toolbar } from '@dxos/react-ui';
34
- import { command, useTextEditor } from '@dxos/react-ui-editor';
35
- import { StackItem } from '@dxos/react-ui-stack';
36
- import { defaultTx } from '@dxos/react-ui-theme';
37
- import { withLayout } from '@dxos/storybook-utils';
38
-
39
- import MarkdownContainer from './MarkdownContainer';
40
- import { MarkdownPlugin } from '../MarkdownPlugin';
41
- import { MarkdownCapabilities } from '../capabilities';
42
- import { MARKDOWN_PLUGIN } from '../meta';
43
- import translations from '../translations';
44
- import { createDocument, DocumentType, type MarkdownSettingsProps } from '../types';
45
-
46
- faker.seed(1);
47
-
48
- const TestItem = S.Struct({
49
- title: S.String.annotations({
50
- [AST.TitleAnnotationId]: 'Title',
51
- [AST.DescriptionAnnotationId]: 'Product title',
52
- }),
53
- description: S.String.annotations({
54
- [AST.TitleAnnotationId]: 'Description',
55
- [AST.DescriptionAnnotationId]: 'Product description',
56
- }),
57
- }).pipe(EchoObject({ typename: 'dxos.org/type/Test', version: '0.1.0' }));
58
-
59
- const TestChat: FC<{ doc: DocumentType; content: string }> = ({ doc, content }) => {
60
- const { dispatchPromise: dispatch } = useIntentDispatcher();
61
- const { parentRef } = useTextEditor({ initialValue: content });
62
-
63
- const space = useSpace();
64
- const queueDxn = useMemo(() => space && createQueueDxn(space.id), [space]);
65
- const queue = useQueue<Message>(queueDxn);
66
-
67
- const handleInsert = () => {
68
- invariant(space);
69
- invariant(queue);
70
- queue.append([create(Message, { role: 'assistant', content: [{ type: 'text', text: 'Hello' }] })]);
71
- const message = queue.items[queue.items.length - 1];
72
-
73
- // {
74
- // const ref = refFromDXN(new DXN(DXN.kind.QUEUE, [...queue.dxn.parts, message.id]));
75
-
76
- // const message = deref(ref);
77
- // }
78
-
79
- void dispatch(
80
- createIntent(CollaborationActions.InsertContent, {
81
- spaceId: space.id,
82
- target: makeRef(doc as any as Expando), // TODO(burdon): Comomon base type.
83
- object: refFromDXN(new DXN(DXN.kind.QUEUE, [...queue.dxn.parts, message.id])),
84
- label: 'Proposal',
85
- }),
86
- );
87
- };
88
-
89
- return (
90
- <StackItem.Content toolbar classNames='w-full'>
91
- <Toolbar.Root classNames='border-be border-separator'>
92
- <IconButton icon='ph--plus--regular' disabled={!queue} label='Insert' onClick={handleInsert} />
93
- </Toolbar.Root>
94
- <div ref={parentRef} className='p-4' />
95
- </StackItem.Content>
96
- );
97
- };
98
-
99
- const DefaultStory = ({ document, chat }: { document: string; chat: string }) => {
100
- const space = useSpace();
101
- const [doc, setDoc] = useState<DocumentType>();
102
- const settings = useCapability(Capabilities.SettingsStore).getStore<MarkdownSettingsProps>(MARKDOWN_PLUGIN)!.value;
103
-
104
- useEffect(() => {
105
- if (!space) {
106
- return undefined;
107
- }
108
-
109
- const doc = space.db.add(
110
- createDocument({
111
- name: 'Test',
112
-
113
- // Create links.
114
- content: document.replaceAll(/\[(\w+)\]/g, (_, label) => {
115
- const obj = space.db.add(live(TestItem, { title: label, description: faker.lorem.paragraph() }));
116
- const dxn = makeRef(obj).dxn.toString();
117
- return `[${label}][${dxn}]`;
118
- }),
119
- }),
120
- );
121
-
122
- setDoc(doc);
123
- }, [space]);
124
-
125
- if (!space || !doc) {
126
- return <></>;
127
- }
128
-
129
- return (
130
- <>
131
- <MarkdownContainer id={doc.id} object={doc} settings={settings} />
132
- <TestChat doc={doc} content={chat} />
133
- </>
134
- );
135
- };
136
-
137
- const meta: Meta<typeof DefaultStory> = {
138
- title: 'plugins/plugin-markdown/Suggestions',
139
- render: DefaultStory,
140
- decorators: [
141
- withPluginManager({
142
- plugins: [
143
- ThemePlugin({ tx: defaultTx }),
144
- StorybookLayoutPlugin(),
145
- ClientPlugin({
146
- types: [DocumentType, TestItem],
147
- onClientInitialized: async (_, client) => {
148
- await client.halo.createIdentity();
149
- },
150
- }),
151
- SpacePlugin(),
152
- SettingsPlugin(),
153
- IntentPlugin(),
154
- MarkdownPlugin(),
155
- PreviewPlugin(),
156
- ],
157
- capabilities: [contributes(MarkdownCapabilities.Extensions, [() => command()])],
158
- }),
159
- withLayout({ tooltips: true, fullscreen: true, classNames: 'grid grid-cols-2' }),
160
- ],
161
- parameters: {
162
- translations,
163
- },
164
- };
165
-
166
- export default meta;
167
-
168
- type Story = Meta<typeof DefaultStory>;
169
-
170
- export const Default: Story = {
171
- args: {
172
- chat: 'Hello\n',
173
- document: [
174
- '# Test',
175
- '',
176
- faker.lorem.paragraph(1),
177
- '',
178
- 'This is a [DXOS] story that tests [ECHO] references inside the Markdown plugin.',
179
- '',
180
- faker.lorem.paragraph(3),
181
- '',
182
- ].join('\n'),
183
- },
184
- };