@dxos/plugin-file 0.10.0 → 0.11.0

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 (174) hide show
  1. package/PLUGIN.mdl +86 -77
  2. package/dist/lib/FilePlugin.mjs +37 -0
  3. package/dist/lib/FilePlugin.mjs.map +1 -0
  4. package/dist/lib/FilePlugin.node.mjs +12 -0
  5. package/dist/lib/FilePlugin.node.mjs.map +1 -0
  6. package/dist/lib/capabilities/node.mjs +8 -0
  7. package/dist/lib/capabilities/node.mjs.map +1 -0
  8. package/dist/lib/capabilities.mjs +15 -0
  9. package/dist/lib/capabilities.mjs.map +1 -0
  10. package/dist/lib/chunk-FileArticle.mjs +62 -0
  11. package/dist/lib/chunk-FileArticle.mjs.map +1 -0
  12. package/dist/lib/chunk-create-object.mjs +28 -0
  13. package/dist/lib/chunk-create-object.mjs.map +1 -0
  14. package/dist/lib/chunk-create.mjs +78 -0
  15. package/dist/lib/chunk-create.mjs.map +1 -0
  16. package/dist/lib/chunk-edge-backend.mjs +18 -0
  17. package/dist/lib/chunk-edge-backend.mjs.map +1 -0
  18. package/dist/lib/chunk-file-uploader.mjs +37 -0
  19. package/dist/lib/chunk-file-uploader.mjs.map +1 -0
  20. package/dist/lib/chunk-inline-backend.mjs +19 -0
  21. package/dist/lib/chunk-inline-backend.mjs.map +1 -0
  22. package/dist/lib/chunk-markdown-extension.mjs +182 -0
  23. package/dist/lib/chunk-markdown-extension.mjs.map +1 -0
  24. package/dist/lib/chunk-meta.mjs +44 -0
  25. package/dist/lib/chunk-meta.mjs.map +1 -0
  26. package/dist/lib/chunk-operation-handler.mjs +11 -0
  27. package/dist/lib/chunk-operation-handler.mjs.map +1 -0
  28. package/dist/lib/chunk-react-surface.mjs +55 -0
  29. package/dist/lib/chunk-react-surface.mjs.map +1 -0
  30. package/dist/lib/chunk-read.mjs +32 -0
  31. package/dist/lib/chunk-read.mjs.map +1 -0
  32. package/dist/lib/chunk-settings.mjs +23 -0
  33. package/dist/lib/chunk-settings.mjs.map +1 -0
  34. package/dist/lib/chunk-skill-definition.mjs +10 -0
  35. package/dist/lib/chunk-skill-definition.mjs.map +1 -0
  36. package/dist/lib/chunk-skills.mjs +28 -0
  37. package/dist/lib/chunk-skills.mjs.map +1 -0
  38. package/dist/lib/chunk-types.mjs +98 -0
  39. package/dist/lib/chunk-types.mjs.map +1 -0
  40. package/dist/lib/components.mjs +57 -0
  41. package/dist/lib/components.mjs.map +1 -0
  42. package/dist/lib/containers.mjs +56 -0
  43. package/dist/lib/containers.mjs.map +1 -0
  44. package/dist/lib/index.mjs +4 -0
  45. package/dist/lib/meta.mjs +2 -0
  46. package/dist/lib/operations.mjs +7 -0
  47. package/dist/lib/operations.mjs.map +1 -0
  48. package/dist/lib/plugin.mjs +9 -0
  49. package/dist/lib/plugin.mjs.map +1 -0
  50. package/dist/lib/skills.mjs +2 -0
  51. package/dist/lib/translations.mjs +30 -0
  52. package/dist/lib/translations.mjs.map +1 -0
  53. package/dist/lib/types.mjs +2 -0
  54. package/dist/types/src/FilePlugin.d.ts.map +1 -1
  55. package/dist/types/src/FilePlugin.node.d.ts.map +1 -1
  56. package/dist/types/src/capabilities/FileUploadField.d.ts +12 -0
  57. package/dist/types/src/capabilities/FileUploadField.d.ts.map +1 -0
  58. package/dist/types/src/capabilities/create-object.d.ts +1 -1
  59. package/dist/types/src/capabilities/edge-backend.d.ts +5 -0
  60. package/dist/types/src/capabilities/edge-backend.d.ts.map +1 -0
  61. package/dist/types/src/capabilities/file-uploader.d.ts +1 -1
  62. package/dist/types/src/capabilities/file-uploader.d.ts.map +1 -1
  63. package/dist/types/src/capabilities/index.d.ts +1 -0
  64. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  65. package/dist/types/src/capabilities/inline-backend.d.ts +2 -2
  66. package/dist/types/src/capabilities/inline-backend.d.ts.map +1 -1
  67. package/dist/types/src/capabilities/markdown-extension.d.ts +1 -1
  68. package/dist/types/src/capabilities/node.d.ts +5 -0
  69. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  70. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  71. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  72. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  73. package/dist/types/src/capabilities/settings.d.ts +1 -1
  74. package/dist/types/src/components/FileInput/FileInput.d.ts.map +1 -1
  75. package/dist/types/src/components/FilePreview/FilePreview.d.ts +1 -1
  76. package/dist/types/src/components/FilePreview/FilePreview.d.ts.map +1 -1
  77. package/dist/types/src/containers/FileArticle/FileArticle.d.ts +4 -1
  78. package/dist/types/src/containers/FileArticle/FileArticle.d.ts.map +1 -1
  79. package/dist/types/src/containers/FileSettings/FileSettings.d.ts +5 -3
  80. package/dist/types/src/containers/FileSettings/FileSettings.d.ts.map +1 -1
  81. package/dist/types/src/extensions/image.d.ts +0 -2
  82. package/dist/types/src/extensions/image.d.ts.map +1 -1
  83. package/dist/types/src/operations/create.d.ts +14 -5
  84. package/dist/types/src/operations/create.d.ts.map +1 -1
  85. package/dist/types/src/operations/read.d.ts.map +1 -1
  86. package/dist/types/src/types/FileCapabilities.d.ts +10 -28
  87. package/dist/types/src/types/FileCapabilities.d.ts.map +1 -1
  88. package/dist/types/src/types/Settings.d.ts +1 -1
  89. package/dist/types/src/types/Settings.d.ts.map +1 -1
  90. package/dist/types/src/types/limits.d.ts +0 -1
  91. package/dist/types/src/types/limits.d.ts.map +1 -1
  92. package/dist/types/tsconfig.tsbuildinfo +1 -1
  93. package/dx.config.ts +10 -6
  94. package/package.json +45 -41
  95. package/src/FilePlugin.node.ts +2 -1
  96. package/src/FilePlugin.tsx +8 -1
  97. package/src/capabilities/FileUploadField.tsx +37 -0
  98. package/src/capabilities/edge-backend.ts +27 -0
  99. package/src/capabilities/file-uploader.ts +6 -4
  100. package/src/capabilities/index.ts +1 -0
  101. package/src/capabilities/inline-backend.ts +4 -21
  102. package/src/capabilities/markdown-extension.ts +3 -8
  103. package/src/capabilities/node.ts +16 -0
  104. package/src/capabilities/react-surface.ts +46 -0
  105. package/src/components/FileInput/FileInput.tsx +3 -2
  106. package/src/containers/FileArticle/FileArticle.tsx +49 -42
  107. package/src/containers/FileSettings/FileSettings.tsx +19 -14
  108. package/src/extensions/image.tsx +49 -28
  109. package/src/operations/create.test.ts +122 -32
  110. package/src/operations/create.ts +44 -24
  111. package/src/operations/read.ts +24 -6
  112. package/src/types/FileCapabilities.ts +10 -31
  113. package/src/types/Settings.ts +1 -1
  114. package/src/types/limits.ts +0 -2
  115. package/dist/lib/neutral/FileArticle-YU6NN3KN.mjs +0 -80
  116. package/dist/lib/neutral/FileArticle-YU6NN3KN.mjs.map +0 -7
  117. package/dist/lib/neutral/FilePlugin.mjs +0 -58
  118. package/dist/lib/neutral/FilePlugin.mjs.map +0 -7
  119. package/dist/lib/neutral/FilePlugin.node.mjs +0 -23
  120. package/dist/lib/neutral/FilePlugin.node.mjs.map +0 -7
  121. package/dist/lib/neutral/capabilities/index.mjs +0 -23
  122. package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
  123. package/dist/lib/neutral/chunk-DKGTSUUH.mjs +0 -8
  124. package/dist/lib/neutral/chunk-DKGTSUUH.mjs.map +0 -7
  125. package/dist/lib/neutral/chunk-GMYSEHV4.mjs +0 -40
  126. package/dist/lib/neutral/chunk-GMYSEHV4.mjs.map +0 -7
  127. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
  128. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
  129. package/dist/lib/neutral/chunk-LBZ4MCLI.mjs +0 -45
  130. package/dist/lib/neutral/chunk-LBZ4MCLI.mjs.map +0 -7
  131. package/dist/lib/neutral/chunk-YODPX62X.mjs +0 -136
  132. package/dist/lib/neutral/chunk-YODPX62X.mjs.map +0 -7
  133. package/dist/lib/neutral/chunk-ZUXUTRAJ.mjs +0 -80
  134. package/dist/lib/neutral/chunk-ZUXUTRAJ.mjs.map +0 -7
  135. package/dist/lib/neutral/components/index.mjs +0 -74
  136. package/dist/lib/neutral/components/index.mjs.map +0 -7
  137. package/dist/lib/neutral/containers/index.mjs +0 -59
  138. package/dist/lib/neutral/containers/index.mjs.map +0 -7
  139. package/dist/lib/neutral/create-IUUG7RI6.mjs +0 -17
  140. package/dist/lib/neutral/create-IUUG7RI6.mjs.map +0 -7
  141. package/dist/lib/neutral/create-object-V667G4ZL.mjs +0 -30
  142. package/dist/lib/neutral/create-object-V667G4ZL.mjs.map +0 -7
  143. package/dist/lib/neutral/file-uploader-BCJH6TUL.mjs +0 -41
  144. package/dist/lib/neutral/file-uploader-BCJH6TUL.mjs.map +0 -7
  145. package/dist/lib/neutral/index.mjs +0 -32
  146. package/dist/lib/neutral/index.mjs.map +0 -7
  147. package/dist/lib/neutral/inline-backend-FGGGDYRB.mjs +0 -37
  148. package/dist/lib/neutral/inline-backend-FGGGDYRB.mjs.map +0 -7
  149. package/dist/lib/neutral/markdown-extension-RA5YNMTW.mjs +0 -230
  150. package/dist/lib/neutral/markdown-extension-RA5YNMTW.mjs.map +0 -7
  151. package/dist/lib/neutral/meta.json +0 -1
  152. package/dist/lib/neutral/meta.mjs +0 -8
  153. package/dist/lib/neutral/meta.mjs.map +0 -7
  154. package/dist/lib/neutral/operation-handler-CPDANWGH.mjs +0 -13
  155. package/dist/lib/neutral/operation-handler-CPDANWGH.mjs.map +0 -7
  156. package/dist/lib/neutral/operations/index.mjs +0 -8
  157. package/dist/lib/neutral/operations/index.mjs.map +0 -7
  158. package/dist/lib/neutral/plugin.mjs +0 -16
  159. package/dist/lib/neutral/plugin.mjs.map +0 -7
  160. package/dist/lib/neutral/react-surface-5BXKSHD2.mjs +0 -60
  161. package/dist/lib/neutral/react-surface-5BXKSHD2.mjs.map +0 -7
  162. package/dist/lib/neutral/read-HG6CSWKR.mjs +0 -28
  163. package/dist/lib/neutral/read-HG6CSWKR.mjs.map +0 -7
  164. package/dist/lib/neutral/settings-RR3RESL2.mjs +0 -28
  165. package/dist/lib/neutral/settings-RR3RESL2.mjs.map +0 -7
  166. package/dist/lib/neutral/skill-definition-YHBGWBUS.mjs +0 -15
  167. package/dist/lib/neutral/skill-definition-YHBGWBUS.mjs.map +0 -7
  168. package/dist/lib/neutral/skills/index.mjs +0 -11
  169. package/dist/lib/neutral/skills/index.mjs.map +0 -7
  170. package/dist/lib/neutral/translations.mjs +0 -36
  171. package/dist/lib/neutral/translations.mjs.map +0 -7
  172. package/dist/lib/neutral/types/index.mjs +0 -22
  173. package/dist/lib/neutral/types/index.mjs.map +0 -7
  174. package/src/capabilities/react-surface.tsx +0 -61
@@ -1,230 +0,0 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/capabilities/markdown-extension.ts
4
- import * as Effect from "effect/Effect";
5
- import { Capability } from "@dxos/app-framework";
6
- import { MarkdownCapabilities } from "@dxos/plugin-markdown/types";
7
- import { getSpace } from "@dxos/react-client/echo";
8
- import { FileCapabilities } from "#types";
9
-
10
- // src/extensions/image.tsx
11
- import { syntaxTree } from "@codemirror/language";
12
- import { StateField } from "@codemirror/state";
13
- import { Decoration, EditorView, WidgetType } from "@codemirror/view";
14
- import React from "react";
15
- import { createRoot } from "react-dom/client";
16
- import { Filter, Obj } from "@dxos/echo";
17
- import { EID } from "@dxos/keys";
18
- import { Status, ThemeProvider } from "@dxos/react-ui";
19
- import { defaultTx } from "@dxos/react-ui";
20
- import { focusField } from "@dxos/ui-editor";
21
- import { File } from "#types";
22
- var WAIT_UNTIL_LOADER = 1500;
23
- var image = (options) => {
24
- const blobUrlCache = {};
25
- const preloaded = /* @__PURE__ */ new Set();
26
- const preload = (url) => {
27
- if (!preloaded.has(url)) {
28
- const img = document.createElement("img");
29
- img.src = url;
30
- preloaded.add(url);
31
- }
32
- };
33
- return [
34
- StateField.define({
35
- create: (state) => Decoration.set(buildDecorations({
36
- from: 0,
37
- to: state.doc.length,
38
- state,
39
- blobUrlCache,
40
- preload,
41
- options
42
- })),
43
- update: (value, tr) => {
44
- if (!tr.docChanged && !tr.selection) {
45
- return value;
46
- }
47
- const cursor = tr.state.selection.main.head;
48
- const oldCursor = tr.changes.mapPos(tr.startState.selection.main.head);
49
- let from = Math.min(cursor, oldCursor);
50
- let to = Math.max(cursor, oldCursor);
51
- tr.changes.iterChangedRanges((_fromA, _toA, fromB, toB) => {
52
- from = Math.min(from, fromB);
53
- to = Math.max(to, toB);
54
- });
55
- from = tr.state.doc.lineAt(from).from;
56
- to = tr.state.doc.lineAt(to).to;
57
- return value.map(tr.changes).update({
58
- filterFrom: from,
59
- filterTo: to,
60
- filter: () => false,
61
- add: buildDecorations({
62
- from,
63
- to,
64
- state: tr.state,
65
- blobUrlCache,
66
- preload,
67
- options
68
- })
69
- });
70
- },
71
- provide: (field) => EditorView.decorations.from(field)
72
- })
73
- ];
74
- };
75
- var buildDecorations = ({ state, from, to, blobUrlCache, preload, options: { space, resolvers } }) => {
76
- const decorations = [];
77
- const cursor = state.selection.main.head;
78
- syntaxTree(state).iterate({
79
- enter: (node) => {
80
- if (node.name !== "Image") {
81
- return;
82
- }
83
- const urlNode = node.node.getChild("URL");
84
- if (!urlNode) {
85
- return;
86
- }
87
- const hide = state.readOnly || cursor < node.from || cursor > node.to;
88
- const urlText = state.sliceDoc(urlNode.from, urlNode.to);
89
- if (!EID.isEID(urlText)) {
90
- return;
91
- }
92
- let echoUri;
93
- let echoSpaceId;
94
- try {
95
- const parsed = EID.parse(urlText);
96
- echoUri = EID.getEntityId(parsed);
97
- echoSpaceId = EID.getSpaceId(parsed);
98
- } catch {
99
- return;
100
- }
101
- if (!echoUri) {
102
- return;
103
- }
104
- if (echoSpaceId && echoSpaceId !== space.id) {
105
- return;
106
- }
107
- const cacheKey = urlText;
108
- const blobUrlPromise = (async () => {
109
- const matched = await space.db.query(Filter.id(echoUri)).first();
110
- if (!matched || !Obj.instanceOf(File.File, matched)) {
111
- return void 0;
112
- }
113
- let url;
114
- const { data } = matched;
115
- if (data._tag === "inline") {
116
- url = URL.createObjectURL(new Blob([
117
- data.bytes
118
- ], {
119
- type: matched.type
120
- }));
121
- } else if (/^(?:https?|data|blob):/i.test(data.url)) {
122
- url = data.url;
123
- } else {
124
- const resolver = resolvers.find((r) => r.test(data.url));
125
- url = await resolver?.resolve(data.url, matched, space);
126
- }
127
- if (!url) {
128
- return void 0;
129
- }
130
- blobUrlCache[cacheKey] = url;
131
- preload(url);
132
- return url;
133
- })();
134
- decorations.push(Decoration.replace({
135
- block: true,
136
- widget: new DxnImageWidget(urlText, blobUrlCache[cacheKey] ?? blobUrlPromise)
137
- }).range(hide ? node.from : node.to, node.to));
138
- },
139
- from,
140
- to
141
- });
142
- return decorations;
143
- };
144
- var createImg = (view, url) => {
145
- const img = document.createElement("img");
146
- img.setAttribute("src", url);
147
- img.setAttribute("class", "cm-image-with-loader");
148
- if (view.state.field(focusField)) {
149
- img.onload = () => img.classList.add("cm-loaded-image");
150
- } else {
151
- img.classList.add("cm-loaded-image");
152
- }
153
- return img;
154
- };
155
- var DxnImageWidget = class extends WidgetType {
156
- _dxnUrl;
157
- _url;
158
- constructor(_dxnUrl, _url) {
159
- super(), this._dxnUrl = _dxnUrl, this._url = _url;
160
- }
161
- eq(other) {
162
- return this._dxnUrl === other._dxnUrl;
163
- }
164
- toDOM(view) {
165
- if (typeof this._url === "string") {
166
- return createImg(view, this._url);
167
- }
168
- const widget = document.createElement("div");
169
- widget.className = "cm-image-wrapper";
170
- const loader = document.createElement("div");
171
- loader.className = "mx-auto transition-opacity";
172
- let loaderAdded = false;
173
- const timeout = setTimeout(() => {
174
- const root = createRoot(loader);
175
- root.render(/* @__PURE__ */ React.createElement(ThemeProvider, {
176
- tx: defaultTx
177
- }, /* @__PURE__ */ React.createElement(Status, {
178
- indeterminate: true
179
- })));
180
- widget.appendChild(loader);
181
- loaderAdded = true;
182
- }, WAIT_UNTIL_LOADER);
183
- void Promise.resolve(this._url).then((url) => {
184
- clearTimeout(timeout);
185
- if (loaderAdded) {
186
- widget.removeChild(loader);
187
- }
188
- if (url) {
189
- widget.appendChild(createImg(view, url));
190
- }
191
- }).catch(() => {
192
- clearTimeout(timeout);
193
- if (loaderAdded) {
194
- widget.removeChild(loader);
195
- }
196
- });
197
- return widget;
198
- }
199
- };
200
-
201
- // src/capabilities/markdown-extension.ts
202
- var markdown_extension_default = Capability.makeModule(Effect.fnUntraced(function* () {
203
- const capabilities = yield* Capability.Service;
204
- const provider = ({ document: document2, viewMode }) => {
205
- if (viewMode === "source") {
206
- return void 0;
207
- }
208
- if (document2) {
209
- const space = getSpace(document2);
210
- if (!space) {
211
- return void 0;
212
- }
213
- const resolvers = capabilities.getAll(FileCapabilities.UrlResolver);
214
- return [
215
- image({
216
- space,
217
- resolvers
218
- })
219
- ];
220
- }
221
- return void 0;
222
- };
223
- return Capability.contributes(MarkdownCapabilities.ExtensionProvider, [
224
- provider
225
- ]);
226
- }));
227
- export {
228
- markdown_extension_default as default
229
- };
230
- //# sourceMappingURL=markdown-extension-RA5YNMTW.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/markdown-extension.ts", "../../../src/extensions/image.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { MarkdownCapabilities, type MarkdownExtensionProvider } from '@dxos/plugin-markdown/types';\nimport { getSpace } from '@dxos/react-client/echo';\n\nimport { FileCapabilities } from '#types';\n\nimport { image } from '../extensions';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const capabilities = yield* Capability.Service;\n\n const provider: MarkdownExtensionProvider = ({ document, viewMode }) => {\n if (viewMode === 'source') {\n return undefined;\n }\n\n if (document) {\n const space = getSpace(document);\n if (!space) {\n return undefined;\n }\n const resolvers = capabilities.getAll(FileCapabilities.UrlResolver);\n return [image({ space, resolvers })];\n }\n\n return undefined;\n };\n\n return Capability.contributes(MarkdownCapabilities.ExtensionProvider, [provider]);\n }),\n);\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport { type EditorState, type Extension, type Range, StateField } from '@codemirror/state';\nimport { Decoration, EditorView, WidgetType } from '@codemirror/view';\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\n\nimport { Filter, Obj } from '@dxos/echo';\nimport { EID } from '@dxos/keys';\nimport { type Space } from '@dxos/react-client/echo';\nimport { Status, ThemeProvider } from '@dxos/react-ui';\nimport { defaultTx } from '@dxos/react-ui';\nimport { focusField } from '@dxos/ui-editor';\nimport { type MaybePromise } from '@dxos/util';\n\nimport { File, FileCapabilities } from '#types';\n\nconst WAIT_UNTIL_LOADER = 1500;\n\nexport type ImageOptions = {\n space: Space;\n resolvers: readonly FileCapabilities.UrlResolver[];\n};\n\n/**\n * Decorate `![](echo:...)` references that resolve to File objects with inline image previews.\n */\nexport const image = (options: ImageOptions): Extension[] => {\n const blobUrlCache: Record<string, string> = {};\n const preloaded = new Set<string>();\n\n const preload = (url: string) => {\n if (!preloaded.has(url)) {\n const img = document.createElement('img');\n img.src = url;\n preloaded.add(url);\n }\n };\n\n return [\n StateField.define({\n create: (state) =>\n Decoration.set(buildDecorations({ from: 0, to: state.doc.length, state, blobUrlCache, preload, options })),\n update: (value, tr) => {\n if (!tr.docChanged && !tr.selection) {\n return value;\n }\n\n const cursor = tr.state.selection.main.head;\n const oldCursor = tr.changes.mapPos(tr.startState.selection.main.head);\n let from = Math.min(cursor, oldCursor);\n let to = Math.max(cursor, oldCursor);\n tr.changes.iterChangedRanges((_fromA, _toA, fromB, toB) => {\n from = Math.min(from, fromB);\n to = Math.max(to, toB);\n });\n\n from = tr.state.doc.lineAt(from).from;\n to = tr.state.doc.lineAt(to).to;\n\n return value.map(tr.changes).update({\n filterFrom: from,\n filterTo: to,\n filter: () => false,\n add: buildDecorations({ from, to, state: tr.state, blobUrlCache, preload, options }),\n });\n },\n provide: (field) => EditorView.decorations.from(field),\n }),\n ];\n};\n\nconst buildDecorations = ({\n state,\n from,\n to,\n blobUrlCache,\n preload,\n options: { space, resolvers },\n}: {\n state: EditorState;\n from: number;\n to: number;\n blobUrlCache: Record<string, string>;\n preload: (url: string) => void;\n options: ImageOptions;\n}) => {\n const decorations: Range<Decoration>[] = [];\n const cursor = state.selection.main.head;\n syntaxTree(state).iterate({\n enter: (node) => {\n if (node.name !== 'Image') {\n return;\n }\n\n const urlNode = node.node.getChild('URL');\n if (!urlNode) {\n return;\n }\n\n const hide = state.readOnly || cursor < node.from || cursor > node.to;\n const urlText = state.sliceDoc(urlNode.from, urlNode.to);\n if (!EID.isEID(urlText)) {\n return;\n }\n\n let echoUri: string | undefined;\n let echoSpaceId: string | undefined;\n try {\n const parsed = EID.parse(urlText);\n echoUri = EID.getEntityId(parsed);\n echoSpaceId = EID.getSpaceId(parsed);\n } catch {\n return;\n }\n if (!echoUri) {\n return;\n }\n\n // Skip references to objects in other spaces.\n if (echoSpaceId && echoSpaceId !== space.id) {\n return;\n }\n\n const cacheKey = urlText;\n const blobUrlPromise = (async () => {\n const matched = await space.db.query(Filter.id(echoUri!)).first();\n if (!matched || !Obj.instanceOf(File.File, matched)) {\n return undefined;\n }\n\n let url: string | undefined;\n const { data } = matched;\n if (data._tag === 'inline') {\n url = URL.createObjectURL(new Blob([data.bytes as BlobPart], { type: matched.type }));\n } else if (/^(?:https?|data|blob):/i.test(data.url)) {\n url = data.url;\n } else {\n const resolver = resolvers.find((r) => r.test(data.url));\n url = await resolver?.resolve(data.url, matched, space);\n }\n if (!url) {\n return undefined;\n }\n blobUrlCache[cacheKey] = url;\n preload(url);\n return url;\n })();\n\n decorations.push(\n Decoration.replace({\n block: true,\n widget: new DxnImageWidget(urlText, blobUrlCache[cacheKey] ?? blobUrlPromise),\n }).range(hide ? node.from : node.to, node.to),\n );\n },\n from,\n to,\n });\n\n return decorations;\n};\n\nconst createImg = (view: EditorView, url: string) => {\n const img = document.createElement('img');\n img.setAttribute('src', url);\n img.setAttribute('class', 'cm-image-with-loader');\n if (view.state.field(focusField)) {\n img.onload = () => img.classList.add('cm-loaded-image');\n } else {\n img.classList.add('cm-loaded-image');\n }\n return img;\n};\n\nclass DxnImageWidget extends WidgetType {\n constructor(\n readonly _dxnUrl: string,\n readonly _url: MaybePromise<string | undefined>,\n ) {\n super();\n }\n\n override eq(other: this) {\n return this._dxnUrl === other._dxnUrl;\n }\n\n override toDOM(view: EditorView) {\n if (typeof this._url === 'string') {\n return createImg(view, this._url);\n }\n\n const widget = document.createElement('div');\n widget.className = 'cm-image-wrapper';\n const loader = document.createElement('div');\n loader.className = 'mx-auto transition-opacity';\n let loaderAdded = false;\n\n const timeout = setTimeout(() => {\n const root = createRoot(loader);\n root.render(\n <ThemeProvider tx={defaultTx}>\n <Status indeterminate />\n </ThemeProvider>,\n );\n widget.appendChild(loader);\n loaderAdded = true;\n }, WAIT_UNTIL_LOADER);\n\n void Promise.resolve(this._url)\n .then((url) => {\n clearTimeout(timeout);\n if (loaderAdded) {\n widget.removeChild(loader);\n }\n if (url) {\n widget.appendChild(createImg(view, url));\n }\n })\n .catch(() => {\n clearTimeout(timeout);\n if (loaderAdded) {\n widget.removeChild(loader);\n }\n });\n\n return widget;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["Effect", "Capability", "MarkdownCapabilities", "getSpace", "FileCapabilities", "syntaxTree", "StateField", "Decoration", "EditorView", "WidgetType", "React", "createRoot", "Filter", "Obj", "EID", "Status", "ThemeProvider", "defaultTx", "focusField", "File", "WAIT_UNTIL_LOADER", "image", "options", "blobUrlCache", "preloaded", "Set", "preload", "url", "has", "img", "document", "createElement", "src", "add", "define", "create", "state", "set", "buildDecorations", "from", "to", "doc", "length", "update", "value", "tr", "docChanged", "selection", "cursor", "main", "head", "oldCursor", "changes", "mapPos", "startState", "Math", "min", "max", "iterChangedRanges", "_fromA", "_toA", "fromB", "toB", "lineAt", "map", "filterFrom", "filterTo", "filter", "provide", "field", "decorations", "space", "resolvers", "iterate", "enter", "node", "name", "urlNode", "getChild", "hide", "readOnly", "urlText", "sliceDoc", "isEID", "echoUri", "echoSpaceId", "parsed", "parse", "getEntityId", "getSpaceId", "id", "cacheKey", "blobUrlPromise", "matched", "db", "query", "first", "instanceOf", "undefined", "data", "_tag", "URL", "createObjectURL", "Blob", "bytes", "type", "test", "resolver", "find", "r", "resolve", "push", "replace", "block", "widget", "DxnImageWidget", "range", "createImg", "view", "setAttribute", "onload", "classList", "_dxnUrl", "_url", "eq", "other", "toDOM", "className", "loader", "loaderAdded", "timeout", "setTimeout", "root", "render", "tx", "indeterminate", "appendChild", "Promise", "then", "clearTimeout", "removeChild", "catch", "Capability", "makeModule", "fnUntraced", "capabilities", "Service", "provider", "document", "viewMode", "undefined", "space", "getSpace", "resolvers", "getAll", "FileCapabilities", "UrlResolver", "image", "contributes", "MarkdownCapabilities", "ExtensionProvider"]
7
- }
@@ -1 +0,0 @@
1
- {"inputs":{"src/types/limits.ts":{"bytes":2018,"imports":[],"format":"esm"},"src/types/types.ts":{"bytes":2010,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"src/types/limits.ts","kind":"import-statement","original":"./limits"}],"format":"esm"},"src/types/FileCapabilities.ts":{"bytes":3801,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true}],"format":"esm"},"src/types/FileOperation.ts":{"bytes":5075,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"src/types/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/types/Settings.ts":{"bytes":1967,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true}],"format":"esm"},"src/types/index.ts":{"bytes":1129,"imports":[{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"src/types/limits.ts","kind":"import-statement","original":"./limits"},{"path":"src/types/types.ts","kind":"import-statement","original":"./types"},{"path":"src/types/FileCapabilities.ts","kind":"import-statement","original":"./FileCapabilities"},{"path":"src/types/FileOperation.ts","kind":"import-statement","original":"./FileOperation"},{"path":"src/types/Settings.ts","kind":"import-statement","original":"./Settings"}],"format":"esm"},"src/skills/file-skill.ts":{"bytes":3400,"imports":[{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/skills/index.ts":{"bytes":540,"imports":[{"path":"src/skills/file-skill.ts","kind":"import-statement","original":"./file-skill"}],"format":"esm"},"dx.config.ts":{"bytes":4699,"imports":[{"path":"@dxos/app-framework/config","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/meta.ts":{"bytes":799,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dx.config.ts","kind":"import-statement","original":"../dx.config"}],"format":"esm"},"src/index.ts":{"bytes":531,"imports":[{"path":"src/skills/index.ts","kind":"import-statement","original":"./skills"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"raw-loader:/__w/dxos/dxos/packages/plugins/plugin-file/PLUGIN.mdl":{"bytes":11090,"imports":[]},"src/FilePlugin.tsx":{"bytes":6543,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown","kind":"import-statement","external":true},{"path":"#capabilities","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true},{"path":"raw-loader:/__w/dxos/dxos/packages/plugins/plugin-file/PLUGIN.mdl","kind":"import-statement","original":"../PLUGIN.mdl?raw"}],"format":"esm"},"src/FilePlugin.node.ts":{"bytes":2294,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"#capabilities","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"format":"esm"},"src/capabilities/skill-definition.ts":{"bytes":1537,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"#skills","kind":"import-statement","external":true}],"format":"esm"},"src/capabilities/create-object.ts":{"bytes":3927,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"format":"esm"},"src/capabilities/file-uploader.ts":{"bytes":4906,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"format":"esm"},"src/operations/create.ts":{"bytes":10465,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/capabilities/inline-backend.ts":{"bytes":4755,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true},{"path":"src/operations/create.ts","kind":"import-statement","original":"../operations/create"}],"format":"esm"},"src/extensions/image.tsx":{"bytes":23983,"imports":[{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom/client","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/ui-editor","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"format":"esm"},"src/extensions/index.ts":{"bytes":369,"imports":[{"path":"src/extensions/image.tsx","kind":"import-statement","original":"./image"}],"format":"esm"},"src/capabilities/markdown-extension.ts":{"bytes":3870,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true},{"path":"src/extensions/index.ts","kind":"import-statement","original":"../extensions"}],"format":"esm"},"src/capabilities/operation-handler.ts":{"bytes":1649,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"#operations","kind":"import-statement","external":true}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":8411,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"#components","kind":"import-statement","external":true},{"path":"#containers","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"format":"esm"},"src/capabilities/settings.ts":{"bytes":3148,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"format":"esm"},"src/capabilities/index.ts":{"bytes":3287,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/skill-definition.ts","kind":"dynamic-import","original":"./skill-definition"},{"path":"src/capabilities/create-object.ts","kind":"dynamic-import","original":"./create-object"},{"path":"src/capabilities/file-uploader.ts","kind":"dynamic-import","original":"./file-uploader"},{"path":"src/capabilities/inline-backend.ts","kind":"dynamic-import","original":"./inline-backend"},{"path":"src/capabilities/markdown-extension.ts","kind":"dynamic-import","original":"./markdown-extension"},{"path":"src/capabilities/operation-handler.ts","kind":"dynamic-import","original":"./operation-handler"},{"path":"src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"},{"path":"src/capabilities/settings.ts","kind":"dynamic-import","original":"./settings"}],"format":"esm"},"src/components/FileInput/FileInput.tsx":{"bytes":5132,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"react-dropzone","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"format":"esm"},"src/components/FileInput/index.ts":{"bytes":377,"imports":[{"path":"src/components/FileInput/FileInput.tsx","kind":"import-statement","original":"./FileInput"}],"format":"esm"},"src/components/FilePreview/FilePreview.tsx":{"bytes":5027,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"format":"esm"},"src/components/FilePreview/index.ts":{"bytes":387,"imports":[{"path":"src/components/FilePreview/FilePreview.tsx","kind":"import-statement","original":"./FilePreview"}],"format":"esm"},"src/components/index.ts":{"bytes":476,"imports":[{"path":"src/components/FileInput/index.ts","kind":"import-statement","original":"./FileInput"},{"path":"src/components/FilePreview/index.ts","kind":"import-statement","original":"./FilePreview"}],"format":"esm"},"src/containers/FileSettings/FileSettings.tsx":{"bytes":8841,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"format":"esm"},"src/containers/FileSettings/index.ts":{"bytes":388,"imports":[{"path":"src/containers/FileSettings/FileSettings.tsx","kind":"import-statement","original":"./FileSettings"}],"format":"esm"},"src/containers/FileArticle/FileArticle.tsx":{"bytes":8485,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"#components","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"format":"esm"},"src/containers/FileArticle/index.ts":{"bytes":496,"imports":[{"path":"src/containers/FileArticle/FileArticle.tsx","kind":"import-statement","original":"./FileArticle"}],"format":"esm"},"src/containers/index.ts":{"bytes":800,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/containers/FileSettings/index.ts","kind":"import-statement","original":"./FileSettings"},{"path":"src/containers/FileArticle/index.ts","kind":"dynamic-import","original":"./FileArticle"}],"format":"esm"},"src/operations/read.ts":{"bytes":3378,"imports":[{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/operations/index.ts":{"bytes":920,"imports":[{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"src/operations/create.ts","kind":"dynamic-import","original":"./create"},{"path":"src/operations/read.ts","kind":"dynamic-import","original":"./read"}],"format":"esm"},"src/plugin.ts":{"bytes":1057,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/operations/index.ts","kind":"import-statement","original":"./operations"},{"path":"#plugin","kind":"dynamic-import","external":true}],"format":"esm"},"src/translations.ts":{"bytes":4052,"imports":[{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/lib/neutral/inline-backend-FGGGDYRB.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2512},"dist/lib/neutral/inline-backend-FGGGDYRB.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-ZUXUTRAJ.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-YODPX62X.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"exports":["default","inlineBackend"],"entryPoint":"src/capabilities/inline-backend.ts","inputs":{"src/capabilities/inline-backend.ts":{"bytesInOutput":942}},"bytes":1249},"dist/lib/neutral/markdown-extension-RA5YNMTW.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":14460},"dist/lib/neutral/markdown-extension-RA5YNMTW.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true},{"path":"@codemirror/language","kind":"import-statement","external":true},{"path":"@codemirror/state","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react-dom/client","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/ui-editor","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/markdown-extension.ts","inputs":{"src/capabilities/markdown-extension.ts":{"bytesInOutput":916},"src/extensions/image.tsx":{"bytesInOutput":5670},"src/extensions/index.ts":{"bytesInOutput":0}},"bytes":6841},"dist/lib/neutral/operation-handler-CPDANWGH.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":922},"dist/lib/neutral/operation-handler-CPDANWGH.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"#operations","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/operation-handler.ts","inputs":{"src/capabilities/operation-handler.ts":{"bytesInOutput":341}},"bytes":521},"dist/lib/neutral/react-surface-5BXKSHD2.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4313},"dist/lib/neutral/react-surface-5BXKSHD2.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit/ui","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"#components","kind":"import-statement","external":true},{"path":"#containers","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":1990}},"bytes":2159},"dist/lib/neutral/settings-RR3RESL2.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1612},"dist/lib/neutral/settings-RR3RESL2.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/settings.ts","inputs":{"src/capabilities/settings.ts":{"bytesInOutput":724}},"bytes":877},"dist/lib/neutral/FileArticle-YU6NN3KN.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4426},"dist/lib/neutral/FileArticle-YU6NN3KN.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"#components","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/containers/FileArticle/index.ts","inputs":{"src/containers/FileArticle/FileArticle.tsx":{"bytesInOutput":2001},"src/containers/FileArticle/index.ts":{"bytesInOutput":0}},"bytes":2166},"dist/lib/neutral/read-HG6CSWKR.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1852},"dist/lib/neutral/read-HG6CSWKR.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-YODPX62X.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/operations/read.ts","inputs":{"src/operations/read.ts":{"bytesInOutput":659}},"bytes":862},"dist/lib/neutral/operations/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/neutral/operations/index.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-DKGTSUUH.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"}],"exports":["FileOperationHandlerSet"],"entryPoint":"src/operations/index.ts","inputs":{},"bytes":172},"dist/lib/neutral/plugin.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":498},"dist/lib/neutral/plugin.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-DKGTSUUH.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-LBZ4MCLI.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"#plugin","kind":"dynamic-import","external":true}],"exports":["FileOperationHandlerSet","FilePlugin"],"entryPoint":"src/plugin.ts","inputs":{"src/plugin.ts":{"bytesInOutput":107}},"bytes":357},"dist/lib/neutral/chunk-DKGTSUUH.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":500},"dist/lib/neutral/chunk-DKGTSUUH.mjs":{"imports":[{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"dist/lib/neutral/create-IUUG7RI6.mjs","kind":"dynamic-import"},{"path":"dist/lib/neutral/read-HG6CSWKR.mjs","kind":"dynamic-import"}],"exports":["FileOperationHandlerSet"],"inputs":{"src/operations/index.ts":{"bytesInOutput":185}},"bytes":295},"dist/lib/neutral/translations.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1914},"dist/lib/neutral/translations.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"exports":["translations"],"entryPoint":"src/translations.ts","inputs":{"src/translations.ts":{"bytesInOutput":1155}},"bytes":1279},"dist/lib/neutral/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/neutral/types/index.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-YODPX62X.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"}],"exports":["ACCEPTED_MIME","File","FileAction","FileCapabilities","FileOperation","MAX_FILE_SIZE","Settings","isAcceptedMimeType"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":469},"dist/lib/neutral/skill-definition-YHBGWBUS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":810},"dist/lib/neutral/skill-definition-YHBGWBUS.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"#skills","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/skill-definition.ts","inputs":{"src/capabilities/skill-definition.ts":{"bytesInOutput":347}},"bytes":524},"dist/lib/neutral/create-object-V667G4ZL.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2031},"dist/lib/neutral/create-object-V667G4ZL.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/create-object.ts","inputs":{"src/capabilities/create-object.ts":{"bytesInOutput":908}},"bytes":1076},"dist/lib/neutral/file-uploader-BCJH6TUL.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2517},"dist/lib/neutral/file-uploader-BCJH6TUL.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/file-uploader.ts","inputs":{"src/capabilities/file-uploader.ts":{"bytesInOutput":1196}},"bytes":1364},"dist/lib/neutral/create-IUUG7RI6.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/neutral/create-IUUG7RI6.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-ZUXUTRAJ.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-YODPX62X.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"}],"exports":["FileTooLargeError","NoBackendError","UnsupportedFileTypeError","default","resolveActiveBackend"],"entryPoint":"src/operations/create.ts","inputs":{},"bytes":386},"dist/lib/neutral/chunk-ZUXUTRAJ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5427},"dist/lib/neutral/chunk-ZUXUTRAJ.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-YODPX62X.mjs","kind":"import-statement"},{"path":"effect/Effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true}],"exports":["FileTooLargeError","NoBackendError","UnsupportedFileTypeError","create_default","resolveActiveBackend"],"inputs":{"src/operations/create.ts":{"bytesInOutput":2275}},"bytes":2628},"dist/lib/neutral/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/neutral/index.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-GMYSEHV4.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-YODPX62X.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-LBZ4MCLI.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"}],"exports":["ACCEPTED_MIME","File","FileAction","FileCapabilities","FileOperation","FileSkill","MAX_FILE_SIZE","SKILL_KEY","Settings","isAcceptedMimeType","meta"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0}},"bytes":644},"dist/lib/neutral/FilePlugin.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":16068},"dist/lib/neutral/FilePlugin.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-markdown","kind":"import-statement","external":true},{"path":"#capabilities","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"exports":["FilePlugin","default"],"entryPoint":"src/FilePlugin.tsx","inputs":{"src/FilePlugin.tsx":{"bytesInOutput":1510},"raw-loader:/__w/dxos/dxos/packages/plugins/plugin-file/PLUGIN.mdl":{"bytesInOutput":12342}},"bytes":14097},"dist/lib/neutral/FilePlugin.node.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1207},"dist/lib/neutral/FilePlugin.node.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-toolkit","kind":"import-statement","external":true},{"path":"#capabilities","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true}],"exports":["FilePlugin","default"],"entryPoint":"src/FilePlugin.node.ts","inputs":{"src/FilePlugin.node.ts":{"bytesInOutput":512}},"bytes":678},"dist/lib/neutral/skills/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/neutral/skills/index.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-GMYSEHV4.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-YODPX62X.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"}],"exports":["FileSkill","SKILL_KEY"],"entryPoint":"src/skills/index.ts","inputs":{},"bytes":233},"dist/lib/neutral/chunk-GMYSEHV4.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1707},"dist/lib/neutral/chunk-GMYSEHV4.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-YODPX62X.mjs","kind":"import-statement"},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["SKILL_KEY","file_skill_default"],"inputs":{"src/skills/file-skill.ts":{"bytesInOutput":875},"src/skills/index.ts":{"bytesInOutput":0}},"bytes":1059},"dist/lib/neutral/chunk-YODPX62X.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8245},"dist/lib/neutral/chunk-YODPX62X.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/compute","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/types","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true}],"exports":["ACCEPTED_MIME","File","FileAction","FileCapabilities_exports","FileOperation_exports","MAX_FILE_SIZE","Settings_exports","isAcceptedMimeType"],"inputs":{"src/types/index.ts":{"bytesInOutput":45},"src/types/limits.ts":{"bytesInOutput":447},"src/types/types.ts":{"bytesInOutput":417},"src/types/FileCapabilities.ts":{"bytesInOutput":497},"src/types/FileOperation.ts":{"bytesInOutput":1334},"src/types/Settings.ts":{"bytesInOutput":533}},"bytes":3701},"dist/lib/neutral/capabilities/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1735},"dist/lib/neutral/capabilities/index.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"dist/lib/neutral/skill-definition-YHBGWBUS.mjs","kind":"dynamic-import"},{"path":"dist/lib/neutral/create-object-V667G4ZL.mjs","kind":"dynamic-import"},{"path":"dist/lib/neutral/file-uploader-BCJH6TUL.mjs","kind":"dynamic-import"},{"path":"dist/lib/neutral/inline-backend-FGGGDYRB.mjs","kind":"dynamic-import"},{"path":"dist/lib/neutral/markdown-extension-RA5YNMTW.mjs","kind":"dynamic-import"},{"path":"dist/lib/neutral/operation-handler-CPDANWGH.mjs","kind":"dynamic-import"},{"path":"dist/lib/neutral/react-surface-5BXKSHD2.mjs","kind":"dynamic-import"},{"path":"dist/lib/neutral/settings-RR3RESL2.mjs","kind":"dynamic-import"}],"exports":["CreateObject","FileUploader","InlineBackend","Markdown","OperationHandler","ReactSurface","Settings","SkillDefinition"],"entryPoint":"src/capabilities/index.ts","inputs":{"src/capabilities/index.ts":{"bytesInOutput":859}},"bytes":1095},"dist/lib/neutral/components/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5387},"dist/lib/neutral/components/index.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"react-dropzone","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["FileInput","FilePreview"],"entryPoint":"src/components/index.ts","inputs":{"src/components/FileInput/FileInput.tsx":{"bytesInOutput":1259},"src/components/FileInput/index.ts":{"bytesInOutput":0},"src/components/index.ts":{"bytesInOutput":0},"src/components/FilePreview/FilePreview.tsx":{"bytesInOutput":1190},"src/components/FilePreview/index.ts":{"bytesInOutput":0}},"bytes":2645},"dist/lib/neutral/containers/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5092},"dist/lib/neutral/containers/index.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework/ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"#meta","kind":"import-statement","external":true},{"path":"#types","kind":"import-statement","external":true},{"path":"dist/lib/neutral/FileArticle-YU6NN3KN.mjs","kind":"dynamic-import"}],"exports":["FileArticle","FileSettings"],"entryPoint":"src/containers/index.ts","inputs":{"src/containers/index.ts":{"bytesInOutput":99},"src/containers/FileSettings/FileSettings.tsx":{"bytesInOutput":2196},"src/containers/FileSettings/index.ts":{"bytesInOutput":0}},"bytes":2509},"dist/lib/neutral/meta.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/neutral/meta.mjs":{"imports":[{"path":"dist/lib/neutral/chunk-LBZ4MCLI.mjs","kind":"import-statement"},{"path":"dist/lib/neutral/chunk-J5LGTIGS.mjs","kind":"import-statement"}],"exports":["meta"],"entryPoint":"src/meta.ts","inputs":{},"bytes":131},"dist/lib/neutral/chunk-LBZ4MCLI.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2479},"dist/lib/neutral/chunk-LBZ4MCLI.mjs":{"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/app-framework/config","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["meta"],"inputs":{"src/meta.ts":{"bytesInOutput":102},"dx.config.ts":{"bytesInOutput":1664}},"bytes":1878},"dist/lib/neutral/chunk-J5LGTIGS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/neutral/chunk-J5LGTIGS.mjs":{"imports":[],"exports":["__export"],"inputs":{},"bytes":235}}}
@@ -1,8 +0,0 @@
1
- import {
2
- meta
3
- } from "./chunk-LBZ4MCLI.mjs";
4
- import "./chunk-J5LGTIGS.mjs";
5
- export {
6
- meta
7
- };
8
- //# sourceMappingURL=meta.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,13 +0,0 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/capabilities/operation-handler.ts
4
- import * as Effect from "effect/Effect";
5
- import { Capabilities, Capability } from "@dxos/app-framework";
6
- import { FileOperationHandlerSet } from "#operations";
7
- var operation_handler_default = Capability.makeModule(Effect.fnUntraced(function* () {
8
- return Capability.contributes(Capabilities.OperationHandler, FileOperationHandlerSet);
9
- }));
10
- export {
11
- operation_handler_default as default
12
- };
13
- //# sourceMappingURL=operation-handler-CPDANWGH.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/operation-handler.ts"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport type { OperationHandlerSet } from '@dxos/compute';\n\nimport { FileOperationHandlerSet } from '#operations';\n\nexport default Capability.makeModule<OperationHandlerSet.OperationHandlerSet>(\n Effect.fnUntraced(function* () {\n return Capability.contributes(Capabilities.OperationHandler, FileOperationHandlerSet);\n }),\n);\n"],
5
- "mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AAGzC,SAASC,+BAA+B;AAExC,IAAA,4BAAeD,WAAWE,WACjBC,kBAAW,aAAA;AAChB,SAAOH,WAAWI,YAAYL,aAAaM,kBAAkBJ,uBAAAA;AAC/D,CAAA,CAAA;",
6
- "names": ["Effect", "Capabilities", "Capability", "FileOperationHandlerSet", "makeModule", "fnUntraced", "contributes", "OperationHandler"]
7
- }
@@ -1,8 +0,0 @@
1
- import {
2
- FileOperationHandlerSet
3
- } from "../chunk-DKGTSUUH.mjs";
4
- import "../chunk-J5LGTIGS.mjs";
5
- export {
6
- FileOperationHandlerSet
7
- };
8
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1,16 +0,0 @@
1
- import {
2
- FileOperationHandlerSet
3
- } from "./chunk-DKGTSUUH.mjs";
4
- import {
5
- meta
6
- } from "./chunk-LBZ4MCLI.mjs";
7
- import "./chunk-J5LGTIGS.mjs";
8
-
9
- // src/plugin.ts
10
- import { Plugin } from "@dxos/app-framework";
11
- var FilePlugin = Plugin.lazy(meta, () => import("#plugin"));
12
- export {
13
- FileOperationHandlerSet,
14
- FilePlugin
15
- };
16
- //# sourceMappingURL=plugin.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/plugin.ts"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\n\nimport { meta } from './meta';\n\nexport const FilePlugin = Plugin.lazy(meta, () => import('#plugin'));\n\nexport { FileOperationHandlerSet } from './operations';\n"],
5
- "mappings": ";;;;;;;;;AAIA,SAASA,cAAc;AAIhB,IAAMC,aAAaC,OAAOC,KAAKC,MAAM,MAAM,OAAO,SAAA,CAAA;",
6
- "names": ["Plugin", "FilePlugin", "Plugin", "lazy", "meta"]
7
- }
@@ -1,60 +0,0 @@
1
- import "./chunk-J5LGTIGS.mjs";
2
-
3
- // src/capabilities/react-surface.tsx
4
- import * as Effect from "effect/Effect";
5
- import React, { useCallback } from "react";
6
- import { Capabilities, Capability } from "@dxos/app-framework";
7
- import { Surface, useSettingsState } from "@dxos/app-framework/ui";
8
- import { AppSurface } from "@dxos/app-toolkit/ui";
9
- import { SchemaEx } from "@dxos/effect";
10
- import { FileInput } from "#components";
11
- import { FileArticle, FileSettings } from "#containers";
12
- import { meta } from "#meta";
13
- import { File, FileAction } from "#types";
14
- var react_surface_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(Capabilities.ReactSurface, [
15
- Surface.create({
16
- id: "article",
17
- filter: AppSurface.oneOf(AppSurface.object(AppSurface.Article, File.File), AppSurface.object(AppSurface.Section, File.File), AppSurface.object(AppSurface.Slide, File.File)),
18
- component: ({ data, role }) => /* @__PURE__ */ React.createElement(FileArticle, {
19
- role,
20
- subject: data.subject
21
- })
22
- }),
23
- Surface.create({
24
- id: "createForm",
25
- filter: AppSurface.formInputBySchema((ast) => !!SchemaEx.findAnnotation(ast, FileAction.UploadAnnotationId)),
26
- component: ({ data, ...props }) => {
27
- const ast = data.fieldPropertyAst;
28
- if (!ast) {
29
- return null;
30
- }
31
- const inputProps = {
32
- ...props,
33
- type: ast
34
- };
35
- const handleChange = useCallback((file) => inputProps.onValueChange?.(ast, file), [
36
- ast,
37
- inputProps.onValueChange
38
- ]);
39
- return /* @__PURE__ */ React.createElement(FileInput, {
40
- schema: data.schema,
41
- onChange: handleChange
42
- });
43
- }
44
- }),
45
- Surface.create({
46
- id: "pluginSettings",
47
- filter: AppSurface.settings(AppSurface.Article, meta.profile.key),
48
- component: ({ data: { subject } }) => {
49
- const { settings, updateSettings } = useSettingsState(subject.atom);
50
- return /* @__PURE__ */ React.createElement(FileSettings, {
51
- settings,
52
- onSettingsChange: updateSettings
53
- });
54
- }
55
- })
56
- ])));
57
- export {
58
- react_surface_default as default
59
- };
60
- //# sourceMappingURL=react-surface-5BXKSHD2.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport React, { useCallback } from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface, useSettingsState } from '@dxos/app-framework/ui';\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { SchemaEx } from '@dxos/effect';\nimport { type FormFieldRendererProps } from '@dxos/react-ui-form';\n\nimport { FileInput } from '#components';\nimport { FileArticle, FileSettings } from '#containers';\nimport { meta } from '#meta';\nimport { File, FileAction, type Settings } from '#types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: 'article',\n filter: AppSurface.oneOf(\n AppSurface.object(AppSurface.Article, File.File),\n AppSurface.object(AppSurface.Section, File.File),\n AppSurface.object(AppSurface.Slide, File.File),\n ),\n component: ({ data, role }) => <FileArticle role={role} subject={data.subject} />,\n }),\n Surface.create({\n id: 'createForm',\n filter: AppSurface.formInputBySchema(\n (ast) => !!SchemaEx.findAnnotation<Record<string, string[]>>(ast, FileAction.UploadAnnotationId),\n ),\n component: ({ data, ...props }) => {\n const ast = data.fieldPropertyAst;\n if (!ast) {\n return null;\n }\n\n const inputProps = { ...props, type: ast } as unknown as FormFieldRendererProps;\n const handleChange = useCallback(\n (file: File) => inputProps.onValueChange?.(ast, file),\n [ast, inputProps.onValueChange],\n );\n\n return <FileInput schema={data.schema} onChange={handleChange} />;\n },\n }),\n Surface.create({\n id: 'pluginSettings',\n filter: AppSurface.settings(AppSurface.Article, meta.profile.key),\n component: ({ data: { subject } }) => {\n const { settings, updateSettings } = useSettingsState<Settings.Settings>(subject.atom);\n return <FileSettings settings={settings} onSettingsChange={updateSettings} />;\n },\n }),\n ]),\n ),\n);\n"],
5
- "mappings": ";;;AAIA,YAAYA,YAAY;AACxB,OAAOC,SAASC,mBAAmB;AAEnC,SAASC,cAAcC,kBAAkB;AACzC,SAASC,SAASC,wBAAwB;AAC1C,SAASC,kBAAkB;AAC3B,SAASC,gBAAgB;AAGzB,SAASC,iBAAiB;AAC1B,SAASC,aAAaC,oBAAoB;AAC1C,SAASC,YAAY;AACrB,SAASC,MAAMC,kBAAiC;AAEhD,IAAA,wBAAeV,WAAWW,WAAW,MAC5BC,eACLZ,WAAWa,YAAYd,aAAae,cAAc;EAChDb,QAAQc,OAAO;IACbC,IAAI;IACJC,QAAQd,WAAWe,MACjBf,WAAWgB,OAAOhB,WAAWiB,SAASX,KAAKA,IAAI,GAC/CN,WAAWgB,OAAOhB,WAAWkB,SAASZ,KAAKA,IAAI,GAC/CN,WAAWgB,OAAOhB,WAAWmB,OAAOb,KAAKA,IAAI,CAAA;IAE/Cc,WAAW,CAAC,EAAEC,MAAMC,KAAI,MAAO,sBAAA,cAACnB,aAAAA;MAAYmB;MAAYC,SAASF,KAAKE;;EACxE,CAAA;EACAzB,QAAQc,OAAO;IACbC,IAAI;IACJC,QAAQd,WAAWwB,kBACjB,CAACC,QAAQ,CAAC,CAACxB,SAASyB,eAAyCD,KAAKlB,WAAWoB,kBAAkB,CAAA;IAEjGP,WAAW,CAAC,EAAEC,MAAM,GAAGO,MAAAA,MAAO;AAC5B,YAAMH,MAAMJ,KAAKQ;AACjB,UAAI,CAACJ,KAAK;AACR,eAAO;MACT;AAEA,YAAMK,aAAa;QAAE,GAAGF;QAAOG,MAAMN;MAAI;AACzC,YAAMO,eAAerC,YACnB,CAACsC,SAAeH,WAAWI,gBAAgBT,KAAKQ,IAAAA,GAChD;QAACR;QAAKK,WAAWI;OAAc;AAGjC,aAAO,sBAAA,cAAChC,WAAAA;QAAUiC,QAAQd,KAAKc;QAAQC,UAAUJ;;IACnD;EACF,CAAA;EACAlC,QAAQc,OAAO;IACbC,IAAI;IACJC,QAAQd,WAAWqC,SAASrC,WAAWiB,SAASZ,KAAKiC,QAAQC,GAAG;IAChEnB,WAAW,CAAC,EAAEC,MAAM,EAAEE,QAAO,EAAE,MAAE;AAC/B,YAAM,EAAEc,UAAUG,eAAc,IAAKzC,iBAAoCwB,QAAQkB,IAAI;AACrF,aAAO,sBAAA,cAACrC,cAAAA;QAAaiC;QAAoBK,kBAAkBF;;IAC7D;EACF,CAAA;CACD,CAAA,CAAA;",
6
- "names": ["Effect", "React", "useCallback", "Capabilities", "Capability", "Surface", "useSettingsState", "AppSurface", "SchemaEx", "FileInput", "FileArticle", "FileSettings", "meta", "File", "FileAction", "makeModule", "succeed", "contributes", "ReactSurface", "create", "id", "filter", "oneOf", "object", "Article", "Section", "Slide", "component", "data", "role", "subject", "formInputBySchema", "ast", "findAnnotation", "UploadAnnotationId", "props", "fieldPropertyAst", "inputProps", "type", "handleChange", "file", "onValueChange", "schema", "onChange", "settings", "profile", "key", "updateSettings", "atom", "onSettingsChange"]
7
- }
@@ -1,28 +0,0 @@
1
- import {
2
- FileOperation_exports
3
- } from "./chunk-YODPX62X.mjs";
4
- import "./chunk-J5LGTIGS.mjs";
5
-
6
- // src/operations/read.ts
7
- import * as Effect from "effect/Effect";
8
- import { Operation } from "@dxos/compute";
9
- import { Database } from "@dxos/echo";
10
- import { ContentBlock } from "@dxos/types";
11
- var handler = FileOperation_exports.Read.pipe(Operation.withHandler(Effect.fn(function* ({ file }) {
12
- const obj = yield* Database.load(file);
13
- const url = obj.data._tag === "inline" ? `data:${obj.type};base64,${Buffer.from(obj.data.bytes).toString("base64")}` : obj.data.url;
14
- return ContentBlock.ContentBlockResult.make({
15
- content: [
16
- ContentBlock.File.make({
17
- url,
18
- name: obj.name,
19
- mediaType: obj.type
20
- })
21
- ]
22
- });
23
- })));
24
- var read_default = handler;
25
- export {
26
- read_default as default
27
- };
28
- //# sourceMappingURL=read-HG6CSWKR.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/read.ts"],
4
- "sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Operation } from '@dxos/compute';\nimport { Database } from '@dxos/echo';\nimport { ContentBlock } from '@dxos/types';\n\nimport { FileOperation } from '../types';\n\nconst handler: Operation.WithHandler<typeof FileOperation.Read> = FileOperation.Read.pipe(\n Operation.withHandler(\n Effect.fn(function* ({ file }) {\n const obj = yield* Database.load(file);\n const url =\n obj.data._tag === 'inline'\n ? `data:${obj.type};base64,${Buffer.from(obj.data.bytes).toString('base64')}`\n : obj.data.url;\n\n return ContentBlock.ContentBlockResult.make({\n content: [\n ContentBlock.File.make({\n url,\n name: obj.name,\n mediaType: obj.type,\n }),\n ],\n });\n }),\n ),\n);\n\nexport default handler;\n"],
5
- "mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,iBAAiB;AAC1B,SAASC,gBAAgB;AACzB,SAASC,oBAAoB;AAI7B,IAAMC,UAA4DC,sBAAcC,KAAKC,KACnFC,UAAUC,YACDC,UAAG,WAAW,EAAEC,KAAI,GAAE;AAC3B,QAAMC,MAAM,OAAOC,SAASC,KAAKH,IAAAA;AACjC,QAAMI,MACJH,IAAII,KAAKC,SAAS,WACd,QAAQL,IAAIM,IAAI,WAAWC,OAAOC,KAAKR,IAAII,KAAKK,KAAK,EAAEC,SAAS,QAAA,CAAA,KAChEV,IAAII,KAAKD;AAEf,SAAOQ,aAAaC,mBAAmBC,KAAK;IAC1CC,SAAS;MACPH,aAAaI,KAAKF,KAAK;QACrBV;QACAa,MAAMhB,IAAIgB;QACVC,WAAWjB,IAAIM;MACjB,CAAA;;EAEJ,CAAA;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,eAAed;",
6
- "names": ["Effect", "Operation", "Database", "ContentBlock", "handler", "FileOperation", "Read", "pipe", "Operation", "withHandler", "fn", "file", "obj", "Database", "load", "url", "data", "_tag", "type", "Buffer", "from", "bytes", "toString", "ContentBlock", "ContentBlockResult", "make", "content", "File", "name", "mediaType"]
7
- }