@dxos/plugin-markdown 0.8.4-main.f9ba587 → 0.8.4-main.fd6878d

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 (197) hide show
  1. package/dist/lib/browser/{MarkdownPreview-XYP2VXI2.mjs → MarkdownCard-IMCR4A4V.mjs} +17 -17
  2. package/dist/lib/browser/MarkdownCard-IMCR4A4V.mjs.map +7 -0
  3. package/dist/lib/browser/{MarkdownContainer-BO5MZWA4.mjs → MarkdownContainer-VGJPHMVG.mjs} +274 -265
  4. package/dist/lib/browser/MarkdownContainer-VGJPHMVG.mjs.map +7 -0
  5. package/dist/lib/browser/{anchor-sort-UKJJ7ZNP.mjs → anchor-sort-AJKRIWFD.mjs} +5 -5
  6. package/dist/lib/browser/anchor-sort-AJKRIWFD.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-serializer-7DKUUZSJ.mjs → app-graph-serializer-OIS3MZX2.mjs} +10 -10
  8. package/dist/lib/browser/app-graph-serializer-OIS3MZX2.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-IKPZHFTW.mjs +30 -0
  10. package/dist/lib/browser/chunk-IKPZHFTW.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-JHH7VL52.mjs +18 -0
  12. package/dist/lib/browser/chunk-JHH7VL52.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-LFML7LC6.mjs → chunk-JMBQG2ZC.mjs} +8 -9
  14. package/dist/lib/browser/chunk-JMBQG2ZC.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-JTIGSUMB.mjs +80 -0
  16. package/dist/lib/browser/chunk-JTIGSUMB.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-LMJPXTPL.mjs +16 -0
  18. package/dist/lib/browser/chunk-LMJPXTPL.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-5JRBJCZM.mjs → chunk-MVL4K3OD.mjs} +8 -6
  20. package/dist/lib/browser/chunk-MVL4K3OD.mjs.map +7 -0
  21. package/dist/lib/browser/index.mjs +20 -22
  22. package/dist/lib/browser/index.mjs.map +3 -3
  23. package/dist/lib/browser/{intent-resolver-3MXYO3MW.mjs → intent-resolver-BLLHRSTQ.mjs} +14 -18
  24. package/dist/lib/browser/intent-resolver-BLLHRSTQ.mjs.map +7 -0
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/{react-surface-NAXBGUR3.mjs → react-surface-NL3BZR6H.mjs} +28 -25
  27. package/dist/lib/browser/react-surface-NL3BZR6H.mjs.map +7 -0
  28. package/dist/lib/browser/{settings-KN75ZQY6.mjs → settings-Z7ZV7SLC.mjs} +5 -5
  29. package/dist/lib/browser/settings-Z7ZV7SLC.mjs.map +7 -0
  30. package/dist/lib/browser/{state-LZWTAS65.mjs → state-ORTZIEJU.mjs} +7 -7
  31. package/dist/lib/browser/state-ORTZIEJU.mjs.map +7 -0
  32. package/dist/lib/browser/types/index.mjs +6 -14
  33. package/dist/lib/node-esm/{MarkdownPreview-JEXD3KSQ.mjs → MarkdownCard-JV2YDV3M.mjs} +17 -17
  34. package/dist/lib/node-esm/MarkdownCard-JV2YDV3M.mjs.map +7 -0
  35. package/dist/lib/node-esm/{MarkdownContainer-J2NVCX2H.mjs → MarkdownContainer-BJRNCXJZ.mjs} +274 -265
  36. package/dist/lib/node-esm/MarkdownContainer-BJRNCXJZ.mjs.map +7 -0
  37. package/dist/lib/node-esm/{anchor-sort-IPIS5D5B.mjs → anchor-sort-N7WEA5E3.mjs} +5 -5
  38. package/dist/lib/node-esm/anchor-sort-N7WEA5E3.mjs.map +7 -0
  39. package/dist/lib/node-esm/{app-graph-serializer-YRMRPW7A.mjs → app-graph-serializer-Q3B44VFB.mjs} +10 -10
  40. package/dist/lib/node-esm/app-graph-serializer-Q3B44VFB.mjs.map +7 -0
  41. package/dist/lib/node-esm/{chunk-ACFGXH2K.mjs → chunk-AYWAYBAY.mjs} +5 -5
  42. package/dist/lib/node-esm/chunk-AYWAYBAY.mjs.map +7 -0
  43. package/dist/lib/node-esm/chunk-H4I2FGDZ.mjs +31 -0
  44. package/dist/lib/node-esm/chunk-H4I2FGDZ.mjs.map +7 -0
  45. package/dist/lib/node-esm/chunk-H6TITL7A.mjs +20 -0
  46. package/dist/lib/node-esm/chunk-H6TITL7A.mjs.map +7 -0
  47. package/dist/lib/node-esm/{chunk-CWTFQSN7.mjs → chunk-JDMMLOB6.mjs} +8 -9
  48. package/dist/lib/node-esm/chunk-JDMMLOB6.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-KIRZFVX5.mjs +81 -0
  50. package/dist/lib/node-esm/chunk-KIRZFVX5.mjs.map +7 -0
  51. package/dist/lib/node-esm/{chunk-Q5DIKLN5.mjs → chunk-Z4XQ6C3D.mjs} +8 -6
  52. package/dist/lib/node-esm/chunk-Z4XQ6C3D.mjs.map +7 -0
  53. package/dist/lib/node-esm/index.mjs +20 -22
  54. package/dist/lib/node-esm/index.mjs.map +3 -3
  55. package/dist/lib/node-esm/{intent-resolver-BZYWV53A.mjs → intent-resolver-NHPUPSWK.mjs} +14 -18
  56. package/dist/lib/node-esm/intent-resolver-NHPUPSWK.mjs.map +7 -0
  57. package/dist/lib/node-esm/meta.json +1 -1
  58. package/dist/lib/node-esm/{react-surface-BSAGEIN6.mjs → react-surface-XJ6ODCBE.mjs} +28 -25
  59. package/dist/lib/node-esm/react-surface-XJ6ODCBE.mjs.map +7 -0
  60. package/dist/lib/node-esm/{settings-KVP7TVX7.mjs → settings-UCXEWBCT.mjs} +5 -5
  61. package/dist/lib/node-esm/settings-UCXEWBCT.mjs.map +7 -0
  62. package/dist/lib/node-esm/{state-NW3W4JCQ.mjs → state-47WSZG54.mjs} +7 -7
  63. package/dist/lib/node-esm/state-47WSZG54.mjs.map +7 -0
  64. package/dist/lib/node-esm/types/index.mjs +6 -14
  65. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  66. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/artifact-definition.d.ts +1 -1
  68. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/capabilities.d.ts +1 -1
  70. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  71. package/dist/types/src/capabilities/index.d.ts +1 -2
  72. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  74. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  75. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  76. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +7 -0
  77. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +1 -0
  78. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +42 -0
  79. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
  80. package/dist/types/src/components/MarkdownCard/index.d.ts +4 -0
  81. package/dist/types/src/components/MarkdownCard/index.d.ts.map +1 -0
  82. package/dist/types/src/components/MarkdownContainer.d.ts +5 -5
  83. package/dist/types/src/components/MarkdownContainer.d.ts.map +1 -1
  84. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +1 -1
  85. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +1 -1
  86. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  87. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  88. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +2 -2
  89. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  90. package/dist/types/src/components/Suggestions.stories.d.ts +2 -2
  91. package/dist/types/src/components/Suggestions.stories.d.ts.map +1 -1
  92. package/dist/types/src/components/Toolbar.stories.d.ts.map +1 -1
  93. package/dist/types/src/components/index.d.ts +1 -1
  94. package/dist/types/src/components/index.d.ts.map +1 -1
  95. package/dist/types/src/events.d.ts.map +1 -1
  96. package/dist/types/src/extensions.d.ts +4 -4
  97. package/dist/types/src/extensions.d.ts.map +1 -1
  98. package/dist/types/src/index.d.ts +2 -1
  99. package/dist/types/src/index.d.ts.map +1 -1
  100. package/dist/types/src/meta.d.ts +1 -1
  101. package/dist/types/src/meta.d.ts.map +1 -1
  102. package/dist/types/src/translations.d.ts +4 -2
  103. package/dist/types/src/translations.d.ts.map +1 -1
  104. package/dist/types/src/types/Markdown.d.ts +43 -0
  105. package/dist/types/src/types/Markdown.d.ts.map +1 -0
  106. package/dist/types/src/types/MarkdownAction.d.ts +42 -0
  107. package/dist/types/src/types/MarkdownAction.d.ts.map +1 -0
  108. package/dist/types/src/types/index.d.ts +2 -1
  109. package/dist/types/src/types/index.d.ts.map +1 -1
  110. package/dist/types/src/types/types.d.ts +3 -59
  111. package/dist/types/src/types/types.d.ts.map +1 -1
  112. package/dist/types/src/util.d.ts +12 -3
  113. package/dist/types/src/util.d.ts.map +1 -1
  114. package/dist/types/tsconfig.tsbuildinfo +1 -1
  115. package/package.json +43 -41
  116. package/src/MarkdownPlugin.tsx +8 -14
  117. package/src/capabilities/anchor-sort.ts +3 -3
  118. package/src/capabilities/app-graph-serializer.ts +6 -4
  119. package/src/capabilities/artifact-definition.ts +16 -13
  120. package/src/capabilities/capabilities.ts +5 -4
  121. package/src/capabilities/index.ts +0 -1
  122. package/src/capabilities/intent-resolver.ts +8 -13
  123. package/src/capabilities/react-surface.tsx +22 -20
  124. package/src/capabilities/settings.ts +3 -3
  125. package/src/capabilities/state.ts +8 -8
  126. package/src/components/MarkdownCard/MarkdownCard.stories.tsx +79 -0
  127. package/src/components/{MarkdownPreview/MarkdownPreview.tsx → MarkdownCard/MarkdownCard.tsx} +19 -15
  128. package/src/components/MarkdownCard/index.ts +9 -0
  129. package/src/components/MarkdownContainer.stories.tsx +8 -11
  130. package/src/components/MarkdownContainer.tsx +30 -16
  131. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +2 -1
  132. package/src/components/MarkdownEditor/MarkdownEditor.tsx +9 -8
  133. package/src/components/MarkdownSettings/MarkdownSettings.tsx +4 -4
  134. package/src/components/Suggestions.stories.tsx +25 -19
  135. package/src/components/Toolbar.stories.tsx +4 -5
  136. package/src/components/index.ts +1 -1
  137. package/src/events.ts +2 -2
  138. package/src/extensions.tsx +12 -12
  139. package/src/hooks/useSelectCurrentThread.tsx +3 -3
  140. package/src/index.ts +4 -1
  141. package/src/meta.ts +10 -8
  142. package/src/translations.ts +4 -2
  143. package/src/types/Markdown.ts +55 -0
  144. package/src/types/MarkdownAction.ts +31 -0
  145. package/src/types/index.ts +2 -1
  146. package/src/types/types.ts +5 -50
  147. package/src/util.tsx +20 -6
  148. package/dist/lib/browser/MarkdownContainer-BO5MZWA4.mjs.map +0 -7
  149. package/dist/lib/browser/MarkdownPreview-XYP2VXI2.mjs.map +0 -7
  150. package/dist/lib/browser/anchor-sort-UKJJ7ZNP.mjs.map +0 -7
  151. package/dist/lib/browser/app-graph-serializer-7DKUUZSJ.mjs.map +0 -7
  152. package/dist/lib/browser/artifact-definition-JSUG6XPF.mjs +0 -145
  153. package/dist/lib/browser/artifact-definition-JSUG6XPF.mjs.map +0 -7
  154. package/dist/lib/browser/chunk-5JRBJCZM.mjs.map +0 -7
  155. package/dist/lib/browser/chunk-777RIED6.mjs +0 -16
  156. package/dist/lib/browser/chunk-777RIED6.mjs.map +0 -7
  157. package/dist/lib/browser/chunk-EPTSAJZM.mjs +0 -22
  158. package/dist/lib/browser/chunk-EPTSAJZM.mjs.map +0 -7
  159. package/dist/lib/browser/chunk-IZLATPXQ.mjs +0 -20
  160. package/dist/lib/browser/chunk-IZLATPXQ.mjs.map +0 -7
  161. package/dist/lib/browser/chunk-LFML7LC6.mjs.map +0 -7
  162. package/dist/lib/browser/chunk-UANWRJZU.mjs +0 -79
  163. package/dist/lib/browser/chunk-UANWRJZU.mjs.map +0 -7
  164. package/dist/lib/browser/intent-resolver-3MXYO3MW.mjs.map +0 -7
  165. package/dist/lib/browser/react-surface-NAXBGUR3.mjs.map +0 -7
  166. package/dist/lib/browser/settings-KN75ZQY6.mjs.map +0 -7
  167. package/dist/lib/browser/state-LZWTAS65.mjs.map +0 -7
  168. package/dist/lib/node-esm/MarkdownContainer-J2NVCX2H.mjs.map +0 -7
  169. package/dist/lib/node-esm/MarkdownPreview-JEXD3KSQ.mjs.map +0 -7
  170. package/dist/lib/node-esm/anchor-sort-IPIS5D5B.mjs.map +0 -7
  171. package/dist/lib/node-esm/app-graph-serializer-YRMRPW7A.mjs.map +0 -7
  172. package/dist/lib/node-esm/artifact-definition-6C2MOHGP.mjs +0 -146
  173. package/dist/lib/node-esm/artifact-definition-6C2MOHGP.mjs.map +0 -7
  174. package/dist/lib/node-esm/chunk-ACFGXH2K.mjs.map +0 -7
  175. package/dist/lib/node-esm/chunk-CWTFQSN7.mjs.map +0 -7
  176. package/dist/lib/node-esm/chunk-CXG7GMYP.mjs +0 -24
  177. package/dist/lib/node-esm/chunk-CXG7GMYP.mjs.map +0 -7
  178. package/dist/lib/node-esm/chunk-FWKOJW6J.mjs +0 -22
  179. package/dist/lib/node-esm/chunk-FWKOJW6J.mjs.map +0 -7
  180. package/dist/lib/node-esm/chunk-JEEQLO7C.mjs +0 -80
  181. package/dist/lib/node-esm/chunk-JEEQLO7C.mjs.map +0 -7
  182. package/dist/lib/node-esm/chunk-Q5DIKLN5.mjs.map +0 -7
  183. package/dist/lib/node-esm/intent-resolver-BZYWV53A.mjs.map +0 -7
  184. package/dist/lib/node-esm/react-surface-BSAGEIN6.mjs.map +0 -7
  185. package/dist/lib/node-esm/settings-KVP7TVX7.mjs.map +0 -7
  186. package/dist/lib/node-esm/state-NW3W4JCQ.mjs.map +0 -7
  187. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts +0 -6
  188. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.d.ts.map +0 -1
  189. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts +0 -17
  190. package/dist/types/src/components/MarkdownPreview/MarkdownPreview.stories.d.ts.map +0 -1
  191. package/dist/types/src/components/MarkdownPreview/index.d.ts +0 -4
  192. package/dist/types/src/components/MarkdownPreview/index.d.ts.map +0 -1
  193. package/dist/types/src/types/schema.d.ts +0 -35
  194. package/dist/types/src/types/schema.d.ts.map +0 -1
  195. package/src/components/MarkdownPreview/MarkdownPreview.stories.tsx +0 -74
  196. package/src/components/MarkdownPreview/index.ts +0 -9
  197. package/src/types/schema.ts +0 -39
@@ -1,18 +1,18 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import "./chunk-FWKOJW6J.mjs";
2
+ import "./chunk-H6TITL7A.mjs";
3
3
  import {
4
4
  MarkdownCapabilities
5
- } from "./chunk-ACFGXH2K.mjs";
5
+ } from "./chunk-AYWAYBAY.mjs";
6
6
  import {
7
7
  getFallbackName,
8
8
  setFallbackName
9
- } from "./chunk-CWTFQSN7.mjs";
9
+ } from "./chunk-JDMMLOB6.mjs";
10
10
  import {
11
- DocumentType
12
- } from "./chunk-JEEQLO7C.mjs";
11
+ Markdown_exports
12
+ } from "./chunk-KIRZFVX5.mjs";
13
13
  import {
14
- MARKDOWN_PLUGIN
15
- } from "./chunk-CXG7GMYP.mjs";
14
+ meta
15
+ } from "./chunk-H4I2FGDZ.mjs";
16
16
 
17
17
  // src/components/MarkdownContainer.tsx
18
18
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
@@ -20,44 +20,260 @@ import { Rx } from "@effect-rx/rx-react";
20
20
  import React3, { useCallback as useCallback2, useEffect as useEffect2, useMemo as useMemo4, useState } from "react";
21
21
  import { createPortal } from "react-dom";
22
22
  import { Capabilities, Surface, useAppGraph, useCapabilities as useCapabilities2, usePluginManager } from "@dxos/app-framework";
23
- import { DXN, Filter, Obj, Query } from "@dxos/echo";
23
+ import { DXN, Filter, Obj, Query, Type } from "@dxos/echo";
24
+ import { ClientCapabilities } from "@dxos/plugin-client";
24
25
  import { SpaceCapabilities } from "@dxos/plugin-space";
25
26
  import { fullyQualifiedId as fullyQualifiedId2, getSpace as getSpace2, useQuery, useSpace } from "@dxos/react-client/echo";
26
27
  import { toLocalizedString as toLocalizedString2, useTranslation as useTranslation2 } from "@dxos/react-ui";
27
28
  import { insertAtCursor, insertAtLineStart } from "@dxos/react-ui-editor";
28
29
  import { DataType } from "@dxos/schema";
29
30
 
31
+ // src/extensions.tsx
32
+ import React, { useMemo } from "react";
33
+ import { createRoot } from "react-dom/client";
34
+ import { LayoutAction, createIntent, useCapabilities, useIntentDispatcher } from "@dxos/app-framework";
35
+ import { debounceAndThrottle } from "@dxos/async";
36
+ import { invariant } from "@dxos/invariant";
37
+ import { createDocAccessor, fullyQualifiedId, getSpace } from "@dxos/react-client/echo";
38
+ import { useIdentity } from "@dxos/react-client/halo";
39
+ import { Icon, ThemeProvider } from "@dxos/react-ui";
40
+ import { Cursor, EditorView, InputModeExtensions, autocomplete, createDataExtensions, decorateMarkdown, documentId, folding, formattingKeymap, linkTooltip, listener, preview, selectionState, typewriter } from "@dxos/react-ui-editor";
41
+ import { defaultTx } from "@dxos/react-ui-theme";
42
+ import { isNotFalsy } from "@dxos/util";
43
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/extensions.tsx";
44
+ var useExtensions = ({ document, id, text, settings, selectionManager, viewMode, editorStateStore, previewOptions }) => {
45
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
46
+ const identity = useIdentity();
47
+ const space = getSpace(document) ?? getSpace(text);
48
+ const baseExtensions = useMemo(() => createBaseExtensions({
49
+ document,
50
+ id,
51
+ text,
52
+ settings,
53
+ selectionManager,
54
+ viewMode,
55
+ previewOptions,
56
+ dispatch
57
+ }), [
58
+ document,
59
+ id,
60
+ text,
61
+ viewMode,
62
+ dispatch,
63
+ previewOptions,
64
+ settings,
65
+ settings.editorInputMode,
66
+ settings.folding,
67
+ settings.numberedHeadings,
68
+ settings.debug,
69
+ settings.typewriter,
70
+ selectionManager
71
+ ]);
72
+ const extensionProviders = useCapabilities(MarkdownCapabilities.Extensions);
73
+ const pluginExtensions = useMemo(() => {
74
+ if (!document) {
75
+ return [];
76
+ }
77
+ return extensionProviders.flat().reduce((acc, provider) => {
78
+ const extension = typeof provider === "function" ? provider({
79
+ document
80
+ }) : provider;
81
+ if (extension) {
82
+ acc.push(extension);
83
+ }
84
+ return acc;
85
+ }, []);
86
+ }, [
87
+ extensionProviders,
88
+ document
89
+ ]);
90
+ return useMemo(() => [
91
+ // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
92
+ document && createDataExtensions({
93
+ id: document.id,
94
+ text: document.content.target && createDocAccessor(document.content.target, [
95
+ "content"
96
+ ]),
97
+ space,
98
+ identity
99
+ }),
100
+ text && id && createDataExtensions({
101
+ id,
102
+ text: createDocAccessor(text, [
103
+ "content"
104
+ ]),
105
+ space,
106
+ identity
107
+ }),
108
+ selectionState(editorStateStore),
109
+ document && listener({
110
+ onChange: (text2) => setFallbackName(document, text2)
111
+ }),
112
+ baseExtensions,
113
+ pluginExtensions
114
+ ].filter(isNotFalsy), [
115
+ baseExtensions,
116
+ pluginExtensions,
117
+ document,
118
+ document?.content?.target,
119
+ text,
120
+ id,
121
+ space,
122
+ identity
123
+ ]);
124
+ };
125
+ var createBaseExtensions = ({ document, id, dispatch, settings, selectionManager, query, viewMode, previewOptions }) => {
126
+ const extensions = [
127
+ selectionManager && selectionChange(selectionManager),
128
+ settings.editorInputMode && InputModeExtensions[settings.editorInputMode],
129
+ settings.folding && folding()
130
+ ].filter(isNotFalsy);
131
+ if (viewMode !== "source") {
132
+ extensions.push(...[
133
+ formattingKeymap(),
134
+ decorateMarkdown({
135
+ selectionChangeDelay: 100,
136
+ numberedHeadings: settings.numberedHeadings ? {
137
+ from: 2
138
+ } : void 0,
139
+ // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
140
+ renderLinkButton: dispatch && (document || id) ? createLinkRenderer((id2) => {
141
+ void dispatch(createIntent(LayoutAction.Open, {
142
+ part: "main",
143
+ subject: [
144
+ id2
145
+ ],
146
+ options: {
147
+ pivotId: document ? fullyQualifiedId(document) : id2
148
+ }
149
+ }));
150
+ }) : void 0
151
+ }),
152
+ linkTooltip(renderLinkTooltip),
153
+ preview(previewOptions)
154
+ ]);
155
+ }
156
+ if (query) {
157
+ extensions.push(autocomplete({
158
+ onSearch: (text) => {
159
+ return query.objects.map((object) => object.name?.length && object.id !== document?.id ? {
160
+ label: object.name,
161
+ // TODO(burdon): Factor out URL builder.
162
+ apply: `[${object.name}](/${fullyQualifiedId(object)})`
163
+ } : void 0).filter(isNotFalsy);
164
+ }
165
+ }));
166
+ }
167
+ if (settings.debug) {
168
+ const items = settings.typewriter?.split(/[,\n]/) ?? "";
169
+ if (items) {
170
+ extensions.push(typewriter({
171
+ items
172
+ }));
173
+ }
174
+ }
175
+ return extensions;
176
+ };
177
+ var selectionChange = (selectionManager) => {
178
+ return EditorView.updateListener.of(debounceAndThrottle((update) => {
179
+ if (update.selectionSet) {
180
+ const id = update.state.facet(documentId);
181
+ const cursorConverter = update.state.facet(Cursor.converter);
182
+ const selection = update.state.selection;
183
+ const ranges = selection.ranges.map((range) => ({
184
+ from: cursorConverter.toCursor(range.from),
185
+ to: cursorConverter.toCursor(range.to)
186
+ })).filter(({ from, to }) => to > from);
187
+ selectionManager.updateMultiRange(id, ranges);
188
+ }
189
+ }, 100));
190
+ };
191
+ var style = {
192
+ hover: "rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400",
193
+ icon: "inline-block leading-none mis-1 cursor-pointer"
194
+ };
195
+ var createLinkRenderer = (onSelectObject) => (el, { url }) => {
196
+ const isInternal = url.startsWith("/") || // TODO(wittjosiah): This should probably be parsed out on paste?
197
+ url.startsWith(window.location.origin);
198
+ const options = isInternal ? {
199
+ onClick: () => {
200
+ const qualifiedId = url.split("/").at(-1);
201
+ invariant(qualifiedId, "Invalid link format.", {
202
+ F: __dxlog_file,
203
+ L: 291,
204
+ S: void 0,
205
+ A: [
206
+ "qualifiedId",
207
+ "'Invalid link format.'"
208
+ ]
209
+ });
210
+ onSelectObject(qualifiedId);
211
+ }
212
+ } : {
213
+ href: url,
214
+ rel: "noreferrer",
215
+ target: "_blank"
216
+ };
217
+ renderRoot(el, /* @__PURE__ */ React.createElement("a", {
218
+ ...options,
219
+ className: style.hover
220
+ }, /* @__PURE__ */ React.createElement(Icon, {
221
+ icon: isInternal ? "ph--arrow-square-down--bold" : "ph--arrow-square-out--bold",
222
+ size: 4,
223
+ classNames: style.icon
224
+ })));
225
+ };
226
+ var renderLinkTooltip = (el, { url }) => {
227
+ const web = new URL(url);
228
+ renderRoot(el, /* @__PURE__ */ React.createElement("a", {
229
+ href: url,
230
+ rel: "noreferrer",
231
+ target: "_blank",
232
+ className: style.hover
233
+ }, web.origin, /* @__PURE__ */ React.createElement(Icon, {
234
+ icon: "ph--arrow-square-out--bold",
235
+ size: 4,
236
+ classNames: style.icon
237
+ })));
238
+ };
239
+ var renderRoot = (root, node) => {
240
+ createRoot(root).render(/* @__PURE__ */ React.createElement(ThemeProvider, {
241
+ tx: defaultTx
242
+ }, node));
243
+ return root;
244
+ };
245
+
30
246
  // src/components/MarkdownEditor/MarkdownEditor.tsx
31
247
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
32
- import React, { forwardRef, useMemo as useMemo2, useEffect, useCallback, useImperativeHandle, useRef } from "react";
248
+ import React2, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo as useMemo3, useRef } from "react";
33
249
  import { useDropzone } from "react-dropzone";
34
- import { invariant as invariant2 } from "@dxos/invariant";
250
+ import { invariant as invariant3 } from "@dxos/invariant";
35
251
  import { toLocalizedString, useThemeContext, useTranslation } from "@dxos/react-ui";
36
- import { CommandMenu, EditorToolbar, RefPopover, addLink, createElement, coreSlashCommands, createBasicExtensions, createMarkdownExtensions, createThemeExtensions, dropFile, editorGutter, editorSlots, filterItems, linkSlashCommands, processEditorPayload, stackItemContentEditorClassNames, useEditorToolbarState, useFormattingState, useTextEditor, useCommandMenu } from "@dxos/react-ui-editor";
252
+ import { CommandMenu, EditorToolbar, RefPopover, addLink, coreSlashCommands, createBasicExtensions, createElement, createMarkdownExtensions, createThemeExtensions, dropFile, editorGutter, editorSlots, filterItems, linkSlashCommands, processEditorPayload, stackItemContentEditorClassNames, useCommandMenu, useEditorToolbarState, useFormattingState, useTextEditor } from "@dxos/react-ui-editor";
37
253
  import { StackItem } from "@dxos/react-ui-stack";
38
- import { isNotFalsy, isNonNullable } from "@dxos/util";
254
+ import { isNonNullable, isNotFalsy as isNotFalsy2 } from "@dxos/util";
39
255
 
40
256
  // src/hooks/useSelectCurrentThread.tsx
41
- import { EditorView } from "@codemirror/view";
257
+ import { EditorView as EditorView2 } from "@codemirror/view";
42
258
  import { Schema } from "effect";
43
- import { useMemo } from "react";
44
- import { createResolver, LayoutAction, useIntentResolver } from "@dxos/app-framework";
45
- import { invariant } from "@dxos/invariant";
46
- import { Cursor, setSelection } from "@dxos/react-ui-editor";
47
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx";
259
+ import { useMemo as useMemo2 } from "react";
260
+ import { LayoutAction as LayoutAction2, createResolver, useIntentResolver } from "@dxos/app-framework";
261
+ import { invariant as invariant2 } from "@dxos/invariant";
262
+ import { Cursor as Cursor2, setSelection } from "@dxos/react-ui-editor";
263
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/hooks/useSelectCurrentThread.tsx";
48
264
  var useSelectCurrentThread = (editorView, documentId2) => {
49
- const scrollIntoViewResolver = useMemo(() => createResolver({
50
- intent: LayoutAction.UpdateLayout,
265
+ const scrollIntoViewResolver = useMemo2(() => createResolver({
266
+ intent: LayoutAction2.UpdateLayout,
51
267
  position: "hoist",
52
268
  filter: (data) => {
53
- if (!Schema.is(LayoutAction.ScrollIntoView.fields.input)(data)) {
269
+ if (!Schema.is(LayoutAction2.ScrollIntoView.fields.input)(data)) {
54
270
  return false;
55
271
  }
56
272
  return !!editorView && data.subject === documentId2 && !!data.options?.cursor;
57
273
  },
58
274
  resolve: ({ options: { cursor } }) => {
59
- invariant(editorView, "Editor view is not defined.", {
60
- F: __dxlog_file,
275
+ invariant2(editorView, "Editor view is not defined.", {
276
+ F: __dxlog_file2,
61
277
  L: 32,
62
278
  S: void 0,
63
279
  A: [
@@ -65,14 +281,14 @@ var useSelectCurrentThread = (editorView, documentId2) => {
65
281
  "'Editor view is not defined.'"
66
282
  ]
67
283
  });
68
- const range = Cursor.getRangeFromCursor(editorView.state, cursor);
284
+ const range = Cursor2.getRangeFromCursor(editorView.state, cursor);
69
285
  if (range) {
70
286
  const selection = editorView.state.selection.main.from !== range.from ? {
71
287
  anchor: range.from
72
288
  } : void 0;
73
289
  const effects = [
74
290
  // NOTE: This does not use the DOM scrollIntoView function.
75
- EditorView.scrollIntoView(range.from, {
291
+ EditorView2.scrollIntoView(range.from, {
76
292
  y: "start",
77
293
  yMargin: 96
78
294
  })
@@ -94,11 +310,11 @@ var useSelectCurrentThread = (editorView, documentId2) => {
94
310
  documentId2,
95
311
  editorView
96
312
  ]);
97
- useIntentResolver(MARKDOWN_PLUGIN, scrollIntoViewResolver);
313
+ useIntentResolver(meta.id, scrollIntoViewResolver);
98
314
  };
99
315
 
100
316
  // src/components/MarkdownEditor/MarkdownEditor.tsx
101
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditor.tsx";
317
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/components/MarkdownEditor/MarkdownEditor.tsx";
102
318
  var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery, ...props }) => {
103
319
  var _effect = _useSignals();
104
320
  try {
@@ -120,7 +336,7 @@ var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery
120
336
  onLinkQuery,
121
337
  slashCommandGroups
122
338
  ]);
123
- const options = useMemo2(() => {
339
+ const options = useMemo3(() => {
124
340
  const trigger = onLinkQuery ? [
125
341
  "/",
126
342
  "@"
@@ -153,21 +369,21 @@ var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery
153
369
  getMenu
154
370
  ]);
155
371
  const { commandMenu, groupsRef, currentItem, onSelect, ...refPopoverProps } = useCommandMenu(options);
156
- const extensions = useMemo2(() => [
372
+ const extensions = useMemo3(() => [
157
373
  _extensions,
158
374
  commandMenu
159
- ].filter(isNotFalsy), [
375
+ ].filter(isNotFalsy2), [
160
376
  _extensions,
161
377
  commandMenu
162
378
  ]);
163
- return /* @__PURE__ */ React.createElement(RefPopover, {
379
+ return /* @__PURE__ */ React2.createElement(RefPopover, {
164
380
  modal: false,
165
381
  ...refPopoverProps
166
- }, /* @__PURE__ */ React.createElement(MarkdownEditorImpl, {
382
+ }, /* @__PURE__ */ React2.createElement(MarkdownEditorImpl, {
167
383
  ref: viewRef,
168
384
  ...props,
169
385
  extensions
170
- }), /* @__PURE__ */ React.createElement(CommandMenu, {
386
+ }), /* @__PURE__ */ React2.createElement(CommandMenu, {
171
387
  groups: groupsRef.current,
172
388
  currentItem,
173
389
  onSelect
@@ -179,16 +395,16 @@ var MarkdownEditor = ({ extensions: _extensions, slashCommandGroups, onLinkQuery
179
395
  var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", initialValue, customActions, editorStateStore, extensions, extensionProviders, scrollPastEnd, toolbar, viewMode, onFileUpload, onViewModeChange }, forwardedRef) => {
180
396
  var _effect = _useSignals();
181
397
  try {
182
- const { t } = useTranslation(MARKDOWN_PLUGIN);
398
+ const { t } = useTranslation(meta.id);
183
399
  const { themeMode } = useThemeContext();
184
400
  const toolbarState = useEditorToolbarState({
185
401
  viewMode
186
402
  });
187
403
  const formattingObserver = useFormattingState(toolbarState);
188
- const { scrollTo, selection } = useMemo2(() => editorStateStore?.getState(id) ?? {}, [
404
+ const { scrollTo, selection } = useMemo3(() => editorStateStore?.getState(id) ?? {}, [
189
405
  id
190
406
  ]);
191
- const providerExtensions = useMemo2(() => extensionProviders?.flatMap((provider) => provider({})).filter(isNonNullable), [
407
+ const providerExtensions = useMemo3(() => extensionProviders?.flatMap((provider) => provider({})).filter(isNonNullable), [
192
408
  extensionProviders
193
409
  ]);
194
410
  const handleDrop = async (view, { files }) => {
@@ -208,7 +424,8 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
208
424
  createBasicExtensions({
209
425
  readOnly: viewMode === "readonly",
210
426
  placeholder: t("editor placeholder"),
211
- scrollPastEnd: role === "section" ? false : scrollPastEnd
427
+ scrollPastEnd: role === "section" ? false : scrollPastEnd,
428
+ search: true
212
429
  }),
213
430
  createMarkdownExtensions({
214
431
  themeMode
@@ -224,7 +441,7 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
224
441
  }),
225
442
  providerExtensions,
226
443
  extensions
227
- ].filter(isNotFalsy),
444
+ ].filter(isNotFalsy2),
228
445
  ...role !== "section" && {
229
446
  id,
230
447
  scrollTo,
@@ -283,9 +500,9 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
283
500
  onFileUpload
284
501
  ]);
285
502
  const getView = useCallback(() => {
286
- invariant2(editorView, void 0, {
287
- F: __dxlog_file2,
288
- L: 240,
503
+ invariant3(editorView, void 0, {
504
+ F: __dxlog_file3,
505
+ L: 241,
289
506
  S: void 0,
290
507
  A: [
291
508
  "editorView",
@@ -307,9 +524,9 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
307
524
  }, [
308
525
  onFileUpload
309
526
  ]);
310
- return /* @__PURE__ */ React.createElement(StackItem.Content, {
527
+ return /* @__PURE__ */ React2.createElement(StackItem.Content, {
311
528
  toolbar: !!toolbar
312
- }, toolbar && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(EditorToolbar, {
529
+ }, toolbar && /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(EditorToolbar, {
313
530
  attendableId: id,
314
531
  role,
315
532
  state: toolbarState,
@@ -317,7 +534,7 @@ var MarkdownEditorImpl = /* @__PURE__ */ forwardRef(({ id, role = "article", ini
317
534
  getView,
318
535
  image: handleImageUpload,
319
536
  viewMode: handleViewModeChange
320
- }), /* @__PURE__ */ React.createElement("input", getInputProps())), /* @__PURE__ */ React.createElement("div", {
537
+ }), /* @__PURE__ */ React2.createElement("input", getInputProps())), /* @__PURE__ */ React2.createElement("div", {
321
538
  role: "none",
322
539
  ref: parentRef,
323
540
  "data-testid": "composer.markdownRoot",
@@ -341,228 +558,13 @@ var useTest = (view) => {
341
558
  ]);
342
559
  };
343
560
 
344
- // src/extensions.tsx
345
- import React2, { useMemo as useMemo3 } from "react";
346
- import { createRoot } from "react-dom/client";
347
- import { createIntent, LayoutAction as LayoutAction2, useCapabilities, useIntentDispatcher } from "@dxos/app-framework";
348
- import { debounceAndThrottle } from "@dxos/async";
349
- import { invariant as invariant3 } from "@dxos/invariant";
350
- import { createDocAccessor, fullyQualifiedId, getSpace } from "@dxos/react-client/echo";
351
- import { useIdentity } from "@dxos/react-client/halo";
352
- import { Icon, ThemeProvider } from "@dxos/react-ui";
353
- import { InputModeExtensions, createDataExtensions, autocomplete, decorateMarkdown, folding, formattingKeymap, linkTooltip, listener, preview, selectionState, typewriter, EditorView as EditorView2, documentId, Cursor as Cursor2 } from "@dxos/react-ui-editor";
354
- import { defaultTx } from "@dxos/react-ui-theme";
355
- import { isNotFalsy as isNotFalsy2 } from "@dxos/util";
356
- var __dxlog_file3 = "/__w/dxos/dxos/packages/plugins/plugin-markdown/src/extensions.tsx";
357
- var useExtensions = ({ document, id, text, settings, selectionManager, viewMode, editorStateStore, previewOptions }) => {
358
- const { dispatchPromise: dispatch } = useIntentDispatcher();
359
- const identity = useIdentity();
360
- const space = getSpace(document) ?? getSpace(text);
361
- const baseExtensions = useMemo3(() => createBaseExtensions({
362
- document,
363
- id,
364
- text,
365
- settings,
366
- selectionManager,
367
- viewMode,
368
- previewOptions,
369
- dispatch
370
- }), [
371
- document,
372
- id,
373
- text,
374
- viewMode,
375
- dispatch,
376
- previewOptions,
377
- settings,
378
- settings.editorInputMode,
379
- settings.folding,
380
- settings.numberedHeadings,
381
- settings.debug,
382
- settings.typewriter,
383
- selectionManager
384
- ]);
385
- const extensionProviders = useCapabilities(MarkdownCapabilities.Extensions);
386
- const pluginExtensions = useMemo3(() => {
387
- if (!document) {
388
- return [];
389
- }
390
- return extensionProviders.flat().reduce((acc, provider) => {
391
- const extension = typeof provider === "function" ? provider({
392
- document
393
- }) : provider;
394
- if (extension) {
395
- acc.push(extension);
396
- }
397
- return acc;
398
- }, []);
399
- }, [
400
- extensionProviders,
401
- document
402
- ]);
403
- return useMemo3(() => [
404
- // NOTE: Data extensions must be first so that automerge is updated before other extensions compute their state.
405
- document && createDataExtensions({
406
- id: document.id,
407
- text: document.content.target && createDocAccessor(document.content.target, [
408
- "content"
409
- ]),
410
- space,
411
- identity
412
- }),
413
- text && id && createDataExtensions({
414
- id,
415
- text: createDocAccessor(text, [
416
- "content"
417
- ]),
418
- space,
419
- identity
420
- }),
421
- selectionState(editorStateStore),
422
- document && listener({
423
- onChange: (text2) => setFallbackName(document, text2)
424
- }),
425
- baseExtensions,
426
- pluginExtensions
427
- ].filter(isNotFalsy2), [
428
- baseExtensions,
429
- pluginExtensions,
430
- document,
431
- document?.content?.target,
432
- text,
433
- id,
434
- space,
435
- identity
436
- ]);
437
- };
438
- var createBaseExtensions = ({ document, id, dispatch, settings, selectionManager, query, viewMode, previewOptions }) => {
439
- const extensions = [
440
- selectionManager && selectionChange(selectionManager),
441
- settings.editorInputMode && InputModeExtensions[settings.editorInputMode],
442
- settings.folding && folding()
443
- ].filter(isNotFalsy2);
444
- if (viewMode !== "source") {
445
- extensions.push(...[
446
- formattingKeymap(),
447
- decorateMarkdown({
448
- selectionChangeDelay: 100,
449
- numberedHeadings: settings.numberedHeadings ? {
450
- from: 2
451
- } : void 0,
452
- // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
453
- renderLinkButton: dispatch && (document || id) ? createLinkRenderer((id2) => {
454
- void dispatch(createIntent(LayoutAction2.Open, {
455
- part: "main",
456
- subject: [
457
- id2
458
- ],
459
- options: {
460
- pivotId: document ? fullyQualifiedId(document) : id2
461
- }
462
- }));
463
- }) : void 0
464
- }),
465
- linkTooltip(renderLinkTooltip),
466
- preview(previewOptions)
467
- ]);
468
- }
469
- if (query) {
470
- extensions.push(autocomplete({
471
- onSearch: (text) => {
472
- return query.objects.map((object) => object.name?.length && object.id !== document?.id ? {
473
- label: object.name,
474
- // TODO(burdon): Factor out URL builder.
475
- apply: `[${object.name}](/${fullyQualifiedId(object)})`
476
- } : void 0).filter(isNotFalsy2);
477
- }
478
- }));
479
- }
480
- if (settings.debug) {
481
- const items = settings.typewriter?.split(/[,\n]/) ?? "";
482
- if (items) {
483
- extensions.push(typewriter({
484
- items
485
- }));
486
- }
487
- }
488
- return extensions;
489
- };
490
- var selectionChange = (selectionManager) => {
491
- return EditorView2.updateListener.of(debounceAndThrottle((update) => {
492
- if (update.selectionSet) {
493
- const id = update.state.facet(documentId);
494
- const cursorConverter = update.state.facet(Cursor2.converter);
495
- const selection = update.state.selection;
496
- const ranges = selection.ranges.map((range) => ({
497
- from: cursorConverter.toCursor(range.from),
498
- to: cursorConverter.toCursor(range.to)
499
- })).filter(({ from, to }) => to > from);
500
- selectionManager.updateMultiRange(id, ranges);
501
- }
502
- }, 100));
503
- };
504
- var style = {
505
- hover: "rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400",
506
- icon: "inline-block leading-none mis-1 cursor-pointer"
507
- };
508
- var createLinkRenderer = (onSelectObject) => (el, { url }) => {
509
- const isInternal = url.startsWith("/") || // TODO(wittjosiah): This should probably be parsed out on paste?
510
- url.startsWith(window.location.origin);
511
- const options = isInternal ? {
512
- onClick: () => {
513
- const qualifiedId = url.split("/").at(-1);
514
- invariant3(qualifiedId, "Invalid link format.", {
515
- F: __dxlog_file3,
516
- L: 291,
517
- S: void 0,
518
- A: [
519
- "qualifiedId",
520
- "'Invalid link format.'"
521
- ]
522
- });
523
- onSelectObject(qualifiedId);
524
- }
525
- } : {
526
- href: url,
527
- rel: "noreferrer",
528
- target: "_blank"
529
- };
530
- renderRoot(el, /* @__PURE__ */ React2.createElement("a", {
531
- ...options,
532
- className: style.hover
533
- }, /* @__PURE__ */ React2.createElement(Icon, {
534
- icon: isInternal ? "ph--arrow-square-down--bold" : "ph--arrow-square-out--bold",
535
- size: 4,
536
- classNames: style.icon
537
- })));
538
- };
539
- var renderLinkTooltip = (el, { url }) => {
540
- const web = new URL(url);
541
- renderRoot(el, /* @__PURE__ */ React2.createElement("a", {
542
- href: url,
543
- rel: "noreferrer",
544
- target: "_blank",
545
- className: style.hover
546
- }, web.origin, /* @__PURE__ */ React2.createElement(Icon, {
547
- icon: "ph--arrow-square-out--bold",
548
- size: 4,
549
- classNames: style.icon
550
- })));
551
- };
552
- var renderRoot = (root, node) => {
553
- createRoot(root).render(/* @__PURE__ */ React2.createElement(ThemeProvider, {
554
- tx: defaultTx
555
- }, node));
556
- return root;
557
- };
558
-
559
561
  // src/components/MarkdownContainer.tsx
560
562
  var MarkdownContainer = ({ id, role, object, settings, selectionManager, viewMode, editorStateStore, onViewModeChange }) => {
561
563
  var _effect = _useSignals2();
562
564
  try {
563
565
  const { t } = useTranslation2();
564
566
  const scrollPastEnd = role === "article";
565
- const doc = Obj.instanceOf(DocumentType, object) ? object : void 0;
567
+ const doc = Obj.instanceOf(Markdown_exports.Document, object) ? object : void 0;
566
568
  const text = Obj.instanceOf(DataType.Text, object) ? object : void 0;
567
569
  const [previewBlocks, setPreviewBlocks] = useState([]);
568
570
  const previewOptions = useMemo4(() => ({
@@ -595,16 +597,22 @@ var MarkdownContainer = ({ id, role, object, settings, selectionManager, viewMod
595
597
  ]);
596
598
  const space = getSpace2(object);
597
599
  const objectForms = useCapabilities2(SpaceCapabilities.ObjectForm);
598
- const filter = useMemo4(() => Filter.or(...objectForms.map((form) => Filter.type(form.objectSchema))), [
599
- objectForms
600
+ const schemaWhiteList = useCapabilities2(ClientCapabilities.SchemaWhiteList);
601
+ const filter = useMemo4(() => Filter.or(...objectForms.map((form) => Filter.type(form.objectSchema)), ...schemaWhiteList.flat().map((schema) => Filter.typename(Type.getTypename(schema)))), [
602
+ objectForms,
603
+ schemaWhiteList
600
604
  ]);
601
605
  const onLinkQuery = useCallback2(async (query) => {
602
606
  const name = query?.startsWith("@") ? query.slice(1).toLowerCase() : query?.toLowerCase() ?? "";
603
607
  const results = await space?.db.query(Query.select(filter)).run();
604
608
  const getLabel = (object2) => {
609
+ const label = Obj.getLabel(object2);
610
+ if (label) {
611
+ return label;
612
+ }
605
613
  const type = Obj.getTypename(object2);
606
614
  const metadata = resolve(type);
607
- return metadata.label?.(object2) || object2.name || [
615
+ return metadata.label?.(object2) || [
608
616
  "object name placeholder",
609
617
  {
610
618
  ns: type,
@@ -700,7 +708,7 @@ var PreviewBlock = ({ link, el }) => {
700
708
  subject
701
709
  ]);
702
710
  return /* @__PURE__ */ createPortal(/* @__PURE__ */ React3.createElement(Surface, {
703
- role: "card--document",
711
+ role: "card--transclusion",
704
712
  data,
705
713
  limit: 1
706
714
  }), el);
@@ -767,6 +775,7 @@ var DocumentEditor = ({ id, document: doc, settings, viewMode, ...props }) => {
767
775
  var MarkdownContainer_default = MarkdownContainer;
768
776
  export {
769
777
  DocumentEditor,
778
+ MarkdownContainer,
770
779
  MarkdownContainer_default as default
771
780
  };
772
- //# sourceMappingURL=MarkdownContainer-J2NVCX2H.mjs.map
781
+ //# sourceMappingURL=MarkdownContainer-BJRNCXJZ.mjs.map