@dxos/plugin-file 0.9.1-staging.ee54ba693a → 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,28 +0,0 @@
|
|
|
1
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
-
|
|
3
|
-
// src/capabilities/settings.ts
|
|
4
|
-
import * as Effect from "effect/Effect";
|
|
5
|
-
import { Capability } from "@dxos/app-framework";
|
|
6
|
-
import { AppCapabilities } from "@dxos/app-toolkit";
|
|
7
|
-
import { createKvsStore } from "@dxos/effect";
|
|
8
|
-
import { meta } from "#meta";
|
|
9
|
-
import { FileCapabilities, Settings } from "#types";
|
|
10
|
-
var settings_default = Capability.makeModule(() => Effect.sync(() => {
|
|
11
|
-
const settingsAtom = createKvsStore({
|
|
12
|
-
key: meta.profile.key,
|
|
13
|
-
schema: Settings.Settings,
|
|
14
|
-
defaultValue: () => ({})
|
|
15
|
-
});
|
|
16
|
-
return [
|
|
17
|
-
Capability.contributes(FileCapabilities.SettingsAtom, settingsAtom),
|
|
18
|
-
Capability.contributes(AppCapabilities.Settings, {
|
|
19
|
-
prefix: meta.profile.key,
|
|
20
|
-
schema: Settings.Settings,
|
|
21
|
-
atom: settingsAtom
|
|
22
|
-
})
|
|
23
|
-
];
|
|
24
|
-
}));
|
|
25
|
-
export {
|
|
26
|
-
settings_default as default
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=settings-RR3RESL2.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/settings.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { createKvsStore } from '@dxos/effect';\n\nimport { meta } from '#meta';\nimport { FileCapabilities, Settings } from '#types';\n\nexport default Capability.makeModule(() =>\n Effect.sync(() => {\n const settingsAtom = createKvsStore({\n key: meta.profile.key,\n schema: Settings.Settings,\n defaultValue: () => ({}),\n });\n\n return [\n Capability.contributes(FileCapabilities.SettingsAtom, settingsAtom),\n Capability.contributes(AppCapabilities.Settings, {\n prefix: meta.profile.key,\n schema: Settings.Settings,\n atom: settingsAtom,\n }),\n ];\n }),\n);\n"],
|
|
5
|
-
"mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAChC,SAASC,sBAAsB;AAE/B,SAASC,YAAY;AACrB,SAASC,kBAAkBC,gBAAgB;AAE3C,IAAA,mBAAeL,WAAWM,WAAW,MAC5BC,YAAK,MAAA;AACV,QAAMC,eAAeN,eAAe;IAClCO,KAAKN,KAAKO,QAAQD;IAClBE,QAAQN,SAASA;IACjBO,cAAc,OAAO,CAAC;EACxB,CAAA;AAEA,SAAO;IACLZ,WAAWa,YAAYT,iBAAiBU,cAAcN,YAAAA;IACtDR,WAAWa,YAAYZ,gBAAgBI,UAAU;MAC/CU,QAAQZ,KAAKO,QAAQD;MACrBE,QAAQN,SAASA;MACjBW,MAAMR;IACR,CAAA;;AAEJ,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "Capability", "AppCapabilities", "createKvsStore", "meta", "FileCapabilities", "Settings", "makeModule", "sync", "settingsAtom", "key", "profile", "schema", "defaultValue", "contributes", "SettingsAtom", "prefix", "atom"]
|
|
7
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
-
|
|
3
|
-
// src/capabilities/skill-definition.ts
|
|
4
|
-
import * as Effect from "effect/Effect";
|
|
5
|
-
import { Capability } from "@dxos/app-framework";
|
|
6
|
-
import { AppCapabilities } from "@dxos/app-toolkit";
|
|
7
|
-
import { FileSkill } from "#skills";
|
|
8
|
-
var skillDefinition = () => Effect.succeed([
|
|
9
|
-
Capability.contributes(AppCapabilities.SkillDefinition, FileSkill)
|
|
10
|
-
]);
|
|
11
|
-
var skill_definition_default = skillDefinition;
|
|
12
|
-
export {
|
|
13
|
-
skill_definition_default as default
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=skill-definition-YHBGWBUS.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/skill-definition.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\n\nimport { FileSkill } from '#skills';\n\nconst skillDefinition = () => Effect.succeed([Capability.contributes(AppCapabilities.SkillDefinition, FileSkill)]);\n\nexport default skillDefinition;\n"],
|
|
5
|
-
"mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAEhC,SAASC,iBAAiB;AAE1B,IAAMC,kBAAkB,MAAaC,eAAQ;EAACJ,WAAWK,YAAYJ,gBAAgBK,iBAAiBJ,SAAAA;CAAW;AAEjH,IAAA,2BAAeC;",
|
|
6
|
-
"names": ["Effect", "Capability", "AppCapabilities", "FileSkill", "skillDefinition", "succeed", "contributes", "SkillDefinition"]
|
|
7
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
-
|
|
3
|
-
// src/translations.ts
|
|
4
|
-
import { Type } from "@dxos/echo";
|
|
5
|
-
import { meta } from "#meta";
|
|
6
|
-
import { File } from "#types";
|
|
7
|
-
var translations = [
|
|
8
|
-
{
|
|
9
|
-
"en-US": {
|
|
10
|
-
[Type.getTypename(File.File)]: {
|
|
11
|
-
"typename.label": "File",
|
|
12
|
-
"typename.label_zero": "Files",
|
|
13
|
-
"typename.label_one": "File",
|
|
14
|
-
"typename.label_other": "Files",
|
|
15
|
-
"object-name.placeholder": "New file",
|
|
16
|
-
"add-object.label": "Add file",
|
|
17
|
-
"rename-object.label": "Rename file",
|
|
18
|
-
"delete-object.label": "Delete file",
|
|
19
|
-
"object-deleted.label": "File deleted"
|
|
20
|
-
},
|
|
21
|
-
[meta.profile.key]: {
|
|
22
|
-
"plugin.name": "File",
|
|
23
|
-
"file-input.placeholder": "Drop a file here, or click to select a file",
|
|
24
|
-
"too-large-error.message": "File is too large. Maximum size is 4MB.",
|
|
25
|
-
"unsupported-type-error.message": "Unsupported file type. Only images, videos, and PDFs are allowed.",
|
|
26
|
-
"settings.backend.label": "Storage backend",
|
|
27
|
-
"settings.backend.description": "Where uploaded files are stored. Install additional plugins (e.g. WNFS) to add backends.",
|
|
28
|
-
"settings.backend.placeholder": "Select backend"
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
];
|
|
33
|
-
export {
|
|
34
|
-
translations
|
|
35
|
-
};
|
|
36
|
-
//# sourceMappingURL=translations.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/translations.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2026 DXOS.org\n//\n\nimport { Type } from '@dxos/echo';\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\nimport { File } from '#types';\n\nexport const translations = [\n {\n 'en-US': {\n [Type.getTypename(File.File)]: {\n 'typename.label': 'File',\n 'typename.label_zero': 'Files',\n 'typename.label_one': 'File',\n 'typename.label_other': 'Files',\n 'object-name.placeholder': 'New file',\n 'add-object.label': 'Add file',\n 'rename-object.label': 'Rename file',\n 'delete-object.label': 'Delete file',\n 'object-deleted.label': 'File deleted',\n },\n [meta.profile.key]: {\n 'plugin.name': 'File',\n 'file-input.placeholder': 'Drop a file here, or click to select a file',\n 'too-large-error.message': 'File is too large. Maximum size is 4MB.',\n 'unsupported-type-error.message': 'Unsupported file type. Only images, videos, and PDFs are allowed.',\n 'settings.backend.label': 'Storage backend',\n 'settings.backend.description':\n 'Where uploaded files are stored. Install additional plugins (e.g. WNFS) to add backends.',\n 'settings.backend.placeholder': 'Select backend',\n },\n },\n },\n] as const satisfies Resource[];\n"],
|
|
5
|
-
"mappings": ";;;AAIA,SAASA,YAAY;AAGrB,SAASC,YAAY;AACrB,SAASC,YAAY;AAEd,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACH,KAAKI,YAAYF,KAAKA,IAAI,CAAA,GAAI;QAC7B,kBAAkB;QAClB,uBAAuB;QACvB,sBAAsB;QACtB,wBAAwB;QACxB,2BAA2B;QAC3B,oBAAoB;QACpB,uBAAuB;QACvB,uBAAuB;QACvB,wBAAwB;MAC1B;MACA,CAACD,KAAKI,QAAQC,GAAG,GAAG;QAClB,eAAe;QACf,0BAA0B;QAC1B,2BAA2B;QAC3B,kCAAkC;QAClC,0BAA0B;QAC1B,gCACE;QACF,gCAAgC;MAClC;IACF;EACF;;",
|
|
6
|
-
"names": ["Type", "meta", "File", "translations", "getTypename", "profile", "key"]
|
|
7
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ACCEPTED_MIME,
|
|
3
|
-
File,
|
|
4
|
-
FileAction,
|
|
5
|
-
FileCapabilities_exports,
|
|
6
|
-
FileOperation_exports,
|
|
7
|
-
MAX_FILE_SIZE,
|
|
8
|
-
Settings_exports,
|
|
9
|
-
isAcceptedMimeType
|
|
10
|
-
} from "../chunk-YODPX62X.mjs";
|
|
11
|
-
import "../chunk-J5LGTIGS.mjs";
|
|
12
|
-
export {
|
|
13
|
-
ACCEPTED_MIME,
|
|
14
|
-
File,
|
|
15
|
-
FileAction,
|
|
16
|
-
FileCapabilities_exports as FileCapabilities,
|
|
17
|
-
FileOperation_exports as FileOperation,
|
|
18
|
-
MAX_FILE_SIZE,
|
|
19
|
-
Settings_exports as Settings,
|
|
20
|
-
isAcceptedMimeType
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2026 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import * as Effect from 'effect/Effect';
|
|
6
|
-
import React, { useCallback } from 'react';
|
|
7
|
-
|
|
8
|
-
import { Capabilities, Capability } from '@dxos/app-framework';
|
|
9
|
-
import { Surface, useSettingsState } from '@dxos/app-framework/ui';
|
|
10
|
-
import { AppSurface } from '@dxos/app-toolkit/ui';
|
|
11
|
-
import { SchemaEx } from '@dxos/effect';
|
|
12
|
-
import { type FormFieldRendererProps } from '@dxos/react-ui-form';
|
|
13
|
-
|
|
14
|
-
import { FileInput } from '#components';
|
|
15
|
-
import { FileArticle, FileSettings } from '#containers';
|
|
16
|
-
import { meta } from '#meta';
|
|
17
|
-
import { File, FileAction, type Settings } from '#types';
|
|
18
|
-
|
|
19
|
-
export default Capability.makeModule(() =>
|
|
20
|
-
Effect.succeed(
|
|
21
|
-
Capability.contributes(Capabilities.ReactSurface, [
|
|
22
|
-
Surface.create({
|
|
23
|
-
id: 'article',
|
|
24
|
-
filter: AppSurface.oneOf(
|
|
25
|
-
AppSurface.object(AppSurface.Article, File.File),
|
|
26
|
-
AppSurface.object(AppSurface.Section, File.File),
|
|
27
|
-
AppSurface.object(AppSurface.Slide, File.File),
|
|
28
|
-
),
|
|
29
|
-
component: ({ data, role }) => <FileArticle role={role} subject={data.subject} />,
|
|
30
|
-
}),
|
|
31
|
-
Surface.create({
|
|
32
|
-
id: 'createForm',
|
|
33
|
-
filter: AppSurface.formInputBySchema(
|
|
34
|
-
(ast) => !!SchemaEx.findAnnotation<Record<string, string[]>>(ast, FileAction.UploadAnnotationId),
|
|
35
|
-
),
|
|
36
|
-
component: ({ data, ...props }) => {
|
|
37
|
-
const ast = data.fieldPropertyAst;
|
|
38
|
-
if (!ast) {
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const inputProps = { ...props, type: ast } as unknown as FormFieldRendererProps;
|
|
43
|
-
const handleChange = useCallback(
|
|
44
|
-
(file: File) => inputProps.onValueChange?.(ast, file),
|
|
45
|
-
[ast, inputProps.onValueChange],
|
|
46
|
-
);
|
|
47
|
-
|
|
48
|
-
return <FileInput schema={data.schema} onChange={handleChange} />;
|
|
49
|
-
},
|
|
50
|
-
}),
|
|
51
|
-
Surface.create({
|
|
52
|
-
id: 'pluginSettings',
|
|
53
|
-
filter: AppSurface.settings(AppSurface.Article, meta.profile.key),
|
|
54
|
-
component: ({ data: { subject } }) => {
|
|
55
|
-
const { settings, updateSettings } = useSettingsState<Settings.Settings>(subject.atom);
|
|
56
|
-
return <FileSettings settings={settings} onSettingsChange={updateSettings} />;
|
|
57
|
-
},
|
|
58
|
-
}),
|
|
59
|
-
]),
|
|
60
|
-
),
|
|
61
|
-
);
|