@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.
- package/PLUGIN.mdl +86 -77
- package/dist/lib/FilePlugin.mjs +37 -0
- package/dist/lib/FilePlugin.mjs.map +1 -0
- package/dist/lib/FilePlugin.node.mjs +12 -0
- package/dist/lib/FilePlugin.node.mjs.map +1 -0
- package/dist/lib/capabilities/node.mjs +8 -0
- package/dist/lib/capabilities/node.mjs.map +1 -0
- package/dist/lib/capabilities.mjs +15 -0
- package/dist/lib/capabilities.mjs.map +1 -0
- package/dist/lib/chunk-FileArticle.mjs +62 -0
- package/dist/lib/chunk-FileArticle.mjs.map +1 -0
- package/dist/lib/chunk-create-object.mjs +28 -0
- package/dist/lib/chunk-create-object.mjs.map +1 -0
- package/dist/lib/chunk-create.mjs +78 -0
- package/dist/lib/chunk-create.mjs.map +1 -0
- package/dist/lib/chunk-edge-backend.mjs +18 -0
- package/dist/lib/chunk-edge-backend.mjs.map +1 -0
- package/dist/lib/chunk-file-uploader.mjs +37 -0
- package/dist/lib/chunk-file-uploader.mjs.map +1 -0
- package/dist/lib/chunk-inline-backend.mjs +19 -0
- package/dist/lib/chunk-inline-backend.mjs.map +1 -0
- package/dist/lib/chunk-markdown-extension.mjs +182 -0
- package/dist/lib/chunk-markdown-extension.mjs.map +1 -0
- package/dist/lib/chunk-meta.mjs +44 -0
- package/dist/lib/chunk-meta.mjs.map +1 -0
- package/dist/lib/chunk-operation-handler.mjs +11 -0
- package/dist/lib/chunk-operation-handler.mjs.map +1 -0
- package/dist/lib/chunk-react-surface.mjs +55 -0
- package/dist/lib/chunk-react-surface.mjs.map +1 -0
- package/dist/lib/chunk-read.mjs +32 -0
- package/dist/lib/chunk-read.mjs.map +1 -0
- package/dist/lib/chunk-settings.mjs +23 -0
- package/dist/lib/chunk-settings.mjs.map +1 -0
- package/dist/lib/chunk-skill-definition.mjs +10 -0
- package/dist/lib/chunk-skill-definition.mjs.map +1 -0
- package/dist/lib/chunk-skills.mjs +28 -0
- package/dist/lib/chunk-skills.mjs.map +1 -0
- package/dist/lib/chunk-types.mjs +98 -0
- package/dist/lib/chunk-types.mjs.map +1 -0
- package/dist/lib/components.mjs +57 -0
- package/dist/lib/components.mjs.map +1 -0
- package/dist/lib/containers.mjs +56 -0
- package/dist/lib/containers.mjs.map +1 -0
- package/dist/lib/index.mjs +4 -0
- package/dist/lib/meta.mjs +2 -0
- package/dist/lib/operations.mjs +7 -0
- package/dist/lib/operations.mjs.map +1 -0
- package/dist/lib/plugin.mjs +9 -0
- package/dist/lib/plugin.mjs.map +1 -0
- package/dist/lib/skills.mjs +2 -0
- package/dist/lib/translations.mjs +30 -0
- package/dist/lib/translations.mjs.map +1 -0
- package/dist/lib/types.mjs +2 -0
- package/dist/types/src/FilePlugin.d.ts.map +1 -1
- package/dist/types/src/FilePlugin.node.d.ts.map +1 -1
- package/dist/types/src/capabilities/FileUploadField.d.ts +12 -0
- package/dist/types/src/capabilities/FileUploadField.d.ts.map +1 -0
- package/dist/types/src/capabilities/create-object.d.ts +1 -1
- package/dist/types/src/capabilities/edge-backend.d.ts +5 -0
- package/dist/types/src/capabilities/edge-backend.d.ts.map +1 -0
- package/dist/types/src/capabilities/file-uploader.d.ts +1 -1
- package/dist/types/src/capabilities/file-uploader.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -0
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/inline-backend.d.ts +2 -2
- package/dist/types/src/capabilities/inline-backend.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown-extension.d.ts +1 -1
- package/dist/types/src/capabilities/node.d.ts +5 -0
- package/dist/types/src/capabilities/node.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -1
- package/dist/types/src/components/FileInput/FileInput.d.ts.map +1 -1
- package/dist/types/src/components/FilePreview/FilePreview.d.ts +1 -1
- package/dist/types/src/components/FilePreview/FilePreview.d.ts.map +1 -1
- package/dist/types/src/containers/FileArticle/FileArticle.d.ts +4 -1
- package/dist/types/src/containers/FileArticle/FileArticle.d.ts.map +1 -1
- package/dist/types/src/containers/FileSettings/FileSettings.d.ts +5 -3
- package/dist/types/src/containers/FileSettings/FileSettings.d.ts.map +1 -1
- package/dist/types/src/extensions/image.d.ts +0 -2
- package/dist/types/src/extensions/image.d.ts.map +1 -1
- package/dist/types/src/operations/create.d.ts +14 -5
- package/dist/types/src/operations/create.d.ts.map +1 -1
- package/dist/types/src/operations/read.d.ts.map +1 -1
- package/dist/types/src/types/FileCapabilities.d.ts +10 -28
- package/dist/types/src/types/FileCapabilities.d.ts.map +1 -1
- package/dist/types/src/types/Settings.d.ts +1 -1
- package/dist/types/src/types/Settings.d.ts.map +1 -1
- package/dist/types/src/types/limits.d.ts +0 -1
- package/dist/types/src/types/limits.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dx.config.ts +10 -6
- package/package.json +45 -41
- package/src/FilePlugin.node.ts +2 -1
- package/src/FilePlugin.tsx +8 -1
- package/src/capabilities/FileUploadField.tsx +37 -0
- package/src/capabilities/edge-backend.ts +27 -0
- package/src/capabilities/file-uploader.ts +6 -4
- package/src/capabilities/index.ts +1 -0
- package/src/capabilities/inline-backend.ts +4 -21
- package/src/capabilities/markdown-extension.ts +3 -8
- package/src/capabilities/node.ts +16 -0
- package/src/capabilities/react-surface.ts +46 -0
- package/src/components/FileInput/FileInput.tsx +3 -2
- package/src/containers/FileArticle/FileArticle.tsx +49 -42
- package/src/containers/FileSettings/FileSettings.tsx +19 -14
- package/src/extensions/image.tsx +49 -28
- package/src/operations/create.test.ts +122 -32
- package/src/operations/create.ts +44 -24
- package/src/operations/read.ts +24 -6
- package/src/types/FileCapabilities.ts +10 -31
- package/src/types/Settings.ts +1 -1
- package/src/types/limits.ts +0 -2
- package/dist/lib/neutral/FileArticle-YU6NN3KN.mjs +0 -80
- package/dist/lib/neutral/FileArticle-YU6NN3KN.mjs.map +0 -7
- package/dist/lib/neutral/FilePlugin.mjs +0 -58
- package/dist/lib/neutral/FilePlugin.mjs.map +0 -7
- package/dist/lib/neutral/FilePlugin.node.mjs +0 -23
- package/dist/lib/neutral/FilePlugin.node.mjs.map +0 -7
- package/dist/lib/neutral/capabilities/index.mjs +0 -23
- package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
- package/dist/lib/neutral/chunk-DKGTSUUH.mjs +0 -8
- package/dist/lib/neutral/chunk-DKGTSUUH.mjs.map +0 -7
- package/dist/lib/neutral/chunk-GMYSEHV4.mjs +0 -40
- package/dist/lib/neutral/chunk-GMYSEHV4.mjs.map +0 -7
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
- package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
- package/dist/lib/neutral/chunk-LBZ4MCLI.mjs +0 -45
- package/dist/lib/neutral/chunk-LBZ4MCLI.mjs.map +0 -7
- package/dist/lib/neutral/chunk-YODPX62X.mjs +0 -136
- package/dist/lib/neutral/chunk-YODPX62X.mjs.map +0 -7
- package/dist/lib/neutral/chunk-ZUXUTRAJ.mjs +0 -80
- package/dist/lib/neutral/chunk-ZUXUTRAJ.mjs.map +0 -7
- package/dist/lib/neutral/components/index.mjs +0 -74
- package/dist/lib/neutral/components/index.mjs.map +0 -7
- package/dist/lib/neutral/containers/index.mjs +0 -59
- package/dist/lib/neutral/containers/index.mjs.map +0 -7
- package/dist/lib/neutral/create-IUUG7RI6.mjs +0 -17
- package/dist/lib/neutral/create-IUUG7RI6.mjs.map +0 -7
- package/dist/lib/neutral/create-object-V667G4ZL.mjs +0 -30
- package/dist/lib/neutral/create-object-V667G4ZL.mjs.map +0 -7
- package/dist/lib/neutral/file-uploader-BCJH6TUL.mjs +0 -41
- package/dist/lib/neutral/file-uploader-BCJH6TUL.mjs.map +0 -7
- package/dist/lib/neutral/index.mjs +0 -32
- package/dist/lib/neutral/index.mjs.map +0 -7
- package/dist/lib/neutral/inline-backend-FGGGDYRB.mjs +0 -37
- package/dist/lib/neutral/inline-backend-FGGGDYRB.mjs.map +0 -7
- package/dist/lib/neutral/markdown-extension-RA5YNMTW.mjs +0 -230
- package/dist/lib/neutral/markdown-extension-RA5YNMTW.mjs.map +0 -7
- package/dist/lib/neutral/meta.json +0 -1
- package/dist/lib/neutral/meta.mjs +0 -8
- package/dist/lib/neutral/meta.mjs.map +0 -7
- package/dist/lib/neutral/operation-handler-CPDANWGH.mjs +0 -13
- package/dist/lib/neutral/operation-handler-CPDANWGH.mjs.map +0 -7
- package/dist/lib/neutral/operations/index.mjs +0 -8
- package/dist/lib/neutral/operations/index.mjs.map +0 -7
- package/dist/lib/neutral/plugin.mjs +0 -16
- package/dist/lib/neutral/plugin.mjs.map +0 -7
- package/dist/lib/neutral/react-surface-5BXKSHD2.mjs +0 -60
- package/dist/lib/neutral/react-surface-5BXKSHD2.mjs.map +0 -7
- package/dist/lib/neutral/read-HG6CSWKR.mjs +0 -28
- package/dist/lib/neutral/read-HG6CSWKR.mjs.map +0 -7
- package/dist/lib/neutral/settings-RR3RESL2.mjs +0 -28
- package/dist/lib/neutral/settings-RR3RESL2.mjs.map +0 -7
- package/dist/lib/neutral/skill-definition-YHBGWBUS.mjs +0 -15
- package/dist/lib/neutral/skill-definition-YHBGWBUS.mjs.map +0 -7
- package/dist/lib/neutral/skills/index.mjs +0 -11
- package/dist/lib/neutral/skills/index.mjs.map +0 -7
- package/dist/lib/neutral/translations.mjs +0 -36
- package/dist/lib/neutral/translations.mjs.map +0 -7
- package/dist/lib/neutral/types/index.mjs +0 -22
- package/dist/lib/neutral/types/index.mjs.map +0 -7
- 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 `` 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,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,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
|
-
}
|