@dxos/plugin-markdown 0.8.1 → 0.8.2-main.36232bc

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-T3HU27RE.mjs → MarkdownContainer-PDIKEQQU.mjs} +15 -12
  2. package/dist/lib/browser/MarkdownContainer-PDIKEQQU.mjs.map +7 -0
  3. package/dist/lib/browser/MarkdownPreview-2G2FVWO2.mjs +73 -0
  4. package/dist/lib/browser/MarkdownPreview-2G2FVWO2.mjs.map +7 -0
  5. package/dist/lib/browser/{app-graph-serializer-NOXI4IQ5.mjs → app-graph-serializer-OCXP7PCK.mjs} +3 -3
  6. package/dist/lib/browser/{artifact-definition-CE6J6NY4.mjs → artifact-definition-XTVOUMMI.mjs} +2 -2
  7. package/dist/lib/browser/{chunk-YCJNW2RU.mjs → chunk-GVOEHF7E.mjs} +10 -1
  8. package/dist/lib/browser/chunk-GVOEHF7E.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-QXDKFACU.mjs → chunk-LJ2UFBJ2.mjs} +5 -3
  10. package/dist/lib/browser/{chunk-QXDKFACU.mjs.map → chunk-LJ2UFBJ2.mjs.map} +2 -2
  11. package/dist/lib/browser/{chunk-3ULJ4FIJ.mjs → chunk-QV6ZIXAD.mjs} +10 -23
  12. package/dist/lib/browser/chunk-QV6ZIXAD.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-UQ2W5NRK.mjs +20 -0
  14. package/dist/lib/browser/chunk-UQ2W5NRK.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +8 -4
  16. package/dist/lib/browser/index.mjs.map +2 -2
  17. package/dist/lib/browser/intent-resolver-H37L3DBD.mjs +86 -0
  18. package/dist/lib/browser/intent-resolver-H37L3DBD.mjs.map +7 -0
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/{react-surface-RQX3CPFV.mjs → react-surface-OIHIDL6Q.mjs} +11 -4
  21. package/dist/lib/browser/react-surface-OIHIDL6Q.mjs.map +7 -0
  22. package/dist/lib/browser/{settings-GCSS3Y4Z.mjs → settings-EQSDBX6O.mjs} +4 -4
  23. package/dist/lib/browser/settings-EQSDBX6O.mjs.map +7 -0
  24. package/dist/lib/browser/{state-O7P5JDIH.mjs → state-AIN4J7N5.mjs} +1 -1
  25. package/dist/lib/browser/{state-O7P5JDIH.mjs.map → state-AIN4J7N5.mjs.map} +2 -2
  26. package/dist/lib/browser/{thread-3QGCFNVZ.mjs → thread-MFKBUVCB.mjs} +2 -2
  27. package/dist/lib/browser/types/index.mjs +3 -1
  28. package/dist/lib/node/{MarkdownContainer-6ZJIFAP6.cjs → MarkdownContainer-GYHFOCWZ.cjs} +18 -15
  29. package/dist/lib/node/MarkdownContainer-GYHFOCWZ.cjs.map +7 -0
  30. package/dist/lib/node/MarkdownPreview-T32LRPVG.cjs +96 -0
  31. package/dist/lib/node/MarkdownPreview-T32LRPVG.cjs.map +7 -0
  32. package/dist/lib/node/{app-graph-serializer-HKK3SEDN.cjs → app-graph-serializer-KBDLASRP.cjs} +9 -9
  33. package/dist/lib/node/{artifact-definition-XGADFWCQ.cjs → artifact-definition-ADEN2KD6.cjs} +9 -9
  34. package/dist/lib/node/{chunk-7QVONRSI.cjs → chunk-HB44GO7V.cjs} +13 -57
  35. package/dist/lib/node/chunk-HB44GO7V.cjs.map +7 -0
  36. package/dist/lib/node/{chunk-H5MYVP6F.cjs → chunk-JO4SBK36.cjs} +9 -7
  37. package/dist/lib/node/{chunk-H5MYVP6F.cjs.map → chunk-JO4SBK36.cjs.map} +2 -2
  38. package/dist/lib/node/chunk-WGMVEPB3.cjs +75 -0
  39. package/dist/lib/node/chunk-WGMVEPB3.cjs.map +7 -0
  40. package/dist/lib/node/{chunk-UEXGNGSS.cjs → chunk-YHL4JSA6.cjs} +14 -4
  41. package/dist/lib/node/chunk-YHL4JSA6.cjs.map +7 -0
  42. package/dist/lib/node/index.cjs +23 -20
  43. package/dist/lib/node/index.cjs.map +2 -2
  44. package/dist/lib/node/{intent-resolver-NW27BF3W.cjs → intent-resolver-NX5QNRYF.cjs} +45 -9
  45. package/dist/lib/node/intent-resolver-NX5QNRYF.cjs.map +7 -0
  46. package/dist/lib/node/meta.json +1 -1
  47. package/dist/lib/node/{react-surface-5X3SMHGI.cjs → react-surface-JYGR4QB3.cjs} +15 -8
  48. package/dist/lib/node/react-surface-JYGR4QB3.cjs.map +7 -0
  49. package/dist/lib/node/{settings-S2ISUVIH.cjs → settings-2JXASSLU.cjs} +7 -7
  50. package/dist/lib/node/settings-2JXASSLU.cjs.map +7 -0
  51. package/dist/lib/node/{state-L44SG3ZM.cjs → state-PC7IVXFP.cjs} +4 -4
  52. package/dist/lib/node/{state-L44SG3ZM.cjs.map → state-PC7IVXFP.cjs.map} +2 -2
  53. package/dist/lib/node/{thread-42R57L4K.cjs → thread-MXEGV6HS.cjs} +6 -6
  54. package/dist/lib/node/types/index.cjs +8 -6
  55. package/dist/lib/node/types/index.cjs.map +2 -2
  56. package/dist/lib/node-esm/{MarkdownContainer-URAPTO37.mjs → MarkdownContainer-7T5H7ROL.mjs} +15 -12
  57. package/dist/lib/node-esm/MarkdownContainer-7T5H7ROL.mjs.map +7 -0
  58. package/dist/lib/node-esm/MarkdownPreview-MGR5BF6U.mjs +74 -0
  59. package/dist/lib/node-esm/MarkdownPreview-MGR5BF6U.mjs.map +7 -0
  60. package/dist/lib/node-esm/{app-graph-serializer-QQ2CTHOQ.mjs → app-graph-serializer-67CO7ST3.mjs} +3 -3
  61. package/dist/lib/node-esm/{artifact-definition-WRG5ZRN5.mjs → artifact-definition-KTS5M2FW.mjs} +2 -2
  62. package/dist/lib/node-esm/{chunk-F6UHVLH7.mjs → chunk-4U2F4EB7.mjs} +10 -23
  63. package/dist/lib/node-esm/chunk-4U2F4EB7.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-JNA7GQEA.mjs +22 -0
  65. package/dist/lib/node-esm/chunk-JNA7GQEA.mjs.map +7 -0
  66. package/dist/lib/node-esm/{chunk-4AM4VU3Y.mjs → chunk-NUZHKZSZ.mjs} +10 -1
  67. package/dist/lib/node-esm/chunk-NUZHKZSZ.mjs.map +7 -0
  68. package/dist/lib/node-esm/{chunk-JAVD67QP.mjs → chunk-VQA6BQGT.mjs} +5 -3
  69. package/dist/lib/node-esm/{chunk-JAVD67QP.mjs.map → chunk-VQA6BQGT.mjs.map} +2 -2
  70. package/dist/lib/node-esm/index.mjs +8 -4
  71. package/dist/lib/node-esm/index.mjs.map +2 -2
  72. package/dist/lib/node-esm/intent-resolver-XES4ZCA6.mjs +87 -0
  73. package/dist/lib/node-esm/intent-resolver-XES4ZCA6.mjs.map +7 -0
  74. package/dist/lib/node-esm/meta.json +1 -1
  75. package/dist/lib/node-esm/{react-surface-6IKC3G46.mjs → react-surface-QIMBMILA.mjs} +11 -4
  76. package/dist/lib/node-esm/react-surface-QIMBMILA.mjs.map +7 -0
  77. package/dist/lib/node-esm/{settings-ZDIFTK4N.mjs → settings-67RVIH3N.mjs} +4 -4
  78. package/dist/lib/node-esm/settings-67RVIH3N.mjs.map +7 -0
  79. package/dist/lib/node-esm/{state-DWPOKLEY.mjs → state-PNOPM4TS.mjs} +1 -1
  80. package/dist/lib/node-esm/{state-DWPOKLEY.mjs.map → state-PNOPM4TS.mjs.map} +2 -2
  81. package/dist/lib/node-esm/{thread-R2KHZD6V.mjs → thread-5U4KSBED.mjs} +2 -2
  82. package/dist/lib/node-esm/types/index.mjs +3 -1
  83. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  84. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  85. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  86. package/dist/types/src/components/{MarkdownEditor.d.ts → MarkdownEditor/MarkdownEditor.d.ts} +1 -1
  87. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -0
  88. package/dist/types/src/components/{MarkdownEditor.stories.d.ts → MarkdownEditor/MarkdownEditor.stories.d.ts} +3 -3
  89. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -0
  90. package/dist/types/src/components/MarkdownEditor/index.d.ts +2 -0
  91. package/dist/types/src/components/MarkdownEditor/index.d.ts.map +1 -0
  92. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts +6 -0
  93. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts.map +1 -0
  94. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts +191 -0
  95. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts.map +1 -0
  96. package/dist/types/src/components/MarkdownPreview/index.d.ts +4 -0
  97. package/dist/types/src/components/MarkdownPreview/index.d.ts.map +1 -0
  98. package/dist/types/src/components/{MarkdownSettings.d.ts → MarkdownSettings/MarkdownSettings.d.ts} +1 -1
  99. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -0
  100. package/dist/types/src/components/MarkdownSettings/index.d.ts +2 -0
  101. package/dist/types/src/components/MarkdownSettings/index.d.ts.map +1 -0
  102. package/dist/types/src/components/Suggestions.stories.d.ts +12 -0
  103. package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -0
  104. package/dist/types/src/components/Toolbar.stories.d.ts +2 -2
  105. package/dist/types/src/components/Toolbar.stories.d.ts.map +1 -1
  106. package/dist/types/src/components/index.d.ts +1 -0
  107. package/dist/types/src/components/index.d.ts.map +1 -1
  108. package/dist/types/src/extensions.d.ts.map +1 -1
  109. package/dist/types/src/translations.d.ts +6 -0
  110. package/dist/types/src/translations.d.ts.map +1 -1
  111. package/dist/types/src/types/schema.d.ts +421 -17
  112. package/dist/types/src/types/schema.d.ts.map +1 -1
  113. package/dist/types/src/types/types.d.ts +120 -8
  114. package/dist/types/src/types/types.d.ts.map +1 -1
  115. package/dist/types/src/util.d.ts +1 -0
  116. package/dist/types/src/util.d.ts.map +1 -1
  117. package/package.json +37 -32
  118. package/src/MarkdownPlugin.tsx +3 -3
  119. package/src/capabilities/intent-resolver.ts +38 -5
  120. package/src/capabilities/react-surface.tsx +8 -1
  121. package/src/capabilities/settings.ts +2 -2
  122. package/src/capabilities/state.ts +1 -1
  123. package/src/components/MarkdownContainer.tsx +1 -0
  124. package/src/components/{MarkdownEditor.stories.tsx → MarkdownEditor/MarkdownEditor.stories.tsx} +22 -35
  125. package/src/components/{MarkdownEditor.tsx → MarkdownEditor/MarkdownEditor.tsx} +4 -4
  126. package/src/components/MarkdownEditor/index.ts +5 -0
  127. package/src/components/MarkdownPreview/MarkdownPreview.stories.tsx +68 -0
  128. package/src/components/MarkdownPreview/MarkdownPreview.tsx +59 -0
  129. package/src/components/MarkdownPreview/index.ts +9 -0
  130. package/src/components/{MarkdownSettings.tsx → MarkdownSettings/MarkdownSettings.tsx} +2 -2
  131. package/src/components/MarkdownSettings/index.ts +5 -0
  132. package/src/components/Suggestions.stories.tsx +184 -0
  133. package/src/components/Toolbar.stories.tsx +15 -15
  134. package/src/components/index.ts +1 -0
  135. package/src/extensions.tsx +37 -32
  136. package/src/translations.ts +2 -0
  137. package/src/types/schema.ts +5 -0
  138. package/src/util.tsx +6 -2
  139. package/dist/lib/browser/MarkdownContainer-T3HU27RE.mjs.map +0 -7
  140. package/dist/lib/browser/chunk-3ULJ4FIJ.mjs.map +0 -7
  141. package/dist/lib/browser/chunk-YCJNW2RU.mjs.map +0 -7
  142. package/dist/lib/browser/intent-resolver-42GQ6HNZ.mjs +0 -50
  143. package/dist/lib/browser/intent-resolver-42GQ6HNZ.mjs.map +0 -7
  144. package/dist/lib/browser/react-surface-RQX3CPFV.mjs.map +0 -7
  145. package/dist/lib/browser/settings-GCSS3Y4Z.mjs.map +0 -7
  146. package/dist/lib/node/MarkdownContainer-6ZJIFAP6.cjs.map +0 -7
  147. package/dist/lib/node/chunk-7QVONRSI.cjs.map +0 -7
  148. package/dist/lib/node/chunk-UEXGNGSS.cjs.map +0 -7
  149. package/dist/lib/node/intent-resolver-NW27BF3W.cjs.map +0 -7
  150. package/dist/lib/node/react-surface-5X3SMHGI.cjs.map +0 -7
  151. package/dist/lib/node/settings-S2ISUVIH.cjs.map +0 -7
  152. package/dist/lib/node-esm/MarkdownContainer-URAPTO37.mjs.map +0 -7
  153. package/dist/lib/node-esm/chunk-4AM4VU3Y.mjs.map +0 -7
  154. package/dist/lib/node-esm/chunk-F6UHVLH7.mjs.map +0 -7
  155. package/dist/lib/node-esm/intent-resolver-7HOMUVHR.mjs +0 -51
  156. package/dist/lib/node-esm/intent-resolver-7HOMUVHR.mjs.map +0 -7
  157. package/dist/lib/node-esm/react-surface-6IKC3G46.mjs.map +0 -7
  158. package/dist/lib/node-esm/settings-ZDIFTK4N.mjs.map +0 -7
  159. package/dist/types/src/components/MarkdownEditor.d.ts.map +0 -1
  160. package/dist/types/src/components/MarkdownEditor.stories.d.ts.map +0 -1
  161. package/dist/types/src/components/MarkdownSettings.d.ts.map +0 -1
  162. /package/dist/lib/browser/{app-graph-serializer-NOXI4IQ5.mjs.map → app-graph-serializer-OCXP7PCK.mjs.map} +0 -0
  163. /package/dist/lib/browser/{artifact-definition-CE6J6NY4.mjs.map → artifact-definition-XTVOUMMI.mjs.map} +0 -0
  164. /package/dist/lib/browser/{thread-3QGCFNVZ.mjs.map → thread-MFKBUVCB.mjs.map} +0 -0
  165. /package/dist/lib/node/{app-graph-serializer-HKK3SEDN.cjs.map → app-graph-serializer-KBDLASRP.cjs.map} +0 -0
  166. /package/dist/lib/node/{artifact-definition-XGADFWCQ.cjs.map → artifact-definition-ADEN2KD6.cjs.map} +0 -0
  167. /package/dist/lib/node/{thread-42R57L4K.cjs.map → thread-MXEGV6HS.cjs.map} +0 -0
  168. /package/dist/lib/node-esm/{app-graph-serializer-QQ2CTHOQ.mjs.map → app-graph-serializer-67CO7ST3.mjs.map} +0 -0
  169. /package/dist/lib/node-esm/{artifact-definition-WRG5ZRN5.mjs.map → artifact-definition-KTS5M2FW.mjs.map} +0 -0
  170. /package/dist/lib/node-esm/{thread-R2KHZD6V.mjs.map → thread-5U4KSBED.mjs.map} +0 -0
@@ -24,22 +24,128 @@ export declare namespace MarkdownAction {
24
24
  messages: S.mutable<S.Array$<import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").TypedObjectFields<{
25
25
  id: import("@dxos/echo-schema").ObjectIdClass;
26
26
  created: S.SchemaClass<string, string, never>;
27
- sender: S.Struct<{
27
+ sender: S.mutable<S.Struct<{
28
28
  contact: S.optional<import("@dxos/echo-schema").Ref$<{
29
29
  readonly id: string;
30
- name?: string | undefined;
31
- identifiers: {
30
+ fields?: {
32
31
  readonly value: string;
33
- readonly type: string;
34
- }[];
32
+ readonly label: string;
33
+ readonly category?: string | undefined;
34
+ }[] | undefined;
35
+ organization?: import("@dxos/echo-schema").Ref<{
36
+ readonly id: string;
37
+ description?: string | undefined;
38
+ name?: string | undefined;
39
+ status?: "first" | "second" | "third" | "fourth" | undefined;
40
+ image?: string | undefined;
41
+ website?: string | undefined;
42
+ }> | undefined;
43
+ image?: string | undefined;
44
+ fullName?: string | undefined;
45
+ preferredName?: string | undefined;
46
+ nickname?: string | undefined;
47
+ jobTitle?: string | undefined;
48
+ department?: string | undefined;
49
+ notes?: string | undefined;
50
+ emails?: {
51
+ readonly value: string;
52
+ readonly label?: string | undefined;
53
+ }[] | undefined;
54
+ identities?: {
55
+ readonly value: string;
56
+ readonly label?: string | undefined;
57
+ }[] | undefined;
58
+ phoneNumbers?: {
59
+ readonly value: string;
60
+ readonly label?: string | undefined;
61
+ }[] | undefined;
62
+ addresses?: {
63
+ readonly value: {
64
+ readonly street?: string | undefined;
65
+ readonly extended?: string | undefined;
66
+ readonly locality?: string | undefined;
67
+ readonly region?: string | undefined;
68
+ readonly postalCode?: string | undefined;
69
+ readonly postOfficeBoxNumber?: string | undefined;
70
+ readonly country?: string | undefined;
71
+ };
72
+ readonly label?: string | undefined;
73
+ }[] | undefined;
74
+ urls?: {
75
+ readonly value: string;
76
+ readonly label?: string | undefined;
77
+ }[] | undefined;
78
+ birthday?: {
79
+ toString: () => string;
80
+ toDateString: () => string;
81
+ toTimeString: () => string;
82
+ toLocaleString: {
83
+ (): string;
84
+ (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string;
85
+ (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;
86
+ };
87
+ toLocaleDateString: {
88
+ (): string;
89
+ (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string;
90
+ (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;
91
+ };
92
+ toLocaleTimeString: {
93
+ (): string;
94
+ (locales?: string | string[], options?: Intl.DateTimeFormatOptions): string;
95
+ (locales?: Intl.LocalesArgument, options?: Intl.DateTimeFormatOptions): string;
96
+ };
97
+ valueOf: () => number;
98
+ getTime: () => number;
99
+ getFullYear: () => number;
100
+ getUTCFullYear: () => number;
101
+ getMonth: () => number;
102
+ getUTCMonth: () => number;
103
+ getDate: () => number;
104
+ getUTCDate: () => number;
105
+ getDay: () => number;
106
+ getUTCDay: () => number;
107
+ getHours: () => number;
108
+ getUTCHours: () => number;
109
+ getMinutes: () => number;
110
+ getUTCMinutes: () => number;
111
+ getSeconds: () => number;
112
+ getUTCSeconds: () => number;
113
+ getMilliseconds: () => number;
114
+ getUTCMilliseconds: () => number;
115
+ getTimezoneOffset: () => number;
116
+ setTime: (time: number) => number;
117
+ setMilliseconds: (ms: number) => number;
118
+ setUTCMilliseconds: (ms: number) => number;
119
+ setSeconds: (sec: number, ms?: number) => number;
120
+ setUTCSeconds: (sec: number, ms?: number) => number;
121
+ setMinutes: (min: number, sec?: number, ms?: number) => number;
122
+ setUTCMinutes: (min: number, sec?: number, ms?: number) => number;
123
+ setHours: (hours: number, min?: number, sec?: number, ms?: number) => number;
124
+ setUTCHours: (hours: number, min?: number, sec?: number, ms?: number) => number;
125
+ setDate: (date: number) => number;
126
+ setUTCDate: (date: number) => number;
127
+ setMonth: (month: number, date?: number) => number;
128
+ setUTCMonth: (month: number, date?: number) => number;
129
+ setFullYear: (year: number, month?: number, date?: number) => number;
130
+ setUTCFullYear: (year: number, month?: number, date?: number) => number;
131
+ toUTCString: () => string;
132
+ toISOString: () => string;
133
+ toJSON: (key?: any) => string;
134
+ [Symbol.toPrimitive]: {
135
+ (hint: "default"): string;
136
+ (hint: "string"): string;
137
+ (hint: "number"): number;
138
+ (hint: string): string | number;
139
+ };
140
+ } | undefined;
35
141
  }>>;
36
142
  identityDid: S.optional<typeof S.String>;
37
143
  identityKey: S.optional<typeof S.String>;
38
144
  email: S.optional<typeof S.String>;
39
145
  name: S.optional<typeof S.String>;
40
146
  role: S.optional<S.Literal<["user", "assistant"]>>;
41
- }>;
42
- blocks: S.Array$<S.Union<[S.mutable<S.extend<S.Struct<{
147
+ }>>;
148
+ blocks: S.mutable<S.Array$<S.Union<[S.mutable<S.extend<S.Struct<{
43
149
  pending: S.optional<typeof S.Boolean>;
44
150
  }>, S.Struct<{
45
151
  type: S.Literal<["text"]>;
@@ -69,7 +175,13 @@ export declare namespace MarkdownAction {
69
175
  }>, S.Struct<{
70
176
  type: S.Literal<["reference"]>;
71
177
  reference: import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").Expando>;
72
- }>>>]>>;
178
+ }>>>, S.mutable<S.extend<S.Struct<{
179
+ pending: S.optional<typeof S.Boolean>;
180
+ }>, S.Struct<{
181
+ type: S.Literal<["transcription"]>;
182
+ started: typeof S.String;
183
+ text: typeof S.String;
184
+ }>>>]>>>;
73
185
  properties: S.optional<S.mutable<S.Record$<typeof S.String, typeof S.Any>>>;
74
186
  }, import("@dxos/echo-schema").TypedObjectOptions>>>>;
75
187
  }, import("@dxos/echo-schema").TypedObjectOptions>>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC,OAAO,EAAE,KAAK,SAAS,EAAmB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAExF,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,yBAAiB,cAAc,CAAC;;;;;;;;;;;;;;oCAPU,EAAE,MAAM;;;0BAGtB,EAAI,QAAO,QAErC,EAAI,MAAK;4BAED,EAAG,QAAQ,QAAO,EAAI,MAC7B;4BAAc,EAAG,QAAQ,CAAE,EAAC,KAAK,EAAE,EAAE,OAAO,cAAa,EAAG,OAAO,cAC3D,EAAE,OAAO;8BAEd,EAAE,OAAO,CAAC,EAAE,MAAM,QAAQ,mBACf,cAAc,mBAE1B;mCACkB,mBAEjB;iCAEwB,EAAG,WAAW;gCAAwC,EAAG,MAAM;qCAC/E,EAAG,QACd,QAAQ,mBACD;;oCAML,CAAC;;;;;;yCAKmB,EAAG,QAAQ,QAAO,EAE3C,MAAI;yCAA4B,EAAE,QAC5B,QAAO,EAAG,MAAM;mCAAqB,EAAG,QAC9C,QAAO,EAAG,MAAM;kCAAoB,EAAG,QAAQ,QAI7C,EAFG,MAAK;kCAAqB,EAAE,QAAQ,CAAC,EAAE,OAAO;;gCAC7B,EAAG,MACvB,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM;qCAGzB,EAAG,QAAQ,QAAO,EAAI,OAAM;4BACnC,EAAG,MACP;kCAAoB,EAAG,OAAO;yCACD,EAAG,QAAQ,QACvC,EAAA,MAAK;yCAA2B,EAAG,MACnC;8BAAe,EAAG,OAAO,CAAC,EAAE,MAC5B,CAAC,EAAE,MAAM;qCACT,EAAA,QAAO,QAAO,EAAG,OAAO;4BAExB,EADG,MAAM;kCAAqB,EAAE,OAAO;yCACR,EAAG,QACrC,QAAO,EAAG,MAAM;yCAIjB,EAAC,MAAM;8BAAe,EAAG,OAAO,CAAE,EAAE,MAAK,CAAC,EAAE,MAAM;qCAAuB,EAAG,QAC1E,QAAO,EAAG,OAAO;4BAAc,EAAG,MAAM;kCAAoB,EAAG,OAAO;gCAA4B,EAAG,QAAQ,QAAO,EAAG,MAAM;oCAAsB,EAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM;sCAAwB,EAAG,OAAO;kDAA+C,EAAG,MAAM;6CAA8B,EAAG,MAAM;iCAAkB,EAAG,OAAO,CAAC,EAAE,MAAM;sCAAwB,EAAG,OAAO;4CAAuC,EAAG,MAAM;;8BAAmC,EAAG,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM;qCAAuB,EAAG,QAAQ,QAAO,EAAG,OAAO;4BAAc,EAAG,MAAM;kCAAoB,EAAG,OAAO;8CAA+C,mBAAmB;;oCAAqD,EAAG,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,QAAO,EAAG,MAAM,SAAQ,EAAG,GAAG;8BAAmB,mBAAmB;;;;;;IAnDnzB,MAAM,OAAO,MAAO,SAAQ,WAS1B;KAAG;;;;;;;;;;IAEL,MAAM,OAAO,WAAY,SAAQ,gBAM/B;KAAG;;CACN;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAGrD,MAAM,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,EAAE,YAAY,CAAA;CAAE,KAAK,SAAS,GAAG,SAAS,CAAC;AAEtG,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAE9C,MAAM,MAAM,mBAAmB,GAAG;IAEhC,kBAAkB,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAIjD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC1C,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;GAYlC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { type TypedObjectSerializer } from '@dxos/plugin-space/types';
2
2
  import { DocumentType, type MarkdownProperties } from './types';
3
3
  export declare const isMarkdownProperties: (data: unknown) => data is MarkdownProperties;
4
4
  export declare const getFallbackName: (content: string) => string;
5
+ export declare const getAbstract: (content: string) => string;
5
6
  export declare const setFallbackName: (...args: any[]) => void;
6
7
  export declare const serializer: TypedObjectSerializer<DocumentType>;
7
8
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAItE,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEhE,eAAO,MAAM,oBAAoB,SAAU,OAAO,KAAG,IAAI,IAAI,kBAKhD,CAAC;AAId,eAAO,MAAM,eAAe,YAAa,MAAM,WAE9C,CAAC;AAEF,eAAO,MAAM,eAAe,0BAKrB,CAAC;AAER,eAAO,MAAM,UAAU,EAAE,qBAAqB,CAAC,YAAY,CAY1D,CAAC"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAItE,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEhE,eAAO,MAAM,oBAAoB,SAAU,OAAO,KAAG,IAAI,IAAI,kBAKhD,CAAC;AAId,eAAO,MAAM,eAAe,YAAa,MAAM,WAE9C,CAAC;AAEF,eAAO,MAAM,WAAW,YAAa,MAAM,WAE1C,CAAC;AAEF,eAAO,MAAM,eAAe,0BAKrB,CAAC;AAER,eAAO,MAAM,UAAU,EAAE,qBAAqB,CAAC,YAAY,CAY1D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-markdown",
3
- "version": "0.8.1",
3
+ "version": "0.8.2-main.36232bc",
4
4
  "description": "DXOS Surface plugin for interacting with Markdown",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -38,30 +38,33 @@
38
38
  "@preact/signals-core": "^1.6.0",
39
39
  "effect": "3.13.3",
40
40
  "react-dropzone": "^14.2.3",
41
- "@dxos/app-framework": "0.8.1",
42
- "@dxos/echo-schema": "0.8.1",
43
- "@dxos/artifact": "0.8.1",
44
- "@dxos/async": "0.8.1",
45
- "@dxos/invariant": "0.8.1",
46
- "@dxos/keys": "0.8.1",
47
- "@dxos/local-storage": "0.8.1",
48
- "@dxos/live-object": "0.8.1",
49
- "@dxos/log": "0.8.1",
50
- "@dxos/plugin-client": "0.8.1",
51
- "@dxos/plugin-deck": "0.8.1",
52
- "@dxos/plugin-graph": "0.8.1",
53
- "@dxos/plugin-space": "0.8.1",
54
- "@dxos/plugin-attention": "0.8.1",
55
- "@dxos/plugin-theme": "0.8.1",
56
- "@dxos/react-client": "0.8.1",
57
- "@dxos/react-hooks": "0.8.1",
58
- "@dxos/react-ui-attention": "0.8.1",
59
- "@dxos/react-ui-card": "0.8.1",
60
- "@dxos/react-ui-editor": "0.8.1",
61
- "@dxos/react-ui-form": "0.8.1",
62
- "@dxos/react-ui-stack": "0.8.1",
63
- "@dxos/util": "0.8.1",
64
- "@dxos/schema": "0.8.1"
41
+ "@dxos/app-framework": "0.8.2-main.36232bc",
42
+ "@dxos/artifact": "0.8.2-main.36232bc",
43
+ "@dxos/async": "0.8.2-main.36232bc",
44
+ "@dxos/automerge": "0.8.2-main.36232bc",
45
+ "@dxos/echo-schema": "0.8.2-main.36232bc",
46
+ "@dxos/invariant": "0.8.2-main.36232bc",
47
+ "@dxos/keys": "0.8.2-main.36232bc",
48
+ "@dxos/lit-ui": "0.8.2-main.36232bc",
49
+ "@dxos/live-object": "0.8.2-main.36232bc",
50
+ "@dxos/local-storage": "0.8.2-main.36232bc",
51
+ "@dxos/log": "0.8.2-main.36232bc",
52
+ "@dxos/plugin-client": "0.8.2-main.36232bc",
53
+ "@dxos/plugin-attention": "0.8.2-main.36232bc",
54
+ "@dxos/plugin-graph": "0.8.2-main.36232bc",
55
+ "@dxos/plugin-deck": "0.8.2-main.36232bc",
56
+ "@dxos/plugin-preview": "0.8.2-main.36232bc",
57
+ "@dxos/react-hooks": "0.8.2-main.36232bc",
58
+ "@dxos/react-ui-attention": "0.8.2-main.36232bc",
59
+ "@dxos/react-client": "0.8.2-main.36232bc",
60
+ "@dxos/react-ui-card": "0.8.2-main.36232bc",
61
+ "@dxos/plugin-space": "0.8.2-main.36232bc",
62
+ "@dxos/plugin-theme": "0.8.2-main.36232bc",
63
+ "@dxos/react-ui-editor": "0.8.2-main.36232bc",
64
+ "@dxos/react-ui-stack": "0.8.2-main.36232bc",
65
+ "@dxos/schema": "0.8.2-main.36232bc",
66
+ "@dxos/react-ui-form": "0.8.2-main.36232bc",
67
+ "@dxos/util": "0.8.2-main.36232bc"
65
68
  },
66
69
  "devDependencies": {
67
70
  "@phosphor-icons/react": "^2.1.5",
@@ -70,18 +73,20 @@
70
73
  "react": "~18.2.0",
71
74
  "react-dom": "~18.2.0",
72
75
  "vite": "5.4.7",
73
- "@dxos/react-ui": "0.8.1",
74
- "@dxos/random": "0.8.1",
75
- "@dxos/react-ui-theme": "0.8.1",
76
- "@dxos/debug": "0.8.1",
77
- "@dxos/storybook-utils": "0.8.1"
76
+ "@dxos/plugin-storybook-layout": "0.8.2-main.36232bc",
77
+ "@dxos/plugin-theme": "0.8.2-main.36232bc",
78
+ "@dxos/debug": "0.8.2-main.36232bc",
79
+ "@dxos/react-ui": "0.8.2-main.36232bc",
80
+ "@dxos/random": "0.8.2-main.36232bc",
81
+ "@dxos/react-ui-theme": "0.8.2-main.36232bc",
82
+ "@dxos/storybook-utils": "0.8.2-main.36232bc"
78
83
  },
79
84
  "peerDependencies": {
80
85
  "@phosphor-icons/react": "^2.1.5",
81
86
  "react": "~18.2.0",
82
87
  "react-dom": "~18.2.0",
83
- "@dxos/react-ui": "0.8.1",
84
- "@dxos/react-ui-theme": "0.8.1"
88
+ "@dxos/react-ui-theme": "0.8.2-main.36232bc",
89
+ "@dxos/react-ui": "0.8.2-main.36232bc"
85
90
  },
86
91
  "publishConfig": {
87
92
  "access": "public"
@@ -12,13 +12,13 @@ import { translations as editorTranslations } from '@dxos/react-ui-editor';
12
12
  import { TextType } from '@dxos/schema';
13
13
 
14
14
  import {
15
+ AppGraphSerializer,
16
+ ArtifactDefinition,
17
+ IntentResolver,
15
18
  MarkdownState,
16
19
  MarkdownSettings,
17
20
  ReactSurface,
18
- IntentResolver,
19
- AppGraphSerializer,
20
21
  Thread,
21
- ArtifactDefinition,
22
22
  } from './capabilities';
23
23
  import { MarkdownEvents } from './events';
24
24
  import { meta } from './meta';
@@ -2,10 +2,21 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, contributes, createResolver, type PluginsContext } from '@dxos/app-framework';
6
- import { ObjectId } from '@dxos/echo-schema';
5
+ import {
6
+ Capabilities,
7
+ CollaborationActions,
8
+ contributes,
9
+ createResolver,
10
+ type PluginsContext,
11
+ } from '@dxos/app-framework';
12
+ import { next as A } from '@dxos/automerge/automerge';
13
+ import { isInstanceOf, ObjectId } from '@dxos/echo-schema';
7
14
  import { DXN, QueueSubspaceTags } from '@dxos/keys';
8
- import { makeRef, create, refFromDXN } from '@dxos/live-object';
15
+ import { makeRef, live, refFromDXN } from '@dxos/live-object';
16
+ import { log } from '@dxos/log';
17
+ import { ClientCapabilities } from '@dxos/plugin-client';
18
+ import { resolveRef } from '@dxos/react-client';
19
+ import { createDocAccessor } from '@dxos/react-client/echo';
9
20
  import { TextType } from '@dxos/schema';
10
21
 
11
22
  import { MarkdownCapabilities } from './capabilities';
@@ -16,9 +27,9 @@ export default (context: PluginsContext) =>
16
27
  createResolver({
17
28
  intent: MarkdownAction.Create,
18
29
  resolve: ({ name, spaceId, content }) => {
19
- const doc = create(DocumentType, {
30
+ const doc = live(DocumentType, {
20
31
  name,
21
- content: makeRef(create(TextType, { content: content ?? '' })),
32
+ content: makeRef(live(TextType, { content: content ?? '' })),
22
33
  assistantChatQueue: refFromDXN(new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, spaceId, ObjectId.random()])),
23
34
  threads: [],
24
35
  });
@@ -33,4 +44,26 @@ export default (context: PluginsContext) =>
33
44
  state.viewMode[id] = viewMode;
34
45
  },
35
46
  }),
47
+ // TODO(burdon): What is the error boundary for intents? Are errors reported back to caller?
48
+ createResolver({
49
+ intent: CollaborationActions.InsertContent,
50
+ resolve: async ({ spaceId, target: targetRef, object: objectRef, label }) => {
51
+ const client = context.requestCapability(ClientCapabilities.Client);
52
+ const space = client.spaces.get(spaceId);
53
+ const target = await resolveRef(client, targetRef.dxn, space);
54
+ if (target && isInstanceOf(DocumentType, target)) {
55
+ const accessor = createDocAccessor(target, ['content']);
56
+ // TODO(burdon): Should be a cursor that references a selected position.
57
+ const index = 0;
58
+ accessor.handle.change((doc) => {
59
+ // TODO(burdon): Throws error:
60
+ // intent-dispatcher.ts:270 Cannot read properties of undefined (reading 'annotations') (FiberFailure) TypeError: Cannot read properties of undefined (reading 'annotations')
61
+ const ref = `[${label ?? 'Generated content'}]](${objectRef.dxn.toString()})\n`;
62
+ A.splice(doc, accessor.path.slice(), index, 0, ref);
63
+ });
64
+ } else {
65
+ log.warn('target is not a document', { targetRef, objectRef });
66
+ }
67
+ },
68
+ }),
36
69
  ]);
@@ -11,7 +11,7 @@ import { fullyQualifiedId } from '@dxos/react-client/echo';
11
11
  import { TextType } from '@dxos/schema';
12
12
 
13
13
  import { MarkdownCapabilities } from './capabilities';
14
- import { MarkdownContainer, MarkdownSettings } from '../components';
14
+ import { MarkdownContainer, MarkdownSettings, MarkdownPreview } from '../components';
15
15
  import { MARKDOWN_PLUGIN } from '../meta';
16
16
  import { DocumentType, isEditorModel, type MarkdownSettingsProps } from '../types';
17
17
 
@@ -95,4 +95,11 @@ export default () =>
95
95
  data.subject instanceof SettingsStore && data.subject.prefix === MARKDOWN_PLUGIN,
96
96
  component: ({ data: { subject } }) => <MarkdownSettings settings={subject.value} />,
97
97
  }),
98
+ createSurface({
99
+ id: `${MARKDOWN_PLUGIN}/preview`,
100
+ role: 'popover',
101
+ filter: (data): data is { subject: DocumentType | TextType } =>
102
+ isInstanceOf(DocumentType, data.subject) || isInstanceOf(TextType, data.subject),
103
+ component: ({ data }) => <MarkdownPreview {...data} />,
104
+ }),
98
105
  ]);
@@ -3,13 +3,13 @@
3
3
  //
4
4
 
5
5
  import { Capabilities, contributes } from '@dxos/app-framework';
6
- import { create } from '@dxos/live-object';
6
+ import { live } from '@dxos/live-object';
7
7
 
8
8
  import { MARKDOWN_PLUGIN } from '../meta';
9
9
  import { type MarkdownSettingsProps, MarkdownSettingsSchema } from '../types';
10
10
 
11
11
  export default () => {
12
- const settings = create<MarkdownSettingsProps>({
12
+ const settings = live<MarkdownSettingsProps>({
13
13
  defaultViewMode: 'preview',
14
14
  toolbar: true,
15
15
  numberedHeadings: true,
@@ -12,7 +12,6 @@ import { type MarkdownPluginState, type MarkdownSettingsProps } from '../types';
12
12
 
13
13
  export default (context: PluginsContext) => {
14
14
  const state = new LocalStorageStore<MarkdownPluginState>(MARKDOWN_PLUGIN, { extensionProviders: [], viewMode: {} });
15
-
16
15
  state.prop({ key: 'viewMode', type: LocalStorageStore.json<{ [key: string]: EditorViewMode }>() });
17
16
 
18
17
  // TODO(wittjosiah): Fold into state.
@@ -27,5 +26,6 @@ export default (context: PluginsContext) => {
27
26
 
28
27
  const setViewMode = (id: string, viewMode: EditorViewMode) => (state.values.viewMode[id] = viewMode);
29
28
 
29
+ // Return object with methods.
30
30
  return contributes(MarkdownCapabilities.State, { state: state.values, editorState, getViewMode, setViewMode });
31
31
  };
@@ -68,6 +68,7 @@ const MarkdownContainer = ({
68
68
  />
69
69
  );
70
70
  } else {
71
+ // TODO(burdon): Normalize with above.
71
72
  return (
72
73
  <MarkdownEditor
73
74
  id={id}
@@ -10,19 +10,14 @@ import React, { useMemo } from 'react';
10
10
  import { IntentPlugin } from '@dxos/app-framework';
11
11
  import { withPluginManager } from '@dxos/app-framework/testing';
12
12
  import { createDocAccessor, createObject } from '@dxos/react-client/echo';
13
- import { Main } from '@dxos/react-ui';
14
- import { AttendableContainer } from '@dxos/react-ui-attention';
15
13
  import { withAttention } from '@dxos/react-ui-attention/testing';
16
- import { editorWithToolbarLayout, automerge, translations as editorTranslations } from '@dxos/react-ui-editor';
17
- import { topbarBlockPaddingStart } from '@dxos/react-ui-theme';
14
+ import { automerge, translations as editorTranslations } from '@dxos/react-ui-editor';
18
15
  import { withLayout, withTheme } from '@dxos/storybook-utils';
19
16
 
20
17
  import { MarkdownEditor, type MarkdownEditorProps } from './MarkdownEditor';
21
- import translations from '../translations';
18
+ import translations from '../../translations';
22
19
 
23
- const content = Array.from({ length: 100 })
24
- .map((_, i) => `Line ${i + 1}`)
25
- .join('\n');
20
+ const content = Array.from({ length: 100 }, (_, i) => `Line ${i + 1}`).join('\n');
26
21
 
27
22
  type StoryProps = MarkdownEditorProps & {
28
23
  content?: string;
@@ -32,43 +27,35 @@ type StoryProps = MarkdownEditorProps & {
32
27
  const DefaultStory = ({ content = '# Test', toolbar }: StoryProps) => {
33
28
  const doc = useMemo(() => createObject({ content }), [content]);
34
29
  const extensions = useMemo(() => [automerge(createDocAccessor(doc, ['content']))], [doc]);
35
- return (
36
- <Main.Content
37
- bounce
38
- data-toolbar={toolbar ? 'enabled' : 'disabled'}
39
- classNames={[topbarBlockPaddingStart, editorWithToolbarLayout]}
40
- >
41
- <AttendableContainer id='test'>
42
- <MarkdownEditor id='test' initialValue={doc.content} extensions={extensions} toolbar={toolbar} />
43
- </AttendableContainer>
44
- </Main.Content>
45
- );
46
- };
47
-
48
- export const Default = {
49
- args: {
50
- content,
51
- },
52
- };
53
-
54
- export const WithToolbar = {
55
- args: {
56
- content,
57
- toolbar: true,
58
- },
30
+ return <MarkdownEditor id='test' initialValue={doc.content} extensions={extensions} toolbar={toolbar} />;
59
31
  };
60
32
 
61
33
  const meta: Meta<typeof MarkdownEditor> = {
62
- title: 'plugins/plugin-markdown/EditorMain',
34
+ title: 'plugins/plugin-markdown/MarkdownEditor',
63
35
  component: MarkdownEditor,
64
36
  render: DefaultStory,
65
37
  decorators: [
66
38
  withTheme,
67
- withLayout({ tooltips: true }),
39
+ withLayout({ tooltips: true, fullscreen: true }),
68
40
  withAttention,
69
41
  withPluginManager({ plugins: [IntentPlugin()] }),
70
42
  ],
71
- parameters: { layout: 'fullscreen', translations: [...translations, ...editorTranslations] },
43
+ parameters: {
44
+ translations: [...translations, ...editorTranslations],
45
+ },
72
46
  };
73
47
 
74
48
  export default meta;
49
+
50
+ export const Default = {
51
+ args: {
52
+ content,
53
+ },
54
+ };
55
+
56
+ export const WithToolbar = {
57
+ args: {
58
+ toolbar: true,
59
+ content,
60
+ },
61
+ };
@@ -38,9 +38,9 @@ import {
38
38
  import { StackItem } from '@dxos/react-ui-stack';
39
39
  import { isNotFalsy, isNonNullable } from '@dxos/util';
40
40
 
41
- import { useSelectCurrentThread } from '../hooks';
42
- import { MARKDOWN_PLUGIN } from '../meta';
43
- import { type MarkdownPluginState } from '../types';
41
+ import { useSelectCurrentThread } from '../../hooks';
42
+ import { MARKDOWN_PLUGIN } from '../../meta';
43
+ import { type MarkdownPluginState } from '../../types';
44
44
 
45
45
  export type MarkdownEditorProps = {
46
46
  id: string;
@@ -211,7 +211,7 @@ export const MarkdownEditor = ({
211
211
  );
212
212
 
213
213
  return (
214
- <StackItem.Content toolbar={!!toolbar}>
214
+ <StackItem.Content toolbar={!!toolbar} classNames='is-full min-bs-0'>
215
215
  {toolbar && (
216
216
  <>
217
217
  <EditorToolbar
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './MarkdownEditor';
@@ -0,0 +1,68 @@
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 classNames='popover-max-width overflow-hidden'>
32
+ <MarkdownPreview subject={subject} />
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
+ };